注:修饰键就是 ctrl shift alt 等这些键。
ahkv1的写法。
经过群里多个回合的激烈讨论,解决了很多极端误触发的情况。
无数次修改后,得到目前比较完美的写法
该写法不会影响到ctrl与其他键组合的正常使用。
举例:
左ctrl的单击、双击、长按执行不同功能【按住超过200ms 算长按】
~LCtrl::
StartTime := A_TickCount
KeyWait LControl
if (A_TickCount - StartTime > 200 and A_PriorKey = "LControl"){
MsgBox 长按执行
return
}
KeyWait, LControl, D T0.2
If (A_PriorKey = "LControl"){
if (ErrorLevel=1){
MsgBox 单击
}else{
KeyWait LControl
KeyWait, LControl, D T0.2
if (A_PriorKey ="LControl"){
if (ErrorLevel=1){
MsgBox 双击
}
}
}
}
无限延伸举例:
左ctrl的单击、双击、三连击、长按执行不同功能【按住超过200ms 算长按】
~LCtrl::
StartTime := A_TickCount
KeyWait LControl
if (A_TickCount - StartTime > 200 and A_PriorKey = "LControl"){
MsgBox 长按执行
return
}
KeyWait, LControl, D T0.2
If (A_PriorKey = "LControl"){
if (ErrorLevel=1){
MsgBox 单击
}else{
KeyWait LControl
KeyWait, LControl, D T0.2
if (A_PriorKey ="LControl"){
if (ErrorLevel=1){
MsgBox 双击
}else{
KeyWait LControl
if (A_PriorKey ="LControl"){
MsgBox 三连击
}
}
}
}
}
实际应用举例:
单击左ctrl复制,双击左ctrl粘贴,长按不执行任何操作
~LCtrl::
StartTime := A_TickCount
KeyWait LControl
if (A_TickCount - StartTime > 200 and A_PriorKey = "LControl"){
return
}
KeyWait, LControl, D T0.2
If (A_PriorKey = "LControl"){
if (ErrorLevel=1){
send, ^c
}else{
KeyWait LControl
KeyWait, LControl, D T0.2
if (A_PriorKey ="LControl"){
if (ErrorLevel=1){
send, ^v
}
}
}
}
影子输入法能不能添加这个?