Autohotkey:使用相同键的功能之间的冲突
Autohotkey: Conflict between functions using the same key
我最近经常使用“$”,在我的(西班牙语)键盘中我每次都必须按 Shift+4,所以我决定使用 AutoHotkey 来让它更快。
这个想法通过使用“ç”键使它更快,因为我不经常使用它。
ç::
Send $; new use of the key
Return
这个很好用,但有时我确实需要写“ç”和“Ç”,所以我尝试添加这个
!ç::
Send ç ; to get the "ç" back in game
Return
+ç::
Send Ç ;original use of the "ç" key
Return
但它不起作用(继续发送 $,因为“ç”现在是“$”)。
我觉得这应该很明显,但仍然找不到解决方案。谢谢你的时间
解决这个问题的最简单方法是增加 #InputLevel
对于您重新映射的热键。
#InputLevel 1
ç::
Send $ ; new use of the key
Return
#InputLevel 0
这可以防止它被解雇购买脚本。如果 InputLevel
>= SendLevel,Send
将不会执行热键。默认情况下它们都是 0。
实际上在这种情况下,问题不在于 SendLevel
(它不大于 InputLevel
),而是 ç
热键被注册为 reg
热键, reg
热键无法区分模拟输入和真实输入,因此它总是会被触发。
使用#UseHook on
代替设置输入电平也能解决问题。 #InputLevel 1
使 ç
成为 k-hook
键(因为所有带 InputLevel > 0
的热键都使用键盘钩子)。在这种情况下,这才是重要的,而不是关卡本身。
首选直观方式:使用ç::$
代替命令方块。
这将重新映射按键而不是为其分配宏。这种方式在 AHK 脚本中很直观,因为主要和次要语法与主要和次要意图很好地对应,即:
- (主要)完全重新映射密钥(在 AHK 中,这是在没有宏的情况下完成的)
- (次要)添加一些执行非标准功能的宏
• 使用 #InputLevel
优先级
不会使事情不必要地复杂化
你修改后的完整代码:
!ç::
Send ç ; to get the "ç" back in game
Return
+ç::
Send Ç ;original use of the "ç" key
Return
; new use of the key
; ### this code has to be b̲e̲l̲o̲w̲ the macros
ç::$
已测试,符合预期。(在 1.1.25.01 版本中,2017-03-05)
我最近经常使用“$”,在我的(西班牙语)键盘中我每次都必须按 Shift+4,所以我决定使用 AutoHotkey 来让它更快。 这个想法通过使用“ç”键使它更快,因为我不经常使用它。
ç::
Send $; new use of the key
Return
这个很好用,但有时我确实需要写“ç”和“Ç”,所以我尝试添加这个
!ç::
Send ç ; to get the "ç" back in game
Return
+ç::
Send Ç ;original use of the "ç" key
Return
但它不起作用(继续发送 $,因为“ç”现在是“$”)。 我觉得这应该很明显,但仍然找不到解决方案。谢谢你的时间
解决这个问题的最简单方法是增加 #InputLevel 对于您重新映射的热键。
#InputLevel 1
ç::
Send $ ; new use of the key
Return
#InputLevel 0
这可以防止它被解雇购买脚本。如果 InputLevel
>= SendLevel,Send
将不会执行热键。默认情况下它们都是 0。
实际上在这种情况下,问题不在于 SendLevel
(它不大于 InputLevel
),而是 ç
热键被注册为 reg
热键, reg
热键无法区分模拟输入和真实输入,因此它总是会被触发。
使用#UseHook on
代替设置输入电平也能解决问题。 #InputLevel 1
使 ç
成为 k-hook
键(因为所有带 InputLevel > 0
的热键都使用键盘钩子)。在这种情况下,这才是重要的,而不是关卡本身。
首选直观方式:使用ç::$
代替命令方块。
这将重新映射按键而不是为其分配宏。这种方式在 AHK 脚本中很直观,因为主要和次要语法与主要和次要意图很好地对应,即:
- (主要)完全重新映射密钥(在 AHK 中,这是在没有宏的情况下完成的)
- (次要)添加一些执行非标准功能的宏
• 使用 #InputLevel
优先级
你修改后的完整代码:
!ç::
Send ç ; to get the "ç" back in game
Return
+ç::
Send Ç ;original use of the "ç" key
Return
; new use of the key
; ### this code has to be b̲e̲l̲o̲w̲ the macros
ç::$
已测试,符合预期。(在 1.1.25.01 版本中,2017-03-05)