使无线键盘始终使用指定的布局

这真的应该是对如何永久性地为USB键盘分配不同键盘布局这一问题的回复发表评论? 由于评论不可能,这是一个新问题,我希望@Sadi正在阅读它:

我的无线键盘和鼠标在此之后停止工作。 这可能与字符串“USB Keyboard”未包含在我的设备名称中有关。

lsusb Bus 003 Device 088: ID 046a:010b Cherry GmbH

xinput -list ⎡ Virtual core pointer id=2 [master pointer (3)] ⎜ ↳ MLK Wireless Desktop id=15 [slave pointer (2)] ⎣ Virtual core keyboard id=3 [master keyboard (2)] ↳ MLK Wireless Desktop id=14 [slave keyboard (3)]

因此我的GREP行看起来像这样: xinput -list | grep 'Wireless Desktop.*keyboard' "$@" xinput -list | grep 'Wireless Desktop.*keyboard' "$@"

要更改布局,只需记下ID和类型

 setxkbmap -device 14 {language code} 

任何想法如何永久修复它,以便计算机识别此设备并插入正确的语言准备好?


可能的线索在这里:

https://superuser.com/questions/249064/udev-rule-to-auto-load-keyboard-layout-when-usb-keyboard-plugged-in

https://stackoverflow.com/questions/10410462/set-keyboard-layout-using-pyudev#10727557 。

插入外接键盘时如何自动更改系统键盘布局?

据我所知(并不多)所有涉及udev.rules的解决方案最近都停止了工作,目前唯一可行的解​​决方案是一个简单的启动脚本,假设在用户登录之前连接了第二个键盘或否则用户应该稍后手动运行该脚本。

测试用于USB键盘的脚本(此处: https : //askubuntu.com/a/337431/47343 )当然应该针对无线键盘进行修改,这可能类似于下面的那个。

注1:除了输入所需的键盘布局代码之外,它还可能需要一些反复试验(例如,首先在终端窗口中输入每一行),因为作者是“业余”(并且几乎是初级级别)剧本作家“;-)

 #!/bin/bash extkbd=`xinput -list | grep -c "Wireless.*keyboard"` if [[ "$extkbd" -gt 0 ]] then extkbd_id1=`xinput -list | grep "Virtual core keyboard" | awk -F'=' '{print $2}' | cut -c 1-2` extkbd_id2=`xinput -list | grep "Wireless.*keyboard" | awk -F'=' '{print $2}' | cut -c 1-2` extkbd_layout="" setxkbmap -device "${extkbd_id1}" -layout "${extkbd_layout}" setxkbmap -device "${extkbd_id2}" -layout "${extkbd_layout}" notify-send -i input-keyboard "Wireless Keyboard" "is ready and set for use..." fi exit 0 

注2:由于系统似乎将2个设备ID分配给一个硬件,我发现将相同的键盘布局代码分配给这两个设备ID更安全。