161 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
	
		
			5.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
 | 
						|
	NEW FEATURE IN BETA-2 OVER BETA-1 (ONLY TWIDDLER CHANGES)
 | 
						|
 | 
						|
Fixed typo in twiddler.c which prevented compiling
 | 
						|
Fixed segfault when using more than one thumb-key at a time
 | 
						|
Should fix problem when non-ascii chars appear in the cfg file
 | 
						|
Changed algorithm for dhouble-click
 | 
						|
Added shift etc. support
 | 
						|
Added VT change and Execution of commands
 | 
						|
 | 
						|
	DETAILED DESCRIPTION OF GPM SUPPORT FOR THE TWIDDLER KEYBOARD
 | 
						|
 | 
						|
 | 
						|
Gpm-1.14 and later support the twiddler keyboard, by HandyKey Corp.
 | 
						|
(the keyboard is described at www.handykey.com). This document
 | 
						|
describes the current status of the gpm decoder.
 | 
						|
 | 
						|
	Mouse support
 | 
						|
	=============
 | 
						|
 | 
						|
	Motion
 | 
						|
	------
 | 
						|
The mouse functionality of the keyboard is supported by gpm. Three
 | 
						|
decoders are currently available:
 | 
						|
 | 
						|
	- a "static" decoder, which turns twiddler position to mouse
 | 
						|
		displacement.  The decoder locks the mouse when the
 | 
						|
		``mouse'' button is pressed and any further motion
 | 
						|
		moves the cursor, as long as ``mouse'' is kept down.
 | 
						|
		This is compiled if "-DTWIDDLER_STATIC" (for example
 | 
						|
		by invoking ``make CC="gcc -DTWIDDLER_STATIC"''.
 | 
						|
 | 
						|
	- a "ballistic" decoder, which turns twiddler position to
 | 
						|
		mouse speed. If the keyboard is hole vertical the mouse
 | 
						|
		cursor won't be moved. To compile this decoder
 | 
						|
		-DTWIDDLER_BALLISTIC must be used.
 | 
						|
 | 
						|
	- a "mixed" decoder, that behaves like the static one when the
 | 
						|
		device is near-to-vertical and like the ballistic one
 | 
						|
		for large inclination. This is compiled by default
 | 
						|
 | 
						|
 | 
						|
	Problems
 | 
						|
	........
 | 
						|
 | 
						|
The current decoder doesn't allow tuning the parameters at run time.
 | 
						|
I plan to implement twiddler chords to change the resolution,
 | 
						|
acceleration and threshold of the mixed decoder, and the other ones as
 | 
						|
well. If different people routinely use different decoders, I'll make
 | 
						|
it possible to choose which decoder to run.
 | 
						|
 | 
						|
I will also implement the chord to switch up/down.
 | 
						|
 | 
						|
 | 
						|
	Buttons
 | 
						|
	-------
 | 
						|
 | 
						|
The first (left) mouse button is bound to the right key ("a", green,
 | 
						|
R000).  The other buttons are bound to M000 ("e", blue) and L000
 | 
						|
("SP", red). This is consistent with the twiddler manual.
 | 
						|
 | 
						|
To ease using the fingers like with conventional mice, keys 0R00 and
 | 
						|
00R0 (i.e., "b" and "c") are bound to the middle and right button as
 | 
						|
well.
 | 
						|
 | 
						|
Since someone prefers to reverse the order of the keys (i.e., L000 is
 | 
						|
the left mouse button), they will use "-B 321" on the gpm command
 | 
						|
line. To ease them, 0L00 is bound to the middle button, and 00L0 is
 | 
						|
bound to the *left* button. Thus, with "-B 321" it will be the right
 | 
						|
button.
 | 
						|
 | 
						|
In summary:
 | 
						|
 | 
						|
	Left button (B1):   R000 R000
 | 
						|
	Middle button (B2): M000 0R00
 | 
						|
	Right button (B3):  L000 00R0
 | 
						|
 | 
						|
For people using "-B 321"
 | 
						|
 | 
						|
	Left button (B1):   L000 L000
 | 
						|
	Middle button (B2): M000 0L00
 | 
						|
	Right button (B3):  R000 00L0
 | 
						|
 | 
						|
 | 
						|
 | 
						|
	Problems
 | 
						|
	........
 | 
						|
 | 
						|
None, by now.
 | 
						|
 | 
						|
 | 
						|
	Keyboard support
 | 
						|
	================
 | 
						|
 | 
						|
	Configuration file
 | 
						|
	------------------
 | 
						|
 | 
						|
The keyboard map is stored in run-time tables within gpm. There is no
 | 
						|
precompiled table, so a configuration file is needed. I chose not to
 | 
						|
precompile values because that would mean to pre-parse a configurazion
 | 
						|
file, and provide documentation as well. Using a compulsory
 | 
						|
configuration file reliefs my workload :-)
 | 
						|
 | 
						|
