mutt stable branch with some hacks
at jcs 130 lines 3.3 kB view raw
1/* 2 * Copyright (C) 1996-2000,2002,2010 Michael R. Elkins <me@mutt.org> 3 * 4 * This program is free software; you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation; either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 17 */ 18 19#ifndef KEYMAP_H 20#define KEYMAP_H 21 22#include "mapping.h" 23 24/* maximal length of a key binding sequence used for buffer in km_bindkey */ 25#define MAX_SEQ 8 26 27/* type for key storage, the rest of mutt works fine with int type */ 28typedef short keycode_t; 29 30void km_bind (char *, int, int, char *, char *); 31void km_bindkey (char *, int, int); 32int km_dokey (int); 33 34void init_extended_keys(void); 35 36/* entry in the keymap tree */ 37struct keymap_t 38{ 39 char *macro; /* macro expansion (op == OP_MACRO) */ 40 char *descr; /* description of a macro for the help menu */ 41 struct keymap_t *next; /* next key in map */ 42 short op; /* operation to perform */ 43 short eq; /* number of leading keys equal to next entry */ 44 short len; /* length of key sequence (unit: sizeof (keycode_t)) */ 45 keycode_t *keys; /* key sequence */ 46}; 47 48int km_expand_key (char *, size_t, struct keymap_t *); 49struct keymap_t *km_find_func (int, int); 50void km_init (void); 51void km_error_key (int); 52void mutt_what_key (void); 53 54enum 55{ 56 MENU_ALIAS, 57 MENU_ATTACH, 58 MENU_COMPOSE, 59 MENU_EDITOR, 60 MENU_FOLDER, 61 MENU_GENERIC, 62 MENU_MAIN, 63 MENU_PAGER, 64 MENU_POST, 65 MENU_QUERY, 66 67 68 MENU_PGP, 69 MENU_SMIME, 70 71#ifdef CRYPT_BACKEND_GPGME 72 MENU_KEY_SELECT_PGP, 73 MENU_KEY_SELECT_SMIME, 74#endif 75 76#ifdef MIXMASTER 77 MENU_MIX, 78#endif 79 80#ifdef USE_AUTOCRYPT 81 MENU_AUTOCRYPT_ACCT, 82#endif 83 84 85 MENU_MAX 86}; 87 88/* the keymap trees (one for each menu) */ 89extern struct keymap_t *Keymaps[]; 90 91/* dokey() records the last real key pressed */ 92extern int LastKey; 93 94extern const struct mapping_t Menus[]; 95 96struct binding_t 97{ 98 char *name; /* name of the function */ 99 int op; /* function id number */ 100 char *seq; /* default key binding */ 101}; 102 103const struct binding_t *km_get_table (int menu); 104 105extern const struct binding_t OpGeneric[]; 106extern const struct binding_t OpPost[]; 107extern const struct binding_t OpMain[]; 108extern const struct binding_t OpAttach[]; 109extern const struct binding_t OpPager[]; 110extern const struct binding_t OpCompose[]; 111extern const struct binding_t OpBrowser[]; 112extern const struct binding_t OpEditor[]; 113extern const struct binding_t OpQuery[]; 114extern const struct binding_t OpAlias[]; 115 116extern const struct binding_t OpPgp[]; 117 118extern const struct binding_t OpSmime[]; 119 120#ifdef MIXMASTER 121extern const struct binding_t OpMix[]; 122#endif 123 124#ifdef USE_AUTOCRYPT 125extern const struct binding_t OpAutocryptAcct[]; 126#endif 127 128#include "keymap_defs.h" 129 130#endif /* KEYMAP_H */