/* vi:set ts=8 sts=4 sw=4 noet:
 *
 * VIM - Vi IMproved	by Bram Moolenaar
 *
 * Do ":help uganda"  in Vim to read copying and usage conditions.
 * Do ":help credits" in Vim to see a list of people who contributed.
 */

/*
 * Keycode definitions for special keys.
 *
 * Any special key code sequences are replaced by these codes.
 */

/*
 * For MSDOS some keys produce codes larger than 0xff. They are split into two
 * chars, the first one is K_NUL (same value used in term.h).
 */
#define K_NUL			(0xce)	/* for MSDOS: special key follows */

/*
 * K_SPECIAL is the first byte of a special key code and is always followed by
 * two bytes.
 * The second byte can have any value. ASCII is used for normal termcap
 * entries, 0x80 and higher for special keys, see below.
 * The third byte is guaranteed to be between 0x02 and 0x7f.
 */

#define K_SPECIAL		(0x80)

/*
 * Positive characters are "normal" characters.
 * Negative characters are special key codes.  Only characters below -0x200
 * are used to so that the absolute value can't be mistaken for a single-byte
 * character.
 */
#define IS_SPECIAL(c)		((c) < 0)

/*
 * Characters 0x0100 - 0x01ff have a special meaning for abbreviations.
 * Multi-byte characters also have ABBR_OFF added, thus are above 0x0200.
 */
#define ABBR_OFF		0x100

/*
 * NUL cannot be in the input string, therefore it is replaced by
 *	K_SPECIAL   KS_ZERO	KE_FILLER
 */
#define KS_ZERO			255

/*
 * K_SPECIAL cannot be in the input string, therefore it is replaced by
 *	K_SPECIAL   KS_SPECIAL	KE_FILLER
 */
#define KS_SPECIAL		254

/*
 * KS_EXTRA is used for keys that have no termcap name
 *	K_SPECIAL   KS_EXTRA	KE_xxx
 */
#define KS_EXTRA		253

/*
 * KS_MODIFIER is used when a modifier is given for a (special) key
 *	K_SPECIAL   KS_MODIFIER	bitmask
 */
#define KS_MODIFIER		252

/*
 * These are used for the GUI
 *	K_SPECIAL   KS_xxx	KE_FILLER
 */
#define KS_MOUSE		251
#define KS_MENU			250
#define KS_VER_SCROLLBAR	249
#define KS_HOR_SCROLLBAR	248

/*
 * These are used for DEC mouse
 */
#define KS_NETTERM_MOUSE	247
#define KS_DEC_MOUSE		246

/*
 * Used for switching Select mode back on after a mapping or menu.
 */
#define KS_SELECT		245
#define K_SELECT_STRING		(char_u *)"\200\365X"

/*
 * Used for tearing off a menu.
 */
#define KS_TEAROFF		244

/* Used for JSB term mouse. */
#define KS_JSBTERM_MOUSE	243

/* Used a termcap entry that produces a normal character. */
#define KS_KEY			242

/* Used for the qnx pterm mouse. */
#define KS_PTERM_MOUSE		241

/* Used for click in a tab pages label. */
#define KS_TABLINE		240

/* Used for menu in a tab pages line. */
#define KS_TABMENU		239

/* Used for the urxvt mouse. */
#define KS_URXVT_MOUSE		238

/* Used for the sgr mouse. */
#define KS_SGR_MOUSE		237

/*
 * Filler used after KS_SPECIAL and others
 */
#define KE_FILLER		('X')

/*
 * translation of three byte code "K_SPECIAL a b" into int "K_xxx" and back
 */
#define TERMCAP2KEY(a, b)	(-((a) + ((int)(b) << 8)))
#define KEY2TERMCAP0(x)		((-(x)) & 0xff)
#define KEY2TERMCAP1(x)		(((unsigned)(-(x)) >> 8) & 0xff)

/*
 * get second or third byte when translating special key code into three bytes
 */
#define K_SECOND(c)	((c) == K_SPECIAL ? KS_SPECIAL : (c) == NUL ? KS_ZERO : KEY2TERMCAP0(c))

#define K_THIRD(c)	(((c) == K_SPECIAL || (c) == NUL) ? KE_FILLER : KEY2TERMCAP1(c))

