我要实现这样的逻辑,单击left ctrl,如果按下时间短于1s,就等于输入LWin+LCtrl+LAlt+Tab,超过1s就等于什么都不输入。如果和其他键一起按,就不等于LWin+LCtrl+LAlt+Tab,而是当正常的ctrl用。现在下面的代码,~*::捕获其他的任意按键的代码段,捕获不到其他和ctrl一起按下的按键,如果我手动输入*这个字符,反而可以触发ToolTip的打印逻辑。
#Persistent
#NoEnv
SendMode Input
; 定义全局变量
isCtrlPressed := false ; 用于标记 Ctrl 键是否被按下
ctrlDownTime := 0 ; 用于记录 Ctrl 键按下的时间
isOtherKeyPressed := false ; 用于标记其他键是否按下
; 处理 Left Ctrl 按下事件
~LCtrl::
if (not isCtrlPressed) {
isCtrlPressed := true ; 标记 Ctrl 键已经按下
ctrlDownTime := A_TickCount ; 记录按下的时间
isOtherKeyPressed := false ; 重置其他键按下标志
}
; 显示当前状态
ToolTip, Ctrl Pressed: %isCtrlPressed%`nOther Key Pressed: %isOtherKeyPressed%
return
; 捕获所有按键按下事件
; 捕获 Ctrl + 其他键的组合
~*::
isOtherKeyPressed := true ; 标记其他键按下
; 显示当前状态
ToolTip, Ctrl Pressed: %isCtrlPressed%`nOther Key Pressed: %isOtherKeyPressed%
return
; 处理 Left Ctrl 释放事件
~LCtrl Up::
; 只有在没有其他键按下的情况下,才执行下面的逻辑
if (isCtrlPressed && !isOtherKeyPressed) {
isCtrlPressed := false ; 重置 Ctrl 按下标志
duration := A_TickCount – ctrlDownTime ; 计算按下持续时间
if (duration