Skip to content

About

mac端无界鼠标 (Mouse Without Borders) —— 让 Mac 接入 PowerToys 的 Mouse Without Borders,一套键鼠控制多台电脑。支持 macOS 13+,Intel 与 Apple Silicon 通用。

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Latest commit

 

History

9 Commits

Folders and files

Repository files navigation

mac端无界鼠标 (Mouse Without Borders)

用一套键盘鼠标,同时控制你的 Mac 和 Windows。

这是一个 macOS 客户端,可以直接连上 Windows 上 Microsoft PowerToys → Mouse Without Borders(无界鼠标) 的现有配置, 把你的 Mac 加进这套键鼠共享里。Windows 端不需要安装或改动任何东西,继续用 PowerToys 里那个就行。

macOS 13+ | Intel 与 Apple Silicon 通用二进制,一份安装包通吃 | 约 2.1 MB

配置界面


这是什么

Windows 上的「无界鼠标」只能让 Windows 电脑之间互联。这个程序给 Mac 补上了客户端: 一台 Mac + 一台 Windows,共用一套键鼠 —— 鼠标撞到屏幕边缘就切过去,键盘跟着走,剪贴板和文件也能互通。

本项目是非官方的第三方客户端,与 Microsoft 无关联。 它说的是 MWB 的原生协议,所以 Windows 端只用官方软件、不需要装任何额外程序。


功能

功能 说明
🖱️ 一套键鼠控制两台电脑 鼠标撞到屏幕边缘即切换,键盘自动跟随
🔁 双向控制 Mac 控 Windows、Windows 控 Mac 都支持
🚫 本机光标自动锁定 控制另一台时,本机光标自动隐藏,不会两边乱跑
📋 剪贴板同步(文字 + 富文本 + 图片) 一边复制,另一边直接粘;网页 / 微信里的富文本粘到 Word 能保留格式,截图 / 图片也能直接过
📁 拖放文件(Mac → Windows) 把文件拖到屏幕边缘松手就发过去
📁 拖放文件(Windows → Mac) 从 Windows 拖过来,自动保存并弹出访达选中该文件
⌘ 访达复制即传 在访达里 Cmd+C 复制文件,自动同步到 Windows
🖱️ 可编程鼠标键 鼠标侧键可映射成按键序列或功能(放大缩小、水平滚动、窗口旋转…),点按 / 按住+滚动 / 按住+拖动 三套手势独立设置,两侧各一份
⌨️ 快捷键自动捕获 自定义快捷键时按一下键盘就录进去,不用手打 cmd+shift+z
🗂️ 页签式设置面板 基础设置 / 文件传输 / 键盘映射 / 日志和帮助,四页签各管一块,找设置不再翻长列表
🧩 机器矩阵棋盘(可拖动) 谁在左、谁在右一目了然;直接拖动本机方块就能改方位,最多 4 台机器
🌐 界面语言 默认跟随系统,可切「简体中文 / English」;语言栏本身中英双语常显,切错了也找得回来
☀️ 唤醒对端屏幕 Windows 睡着时把鼠标推过去,自动点亮它的屏幕(可关,可设仅插电生效)
🖥️ 菜单栏常驻 没有 Dock 图标,点菜单栏图标随时改配置

支持的系统

项目 支持情况
macOS 13.0 Ventura 及以上(在 macOS 15 Sequoia 上实测通过)
Apple Silicon(M1/M2/M3/M4) ✅ 原生 arm64,性能最佳
Intel Mac ✅ x86_64,同一安装包直接支持
Windows Windows 10 / 11 + Microsoft PowerToys(内含「无界鼠标」)
网络 两台电脑需要在同一个局域网(同一个路由器 / WiFi 即可)

安装包是通用二进制(Universal),一个 DMG 同时支持 Intel 和 Apple Silicon,不用挑版本。

⚠️ macOS 12 及更早版本不支持 —— 程序用到了 macOS 13 才提供的系统接口。


下载与安装

第 1 步:下载

👉 前往 Releases 页面 下载 MWB-v1.4.6-universal.dmg(约 2.4 MB)

也可以直接下仓库里的那份:dist/MWB-v1.4.6-universal.dmg。

第 2 步:安装

