Есть ли способ конвертировать специальные не символьные ключи как строковый тип в тип ключа? (Например, «Key.f12» для фактического значения клавиатуры. Key.f12) - PullRequest
1 голос
/ 23 апреля 2020

Я создаю программу, использующую pynput, которая берет последовательность клавиш, сохраняет их в файл для последующей эмуляции этих нажатий клавиш.

Это прекрасно работает для символьных клавиш ('a', '1' , '#', et c.), но не для других клавиш, таких как 'es c', 'enter' и функциональных клавиш (т.е. f1-f12). Он просто выплевывает «Ключ». (например, «Key.es c» или «Key.f12»). Это нормально с такими клавишами, как пробел, ввод и табуляция, для которых я могу использовать строковые представления ("", "\ n" и "\ t")

Я хотел бы знать, есть ли способ конвертировать специальные ключи в строке типа «pynput.keyboard.Key». Например, преобразовать «Key.f12» или «f12» в «hello worldKey.f12» в значение класса Key, Key.f12

Я осмотрелся, но ничего не могу найти даже в документы.

1 Ответ

1 голос
/ 23 апреля 2020

Думайте по-другому, и в официальном документе есть вызов функции parse. Например, вы хотите нажать «Hello world». Сохраните H-e-l-l-o- -w-o-r-l-d-<Enter> в своем файле.

Когда Вы читаете файл в следующий раз, используете .split("-"), чтобы разбить их как список, и используете parse для их обработки. Вот минимальный пример:

from pynput import keyboard

# s is the string in the file
s = "H-e-l-l-o- -w-o-r-l-d-<Enter>"

control = keyboard.Controller()
for i in s.split("-"):
    print(i)
    control.press(*keyboard.HotKey.parse(i))
    control.release(*keyboard.HotKey.parse(i))

Когда вы запустите этот код, он наберет Hello world\n.

...