Linux下使用Python捕獲鍵盤輸入

2021-08-31 21:01:18 字數 1386 閱讀 3158

在linux下如何用python監控鍵盤記錄

思路在上篇已經說到如何使用python獲取/dev/input目錄下event對應的裝置的名字。那麼我們可以知道裝置的名字,就可以通過名字知道哪些event對應的是鍵盤(可能不只乙個鍵盤)。然後在/dev/input/下的對應的event就是負責處理鍵盤輸入的資料的event。

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()

其中select的作用是等待dev改變後再執行後面的**,dev.read()返回的是buffer陣列,裡面存有input_event型別資料

使用root許可權執行程式,通過觀察可知。它的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")

這樣就實現了能夠讀取鍵盤輸入的鍵和其狀態的程式了。

效果

linux下使用python連線redis

1.1 linux已預設支援python,可在終端使用python檢視。1.2 python提供了乙個模組redis py來使我們很方便的操作redis資料庫,安裝該模組也很簡單。sudo apt install python pip sudo pip install redis pip insta...

Linux下Python虛擬環境使用

使用虛擬環境進行專案管理的好處很多,主要可以防止不同包的衝突以及不同專案可能需要的同乙個包的版本也不一樣。python下的虛擬環境管理有pipenv,virtualenv,之前一直使用pipenv來進行管理,但最近發現python3自帶了虛擬環境支援,雖然功能可能沒有pipenv強大,但相對來說方便...

linux 下 使用 yum安裝python3

一 yum 源準備 1 先更新一下yum sudo yum y update 該 y 標誌用於提醒系統我們知道我們正在進行更改,免去終端提示我們要確認再繼續 2 安裝yum utils 一組擴充套件和補充yum的實用程式和外掛程式 sudo yum y install yum utils 3 安裝c...