/*
 * get single int code from second byte after K_SPECIAL
 */
#define TO_SPECIAL(a, b)    ((a) == KS_SPECIAL ? K_SPECIAL : (a) == KS_ZERO ? K_ZERO : TERMCAP2KEY(a, b))

/*
 * Codes for keys that do not have a termcap name.
 *
 * K_SPECIAL KS_EXTRA KE_xxx
 */
enum key_extra
{
    KE_NAME = 3		/* name of this terminal entry */

    , KE_S_UP		/* shift-up */
    , KE_S_DOWN		/* shift-down */

    , KE_S_F1		/* shifted function keys */
    , KE_S_F2
    , KE_S_F3
    , KE_S_F4
    , KE_S_F5
    , KE_S_F6
    , KE_S_F7
    , KE_S_F8
    , KE_S_F9
    , KE_S_F10

    , KE_S_F11
    , KE_S_F12
    , KE_S_F13
    , KE_S_F14
    , KE_S_F15
    , KE_S_F16
    , KE_S_F17
    , KE_S_F18
    , KE_S_F19
    , KE_S_F20

    , KE_S_F21
    , KE_S_F22
    , KE_S_F23
    , KE_S_F24
    , KE_S_F25
    , KE_S_F26
    , KE_S_F27
    , KE_S_F28
    , KE_S_F29
    , KE_S_F30

    , KE_S_F31
    , KE_S_F32
    , KE_S_F33
    , KE_S_F34
    , KE_S_F35
    , KE_S_F36
    , KE_S_F37

    , KE_MOUSE		/* mouse event start */

/*
 * Symbols for pseudo keys which are translated from the real key symbols
 * above.
 */
    , KE_LEFTMOUSE	/* Left mouse button click */
    , KE_LEFTDRAG	/* Drag with left mouse button down */
    , KE_LEFTRELEASE	/* Left mouse button release */
    , KE_MIDDLEMOUSE	/* Middle mouse button click */
    , KE_MIDDLEDRAG	/* Drag with middle mouse button down */
    , KE_MIDDLERELEASE	/* Middle mouse button release */
    , KE_RIGHTMOUSE	/* Right mouse button click */
    , KE_RIGHTDRAG	/* Drag with right mouse button down */
    , KE_RIGHTRELEASE	/* Right mouse button release */

    , KE_IGNORE		/* Ignored mouse drag/release */

    , KE_TAB		/* unshifted TAB key */
    , KE_S_TAB_OLD	/* shifted TAB key (no longer used) */

    , KE_XF1		/* extra vt100 function keys for xterm */
    , KE_XF2
    , KE_XF3
    , KE_XF4
    , KE_XEND		/* extra (vt100) end key for xterm */
    , KE_ZEND		/* extra (vt100) end key for xterm */
    , KE_XHOME		/* extra (vt100) home key for xterm */
    , KE_ZHOME		/* extra (vt100) home key for xterm */
    , KE_XUP		/* extra vt100 cursor keys for xterm */
    , KE_XDOWN
    , KE_XLEFT
    , KE_XRIGHT

    , KE_LEFTMOUSE_NM	/* non-mappable Left mouse button click */
    , KE_LEFTRELEASE_NM	/* non-mappable left mouse button release */

    , KE_S_XF1		/* extra vt100 shifted function keys for xterm */
    , KE_S_XF2
    , KE_S_XF3
    , KE_S_XF4

    /* NOTE: The scroll wheel events are inverted: i.e. UP is the same as
     * moving the actual scroll wheel down, LEFT is the same as moving the
     * scroll wheel right. */
    , KE_MOUSEDOWN	/* scroll wheel pseudo-button Down */
    , KE_MOUSEUP	/* scroll wheel pseudo-button Up */
    , KE_MOUSELEFT	/* scroll wheel pseudo-button Left */
    , KE_MOUSERIGHT	/* scroll wheel pseudo-button Right */

    , KE_KINS		/* keypad Insert key */
    , KE_KDEL		/* keypad Delete key */

    , KE_CSI		/* CSI typed directly */
    , KE_SNR		/* <SNR> */
    , KE_PLUG		/* <Plug> */
    , KE_CMDWIN		/* open command-line window from Command-line Mode */

    , KE_C_LEFT		/* control-left */
    , KE_C_RIGHT	/* control-right */
    , KE_C_HOME		/* control-home */
    , KE_C_END		/* control-end */

