Как прослушать буквенные клавиши с комбинацией клавиш-модификаторов, используя pynput? - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь автоматизировать некоторые вещи, используя python. Я использую pynput для прослушивания комбинаций клавиш. Я пытаюсь слушать комбинацию Ctrl + Shift + Alt. У меня нет проблем с клавишами-модификаторами, но только с буквенными клавишами. Я просмотрел страницу документации python и попробовал следующее:

from pynput import keyboard
from subprocess import Popen, PIPE
from evdev import uinput, ecodes as e
import os

# The key combination to check
COMBINATION = {keyboard.Key.shift, keyboard.Key.ctrl, keyboard.Key.alt, keyboard.KeyCode.from_char('k')}

# The currently active modifiers
current = set()

def on_press(key):
    if key in COMBINATION:
        current.add(key)
        if all(k in current for k in COMBINATION):
            print("x")
    if key == keyboard.Key.esc:
        listener.stop()

def on_release(key):
    try:
        current.remove(key)
    except KeyError:
        pass

with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
        listener.join()

После запуска файла python из терминала скрипт не может обнаружить мою комбинацию клавиш.

1 Ответ

0 голосов
/ 18 апреля 2020

Из документов вы можете использовать этот метод. https://pynput.readthedocs.io/en/latest/keyboard.html

from pynput import keyboard

def on_activate():
    print('Global hotkey activated!')

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

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