xorg:レイアウトの異なる2つのキーボード

xorg:レイアウトの異なる2つのキーボード

内蔵キーボードはポルトガル語で、USBキーボードは英語(国際)になるようにラップトップを設定しようとしました。私はいくつかの研究でxorgサーバーの起動後にUSBキーボードを接続することで完璧に動作するソリューションを考えました。この場合、両方のキーボードには独自のレイアウトがあります。ただし、USB キーボードが接続された状態で xorg サーバーを起動すると、両方のキーボードに英語のレイアウトが表示されます。

今私の/etc/X11/xorg.conf.d/30-keyboard.conf状況は次のとおりです。

Section "InputClass"
    Identifier "system-keyboard"
    MatchIsKeyboard "on"
    MatchProduct "AT Translated Set 2 keyboard"
    Driver "evdev"
    Option "XkbModel" "abnt2"
    Option "XkbLayout" "br"
EndSection

Section "InputClass"
    Identifier "usb-keyboard"
    MatchIsKeyboard "on"
    MatchProduct "Evision RGB Keyboard"
    Driver "evdev"
    Option "XkbModel" "pc104"
    Option "XkbLayout" "us"
    Option "XkbVariant" "altgr-intl"
EndSection

xorgサーバーを起動してUSBキーボードを接続すると、正しく機能する理由を本当に理解していません。ただし、USBキーボードがすでに接続されている状態でxorgサーバーを起動すると機能しません。

30-system-keyboard.conf構成を2つの別々のファイルに分割し、1つが40-usb-keyboard.conf別のファイルをロードしようとしましたが、結果は同じです。

すべてのケースで動作するように誰かがこの問題を解決するのに役立ちますか?

レイアウトを設定すると、setxkbmap -device IDIDが変更され、機能しません。

答え1

同様の要件があり、udev次の規則を使用して問題を解決できました/etc/udev/rules.d/70-keyboard.rules

ACTION!="add|change", GOTO="keyboard_end"
SUBSYSTEM!="input", GOTO="keyboard_end"
KERNEL!="event*", GOTO="keyboard_end"

ENV{ID_INPUT_KEY}=="?*", DRIVERS=="usb", ATTRS{idVendor}=="413c", ATTRS{idProduct}=="2003", ENV{XKBMODEL}="pc105", ENV{XKBLAYOUT}="fr", ENV{XKBVARIANT}="oss", ENV{XKBOPTIONS}="nbsp:level3n,lv3:ralt_switch,compose:menu,terminate:ctrl_alt_bksp"

LABEL="keyboard_end"

Xが起動する前にキーボードを接続すると正常に動作します。

メインラインをコピーし、値をキーボードの値に置き換え、パラメータを使用するマッピングに一致する値に置き換える必要がありますidVendoridProductXKBMODELXKBLAYOUTXKBVARIANTXKBOPTIONS

関連情報