home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include "externs.h"
- #include "keym.h"
- #include "sysdep.h"
- #include "display.h"
- #include "buffer.h"
- #include "window.h"
- #include "search.h"
-
- int *DIGIT_ARG;
- char LAST_CHAR;
- int EDT_DIRECTION = 1;
-
- void (*root_map[128])() =
- {
- beep_cmd, /* ^@ */
- beep_cmd, /* ^A */
- beep_cmd, /* ^B */
- beep_cmd, /* ^C */
- page_down_cmd, /* ^D */
- beep_cmd, /* ^E */
- search_cmd, /* ^F */
- beep_cmd, /* ^G */
- help_cmd, /* ^H */
- page_right_cmd, /* ^I */
- next_line_cmd, /* ^J */
- ctrl_k_map_cmd, /* ^K */
- beep_cmd, /* ^L */
- next_line_cmd, /* ^M */
- next_line_cmd, /* ^N */
- beep_cmd, /* ^O */
- previous_line_cmd, /* ^P */
- beep_cmd, /* ^Q */
- redraw_cmd, /* ^R */
- beep_cmd, /* ^S */
- time_cmd, /* ^T */
- page_up_cmd, /* ^U */
- page_down_cmd, /* ^V */
- ctrl_w_map_cmd, /* ^W */
- ctrl_x_map_cmd, /* ^X */
- beep_cmd, /* ^Y */
- sys_spawn_cmd, /* ^Z */
- esc_map_cmd, /* ^[ */
- beep_cmd, /* ^\ */
- beep_cmd, /* ^] */
- beep_cmd, /* ^^ */
- beep_cmd, /* ^_ */
- page_down_cmd, /* */
- beep_cmd, /* ! */
- beep_cmd, /* " */
- beep_cmd, /* # */
- sys_spawn_cmd, /* $ */
- goto_percent_cmd, /* % */
- beep_cmd, /* & */
- beep_cmd, /* ' */
- beep_cmd, /* ( */
- beep_cmd, /* ) */
- beep_cmd, /* * */
- beep_cmd, /* + */
- goto_mark_cmd, /* , */
- digit_arg_cmd, /* - */
- beep_cmd, /* . */
- search_cmd, /* / */
- digit_arg_cmd, /* 0 */
- digit_arg_cmd, /* 1 */
- digit_arg_cmd, /* 2 */
- digit_arg_cmd, /* 3 */
- digit_arg_cmd, /* 4 */
- digit_arg_cmd, /* 5 */
- digit_arg_cmd, /* 6 */
- digit_arg_cmd, /* 7 */
- digit_arg_cmd, /* 8 */
- digit_arg_cmd, /* 9 */
- extended_key_cmd, /* : */
- beep_cmd, /* ; */
- page_left_cmd, /* < */
- beep_cmd, /* = */
- page_right_cmd, /* > */
- search_back_cmd, /* ? */
- beep_cmd, /* @ */
- beep_cmd, /* A */
- end_of_buffer_cmd, /* B */
- beep_cmd, /* C */
- page_down_cmd, /* D */
- edit_cmd, /* E */
- search_cmd, /* F */
- goto_line_cmd, /* G */
- help_cmd, /* H */
- beep_cmd, /* I */
- goto_line_cmd, /* J */
- beep_cmd, /* K */
- toggle_lock, /* L */
- set_mark_cmd, /* M */
- find_next_cmd, /* N */
- other_window_cmd, /* O */
- beep_cmd, /* P */
- exit_cmd, /* Q */
- redraw_cmd, /* R */
- beep_cmd, /* S */
- top_of_buffer_cmd, /* T */
- page_up_cmd, /* U */
- next_line_cmd, /* V */
- toggle_width_cmd, /* W */
- exit_cmd, /* X */
- beep_cmd, /* Y */
- beep_cmd, /* Z */
- beep_cmd, /* [ */
- beep_cmd, /* \ */
- beep_cmd, /* ] */
- beep_cmd, /* ^ */
- beep_cmd, /* _ */
- beep_cmd, /* ` */
- beep_cmd, /* a */
- end_of_buffer_cmd, /* b */
- beep_cmd, /* c */
- page_down_cmd, /* d */
- edit_cmd, /* e */
- search_cmd, /* f */
- goto_line_cmd, /* g */
- help_cmd, /* h */
- beep_cmd, /* i */
- goto_line_cmd, /* j */
- beep_cmd, /* k */
- toggle_lock, /* l */
- set_mark_cmd, /* m */
- find_next_cmd, /* n */
- other_window_cmd, /* o */
- beep_cmd, /* p */
- exit_cmd, /* q */
- redraw_cmd, /* r */
- beep_cmd, /* s */
- top_of_buffer_cmd, /* t */
- page_up_cmd, /* u */
- next_line_cmd, /* v */
- toggle_width_cmd, /* w */
- exit_cmd, /* x */
- beep_cmd, /* y */
- beep_cmd, /* z */
- beep_cmd, /* { */
- beep_cmd, /* | */
- beep_cmd, /* } */
- beep_cmd, /* ~ */
- page_up_cmd /* ^? */
- };
-
- /* escape map */
- void (*escape_map[128])() =
- {
- beep_cmd, /* ^@ */
- beep_cmd, /* ^A */
- beep_cmd, /* ^B */
- beep_cmd, /* ^C */
- beep_cmd, /* ^D */
- beep_cmd, /* ^E */
- beep_cmd, /* ^F */
- beep_cmd, /* ^G */
- beep_cmd, /* ^H */
- beep_cmd, /* ^I */
- beep_cmd, /* ^J */
- beep_cmd, /* ^K */
- beep_cmd, /* ^L */
- beep_cmd, /* ^M */
- beep_cmd, /* ^N */
- beep_cmd, /* ^O */
- beep_cmd, /* ^P */
- beep_cmd, /* ^Q */
- beep_cmd, /* ^R */
- beep_cmd, /* ^S */
- beep_cmd, /* ^T */
- beep_cmd, /* ^U */
- beep_cmd, /* ^V */
- beep_cmd, /* ^W */
- beep_cmd, /* ^X */
- beep_cmd, /* ^Y */
- beep_cmd, /* ^Z */
- beep_cmd, /* ^[ */
- beep_cmd, /* ^\ */
- beep_cmd, /* ^] */
- beep_cmd, /* ^^ */
- beep_cmd, /* ^_ */
- beep_cmd, /* */
- beep_cmd, /* ! */
- beep_cmd, /* " */
- beep_cmd, /* # */
- sys_spawn_cmd, /* $ */
- beep_cmd, /* % */
- beep_cmd, /* & */
- beep_cmd, /* ' */
- beep_cmd, /* ( */
- beep_cmd, /* ) */
- beep_cmd, /* * */
- beep_cmd, /* + */
- beep_cmd, /* , */
- digit_arg_cmd, /* - */
- beep_cmd, /* . */
- beep_cmd, /* / */
- beep_cmd, /* 0 */
- digit_arg_cmd, /* 1 */
- digit_arg_cmd, /* 2 */
- digit_arg_cmd, /* 3 */
- digit_arg_cmd, /* 4 */
- digit_arg_cmd, /* 5 */
- digit_arg_cmd, /* 6 */
- digit_arg_cmd, /* 7 */
- digit_arg_cmd, /* 8 */
- digit_arg_cmd, /* 9 */
- beep_cmd, /* : */
- beep_cmd, /* ; */
- beep_cmd, /* < */
- beep_cmd, /* = */
- beep_cmd, /* > */
- beep_cmd, /* ? */
- beep_cmd, /* @ */
- beep_cmd, /* A */
- beep_cmd, /* B */
- beep_cmd, /* C */
- beep_cmd, /* D */
- beep_cmd, /* E */
- beep_cmd, /* F */
- beep_cmd, /* G */
- beep_cmd, /* H */
- beep_cmd, /* I */
- beep_cmd, /* J */
- beep_cmd, /* K */
- beep_cmd, /* L */
- beep_cmd, /* M */
- beep_cmd, /* N */
- O_map_cmd, /* O */
- beep_cmd, /* P */
- beep_cmd, /* Q */
- beep_cmd, /* R */
- beep_cmd, /* S */
- beep_cmd, /* T */
- beep_cmd, /* U */
- beep_cmd, /* V */
- beep_cmd, /* W */
- extended_cmd_cmd, /* X */
- beep_cmd, /* Y */
- beep_cmd, /* Z */
- O_map_cmd, /* [ */
- beep_cmd, /* \ */
- beep_cmd, /* ] */
- beep_cmd, /* ^ */
- beep_cmd, /* _ */
- beep_cmd, /* ` */
- beep_cmd, /* a */
- beep_cmd, /* b */
- beep_cmd, /* c */
- beep_cmd, /* d */
- beep_cmd, /* e */
- beep_cmd, /* f */
- beep_cmd, /* g */
- beep_cmd, /* h */
- beep_cmd, /* i */
- beep_cmd, /* j */
- beep_cmd, /* k */
- beep_cmd, /* l */
- beep_cmd, /* m */
- beep_cmd, /* n */
- beep_cmd, /* o */
- beep_cmd, /* p */
- beep_cmd, /* q */
- beep_cmd, /* r */
- beep_cmd, /* s */
- beep_cmd, /* t */
- beep_cmd, /* u */
- beep_cmd, /* v */
- beep_cmd, /* w */
- extended_cmd_cmd, /* x */
- beep_cmd, /* y */
- beep_cmd, /* z */
- beep_cmd, /* { */
- beep_cmd, /* | */
- beep_cmd, /* } */
- beep_cmd, /* ~ */
- beep_cmd /* ^? */
- };
-
- void (*ctrl_x_map[128])() =
- {
- beep_cmd, /* ^@ */
- beep_cmd, /* ^A */
- beep_cmd, /* ^B */
- exit_cmd, /* ^C */
- beep_cmd, /* ^D */
- beep_cmd, /* ^E */
- find_file_cmd, /* ^F */
- beep_cmd, /* ^G */
- beep_cmd, /* ^H */
- beep_cmd, /* ^I */
- beep_cmd, /* ^J */
- beep_cmd, /* ^K */
- beep_cmd, /* ^L */
- beep_cmd, /* ^M */
- beep_cmd, /* ^N */
- beep_cmd, /* ^O */
- beep_cmd, /* ^P */
- beep_cmd, /* ^Q */
- beep_cmd, /* ^R */
- beep_cmd, /* ^S */
- beep_cmd, /* ^T */
- beep_cmd, /* ^U */
- beep_cmd, /* ^V */
- beep_cmd, /* ^W */
- beep_cmd, /* ^X */
- beep_cmd, /* ^Y */
- beep_cmd, /* ^Z */
- beep_cmd, /* ^[ */
- beep_cmd, /* ^\ */
- beep_cmd, /* ^] */
- beep_cmd, /* ^^ */
- beep_cmd, /* ^_ */
- beep_cmd, /* */
- beep_cmd, /* ! */
- beep_cmd, /* " */
- beep_cmd, /* # */
- beep_cmd, /* $ */
- beep_cmd, /* % */
- beep_cmd, /* & */
- beep_cmd, /* ' */
- beep_cmd, /* ( */
- beep_cmd, /* ) */
- beep_cmd, /* * */
- beep_cmd, /* + */
- beep_cmd, /* , */
- beep_cmd, /* - */
- beep_cmd, /* . */
- beep_cmd, /* / */
- del_window_cmd, /* 0 */
- one_window_cmd, /* 1 */
- two_window_cmd, /* 2 */
- beep_cmd, /* 3 */
- beep_cmd, /* 4 */
- beep_cmd, /* 5 */
- beep_cmd, /* 6 */
- beep_cmd, /* 7 */
- beep_cmd, /* 8 */
- beep_cmd, /* 9 */
- beep_cmd, /* : */
- beep_cmd, /* ; */
- beep_cmd, /* < */
- beep_cmd, /* = */
- beep_cmd, /* > */
- beep_cmd, /* ? */
- beep_cmd, /* @ */
- beep_cmd, /* A */
- beep_cmd, /* B */
- beep_cmd, /* C */
- beep_cmd, /* D */
- beep_cmd, /* E */
- beep_cmd, /* F */
- beep_cmd, /* G */
- beep_cmd, /* H */
- beep_cmd, /* I */
- beep_cmd, /* J */
- beep_cmd, /* K */
- beep_cmd, /* L */
- beep_cmd, /* M */
- beep_cmd, /* N */
- other_window_cmd, /* O */
- beep_cmd, /* P */
- beep_cmd, /* Q */
- beep_cmd, /* R */
- beep_cmd, /* S */
- beep_cmd, /* T */
- beep_cmd, /* U */
- beep_cmd, /* V */
- beep_cmd, /* W */
- beep_cmd, /* X */
- beep_cmd, /* Y */
- beep_cmd, /* Z */
- beep_cmd, /* [ */
- beep_cmd, /* \ */
- beep_cmd, /* ] */
- beep_cmd, /* ^ */
- beep_cmd, /* _ */
- beep_cmd, /* ` */
- beep_cmd, /* a */
- beep_cmd, /* b */
- beep_cmd, /* c */
- beep_cmd, /* d */
- beep_cmd, /* e */
- beep_cmd, /* f */
- beep_cmd, /* g */
- beep_cmd, /* h */
- beep_cmd, /* i */
- beep_cmd, /* j */
- beep_cmd, /* k */
- beep_cmd, /* l */
- beep_cmd, /* m */
- beep_cmd, /* n */
- other_window_cmd, /* o */
- beep_cmd, /* p */
- beep_cmd, /* q */
- beep_cmd, /* r */
- beep_cmd, /* s */
- beep_cmd, /* t */
- beep_cmd, /* u */
- beep_cmd, /* v */
- beep_cmd, /* w */
- beep_cmd, /* x */
- beep_cmd, /* y */
- beep_cmd, /* z */
- beep_cmd, /* { */
- beep_cmd, /* | */
- beep_cmd, /* } */
- beep_cmd, /* ~ */
- beep_cmd /* ^? */
- };
-
- void (*ctrl_w_map[128])() =
- {
- beep_cmd, /* ^@ */
- beep_cmd, /* ^A */
- beep_cmd, /* ^B */
- beep_cmd, /* ^C */
- beep_cmd, /* ^D */
- beep_cmd, /* ^E */
- beep_cmd, /* ^F */
- beep_cmd, /* ^G */
- beep_cmd, /* ^H */
- beep_cmd, /* ^I */
- beep_cmd, /* ^J */
- beep_cmd, /* ^K */
- beep_cmd, /* ^L */
- beep_cmd, /* ^M */
- beep_cmd, /* ^N */
- beep_cmd, /* ^O */
- beep_cmd, /* ^P */
- beep_cmd, /* ^Q */
- beep_cmd, /* ^R */
- beep_cmd, /* ^S */
- beep_cmd, /* ^T */
- beep_cmd, /* ^U */
- beep_cmd, /* ^V */
- beep_cmd, /* ^W */
- beep_cmd, /* ^X */
- beep_cmd, /* ^Y */
- beep_cmd, /* ^Z */
- beep_cmd, /* ^[ */
- beep_cmd, /* ^\ */
- beep_cmd, /* ^] */
- beep_cmd, /* ^^ */
- beep_cmd, /* ^_ */
- beep_cmd, /* */
- beep_cmd, /* ! */
- beep_cmd, /* " */
- beep_cmd, /* # */
- beep_cmd, /* $ */
- beep_cmd, /* % */
- beep_cmd, /* & */
- beep_cmd, /* ' */
- beep_cmd, /* ( */
- beep_cmd, /* ) */
- beep_cmd, /* * */
- beep_cmd, /* + */
- beep_cmd, /* , */
- beep_cmd, /* - */
- beep_cmd, /* . */
- beep_cmd, /* / */
- del_window_cmd, /* 0 */
- one_window_cmd, /* 1 */
- two_window_cmd, /* 2 */
- beep_cmd, /* 3 */
- beep_cmd, /* 4 */
- beep_cmd, /* 5 */
- beep_cmd, /* 6 */
- beep_cmd, /* 7 */
- beep_cmd, /* 8 */
- beep_cmd, /* 9 */
- beep_cmd, /* : */
- beep_cmd, /* ; */
- beep_cmd, /* < */
- beep_cmd, /* = */
- beep_cmd, /* > */
- beep_cmd, /* ? */
- beep_cmd, /* @ */
- beep_cmd, /* A */
- beep_cmd, /* B */
- beep_cmd, /* C */
- beep_cmd, /* D */
- beep_cmd, /* E */
- beep_cmd, /* F */
- beep_cmd, /* G */
- beep_cmd, /* H */
- beep_cmd, /* I */
- beep_cmd, /* J */
- beep_cmd, /* K */
- beep_cmd, /* L */
- beep_cmd, /* M */
- beep_cmd, /* N */
- other_window_cmd, /* O */
- beep_cmd, /* P */
- beep_cmd, /* Q */
- beep_cmd, /* R */
- beep_cmd, /* S */
- beep_cmd, /* T */
- beep_cmd, /* U */
- beep_cmd, /* V */
- beep_cmd, /* W */
- beep_cmd, /* X */
- beep_cmd, /* Y */
- beep_cmd, /* Z */
- beep_cmd, /* [ */
- beep_cmd, /* \ */
- beep_cmd, /* ] */
- beep_cmd, /* ^ */
- beep_cmd, /* _ */
- beep_cmd, /* ` */
- beep_cmd, /* a */
- beep_cmd, /* b */
- beep_cmd, /* c */
- beep_cmd, /* d */
- beep_cmd, /* e */
- beep_cmd, /* f */
- beep_cmd, /* g */
- beep_cmd, /* h */
- beep_cmd, /* i */
- beep_cmd, /* j */
- beep_cmd, /* k */
- beep_cmd, /* l */
- beep_cmd, /* m */
- beep_cmd, /* n */
- other_window_cmd, /* o */
- beep_cmd, /* p */
- beep_cmd, /* q */
- beep_cmd, /* r */
- beep_cmd, /* s */
- beep_cmd, /* t */
- beep_cmd, /* u */
- beep_cmd, /* v */
- beep_cmd, /* w */
- beep_cmd, /* x */
- beep_cmd, /* y */
- beep_cmd, /* z */
- beep_cmd, /* { */
- beep_cmd, /* | */
- beep_cmd, /* } */
- beep_cmd, /* ~ */
- beep_cmd /* ^? */
- };
-
- void (*ctrl_k_map[128])() =
- {
- beep_cmd, /* ^@ */
- beep_cmd, /* ^A */
- set_mark_cmd, /* ^B */
- beep_cmd, /* ^C */
- beep_cmd, /* ^D */
- beep_cmd, /* ^E */
- beep_cmd, /* ^F */
- beep_cmd, /* ^G */
- beep_cmd, /* ^H */
- beep_cmd, /* ^I */
- goto_mark_cmd, /* ^J */
- beep_cmd, /* ^K */
- beep_cmd, /* ^L */
- goto_mark_cmd, /* ^M */
- beep_cmd, /* ^N */
- beep_cmd, /* ^O */
- beep_cmd, /* ^P */
- beep_cmd, /* ^Q */
- beep_cmd, /* ^R */
- beep_cmd, /* ^S */
- beep_cmd, /* ^T */
- beep_cmd, /* ^U */
- beep_cmd, /* ^V */
- beep_cmd, /* ^W */
- beep_cmd, /* ^X */
- beep_cmd, /* ^Y */
- beep_cmd, /* ^Z */
- beep_cmd, /* ^[ */
- beep_cmd, /* ^\ */
- beep_cmd, /* ^] */
- beep_cmd, /* ^^ */
- beep_cmd, /* ^_ */
- beep_cmd, /* */
- beep_cmd, /* ! */
- beep_cmd, /* " */
- beep_cmd, /* # */
- beep_cmd, /* $ */
- beep_cmd, /* % */
- beep_cmd, /* & */
- beep_cmd, /* ' */
- beep_cmd, /* ( */
- beep_cmd, /* ) */
- beep_cmd, /* * */
- beep_cmd, /* + */
- beep_cmd, /* , */
- beep_cmd, /* - */
- beep_cmd, /* . */
- beep_cmd, /* / */
- beep_cmd, /* 0 */
- beep_cmd, /* 1 */
- beep_cmd, /* 2 */
- beep_cmd, /* 3 */
- beep_cmd, /* 4 */
- beep_cmd, /* 5 */
- beep_cmd, /* 6 */
- beep_cmd, /* 7 */
- beep_cmd, /* 8 */
- beep_cmd, /* 9 */
- beep_cmd, /* : */
- beep_cmd, /* ; */
- beep_cmd, /* < */
- beep_cmd, /* = */
- beep_cmd, /* > */
- beep_cmd, /* ? */
- beep_cmd, /* @ */
- beep_cmd, /* A */
- beep_cmd, /* B */
- beep_cmd, /* C */
- extended_cmd_cmd, /* D */
- exit_cmd, /* E */
- beep_cmd, /* F */
- find_file_cmd, /* G */
- beep_cmd, /* H */
- beep_cmd, /* I */
- beep_cmd, /* J */
- beep_cmd, /* K */
- beep_cmd, /* L */
- set_mark_cmd, /* M */
- beep_cmd, /* N */
- beep_cmd, /* O */
- beep_cmd, /* P */
- beep_cmd, /* Q */
- beep_cmd, /* R */
- beep_cmd, /* S */
- beep_cmd, /* T */
- beep_cmd, /* U */
- beep_cmd, /* V */
- beep_cmd, /* W */
- beep_cmd, /* X */
- beep_cmd, /* Y */
- beep_cmd, /* Z */
- beep_cmd, /* [ */
- beep_cmd, /* \ */
- beep_cmd, /* ] */
- beep_cmd, /* ^ */
- beep_cmd, /* _ */
- beep_cmd, /* ` */
- beep_cmd, /* a */
- beep_cmd, /* b */
- beep_cmd, /* c */
- extended_cmd_cmd, /* d */
- exit_cmd, /* e */
- beep_cmd, /* f */
- find_file_cmd, /* g */
- beep_cmd, /* h */
- beep_cmd, /* i */
- beep_cmd, /* j */
- beep_cmd, /* k */
- beep_cmd, /* l */
- set_mark_cmd, /* m */
- beep_cmd, /* n */
- beep_cmd, /* o */
- beep_cmd, /* p */
- beep_cmd, /* q */
- beep_cmd, /* r */
- beep_cmd, /* s */
- beep_cmd, /* t */
- beep_cmd, /* u */
- beep_cmd, /* v */
- beep_cmd, /* w */
- beep_cmd, /* x */
- beep_cmd, /* y */
- beep_cmd, /* z */
- beep_cmd, /* { */
- beep_cmd, /* | */
- beep_cmd, /* } */
- beep_cmd, /* ~ */
- beep_cmd /* ^? */
- };
-
- void (*esc_O_map[128])() =
- {
- beep_cmd, /* ^@ */
- beep_cmd, /* ^A */
- beep_cmd, /* ^B */
- beep_cmd, /* ^C */
- beep_cmd, /* ^D */
- beep_cmd, /* ^E */
- beep_cmd, /* ^F */
- beep_cmd, /* ^G */
- beep_cmd, /* ^H */
- beep_cmd, /* ^I */
- beep_cmd, /* ^J */
- beep_cmd, /* ^K */
- beep_cmd, /* ^L */
- beep_cmd, /* ^M */
- beep_cmd, /* ^N */
- beep_cmd, /* ^O */
- beep_cmd, /* ^P */
- beep_cmd, /* ^Q */
- beep_cmd, /* ^R */
- beep_cmd, /* ^S */
- beep_cmd, /* ^T */
- beep_cmd, /* ^U */
- beep_cmd, /* ^V */
- beep_cmd, /* ^W */
- beep_cmd, /* ^X */
- beep_cmd, /* ^Y */
- beep_cmd, /* ^Z */
- beep_cmd, /* ^[ */
- beep_cmd, /* ^\ */
- beep_cmd, /* ^] */
- beep_cmd, /* ^^ */
- beep_cmd, /* ^_ */
- beep_cmd, /* */
- beep_cmd, /* ! */
- beep_cmd, /* " */
- beep_cmd, /* # */
- beep_cmd, /* $ */
- beep_cmd, /* % */
- beep_cmd, /* & */
- beep_cmd, /* ' */
- beep_cmd, /* ( */
- beep_cmd, /* ) */
- beep_cmd, /* * */
- beep_cmd, /* + */
- beep_cmd, /* , */
- beep_cmd, /* - */
- beep_cmd, /* . */
- beep_cmd, /* / */
- dec_extended_map_cmd, /* 0 */
- dec_extended_map_cmd, /* 1 */
- dec_extended_map_cmd, /* 2 */
- dec_extended_map_cmd, /* 3 */
- dec_extended_map_cmd, /* 4 */
- dec_extended_map_cmd, /* 5 */
- dec_extended_map_cmd, /* 6 */
- dec_extended_map_cmd, /* 7 */
- dec_extended_map_cmd, /* 8 */
- dec_extended_map_cmd, /* 9 */
- beep_cmd, /* : */
- beep_cmd, /* ; */
- beep_cmd, /* < */
- beep_cmd, /* = */
- beep_cmd, /* > */
- beep_cmd, /* ? */
- beep_cmd, /* @ */
- previous_line_cmd, /* A */
- next_line_cmd, /* B */
- page_right_cmd, /* C */
- page_left_cmd, /* D */
- beep_cmd, /* E */
- beep_cmd, /* F */
- beep_cmd, /* G */
- beep_cmd, /* H */
- beep_cmd, /* I */
- beep_cmd, /* J */
- beep_cmd, /* K */
- beep_cmd, /* L */
- next_line_cmd, /* M */
- beep_cmd, /* N */
- beep_cmd, /* O */
- pf1_map_cmd, /* P */ /* PF1 */
- help_cmd, /* Q */ /* PF2 */
- edt_find_next_cmd, /* R */ /* PF3 */
- beep_cmd, /* S */ /* PF4 */
- beep_cmd, /* T */
- beep_cmd, /* U */
- beep_cmd, /* V */
- beep_cmd, /* W */
- beep_cmd, /* X */
- beep_cmd, /* Y */
- beep_cmd, /* Z */
- beep_cmd, /* [ */
- beep_cmd, /* \ */
- beep_cmd, /* ] */
- beep_cmd, /* ^ */
- beep_cmd, /* _ */
- beep_cmd, /* ` */
- beep_cmd, /* a */
- beep_cmd, /* b */
- beep_cmd, /* c */
- beep_cmd, /* d */
- beep_cmd, /* e */
- beep_cmd, /* f */
- beep_cmd, /* g */
- beep_cmd, /* h */
- beep_cmd, /* i */
- beep_cmd, /* j */
- beep_cmd, /* k */
- beep_cmd, /* l */
- beep_cmd, /* m */
- set_mark_cmd, /* n */
- beep_cmd, /* o */
- edt_line_cmd, /* p */ /* KP0 */
- beep_cmd, /* q */ /* KP1 */
- beep_cmd, /* r */ /* KP2 */
- beep_cmd, /* s */ /* KP3 */
- edt_forward_cmd, /* t */ /* KP4 */
- edt_back_cmd, /* u */ /* KP5 */
- beep_cmd, /* v */ /* KP6 */
- beep_cmd, /* w */ /* KP7 */
- edt_page_cmd, /* x */ /* KP8 */
- beep_cmd, /* y */ /* KP9 */
- beep_cmd, /* z */
- beep_cmd, /* { */
- beep_cmd, /* | */
- beep_cmd, /* } */
- beep_cmd, /* ~ */
- beep_cmd /* ^? */
- };
-
- void (*pf1_map[128])() = /* Gold */
- {
- beep_cmd, /* ^@ */
- beep_cmd, /* ^A */
- beep_cmd, /* ^B */
- beep_cmd, /* ^C */
- beep_cmd, /* ^D */
- beep_cmd, /* ^E */
- beep_cmd, /* ^F */
- beep_cmd, /* ^G */
- beep_cmd, /* ^H */
- beep_cmd, /* ^I */
- beep_cmd, /* ^J */
- beep_cmd, /* ^K */
- beep_cmd, /* ^L */
- beep_cmd, /* ^M */
- beep_cmd, /* ^N */
- beep_cmd, /* ^O */
- beep_cmd, /* ^P */
- beep_cmd, /* ^Q */
- beep_cmd, /* ^R */
- beep_cmd, /* ^S */
- beep_cmd, /* ^T */
- beep_cmd, /* ^U */
- beep_cmd, /* ^V */
- beep_cmd, /* ^W */
- beep_cmd, /* ^X */
- beep_cmd, /* ^Y */
- beep_cmd, /* ^Z */
- pf1_esc_map_cmd, /* ^[ */
- beep_cmd, /* ^\ */
- beep_cmd, /* ^] */
- beep_cmd, /* ^^ */
- beep_cmd, /* ^_ */
- beep_cmd, /* */
- beep_cmd, /* ! */
- beep_cmd, /* " */
- beep_cmd, /* # */
- beep_cmd, /* $ */
- beep_cmd, /* % */
- beep_cmd, /* & */
- beep_cmd, /* ' */
- beep_cmd, /* ( */
- beep_cmd, /* ) */
- beep_cmd, /* * */
- beep_cmd, /* + */
- beep_cmd, /* , */
- beep_cmd, /* - */
- beep_cmd, /* . */
- beep_cmd, /* / */
- digit_arg_cmd, /* 0 */
- digit_arg_cmd, /* 1 */
- digit_arg_cmd, /* 2 */
- digit_arg_cmd, /* 3 */
- digit_arg_cmd, /* 4 */
- digit_arg_cmd, /* 5 */
- digit_arg_cmd, /* 6 */
- digit_arg_cmd, /* 7 */
- digit_arg_cmd, /* 8 */
- digit_arg_cmd, /* 9 */
- beep_cmd, /* : */
- beep_cmd, /* ; */
- beep_cmd, /* < */
- beep_cmd, /* = */
- beep_cmd, /* > */
- beep_cmd, /* ? */
- beep_cmd, /* @ */
- beep_cmd, /* A */
- beep_cmd, /* B */
- beep_cmd, /* C */
- beep_cmd, /* D */
- beep_cmd, /* E */
- beep_cmd, /* F */
- beep_cmd, /* G */
- beep_cmd, /* H */
- beep_cmd, /* I */
- beep_cmd, /* J */
- beep_cmd, /* K */
- beep_cmd, /* L */
- beep_cmd, /* M */
- beep_cmd, /* N */
- one_window_cmd, /* O */
- beep_cmd, /* P */
- exit_cmd, /* Q */
- beep_cmd, /* R */
- sys_spawn_cmd, /* S */
- beep_cmd, /* T */
- beep_cmd, /* U */
- del_window_cmd, /* V */
- beep_cmd, /* W */
- two_window_cmd, /* X */
- beep_cmd, /* Y */
- beep_cmd, /* Z */
- beep_cmd, /* [ */
- beep_cmd, /* \ */
- beep_cmd, /* ] */
- beep_cmd, /* ^ */
- beep_cmd, /* _ */
- beep_cmd, /* ` */
- beep_cmd, /* a */
- beep_cmd, /* b */
- beep_cmd, /* c */
- beep_cmd, /* d */
- beep_cmd, /* e */
- beep_cmd, /* f */
- beep_cmd, /* g */
- beep_cmd, /* h */
- beep_cmd, /* i */
- beep_cmd, /* j */
- beep_cmd, /* k */
- beep_cmd, /* l */
- beep_cmd, /* m */
- beep_cmd, /* n */
- one_window_cmd, /* o */
- beep_cmd, /* p */
- exit_cmd, /* q */
- beep_cmd, /* r */
- sys_spawn_cmd, /* s */
- beep_cmd, /* t */
- beep_cmd, /* u */
- del_window_cmd, /* v */
- beep_cmd, /* w */
- two_window_cmd, /* x */
- beep_cmd, /* y */
- beep_cmd, /* z */
- beep_cmd, /* { */
- beep_cmd, /* | */
- beep_cmd, /* } */
- beep_cmd, /* ~ */
- beep_cmd /* ^? */
- };
-
- void execute_key()
- {
- char ch;
- int r,c;
- c = CURS_COL - COLUMN + 1;
- r = CURS_ROW;
- if (MINI_BUF[0] != '\0') put_message();
- if (r < 1) r = 1;
- else if (r > (WIN->bot - WIN->top + 1))
- r = WIN->bot - WIN->top + 1;
- if (c > SCREEN_WIDTH) c = SCREEN_WIDTH;
- else if (c < 1) c = 1;
- goto_rc(r,c);
- fflush(stdout);
- DIGIT_ARG = (int *) NULL;
- ch = getkey();
- if (MINI_BUF[0] != '\0') clear_minibuffer();
- LAST_CHAR = ch;
- (*root_map[ (int) ch ])();
- }
-
- void ctrl_x_map_cmd()
- {
- char ch;
-
- ch = getkey();
- (*ctrl_x_map[ (int) ch ])();
- }
-
- void ctrl_k_map_cmd()
- {
- char ch;
-
- ch = getkey();
- (*ctrl_k_map[ (int) ch ])();
- }
-
- void ctrl_w_map_cmd()
- {
- char ch;
-
- ch = getkey();
- (*ctrl_w_map[ (int) ch ])();
- }
-
- void O_map_cmd()
- {
- char ch;
-
- ch = getkey();
- LAST_CHAR = ch;
- (*esc_O_map[ (int) ch ])();
- }
-
- void esc_map_cmd()
- {
- char ch;
-
- ch = getkey();
- LAST_CHAR = ch;
- (*escape_map[ (int) ch ])();
- }
-
- /* weird sequences of form ^[[n~ where n is an integer */
- void dec_extended_map_cmd()
- {
- char ch, numstr[5];
- int i, num;
-
- ch = LAST_CHAR; /* should be integer */
- i = 0;
- numstr[i++] = ch;
-
- while (ch = getkey(), isdigit(ch)) numstr[i++] = ch;
- if (ch == '~')
- {
- numstr[i++] = '\0';
- sscanf(numstr,"%d",&num);
- switch (num)
- {
- case 5:
- page_up_cmd(); break; /* prev screen */
- case 6:
- page_down_cmd(); break; /* next screen */
- case 1:
- search_cmd(); break; /* find */
- case 4:
- set_mark_cmd(); break; /* select */
- case 2:
- goto_mark_cmd(); break; /* insert here */
- case 28:
- help_cmd(); break; /* Help */
- case 29: /* do */
- extended_cmd_cmd(); break;
- default:
- beep_cmd(); break;
- }
- }
- else beep_cmd();
- }
-
- /* weird sequences of form ^[[n~ where n is an integer */
- void pf1_esc_map_cmd()
- {
- char ch, numstr[5];
- int i, num;
-
- LAST_CHAR = ch = getkey();
- switch (ch)
- {
- case 'O':
- LAST_CHAR = ch = getkey();
- switch (ch)
- {
- case 't': /* KP4 */
- end_of_buffer_cmd(); break;
- case 'u': /* KP5 */
- top_of_buffer_cmd(); break;
- case 'w': /* KP7 */
- extended_cmd_cmd(); break;
- case 'n': /* KP7 */
- goto_mark_cmd(); break;
- case 'R': /* PF3 */
- edt_find_cmd(); break;
- default :
- beep_cmd(); break;
- }
- break;
- case '[':
- LAST_CHAR = ch = getkey();
- switch (ch)
- {
- case 'A':
- other_window_cmd(); break;
- case 'B':
- other_window_cmd(); break;
- case 'C':
- page_left_cmd(); break;
- case 'D':
- page_right_cmd(); break;
- default :
- beep_cmd(); break;
- };
- break;
- default :
- beep_cmd(); break;
- }
- }
-
- void pf1_map_cmd()
- {
- char ch;
-
- ch = getkey();
- LAST_CHAR = ch;
- (*pf1_map[ (int) ch ])();
- }
-
- void beep_cmd()
- {
- fputc('\007',stdout);
- }
-
- void page_down_cmd()
- {
- int n = 1;
- if (DIGIT_ARG != (int *) NULL) n = *DIGIT_ARG;
- update_windows(C_LINE + n * (WIN->bot - WIN->top + 1));
- }
- void page_up_cmd()
- {
- int n = 1;
- if (DIGIT_ARG != (int *) NULL) n = *DIGIT_ARG;
- update_windows(C_LINE - n * (WIN->bot - WIN->top + 1));
- }
-
- void page_right_cmd()
- {
- int n = 1;
- if (DIGIT_ARG != (int *) NULL) n = *DIGIT_ARG;
- COLUMN = COLUMN + n * 59;
- update_windows(C_LINE);
- }
-
- void page_left_cmd()
- {
- int n = 1;
- if (DIGIT_ARG != (int *) NULL) n = *DIGIT_ARG;
- COLUMN = COLUMN - n * 59;
- update_windows(C_LINE);
- }
-
- void next_line_cmd()
- {
- int n = 1;
- if (DIGIT_ARG != (int *) NULL) n = *DIGIT_ARG;
- update_windows(C_LINE + n);
- }
-
- void previous_line_cmd()
- {
- int n = 1;
- if (DIGIT_ARG != (int *) NULL) n = *DIGIT_ARG;
- update_windows(C_LINE - n);
- }
-
- void top_of_buffer_cmd()
- {
- update_windows(1);
- }
-
- void end_of_buffer_cmd()
- {
- update_windows(NUM_LINES);
- }
-
- extern void sys_spawn_cmd()
- {
- int update = 0;
- reset_tty();
- reset_display();
- fflush(stdout);
- #ifdef VMS
- if (LAST_CHAR == '\032') exit(0);
- if (do_shell_command()) update = 1; /* scroll region reset by message facility */
- #else
- killpg(getpgrp(0),18);
- update = 1;
- #endif
- init_tty();
- if (update) redraw_display();
- }
-
- void redraw_cmd()
- {
- redraw_display();
- }
-
- void goto_line_cmd()
- {
- int n = C_LINE;
- if (DIGIT_ARG != (int *) NULL) n = *DIGIT_ARG;
- else
- {
- MINI_BUF[0] = 0;
- if (!read_from_minibuffer("Line: ", MINI_BUF)) return;
- sscanf(MINI_BUF,"%d",&n);
- MINI_BUF[0] = 0;
- }
- update_windows(n);
- }
-
- void goto_percent_cmd()
- {
- unsigned char *pos;
- int n;
- if (DIGIT_ARG != (int *) NULL) n = *DIGIT_ARG;
- else
- {
- MINI_BUF[0] = 0;
- if (!read_from_minibuffer("%: ", MINI_BUF)) return;
- sscanf(MINI_BUF,"%d",&n);
- MINI_BUF[0] = 0;
- }
- if (n < 0) n = 0; else if (n > 100) n = 100;
- pos = BEG + (int) (n * (int) (EOB - BEG)) / 100;
- n = what_line(pos);
- update_windows(n);
- }
-
- void extended_key_cmd()
- {
- if (-1 == do_extended_key()) exit_cmd();
- }
-
- void extended_cmd_cmd()
- {
- if (-1 == do_extended_cmd()) exit_cmd();
- }
-
- void set_mark_cmd()
- {
- BUF->mark = C_LINE;
- message("Mark Set.",0);
- }
-
- void goto_mark_cmd()
- {
- int mark = BUF->mark;
- BUF->mark = C_LINE;
- update_window(mark);
- message("Mark Set.",0);
- }
-
- void one_window_cmd()
- {
- one_window();
- }
-
- void two_window_cmd()
- {
- two_windows();
- }
-
- void del_window_cmd()
- {
- delete_window();
- }
-
- void other_window_cmd()
- {
- int n = 1;
- if (DIGIT_ARG != (int *) NULL) n = *DIGIT_ARG;
- other_window(n);
- }
-
-
- void find_next_cmd()
- {
- int col, line, n = 1;
- unsigned char *pos;
-
- if (DIGIT_ARG != NULL) n = *DIGIT_ARG;
- line = search(CURS_POS + SEARCH_DIR, n, &col);
- if (line < 1) return;
- pos = CURS_POS;
- if ((line < WIN->beg_line) || (line > WIN->beg_line + WIN->bot - WIN->top))
- update_window(line);
- CURS_POS = pos;
- CURS_ROW = line - C_LINE + 1;
- CURS_COL = col;
- }
-
- void search_cmd()
- {
- SEARCH_DIR = 1;
- if (read_from_minibuffer("Search: ",SEARCH_STR) == -1)
- return;
- CURS_POS = C_POS;
- find_next_cmd();
- }
-
- void search_back_cmd()
- {
- SEARCH_DIR = -1;
- if (read_from_minibuffer("Search: ",SEARCH_STR) == -1)
- return;
- find_next_cmd();
- }
-
- void help_cmd()
- {
- do_help_command();
- }
-
- void find_file_cmd()
- {
- user_get_file();
- }
-
- void time_cmd()
- {
- message(get_time(),0);
- }
-
- void exit_cmd()
- {
- reset_tty();
- reset_display();
- #ifndef VMS
- fputc('\n',stdout);
- #endif
- exit(0);
- }
-
- void digit_arg_cmd()
- {
- char num[15], ch;
- int j = 0;
- static int digits;
-
- num[j++] = LAST_CHAR;
- ch = getkey();
- while ((ch >= '0') && (ch <= '9'))
- {
- num[j++] = ch;
- ch = getkey();
- }
-
- if (((j == 1) && (LAST_CHAR != '-')) || (j > 1))
- {
- num[j] = '\0';
- sscanf(num,"%d",&digits);
- DIGIT_ARG = &digits;
- }
- LAST_CHAR = ch;
- (*root_map[ (int) ch ])();
- }
-
-
- void toggle_width_cmd()
- {
- if (SCREEN_WIDTH == 80)
- {
- if (!RESTORE_WIDTH_TO) RESTORE_WIDTH_TO = 80;
- set_width(132, 1);
- }
- else if (SCREEN_WIDTH == 132)
- {
- if (!RESTORE_WIDTH_TO) RESTORE_WIDTH_TO = 132;
- set_width(80, 1);
- }
- }
-
- void edt_forward_cmd()
- {
- EDT_DIRECTION = 1;
- }
-
- void edt_back_cmd()
- {
- EDT_DIRECTION = 0;
- }
-
- void edt_page_cmd()
- {
- if (EDT_DIRECTION == 0)
- {
- page_up_cmd();
- }
- else
- {
- page_down_cmd();
- }
- }
-
- void edt_line_cmd()
- {
- if (EDT_DIRECTION == 0)
- {
- previous_line_cmd();
- }
- else
- {
- next_line_cmd();
- }
- }
-
- void edt_find_cmd()
- {
- if (EDT_DIRECTION == 0)
- {
- search_back_cmd();
- }
- else
- {
- search_cmd();
- }
- }
-
- void edt_find_next_cmd()
- {
- if (EDT_DIRECTION == 0)
- {
- SEARCH_DIR = -1;
- }
- else
- {
- SEARCH_DIR = 1;
- }
- find_next_cmd();
- }
-