![使无线键盘始终使用指定的布局](https://linux22.com/image/1083087/%E4%BD%BF%E6%97%A0%E7%BA%BF%E9%94%AE%E7%9B%98%E5%A7%8B%E7%BB%88%E4%BD%BF%E7%94%A8%E6%8C%87%E5%AE%9A%E7%9A%84%E5%B8%83%E5%B1%80.png)
这确实应该是对问题的答复的评论如何永久地为 USB 键盘分配不同的键盘布局?由于无法发表评论,这里是新问题,我希望@Sadi 正在阅读它:
我的无线键盘和鼠标此后停止工作。这可能与我的设备名称中不包含字符串“USB 键盘”有关。
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' "$@"
要更改布局,只需记下 ID 和类型
setxkbmap -device 14 {language code}
有什么想法可以永久修复它,以便计算机识别该设备并在插入后准备好正确的语言?
可能的线索在这里:
答案1
据我所知(不多),所有涉及的解决方案udev.规则最近停止了工作,目前唯一似乎可行的解决方案是一个简单的启动脚本,该脚本假定第二个键盘在用户登录之前已连接,否则用户应该稍后手动运行该脚本。
该脚本经过测试,适用于 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="<kbdlayoutcode>"
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 分配相同的键盘布局代码更安全。