public class ScanningKeyboardExperiment
extends java.lang.Object
ScanningKeyboardExperiment |
The default parameter settings are read from a configuration file called
ScanningKeyboardExperiment.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:
Parameter Description Participant code Identifies the current participant. This is used in forming the names for the output data files. Also, the sd2 output data file includes a column with the participant code.
Condition code An arbitrary code used to associate a test condition with this invocation. This parameter might be useful if the software is used in an experiment where a condition is not inherently part of the application (e.g., Gender → male, female, Input Device → gamepad, keyboard). The condition code is used in forming the name for the output data file. Also, the sd2 output data file contains a column with the condition code.
Session code Identifies the session. Useful if testing proceeds over multiple sessions to gauge the progression of learning. Note: The setup dialog does not include an entry for "Block code". The block code is generated automatically by the software.
Number of phrases Specifies the number of phrases presented to the participant in the current block.
Scanning interval The time in milliseconds for each scan step. Applies both for row scanning and column scanning.
Scan delay A delay time in milliseconds that is inserted each time the Spacebar key is pressed. Applies both when Spacebar is pressed during row scanning (to switch to column scanning) and when Spacebar is pressed during column scanning (to select a character or word and then revert to row scanning). The added delay gives the user a little extra time to adjust to the new scanning mode.
Phrases file Specifies a file containing phrases of text to be presented to participants for entry. Phrases are drawn from the file at random. Typically, phrases2.txt is used. This is the phrase set published by MacKenzie and Soukoreff in 2003 (click here).
Show presented text during input A checkbox item that determines whether or not the presented text is visible during entry of a phrase. Either way, the text phrase appears at the beginning of a trial. If this option is unchecked, the phrase will disappear when the first keystroke is entered.
Audio on If on, audible "clicks" are heard during row and column scan steps and when the Spacebar is pressed.
Keyboard A drop-down list to select the scanning keyboard for the current invocation. The options currently supported are as follows: (click to enlarge)
Qwerty Note: The optimized layout above is one of many such designs aimded at reducing the average number of scan steps required for each character of text produced. Consult the reference at the top of this API for details on this and other optimized layouts for scanning keyboards.
Custom (select below)
Custom keyboard If the "Custom" option is chosen above, this button is clicked to launch a file chooser to select a text file containing the definition of a custom keyboard. Each key in a scanning keyboard is defined by seven parameters:
- Symbol — the text that appears on the key (Exception: "WORD" is used if the key is used to present candidate words for keyboards using word prediction and completion)
- rowIdx — the row index for the corresponding key
- colIdx — the column index for the corresponding key
- x — the relative x position of the key
- y — the relative y position of the key
- width — the relative width of the key
- height — the relative height of the key
Note: The last four values above are multiplied by default key width and key height constants that are embedded in the app.
Click here to see an example custom keyboard. As a learning aide, this custom keyboard is the same as the Qwerty_WP keyboard that appears in the Keyboard drop-down list.
Keyboard scale Selects the scale of the keyboard relative to the default key width and key height constants embedded in the application.
A phrase is drawn at random from the specified phrases file and presented for input. After pressing the Spacebar, scanning begins, row by row. The timing of user input begins when scanning begins (after the initial press of the Spacebar key).
When the row containing the desired letter is highlighted (below, left), the user presses the Spacebar to begin scanning within the row. This begins column scanning. When the key bearing the desired letter is highlighted (below, center), the user presses the Spacebar again to select the letter. The letter is added to the transcribed text phrase and scanning begins anew (below, right). Note that it takes two presses of the Spacebar to enter each text character.
After entering the complete phrase, the user inputs "Enter" (by pressing the Spacebar when the Enter key is highlighted). A pop dialog appears, showing the presented and transcribed text phrases and some user performance measures. Below is an example.
The program terminates after entry of the last phrase in a block.
Some of the keyboards (See the setup parameter for "Keyboard", above) include word prediction and completion. In this case, a series of keys are used to display candidate words as entry proceeds. The candidates are the most likely words matching the current word stem, based on an embedded word-frequency list, or dictionary. The dictionary contains about 10,000 words. Note that at the beginning of a phrase and between words the candidates are simply the most common words in English (since the word stem is empty).
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. Below is an example of how the data in the sd2 file might look after inporting into Microsoft Excel: (click to enlarge)
Several user performance measures in the sd2 file are potentially useful as dependent variables in a user study. Speed (wpm) and Error Rate (%) are well known in research on text entry methods. The metric called SPC (scan steps per character) is computed as
scan_steps / number_of_characters_in_transcribed_text
The numerator is the actual number of scan steps logged during entry of the current phrase. SPC is the scanning-keyboard equivalent of KSPC (keystrokes per character), which is commonly used for keyboards using physical keys for input.
Efficiency is computed as
scan_steps_min / scan_steps x 100
Here, the numerator is the minimum number of scan steps possible for the current text phrase. If Efficiency = 100%, the phrase was inputted with each character or word entered correctly and at the earliest opportunity (i.e., with no errors that were corrected and with no missed opportunities). If Efficiency < 100%, the user either made one or more errors that were corrected or missed some opportunities to enter the desired character or word at the earliest opportunity. Note that the Efficiency measure is only meaningful if the transcribed text is error free.
Additional measures include Presses_of_Bksp, Presses_of_Word_Delete, Row_wrap_arounds, and Col_wrap_arounds. Presses_of_Bksp and Presses_of_Word_Delete are the number of times the named key was pressed during input of the current phrase. Obviously, Bksp is used to correct errors. Word_Delete (if present) is pressed to delete the last word entered. This is particularly useful with keyboards using word prediction and word completion. Having entered the wrong word, the error is more quickly corrected using the Word_Delete key rather using multiple presses of the Bksp key.
The Row_wrap_arounds and Col_wrap_arounds measures indicate the number of times scanning wrapped around, either during row scanning or column scanning, respectively. When scanning wraps around, it means the user missed an opportunity, either to select a row or to select a column (character, word, or command). Missed opportunities indicate inefficient input and may occur because scanning is too fast for the user to make a selection, given the previous selection.
Actual output files use "ScanningKeyboardExperiment" as the base filename. This is followed by
the participant code, the condition code, the keyboard code, the session code, and the block
code, for example, ScanningKeyboardExperiment-P01-C01-ABC_WP-S01-B01.sd1
.
Constructor and Description |
---|
ScanningKeyboardExperiment() |
Modifier and Type | Method and Description |
---|---|
static void |
main(java.lang.String[] args) |