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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2013-03-31 14:56:21

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

[SOLVED] Klawisze multimedialne

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

 

#2  2013-03-31 16:23:08

  lx - Użytkownik

lx
Użytkownik
Zarejestrowany: 2010-06-22

Re: [SOLVED] Klawisze multimedialne

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).


(aka mickul)

[url=http://sourceforge.net/projects/manpages-pl/]Polskie strony podręcznika systemowego[/url]

Offline

 

#3  2013-03-31 19:54:28

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Klawisze multimedialne

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:

Kod:

# /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:

Kod:

# /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:

Kod:

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:

Kod:

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:

Kod:

# 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:

Kod:

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

 

#4  2013-04-01 17:35:48

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Klawisze multimedialne

Za pomocą gnomowskich skrótów klawiszowych udało mi się wybrać kilka pustych (chyba) klawiszy. Obecnie to wygląda tak:

Kod:

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

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)

[ Generated in 0.008 seconds, 11 queries executed ]

Informacje debugowania

Time (s) Query
0.00010 SET CHARSET latin2
0.00004 SET NAMES latin2
0.00091 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.12.123.41' WHERE u.id=1
0.00077 REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.12.123.41', 1732721637)
0.00041 SELECT * FROM punbb_online WHERE logged<1732721337
0.00055 SELECT topic_id FROM punbb_posts WHERE id=229182
0.00109 SELECT id FROM punbb_posts WHERE topic_id=23260 ORDER BY posted
0.00060 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.00006 SELECT search_for, replace_with FROM punbb_censoring
0.00076 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.00071 UPDATE punbb_topics SET num_views=num_views+1 WHERE id=23260
Total query time: 0.006 s