#!/usr/bin/perl -w use strict; # Script pour charger la disposition Béop et s’assurer que ce soit refait à # chaque connexion de clavier (utile notamment avec un commutateur clavier- # souris-écran) # Ce script est fourni sans aucune garantie. # Vous pouvez l’utiliser selon les termes de la licence GNU GPL version 2 ou # ultérieure de la Free Software Foundation # (http://www.gnu.org/licenses/licenses.html#GPL). # par Laurent Dudоuеt, 2015-06-01 → 2015-06-03 # À FAIRE : trouver un moyen d’arrêter ce script à la fermeture de session # ou à défaut s’assurer qu’il n’en tourne qu’un seul à la fois pour # un même utilisateur. # Commande de chargement de la disposition clavier my @cmde_charge_dispo = ("$ENV{HOME}/bin/beop", @ARGV); system @cmde_charge_dispo and die "Échec du chargement de la diposition clavier\n"; # On monitore les évènements udev (avec stdbuf -oL pour qu’ils ne stagnent pas dans le buffer). open my $monitor, 'stdbuf -oL udevadm monitor --udev |' or die "Impossible de monitorer les évènements udev\n"; while (<$monitor>) { # Si un clavier a été connecté, if (m{^UDEV\s*?\[.+?\]\s+add\s+\S+/input/input\d+/event\d+\s+\(input\)\s*$}) { # on attend un peu pour avoir le dernier mot sleep 1; # et on charge la disposition. system @cmde_charge_dispo and die "Échec du chargement de la diposition clavier\n"; } } close $monitor or warn "Problème avec le monitoring des évènements udev : $!\n";