Открыть сервис

Libinput

Libinput — это библиотека с открытым исходным кодом, предназначенная для обработки событий от устройств ввода в операционной системе Linux. Она служит промежуточным звеном между драйверами ядра, отвечающими за аппаратное обеспечение (например, драйвер evdev), и графической подсистемой (сервером отображения, таким как Wayland или X.Org). Основная задача libinput — унифицировать и упростить работу с различными типами устройств ввода, предоставляя прикладным программам и оконным менеджерам стандартизированный интерфейс для получения и интерпретации пользовательских действий (касания, нажатия, движения).

История

Разработка libinput началась в 2014 году в рамках проекта freedesktop.org, который координирует создание свободных интерфейсов для десктопных сред Linux. Основной причиной создания библиотеки стала необходимость в современной, модульной и хорошо поддерживаемой замене для устаревших компонентов стека ввода X.Org (в частности, драйверов evdev и synaptics). С ростом популярности протокола Wayland, который не поддерживал старые методы обработки ввода, возникла потребность в библиотеке, способной работать с новыми архитектурами. Первый стабильный релиз libinput (версия 0.8) был выпущен в 2015 году. С тех пор библиотека стала стандартом де-факто для обработки ввода в большинстве современных дистрибутивов Linux, включая Fedora, Ubuntu, Debian, openSUSE и Arch Linux.

Архитектура и принцип работы

Libinput работает на уровне пользовательского пространства (userspace), получая сырые события от драйверов ядра Linux. Она не взаимодействует напрямую с оборудованием, а полагается на подсистему ввода ядра (input), которая через файлы устройств /dev/input/event* передаёт информацию о нажатиях клавиш, движениях мыши, касаниях тачпада и других действиях.

Основные этапы обработки события в libinput:

  1. Сбор данных: Библиотека открывает файл устройства и считывает из него структуры input_event.
  2. Фильтрация и нормализация: Libinput классифицирует каждое событие по типу (клавиатура, мышь, тачпад, сенсорный экран и т.д.), отбрасывает шумовые или некорректные данные (например, случайные касания ладонью на тачпаде).
  3. Анализ и интерпретация: На основе набора сырых событий библиотека формирует высокоуровневые логические события. Например, из серии движений пальца по тачпаду она создаёт событие «перемещение указателя», а из жеста двумя пальцами — событие «прокрутка».
  4. Передача приложению: Обработанные события передаются через API libinput графическому серверу (например, Weston, Mutter, KWin) или напрямую приложению, которое их обрабатывает.

Поддерживаемые устройства и функции

Libinput поддерживает широкий спектр устройств ввода, каждому из которых предоставляет специализированную обработку.

Мыши

Тачпады

Клавиатуры

Сенсорные экраны

Прочие устройства

Интерфейс и конфигурация

Libinput предоставляет два основных способа взаимодействия:

  1. Библиотечный API (C API): Используется разработчиками для интеграции libinput в свои программы. Основные функции включают libinput_new_context(), libinput_path_add_device(), libinput_dispatch(), libinput_event_get_type().
  2. Инструмент командной строки libinput: Позволяет пользователям и администраторам диагностировать и настраивать устройства ввода без написания кода. Ключевые команды:

Конфигурация libinput осуществляется через файлы правил udev, переменные окружения и, чаще всего, через настройки графической среды (например, GNOME Settings, KDE System Settings). Пользовательские параметры (скорость курсора, чувствительность тачпада, включение/отключение тап-клика) обычно задаются через интерфейс десктопного окружения, которое, в свою очередь, передаёт их в libinput.

Преимущества и недостатки

Преимущества

Недостатки

Применение

Libinput используется практически во всех современных дистрибутивах Linux, которые перешли на Wayland или используют X.Org с новыми версиями графических библиотек. Она является стандартным компонентом в таких средах, как GNOME, KDE Plasma 5 и 6, Sway, i3 (через XWayland) и других. Библиотека также применяется во встраиваемых системах, где требуется обработка ввода от сенсорных экранов и кнопок.

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →