xset 的默认重复率存储在哪里?

xset 的默认重复率存储在哪里?

如果我使用 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 "$@"

[发现于https://superuser.com/questions/935801/whenever-i-plug-in-another-keyboard-key-repeating-rate-is-reset-to-some-value]

(我曾经尝试通过设置来使重复率永久化Option "AutoRepeat" "190 70" /etc/X11/xorg.conf.d/keyboard.conf,但这不会坚持下去,所以我(无助地)诉诸于每分钟运行一个xsetcron 作业 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 服务器的通知。

相关内容