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 [url=http://www.isaev.ru/rawkeybind/]rawkeybind[/url], a w razie kłopotów skorzystać [url=http://en.gentoo-wiki.com/wiki/Multimedia_Keys#If_key_presses_generate_no_X_events]z innych rozwiązań[/url]. 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
Time (s) | Query |
---|---|
0.00013 | SET CHARSET latin2 |
0.00007 | SET NAMES latin2 |
0.00111 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.133.109.58' WHERE u.id=1 |
0.00063 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.133.109.58', 1732722217) |
0.00071 | SELECT * FROM punbb_online WHERE logged<1732721917 |
0.00062 | DELETE FROM punbb_online WHERE ident='54.36.148.193' |
0.00047 | SELECT topic_id FROM punbb_posts WHERE id=229195 |
0.00005 | SELECT id FROM punbb_posts WHERE topic_id=23260 ORDER BY posted |
0.00057 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=23260 AND t.moved_to IS NULL |
0.00011 | SELECT search_for, replace_with FROM punbb_censoring |
0.00083 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=23260 ORDER BY p.id LIMIT 0,25 |
0.00073 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=23260 |
Total query time: 0.00603 s |