2017-04-25 29 views
1

基本上我想寫一個小腳本,允許我進行某種可編程鍵盤仿真。類似於Windows上的autohotkey的工作方式。捕獲並使用後臺python進程中的輸入事件,而不通知被聚焦的窗口

假設我想重新綁定箭頭鍵到'wsad'或'hjkl',但只有當CapsLook處於活動狀態時。我能夠用pyinput檢測鍵盤按鍵(https://pypi.python.org/pypi/pynput)我也可以通過pyautogui輕鬆發送各種鍵盤事件到聚焦窗口(https://pyautogui.readthedocs.io)但我無法弄清楚在當前聚焦的窗口收到事件之前消耗事件的方式。

任何提示?

回答

3

這個模塊是用於捕獲鍵盤事件可用的工具之一:

https://pypi.python.org/pypi/keyboard/

,但它仍然是在發展,不(還)能夠提供一個全局鉤子捕獲鍵盤事件的原點並將它們轉發(或不轉發)到目標應用程序。

另一個工具值得考慮的是:

myboard.py at code.google.com downloads

上述腳本使用Python​​和Xlib模塊,其使得能夠直接與C語言編寫系統庫工作它捕捉到鍵盤事件相當深和系統範圍,它已經崩潰了我的操作系統,同時測試了一下,所以要警告...

缺點伊德爾還使用XGrabKeyXGrabKeyboard從X11 libX11.so系統庫:

import ctypes 
libX11 = ctypes.CDLL('libX11.so') 
XGrabKey = libX11.XGrabKey 
XGrabKeyboard = libX11.XGrabKeyboard 
print("XGrabKey: "  , dir(XGrabKey)) 
print("XGrabKeyboard: ", dir(XGrabKeyboard)) 
+0

感謝您對這個模塊。我想在它的核心是做的背景python腳本運行,這將允許我有條件地禁用鍵盤按鍵(所以前臺程序不會收到按鍵事件)。我可以看到PyPi github上已經有關於該主題的討論(https://github.com/boppreh/keyboard/issues/22)所以,也許隨着時間的推移,PyPi將允許我按照我的需要來做 – Kubeczek

+0

查看我的更新回答。 – Claudio

+0

再一次,謝謝!從簡單的外觀看來,這個myboard.py腳本似乎能夠完成我需要的功能,但我必須承認它對我來說似乎是一個非常粗糙的解決方案。然而,目前沒有其他更好的方法可以做到這一點......如果沒有其他人在未來的幾天中有更好的解決方案,我會選擇您的答案作爲解決方案。 – Kubeczek

相關問題