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
autostart
plik?