Как события от нажатия мыши работают в Linux?

Используя xscreensaver можно скорректировать число пикселей, которые мышь должна переместить прежде, чем деактивировать экранную заставку; не уверенный в завершенном отключении мыши все же.

Если Вы уже не используете XScreenSaver в KDE, можно следовать этим инструкциям для установки его.

После того как Вы делаете это, можно создать файл в названном корневом каталоге .xscreensaver и в том файле войдите:

xscreensaver.pointerHysteresis: 20

С 20 являющийся числом пикселей (10 значение по умолчанию).

25
29.11.2011, 02:38
2 ответа

Если Вы пишете реальную программу, которая использует мышь в Linux, Вы, скорее всего, пишете X приложений, и в этом случае необходимо попросить у X-сервера событий от нажатия мыши. QT, GTK и libsdl являются некоторыми популярными библиотеками C, которые обеспечивают функции для доступа к мыши, клавиатуре, графике, таймерам, и другие функции должны были записать программы GUI. Ncurses является подобной библиотекой для терминальных приложений.

Но если Вы исследуете свою систему, или Вы не можете использовать X по любой причине, вот то, как она работает в интерфейсе ядра.

Центральная идея в философии UNIX состоит в том, что "все - файл". Строго говоря, как можно больше вещей должно быть доступным через те же системные вызовы, которые Вы используете для работы с файлами. И таким образом, интерфейс ядра к мыши является файлом устройств. Вы 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.

28
27.01.2020, 19:40

Обычно информация от устройств выставляется приложениям через файлы устройств. Для мышей, в современных системах Linux, устройство /dev/mice (это устройство собирает события из всех подключенных мышей, существуют также устройства, соответствующие каждой отдельной мыши).

Когда Вы перемещаете или щелкаете мышью, мышь отправляет электрический сигнал на компьютер, который заставляет это повышать прерывание. Часть кода в ядре Linux звонила, обработчик прерываний в свою очередь читает данные о событии (например, какая кнопка была нажата), и инициировал цепочку уведомлений в ядре.

Если существует какое-либо приложение, которое читает из файла устройств, соответствующего этому устройству, то приложение сказано, что вводит, ожидает. Например, если приложение заблокировано в read системный вызов, то системный вызов возвращается.

В типичной системе существует один процесс, читая события мышей: сервер X Window. Та программа управляет входные периферийные устройства и графический дисплей. Отдельные графические приложения затем уведомляются относительно событий от нажатия мыши через дженерик X протоколов события, которые несут другие типы событий, такие как нажатия клавиш, изменения фокуса окна, изменения видимости окна, …

8
27.01.2020, 19:40

Теги

Похожие вопросы