summaryrefslogtreecommitdiff
path: root/SW/kblayout/index/document.it.rest.txt
blob: f710e2907c141448280f73678a5f53489dce3ac9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
Migliorare il layout di tastiera
================================
 
Conoscerete anche voi la storia della tastiera 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.