簡體   English   中英

使用 pynput 監聽器創建鍵盤快捷鍵

[英]Creating keyboard shortcuts with pynput listener

我正在嘗試創建一個腳本,當激活熱鍵時,它會監聽按下的下一個鍵並在字典中查找它以返回一個值。 當我調試時它工作正常,但是當我正常運行時它沒有正確響應,我認為這是由於線程處理,但我不知道如何解決它。

import keyboard
import ast
from pynput import keyboard as kb

keyboard_events={}
path = 'D:\\shortcuts.ini'
file = open(path, 'r')
content = file.read()
keyboard_events = ast.literal_eval(content)
current = set()

def on_activate():
    print('Global hotkey activated!')
    try:
        c = keyboard.read_key()
    except:
        print()
    if c in keyboard_events:
        print(keyboard_events[c])
        keyboard.write(keyboard_events[c])


def for_canonical(f):
    return lambda k: f(l.canonical(k))

hotkey = kb.HotKey(
    kb.HotKey.parse('<ctrl>+<shift>'),
    on_activate)
with kb.Listener(
        on_press=for_canonical(hotkey.press),
        on_release=for_canonical(hotkey.release)) as l:
    l.join()

已解決,問題不在於線程,而是使用熱鍵,鍵被“按下”。 我分享解決方案'''

import keyboard
import ast
from pynput import keyboard as kb
import time

keyboard_events={}
path = 'shortcuts.ini'
file = open(path, 'r')
content = file.read()
keyboard_events = ast.literal_eval(content)
current = set()

def on_activate():
    time.sleep(0.1)
    keyboard.press_and_release('ctrl')
    keyboard.press_and_release('shift')
    time.sleep(0.1)
    c = keyboard.read_key()

    if c == 'ctrl' or 'mayusculas':
        c = keyboard.read_key()

    if c in keyboard_events:
        keyboard.press('backspace')
        keyboard.write(keyboard_events[c])


def for_canonical(f):
    return lambda k: f(l.canonical(k))

hotkey = kb.HotKey(
    kb.HotKey.parse('<ctrl>+<shift>'),
    on_activate)
with kb.Listener(
        on_press=for_canonical(hotkey.press),
        on_release=for_canonical(hotkey.release)) as l:
    l.join()

'''

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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