我最近切换到Ubuntu,我想念autohotkey。我正在使用autokey来重新创建我的热键环境。我已使用Xmodmap将CapsLock
重新映射到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。
答案 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>