Aperçu technique - uinput
Pré-requis
Il est nécessaire de disposer d'un noyau 2.6 avec evdev, uinput et libusb >= 1.0 pour la compilation et l'exécution. Et, bien sûr, du support USB, avec une configuration minimum pour le noyau comme suit :
Device Drivers ---> USB support ---> <*> Support for Host-side USB --- USB Host Controller Drivers < > EHCI HCD (USB 2.0) support <*> OHCI HCD support <*> UHCI HCD (most Intel and VIA) support
Chargement du module uinput
Si uinput est construit en tant que module, il faut le charger avant de lancer l'application, en tant que superutilisateur :
# modprobe uinput
Assurez-vous de charger automatiquement ce module au démarrage si votre distribution ne le fait pas par défaut, la méthode dépend de votre distribution (avec gentoo : /etc/modules.autoload.d/kernel-2.6 ou /etc/conf.d/modules en baselayout-2).
Permissions pour uinput
Le dispositif /dev/input/uinput nécessite le droit en écriture pour l'utilisateur exécutant l'application, vous pouvez taper en tant que superutilisateur :
# chmod 666 /dev/input/uinput
si les permissions sont insuffisantes. Une solution meilleure et automatisée est d'utiliser des règles udev, un exemple est fourni avec cette application. Copiez ce fichier dans /etc/udev/rules.d/ (ou un autre répertoire en fonction de votre distribution) et rechargez les règles udev (ou rebootez). L'exemple fourni est basé sur la création d'un groupe spécifique uinput auquel seront assignés les utilisateurs concernés, vous pouvez définir un autre groupe si vous le souhaitez. Contenu du fichier des règles :
KERNEL=="uinput", GROUP:="uinput", MODE:="0660"
Notez que pour certaines distributions (comme par exemple Ubuntu Maverick), uinput est construit dans le noyau (donc pas de chargement de module) et avec un dispositif par défaut /dev/uinput, mais les règles udev fournies fonctionneront de toute manière.
Permissions pour le fichier pid
Au lancement, chmfp crée un fichier pid pour éviter des instances simultanées. Ce fichier pid est stocké dans le répertoire /var/tmp/ par défaut, vous pouvez changer cela en éditant chmfp.h avant compilation. Ce répertoire doit être accessible en écriture et lecture à l'utilisateur exécutant l'application.