Employing Usability, Efficency and Evolvability in the CEXI Toolkit
Date
2005-04-29
Authors
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