Add support for tab-completion when selecting by rule
[alpine.git] / alpine / keymenu.h
blob76cc2d349aa6840faf9a40d4af6ae545ebeb49ed
1 /*
2 * $Id: keymenu.h 1074 2008-06-04 00:08:43Z hubert@u.washington.edu $
4 * ========================================================================
5 * Copyright 2013-2022 Eduardo Chappa
6 * Copyright 2006-2008 University of Washington
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * ========================================================================
17 #ifndef PINE_KEYMENU_INCLUDED
18 #define PINE_KEYMENU_INCLUDED
21 #include <general.h>
22 #include "../pith/state.h"
23 #include "../pith/bitmap.h"
26 /*------
27 A key menu has two ways to turn on and off individual items in the menu.
28 If there is a null entry in the key_menu structure for that key, then
29 it is off. Also, if the passed bitmap has a zero in the position for
30 that key, then it is off. This means you can usually set all of the
31 bitmaps and only turn them off if you want to kill a key that is normally
32 there otherwise.
33 Each key_menu is an array of keys with a multiple of 12 number of keys.
34 ------*/
35 /*------
36 Argument to draw_keymenu(). These are to identify which of the possibly
37 multiple sets of twelve keys should be shown in the keymenu. That is,
38 a keymenu may have 24 or 36 keys, so that there are 2 or 3 different
39 screens of key menus for that keymenu. FirstMenu means to use the
40 first twelve, NextTwelve uses the one after the previous one, SameTwelve
41 uses the same one.
42 ------*/
43 typedef enum {MenuNotSet = 0, FirstMenu, NextMenu, SameMenu,
44 SecondMenu, ThirdMenu, FourthMenu} OtherMenu;
47 struct key {
48 char *name; /* the short name */
49 char *label; /* the descriptive label */
50 struct { /* */
51 short cmd; /* the resulting command */
52 short nch; /* how many of ch are active */
53 UCS ch[11]; /* which keystrokes trigger cmd */
54 } bind; /* */
55 KS_OSDATAVAR /* slot for port-specific data */
56 short column; /* menu col after formatting */
60 struct key_menu {
61 unsigned int how_many:4; /* how many separate sets of 12 */
62 unsigned int which:4; /* which of the sets are we using */
63 unsigned int width:8; /* screen width when formatting done */
64 struct key *keys; /* array of how_many*12 size structs */
65 unsigned int formatted_hm:4; /* how_many when formatting done */
66 bitmap_t bitmap;
71 * Definitions for the various Menu Commands...
73 #define MC_NONE 0 /* NO command defined */
74 #define MC_UNKNOWN 200
75 #define MC_UTF8 201
77 /* Cursor/page Motion */
78 #define MC_CHARUP 100
79 #define MC_CHARDOWN 101
80 #define MC_CHARRIGHT 102
81 #define MC_CHARLEFT 103
82 #define MC_GOTOBOL 104
83 #define MC_GOTOEOL 105
84 #define MC_GOTOSOP 106
85 #define MC_GOTOEOP 107
86 #define MC_PAGEUP 108
87 #define MC_PAGEDN 109
88 #define MC_MOUSE 110
89 #define MC_HOMEKEY 111
90 #define MC_ENDKEY 112
92 /* New Screen Commands */
93 #define MC_HELP 500
94 #define MC_QUIT 501
95 #define MC_OTHER 502
96 #define MC_MAIN 503
97 #define MC_INDEX 504
98 #define MC_VIEW_TEXT 505
99 #define MC_VIEW_ATCH 506
100 #define MC_FOLDERS 507
101 #define MC_ADDRBOOK 508
102 #define MC_RELNOTES 509
103 #define MC_KBLOCK 510
104 #define MC_JOURNAL 511
105 #define MC_SETUP 512
106 #define MC_COLLECTIONS 513
107 #define MC_PARENT 514
108 #define MC_ROLE 515
109 #define MC_LISTMGR 516
110 #define MC_THRDINDX 517
111 #define MC_SECURITY 518
113 /* Commands within Screens */
114 #define MC_NEXTITEM 700
115 #define MC_PREVITEM 701
116 #define MC_DELETE 702
117 #define MC_UNDELETE 703
118 #define MC_COMPOSE 704
119 #define MC_REPLY 705
120 #define MC_FORWARD 706
121 #define MC_GOTO 707
122 #define MC_TAB 708
123 #define MC_WHEREIS 709
124 #define MC_ZOOM 710
125 #define MC_PRINTMSG 711
126 #define MC_PRINTTXT 712
127 #define MC_TAKE 713
128 #define MC_SAVE 714
129 #define MC_EXPORT 715
130 #define MC_IMPORT 716
131 #define MC_EXPUNGE 717
132 #define MC_UNEXCLUDE 718
133 #define MC_CHOICE 719
134 #define MC_SELECT 720
135 #define MC_SELCUR 721
136 #define MC_SELALL 722
137 #define MC_UNSELALL 723
138 #define MC_APPLY 724
139 #define MC_SORT 725
140 #define MC_FULLHDR 726
141 #define MC_BOUNCE 727
142 #define MC_FLAG 728
143 #define MC_PIPE 729
144 #define MC_EXIT 730
145 #define MC_PRINTALL 731
146 #define MC_REPAINT 732
147 #define MC_JUMP 733
148 #define MC_RESIZE 734
149 #define MC_FWDTEXT 735
150 #define MC_SAVETEXT 736
151 #define MC_ABOUTATCH 737
152 #define MC_LISTMODE 738
153 #define MC_RENAMEFLDR 739
154 #define MC_ADDFLDR 740
155 #define MC_SUBSCRIBE 741
156 #define MC_UNSUBSCRIBE 742
157 #define MC_ADD 743
158 #define MC_TOGGLE 744
159 #define MC_EDIT 745
160 #define MC_ADDABOOK 746
161 #define MC_DELABOOK 747
162 #define MC_VIEW_ENTRY 748
163 #define MC_EDITABOOK 750
164 #define MC_OPENABOOK 751
165 #define MC_POPUP 752
166 #define MC_EXPAND 753
167 #define MC_UNEXPAND 754
168 #define MC_COPY 755
169 #define MC_SHUFFLE 756
170 #define MC_VIEW_HANDLE 757
171 #define MC_NEXT_HANDLE 758
172 #define MC_PREV_HANDLE 759
173 #define MC_QUERY_SERV 760
174 #define MC_GRIPE_LOCAL 761
175 #define MC_GRIPE_PIC 762
176 #define MC_GRIPE_READ 763
177 #define MC_GRIPE_POST 764
178 #define MC_FINISH 765
179 #define MC_PRINTFLDR 766
180 #define MC_OPENFLDR 767
181 #define MC_EDITFILE 768
182 #define MC_ADDFILE 769
183 #define MC_DELFILE 770
184 #define MC_CHOICEB 771
185 #define MC_CHOICEC 772
186 #define MC_CHOICED 773
187 #define MC_CHOICEE 774
188 #define MC_DEFAULT 775
189 #define MC_TOGGLEB 776
190 #define MC_TOGGLEC 777
191 #define MC_TOGGLED 778
192 #define MC_RGB1 779
193 #define MC_RGB2 780
194 #define MC_RGB3 781
195 #define MC_EXITQUERY 782
196 #define MC_ADDHDR 783
197 #define MC_DELHDR 784
198 #define MC_PRINTER 785
199 #define MC_PASSWD 786
200 #define MC_CONFIG 787
201 #define MC_SIG 788
202 #define MC_ABOOKS 789
203 #define MC_CLISTS 790
204 #define MC_RULES 791
205 #define MC_DIRECTORY 792
206 #define MC_KOLOR 793
207 #define MC_EXCEPT 794
208 #define MC_REMOTE 795
209 #define MC_NO_EXCEPT 796
210 #define MC_YES 797
211 #define MC_NO 798
212 #define MC_NOT 799
213 #define MC_COLLAPSE 800
214 #define MC_CHK_RECENT 801
215 #define MC_DECRYPT 802
216 #define MC_QUOTA 803
217 #define MC_ADDHEADER 804
218 #define MC_XOAUTH2 805
219 #define MC_EXTERNAL 806
220 #define MC_XSADD 807
221 #define MC_XSDELETE 808
222 #define MC_XSHELP 809
224 /* Commands for S/MIME screens */
225 #define MC_TRUST 900
226 #define MC_PUBLIC 901
227 #define MC_PRIVATE 902
230 * Some standard Key/Command Bindings
232 #define NULL_MENU {NULL, NULL, {MC_NONE}, KS_NONE}
234 * TRANSLATORS: Alpine has a key menu at the bottom of each screen which
235 * lists all of the available commands. Each command is a single character
236 * which is followed with a short descriptive word which describes what
237 * the command does. Commands are almost always to be thought of as verbs
238 * so the descriptive words describe what the command does.
239 * These descriptive words have to fit across the
240 * screen so they would normally only be 8-10 characters long, though
241 * they will be truncated if there isn't enough space. The command
242 * descriptions are usually chosen so that they will be a mnemonic
243 * for the command. For example, the command S is Save,
244 * E is Export, Q is Quit, and ? is Help. You get to translate the
245 * label (the Save part) but the actual command (the S) will stay
246 * the same, so it will be very difficult to come up with mnemonic
247 * labels. The mnemonic isn't necessary, just nice. You can see that
248 * we have stretched to the edge of the usefulness of mnemonics with
249 * cases like K Kolor (instead of Color) and X eXceptions (because E
250 * already meant something else).
252 #define HELP_MENU {"?", N_("Help"), \
253 {MC_HELP, 2, {'?',ctrl('G')}}, \
254 KS_SCREENHELP}
255 /* TRANSLATORS: Show Other commands */
256 #define OTHER_MENU {"O", N_("OTHER CMDS"), \
257 {MC_OTHER, 1, {'o'}}, \
258 KS_NONE}
259 /* TRANSLATORS: WhereIs command searches for text */
260 #define WHEREIS_MENU {"W", N_("WhereIs"), \
261 {MC_WHEREIS, 2, {'w',ctrl('W')}}, \
262 KS_WHEREIS}
263 /* TRANSLATORS: the Main Menu is the menu of commands you get when
264 you first start alpine. */
265 #define MAIN_MENU {"M", N_("Main Menu"), \
266 {MC_MAIN, 1, {'m'}}, \
267 KS_MAINMENU}
268 #define QUIT_MENU {"Q", N_("Quit Alpine"), \
269 {MC_QUIT, 1, {'q'}}, \
270 KS_EXIT}
271 /* TRANSLATORS: go to Previous Message */
272 #define PREVMSG_MENU {"P", N_("PrevMsg"), \
273 {MC_PREVITEM, 1, {'p'}}, \
274 KS_PREVMSG}
275 /* TRANSLATORS: go to Next Message */
276 #define NEXTMSG_MENU {"N", N_("NextMsg"), \
277 {MC_NEXTITEM, 1, {'n'}}, \
278 KS_NEXTMSG}
279 #define HOMEKEY_MENU {"Hme", N_("FirstPage"), \
280 {MC_HOMEKEY, 1, {KEY_HOME}}, \
281 KS_NONE}
282 #define ENDKEY_MENU {"End", N_("LastPage"), \
283 {MC_ENDKEY, 1, {KEY_END}}, \
284 KS_NONE}
285 /* TRANSLATORS: go to Previous Page */
286 #define PREVPAGE_MENU {"-", N_("PrevPage"), \
287 {MC_PAGEUP, 3, {'-',ctrl('Y'),KEY_PGUP}}, \
288 KS_PREVPAGE}
289 #define NEXTPAGE_MENU {"Spc", N_("NextPage"), \
290 {MC_PAGEDN, 4, {'+',' ',ctrl('V'),KEY_PGDN}}, \
291 KS_NEXTPAGE}
292 /* TRANSLATORS: Jump to a different message in the index */
293 #define JUMP_MENU {"J", N_("Jump"), \
294 {MC_JUMP, 1, {'j'}}, \
295 KS_JUMPTOMSG}
296 /* TRANSLATORS: Forward Email */
297 #define FWDEMAIL_MENU {"F", N_("Fwd Email"), \
298 {MC_FWDTEXT,1,{'f'}}, \
299 KS_FORWARD}
300 #define PRYNTMSG_MENU {"%", N_("Print"), \
301 {MC_PRINTMSG,1,{'%'}}, \
302 KS_PRINT}
303 #define PRYNTTXT_MENU {"%", N_("Print"), \
304 {MC_PRINTTXT,1,{'%'}}, \
305 KS_PRINT}
306 /* TRANSLATORS: In alpine, Save means to save something internally
307 within alpine or within the email system. */
308 #define SAVE_MENU {"S", N_("Save"), \
309 {MC_SAVE,1,{'s'}}, \
310 KS_SAVE}
311 /* TRANSLATORS: In alpine, Export means to save something externally
312 to alpine, to a file in the user's home directory, for example. */
313 #define EXPORT_MENU {"E", N_("Export"), \
314 {MC_EXPORT, 1, {'e'}}, \
315 KS_EXPORT}
316 /* TRANSLATORS: Edit a new message to be sent as email */
317 #define COMPOSE_MENU {"C", N_("Compose"), \
318 {MC_COMPOSE,1,{'c'}}, \
319 KS_COMPOSER}
320 /* TRANSLATORS: Edit a new message while acting in one of
321 your roles */
322 #define RCOMPOSE_MENU {"#", N_("Role"), \
323 {MC_ROLE,1,{'#'}}, \
324 KS_NONE}
325 #define DELETE_MENU {"D", N_("Delete"), \
326 {MC_DELETE,2,{'d',KEY_DEL}}, \
327 KS_DELETE}
328 #define UNDELETE_MENU {"U", N_("Undelete"), \
329 {MC_UNDELETE,1,{'u'}}, \
330 KS_UNDELETE}
331 /* TRANSLATORS: Reply to an email message */
332 #define REPLY_MENU {"R", N_("Reply"), \
333 {MC_REPLY,1,{'r'}}, \
334 KS_REPLY}
335 /* TRANSLATORS: Forward an email message to someone else */
336 #define FORWARD_MENU {"F", N_("Forward"), \
337 {MC_FORWARD,1,{'f'}}, \
338 KS_FORWARD}
339 /* TRANSLATORS: go to List of Folders */
340 #define LISTFLD_MENU {"L", N_("ListFldrs"), \
341 {MC_COLLECTIONS,1,{'l'}}, \
342 KS_FLDRLIST}
343 /* TRANSLATORS: the index is a list of email messages, go there */
344 #define INDEX_MENU {"I", N_("Index"), \
345 {MC_INDEX,1,{'i'}}, \
346 KS_FLDRINDEX}
347 /* TRANSLATORS: Go To Folder, a command to go view another mail folder */
348 #define GOTO_MENU {"G", N_("GotoFldr"), \
349 {MC_GOTO,1,{'g'}}, \
350 KS_GOTOFLDR}
351 /* TRANSLATORS: Take Address is a command to copy addresses from a
352 message to the user's address book */
353 #define TAKE_MENU {"T", N_("TakeAddr"), \
354 {MC_TAKE,1,{'t'}}, \
355 KS_TAKEADDR}
356 /* TRANSLATORS: To Flag a message means to mark it in some way,
357 for example, flag it as important */
358 #define FLAG_MENU {"*", N_("Flag"), \
359 {MC_FLAG,1,{'*'}}, \
360 KS_FLAG}
361 /* TRANSLATORS: Pipe refers to the Unix pipe command (the vertical bar). */
362 #define PIPE_MENU {"|", N_("Pipe"), \
363 {MC_PIPE,1,{'|'}}, \
364 KS_NONE}
365 /* TRANSLATORS: Bounce is sometimes called re-sending a message.
366 A user would use this command if a message had been incorrectly
367 sent to him or her. */
368 #define BOUNCE_MENU {"B", N_("Bounce"), \
369 {MC_BOUNCE,1,{'b'}}, \
370 KS_BOUNCE}
371 /* TRANSLATORS: Header Mode, refers to showing more or fewer message
372 headers when viewing a message. This command toggles between more
373 and fewer each time it is typed. */
374 #define HDRMODE_MENU {"H", N_("HdrMode"), \
375 {MC_FULLHDR,1,{'h'}}, \
376 KS_HDRMODE}
377 /* TRANSLATORS: The Tab key goes to the Next New message */
378 #define TAB_MENU {"Tab", N_("NextNew"), \
379 {MC_TAB,1,{TAB}}, \
380 KS_NONE}
381 /* TRANSLATORS: go to the Previous item */
382 #define PREV_MENU {"P", N_("Prev"), \
383 {MC_PREVITEM,1,{'p'}}, \
384 KS_NONE}
385 #define NEXT_MENU {"N", N_("Next"), \
386 {MC_NEXTITEM,2,{'n','\t'}}, \
387 KS_NONE}
388 #define EXIT_SETUP_MENU {"E", N_("Exit Setup"), \
389 {MC_EXIT,1,{'e'}}, \
390 KS_EXITMODE}
391 #define TOGGLE_MENU {"X", "[" N_("Set/Unset") "]", \
392 {MC_TOGGLE,3,{'x',ctrl('M'),ctrl('J')}}, \
393 KS_NONE}
394 #define TOGGLEB_MENU {"X", "[" N_("Set/Unset") "]", \
395 {MC_TOGGLEB,3,{'x',ctrl('M'),ctrl('J')}}, \
396 KS_NONE}
397 #define TOGGLEC_MENU {"X", "[" N_("Set/Unset") "]", \
398 {MC_TOGGLEC,3,{'x',ctrl('M'),ctrl('J')}}, \
399 KS_NONE}
400 #define TOGGLED_MENU {"X", "[" N_("Set/Unset") "]", \
401 {MC_TOGGLED,3,{'x',ctrl('M'),ctrl('J')}}, \
402 KS_NONE}
403 /* TRANSLATORS: go to the Previous Collection. A Collection in Alpine refers
404 to a collection of mail folders. */
405 #define PREVC_MENU {"P", N_("PrevCltn"), \
406 {MC_PREVITEM,1,{'p'}}, \
407 KS_NONE}
408 /* TRANSLATORS: Next Collection. */
409 #define NEXTC_MENU {"N", N_("NextCltn"), \
410 {MC_NEXTITEM,2,{'n','\t'}}, \
411 KS_NONE}
412 /* TRANSLATORS: Delete Collection. */
413 #define DELC_MENU {"D", N_("Del Cltn"), \
414 {MC_DELETE,2,{'d',KEY_DEL}}, \
415 KS_NONE}
416 /* TRANSLATORS: go to the Previous Folder (in a list of folders). */
417 #define PREVF_MENU {"P", N_("PrevFldr"), \
418 {MC_PREV_HANDLE,3,{'p',ctrl('B'),KEY_LEFT}}, \
419 KS_NONE}
420 /* TRANSLATORS: Next Folder (in a list of folders). */
421 #define NEXTF_MENU {"N", N_("NextFldr"), \
422 {MC_NEXT_HANDLE,4,{'n',ctrl('F'),TAB,KEY_RIGHT}}, \
423 KS_NONE}
424 /* TRANSLATORS: Current Index of messages (go to the current index) */
425 #define CIND_MENU {"I", N_("CurIndex"), \
426 {MC_INDEX,1,{'i'}}, \
427 KS_FLDRINDEX}
428 /* TRANSLATORS: View this Message */
429 #define VIEWMSG_MENU {">", "[" N_("ViewMsg") "]", \
430 {MC_VIEW_TEXT, 5,{'v','.','>',ctrl('M'),ctrl('J')}}, \
431 KS_VIEW}
432 /* TRANSLATORS: Sort the index of messages */
433 #define FLDRSORT_MENU {"$", N_("SortIndex"), \
434 {MC_SORT,1,{'$'}}, \
435 KS_SORT}
436 /* TRANSLATORS: Exit the Take Address screen */
437 #define TA_EXIT_MENU {"<",N_("ExitTake"), \
438 {MC_EXIT,4,{'e',ctrl('C'),'<',','}}, \
439 KS_EXITMODE}
440 #define TA_NEXT_MENU {"N",N_("Next"), \
441 {MC_CHARDOWN,4,{'n','\t',ctrl('N'),KEY_DOWN}}, \
442 KS_NONE}
443 /* TRANSLATORS: abbreviation for Previous */
444 #define TA_PREV_MENU {"P",N_("Prev"), \
445 {MC_CHARUP, 3, {'p',ctrl('P'),KEY_UP}}, \
446 KS_NONE}
450 * It's bogus that these are defined here. They go with the structures
451 * defined in keymenu.c and have to stay in sync with them.
453 #define OTHER_KEY 1
454 #define TWO_KEY 2
455 #define THREE_KEY 3
456 #define ADD_KEY 8
457 #define DELETE_KEY 9
458 #define SENDTO_KEY 10
459 #define SECONDARY_MAIN_KEY 15
460 #define RCOMPOSE_KEY 19
461 #define TAKE_KEY 21
462 #define SAVE_KEY 22
463 #define FORW_KEY 23
464 #define KM_COL_KEY 2
465 #define KM_SEL_KEY 3
466 #define KM_MAIN_KEY 15
467 #define KM_ALTVIEW_KEY 16
468 #define KM_ZOOM_KEY 21
469 #define KM_SELECT_KEY 22
470 #define KM_SELCUR_KEY 23
471 #define KM_RECENT_KEY 28
472 #define KM_SHUFFLE_KEY 30
473 #define KM_EXPORT_KEY 32
474 #define KM_IMPORT_KEY 33
475 #define FC_EXIT_KEY 1
476 #define FC_COL_KEY 2
477 #define FC_SEL_KEY 3
478 #define FC_ALTSEL_KEY 8
479 #define SB_SUB_KEY 1
480 #define SB_EXIT_KEY 2
481 #define SB_SEL_KEY 3
482 #define SB_LIST_KEY 8
483 #define HLP_MAIN_KEY 0
484 #define HLP_SUBEXIT_KEY 1
485 #define HLP_EXIT_KEY 2
486 #define HLP_VIEW_HANDLE 3
487 #define HLP_PREV_HANDLE 4
488 #define HLP_NEXT_HANDLE 5
489 #define HLP_ALL_KEY 9
490 #define TIMESTAMP_KEY 4
491 #define DEBUG_KEY 5
492 #define LM_TRY_KEY 3
493 #define LM_PREV_KEY 4
494 #define LM_NEXT_KEY 5
495 #define BACK_KEY 2
496 #define PREVM_KEY 4
497 #define NEXTM_KEY 5
498 #define EXCLUDE_KEY 26
499 #define UNEXCLUDE_KEY 27
500 #define SELECT_KEY 28
501 #define APPLY_KEY 29
502 #define VIEW_FULL_HEADERS_KEY 32
503 #define BOUNCE_KEY 33
504 #define FLAG_KEY 34
505 #define VIEW_PIPE_KEY 35
506 #define SELCUR_KEY 38
507 #define ZOOM_KEY 39
508 #define COLLAPSE_KEY 45
509 #define ATT_PARENT_KEY 2
510 #define ATT_EXPORT_KEY 11
511 #define ATT_PIPE_KEY 16
512 #define ATT_BOUNCE_KEY 17
513 #define ATT_PRINT_KEY 20
514 #define ATT_REPLY_KEY 22
515 #define ATT_FORWARD_KEY 23
516 #define ATV_BACK_KEY 2
517 #define ATV_VIEW_HILITE 3
518 #define ATV_PREV_URL 4
519 #define ATV_NEXT_URL 5
520 #define ATV_EXPORT_KEY 11
521 #define ATV_PIPE_KEY 16
522 #define ATV_BOUNCE_KEY 17
523 #define ATV_PRINT_KEY 20
524 #define ATV_REPLY_KEY 22
525 #define ATV_FORWARD_KEY 23
526 #define ATV_DECRYPT_KEY (ATV_PIPE_KEY + 14)
527 #define ATV_SECURITY_KEY (ATV_DECRYPT_KEY + 1)
528 #define VIEW_ATT_KEY 3
529 #define VIEW_FULL_HEADERS_KEY 32
530 #define VIEW_VIEW_HANDLE 26
531 #define VIEW_SELECT_KEY 27
532 #define VIEW_PREV_HANDLE 28
533 #define VIEW_NEXT_HANDLE 29
534 #define OE_HELP_KEY 0
535 #define OE_CANCEL_KEY 1
536 #define OE_CTRL_T_KEY 2
537 #define OE_ENTER_KEY 3
538 #define SETUP_PRINTER 3
539 #define SETUP_PASSWD 4
540 #define SETUP_CONFIG 5
541 #define SETUP_SIG 6
542 #define SETUP_DIRECTORY 10
543 #define SETUP_EXCEPT 14
544 #define SETUP_SMIME 16
545 #define MAIN_HELP_KEY 0
546 #define MAIN_DEFAULT_KEY 3
547 #define MAIN_KBLOCK_KEY 9
548 #define MAIN_QUIT_KEY 14
549 #define MAIN_COMPOSE_KEY 15
550 #define MAIN_FOLDER_KEY 16
551 #define MAIN_INDEX_KEY 18
552 #define MAIN_SETUP_KEY 20
553 #define MAIN_ADDRESS_KEY 21
554 #define NUOV_EXIT 2
555 #define NUOV_VIEW 3
556 #define NUOV_NEXT_PG 6
557 #define NUOV_PREV_PG 7
558 #define NUOV_RELNOTES 10
559 #define DEFAULT_KEY 3
560 #define CHANGEDEF_KEY 10
561 #define SMIME_PARENT_KEY 2
562 #define DECRYPT_KEY (VIEW_PIPE_KEY + 7)
563 #define SECURITY_KEY (DECRYPT_KEY + 1)
564 #define TRUST_KEY 3
565 #define PUBLIC_KEY 6
566 #define PRIVATE_KEY 7
567 #define DELETE_CERT_KEY 4
568 #define UNDELETE_CERT_KEY 5
570 extern struct key_menu cancel_keymenu,
571 ab_keymenu,
572 abook_select_km,
573 abook_view_keymenu,
574 abook_text_km,
575 ldap_view_keymenu,
576 c_mgr_km,
577 c_cfg_km,
578 c_sel_km,
579 c_fcc_km,
580 folder_km,
581 folder_sel_km,
582 folder_sela_km,
583 folder_sub_km,
584 folder_post_km,
585 help_keymenu,
586 rev_msg_keymenu,
587 ans_certfail_keymenu,
588 ans_certquery_keymenu,
589 oauth2_auth_keymenu,
590 oauth2_device_auth_keymenu,
591 forge_keymenu,
592 listmgr_keymenu,
593 index_keymenu,
594 simple_index_keymenu,
595 thread_keymenu,
596 att_index_keymenu,
597 att_view_keymenu,
598 view_keymenu,
599 simple_text_keymenu,
600 oe_keymenu,
601 choose_setup_keymenu,
602 main_keymenu,
603 simple_file_keymenu,
604 nuov_keymenu,
605 modal_message_keymenu,
606 ta_keymenu_lm,
607 ta_keymenu_sm,
608 pipe_cancel_keymenu,
609 color_pattern_keymenu,
610 hdr_color_checkbox_keymenu,
611 kw_color_checkbox_keymenu,
612 selectable_bold_checkbox_keymenu,
613 flag_keymenu,
614 addr_s_km,
615 addr_s_km_with_goback,
616 addr_s_km_with_view,
617 addr_s_km_for_url,
618 addr_s_km_exit,
619 addr_s_km_goback,
620 dir_conf_km,
621 sel_from_list,
622 sel_from_list_ctrlc,
623 sel_from_list_sm,
624 sel_from_list_sm_ctrlc,
625 sel_from_list_lm,
626 sel_from_list_lm_ctrlc,
627 sel_from_list_olm,
628 sel_from_list_olm_ctrlc,
629 printer_edit_keymenu,
630 printer_select_keymenu,
631 role_select_km,
632 role_conf_km,
633 config_text_wshuf_keymenu,
634 config_xoauth2_wshuf_keymenu,
635 config_text_wshufandfldr_keymenu,
636 config_role_file_keymenu,
637 config_role_file_res_keymenu,
638 config_role_keyword_keymenu,
639 config_role_keyword_keymenu_not,
640 config_role_charset_keymenu_not,
641 config_role_keymenu,
642 config_role_keymenu_not,
643 config_role_keymenu_extra,
644 config_role_addr_pat_keymenu,
645 config_role_xtrahdr_keymenu,
646 config_role_addr_act_keymenu,
647 config_role_patfolder_keymenu,
648 config_role_actionfolder_keymenu,
649 config_role_inick_keymenu,
650 config_role_afrom_keymenu,
651 config_checkbox_keymenu,
652 config_text_keymenu,
653 xoauth2_id_select_km,
654 xoauth2_flow_select_km,
655 config_xoauth2_text_keymenu,
656 config_text_to_charsets_keymenu,
657 config_radiobutton_keymenu,
658 config_yesno_keymenu,
659 color_changing_keymenu,
660 custom_color_changing_keymenu,
661 kw_color_changing_keymenu,
662 color_rgb_keymenu,
663 custom_rgb_keymenu,
664 kw_rgb_keymenu,
665 color_setting_keymenu,
666 custom_color_setting_keymenu,
667 role_color_setting_keymenu,
668 kw_color_setting_keymenu,
669 take_export_keymenu_sm,
670 take_export_keymenu_lm,
671 config_smime_helper_keymenu,
672 config_smime_add_certs_keymenu,
673 smime_info_keymenu,
674 config_smime_manage_certs_menu_keymenu,
675 config_smime_manage_certs_work_keymenu,
676 config_smime_manage_password_file_menu_keymenu,
677 smime_certificate_info_keymenu,
678 config_smime_add_new_key_keymenu,
679 config_smime_manage_view_cert_keymenu,
680 config_smime_manage_view_cert_keymenu_no_delete;
682 extern struct key rev_msg_keys[];
685 /* exported prototypes */
686 void draw_cancel_keymenu(void);
687 void end_keymenu(void);
688 int menu_command(UCS, struct key_menu *);
689 void menu_init_binding(struct key_menu *, UCS, int, char *, char *, int);
690 void menu_add_binding(struct key_menu *, UCS, int);
691 int menu_clear_binding(struct key_menu *, UCS);
692 int menu_binding_index(struct key_menu *, int);
693 void mark_keymenu_dirty(void);
694 void blank_keymenu(int, int);
695 void draw_keymenu(struct key_menu *, unsigned char *, int, int, int, OtherMenu);
696 void redraw_keymenu(void);
697 void clearfooter(struct pine *);
700 #endif /* PINE_KEYMENU_INCLUDED */