私は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ルールは他のシステムで最も一般的に使用されます。~によると使用規則。
その違いは概して歴史的です。 evdev
XKBが最初に作成されたときに存在しなかった最新のLinuxカーネル入力サブシステム。ソースコードを見るとxkeyboardの設定evdev
を使用すると、base
ルールが(ほとんど)同じテンプレートから作成されることがわかります。ただし、システムのXKBデータベースで生成されたファイルを比較してくださいdiff
。base
ルールは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 = symbol
m_s
evdev.m_k.part
!model = keycodes
詳細については、次を参照してください。キーコードそしてシンボルこれらの規則で参照されているファイル(/usr/share/X11/xkb/keycodes/evdev
特に/usr/share/X11/xkb/symbols/inet
. あなたは興味があるかもしれませんXKB ルール形式に関するこの記事。