diff --git a/src/term.h b/src/term.h
new file mode 100644
index 0000000..17b1065
--- /dev/null
+++ b/src/term.h
@@ -0,0 +1,156 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * 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.
+ */
+
+/*
+ * This file contains the defines for the machine dependent escape sequences
+ * that the editor needs to perform various operations. All of the sequences
+ * here are optional, except "cm" (cursor motion).
+ */
+
+#if defined(SASC) && SASC < 658
+/*
+ * The SAS C compiler has a bug that makes typedefs being forgot in include
+ * files.  Has been fixed in version 6.58.
+ */
+typedef unsigned char char_u;
+#endif
+
+/*
+ * Index of the termcap codes in the term_strings array.
+ */
+enum SpecialKey
+{
+    KS_NAME = 0,/* name of this terminal entry */
+    KS_CE,	/* clear to end of line */
+    KS_AL,	/* add new blank line */
+    KS_CAL,	/* add number of blank lines */
+    KS_DL,	/* delete line */
+    KS_CDL,	/* delete number of lines */
+    KS_CS,	/* scroll region */
+    KS_CL,	/* clear screen */
+    KS_CD,	/* clear to end of display */
+    KS_UT,	/* clearing uses current background color */
+    KS_DA,	/* text may be scrolled down from up */
+    KS_DB,	/* text may be scrolled up from down */
+    KS_VI,	/* cursor invisible */
+    KS_VE,	/* cursor visible */
+    KS_VS,	/* cursor very visible */
+    KS_ME,	/* normal mode */
+    KS_MR,	/* reverse mode */
+    KS_MD,	/* bold mode */
+    KS_SE,	/* normal mode */
+    KS_SO,	/* standout mode */
+    KS_CZH,	/* italic mode start */
+    KS_CZR,	/* italic mode end */
+    KS_UE,	/* exit underscore mode */
+    KS_US,	/* underscore mode */
+    KS_MS,	/* save to move cur in reverse mode */
+    KS_CM,	/* cursor motion */
+    KS_SR,	/* scroll reverse (backward) */
+    KS_CRI,	/* cursor number of chars right */
+    KS_VB,	/* visual bell */
+    KS_KS,	/* put term in "keypad transmit" mode */
+    KS_KE,	/* out of "keypad transmit" mode */
+    KS_TI,	/* put terminal in termcap mode */
+    KS_TE,	/* out of termcap mode */
+    KS_BC,	/* backspace character (cursor left) */
+    KS_CCS,	/* cur is relative to scroll region */
+    KS_CCO,	/* number of colors */
+    KS_CSF,	/* set foreground color */
+    KS_CSB,	/* set background color */
+    KS_XS,	/* standout not erased by overwriting (hpterm) */
+    KS_MB,	/* blink mode */
+    KS_CAF,	/* set foreground color (ANSI) */
+    KS_CAB,	/* set background color (ANSI) */
+    KS_LE,	/* cursor left (mostly backspace) */
+    KS_ND,	/* cursor right */
+    KS_CIS,	/* set icon text start */
+    KS_CIE,	/* set icon text end */
+    KS_TS,	/* set window title start (to status line)*/
+    KS_FS,	/* set window title end (from status line) */
+    KS_CWP,	/* set window position in pixels */
+    KS_CWS,	/* set window size in characters */
+    KS_CRV,	/* request version string */
+#ifdef FEAT_VERTSPLIT
+    KS_CSV,	/* scroll region vertical */
+#endif
+    KS_OP	/* original color pair */
+};
+
+#define KS_LAST	    KS_OP
+
+/*
+ * the terminal capabilities are stored in this array
+ * IMPORTANT: When making changes, note the following:
+ * - there should be an entry for each code in the builtin termcaps
+ * - there should be an option for each code in option.c
+ * - there should be code in term.c to obtain the value from the termcap
+ */
+
+extern char_u *(term_strings[]);    /* current terminal strings */
+
+/*
+ * strings used for terminal
+ */
+#define T_NAME	(term_str(KS_NAME))	/* terminal name */
+#define T_CE	(term_str(KS_CE))	/* clear to end of line */
+#define T_AL	(term_str(KS_AL))	/* add new blank line */
+#define T_CAL	(term_str(KS_CAL))	/* add number of blank lines */
+#define T_DL	(term_str(KS_DL))	/* delete line */
+#define T_CDL	(term_str(KS_CDL))	/* delete number of lines */
+#define T_CS	(term_str(KS_CS))	/* scroll region */
+#define T_CSV	(term_str(KS_CSV))	/* scroll region vertical */
+#define T_CL	(term_str(KS_CL))	/* clear screen */
+#define T_CD	(term_str(KS_CD))	/* clear to end of display */
+#define T_UT	(term_str(KS_UT))	/* clearing uses background color */
+#define T_DA	(term_str(KS_DA))	/* text may be scrolled down from up */
+#define T_DB	(term_str(KS_DB))	/* text may be scrolled up from down */
+#define T_VI	(term_str(KS_VI))	/* cursor invisible */
+#define T_VE	(term_str(KS_VE))	/* cursor visible */
+#define T_VS	(term_str(KS_VS))	/* cursor very visible */
+#define T_ME	(term_str(KS_ME))	/* normal mode */
+#define T_MR	(term_str(KS_MR))	/* reverse mode */
+#define T_MD	(term_str(KS_MD))	/* bold mode */
+#define T_SE	(term_str(KS_SE))	/* normal mode */
+#define T_SO	(term_str(KS_SO))	/* standout mode */
+#define T_CZH	(term_str(KS_CZH))	/* italic mode start */
+#define T_CZR	(term_str(KS_CZR))	/* italic mode end */
+#define T_UE	(term_str(KS_UE))	/* exit underscore mode */
+#define T_US	(term_str(KS_US))	/* underscore mode */
+#define T_MS	(term_str(KS_MS))	/* save to move cur in reverse mode */
+#define T_CM	(term_str(KS_CM))	/* cursor motion */
+#define T_SR	(term_str(KS_SR))	/* scroll reverse (backward) */
+#define T_CRI	(term_str(KS_CRI))	/* cursor number of chars right */
+#define T_VB	(term_str(KS_VB))	/* visual bell */
+#define T_KS	(term_str(KS_KS))	/* put term in "keypad transmit" mode */
+#define T_KE	(term_str(KS_KE))	/* out of "keypad transmit" mode */
+#define T_TI	(term_str(KS_TI))	/* put terminal in termcap mode */
+#define T_TE	(term_str(KS_TE))	/* out of termcap mode */
+#define T_BC	(term_str(KS_BC))	/* backspace character */
+#define T_CCS	(term_str(KS_CCS))	/* cur is relative to scroll region */
+#define T_CCO	(term_str(KS_CCO))	/* number of colors */
+#define T_CSF	(term_str(KS_CSF))	/* set foreground color */
+#define T_CSB	(term_str(KS_CSB))	/* set background color */
+#define T_XS	(term_str(KS_XS))	/* standout not erased by overwriting */
+#define T_MB	(term_str(KS_MB))	/* blink mode */
+#define T_CAF	(term_str(KS_CAF))	/* set foreground color (ANSI) */
+#define T_CAB	(term_str(KS_CAB))	/* set background color (ANSI) */
+#define T_LE	(term_str(KS_LE))	/* cursor left */
+#define T_ND	(term_str(KS_ND))	/* cursor right */
+#define T_CIS	(term_str(KS_CIS))	/* set icon text start */
+#define T_CIE	(term_str(KS_CIE))	/* set icon text end */
+#define T_TS	(term_str(KS_TS))	/* set window title start */
+#define T_FS	(term_str(KS_FS))	/* set window title end */
+#define T_CWP	(term_str(KS_CWP))	/* window position */
+#define T_CWS	(term_str(KS_CWS))	/* window size */
+#define T_CRV	(term_str(KS_CRV))	/* request version string */
+#define T_OP	(term_str(KS_OP))	/* original color pair */
+
+#define TMODE_COOK  0	/* terminal mode for external cmds and Ex mode */
+#define TMODE_SLEEP 1	/* terminal mode for sleeping (cooked but no echo) */
+#define TMODE_RAW   2	/* terminal mode for Normal and Insert mode */
