Showing posts with label ratón. Show all posts
Showing posts with label ratón. Show all posts

Wednesday, July 03, 2013

Sobre interfases intuitivas


Si usted quiere generar polémica le sugiero que hable mal de la empresa Apple. Publique algo que no les guste a los fanáticos de esa marca y le lloverán los comentarios (e insultos) a granel. No se salvará de ellos. Hace unos días Javier Matuk publicó un artículo llamado Generación Apple (http://www.unocero.com/2013/06/30/generacion-apple/), en donde afirma que el posicionamiento de la marca en la mente de los consumidores parece que está más dirigida a los jovencitos y niños. Cuando hablamos de niños de 11 o 12 años que hablan de la última generación del iPod o de que "Apple inventó los discos de 2 terabytes", estamos ante la presencia de un fenómeno mediático.

El artículo generó ya más de 250 comentarios y hay desde los que aborrecen Apple hasta los que aman a dicha empresa con locura. Lo que me llama la atención son los comentarios de algunos internautas que indican que la interfaz de Mac es más intuitiva, o que no hay que instalar drivers y esas cosas, o que es más estable que Windows. La realidad atrás de esa defensa a todo pulmón a Apple es ignorancia e información que ni siquiera ya es cierta.

Por ejemplo, sí, Windows antes se caía con relativa frecuencia y ponía unas pantallas azules "de la muerte". Hoy en día esto prácticamente ha sido eliminado de dicho sistema operativo. Así pues, esa "inestabilidad" de Windows es cosa del pasado. A todo esto, todos los amantes de Apple, por alguna extraña razón, no aceptan nunca que sus máquinas eventualmente fallan y se caen y hay que rearrancar. Pero no vayamos muy lejos. Una alumna en la Universidad Iberoamericana llegó a mi salón porque tenía un problema en su Mac: no podía sacar el DVD que estaba en la unidad. Le dije que yo no tenía idea de cómo sacarlo.

También aluden a la instalación de los drivers de diversos dispositivos. No tiene mayor ciencia: es ejecutar muchas veces un programa que hace toda la tarea por uno. Así de simple. ¿Dónde está la ciencia espacial sobre el tema? No hay. Pero es otro de los argumentos que sistemáticamente los fanboys de Apple ponen para denostar a Windows.

Finalmente, el punto que me interesa más: hablan de interfases intuitivas. ¿Perdón? Déjenme informarles a los fanáticos de Apple que no hay eso de interfaz intuitiva. Por ejemplo, ponga a alguien que nunca ha usado una computadora, a manejar el ratón. Notará que muchas veces se "le acaba la mesa" cuando lo está moviendo. ¿Dónde está lo intuitivo del roedor? Inexistente. Pero pensemos en la interfaz del iPad, con todos esos gestos con los dedos sobre la pantalla multitáctil. ¿A poco son intuitivos? Si lo fuesen, a los usuarios del iPad, sin saber nada, se les ocurriría usarlos para hacer las diferentes acciones. Pero no hacen eso. Alguien les indica que abran dos dedos tocando la pantalla para hacer el gesto de ampliar lo que aparece en la misma. ¿Intuitivo? ¿de dónde?

En otras palabras, si manejo un coche, la interfaz de los pedales ¿es intuitiva? La respuesta es NO, un no rotundo. Los coches tienen volante y uno tiene que aprender a llevarlo. Igualmente tiene que saber usar los pedales. Intuitivo sería que de la nada pudiésemos manejar un automóvil sin que nadie nos dijera siquiera para qué sirven los pedales. ¿Me explico?

Yo no entiendo las razones, pero me queda claro que los usuarios de Apple pierden toda la objetividad y curiosamente, jamás encuentran a un pero en sus costosísimos equipos que seamos francos, distan de ser perfectos y maravillosos. Vamos, que me sorprende aún más que se compren estas computadoras para estas labores como ver correo, entrar a Facebook y Twitter  o jugar Farmville. Les recuerdo que en una Macintosh hay un sistema operativo muy complejo, al mejor estilo Unix, por el que ya pagaron y que lo tienen dormido en la mayoría de los casos.

Thursday, June 16, 2011

Un programa por demás peculiar

Hace unos días, mientras dormía, soñaba que escribía un programa de computadora. Estaba frente al monitor y la meta a resolver era llevar cuenta de cuantos metros, ¿kilómetros? recorre el ratón cuando una persona está frente a la computadora en una sesión de -digamos- un par de horas. Porque uno apunta con el ratón, da click, abre alguna aplicación, aprieta botones en la misma, cierra las ventanas, va al menú de inicio, etc. Vaya, que en mi sueño estaba empeñado por medir la distancia que el ratón recorre por la pantalla una y otra vez.

Cuando desperté, bañado en sudor, y eso porque está haciendo mucho calor en la ciudad de México, me di a la tarea de ver cómo se podía hacer semejante labor. Es un hecho que escribir una aplicación que mida lo que quiero medir no es un programa tradicional, porque desde luego, puede escribirse un programa que lleve cuenta de dónde está el ratón, sus coordenadas, etc, pero solamente funcionará para el programa que se ejecuta. Es decir, si el "foco" del programa ya no está en la ventana del mismo, el software no podrá llevar cuenta de esos valores del ratón en ningún momento.

La solución es un "hook", enganchar un programa que haga esta labor de correr digamos "tras bambalinas", a nivel sistema, y que nos diga entonces las coordenadas del ratón en todo momento. Engancharse con el API de Windows es en realidad un proceso complicado y aunque hay diversas técnicas para lograrlo, Microsoft recomienda que la llamada (callback), del procedimiento del hook resida en una biblioteca de enlace dinámico (DDL).

Revisando en Internet, hallé diferentes programas que hacían hook para atrapar los eventos del ratón. Sin embargo, hallé una biblioteca de funciones para este propósito, escritas en Delphi (compatibles con las versiones 4/5/6/7/8/9), que hacen la tarea encomendada. Las bibliotecas se llaman: TCPMouseHook® System Wide Mouse Hook and DLL for Borland Delphi. El desarrollador es BitLogic Software Solutions, una empresa que está en el Reino Unido. Las rutinas son accesibles gratuitamente pero tienen una pantalla al inicio del programa que las use, indicando que no se ha pagado ninguna licencia por ellas. Si se desea pagar, entonces el autor del software manda una clave que deshabilita la pantalla inicial (llamada en el ambiente de cómputo "nag screen") y entonces el software funciona igual que antes, pero sin la pantalla comercial al inicio del mismo.


Pues bien, una vez que entendí cómo usar las rutinas, me di a la tarea de programar lo que yo quería. De entrada, descubrí que llevar el trazo constante del ratón no es una buena idea, porque si el usuario decide moverlo en círculos, por ejemplo, asunto por demás poco probable, entonces el sistema tiene que hacer montones de llamadas al evento de mover el ratón y llevar la cuenta de las coordenadas por donde pasó. Un esquema más racional es ubicar el ratón originalmente en alguna parte, y cuando lo muevo y doy click, entonces calcular la distancia entre esos dos puntos. Una vez calculada la distancia, se guarda en alguna variable y las coordenadas finales se vuelven ahora las iniciales. Si vuelvo a mover el ratón y doy click, entonces las coordenadas finales es dónde se encuentra el ratón ahora y se vuelve a calcular la distancia, la cual se suma a la anterior.

Aparte de esto, decidí también medir cuantos clicks se dan al botón izquierdo del ratón y algo más... debido a que hay muchas resoluciones de pantalla, la idea para medir la distancia en cms, por ejemplo, fue la de medir qué resolución tengo en la pantalla. Por ejemplo, en mi caso, 1200x800 (creo). Pues bien, en mi monitor, medí la distancia horizontal de la pantalla y hallé que hay unos 40 cms de largo, lo cual equivale a unos 34 pixeles por cm. De esta manera, podía ya entonces saber la distancia final que hubiese recorrido el ratón en cms.

¿Para qué puede servir este programa? Ni idea. Quizás no tenga mayor utilidad. Las rutinas que enganchan los procedimientos y eventos del ratón vía las bibliotecas mencionadas pueden, sin duda, tener mejor aplicación que la que a mí se me ocurrió, pero el asunto era ver cómo se podía hacer algo de esta naturaleza.

A quien le interese este maravilloso programa puede pedírme a morsa@la-morsa.com, y a vuelta de correo tendrá el sistema. Cabe decir que los programas antivirus, como el AVG FREE, por ejemplo, brincan cuando se correo este programa y de hecho, no deja que se ejecute, porque claramente la biblioteca de funciones para hacer el hook del ratón le parece sospechoso y eso no lo hacen los programas normales. Así entonces, si el software no corre, es porque el antivirus no les está dejando. De hecho, eso me pasó cuando quise correrlo y veía que no se instalaba el hook. Ésa fue la razón.