所以我今天的问题与插入linux机器的USB鼠标接口有关。但是,我不希望鼠标对X环境产生任何传统影响 - 我只是希望能够通过原始输入利用嵌入其中的编码器。所以这是我的问题。
如何从linux中的c ++中的备用鼠标设备获取低级但有意义的数据?具体来说,我想知道沿x轴和y轴的相对位置或至少编码器计数。
答案 0 :(得分:4)
我为USB条形码阅读器做了类似的事情,它呈现为HID键盘。
在最近的内核中,/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轴 - 请参阅{{1完整列表的文件),linux/input.h
将是位移。
另一个答案表明,没有必要自己实施HID协议。
答案 1 :(得分:0)