在shell脚本中获取键盘控制

在shell脚本中获取键盘控制

我有一个特定的 shell (zsh) 脚本,它一次读取一个字符,然后执行一项操作。在 shell 中,这是通过循环中的“read -k”来实现的。我想作为键盘快捷键执行脚本,而不打开外壳。

为此获取键盘输入的最简单方法是什么?如果我想读取整个字符串,我可以使用 dmenu,但脚本需要能够一次解析一个字符。

谢谢。

答案1

(试图发表评论,但我收到错误 - 将尝试作为答案)

当您说“从快捷方式执行”“无需打开外壳”时,您是在图形环境(X11)中谈论无需打开终端仿真器窗口吗?

shell 命令read从“标准输入”字符流读取字符 - 不一定是键盘。

终端仿真器在其窗口上接收 X11 键盘事件,并映射到字符流(通常作为标准输入启动)。

如果您想使用read但不想使用终端仿真器,则需要其他东西来将某些窗口的 X11 按键事件映射到字符流。 (可能是“根窗口”)

根据您的脚本对角色执行的操作,编写小型图形程序可能会更容易。

答案2

xbindkeys可以注册热键并执行您想要的任何操作。这样您就可以拥有激活您的程序的密钥,然后按照您的意愿进行操作。

要启动的东西是一个终端模拟器,其中 zsh 运行直接执行的脚本read -k。这样您就不必自己启动终端。请注意,您可以指示终端以您想要的任何尺寸(例如小)显示。

如果没有激活密钥(或任何其他激活),我不清楚您要如何区分正常键盘输入何时应进入您的程序或您可能使用的其他应用程序。

相关内容