最終更新:2024-11-07 (木) 09:42:50 (30d)
X/キーコード
概要
- X Window System (XKB)で使われているキーコード。
- xevやxmodmap -pkeで表示される。値はLinux/キーコード+8
ツール
現在の割当を表示
ヘッダファイル
Linux/キーコード ↔ X/キーコードの変換
- A keycode is a number in the range between 8 and 255 which represents a physical (or logical) key.
- xf86-input-evdev (xserver-xorg-input-evdev)
- https://cgit.freedesktop.org/xorg/driver/xf86-input-evdev/tree/src/evdev.c#n280
EvdevQueueKbdEvent(InputInfoPtr pInfo, struct input_event *ev, int value) { int code = ev->code + MIN_KEYCODE;//MIN_KEYCODE=8
evdevからの入力
X/キーコード/変換テーブル
Linux/キーコード 値 X/キーコード KEY_ESC 1 9 KEY_1? 2 10 KEY_ENTER 28 36 KEY_LEFTCTRL 29 37 KEY_VOLUMEDOWN 114 122 KEY_VOLUMEUP? 115 123
設定ファイル
xkb_keycodes - キーコードの定義 (X/キーコード⇔キーラベル)
- 残りの部分では数字のキーコードは使わず、このセクションで定義した記号のキーラベルだけを用います。
- xserver-xorg-input-evdev
- Linux/usr/share/X11/xkb/keycodes/evdev - defintion of keys on keyboard
xkb_symbols (キーラベル⇔キーシム)
- それぞれのキーが何をするのか定義するメインセクション
- Linux/usr/share/X11/xkb/symbols
- Linux/usr/share/X11/xkb/symbols/jp
- Linux/usr/share/X11/xkb/symbols/us?
キーシムの定義
- X11/keysymdef.h - Xorg keysyms
- X11/XF86keysym.h
アプリに送信される値
メモ
- scancode を keycode に変換する.
- keycode 番号 を keycode 名と結び付ける.
- keycode 名を keysym 名と結び付ける.
- keysym 名を ASCII 文字ストリングや機能と結び付ける.
- keycode と修飾キーから ASCII 文字ストリングを得る.