我一直在尝试配置我的笔记本电脑,以便内置键盘为葡萄牙语,而我的 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 ID
不起作用,因为 ID 发生了变化。
答案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 启动之前插入键盘时,它可以正常工作。
您必须复制主线,将idVendor
和idProduct
值替换为键盘的值,XKBMODEL
并将XKBLAYOUT
、XKBVARIANT
和XKBOPTIONS
参数替换为与您要使用的映射匹配的值。