先设计上位机需要的设备信息。
一、USB设备信息
USB设备应该分为了两种,一个是正常的键盘/鼠标的USB设备信息,一个是驱动升级时的USB设备信息。
1、键鼠设备信息
Vid、Pid、UsagePage、Usage、ReportID,然后上位机下发数据的管道可选SetReport或中断端点发送,设备返回数据通过中断端点返回;
2、升级设备信息
这个只需要知道Vid、Pid,往来都通过中断端点;
二、键盘
1、功能使能
需要知道当前键盘是否支持:普通按键自定义、Fn组合键自定义、灯效自定义等各项功能,用于上位机Ui显示。
1、布局
需要整个键盘的Layout信息,即每个按键的位置,用于上位机界面展示以及交互,这里选择使用http://www.keyboard-layout-editor.com/#/来生成。
2、按键的出厂功能
需要每个按键包括Fn组合键时每个按键的出厂功能,此处用于上位机的恢复出厂设置以及在用户修改按键后有高亮显示。
3、旋钮
有些键盘还带有旋钮功能,所以还需要旋钮的出厂功能。
4、灯效
每个灯效的名称及语言翻译、是否支持亮度、速度、方向设置,使用的色彩模型,例如RGB、HSV、HSL等,上位机将根据这些信息更新Ui及协议内容。
5、宏
需要知道支持最多的宏文件数量以及每条宏的条目限制
6、其它设置
usb回报率设置、按键响应设置等
三、鼠标
鼠标有许多和键盘的功能相类似,以下列出特别的信息
1、按键
鼠标按键有限,暂时只提供左右中键、前进后退、滚轮向上、滚轮向下、顶部底部按键,总计9个按键,需要提供哪些是支持自定义的。
2、DPI
需要提供DPI的上下限、步长,支持快捷切换的组数。
3、校准
提供校准方式。
四、总结
制作一个软件用于填写这些信息然后生成了一个json文件用于配置上位机Ui,这个软件较为简单,不在此详解。