我正在尝试实现 QMK 固件对键盘的作用,但使用软件。所以,我想关闭关键帧,用一些关键帧替换其他关键帧、图层等。
搜索时出现在我面前的第一件事是这个例子。问题是,运行测试仅当执行二进制文件的终端具有焦点时才有效,并且我想绕过窗口系统。
此外,代码还显示了这个数组,我不知道如何填充。
static unsigned char rdesc[] = {
0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */
0x09, 0x02, /* USAGE (Mouse) */
0xa1, 0x01, /* COLLECTION (Application) */
0x09, 0x01, /* USAGE (Pointer) */
0xa1, 0x00, /* COLLECTION (Physical) */
0x85, 0x01, /* REPORT_ID (1) */
0x05, 0x09, /* USAGE_PAGE (Button) */
0x19, 0x01, /* USAGE_MINIMUM (Button 1) */
0x29, 0x03, /* USAGE_MAXIMUM (Button 3) */
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
0x25, 0x01, /* LOGICAL_MAXIMUM (1) */
0x95, 0x03, /* REPORT_COUNT (3) */
0x75, 0x01, /* REPORT_SIZE (1) */
0x81, 0x02, /* INPUT (Data,Var,Abs) */
0x95, 0x01, /* REPORT_COUNT (1) */
0x75, 0x05, /* REPORT_SIZE (5) */
0x81, 0x01, /* INPUT (Cnst,Var,Abs) */
0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */
0x09, 0x30, /* USAGE (X) */
0x09, 0x31, /* USAGE (Y) */
0x09, 0x38, /* USAGE (WHEEL) */
0x15, 0x81, /* LOGICAL_MINIMUM (-127) */
0x25, 0x7f, /* LOGICAL_MAXIMUM (127) */
0x75, 0x08, /* REPORT_SIZE (8) */
0x95, 0x03, /* REPORT_COUNT (3) */
0x81, 0x06, /* INPUT (Data,Var,Rel) */
0xc0, /* END_COLLECTION */
0xc0, /* END_COLLECTION */
0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */
0x09, 0x06, /* USAGE (Keyboard) */
0xa1, 0x01, /* COLLECTION (Application) */
0x85, 0x02, /* REPORT_ID (2) */
0x05, 0x08, /* USAGE_PAGE (Led) */
0x19, 0x01, /* USAGE_MINIMUM (1) */
0x29, 0x03, /* USAGE_MAXIMUM (3) */
0x15, 0x00, /* LOGICAL_MINIMUM (0) */
0x25, 0x01, /* LOGICAL_MAXIMUM (1) */
0x95, 0x03, /* REPORT_COUNT (3) */
0x75, 0x01, /* REPORT_SIZE (1) */
0x91, 0x02, /* Output (Data,Var,Abs) */
0x95, 0x01, /* REPORT_COUNT (1) */
0x75, 0x05, /* REPORT_SIZE (5) */
0x91, 0x01, /* Output (Cnst,Var,Abs) */
0xc0, /* END_COLLECTION */
};
我找不到关于此事的更多文件。此时,我什至不确定是否可以做我想做的事。我见过类似的东西克莫纳德我无法去上班。
最后,我的问题是:
- 如何将
rdesc
数组填充到键盘? - 如何越过窗口系统?
- 在哪里可以找到有关 UHID 的文档?
答案1
我试图自己解决这个问题,并不断浏览这篇文章。我想我找到了,这里的 rdisc 变量是HID 报告描述符。该内核文档页面指出:
HID 报告描述符的格式由两个文档描述,可从 USB Implementers Forum HID 网页获取...
然后内核文档专门链接到HID USB 设备类定义并HID 使用表。
这应该可以解决你的第一个问题。对于你的第三个问题有本文档,这是稀疏的,因为 UHID 基本上只是用户空间 HID 驱动程序的粘合剂,并且您将从常规 HID 文档中获得更多信息。抱歉,我实在不知道如何回答你的第二个问题。