Якщо ви пишете програму в реальному світі, яка використовує мишу в Linux, ви, швидше за все, пишете додаток X, і в такому випадку вам слід запитати X-сервер про події миші. Qt , GTK і libsdl - деякі популярні бібліотеки С, які надають функції доступу до миші, клавіатури, графіки, таймерів та інших функцій, необхідних для написання програм GUI. Ncurses - це аналогічна бібліотека для термінальних додатків.
Але якщо ви вивчаєте свою систему або не можете використовувати X з будь-якої причини, ось як це працює в інтерфейсі ядра.
Основна ідея філософії UNIX полягає в тому, що "все є файлом". Більш конкретно, якомога більше речей повинно бути доступним через ті самі системні дзвінки, які ви використовуєте для роботи з файлами. І тому інтерфейс ядра до миші - це файл пристрою. Ви open()
його, за бажанням, зателефонуйте poll()
або select()
перевірте, чи є вхідні дані, і read()
прочитати дані.
Під час попереднього USB, конкретний файл пристрою часто послідовний порт, наприклад /dev/ttyS0
, або / 2 порти PS, /dev/psaux
. Ви говорили з мишею, використовуючи будь-який апаратний протокол, який був вбудований у мишу. У ці дні /dev/input/*
є перевагою підсистема, оскільки вона забезпечує єдиний, незалежний від пристрою спосіб обробки багатьох різних пристроїв введення. Зокрема, /dev/input/mice
буде подано події від будь-якої миші, приєднаної до вашої системи, та /dev/input/mouseN
подасть вам події від конкретної миші. У більшості сучасних дистрибутивів Linux ці файли створюються динамічно під час підключення миші.
Для отримання додаткової інформації про те, що саме ви читали б або записували у файл пристрою миші, ви можете почати з вводу / вводу.txt в документації на ядро. Перегляньте, зокрема, розділи 3.2.2 (mousedev) та 3.2.4 (evdev), а також розділи 4 та 5.