1 /* $OpenBSD: kbd.h,v 1.14 2002/03/11 13:02:56 vincent Exp $ */ 2 3 /* 4 * kbd.h: type definitions for symbol.c and kbd.c for mg experimental 5 */ 6 7 typedef struct { 8 KCHAR k_base; /* first key in element */ 9 KCHAR k_num; /* last key in element */ 10 PF *k_funcp; /* pointer to array of pointers 11 * to functions */ 12 struct keymap_s *k_prefmap; /* keymap of ONLY prefix key in 13 * element */ 14 } MAP_ELEMENT; 15 16 /* 17 * predefined keymaps are NOT type KEYMAP because final array needs 18 * dimension. If any changes are made to this struct, they must be reflected 19 * in all keymap declarations. 20 */ 21 22 #define KEYMAPE(NUM) { \ 23 short map_num; /* elements used */ \ 24 short map_max; /* elements allocated */ \ 25 PF map_default; /* default function */ \ 26 MAP_ELEMENT map_element[NUM]; /* really [e_max] */ \ 27 } 28 typedef struct keymap_s KEYMAPE(1) KEYMAP; 29 30 /* Number of map_elements to grow an overflowed keymap by */ 31 #define IMAPEXT 0 32 #define MAPGROW 3 33 #define MAPINIT (MAPGROW+1) 34 35 /* Max number of default bindings added to avoid creating new element */ 36 #define MAPELEDEF 4 37 38 typedef struct MAPS_S { 39 KEYMAP *p_map; 40 const char *p_name; 41 struct MAPS_S *p_next; 42 } MAPS; 43 44 extern MAPS *maps; 45 extern MAPS fundamental_mode; 46 #define fundamental_map (fundamental_mode.p_map) 47 48 int dobindkey(KEYMAP *, const char *, const char *); 49 KEYMAP *name_map(const char *); 50 MAPS *name_mode(const char *); 51 PF doscan(KEYMAP *, int, KEYMAP **); 52 const char *map_name(KEYMAP *); 53 void maps_init(void); 54 int maps_add(KEYMAP *, const char *); 55 56 extern MAP_ELEMENT *ele; 57 extern MAPS *defb_modes[]; 58