如果我使用 say 设置键盘重复率xset r rate 250 100
,断开 USB 键盘然后运行xset -q
,我可以看到断开连接后键盘重复率会自动设置为以下默认值:
$ xset -q | grep delay
auto repeat delay: 660 repeat rate: 25
我可以更改默认值吗?它们存储在哪里?我正在运行 Debian Sid。
答案1
你可以改变所谓的座位默认值通过/etc/X11/xinit/xserverrc
添加相关参数(参见XSERVER(1)
)。
-ardelay milliseconds
sets the autorepeat delay (length of time in milliseconds that a key must be depressed before autorepeat starts).
-arinterval milliseconds
sets the autorepeat interval (length of time in milliseconds that should elapse between autorepeat-generated keystrokes).
arinterval
(!)为了根据xset
重复频率计算出以毫秒为单位的值,请计算1000/freq
。
我的现在说exec /usr/bin/X -nolisten tcp -ardelay 200 -arinterval 20 "$@"
(我曾经尝试通过设置来使重复率永久化Option "AutoRepeat" "190 70"
/etc/X11/xorg.conf.d/keyboard.conf
,但这不会坚持下去,所以我(无助地)诉诸于每分钟运行一个xset
cron 作业 XD)
答案2
当我们在 bash 提示符下更改设置时,新设置似乎仅存储在正在运行的 X Server 的内存中。
为了使更改持久,/etc/kbd/config
如果您的系统有该文件,您可能会幸运地取消注释“KEYBOARD_RATE”和“KEYBOARD_DELAY”行。
否则(无论如何,对于 Ubuntu),往往有各种特定于发行版的方法,请参阅:https://askubuntu.com/q/140255/231504
xset
这就是为什么我猜测仅通过 X Server 中的实时内存设置的值:
当我在 下运行命令时strace
,如下所示:
strace xset r rate 175 37
看来(基于我有限的经验strace
)设置被写入套接字,并且在我的机器上套接字是:
/tmp/.X11-unix/X0
要查看该套接字另一端的内容:
sudo lsof +d /tmp/.X11-unix
...输出:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
Xorg 1635 root 3u unix 0xffff88046ae4bc00 0t0 24945 /tmp/.X11-unix/X0 type=STREAM
...这表明监听套接字的进程是Xorg
(又名 X 服务器)。当然,X 服务器可以假设将这些值持久保存到某个地方的非易失性内存中,但根据用户的多个轶事,情况似乎并非如此。
答案3
或许https://github.com/SFTtech/xautocfg帮助你。
它可以自动为新连接的设备设置键盘重复率,并且可以作为您的用户运行 - 当检测到新设备时,它会收到 X 服务器的通知。