
Это действительно должен быть комментарий к ответу на вопросКак навсегда назначить другую раскладку клавиатуры для 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' "$@"
Чтобы изменить макет, просто запишите идентификатор и введите
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 идентификатора устройств одному оборудованию, я обнаружил, что безопаснее назначать один и тот же код раскладки клавиатуры обоим этим идентификаторам устройств.