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

时间:2010-02-03 03:35:41

标签: linux shell keyboard

我有一个在后台定期执行的脚本。 如果按下 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观察期。不是很好,但仍然有效:)

1 个答案:

答案 0 :(得分:1)

首先,您可以监控按键上/下事件,但据我所知,没有办法判断按键是否当前按下了。如果你对此感到满意,那么......

这意味着监听键事件的事情必须在另一个线程中运行。 shell脚本必须在后台生成一个程序,用于侦听键事件并在keypress上向父脚本发送信号。您可以使用trap通过正常退出来响应信号。

结帐KeyPress。它可能会给你一个良好的开端。

您也可以monitor /dev/input/eventNThis perl module可能有帮助。