zion - gpm
Nom
gpm - un utilitaire de copier-coller et un serveur de souris pour les consoles virtuelles
Résumé
gpm [ options ]
Description
Ce paquetage essaie d'être un serveur de souris utile aux applications tournant sur la console Linux. Il est basé sur le paquetage « selection », et une partie de son code provient lui-même de selection. Ce paquetage est conçu pour remplacer « selection » en tant que mécanisme de copier-coller ; il ajoute également des caractéristiques additionnelles. Le paquetage « selection » a offert la première implémentation du copier-coller sous Linux utilisant des souris à deux boutons, et le tampon de copie est toujours appelé le « selection buffer » (tampon de selection) tout au long de ce document. L'information présente ci-dessous est extraite du fichier texinfo, qui est la source d'information préférée.
L'exécutable « gpm » est prévu pour se comporter comme un démon (« gpmd » serait donc un meilleur nom pour lui). Cette section décrit les options de ligne de commandes pour « gpm », alors que son fonctionnement interne est décrit dans la section suivante.
À cause de restrictions de l'appel système « ioctl(TIOCLINUX) », « gpm » doit être lancé par le superutilisateur. Les restrictions ont été ajoutées dans les derniers noyaux 1.1 afin de boucher un trou de sécurité relatif à la sélection et au déchargement de l'écran.
Le serveur peut être configuré pour correspondre aux goûts de l'utilisateur, et n'importe quelle application utilisant la souris héritera du comportement du serveur. À partir de la version 1.02, la sensibilité de la souris peut être reconfigurée par chaque utilisateur se connectant sur la console système. Voyez Invocation du serveur, pour la description de « -q ».
À partir de 0.97, le programme serveur se place lui-même en arrière-plan. Pour tuer « gpm », vous pouvez simplement le réinvoquer avec l'interrupteur de ligne de commandes « -k », bien que « killall gpm » peut être un meilleur choix.
Commandes spÉciales
La version 1.10 ajoute la capacité d'exécuter des commandes spéciales sous certaines circonstances. Les commandes spéciales équivalent par défaut au redémarrage et à l'arrêt du système, mais l'utilisateur peut spécifier ses préférences. La possibilité d'invoquer des commandes en utilisant la souris est pratique pour les programmeurs, car elle permet d'effectuer un arrêt propre quand le clavier est verrouillé et qu'aucun réseau n'est disponible pour restaurer le système dans un état sain.
Les commandes spéciales sont activées en triple-cliquant les boutons gauche et doit -- un événement improbable durant une utilisation normale de la souris. La façon la plus simple de triple-cliquer est d'appuyer sur l'un des boutons, et triple-cliquer sur l'autre. Quand un traitement spécial est activé, un message apparaît sur la console (et le haut-parleur bippe deux fois, si vous en avez un) ; si l'utilisateur relâche tous les boutons et appuie sur l'un d'eux avant trois secondes, alors la commande spéciale correspondant au bouton est exécutée.
Les commandes spéciales par défaut sont :
bouton gauche Redémarrer le système en envoyant un signal au processus init |
bouton du milieu (s'il est présent) Exécuter « /sbin/shutdown -h now » |
bouton droit Exécuter « /sbin/shutdown -r now » |
L'interrupteur de ligne de commande « -S » active le traitement des commandes spéciales, et permet de modifier les trois commandes spéciales. Pour accepter les commandes par défaut, utilisez « -S "" » (c.-à-d., spécifiez un argument vide). Pour spécifier vos propres commandes, utilisez une liste dont les éléments sont séparés entre eux par des signes deux-points pour spécifier les commandes associées aux boutons de gauche, du milieu et de droite. Si l'une des commandes est vide, elle est interprétée comme « envoyer un signal au processus init ». Cette opération particulière est supportée, en plus de l'exécution de commandes externes, car parfois de sales bogues empêchent le système d'effectuer un fork ; dans ce cas de figure rare, le programmeur devrait tout de même avoir la possibilité d'arrêter le système, et tuer init partir d'un processus en cours d'exécution est la seule façon de le faire.
Par exemple, « -S " :telinit 1:/sbin/halt" », associe le meurtre d'init au bouton de gauche, le passage en mode mono-utilisateur à celui du milieu, et l'arrêt du système à celui de droite.
Les administrateurs système devraient évidemment faire attention à certaines commandes spéciales, étant donné que gpm tourne avec les permissions du superutilisateur. Les commandes spéciales conviennent le mieux aux ordinateurs dont la souris peut être accédée uniquement par des personnes de confiance.
Options
Les options de ligne de commandes disponibles sont les suivantes :
-a accel Fixer la valeur d'accélération utilisée quand un événement de mouvement est plus long que delta (voyez « -d »). |
-A [limite] Démarrer en désactivant le collage de sélection. Ceci est prévu comme une mesure de sécurité ; une attaque plausible sur un système pourrait être de placer une commande shell nauséabonde dans le tampon de sélection (« rm -rf / ») incluant le saut de ligne final, et alors tout ce que la victime aurait à faire serait de cliquer sur le bouton du milieu... Depuis la version 1.17.2, cela a été développé en un mécanisme plus général de limite de période de validité ; le démon gpm peut désactiver (rendre obsolète) automatiquement le collage de sélection après une période d'inactivité. Pour activer ce mode, fournissez le paramètre optionnel limite qui est interprété comme étant le temps en secondes pendant lequel une sélection est considérée comme étant valide et collable. À partir de la version 1.15.7, un programme trivial appelé « disable-paste » est fourni pour exécuter « gpm -A -q ». C'est parce que la commande last, comme « gpm -q » en général, a besoin des privilèges de root que « disable-paste » est installé setuid root. Les parties suivantes forment un bon complément à « /etc/profile » si vous permettez à de multiples utilisateurs de travailler sur votre console. |
« case $( /usr/bin/tty ) in /dev/tty[0-9]*) /usr/bin/disable-paste ;; esac'
-b baud Fixer la vitesse en bauds. |
-B séquence Fixer la séquence de boutons. « 123 » est la séquence normale, « 321 » peut être utilisé par les gauchers(ères), et « 132 » peut être utile avec des souris à deux boutons (spécialement dans Emacs). Toutes les permutations des boutons sont permises. |
-d delta Fixer la valeur de delta. Quand un événement de mouvement est plus long que delta, accel est utilisé comme facteur multiplicatif (doit être 2 ou supérieur). |
-D Ne pas entrer directement en opération d'arrière-plan lors du démarrage, et enregistrer les messages dans le flux d'erreur standard, et pas via le mécanisme syslog. C'est utile pour le déboggage ; dans des versions précédentes, c'était effectué via une option de compilation. |
-g nombre Avec les périphérique glidepoint, émuler le bouton spécifié avec du tapotement. nombre doit être « 1 », « 2 », ou « 3 », et se réfère au numéro de bouton avant que la nouvelle correspondance ne soit effectuée avec « -B » ne soit effectué. Cette option s'applique aux décodages mman et ps2. Aucun bouton n'est émulé par défaut car le tapotement ps2 est incompatible avec certaines souris ps2 normales. |
-h Afficher un résumé des options de ligne de commandes. |
-i intervalle Fixer l'intervalle à utiliser comme limite supérieure de temps pour les clics multiples. Si l'intervalle entre les événements button-up (bouton-haut)et button-down (bouton-bas) est plus petit que limite, la pression est considérée comme un double ou un triple clic. Le temps est fourni en millisecondes. |
-k Tuer un gpm en cours d'exécution. Ceci peut être utilisé par les utilisateurs de souris à bus pour tuer gpm avant de lancer X (à moins qu'ils n'utilisent « -R », ou que la limitation d'ouverture unique soit supprimée du noyau). |
-l jeu-caractères Choisir la table de recherche « inword() ». L'argument charset est une liste de caractères. « - » est utilisé pour spécifier un intervalle et « » est utilisé pour protéger le caractère suivant ou pour fournir des codes octaux. Seuls des caractères visibles peuvent apparaître dans jeu-caractères car les caractères de contrôle ne peuvent apparaître dans une mémoire vidéo en mode texte, d'où la sélection est copiée. |
-m nom-fichier Choisir le fichier de souris à ouvrir. Il est de « /dev/mouse » par défaut. |
-M Permettre le mode multiple. Le démon lira deux différents périphériques de souris. Toutes les options ultérieures se référeront au deuxième périphérique, alors que tous les options antérieures seront utilisées pour le premier périphérique. Cette option active automatiquement l'option de répéteur (« -R »). |
-o liste-options-supplémentaires Cette option fonctionne de manière similaire à l'option « -o » de mount ; elle est utilisée pour spécifier une liste d'options supplémentaires qui sont spécifiques à chaque type de souris. La liste est séparée par des virgules. Les options « dtr », « rts » ou « both » sont utilisées par l'initialisation série pour activer un comportement comparables aux lignes d'un modem, de façon compatible avec des versions de gpm plus anciennes ; notez néanmoins que l'utilisation de -o dtr associée à des types de souris série non traditionnels peut générer une erreur. |
-p Force le pointeur à être visible lors d'une sélection. C'est le comportement de « selection-1.7 », mais il est parfois déroutant. Le comportement par défaut est de ne pas montre le pointeur, ce qui peut également être troublant. |
-q Quitter après avoir changé le comportement de la souris. C'est prévu pour permettre aux utilisateurs de changer la sensibilité de la souris (« -a », « -B », « -d », « -i », « -l », « -p », « -r », « -V », « -A ») sans redémarrer le serveur. Puisque cela nécessite des permissions root, les administrateurs système peuvent utiliser les bits « set-uid » pour activer/désactiver une telle possibilité. La modification des paramètres de souris est néanmoins uniquement permise à partir d'une des consoles virtuelles. Les options ne sont transférées qu'à la première souris. |
-r nombre Fixer la réceptivité. Une réceptivité plus élevée est utilisée pour un mouvement du curseur plus rapide. |
-R nom Faire agir « gpm » comme un répéteur : toute donnée de la souris dans le mode graphique sera produite dans la fifo « /dev/gpmdata » avec le protocole nom. En principe, vous pouvez utiliser les mêmes noms que pour l'option « -t », bien que la répétition avec certains protocoles pourrait ne pas être implémentée avant un bon moment. De plus, vous pouvez spécifier « raw » comme nom, pour répéter les données de la souris octet par octet, sans aucune traduction de protocole. Si nom est omis, il vaut « msc » par défaut. En utilisant gpm en mode répéteur, vous pouvez configurer le serveur X pour utiliser sa fifo comme un périphérique de souris. Cette option est utile pour les possesseurs de souris à bus afin d'outrepasser la limitation d'ouverture unique. Elle constitue également un bon moyen de gérer ces souris stupides à deux modes qui vous forcent à garder le bouton du milieu enfoncé lors du changement de mode vidéo. L'option est impliquée par l'option « -M ». |
-s nombre Fixer la vitesse d'échantillonnage pour le périphérique de souris. |
-S commandes Permettre le traitement des commandes spéciales, et optionnellement spécifier des commandes personnalisées sous forme d'une liste séparée par des signes deux-points. Voyez au-dessus pour une description détaillée des commandes spéciales. |
-t nom Fixer le type de souris. Utiliser « -t help » pour obtenir une liste des types autorisés. Depuis la version 1.18.1, la liste montre également quels protocoles sont disponibles en tant que répéteurs (voyez -R au dessus), en les marquant avec une astérisque (« * »). |
-v Afficher une information de version et se terminer. |
-V incrément de verbosité Augmenter ou diminuer le niveau maximal de messages qui seront enregistrés. Ainsi, un argument positif a pour effet de rendre le programme plus bavard. On peut également donner un argument négatif pour faire taire le programme ; néanmoins, notez qu'à cause des règles de getopt(3), un argument négatif doit suivre l'option sans espace intermédiaire (c.-à-d. « -V-1 » mais pas « -V -1 »). L'argument est optionnel et vaut 1 par défaut. Le niveau de verbosité par défaut est 5 (« LOG_NOTICE »). |
-2 Forcer le mode deux boutons. Cela signifie que le bouton du milieu, s'il existe, sera utilisé comme s'il était celui de droite. |
-3 Forcer le mode trois boutons. Par défaut, la souris est supposée disposer de deux boutons, jusqu'à ce que le bouton du milieu soit pressé. S'il y a trois boutons, le bouton droit est utilisé pour étendre la sélection, et celui du milieu pour la coller. Attention : si vous utilisez l'option « -3 » avec une souris à deux boutons, vous ne pourrez pas coller la sélection. |
Opération
Pour sélectionner du texte, appuyez sur le bouton de gauche et traînez la souris. Pour coller du texte dans la même console ou dans une autre, appuyez sur le bouton du milieu. Le bouton droit est utilisé pour étendre la sélection, comme dans une xterm.
Les souris à deux boutons utilisent le bouton de droite pour coller du texte.
Les double et triple clics sélectionnent des mots entiers ou des lignes entières respectivement. L'utilisation de l'option « -p » est recommandée pour un meilleur rendu visuel.
Si un espace de queue présent après le contenu d'une ligne est mis en évidence, et s'il n'y a pas d'autre texte sur le restant de la ligne, cet espace sera sélectionné automatiquement. Si plusieurs lignes sont sélectionnées, les espaces de queue mis en évidence seront supprimés du tampon de sélection.
Toute sortie sur la console virtuelle comprenant la sélection supprimera la sélection mise en évidence de l'écran, pour maintenir l'intégrité de l'affichage, bien que le contenu du tampon de collage n'en soit pas affecté.
Le mécanisme de sélection est désactivé si la console virtuelle de contrôle est placée dans le mode graphique, par exemple lors de l'exécution de X11, et est réactivé quand le mode texte est repris. (Mais voyez la section BOGUES ci-dessous.)
Bugs
Le serveur « gpm » peut avoir des problèmes d'interaction avec votre X : si votre souris est un périphérique à ouverture unique (c.-à-d. une souris à bus), vous devriez tuer « gpm » avant de démarrer X, ou utiliser l'option « -R » (voyez au dessus). Pour tuer gpm, invoquez simplement « gpm -k ». Ce problème ne s'applique pas aux souris série.
Deux instances de gpm ne peuvent tourner sur le même système. Si vous avez deux souris, utilisez l'option « -M (voyez au dessus).
Lorsque la console courante est en mode graphique, « gpm » dort jusqu'au retour du mode texte (à moins que « -R » ne soit utilisé). Il ne répondra donc pas aux clients. De toute façon, il est peu probable que des clients impatients de la souris « crachent » dans des consoles cachées.
Auteurs
.nf Andrew Haylett <ajh@gec-mrc.co.uk> (le code original de selection) Alessandro Rubini <rubini@linux.it> (nouvelles caractéristiques) Ian Zimmerman <itz@speakeasy.org> (co-mainteneur) Beaucoup, beaucoup de contributeurs, à la fois pour selection et pour gpm. .fi
Mainteneurs
Les mainteneurs sont Alessandro Rubini et Ian Zimmerman. La liste de diffusion de développement (et l'arbre CVS) sont hébergés par Prosa Srl, que nous remercions. La liste de diffusion peut être jointe à gpm@prosa.it. Plus d'informations sur la liste et CVS sont présentes dans le fichier README faisant partie de la distribution de gpm.
Fichiers
/dev/mouse Le périphérique de souris par défaut /var/run/gpm.pid Le PID du gpm en cours d'exécution /dev/gpmctl Un socket de contrôle pour les clients /dev/gpmdata Le FIFO dans lequel écrit un démon répéteur (« -R »).
Voir aussi
mev(1) Un client de démonstration pour le démon gpm.
gpm-root(1) Un gestionnaire d'événements de contrôle de la souris. Le fichier info sur gpm, qui donne une information plus complète et explique comment écrire un client gpm.
Traduction
Frédéric Delanoy, 2001.
Poster un commentaire