打开下载好的 DMG,把里面的 MWB.app 拖进 应用程序(Applications) 文件夹。

第 3 步:首次打开(重要)

本应用没有购买 Apple 开发者账号做签名公证,所以 macOS 第一次会拦一下。 任选一种方式放行即可,只需操作一次:

方法一|推荐,所有版本通用

打开「终端」(启动台搜 终端 / Terminal),粘贴执行:

xattr -dr com.apple.quarantine /Applications/MWB.app

方法二|macOS 13 / 14

在访达里 右键点 MWB.app → 选「打开」,弹窗里再点一次「打开」。

方法三|macOS 15 Sequoia 及以上

双击 MWB.app,弹窗后点「完成」;然后打开 系统设置 → 隐私与安全性, 滑到底部找到关于 MWB 的提示,点「仍要打开」。

第 4 步:授权

打开 App 后,到系统设置里给它两项权限(权限列表里名字显示为 MWB,两项缺一不可):

  • 系统设置 → 隐私与安全性 → 辅助功能 → 打开 MWB
  • 系统设置 → 隐私与安全性 → 输入监控 → 打开 MWB

改完权限后建议退出 App 再重新打开一次,权限才会重新加载。

macOS 15 及以上:第一次连接 Windows 时会弹「本地网络」授权窗,请点 允许 —— 不点会连不上,而且不会再弹第二次。


使用

Windows 端(设置一次即可)

  1. 打开 Microsoft PowerToys → Mouse Without Borders
  2. 确认功能已启用,并记下它显示的 安全密钥(Security key)
  3. 建议勾上 Transfer files between machines(在机器之间传递文件) —— 不勾的话文件拖放功能用不了

Mac 端

  1. 点菜单栏上的 MWB 图标,打开配置面板
  2. IP 地址:填 Windows 那台电脑的局域网 IP (在 Windows 上打开命令提示符,输入 ipconfig,看「IPv4 地址」那一行)
  3. 端口 / 密钥:端口默认 15101 不用改;密钥填 Windows 上看到的那个安全密钥
  4. 屏幕方位:在「机器矩阵」棋盘上把本机方块拖到它该在的位置就行了 (比如拖到最右格 = Windows 在你左边),Windows 会自动落到对面的格子; 也可以用下面的下拉直接选「上 / 下 / 左 / 右」
  5. 点 连接,状态变绿就成功了

之后把鼠标往那个方向撞到屏幕边缘,就切到 Windows 了;反方向推回来就切回 Mac。 也可以按 Control + Option + Esc 强制把控制权收回 Mac。

鼠标侧键 / 快捷键(可选)

键盘映射

侧键不再只有「后退 / 前进」两个下拉框,改成可增删的按键表:每个键都能分别设置 点按 / 按住+滚动 / 按住+拖动 三种手势,在 本机(Mac) 与 远端(Windows) 两侧各配一套动作。

  • 点 自动捕获按键… 再按一下鼠标上的键,程序自己认号,不用去数它是第几个
  • 动作可以选放大缩小、水平滚动、滚动缩放、启动台(Win:开始菜单)、 空间调度中心(Win:任务视图)、显示桌面、左右旋转窗口……也可以直接绑一段按键序列
  • 少数鼠标把两个附加键报反了 → 勾 按键号 3/4 互换
  • Mac 的「自然滚动」与 Windows 方向相反 → 用滚轮方向反转单独调某一头
  • 只有中键及以上会被接管;左键 / 右键刻意不动,免得「点了没反应」还没法自救

自定义快捷键(比如把某个组合键绑给远端)支持按键盘直接录:点输入框旁的小键盘按钮, 按下你要的组合键即可;Esc 取消,12 秒没操作会自动退出。


更新记录

v1.4.6(2026-10-08)

