This file is intended to give you an overview of the default keys used
by speakup for it's review functions.  You may change them to be
anything you want but that will take some familiarity with key
mapping.

We have remapped the insert or zero key on the keypad to act as a
shift key.  Well, actually as an altgr key.  So in the following list
InsKeyPad-period means hold down the insert key like a shift key and
hit the keypad period.

KeyPad-8		Say current Line
InsKeyPad-8		say from top of screen to reading cursor.
KeyPad-7		Say Previous Line (UP one line)
KeyPad-9		Say Next Line (down one line)
KeyPad-5		Say Current Word
InsKeyPad-5		Spell Current Word
KeyPad-4		Say Previous Word (left one word)
InsKeyPad-4		say from left edge of line to reading cursor.
KeyPad-6		Say Next Word (right one word)
InsKeyPad-6		Say from reading cursor to right edge of line.
KeyPad-2		Say Current Letter
InsKeyPad-2		say current letter phonetically
KeyPad-1		Say Previous Character (left one letter)
KeyPad-3		Say Next Character (right one letter)
KeyPad-plus		Say Entire Screen
InsKeyPad-plus		Say from reading cursor line to bottom of screen.
KeyPad-Minus		Park reading cursor (toggle)
InsKeyPad-minus		Say character hex and decimal value.
KeyPad-period		Say Position (current line, position and console)
InsKeyPad-period	say colour attributes of current position.
InsKeyPad-9		Move reading cursor to top of screen (insert pgup)
InsKeyPad-3		Move reading cursor to bottom of screen (insert pgdn)
InsKeyPad-7		Move reading cursor to left edge of screen (insert home)
InsKeyPad-1		Move reading cursor to right edge of screen (insert end)
ControlKeyPad-1		Move reading cursor to last character on current line.
KeyPad-Enter		Shut Up (until another key is hit) and sync reading cursor
InsKeyPad-Enter		Shut Up (until toggled back on).
InsKeyPad-star n<x|y>	go to line (y) or column (x). Where 'n' is any
		allowed value for the row or column for your current screen.
KeyPad-/		Mark and Cut screen region.
InsKeyPad-/		Paste screen region into any console.

Hitting any key while speakup is outputting speech will quiet the
synth until it has caught up with what is being printed on the
console.

