Annotation of src/usr.bin/mg/kbd.h, Revision 1.14
1.14 ! vincent 1: /* $OpenBSD: kbd.h,v 1.13 2002/02/16 21:27:49 millert 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;
1.14 ! vincent 40: const char *p_name;
1.12 art 41: struct MAPS_S *p_next;
1.2 millert 42: } MAPS;
1.1 deraadt 43:
1.12 art 44: extern MAPS *maps;
45: extern MAPS fundamental_mode;
46: #define fundamental_map (fundamental_mode.p_map)
1.1 deraadt 47:
1.14 ! vincent 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 *);
1.2 millert 55:
1.3 millert 56: extern MAP_ELEMENT *ele;
57: extern MAPS *defb_modes[];