在Linux下如何用Python監控鍵盤記錄
阿新 • • 發佈:2019-02-10
evdev 輸入事件驅動,為輸入子系統提供了一個預設的事件處理方法。其接收來自底層驅動的大多數事件,並使用相應的邏輯對其進行處理。
evdev 輸入事件驅動從底層接收事件資訊,將其反映到 sys 檔案系統中,使用者程式通過對 sys 檔案系統的操作,就能夠達到處理事件的能力。
這裡使用一個叫做evdev的庫進行處理,其原理是用C函式evdev_read()讀取/dev/eventX裝置中的buffer陣列,裡面存有input_event型別資料,下面核心上報的事件都會存在這裡。
編寫以下程式:
#!/usr/bin/env python
#coding: utf-8
from evdev import InputDevice
from select import select
def detectInputKey():
dev = InputDevice('/dev/input/event4')
while True:
select([dev], [], [])
for event in dev.read():
print "code:%s value:%s" % (event.code, event.value)
if __name__ == '__main__':
detectInputKey()
使用root許可權執行程式,通過觀察可知。
注意:如果python執行器報錯evdev庫錯誤,可以去https://pypi.python.org/pypi/evdev下載,並 sudo python setup.py install
它的code就是輸入的鍵值,它的value就是對應其狀態,按下一個鍵時,它的value為1,鬆開時value為0。
那麼稍微修改一下程式碼就可以知道輸入值和狀態了。
def detectInputKey():
dev = InputDevice('/dev/input/event4')
while True:
select([dev], [], [])
for event in dev.read():
if (event.value == 1 or event.value == 0) and event.code != 0:
print "Key: %s Status: %s" % (event.code, "pressed" if event.value else "release")
這樣就實現了能夠讀取鍵盤輸入的鍵和其狀態的程式了。
執行程式,依次按下zxc:
這裡寫圖片描述
假如要同時監控多個鍵盤輸入的話,開多個執行緒監控就可以了。