Nomon
Main Instructions Videos Papers Author

Nomon Keyboard Instructions (Pre-release version 0.4)

In brief

Download the tarball, extract the files, and enter the nkeyboard-0.4/keyboard subfolder. After running python keyboard.py 0 0 (or optionally python keyboard.py 0 0 window-width window-height) in this subfolder, the language model will load for some seconds; then the Nomon keyboard will appear. The clock corresponding to a text option appears immediately to the left of that option. To choose an option, press the space bar when the moving hand (the rotating black line) of the corresponding clock hits noon (the fixed vertical red line). Repeat until the whole screen flashes a minty green, signaling that a selection has been made. At the same time, the option you have chosen will be highlighted a darker green on the keyboard and the option text will appear in the lower lefthand text box. Now you may choose another option. Press Ctrl-Q or close the window to exit.

In full

The Keyboard

In full generality, Nomon is a method for selecting arbitrary points on your two-dimensional computer screen. However, one possible application of Nomon is writing text, and this application is illustrated in the accompanying code.

Once Nomon is loaded, each small rectangle in the central visual area represents a "key" on the keyboard. The key labels appear in bold and larger font. They range from a, b, c to the four non-alphabetic special keys: _, ., Delete, and Undo. Each letter of the alphabet is also surrounded by up to three word completions. All of these options are explained in more detail below.

Special characters

As you make selections on the keyboard, text will appear in the box in the lower lefthand corner. The four special keys affect this text much like their counterparts on a normal keyboard. The underscore key _ is just a representation of the space character. And . is just a period. Delete is a single-character backspace. If nothing appears in the text box, Delete has no effect. Otherwise, it will delete the last character in the box. On the other hand, Undo has no effect if nothing else has yet been selected -- a slightly different assumption than for Delete. Otherwise, it will undo the last selection. If the selection was a character, that character will be removed. If the selection was a word completion, all characters added during the selection will be removed. If the selection was a deletion, the lost character will be returned. In the first two cases, the latest selection appears in green text just below the Undo button to remind the user of the effect of Undo. In these cases, the text to be undone is also colored green in the main text box. In the Delete case, the word "Delete" appears in the same green text just below the Undo button, but there is no green text in the text box.

Word completions

At all times while writing with Nomon, a context is implicitly defined as the string of alphabetic characters to the left of the cursor. The words surrounding each alphabet key on the keyboard are the most probable words that begin with the concatenation of the context and that letter. For instance, suppose you have written "alphab". Then any words within key e will begin with "alphabe". If you have written "alphabet_so", then the words within the u key will begin with "sou". If you have written nothing, the words within each key will begin with that key's character. Only words that are likely given the context will appear, so often a key may contain no word completions. If a word is especially long, it will appear with a plus sign, +, in place of the string of characters that comprise the current context.

The Delete and Undo keys change the context consistent with the above description. If the text box contents are "alphabet_sou" before Delete is selected, the context will change from "sou" to "so" after Delete is selected. If the text box contents are "alphabet_soup_" before Delete is selected, the context will change from the empty string to "soup" after Delete is selected. After Undo is selected, the context reverts to its state before the last selection was made.

Graphics and operation

While Nomon is running, the visual display features a number of clocks. Each clock appears directly to the left of its associated selection. For instance, to choose the letter a, focus on the clock directly to the left of this letter. This clock, like all the others in the display, has a moving hand colored black and a fixed noon marker. Your press does not have to be perfect; just try to press as accurately as you can.

Repeat pressing in this manner until your selection has been made. You will know that a selection has been made when the screen flashes a minty green. The area around the selected option on the keyboard will turn a darker green. If your desired option does not acquire a darker green background when the screen flashes minty green, a mistake was made; try selecting Undo next. When a selection is made, that selection will also appear in green text underneath the Undo button; this text lets you know what action would be undone if you were to select this button next. If your selection was a letter or word completion, it will appear in green in the text box as well.

The number of presses it takes to make a selection is variable, roughly depending on how likely your selection is. For instance, the letter t is a very common letter at the start of a word; z is not. The color of the clock faces also (again roughly) shows you how close you are to your goal. Likely faces (given the context and your presses so far for this selection) are colored yellow; less likely faces are colored white. White faces can become yellow, and vice versa, after subsequent presses.

Manual settings

Application window size: Once you have entered the nkeyboard-0.4/keyboard subfolder, you can start the application in the usual way by entering python keyboard.py 0 0 at the command line. Alternatively, if you would like the application to adjust to fit within a window of size width-by-height pixels, you can start the application by entering python keyboard.py 0 0 width height at the command line. The sizes width and height should be integers. By default, widthxheight is 1280x1024.

Clock rotation speed: At any point while you are using Nomon, you can adjust the speed at which all the clock hands rotate via the "Clock rotation speed" slider in the top left corner of the application. For faster rotation, choose a larger number. For slower rotation, choose a smaller number. The choice can be made in one of two ways. From your keyboard, left-arrow presses will move the slider left (to the smaller numbers), and right-arrow presses will move the slider right (to the larger numbers). Alternatively, you can select and drag the slider left and right with your mouse in the usual way.

Text-to-speech: The Nomon Keyboard can generate text to speech output if you have festival installed on your machine (at usr/bin/festival). To toggle between hearing speech as you type and not, click the "Talk" checkbox with your mouse.

