forked from neomutt/neomutt
-
Notifications
You must be signed in to change notification settings - Fork 0
/
keymap.h
136 lines (115 loc) · 4.44 KB
/
keymap.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/**
* @file
* Manage keymappings
*
* @authors
* Copyright (C) 1996-2000,2002,2010 Michael R. Elkins <me@mutt.org>
*
* @copyright
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 2 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef MUTT_KEYMAP_H
#define MUTT_KEYMAP_H
#include <stddef.h>
#include "mutt/mutt.h"
#include "mutt_commands.h"
/* maximal length of a key binding sequence used for buffer in km_bindkey */
#define MAX_SEQ 8
/* type for key storage, the rest of neomutt works fine with int type */
typedef short keycode_t;
enum CommandResult km_bind(char *s, int menu, int op, char *macro, char *desc);
int km_dokey(int menu);
void init_extended_keys(void);
/**
* struct Keymap - A keyboard mapping
*
* entry in the keymap tree
*/
struct Keymap
{
char *macro; /**< macro expansion (op == OP_MACRO) */
char *desc; /**< description of a macro for the help menu */
struct Keymap *next; /**< next key in map */
short op; /**< operation to perform */
short eq; /**< number of leading keys equal to next entry */
short len; /**< length of key sequence (unit: sizeof (keycode_t)) */
keycode_t *keys; /**< key sequence */
};
int km_expand_key(char *s, size_t len, struct Keymap *map);
struct Keymap *km_find_func(int menu, int func);
void km_init(void);
void km_error_key(int menu);
void mutt_what_key(void);
/**
* enum MenuType - Types of GUI selections
*/
enum MenuType
{
MENU_ALIAS, ///< Select an email address by its alias
MENU_ATTACH, ///< Select an attachment
MENU_COMPOSE, ///< Compose an email
MENU_EDITOR, ///< Text entry area
MENU_FOLDER, ///< General file/mailbox browser
MENU_GENERIC, ///< Generic selection list
MENU_MAIN, ///< Index panel (list of emails)
MENU_PAGER, ///< Pager pager (email viewer)
MENU_POST, ///< Select a postponed email
MENU_QUERY, ///< Select from results of external query
MENU_PGP, ///< PGP encryption menu
MENU_SMIME, ///< SMIME encryption menu
#ifdef CRYPT_BACKEND_GPGME
MENU_KEY_SELECT_PGP, ///< Select a PGP key
MENU_KEY_SELECT_SMIME, ///< Select a SMIME key
#endif
#ifdef MIXMASTER
MENU_MIX, ///< Create/edit a Mixmaster chain
#endif
MENU_SUMMARY, ///< Summary pages
MENU_MAX,
};
extern struct Keymap *Keymaps[]; ///< Array of Keymap keybindings, one for each Menu
extern int LastKey; ///< Last real key pressed, recorded by dokey()
extern const struct Mapping Menus[];
/**
* struct Binding - Mapping between a user key and a function
*/
struct Binding
{
const char *name; /**< name of the function */
int op; /**< function id number */
const char *seq; /**< default key binding */
};
const struct Binding *km_get_table(int menu);
const char *mutt_get_func(const struct Binding *bindings, int op);
extern const struct Binding OpGeneric[];
extern const struct Binding OpPost[];
extern const struct Binding OpMain[];
extern const struct Binding OpAttach[];
extern const struct Binding OpPager[];
extern const struct Binding OpCompose[];
extern const struct Binding OpBrowser[];
extern const struct Binding OpEditor[];
extern const struct Binding OpQuery[];
extern const struct Binding OpAlias[];
extern const struct Binding OpPgp[];
extern const struct Binding OpSmime[];
#ifdef MIXMASTER
extern const struct Binding OpMix[];
#endif
void mutt_free_keys(void);
enum CommandResult mutt_parse_bind(struct Buffer *buf, struct Buffer *s, unsigned long data, struct Buffer *err);
enum CommandResult mutt_parse_exec(struct Buffer *buf, struct Buffer *s, unsigned long data, struct Buffer *err);
enum CommandResult mutt_parse_macro(struct Buffer *buf, struct Buffer *s, unsigned long data, struct Buffer *err);
enum CommandResult mutt_parse_push(struct Buffer *buf, struct Buffer *s, unsigned long data, struct Buffer *err);
#endif /* MUTT_KEYMAP_H */