0
我正在嘗試從/dev/input/mice文件中讀取鼠標事件。我能夠解析三個字節的鼠標輸入以獲得三個按鈕狀態以及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進行鼠標輸入? –
我最近發現我在找的是如何使用輸入子系統來獲取鼠標事件。我的問題解決了。無論如何,謝謝你的幫助。 –