Click distribution learning: By default, the Nomon Keyboard learns the distribution of your click times around the red noon marker. A histogram of this distribution is shown in the bottom right corner. Learning this distribution helps the Nomon Keyboard adjust to help you write as quickly as possible. If you would like to turn learning on or off, toggle the "Learn" checkbox with your mouse. Every time you start the Nomon Keyboard with python keyboard.py 0 0, previous learned distributions are lost. If you start with an incremented second number, python keyboard.py 0 (n+1), the learned distribution from the last time you used the Nomon Keyboard with command python keyboard.py 0 n is loaded.

Selection flash: As mentioned above, by default Nomon flashes minty green and pauses very briefly when you have made a selection. Once you are an experienced user, you may not wish to see this flash anymore. To toggle between seeing the flash and not seeing the flash, click the "Pause" checkbox with your mouse.

Nomon Draw Instructions (Pre-release version 0.1)

In brief

Download the tarball, extract the files, and enter the ndraw-0.1 folder. After running python ndraw.py in this folder, the Nomon Draw window will appear. Each clock in the central 20x20 grid corresponds to a pixel. The clock corresponding to each of the drawing-menu options on the right appears immediately to the left of its option. To choose either a pixel or a menu option, press the space bar when the moving hand (the rotating black line) of the corresponding clock hits noon (the fixed vertical red line). Repeat until the whole drawing canvas flashes a minty green, signaling that a selection has been made. At the same time, the pixel or option you have chosen will be highlighted a darker green. Now you may choose another option. Press Ctrl-Q or close the window to exit.

In full

The Canvas

In full generality, Nomon is a method for selecting arbitrary points on your two-dimensional computer screen. However, one possible application of Nomon is drawing, and this application is illustrated in the accompanying code.

Once Nomon is loaded, each clock in the central visual area corresponds to the pixel at its center. These clocks are arranged in a 20x20 grid. The default drawing method in Nomon Draw is a line. Each time you select a clock in the clock grid (after the first selection), you add a line between the previously selected pixel and the newly selected pixel. The last selected pixel (if any pixel has been selected so far) will be surrounded with a dark green outline until a new pixel is selected.

Start a new line series

By selecting the Start Line Series option in the drawing menu in the middle of the righthand side of the application, you can start a new line series. That is, the next pixel you select will not be connected to any previous selections. Until another shape is selected from the menu, all subsequent selected pixels will be part of this new line series.

Special shapes

Instead of drawing a line between two points, you can draw a rectangle or oval. A rectangle is defined by the positions of two opposite corners, and an oval is defined by two opposite corners of a bounding rectangle. To draw a shape, first select the desired shape type from the menu in the middle of the righthand side. Then select pixels at any two opposite corners of the shape to draw the shape.

Shapes can either be transparent inside or filled with a solid color. By selecting the Turn On Fill/Turn Off Fill option in the lower right drawing menu, you can toggle whether a shape is filled when you draw it. If Turn Off Fill is available in the menu, the fill is currently turned on, and vice versa.

Undo

Nomon Draw has an Undo Last function in the lower right drawing menu. Choosing Undo Last erases any drawing that was made the last time a new pixel was selected on the canvas. There is no change to the drawing if nothing was drawn during the last pixel selection. In either case, the penultimate pixel selection will be highlighted after the Undo Last selection. And drawing will proceed from this pixel.

Graphics and operation

While Nomon is running, the visual display features a number of clocks. Each clock in the central canvas appears directly above its associated pixel; each clock in the lower righthand drawing menu appears directly to the left of its associated option. For instance, to choose the option Turn On Line, focus on the clock directly to the left of this text. This clock, like all the others in the display, has a moving hand colored black and a fixed noon marker. Your press does not have to be perfect; just try to press as accurately as you can.

Repeat pressing in this manner until your selection has been made. You will know that a selection has been made when the screen flashes a minty green. The area around the selected option on the keyboard will turn a darker green. If your desired option does not acquire a darker green background when the screen flashes minty green, a mistake was made; try selecting Undo Last next.

The number of presses it takes to make a selection is variable, roughly depending on how likely your selection is. For instance, the letter t is a very common letter at the start of a word; z is not. The color of the clock faces also (again roughly) shows you how close you are to your goal. Likely faces (given the context and your presses so far for this selection) are colored yellow; less likely faces are colored white. White faces can become yellow, and vice versa, after subsequent presses.

Manual settings

Clock rotation speed: At any point while you are using Nomon, you can adjust the speed at which all the clock hands rotate via the "Clock rotation speed" slider in the bottom left corner of the application. For faster rotation, choose a larger number. For slower rotation, choose a smaller number. The choice can be made in one of two ways. From your keyboard, left-arrow presses will move the slider left (to the smaller numbers), and right-arrow presses will move the slider right (to the larger numbers). Alternatively, you can select and drag the slider left and right with your mouse in the usual way.

Click distribution learning: By default, the Nomon Keyboard learns the distribution of your click times around the red noon marker. A histogram of this distribution is shown in the bottom right corner. Learning this distribution helps the Nomon Keyboard adjust to help you write as quickly as possible. If you would like to turn learning on or off, toggle the "Learn" checkbox (at the bottom of the application) with your mouse. Every time you start the Nomon Keyboard with python ndraw.py, previous learned distributions are lost.