使用 UHID 的虚拟键盘

问题描述 投票:0回答:0

我正在尝试实现 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 */
};

我找不到关于此事的更多文件。在这个时候,我什至不确定是否可以做我想做的事。我已经看到像 KMonad 这样的东西,我无法开始工作。

最后,这些是我的问题:
如何将 rdesc 数组填充到键盘?
如何跨越窗口系统?
我在哪里可以找到有关 UHID 的文档?

c linux keyboard hid
© www.soinside.com 2019 - 2024. All rights reserved.