Class FittsTwoThumb

java.lang.Object
  extended by FittsTwoThumb

public class FittsTwoThumb
extends java.lang.Object

FittsTwoThumb

Summary

Background

Text entry using two thumbs on a miniature Qwerty keyboard is distinctly different from touch typing on a standard keyboard or stylus input on a soft keyboard. The full details of the two-thumb text entry model are provided in the following paper:

Parameters

This program works with parameters contained in three text files. The first is FittsTwoThumb.txt. The contents specify various components and parameters for the model.

The nominal parameter settings are...

     word-frequency file = d1-wordfreq.txt
     keyboard definition file = SharpEL-6810.txt
     left thumb letters = qwertasdfgzxcvb
     right thumb letters = yuiophjklnm
     left intercept = 176 ms
     left slope = 64 ms/bit
     right intercept = 176 ms
     right slope = 64 ms/bit
     tMin = 0.088 s
     space key policy = Alternate
 
Lines beginning with "#" are ignored. Edit FittsTwoThumb.txt, as necessary, to change the parameter settings.

The other two required text files are specified in the first two lines of FittsTwoThumb.txt. The first line in FittsTwoThumb.txt specifies a word-frequency file. This file is a reduced version of a corpus. It contains the unique words in the corpus and the frequency of each word. Examples appearing in FittsTwoThumb.txt include

The second line in FittsTwoThumb.txt specifies a keyboard definition file. This file defines the keyboard. Each line contains four space-delimited entries: (i) a character, (ii) digitized x-position of key, (iii) digitized y-position of key, and (iv) width of key. Examples appearing in FittsTwoThumb.txt include

Operation

Example invocations:

     PROMPT>java FittsTwoThumb ?
     usage: java FittsTwoThumb [-p] [-b] [-d] [-m] [-t]
     
     Output options: (default is no output)
        -p = prediction
        -b = breakdown of prediction
        -d = debug information
        -m = model components and parameters
        -t = thumb usage statistics
     
     Note: Model definition is read from FittsTwoThumb.txt
     
     PROMPT>java FittsTwoThumb -p
     wpm = 59.18646136479296
     
     PROMPT>java FittsTwoThumb -b
     Number of unique words = 9022
     Total of frequencies = 67962112
     Quickest to enter = a (0.267 seconds)
     Slowest to enter = telecommunications (4.319 seconds)
     tCorpus = 7.478035148478729E7
     nCorpus = 368832032
     tChar = 0.20274907002867712
     -----
     
     PROMPT>java FittsTwoThumb -m
     MODEL PARAMETERS
     Corpus: d1-wordfreq.txt
     Keyboard: SharpEL-6810
     Left thumb letter assignments: qwertasdfgzxcvb
     Right thumb letter assignments: yuiophjklnm
     Left thumb ratio of word endings: 0.7048896155552081
     Right thumb ratio of word endings: 0.2951103844447918
     Fitts' law coefficients...
     Left thumb intercept: 176.0
     Left thumb slope: 64.0
     Right thumb intercept: 176.0
     Right thumb slope: 64.0
     tMIN: 0.088
     Space key policy: Alternate
     -----
     
     PROMPT>java FittsTwoThumb -t
     THUMB USAGE
     All... (n = 368832032)
     L = 195459980 (52.99%), R = 173372052 (47.01%)
     LL = 78917833 (21.40%), LR = 116542147 (31.60%), RR = 56829905 (15.41%), RL = 116542147 (31.60%)
     Word beginnings... (n = 67962112)
     L = 44686347 (65.75%), R = 23275765 (34.25%)
     Word endings... (n = 67962112)
     L = 47905787 (70.49%), R = 20056325 (29.51%)
     -----
     
     PROMPT>type hello.txt
     hello 1
     
     PROMPT>java FittsTwoThumb -d      (Note: word-freq file = hello.txt)
     *** hello ***
     1 : h : .R     : 0.306 -> 1.0*tFitts + 0.0*tMin
     2 : e : RL <0> : 0.088 -> max(0.306+0.088, 0.000+0.377)
     3 : l : LR <1> : 0.271 -> max(0.394+0.088, 0.306+0.359)
     4 : l : RR     : 0.176 -> tFitts
     5 : o : RR     : 0.270 -> tFitts
     6 : _ : RL <2> : 0.088 -> max(1.112+0.088, 0.394+0.377)
     t[] = 0.306, 0.394, 0.666, 0.842, 1.112, 1.200
     -----
 

Author:
Scott MacKenzie, 2001-2015

Constructor Summary
FittsTwoThumb()
           
 
Method Summary
static void main(java.lang.String[] args)
           
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FittsTwoThumb

public FittsTwoThumb()
Method Detail

main

public static void main(java.lang.String[] args)
                 throws java.io.IOException
Throws:
java.io.IOException