/* spk_priv.h
   review functions for the speakup screen review package.
   originally written by: Kirk Reiser and Andy Berdan.

  extensively modified by David Borowski.

    Copyright (C) 1998  Kirk Reiser.
    Copyright (C) 2003  David Borowski.

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
*/

#ifndef _SPEAKUP_KEYINFO_H
#define _SPEAKUP_KEYINFO_H

#define FIRST_SYNTH_VAR RATE
/* 0 is reserved for no remap */
#define SPEAKUP_GOTO 0x01
#define SPEECH_KILL 0x02
#define SPEAKUP_QUIET 0x03
#define SPEAKUP_CUT 0x04
#define SPEAKUP_PASTE 0x05
#define SAY_FIRST_CHAR 0x06
#define SAY_LAST_CHAR 0x07
#define SAY_CHAR 0x08
#define SAY_PREV_CHAR 0x09
#define SAY_NEXT_CHAR 0x0a
#define SAY_WORD 0x0b
#define SAY_PREV_WORD 0x0c
#define SAY_NEXT_WORD 0x0d
#define SAY_LINE 0x0e
#define SAY_PREV_LINE 0x0f
#define SAY_NEXT_LINE 0x10
#define TOP_EDGE 0x11
#define BOTTOM_EDGE 0x12
#define LEFT_EDGE 0x13
#define RIGHT_EDGE 0x14
#define SPELL_PHONETIC 0x15
#define SPELL_WORD 0x16
#define SAY_SCREEN 0x17
#define SAY_POSITION 0x18
#define SAY_ATTRIBUTES 0x19
#define SPEAKUP_OFF 0x1a
#define SPEAKUP_PARKED 0x1b
#define SAY_LINE_INDENT 0x1c
#define SAY_FROM_TOP 0x1d
#define SAY_TO_BOTTOM 0x1e
#define SAY_FROM_LEFT 0x1f
#define SAY_TO_RIGHT 0x20
#define SAY_CHAR_NUM 0x21
#define EDIT_SOME 0x22
#define EDIT_MOST 0x23
#define SAY_PHONETIC_CHAR 0x24
#define EDIT_DELIM 0x25
#define EDIT_REPEAT 0x26
#define EDIT_EXNUM 0x27
#define SET_WIN 0x28
#define CLEAR_WIN 0x29
#define ENABLE_WIN 0x2a
#define SAY_WIN 0x2b
#define SPK_LOCK 0x2c
#define SPEAKUP_HELP 0x2d
#define TOGGLE_CURSORING 0x2e
#define READ_ALL_DOC 0x2f
#define SPKUP_MAX_FUNC 0x30 /* one greater than the last func handler */

#define SPK_KEY 0x80
#define FIRST_EDIT_BITS 0x22

#define FIRST_SET_VAR SPELL_DELAY
#define VAR_START 0x40 /* increase if adding more than 0x3f functions */

/* keys for setting variables, must be ordered same as the enum for var_ids */
/* with dec being even and inc being 1 greater */
#define SPELL_DELAY_DEC VAR_START+0
#define SPELL_DELAY_INC SPELL_DELAY_DEC+1
#define PUNC_LEVEL_DEC SPELL_DELAY_DEC+2
#define PUNC_LEVEL_INC PUNC_LEVEL_DEC+1
#define READING_PUNC_DEC PUNC_LEVEL_DEC+2
#define READING_PUNC_INC READING_PUNC_DEC+1
#define ATTRIB_BLEEP_DEC READING_PUNC_DEC+2
#define ATTRIB_BLEEP_INC ATTRIB_BLEEP_DEC+1
#define BLEEPS_DEC ATTRIB_BLEEP_DEC+2
#define BLEEPS_INC BLEEPS_DEC+1
#define RATE_DEC BLEEPS_DEC+2
#define RATE_INC RATE_DEC+1
#define PITCH_DEC RATE_DEC+2
#define PITCH_INC PITCH_DEC+1
#define VOL_DEC PITCH_DEC+2
#define VOL_INC VOL_DEC+1
#define TONE_DEC VOL_DEC+2
#define TONE_INC TONE_DEC+1
#define PUNCT_DEC TONE_DEC+2
#define PUNCT_INC PUNCT_DEC+1
#define VOICE_DEC PUNCT_DEC+2
#define VOICE_INC VOICE_DEC+1

#endif
