簡體   English   中英

Pynput 觸發物理按鈕按下。 熱鍵按下不起作用

[英]Pynput trigger physical button press. Hotkey pressing not working

代碼工作正常,function 的熱鍵被識別並且按鈕被按下。

一個OBS function由hotkey_e()中的HotKey觸發。

當我按下它時,它會起作用。 但是當我運行這個腳本時,obs function 不會被觸發。

我通過打印發現的唯一區別是,如果您按下組合,它會打印 <69>(對於 e),但如果腳本按下此組合,它會給我一個字符串“w”

打印 output

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM