例程:STM32USBdevice: 基于STM32的USB设备例子程序 - Gitee.com
键鼠一体的应用场景如集合器,比如我们在网上购买的键鼠套装,是将2.4G集合到一个USB接收器中,这个USB接收器对于PC来说就是一个键鼠一体设备。或者我们可以自制一个带有鼠标摇杆的键盘等场景。
键鼠一体实现方式是在报告描述符中描述两个设备,即键盘设备和鼠标设备,报告描述就是将键盘描述和鼠标描述何为一个,那么PC如何区分这两个报告呢?通过REPORT_ID来区分,下面展示一下使用DT工具生成的报告描述符。
其中键盘REPORT_ID为1,鼠标REPORT_ID为2.在软件发送消息时,使用 REPORT_ID 作为报告的第一个字节,可以让主机准确区分不同类型的报告。也就是我们需要在额外的报告消息中添加第一个字节为REPORT_ID即可。
我们在keyboard代码的基础上进行修改。
前置操作步骤可以看我上一篇关于keyboard的教程,这篇我们之列出差异。
首先我们需要将上面的报告描述符添加到代码Middlewares\ST\STM32_USB_Device_Library\Class\HID\Src\usbd_hid.c中,
__ALIGN_BEGIN static uint8_t HID_KEYMOUSE_ReportDesc[HID_KEYMOUSE_REPORT_DESC_SIZE] __ALIGN_END = {
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,