这个自动密钥Python脚本是否需要并发?

时间:2012-05-27 22:42:48

标签: python ubuntu concurrency hotkeys autokey

我最近切换到Ubuntu,我想念autohotkey。我正在使用autokey来重新创建我的热键环境。我已使用XmodmapCapsLock重新映射到F13

我需要做什么:     点按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 个答案:

答案 0 :(得分: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

我们退出的唯一两种方法是,如果释放了大写锁定或者按下了热键,并且这两个中只有一个将成为我们需要担心的事件,所以我们可以在同一个线程中监听两者。 / p>