AutoHotKey 用百分比替换美元符号

AutoHotKey replace dollar sign with percent

我正在尝试使用自动热键将 $ 替换为 %。我也将 & 替换为 $.

我的问题是,当我按下 & 键(现在重新映射到 $)时,它认为我实际上是在按下 $,所以它触发代码并键入 %。

这是代码:

~::@
@::?
%::^
^::~
$::Sendraw `%
&::$

?::+
/::_

+::&
=::/

_::=

我的键盘布局没有这些键作为实际键,所以我无法真正为您测试,但我仍然可以告诉您什么可能会解决问题,然后是另一个版本 绝对解决问题。

所以可能解决问题的方法是使用 $ 修饰符 (docs). You should only need it for the $::Sendraw `% hotkey, because the other hotkeys use the remapping syntax 并且会自动执行添加 $ 的操作。

因此您的脚本将如下所示:

~::@
@::?
%::^
^::~
$$::SendInput, `%
&::$

?::+
/::_

+::&
=::/

_::=

(我也改用 SendInput 因为 SendRaw 真的没有意义)

如果所有热键都是键盘布局上的实际键(而不是可以使用修改键组合访问(例如 CTRL + ALT + 2),就像它们在我的键盘布局上一样。
为什么在必须弄乱修饰键时它不起作用有点复杂。如果您真的感兴趣,我可以详细解释一下,但现在我只想说这是因为重新映射语法使用 blind send mode

因此,不使用像这样的重映射语法应该确保无论如何它都能在任何键盘布局上工作:

*~::SendInput, @
*@::SendInput, ?
*%::SendInput, {^}
*^::SendInput, ~
*$::SendInput, `%
*&::SendInput, $

*?::SendInput, {+}
*/::SendInput, _

*+::SendInput, &
*=::SendInput, /

*_::SendInput, =

这里我们使用 * (docs) 修饰符来处理必须按住修饰键才能访问热键的问题。而且我们没有使用 $ 修饰符,因为使用 * 已经完成了 $ 所做的事情。所以同时拥有它们是多余的。

+4::SendInput, `%

这应该可以正常工作。