teclado_chulo_r.jpg

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:

Tecla Pulsaciones
space 32048
e 21745
BackSpace 21359
a 18868
o 16859

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 ?

 

Fuente: poesiabinaria

¿Quién está en línea?

Hay 6098 invitados y ningún miembro en línea