Annotation of src/usr.bin/mg/kbd.h, Revision 1.4
1.4 ! niklas 1: /* $OpenBSD$ */
! 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 {
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.
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:
30: #define none ctrlg
31: #define prefix (PF)NULL
32:
1.2 millert 33: /* Number of map_elements to grow an overflowed keymap by */
1.1 deraadt 34: #define IMAPEXT 0
35: #define MAPGROW 3
36: #define MAPINIT (MAPGROW+1)
37:
1.2 millert 38: /* Max number of default bindings added to avoid creating new element */
1.1 deraadt 39: #define MAPELEDEF 4
40:
41: typedef struct MAPS_S {
1.2 millert 42: KEYMAP *p_map;
43: char *p_name;
44: } MAPS;
1.1 deraadt 45:
1.2 millert 46: extern MAPS map_table[];
1.1 deraadt 47:
48: typedef struct {
1.2 millert 49: PF n_funct;
50: char *n_name;
51: } FUNCTNAMES;
52:
1.3 millert 53: int dobindkey __P((KEYMAP *, char *, char *));
54: KEYMAP *name_map __P((char *));
55: MAPS *name_mode __P((char *));
1.2 millert 56: PF doscan __P((KEYMAP *, int));
57: PF name_function __P((char *));
58: char *function_name __P((PF));
59: char *map_name __P((KEYMAP *));
60:
1.3 millert 61: extern int nfunct;
62: extern FUNCTNAMES functnames[];
63: extern MAP_ELEMENT *ele;
64: extern MAPS *defb_modes[];