Input

攔截和刪除鍵盤事件

  • June 24, 2020

我想將藍牙鍵盤連接到無頭 Raspberry Pi,並以某種方式攔截按鍵(包括 Ctrl+Shift+X 組合),然後將它們從系統中刪除,以便它們不再與系統互動。

我從不將鍵盤連接到我的樹莓派,只通過 SSH 與它們互動,我想繼續這樣做。僅當連接了硬體鍵盤時,我才想將該硬體的那些按鍵(和釋放)重定向到 Python 腳本中,以便將鍵盤用於家庭自動化的東西,作為控製表面。

這些設備也沒有安裝 X 伺服器,應該保持這種狀態。

我怎樣才能做到這一點?

鍵盤最終應被辨識為標準 HID(人機界面)設備,並顯示為/dev/input/. 您可以使用 讀取設備中的事件evtest,或者通過庫python-evdev從 Python 讀取事件。可能還有其他類似的庫。我不知道 raspian 的軟體包,但 Fedora 肯定有一個名為python-evdev.

evtest沒有參數將列出設備並要求您選擇一個來監視事件。您可能需要使用類似的東西inotifywait來尋找出現在/dev/input/. Python 庫同樣可以列出和監視設備,但我認為它不能在不輪詢的情況下檢測到新設備。如果您向grab設備詢問,其他人將不會收到事件。

evtest按下時的典型輸出enter

Event: time 1509452892.590022, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
Event: time 1509452892.590022, type 1 (EV_KEY), code 28 (KEY_ENTER), value 0
Event: time 1509452892.590022, -------------- SYN_REPORT ------------
Event: time 1509452894.005980, type 4 (EV_MSC), code 4 (MSC_SCAN), value 70028
Event: time 1509452894.005980, type 1 (EV_KEY), code 28 (KEY_ENTER), value 1
Event: time 1509452894.005980, -------------- SYN_REPORT ------------

引用自:https://unix.stackexchange.com/questions/594754