[ Main Page ] [ About ] [ Design & Development ] [ Downloads ]
How to configure wayV
Configuring wayV version 0.3
============================
Author: Mike Bennett (smoog at stressbunny dot com)
Last Update: 14/08/2003


IMPORTANT NOTES:
- This HOWTO primarily focuses on the "wayv.conf" configuration
  file.
- See HOWTO-wayv-keymap for the second optional file. 
- All the configuration files can be edited with a text editor.


Contents
--------
- The Main Program "wayv"
- Different Gesture Matching Techniques
- Configuring Gestures & Actions
- Activating Gesture Capture & Processing (was Mouse Activation)
- Controlling The Display
- User Feedback
- More Information


The Main Program "wayv"
-----------------------
wayV consists of 3 files.

The first is called "wayv" - this is the program that does all 
the gesture matching, enables drawing the gestures on screen, turns
X & Y coordinates into gestures, etc. 

Its easy to use - just type "wayv" and if the configuration file 
"wayv.conf" is in the default (usually /usr/local/share) directory
it'll start. On the other hand if the configuration file isn't
found you'll have to specific where it is on the command line, 
e.g. "wayv /path/to/the/configuration/file/name.file"

There is a second configuration file, the keymap, usually
referenced by wayv.conf but not always used. It is searched for
in the same directory as wayv.conf and is normally called
DEFAULT.wkey (see HOWTO-wayv-keymap).


Different Gesture Matching Techniques
-------------------------------------
wayV has two different techniques for matching gestures, overtime
this will expand.

The key to set is Think, of which there are two possible options:

	1. Pda
		It works well and can recognize over 40 different
		gestures. It doesn't take into consideration the
		direction the gesture is drawn in. Note this will
		always find a matching gesture - even if its very
		baldy wrong.

	2. Pda & Vector
		Like Pda above except it takes direction into
		consideration. It works at the moment but further
		work is required.

		The direction is recorded in the Gesture sub-key
		vector, which is comma delimited and set-able to
		N, NE, E, SE, S, SW, W and NW 


Configuring Gestures & Actions
------------------------------
The main, and required, configuration file is called "wayv.conf".
When you read the words "configuration file" from here on presume
its wayv.conf.

In wayv.conf you'll primarily be interested in the Action sub-sections.

Every gesture has an action associated with it - to find out what 
action is associated with what gesture have a look at a Gesture
section - they start with the text "Gesture {" and end with 
the text "}", e.g.

	Gesture {
		name = "A";
		description = "A";
		shape =
		 0, 0, 0, 0, 1, 0, 0, 0
     		, 0, 0, 0, 1, 1, 1, 0, 0
		, 0, 0, 0, 1, 0, 1, 0, 0
		, 0, 0, 1, 0, 0, 1, 0, 0
		, 0, 1, 0, 0, 0, 0, 1, 0
		, 0, 1, 0, 0, 0, 0, 1, 0
		, 1, 1, 0, 0, 0, 0, 1, 1
		, 1, 0, 0, 0, 0, 0, 0, 1
		;
		vector = NE, SE;
		action = "Action A";
	}

Every Gesture section has a sub-key called "action =",
the text between the quotes (after the equal) is the Action 
section associated with the gesture.

The vector sub-key is a new addition in 0.2.

Every action section starts with "Action {" and ends with "}",
e.g.

	Action {
		name = "Action A";
		process = exec "netscape", wait "1", sendkey "l s Return";
		match = "";
	}

The action sub-key "name =" is how a gesture is matched with
an action. When Gesture.action = Action.name the action sub-key
"process =" is used to carry out commands.

The action sub-key "process =" can compose of five different
commands:

	1. exec "COMMAND TO EXECUTE GOES HERE"
		Starts a program

	2. warp
		Jumps the mouse back to the initial start position of
		a gesture

	3. delay "INTEGER OF SECONDS TO WAIT"
		Wait so many seconds (useful when combined with sendkey)
	
	4. kill
		Kill the last command executed by wayV, this is handy
		for canceling mismatched actions

	5. sendkey "SPACE DELIMITED ALIAS(ES) FROM KEYMAP FILE"
		Send a keypress to the active application or window
		manager. Its the same as a key been pressed on the
		keyboard.

		An example of a composite keypress is:
			sendkey "Control_L+c c"
		(see HOWTO-wayv-keymap for more information)
		
and there can be multiple commands each separated by a comma,
e.g. process = warp, exec "xcalc", sendkey "o n e";


Activating Gesture Capture & Processing (was Mouse Activation)
--------------------------------------------------------------
When using wayV you need to press specific key and mouse button
combinations to activate gesture capture. Once a gesture is
captured its checked to see if there are any associated actions.

The key in the configuration file to setup what activates the
gesture capture is the "Launch =" key. It can have multiple
parameters each separated by a ",". The parameters are:

	Mx (where x is any number greater than 0) = Which mouse
	                     button must be held down when
			     drawing a gesture
	SHIFT = Shift Key
	LOCK = Caps Lock On/Off
	CONTROL = Control Key
	MOD1, MOD2, MOD3, MOD4, MOD5 = Other keys which can
	                               be assigned with the
	                               Unix command 'xmodmap'.

An example of the setup wayV requires to begin gesture capture
when mouse button 1 is held down is:

	Launch = "M1";

Another example to begin gesture capture when the Shift key 
and mouse button 2 is held down is:

	Launch = "M2,SHIFT";

A final example for when the Shift key, the Control Key and
mouse button 3 is held down is:

	Launch = "M3,SHIFT,CONTROL";

Note: There CAN only be one mouse button used as part of
activation, i.e. you cannot hold down multiple mouse buttons 
but multiple keys pressed at once can be setup and used.


Controlling The Display
-----------------------
The display has been considerably improved and rewritten for
version 0.2.

The structure that has to contain the keys for the display
is called Pretty. We'll go through each key in it in turn,
note that some of the keys do interact with each other and
change the overall result:

	1. display
		This is the main key - controls what type of
		gesture input window, if any, appears. When a
		gesture input window appears the path followed
		by the pointer through it should be shown.

		Can be set to:
			- yes
				full screen input window that
				pops up on gesture activation
			- no
				no input window but the gestures
				are still capture on gesture
				activation
			- X, Y, WIDTH, HEIGHT
				always on screen input window

				X = Upper left hand corner
				    the input window starts
				    on
				Y = Upper left hand corner
				    the input window starts
				    on
				WIDTH = width of the input window
				HEIGHT = height of the input window

	2. managed
		Turns on or off whether the window manager attempts
		to control the input window. This is only relevant
		for input windows that has the X, Y, WIDTH, HEIGHT
		set.

			- yes
				input window is exactly like all the
				other applications on your desktop
			- no
				the input window cannot be moved or
				managed. This is handy for PDAs (personal
				digital assistants)

	3. color
		Not yet usable

	4. size
		If an input window is used this controls the width
		of the lines drawn by the gesture path.

	5. feedback
		A very handy feature which I think is quite handy. If
		its on a text box appears in the middle of the screen
		after a gesture is inputted.

		The text box tells the user what Action is matched with
		the inputed gesture.

			- yes
				Especially handy if used in combination
				with a gesture for the kill command (see
				above in "Configuration Gestures & Actions")

			- no
				no user feedback box

	6. wait
		Length of time the user feedback, if its on, appears
		on the screen.


More Information
----------------
Righto that should be enough to get people started. Have a look
at the wayV website (http://www.stressbunny.com/wayv) for more 
information - and at the mailing lists for help.


wayV is hosted on StressBunny.com