Как смоделировать событие нажатия клавиши в python на другой программе, работающей на python - PullRequest
0 голосов
/ 17 апреля 2019

Я использую модель ML, которая предсказывает жесты пальцев. Я пытаюсь смоделировать событие нажатия клавиши в python, используя библиотеку pynput, и я проверяю, что она работает нормально. Но у меня есть другая программа, которая является игрой, написанной на python с использованием библиотеки pygame, который открывается в новом окне, но проблема в том, что элементы управления нажатием клавиш не работают, но работают, когда я вручную нажимаю кнопки клавиатуры.

Ответы [ 2 ]

1 голос
/ 17 апреля 2019

В Pygame вы можете добавить события в очередь событий, выполнив:

newevent = pygame.event.Event(type, **attributes) #create the event
    pygame.event.post(newevent) #add the event to the queue

Где type - тип события (числовая константа) и **attributes список атрибутов клавиш, также предопределенных констант.

Все эти константы определены в модуле pygame.locals. документы по событиям Pygame и документы по ключам Pygame перечисляют все из них.

Так что, если вы хотите смоделировать нажатие клавиши 'a', например, код будет:

newevent = pygame.event.Event(pygame.locals.KEYDOWN, unicode="a", key=pygame.locals.K_a, mod=pygame.locals.KMOD_NONE) #create the event
    pygame.event.post(newevent) #add the event to the queue

KEYDOWN - константа, соответствующая событию keydown.
unicode - Unicode-представление нажатой клавиши.
key - это константа, связанная с нажатой клавишей.
mod - это константа, представляющая модификатор (например, если кнопка нажата при нажатой клавише SHIFT или CAPS_LOCK).

Надеюсь, это поможет.

0 голосов
/ 20 апреля 2019

Я решил проблему, эмулировав событие нажатия клавиши с помощью keyboard.press и прослушав одно и то же событие с помощью keyboard.Listner (), оба присутствуют в библиотеке клавиатуры. Поэтому я не использовал функции pygame для прослушивания события. Спасибо всем за помощь.

...