Si está escribiendo un programa del mundo real que usa el mouse en Linux, lo más probable es que esté escribiendo una aplicación X y, en ese caso, debe solicitar al servidor X los eventos del mouse. Qt , GTK y libsdl son algunas bibliotecas C populares que proporcionan funciones para acceder al mouse, teclado, gráficos, temporizadores y otras características necesarias para escribir programas GUI. Ncurses es una biblioteca similar para aplicaciones terminales.
Pero si está explorando su sistema, o no puede usar X por alguna razón, así es como funciona en la interfaz del kernel.
Una idea central en la filosofía de UNIX es que "todo es un archivo". Más específicamente, se debe poder acceder a tantas cosas como sea posible a través de las mismas llamadas al sistema que utiliza para trabajar con archivos. Y así, la interfaz del núcleo para el mouse es un archivo de dispositivo. Usted open()
, opcionalmente llame poll()
o select()
en él para ver si hay datos entrantes y read()
para leer los datos.
En tiempos pre-USB, el archivo de dispositivo específico era a menudo un puerto serie, por ejemplo /dev/ttyS0
, o un puerto PS / 2, /dev/psaux
. Hablaste con el mouse usando el protocolo de hardware que estaba integrado en el mouse. En estos días, /dev/input/*
se prefiere el subsistema, ya que proporciona una forma unificada e independiente del dispositivo de manejar muchos dispositivos de entrada diferentes. En particular, /dev/input/mice
le dará eventos desde cualquier mouse conectado a su sistema, y /dev/input/mouseN
le dará eventos desde un mouse en particular. En la mayoría de las distribuciones modernas de Linux, estos archivos se crean dinámicamente cuando conecta un mouse.
Para obtener más información sobre exactamente lo que leería o escribiría en el archivo del dispositivo del mouse, puede comenzar con input / input.txt en la documentación del kernel. Mire en particular las secciones 3.2.2 (mousedev) y 3.2.4 (evdev), y también las secciones 4 y 5.