私が返したキーボード修飾子のマッピングはxmodmap
次のとおりです。
shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x69) mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
awkを実行して出力スープからキーのシリアル番号と名前のみを取得すると、テンキーパッドのキーとキーからの応答はxev | awk -F'\''[ )]+'\'' '\''/^KeyPress/ { a[NR+2] } NR in a { printf "%-3s %s\n", $5, $8 }'\'
ありません。xev
これらのキーの生出力は、以下のように通常の出力とは非常に異なって見えます。<PrintScreen>
<Fn>
<Return>
xev
<PrintScreen>
押して放す
FocusOut event, serial 32, synthetic NO, window 0x1e00001, mode NotifyGrab, detail NotifyAncestor FocusOut event, serial 32, synthetic NO, window 0x1e00001, mode NotifyUngrab, detail NotifyPointer FocusIn event, serial 32, synthetic NO, window 0x1e00001, mode NotifyUngrab, detail NotifyAncestor KeymapNotify event, serial 32, 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
<PrintScreen>
もう一度押して放す
FocusOut event, serial 32, synthetic NO, window 0x1e00001, mode NotifyGrab, detail NotifyAncestor FocusOut event, serial 32, synthetic NO, window 0x1e00001, mode NotifyUngrab, detail NotifyPointer FocusIn event, serial 32, synthetic NO, window 0x1e00001, mode NotifyUngrab, detail NotifyAncestor KeymapNotify event, serial 32, 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
- 時々 を押して放すと、
<PrintScreen>
出力に<serial>
次のようにまったく異なる内容が表示されます(ここで共有されたスニペット)。
KeymapNotify event, serial 28, synthetic NO, window 0x0, keys: 4294967234 0 0 0 16 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
<Fn>
xev
他のf1
キーと組み合わせない限り、それf12
自体は何も返しません。しかし、それにもかかわらず、一部は検出されませんでした。Fn-f5
()XF86MonBrightnessDown
と同様にマップする必要がありますが、何も返しません。生のxev出力は次のとおりです。Fn-f6
XF86MonBrightnessUp
<PrintScreen>
FocusOut event, serial 32, synthetic NO, window 0x1e00001, mode NotifyGrab, detail NotifyAncestor FocusOut event, serial 32, synthetic NO, window 0x1e00001, mode NotifyUngrab, detail NotifyPointer FocusIn event, serial 32, synthetic NO, window 0x1e00001, mode NotifyUngrab, detail NotifyAncestor KeymapNotify event, serial 32, 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
* `Fn-f7` returns `NoSymbol` when it's supposed to be mapped to `XF86Display`
* `Fn-f8` is mapped to `Super_L` somehow.
私の質問は次のとおりです
- 上記で共有した奇妙な出力は何を意味し、いつ返されますか?
- KeySym とはどういう
NoSymbol
意味ですか? - 間違ったマッピングを修正したり、通常はキーを再マッピングしたい場合はどうすればよいですか?
NoSymbol
これらの質問は、同様の質問を持つ他の人のために、UNIXファミリーシステムでキーマッピングが一般的にどのように機能するかについて一元的な標準参照を生成できることを願っています。時間が許す限り、詳しく説明してください。
ティア!
答え1
FocusIn
イベントは、FocusOut
他のアプリケーションがキーの押下に反応することを意味します。一般的な容疑者は、ウィンドウマネージャ(「WM」、一般に「デスクトップ」の一部)、および言語入力ヘルパー(日本語、中国語など)などの他のアプリケーションです。
一般Fn的に傍受組み込みコントローラ(「EC」)ノートパソコン。通常のキーシンボルを生成せず、ECはそれをどのように処理するか、他のキーと一緒に押すと生成されるキーイベントを決定します。これは、ノートブックのすべてのECが異なるためカスタマイズできず、構成可能な場合は製造元がそれを秘密に保つことを意味します。
NoSymbol
これは、このキーの組み合わせに対してECによって返されたすべての項目がXシンボルにマップされないことを意味します。evtest
カーネル入力層で生成された主要イベントを表示するために使用されます。