2012-05-27 21 views
2

我最近切換到Ubuntu,並且我錯過了autohotkey。我正在使用autokey來重新創建我的熱鍵環境。我使用XmodmapCapsLock重新映射到F13此自動密鑰Python腳本是否需要一致性?

我需要做的事: 當點擊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 

只有兩個,我們退出的方式是,如果大寫鎖被釋放或者如果熱鍵的壓制,只有這兩個中的一個將永遠是我們需要擔心的事件,所以我們可以在同一個線程中聽兩個。

+0

完美!謝謝:)今晚我會說一聲,並告訴你它是如何發生的。 – CornSmith

相關問題