Annotation of src/usr.bin/mg/kbd.h, Revision 1.10
1.10 ! mickey 1: /* $OpenBSD: kbd.h,v 1.9 2001/05/23 22:10:43 art Exp $ */
1.4 niklas 2:
1.1 deraadt 3: /*
4: * kbd.h: type definitions for symbol.c and kbd.c for mg experimental
5: */
6:
1.2 millert 7: typedef struct {
1.10 ! mickey 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
1.2 millert 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.
1.1 deraadt 20: */
21:
1.2 millert 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] */ \
1.1 deraadt 27: }
1.2 millert 28: typedef struct keymap_s KEYMAPE(1) KEYMAP;
1.1 deraadt 29:
1.2 millert 30: /* Number of map_elements to grow an overflowed keymap by */
1.1 deraadt 31: #define IMAPEXT 0
32: #define MAPGROW 3
33: #define MAPINIT (MAPGROW+1)
34:
1.2 millert 35: /* Max number of default bindings added to avoid creating new element */
1.1 deraadt 36: #define MAPELEDEF 4
37:
38: typedef struct MAPS_S {
1.10 ! mickey 39: KEYMAP *p_map;
! 40: char *p_name;
1.2 millert 41: } MAPS;
1.1 deraadt 42:
1.10 ! mickey 43: extern MAPS map_table[];
1.9 art 44: extern KEYMAP *fundamental_map;
1.1 deraadt 45:
46: typedef struct {
1.10 ! mickey 47: PF n_funct;
! 48: char *n_name;
1.2 millert 49: } FUNCTNAMES;
50:
1.10 ! mickey 51: int dobindkey __P((KEYMAP *, char *, char *));
! 52: KEYMAP *name_map __P((char *));
! 53: MAPS *name_mode __P((char *));
! 54: PF doscan __P((KEYMAP *, int, KEYMAP **));
! 55: PF name_function __P((char *));
! 56: char *function_name __P((PF));
! 57: char *map_name __P((KEYMAP *));
1.2 millert 58:
1.3 millert 59: extern MAP_ELEMENT *ele;
60: extern MAPS *defb_modes[];