Jeśli piszesz program w świecie rzeczywistym, który używa myszy w systemie Linux, najprawdopodobniej piszesz aplikację X. W takim przypadku powinieneś zapytać serwer X o zdarzenia myszy. Qt , GTK i libsdl to niektóre popularne biblioteki C, które zapewniają funkcje dostępu do myszy, klawiatury, grafiki, timerów i innych funkcji potrzebnych do pisania programów GUI. Ncurses to podobna biblioteka dla aplikacji terminalowych.
Ale jeśli eksplorujesz swój system lub nie możesz używać X z jakiegokolwiek powodu, oto jak działa on w interfejsie jądra.
Podstawową ideą filozofii UNIX jest to, że „wszystko jest plikiem”. Mówiąc dokładniej, jak najwięcej rzeczy powinno być dostępnych za pośrednictwem tych samych wywołań systemowych, których używasz do pracy z plikami. Interfejs jądra myszy jest plikiem urządzenia. Ty open()
, opcjonalnie zadzwoń poll()
lub zadzwoń select()
, aby sprawdzić, czy nadchodzą dane i read()
odczytać dane.
W czasach pre-USB, plik był często specyficzne urządzenie port szeregowy, np /dev/ttyS0
, lub port PS / 2 /dev/psaux
. Rozmawiałeś z myszą, używając dowolnego protokołu sprzętowego wbudowanego w mysz. Obecnie /dev/input/*
podsystem jest preferowany, ponieważ zapewnia ujednolicony, niezależny od urządzenia sposób obsługi wielu różnych urządzeń wejściowych. W szczególności /dev/input/mice
da ci zdarzenia z dowolnej myszy podłączonej do twojego systemu i /dev/input/mouseN
da ci zdarzenia z określonej myszy. W większości współczesnych dystrybucji Linuksa pliki te są tworzone dynamicznie po podłączeniu myszy.
Aby uzyskać więcej informacji o tym, co dokładnie przeczytałeś lub zapiszesz w pliku urządzenia myszy, możesz zacząć od input / input.txt w dokumentacji jądra. Spójrz w szczególności na sekcje 3.2.2 (mousedev) i 3.2.4 (evdev), a także sekcje 4 i 5.