Я пытаюсь прочитать события мыши от /dev/input/mice файл. Я могу разобрать 3-байтовый ввод мыши для получения трех состояний кнопок и приращений в координатах X и Y. Тем не менее, ввод мыши при прокрутке вверх идентичен тому, когда я прокручиваю вниз. Как отличить событие прокрутки от события прокрутки вниз? Есть ли какие-либо ioctls, которые могут выполнять любую необходимую конфигурацию, чтобы я получал разные входы от мыши на эти два события?Как получить событие колеса прокрутки мыши в c
Следующая простая программа для просмотра ввода с мыши при возникновении события мыши. Прокрутка вверх и прокрутка вниз приводит к тому, что эта программа выводит один и тот же результат (а именно, 8 0 0).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <errno.h>
int main(void) {
int mouse_fd = open("/dev/input/mice", O_RDONLY | O_NONBLOCK);
signed char input[4];
ssize_t rd_cnt;
if(mouse_fd < 0)
{
perror("Could not open /dev/input/mice");
exit(EXIT_FAILURE);
}
while(true)
{
errno = 0;
rd_cnt = read(mouse_fd, input, 4);
if(rd_cnt <= 0 && errno != EAGAIN)
{
perror("Mouse read error:");
exit(EXIT_FAILURE);
}
else
{
for(int i = 0; i < rd_cnt; i++)
{
printf("%d", input[i]);
if(i == rd_cnt - 1)
{
printf("\n");
}
else
{
printf("\t");
}
}
}
}
return 0;
}
Есть ли у нас что-то вроде * libinput *? Одним из примеров является библиотека для X, которая делает все это. Вы можете изучить его источники. – 0andriy
Вы думаете об использовании SDL2 для ввода мыши? –
Недавно я узнал, что то, что я искал, - это использование входной подсистемы для получения событий мыши. Моя проблема решена. Спасибо вам за вашу помощь. –