Publi

Y tú, ¿cuántas teclas eres capaz de pulsar en un día?

teclado_chulo_r

Un dato inútil si no fabricas teclados, y muy friki si te gustan este tipo de cosas. Además, depende del uso que hagas de un ordenador, si eres más de teclado o de ratón. Parece que no, pero somos muchos los que preferimos escribir qué queremos hacer que hacer varios clicks en determinadas zonas de la pantalla, o desplazamientos y arrastres con las correspondientes esperas ventana a ventana hasta que el ordenador conozca cuál es nuestro objetivo.

Por otro lado, si tienes un blog, ya la hemos liado, si eres de los que se enrollan mucho, a no ser que le dictes al ordenador y que te funcione bien, vas a pulsar muchas teclas para escribir tus posts.
Si bajas un poco verás un programa con el que poder crear tu estadística.

Respuesta rápida

En una semana de trabajo normal, como media diaria he pulsado 36622 teclas (de lunes a viernes). Siendo 23699 el día que menos y 49673 el día que más.

Respuesta extendida

Y el top5 de las teclas más pulsadas:

TeclaPulsaciones
space32048
e21745
BackSpace21359
a18868
o16859

Que el espacio sea la tecla más común es prácticamente normal, y es que por un lado, cuando se escribe un texto, más o menos con sentido, todas las palabras están separadas, es más, una palabra concreta no va a tener todas las letras, pero lo que sí va a tener es una separación. Por otro lado, como programador me suele gustar tenerlo todo oxigenado, tanto vertical como horizontalmente. Aunque suelo usar tabuladores para anidar el código, me gusta poner espacios a los lados de casi todos los paréntesis y al lado de operadores, prefiero:

1
int variable = ( (opcion == 'a') && (opcion == 'b') );

a

1
int variable = ((opcion=='a')&&(opcion=='b'));

Otro descubrimiento que saco de todo esto es que me equivoco mucho. Pulso demasiado backspace y casi casi creo que es por un extraño vicio que muchos tenemos, y es que cuando te equivocas en una letra al principio de la palabra, en lugar de volver atrás, corregir y seguir, borro toda la palabra y la escribo de nuevo. En ocasiones es óptimo hacerlo así, en otras no mucho, y es algo que intento corregir.

Y las letras más comunes, e, a, o.

La respuesta más larga todavía

Todo comenzó una aburrida noche de 2010 en la que me surgió esta pregunta, ¿cuántas teclas pulso en un día? Así que, lo que se me ocurrió fue monitorizarlo y pensar en hacer un post para el Poesía Binaria… pero entre un viaje pendiente y algún bug que no corregí en su momento nunca llegué a enviar al mundo este programa.
Aunque un día, ya entrado 2016, cuando ya las vacaciones llegaban a su fin, encontré esto perdido en una cuenta de Dropbox de cuyo usuario no quiero acordarme y quería recordar programas del pasado.
Hay muchas cosas que se pueden optimizar, pero llevo utilizando el programa unas tres semanas sin problemas.

Necesitamos que nuestro entorno gráfico esté basado en Xorg, como casi todos los Linux. No funcionará con Wayland, y desconozco si el programa corre bien con XQuartz en OSX o XMing en Windows. Aunque si algún usuario hace la prueba y me deja un comentario, le estaré muy agradecido. También cabe decir que si no estamos ejecutando un entorno gráfico, estamos ante una terminal no gráfica, o conectamos remotamente a la máquina el programa no hará nada (en el último caso es lo más normal del mundo, ya que no se están pulsando las teclas directamente en la máquina).

También necesitamos la extensión record y, normalmente si hemos instalado una distribución Linux y no hemos tocado nada de configuración de Xorg, esa extensión la tendremos habilitada. Esa extensión es la que me permite saber qué está haciendo el usuario a nivel de entorno gráfico y monitorizarlo.

Si lo pensamos bien, esta aplicación es un Keylogger, pero claro, lo podemos utilizar con malas intenciones, para conocer las contraseñas de un usuario o para espiar conversaciones de chat, o como en este ejemplo, con fines estadísticos. Es más, no es está guardando nada sobre el orden de las teclas, sólo la cantidad de teclas.

