你如何从/ dev / input / mouse中读取鼠标button的状态?

你如何从/ dev / input / mouse中读取鼠标button的状态? 我想检测button是否被按下。

您可以打开设备并从中读取。 来自/ dev / input / mice的事件长度为3个字节,需要一些解析。 我认为现在最好的方法是使用/ dev / input / event#来代替。 但是,这里是使用/ dev / input / mice的一个小例子。

#include <stdio.h> #include <unistd.h> #include <fcntl.h> int main(int argc, char** argv) { int fd, bytes; unsigned char data[3]; const char *pDevice = "/dev/input/mice"; // Open Mouse fd = open(pDevice, O_RDWR); if(fd == -1) { printf("ERROR Opening %s\n", pDevice); return -1; } int left, middle, right; signed char x, y; while(1) { // Read Mouse bytes = read(fd, data, sizeof(data)); if(bytes > 0) { left = data[0] & 0x1; right = data[0] & 0x2; middle = data[0] & 0x4; x = data[1]; y = data[2]; printf("x=%d, y=%d, left=%d, middle=%d, right=%d\n", x, y, left, middle, right); } } return 0; } 

一个鼠标点击产生这个:

 x=0, y=0, left=1, middle=0, right=0 x=0, y=0, left=0, middle=0, right=0 

和一个鼠标移动(注意“相对”的鼠标移动坐标):

 x=1, y=1, left=0, middle=0, right=0