重新映射键的热键不会触发热字符串

时间:2017-09-22 12:36:05

标签: autohotkey hotkeys

我有一个热键和热门串,似乎不能一起工作:

9::(

:?ob0:(::){left 1}

为了给出一些上下文,在代码的一部分中,我将所有符号重新映射到它们下面的数字,反之亦然,因此9打印括号(。后来我放了一个hotstring,它会在打开一个之后键入一个闭括号,然后将光标置于其间。

看起来很简单,因为当我按下9的键并且按空格键时,它们都是单独工作但是一起工作我只得到开括号(,就好像热字符串被忽略一样。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

尝试使用SendInputLevel的组合。

#InputLevel 1
9::SendEvent (
#InputLevel 0

;; Add closing parenthesis
:?ob0:(::){left 1}

解释

  • <强> #InputLevel

    • 默认情况下,hook热键和热字符串会忽略任何AutoHotkey脚本生成的键盘和鼠标事件。可以使用SendLevel#InputLevel
    • 覆盖此行为
    • 通过将9热键设置为更高的InputLevel,可以激活其他热字符串。
  • SendEvent

    • 奇怪的是,当#InputLevel 1处于活动状态时,remapping Shift + 等号的数字没有输入。
      • 即。无法使用1::!2::@3::#,...,8::*9::(等。
      • Send命令用于解决此重新映射限制
    • 默认情况下,SendSendEvent是彼此的同义词。

注释

  • SendPlay不受InputLevel影响。
  • Remarks for Remapping Keys可以解释为什么9::(不会触发其他热键。
    • 虽然重映射的密钥可以触发普通热键,但默认情况下它不能触发鼠标热键或钩热键。

相关

#InputLevelSendRemapping (Remarks)