2010-05-07 65 views
4

最少的库我不确定在哪里寻找这个信息,但我想知道如何获得鼠标输入(或任何隐藏输入)使用最少的非标准库在c。基本上,是否有一个stdio等效于鼠标(和其他输入)在c中的输入?还是有一个库是最小的,并在多个平台上交叉兼容。只要能够将鼠标坐标打印到终端窗口就足够了。如何跟踪鼠标输入使用c

回答

2

这是一个0非标准库方法。运行/ dev/input/event#存在的任何位置。

#include <linux/input.h> 
#include <fcntl.h>  

int main(int argc, char **argv) 
{ 
int fd; 
if ((fd = open("/dev/input/mice", O_RDONLY)) < 0) { 
    perror("evdev open"); 
    exit(1); 
} 

struct input_event ev; 

while(1) { 
    read(fd, &ev, sizeof(struct input_event)); 
    printf("value %d, type %d, code %d\n",ev.value,ev.type,ev.code); 
} 

return 0; 
} 

在Windows上,您需要使用Win32 API做一些可怕的事情并挂钩到消息系统中。

总而言之,不,C在这方面没有标准。

+1

这实际上是为我捕获键盘信号:) – LukeN 2010-05-07 22:27:21

+4

这不是跨平台 – 2010-05-07 22:30:40

+0

@klez:我不认为真的有跨平台的方式来做到这一点。 – 2010-05-07 23:15:45

3

SDL会做我相信的诡计。

0

取决于平台和操作系统。如果您想直接“跟踪”鼠标(或HID)事件,则可能需要编写驱动程序或找到一个驱动程序。驱动程序将监视端口并侦听鼠标数据(消息)。

在事件驱动系统上,您必须订阅才能使用鼠标事件消息。某些操作系统会将消息广播给每个任务(如Windows),而其他操作系统则只会将事件发送给订阅者。

这是一个太接近特定答案的问题。

+0

谢谢,这是一般的,因为我刚开始输入编程,我不知道从哪里开始!更具体地说,我希望尽可能低的司机,而不必写一个。 我感兴趣的是在windows和linux上编程tabletPC输入,但我到处搜索了一个跨平台的方式来做到这一点,我什么都没有想出来。因此,我想写一个(如果不存在)。我希望它低级别,所以它更少依赖于操作系统特定的库。如果你能够回答这个问题,或者指引我朝着正确的方向发现自己,那将是惊人的! – TimE 2010-05-08 04:46:37

+0

@TimE跨平台游戏库已经长时间以最高精度追踪鼠标输入......有些甚至可以访问原始鼠标输入。如果你不想使用它,至少它是一个寻找解决方案的好地方。 GLUT和SDL是开始寻找的好地方,两者都是开源的。祝你好运。 – m0s 2010-05-08 19:15:51