diff options
Diffstat (limited to 'SW/kblayout/document.it.rest.txt')
-rw-r--r-- | SW/kblayout/document.it.rest.txt | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/SW/kblayout/document.it.rest.txt b/SW/kblayout/document.it.rest.txt new file mode 100644 index 0000000..6785260 --- /dev/null +++ b/SW/kblayout/document.it.rest.txt @@ -0,0 +1,65 @@ +Migliorare il layout di tastiera +================================ +:CreationDate: 2003-01-28 10:09:25 +:tags: - software + - keyboard + +Conoscerete anche voi la storia della tastiera Sholes ("QWERTY"), che +è stata inventata per evitare che i dattilografi troppo veloci +facessero inceppare i martelletti delle macchine per scrivere +meccaniche. Saprete anche che il layout Dvorak è da molti considerato +più efficace e veloce. + +Quando provai a imparare a usare la tastiera Dvorak, un mio amico mi +disse pressappoco: «Perché non scrivi un programma che misuri l'uso +che fai tu della tastiera, e ricavi un layout personalizzato?». In un +momento di follia, ho deciso di farlo davvero. + +Il primo programma è ``freq.pl``_, che legge i file dati a riga di +comando e calcola una matrice di probabilità (nel file il cui nome è +nella variabile ``$MATRFN``, al momento ``/tmp/freq.matr``). In +effetti tratta il testo come un processo di Markov sui caratteri a +memoria 1, e ricava la matrice di transizione. Nota: gli elementi sono +frequenze, non probabilità. L'eventuale normalizzazione è lasciata +come esercizio al lettore. + +Il secondo programma è ``freqdump.pl``_, che probabilmente non serve a +niente. L'ho scritto (tre o quattro versioni diverse) per avere +un'idea di come fossero le frequenze. Dateci un'occhiata se volete. + +Il programma più utile (spero) è ``optkeyb.pl``_, che parte dalla +matrice (al solito, nome di file hardcoded) e dal layout QWERTY +cercando per discesa di gradiente stocastica un layout migliore. In +parole povere, calcola un valore per il layout (somma sulle coppie di +tasti della distanza per la frequenza), poi prova a scambiare due +tasti a caso e vedere se il risultato è migliore. Per aggirare i +minimi locali (e ce ne sono tanti) all'inzio scambia a caso +``$PRE_SHUFFLE`` volte, e se per ``$STARVATION`` tentativi non ha +trovato un miglioramento ricomincia, dopo aver appeso il layout +localmente ottimo al file ``/tmp/layouts``. Usa le curses e il +corrispondente modulo Perl ``Curses.pm``. + +Per evitare cose brutte (i.e. i numeri a spasso) nell'hash ``%locked`` +è possibile impostare i tasti che non si vogliono spostare. + +Per dare un'idea dei risultati, dopo qualche ora di calcoli il miglior +layout era: + +:: + ` 1 2 3 4 5 6 7 8 9 0 ; = + - x w h t s a l b y ' j q + z \ [ c i e r u p . , + k v f d n o m g ] / + +Tenete conto che io uso una tastiera IBM U.S., e dove è finita la +``q`` c'era il tasto pipe/backslash (che è più largo degli altri, e +quindi avrei dovuto bloccarlo...) + +Per dare un'idea del miglioramento, il valore calcolato per la QWERTY +è 10.190.280, per quella riportata sopra è 6.797.370, che si traduce +in una riduzione del 34% del chilometraggio delle dita durante la +battitura. + +.. _`freq.pl`: /src/freq.pl +.. _`freqdump.pl`: /src/freqdump.pl +.. _`optkeyb.pl`: /src/optkeyb.pl |