Portál AbcLinuxu, 12. května 2025 15:37

Dotaz: Jak se v X mapují scancodes na keycodes (problém)?

9.2.2013 13:07 Vašek
Jak se v X mapují scancodes na keycodes (problém)?
Přečteno: 227×
Odpovědět | Admin

Dobrý den,

vlastním notebook HP ProBook 4530s a řeším problém, že ne všechna extra tlačítka přístupná přes "fn" mají v X přidělen keycode. Konkrétně se to týká tlačítek: "suspend", "AudioNext", "AudioPrevious", "PlayPause". Ostatní extra tlačítka mají přidělen keycode a dokonce i správné XF86*

Aby to v X fungovalo aspoň takto, musel jsem vytvořit udev pravidlo, které načte tuto "keymap":

0x81 fn_esc
0xDF sleep
0x92 brightnessdown
0x97 brightnessup
0xEE switchvideomode
0x8A screenlock
0x89 battery
0xA0 mute
0xAE volumedown
0xB0 volumeup
0x90 previoussong
0xA2 playpause
0x99 nextsong

Zde je výstup xev u tlačítka "s keycode":

KeyPress event, serial 38, synthetic NO, window 0x1800001,
    root 0xf5, subw 0x0, time 3772728, (655,461), root:(657,483),
    state 0x10, keycode 232 (keysym 0x1008ff03, XF86MonBrightnessDown), same_screen YES,
    XLookupString gives 0 bytes: 
    XmbLookupString gives 0 bytes: 
    XFilterEvent returns: False

KeyRelease event, serial 38, synthetic NO, window 0x1800001,
    root 0xf5, subw 0x0, time 3772829, (655,461), root:(657,483),
    state 0x10, keycode 232 (keysym 0x1008ff03, XF86MonBrightnessDown), same_screen YES,
    XLookupString gives n 0 bytes: 
    XFilterEvent returns: False

Zde je výstup xev tlačítka "bez keycode":

FocusOut event, serial 38, synthetic NO, window 0x1800001,
    mode NotifyGrab, detail NotifyAncestor

FocusIn event, serial 38, synthetic NO, window 0x1800001,
    mode NotifyUngrab, detail NotifyAncestor

KeymapNotify event, serial 38, synthetic NO, window 0x0,
    keys:  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   0   

Různě jsem se pokoušel "čarovat" v textovém režimu (různě měnil keycodes extra tlačítek), ale toto situaci vždy zhoršilo (špatné XF86* symboly).

Arch Linux, 3.7.5-1-ARCH #1 SMP PREEMPT (x86_64), Xorg: 1.13.2

Hardware: notebook HP ProBook 4530s.

Předem díky za rady/pomoc/nápady!

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

9.2.2013 16:44 Vašek
Rozbalit Rozbalit vše Re: Jak se v X mapují scancodes na keycodes (problém)?
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zjistil jsem zajímavou věc: i u klávesy, u které xev neukazuje žádný keycode, lze tuto klávesu sespárovat s nějakou akcí. Např. ve "svém" pekwm:

KeyPress = "XF86AudioNext" { Actions = "GotoWorkspace 12" }

Toto skutečně funguje! Chyba xev?

Fluttershy, yay! avatar 10.2.2013 00:58 Fluttershy, yay! | skóre: 93 | blog:
Rozbalit Rozbalit vše Re: Jak se v X mapují scancodes na keycodes (problém)?
Z mé zkušenosti prostě když to showkey vidí, bude to fungovat.
🇵🇸Touch grass🇺🇦 ✊ ani boha, ani pána
10.2.2013 06:38 Vašek
Rozbalit Rozbalit vše Re: Jak se v X mapují scancodes na keycodes (problém)?

Díky! Chybou bylo, že jsem se moc "fixoval" na xev.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.