AnalyseSaisie

De Disposition de clavier francophone et ergonomique bépo

Analyse de notre utilisation réelle du clavier

Initié par JulieCaroline, merci de commenter !

Grandes lignes

  • Analyser MON utilisation de l’outil informatique, 60h par semaine.
  • Partager les résultats intermédiaires de cette analyse entre nous tous.

Débat ?

Parer aux réflexions : cette disposition n’est pas faite pour moi, pas assez pratique pour coder, dois-je changer de disposition quand je change d’activité ?

Méthode

  • Un sniffer de clavier / keylogger qui capte toutes les frappes claviers. (On parle de _saisie_ non de corpus de texte)
  • Un analyseur qui ressort ce qui peut intéresser pour une disposition de clavier (celui qu’on utilise sur un corpus de texte par exemple)

Keyloggers

Quels outils OpenSources ?

logkeys

Installation

Logkeys est un utilitaire sous GNU/Linux qui permet de mémoriser l'ensemble des touches pressées par les utilisateurs du système.
L'installation peut se faire depuis les sources:

$ tar xvzf logkeys-*.tar.gz && rm -f logkeys-*.tar.gz && cd logkeys-*
$ ./configure
$ make
$ make install

Ou, pour certaines distribution, via le gestionnaire de paquets:

  • Archlinux (disponible sur AUR)
$ yaourt -Sy logkeys

à compléter

utilisation

Logkeys est un démon, c'est-à-dire qu'il tourne en arrière plan sur votre système. Pour le lancer et l'arrêter, voici les commandes de base:

% logkeys --start
% logkeys --kill

Les paquets disponible pour archlinux fournissent un script « /etc/rc.d/logkeysd » (pour initscript) et un service « /usr/lib/systemd/system/logkeys.service » (pour systemd) permettant d'automatiser le lancement du démon au démarrage.

Par défaut, logkeys considère votre clavier comme étant un clavier slovène, et enregistre les touches frappées dans le fichier « /var/log/logkeys ». Vous pouvez bien entendu modifier ces paramètres, ainsi que de nombreux autres, disponible sur la manpage de logkeys.

paramétrage

Par défaut, le clavier sur lequel se base logkeys est en slovène. Pas très pratique (sauf si vous tapez sur un clavier slovène !). Il nous faut donc changer le mappage.
Il existe dans ce cas différentes méthodes qui sont l'édition à la main, et l'utilisation de mappage existants.
Pour utiliser un mappage existant, téléchargez ce dernier sur le wiki de logkeys, ou voyez si un paquet n'existe pas pour votre distribution:

  • Archlinux (disponible sur AUR)
$ yaourt -Sy logkeys-keymap

à compléter Les fichiers seront ainsi téléchargés directement dans « /usr/share/lkmaps »

Si vous téléchargez le fichier de mappage à la main, placez le où vous le souhaitez, le dossier n'a pas d'importance.

Pour l'édition à la main, utilisez la commande suivante (en TTY et non sous X: cf. manpage, section KEYMAP FORMAT)

% logkeys --export-keymap=~/custom.map

Vous pourrez ensuite l'éditer à votre guise (lisez le man, certains points sont TRÈS important !!)

Une fois que vous avez le mappage qui vous convient, lancez logkeys avec ce dernier (avec, pourquoi pas, un chemin atlernatif pour le fichier de log !):

% logkeys --start --keymap=/path/to/custom.map # --output=/path/to/logfile.log

Vous pouvez maintenant continuer à utiliser votre machine comme d'habitude, logkeys s'occupe de tout !


Analyse des résultats

Quels scripts OpenSources ?

  • à la main

à la main

La technique la plus simple pour visionner ses logs, reste l'utilisation des commandes unix de base: « more », « less » ou bien « tail » suivies du chemin vers le fichier de log:

Exemple:
$ tail -f -n16 /var/log/logkeys.log

Cette ligne de commande permettra de visionner les 16 dernières lignes du fichier « /var/log/logkeys » en temps réel.

Pour pouvoir interpréter ces logs, une mise en forme serait pratique, et il faudra utiliser un éditeur de texte comme « Vim », « Emacs » ou « Gedit ».
Pour une mise en forme plus « poussée », la rédaction de scripts shell peut être utilise (en utilisant notamment des utilitaires comme « sed », « awk », « grep », « wc », etc.)

scipts shell

fréquence d'utilisation de motifs

Le script suivant affichera le nombre d'utilisation de chaque lettre au sein d'un fichier de log type « logkeys »:

#! /bin/bash
 
## ===== SOURCE FILE ==========================================
##
##          Filename:  keyuse.sh
##            Author:  Willy Goiffon
##
##     Creation Date:  03-01-2013 14:24:05
##     Last Modified:  04-01-2013 10:57:32
##
##       Description:  script de mise en forme d'un fichier de
##                     log du type « logkeys ».
##
## ============================================================
 
# vérification des paramètres
if [[ -z $1 || ! -f $1 ]]; then
    echo "You must give a filename as an argument"
    exit 1
fi
 
# utilisation d'un fichier temporaire
tmp_file='/tmp/keyuse.log'
cp $1 $tmp_file
 
# séparateur
IFS=$','
 
# motifs à exclure (e.g. mots de passe)
excl='passwd_root,passwd_forum,passwd_proxy,site_web_genant,...'
 
# touches à compter
vals='a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z,é,è,à,ou,et'
 
# suppression des entrées du type <BckSp>
sed -i 's/<[^<>]*>//g' $tmp_file
 
# suppression des motifs à exclure
for e in $excl; do
    # suppression des lignes contenant le motif
    #sed -i "/$e/d" $tmp_file
    # suppression du motif seulement
    sed -i "s/$e//g" $tmp_file
done
 
# comptage des occurences de chaque motifs
for i in $vals; do
    echo "$i: $(grep -aoi $i $tmp_file | wc -l)"
done
 
# deinit
rm $tmp_file
unset IFS
 
## ===== EOF ==================================================

Résultat attendu

  • un ensemble de stats, avec profil (wm avec ou sans souris; code;vim, emacs, gedit ou eclipse; type d’os etc; type de dispo et de clavier)
  • pour une 10aine d’utilisateurs pour être réaliste, avec espoir pour une bonne 50aine voire plus, pour avoir des informations réalistes.

types de stats

Fréquences des

  • lettres
  • combinaisons de touches (ctrl z/c/v etc)
  • digrammes/trigrammes
  • etc.

(je ne sais pas trop ce qui peut être mis et qui soit pertinent JulieCaroline)

Analyse attendue

  • avoir des infos concrètes sur nos utilisations de nos claviers et de nos dispos.

C’est à dire sortir des corpus de texte, certes représentatifs de certaines utilisations (code, wikipedia, Voltaire, etc.), mais soyons réalistes, nous ne faisons pas qu’Écrire avec notre clavier, et encore quand on écrit, qu’écrivons nous et dans quelles proportions ?

  • pour voir s’il y a des tendances qui remettent en cause ou qui valident tel ou tel choix dans la disposition qu’on utilise
  • valider avec des chiffres que bépo c’est mieux qu’azerty (les gens, constructeurs, organismes divers aiment les chiffres)
  • contribuer à l’étude d’un passage de bépo/v1 à pantoufle/v2 ? (mais là on risque de digresser)