跨平台修饰键需要分别映射
别名: Command 与 Control · 平台修饰键 · native modifiers
概念解释
同一桌面产品发到 Mac 和 Windows(以及常见 Linux 桌面)上,复制、保存、撤销的修饰键不能共用一张表。分别映射指每个操作系统用该系统自己的主导修饰键和符号去绑同一条命令,而不是在所有平台上写 Ctrl,也不是在 Mac 上再备一套 Ctrl「方便从 Windows 过来的人」。
桌面应用被当成「这台机器上的本地软件」来用。修饰键是这台机器的口音,不是产品的品牌。
机制
每个桌面操作系统用修饰键划分「应用命令」和「系统/控制命令」。macOS 把应用命令放在 Command 上,Control 留给光标和控制字符;Windows 把应用命令放在 Control 上,Alt 走菜单助记。人在一个系统里练成的是口音,不是抽象的「修饰层 1」。跨平台产品若只维护一张和弦表,在某一侧必然说错口音:Mac 上的 Ctrl+C 不复制,Windows 上的带苹果符号的快捷键无处可按。
分别映射不是把字母键换掉,字母常常仍是 C、S、Z。要换的是哪一只手去按修饰层,以及菜单上印哪套符号。一张「统一快捷键」表看起来对工程友好,对桌面用户是在每一台机器上纠正操作系统。桌面形态的惯例强度高于移动:人会在这台电脑上同时开十几个本地应用,那个和大家不一样的修饰键会被当成这个应用坏了。
边界
只发单平台的应用没有映射问题。浏览器里的 Web 应用还要再叠一层浏览器自己的修饰惯例,三层口音会同时出现,分别映射仍然以「当前操作系统」为准,而不是以「我们希望统一」为准。远程桌面把宿主和客机的口音叠在同一物理键盘上,用户无法用「我在哪台机器」来选择修饰层,这是远程层的问题,不能靠应用再发明第三套。笔记本把修饰键缩小或换位,会在同一平台内部再制造口音,那是硬件,不是跨平台表能修的。
怎么落地
- 按平台绑定:macOS 用 Command 做应用命令,Windows 与常见 Linux 桌面用 Control;菜单标注写成该平台的符号,不要印一套跨平台的 Ctrl。
- 不要在 Mac 上把已经占用 Command 的命令再绑到 Control 当作「兼容 Windows 用户」。那是在平台内部制造第二套口音。
- 验证:同一条「复制、保存、撤销」在两台机器的菜单上分别显示该平台的符号,实际按下也走该平台的键。从另一平台过来的人第一下按错修饰键,是预期内的迁移,不是把两套绑在同一平台上的理由。