24 febrero 2010

MPX: Multipuntero para la próxima Ubuntu

La próxima versión de Ubuntu, el Lince Lúcido, o 10.04, traerá xorg 7.5 con MPX activado por defecto. No se puede sacar mucho provecho de él aun, pero ya lo tenemos para probarlo. Como está todavía verde, los punteros y teclados extra no se activan solos y hay que configurarlos. Pero no hay problema; vamos a ver como se hace en la alfa 2, cuando está a punto de salir la alfa 3. Lo he probado primero en el portátil, para poder usar la tableta y un ratón externo simultáneamente. Y sí, ahí estaban los dos punteros cogiendo ventanas por separado.

Es bastante fácil una vez has encontrado cómo. Primero que nada, abrimos una terminal, que vamos a usar bastante porque no hay herramientas gráficas aun para ello. Sacamos un listado de los dispositivos de entrada que tenemos:
xinput list


Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ "Logitech USB Mouse" id=9 [slave pointer (2)]
⎜ ↳ "Macintosh mouse button emulation" id=11 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ "Power Button" id=6 [slave keyboard (3)]
↳ "Power Button" id=7 [slave keyboard (3)]
↳ "Sleep Button" id=8 [slave keyboard (3)]
↳ "AT Translated Set 2 keyboard" id=10 [slave keyboard (3)]

Tenemos un puntero y un teclado maestros virtuales. Enchufamos otro ratón. Como los reales están asociados a éstos, vamos a crear otro virtual:

xinput create-master New

⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ "Logitech USB Mouse" id=9 [slave pointer (2)]
⎜ ↳ "Macintosh mouse button emulation" id=11 [slave pointer (2)]
⎜ ↳ "Logitech USB-PS/2 Optical Mouse" id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ "Power Button" id=6 [slave keyboard (3)]
↳ "Power Button" id=7 [slave keyboard (3)]
↳ "Sleep Button" id=8 [slave keyboard (3)]
↳ "AT Translated Set 2 keyboard" id=10 [slave keyboard (3)]
⎡ New pointer id=13 [master pointer (14)]
⎜ ↳ New XTEST pointer id=15 [slave pointer (13)]
⎣ New keyboard id=14 [master keyboard (13)]
↳ New XTEST keyboard id=16 [slave keyboard (14)]

Los nuevos maestros virtuales no tienen ningún dispositivo real asociado. Los dos ratones que hay enchufados están asociados al puntero con id=2. Pues vamos a asociar el que hemos enchufado (id=12) al nuevo maestro (id=13):
xinput reattach 12 13
Si desconectamos el ratón, el nuevo maestro seguirá ahí y algunas ventanas no nos responderán como esperaríamos (el foco se queda en otra ventana), así que deberíamos eliminarlo:
xinput remove-master 13
Y todo vuelve a la normalidad.
Creo que voy a necesitar un teclado USB para experimentar con esto...