Konfiguruję openbox na moim laptopie z systemem Linux Mint 13. Chcę, aby mój klawisz Caps Lock działał jako dodatkowy klawisz kontrolny. Wymagane ustawienia umieściłem w ~/.Xmodmap
pliku i sprawdziłem, uruchamiając
xmodmap ~/.Xmodmap
Działa poprawnie.
Jednak po ponownym zalogowaniu się do sesji Openbox te kluczowe zmiany nie są obecne. Uruchomienie powyższego xmodmap
polecenia powoduje jego ponowne uruchomienie, ale chcę, aby stało się to automatycznie podczas uruchamiania.
Co ciekawe, zenity
do mojego ~/.config/openbox/autostart
pliku dodałem polecenie testowe
zenity --info --text=Hello
Powoduje to powstanie małego okna dialogowego i wychodzi z niego dopiero po jego zamknięciu.
Teraz, kiedy ponownie loguję się do sesji openbox, Caps Lock działa jak klawisz Ctrl, dopóki okno dialogowe zenity nie zostanie zamknięte. Po zamknięciu tego okna Caps Lock powraca do swojego domyślnego zachowania.
Nie znalazłem nic na ten temat w Google, więc proszę o pomoc tutaj. Czy macie jakieś pomysły na to, co może pójść nie tak?
Aktualizacja:
Próbowałem to rozgryźć i w swoich eksperymentach skopiowałem /usr/bin/xmodmap
plik /usr/bin/xmodmap_
i zastąpiłem /usr/bin/xmodmap
go następującym skryptem bash
#!/bin/bash
{
echo '-------'
date
echo xmodmap "$@"
} >> ~/xmodmap-calls
exec /usr/bin/xmodmap_ "$@"
Tak więc, za każdym razem, gdy uruchamia się jakiś cholerny skrypt w systemie xmodmap
, poznaję go.
Dzięki temu ponownie się loguję i znajduję tylko jeden wpis w moim ~/xmodmap-calls
pliku, który jest tym ~/.Xmodmap
, który uruchamia mój , co jest oczekiwane. Uznałem, że to nie xmodmap
nadpisuje moich zmian.
Następnie trochę googlingu wprowadziło mnie do setxkbmap
polecenia, które najwyraźniej może zrobić to samo. Zastąpiłem również ten plik wykonywalny, podobny do powyższego xmodmap. I dostałem polecenie winowajcy!
setxkbmap -option terminate:ctrl_alt_bksp
Nie mam absolutnie pojęcia, co to robi, ale po uruchomieniu xmodmap ~/.Xmodmap
(który poprawnie zastosował moje ustawienia), jeśli uruchomię powyższe polecenie, moje zmiany zostaną zresetowane! Edycja : To okazuje się naprawdę śmieszne. Po prostu setxkbmap
polecenie bez żadnych argumentów, na szczęście nadpisuje moje zmiany xmodmap ~/.Xmodmap
poleceniem.
Teraz mam dwie rzeczy do zrozumienia, skąd to się bierze setxkbmap
i dlaczego i jak to naprawić. Nadal prowadzę dochodzenie, ale mogę poważnie skorzystać z pomocy :)
Aktualizacja 2
Do diabła z xmodmap
. Nie mogę ustalić, skąd setxkbmap
jest wywoływany, ale wymyśliłem sposób użycia setxkbmap
polecenia, aby mój Caps Lock zachowywał się jak Ctrl.
setxkbmap -option ctrl:nocaps
Tuż przed uruchomieniem openbox. Działa świetnie. Klawisz Caps Lock działa jak klawisz Ctrl. xmodmap
nigdy nie jest uruchamiany.
Pozostawię to pytanie otwarte, aby ktoś, kto wie o tych rzeczach, mógł uzyskać wgląd. Również dla osób, które stoją za mną :)
Aktualizacja 3
Oto zawartość mojej .config/openbox/autostart
, zgodnie z prośbą Pedrosaurio.
#!/bin/bash
# Set the wallpaper.
feh --bg-scale /wall.png
# Set default brightness.
xbacklight -time 1 '=40'
# Compositing.
xcompmgr &
# The panel.
tint2 &
# Start a terminal too.
roxterm &
O ile wiem, nie ma to nic wspólnego z klawiaturą. Oto skrypt, który rozpoczyna moją sesję: (uruchamiany przez lightdm)
#!/bin/bash
setxkbmap -option ctrl:nocaps
exec openbox-session
źródło
autostart
plik?Odpowiedzi:
Miałem podobny problem. Okazało się, że było to spowodowane przez ibus. Po prostu go odinstalowałem, ponieważ nie potrzebuję jego usług.
Znalazłem winowajcę, używając twojej sztuczki polegającej na zamianie setxkbmap na skrypt, ale dodałem również,
ps -AF --forest
aby zidentyfikować osobę wywołującą setxkbmap.źródło
Nie znając skryptu autostartu, założę się, że nie używasz właściwej składni, pozwalając na uruchamianie poleceń w tle za pomocą ampersand (
&
).Spróbuj edytować
.config/openbox/autostart
plik, aby wyglądał tak:W razie wątpliwości zajrzyj na wiki openbox i zobacz, jak wyglądają wszystkie przykłady
&
po każdym wpisie.http://openbox.org/wiki/Help:Autostart
źródło
xmodmap ~/.Xmodmap
w tym pliku (bez&
, nie wydaje się konieczne). I zostały wywołaniexmodmap
(i terazsetxkbmap
) w scenariuszu, że zaczynam sesji Openbox. Tuż przed uruchomieniemexec openbox-session
uruchamiamsetxkbmap
polecenie.sleep 1
opóźnienia, abyxmodmap
zastosować zmiany po tym, jak ładuje się wszystko inne, choć działa przez większość czasu, nie sprawia, że jestem zbyt pewny rozwiązania. Wolałbym tego nie robić, jeśli mam alternatywy.sleep
polecenia, jednak&
jest to konieczne po każdym wpisie, w przeciwnym razie wszystkie programy po pierwszym wpisie w ogóle nie będą działać.&
spowoduje zablokowanie. Użyłem tego zachowania zzenity
poleceniem, aby stwierdzić, że mojexmodmap
zmiany są zastępowane poautostart
zakończeniu. Mój autostart rośnie teraz i za chwilę go wkleję. Nie ma to jednak nic wspólnego z klawiaturą.xmodmap
są zastępowane, gdy tylko plik autostartu zostanie zakończony.