    , KE_X1MOUSE	/* X1/X2 mouse-buttons */
    , KE_X1DRAG
    , KE_X1RELEASE
    , KE_X2MOUSE
    , KE_X2DRAG
    , KE_X2RELEASE

    , KE_DROP		/* DnD data is available */
    , KE_CURSORHOLD	/* CursorHold event */
    , KE_NOP		/* doesn't do something */
    , KE_FOCUSGAINED	/* focus gained */
    , KE_FOCUSLOST	/* focus lost */
};

/*
 * the three byte codes are replaced with the following int when using vgetc()
 */
#define K_ZERO		TERMCAP2KEY(KS_ZERO, KE_FILLER)

#define K_UP		TERMCAP2KEY('k', 'u')
#define K_DOWN		TERMCAP2KEY('k', 'd')
#define K_LEFT		TERMCAP2KEY('k', 'l')
#define K_RIGHT		TERMCAP2KEY('k', 'r')
#define K_S_UP		TERMCAP2KEY(KS_EXTRA, KE_S_UP)
#define K_S_DOWN	TERMCAP2KEY(KS_EXTRA, KE_S_DOWN)
#define K_S_LEFT	TERMCAP2KEY('#', '4')
#define K_C_LEFT	TERMCAP2KEY(KS_EXTRA, KE_C_LEFT)
#define K_S_RIGHT	TERMCAP2KEY('%', 'i')
#define K_C_RIGHT	TERMCAP2KEY(KS_EXTRA, KE_C_RIGHT)
#define K_S_HOME	TERMCAP2KEY('#', '2')
#define K_C_HOME	TERMCAP2KEY(KS_EXTRA, KE_C_HOME)
#define K_S_END		TERMCAP2KEY('*', '7')
#define K_C_END		TERMCAP2KEY(KS_EXTRA, KE_C_END)
#define K_TAB		TERMCAP2KEY(KS_EXTRA, KE_TAB)
#define K_S_TAB		TERMCAP2KEY('k', 'B')

/* extra set of function keys F1-F4, for vt100 compatible xterm */
#define K_XF1		TERMCAP2KEY(KS_EXTRA, KE_XF1)
#define K_XF2		TERMCAP2KEY(KS_EXTRA, KE_XF2)
#define K_XF3		TERMCAP2KEY(KS_EXTRA, KE_XF3)
#define K_XF4		TERMCAP2KEY(KS_EXTRA, KE_XF4)

/* extra set of cursor keys for vt100 compatible xterm */
#define K_XUP		TERMCAP2KEY(KS_EXTRA, KE_XUP)
#define K_XDOWN		TERMCAP2KEY(KS_EXTRA, KE_XDOWN)
#define K_XLEFT		TERMCAP2KEY(KS_EXTRA, KE_XLEFT)
#define K_XRIGHT	TERMCAP2KEY(KS_EXTRA, KE_XRIGHT)

#define K_F1		TERMCAP2KEY('k', '1')	/* function keys */
#define K_F2		TERMCAP2KEY('k', '2')
#define K_F3		TERMCAP2KEY('k', '3')
#define K_F4		TERMCAP2KEY('k', '4')
#define K_F5		TERMCAP2KEY('k', '5')
#define K_F6		TERMCAP2KEY('k', '6')
#define K_F7		TERMCAP2KEY('k', '7')
#define K_F8		TERMCAP2KEY('k', '8')
#define K_F9		TERMCAP2KEY('k', '9')
#define K_F10		TERMCAP2KEY('k', ';')

#define K_F11		TERMCAP2KEY('F', '1')
#define K_F12		TERMCAP2KEY('F', '2')
#define K_F13		TERMCAP2KEY('F', '3')
#define K_F14		TERMCAP2KEY('F', '4')
#define K_F15		TERMCAP2KEY('F', '5')
#define K_F16		TERMCAP2KEY('F', '6')
#define K_F17		TERMCAP2KEY('F', '7')
#define K_F18		TERMCAP2KEY('F', '8')
#define K_F19		TERMCAP2KEY('F', '9')
#define K_F20		TERMCAP2KEY('F', 'A')

