Отслеживание клавиатуры Python Pynput CTRL + «второй_ключ» не выводит «второй_ключ»Python

Программы на Python
Anonymous
Отслеживание клавиатуры Python Pynput CTRL + «второй_ключ» не выводит «второй_ключ»

Сообщение Anonymous »


Я пытаюсь отслеживать ввод пользователя с клавиатуры, если он нажимает комбинацию с любой клавишей CTRL. Для этого я использую Python с Pynput.

Обычное отслеживание работает нормально. Но как только я нажимаю CTRL + любую обычную клавишу, вывод становится для меня непригодным, поскольку он полностью меняет ожидаемый вывод клавиши...

В этом примере я сначала нажимаю и отпускаю «a», затем CTRL_L, затем CTRL_L + «a».

Знает ли кто-нибудь, как я могу «перевести» вывод «\x01» в «CTRL + a» или что-то в этом роде? :D

Вывод журнала:

>> 08:58:46.694 | v1.0.0 | DEBUG -> Строка 413: нажата буква «a» -> >> 08:58:46.695 | v1.0.0 | ОТЛАДКА → Строка 415: Тип: KeyCode >> 08:58:46.695 | v1.0.0 | ОТЛАДКА -> Строка 417: char: a >> 08:58:46.695 | v1.0.0 | ОТЛАДКА -> Строка 425: ['a'] >> 08:58:46.696 | v1.0.0 | DEBUG -> Строка 433: 'a' выпущено >> 08:58:47.697 | v1.0.0 | ОТЛАДКА -> Строка 413: нажата клавиша Key.ctrl_l -> >> 08:58:47.697 | v1.0.0 | ОТЛАДКА -> Строка 425: [] >> 08:58:47.798 | v1.0.0 | ОТЛАДКА → Строка 433: Key.ctrl_l выпущен. >> 08:58:50.541 | v1.0.0 | ОТЛАДКА -> Строка 413: нажата клавиша Key.ctrl_l -> >> 08:58:50.541 | v1.0.0 | ОТЛАДКА -> Строка 425: [] >> 08:58:51.140 | v1.0.0 | DEBUG → Строка 413: нажата '\x01' -> >> 08:58:51.143 | v1.0.0 | ОТЛАДКА → Строка 415: Тип: KeyCode >> 08:58:51.143 | v1.0.0 | ОТЛАДКА -> Строка 417: символ: ☺ >> 08:58:51.144 | v1.0.0 | ОТЛАДКА -> Строка 425: [, '\x01'] >> 08:58:51.144 | v1.0.0 | ОТЛАДКА -> Строка 433: выпущен '\x01' >> 08:58:51.354 | v1.0.0 | ОТЛАДКА → Строка 433: Key.ctrl_l выпущен. Функции обратного вызова:

def Keyboard_on_press(self, key): пытаться: logger.debug(f"Нажата {клавиша} -> {тип(клавиша)}") если тип (ключ) — клавиатура._win32.KeyCode: logger.debug("Тип: KeyCode") если ключ.char: logger.debug(f"char: {key.char}") Элиф ключ.is_dead: logger.debug(f"is_dead: {key.is_dead}") Элиф ключ.вк: logger.debug(f"vk: {key.vk}") если ключ отсутствует в self.pressedKeys: self.pressedKeys.append(ключ) logger.debug(self.pressedKeys) если клавиатура.Key.ctrl в self.pressedKeys: logger.debug(f"ctrl + {key} нажата") кроме e как исключение: logger.warn(e) def Keyboard_on_release (я, клавиша): logger.debug(f"{ключ} выпущен") если ключ в self.pressedKeys: self.pressedKeys.remove(ключ) еще: logger.warn(f"{key} не найден в списке!") Использованные версии:
[*]Windows 11 Pro (пробовал и Windows 10) [*]Питон 3.11.4 [*]Pynput 1.7.6
Я просмотрел страницу проблем с документацией и GitHub, но не нашел ничего подходящего. Также попробовал Windows 10 на «голом железе», поскольку ПК с Windows 11 является виртуальной машиной. Но, к сожалению, с тем же выводом :/

Вернуться в «Python»