AutoHotkey 重新映射键以相互切换两个键

AutoHotkey remap keys to swich two keys with each other

我是 AHK 的新手,我想制作一个脚本,将所有数字键重新映射到其上方的相关符号,并将符号重新映射到数字。因此,例如,当我按 2 时,“@”被打印出来,而 SHIFT+2 实际上打印出 2.

我的代码如下:

2::send @
@::send 2

所有其他数字键依此类推...

但显然第一个 send 打印的 @ 触发了第二个并且它陷入了循环。
我知道这可能是一个愚蠢而基本的错误,但我找不到任何关于如何解决这个问题的信息。有人知道怎么做吗?

只需使用 shift 键(这就是你到达 @ 的方式)和 $ 键盘挂钩修饰符(因此只有在实际按下时才会激活热键):

::send @
$+2::send 2

所有其他数字键依此类推...

我将其添加到现有的 .ahk 文件并确认它完全符合您的要求。

::SendRaw !
$!::SendRaw 1
::SendRaw @
$@::SendRaw 2
::SendRaw #
$#::SendRaw 3
::SendRaw $
$$::SendRaw 4
::SendRaw `%
$%::SendRaw 5
::SendRaw ^
$^::SendRaw 6
::SendRaw &
$&::SendRaw 7
::SendRaw *
$*::SendRaw 8
::SendRaw (
$(::SendRaw 9
[=10=]::SendRaw )
$)::SendRaw 0