#define K_F21		TERMCAP2KEY('F', 'B')
#define K_F22		TERMCAP2KEY('F', 'C')
#define K_F23		TERMCAP2KEY('F', 'D')
#define K_F24		TERMCAP2KEY('F', 'E')
#define K_F25		TERMCAP2KEY('F', 'F')
#define K_F26		TERMCAP2KEY('F', 'G')
#define K_F27		TERMCAP2KEY('F', 'H')
#define K_F28		TERMCAP2KEY('F', 'I')
#define K_F29		TERMCAP2KEY('F', 'J')
#define K_F30		TERMCAP2KEY('F', 'K')

#define K_F31		TERMCAP2KEY('F', 'L')
#define K_F32		TERMCAP2KEY('F', 'M')
#define K_F33		TERMCAP2KEY('F', 'N')
#define K_F34		TERMCAP2KEY('F', 'O')
#define K_F35		TERMCAP2KEY('F', 'P')
#define K_F36		TERMCAP2KEY('F', 'Q')
#define K_F37		TERMCAP2KEY('F', 'R')

/* extra set of shifted function keys F1-F4, for vt100 compatible xterm */
#define K_S_XF1		TERMCAP2KEY(KS_EXTRA, KE_S_XF1)
#define K_S_XF2		TERMCAP2KEY(KS_EXTRA, KE_S_XF2)
#define K_S_XF3		TERMCAP2KEY(KS_EXTRA, KE_S_XF3)
#define K_S_XF4		TERMCAP2KEY(KS_EXTRA, KE_S_XF4)

#define K_S_F1		TERMCAP2KEY(KS_EXTRA, KE_S_F1)	/* shifted func. keys */
#define K_S_F2		TERMCAP2KEY(KS_EXTRA, KE_S_F2)
#define K_S_F3		TERMCAP2KEY(KS_EXTRA, KE_S_F3)
#define K_S_F4		TERMCAP2KEY(KS_EXTRA, KE_S_F4)
#define K_S_F5		TERMCAP2KEY(KS_EXTRA, KE_S_F5)
#define K_S_F6		TERMCAP2KEY(KS_EXTRA, KE_S_F6)
#define K_S_F7		TERMCAP2KEY(KS_EXTRA, KE_S_F7)
#define K_S_F8		TERMCAP2KEY(KS_EXTRA, KE_S_F8)
#define K_S_F9		TERMCAP2KEY(KS_EXTRA, KE_S_F9)
#define K_S_F10		TERMCAP2KEY(KS_EXTRA, KE_S_F10)

#define K_S_F11		TERMCAP2KEY(KS_EXTRA, KE_S_F11)
#define K_S_F12		TERMCAP2KEY(KS_EXTRA, KE_S_F12)
/* K_S_F13 to K_S_F37  are currently not used */

#define K_HELP		TERMCAP2KEY('%', '1')
#define K_UNDO		TERMCAP2KEY('&', '8')

#define K_BS		TERMCAP2KEY('k', 'b')

#define K_INS		TERMCAP2KEY('k', 'I')
#define K_KINS		TERMCAP2KEY(KS_EXTRA, KE_KINS)
#define K_DEL		TERMCAP2KEY('k', 'D')
#define K_KDEL		TERMCAP2KEY(KS_EXTRA, KE_KDEL)
#define K_HOME		TERMCAP2KEY('k', 'h')
#define K_KHOME		TERMCAP2KEY('K', '1')	/* keypad home (upper left) */
#define K_XHOME		TERMCAP2KEY(KS_EXTRA, KE_XHOME)
#define K_ZHOME		TERMCAP2KEY(KS_EXTRA, KE_ZHOME)
#define K_END		TERMCAP2KEY('@', '7')
#define K_KEND		TERMCAP2KEY('K', '4')	/* keypad end (lower left) */
#define K_XEND		TERMCAP2KEY(KS_EXTRA, KE_XEND)
#define K_ZEND		TERMCAP2KEY(KS_EXTRA, KE_ZEND)
#define K_PAGEUP	TERMCAP2KEY('k', 'P')
#define K_PAGEDOWN	TERMCAP2KEY('k', 'N')
#define K_KPAGEUP	TERMCAP2KEY('K', '3')	/* keypad pageup (upper R.) */
#define K_KPAGEDOWN	TERMCAP2KEY('K', '5')	/* keypad pagedown (lower R.) */

