首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么获取鼠标滚轮的状态

2012-03-17 
如何获取鼠标滚轮的状态?如题,就是鼠标左右键中间的滚轮,这段代码只能获取鼠标移动的相对位置以及按键,而

如何获取鼠标滚轮的状态?
如题,就是鼠标左右键中间的滚轮,这段代码只能获取鼠标移动的相对位置以及按键,而无法获取滚轮的状态。

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <linux/input.h>#include <fcntl.h>#include <sys/time.h>#include <sys/types.h>#include <sys/stat.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);    if(( fd = open("/dev/input/mice", O_RDONLY))<0)    {        printf("Failed to open \"/dev/input/mice\".\n");        exit(1);    }    else    {        printf("open \"/dev/input/mice\" successfuly.\n");    }    while(1)    {        tv.tv_sec = 5;        tv.tv_usec = 0;        FD_ZERO(&readfds);        FD_SET(fd, &readfds);        retval = select(fd+1, &readfds, NULL, NULL, &tv);        if(retval==0)        printf("Time out!\n");        if(FD_ISSET(fd,&readfds))        {            if(read(fd, buf, 6) <= 0)//终端设备,一次只能读取一行            {                continue;            }            printf("Button type = %d, X = %d, Y = %d, Z = %d\n", (buf[0] & 0x07), buf[1], buf[2],   buf[3]);        }    }    close(fd);    return 0;}


[解决办法]
不懂 MARK下
[解决办法]
google下吧。
这种特殊的东西,做过的人看到此贴的概率还是比较小的。
[解决办法]
请查阅 mousedev.c

C/C++ code
tatic void mousedev_key_event(struct mousedev *mousedev,                unsigned int code, int value){    int index;    switch (code) {    case BTN_TOUCH:    case BTN_0:    case BTN_LEFT:        index = 0; break;    case BTN_STYLUS:    case BTN_1:    case BTN_RIGHT:        index = 1; break;    case BTN_2:    case BTN_FORWARD:    case BTN_STYLUS2:    case BTN_MIDDLE:    index = 2; break;    case BTN_3:    case BTN_BACK:    case BTN_SIDE:        index = 3; break;    case BTN_4:    case BTN_EXTRA:        index = 4; break;    default:        return;    }    if (value) {        set_bit(index, &mousedev->packet.buttons);        set_bit(index, &mousedev_mix->packet.buttons);    } else {        clear_bit(index, &mousedev->packet.buttons);        clear_bit(index, &mousedev_mix->packet.buttons);    }} 

热点排行