Al programa tal vez le faltan cosas, y después de 5 años, no me ha dado por terminarlo. Si te apetece aprovechar el código (que dejo en github, en enlace está al final), perfecto, y me gustaría verlo, así que, forkéalo. Además, seguramente haya (y hay) cosas que no están del todo bien hechas. Es más, creo que estoy tardando más en hacer este post que lo que tardé en hacer el programa. Y seguro que podemos aprovechar cosas de C++ moderno para facilitar las cosas, o meter threads, o hacer que sea un servidor y el mismo programa te haga los análisis contando lo que aún no está escrito, en fin, muchas cosas. Esto sólo es una prueba de concepto.

Funcionamiento del programa

El programa creará un directorio oculto, llamado .keyCounter en el home del usuario que lo ejecute, allí escribirá archivos .log con las teclas pulsadas en los diferentes intervalos de tiempo. Al mismo tiempo, en pantalla, escribe lo que estamos pulsando. Así que, podemos dejar ese programa corriendo en segundo plano y él irá monitorizando sin que nos demos cuenta.

Como el programa no está escribiendo en disco constantemente (así salvamos recursos de sistema), cuando tiene la suficiente información para escribir, se escribirán los datos en disco y, con esa información podemos proceder a un análisis si jugamos con los argumentos:

Análisis de pulsaciones

Si queremos contar las teclas pulsadas en cada hora:

$ ./keyCounter analyze hourly

que nos devolverá algo como esto:

1454194800;31/01/2016 00:00;770
1454216400;31/01/2016 06:00;254
1454220000;31/01/2016 07:00;1370
1454223600;31/01/2016 08:00;2999
1454227200;31/01/2016 09:00;2995
1454230800;31/01/2016 10:00;975
1454234400;31/01/2016 11:00;46
1454238000;31/01/2016 12:00;1717
1454241600;31/01/2016 13:00;7167

Son tres valores separados por ; curiosamente para poder exportar a un archivo csv si ejecutamos así:

$ ./keyCounter analyze hourly > archivo.csv

La primera columna es la marca de tiempo en formato Unix, la segunda, es la misma marca de tiempo en formato humano y la tercera, el número de teclas pulsadas en esa hora. Es decir, si la hora son las 6:00 significa que entre las 06:00 y las 07:00 se han pulsado 254 teclas. Y, ya que madrugo un día, lo pongo por aquí.

Análisis de teclas

Para saber qué teclas hemos pulsado y cuántas veces, lo ejecutamos de la siguiente manera:

$ ./keyCounter analyze keycount

Lo que nos devolverá el top de las teclas en todos los tiempos, así:


t;11579
u;7394
v;2663
w;3397
x;2736
y;2431
z;1192

De todas formas, vemos que no tiene orden ni nada, aunque, claro, pero para eso tenemos comandos que pueden ordenar esta salida:

$ ./keyCounter3 analyze keycount | sort -t’;’ -n -k2 | less

Análisis de ráfaga

Esta parte tiene fallos, y no me he parado mucho en depurar…, tal vez haya algún valor no inicializado por ahí, sé que hay algún cálculo que no estoy haciendo bien, pero no lo voy a depurar… al menos hoy. Pero puedes hacer:

$ ./keyCounter3 analyze burst

y te debe decir cuántas teclas sin parar has pulsado, es decir, todas las teclas pulsadas, con un descanso de X segundos (viene dado por una constante, MAX_IDLE_TIME). Pero bueno, no debemos confiar mucho en lo que salga de este análisis todavía.

El programa

Podemos encontrar una versión pre-compilada para Ubuntu 14.04 por si queréis hacer vuestras estadísticas (y os fiáis de que en realidad el keylogger no envía contraseñas por Internet). Aunque también os podéis descargar el código fuente, o podéis clonar el repositorio de Github por si queréis curiosear:

Dependencias

Precisamente el archivo precompilado está aquí por si no te apetece descargar bibliotecas de desarrollo para probar el programa. De hecho, las bibliotecas son:

  • libx11-dev
  • x11proto-record-dev
  • libxtst-dev

Tendrás que buscarlas en tu distribución para compilar el programa de la siguiente forma:

