Как включить pynput для мониторинга клавиатуры в другой программе - PullRequest
0 голосов
/ 17 марта 2020

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

Есть ли какие-либо другие конфигурации, которые нужно добавить, чтобы я мог вызвать слушателя, когда фокусируюсь на другой программе, такой как слово или Excel или полноэкранная игра?

class UserListener(threading.Thread):

    def __init__(self):
        super().__init__()

    def run(self):
        print('start listening...')

        def on_press(key):
            if key == Key.home:
                print('key home is pressed')
            elif key == Key.esc:
                return False

        with Listener(on_press=on_press) as listener:
            listener.join()


if __name__ == '__main__':
    lsner = UserListener()
    lsner.start()

================================= =========================================

Обновление 1:

Программа выше может работать нормально. Однако, это не работает, когда DNF (игра, в которую я играл) фокусируется.

1 Ответ

0 голосов
/ 17 марта 2020

На самом деле, нет необходимости создавать дополнительный поток, pynput предоставил вам поток. Ваш код может быть уменьшен до этого:

def UserListener():
    print("start listening...")
    def on_press(key):
        if key == Key.home:
            print('key home is pressed')
        elif key == Key.esc:
            return False

    listener = keyboard.Listener(on_press=on_press)
    listener.start()

О вопросе:

Я полагаю, что есть две причины:

  1. pynput использовать младший поток. Когда другое программное обеспечение конфликтует с вашим сценарием, оно выполнит другую функцию.
  2. Вы скажем, что вы используете его в своей игре. Возможно, вы должны знать, что игра предпримет некоторые меры для предотвращения обмана игры. Хороший способ сделать это - использовать другие инструменты. (Я использовал AutoHotKey для управления Overwatch. обычно я думаю, что вы можете попробовать это.)
...