2

最近Ubuntuに切り替えましたが、autohotkeyが恋しいです。ホットキー環境を再作成するために自動キーを使用しています。XmodmapCapsLockF13使用するようにリマップしました。

私がする必要があること:F13をタップしたら、を返し<Esc>ます。キーとともに使用する場合F13は、ホットキーをトリガーします。を1秒以上押しF13続け、ホットキーなしで離すと、何も返されません。

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例: thenを押すjと、出力はDown arrowです。

これをコーディングし始める前の私の質問は、これに本当に複数のスレッド(並行性)を使用する必要があるのか​​ということです。これはそれを行うための最良の方法ですか?もっと簡単な方法があるように感じますし、並行性でコーディングしたこともありません。

編集:自動キーやPythonを使用していない場合でも、これを実行するための任意の方法を使用できます。

4

1 に答える 1

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

終了する唯一の2つの方法は、capslockが解放された場合、またはホットキーが押された場合です。これら2つのうち、1つだけが心配する必要のあるイベントになるため、同じスレッドで両方をリッスンできます。

于 2012-05-28T08:29:43.803 に答える