繁体   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