udevとsetxkbmapを使用してアクティブユーザーのキーボード設定を変更するには?

udevとsetxkbmapを使用してアクティブユーザーのキーボード設定を変更するには?

作業中にデスクトップに接続するUSB​​キーボードがあります。次の内容は使用時に手動で設定されることが多いxkbmapの設定オプション:

setxkbmap -option compose:ralt
setxkbmap -option ctrl:swap_rwin_rctl
setxkbmap -option ctrl:swap_lwin_lctl

これを頻繁に行うので、次のようにプロセスを自動化したいと思います。ウデブルール。キーボードを挿入すると、次のルールがイベントと一致します。

ACTION=="add", SUBSYSTEM=="usb", DRIVER=="usb", ATTRS{idVendor}=="046a", ATTRS{idProduct}=="0023", RUN+="/home/cutuchiqueno/.local/bin/kbd_udev", OWNER="cutuchiqueno"

RUNスクリプトには、この質問の冒頭に3行が含まれています。

#!/bin/bash
setxkbmap -option compose:ralt
setxkbmap -option ctrl:swap_rwin_rctl
setxkbmap -option ctrl:swap_lwin_lctl
echo `date +%T` >> /home/cutuchiqueno/udevtest

(デバッグ目的で最後の行を追加しました。)残念ながら、オプションはリンクされていません。私はこれが環境パラメータに関連していると想像できますが、実際にこの問題を解決する方法はわかりません。

答え1

2つの修正でこの特別なケースが機能します。

スクリプトを追加するkbd必要がありますDISPLAY:0.0

udevルールは早期イベントに反応します。サブシステムをinput

すべてが順調に進んでいます。

関連情報