/* * kbd.h: type definitions for symbol.c and kbd.c for mg experimental */ typedef struct { KCHAR k_base; /* first key in element */ KCHAR k_num; /* last key in element */ PF *k_funcp; /* pointer to array of pointers to functions */ struct keymap_s *k_prefmap; /* keymap of ONLY prefix key in element */ } MAP_ELEMENT; /* predefined keymaps are NOT type KEYMAP because final array needs * dimension. If any changes are made to this struct, they must be * reflected in all keymap declarations. */ #define KEYMAPE(NUM) {\ short map_num;\ short map_max;\ PF map_default;\ MAP_ELEMENT map_element[NUM];\ } /* elements used */ /* elements allocated */ /* default function */ /* realy [e_max] */ typedef struct keymap_s KEYMAPE(1) KEYMAP; #define none ctrlg #define prefix (PF)NULL /* number of map_elements to grow an overflowed keymap by */ #define IMAPEXT 0 #define MAPGROW 3 #define MAPINIT (MAPGROW+1) /* max number of default bindings added to avoid creating new element */ #define MAPELEDEF 4 typedef struct MAPS_S { KEYMAP *p_map; char *p_name; } MAPS; extern MAPS map_table[]; typedef struct { PF n_funct; char *n_name; } FUNCTNAMES; extern FUNCTNAMES functnames[]; extern int nfunct; extern PF doscan(); extern PF name_function(); extern char *function_name(); extern int complete_function(); extern KEYMAP *name_map(); extern char *map_name(); extern MAPS *name_mode(); extern MAP_ELEMENT *ele;