鼠标的侧边按键功能已广为人知,其主要用途是实现前进和后退操作,这在浏览文件夹和网页时尤为便捷。此外,一些游戏玩家也会将侧边按键配置为宏按键,用于优化游戏操作。然而,本文的重点并非游戏应用,而是基于 LPC55S28 的 lpcxpresso55s28_dev_hid_mouse_bm 示例,探讨如何实现侧边按键的前进后退功能。实际上,这一功能的实现仅需修改 HID 报告描述符即可。尽管实现方法多种多样,本文将以会介绍两种方式,接下来,详细说明具体实现过程。
首先,在 IDE 中导入 `lpcxpresso55s28_dev_hid_mouse_bm` 示例程序。导入完成后,烧录至开发板,并验证是否成功枚举为 USB 鼠标设备。若操作成功,电脑的鼠标指针将呈现循环画圈的动作,说明硬件和编译环境均已正常。此时,应将代码中控制指针画圈的部分屏蔽掉,因为指针持续画圈不方便后续测试操作。
接着先看看 SDK 例程中的默认描述符,此描述符定义了一个标准 USB HID 鼠标设备,支持 3 个按钮即对应鼠标的左、中、右按键,以及 X/Y/Z 三轴相对移动,一共是 4 个 byte:
在原有 HID 报告描述符的基础上多添加 Usage Page (Consumer) 中的 AC Back (0x224) 和 AC Forward (0x223),于是如下添加如下部分:
LPC55s28 开发板中包含有多个按键,这里可以用 S3 和 S1 来模拟前后侧键;
在例程中添加简单的 GPIO 按键检测功能,根据按下的按键配置 Consumer 报告中对应 AC Forward 和,AC Back 的 bit 位,并注意添加 Report ID 号;
实测已经可以按键实现前进后退的功能,但测试发现,仅能在浏览器中使用,在文件系统中使用后退功能生效,前进功能不生效,因为文件资源管理器的前进操作默认绑定至Alt+→快捷键,而非 Consumer Page 事件,所以在这里再跟大家分享另一种更简单的方法,基于例程的原有报告描述符,仅修改按键的个数,更改为 5 个,如下:
此时按键发送仅需要修改 buff 0 中的bit3 和 bit4,不需要添加 Report ID同样可以实现前进后退功能:
在 USB HID Usage Tables 默认的描述中 Buttons bit3 往后的按键是没有意义的,但是在 Windows 上,HID Buttons bit3 和 bit4 通常默认映射为前进和后退,但为了更高的兼容性,大家可以使用 Alt+→ 快捷键的方式,可改用 Keyboard Page 模拟快捷键,这个方式也可以在下次文章中跟大家分享;以上就是文章的全部内容!