#define K_KPLUS		TERMCAP2KEY('K', '6')	/* keypad plus */
#define K_KMINUS	TERMCAP2KEY('K', '7')	/* keypad minus */
#define K_KDIVIDE	TERMCAP2KEY('K', '8')	/* keypad / */
#define K_KMULTIPLY	TERMCAP2KEY('K', '9')	/* keypad * */
#define K_KENTER	TERMCAP2KEY('K', 'A')	/* keypad Enter */
#define K_KPOINT	TERMCAP2KEY('K', 'B')	/* keypad . or ,*/
#define K_PS		TERMCAP2KEY('P', 'S')	/* paste start */
#define K_PE		TERMCAP2KEY('P', 'E')	/* paste end */

#define K_K0		TERMCAP2KEY('K', 'C')	/* keypad 0 */
#define K_K1		TERMCAP2KEY('K', 'D')	/* keypad 1 */
#define K_K2		TERMCAP2KEY('K', 'E')	/* keypad 2 */
#define K_K3		TERMCAP2KEY('K', 'F')	/* keypad 3 */
#define K_K4		TERMCAP2KEY('K', 'G')	/* keypad 4 */
#define K_K5		TERMCAP2KEY('K', 'H')	/* keypad 5 */
#define K_K6		TERMCAP2KEY('K', 'I')	/* keypad 6 */
#define K_K7		TERMCAP2KEY('K', 'J')	/* keypad 7 */
#define K_K8		TERMCAP2KEY('K', 'K')	/* keypad 8 */
#define K_K9		TERMCAP2KEY('K', 'L')	/* keypad 9 */

#define K_MOUSE		TERMCAP2KEY(KS_MOUSE, KE_FILLER)
#define K_MENU		TERMCAP2KEY(KS_MENU, KE_FILLER)
#define K_VER_SCROLLBAR	TERMCAP2KEY(KS_VER_SCROLLBAR, KE_FILLER)
#define K_HOR_SCROLLBAR   TERMCAP2KEY(KS_HOR_SCROLLBAR, KE_FILLER)

#define K_NETTERM_MOUSE	TERMCAP2KEY(KS_NETTERM_MOUSE, KE_FILLER)
#define K_DEC_MOUSE	TERMCAP2KEY(KS_DEC_MOUSE, KE_FILLER)
#define K_JSBTERM_MOUSE	TERMCAP2KEY(KS_JSBTERM_MOUSE, KE_FILLER)
#define K_PTERM_MOUSE	TERMCAP2KEY(KS_PTERM_MOUSE, KE_FILLER)
#define K_URXVT_MOUSE	TERMCAP2KEY(KS_URXVT_MOUSE, KE_FILLER)
#define K_SGR_MOUSE	TERMCAP2KEY(KS_SGR_MOUSE, KE_FILLER)

#define K_SELECT	TERMCAP2KEY(KS_SELECT, KE_FILLER)
#define K_TEAROFF	TERMCAP2KEY(KS_TEAROFF, KE_FILLER)

#define K_TABLINE	TERMCAP2KEY(KS_TABLINE, KE_FILLER)
#define K_TABMENU	TERMCAP2KEY(KS_TABMENU, KE_FILLER)

/*
 * Symbols for pseudo keys which are translated from the real key symbols
 * above.
 */