$ g++ -o keyCounter keyCounter.cpp cfileutils.cpp -lX11 -lXtst

Si tienes algún problema compilando, copia y pega el mensaje de error en un comentario, por favor.

¿Cuántas teclas pulsas tú?

Yo te he dicho las mías, ¿ te apetece jugar y publicar tu estadística de una semana, de un día o de una hora ?

También podría interesarte...

There are 5 comments left Ir a comentario

  1. Pingback: Y tú, ¿cuántas teclas eres capaz de pulsar en un día? | PlanetaLibre /

  2. Daniel Aravena Jelves /
    Usando Google Chrome Google Chrome 63.0.3239.84 en Windows Windows 7

    Hola me interesó tu publicación, y quisiera saber si esta has patentado tu idea pero para windows?, ya que sin ser especialista en el tema, estoy buscando una aplicación parecida que funcione en segundo plano y me cuente las veces que se ha pulsado el teclado, y se ha hecho clic en el mouse. El uso que quiero de esta aplicación es poder tener una estadística que me fundamente situaciones de enfermedades laborales por trastornos musculoesqueletico, en este caso, tener una estadística que pueda fundamentar cuando un usuario ha trabajado todo el día digitando o usando el teclado sin tener pausas laborales. Por tal motivo no me interesa guardar el contenido de lo que se digite, solo que cuente las veces que se ha presionado una tecla del teclado o los botones del mouse. Seria ideal que esta aplicación sea ejecutado en ambiente Windows 7 o Windows 10. En caso que tengas algo asi, por favor contactame a mi correo electrónico para conversar sobre una posible compra.

    1. Gaspar Fernández / Post Author
      Usando Mozilla Firefox Mozilla Firefox 57.0 en Ubuntu Linux Ubuntu Linux

      Hola Daniel. No creo que este tipo de cosas se puedan patentar. Además, el motivo de este blog es compartir el conocimiento con todos los visitantes. Es más, la teoría que sigue este proyecto es la misma que los keyloggers utilizados para robar la información que los usuarios escriben por teclado, aunque yo lo uso con fines estadísticos.

      Llevo mucho tiempo sin tocar Windows, pero supongo que se podrán seguir utilizando hooks de ratón y teclado. Así es como llama Windows a esos programas que ejecutan código justo después de las pulsaciones de teclado y que en un proyecto como el tuyo te permitirían monitorizar las teclas o clicks de ratón.

      Hay programas como este: http://skwire.dcmembers.com/wb/pages/software/keycounter.php que tal vez te permitan hacerte una idea de lo pulsado. Y mira, acabo de buscarlo y se parece mucho al mío, sólo que con entorno gráfico.

      Por cierto, tu idea me gusta, es una lástima que esté limitada a Windows 🙂

  3. Daniel Aravena Jelves /
    Usando Google Chrome Google Chrome 63.0.3239.84 en Windows Windows 7

    Gaspar muchas gracias por el dato entregado, se adecua justamente a lo que estaba buscando y en ambiente windows 🙂 Más adelante veré como puedo conversar con el desarrollador de la aplicación para incluir el tema de contar las veces que se hace clic con el mouse y así tener completo el estudio musculoesqueletico. Nuevamente agradezco tu pronta respuesta e información porque me hubiera tardado un siglo en encontrar la pagina que me sugeriste. Por dicha información, trate de hacer clic en cada banner que encontre en tu pagina para valorizar tu pagina, además te envie un pequeño donativo, se que no es mucho, pero es una forma de agradecer tu ayuda.

    Saludos cordiales,

    1. Gaspar Fernández / Post Author
      Usando Mozilla Firefox Mozilla Firefox 57.0 en Ubuntu Linux Ubuntu Linux

      Gracias Daniel ! Espero que tengas suerte con ese programa. Y que sepas que puedes ponerte en contacto conmigo para futuras consultas.

      Muchísimas gracias por el donativo, me hace muchísima ilusión y es de estas cosas que me invita a seguir adelante con el blog. También te agradezco lo de la publicidad, aunque a Google sólo le gusta que pinches cuando realmente estás interesado en el anuncio 🙂

      Un abrazo!

Leave a Reply