解决iOS/iPadOS蓝牙小键盘无法控制网页快捷键的玄学“Bug”
开局叠甲:
不会写得很规范,内容也肯定会有错误。写出来主要是为了给遇到相同问题的朋友提供一个检索参考,希望能帮大家少走弯路。
背景介绍
为了方便在 iPad 上看漫画和 看/听小说,我搞了一个六键三模的自定义小键盘,用来控制翻页和音频快进快退。因为原装亚克力外壳太重,我3D 打印了个外壳,手感上基本满足需求。
小厂DIY级别三模小键盘遇到的问题
我用Docker部署了一个漫画阅读器,由于没有对应的 App,我把 Web UI 网页作为“网页 App”添加在 iPad 桌面使用。
suwayomi但在使用中发现:
(例如:设置 A 为上一页,B 为下一页)
但在App 内,使用左右方向键翻页却是正常的。也能正常进行媒体的快进快退
如果改用 2.4G 接收器 + OTG 转接头连接 iPad,网页快捷键就能正常工作。
虽然能解决问题,但还要挂个尿袋实在太蠢了,于是我一直在找原因和解决方案。
问题原因:
在网上一通搜索+AI,基本确定是 蓝牙 HID 设备类型 的问题:
标准键盘: 当标准键盘(有线&无线)连接 iOS 设备时,点击任何输入框都不会唤出屏幕软键盘,Safari 会开放完整的按键控制权限。
自定义小键盘: 很多带“宏”功能的自定义键盘,在 iOS 系统眼中不是标准的 HID 键盘。判断方法很简单:连上蓝牙后点击任意输入框,如果依然弹出屏幕软键盘,说明系统没把它当成标准键盘。
Safari 的限制: 推测 Safari 内核为了防止用户在连接“残废键盘”时无法输入文字,严格限制了此类设备的按键映射。
具体的测试可以用 iOS 设备访问一些在线键盘测试网站(比如zFrontier),按下小键盘时,看网页有没有检测到键位反馈。
zFrontier解决方案:
修改固件: 修改小键盘固件使其识别为标准 HID 键盘,我想大部分人应该做不到,包括我。
曲线救国: 偶然发现,只要 iOS设备同时连接上另一个标准键盘(有线或蓝牙均可),此时这个自定义小键盘即便通过蓝牙连接,也能正常控制网页快捷键了。
发现的过程也很曲折,我本想通过转换器把 2.4G 信号转成蓝牙,结果发现不兼容,但此时小键盘刚好也连着 iPad 的蓝牙。结果就在这种“双连”状态下,小键盘也能控制网页快捷键。
😂😂😂最后我的思绪一瞬间拉回到十多年前,因为这个信息我在iPadmini2的时代就知道了,只是再次遇到的时候才回想起来。
结语:写这篇文章是因为我在网上找了很久的信息,但始终没找到准确的原因&解决方案。偶然发现这种另辟蹊径的方法,于是便写下供后来者参考。我不确定信息是否准确,但问题大概率与HID设备类型相关,这甚至是Safari内核WebKit有意为之的。
作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~
