[英]Im trying to make macro/hotkey
它只是不起作用我得到一個錯誤說
AttributeError: 'Controller' object has no attribute 'is_pressed'
代碼:
from pynput.mouse import Button, Controller
from pynput.keyboard import Key, Controller
from pynput.keyboard import Controller
from pynput import mouse
from pynput import keyboard
keyboard = Controller()
while True:
if keyboard.is_pressed('u'):
keyboard.press('w')
keyboard.release('w')
有人可以幫我嗎!
pynput
有特殊的 class Listener
來捕捉按下的鍵。 它在線程中運行並且它不需要while True
所以它不會阻塞主代碼。
按ESC
停止它。
from pynput.keyboard import Key, Controller, Listener
def on_press(key):
print('{} pressed'.format(key))
#print(dir(key))
try:
if key.char == 'u':
keyboard.press('w')
keyboard.release('w')
except Exception as ex:
print(ex)
def on_release(key):
print('{} release'.format(key))
if key == Key.esc:
# Stop listener
return False
# --- main ---
keyboard = Controller()
listener = Listener(on_press=on_press, on_release=on_release)
listener.start()
# ... other code ...
listener.join()
順便提一句:
如果您想在系統中使用全局宏/熱鍵並使用 Linux,那么您可以為此使用特殊程序AutoKey 。 它是用 Python 創建的,它具有創建宏/腳本/等的 GUI。
如果你想在系統中使用全局宏/熱鍵並使用 Windows 你寧願使用流行的AutoHotKey
如果您想在某些GUI
程序中創建宏/熱鍵,那么您應該為此使用GUI
函數。
查看文檔,下面是其中的一個片段。
全局熱鍵
鍵盤監視器的一個常見用例是對全局熱鍵做出反應。 由於偵聽器不維護任何 state,因此涉及多個鍵的熱鍵必須將此 state 存儲在某處。
為此, pynput提供了 class
pynput.keyboard.HotKey
。 它包含兩種更新 state 的方法,旨在與鍵盤偵聽器輕松互操作:pynput.keyboard.HotKey.press
和pynput.keyboard.HotKey.release
可以直接作為偵聽器回調傳遞。[...]
這將創建一個熱鍵,然后使用偵聽器更新其 state。 一旦同時按下所有指定的鍵,就會調用
on_activate
。請注意,鍵在傳遞給
HotKey
實例之前通過pynput.keyboard.Listener.canonical
傳遞。 這是為了從按鍵事件中刪除任何修飾符 state,並使用多個物理按鈕規范化修飾符。方法
pynput.keyboard.HotKey.parse
是一種方便的 function 將快捷字符串轉換為鍵 collections。 請參閱其文檔以獲取更多信息。要注冊多個全局熱鍵,請使用便捷的 class
pynput.keyboard.GlobalHotKeys
:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.