2

我最近切换到 Ubuntu,我想念 autohotkey。我正在使用自动键来重新创建我的热键环境。我已经重新映射CapsLockF13使用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发布时结束。

示例:我按CapsLockthen 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

我们退出的唯一两种方式是释放大写锁定或按下热键,而这两种中只有一种是我们需要担心的事件,因此我们可以在同一个线程中监听两者。

于 2012-05-28T08:29:43.803 回答