キーボードごとに異なるレイアウトを使用する

キーボードごとに異なるレイアウトを使用する

ここで同様の質問を見たことがありますが、それらのどれも繰り返さないようです。私は長年にわたってこの問題について進歩を遂げてきましたが、まだ行く道があります。最新のステップは、(1)外部キーボードが接続されているときに特定のキーボードレイアウトを適用し、(2)接続が切断された場合に復元するために次のudevルールを使用していることです。

ACTION=="add", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="2403", SUBSYSTEMS=="usb", ENV{XKBMODEL}="pc105", ENV{XKBLAYOUT}="tr", ENV{XKBVARIANT}="f", ENV{XKBOPTIONS}=""
ACTION=="remove", ATTRS{idVendor}=="09da", ATTRS{idProduct}=="2403", SUBSYSTEMS=="usb", ENV{XKBMODEL}="pc105", ENV{XKBLAYOUT}="tr", ENV{XKBVARIANT}="", ENV{XKBOPTIONS}=""

しかし、残念ながら、これは対応する外部キーボードに指定されたキーボードレイアウトを適用するようです。グローバル、そのキーボードに特に適用されません。その結果、問題を解決するために、次の手順を含むシェルスクリプトで実行できる他の手順を実行しない限り、統合ノートブックキーボードを効果的に使用できなくなります。

int_kbd_id="$(xinput -list | grep " AT Translated Set 2 keyboard " | awk -F'=' '{print $2}' | awk -F' ' '{print $1}')"
ext_kbd_id="$(xinput -list | grep " COMPANY 2.4G Device   " | awk -F'=' '{print $2}' | awk -F' ' '{print $1}')"
if [[ "$int_kbd_id" ]]; then
    setxkbmap -device "$int_kbd_id" -layout "tr" -variant ""
fi
if [[ "$ext_kbd_id" ]]; then
    setxkbmap -device "$ext_kbd_id" -layout "tr" -variant "f"
fi

これで、セッション中に少なくとも上記のudevルールを最初に実行した後(ユーザーがログイン中に両方のキーボードを使用できるようにする前に)、このスクリプトを自動的に実行する必要があります。このスクリプトを実行した後、外部キーボードの接続を切断して再接続すると、統合ノートブックキーボードのレイアウトが再び変更されないことがわかりました(ただし、この動作がどれほど安定しているかはわかりません)。

これまで、(1)udevルールRUN+="/usr/local/bin/<SCRIPT>"、(2)、(3)を使用して/etc/xdg/autostart/keyboard-layouts.desktopこれを実行しようとした3回の試行は/etc/systemd/system/keyboard-layouts.serviceすべて失敗しました。修正されたudevルールは2つのキーボードを完全に使用できなくし、他のキーボードには何の効果もありません。それはおそらく、 "Before ="、 "After ="などのオプションが使用されていないため、udevルールの前にスクリプトが実行されたためです。正しく設定してください。システム化されたサービス...

関連情報