[db:标题]

摘要:荣耀 MagicBook 笔记本安装了汇顶的触控板,此触控板在Linux下被识别为鼠标,导致无法使用触控板手势等功能,其解决方案为……
UPD 2023/11/28:补丁已并入内核主线,并在v6.6.3发布。以下解决方案不再需要。 TL;DR 安装软件包 hid-tools,然后运行命令: sudo hid-feature set -f 30000 3 $(sudo hid-feature list-devices | grep BLTP7853 | awk -F: '{print $1}') 问题现象 荣耀 MagicBook 笔记本安装了汇顶的触控板,此触控板在Linux下被识别为鼠标,导致无法使用触控板手势等功能。该触控板自称为 BLTP7853:00 347D:7853 Touchpad,识别码为 347d:7853。问题表现为此触控板被识别为了两个设备(见 /proc/bus/input/devices),且有 Touchpad 字样的设备无数据。 `/proc/bus/input/devices` 中的部分输出 I: Bus=0018 Vendor=347d Product=7853 Version=0100 N: Name="BLTP7853:00 347D:7853 Mouse" P: Phys=i2c-BLTP7853:00 S: Sysfs=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-BLTP7853:00/0018:347D:7853.0001/input/input11 U: Uniq= H: Handlers=event7 mouse0 B: PROP=0 B: EV=17 B: KEY=70000 0 0 0 0 B: REL=903 B: MSC=10 I: Bus=0018 Vendor=347d Product=7853 Version=0100 N: Name="BLTP7853:00 347D:7853 Touchpad" P: Phys=i2c-BLTP7853:00 S: Sysfs=/devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-1/i2c-BLTP7853:00/0018:347D:7853.0001/input/input12 U: Uniq= H: Handlers=event8 mouse1 B: PROP=5 B: EV=1b B: KEY=e520 10000 0 0 0 0 B: ABS=2e0800000000003 B: MSC=20 分析 由于 /dev/input/eventX 无输出,此问题显然与 X11 或者 libinput 无关,而是一个内核漏洞。其中模块 hid_multitouch 是头号怀疑对象。 (以下分析来自 @nexplorer-3e)在 Windows 设备管理器中,也存在两个设备:I2C HID Device 和 Microsoft Input Configuration Device,且这两个设备的设备识别码均为 BLTP7853。在微软的文档中有关于此的说明:触摸板必需 HID 顶级集合 - 输入模式功能报告。 触摸板必需 HID 顶级集合 - 输入模式功能报告 摘录 输入模式功能报告由主机传达给 Windows 精确式触摸板,用于指示应该将哪个顶级集合用于输入报告。 可将两个集合用于输入报告:鼠标集合和 Windows 精确式触摸板集合。 默认情况下,在进行冷启动/电源周期时,Windows 精确式触摸板应使用鼠标集合报告输入。 Windows 精确式触摸板在任何时候应仅使用一个给定集合报告数据,并且在从主机收到指示所需输入模式的相应功能报告后,应该只从另一个集合进行报告。 主机指定的用于输入模式的值(用法 0x52)决定了应该用于报告输入的集合。 输入模式值 输入报告 0 鼠标集合 3 Windows 精确式触摸板集合 主机可以在读取报表描述符后,随时向 Windows 精确式触摸板发出输入模式功能报告(包括可能通过活动集合报告数据时)。 如果报告数据时发生模式切换,则所有触点和按钮状态都应报告为向上弹起,并且所有使用该集合进行的报告都应停止。 在所有触点实际上都已向上弹起后,可以使用新指定的集合进行报告。 输入模式不应由 Windows 精确式触摸板跨电源周期或主机发起的重置(USB 重置、HID I2C HIR、HID SPI HIR)保留;但是输入模式可以跨任何设备发起的重置(例如 HID I2C DIR、HID SPI DIR 等)保留。 实验性解决方案 根据 @nexplorer-3e 提供的分析可知,我们只需将输入模式(Inputmode)设置为 3 即可。
阅读全文