2010-05-07 60 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