如何在AutoHotkey中区分触控板实体按键与轻触点击?
区分触控板轻触与实体按键的AutoHotkey配置方案
要区分触控板轻触/按压触发的LButton和实体按键的LButton,可以通过两种可行方案实现:
方案一:基于按键按下时长判断(简单易配置)
利用触控板轻触点击通常瞬时释放、实体按键按下有一定时长的特点,设置时间阈值区分操作:
LButton:: ; 等待150ms,检测按键是否已释放 KeyWait, LButton, T0.15 ; 150ms后按键仍未释放,判定为实体按键操作 if ErrorLevel { ; 等待按键释放后执行浏览器后退 KeyWait, LButton Send {Browser_Back} } ; 快速释放则判定为触控板轻触,执行原左键点击功能 else { Send {LButton} } return
- 可根据自身习惯调整
T0.15的数值(单位为秒),比如改为T0.1即100ms。
方案二:监听系统触摸消息(精准识别)
通过监听Windows触摸事件消息,直接判断点击是否来自触控板触摸,避免时长判断的误差:
#Persistent IsTouchClick := false ; 监听触摸输入开始的系统消息(WM_TOUCH = 0x0240) OnMessage(0x0240, "TouchStart") TouchStart(wParam, lParam) { global IsTouchClick IsTouchClick := true ; 200ms后重置标志,防止后续误判 SetTimer, ResetTouchFlag, -200 } ResetTouchFlag() { global IsTouchClick IsTouchClick := false } ; 仅当不是触摸触发的点击时,映射实体左键为浏览器后退 #If !IsTouchClick LButton:: Send {Browser_Back} return #If
内容的提问来源于stack exchange,提问作者lucahuy
相关产品推荐
相关产品推荐

