web-dev-qa-db-ja.com

xkbの生のキーコードを見つける方法は?

一見すると、/ usr/share/X11/xkb/keycodes /には、デバイスから報告された生のキーコードのマッピングと 'showkey- -scancodes`コマンドは、scancodeを返すことができます。それらは同じものだと考えるのは簡単です。

しかし、それらは明らかに異なります。showkeys -scancodesは、16進数に変換された Linuxキーコードテーブル のように、Linuxキーコードを確実に返します。一方、xkbで参照される「生のキーコード」は、常に表とは異なります。

キーを取る 1 例えば:

  • showkey --scancodes0x02をキーコードとして返します 1
  • xorgでは、シンボリック名は<AE01>であり、未加工のキーコードとして10があり、0x02ではありません。

    $ grep AE01/usr/share/X11/xkb/keycodes/evdev 
    &ltAE01> = 10;

それで、x [kb]を構成する目的で、showkey --scancodesが適切でない場合に、任意のキーの生のキーコードを見つける方法は?

5
Tankman六四

xevプログラムは、予期されるキーコードを出力します。あなたの例のために 1

KeyPress event, serial 37, synthetic NO, window 0x600001,
    root 0xd4, subw 0x0, time 6931965, (284,-10), root:(285,560),
    state 0x0, keycode 10 (keysym 0x31, 1), same_screen YES,
    XLookupString gives 1 bytes: (31) "1"
    XmbLookupString gives 1 bytes: (31) "1"
    XFilterEvent returns: False

KeyRelease event, serial 37, synthetic NO, window 0x600001,
    root 0xd4, subw 0x0, time 6932164, (284,-10), root:(285,560),
    state 0x0, keycode 10 (keysym 0x31, 1), same_screen YES,
    XLookupString gives 1 bytes: (31) "1"
    XFilterEvent returns: False
2
Stefan