Mapowanie niestandardowych klawiszy w X'ach

aztec
Piegowaty Guziec
Piegowaty Guziec
Posty: 3
Rejestracja: 14 cze 2007, 11:02
Płeć: Mężczyzna
Wersja Ubuntu: 11.04
Środowisko graficzne: GNOME
Architektura: x86

Mapowanie niestandardowych klawiszy w X'ach

Post autor: aztec »

Jako, że nie mogłem znaleźć żadnego poradnika który pomógłby mi, postanowiłem podzielić sie własnymi próbami, mając nadzieję, że pomogę komuś w przyszłości.
Otóż mój problem polegał na niedziałających klawiszach funkcyjnych w moim laptopie (Compal HEL80, Ubuntu 7.10) w Fluxboxie. W Gnomie wszystko działało, ale to przez uruchomiome gnome-sound-properties czy gnome-power-manager. Mozna tego demona uruchomic i pod fluxem, wtedy większość klawiszy będzie Wam działać, jednak nie zawsze. Pozatym czasem warto zrobić cos samemu tak by uniezależnić się od Gnome'a(:

Aby odkryć jaki klawisz to jaki, użyjemy programu xev.

Kod: Zaznacz cały

aztec@aztec-laptop:~$ xev
Teraz musimy znaleźć kod klawisza, lub symlinka do niego(jeżeli takowy już istnieje).

Po naciśnięciu interesującego nas klawisza powinniśmy otrzymać mniej więcej takie coś:

Kod: Zaznacz cały

KeyRelease event, serial 29, synthetic NO, window 0x1200001,
    root 0x186, subw 0x0, time 5012885, (-263,481), root:(269,613),
    state 0x0, keycode 223 (keysym 0x0, NoSymbol), same_screen YES,
    XLookupString gives 0 bytes: 
    XFilterEvent returns: False
Intersuje nas dokładnie keycode 223 (keysym 0x0, NoSymbol) . Keycode jest kodem naszego klawisza, 0x0 jest symlinkiem (w naszym przypadku 0x0 czyli nie istnieje), oraz NoSymbol oznacza ze ten klawisz jeszcze nie ma przypisanego symbolu. W przypadku gdy w polu NoSymbol jest juz jakas nazwa, nasz problem znika bo mozemy juz korzystać w różnych programach z tego klawisza. Jeśli tak to pomiń tę część i przejdź do opisu jak skonfigurować Fluxboxa, aby radził sobie z tym klawiszem.

Symbole nie są dowolne, bo są wcześniej zdefniowane w pliku /usr/share/X11/XKeysymDB

Kod: Zaznacz cały

cat /usr/share/X11/XKeysymDB
(...)
! The definitions here should match <X11/XF86keysym.h>
XF86ModeLock            :1008FF01
XF86Standby             :1008FF10
XF86AudioLowerVolume    :1008FF11
XF86AudioMute           :1008FF12
XF86AudioRaiseVolume    :1008FF13
XF86AudioPlay           :1008FF14
XF86AudioStop           :1008FF15
XF86AudioPrev           :1008FF16
XF86AudioNext           :1008FF17
XF86HomePage            :1008FF18
XF86Mail                :1008FF19
XF86Start               :1008FF1A
XF86Search              :1008FF1B
(...)
Po lewej stronie mamy symbol, a po prawej odpowiadający mu keysym. Większość z nich będzie wolna, więc można jest bez problemu użyć (szczegolnie takie jak AudioLowerVolume, gdy klawisz zmiany głośności nie jest wykrywany prze xev).

Do przypisania klawiszowi keysym'a oraz symbolu uzyjemy programu xmodmap. Program ten wczytuje z pliku sekwencje przy starcie systemu, które mówią mu jaki klawisz ma mieć jaki symbol.

Składnia xmodmap'a:
keycode NUMER = KEYSYM
gdzie NUMER moze byc w dowolnym systemie(hex,bin,dec) liczbowym.

Aby xmodmap wczytał nasze ustawienia z pliku piszemy:

Kod: Zaznacz cały

touch ~/.xmodmap
Teraz dodajemy nasz klawisz do tego pliku

Kod: Zaznacz cały

sudo emacs -nw ~/.xmodmap
i wpisujemy

Kod: Zaznacz cały

keycode 223 = XF86AudioLowerVolume
I zapisujemy Ctrl+x+s i wychodzimy Ctrl+x+c.
Teraz musimy przeladowac ustawienia:

Kod: Zaznacz cały

xmodmap ~/.xmodmap
i testujemy klawisz xev'em czy nasz klawisz ma juz przyporządkowny symbol.

Aby te ustawienia ładowały sie przy każdym uruchomieniu trzeba dodac polecenie xmodmap ~/.xmodmap aby było wykonywane przy każdym waszym zalogowaniu.

Teraz w przypadku fluxboxa mozna juz spokojnie użyć tego klawisz w pliku ~/.fluxbox/keys

Kod: Zaznacz cały

XF86AudioLowerVolume :ExecCommand amixer -q set PCM 10- unmute
aby zmieniać wygodnie głośność w systemie bez innych niepotrzebnych pakietów, używając tylko zaimplemenowanych opcji fluxboxa, xorg'a oraz alsy.
ODPOWIEDZ

Wróć do „Środowiska graficzne”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 2 gości