#define K_LEFTMOUSE	TERMCAP2KEY(KS_EXTRA, KE_LEFTMOUSE)
#define K_LEFTMOUSE_NM	TERMCAP2KEY(KS_EXTRA, KE_LEFTMOUSE_NM)
#define K_LEFTDRAG	TERMCAP2KEY(KS_EXTRA, KE_LEFTDRAG)
#define K_LEFTRELEASE	TERMCAP2KEY(KS_EXTRA, KE_LEFTRELEASE)
#define K_LEFTRELEASE_NM TERMCAP2KEY(KS_EXTRA, KE_LEFTRELEASE_NM)
#define K_MIDDLEMOUSE	TERMCAP2KEY(KS_EXTRA, KE_MIDDLEMOUSE)
#define K_MIDDLEDRAG	TERMCAP2KEY(KS_EXTRA, KE_MIDDLEDRAG)
#define K_MIDDLERELEASE	TERMCAP2KEY(KS_EXTRA, KE_MIDDLERELEASE)
#define K_RIGHTMOUSE	TERMCAP2KEY(KS_EXTRA, KE_RIGHTMOUSE)
#define K_RIGHTDRAG	TERMCAP2KEY(KS_EXTRA, KE_RIGHTDRAG)
#define K_RIGHTRELEASE	TERMCAP2KEY(KS_EXTRA, KE_RIGHTRELEASE)
#define K_X1MOUSE       TERMCAP2KEY(KS_EXTRA, KE_X1MOUSE)
#define K_X1MOUSE       TERMCAP2KEY(KS_EXTRA, KE_X1MOUSE)
#define K_X1DRAG	TERMCAP2KEY(KS_EXTRA, KE_X1DRAG)
#define K_X1RELEASE     TERMCAP2KEY(KS_EXTRA, KE_X1RELEASE)
#define K_X2MOUSE       TERMCAP2KEY(KS_EXTRA, KE_X2MOUSE)
#define K_X2DRAG	TERMCAP2KEY(KS_EXTRA, KE_X2DRAG)
#define K_X2RELEASE     TERMCAP2KEY(KS_EXTRA, KE_X2RELEASE)

#define K_IGNORE	TERMCAP2KEY(KS_EXTRA, KE_IGNORE)
#define K_NOP		TERMCAP2KEY(KS_EXTRA, KE_NOP)

#define K_MOUSEDOWN	TERMCAP2KEY(KS_EXTRA, KE_MOUSEDOWN)
#define K_MOUSEUP	TERMCAP2KEY(KS_EXTRA, KE_MOUSEUP)
#define K_MOUSELEFT	TERMCAP2KEY(KS_EXTRA, KE_MOUSELEFT)
#define K_MOUSERIGHT	TERMCAP2KEY(KS_EXTRA, KE_MOUSERIGHT)

#define K_CSI		TERMCAP2KEY(KS_EXTRA, KE_CSI)
#define K_SNR		TERMCAP2KEY(KS_EXTRA, KE_SNR)
#define K_PLUG		TERMCAP2KEY(KS_EXTRA, KE_PLUG)
#define K_CMDWIN	TERMCAP2KEY(KS_EXTRA, KE_CMDWIN)

#define K_DROP		TERMCAP2KEY(KS_EXTRA, KE_DROP)
#define K_FOCUSGAINED	TERMCAP2KEY(KS_EXTRA, KE_FOCUSGAINED)
#define K_FOCUSLOST	TERMCAP2KEY(KS_EXTRA, KE_FOCUSLOST)

#define K_CURSORHOLD	TERMCAP2KEY(KS_EXTRA, KE_CURSORHOLD)

/* Bits for modifier mask */
/* 0x01 cannot be used, because the modifier must be 0x02 or higher */
#define MOD_MASK_SHIFT	    0x02
#define MOD_MASK_CTRL	    0x04
#define MOD_MASK_ALT	    0x08	/* aka META */
#define MOD_MASK_META	    0x10	/* META when it's different from ALT */
#define MOD_MASK_2CLICK	    0x20	/* use MOD_MASK_MULTI_CLICK */
#define MOD_MASK_3CLICK	    0x40	/* use MOD_MASK_MULTI_CLICK */
#define MOD_MASK_4CLICK	    0x60	/* use MOD_MASK_MULTI_CLICK */
#ifdef MACOS
# define MOD_MASK_CMD	    0x80
#endif

#define MOD_MASK_MULTI_CLICK	(MOD_MASK_2CLICK|MOD_MASK_3CLICK|MOD_MASK_4CLICK)

/*
 * The length of the longest special key name, including modifiers.
 * Current longest is <M-C-S-T-D-A-4-ScrollWheelRight> (length includes '<' and
 * '>').
 */
#define MAX_KEY_NAME_LEN    32

/* Maximum length of a special key event as tokens.  This includes modifiers.
 * The longest event is something like <M-C-S-T-4-LeftDrag> which would be the
 * following string of tokens:
 *
 * <K_SPECIAL> <KS_MODIFIER> bitmask <K_SPECIAL> <KS_EXTRA> <KT_LEFTDRAG>.
 *
 * This is a total of 6 tokens, and is currently the longest one possible.
 */
#define MAX_KEY_CODE_LEN    6
