Mercurial > emacs
changeset 533:31e638e8fe93
*** empty log message ***
author | Jim Blandy <jimb@redhat.com> |
---|---|
date | Tue, 04 Feb 1992 02:27:43 +0000 |
parents | ae2ae14f7605 |
children | 6f7abc0e1f10 |
files | src/term.c |
diffstat | 1 files changed, 60 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/term.c Tue Feb 04 02:27:43 1992 +0000 +++ b/src/term.c Tue Feb 04 02:27:43 1992 +0000 @@ -29,6 +29,7 @@ #include "screen.h" #include "disptab.h" #include "termhooks.h" +#include "keyboard.h" #define max(a, b) ((a) > (b) ? (a) : (b)) #define min(a, b) ((a) < (b) ? (a) : (b)) @@ -1062,6 +1063,63 @@ cmcostinit (); /* set up cursor motion costs */ } +/* Find the escape codes sent by the function keys for Vfunction_key_map. + This function scans the termcap function key sequence entries, and + adds entries to Vfunction_key_map for each function key it finds. */ + +void +term_get_fkeys (address) + char **address; +{ + extern char *tgetstr (); + struct fkey_table { + char *cap, *name; + }; + static struct fkey_table keys[] = { + "kl", "left", + "kr", "right", + "ku", "up", + "kd", "down", + "kh", "home", + "k1", "f1", + "k2", "f2", + "k3", "f3", + "k4", "f4", + "k5", "f5", + "k6", "f6", + "k7", "f7", + "k8", "f8", + "k9", "f9", + "k0", "f10", + "kH", "home-down", + "ka", "clear-tabs", + "kt", "clear-tab", + "kT", "set-tab", + "kC", "clear", + "kL", "deleteline", + "kM", "exit-insert", + "kE", "clear-eol", + "kS", "clear-eos", + "kI", "insert", + "kA", "insertline", + "kN", "next", + "kP", "prior", + "kF", "scroll-forward", + "kR", "scroll-reverse" + }; + int i; + + for (i = 0; i < (sizeof (keys)/sizeof (keys[0])); i++) + { + char *sequence = tgetstr (keys[i].cap, address); + if (sequence) + Fdefine_key (Vfunction_key_map, + build_string (sequence), + Fmake_vector (make_number (1), intern (keys[i].name))); + } +} + + term_init (terminal_type) char *terminal_type; { @@ -1165,6 +1223,8 @@ TF_xs = tgetflag ("xs"); TF_teleray = tgetflag ("xt"); + term_get_fkeys (address); + /* Get screen size from system, or else from termcap. */ get_screen_size (&SCREEN_WIDTH (selected_screen), &SCREEN_HEIGHT (selected_screen));