3 my $esc = ['g9 mode', '+']; # globally label escape as meta key
8 'H' => ['g2', "screen top"], # top-page
9 'j' => ['g2', "entry <down>"], # next-entry, next-undeleted
10 'k' => ['g2', "entry <up>"], # previous-entry, previous-undeleted
11 'L' => ['g2', "screen bottom"], # bottom-page
12 '^l'=> ['g1', "redraw"], # refresh
13 'M' => ['g2', "screen middle"], # middle-page
14 '^m'=> ['g6 mode^m', "select"], # select-entry, display-message
15 'n' => ['g3', "search <down>"], # search-next
16 'q' => ['g8 mode', "exit"], # exit
17 't' => ['g4', "tag"], # tag-entry
18 'z' => ['g2', "page <down>"], # next-page
19 'Z' => ['g2', "page <up>"], # previous-page
21 '*' => ['g2', "last entry"], # last-entry
22 '=' => ['g2', "first entry"], # first-entry
23 ':' => ['g6', "enter command"], # enter-command
24 ';' => ['g6 arg', "apply to tagged"], # tag-prefix
25 '>' => ['g2', "line <down>"], # next-line
26 '<' => ['g2', "line <up>"], # previous-line
27 ']' => ['g2', "half page <down>"], # half-down
28 '[' => ['g2', "half page <up>"], # half-up
29 '?' => ['g1', "help"], # help
30 '!' => ['g1 arg', "invoke shell"], # shell
31 '/' => ['g3 arg mode/~', "search <down>"], # search
32 '+/'=> ['g3 arg mode/~', "search <up>"], # search
39 "Cheat sheet for the Mutt v2.2 e-mail client,",
40 "showing the default binding for each key.",
42 keywords => [qw' mutt MUA email client '],
47 w => 'message flags (w)',
48 '/~' => 'search patterns (/~)',
52 g1 => [aside => "Temporarily display something without changing state."],
53 g2 => [select => "Scroll list and/or select a different line."],
54 g3 => [search => "Go to a specific message entry."],
55 g4 => [edit => "Modify message flags or contents."],
56 g6 => [command => "Any other action which does not alter an existing message."],
57 g7 => [send => "Prepare and/or send a (new) message."],
58 g8 => [leave => "Exit the opened folder."],
59 g9 => [display => "Permanently alter/toggle current view."],
61 arg => ["key<arg>" => "Commands with a dot need an argument afterwards."],
68 '@' => ['g1', "display sender"], # display-address
69 '.' => ['g8', "list new mail"], # buffy-list #TODO
70 '|' => ['g6', "pipe to shell"], # pipe-message
71 '$' => ['g4', "save mailbox"], # sync-mailbox
72 '#' => ['g4', "split up thread"], # break-thread
73 '&' => ['g4', "thread tagged"], # link-threads
74 '%' => ['g4', "toggle reado<>nl<>y"], # toggle-write
75 '-' => ['g9', "collapse thread"],
76 '_' => ['g9', "collapse all"],
77 '~' => ['g4 arg', "save mark"], # mark-message #TODO
78 "'" => ['g3 arg', "marked mes<>sag<>e"],
81 'a' => ['g6', "create alias"], # create-alias
82 'b' => ['g7', "bounce"], # bounce-message
83 '^b'=> ['g1', "url<>view"],
84 '+b'=> [undef, "search bodies"], # M <search>~b
85 'c' => ['g8', "open folder"], # change-folder
86 'C' => ['g6', "copy messag<>e"], # copy-message
87 '+c'=> ['g8', "open reado<>nly"], # change-folder-readonly
88 '+C'=> [undef, "make plain copy"], # decode-copy
89 'd' => ['g4', "delete"], # delete-message
90 'D' => ['g4 arg mode/~', "delete patt<>er<>n"], # delete-pattern
91 '^d'=> ['g4', "delete thread"], # delete-thread
92 '+d'=> ['g4', "delete subthread"], # delete-subthread
93 'e' => ['g4 linkvi', "edit"], # edit
94 '^e'=> ['g4', "edit con<>tent type"], # edit-type
95 '+e'=> [undef, "edit+send copy"], # resend-message
96 'f' => ['g7 modem', "forward"], # forward-message
97 'F' => ['g4', "toggle important"], # flag-message
98 '^f'=> ['g6', "forget pass<>phras<>e"], # forget-passphrase
99 'g' => ['g7 modem', "reply to all\nGroup reply"], # group-reply
100 'G' => ['g6', "fetch POP\nGather new mail"], # fetch-mail
101 'i' => ['g6', "fetch IMAP"], # imap-fetch-mail
102 '^i'=> ['g3', "unread msg <down>"], # next-new-then-unread
103 '+^i'=> [undef, "unread msg <up>"], # previous-new-then-unread
104 'j' => ['g2', "messag<>e <down>"], # next-undeleted
105 'k' => ['g2', "messag<>e <up>"], # previous-undeleted
106 'J' => ['g3', "any <down>"], # next-entry
107 'K' => ['g3', "any <up>"], # previous-entry
108 '^k'=> ['g1', "extract pub keys"], # extract-keys
109 '+k'=> ['g7 modem', "send public key"], # mail-key
110 'l' => ['g9 arg mode/~', "limit pattern"], # limit
111 'L' => ['g7 modem', "reply to list"], # list-reply
112 '+l'=> ['g1', "mlist actions"], # list-actions/show-limit
113 #'+l'=> [, "show current limit"],
114 'm' => ['g7 modem', "compo<>s<>e mail"], # mail
115 'N' => ['g4', "toggle new"], # toggle-new
116 '^n'=> ['g3', "thread <down>"], # next-thread
117 '+n'=> ['g3', "subthr<>ead <down>"], # next-subthread
118 'o' => ['g9 modeo', "sort"], # sort-mailbox
119 'O' => ['g9 modeo', "sort reverse"], # sort-reverse
120 'p' => ['g1', "print"], # print-message
121 'P' => ['g3', "to parent"], # parent-message
122 '^p'=> ['g3', "thread <up>"], # previous-thread
123 '+p'=> ['g3', "subthr<>ead <up>"], # previous-subthread
124 '+P'=> [undef, "check for pgp"], # check-traditional-pgp
125 'q' => ['g8', "quit"], # quit
126 'Q' => ['g1 arg', "query addr<>ess<>es"], # query
127 'r' => ['g7 modem', "reply to sender"], # reply
128 'R' => ['g7 modem', "recall postpon<>e<>d"], # recall-message
129 '^r'=> ['g4', "mark thread read"], # read-thread
130 '+r'=> ['g4', "mark sub<>thread r<>ead"], # read-subthread
131 's' => ['g4', "move"], # save-message
132 '+s'=> ['g4', "save and delete"], # decode-save
133 'T' => ['g4 arg mode/~', "tag patt<>er<>n"], # tag-pattern
134 '^t'=> ['g4 arg mode/~', "untag pattern"], # untag-pattern
135 '+t'=> ['g4', "tag thread"], # tag-thread
136 'u' => ['g4', "undo delete"], # undelete-message
137 'U' => ['g4 arg mode/~', "res<>tore pat<>t<>er<>n"], # undelete-pattern
138 '^u'=> ['g4', "restore thread"], # undelete-thread
139 '+u'=> ['g4', "restore subthread"], # undelete-subthread
140 'v' => ['g1', "attach<>ments"], # view-attachments
141 'V' => ['g1', "version"], # show-version
142 '+v'=> ['g9', "(un)collapse thread"], # collapse-thread
143 '+V'=> ['g9', "(un)collapse threads"], # collapse-all
144 'w' => ['g4 arg modew', "set flag"], # set-flag
145 'W' => ['g4 arg modew', "clear flag"], # clear-flag
146 'x' => ['g8', "abort"], # exit
147 'y' => ['g8', "list incoming mailboxes"], # M <change-folder>?<toggle-mailboxes>
148 'Y' => ['g4 arg', "edit label"], # edit-label
154 '|' => ['g4', "pipe attach<>m<>ent"],
155 'a' => ['g4', "attach file"],
156 'A' => ['g4', "attach messag<>e"],
157 'b' => ['g4', "edit bcc"],
158 '^b'=> ['g1', "url<>view"],
159 'c' => ['g4', "edit cc"],
160 'C' => ['g6', "copy file"],
161 'd' => ['g4', "desc<>ribe attach<>m<>ent"],
162 'D' => ['g4', "delete attach<>m<>ent"],
163 '^d'=> ['g4', "dispo<>sition tog<>gle"],
164 'e' => ['g4 linkvi', "edit body"],
165 'E' => ['g4 linkvi', "edit all"],
166 '^e'=> ['g4', "edit encoding"],
167 'f' => ['g4', "edit fcc"],
168 '^f'=> ['g6', "forget pass<>phrase"],
169 '+f'=> ['g4', "edit from"],
170 'F' => ['g4', "filter attach<>m<>ent"],
171 'G' => ['g1', "get attach<>m<>ent"],
172 'h' => ['g1', "display message"],
173 'i' => ['g6', "run ispell"],
174 '+k'=> ['g4', "attach PGP key"],
175 'l' => ['g1', "print attach<>m<>ent"],
176 'm' => ['g4', "edit attach<>m<>ent\nMime-appropriate open"],
177 'M' => ['g4', "edit mix"],
178 '^m'=> ['g1', "view attach<>m<>ent"],
179 'n' => ['g6', "new attach<>m<>ent"],
180 'o' => ['g4 ext', "autocrypt toggle"], #TODO
181 '^o'=> ['g4', "rename attach<>m<>ent"],
182 'p' => ['g1', "PGP menu"], #TODO
183 'P' => ['g8 mode', "post<>pone"],
184 'r' => ['g4', "edit reply<>-to"],
185 'R' => ['g4', "rename attach<>m<>ent"],
186 's' => ['g4', "edit subject"],
187 'S' => ['g4 menumS', "s/mime options"],
188 't' => ['g4', "edit to"],
189 'T' => ['g4', "enter tags"], #TODO
190 '^t'=> ['g4', "ctype attach<>m<>ent"],
191 'w' => ['g6', "copy to folder"],
192 'u' => ['g6', "unlink toggle"],
193 'v' => ['g1', "preview alt fil<>t<>er"], # m+v mV
195 'V' => ['g1', "preview mailcap filter"],
196 'U' => ['g4', "encode attach<>m<>ent"],
197 'y' => ['g7', "send"],
203 'D' => ['g4', "deleted"],
205 'N' => ['g4', "new"],
207 'O' => ['g4', "old"],
209 'r' => ['g4', "replied"],
211 '*' => ['g4', "tagged"],
212 '!' => ['g4', "flagged"],
217 'A' => ['g3', => "all"],
218 'b' => ['g3 arg', => "msg body"],
219 'B' => ['g3 arg', => "whole msg"],
220 'c' => ['g3 arg', => "cc address"],
221 'C' => ['g3 arg', => "to or cc address"],
222 'd' => ['g3 arg', => "date sent ran<>g<>e"],
223 'D' => ['g3', => "deleted"],
224 'e' => ['g3 arg', => "sender"],
225 'E' => ['g3', => "expired"],
226 'f' => ['g3 arg', => "from"],
227 'F' => ['g3', => "flagged"],
228 'g' => ['g3', => "signed"],
229 'G' => ['g3', => "encryp<>ted"],
230 'h' => ['g3 arg', => "header"],
231 'H' => ['g3 arg', => "spam attr<>ib<>ute"],
232 'i' => ['g3 arg', => "msg id"],
233 'k' => ['g3', => "pgp key"],
234 'L' => ['g3 arg', => "receiv<>d by"],
235 'l' => ['g3', => "mailing list"],
236 'm' => ['g3 arg', => "num<>ber ran<>g<>e"],
237 'M' => ['g3 arg', => "mime type"],
238 'n' => ['g3 arg', => "score range"],
239 'N' => ['g3', => "new"],
240 'O' => ['g3', => "old"],
241 'p' => ['g3', => "to you"],
242 'P' => ['g3', => "by you"],
243 'Q' => ['g3', => "replies"],
244 'r' => ['g3 arg', => "receive date ran<>ge"],
245 'R' => ['g3', => "read"],
246 's' => ['g3', => "subject"],
247 'S' => ['g3', => "super<>seded"],
248 't' => ['g3 arg', => "to address"],
249 'T' => ['g3', => "tagged"],
250 'u' => ['g3', => "subscr<>ibed list"],
251 'U' => ['g3', => "unread"],
252 'v' => ['g3', => "collapsed thread"],
253 'V' => ['g3', => "verified"],
254 'x' => ['g3 arg', => "refer<>ence"],
255 'X' => ['g3 arg', => "attach<>ments"],
256 'y' => ['g3 arg', => "x-label"],
257 'z' => ['g3 arg', => "size range"],
258 '=' => ['g3', => "dupli<>cate"],
259 '$' => ['g3', => "unrefer<>enced"],
260 '(' => ['g3 arg', => "in thread"],
261 '<' => ['g3 arg', => "parent match"],
262 '>' => ['g3 arg', => "child match"],