代码之家  ›  专栏  ›  技术社区  ›  kolypto

linux shell:轮询键盘按钮的状态

  •  1
  • kolypto  · 技术社区  · 14 年前

    我有一个脚本,在后台定期执行。 我想阻止它的执行如果 换档 按键。

    我们的想法是调查键盘的 换档 按钮状态,如果按下按钮,则立即终止脚本。

    有什么想法吗?允许使用X服务器:我想这会有帮助。

    UPD: 我现在正在使用这个愚蠢的黑客:

    [ $( sh -c 'cat /dev/input/by-id/usb-*kbd & sleep 0.5 ; kill $! 2>/dev/null' | wc -c ) -gt 1 ] && exit 
    

    脚本只检测当前的键盘事件,但不区分它们。0.5秒是KBD事件监视周期。不是很好,但仍然有效:)

    1 回复  |  直到 14 年前
        1
  •  1
  •   dj_segfault    14 年前

    首先,您可以监视键的上/下事件,但据我所知,无法判断键是否 目前 按下。如果你同意,那么…

    这意味着监听密钥事件的东西必须在另一个线程中运行。shell脚本必须在后台生成一个程序,该程序监听关键事件并在按键时向父脚本发送信号。你可以使用 trap 优雅地退出对信号作出反应。

    退房 KeyPress . 也许会给你一个好的开始。

    你也可以 monitor /dev/input/eventN . This perl module 也许有帮助。