/* 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
