- Timestamp:
- Jun 30, 2003, 6:12:40 PM (21 years ago)
- Branches:
- master, barnowl_perlaim, debian, owl, release-1.10, release-1.4, release-1.5, release-1.6, release-1.7, release-1.8, release-1.9
- Children:
- 453bd70
- Parents:
- c9334b1
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
keymap.c
rf87c490 rcf83b7a 5 5 6 6 /* returns 0 on success */ 7 int owl_keymap_init(owl_keymap *km, char *name, char *desc, void (*default_fn)(int), void (*prealways_fn)(int), void (*postalways_fn)(int)) { 7 int owl_keymap_init(owl_keymap *km, char *name, char *desc, void (*default_fn)(int), void (*prealways_fn)(int), void (*postalways_fn)(int)) 8 { 8 9 if (!name || !desc) return(-1); 9 10 if ((km->name = owl_strdup(name)) == NULL) return(-1); … … 18 19 19 20 /* note that this will free the memory for the bindings! */ 20 void owl_keymap_free(owl_keymap *km) { 21 void owl_keymap_free(owl_keymap *km) 22 { 21 23 owl_free(km->name); 22 24 owl_free(km->desc); … … 24 26 } 25 27 26 void owl_keymap_set_submap(owl_keymap *km, owl_keymap *submap) { 28 void owl_keymap_set_submap(owl_keymap *km, owl_keymap *submap) 29 { 27 30 km->submap = submap; 28 31 } 29 32 30 33 /* creates and adds a key binding */ 31 int owl_keymap_create_binding(owl_keymap *km, char *keyseq, char *command, void (*function_fn)(void), char *desc) { 34 int owl_keymap_create_binding(owl_keymap *km, char *keyseq, char *command, void (*function_fn)(void), char *desc) 35 { 32 36 owl_keybinding *kb, *curkb; 33 37 int i; … … 52 56 53 57 /* returns a summary line describing this keymap. the caller must free. */ 54 char *owl_keymap_summary(owl_keymap *km) { 58 char *owl_keymap_summary(owl_keymap *km) 59 { 55 60 char *s; 56 61 int slen; … … 63 68 64 69 /* Appends details about the keymap to fm */ 65 void owl_keymap_get_details(owl_keymap *km, owl_fmtext *fm) { 70 void owl_keymap_get_details(owl_keymap *km, owl_fmtext *fm) 71 { 66 72 int i, nbindings; 67 73 owl_keybinding *kb; … … 131 137 /* NOTE: keyhandler has private access to the internals of keymap */ 132 138 133 int owl_keyhandler_init(owl_keyhandler *kh) { 139 int owl_keyhandler_init(owl_keyhandler *kh) 140 { 134 141 if (0 != owl_dict_create(&kh->keymaps)) return(-1); 135 142 kh->active = NULL; … … 139 146 140 147 /* adds a new keymap */ 141 void owl_keyhandler_add_keymap(owl_keyhandler *kh, owl_keymap *km) { 148 void owl_keyhandler_add_keymap(owl_keyhandler *kh, owl_keymap *km) 149 { 142 150 owl_dict_insert_element(&kh->keymaps, km->name, km, NULL); 143 151 } 144 152 145 owl_keymap *owl_keyhandler_create_and_add_keymap(owl_keyhandler *kh, char *name, char *desc, void (*default_fn)(int), void (*prealways_fn)(int), void (*postalways_fn)(int)) { 153 owl_keymap *owl_keyhandler_create_and_add_keymap(owl_keyhandler *kh, char *name, char *desc, void (*default_fn)(int), void (*prealways_fn)(int), void (*postalways_fn)(int)) 154 { 146 155 owl_keymap *km; 147 156 km = (owl_keymap*)owl_malloc(sizeof(owl_keymap)); … … 153 162 154 163 /* resets state and clears out key stack */ 155 void owl_keyhandler_reset(owl_keyhandler *kh) { 164 void owl_keyhandler_reset(owl_keyhandler *kh) 165 { 156 166 kh->in_esc = 0; 157 167 memset(kh->kpstack, 0, (OWL_KEYMAP_MAXSTACK+1)*sizeof(int)); … … 159 169 } 160 170 161 owl_keymap *owl_keyhandler_get_keymap(owl_keyhandler *kh, char *mapname) { 171 owl_keymap *owl_keyhandler_get_keymap(owl_keyhandler *kh, char *mapname) 172 { 162 173 return (owl_keymap*)owl_dict_find_element(&kh->keymaps, mapname); 163 174 } 164 175 165 176 /* free the list with owl_cmddict_namelist_free */ 166 void owl_keyhandler_get_keymap_names(owl_keyhandler *kh, owl_list *l) { 177 void owl_keyhandler_get_keymap_names(owl_keyhandler *kh, owl_list *l) 178 { 167 179 owl_dict_get_keys(&kh->keymaps, l); 168 180 } 169 181 170 void owl_keyhandler_keymap_namelist_free(owl_list *l) { 182 void owl_keyhandler_keymap_namelist_free(owl_list *l) 183 { 171 184 owl_list_free_all(l, owl_free); 172 185 } … … 176 189 /* sets the active keymap, which will also reset any key state. 177 190 * returns the new keymap, or NULL on failure. */ 178 owl_keymap *owl_keyhandler_activate(owl_keyhandler *kh, char *mapname) { 191 owl_keymap *owl_keyhandler_activate(owl_keyhandler *kh, char *mapname) 192 { 179 193 owl_keymap *km; 180 194 if (kh->active && !strcmp(mapname, kh->active->name)) return(kh->active); … … 188 202 /* processes a keypress. returns 0 if the keypress was handled, 189 203 * 1 if not handled, -1 on error, and -2 if j==ERR. */ 190 int owl_keyhandler_process(owl_keyhandler *kh, int j) { 204 int owl_keyhandler_process(owl_keyhandler *kh, int j) 205 { 191 206 owl_keymap *km; 192 207 owl_keybinding *kb; … … 272 287 } 273 288 274 void owl_keyhandler_invalidkey(owl_keyhandler *kh) { 289 void owl_keyhandler_invalidkey(owl_keyhandler *kh) 290 { 275 291 char kbbuff[500]; 276 292 owl_keybinding_stack_tostring(kh->kpstack, kbbuff, 500);
Note: See TracChangeset
for help on using the changeset viewer.