少し調査した結果、解決策が見つかりましたが、他の(おそらくより良い)答えにはまだ心を開いています。
ここだスタートアップスクリプト(に追加することができスタートアップアプリケーション maually入力された設定されます)usbkbd_layoutに変数usbkbdデバイスIDで見つかったのXINPUTの-listは:
#!/bin/bash
usbkbd=`xinput -list | grep -c "USB Keyboard"`
if [[ "$usbkbd" -gt 0 ]]
then
usbkbd_ids=`xinput -list | grep "USB Keyboard" | awk -F'=' '{print $2}' | cut -c 1-2`
usbkbd_layout="tr(f)"
for ID in $usbkbd_ids
do
setxkbmap -device "${ID}" -layout "${usbkbd_layout}"
done
fi
exit 0
このスクリプトは、ユーザーがデスクトップセットアップでラップトップの使用を開始するシナリオ(外部キーボード、マウス、モニターなど)で非常に便利で(より安定しています)、外部USBキーボードが接続されるたびに手動で実行することもできます...
================================================== ========================
より優れた(ほぼ完璧な)ソリューション-MinimusHeximusと、彼が以下のコメントで言及したスレッドへのそれぞれの貢献者に感謝します。
USBキーボードをプラグインするだけで、ラップトップのデフォルトのキーボードレイアウト(TR-Q)を維持したまま、自動的に異なる(TR-F)キーボードレイアウトを適用できます!
これを可能にするファイルとその内容は次のとおりです。
/etc/udev/rules.d/00-usb-keyboard.rules
ATTRS{idVendor}=="09da", ATTRS{idProduct}=="0260", OWNER="sadi"
ACTION=="add", RUN+="/home/sadi/.bin/usb-keyboard-in_udev"
ACTION=="remove", RUN+="/home/sadi/.bin/usb-keyboard-out_udev"
/home/sadi/.bin/usb-keyboard-in_udev
#!/bin/bash
/home/sadi/.bin/usb-keyboard-in &
/home/sadi/.bin/usb-keyboard-in
#!/bin/bash
sleep 1
DISPLAY=":0.0"
HOME=/home/sadi/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME
usbkbd_id=`xinput -list | grep "USB Keyboard" | awk -F'=' '{print $2}' | cut -c 1-2 | head -1`
usbkbd_layout="tr(f)"
if [ "${usbkbd_id}" ]; then
gsettings set org.gnome.settings-daemon.plugins.keyboard active false
sleep 2
setxkbmap -device "${usbkbd_id}" -layout "${usbkbd_layout}"
fi
/home/sadi/.bin/usb-keyboard-out_udev
#!/bin/bash
/home/sadi/.bin/usb-keyboard-out &
/home/sadi/.bin/usb-keyboard-out
#!/bin/bash
sleep 1
DISPLAY=":0.0"
HOME=/home/sadi/
XAUTHORITY=$HOME/.Xauthority
export DISPLAY XAUTHORITY HOME
gsettings set org.gnome.settings-daemon.plugins.keyboard active true
ノート:
- もちろん、。 "bin"フォルダー内の4つのファイルすべてに必要なアクセス許可(読み取り可能および実行可能)が必要です。これは、たとえば、
chmod - 755
/home/sadi/.bin/usb-keyboard-*
- USBキーボードを接続した後でも、同じ(デフォルトの)キーボードレイアウトが使用され、2回目の試行で指定されたレイアウトに切り替えられる場合があります(おそらくもう少しスリープ時間が必要ですか?)
- USBキーボード固有のレイアウトは、ログイン画面(ログアウト時)では無効です。
- / homeに別のパーティションを使用する場合は、ルートパーティションのどこかに4つのスクリプト(たとえば、/ usr / local / bin)を置き、udevが検索する可能性があるため、それぞれのファイルの内容を適宜変更することをお勧めします/ homeパーティションがマウントされる前にこれらのファイルを使用すると、問題が発生します。
このセットアップをさまざまな要件に適応させるには:
- USBキーボードのベンダーと製品IDは、コマンドの出力ごとに変更する必要があります
lsusb
(たとえば、私のlsusb
出力は私のUSBキーボードのためにこれを持っています。Bus 001 Device 006: ID 09da:0260 A4 Tech Co., Ltd
)
- OWNERおよびすべてのユーザーディレクトリ名を「sadi」から別の名前に変更する必要があります
- usbkbd_idは、正しいデバイスIDを取得するために少し調整する必要がある場合があります(たとえば、コマンドの出力に
xinput -list | grep "USB Keyboard"
2行が表示されます; ↳ USB Keyboard id=14 [slave keyboard (3)]
そして↳ USB Keyboard id=16 [slave keyboard (3)]
、awk
フィールド区切り文字として「=」を使用し、2番目の部分をキャプチャすることでフィルタリングされます。最初の2桁、次に最初の行の値のみを使用)
- usbkbd_layoutの値は、他の有効な選択肢である可能性があります