2010-02-03 44 views
1

我有一個在後臺定期執行的腳本。 如果按下Shift鍵,我想防止其執行。Linux shell:輪詢鍵盤按鈕的狀態

這個想法是輪詢鍵盤的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事件觀察期。不是很好,但仍然有效:)

+0

我會建議使用這個GUI窗口。它避免了很多討厭的問題(終端甚至不傳輸這些信息,而evdev需要root訪問)。 – Tronic 2010-02-20 22:17:14

回答

1

首先,您可以監視鍵上/下事件,但據我所知,沒有辦法確定鍵是否目前被按下。如果你沒有問題,那麼...

這意味着監聽關鍵事件的事件必須在另一個線程中運行。 shell腳本必須在後臺產生一個程序,用於監聽關鍵事件,並在按鍵時向父腳本發送信號。您可以使用trap通過正常退出來響應信號。

結賬KeyPress。它可能會給你一個好的開始。

您可能也可以通過monitor /dev/input/eventNThis perl module可能會有所幫助。

+0

謝謝!/dev/input /看起來像somthing足夠接近解決方案! :) – kolypto 2010-02-03 14:57:12

+0

它可以判斷當前是否按下了某個鍵。見['evtest' man page](http://manpages.ubuntu.com/manpages/precise/man1/evtest.1.html),'--query'選項。 – 2015-01-22 05:55:52