访问 Linux 下的鼠标设备
作者: liupeng
日期: 2008-09-15

简介

通过访问 /dev/input/mice 设备获取鼠标信息。

select 系统调用

代码

#include <stdio.h>
#include <fcntl.h>
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>

int main (int argc, char **argv)
{
    int fd, retval;
    char buf[6];
    fd_set readfds;
    struct timeval tv;

    fd = open ("/dev/input/mice", O_RDONLY | O_NONBLOCK);

    if (fd < 0) {
        printf ("Failed to open /dev/input/mice \n");
        return -1;
    }
    printf ("Suceed to open /dev/input/mice.fd = %d\n", fd);

    tv.tv_sec = 5;
    tv.tv_usec = 0;

    while (1) {
        FD_ZERO (&readfds);
        FD_SET (fd, &readfds);

        retval = select (fd + 1, &readfds, NULL, NULL, &tv);
        printf ("retval = %d\n", retval);
        if (retval == 1) {
            printf ("select OK. \n");
            if (read (fd, buf, 6) <= 0) {
                printf ("Fail to read. \n");
                continue;
            }
            printf ("Button type = %d, X = %d, Y = %d.\n",
                    buf[0] & 0x07, buf[1], buf[2]);
        }
    }

    close (fd);

    return 0;
}