1. 程式人生 > >在Linux下如何用Python監控鍵盤記錄

在Linux下如何用Python監控鍵盤記錄

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:
這裡寫圖片描述

假如要同時監控多個鍵盤輸入的話,開多個執行緒監控就可以了。