• [^] # Re: différence avec libinput?

    Posté par (site web personnel) . En réponse au journal Simuler un clic avec libevdev et uinput. Évalué à 10.

    À première vue, libinput est une couche au dessus de evdev (en tout cas l'interface noyau, peut-être de la bibliothèque libevdev). Elle s'appuie sur tout une base de données de périphériques pour rectifier les quirks de chacun d'eux. Elle fait aussi un pré-traitement pour générer des évènements auxquels on s'attend, par exemple générer un clic droit quand on tape avec deux doigts sur un touchpad, générer des déplacements relatifs en gérant l'accélération, des évènements de défilement quand on glisse deux doigts vers le haut/bas, etc: elle fournit une interprétation « lissée » des évènements en provenance des périphériques d’entrée. Autre exemple : elle va couper les évènements d’un touchpad à l'intérieur d'un ordi portable quand son écran est rabattu, parce que sinon ça fait des évènements parasites sur certains modèles. Ce genre de détails auxquels on pourrait ne pas penser à première vue.

    À priori, c'est un peu trop haut niveau pour mon cas d'utilisation et ça se serait probablement mis en travers de mon chemin : j'avais vraiment besoin de récupérer les évènements tels quels sans post traitement logiciel particulier. Par contre, si j'avais eu besoin d'une interprétation de ces évènements, là libinput aurait été intéressante pour moi.

    Je doute également que libinput permet de créer des périphériques virtuels, à moins qu’elle fournisse un passe-droit vers libevdev pour ça, mais ça je n'ai pas vérifié, c'est peut-être possible et si quelqu'un a l'info, n’hésitez pas à compléter.

    Le dépôt du projet libinput : https://gitlab.freedesktop.org/libinput/libinput

    libinput is a library that provides a full input stack for display servers and other applications that need to handle input devices provided by the kernel.
    libinput provides device detection, event handling and abstraction to
    minimize the amount of custom input code the user of libinput needs to
    provide the common set of functionality that users expect. Input event
    processing includes scaling touch coordinates, generating
    relative pointer events from touchpads, pointer acceleration, etc.

    Traduction :

    libinput est une bibliothèque qui fournit une pile d'entrée pour les serveurs d'affichage et autres applications qui ont besoin de gérer les périphériques d’entrée fournis par le noyau.
    libinput fournit de la détection de périphérique, de la gestion d'évènements et de l'abstraction pour minimiser la quantité de code spécifique que l'utilisateur de libinput a besoin pour fournir une un socle de fonctionnalités communes auxquelles l'utilisateur s'attend. Le traitement des évènements inclut la mise à l'échelle des coordonnées tactiles, la génération d'évènements relatifs sur les touchpads, l'accélaration du pointeur, etc.

    Pour comparaison, on peut trouver le projet libevdev ici : https://gitlab.freedesktop.org/libevdev/libevdev

    Les deux projets sont vivants et maintenus par le même ensemble de personnes d'ailleurs.