domingo, 2 de mayo de 2010

Debian Lenny: Dos teclados al mismo tiempo


Recientemente me topé con la necesidad de poder configurar un teclado adicional en mi laptop HP-COMPAQ nx6115.

Este laptop es mi caballo de batalla y afortunadamente viene con tres puertos USB. Precisamente a través de uno de estos puertos es que instalaré un teclado adicional marca Genius modelo KB-06XE (K639).

Como no me gusta estar usando teclados deficientemente configurados, es decir, cuyas etiquetas de las teclas dicen una cosa y "de memoria" las presiono para que hagan otras, entonces decidí que cada uno de los teclados debía mantener simultáneamente sus layouts correspondientes.

En mi caso, el teclado del laptop tiene una configuración latinoamericana (latam) y el teclado Genius tiene otra configuración en español (es).

Luego de investigar un poco, encontré que una vía era a través de "evdev" que es un controlador de entrada para el servidor X11 X.ORG. Este controlador intermedio, permite que los periféricos de entrada se comuniquen de una forma directa con los controladores expuestos por el kernel.

Entonces ya tenía prácticamente esta batalla ganada ya que sabía que se trataba de una configuración en el X.ORG en donde especificara cómo manejaría cada uno de los teclados considerando sus comportamientos particulares.

Para ello edité el archivo "/etc/X11/xorg.conf" de la siguiente manera:

1. En la sección "Server Layout" agregué la definición de un nuevo dispositivo:
  • Section "ServerLayout"
  • Identifier "aticonfig Layout"
  • Screen 0 "aticonfig-Screen[0]-0" 0 0
  • InputDevice "TecladoUsbGenius" "SendCoreEvents"
  • EndSection
2. Agregué una opción en "ServerFlags" que en mi caso no existía y la creé:
  • Section "ServerFlags"
  • Option "AutoAddDevices" "false"
  • EndSection
3. Agregué la configuración del nuevo teclado (Genius):
  • Section "InputDevice"
  • Identifier "TecladoUsbGenius"
  • Driver "evdev"
  • Option "Protocol" "evdev"
  • Option "XkbRules" "xorg"
  • Option "XkbModel" "pc105"
  • Option "XkbLayout" "es"
  • Option "Device" "/dev/input/event2"
  • EndSection
Se puede apreciar tres detalles importantes:
  1. Se indica el "driver" que administrará las "señales" de este dispositivo.
  2. El layout para este teclado es "es" que significa español.
  3. El dispositivo reconocido por el sistema operativo está identificado como el evento "event2".
Para saber a qué evento está asociado el teclado ejecuté el siguiente comando:
  • jgdu-laptop:/etc/X11# ls -l /dev/input/by-id/
  • total 0
  • lrwxrwxrwx 1 root root 9 2010-05-02 22:13 usb-04f3_0103-event-kbd -> ../event2
  • lrwxrwxrwx 1 root root 9 2010-05-02 19:41 usb-Cypress_Sem_PS2.USB_Browser_Combo_Mouse-event-mouse -> ../event1
  • lrwxrwxrwx 1 root root 9 2010-05-02 19:41 usb-Cypress_Sem_PS2.USB_Browser_Combo_Mouse-mouse -> ../mouse0
Como se puede apreciar, el teclado Genius está asociado al "event2".

Finalmente, reinicié el servidor X presionando "CTRL+BackSpace" y ...VOILÁ! ... quedó configurado el teclado Genius conectado vía USB.

Lo interesante de todo esto es que el comportamiento del teclado del laptop quedó exactamente igual que antes y de manera simultánea pude escribir tanto en un teclado como el otro respetando el layout de cada uno de ellos.

Espero sea de utilidad.

Éxitos!

José Gregorio.

Referencias
  1. http://es.wikipedia.org/wiki/Evdev
  2. http://www.xfree86.org/current/XKB-Config2.html
  3. https://doc.ikw.uni-osnabrueck.de/node/3172

2 comentarios:

padawan dijo...

Hola amigo muy buen aporte, pero tengo un pequeño inconveniente, yo tengo una laptop con debian e hice la configuración en el Xorg al cual como lo tienes pero no me funciona, no se si porque tendría que se un teclado usb, porque yo lo estoy probando convertor de un teclado ps2 a usb. Sabrá usted si es por eso, espero su respuesta y gracias..!

Gabriel A. dijo...
Este comentario ha sido eliminado por el autor.