我有一个 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
.
一切都很顺利。