XWand

XWand is a program that allows you to use an input device such as a wand to start, stop, and manipulate any application written to work in XWindows. XWand works by using The Diverse Toolkit(DTK) to obtain input from devices in an immersive environment. This immersive environment could be an iDesk or Cave. It works by using XTest extensions in conjunction with input from DTK.



XWAND is free (GNU) GPL) software, consisting of Application Programming Interfaces (APIs) and a collection of utility and example programs. It runs on GNU/Linux and IRIX systems. A short essay on the Benefits of Open Source software.

NOTE: XWand requires DTK to run.

Download XWand 1.0
Installation instructions:
gunzip XWand.tar.gz; tar xf Xwand.tar
cd XWand; make
After this Xwand should be built along with xwand-dso. An example of how to use both is included in the example subdirectory inside the XWand directory.

There is a program called dtk-xwand in DTK that has the some of the functionality that this program has right now and will probably exceed this program in functionality in the future.


In addition to just the XWand program there is also an XWand DSO that--when loaded into a DPF application--will stop the navigation for the current running application when the user defined program is started. The DSO will start navigation when the user defined application is stopped.


XWand works by listening for trigger button(s) to be pressed. You can use a config file to define what button(s) need to be pressed, what application to start (you can specify arguments to the application also).

Example configuration file w/ documentation

#This is a sample xwand config file written by Andrew A. Ray

#This is the path to the dpf dso's, dtk dso's, and sharedmemory segments
PATH /usr/local/diverse/encap/dpf-2.1.0/etc/dpf_DSOs/n32:/usr/local/diverse/encap/dtk-2.1.0/etc/dtk/augmentDSO:/tmp/dtkSharedMem
#This is the trigger button that will start and stop the gui
#In this example 0 and 3 are required to be pressed at the same 
#time to activate/deactivate  xwand 
TRIGGERBUTTON 0 3
#What display do you want xwand to manipulate your mouse on
#Make sure you DISPLAY environment variable is set to the same
#data value otherwise xwand will not function as you expected it to
DISPLAY :0.1
#Is the application you want to start in the current directory or not
#1 stands for yes, 0 stands for no
IN_CURRENT_DIR 0
#This command tells xwand what to do with button input 
#after the gui is started
#In this example button 0 is click, button 1 is press, button 2 is release
#These are the currently the only supported actions, and they can be put
#in any order that you wish, say release click press
WHENPRESSED click press release
#This is the segment that has data from the joystick fed into it
JOYSEGMENT joystick
#This is the segment that has data from the buttons fed into it
BUTTONSEGMENT buttons
#This is the application to start when the trigger button(s) are pressed
#You can put up to 10 arguments after the program name and they will
#be passed to the program when it is started
STARTAPP xlogo


Developed by Andrew A. Ray (anray2@vt.edu) with help from John Kelso, Ron Kriz, and Lance Arsenault.
Special thanks goes to Robert Stein for the X server control interface!