我有应该模仿键盘的Leonardo / Micro设备。 我想修改库。原因是我希望能够发送原始扫描码,而图书馆做了一些准备工作。 我查看了源代码,也看了HID库,dbut很难理解以下几点:
答案 0 :(得分:1)
我会尽力回答你的问题。如果您仍有疑问,请与我联系:
- 键盘_ :: begin()和键盘_ :: end()应该启动和停止键盘模拟,但它们有空体
醇>
我相信这些只是占位符,以防需要进行任何初始化或清理。其他库具有相同的功能(例如鼠标库)。我怀疑他们是为了保持一致,以防他们需要。
- KeyReport特别神秘。
醇>
typedef struct
{
uint8_t modifiers;
uint8_t reserved;
uint8_t keys[6];
} KeyReport;
KeyReport是表示发送到主机的USB消息的数据结构。
- 密钥报告究竟发生了什么?我在HID.cpp中的USB_Send函数中丢失了跟踪。
醇>
它被发送到主机。
- 什么是修饰语,他们在做什么?
醇>
某些键是“常规”键(例如A,B,1,2,#等)。其他键是修饰符(例如Shift,Ctrl,Alt)。修饰键设置KeyReport.modifiers中的标志。例如,左移键是0x02。
- 发送的密钥数量是否限制为1,理论上可以是任意的?
醇>
可同时按下的“常规”键的数量为6,但您也可以按下修改键(Shift,Alt,Ctrl等)。
仅供参考:我可以通过向USBAPI.h文件添加新的密钥定义来添加其他密钥(例如数字小键盘密钥):
#define KEY_NUMPAD_DIVIDE 0xDC
#define KEY_NUMPAD_MULTIPLY 0xDD
#define KEY_NUMPAD_MINUS 0xDE
#define KEY_NUMPAD_PLUS 0xDF
#define KEY_NUMPAD_ENTER 0xE0
#define KEY_NUMPAD_1 0xE1
#define KEY_NUMPAD_2 0xE2
#define KEY_NUMPAD_3 0xE3
#define KEY_NUMPAD_4 0xE4
#define KEY_NUMPAD_5 0xE5
#define KEY_NUMPAD_6 0xE6
#define KEY_NUMPAD_7 0xE7
#define KEY_NUMPAD_8 0xE8
#define KEY_NUMPAD_9 0xE9
#define KEY_NUMPAD_0 0xEA
#define KEY_NUMPAD_DEL 0xEB