python 偷懶技巧——使用 keyboard 錄制鍵盤事件
之前在某本書上看到一個程序,可以通過 Python 記錄下全局范圍內的鍵盤事件,使用的是 ctypes 庫。后來幾經嘗試,始終不能成功運行。原來它只支持 Python2 和 32 位的 Windows 系統。。。Excuse me?于是在網上查找可行的替代方案,比如 pyHook 。呃,不合胃口。安裝比較繁瑣(有依賴庫且不能通過 pip 命令安裝),只支持 Windows 系統,況且又是十年前就沒再更新的項目。。。看了下函數調用也算不上簡潔直觀。
后來又多番搜索,終于找到了一個名為keyboard 的 Python 庫,可以綁定全局事件、錄制及模擬鍵盤輸入、設置熱鍵等。尤其是安裝和使用足夠簡單,比較合我的心意(畢竟 Github 上將近 1.5K 的小星星)。
一、特性
全局范圍內的鍵盤事件綁定。即程序可以后臺運行,捕捉其他軟件下的按鍵動作。 跨平臺,支持 Windows 、Linux 以及 MacOS 系統。支持 Python2 和 Python3 。 純 Python 代碼,無需編譯 C 語言模塊。無依賴庫,安裝簡單(只是復制文件就可以)。 通過獨立的線程捕捉事件,不阻塞主程序的運行。 很詳細的文檔,參見項目主頁的 README 。其實我真的有點感覺,這才是我心目中比較“現代”的工具。
二、錄制及模擬按鍵動作
就像前面提到的,安裝 keyboard 的流程非常簡單,無需考慮任何兼容性或者依賴問題,只需要一條簡短的命令:
$ pip install keyboard
可以使用下面的代碼錄制 10 秒鐘的鍵盤事件,并將其回放一遍(即重復按下之前操作的按鍵):
import keyboardimport timekeyboard.start_recording()time.sleep(10)events = keyboard.stop_recording()keyboard.replay(events)
可以使用如下代碼制作一個簡單的 “鍵盤錄制器” (打印輸出全局范圍內的按鍵動作,并將按鍵順序保存在文本文件中):
import keyboarddef print_pressed_keys(e): line = ’, ’.join(str(code) for code in keyboard._pressed_events) print(line) with open(’keylogger.txt’, ’a+’) as f: f.write(line + ’n’)keyboard.hook(print_pressed_keys)keyboard.wait()
PS:上述代碼中的 code 并不是對應按鍵的 ASCII 碼,而是根據鍵盤布局為按鍵指定的數值(如 a 鍵為 30,b 鍵為 42 等等),可以通過自行測試確認具體的對應關系。
如同時按下兩個或多個按鍵,則上述程序會以 code, code... 的形式輸出。
三、熱鍵捕獲及綁定
可以使用如下代碼錄制熱鍵并為該熱鍵綁定上特定的觸發事件:
import keyboardprint(’Press and release your desired hotkey: ’)hotkey = keyboard.read_hotkey()print(’Hotkey selected: ’, hotkey)def on_triggered(): print('Triggered!')keyboard.add_hotkey(hotkey, on_triggered)print('Press ESC to stop.')
其他的使用方式就不再一一列舉了,可以參考 keyboard 項目的 Github 主頁 。
幾種常見的使用示例也已經包含在項目代碼的 examples 目錄下。
以上就是python 偷懶技巧——使用 keyboard 錄制鍵盤事件的詳細內容,更多關于python keyboard 錄制鍵盤事件的資料請關注好吧啦網其它相關文章!
相關文章:
