夜雨聆风学习资料网

ARTICLE · 1256225

手机不装 App,也能当 Mac 的触控板

手机不装 App,也能当 Mac 的触控板

Mac mini 塞在电视柜里,看片想暂停,得起身去摸鼠标。MacBook 合上盖子接显示器,鼠标又不知道滚到沙发哪儿去了。

手机一直在手边。CmdPalm 让它顶上去:Mac 上装一个菜单栏小工具,手机扫个码,手机就成了一块触控板、一副键盘、一块快捷键面板。

手机那边不装任何 App。它打开的是 Mac 自己发出来的一个网页。

免费开源,AGPL-3.0,最新版 0.4.0,安装包 4.6 MB。

手机端为什么不用装 App

菜单栏点开 CmdPalm,出来一张二维码。手机相机扫一下,浏览器跳到一个地址,那个页面就是操作界面。

地址长这样:你的Mac名字.local:8790。8790 是它开的端口。

iPhone 上「分享 → 添加到主屏幕」,之后从桌面点开,全屏,没有地址栏,跟 App 没区别。安卓也能加,不过要先做一步加密连接,下面会讲。

自制图:Mac 上开一个服务,手机用浏览器连进来

所以整条链路是:Mac 上跑一个小服务,手机浏览器连上来,两边用 WebSocket 传触摸和按键,Mac 去真的移动指针、真的按键。

这也解释了它为什么只支持 Mac。它要靠系统的辅助功能接口去操作指针和键盘,Windows 那边是另一套东西,不是改个编译参数就能搬过去的。

五个页面

底下五个标签,一屏一个功能。

官方宣传图:手机当触控板,点一下就是点击

Trackpad 是触控板。点、拖、两指滚、捏合缩放,三指四指的手势也有。屏幕边上有一条滚动条,拇指按住能一直滚下去,刷长网页不用来回蹭。

Keyboard 是键盘。显示的是你 Mac 当前那套布局,修饰键、功能键、媒体键都在。修饰键按一下只管下一个键,双击就锁定,按住再按别的键就是组合键。

自制图:五个标签,一屏一个功能

Deck 是按钮板,一页一页的按钮,每个绑一个动作。

官方宣传图:一格一个按钮,可以分页

一个按钮能做的事:打开某个 App、发一串快捷键、贴一段常用文字、打开一个网址、执行一个系统动作、跑一个快捷指令、点一下鼠标,或者按顺序连着做好几步。shell 命令也能跑,默认是关的,要在 Mac 的设置里打开,打开时还会再问你一次。

可以分页。做一页「直播用」——开播、静音、切场景;一页「写代码用」——终端、Git、构建;一页「开会用」——共享屏幕、静音、摄像头。

Apps 用真实图标列出你 Mac 上的程序,点一下启动,也能切换、隐藏、退出。插在外置硬盘上的 App 一样认。

Media 管播放和音量,还有屏幕亮度和键盘背光。

自定义键盘是 Keyboard 里另一件事:只留你要的键,摆成你要的样子。做演示用两个巨大的左右箭头加一个 B(黑屏),打游戏用 WASD,剪视频用你那套快捷键。每个键按多久就按住多久。

手势

自制图:常用的九个手势

表格之外还有几个细节。

滚动条能设成短的、长的、或者干脆藏起来,在手机设置的「Scrolling & zoom」里改。每个手势都能重定义。设置里打开「显示高级设置」,还能调指针加速和手势映射。

顶栏有个手的图标,按一下松开所有还按着的键和按钮 —— 手忙脚乱的时候很管用。

装之前,先确认三件事

自制图:三条都过不了就别折腾了

第一条最容易卡住。M1 之前的 Mac 装不上,这不是设置问题,改什么参数都没用 —— 它用到的指令集老机器没有。

第二条卡在手机上。iPhone 得能升到 iOS 17 —— iPhone X 和 8 停在 16,再早的更低。安卓没这道门槛,浏览器能用就行。

