Return to the archive index

Twiddler Simulation Results

From: "Erik Westra" <>
Date: Fri, 19 Nov 1999 21:18:54 +1300

Hi,

Following on from my earlier messages, I've now written a very simple
Twiddler simulator and run it over two very different samples of text (a
2,700 word short story, and the source code to the Twiddler simulator
itself) using three different keyboard layouts (the default alphabetical
layout supplied by Handykey, Brad Rhodes' SHRDLU layout, and Brandon
Rhodes' Tabspace layout).  The results are, to say the least,
interesting...

First off, though, I should say that these results should be taken with a
liberal dose of salt: they're interesting, but not very scientific.  See
the postscript for the various limitations and possible problems with this
simulation.

The simulator works by reading in a standard Twiddler ".ini" file (thanks
to Bradley Singletary for suggesting this) to get a keyboard layout, and
then simulates typing a sample body of text (taken from a text file) using
that layout.  It analyses the finger actions required to type the sample
text using the given keyboard layout, and provides a variety of statistics
which can then be used to compare, in a very crude way, the
efficiency/useability of different keyboard layouts.

Okay, so here are the results of running the simulator over two different
types of text and three different keyboard layouts:

                    Story   Story    Story     Code    Code     Code
                   Default  Shrdlu  T/Space  Default  Shrdlu  T/Space
                   -------  ------  -------  -------  ------  -------
Num chars typed:     15013   15013   15013    17085    17085   17085
Num thumb-presses:     337     337     337     1094     1069     765
Num thumb-releases:    337     337     337     1093     1068     765
Num keys pressed:    14884   17355   15633    17819    20008   18090
Num keys released:   14882   17353   15631    17816    20006   18087
Num keys held:        3584    4002    4255     7428     8482    6867
Num finger switches:  7297    7601    3288     8133     7366    5768
Num 1-key keystrokes: 6510    6696    6177     6195     6422    6870
Num 2-key keystrokes: 7121    2801    4959     8669     5415    5537
Num 3-key keystrokes:   75    4289    1020     1171     4276    2383
Num 4-key keystrokes:    0      94     218        0      159     147
Finger 1 L presses:   3756    1115     684     3380     2022    1317
Finger 1 M presses:   2990    2258    3767     3032     2543    3703
Finger 1 R presses:   1559    2716      46     1543     3158     531
Finger 2 L presses:    639    1372    1244      930     1904    1651
Finger 2 M presses:   1158    1606    2014     1736     2126    2417
Finger 2 R presses:   1726    3337    1133     2124     2479    1274
Finger 3 L presses:    376    1485    1204     1137     2206    1549
Finger 3 M presses:    737    1496    1598     1032     1117    2304
Finger 3 R presses:   1389    3093    1159     1150     2575    1503
Finger 4 L presses:    107    1148    1035      602     1621    1263
Finger 4 M presses:   1633    1399    1285     1463     1540    1109
Finger 4 R presses:   1445    2851    1172     1978     1993     681
Time factor:         51442   53633   40205    69621    69085   57270

Okay, some explanations: "Num keys held" is the number of keys held from
one keystroke to the next, allowing for the fact that you have to release
at least one key to register a keystroke (eg, ML00 -> 0L00 -> ML0L).  "Num
finger switches" is the number of times a finger has to lift off one key
and press another to go from one keystroke to the next.  Finger 1 = index
finger; finger 4 = little finger.  For information about the time factor,
see the postscript (bigger values very roughly equate to more time required
to type).

So what does all this mean?  Well, basically Chris George at HandyKey is
right: the alphabetical layout is actually rather good.  I was *very*
surprised to compare the SHRDLU layout with the default and see that, for
my sample texts at least, the SHRDLU layout required more keypresses than
the default.  In fact, even using my (very rough) estimation of typing
time, the default layout is faster than the SHRDLU layout for typing plain
English text.  The SHRDLU layout is (assuming my model is accurate -- a big
assumption) slightly more efficient than the default at typing Java source
code.  So, making far more assumptions than might be healthy, if you're
coding, the SHRDLU layout would be very slightly more efficient than the
default, but if you're typing plain English text, the default wins hands
down.

But...take a look at the results for Brandon Rhodes' Tabspace layout.  IN
THEORY (and again, I'm making big assumptions here), this layout is *much*
more efficient than the default at typing both plain English text and Java
source code.  On the face of it, these results are very impressive
indeed...in the order of a 20% reduction in the amount of time it takes to
type a given amount of text.

Of course, all this *MUST* be taken with a healthy dose of skepticism.  The
tabspace layout is unproven, and the fact that my simulator shows a 20%
reduction in typing time may not translate to any significant improvement
at all -- the fact that this layout requires you to memorise the order of
common letters and only ever use the macro when the letters appear in that
order may make this layout less efficient than these results show.  My
simulator is, of course, idealised (and may well be buggy)...but still,
these results do look promising for Brandon's layout...

I'd love to hear from anyone who has actually memorised the tabspace
layout...does the letter-ordering become a nuisance at times?

One thing that would be interesting would be to pull apart the time factors
and see just how these savings are being achieved...I'll have a play with
this over the weekend.

Okay, that's more than enough verbage from me.  Does anyone else find these
results interesting?  Does anyone have any suggestions for ways to improve
the simulation, or other things to look for when analysing the results? 
I'd be happy to pass on the source to the simulator to anyone who is
interested -- though be aware that it's written in Java (alas, the only
language I'm currently set up to develop in quickly) and not fully tested
on various platforms...

 - Erik.

PS:  Okay, for those of you keen enough to still be reading, here are some
caviats about these results, and further explanation of how the time factor
was calculated.  As I've repeatedly said, these results are very
unscientific...here's why:

* I've just knocked this programme together quickly, and there may well be
bugs in my simulator logic.

* The results are idealised.  They assume that the user will *always* use
the most efficient keyboard command to type a certain body of text.  In
practice, shortcuts which are hard to remember or hard to type would
probably be ignored, and the user would just type out the individual
letters.

* The sample text only includes ASCII characters -- this test didn't
examine the efficiency of typing control-key sequences, backspace
characters, arrow keys, function keys, etc.  If I was to do this test
properly, I'd use a Twiddler as my main input device for a length of time
and record every keystroke made, then run that record through the simulator
to see how various layouts would cope.

* I've made a huge number of assumptions in my simulator to calculate the
"time factor" for a particular body of text and keyboard layout.  Playing
with the Twiddler for a while, I started to think about what constrains
your typing speed, and included these constaints into the simulator. 
Obviously, this is a highly unscientific process...and as for the "time
cost" associated with various finger actions, those were a complete guess.

********

And finally, an explanation of how the time factor was calculated.  The
time factor is basically just a *very* crude way of comparing the amount of
time taken to type a given body of text using different keyboard layouts. 
This value has no relationship to any real-world measurement of time; all I
did was look at finger motions required to type text using a particular
keyboard layout, and rather arbitrarily assign a "time factor" value to
each type of finger motion (eg, if you press a key with a finger that
wasn't being used at the time, that action was given a time factor of 2;
moving a finger from one key to an adjacent key was given a time value of
4, while moving a finger to the key two columns over was given a time value
of 6).  The time factor was calculated for each of the four fingers, and
the highest value used as the overall time factor for the keystroke.  I
then added extra time for any use of the thumb-switches (since I find these
awkward to use), and also adjusted the time factor upwards if two, three or
four fingers had to move from one key to another (the time factor was
multiplied by 1.5, 2, and 2,5 respectively).  The resulting number is
basically meaningless, except that larger values mean that, according to my
rather crude model, more time would be spent typing the text using that
layout.  Thus, this value can be used to (very roughly) compare different
keyboard layouts...

--
Subcription/unsubscription/info requests: send e-mail with subject of
"subscribe", "unsubscribe", or "info" to 
Wear-Hard Mailing List Archive (searchable): http://wearables.blu.org

+Previous Message in Thread | Next Message in Thread

From Wear-Hard Mailing list Archive (WH)
Maintained by R. Paul McCarty

Archive created with babymail