微控制器实现笔记本键盘:求禁用触摸板/飞行模式的USB HID按键码
问题描述
我正在基于微控制器实现笔记本键盘功能,但部分Fn功能按键对应的USB HID Keycode无法找到。USB协议仅定义了亮度调节、音量控制、媒体按键等组合码,还需获取禁用触摸板、开启飞行模式的相关USB码,恳请告知获取渠道。
当前使用的USB HID描述符
0x05, 0x01, // USAGE_PAGE (Generic Desktop) 0x09, 0x06, // USAGE (Keyboard) 0xa1, 0x01, // COLLECTION (Application) 0x85, 0x01, // Report ID (1) 0x05, 0x07, // USAGE_PAGE (Keyboard) 0x19, 0xe0, // USAGE_MINIMUM (Keyboard LeftControl) 0x29, 0xe7, // USAGE_MAXIMUM (Keyboard Right GUI) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x01, // LOGICAL_MAXIMUM (1) 0x75, 0x01, // REPORT_SIZE (1) 0x95, 0x08, // REPORT_COUNT (8) 0x81, 0x02, // INPUT (Data,Var,Abs) 0x95, 0x01, // REPORT_COUNT (1) 0x75, 0x08, // REPORT_SIZE (8) 0x81, 0x03, // INPUT (Cnst,Var,Abs) 0x95, 0x05, // REPORT_COUNT (5) 0x75, 0x01, // REPORT_SIZE (1) 0x05, 0x08, // USAGE_PAGE (LEDs) 0x19, 0x01, // USAGE_MINIMUM (Num Lock) 0x29, 0x05, // USAGE_MAXIMUM (Kana) 0x91, 0x02, // OUTPUT (Data,Var,Abs) 0x95, 0x01, // REPORT_COUNT (1) 0x75, 0x03, // REPORT_SIZE (3) 0x91, 0x03, // OUTPUT (Cnst,Var,Abs) 0x95, 0x06, // REPORT_COUNT (6) 0x75, 0x08, // REPORT_SIZE (8) 0x15, 0x00, // LOGICAL_MINIMUM (0) 0x25, 0x65, // LOGICAL_MAXIMUM (101) 0x05, 0x07, // USAGE_PAGE (Keyboard) 0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated)) 0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application) 0x81, 0x00, // INPUT (Data,Ary,Abs) 0xc0, // END_COLLECTION 65 0x05, 0x0C, // Usage Page (Consumer) 0x09, 0x01, // Usage (Consumer Control) 0xA1, 0x01, // Collection (Application) 0x85, 0x02, // Report ID (2) 0x05, 0x0C, // Usage Page (Consumer) 0x15, 0x00, // Logical Minimum (0) 0x25, 0x01, // Logical Maximum (1) 0x75, 0x01, // Report Size (1) 0x95, 0x08, // Report Count (8) 0x09, 0x6F, // Brightness Increment 0x09, 0x70, // Brightness Decrement 0x09, 0xB8, // Usage (Eject) 0x09, 0xCD, // Usage (Play/Pause) 0x09, 0xE2, // Usage (Mute) 0x09, 0xE9, // Usage (Volume Increment) 0x09, 0xEA, // Usage (Volume Decrement) 0x81, 0x02, // Input (Data,Var,Abs,No Wrap,Linear,Preferred State,No Null Position) 0xC0, // End Collection
获取特殊Fn键HID码的渠道
- 官方HID使用手册:查阅USB-IF发布的《HID Usage Tables》文档,飞行模式可关注
Consumer Page (0x0C)下的Wireless Radio Controls子项(对应Usage码0x00C0-0x00DF);禁用触摸板多为厂商自定义码,需结合目标设备的原厂键盘HID规范。 - 抓包分析原厂键盘:用USB抓包工具捕获原厂笔记本键盘按下目标Fn组合键时的HID报告,直接提取对应的Usage码和报告格式,这是最适配目标设备的方法。
- 社区逆向资源:在嵌入式或键盘DIY社区搜索同型号笔记本键盘的逆向记录,很多开发者会分享提取的特殊键码和描述符修改方案。
- 厂商技术文档:部分笔记本厂商会在开发者支持页面公开自家键盘的HID协议细节,可查找对应型号的规格书获取自定义码信息。
内容的提问来源于stack exchange,提问作者Conservative Visp
相关产品推荐
相关产品推荐

