因此,我今天要解决的问题是与插入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协议.