Autohotkey ; 作为一个新的修改键
我想要Autohotkey ; 作为一个新的修改键,autohotkey,modifier-key,Autohotkey,Modifier Key,我想要将成为一个新的修改键。以下功能几乎完美无瑕 `;:: if GetKeyState("LShift", "P") Send `: else Send `; return `; & x:: if GetKeyState("LShift", "P") ... else ... return 只有第2点。以下愿望列表中的任何一个都不起作用。有人知道如何修复这个代码吗 将成为单独按下时 shift单独按下时为: 与x一起作为第二个… shift带与x一起
将成为一个新的修改键。以下功能几乎完美无瑕
`;::
if GetKeyState("LShift", "P")
Send `:
else
Send `;
return
`; & x::
if GetKeyState("LShift", "P")
...
else
...
return
只有第2点。以下愿望列表中的任何一个都不起作用。有人知道如何修复这个代码吗
代码>将成为代码>单独按下时
shift代码>单独按下时为:
代码>与x
一起作为第二个…
shift
带代码>与x
一起作为第一个…
在我看来,有两种可能的方式使第2点起作用 方法1:保留左Shift键的默认行为 移位+导致按下“:冒号键。您可以通过在之前添加波浪线“~”键来获得第2点并删除
else
send `;
使用~可以保留密钥的默认行为。新脚本的外观如下所示
~`;::
if GetKeyState("LShift", "P")
Send `:
return
`; & x::
if GetKeyState("LShift", "P")
...
else
...
return
通过使用此方法,脚本将能够使用shift+发送:
方法2:删除左Shift键的默认行为
在代码中添加以下代码段
LShift::
Send, {}
return
这段代码将使第2点起作用,但将使左Shift键对其他所有内容几乎毫无用处
编辑
方法3:制作代码>等待x
将KeyWait
添加到脚本中会使脚本在执行代码之前等待一定的时间。其次使用Lshift
+
作为一个单独的热键组合将输出到:
,从而无需反过来使用~
`;::
KeyWait, `;, T0.2
Send `;
return
LShift & `;::
Send `:
return
`; & x::
KeyWait, `;, T0.2
if GetKeyState("LShift", "P")
...
else
...
return
在我看来,有两种可能的方式使第2点起作用
方法1:保留左Shift键的默认行为
移位+导致按下“:冒号键。您可以通过在之前添加波浪线“~”键来获得第2点并删除
else
send `;
使用~可以保留密钥的默认行为。新脚本的外观如下所示
~`;::
if GetKeyState("LShift", "P")
Send `:
return
`; & x::
if GetKeyState("LShift", "P")
...
else
...
return
通过使用此方法,脚本将能够使用shift+发送:
方法2:删除左Shift键的默认行为
在代码中添加以下代码段
LShift::
Send, {}
return
这段代码将使第2点起作用,但将使左Shift键对其他所有内容几乎毫无用处
编辑
方法3:制作代码>等待x
将KeyWait
添加到脚本中会使脚本在执行代码之前等待一定的时间。其次使用Lshift
+
作为一个单独的热键组合将输出到:
,从而无需反过来使用~
`;::
KeyWait, `;, T0.2
Send `;
return
LShift & `;::
Send `:
return
`; & x::
KeyWait, `;, T0.2
if GetKeyState("LShift", "P")
...
else
...
return
下面的代码工作得很好,但由于代码重复,代码很难看。也许更干净的代码是可能的
started := 0
LShift & `;::
if started = 0
started := A_TickCount
return
`;::
if started = 0
started := A_TickCount
return
LShift & `; Up::
if A_TickCount - started < 500
Send `:
started = 0
return
`; Up::
if A_TickCount - started < 500
Send `;
started = 0
return
`; & x::
started = 0 ; <==== !
if GetKeyState("LShift", "P")
...
else
...
return
已启动:=0
LShift&`;::
如果启动=0
已开始:=A_TickCount
回来
`;::
如果启动=0
已开始:=A_TickCount
回来
LShift&`;向上::
如果A_TickCount-开始<500
发送`:
开始=0
回来
`; 向上::
如果A_TickCount-开始<500
发送`;
开始=0
回来
`; & x::
开始=0 下面的代码工作得很好,但由于代码重复,代码很难看。也许更干净的代码是可能的
started := 0
LShift & `;::
if started = 0
started := A_TickCount
return
`;::
if started = 0
started := A_TickCount
return
LShift & `; Up::
if A_TickCount - started < 500
Send `:
started = 0
return
`; Up::
if A_TickCount - started < 500
Send `;
started = 0
return
`; & x::
started = 0 ; <==== !
if GetKeyState("LShift", "P")
...
else
...
return
已启动:=0
LShift&`;::
如果启动=0
已开始:=A_TickCount
回来
`;::
如果启动=0
已开始:=A_TickCount
回来
LShift&`;向上::
如果A_TickCount-开始<500
发送`:
开始=0
回来
`; 向上::
如果A_TickCount-开始<500
发送`;
开始=0
回来
`; & x::
开始=0;谢谢,但使用方法1,按键
立即生成
,而不是等待一个x
作为修改键,并使用方法2,使左移位键对其他组合键完全无用,这实际上不是一个选项。等待是不可接受的。你能给我解释一下之间的不对称性吗
和:
在我最初的近似解决方案中。谢谢,但使用方法1,只需按
立即生成
,而不是等待一个x
作为修改键,并使用方法2,使左移位键对其他组合键完全无用,这实际上不是一个选项。等待是不可接受的。你能给我解释一下之间的不对称性吗
和:
在我最初的几乎所有的解决方案中。对我有效。你能用另一个键盘测试它吗?有些键盘不能处理三个键的特定组合,这就是众所周知的。谢谢你的解释,但这不是原因。我用一个外置键盘测试了它,发现了同样的问题:如果我先按住shift键,然后按:
键,就会立即键入:
。这是我在问题中遇到的最初问题。我无法解释为什么它不会发生在代码>无移位。对我有效。你能用另一个键盘测试它吗?有些键盘不能处理三个键的特定组合,这就是众所周知的。谢谢你的解释,但这不是原因。我用一个外置键盘测试了它,发现了同样的问题:如果我先按住shift键,然后按:
键,就会立即键入:
。这是我在问题中遇到的最初问题。我无法解释为什么它不会发生在代码>无移位。