keyboard: compare combining accents
[sheet.git] / mutt.eng.inc.pl
1 use utf8;
2
3 my %commonkey = (
4         'H' => "screen top",
5         'j' => "entry <down>",
6         'k' => "entry <up>",
7         'L' => "screen bottom",
8         '^l'=> "redraw",
9         'M' => "screen middle",
10         '^m'=> "select",
11         'n' => "search <down>",
12         'q' => "exit",
13         't' => "tag",
14         'z' => "page <down>",
15         'Z' => "page <up>",
16
17         '*' => "last entry",
18         '=' => "first entry",
19         ':' => "enter command",
20         ';' => "apply to tagged",
21         '>' => "line <down>",
22         '<' => "line <up>",
23         ']' => "half page <down>",
24         '[' => "half page <up>",
25         '?' => "help",
26         '!' => "invoke shell",
27         '/' => "search <down>",
28         '+/'=> "search <up>",
29 );
30
31 my %commondef = (
32         "\e"=> 'g9 mode',
33
34         'H' => 'g2', # top-page
35         'j' => 'g2', # next-entry, next-undeleted
36         'k' => 'g2', # previous-entry, previous-undeleted
37         'L' => 'g2', # bottom-page
38         '^l'=> 'g1', # refresh
39         'M' => 'g2', # middle-page
40         '^m'=> 'g6 mode^m', # select-entry, display-message
41         'n' => 'g3', # search-next
42         'q' => 'g8 mode', # exit
43         't' => 'g4', # tag-entry
44         'z' => 'g2', # next-page
45         'Z' => 'g2', # previous-page
46
47         '*' => 'g2', # last-entry
48         '=' => 'g2', # first-entry
49         ':' => 'g6', # enter-command
50         ';' => 'g6 arg', # tag-prefix
51         '>' => 'g2', # next-line
52         '<' => 'g2', # previous-line
53         ']' => 'g2', # half-down
54         '[' => 'g2', # half-up
55         '?' => 'g1', # help
56         '!' => 'g1 arg', # shell
57         '/' => 'g3 arg mode/~', # search
58         '+/'=> 'g3 arg mode/~', # search
59 );
60
61 {
62 key => {
63         %commonkey,
64
65         '@' => "display sender",
66         '.' => "list new mail",
67         '|' => "pipe to shell",
68         '$' => "save mailbox",
69         '#' => "split up thread",
70         '&' => "thread tagged",
71         '%' => "toggle reado<>nl<>y",
72
73         'a' => "create alias",
74         'b' => "bounce",
75         '^b'=> "url<>view",
76         '+b'=> "search bodies",
77         'c' => "open folder",
78         'C' => "copy messag<>e",
79         '+c'=> "open reado<>nly",
80         '+C'=> "make plain copy",
81         'd' => "delete",
82         'D' => "delete patt<>er<>n",
83         '^d'=> "delete thread",
84         '+d'=> "delete subthread",
85         'e' => "edit",
86         '^e'=> "edit con<>tent type",
87         '+e'=> "edit+send copy",
88         'f' => "forward",
89         'F' => "toggle important",
90         '^f'=> "forget pass<>phras<>e",
91         'g' => "reply to all\nGroup reply",
92         'G' => "fetch POP\nGather new mail",
93         'h' => "toggle headers",
94         '^i'=> "unread msg <down>",
95         '+^i'=> "unread msg <up>",
96         'j' => "messag<>e <down>",
97         'k' => "messag<>e <up>",
98         'J' => "any <down>",
99         'K' => "any <up>",
100         '^k'=> "extract pub keys",
101         '+k'=> "send public key",
102         'l' => "limit pattern",
103         'L' => "reply to list",
104         '+l'=> "show current limit",
105         'm' => "compo<>s<>e mail",
106         'N' => "toggle new",
107         '^n'=> "thread <down>",
108         '+n'=> "subthr<>ead <down>",
109         'o' => "sort",
110         'O' => "sort reverse",
111         'p' => "print",
112         'P' => "to parent",
113         '^p'=> "thread <up>",
114         '+p'=> "subthr<>ead <up>",
115         '+P'=> "check for pgp",
116         'q' => "quit",
117         'Q' => "query addr<>ess<>es",
118         'r' => "reply to sender",
119         'R' => "recall postpon<>e<>d",
120         '^r'=> "mark thread read",
121         '+r'=> "mark sub<>thread r<>ead",
122         's' => "move",
123         '+s'=> "save and delete",
124         'T' => "tag patt<>er<>n",
125         '^t'=> "untag pattern",
126         '+t'=> "tag thread",
127         'u' => "undo delete",
128         'U' => "res<>tore pat<>t<>er<>n",
129         '^u'=> "restore thread",
130         '+u'=> "restore subthread",
131         'v' => "attach<>ments",
132         'V' => "version",
133         '+v'=> "(un)collapse thread",
134         '+V'=> "(un)collapse threads",
135         'w' => "set flag",
136         'W' => "clear flag",
137         'x' => "abort",
138         'y' => "list incoming mailboxes",
139
140         (map { 'm'.$_ => $commonkey{$_} } keys %commonkey),
141
142         'm|' => "pipe attach<>m<>ent",
143         'ma' => "attach file",
144         'mA' => "attach messag<>e",
145         'mb' => "edit bcc",
146         'mc' => "edit cc",
147         'mC' => "copy file",
148         'md' => "desc<>ribe attach<>m<>ent",
149         'mD' => "delete attach<>m<>ent",
150         'm^d'=> "dispo<>sition tog<>gle",
151         'me' => "edit body",
152         'mE' => "edit all",
153         'm^e'=> "edit encoding",
154         'mf' => "edit fcc",
155         'm^f'=> "forget pass<>phrase",
156         'm+f'=> "edit from",
157         'mF' => "filter attach<>m<>ent",
158         'mG' => "get attach<>m<>ent",
159         'mh' => "display message",
160         'mi' => "run ispell",
161         'ml' => "print attach<>m<>ent",
162         'mm' => "edit attach<>m<>ent\nMime-appropriate open",
163         'mM' => "edit mix",
164         'm^m'=> "view attach<>m<>ent",
165         'mn' => "new attach<>m<>ent",
166         'mP' => "post<>pone",
167         'mr' => "edit reply<>-to",
168         'mR' => "rename attach<>m<>ent",
169         'ms' => "edit subject",
170         'mS' => "s/mime options",
171         'mt' => "edit to",
172         'm^t'=> "ctype attach<>m<>ent",
173         'mw' => "copy to folder",
174         'mu' => "unlink toggle",
175         'mU' => "encode attach<>m<>ent",
176         'my' => "send",
177
178         'wD' => "deleted",
179         'wN' => "new",
180         'wO' => "old",
181         'wr' => "replied",
182         'w*' => "tagged",
183         'w!' => "flagged",
184
185         '/~A' => "all",
186         '/~b' => "msg body",
187         '/~B' => "whole msg",
188         '/~c' => "cc address",
189         '/~C' => "to or cc address",
190         '/~d' => "date sent ran<>g<>e",
191         '/~D' => "deleted",
192         '/~e' => "sender",
193         '/~E' => "expired",
194         '/~f' => "from",
195         '/~F' => "flagged",
196         '/~g' => "signed",
197         '/~G' => "encryp<>ted",
198         '/~h' => "header",
199         '/~H' => "spam attr<>ib<>ute",
200         '/~i' => "msg id",
201         '/~k' => "pgp key",
202         '/~L' => "receiv<>d by",
203         '/~l' => "mailing list",
204         '/~m' => "num<>ber ran<>g<>e",
205         '/~n' => "score range",
206         '/~N' => "new",
207         '/~O' => "old",
208         '/~p' => "to you",
209         '/~P' => "by you",
210         '/~Q' => "replies",
211         '/~r' => "receive date ran<>ge",
212         '/~R' => "read",
213         '/~s' => "subject",
214         '/~S' => "super<>seded",
215         '/~t' => "to address",
216         '/~T' => "tagged",
217         '/~u' => "subscr<>ibed list",
218         '/~U' => "unread",
219         '/~v' => "collapsed thread",
220         '/~V' => "verified",
221         '/~x' => "refer<>ence",
222         '/~X' => "attach<>ments",
223         '/~y' => "x-label",
224         '/~z' => "size range",
225         '/~=' => "dupli<>cate",
226         '/~$' => "unrefer<>enced",
227         '/~(' => "in thread",
228
229         # globally label escape as meta key
230           "\e"=> "+",
231          "m\e"=> "+",
232          "w\e"=> "+",
233         "/~\e"=> "+",
234 },
235
236 mode => {
237         '' => 'index',
238         'm' => 'compose (m)',
239         w => 'message flags (w)',
240         '/~' => 'search flags (/~)',
241 },
242
243 flag => {
244         g1 => [aside   => "Temporarily display something without changing state."],
245         g2 => [select  => "Scroll list and/or select a different line."],
246         g3 => [search  => "Go to a specific message entry."],
247         g4 => [edit    => "Modify message flags or contents."],
248         g6 => [command => "Any other action which does not alter an existing message."],
249         g7 => [send    => "Prepare and/or send a (new) message."],
250         g8 => [leave   => "Exit the opened folder."],
251         g9 => [display => "Permanently alter/toggle current view."],
252
253         arg => ["key<arg>" => "Commands with a dot need an argument afterwards."],
254 },
255
256 def => {
257         '' => {
258                 %commondef,
259
260                 '@' => 'g1', # display-address
261                 '.' => 'g8', # buffy-list #TODO
262                 '|' => 'g6', # pipe-message
263                 '$' => 'g4', # sync-mailbox
264                 '#' => 'g4', # break-thread
265                 '&' => 'g4', # link-threads
266                 '%' => 'g4', # toggle-write
267                 ' ' => '=^m',
268
269                 'a' => 'g6', # create-alias
270                 'b' => 'g7', # bounce-message
271                 '^b'=> 'g1',
272                 '+b'=> undef, # M <search>~b
273                 'c' => 'g8', # change-folder
274                 'C' => 'g6', # copy-message
275                 '+c'=> 'g8', # change-folder-readonly
276                 '+C'=> undef, # decode-copy
277                 'd' => 'g4', # delete-message
278                 'D' => 'g4 arg', # delete-pattern
279                 '^d'=> 'g4', # delete-thread
280                 '+d'=> 'g4', # delete-subthread
281                 'e' => 'g4 linkvi', # edit
282                 '^e'=> 'g4', # edit-type
283                 '+e'=> undef, # resend-message
284                 'f' => 'g7 modem', # forward-message
285                 'F' => 'g4', # flag-message
286                 '^f'=> 'g6', # forget-passphrase
287                 'g' => 'g7 modem', # group-reply
288                 'G' => 'g6', # fetch-mail
289                 'h' => 'g9', # display-toggle-weed
290                 '^i'=> 'g3', # next-new-then-unread
291                 '+^i'=> undef, # previous-new-then-unread
292                 'j' => 'g2', # next-undeleted
293                 'k' => 'g2', # previous-undeleted
294                 'J' => 'g3', # next-entry
295                 'K' => 'g3', # previous-entry
296                 '^k'=> 'g1', # extract-keys
297                 '+k'=> 'g7 modem', # mail-key
298                 'l' => 'g9', # limit
299                 'L' => 'g7 modem', # list-reply
300                 '+l'=> 'g1', # show-limit
301                 'm' => 'g7 modem', # mail
302                 'N' => 'g4', # toggle-new
303                 '^n'=> 'g3', # next-thread
304                 '+n'=> 'g3', # next-subthread
305                 'o' => 'g9 modeo', # sort-mailbox
306                 'O' => 'g9 modeo', # sort-reverse
307                 'p' => 'g1', # print-message
308                 'P' => 'g3', # parent-message
309                 '^p'=> 'g3', # previous-thread
310                 '+p'=> 'g3', # previous-subthread
311                 '+P'=> undef, # check-traditional-pgp
312                 'q' => 'g8', # quit
313                 'Q' => 'g1 arg', # query
314                 'r' => 'g7 modem', # reply
315                 'R' => 'g7 modem', # recall-message
316                 '^r'=> 'g4', # read-thread
317                 '+r'=> 'g4', # read-subthread
318                 's' => 'g4', # save-message
319                 '+s'=> 'g4', # decode-save
320                 'T' => 'g4 arg', # tag-pattern
321                 '^t'=> 'g4', # untag-pattern
322                 '+t'=> 'g4', # tag-thread
323                 'u' => 'g4', # undelete-message
324                 'U' => 'g4 arg', # undelete-pattern
325                 '^u'=> 'g4', # undelete-thread
326                 '+u'=> 'g4', # undelete-subthread
327                 'v' => 'g1', # view-attachments
328                 'V' => 'g1', # show-version
329                 '+v'=> 'g9', # collapse-thread
330                 '+V'=> 'g9', # collapse-all
331                 'w' => 'g4 arg modew', # set-flag
332                 'W' => 'g4 arg modew', # clear-flag
333                 'x' => 'g8', # exit
334                 'y' => 'g8', # M <change-folder>?<toggle-mailboxes>
335         }, # index
336
337         'm' => {
338                 %commondef,
339
340                 '|' => 'g4',
341                 'a' => 'g6',
342                 'A' => 'g6',
343                 'b' => 'g4',
344                 'c' => 'g4',
345                 'C' => 'g6',
346                 'd' => 'g4',
347                 'D' => 'g4',
348                 '^d'=> 'g4',
349                 'e' => 'g4 linkvi',
350                 'E' => 'g4 linkvi',
351                 '^e'=> 'g4',
352                 'f' => 'g4',
353                 '^f'=> 'g6',
354                 '+f'=> 'g4',
355                 'F' => 'g4',
356                 'G' => 'g1',
357                 'h' => 'g1',
358                 'i' => 'g6',
359                 'l' => 'g1',
360                 'm' => 'g4',
361                 'M' => 'g4',
362                 '^m'=> 'g1',
363                 'n' => 'g6',
364                 'P' => 'g8 mode',
365                 'r' => 'g4',
366                 'R' => 'g4',
367                 's' => 'g4',
368                 'S' => 'g4 menumS',
369                 't' => 'g4',
370                 '^t'=> 'g4',
371                 'w' => 'g6',
372                 'u' => 'g6',
373                 'U' => 'g4',
374                 'y' => 'g7',
375         }, # compose
376
377         w => {
378                 "\e"=> 'g9 mode',
379                 'D' => 'g4',
380                 'd' => '=wD',
381                 'N' => 'g4',
382                 'n' => '=wN',
383                 'O' => 'g4',
384                 'o' => '=wO',
385                 'r' => 'g4',
386                 'R' => '=wr',
387                 '*' => 'g4',
388                 '!' => 'g4',
389         }, # flag
390
391         '/~' => {
392                 "\e"=> 'g9 mode',
393                 A => 'g3',
394                 b => 'g3 arg',
395                 B => 'g3 arg',
396                 c => 'g3 arg',
397                 C => 'g3 arg',
398                 d => 'g3 arg',
399                 D => 'g3',
400                 e => 'g3 arg',
401                 E => 'g3',
402                 f => 'g3 arg',
403                 F => 'g3',
404                 g => 'g3',
405                 G => 'g3',
406                 h => 'g3 arg',
407                 H => 'g3 arg',
408                 i => 'g3 arg',
409                 k => 'g3',
410                 L => 'g3 arg',
411                 l => 'g3',
412                 m => 'g3 arg',
413                 n => 'g3 arg',
414                 N => 'g3',
415                 O => 'g3',
416                 p => 'g3',
417                 P => 'g3',
418                 Q => 'g3',
419                 r => 'g3 arg',
420                 R => 'g3',
421                 s => 'g3',
422                 S => 'g3',
423                 t => 'g3 arg',
424                 T => 'g3',
425                 u => 'g3',
426                 U => 'g3',
427                 v => 'g3',
428                 V => 'g3',
429                 x => 'g3 arg',
430                 X => 'g3 arg',
431                 y => 'g3 arg',
432                 z => 'g3 arg',
433                 '=' => 'g3',
434                 '$' => 'g3',
435                 '(' => 'g3 arg',
436         }, # search option
437 },
438 }