~によるとこのページudevキーからXへの直接マッピングはなく、独自のマッピングがあります。
Xには(準)完全に別々のキーマッピング方法があります。
誰かがudevを無視し、Xがなぜこのようなことをするのかを詳細に説明したり指摘したりできますか?
答え1
いくつかの間違った仮定をしました。他のUNIXバリアントで実行されます。
Udevはキーボード処理で非常に限られた役割のみを実行します。特定のキーボードモデルを検出し、ベンダー固有のキーを宣言します。 Udevは標準キー(例:Aおよび)では機能せず、ベンダー固有のF1キー(例:Brightness upまたは)Wifi on/off(通常はアイコンで表示)でのみ機能します。これらのキーは通常アプリケーションでは使用されませんが、ACPI イベントにマップされます。
Linuxカーネルには、一般的に使用されるキーに対する独自のマッピングスキームがあり、これはコマンドを使用して設定できますloadkeys
。複数のキーボードが接続されている場合、udevが実行する設定は1つのキーボードにのみ適用され、グローバルloadkeys
カーネルキーマップに従って機能します。
カーネルのキーマップは、Xが提供するほとんどすべての微妙な違いをカバーしていません。そのため、Xには独自のスキームがあり、カーネル設定をほとんど無視します。 Xはudevを介して設定されたキーボード固有のマッピングを考慮します。
答え2
私は推測しましたが、X11キーボードドライバはキーボードデバイスと直接通信して、rawキー入力をキーコードとして受け取ります。
これは、X11がクッキングされたイベントだけでなく、キーボードへの低レベルのアクセスを望んでいるためです。キーコードとキーシンボル間のマッピングはいくつかの方法で指定できます。
- キーマップの設定
setxkbmap
- 個別ボタンの設定
xmodmap
- プログラム的にXChangeキーボードマッピング など