1 /* $OpenBSD: kbd.h,v 1.18 2006/07/27 19:59:29 deraadt Exp $ */
3 /* This file is in the public domain. */
6 * kbd.h: type definitions for symbol.c and kbd.c for mg experimental
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 */
14 struct keymap_s *k_prefmap; /* keymap of ONLY prefix key in */
19 * Predefined keymaps are NOT type KEYMAP because final array needs
20 * dimension. If any changes are made to this struct, they must be reflected
21 * in all keymap declarations.
24 #define KEYMAPE(NUM) { \
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] */ \
30 typedef struct keymap_s KEYMAPE(1) KEYMAP;
32 /* Number of map_elements to grow an overflowed keymap by */
35 #define MAPINIT (MAPGROW+1)
37 /* Max number of default bindings added to avoid creating new element */
43 struct maps_s *p_next;
46 extern struct maps_s *maps;
47 extern struct maps_s fundamental_mode;
48 #define fundamental_map (fundamental_mode.p_map)
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 **);
55 int maps_add(KEYMAP *, const char *);
57 extern struct map_element *ele;
58 extern struct maps_s *defb_modes[];