Требуется ли для этого Python-скрипта с автоключем параллелизм?

Я недавно перешел на Ubuntu, и мне не хватает autohotkey. Я использую autokey для воссоздания моей горячей клавиши. Я переназначил CapsLock в F13 используя Xmodmap.

Что мне нужно сделать: когда F13 прослушивается, возврат <Esc>, когда F13 используется с ключом, триггером горячей клавиши. когда F13 удерживается более 1 секунды и отпускается без горячей клавиши, ничего не возвращает.

Autokey использует среду Python. Вот мой план:

    F13 is pressed
        Start a timer
        Start a thread listening for <CapsLock up> and if true, 
            if timer is less than 1 second && no hotkey was pressed
                exit script after returning <Esc> 
            exit script


        Start a thread that loops forever
            Listen for hotkey
                Play hotkey's function

Сценарий заканчивается, когда CapsLock выпущен.

Пример: я нажимаю CapsLock затем j и вывод Down arrow,

Мой вопрос, прежде чем я начну кодировать это, мне действительно нужно использовать несколько потоков (параллелизм) для этого? Это лучший способ сделать это? Я чувствую, что есть намного более простой способ, и я также никогда не кодировал параллелизм.

Редактировать: я открыт для любого метода, чтобы осуществить это, даже если это не с Autokey или Python.

1 ответ

Решение

Вам определенно не нужно использовать темы в этом случае. Вы можете просто сделать что-то вроде этого:

F13 is pressed
Start timer
While True:
    Listen for hotkey and capslock up
    if capslock up:
        if timer < 1: 
            return <Esc> and exit
        else: just exit
    elif hotkey:
        Execute hotkey function and exit

Мы можем выйти только из двух способов, если будет снят capslock или нажата горячая клавиша, и только один из этих двух будет тем событием, о котором нам нужно беспокоиться, поэтому мы можем просто прослушивать оба в одном потоке.

Другие вопросы по тегам