这一版修掉一个**最容易被误判成"App 坏了"**的问题:Windows 睡一觉醒来,Mac 这边显示"已连接", 但鼠标推过去毫无反应、一推就被弹回来。顺带挖掉一个会把对端打爆的重连缺陷。

  • 🐛 修掉「Windows 睡眠恢复后显示已连接、鼠标却跨不过去」。这是一种半开连接: Windows 睡下去之后,它的网卡和内核还在(照常响应、TCP 连接看着完全健康), 但 MWB 应用被冻结了 —— 于是:

    • 我们发过去的包,Windows 内核照常确认 ⇒ 发送永远"成功",看不出异常;
    • Windows 一个包都不回,而读侧是阻塞等数据的 ⇒ 接收线程一辈子不返回,"断开"事件永远不触发。

    两道防线同时失效,所以面板一直显示"已连接"。现在补了应用层看门狗: 15 秒内没有收到对端任何数据就判定这条链路已废 ⇒ 立刻把控制权交回 Mac、主动断开重连。 同时加上 TCP keepalive(10 秒闲置 / 5 秒间隔 / 3 次 ≈ 25 秒), 覆盖另一种情形:对端主机整个消失(拔网线 / 断电 / 路由器重启)。 两者互补 —— keepalive 探"主机在不在",看门狗探"应用还答不答话"。

  • 🐛 修掉「点几次『连接』就把对端打爆」。这是个语义撞车的 bug: 「停用」和「可以重连」在代码里用了同一个标志位,导致 stop() 不但没停掉已排好的重连, 反而给它放了行 —— 每点一次「连接」就留下一条永不停止的僵尸重连循环。 实测连点 13 次 → 12 条僵尸循环、5 分钟内发出 924 次 TCP 连接请求(约 2.3 次/秒)。 这正是对端偶尔报 too many connections / invalidkey 并自我退出的来源。 现在 stop() 是真正的终态,且重复点「连接」在配置未变时只会立刻重试一次,不再重建。

  • 🔧 顶到屏幕边缘但链路尚未建立时,不再交出控制权。以前会遇到「光标凭空消失、对端却毫无反应」 的假交接 —— 现在这种情况光标老老实实留在手上,最多觉得"跨不过去"。

  • 🔍 日志新增两条可自查的判据:入站静默看门狗已启动:阈值 15s 与 keepalive=10s×3。

v1.4.5(2026-10-08)

这一版修掉一个很烦人的问题:Mac 先开机、Windows 后开机时,Mac 会一直不连,非得手动点一次「连接」。

  • 🐛 修掉「Windows 开机后 Mac 老半天不连,得手动点一下」。根因有两个,叠在一起: ① 「探测对端在不在」和「建立连接」以前是同一个动作 —— 每次都完整地敲门+握手,于是节奏只能二选一: 勤一点就把对端敲崩(Windows 上的 MWB 会因连接数过多把自己终止),慢一点(10 分钟一次)又让刚开机的电脑白等很久。 ② 首次连接失败就直接放弃了:既不重试,连「等对端回连」的监听也一起关掉 —— 所以对端后来开机也连不进来。

    现在把两件事彻底拆开:

    • 对端不在线(敲门敲不通,对 MWB 零成本)⇒ 每 5 秒轻量探一次,对端一上线最慢 10 秒内自动接上;
    • 对端在线但还没准备好(TCP 通了、握手没过,对端会记一笔)⇒ 才放慢到 30 秒 → 1 分钟 → 3 分钟 → 10 分钟, 既不会把对端敲崩,也不至于等到天荒地老。

    首次连接失败不再放弃:转入与「用着用着断线」完全相同的自动重连流程,回连监听一直开着。 面板上会显示「等待对端上线(自动重连中)」,Windows 开机后自己就接上了,不用再手动点。

  • ✨ 系统从睡眠唤醒、或网络刚恢复时,立刻重试一次,而不是干等退避时间到。

  • 🔍 日志里握手用的 IV 改成十六进制显示,排查「两边是不是同一把密钥」时更方便对比。

v1.4.4(2026-10-06)

