X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=keymap.c;h=87b2b28d4dd3f937f9605a6b111e46416a741673;hp=716308a23a4d50bfa2e0a685a5cc70a99f74d90f;hb=16be8d10413bbcf822577afd4019d65aba7459e0;hpb=4a0b020a3048f079979bea43c04f9fe388f9354d diff --git a/keymap.c b/keymap.c index 716308a..87b2b28 100644 --- a/keymap.c +++ b/keymap.c @@ -7,28 +7,14 @@ * please see the file GPL in the top level source directory. */ -#if HAVE_CONFIG_H -# include "config.h" -#endif - -#include -#include -#include -#include -#include -#include +#include -#include +#include #include #include "mutt.h" #include "keymap.h" -#include - - -#include -#include -#include +#include "crypt.h" #define MUTT_FUNCTIONS_VALUES #include "functions.def" @@ -44,25 +30,13 @@ struct mapping_t Menus[] = { {"postpone", MENU_POST}, {"pgp", MENU_PGP}, {"smime", MENU_SMIME}, - -#ifdef HAVE_GPGME {"key_select_pgp", MENU_KEY_SELECT_PGP}, {"key_select_smime", MENU_KEY_SELECT_SMIME}, -#endif - - -#ifdef MIXMASTER - {"mix", MENU_MIX}, -#endif - - {"query", MENU_QUERY}, {"generic", MENU_GENERIC}, {NULL, 0} }; -#define mutt_check_menu(s) mutt_getvaluebyname(s, Menus) - static struct mapping_t KeyNames[] = { {"", KEY_PPAGE}, {"", KEY_NPAGE}, @@ -78,7 +52,7 @@ static struct mapping_t KeyNames[] = { #ifdef KEY_ENTER {"", KEY_ENTER}, #endif - {"", M_ENTER_C}, + {"", '\n'}, {"", '\033'}, {"", '\t'}, {"", ' '}, @@ -108,21 +82,13 @@ static struct keymap_t *allocKeys(int len, keycode_t *keys) static int parse_fkey (const char *s) { - const char *t; int n = 0; - if (s[0] != '<' || ascii_tolower (s[1]) != 'f') + if (s[0] != '<' || ascii_tolower(s[1]) != 'f') return -1; - for (t = s + 2; *t && isdigit ((unsigned char) *t); t++) { - n *= 10; - n += *t - '0'; - } - - if (*t != '>') - return -1; - else - return n; + n = strtol(s + 2, (char **)&s, 10); + return *s == '>' ? n : -1; } /* @@ -131,18 +97,18 @@ static int parse_fkey (const char *s) */ static int parse_keycode (const char *s) { - if (isdigit ((unsigned char) s[1]) && - isdigit ((unsigned char) s[2]) && - isdigit ((unsigned char) s[3]) && s[4] == '>') { - return (s[3] - '0') + (s[2] - '0') * 8 + (s[1] - '0') * 64; - } - return -1; + int n; + + if (*s != '<') + return -1; + n = strtol(s + 1, (char **)&s, 8); + return *s == '>' ? n : -1; } static int parsekeys (const char *str, keycode_t * d, int max) { int n, len = max; - char buff[SHORT_STRING]; + char buff[STRING]; char c; char *s, *t; @@ -364,12 +330,12 @@ int km_dokey (int menu) for (;;) { /* ncurses doesn't return on resized screen when timeout is set to zero */ if (menu != MENU_EDITOR) - timeout ((Timeout > 0 ? Timeout : 60) * 1000); + wtimeout (main_w, (Timeout > 0 ? Timeout : 60) * 1000); tmp = mutt_getch (); if (menu != MENU_EDITOR) - timeout (-1); /* restore blocking operation */ + wtimeout (main_w, -1); /* restore blocking operation */ LastKey = tmp.ch; if (LastKey == -1) @@ -478,7 +444,7 @@ const char *km_keyname(int c) } else if (c >= KEY_F0 && c < KEY_F (256)) /* this maximum is just a guess */ sprintf (buf, "", c - KEY_F0); - else if (IsPrint (c)) + else if (isprint((unsigned char)c)) snprintf (buf, sizeof (buf), "%c", (unsigned char) c); else snprintf (buf, sizeof (buf), "\\x%hx", (unsigned short) c); @@ -528,23 +494,10 @@ void km_init (void) create_bindings (OpPost, MENU_POST); create_bindings (OpQuery, MENU_QUERY); create_bindings (OpAlias, MENU_ALIAS); - - create_bindings (OpPgp, MENU_PGP); create_bindings (OpSmime, MENU_SMIME); - -#ifdef CRYPT_BACKEND_GPGME create_bindings (OpPgp, MENU_KEY_SELECT_PGP); create_bindings (OpSmime, MENU_KEY_SELECT_SMIME); -#endif - -#ifdef MIXMASTER - create_bindings (OpMix, MENU_MIX); - - km_bindkey ("", MENU_MIX, OP_GENERIC_SELECT_ENTRY); - km_bindkey ("h", MENU_MIX, OP_MIX_CHAIN_PREV); - km_bindkey ("l", MENU_MIX, OP_MIX_CHAIN_NEXT); -#endif /* bindings for the line editor */ create_bindings (OpEditor, MENU_EDITOR); @@ -629,7 +582,7 @@ void km_init (void) void km_error_key (int menu) { - char buf[SHORT_STRING]; + char buf[STRING]; struct keymap_t *key; if (!(key = km_find_func (menu, OP_HELP))) @@ -687,7 +640,7 @@ static char *parse_keymap (int *menu, BUFFER * s, int maxmenus, int *nummenus, if (q) *q = '\0'; - if ((menu[i] = mutt_check_menu (p)) == -1) { + if ((menu[i] = mutt_getvaluebyname(p, Menus)) == -1) { snprintf (err->data, err->dsize, _("%s: no such menu"), p); goto error; } @@ -751,22 +704,12 @@ struct binding_t *km_get_table (int menu) return OpEditor; case MENU_QUERY: return OpQuery; - case MENU_PGP: return OpPgp; - -#ifdef CRYPT_BACKEND_GPGME case MENU_KEY_SELECT_PGP: return OpPgp; case MENU_KEY_SELECT_SMIME: return OpSmime; -#endif - -#ifdef MIXMASTER - case MENU_MIX: - return OpMix; -#endif - } return NULL; } @@ -777,12 +720,11 @@ int mutt_parse_bind (BUFFER * buf, BUFFER * s, unsigned long data __attribute__ { struct binding_t *bindings = NULL; char *key; - int menu[sizeof (Menus) / sizeof (struct mapping_t) - 1], r = + int menu[countof(Menus) - 1], r = 0, nummenus, i; - if ((key = parse_keymap (menu, s, sizeof (menu) / sizeof (menu[0]), - &nummenus, err)) == NULL) - return (-1); + if (!(key = parse_keymap(menu, s, countof(menu), &nummenus, err))) + return -1; /* function to execute */ mutt_extract_token (buf, s, 0); @@ -902,24 +844,3 @@ int mutt_parse_exec (BUFFER * buf, BUFFER * s, unsigned long data __attribute__ return 0; } - -/* - * prompts the user to enter a keystroke, and displays the octal value back - * to the user. - */ -void mutt_what_key (void) -{ - int ch; - - mvprintw (LINES - 1, 0, _("Enter keys (^G to abort): ")); - do { - ch = getch (); - if (ch != ERR && ch != ctrl ('G')) { - mutt_message (_("Char = %s, Octal = %o, Decimal = %d"), - km_keyname (ch), ch, ch); - } - } - while (ch != ERR && ch != ctrl ('G')); - - mutt_flushinp (); -}