2010-05-07 1 views
4

이 정보를 찾을 위치를 모르겠지만 마우스 입력 (또는 숨겨진 입력)을 얻는 방법을 알고 싶습니다. c. 표준 라이브러리. 기본적으로 c에서 마우스 (및 다른 입력) 입력에 대해 stdio를 사용할 수 있습니까? 또는 여러 플랫폼에서 최소한의 상호 호환이 가능한 라이브러리가 있습니다. 터미널 창에 마우스 좌표를 인쇄 할 수 있다면 충분할 것입니다.어떻게하면 가장 적은 라이브러리를 사용하여 마우스 입력을 추적 할 수 있습니까

답변

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

+4

이것은 크로스 플랫폼이 아닙니다 –

+0

@klez : 저는이 작업을 수행하는 플랫폼이 실제로 존재하지 않는다고 생각합니다. –

3

SDL 내가 믿는 속임수를 사용합니다.

0

플랫폼 및 운영 체제에 따라 다릅니다. 마우스 (또는 HID) 이벤트를 직접 "추적"하려면 드라이버를 작성하거나 드라이버를 찾아야 할 수 있습니다. 드라이버는 포트를 모니터링하고 마우스 데이터 (메시지)를 수신합니다.

이벤트 구동 시스템에서 은 마우스 이벤트 메시지에을 등록해야합니다. 일부 OS는 메시지를 모든 작업 (예 : Windows)에 브로드 캐스팅하고 다른 사용자는 이벤트를 가입자에게만 보냅니다.

이것은 특정 답변을 받기에는 너무 일반적인 질문입니다.

+0

저는 입력 프로그래밍을 처음 시작하기 때문에 일반적입니다. 어디서부터 시작해야할지 모르겠습니다! 좀 더 구체적으로 말하자면, 필자는 드라이버를 쓰지 않고도 얻을 수있는 수준으로 낮게하고 싶다. 저는 Windows와 Linux에서 tabletPC 입력을 프로그래밍하는 데 관심이 있습니다. 그러나 어디에서나이를 수행 할 수있는 교차 플랫폼 방법을 모색 한 적이 있습니다. 그래서 대신 하나를 쓰고 싶습니다 (존재하지 않는다면). 낮은 수준으로 OS 특정 라이브러리에 덜 의존적 이길 원합니다. 당신이 그것에 대답 할 수 있거나 나 자신을 찾기 위해 옳은 방향으로 나를 안내 할 수 있다면 그것은 놀라 울 것입니다! – TimE

+0

@TimE 크로스 플랫폼 게임 라이브러리는 이미 오랫동안 최고의 정밀도로 마우스 입력을 추적 해 왔습니다. 일부는 원시 마우스 입력에도 액세스 할 수 있습니다. 하나를 사용하고 싶지 않다면 적어도 해결책을 찾을 수있는 좋은 곳입니다. GLUT & SDL은 모두보기에 적합한 장소이며, 둘 다 오픈 소스입니다. 행운을 빕니다. – m0s

관련 문제