============================================================ A preliminary quasimode-based interface for Fenfire and Loom ============================================================ :Author: Benja Fallenstein :Date: 2003-02-17 :Revision: $Revision: 1.1 $ :Last-Modified: $Date: 2003/03/22 14:41:42 $ :Type: User Interface :Scope: Major :Status: Current Modes create mode errors. I've witnessed this in Gzz many times, where users would try to type text into a cell while in the wrong mode, creating a huge mess. Research indicates that even sophisticated users cannot keep track of modes always. When commands have habituated so that you do them without having to think about them, you cannot keep track of modes. Research also indicates that *quasimodes* never create mode errors. A quasimode is a mode that is in effect while some indicator switch is physically activated. For keyboard interaction, this means "while a modifier key is held down". The proposal below is a keyboard language for Loom 0.2, the "usable RDF editor" release, based on quasimodes. After experience with this release, we will re-evaluate the keyboard language. Specification ============= Text entered without pressing a modifier is simply normal text input. It goes where the text cursor is. If there is no text cursor, one is created at the end of the currently focused node or literal. The *Left* and *Right* keys are used to move the text cursor. If there is no text cursor, *Left* creates one at the beginning and *Right* creates one at the end of the text in the focused node or literal. Alt is used for the movement quasimode. That is, while you hold down Alt (and no other modifier), you can move around in the structure using the arrowsets known from zzstructure. Our arrowsets are 9-key: we have ``uiojkln,.`` and ``wersdfxcv``. This allows convenient rotation of the wheel view. Pressing Shift while Alt is held down enters a special command quasimode. The first key pressed after Shift specifies a command; the interpretation of the following keys depends on the command, but generally they are interpreted as arrow arguments to the command. For example, "N