修复使用 UU 远程控制 Macos27 鼠标点击不会切换窗口焦点问题的一个临时方案

发布于

我最近把 macOS 升级了,结果发现 UU 远程控制突然有点不对劲。

鼠标明明已经点到了另一个应用里,点击也确实生效了,可键盘输入还留在原来的应用。比如我人在 A 应用里,通过远程控制点击 B 应用的编辑区域,B 应用里的按钮能点,内容也能操作,但一敲键盘,文字还是跑到 A 应用里。

macOS 新版本似乎收紧了对模拟鼠标事件的处理, 等了好久 UU 远程都没更新解决这个问题,最终是求助 AI 做了一个临时方案,以下没有任何推广成分,这是 AI 给出的方案。

我最后用 Hammerspoon 补了一层逻辑:监听鼠标左键点击,看看鼠标下面的窗口属于哪个应用。如果发现它不是当前前台应用,就主动调用 activate(),帮 macOS 把焦点切过去。

Hammerspoon 是一个 macOS 自动化工具,可以用 Lua 控制窗口、应用、鼠标、键盘和各种系统事件。用 Homebrew 安装:
```bash
brew install --cask hammerspoon
```
接着创建 `~/.hammerspoon/init.lua` ,把下面这段代码放进去:

```lua
local tap = nil

local function createTap()
if tap then
pcall(function() tap:stop() end)
tap = nil
end
end

tap = hs.eventtap.new({hs.eventtap.event.types.leftMouseDown}, function(event)
pcall(function()
local pos = hs.mouse.absolutePosition()
local front = hs.application.frontmostApplication()
for _, win in ipairs(hs.window.orderedWindows()) do
local f = win:frame()
if pos.x >= f.x and pos.x <= f.x + f.w and
pos.y >= f.y and pos.y <= f.y + f.h then
local app = win:application()
if app and front and app:pid() ~= front:pid() then
app:activate(true)
end
break
end
end
end)
return false
end)
tap:start()
```

```lua
end
createTap()

-- 每 2 秒检查,僵死就整个重建
hs.timer.doEvery(2, function()
if not tap or not tap:isEnabled() then
createTap()
end
end)

-- 屏幕/空间切换时主动重建
hs.screen.watcher.new(function()
hs.timer.doAfter(0.3, createTap)
end):start()

hs.spaces.watcher.new(function()
hs.timer.doAfter(0.3, createTap)
end):start()

hs.alert.show("焦点修复已启动")
```
然后点击菜单栏里的 Hammerspoon 图标,选择 Reload Config 。看到"焦点修复已启动"的提示,就说明脚本已经开始工作了。

脚本做的事情不复杂:每次鼠标左键按下,先获取当前位置,找出这个位置下面的窗口,如果它属于另一个应用,就调用 `app:activate(true)`。最后返回 `false`,原本的鼠标点击不会被拦截,还是会继续传给目标应用。

这是个临时补丁。如果 UU 远程之后适配了 macOS 的焦点切换逻辑,把 Hammerspoon 和脚本移除就行了。另外 macOS 大版本升级后可能会重置辅助功能权限,遇到脚本没反应,先去系统设置确认一下。
不知道 UU 远程什么时候会彻底修好这个,但至少现在远程操作时,鼠标点到哪个应用,键盘焦点能跟到哪,总算能正常用了。

---

原文链接:[点击查看](https://www.v2ex.com/t/1227907)

评论(5)

楼主我也在用 UU,不过感觉它控制 Windows 体验很好,控制 macOS 就感觉中间套了一层“映射”一样很别扭。比如像 Mos 这种控制鼠标滚动反向和加平滑的软件,用 UU 远控时就会失效或者快得离谱。还有就是 Mac 上装了改 Caps 键为切换输入法的工具,用 Windows 远控时也切不了,这些细节真的挺影响体验的。

· 0 个赞

回复

提到鼠标滚动方向的问题,我之前自己折腾了个快捷指令。把它加到控制中心,点一下就能快速切换滚动方向,有需要的老哥可以试试:https://www.icloud.com/shortcuts/912d430b4c5e439e81499b56994cb672

· 0 个赞

回复

其实我觉得还好诶,在没升级 macOS 27 之前我一直用得挺正常的。至于鼠标滚轮那个问题,建议直接把平滑滚动关掉就行,其他的日常用下来没啥大问题。

· 0 个赞

UU 远控 Mac 确实一直有些小毛病。如果不打游戏的话,我强烈推荐试试 RustDesk,操作逻辑特别是触控体验上,我觉得比 UU 好太多了。

· 0 个赞

OP好人,我也一直在用 UU 远程。平时连 Windows 挺完美的,但控制 macOS 总感觉交互很怪,就像是中间硬套了一层映射,时不时就有小 bug。比如我本机装了 Mos 改鼠标滚轮反向和平滑,一连远程不仅反向失效,滚轮还变得飞快。另外连 mac 的时候 capslock 没法切输入法,这些小细节太折磨人了,非常影响体验。

· 0 个赞