从 Linux 控制台检测 zsh 中的关键状态

从 Linux 控制台检测 zsh 中的关键状态

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

相关内容