Я работаю с USB-драйвером мыши, и я действительно не знаю, как разделить и использовать информацию, отправляемую /dev/input/mouse0 и /dev/input/mice
. После нескольких поисков в Google я нашел несколько кода об использовании /dev/input/mice
int fd, bytes;
unsigned char data[4];
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;
// 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);
if(left)
return left;
if(right)
return right;
if(middle)
return middle;
}
return 0;
Эта программа работает, но не получила никакой информации о колесиковом прокрутке
Мне удалось найти программу, которая использует [ f6]
int fd;
struct input_event ev
const char* pFile = "/dev/input/event0";
fd = open(pFile, O_RDONLY);
if(fd == -1)
{
printf("ERROR Opening %s\n", pFile);
return -1;
}
read(fd, &ev, sizeof(ev));
std::cout << "type : " << ev.type << " code : " << ev.code << " value : " << ev.value << std::endl;
close(fd);
return 0;
Но есть проблема для диагонального перемещения, потому что этот файл сохранял только одну координату в одно и то же время, а координата X имеет приоритет на Y; так что это довольно раздражает, когда вы хотите переместить мышь на ось Y
Однако я не нахожу код для использования /dev/input/mouse0, поэтому какая информация сохраняется в этом файле?
Итак, мои вопросы: 1. Какая информация сохраняется в /dev/input/mouse0? 2. Как я могу прочитать всю информацию о мыши без открытия 2-х файлов и без проблемы приоритета (прокрутка прокрутки + перемещение оси X / Y)?