基本ルールとevdev xkbルールの違いは何ですか?

基本ルールとevdev xkbルールの違いは何ですか?

私はxf86-input-evdevからxf86-input-libinputに切り替えましたが、キーボードのレイアウトが壊れました。矢印キーが右Alt、コンテキストメニューキー、削除キー、数字パッドEnterなどと奇妙に変わりました。libinput debug-eventsただし、正しいキーが表示されます。検査後Xorg.conf、次の行が見つかりました。

Option "XkbRules" "base"

に変更した後、evdevキーボードは正しく機能します。

私が探す」XKB構成ガイド「さまざまな規則が言及されていますが、その違いは詳しく説明されていません。

これら2つのレイアウトの違いは何ですか? libinputでもevdevルールを使用できますか?

ベストアンサー1

簡単に言うと:Linuxでは、次の規則を使用する必要がありますevdev。 XKBの指示に記載されているように、次のリンクをリンクします。

Linuxシステムではevdevルールは他のシステムで最も一般的に使用されます。~によると使用規則。


その違いは概して歴史的です。 evdevXKBが最初に作成されたときに存在しなかった最新のLinuxカーネル入力サブシステム。ソースコードを見るとxkeyboardの設定evdevを使用すると、baseルールが(ほとんど)同じテンプレートから作成されることがわかります。ただし、システムのXKBデータベースで生成されたファイルを比較してくださいdiffbaseルールはinet特定のキーボードモデルのシンボルをロードしますが、ルールはほとんどevdevのモデル固有のアイテムを抑制し、より一般的なセットをロードする複数のアイテムを表示できます。

/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にマップします。ルールの唯一の他のevdev関連部分はこのファイルから来ています。これはモデル - キーコードマッピング(ルールの一部)であり、違いは似ています。!model = symbolm_sevdev.m_k.part!model = keycodes

詳細については、次を参照してください。キーコードそしてシンボルこれらの規則で参照されているファイル(/usr/share/X11/xkb/keycodes/evdev特に/usr/share/X11/xkb/symbols/inet. あなたは興味があるかもしれませんXKB ルール形式に関するこの記事

おすすめ記事