zsh 是否可以在没有依赖于图形会话的工具的情况下检测关键状态?
我已将 getty@tty1 服务覆盖为自动登录,并zlogin
执行 sway。我想通过取消设置来防止按住 Shift 键时运行图形界面rcs
。有没有类似grub的东西按键状态?
答案1
终端不传输此信息。您需要调用特定于 Linux 控制台的外部实用程序(或编写 zsh 可加载模块)。它需要调用其中之一Linux 控制台 ioctl, 具体来说TIOCLINUX
为了获取移位状态。与键盘相关的实用程序位于kbd
包裹,但我认为没有一个报告修饰符状态。
您可以在以下位置找到此类实用程序的代码:Stack Overflow 上有类似的问题。
如果您不想依赖其他实用程序,kbd 软件包包括kbdinfo
可以报告LED状态。
# Start X if Caps Lock is on
if kbdinfo gkbled capslock; then
setleds -D -caps
exec startx
fi