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구성을 두 개의 개별 파일로 분할 하여 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가 시작되기 전에 키보드를 연결하면 제대로 작동합니다.

메인 라인을 복사하고, idVendoridProduct값을 키보드의 값으로 바꾸고, 및 XKBMODEL매개 변수를 사용하려는 매핑과 일치하는 값으로 바꿔야 합니다.XKBLAYOUTXKBVARIANTXKBOPTIONS

관련 정보