The Flipside of Interface Modality

Consider the definition of interface modality, as per Jef Raskin (The Humane Interface, chapter 3, section 2):

A human-machine interface is modal with respect to a given gesture when
(1) the current state of the interface is not the user's locus of attention and
(2) the interface will execute one among several different possible responses to the gesture, depending on the system's current state.

Flip it around, and you get:

A human-machine interface is co-modal with respect to given end-state when
(1) the gestures required to establish the desired state depend on properties of the interface's initial current state
(2) that the user wouldn't naturally pay attention to.

We can further define the degree of co-modality to be the amount of extraneous information the user is forced to attend to on account of bad interface design.

For example, "alt-tabbing" to give a certain window the input focus in a multi-window system exhibits a ridiculous degree of co-modality. The number of times you need to tap while holding down depends not only on which window you want to focus, but on the following extraneous details:



and perhaps worst of all,


There's a better set of keybindings for moving the input focus around, provided in the default configuration of the i3 window manager. + will move focus from the currently focused window to an adjacent window in the direction corresponding to . This is still a co-modal interface. The sequence of gestures required to reach the target window depends on the spatial layout of the windows, which is extraneous information, but at least it isn't _hidden_ extraneous information.

i3 User's Manual

The keybindings I've been using for the past four years are better still. Imagine that the screen consists of a 3x3 grid of cells. Observe that a typical keyboard includes a numpad, with its own 3x3 grid of digits. Bind + to a script that gives focus to the window occupying the grid cell corresponding to that digit's position in the numpad. The number, position, and focus state of any other windows are irrelevant, and with this set of keybinds, I don't have to take them into account.


Source