Autohotkey 自动热键-密钥垃圾邮件不能像我希望的那样工作

Autohotkey 自动热键-密钥垃圾邮件不能像我希望的那样工作,autohotkey,Autohotkey,密钥垃圾邮件不太好用 代码如下: Loop { If GetKeyState("z", "P") send w If GetKeyState("g", "P") send a If GetKeyState("j", "P") send d If GetKeyState("h", "P") send s } 但当我同时按住z或zg时,原始键z和zg在w或wa输出之间总是出现一次或两次 如果我运行此脚本,我可以写些什么,使键z+g+h+j永远不会出现在文本文件中w+a+s+d。“自

密钥垃圾邮件不太好用

代码如下:

Loop
{
If GetKeyState("z", "P")
  send w
If GetKeyState("g", "P")
  send a
If GetKeyState("j", "P")
  send d
If GetKeyState("h", "P")
  send s
}
但当我同时按住
z
zg
时,原始键
z
zg
w
wa
输出之间总是出现一次或两次


如果我运行此脚本,我可以写些什么,使键
z+g+h+j
永远不会出现在文本文件中
w+a+s+d
。“自动热键”的设计初衷就是让您真正想做的事情

正如MCL在评论中所说,您只需将密钥映射到发送函数

在脚本中添加以下内容:

z::send w
g::send a
j::send d
h::send s
现在,当您按下
z
时,它将改为键入
w


请记住,除非您使用
IfWinActive
将其限制为记事本,否则这在整个计算机上都是全局的。脚本将不会自行退出。

但这并不能像我所希望的那样工作

我希望我能同时按下g+z或z+j或g+h或h+j

然后我就醒了,或者是醒了,或者是醒了,或者是醒了

当我同时按下两个按钮时,它会切换输出1个字符

当我使用你的答案和holz时,它会发出垃圾邮件WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW 如果按z+g,则只会继续发送垃圾邮件WWWWWWWWWW而不是WAWAWAWAW

卡罗琳

根据你的“答案”,你的目标是一种不标准的键盘行为。也就是说,使用带AHK或不带AHK的重映射键时,同时按下两个字母键时,单独按下最后按下的键将继续启动。
下面是一个关于如何实现交替行为的示例:

SendMode, Input

g & z::
z & g::
    Send, aw
return

g::Send, a
+g::Send, A
z::Send, w
+z::Send, W

您必须使用一个&修饰符明确定义每个自定义组合,这将使它们变得更简单。这有一个好处,也有一个小缺点:好处是,你现在可以继续按你的组合,它将继续以交替方式发射两个键;不需要回路或类似装置。缺点:您需要重建前缀热键的原始行为。在我们的示例中,这是发送一个小写或大写字母。

为什么不重新映射每个键<代码>z::Send,w@MCL你应该摆出这个姿势来回答他。@BGM我正要离开。如果你愿意,你可以做。我祝福你;)卡罗琳,请编辑你的问题,而不是像Liel所说的那样多写几行,这不是答案。请更新您的问题或将其作为相应答案的注释发布。最重要的是,删除此帖子。