2011-01-15 3 views

답변

1

사용하는 프레임 워크에 따라 여러 가지 방법이 있습니다.

X11을 프로그래밍하는 가장 기본적인 방법 인 "Xlib"로이 작업을 수행하려는 경우 Xlib manual을 살펴보고 XInput에 특히주의해야합니다. XI2 (XInput 버전 2)

을 사용하면 더 정교한 정보를 검색 할 수 있습니다. Qt을보십시오. 그것은 내가 본 최고의 GUI API 중 하나입니다.

추가 정보가 필요하면 알려주십시오.

0

다음은 Linux에서 원시 마우스 움직임을 얻기위한 참조, 조언 및 두 가지 접근 방식을 제공하는 11 개의 링크입니다. Link #2 (Python)은 마우스 장치를 읽는 전통적인 방법을 보여 주며 #1 (C), #3 (Python)#4 (C)은 이벤트 방식을 보여줍니다. ps/2 프로토콜은 link #5에 있습니다. Link #6은 명령 줄 예입니다.

두 접근법 각각은 x 및 y 방향으로 델타 스트림을 장치 드라이버 파일에서 가져옴으로써 X (Xlib)를 바이 패스합니다. 델타 대신에, Xlib은 창 (또는 화면) 위치를 제공하기 때문에 특정 방향으로 계속 읽기를 원한다면 포인터를 창 가장자리에서 계속 움직여야합니다. [X로 많은 프로그램에서 사용되는 "중심으로 뒤틀기"해킹에 대한 빠른 토론은 link #8을 참조하십시오.] 그러나 새로운 XInput 2.0 확장 (link #10)은 델타 가져 오기를위한 X API를 제공합니다 (최소한 -lX11 및 -lXi).

두 장치의 접근 방식 중 하나의 본질은 이것이다 :

1 : "는/dev/입/Mouse0"행 장치 또는 (그것은 당신의 배포판의 이름에 따라도에 비슷한처럼 뭔가를 읽고 오픈/dev/input/event4)를 사용하는 것이 좋습니다.

2 : 읽어보십시오. 이렇게 많은 바이트가 마우스 움직임을 나타냅니다. 예를 들어 위와 같이 mouse [n]을 여는 것과 같이 ps/2 원시 프로토콜 방법의 경우 기본적으로 x, y 동작을 신경 쓰면 모든 3 바이트 시퀀스의 두 번째 및 세 번째 바이트 만 필요합니다. 두 번째 바이트는 X를 나타내며 세 번째 바이트는 Y를 나타냅니다. 두 바이트의 각각은 단일 int8_t (부호가있는 8 비트) 수량입니다. 긍정적 인 X는 오른쪽에있는 것처럼 보입니다. 문제 없습니다. 그러나 긍정적 인 Y는 (대부분의 수학 교과서 에서처럼) 상향 인 것처럼 보입니다. 반면에 긍정적 인 Y는 일반적으로 화면 왼쪽 위 모서리에서 아래쪽으로가는 것으로 간주됩니다 (대칭 왼쪽 데카르트 좌표계).

기타 참고 사항 : X를 실행중인 경우 fopen/getc 대신 open/read를 사용할 수 있습니다 (link #7 및 다른 링크의 코드 참조). 처음 3 개의 버튼에 대해 마우스 버튼 상태를 원하거나 x 또는 y의 부호를 확인하려면 첫 번째 바이트도 확인하십시오. [오버 플로우는 일반적인 "스트림"사용에서의 문제이지만 의심 할 여지가 있습니다.] 리눅스 명령 줄에서 실험하면 빠른 "cat"에서 "less"로, 대부분의 동작 1 단위입니다 (^ A^@ 및 <FF>). 이것은 마우스 구성 방법과 마우스 사용 능력에 달려 있습니다. Link #5은 간단한 프로토콜을 다루며 단추 4와 5 및 마우스 휠에 대한 Microsoft intellimouse 표준 확장을 다루고 있습니다.Link #11은 ps/2 마우스 또는 키보드 용 컨트롤러 칩/로직 구성을 포함합니다. 이 인터페이스로 마우스를 구성하는 방법을 설명합니다. 창 작업을 자동화하는 데 도움이되는 마우스 클릭을 시뮬레이트하는 도구 (link #9, xdotool)가 있습니다. 마지막으로이 장치에서 직접 읽으려면 root 권한이 필요합니다 (배포판에 따라 다름).

관련 문제