这一版把设置面板里三处互相打架的方位控件合并成一块可以拖的棋盘, 补上界面语言切换,并修掉三个很影响日常使用的行为问题。

  • 🧩 合并:屏幕方位 / 机器矩阵 / 本机槽位三处控件,现在是一块可拖动的棋盘。 以前同一个「谁在左谁在右」要在三个地方各填一次,填得不一致时面板显示一个值、鼠标却按另一个值走。 现在只在棋盘上拖一下:把本机方块拖到哪个格子,方位就跟着定下来(比如拖到最右格 = Windows 在左), Windows 会自己落到对面的格子上;也可以在下面用下拉直接选。
  • 🌐 新增界面语言,可选「跟随系统 / 简体中文 / English」,默认跟随系统。 语言栏的标题本身是中英双语的(中文界面显示「语言 / Language」,英文界面显示「Language / 语言」)—— 万一切到了看不懂的语言,这一行永远认得出来,能切回去。
  • 🐛 修掉「本机明明已经排在最右边,鼠标还是能继续往右穿出去」。 根因在多显示器:判断「鼠标顶到边缘了没有」时用的是光标当前所在那一块屏幕的边界, 而不是整块桌面的边界。于是屏幕不止一块时,内屏之间的接缝被当成了出界点 —— 光标从主屏往右移进第二块屏,位置正好等于第二块屏的左边缘,就被误判成「撞到了左边缘」而切到 Windows。 和鼠标实际往哪个方向推完全无关,所以看起来像方位乱了。现在改用整块桌面的外边界判断, 接缝不再触发,只有真正推到最外沿才会切屏。日志里也补上了每块屏的原点坐标,以后这类问题一眼可见。
  • 🐛 修掉「只要一复制,桌面就多一张照片」。 Windows 上的剪贴板管理器(例如微信输入法)会把复制到的图片先落成一个临时 PNG 文件, 对端于是按「文件」而不是「图片」发过来,我们照着落盘,桌面上就一张张堆起来了。 现在按这次是谁触发的来区分:对方宣布的是剪贴板内容 → 按图片收进剪贴板,随用随弃; 真正拖过来的文件 → 照旧保存并弹出访达。解不开的图仍然会存下来,不会丢东西。
  • 🐛 修掉「Windows 上 MWB 弹框说自己 too many connections 然后关掉,Mac 再也连不上」。 这是我们敲门敲太勤把对端打崩的:对端断电/睡眠期间,我们每 60 秒重连一次, 一夜 7 个多小时能敲 590 次;而 Windows 上 MWB 刚启动的那几十秒里配置还没加载完, 对连进来的连接一律回报 invalidkey,累计到它自己的连接数上限就触发保护、把自己终止了 (弹窗里那串 invalidkey 非常误导人 —— 它不代表密钥配错了,两边密钥自始至终是同一把)。 现在退避改为阶梯式放宽到 10 分钟一次的稳态稀疏探测: 对端启动窗口内最多只会撞上 1 次,凑不满它的连接数阈值。慢,才是能连上的前提。

v1.4.3(2026-09-23)

这一版主要是稳定性修复 —— 把一整类「App 会莫名其妙消失 / 连不上对端」的故障清掉了, 另外新增跨屏待机唤醒。

  • ✨ 新增:Windows 睡着时,鼠标推过去能把它叫醒。以前 Windows 进入睡眠、屏幕黑掉后, 你把鼠标推到 Windows 那边屏幕是不会亮的,得过去动一下它的键鼠;现在鼠标一到达就点亮对端屏幕。 为了避免和系统电源策略打架,它只挡「系统空闲睡眠」、不挡「显示器睡眠」(屏幕该灭还是灭), 可在设置里关闭,默认可配成「仅插电时生效」。
  • 🐛 修掉「在 Windows 上截图后,Mac 端 App 自己消失」。根因是两条连接(我们连出去的 + 对端回连进来的)会在同一处累积剪贴板分片、同时写进同一个缓冲区,把内存写坏后进程被系统强制终止。 平时复制一两行文字撞不上;截图是几千个分片连着发,把这个隐患放大到必现。现在两条连接各存各的、互不干扰。
  • 🐛 修掉「Windows 睡眠唤醒后,Mac 显示已连接、鼠标推过去却没有指针」。 出站重连时没有清掉上一次会话的握手状态,导致把收到的第一个包当成握手完成, 跳过了与对端的认证确认 —— 于是状态条写着「已连接」,其实根本没接通。现在重连会真正等对端应答。
  • 🐛 修掉「Windows 端 MWB 弹 too many connections、Mac 连不上」。 对端关机时我们的重连太密(约每 13 秒一次,一夜能轰 2000 多次),会把对端打进自我保护状态。 现在退避拉长(最长 60 秒),并修掉「反复点连接会留下多个重连循环一起发请求」的问题。
  • 🐛 修掉「App 毫无征兆地消失:日志停在半截、也查不到崩溃报告」。 往一个已经被对端断开的连接里写数据时,系统会直接杀掉进程 —— 这个终止方式拦截不了、 也不会产生崩溃报告,一天内曾发生 3 次。现在进程与每条连接都做了豁免: 写失败会正常报错并触发重连,而不是让 App 消失。
  • 🐛 一并修掉断线时连接资源没有正确释放,以及对端回连进来的连接没人持有、 被立刻关掉、反过来逼对端每秒重连两次的问题(Windows 端日志会因此刷屏报错)。
  • 🐛 修掉一处鼠标 / 键盘注入状态的并发写入 —— 极端情况下可能崩溃, 或者让 Shift 键「粘住」(松开却仍然是大写)。

