libinput
Mais informações
- Criado por
- Jonas Ådahl, Peter Hutterer
- Ano
- Tipo
- Biblioteca
- Licença
- MIT
- Código-fonte
- gitlab.freedesktop.org/libinput/libinput
A biblioteca que interpreta mouses, touchpads, telas sensíveis ao toque e mesas digitalizadoras tanto para compositores Wayland quanto para o servidor X — substituindo um driver por tipo de dispositivo por um único conjunto de regras, para alegria de todos, menos de quem gostava dos botões de ajuste do synaptics.
No X.Org, a lógica de entrada ficava nos drivers: evdev para mouses e teclados, synaptics para touchpads, wacom para mesas, cada um com a sua noção de aceleração, rolagem e detecção de toque. Os compositores Wayland teriam que reescrever tudo isso, cada um por conta própria. Jonas Ådahl separou o código de entrada do Weston numa biblioteca independente em 2013, Peter Hutterer, da Red Hat, assumiu a manutenção em 2014 e o libinput 1.0 saiu em agosto de 2015. Ele lê os dispositivos evdev do kernel e entrega eventos já interpretados: aceleração do ponteiro, rolagem com dois dedos, gestos, tocar para clicar, rejeição de palma, emulação de botões e um touchpad que se cala enquanto você digita.
Weston, Mutter, KWin, wlroots e Mir o usam diretamente e, por meio do xf86-input-libinput de 2015, o servidor X também, o que permitiu às distribuições aposentar o synaptics. A filosofia é que a biblioteca decide o que faz sentido e expõe poucos botões — "o libinput não faz isso" virou a resposta padrão a pedidos pela 47ª configuração, e curvas de aceleração personalizadas só chegaram em 2023. As esquisitices dos dispositivos vão para um banco de dados de quirks, e o libinput debug-events é a ferramenta padrão quando um touchpad se comporta mal. O mesmo código que decide como o cursor se move no GNOME agora faz isso no Sway, o que é mais do que o X jamais conseguiu.