Configurar monitor Touchscreen ELOTOUCH en Debian Sarge
En tecsua desarrollamos un sistema ERP & POS, totalmente web (cuando terminemos el código de una forma genérica, será publicado).
El cliente sugirió utilizar touchscreen en los puntos de pago, y pues este chicharroncito de configurarlo me toco a mi, así que a continuación documento mi experiencia.

Para empezar, debíamos seleccionar un touchscreen compatible y bastante documentado en Internet, y creo que el más documentado y utilizado es el ELOTOUCH (4), tiene conexión serie y USB (5), y en la página de ellos existen unos drivers «libres», y uno «publico» en que ellos dicen que no dan soporte (3). Entonces cometí mi primer error, usar el puto driver que dan en la página, no lo pude compilar en debian tal vez por la versión de GCC es incompatible, en fin… perdí un día en eso.
Entonces me decidí por bajar el ultimo kernel (2.6.18.2), y ho sorpresa!, cuando ejecute menuconfig, me encontré con estas tres sorpresas:
Device Drivers —>
Input device support —>
< *> Touchscreen interface
(1024) Horizontal screen resolution
(768) Vertical screen resolution
Device Drivers —>
Input device support —>
[*] Touchscreens —>
< *> Gunze AHL-51S touchscreen
< *> Elo serial touchscreens
< *> MicroTouch serial touchscreens
< *> ICS MicroClock MK712 touchscreen
Device Drivers —>
USB support —>
Esas son las configuraciones que use, subí la resolución del touchscreen, y active TODOS los touchscreen, es un poco exagerado, pero mejor ir a la fija. Creo que el modulo del kernel es el mismo que figura en la página de elotouch como no soportado.
Viendo la documentación del Linux Touch Screen HOWTO, y la propia de elotouch, configure el archivo /etc/X11/XF86Config de la manera incorrecta!!!, a continuación pongo resaltando en ROJO POR QUE NO SE DEBE HACER!
Section «InputDevice»
Identifier «ELO touchscreen»
Driver «elographics»
Option «Device» «/dev/ttyS0»
Option «AlwaysCore»
Option «screenno» «0»
Option «MinimumXPosition» «600»
Option «MaximumXPosition» «3600»
Option «MinimumYPosition» «600»
Option «MaximumYPosition» «3600»
Option «UntouchDelay» «3»
Option «ReportDelay» «1»
EndSection
Por que esta mal si la documentación de elotouch explica de esa forma? Esta mal por la versión de XFree de nuestro queridísimo debian sarge (XFree86 4.3.0.1), esa forma de configuración es para versiones mas viejas, lo peor de todo es que funciona! pero no tiene el foco adecuado, es decir, donde presiono la pantalla el cursor del mouse aparece unas pulgadas desfasadas, y entonces fue donde me perdí más, supuse que era un problema de calibración, entonces baje y probé jijuemil programas, scripts, comandos de calibración, pero entre más probaba, me daba cuenta que la puta calibración seguía como si nada, es decir, cambiaba los valores MinimumXPosition, MinimumXPosition, MaximumXPosition, MinimumYPosition, MaximumYPosition y nada, ponía cualquier valor por desfasado que fuera y seguía como si nada, después de otro día perdido, pensé que el monitor tal vez tenia un defecto por que no se dejaba calibrar, de la desesperación ya estaba pensando en destaparlo :D (hubiera perdido la garantía), entonces opte por probarlo en windows y obviamente funciono sin problemas, entonces no era daño del monitor, era pura calibración…
Entonces me paso como un capitulo de «sobreviví» (discovery channel) «me encontré en paz conmigo mismo, y pude haberme rendido sin problemas, pero decidí luchar, luchar hasta el final… :P «… entonces, instale un sistema de ceros, y pensé volver al principio usando los drivers de la página de elotouch, googleando un poco, etc. afortunadamente releí el Linux Touch Screen HOWTO, pero esta vez encontré un párrafo adicional (Addendum) que antes no lo había leído, porque estaba leyendo un HOWTO muy viejo de otra pagina, en el HOWTO actualizado dice un tal Wong Yeow Sen:
If it seems your calibration values aren’t parsed try the following:
…
Option «MinX» «100»
Option «MaxX» «4000»
Option «MinY» «100»
Option «MaxY» «4000»
…
Esto parece que es a partir de XFree86 4.2, entonces solo fue poner mi /etc/X11/XF86Config de la siguiente manera…
…
Section «InputDevice»
Identifier «ELO touchscreen»
Driver «elographics»
Option «Device» «/dev/ttyS0»
Option «AlwaysCore»
Option «screenno» «0»
Option «MinX» «100»
Option «MaxX» «4000»
Option «MinY» «100»
Option «MaxY» «4000»
Option «UntouchDelay» «3»
Option «ReportDelay» «1»
EndSection
…
y no olvidar al final poner «InputDevice «ELO touchscreen»»
…
Section «ServerLayout»
Identifier «Default Layout»
Screen «Default Screen»
InputDevice «Generic Keyboard»
InputDevice «Configured Mouse»
InputDevice «ELO touchscreen»
EndSection
….
Modifique el XF86Config, reinicie las X y vola! funciona como magia! no tuve que calibrar nada!!!… Gracias Wong Yeow Sen! :D
Resumen:
Bajarse el ultimo kernel, compilarlo activando los drivers Elotouch, asegurarse de que el monitor este encendido y conectado tanto el cable de video como el cable serie (o USB) a tu computador! configurar las X de la forma que dice el link 1, en el Addendum, y listo! …
Y asegurarse siempre de leer la ultima documentación disponible, hay muchos HOW TO sin actualizar!
Nota 22 Nov 2006
En hora buena!, lo probe con Xorg en mi debian sarge, y funciono de la misma manera
#Xorg -version
X Window System Version 6.8.2
El propio
(1) http://tldp.org/HOWTO/XFree86-Touch-Screen-HOWTO.html
Uno de los tantos HOWTO desactualizados, NO LEER
(2) http://www.linuxjunkies.org/html/XFree86-Touch-Screen-HOWTO.html
La página de elo, muy buena documentación incluida en los drivers
(3) http://www.elotouch.com/Support/Downloads/dnld.asp#linux
Elotouch
(4) http://www.elotouch.com/
El monitor usado
(5) http://www.elotouch.com/Products/LCDs/1515L/default.asp