v1.4.2(2026-09-19)

  • 🐛 修掉「偶尔显示已连接、但鼠标跨到 Windows 后完全不显示」的故障。 现象很迷惑人:状态条显示已连接,键盘打字、点击在 Windows 上照常生效, 只有鼠标指针在那边连影子都没有。 根因是鼠标移动与键鼠操作走的是两条不同的发送路径 —— 鼠标移动走独立发送线程,而断线时这条线程会被停掉,重连成功时没人把它重新拉起来 ⇒ 从此每一个鼠标位置都只是把队里的旧位置顶掉、一包也发不出去, 直到重启 App 才恢复。所以「键盘能用」根本不能证明鼠标那条路是通的。 现在重连成功时显式重启发送线程(这是主修复)。
  • ✨ 新增 1 秒哨兵自愈:无论线程是被断线、重连还是将来任何新的退出路径停掉的, 只要「队里压着鼠标位置、链路正常、却超过 1 秒一帧都没交付」,就自动重启并记一条日志。 这把「永久失效直到重启 App」降级为「最多 1 秒的自我恢复」。
  • ✨ 日志能一眼看出有没有在真发:以前只报鼠标「造帧率」, 故障时它照样是一片 100Hz+ 的祥和数字,把问题瞒住了;现在同时报出 「投递 / 实发 / 积压 / 发送线程是否存活」,实发 0 且投递在涨 = 立刻可见。
  • ⚡ 发送线程改为定时唤醒(0.2 秒),不再无限期阻塞等待 —— 即使出现极端卡死,最坏也只是 0.2 秒的滞后,而不是永久停摆。
  • 🐛 修复定向包的目标机器 ID 可能被随机值污染:学习对端机器 ID 时排除掉握手包 (它的源 ID 是随机模板值,不是真实机器号)。此前会影响文件拖放与 大图剪贴板这两条需要"指定发给谁"的路径。

v1.4.1(2026-09-17)

  • ✨ 图片剪贴板:现在 Mac 上截图 / 复制图片,直接到 Windows 里 Ctrl+V 就能粘; 反过来 Windows 复制的图也能粘到 Mac 的微信、Word、预览里。 ≤ 1 MB 直推,大图走 MWB 原生的「回连拉取」通道,走的是官方协议,Windows 端照旧不用装任何东西。
  • 🐛 修复 > 1 MB 的剪贴板内容(大图、大段文字)发不过去:把控制权交给 Windows 时补发 MWB 的 MachineSwitched 通知 —— 对端只有收到它才会回连来拉,缺了它能小数据能过、大图必丢。
  • ✨ 可编程鼠标键:侧键不再只有「后退 / 前进」两个下拉框,改成可增删的按键表。 每个键有点按 / 按住+滚动 / 按住+拖动 3 种手势 × 本机 / 远端 2 个侧位 = 6 项独立设置; 可选动作包括放大缩小、垂直 / 水平滚动、滚动缩放、启动台(Win:开始菜单)、 空间调度中心(Win:任务视图)、应用窗口、显示桌面、左右旋转窗口……也可以直接绑一段按键序列。 点「自动捕获按键…」再按一下鼠标上的键就能自动认号;另附按键号 3/4 互换开关 (少数鼠标把两个附加键反过来报)和滚轮方向反转开关(Mac 与 Windows 方向相反)。
  • 🐛 修复侧键上绑的 ⌘C / ⌘V 等快捷键在 Windows 侧失效:手势判定现在双向都生效。
  • ✨ 自定义快捷键改成自动捕获键盘按键:点一下输入框旁的小键盘按钮,按你要的组合键即可, 不用再手打 cmd+shift+z;Esc 取消,12 秒无操作自动退出。
  • ✨ 设置界面改成四个页签:基础设置 / 文件传输 / 键盘映射 / 日志和帮助。 连接状态条常驻顶部,找设置不用再翻一条长列表;面板同时加高,一屏放得下。
  • ⚡ CPU 占用大幅下降:鼠标移动改为「最新值合流 + 独立发送线程」, 连接状态轮询只在数值真的变化时才刷新界面 —— 之前打开面板时会有十几~二十几个百分点的占用。
  • 🐛 修复 Web 页里复制的富文本在 Mac 侧粘出来夹带 HTML 源码残渣的问题(延续 v1.4 的剪贴板解析修复)。