第三条卡在网络。访客网络、酒店和不少公司的 Wi-Fi 会把设备互相隔开,手机和 Mac 互相看不见。这种改路由器也没用,换一个网络。

安装

Homebrew 一条命令:

brew install --cask rahatsagor/tap/cmdpalm

不想用 Homebrew,就去 GitHub 的 releases 下 dmg,把 CmdPalm 拖进「应用程序」。

它没有苹果公证,第一次打开系统会拦一下。两个办法选一个,做一次就够。

终端跑一次:

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

或者直接打开它,然后去「系统设置 → 隐私与安全性」,页面往下翻有个「仍要打开」。

以后更新在 App 里自己装,Homebrew 装的连这一步都省了。

打开后它会要「辅助功能」权限。任何要移动指针、要替你打字的 Mac 程序都得有这一项,它会把设置页直接给你翻到那一栏,勾上就行。

链接

菜单栏点开,手机扫二维码。也可以手动打开码下面那个地址,输入 Mac 上显示的六位 PIN。这个 PIN 只在菜单开着的时候和三分钟内有效,过期就换一个。

连过一次就记住了,下次手机打开页面自己连。

家里有几台手机几台平板都能配。每台的设置、自定义键盘、手势都存在 Mac 上,手机浏览器清空了也不丢。换新手机时点一下「Copy settings from another device」,从旧设备抄过来。

安卓有两个坑。

一是 Chrome 只在加密连接下才允许「安装」网页应用。要去 Mac 上「设置 → 手机设置 → 加密连接」,把证书装到手机上,再从 Chrome 菜单里装。不做这一步也能用,只是会开在浏览器标签页里,多一条地址栏。

二是有些安卓机打不开以 .local 结尾的地址。二维码下面有个「QR link uses」,切成 IP 地址就行。

语音输入要多走一步

浏览器有条规矩:只在加密连接下给麦克风。所以想用语音输入,得先把上面那个加密连接做了。

做完了也不一定能用。语音是在 Mac 本地转成文字的,需要系统里有你那种语言的离线识别包。CmdPalm 说没有,就去「系统设置 → 键盘 → 听写」打开,让 macOS 自己下载。

这么设计的好处是:你说的话不出你的 Mac。没有哪一句被传到哪个服务器上。

它到底安不安全

这一块它写得比多数开源项目细:单独一份 SECURITY.md,逐条讲配对、网络、剪贴板、日志,不是一句「安全可靠」。

没有账号,没有统计,没有云中转。唯一对外的连接是检查更新,连的是 GitHub。

自制图:四件事,和一条要注意的

配对那一条值得多说两句。二维码里那个码是 144 位随机,猜不出来。六位 PIN 只在 Mac 显示它的时候有效,再往后三分钟,过期就换新的;连错五次就锁,从 30 秒开始翻倍,最多锁 15 分钟。

剪贴板图里没写:只在你手机上主动要的时候才发。密码管理器标记成「隐藏」的内容永远不发 —— 你复制一个密码,手机那边拿不到。

有一件事得说清楚:默认是 HTTP。

同一个 Wi-Fi 下如果有人抓包,能看到你打的东西,也能偷走已配对设备的令牌,冒充那台手机连上来。家里自己的网络问题不大。咖啡厅、办公室、合租房,就去把加密连接开了 —— 开了之后手机上会显示已加密,没开的时候界面写着「Not encrypted」。

· 界面是英文的。五个标签、所有设置项、提示语,全是英文。代码里没有多语言这一层。

· 只支持 Apple 芯片的 Mac。Intel 装不了。

· 没公证。大版本更新后如果辅助功能忽然失效(设置里明明勾着,就是没反应),要把它从列表里删掉再加一遍。macOS 把权限绑在签名上,重新签名就对不上了。

· 很新。10 月 9 日建库,16 天出了 7 个版本,0.4.0 是 10 月 24 日的。功能在快速变,也可能有没测到的地方。

· 不收 PR。作者在 README 里写了只收 issue,不收合并请求。想改就自己 fork。

下载

私信公众号,搜  CmdPalm  就能找到。

相关学习资料