c-使用鼠标进行非鼠标输入

因此,我今天要解决的问题是与插入Linux机器的USB鼠标接口.但是,我不希望鼠标对X环境产生任何传统影响-我只希望能够通过原始输入使用嵌入在其中的编码器.所以这是我的问题.

如何在Linux中的C中从备用鼠标设备获取低级但有意义的数据?具体来说,我想知道沿x轴和y轴的相对位置或至少编码器计数.

解决方法:

对于做为HID键盘的USB条码读取器,我已经做了类似的操作.

在最近的内核中,/ dev / input / event *中有一个用于鼠标的事件设备.如果您打开它并使用EVIOCGRAB ioctl()进行抓取,它将不会将鼠标事件发送到任何其他应用程序.然后,您可以直接用鼠标读取事件-请参阅linux源代码发行版中Documentation / input / input.txt中的evdev接口文档.

当您从事件设备中读取内容时,您将获得以下形式的大量输入事件:

struct input_event {
    struct timeval time;
    unsigned short type;
    unsigned short code;
    unsigned int value;
};

(struct input_event和以下宏都在linux / input.h中定义).

您感兴趣的事件将具有input_event.type == EV_REL(相对运动事件),input_event.code成员将类似于REL_X(指示X轴-有关完整列表,请参见linux / input.h文件) ,而input_event.value将是位移.

另一个答案表明,您无需自己实现HID协议.

上一篇:鼠标左键向上事件和openfiledialog


下一篇:多态引用类型的转换