C1.21.3Mouse side-button compatibility设计
侧键(前进、后退)的映射依赖驱动软件,系统层不保证支持
别名: 侧键 · 前进后退 · 驱动映射
概念解释
鼠标侧键常被标作前进、后退,但它们能否被应用收到、以何种编号出现、是否已被驱动改写,都取决于硬件、驱动、系统和浏览器。系统层并不保证每台设备都暴露相同语义,因此不能把侧键视为普遍可用的标准输入。
机制
设备把额外按钮上报为通用的硬件输入事件,但在到达应用之前,往往先要经过厂商驱动这一层——驱动软件很可能已经把它们截获并转换成了键盘快捷键(比如映射成 Alt+左方向键、Alt+右方向键)后才转发给系统,这意味着应用即便认真监听"鼠标按钮 3/4"这个事件,也可能永远等不到它,因为驱动早在更底层就已经把它消费成了别的东西并完成了浏览历史前进后退,应用层看到的只是页面已经跳转的结果,而不是一次原始的按钮事件。远程桌面、虚拟机和网页沙箱还会在链路中再插入一层转换或直接丢弃非标准按钮,传递链路因此比"鼠标按下—应用收到"这句话复杂得多。
边界
对受控硬件和企业内部工具,管理员可以统一配置侧键的驱动映射,明确开启后效率收益是真实的;但这不能证明公共网页、面向大众发行的跨平台软件或共享设备上的用户也能依赖同样的行为——公共场景下设备型号、驱动版本和是否安装了厂商软件完全不可控。即使侧键事件确实能传到应用,用户也可能早已把它在系统或驱动层重新映射成个人偏好的其他命令,而不是产品默认假定的前进后退,这意味着侧键实际触发的动作不完全在应用的掌控之内。
怎么落地
- 不把侧键作为唯一入口;始终保留可见的导航按钮、主键点击和键盘路径作为等效方式。
- 若要支持扩展按钮,采用可配置的命令而不是写死前进后退的假设,并在按钮不可用时优雅降级为普通导航。
- 验证办法:在真实的目标设备、浏览器和至少一种远程桌面或虚拟化环境下分别测试,确认侧键事件是否真的能传到应用层,而不是被驱动或传输链路提前消费掉。