Employing Usability, Efficency and Evolvability in the CEXI Toolkit

Date
2005-04-29
Journal Title
Journal ISSN
Volume Title
Publisher
Abstract
Computer displays are expanding beyond the upright desktop and towards personal devices such as Tablet PCs and large public displays (such as walls and tables). These different form factors require researchers to develop suitable interaction techniques. The fundamental problem is that existing development environments assume that everyone will using a mouse for all pointing input. Thus most applications are not able to take advantage of the extra features provided by novel input devices such as the point sizes provided by the Smart Technologies DViT Board. Most input device developers provide Software Development Kits (SDKs) written with legacy C++ code and different SDKs provide different APIs making it hard to port code written for one input device to another. This paper describes the Centralized External Input (CEXI) toolkit, a toolkit that supports the rapid prototyping of applications with a variety of novel input devices. Since this is a third generation tool, I wanted to the toolkit to be usable, efficient and evolvable. These are three lessons (or patterns) gleamed from my experiences and the experiences of other toolkit developers. To make the toolkit API easy to use, I limit the assumptions made in the API, for example I do not expect programmers to know how to traverse an object oriented class hierarchy of different input events, instead I provide all the important event information in a single monolithic event argument. To make the toolkit efficient, I use event queueing in the control panel to control the rate of events per second and I use quenching in both the input forwarder and the client to ensure that they receive only the information that they are interested in. Finally, I make the toolkit evolvable by making the source code available and making it easy for third parties to develop their own input forwarders.
Description
Keywords
Computer Science
Citation