diff options
Diffstat (limited to 'SW/kblayout')
-rw-r--r-- | SW/kblayout/document.en.rest.txt | 63 | ||||
-rw-r--r-- | SW/kblayout/document.it.rest.txt | 64 | ||||
l--------- | SW/kblayout/du2html.xsl | 1 | ||||
l--------- | SW/kblayout/index/du2html.xsl | 1 |
4 files changed, 0 insertions, 129 deletions
diff --git a/SW/kblayout/document.en.rest.txt b/SW/kblayout/document.en.rest.txt deleted file mode 100644 index f609813..0000000 --- a/SW/kblayout/document.en.rest.txt +++ /dev/null @@ -1,63 +0,0 @@ -Optimize keyboard layout -======================== -:CreationDate: 2003-01-28 10:09:25 -:tags: - software - - keyboard - -I'm sure you, too, know the history of the Sholes ("QWERTY") keyboard, -that was designed to avoid that too fast typists jammed mechanical -typewriters. You would know also that the Dvorak layout is cosidered -by many to be faster and more effective. - -When I tried to learn to use the Dvorak keyboard, a friend of mine -asked me: «Why don't you write a program to measure your keyboard -usage, and then obtain a personalized layout?». In a moment of -crazyness, I decided to do just that. - -The first program is freq.pl_, which reads the files given on the -command line and produces a probability matrix, writing it into the -file whose name is in the ``$MATRFN`` variable, default -``/tmp/freq.matr``. Actually it sees the text as a Markov process over -the characters with memory 1, and extracts the transition -matrix. Note: the elements are frequencies, not probabilities. The -optional normalization is left as exercise to the reader. - -The second program is freqdump.pl_, which is probably -useless. I've written it (three or four different versions) to have an -idea about the frequencies. Give it a look if you want. - -The most useful program (I hope) is optkeyb.pl_, which starting -from the matrix (as usual, filename hardcoded) and the QWERTY layout -searches by stochastic gradient descent a better layout. In other -words, it calculates a value for the layout (sum over the pairs of -keys of their distance times the frequency of that pair), then tries -to exchange two random keys looking for a better result. To avoid -local minima (there are a lot) it starts by randomly exchanging -``$PRE_SHUFFLE`` pairs, and if it doesn't find a better layout for -``$STARVATION`` tries it starts again, after having written the -locally optimum layout at the end of the file ``/tmp/layouts``. It -uses curses and the corresponding Perl module ``Curses.pm``. - -To avoid bad things, like numbers scattered between other keys, it's -possible to set into the ``%locked`` hash the keys that must not be -moved. - -To give yoy an idea of the results, after some hours of computation -the best layout was:: - - ` 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 ] / - -Bear in mind I use a IBM U.S. keyboard, and where the ``q`` is, -there's usually the backslash/pipe key, which is larger than the -others, so I should have locked it... - -To have an idea of the optimization, the value relative to the QWERTY -layout is 10.190.280, for the one above is 6.797.370, meaning a 34% -reduction in the space travelled by the fingers during writing. - -.. _`freq.pl`: /src/freq.pl -.. _`freqdump.pl`: /src/freqdump.pl -.. _`optkeyb.pl`: /src/optkeyb.pl diff --git a/SW/kblayout/document.it.rest.txt b/SW/kblayout/document.it.rest.txt deleted file mode 100644 index cf92e2d..0000000 --- a/SW/kblayout/document.it.rest.txt +++ /dev/null @@ -1,64 +0,0 @@ -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 diff --git a/SW/kblayout/du2html.xsl b/SW/kblayout/du2html.xsl deleted file mode 120000 index 6737f0e..0000000 --- a/SW/kblayout/du2html.xsl +++ /dev/null @@ -1 +0,0 @@ -../../common/du2html.xsl
\ No newline at end of file diff --git a/SW/kblayout/index/du2html.xsl b/SW/kblayout/index/du2html.xsl deleted file mode 120000 index b6e8ebc..0000000 --- a/SW/kblayout/index/du2html.xsl +++ /dev/null @@ -1 +0,0 @@ -../../../common/du2html.xsl
\ No newline at end of file |