当前位置: 首页 > news >正文

Windows使用AutoHotKey解决鼠标键连击现象(解决鼠标连击、单击变双击的故障)

注:罗技鼠标,使用久了之后会出现连击现象,如果刚好过保了,可以考虑使用软件方案解决连击现象:

以下是示例AutoHotKey脚本,实现了调用XButton1用于关闭窗口(以及Win+W,XButton2也导向关闭窗口,关闭窗口使用了函数Close),其中解决罗技鼠标侧键1(XButton1)所出现的连击现象.

; 可以使用命令#CommentFlag //将注释符; 换为双斜杠
;^ Ctrl
;! Alt
;+ Shift
;# Win/** 修饰符
通配符: 即使附加的修饰键被按住也能激发热键. 这常与 重映射 按键或按钮组合使用.
~ 修饰符
激发热键时,不会屏蔽(被操作系统隐藏)热键中按键原有的功能。
$ 修饰符
通常只在脚本使用 Send 命令发送包含了热键自身的按键时才需要使用此符号, 此时可以避免触发它自己.
$ 前缀强制使用 键盘钩子 来实现此热键, 作为一个副作用这样避免了 Send 命令触发它自己.
$ 前缀相当于在此热键定义之前的某个位置指定了 #UseHook。*/$^w::Close()
return#w::Close()
returnXButton1::Close()
returnXButton2::Close()
returnClose()
{; WinGetClass, class, A; MsgBox, The active window's class is "%class%".; WinGetTitle, Title, A; MsgBox, The active window is "%Title%".;微信IfWinActive, ahk_class WeChatMainWndForPC{WinMinimizereturn};企业微信IfWinActive, ahk_class WeWorkWindow{WinMinimizereturn};资源管理器IfWinActive, ahk_class CabinetWClass{WinClosereturn};.chm HelpIfWinActive, ahk_class HH Parent{WinClosereturn}SetTitleMatchMode, RegEx; Outlook 主窗口IfWinActive, .+Outlook$ ahk_class rctrl_renwnd32{WinMinimizereturn}SetTitleMatchMode, RegEx; SetTitleMatchMode, slow; Outlook 邮件窗口 .+邮件.*IfWinActive, .+(?!Outlook$).* ahk_class rctrl_renwnd32{WinClosereturn}; SetTitleMatchMode, 1; SetTitleMatchMode Fast; 防止出现鼠标连击现象    if (A_PriorHotkey == "XButton1" && A_ThisHotkey == "XButton1" && A_TimeSincePriorHotkey<200){; Send ^w    ; 防止出现鼠标连击现象,这里要空操作!; MsgBox, % "AAA" . A_ThisHotkey . "bbb" . A_TimeSinceThisHotkey}else{Send ^w}
}

--------分割符--------

代码使用XButton1来关闭窗口,关闭窗口使用Close()函数,也即XButton1::Close()。

关键代码:

if (A_PriorHotkey == "XButton1" && A_ThisHotkey == "XButton1" && A_TimeSincePriorHotkey< 200)

关键代码解释如下:A_PriorHotkey代表上一次的按键,A_ThisHotkey代表本次的按键,A_TimeSincePriorHotkey代表2次按键的间隔时间(毫秒),代码含义:如果上一次按键和本次按键均为XButton1,且2次间隔小于200,则{}代表空操作(分号注释代码),否则,将再次发送^w关闭窗口。注意,为了防止死循环调用,$^w::Close()的$代表仅键盘真正的按键^w也即Ctrl+W可以触发Close()函数。否则,本函数只发送^w也即Ctrl+W且不再循环触发Close函数。

实际应用情况中,根据鼠标连击的间隔快慢,可以将200设置为你想要的合适的值。

也可以将代码中,最后部分的 Send ^w 改为 Send XButton1,这样,也可以使XButton1避免重复发送(屏蔽了第2次的发送)。本次案例,精减后的代码【仅针对XButton1】:

; 本代码用于阻止XButton1(侧按键1)出现的连击现象; $ 前缀强制使用 键盘钩子 来实现此热键, 作为一个副作用这样避免了 Send 命令触发它自己
$XButton1::DoXButton1()
returnDoXButton1()
{; 防止出现鼠标连击现象    if (A_PriorHotkey == "XButton1" && A_ThisHotkey == "XButton1" && A_TimeSincePriorHotkey<200){}else{Send XButton1}
}

http://www.lryc.cn/news/518083.html

相关文章:

  • Linux 环境(Ubuntu)部署 Hadoop 环境
  • 如何在Windows 11 WSL2 Ubuntu 环境下安装和配置perf性能分析工具?
  • Docker运维高级容器技术知识点总结
  • react-quill 富文本组件编写和应用
  • LabVIEW轴承性能测试系统
  • 【《游戏编程模式》实战04】状态模式实现敌人AI
  • 借助免费GIS工具箱轻松实现las点云格式到3dtiles格式的转换
  • 科研绘图系列:R语言科研绘图之标记热图(heatmap)
  • 【轻松学C:编程小白的大冒险】--- C语言简介 02
  • 《HeadFirst设计模式》笔记(上)
  • 数据结构:ArrayList与顺序表
  • SpringBoot之核心配置
  • EasyExcel上传校验文件错误信息放到文件里以Base64 返回给前端
  • 单片机软件定时器V4.0
  • 超完整Docker学习记录,Docker常用命令详解
  • C++ 入门第26天:文件与流操作基础
  • 使用python将多个Excel表合并成一个表
  • halcon三维点云数据处理(七)find_shape_model_3d_recompute_score
  • vue js实现时钟以及刻度效果
  • unity学习15:预制体prefab
  • 基于Thinkphp6+uniapp的陪玩陪聊软件开发方案分析
  • MySQL - 子查询和相关子查询详解
  • Android 系统签名 keytool-importkeypair
  • 安卓漏洞学习(十八):Android加固基本原理
  • Docker 使用Dockerfile创建镜像
  • 【Python运维】利用Python实现高效的持续集成与部署(CI/CD)流程
  • 成功!QT 5.15.2编译mysql驱动
  • 安卓NDK视觉开发——手机拍照文档边缘检测实现方法与库封装
  • 第二届 Sui 游戏峰会将于 3 月 18 日在旧金山举行
  • 自动驾驶相关知识学习笔记