gpm - un utilitaire de copier-coller et un serveur de souris pour les consoles virtuelles
SYNTAXE
gpm [ options ]
DESCRIPTION
Ce paquet tente d'être un serveur de souris utile pour les applications fonctionnant sur la console Linux. Il est basé sur le paquet "selection", et une partie de son code provient de "selection" lui-même. Ce paquet est destiné à remplacer "selection" en tant que mécanisme de copier-coller ; il fournit également des fonctionnalités supplémentaires. Le paquet "selection" offrait la première implémentation de copier-coller pour Linux utilisant deux boutons de souris, et le tampon de copier-coller est toujours appelé "tampon de sélection" ou simplement "sélection" dans ce document. Les informations ci-dessous sont extraites du fichier texinfo, qui est la source d'information préférée.
L'exécutable `gpm' est censé fonctionner comme un démon (par conséquent, `gpmd' serait un meilleur nom pour celui-ci). Cette section est destinée à décrire les options de ligne de commande pour `gpm', tandis que ses internes sont décrits dans la section suivante.
En raison des restrictions dans l'appel système `ioctl(TIOCLINUX)', `gpm' doit être exécuté par l'utilisateur root. Ces restrictions ont été ajoutées dans les noyaux 1.1 pour corriger une faille de sécurité liée à selection et à la capture d'écran.
Le serveur peut être configuré pour correspondre aux goûts de l'utilisateur, et toute application utilisant la souris héritera de l'attitude du serveur. À partir de la version 1.02 jusqu'à la 1.19.2, il était possible pour tout utilisateur connecté à la console système de modifier le comportement de la souris à l'aide de l'option -q. Ce n'est plus possible pour des raisons de sécurité.
À partir de la version 0.97, le programme serveur se met en arrière-plan. Pour tuer `gpm', vous pouvez simplement le réinvoquer
avec l'option de ligne de commande -k, bien que killall gpm puisse être un meilleur choix.
COMMANDES SPÉCIALES
La version 1.10 ajoute la possibilité d'exécuter des commandes spéciales dans certaines circonstances. Les commandes spéciales par défaut consistent à redémarrer et à arrêter le système, mais l'utilisateur peut spécifier ses propres préférences. La possibilité d'invoquer des commandes à l'aide de la souris est très pratique pour les programmeurs, car elle permet de lancer un arrêt propre lorsque le clavier est verrouillé et qu'aucun réseau n'est disponible pour restaurer le système à un état sain.
Les commandes spéciales sont activées en cliquant trois fois sur les boutons gauche et droit - un événement peu probable lors d'une utilisation normale de la souris. La façon la plus simple de cliquer trois fois est de maintenir enfoncé l'un des boutons et de cliquer trois fois sur l'autre. Lorsque le traitement spécial est activé, un message apparaît sur la console (et le haut-parleur émet deux bips si vous en avez un) ; si l'utilisateur relâche tous les boutons et appuie à nouveau sur l'un d'eux dans les trois secondes, la commande spéciale correspondant au bouton est exécutée.
Les commandes spéciales par défaut sont :
bouton gauche
Redémarre le système en envoyant un signal au processus init.
bouton du milieu (si présent)
Exécute /sbin/shutdown -h now.
bouton droit
Exécute /sbin/shutdown -r now.
L'option 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'est-à-dire, spécifiez un argument vide). Pour spécifier vos propres commandes, utilisez une liste séparée par des deux-points pour spécifier les commandes associées aux boutons gauche, du milieu et droit. 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 prise en charge, en plus de l'exécution de commandes externes, car parfois des bogues graves empêchent le système de créer de nouveaux processus ; dans ces cas rares, le programmeur doit être en mesure d'arrêter le système de toute façon, et tuer le processus init à partir d'un processus en cours d'exécution est le seul moyen d'y parvenir.
Par exemple, -S ":telinit 1:/sbin/halt" associe la terminaison du processus init au bouton gauche, le passage en mode utilisateur unique au bouton du milieu et l'arrêt du système au bouton droit.
Les administrateurs système doivent évidemment faire attention aux commandes spéciales, car gpm s'exécute avec des privilèges d'administrateur. Les commandes spéciales conviennent mieux aux ordinateurs dont la souris ne peut être physiquement accessible que par des personnes de confiance.
OPTIONS DE LA LIGNE DE COMMANDE
Les options de ligne de commande disponibles sont les suivantes :
-a accel
Définit la valeur d'accélération utilisée lorsqu'un seul événement de mouvement est plus long que delta (voir -d).
-A[limite]
Démarre avec la copie-coller par sélection désactivée. Ceci est destiné à être une mesure de sécurité ; une attaque plausible sur un système consiste à insérer une commande shell malveillante dans le tampon de sélection (rm -rf /) en incluant le caractère de fin de ligne, puis tout ce que la victime a à faire est de cliquer sur le bouton de la souris du milieu... À partir de la version 1.17.2, cela a évolué en un mécanisme de vieillissement plus général ; le démon gpm peut désactiver (vieillir) automatiquement la copie-coller par sélection après une période d'inactivité. Pour activer ce mode, il suffit de fournir le paramètre optionnel limite (sans espace !) qui est interprété comme le temps en secondes pendant lequel une sélection est considérée comme valide et peut être collée. À partir de la version 1.15.7, un programme trivial appelé disable-paste est fourni. Ce qui suit constitue un bon ajout à /etc/profile si vous autorisez plusieurs utilisateurs à travailler sur votre console.
```
case $( /usr/bin/tty ) in
/dev/tty[0-9]*) /usr/bin/disable-paste ;;
esac
```
-b baud
Définit le débit en bauds.
-B sequence
Définit la séquence des boutons. 123 est la séquence normale, 321 peut être utilisée par les gauchers, et 132 peut être utile avec les souris à deux boutons (en particulier dans Emacs). Toutes les permutations de boutons sont autorisées.
-d delta
Définit la valeur delta. Lorsqu'un seul événement de mouvement est plus long que delta, accel est utilisé comme facteur multiplicateur. (Doit être 2 ou plus).
-D Ne pas entrer automatiquement en mode arrière-plan au démarrage, et afficher les messages dans le flux d’erreur standard, et non via le mécanisme syslog. Ceci est utile pour le débogage ; dans les versions précédentes, cela était fait avec une option de compilation.
-g nombre
Avec les périphériques glidepoint, émulez le bouton spécifié en effectuant une pression. Le nombre doit être « 1 », « 2 » ou « 3 », et fait référence au numéro du bouton avant que la remappage des boutons avec l’option `-B` ne soit effectué. Cette option s’applique aux décodages mman et ps2. Aucun bouton n’est émulé par défaut, car la pression ps2 est incompatible avec certaines souris ps2 normales.
-h Affiche un résumé des options de ligne de commande.
-i intervalle
Définissez l’intervalle à utiliser comme limite de temps supérieure pour les clics multiples. Si l’intervalle entre les événements de relâchement et d’appui sur le bouton est inférieur à la limite, la pression est considérée comme un double ou un triple clic. Le temps est exprimé en millisecondes.
-k Tue un gpm en cours d’exécution. Ceci peut être utilisé par les utilisateurs de busmouse pour tuer gpm avant de lancer X (à moins qu’ils n’utilisent l’option `-R` ou que la limitation d’ouverture unique du noyau ne soit supprimée).
-l jeu de caractères
Choisissez la table de correspondance « inword() ». L’argument jeu de caractères est une liste de caractères. « - » est utilisé pour spécifier une plage et « \ » est utilisé pour échapper le caractère suivant ou pour fournir des codes octaux. Seuls les caractères visibles peuvent apparaître dans le jeu de caractères, car les caractères de contrôle ne peuvent pas apparaître dans la mémoire vidéo en mode texte, d’où la sélection est tronquée.
-m nom_fichier
Choisissez le fichier de souris à ouvrir. Doit être avant -t et -o.
-M Active le mode multiple. Le démon lira deux périphériques de souris différents. Toute option suivante se référera au deuxième périphérique, tandis que toute option précédente sera utilisée pour le premier périphérique. Cette option force automatiquement l’option de répétition (« -R »).
-o liste_d_options_supplémentaires
Cette option fonctionne de la même manière que 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 les lignes de modem, de manière compatible avec les versions antérieures de gpm ; notez cependant que l’utilisation de -o dtr associée à des types de souris non « plain-serial » peut maintenant générer une erreur. Et au fait, utilisez -o après -m et après -t.
-p Force l’affichage du pointeur pendant la sélection. C’est le comportement de « selection-1.7 », mais c’est parfois déroutant. Par défaut, le pointeur n’est pas affiché, ce qui peut également être déroutant.
-r nombre
Définissez la réactivité en pourcentage du mouvement (de 1 à 100, par défaut 10). Un nombre inférieur peut être utilisé pour ralentir le mouvement du curseur, cela ne peut pas être utilisé pour accélérer le mouvement de la souris, voir « -a ».
-R[nom]
Fait que « gpm » agit comme un répéteur : toutes les données de souris reçues en mode graphique seront produites sur le fifo `/dev/gpmdata` dans le nom de protocole, donné sous forme d’argument optionnel (sans espace entre les deux !). En principe, vous pouvez utiliser les mêmes noms que pour l’option « -t », bien que la répétition dans certains protocoles peut ne pas être implémentée pour le 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 le nom est omis, il est par défaut « msc ». En utilisant gpm en mode répéteur, vous pouvez configurer le serveur X pour utiliser son fifo comme périphérique de souris. Cette option est utile pour les propriétaires de busmouse afin de contourner la limitation d’ouverture unique. C’est également un moyen facile de gérer ces souris à double mode stupides qui vous obligent à maintenir le bouton central enfoncé pendant que vous changez de mode vidéo. L’option est forcée par l’option « -M ».
-s nombre
Définit la fréquence d'échantillonnage pour le périphérique de la souris.
-S commandes
Active le traitement des commandes spéciales et spécifie éventuellement des commandes personnalisées sous forme de liste séparée par des deux-points. Voir ci-dessus pour une description détaillée des commandes spéciales.
-t nom
Définit le type de souris. Utilisez \`-t help' pour obtenir une liste des types autorisés. Utilisez -t après avoir sélectionné le périphérique de la souris avec -m.
-v Affiche les informations de version et quitte.
-2 Force l'utilisation de deux boutons. Cela signifie que le bouton central, s'il y en a un, sera traité comme le bouton droit.
-3 Force l'utilisation de trois boutons. Par défaut, la souris est considérée comme ayant deux boutons, jusqu'à ce que le bouton central soit pressé. Si elle a trois boutons, le bouton droit est utilisé pour étendre la sélection et le bouton central est utilisé pour la coller. Attention : si vous utilisez l'option \`-3' avec une souris à deux boutons, vous ne pourrez pas coller la sélection.
FONCTIONNEMENT
Pour sélectionner du texte, appuyez sur le bouton gauche de la souris et faites-la glisser. Pour coller du texte dans la même console ou dans une autre, appuyez sur le bouton central. Le bouton droit est utilisé pour étendre la sélection, comme dans xterm.
Les souris à deux boutons utilisent le bouton droit pour coller le texte.
Les clics doubles et triples sélectionnent des mots entiers et des lignes entières. L'utilisation de l'option `-p' est recommandée pour un meilleur retour visuel.
Si un espace à la fin du contenu d'une ligne est mis en surbrillance, et s'il n'y a pas d'autre texte sur le reste de la ligne, le reste de la ligne sera automatiquement sélectionné. Si plusieurs lignes sont sélectionnées, les espaces en surbrillance à la fin de chaque ligne seront supprimés du tampon de sélection.
Toute sortie sur la console virtuelle qui contient la sélection effacera la sélection mise en surbrillance de l'écran, afin de maintenir l'intégrité de l'affichage, bien que le contenu du tampon de collage ne soit pas affecté.
Le mécanisme de sélection est désactivé si la console virtuelle qui le contrôle passe en mode graphique, par exemple lors de l'exécution de X11, et il est réactivé lorsque le mode texte est repris. (Mais voir la section BUGS ci-dessous.)
BUGS
Le serveur `gpm' peut avoir des problèmes d'interaction avec X : si votre souris est un périphérique à ouverture unique (c'est-à-dire une souris de bus), vous devez arrêter `gpm' avant de démarrer X, ou utiliser l'option `-R' (voir ci-dessus). Pour arrêter `gpm', il suffit d'appeler `gpm -k'. Ce problème ne s'applique pas aux souris série.
Deux instances de gpm ne peuvent pas fonctionner sur le même système. Si vous avez deux souris, utilisez l'option `-M' (voir ci-dessus).
Tant que la console actuelle est en mode graphique, gpm se met en veille jusqu'à ce que le mode texte soit rétabli (sauf si l'option -R est utilisée). Par conséquent, il ne répondra pas aux clients. De toute façon, il est peu probable que des clients avides de souris apparaissent dans des consoles masquées.
Les clients fournis avec gpm ne sont pas mis à jour, il existe donc des risques de sécurité potentiels lors de leur utilisation.
AUTEURS
Andrew Haylett <_> (le code de sélection original) Ian Zimmerman <_> (ancien mainteneur) Alessandro Rubini <_> (ancien mainteneur (continue d'aider beaucoup)) Nico Schottelius <_> (mainteneur)
De nombreux contributeurs, tant pour la sélection que pour gpm.
MAINTENEURS
Le mainteneur actuel est Nico Schottelius. Mais sans l'aide d'Alessandro Rubini et de la liste de diffusion, il me serait impossible de maintenir gpm. La liste de diffusion de développement peut être contactée à l'adresse _. Plus d'informations sur la liste se trouvent dans la partie du fichier README de la distribution source de gpm.
FICHIERS
/var/run/gpm.pid L'ID du processus gpm en cours d'exécution
/dev/gpmctl Une socket de contrôle pour les clients
/dev/gpmdata Le tube d'écriture d'un démon de répétition (`-R`).
VOIR AUSSI
gpm-types(7) Description des types de pointeurs actuellement pris en charge par gpm
Le fichier info concernant gpm, qui fournit des informations plus complètes et explique comment écrire un client gpm.