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

Hotkey to remap keys does not trigger hotstring

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

9::(

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

为了提供一些上下文,在代码的一部分中,我将所有符号重新映射到它们下面的数字,反之亦然,因此 9 打印括号 (。后来我放了一个热字串,它会在一个圆括号之后输入一个圆括号,然后将光标放在中间。

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

我是不是遗漏了什么明显的东西?

尝试使用 Send and InputLevel 的组合。

#InputLevel 1
9::SendEvent (
#InputLevel 0

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

说明

  • #InputLevel

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

    • 奇怪的是,remappingShift+# 等效的数字键在 #InputLevel 1 时没有产生任何输入积极的。
      • 即无法使用 1::!2::@3::#、...、8::*9::(
      • Send 命令用于解决此重新映射限制
    • 默认情况下,SendSendEvent 是同义词。

备注

  • SendPlay is not affected by InputLevel.
  • Remarks for Remapping Keys 可以解释为什么 9::( 不会触发其他热键。
    • "虽然重新映射的键可以触发普通热键,但默认情况下它不能触发鼠标热键或挂钩热键。"

相关

#InputLevelSend重新映射(备注)