Linux에서 마우스를 사용하는 실제 프로그램을 작성하는 경우 X 응용 프로그램을 작성하는 것 같습니다.이 경우 X 서버에 마우스 이벤트를 요청해야합니다. Qt , GTK 및 libsdl 은 마우스, 키보드, 그래픽, 타이머 및 GUI 프로그램 작성에 필요한 기타 기능에 액세스하는 기능을 제공하는 널리 사용되는 C 라이브러리입니다. Ncurses 는 터미널 응용 프로그램과 비슷한 라이브러리입니다.
그러나 시스템을 탐색하거나 어떤 이유로 든 X를 사용할 수없는 경우 커널 인터페이스에서 작동하는 방식은 다음과 같습니다.
유닉스 철학의 핵심 아이디어는 "모든 것이 파일"이라는 것입니다. 보다 구체적으로, 파일 작업에 사용하는 동일한 시스템 호출을 통해 가능한 많은 것들에 액세스 할 수 있어야합니다. 마우스에 대한 커널 인터페이스는 장치 파일입니다. 당신 open()
이 선택적으로 전화 poll()
또는 select()
수신 데이터가 있는지, 그리고에 대한 read()
데이터를 읽을 수 있습니다.
USB 이전의 경우 특정 장치 파일은 종종 직렬 포트 (예 : /dev/ttyS0
PS / 2 포트) /dev/psaux
였습니다. 마우스에 내장 된 하드웨어 프로토콜을 사용하여 마우스와 대화했습니다. 요즘 /dev/input/*
서브 시스템은 다양한 입력 장치를 처리하는 통합 된 장치 독립적 방법을 제공하기 때문에 선호됩니다. 특히, /dev/input/mice
시스템에 연결된 마우스의 /dev/input/mouseN
이벤트를 제공하고 특정 마우스의 이벤트를 제공합니다. 대부분의 최신 Linux 배포에서 이러한 파일은 마우스를 연결하면 동적으로 만들어집니다.
마우스 장치 파일에서 읽거나 쓰는 것에 대한 자세한 내용은 커널 설명서에서 input / input.txt 로 시작할 수 있습니다 . 특히 3.2.2 (mousedev) 및 3.2.4 (evdev) 섹션과 4 및 5 섹션을 살펴보십시오.