[英]Pynput trigger physical button press. Hotkey pressing not working
代碼工作正常,function 的熱鍵被識別並且按鈕被按下。
一個OBS function由hotkey_e()中的HotKey觸發。
當我按下它時,它會起作用。 但是當我運行這個腳本時,obs function 不會被觸發。
我通過打印發現的唯一區別是,如果您按下組合,它會打印 <69>(對於 e),但如果腳本按下此組合,它會給我一個字符串“w”
from pynput.keyboard import Key, Controller, Listener, HotKey
kc = Controller()
def hotkey_e():
kc.press(Key.alt_l)
kc.press(Key.ctrl_l)
kc.press(Key.shift)
kc.press("w")
kc.release(Key.alt_l)
kc.release(Key.ctrl_l)
kc.release(Key.shift)
kc.release("w")
HOTKEYS = [HotKey(HotKey.parse("<shift>+<ctrl>+<alt>+" + "e"), hotkey_e)]
def on_press(key):
if key == Key.esc:
listener.stop()
print(str(key))
for hotkey in HOTKEYS:
hotkey.press(listener.canonical(key))
def on_release(key):
for hotkey in HOTKEYS:
hotkey.release(listener.canonical(key))
with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()
我也試過
with kc.pressed(Key.alt):
with kc.pressed(Key.ctrl):
with kc.pressed(Key.shift):
kc.press("w")
kc.release("w")
編輯:我發現如果我的 OBS windows 是活動的 window 熱鍵正在工作。 但它應該在后台運行
我的解決方案是在按鍵之間設置一些睡眠
def hotkey_e():
kc.press(Key.alt_l)
time.sleep(0.05)
kc.press(Key.ctrl_l)
time.sleep(0.05)
kc.press(Key.shift)
time.sleep(0.05)
kc.press("w")
time.sleep(0.05)
kc.release(Key.alt_l)
time.sleep(0.05)
kc.release(Key.ctrl_l)
time.sleep(0.05)
kc.release(Key.shift)
time.sleep(0.05)
kc.release("w")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.