Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Mam klawiaturę logitech media keyboard elite -- wygląda tak: http://georges.roux.pacageek.org/images/media_keyboard_elite.png
Część z dodatkowych klawiszy działa bez problemu ale jest kilka, które nie działają w ogóle. xev nie wykrywa tych klawiszy -- są one zaś widoczne w showkey ale też nie do końca. Po odpaleniu showkey -s i później showkey -k na tty, okazało się, że niedziałające klawisze nie mają scancode. Mają zaś keycode. Keycode dla niedziałających klawiszy mają numery -- najmniejszy 319, a najwyższy 430. Z tego co wyczytałem, xorg nie obsługuje keycode > 255
W sumie niedziałających klawiszy jest 11, wliczając w to mode + część klawiszy Fx. Niekoniecznie zależy mi na tych mode + Fx ale są 3 klawisze, które by mi bardzo ułatwiły życie. Istnieje jakiś sposób by zmienić keycode na < 255?
Jest też jeden klawisz, który nie ma ani scancode ani keycode -- z nim się nic nie da zrobić?
Ostatnio edytowany przez morfik (2013-04-01 17:36:59)
Offline
Proponuję spróbować z programem rawkeybind, a w razie kłopotów skorzystać z innych rozwiązań. Natomiast w przypadku tego ostatniego klawisza nic się nie da zrobić, choć dla pewności można jeszcze sprawdzić, czy przy naciskaniu go nie pojawia się nic w dmesgu).
Offline
Ten rawkeybind, ma trochę problemów z zależnościami, a że dość już stary jest to nie chciało mi się z tym bawić. Przy pomocy wiki gentoo udało mi się te klawisze aktywować (poza tym jednym).
Generalnie, robiłem to tak:
Odpaliłem z roota:
# /lib/udev/keymap -i input/event3
i powciskałem te klawisze, które nie działały. Dostałem wpisy z "scan code: 0xC022D". Poszukałem zmiennych z keycode < 255 w /usr/include/linux/input.h i powiązałem keycode z scancode:
# /lib/udev/keymap input/event3 0xC01BC f13
i tak dalej dla następnych klawiszy, wpisując odpowiedni scancode oraz zwiększając numer Fx. Po tym zabiegu klawisze były wykrywane przez xev.
Zgodnie z tym co było napisane na wiki, to ustawienie jest sesyjne. By ustawienia były trwałe stworzyłem plik: /lib/udev/keymaps/logitech-media-keyboard-elite i dodałem tam wpisy:
0xC01BC f13 # klawisz messenger 0xC022D f14 # klawisz zoom in 0xC022E f15 # klawisz zoom out 0x90040 f16 # klawisz mode 0xC0184 f17 # klawisz mode + f2 0xC0186 f18 # klawisz mode + f3 0xC0188 f19 # klawisz mode + f4 0x90049 f20 # klawisz mode + f9 0x9004A f21 # klawisz mode + f10 0x9004B f22 # klawisz mode + f11 0x9004C f23 # klawisz mode + f12
Oraz wyedytowałem plik /lib/udev/rules.d/95-keymap.rules dodając w nim wpis:
SUBSYSTEM=="input", ACTION=="add", KERNEL=="event*", SUBSYSTEMS=="usb", ENV{ID_VENDOR_ID}=="046d", ENV{ID_MODEL_ID}=="c30f", RUN+="keymap $name logitech-media-keyboard-elite"
By uzyskać powyższe parametry odpaliłem:
# udevadm monitor --property > ./log
i podłączyłem klawiaturę. To wygenerowało log, w którym znalazły się wartości parametrów ID_VENDOR_ID oraz ID_MODEL_ID .
I to by generalnie było tyle, gdyby nie fakt zdublowanych klawiszy, co prawda, nie wszystkich. Przypisując jeden z klawiszy do jakiejś akcji i następnie zrobienie tego z drugim klawiszem, powoduje wyrzucenie komunikatu, że ten klawisz jest już przypisany.
Rzuciłem okiem w showkey na tty. Zgodnie z nim, po przyciśnięciu klawiszy zostaje wypisane, że keycode różnią się. Przykładowo: 171 i 183. Ten pierwszy był już przypisany do klawisza "media" odpalającego odtwarzacz, ten drugi został przypisany do klawisza "messenger", czyli niby do f13.
Wcześniej zaobserwowałem, że te keycode w xev są o 8 punków wyższe niż te podane przez showkey. Jest jakieś logiczne wytłumaczenie tego zjawiska? I jaki właściwie keycode ma klawisz f13? Według pliku /usr/include/linux/input.h , f13 ma 183 -- tak samo pokazuje showkey pod tty. Zaś xev pokazuje:
FocusOut event, serial 35, synthetic NO, window 0x6000001, mode NotifyGrab, detail NotifyAncestor FocusOut event, serial 35, synthetic NO, window 0x6000001, mode NotifyUngrab, detail NotifyPointer FocusIn event, serial 35, synthetic NO, window 0x6000001, mode NotifyUngrab, detail NotifyAncestor KeymapNotify event, serial 35, synthetic NO, window 0x0, keys: 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Btw, te pozycje f13-f24 sa bezpieczne i można bez obaw przypisywać klawisze? I czy istnieje jakiś sposób na wyszukanie wolnych keycodów?
Offline
Za pomocą gnomowskich skrótów klawiszowych udało mi się wybrać kilka pustych (chyba) klawiszy. Obecnie to wygląda tak:
0xC01BC CHAT # klawisz messenger # Messenger 0xC022D PROG3 # klawisz zoom in # Launch 3 0xC022E PROG4 # klawisz zoom out # Launch 4 0x90040 FINANCE # klawisz mode # Finance 0xC0184 SPORT # klawisz mode + f2 # Game 0xC0186 SHOP # klawisz mode + f3 # Shop 0xC0188 F14 # klawisz mode + f4 # Launch 5 0x90049 F15 # klawisz mode + f9 # Launch 6 0x9004A F16 # klawisz mode + f10 # Launch 7 0x9004B F17 # klawisz mode + f11 # Launch 8 0x9004C F18 # klawisz mode + f12 # Launch 9
Offline