v1.4(2026-09-16)

  • 🐛 修复剪贴板粘出来是乱码:从 Windows 复制文字过来,偶尔会夹带一长串 {4CFF57F7-…} 分隔符和 Version:0.9 / StartHTML:… 之类的 HTML 源码残渣 (在企业微信、浏览器等复制富文本时最容易出现)。现在会正确识别剪贴板包, 只取出干净的文字。
  • ✨ 顺带支持富文本:网页 / 微信里复制的带格式内容,粘到 Word、邮件里 能保留格式,粘到纯文本框仍是干净文字 —— 和 Windows 原生一样。
  • 🐛 修复 Mac → Windows 复制时,内容刚好以 TXT / HTM / RTF 开头会少掉 前 3 个字的问题。

v1.3(2026-09-14)

  • 首个发布版:一套键鼠控制两台电脑、本机光标自动锁定、剪贴板同步、 文件拖放(双向)、访达复制即传、屏幕方位可配。

常见问题

Q:连不上怎么办?

  • 确认两台电脑在同一个局域网,能互相访问
  • 确认 Windows 上 PowerToys 的「无界鼠标」正在运行,且安全密钥填得完全一致
  • macOS 15 上如果没弹过「本地网络」授权,去 系统设置 → 隐私与安全性 → 本地网络 里把 MWB 打开
  • Windows 防火墙如果拦截了 MWB,需要在防火墙里放行

Q:鼠标能过去,但键盘没反应?

检查「输入监控」权限(见上面第 4 步),授完权要重启一次 App。

Q:权限明明勾了,却一直提示未授权?

退出 App 再打开一次。如果还不行,在「辅助功能」列表里把 MWB 那条删掉,重新添加一次。

Q:文件拖不过去?

  • Windows 端 PowerToys 的「无界鼠标」里要勾上 Transfer files between machines
  • 一次只能拖 一个文件,且不支持整个文件夹(多个文件请先打包成 zip)
  • 拖的时候要一直按住鼠标不放,拖到屏幕边缘再松手

Q:Windows → Mac 收到的文件存在哪?

存在 桌面 → MouseWithoutBorders 文件夹里,收到后会自动弹出访达并选中该文件。

Q:复制的图片过不去?

Mac 侧截图(⌘⇧4)或复制图片后,到 Windows 里 Ctrl+V 即可;反方向也一样。 若粘出来是空白,先确认两边是同一个 MWB 连接、并在设置里没关掉图片同步。 说明一点取舍:在访达里 ⌘C 一个图片文件,走的是文件通道(会落到对端桌面文件夹), 而不是图片剪贴板 —— 这是刻意的,跟 Windows 原生行为一致。

Q:给鼠标侧键绑了 ⌘C / ⌘V,到 Windows 上怎么不管用?

先在「键盘映射」页签里确认这个侧键的远端侧配置了动作(本机 / 远端是两套独立设置)。 手势判定已修成双向生效,如果仍不灵,用「自动捕获按键…」重新认一次按键号, 并对付个别鼠标把 3/4 号报反的情况,打开 按键号 3/4 互换。

Q:Mac 的鼠标跑到 Windows 上之后,本机鼠标还在动?

正常情况下控制 Windows 时本机光标会自动隐藏。如果没隐藏,检查「控制 Windows 时锁定本机光标」有没有勾上。

Q:鼠标移动时,每隔约半秒会轻微卡一下?

