7 月 2 日,两个标签相隔一小时:先是 1.7,然后是 1.8。这不是日志出了错。 1.7 是功能版本 — 远程桌面从「能看」变成「真能干活」的那一版 — 而 1.8 就是 1.7 再加一件事:给 1.7 刚开始传的声音配上一个真正的音频编解码器。 在 Mac 一侧,它们分别对应 SharkTTY Desk 0.7.0 和 0.8.0。
一块真正称得上键盘的键盘
用 iOS 键盘从 iPad 上控制 Mac,是一场持续的挫败练习。没有 Escape。没有 Control。 没有功能键。macOS 指望你按住的那些键,iOS 一个都没有。
于是 1.7 长出了自己的一块。它一开始只是 iPad 远程桌面上一块悬浮的 QWERTY 键盘, 经过十几次提交,变成了你会认得出是键盘的东西:符号、Tab 和回车;⌃、⌥、⌘ 是真的 修饰键,还配了一个宽 Shift;跨两行的 ISO 式 L 形回车 — 在我们看清拇指实际 落在哪里之后,它又下移到主键行和底行,配上占两格的 Shift 和一个 fn 键。
真正让它从「有」变成「好用」的是两项设置:可以调整大小,以及可以用滑块设置它的 透明度 — 一路调到完全不透明也行,如果你并不想透过它看到桌面。一块盖住 iPad 下三分之一的键盘,在你能看见它底下是什么的时候,是完全不同的一回事。另外,两个 互相争抢的按钮也换成了一个带模式下拉的键盘按钮:要么是悬浮键盘,要么是系统键盘 加一条快捷工具栏。
用手指点中一个像素
一个指尖大致能盖住 macOS 窗口上那三个红黄绿按钮的面积。虚拟鼠标的存在就来自这道 算术,而 1.7 给它配了放大镜 — 一块以 Mac 原生分辨率显示你手指底下那片区域的 取景框,让你能点在复选框上,而不是点在它旁边。指针和放大镜也都扩展到了拼合屏幕 布局上,不再只在单块屏幕内部起作用。
这一带有个修复值得说清楚,因为它属于只有真用起来才会冒出来的那种。放大镜画面是与 主画面分开的一路像素流,会晚到一点点。这意味着光标在动的时候,放大出来的其实是 光标刚才所在的位置。显示一个过期的放大镜,比什么都不显示更糟,所以现在 它会在光标移动时隐藏,等光标停稳再回来。
把多块屏幕当成一张可以摆布的画面
1.6 把每块屏幕都搬上了屏幕。1.7 让你能摆布它们:一个合并屏幕的下拉菜单,以及一块 可以移动、可以缩放的显示区域。最后这一点需要一个把手,原因是这样的。同样一个拖动 手势,按意图能表示两件事 — 是挪动这张画面,还是挪动画面里 Mac 上的指针。 在两者之间靠猜,无论猜哪边都是糟糕的体验,所以移动和缩放被收进了一个带把手的明确 调整模式,双指捏合缩放同样只在那里生效。
右键也有同样的问题,只是小一号。它在不同地方的做法本来不一致;1.7 把它统一成到处 都是双指轻点,平铺视图和聚焦视图都一样。单块屏幕的画面也从顶栏和底部边缘缩进了一些, 这样画面就不会躲在应用自己的界面底下。
协商出来的清晰度,而不是假定的
视频清晰度现在是一场对话。Mac 端代理声明自己能编码哪些档位,查看端挑一个并渲染, 而上限 — xHD,也就是 Mac 的原生像素 — 可以由设备主动请求。它建立在 1.6 加进来的那套能力位机制之上:正是这套机制,让较新的应用能向较旧的代理提出请求, 并得到一个明确的「不行」,而不是一路坏掉的画面流。
双向的声音
1.7 加了从 Mac 到设备的系统音频,以及反方向的麦克风上行,于是一台 iPhone 可以成为 另一个地方那台 Mac 的麦克风。两者合起来,在 Mac 上接的电话才是你真能接的电话。
1.8 就是接在这里的。那时的音频是数据通道上的原始 PCM:没错,但占的带宽远远超过 声音真正需要的。1.8 引入了 Opus — 协议里带自己能力位的编解码器词汇、随构建 一同打包并加了安全包装的 libopus 1.5.2,以及经由 FFI 接通的查看端解码。能力位是 这里更要紧的那一半:如果代理和查看端并非都会说 Opus,它们会回落到彼此都支持的方式, 而不是直接失败。这条路径剩下的部分 — 一个把任意 PCM 变成 20 ms Opus 帧的 缓冲编码器,以及查看端的播放 — 在下一个构建里才完工。
与此同时,在终端这边
1.7 的注意力大半给了远程桌面,但终端也拿到了三件值得有的东西:
- 直接从键盘辅助栏上传文件,一份配置文件不用绕道文件管理器就能到服务器上。
- 一个收起键盘的按钮,因为在一块大半被键盘占掉的手机屏幕上,你总得读输出。
- 鼠标上报开关。打开时,外接触控板或鼠标的点击和拖动会送给能理解它们的程序 — vim、tmux、htop、less。关闭时,指针改为选择文本。两种行为都是对的;此刻你想要哪一种,只有你知道。
悬浮键盘在终端这一侧也补上了符号、Tab 和回车,并重新按标准美式键盘排布,而不再是 一个近似 — 这为下一个构建里到来的六种真实排列打了底。
阅读其他语言版本: English · 中文 · 日本語 · Español · Français · 한국어 · Українська
关于应用本身的更多内容见 SharkTTY 使用指南,面向用户的简短更新说明见新功能,最快找到我们的方式是反馈板。返回开发博客。