Class SAKExperiment

java.lang.Object
  extended by SAKExperiment

public class SAKExperiment
extends java.lang.Object

SAKExperiment - software for a text entry experiment using a scanning ambiguous keyboard (SAK).

A scanning ambiguous keyboard is a an on-screen virtual keyboard. The keyboard combines the important features of scanning keyboards (input using a single physical switch or key) and ambiguous keyboards (>1 letter per key). References 1 and 2 below describe the conceptual and design issues as well as the initial evaluations of SAK. Reference 3, 4, and 5 describe follow-on evaluations.

Related references

  1. The one-key challenge: Searching for a fast one-key text entry method , by MacKenzie (ASSETS 2009).

  2. SAK: Scanning ambiguous keyboard for efficient one-key text entry , by MacKenzie and Felzer (TOCHI 2010).

  3. BlinkWrite: Efficient text entry using eye blinks , by MacKenzie and Ashtiani (UAIS 2010).

  4. Qanti: A software tool for quick ambiguous non-standard text input , by Felzer, MacKenzie, Beckerle, and Rinderknecht (ICCHP 2010).

  5. BlinkWrite2: An improved text entry method using eye blinks , by Ashtiani and MacKenzie (ETRA 2010).

Running the experiment software

Click here for instructions on launching/running the application.

Setup parameters

Upon launching, the application presents a setup dialog:

The default parameter settings are read from a configuration file called SAKExperiment.cfg. This file is created automatically when the application is launched for the first time. The default parameter settings may be changed through the setup dialog. The setup parameters are as follows:

Program operation

After selecting OK, the program launches and presents a scanning ambiguous on-screen keyboard. The keyboard has two scanning regions, one for letter selection and one for word selection. Physical input uses the spacebar on the system's keyboard.

The letter-selection region organizes letters alphabetically on n virtual keys with more than one letter per key, as per the letter-to-key assignments specified in the setup dialog. One additional virtual key is added for the SPACE character.

In operation, the keys are sequentially highlighted ("scanned"). The user selects letters by pressing the spacebar on the system's keyboard when the on-screen key bearing the desired letter is highlighted. Selection continues in this manner until the word is spelled (or earlier, if the word appears in the word list). At the end of letter selection, the user selects SPACE (by pressing the spacebar when the [space] on-screen key is highlighted).

When the user selects SPACE, scanning enters the word-selection region. In this region, scanning proceeds through a list of candidate words, ordered by their probability in English. When the desired word is highlighted, the user selects it. The word is added to the transcribed text followed by a SPACE character. Scanning then reverts to the letter-selection region for input of the next word.

Below are two screen snaps of the application. The first shows letter selection. Scanning proceeds in a repeating, left-to-right pattern.

Unlike conventional scanning keyboards, scanning does not "reset" upon selection, but, rather, continues with the next key. In first the image above, the SPACE key is highlighted. The user is entering "abandoned" and has correctly selected the first seven letters. The key selections appear as 1112122. (The on-screen keys are numbered from 1, on the left.) At this point, the desired word appears in the word selection region.

In the second screen snap, the user has selected SPACE and scanning has entered the word-selection region. Scanning proceeds through the list of candidate words. As seen, the desired word ("cookies") appears in the 7th position. The 4th word is currently highlighted. The user must wait and then press the spacebar when the highlight reaches the desired word. Doing so selects the word and adds it the transcribed text field, just below the presented text field.

If a mistake is made, a long-press on the spacebar serves as a BACKSPACE. The duration of the long-press must equal or exceed the scanning interval. When a long-press is detected either the current keystrokes are deleted, if entry is in the middle of a word, or the last word is deleted, if entry is between words.

The application is intended for demonstrations and experimental testing. Phrases are selected at random from the phrases file specified in setup. The default is phrases2.txt. The user enters the phrase while performance data are collected. Timing begins on the first keystroke and ends when the last word in the phrase is entered.

Since there is no ENTER key, the test for end-of-phrase is to compare the length of the presented and transcribed text strings at the end of each word of input. When the length of the transcribed text equals or exceeds the length of the presented text, an end-of-phrase is registered.

A popup window presents summary statistics at the end of each phrase. An example is shown below.

The program terminates after entry of the last phrase in a block.

Output data files

At the end of each block, data are written to two "summary data" (sd) files. The "sd1" file contains data on a per-keystroke basis, one line per keystroke. The "sd2" file contains data on a per-phrase basis, one line per phrase. Example data files follow:

The data are full-precision, comma-delimited. Importing into a spreadsheet application provides a convenient method to examine the data and do follow-on analyses. Click here to open Microsoft Excel to view the data in the example files above.

Actual output files use "SAKExperiment" as the base filename. This is followed by the participant code, the condition code, the session code, and the block code, for example, SAKExperiment-P01-C01-S01-B01.sd1.

Miscellaneous

When using this program in an experiment, it is a good idea to terminate all other applications and disable the system's network connection. This will maintain the integrity of the data collected and ensure that the program runs without hesitations.

Author:
Scott MacKenzie, 2008-2014

Constructor Summary
SAKExperiment()
           
 
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

SAKExperiment

public SAKExperiment()
Method Detail

main

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