Se você está escrevendo um programa do mundo real que usa o mouse no Linux, provavelmente está escrevendo um aplicativo X e, nesse caso, deve solicitar ao servidor X eventos de mouse. Qt , GTK e libsdl são algumas bibliotecas C populares que fornecem funções para acessar mouse, teclado, gráficos, timers e outros recursos necessários para escrever programas GUI. Ncurses é uma biblioteca semelhante para aplicativos de terminal.
Mas se você estiver explorando seu sistema ou não puder usar o X por qualquer motivo, veja como ele funciona na interface do kernel.
Uma idéia central da filosofia do UNIX é que "tudo é um arquivo". Mais especificamente, o máximo de coisas possível deve estar acessível através das mesmas chamadas de sistema usadas para trabalhar com arquivos. E assim a interface do kernel para o mouse é um arquivo de dispositivo. Você open()
pode, opcionalmente, ligar poll()
ou ligar select()
para ver se há dados recebidos e read()
para ler os dados.
Nos tempos pré-USB, o arquivo do dispositivo específico costumava ser uma porta serial, por exemplo /dev/ttyS0
, ou uma porta PS / 2 /dev/psaux
. Você conversou com o mouse usando o protocolo de hardware incorporado ao mouse. Atualmente, o /dev/input/*
subsistema é o preferido, pois fornece uma maneira unificada e independente de dispositivo de lidar com muitos dispositivos de entrada diferentes. Em particular, /dev/input/mice
você fornecerá eventos de qualquer mouse conectado ao seu sistema e /dev/input/mouseN
também eventos de um mouse específico. Na maioria das distribuições modernas do Linux, esses arquivos são criados dinamicamente quando você conecta um mouse.
Para obter mais informações sobre exatamente o que você leria ou gravaria no arquivo do dispositivo do mouse, você pode começar com input / input.txt na documentação do kernel. Veja em particular as seções 3.2.2 (mousedev) e 3.2.4 (evdev) e também as seções 4 e 5.