先看有没有开 iPad 随航(Sidecar)副屏、隔空投送(AirDrop) 或 接力(Handoff)。

Mac 只有一个 Wi‑Fi 射频。当它还要同时服务「随航副屏」「隔空投送」「接力」这类 Apple 设备直连功能时,就必须周期性地离开路由器信道去和 iPad / iPhone 对一下话。 离开的那几十毫秒里,发往 Windows 的鼠标位置包会全部排队、等回来时一次性放行 —— 表现出来就是每隔约 0.5 秒轻轻顿一下。

按推荐顺序处理:

  1. 插网线 —— 有线不走 Wi‑Fi,这个问题直接消失(最省事)
  2. 跨屏工作时断开随航副屏(菜单栏「屏幕镜像」里断开 iPad)
  3. 关掉隔空投送 / 接力:系统设置 → 通用 → 隔空投送与接力

想自己确认一下(Mac 上打开「终端」):

ping -c 120 -i 0.05 192.168.1.1    # 换成你自己路由器的地址
  • 如果 max 明显比 avg 大(例如 avg 2ms 但 max 100ms+),并且大致每隔 10 个包出现一次, 就符合上面说的「射频分时」或「路由器省电节拍」
  • 如果 min/avg/max/stddev 都是几毫秒、很平,那这条链路是好的,卡顿另有原因

要打路由器的地址,不要打 Windows 那台 —— Windows 默认会丢弃 ping, 打它永远是 100% 丢包,会让人误判成「网络断了」。


说明与免责声明

  • 本项目是非官方的第三方客户端,与 Microsoft 没有任何关联。
  • 通信协议与 Microsoft PowerToys 的「无界鼠标」保持一致,仅供你连接自己的电脑使用。
  • 程序需要「辅助功能」与「输入监控」权限 —— 这是所有键鼠共享类软件的必需项, 因为它需要模拟键鼠输入、并捕获你的键鼠操作。
  • 程序不会向互联网上传任何数据,只在你填写的那个局域网 IP 之间通信。
  • 请只在你信任的局域网里使用;公网环境请自行评估风险。

开发

源码就在本仓库,使用 Swift Package Manager 构建。

git clone <本仓库地址>
cd mac-mouse-without-borders

# 一键打包成 .app(会自动签名并安装到 /Applications)
./build_app.sh

# 或者只编译
swift build -c release

需要 macOS 13+ 和 Xcode Command Line Tools(xcode-select --install)。

技术实现细节(协议格式、加密参数、各种踩坑记录)见 docs/DEVELOPMENT.md。


English

Mouse Without Borders — macOS client

An unofficial macOS client for Microsoft PowerToys' Mouse Without Borders. Add your Mac to an existing MWB setup and share one keyboard and mouse across Windows and macOS — no extra software needed on the Windows side.

Requirements

  • macOS 13.0 Ventura or later (tested on macOS 15 Sequoia)
  • Universal binary: works on both Apple Silicon and Intel Macs
  • Windows 10 / 11 with Microsoft PowerToys (Mouse Without Borders)
  • Both machines on the same local network

Features

  • Seamless edge-switching mouse & keyboard control, both directions
  • Local cursor auto-hide while controlling the other machine
  • Clipboard text sync
  • File drag & drop in both directions (single files)
  • Configurable screen position, up to 4 machines
  • Wake the other machine's screen when the mouse is pushed over

Install

  1. Download dist/MWB-v1.4.6-universal.dmg
  2. Drag MWB.app into /Applications
  3. The app is not notarized, so run once:
    xattr -dr com.apple.quarantine /Applications/MWB.app
    (or right-click → Open on macOS 13/14; System Settings → Privacy & Security → "Open Anyway" on macOS 15)
  4. Grant Accessibility and Input Monitoring permissions to MWB
  5. Allow the Local Network prompt on macOS 15

Then enter your Windows machine's IP, the port (15101 by default) and the Security key shown in PowerToys' Mouse Without Borders, pick the screen position, and hit Connect.

About

mac端无界鼠标 (Mouse Without Borders) —— 让 Mac 接入 PowerToys 的 Mouse Without Borders,一套键鼠控制多台电脑。支持 macOS 13+,Intel 与 Apple Silicon 通用。

Topics

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages