Как мы можем запрограммировать клавиши клавиатуры для конкретной программы c python? - PullRequest
1 голос
/ 07 мая 2020

Я хочу написать программу python, которая имеет 3 функции f1, f2 и f3, а также есть 4-ю функцию g. Функция g используется для программирования трех клавиш с клавиатуры, скажем «a», "s", "d", так что когда я запускаю программу и нажимаю "a", она вызывает функцию f1, при нажатии "s" вызывается f2, а при нажатии "d" вызывается f3, т. е. Я хочу переназначить работу a, s, d для вызова функций f1, f2, f3 соответственно.

Ограничения таковы:

1. Когда я перестаю нажимать, скажите "a ", и начав нажимать" b ", я хочу, чтобы программа завершила задание, которое выполняла f1 (не вся программа, а только задание f1), и начала работать с командами f2.

2. Если оба" a " и «s» нажимаются одновременно, будет выполняться только последний из двух нажатий, работа первого будет прекращена.

3. Если после нажатия и удерживания произнесите «a», а затем отпустите «a» ", ничего не нажимается, тогда функция f1 должна быть завершена в течение 0,0001 секунды, т. е. допустимая задержка для переключения с от f1 до f2 (или ничего) после нажатия "s" = менее 0,0001 секунды.

ПРИМЕЧАНИЕ --- Я также не ищу виртуальную / вторичную экранную клавиатуру, а изменяю свою исходную, и только несколько клавиш, только для этой программы.

Усилия по повторному поиску --- Поиск в Google и на других сайтах дал мне ответы, связанные с автоматизацией клавиатуры, pyauto gui .et c. который похож, но не совсем то, что я хочу здесь, и я понятия не имею, как запустить эту проблему, поэтому код не дается.

1 Ответ

2 голосов
/ 07 мая 2020

Используйте модуль клавиатуры. По cmd:

pip3 install keyboard

И код:

import keyboard 
def f1():
    #whatever
def f2():
    #whatever
def f3():
    #whatever
while True: 
    try:  
        if keyboard.is_pressed('a'):  
            f1()

        if keyboard.is_pressed('b'):  
            f2()

        if keyboard.is_pressed('c'):  
            f3()
    except Exception as e:
        print(str(e))
        continue
...