我有一个在后台定期执行的脚本。 如果按下 Shift 键,我想阻止它的执行。
这个想法是轮询键盘的 Shift 按钮状态,如果按下它 - 立即终止脚本。
有什么想法吗? 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-events观察期。不是很好,但仍然有效:)
答案 0 :(得分:1)
首先,您可以监控按键上/下事件,但据我所知,没有办法判断按键是否当前按下了。如果你对此感到满意,那么......
这意味着监听键事件的事情必须在另一个线程中运行。 shell脚本必须在后台生成一个程序,用于侦听键事件并在keypress上向父脚本发送信号。您可以使用trap通过正常退出来响应信号。
结帐KeyPress。它可能会给你一个良好的开端。
您也可以monitor /dev/input/eventN。 This perl module可能有帮助。