gpm: una utilidad de copiar y pegar y un servidor de ratón para consolas virtuales
SINTAXIS
gpm [opciones]
DESCRIPCIÓN
Este paquete intenta ser un servidor de ratón útil para aplicaciones que se ejecutan en la consola de Linux. Se basa en el paquete "selection", y parte de su código proviene del propio "selection". Este paquete está diseñado como un reemplazo de "selection" como mecanismo de copiar y pegar; también proporciona instalaciones adicionales. El paquete "selection" ofreció la primera implementación de copiar y pegar para Linux utilizando dos botones del ratón, y el búfer de corte todavía se llama "búfer de selección" o simplemente "selección" a lo largo de este documento. La información a continuación se extrae del archivo texinfo, que es la fuente de información preferida.
El ejecutable `gpm' está diseñado para funcionar como un demonio (por lo tanto, `gpmd' sería un mejor nombre para él). Esta sección tiene como objetivo describir las opciones de línea de comandos para `gpm', mientras que su funcionamiento interno se describe en la siguiente sección.
Debido a las restricciones en la llamada al sistema `ioctl(TIOCLINUX)', `gpm' debe ser ejecutado por el superusuario. Las restricciones se agregaron en los últimos núcleos 1.1 para solucionar un problema de seguridad relacionado con selection y el volcado de pantalla.
El servidor se puede configurar para que coincida con los gustos del usuario, y cualquier aplicación que utilice el ratón heredará la actitud del servidor. Desde la versión 1.02 hasta la 1.19.2, era posible que cualquier usuario conectado a la consola del sistema cambiara la sensación del ratón utilizando la opción -q. Esto ya no es posible por razones de seguridad.
A partir de la versión 0.97, el programa del servidor se coloca en segundo plano. Para matar `gpm', simplemente puede volver a invocarlo con el indicador -k, aunque `killall gpm' puede ser una mejor opción.
COMANDOS ESPECIALES
La versión 1.10 agrega la capacidad de ejecutar comandos especiales en determinadas circunstancias. Los comandos especiales por defecto reinician y detienen el sistema, pero el usuario puede especificar su propia elección. La capacidad de invocar comandos utilizando el ratón es útil para los programadores, ya que permite realizar un apagado limpio cuando el teclado está bloqueado y no hay red disponible para restaurar el sistema a un estado normal.
Los comandos especiales se activan haciendo clic tres veces en los botones izquierdo y derecho; un evento poco probable durante el uso normal del ratón. La forma más fácil de hacer clic tres veces es presionar uno de los botones y hacer clic tres veces en el otro. Cuando se activa el procesamiento especial, aparece un mensaje en la consola (y el altavoz emite un pitido dos veces, si tiene un altavoz); si el usuario suelta todos los botones y presiona uno de ellos nuevamente dentro de tres segundos, entonces se ejecuta el comando especial correspondiente al botón.
Los comandos especiales predeterminados son:
botón izquierdo
Reinicia el sistema enviando una señal al proceso init
botón central (si existe)
Ejecuta /sbin/shutdown -h now
botón derecho
Ejecuta /sbin/shutdown -r now
La opción de línea de comandos -S habilita el procesamiento de comandos especiales y permite cambiar los tres comandos especiales.
Para aceptar los comandos predeterminados, use -S "" (es decir, especifique un argumento vacío).
Para especificar sus propios comandos, use una lista separada por dos puntos para especificar los comandos asociados al
botón izquierdo, central y derecho. Si alguno de los comandos está vacío, se interpreta como "enviar una señal al proceso init". Esta operación particular se admite, además de ejecutar comandos externos, porque a veces errores graves impiden que el sistema realice un fork; en estos
casos poco comunes, el programador debe poder apagar el sistema de todos modos, y matar el proceso init desde un
proceso en ejecución es la única forma de hacerlo.
Como ejemplo, '-S ":telinit 1:/sbin/halt"', asocia matar el proceso init al botón izquierdo, pasar a modo de usuario único al botón central y apagar el sistema al botón derecho.
Los administradores del sistema deben tener cuidado con los comandos especiales, ya que gpm se ejecuta con permisos de superusuario. Los comandos especiales son más adecuados para computadoras cuyo mouse solo puede ser accedido físicamente por personas de confianza.
OPCIONES DE LA LÍNEA DE COMANDOS
Las opciones de línea de comandos disponibles son las siguientes:
-a accel
Establece el valor de aceleración que se utiliza cuando un solo evento de movimiento es más largo que delta (vea
-d).
-A[límite]
Inicia con la función de pegar la selección deshabilitada. Esto está pensado como una medida de seguridad; un ataque plausible a un sistema parece ser insertar un comando de shell dañino en el búfer de selección (rm -rf /) incluido el salto de línea final, y luego todo lo que el atacante tiene que hacer es
hacer clic en el botón central del mouse... A partir de la versión 1.17.2, esto se ha desarrollado en un mecanismo de "envejecimiento" más general; el demonio gpm puede deshabilitar (envejece) la función de pegar la selección automáticamente
después de un período de inactividad. Para habilitar este modo, simplemente proporcione el parámetro opcional de límite
(¡sin espacio entre ellos!) que se interpreta como el tiempo en segundos durante el cual se considera válida y pegable una selección. A partir de la versión 1.15.7, se proporciona un programa trivial llamado disable-paste. Lo siguiente es una buena adición a /etc/profile si permite que varios usuarios trabajen en su consola.
`case $( /usr/bin/tty ) in
/dev/tty[0-9]*) /usr/bin/disable-paste ;;
esac`
-b baud
Establece la velocidad de transmisión.
-B secuencia
Establece la secuencia de botones. 123 es la secuencia normal, 321 se puede usar para personas zurdas y 132 puede ser útil con ratones de dos botones (especialmente dentro de Emacs). Todas las permutaciones de botones son permitidas.
-d delta
Establece el valor delta. Cuando un solo evento de movimiento es más largo que delta, se utiliza accel como factor multiplicador. (Debe ser 2 o superior)
-D No iniciar automáticamente el proceso en segundo plano al iniciarse y registrar los mensajes en el flujo de error estándar, no en el mecanismo de syslog. Esto es útil para la depuración; en versiones anteriores, se hacía con una opción de tiempo de compilación.
-g número
Con los dispositivos glidepoint, emula el botón especificado al tocar. El número debe ser '1', '2' o '3', y se refiere al número de botón antes de que se realice el remapeo de botones con '-B'. Esta opción se aplica a la decodificación mman y ps2. No se emula ningún botón de forma predeterminada porque el toque ps2 es incompatible con algunos ratones ps2 normales.
-h Imprime un resumen de las opciones de línea de comandos.
-i intervalo
Establece el intervalo que se utilizará como límite de tiempo superior para múltiples clics. Si el intervalo entre los eventos de liberación y pulsación del botón es menor que el límite, la pulsación se considera un doble o triple clic. El tiempo está en milisegundos.
-k Finaliza un gpm en ejecución. Esto puede ser utilizado por los usuarios de busmouse para finalizar gpm antes de ejecutar X (a menos que utilicen '-R' o se elimine la limitación de un solo proceso del kernel).
-l conjunto-de-caracteres
Elige la tabla de búsqueda de 'inword()'. El argumento conjunto-de-caracteres es una lista de caracteres. Se utiliza '-' para especificar un rango y '\ ' para escapar el siguiente carácter o para proporcionar códigos octales. Solo los caracteres visibles pueden aparecer en el conjunto-de-caracteres porque los caracteres de control no pueden aparecer en la memoria de video en modo de texto, de donde se realiza la selección.
-m nombre-de-archivo
Elige el archivo de ratón que se abrirá. Debe estar antes de -t y -o.
-M Habilita el modo múltiple. El daemon leerá dos dispositivos de ratón diferentes. Cualquier opción posterior se referirá al segundo dispositivo, mientras que cualquier opción anterior se utilizará para el primer dispositivo. Esta opción fuerza automáticamente la opción de repetidor ('-R').
-o lista-de-opciones-adicionales
La opción funciona de forma similar a la opción 'mount'; se utiliza para especificar una lista de 'opciones adicionales' que son específicas de cada tipo de ratón. La lista está separada por comas. Las opciones 'dtr', 'rts' o 'both' se utilizan para la inicialización en serie para activar las líneas de módem, de forma compatible con las versiones anteriores de gpm; tenga en cuenta, sin embargo, que el uso de -o dtr asociado con tipos de ratón no-seriales normales puede generar un error. Y, por cierto, utilice -o después de -m y después de -t.
-p Fuerza a que el puntero sea visible durante la selección. Este es el comportamiento de 'selection-1.7', pero a veces es confuso. Por defecto, el puntero no se muestra, lo que también puede ser confuso.
-r número
Establece la capacidad de respuesta como un porcentaje del movimiento (de 1 a 100, el valor predeterminado es 10). Se puede utilizar un número menor para reducir la velocidad del movimiento del cursor; esto no se puede utilizar para hacer que un ratón se mueva más rápido, consulte '-a'.
-R[nombre]
Hace que 'gpm' actúe como un repetidor: cualquier dato de ratón recibido mientras está en modo gráfico se producirá en el FIFO '/dev/gpmdata' en el nombre del protocolo, que se proporciona como un argumento opcional (sin espacio entre ellos). En principio, puede utilizar los mismos nombres que para la opción '-t', aunque la repetición en algunos protocolos puede no estar implementada por un tiempo. Además, puede especificar 'raw' como nombre, para repetir los datos del ratón byte por byte, sin ninguna traducción de protocolo. Si se omite el nombre, el valor predeterminado es 'msc'. Al utilizar gpm en modo repetidor, puede configurar el servidor X para que utilice su FIFO como dispositivo de ratón. Esta opción es útil para los propietarios de ratones bus para anular la limitación de un solo proceso. También es una forma fácil de administrar esos estúpidos ratones de doble modo que le obligan a mantener presionado el botón central mientras cambia el modo de video. La opción se fuerza con la opción '-M'.
-s número
Establece la frecuencia de muestreo para el dispositivo del ratón.
-S comandos
Habilita el procesamiento de comandos especiales y, opcionalmente, especifica comandos personalizados como una lista separada por dos puntos. Consulte arriba para obtener una descripción detallada de los comandos especiales.
-t nombre
Establece el tipo de ratón. Utilice `-t help` para obtener una lista de los tipos permitidos. Utilice -t después de haber seleccionado el dispositivo del ratón con -m.
-v Imprime la información de la versión y sale.
-2 Fuerza dos botones. Esto significa que el botón central, si existe, se tratará como si fuera el botón derecho.
-3 Fuerza tres botones. Por defecto, el ratón se considera que tiene dos botones, hasta que se presiona el botón central. Si hay tres botones, el botón derecho se utiliza para extender la selección, y el botón central se utiliza para pegarla. Tenga cuidado: si utiliza la opción `-3` con un ratón de dos botones, no podrá pegar la selección.
OPERACIÓN
Para seleccionar texto, presione el botón izquierdo del ratón y arrástrelo. Para pegar texto en la misma o en otra consola, presione el botón central. El botón derecho se utiliza para extender la selección, como en xterm.
Los ratones de dos botones utilizan el botón derecho para pegar texto.
Los clics dobles y triples seleccionan palabras enteras y líneas enteras. Se recomienda el uso de la opción -p para obtener la mejor retroalimentación visual.
Si hay un espacio final después del contenido de una línea que está resaltado, y si no hay otro texto en el resto de la línea, el resto de la línea se seleccionará automáticamente. Si se seleccionan varias líneas, los espacios finales resaltados en cada línea se eliminarán del búfer de selección.
Cualquier salida en la consola virtual que contiene la selección borrará la selección resaltada de la pantalla, para mantener la integridad de la pantalla, aunque el contenido del búfer de pegado no se verá afectado.
El mecanismo de selección se desactiva si la consola virtual que lo controla se coloca en modo gráfico, por ejemplo, cuando se ejecuta X11, y se vuelve a activar cuando se reanuda el modo de texto. (Pero consulte la sección de BUGS a continuación).
ERRORES
El servidor gpm puede tener problemas para interactuar con X: si su ratón es un dispositivo de un solo puerto (es decir, un ratón de bus), debe cerrar gpm antes de iniciar X, o utilizar la opción -R (consulte arriba). Para cerrar gpm, simplemente invoque gpm -k. Este problema no se aplica a los ratones seriales.
No se pueden ejecutar dos instancias de gpm en el mismo sistema. Si tiene dos ratones, utilice la opción -M (consulte arriba).
Mientras la consola actual esté en modo gráfico, gpm se suspende hasta que vuelva al modo texto (a menos que se utilice -R). Por lo tanto, no responderá a los clientes. De todos modos, es poco probable que aparezcan clientes que necesiten el ratón en consolas ocultas.
Los clientes que se envían con gpm no están actualizados, por lo que existen posibles riesgos de seguridad al utilizarlos.
AUTORES
Andrew Haylett <_> (el código de selección original) Ian Zimmerman <_> (antiguo mantenedor) Alessandro Rubini <_> (antiguo mantenedor (sigue ayudando mucho)) Nico Schottelius <_> (mantenedor)
Muchos, muchos colaboradores, tanto en la selección como en gpm.
MANTENEDORES
El mantenedor actual es Nico Schottelius. Pero sin la ayuda de Alessandro Rubini y la lista de correo, sería imposible para mí mantener gpm. Se puede contactar con la lista de correo de desarrollo en _. Hay más información sobre la lista en la parte del archivo README de la distribución de código fuente de gpm.
ARCHIVOS
/var/run/gpm.pid El PID del gpm en ejecución
/dev/gpmctl Un socket de control para los clientes
/dev/gpmdata El FIFO en el que escribe un daemon repetidor (`-R`).
VER TAMBIÉN
gpm-types(7) Descripción de los tipos de puntero actuales admitidos por gpm
El archivo de información sobre gpm, que proporciona información más completa y explica cómo escribir un cliente de gpm.