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