
これは質問に対する返答に対するコメントであるべきだ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ルール最近動作しなくなりました。現時点で機能していると思われる唯一の解決策は、ユーザーがログインする前に 2 番目のキーボードが接続されていることを前提とする単純な起動スクリプトです。そうでない場合は、ユーザーが後でそのスクリプトを手動で実行する必要があります。
このスクリプトは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: システムは 1 つのハードウェアに 2 つのデバイス ID を割り当てるようですが、両方のデバイス ID に同じキーボード レイアウト コードを割り当てる方が安全であることがわかりました。