xevはいくつかのキーを認識しておらず、いくつかのキーが間違ってマッピングされていますか?

xevはいくつかのキーを認識しておらず、いくつかのキーが間違ってマッピングされていますか?

私が返したキーボード修飾子のマッピングは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-f6XF86MonBrightnessUp<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.

私の質問は次のとおりです

  1. 上記で共有した奇妙な出力は何を意味し、いつ返されますか?
  2. KeySym とはどういうNoSymbol意味ですか?
  3. 間違ったマッピングを修正したり、通常はキーを再マッピングしたい場合はどうすればよいですか?NoSymbol

これらの質問は、同様の質問を持つ他の人のために、UNIXファミリーシステムでキーマッピングが一般的にどのように機能するかについて一元的な標準参照を生成できることを願っています。時間が許す限り、詳しく説明してください。

ティア!

答え1

FocusInイベントは、FocusOut他のアプリケーションがキーの押下に反応することを意味します。一般的な容疑者は、ウィンドウマネージャ(「WM」、一般に「デスクトップ」の一部)、および言語入力ヘルパー(日本語、中国語など)などの他のアプリケーションです。

一般Fn的に傍受組み込みコントローラ(「EC」)ノートパソコン。通常のキーシンボルを生成せず、ECはそれをどのように処理するか、他のキーと一緒に押すと生成されるキーイベントを決定します。これは、ノートブックのすべてのECが異なるためカスタマイズできず、構成可能な場合は製造元がそれを秘密に保つことを意味します。

NoSymbolこれは、このキーの組み合わせに対してECによって返されたすべての項目がXシンボルにマップされないことを意味します。evtestカーネル入力層で生成された主要イベントを表示するために使用されます。

関連情報