【发布时间】:2021-10-20 17:28:42
【问题描述】:
我想创建一个脚本,在按住 Alt 的同时按两次 Q 时触发,但不知道什么是正确的键码,可以有人请解释一下吗?
附:我想把这个快捷键绑定到Ctrl+F12,我分配Sogou IME打开中文输入模式。
【问题讨论】:
标签: scripting autohotkey
我想创建一个脚本,在按住 Alt 的同时按两次 Q 时触发,但不知道什么是正确的键码,可以有人请解释一下吗?
附:我想把这个快捷键绑定到Ctrl+F12,我分配Sogou IME打开中文输入模式。
【问题讨论】:
标签: scripting autohotkey
我没有对此进行测试,可能有更简洁的方法可以做到这一点,但我认为这样的事情应该可以工作。
!Q::
If(keyPressed = 1){
...Do a thing...
}
keyPressed := 1
SetTimer, altQTimer, 50
return
altQTimer:
keyPressed := 0
return
【讨论】:
Q 更新为q。为了更容易调试,你能告诉我如何在Alt+q上触发命令吗?更好的是,不区分大小写?
Q::Send ^{F12} 在按下Q 时对我有效,而!Q::Send ^{F12} 在按下Alt 时不起作用+Q,你知道为什么吗?
Pressing a hotkey which includes Alt may result in extra simulated keystrokes (Ctrl by default). See #MenuMaskKey. 我猜也许它实际上是用 CTRL+ALT 代替的?不确定这是否有帮助。
!Q::SendInput foo 将插入foo,但!Q::Send ^{F12} 什么都不做,很奇怪,不过,我会支持你的答案。
TL;DR
总之,即使我做了各种 hack 并让脚本按预期工作,它也可能在未来崩溃,这真的不值得麻烦。
经过几个小时的实验,目前的结论是Sogou IME 使用 Ctrl+F12 不会触发绑定动作即切换到中文输入模式由Alt+[Any Other Key]发送,可以由其他快捷键如Ctrl+C,真是可惜了。
最奇怪的是下面的代码有效:
^c::Send !q
!q::Send ^{F12}
为了排除潜在的extra simulated keystrokes (Ctrl by default) 影响,下面的代码也有效:
^!q::Send ^{F12}
但以下不是(在多台机器上测试过):
!q::Send ^{F12}
更新
经过much的努力,我确实得到Alt+Q打开中文输入模式,代码如下,不知道为什么:
!q::Send ^{F6}
^F6::Send ^{F7}
^F7::Send ^{F12}
但是因为我还需要同时使用Alt+Q触发一个VSCode命令,所以只好修改上面的代码到以下:
~!q::Send ^{F6} ; with ~ prefixed
^F6::Send ^{F7}
^F7::Send ^{F12}
现在Alt+Q确实触发了VSCode命令,但是不会开启中文输入模式...
最后,如果我退后一步,将VSCode命令绑定到Ctrl+C(只需^c::Send ^{F12}就可以打开中文输入模式) ,我还是要在^c前加上~,否则不会触发VSCode命令,现在我又重复这个循环了……
经过这么多尝试,不得不说搜狗输入法判断是否开启中文输入模式的逻辑非常不明确,使得开启中文输入模式的脚本非常不可靠。
总之,即使我做了各种 hack 并让脚本按预期工作,它也可能在未来崩溃,这真的不值得麻烦。
【讨论】: