ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Mac Mouse Fix 按键捕获(Captured Buttons)指南:捕获原理、排查方法与三种恢复方案

Mac Mouse Fix 按键捕获(Captured Buttons)指南:捕获原理、排查方法与三种恢复方案 桌面应用系统编程【免费下载链接】mac-mouse-fixMac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad!项目地址https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix点击查看免费下载在安装 Mac Mouse Fix 之后你可能会在屏幕上看到一条提示告知你鼠标上的某个按键正在被 Mac Mouse Fix「捕获captured」。本指南以 CapturedButtonsMMF3.md 为基础结合仓库源码系统讲解按键捕获的含义、为什么会产生这种机制、如何判断哪些按键被捕获、如何解除捕获以及在不解除捕获的前提下如何恢复按键原有的系统功能。读完本文你将能独立诊断并解决中键粘贴、浏览器中键打开链接、侧键前进后退、Blender 中键环绕Orbit等常见的「捕获后遗症」。什么是「捕获」一个鼠标按键当某个鼠标按键被 Mac Mouse Fix 捕获时其他应用和 macOS 就再也看不到这个按键了。按键原本应该执行的系统功能在捕获期间不会再生效——你按下的按键只会触发你在 Mac Mouse Fix 里为它分配的动作。典型例子正常情况下点击鼠标侧键按键 4 和 5可以在 Chrome 中前进和后退。但当侧键被 Mac Mouse Fix 捕获后这个功能就失效了侧键只会触发你在 Mac Mouse Fix 中为它绑定的动作。为什么 Mac Mouse Fix 要隐藏按键Mac Mouse Fix 之所以要把按键对其他应用「藏起来」是为了防止你在使用 Mac Mouse Fix 手势的同时意外触发其他应用的功能。例如如果你用「点击并拖拽按键 4」来切换桌面那么在你拖拽的同时Chrome 也会收到一个「后退一页」的点击——两个动作会同时发生造成干扰。只有把按键从其他应用面前隐藏Mac Mouse Fix 才能独占它的输入干净地执行你配置的手势与动作。源码层面的捕获机制从源码来看「捕获」本质上是 Helper 进程通过 CGEventTap 对按键事件进行拦截。在 ButtonInputReceiver.m 中Helper 注册了一个 HID 层的事件 tap专门监听kCGEventOtherMouseDown/kCGEventOtherMouseUp即中键和侧键等非左右键事件CGEventMask mask CGEventMaskBit(kCGEventOtherMouseDown) | CGEventMaskBit(kCGEventOtherMouseUp); _eventTap CGEventTapCreate(kCGHIDEventTap, kCGHeadInsertEventTap, kCGEventTapOptionDefault, mask, eventTapCallback, NULL);事件回调拿到按键事件后会交给 Buttons.swift 的handleInput处理。这里的关键是「放行/拒绝」决策ButtonInputReceiver.mMFEventPassThroughEvaluation eval [Buttons handleInputWithDevice:device button:(buttonNumber) downNotUp:mouseDown event:event]; ... if (eval kMFEventPassThroughRefusal) { return nil; // 返回 nil 吞掉事件其他应用收不到 } else { return event; // 放行事件 }当某个按键上配置了动作时Buttons会返回kMFEventPassThroughRefusal事件被返回nil从而不再传递给其他应用——这正是「其他应用看不到这个按键」的实现方式。反之如果maxClickLevel 0按键没有绑定任何动作则返回kMFEventPassThroughApproval放行事件见 Buttons.swift。这为下文「删除全部绑定即可解除捕获」的结论提供了源码层面的印证。如何判断哪些按键正被捕获判断方法非常直观凡是出现在「Buttons按键」标签页左侧列表中的按键都是正在被 Mac Mouse Fix 捕获的按键。Mac Mouse Fix 在启动时会弹出捕获通知告知你某个按键已被接管在下面的截图中左侧列表显示了「Middle Button」中键、「Button 5」和「Button 4」说明这三个按键都处于被捕获状态注意区分中键的捕获在安装后是默认行为因为 MMF 默认会接管中键提供平滑滚动等增强功能而 4/5 侧键只有在你在 Buttons 标签页为它们添加了条目后才会被捕获。列表里「有条目」与「被捕获」是直接对应的。如何防止 Mac Mouse Fix 捕获一个按键要阻止 Mac Mouse Fix 捕获某个按键只需删除该按键在「Buttons」标签页中的所有条目即可。具体操作在「Buttons」标签页中点击每个条目左侧的「-减号」按钮删除对应条目。例如在下图中删除「Button 4」的两个条目高亮的两个「-」按钮后Button 4 将不再被捕获删除后该按键的行为会恢复得和 Mac Mouse Fix 完全未安装时一模一样——相当于把这个按键从 MMF 的管辖中「释放」了出来。这一点与 Buttons.swift 中maxClickLevel 0即放行事件的逻辑完全一致没有任何绑定事件就原样透传给系统。恢复按键原始功能的三种方案如果你希望在安装 Mac Mouse Fix 后继续使用按键原有的功能共有三种途径按推荐程度排列方案做法效果① 保持捕获分配替代动作在 MMF 内给按键绑定能「模拟原功能」的动作按键仍被捕获但原始功能得以恢复还能叠加额外动作② 解除捕获删除该按键的全部绑定按键行为与未安装 MMF 时完全一致③ 完全停用 MMF关闭General Enable Mac Mouse FixMMF 不再干预鼠标的任何行为方案一保持捕获在 MMF 内恢复原始功能推荐这是最推荐的方式按键继续被 Mac Mouse Fix 接管但你通过分配特定动作来「复刻」它原有的功能。这样既能保留 MMF 带来的增强能力又能继续使用熟悉的旧功能。对应关系如下表所示按键原始功能在 Mac Mouse Fix 中分配的动作鼠标中键在浏览器中以新标签页打开链接「Middle Click」分配给单击鼠标中键在终端中粘贴文本「Middle Click」分配给单击鼠标按键 4 / 按键 5在 Chrome 等应用中前进 / 后退「Back」/「Forward」分配给单击鼠标中键在 Blender 等 3D 应用中环绕观察对象「Scroll Navigate」分配给点击并拖拽使用这种方案你既能保留按键原有的常用功能又能同时给它在 Mac Mouse Fix 中分配额外的功能例如把「Middle Click」绑定在「Button 4 Hold」等其他触发条件上。下面分别介绍表格中三类动作的细节与注意事项。「Middle Click」动作恢复中键粘贴与链接功能把按键绑定为「Middle Click」中键点击动作后按下该按键会向系统发送一次真实的中键点击事件从而恢复在终端中粘贴文本在 Safari 等浏览器中以新标签页打开链接以及关闭标签页游戏或专业应用中自定义分配给中键的功能。注意事项Caveats只有「单击」类动作能生效「点击并拖拽」类动作无法通过这种方式恢复。原因是 Mac Mouse Fix 会在同一时刻同时发送mouseDown和mouseUp两个事件这是为了避免与同一按键上配置的其他 MMF 手势产生干扰所必需的。「Back」/「Forward」动作恢复侧键前进后退把按键绑定为「Back」/「Forward」动作即可恢复 Chrome、VSCode 等应用中侧键的前进 / 后退功能。为什么这个方案有效从 MMF 3.0.6 起「Back」和「Forward」动作会在游戏和专业应用中真实模拟鼠标按键 4 / 5 的点击因此你依然可以在这些游戏 / 应用内对按键 4 / 5 做自定义重映射且能正常工作。这一行为在源码中有明确印证。在 Actions.m 的「Universal Back and Forward」实现中对于非 Apple 应用默认走「模拟 MB 4/5」分支bfmethod(bfmethod_mouseButton) { if (isleft) [ModificationUtility postMouseButtonClicks: 4 nOfClicks: 1]; else [ModificationUtility postMouseButtonClicks: 5 nOfClicks: 1]; }而对于 Apple 自家应用com.apple.前缀则改用「导航滑动」方式模拟——通过 TouchSimulator 发送postNavigationSwipeEventWithDirection事件见 Actions.m这与真实触控板上的双指左右滑动行为一致。注意事项同样地只有「单击」动作能生效「点击并拖拽」动作会由于同时发送mouseDown/mouseUp而无法复现原功能。「Scroll Navigate」动作恢复 Blender 等 3D 应用的中键环绕把「点击并拖拽」绑定为「Scroll Navigate」动作后拖拽会模拟触控板上的双指滑动从而恢复在 Blender 等 3D 建模应用中环绕Orbit观察对象在 Chrome、VSCode 等应用中前进 / 后退。从源码结构看「Scroll Navigate」走的是 MMF 的触控板模拟管线Helper 通过 TouchSimulator 系列接口向系统注入触控板事件而 Scroll.m 中大量使用了TouchSimulator postMagnificationEvent...、postRotationEvent...等调用以尽可能贴近真实触控板行为包括自动惯性滚动等细节确保 Blender 等对输入敏感的 3D 应用能够正确响应。注意如果电脑性能较低这种模拟在运行时响应性可能有所下降该项目仍在持续优化这一点。在 Blender 等场景中这一方案比「解除捕获」更优雅——因为它不会牺牲 MMF 的其他按键增强功能。方案二解除捕获删除全部绑定按上文「如何防止捕获」的操作删除该按键的全部条目即可。此时按键不再被捕获行为与 Mac Mouse Fix 未安装时完全一致。可以把「解除捕获」理解为一种兜底 / 终极手段它简单彻底但代价是该按键将完全脱离 MMF 的增强能力你无法再为它叠加任何额外动作。方案三完全停用 Mac Mouse Fix关闭General Enable Mac Mouse Fix开关后Mac Mouse Fix 将完全不再干预鼠标的行为所有按键都不再被捕获。这是最彻底的方案适合暂时不想使用 MMF 任何功能的情况。常见场景速查表你遇到的问题推荐解决方案终端里中键无法粘贴给按键绑定「Middle Click」动作浏览器中键打不开新标签页 / 无法关闭标签页给按键绑定「Middle Click」动作Chrome / VSCode 里侧键无法前进后退给按键绑定「Back」/「Forward」动作Blender 中无法用中键拖拽环绕观察给「点击并拖拽」绑定「Scroll Navigate」动作游戏 / 专业应用中自定义的 MB 4/5 映射失效给按键绑定「Back」/「Forward」动作会真实模拟 MB 4/5 点击或在游戏内重新映射什么都不想要想完全恢复原样删除全部绑定解除捕获或直接关闭General Enable Mac Mouse Fix相关指南按键捕获与滚轮捕获是同一套「捕获」机制的延伸。如果你还需要处理滚轮被接管的问题例如想完全脱离 MMF 的滚动处理、把滚动交给 MOS 等其他应用请参阅Captured Scroll Wheels滚轮捕获指南默认情况下 MMF 也会捕获滚轮在「Scrolling」标签页关闭全部选项并把「Speed」设为macOS、移除全部「Keyboard Modifiers」条目后滚轮即不再被捕获MMF 将完全不干预滚动也不消耗滚动时的处理器与电池资源。赞分享桌面应用系统编程【免费下载链接】mac-mouse-fixMac Mouse Fix - Make Your $10 Mouse Better Than an Apple Trackpad!项目地址https://gitcode.com/GitHub_Trending/ma/mac-mouse-fix点击查看免费下载相关推荐Mac Mouse Fix 按键捕获Captured Mouse Buttons完全指南原理、识别与三种恢复方案Mac Mouse Fix 按键捕获Captured Mouse Buttons完全指南原理、识别与三种恢复方案 本文面向 Mac Mouse FixM桌面应用系统编程Mac Mouse Fix 按键捕获Captured Mouse Buttons完整指南捕获原理、识别方法与恢复原始功能Mac Mouse Fix 按键捕获Captured Mouse Buttons完整指南捕获原理、识别方法与恢复原始功能 本文依据 Mac Mouse F桌面应用系统编程jynew 项目 TapTap 游戏防沉迷AntiAddictionUnity SDK 接入实战指南jynew 项目 TapTap 游戏防沉迷AntiAddictionUnity SDK 接入实战指南 本指南以 jynew 仓库 https://link.桌面应用系统编程上一篇戴尔笔记本风扇控制终极指南16级精准调速告别噪音烦恼下一篇Fresh 官方 Tailwind CSS 插件指南在 Fresh 项目中集成 Tailwindcss含选项配置与源码原理创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表