;作为新的修改键
; as a new modifier key
我希望 ;
成为一个新的修改键。 以下几乎完美。
`;::
if GetKeyState("LShift", "P")
Send `:
else
Send `;
return
`; & x::
if GetKeyState("LShift", "P")
...
else
...
return
只有以下愿望清单中的第 2 点不起作用。有人知道如何修复此代码吗?
;
单独按下时 ;
shift ;
单独按下时 :
;
其中 x
是第二个 ...
shift
与 ;
与 x
成为第一个 ...
在我看来,有两种方法可以使第 2 点发挥作用。
方法 1: 保持 Left Shift 键的默认行为
shift + ; 导致 : 冒号键被按下。您可以通过在 `; 之前添加波浪号“~”键并删除
来使第 2 点起作用
else
send `;
使用 ~ 可以保持键的默认行为。新脚本看起来像这样
~`;::
if GetKeyState("LShift", "P")
Send `:
return
`; & x::
if GetKeyState("LShift", "P")
...
else
...
return
通过使用此方法脚本将能够使用 shift+;.
发送 :
方法 2:删除左移键的默认行为
在您的代码中添加以下代码段
LShift::
Send, {}
return
此代码段将使第 2 点起作用,但会使 Left Shift 键对其他所有内容几乎无用。
编辑
方法三:让;
等待x
将KeyWait
添加到脚本中将使其在执行代码之前等待一定时间。其次使用 Lshift
+ ;
作为单独的热键组合将输出到 :
,无需在 return.
中使用 ~
`;::
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
键 ;
与 x
组合使用(无延迟)或按下超过半秒时,现在可以用作修饰键。延迟不是必需的,可以删除;它只是为了防止将意外的修改键按下误解为 ;
。冒号 :
也能正常工作。
#MaxThreadsPerHotkey 2 ; allow 2 "instances" of the hotkey subroutine to exist simultaneously
`;::
If (A_PriorKey = "`;") ; ; was pressed alone
Send `;
return
LShift & `;:: Send :
`; & x::
if GetKeyState("LShift", "P") ; ; & LShift & x
Send a
else ; ; & x
Send b
return
我希望 ;
成为一个新的修改键。 以下几乎完美。
`;::
if GetKeyState("LShift", "P")
Send `:
else
Send `;
return
`; & x::
if GetKeyState("LShift", "P")
...
else
...
return
只有以下愿望清单中的第 2 点不起作用。有人知道如何修复此代码吗?
;
单独按下时;
shift ;
单独按下时:
;
其中x
是第二个...
shift
与;
与x
成为第一个...
在我看来,有两种方法可以使第 2 点发挥作用。
方法 1: 保持 Left Shift 键的默认行为
shift + ; 导致 : 冒号键被按下。您可以通过在 `; 之前添加波浪号“~”键并删除
来使第 2 点起作用else
send `;
使用 ~ 可以保持键的默认行为。新脚本看起来像这样
~`;::
if GetKeyState("LShift", "P")
Send `:
return
`; & x::
if GetKeyState("LShift", "P")
...
else
...
return
通过使用此方法脚本将能够使用 shift+;.
发送 :方法 2:删除左移键的默认行为
在您的代码中添加以下代码段
LShift::
Send, {}
return
此代码段将使第 2 点起作用,但会使 Left Shift 键对其他所有内容几乎无用。
编辑
方法三:让;
等待x
将KeyWait
添加到脚本中将使其在执行代码之前等待一定时间。其次使用 Lshift
+ ;
作为单独的热键组合将输出到 :
,无需在 return.
~
`;::
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
键 ;
与 x
组合使用(无延迟)或按下超过半秒时,现在可以用作修饰键。延迟不是必需的,可以删除;它只是为了防止将意外的修改键按下误解为 ;
。冒号 :
也能正常工作。
#MaxThreadsPerHotkey 2 ; allow 2 "instances" of the hotkey subroutine to exist simultaneously
`;::
If (A_PriorKey = "`;") ; ; was pressed alone
Send `;
return
LShift & `;:: Send :
`; & x::
if GetKeyState("LShift", "P") ; ; & LShift & x
Send a
else ; ; & x
Send b
return