ベースと evdev の xkb ルールの違いは何ですか?

ベースと evdev の xkb ルールの違いは何ですか?

xf86-input-evdev から xf86-input-libinput に切り替えたところ、キーボードレイアウトが壊れてしまいました。矢印キーと右 Alt、コンテキストメニューキー、Delete キー、テンキーの Enter キーなどがすべて奇妙に置き換わってしまいました。libinput debug-eventsただし、正しいキーが表示されました。確認したところ、Xorg.conf、私は次の行に気づきました:

Option "XkbRules" "base"

に変更した後evdev、キーボードは正常に動作しました。

私は「XKB 構成ガイド」では、さまざまなルールについて言及していますが、それらの違いについての詳細は説明されていません。

2 つのレイアウトの違いは何ですか? libinput でも evdev ルールを使用しても大丈夫ですか?

答え1

要約:Linux では、ルールを使用する必要がありますevdev。リンク先の XKB ガイドに記載されているとおりです。

Linuxシステムでは、エヴデヴルールは最も一般的に使用されていますが、他のシステムではベースルールが使用されます。


この違いは主に歴史的なものです。は evdev現代のLinuxカーネル入力サブシステムであり、XKBが最初に書かれたときには存在していませんでした。xキーボード設定evdevでは、 と の両方のbaseルールが (ほとんど) 同じテンプレートから生成されていることがわかります。diffただし、システムの XKB データベースで生成されたファイルを と比較してください。ルールが特定のキーボード モデルのシンボルbaseをロードするエントリが多数あるのに対し、ルールはモデル固有のエントリのほとんどを削除し、より一般化されたセットをロードします。inetevdev

/usr/share/X11/xkb/rules/base:
[...]
! model         =       symbols
  a4techKB21    =       +inet(media_nav_common)
  asus_laptop   =       +inet(media_common)
  acer_tm_800   =       +inet(acer_laptop)
  benqx730      =       +inet(benqx)
  btc9116u      =       +inet(btc9019u)
  chromebook    =       +inet(chromebook)
  dellsk8125    =       +inet(dell)
// and about 50 more lines
// generated from xkeyboard-config/rules/base.m_s.part

/usr/share/X11/xkb/rules/evdev
[...]
! model         =       symbols
  $evdevkbds    =   +inet(evdev)+inet(%m)
  chromebook    =   +inet(evdev)+inet(chromebook)
  applealu_jis  =   +inet(evdev)+macintosh_vndr/jp(alujiskeys)
  *             =   +inet(evdev)
// ...that's all.
// generated from xkeyboard-config/rules/evdev.m_s.part

いや、実際は、これはルールのモデルからシンボルへのセクション全体ですevdevが、baseバージョンは 60 行ほどです。evdev.m_s.partファイルは、ルールのそのセクションのソース テンプレートです。これは、モデルからシンボルへのマッピングです (!model = symbolそのセクションの先頭の行。したがって、m_sファイル名に が含まれています)。ルールの evdev 固有の他のセクションはevdev.m_k.part、ファイルから取得されるモデルからキーコードへのマッピング (!model = keycodesルールの セクション) であり、そこでの違いは似ています。

詳細については、キーコードそしてシンボルこれらのルールによって参照されるファイル(特に/usr/share/X11/xkb/keycodes/evdev/usr/share/X11/xkb/symbols/inet)。XKBルールフォーマットのこの記事

関連情報