NOMBRE¶
gpm - una utilidad para cortar y pegar y un servidor de ratón para las
consolas virtuales
SINOPSIS¶
gpm [
opciones ]
DESCRIPCIÓN¶
Este paquete intenta ser un servidor de raton útil para las aplicaciones
que se ejecutan en la consola de Linux. Está basado en el paquete llamado
"selección", y algunas partes de su código provienen de
dicho paquete. Este paquete está pensado para reemplazar el paquete
"selección" como mecanismo de cortar y pegar; además
ofrece mejoras adicionales. El paquete "seleccion" ofrecía una
primera implementación del método de cortar y pegar para Linux
usando dos botones del ratón, así, la memoria intermedia usada al
cortar todavía se sigue denominando buffer de selección o
simplemente "selección" en este documento. La información
contenida en este documento ha sido extraida del fichero de Texinfo, que es la
fuente de información recomendada actualmente.
El ejecutable de gpm actúa como un demonio (así que gpmd sería un
nombre más acertado para él). Esta sección describe las
opciones de la línea de comando de gpm, mientras que los detalles
internos son comentados en la siguiente sección.
Debido a las restricciones impuestas por la llamada a sistema ioctl(TIOCLINUX),
gpm debe ser ejecutado por el superusuario. Dichas restricciones fueron
añadidas a partir de la versión 1.1 del kernel para solucionar un
agujero de seguridad relacionado con la selección y el vaciado de memoria
en pantalla.
El servidor puede ser configurado según las preferencias del usuario, y
cualquier aplicación que utilice el ratón seguirá las
preferencias dictaminadas al servidor. Desde la versión 1.02, el
comportamiento del ratón puede ser reconfigurado por cada usuario que
entre en la consola del sistema. Véase la descripción del
parámetro ``-q''.
Igualmente, desde la versión 0.97, el servidor se pone a si mismo en
segundo plano. Para matar el servidor gpm, simplemente se puede ejecutar con
el parámetro -k, de todas maneras, "killall gpm" puede ser otra
solución.
COMANDOS ESPECIALES¶
La versión 1.10 introduce la capacidad de ejecutar comandos especiales bajo
ciertas circunstancias. Por defecto, estos comandos especiales son rebotar y
parar el sistema, pero el usuario puede especificar cualquier otro comando. La
posibilidad de invocar comandos usando el ratón es muy útil para
programadores, ya que permite rebotar o parar el sistema de manera ordenada
cuando el teclado está bloqueado y no hay red disponible para devolver el
sistema a un estado consistente.
Los comandos especiales son ejecutados haciendo un triple clic sobre los botones
izquierdo y derecho a la vez (un evento poco probable durante el uso normal
del ratón). La manera más fácil de realizar un triple clic es
pulsar uno de los dos botones y hacer un triple clic sobre el otro. Cuando se
ejecuta esta acción, se pasa a un modo de trabajo especial, un mensaje
aparece en la consola y el altavoz del sistema emite dos pitidos (si se tiene
altavoz); si el usuario suelta todos los botones y pulsa otra vez sobre uno de
ellos antes de tres segundos, entonces el comando especial asociado al
botón es ejecutado.
Los comandos especiales ejecutados por defecto son:
- botón izquierdo:
- Rebotar el sistema mediante el envío de una señal
al proceso init
- botón central (si existe):
- Ejecutar `/sbin/shutdown -h now'
- botón derecho:
- Ejecutar `/sbin/shutdown -r now'
El parámetro -S de la línea de comandos habilita los comandos
especiales y permite modificar los tres especificados por defecto. Para usar
los comandos especiales propuestos por defecto, usar `-S ""' (es
decir, especificar un argumento vacío a -S). Para especificar otros
comandos, usar una lista separada por el carácter dos puntos (:) para
especificar los comandos asociados a los botones izquierdo, central y derecho
respectivamente. Si alguno de los comandos está vacío, será
interpretado como `enviar un signal al proceso init'. En vez de ejecutar
comandos externos, este comportamiento tan particular está soportado por
que algunas situaciones extrañas pueden llevar al sistema a un estado tal
que sea imposible ejecutar más programas mediante la llamada a sistema
fork(); ante esta improbable situación, el usuario será capaz de
apagar el sistema de manera ordenada. Matar el proceso init desde un proceso
que se esté ejecutando es la única manera de lograrlo.
Como ejemplo, `-S ":telinit 1:/sbin/halt"', asocia el envío de la
señal para matar al proceso init al botón izquierdo, pasar a modo
monousuario al botón central, y parar el sistema al botón derecho.
Evidentemente, los administradores del sistema tendrán que ir con cuidado
con los comandos especiales, ya que gpm se ejecuta con los permisos del
superusuario. Los comandos especiales están pensados para ordenadores
donde el ratón está disponible únicamente para usuarios de
confianza.
OPCIONES DE LA LÍNEA DE COMANDOS¶
Las opciones de la línea de comandos disponibles son las siguientes:
- -a acel
- Fija la aceleración usada cuando se mueve el
ratón por un tiempo superior a delta (ver -d)
- -A
- Arranca el servidor con la opción de pegar
desactivada. Esta opción está pensada como una medida de
seguridad; un posible ataque al sistema podria ser introducir un comando
desagradable en el buffer de selección (rm -rf /) incluyendo el
retorno de carro final, en este caso cualquier víctima que pulsase el
botón central del ratón .. Con el tiempo necesario, esperamos
desarrollar un mecanismo más general de envejecimiento; el demonio de
gpm vaciará automáticamente el buffer de selección al pasar
un periodo de inactividad (edad). A partir de la versión 1.15.7, se
proporciona un programa trivial llamado "disable-paste", que
ejecuta "gpm -A -q". Esto es así por que el último
comando, al igual que "gpm -q" en general, necesita los
privilegios del superusuario; "disable-paste" se instala con el
bit de setuid activado hacia el superusuario. La siguiente secuencia puede
ser añadida en /etc/profile si se permite trabajar a diversos
usuarios en la consola.
case $( /usr/bin/tty ) in
/dev/tty[0-9]*) /usr/bin/disable-paste ;;
esac
- -b baudios
- Fija la velocidad en baudios.
- -B secuencia
- Fija la secuencia de los botones. ``123'' es la secuencia
normal, ``321'' puede ser útil para los usuarios zurdos, y
``132''puede ser útil con los ratones que únicamente poseen dos
botones (especialmente dentre de Emacs). Todas las permutaciones posibles
son permitidas.
- -d delta
- Fija el valor delta. Cuando se mueve el ratón por un
tiempo superior a delta, el parámetro acel es usado como factor
multiplicativo. (Debe ser 2 o superior)
- -D
- No ejecutar automáticamente en segundo plano cuando el
programa comienza, y mostrar los mensajes a la salida de error
estándar y no mediante el mecanismo de syslog. Este parámetro es
útil para corregir errores; en versiones anteriores, se hacía
mediante una opción en tiempo de compilación.
- -g número
- Con dispositivos de planeo, emula el botón
especificado con un ligero golpe. El número debe ser 1, 2 o 3, y se
refiere al número antes que se haya remapeado con el parámetro
-B. Esta opción se aplica a los decodificadores mman y ps2. Por
defecto, no se emula ningún botón, ya que el efecto de golpe
ligero en los dispositivos ps2 es incompatible con algunos ratones ps2
normales.
- -h
- Imprime por pantalla un resumen de los parámetros de
la línea de comandos.
- -i intervalo
- Fija el intervalo a usar como el límite superior para
los clics múltiples. Si el intervalo entre que se aprieta el
botón y se suelta es menor que el límite, la pulsación se
considera como un doble o triple clic. El tiempo se mide en
milisegundos.
- -k
- Mata un gpm que se esté ejecutando. Este
parámetro puede ser usado si se posee un ratón del tipo
"busmouse" antes de entrar en Xwindow (a menos que se use -R o
la limitación de apertura única (single-open) sea eliminada del
núcleo del sistema operativo)
- -l juego_de_carácteres
- Especifica la tabla de traducción de inword(). El
parámetro juego_de_carácteres es una lista de carácteres.
"-" se usa para especificar un rango y " como secuencia de
escape del siguiente carácter o para especificar códigos
octales. Únicamente se pueden especificar carácteres visibles,
ya que los carácteres de control no aparecen en la memoria de
vídeo en modo texto, una vez que el texto seleccionado ha sido
cortado.
- -m nombre_de_fichero
- Especifica el nombre del fichero correspondiente al
ratón. Por defecto se coge /dev/mouse.
- -M
- Activa el modo múltiple. El demonio leera dos
dispositivos de ratón diferentes. Cualquier opción especificada
a posteriori se referirá al segundo dispositivo, mientras que las
opciones especificadas a priori se referirán al primer dispositivo.
Esta opción automáticamente actica la opción ``repetir''
(-R)
- -o líneas
- Conmuta las líneas del módem. El argumento
"líneas" puede ser ``dtr'', ``rts'' o ``both''. Este
parámetro es necesario para algunos ratones extraños conectados
a través de la línea serie.
- -p
- Especifica que el puntero sea visible mientras se
selecciona. Este es el comportamiento de selection-1.7, pero a veces
confunde. El comportamiento por defecto es no enseñar el puntero, la
cual cosa tambien puede confundir.
- -q
- Acaba después de cambiar el comportamiento del
ratón. Este parámetro está pensado para permitir a los
usuarios modificar el estado del ratón (-a, -B, -d, -i, -l, -p, -r,
-V, -A) sin rearrancar el servidor. Como este parámetro requiere
permisos de superusuario, el administrador del sistema pueden usar los
bits de "setuid" para permitir su uso por parte de los usuarios.
El cambio de los parámetros del ratón está solamente
permitido desde una de las consolas virtuales. Las opciones son
trasferidas únicamente al primer ratón.
- -r numero
- Fija la sensibilidad del ratón. Una sensibilidad mayor
provoca que el ratón se mueva más rápido.
- -R
- Provoca que gpm se comporte como un repetidos: cualquier
dato recibido del ratón mientras se está en modo gráfico
será reenviado al fichero /dev/gpmdata, que se comporta como una cola
(fifo), siguiendo el protocolo "mouse-system". Esto significa
que se puede configurar el servidor X para que utilice este fichero como
dispositivo de ratón. Este parámetro es útil para los
usuarios que posean un ratón del tipo "bus-mouse", ya que
podrán invalidar la limitación de abrir únicamente un raton
(single-open). También una manera sencilla de manejar esos
estúpidos ratones con modo dual, que te obligan a mantener apretado
el botón central mientras se cambia el modo de vídeo. Este
parámetro se activa si se utiliza el parámetro -M.
- -s número
- Fija la velocidad de muestreo para el ratón.
- -S comandos
- Permite los comandos especiales, y opcionalmente define los
comandos propios como una lista separada por el carácter dos puntos
(:). Ver más arriba para una explicación detallada de los
comandos especiales.
- -t nombre
- Especifica el tipo de ratón. Usar "-t help"
para obtener una lista de los tipos de ratón permitidos.
- -v
- Imprime información sobre la versión y
acaba.
- -V incremento de información
- Especifica el nivel máximo de mensajes que serán
mostrados. Así, un número positivo tiene el efecto de
incrementar el número de mensajes de información mostrados.
También se puede especificar un valor negativo para silenciar el
programa; sin embargo, nótese que debido a las reglas de
getopt(3) , un valor negativo debe ser especificado justo detrás
del parámetro, sin ningún espacio entre ellos (o sea, -V-1 pero
no -V -1). El valor numérico es opcional y su valor por defecto es
1.
- -2
- Obliga a que el ratón tenga dos botones. Esto
significa que el botón central, si existe en el ratón, se
comportará exactamente igual que el botón de la derecha.
- -3
- Obliga a que el ratón tenga tres botones. Por defecto
el ratón se supone que tendrá dos botones hasta que se pulsa el
botón central. Si realmente existen los tres botones, el de la
derecha es usado para extender la selección, y el central para
pegarla. ¡Cuidado! si se utiliza el parámetro -3 con ratones de
dos botones, no será posible pegar la selección que se haya
hecho.
MODO DE OPERACIÓN¶
Para seleccionar texto, pulsar el botón izquierdo y arrastrar el
ratón. Para pegar el texto seleccionado, en la misma u otra consola,
pulsar el botón central. El botón derecho es usado para extender la
selección, como en `xterm'.
En los ratones de dos botones se utiliza el botón derecho para pegar el
texto seleccionado.
Los dobles y triples clics seleccionan toda la palabra y toda la línea
respectivamente. Se recomienda el uso de la opción `-P' para obtener un
efecto visual mejor.
Si se selecciona un espacio en blanco al final de una oración, y no hay
ningún otro texto hasta el final de la línea, el resto de la
línea será seleccionado automáticamente. Si se selecciona un
grupo de líneas, los espacios del final de cada línea serán
eliminados del buffer de selección.
Cualquier salida que se haga a la consola virtual que tenga una selección
de texto marcada hará que la marca de texto seleccionado sea eliminada de
la pantalla a fin de mantener la integridad de la misma, aunque el contenido
del buffer de selección no se verá afectado.
El mecanismo de selección es desactivado si la consola virtual pasa a modo
gráfico, por ejemplo cuando se ejecuta X11, y se restaura cuando se
vuelve a modo texto. (Ver la sección de errores más abajo)
ERRORES¶
El servidor gpm puede tener algunos problemas cuando interactúa con las X:
si el ratón es un dispositivo de apertura única (single-open), un
ratón del tipo "bus-mouse", por ejemplo, se debería manar
gpm antes de ejecutar las X, o usar la opción ``-R'' (ver más
arriba). Para matar al servidor gpm simplemente invocar gpm -k. Este problema
no es aplicable a ratones conectados al puerto serie.
Dos instancias de gpm no pueden ejecutarse en el mismo sistema. Si se dispone de
dos ratones, usar la opción ``-M'' (ver más arriba).
Cuando la consola actual está en modo gráfico, gpm duerme hasta que se
vuelve a modo texto (a menos que se especifique -R). Así, no
responderá a los clientes. De todas formas, es poco probable que los
clientes que estén impacientes esperando al ratón molesten en las
consolas distintas a la actual.
Las versiones anteriores a la 1.0 de gpm tienen problemas con las versiones
1.2.9 del kernel, ya que los clientes tienen que tener permisos de escritura
sobre /dev/gpmctl. Se debería invocar chmod sobre dicho nodo o instalar
la versión 1.0 o posteriores de gpm (si tienes este documento, tienes la
versión actualizada)
AUTORES¶
Andrew Haylett <ajh@gec-mrc.co.uk> (el código de selección original)
Alessandro Rubini <rubini@linux.it> (nuevas características)
Muchos, muchos colaboradores, tanto del paquete "selection" como de gpm.
MANTENIMIENTO¶
Desde la versión 1.14 yo realizo exclusivamente el mantenimiento. Ian
Zimmerman y Prosa Inc respaldarán el desarrollo de gpm. El punto de
contacto oficial es actualmente la lista de correo gpm@animal.unipv.it,
gracias a mi Universidad, la cual generosamente acoge las discusiones sobre
gpm. La lista es gestionada por SmartList y todos sois bienvenidos.
FICHEROS¶
/dev/mouse El dispositivo de ratón por defecto
/var/run/gpm.pid El PID del servidor gpm en ejecución
/dev/gpmctl Un enchufe (socket) de control para
los clientes
/dev/gpmdata La cola que se comporta como demonio
`repetidor' (-R)
VÉASE TAMBIÉN¶
mev(1) Un ejemplo de cliente para el demonio gpm.
gpm-root(1) Un manejador para controlar los eventos
del ratón.
El fichero de info sobre `gpm', el cual da información más completa y
explica como construir un cliente de gpm.