Building Input Configurations

This page gives a good overview of the functionality and possible uses of the Input Configurator.

Images showing interaction techniques specified as input configurations are complemented with videos showing the interaction techniques in use.

1. Drawing with a mouse

[the video] This video illustrates the Input Configurator GUI with a simple example: the user specifies how to draw with a mouse by connecting its physical mouse with a drawing tool. Adapters are used to convert from mouse's relative coordinates to absolute coordinates. Then, the input configuration is extended to use an additional adapter which displays a cursor.

2. Pressure-sensitive freehand drawing

[the video] This variant of the previous input configuration shows how capacities of special input devices can be exploited by connecting their additional channels. A parametrizable adapter allows to play with several sensitivities.

3. Bimanual line drawing

[the video] Interestingly, standard input configurations can be simplified by the use of advanced input devices. Here, part of an input configuration that specifies a conventional rubber-banding technique is modified to make use of an additional pointing device (graphical tablet). The two ends of the line are separatly controlled in a modeless way.

4. Integral control of an animated face

[the video] Here, an animated face applet has been modified to be configurable with ICon. As a result, a device such as a slider box can be used to control concurrently the numerous degrees of freedom of the application instead of using space-multiplexed widgets.

5. Pointing with a keyboard

So far, we have seen examples of how to increase the degree of control over interactive applications by exploiting additional input channels. ICon also allows to adapt to impoverished input such as when a standard device is missing. Here, arrow keys are used to control a pointer. An adapter has been built to control continuous values using "increase" and "decrease" commands.

6. Scrolling with speech commands

Here is another example of an input configuration built for accessibility. This example also shows how multiple existing applications can be configured by controlling them at the toolkit level. As a proof of concept we have interfaced Java Swing with ICon. This configuration allows all Swing scrollbars to be controlled with speech using commands such as "less" or "more". Scrollbars are selected using the standard Swing focus manager (SwFocus). The SpeechCmd device sends the index of the recognized command according to the command list entered in its properties box. Like in all previous examples, variants of this technique can be easily explored by testing and modifying the configuration.

7. Using a toolglass

[the video] ICon provides a predefined set of building blocks, from small adapters such as mathematical operators to more complex ones. Some adapters encapsulate full parametrizable interaction techniques, making it easy to add gesture recognition or see-through tools to an application without modifying it. This example shows the use of a toolglass for switching between different drawing tools.

8. The smooth cursor

[the video] An interaction technique is a way to perform a given task using a given input device. Under the ICon paradigm, it is more a way to map a given set of input devices to a given set of output devices using adapters. A wide range of standard or innovative interaction techniques can be built directly with the graphical editor. For example, we experimented with a new interaction paradigm we called Augmented Pointing. Augmented Pointing occurs when additional data processing and/or feedback is inserted between a physical pointing device and a logical pointer. One example is displaying a "low-level cursor" for lexical feedback together with a "high-level cursor" that sends modified mouse events. This example shows the use of low-pass filters between these two cursors.

9. The throwable cursor

[the video] One advantage of Augmented pointing is that it extends existing applications. This example shows how inserting an "inertia" adapter between the low-level and the hi-level cursor allows throwing GUI objects in any Swing application. Other augmented pointing techniques include application-dependent grids, vertically and horizontally constrained pointing, sub-pixel control, second-order pointer control, or speech-operated cursors.

10. Generalized Drag n Drop

[the video] This example goes even one step further in the design of application-independent interaction techniques. It only required the Swing interface with ICon to be extended with two additional adapters, shown in the image: The SwCommand applies commands such as "CopyValue" to sets of widgets. The SwGhost creates snapshots of widgets that can be sent to cursors to display drag&drop feedback.

11. End-user configurability

[the video] Input configurations built by the programmer can also be modified by the power user to better suit his needs. For example, a speech vocabulary or the mapping between brush attributes and the tablet pressure can be modified in the editor window by opening a property dialog or making simple reconnections.

Additional video examples are available on this page.