The file "gpm-twiddler.conf" that appears in the gpm configuration
 | 
						|
includes the default keyboard map, and can be used right away. If the
 | 
						|
file is not in place, gpm will complain about its absence. By default
 | 
						|
the file must live in /usr/etc (or /usr/local/etc, or whatever you
 | 
						|
gave as a prefix to ./configure). The behaviour is similar for
 | 
						|
different installation prefixes. The file is not installed by "make
 | 
						|
install".  If the file is missing, gpm will exit producing a message
 | 
						|
like this:
 | 
						|
 | 
						|
	./gpm: /usr/etc/gpm-twiddler.conf: No such file or directory
 | 
						|
 | 
						|
The distributed configuration file includes its own documentation.
 | 
						|
 | 
						|
If you want to add keys to the default file, you can avoid editing it
 | 
						|
by writing a "gpm-twiddler.user" file and putting it in the same
 | 
						|
directory as gpm-twiddler.conf. Gpm will read both files, in sequence,
 | 
						|
but won't complain if gpm-twiddler.user doesn't exist.
 | 
						|
 | 
						|
Gpm will print an error message for any incorrect line in any of the
 | 
						|
configuration files: error messages include the file name and the
 | 
						|
line number where the error appears, as well as a description of the
 | 
						|
type of error. If any error is encountered, gpm will exit.
 | 
						|
 | 
						|
The daemon will print a warning message for any redefined key, but will
 | 
						|
use the new definition. Therefore, if you want to redefine keys in your
 | 
						|
user file, just redirect standard error to /dev/null after checking
 | 
						|
you are willing to override default definitions.
 | 
						|
 | 
						|
 | 
						|
	General information
 | 
						|
	-------------------
 | 
						|
 | 
						|
A key press is reported when any key of the chord is released: this
 | 
						|
avoides reporting false keys when a multi-key chord is being composed.
 | 
						|
 | 
						|
The twiddler driver in gpm implements auto-repeat. Auto-repeat is
 | 
						|
invoked by double-clicking a chord and keeping it pressed. If the
 | 
						|
double-click takes more than .3 seconds, it won't be considered a
 | 
						|
double-click; auto-repeat will start .5 seconds after the
 | 
						|
double-click.
 | 
						|
 | 
						|
Gpm unblanks the screen when keys are composed using the twiddler.
 | 
						|
 | 
						|
 | 
						|
	Problems
 | 
						|
	--------
 | 
						|
 | 
						|
Gpm doesn't currently report keypresses to the X server. You should
 | 
						|
use other twiddler drivers for Linux if you need this functionality.
 | 
						|
For example get the driver by Jeff Levine (there is a link to the
 | 
						|
driver in www.handykey.com).
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 | 
						|
I would like to thank HandyKey Corp. for sending a twiddler keyboard
 | 
						|
to me and Torben Fjerdingstad for his help in testing out the driver.
 |