我正在尝试使用 将按键重复率设置为不同的值xset r rate 280 50
。我尝试将此配置语句添加到各种配置文件(~/.zprofile
、、 ),但当我尝试启动 XQuartz.app 时,它总是导致无限崩溃循环。如果我删除配置文件并直接在 xterm 中使用该语句,~/.xinitrc
它就~/.zlogin
可以正常工作。xset
XQuartz 2.7.8 (xorg-server 1.16.4)
OS X 10.11.1 (15B42)
答案1
最近的邮件列表提供了一条线索(回复:新手:XQuartz 安装 FontForge 问题):
我建议你把它放在一边。如果你想做点什么,把脚本放到 ~/.xinitrc.d 中并设置为可执行文件。
经过一些检查,你会发现如果你将一个以“.sh”为后缀的脚本放入你的~/.xinitrc.d
目录中,那么你可以在那里放置 X 个命令(例如xset
)。请确保命令以&
(分离)结尾。
例如,您的quick.sh
脚本可能如下所示:
xset r rate 10 &
然而(注意评论),这比这更复杂一些。Xquartz 重置键盘速率后运行脚本/.xinitrc
。这可能与错误报告通过使 Xquartz 匹配系统偏好设置来解决。
作为一种解决方法,您可以使quick.sh
调用变得更加复杂的脚本:
pkill -9 rapid-keyboard
$HOME/.xinitrc.d/rapid-keyboard &
并且(为了方便起见,将新脚本放在同一目录中),其内容rapid-keyboard
可能是这样的:
#!/bin/sh
export PATH=\
/usr/bin:\
/bin:\
/opt/X11/bin
getvalue() {
value=$(xset q |\
fgrep "$2" |\
sed -e 's/^.*'"$2"':[[:space:]]*//' -e 's/[[:space:]].*//')
[ -z "$value" ] && value="not set"
eval $1=$value
}
WANT_RATE=50
WANT_DELAY=280
LOGFILE=/tmp/rapid-keyboard.log
rm -f $LOGFILE
while :
do
X11_PID=$(pgrep Xquartz)
if [ -n "$X11_PID" ]
then
getvalue XSET_RATE "repeat rate"
getvalue XSET_DELAY "repeat delay"
if [ "x$XSET_RATE" != "x$WANT_RATE" ]
then
echo "** rate was $XSET_RATE at $(date)" >>$LOGFILE
xset r rate $WANT_DELAY $WANT_RATE
elif [ "x$XSET_DELAY" != "x$WANT_DELAY" ]
then
echo "** delay was $XSET_RATE at $(date)" >>$LOGFILE
xset r rate $WANT_DELAY $WANT_RATE
fi
fi
sleep 1
done
脚本记录其更改(除了演示目的外,实际上并不需要),并等待 Xquartz 再次更改设置。在测试中,我看到设置在初始化期间更改了两次,但之后没有更改。