如何使用 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 脚本包含本问题开头的三行:

#!/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

两个修改使这个特殊情况起作用:

脚本kbd需要DISPLAY:0.0添加

udev 规则对过早的事件作出反应。我将子系统更改为input.

一切都很顺利。

相关内容