summaryrefslogtreecommitdiff
path: root/src/SW/kblayout/document.it.rest.txt
diff options
context:
space:
mode:
Diffstat (limited to 'src/SW/kblayout/document.it.rest.txt')
-rw-r--r--src/SW/kblayout/document.it.rest.txt64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/SW/kblayout/document.it.rest.txt b/src/SW/kblayout/document.it.rest.txt
new file mode 100644
index 0000000..cf92e2d
--- /dev/null
+++ b/src/SW/kblayout/document.it.rest.txt
@@ -0,0 +1,64 @@
+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