"Fossies" - the Fresh Open Source Software Archive 
Member "tin-2.6.2/include/keymap.h" (9 Dec 2022, 14442 Bytes) of package /linux/misc/tin-2.6.2.tar.xz:
As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style:
standard) with prefixed line numbers and
code folding option.
Alternatively you can here
view or
download the uninterpreted source code file.
For more information about "keymap.h" see the
Fossies "Dox" file reference documentation and the latest
Fossies "Diffs" side-by-side code changes report:
2.6.1_vs_2.6.2.
1 /*
2 * Project : tin - a Usenet reader
3 * Module : keymap.h
4 * Author : J. Faultless, D. Nimmich
5 * Created : 1999
6 * Updated : 2022-10-27
7 * Notes :
8 *
9 * Copyright (c) 1999-2023 Jason Faultless <jason@altarstone.com>
10 * All rights reserved.
11 *
12 * Redistribution and use in source and binary forms, with or without
13 * modification, are permitted provided that the following conditions
14 * are met:
15 *
16 * 1. Redistributions of source code must retain the above copyright notice,
17 * this list of conditions and the following disclaimer.
18 *
19 * 2. Redistributions in binary form must reproduce the above copyright
20 * notice, this list of conditions and the following disclaimer in the
21 * documentation and/or other materials provided with the distribution.
22 *
23 * 3. Neither the name of the copyright holder nor the names of its
24 * contributors may be used to endorse or promote products derived from
25 * this software without specific prior written permission.
26 *
27 * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
29 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
30 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
31 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
32 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
33 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
34 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
35 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
36 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
37 * POSSIBILITY OF SUCH DAMAGE.
38 */
39
40
41 #ifndef KEYMAP_H
42 # define KEYMAP_H 1
43
44 /* Revised 9 October 1996 by Branden Robinson in ASCII order
45 *
46 * Oct Dec Hex Char Oct Dec Hex Char
47 * ------------------------------------------------------------
48 * 000 0 00 NUL '\0' 100 64 40 @
49 * 001 1 01 SOH ^A 101 65 41 A
50 * 002 2 02 STX ^B 102 66 42 B
51 * 003 3 03 ETX ^C 103 67 43 C
52 * 004 4 04 EOT ^D 104 68 44 D
53 * 005 5 05 ENQ ^E 105 69 45 E
54 * 006 6 06 ACK ^F 106 70 46 F
55 * 007 7 07 BEL '\a' ^G 107 71 47 G
56 * 010 8 08 BS '\b' ^H 110 72 48 H
57 * 011 9 09 HT '\t' ^I 111 73 49 I
58 * 012 10 0A LF '\n' ^J 112 74 4A J
59 * 013 11 0B VT '\v' ^K 113 75 4B K
60 * 014 12 0C FF '\f' ^L 114 76 4C L
61 * 015 13 0D CR '\r' ^M 115 77 4D M
62 * 016 14 0E SO ^N 116 78 4E N
63 * 017 15 0F SI ^O 117 79 4F O
64 * 020 16 10 DLE ^P 120 80 50 P
65 * 021 17 11 DC1 ^Q 121 81 51 Q
66 * 022 18 12 DC2 ^R 122 82 52 R
67 * 023 19 13 DC3 ^S 123 83 53 S
68 * 024 20 14 DC4 ^T 124 84 54 T
69 * 025 21 15 NAK ^U 125 85 55 U
70 * 026 22 16 SYN ^V 126 86 56 V
71 * 027 23 17 ETB ^W 127 87 57 W
72 * 030 24 18 CAN ^X 130 88 58 X
73 * 031 25 19 EM ^Y 131 89 59 Y
74 * 032 26 1A SUB ^Z 132 90 5A Z
75 * 033 27 1B ESC 133 91 5B [
76 * 034 28 1C FS 134 92 5C \ '\\'
77 * 035 29 1D GS 135 93 5D ]
78 * 036 30 1E RS 136 94 5E ^
79 * 037 31 1F US 137 95 5F _
80 * 040 32 20 SPACE 140 96 60 `
81 * 041 33 21 ! 141 97 61 a
82 * 042 34 22 " 142 98 62 b
83 * 043 35 23 # 143 99 63 c
84 * 044 36 24 $ 144 100 64 d
85 * 045 37 25 % 145 101 65 e
86 * 046 38 26 & 146 102 66 f
87 * 047 39 27 ' 147 103 67 g
88 * 050 40 28 ( 150 104 68 h
89 * 051 41 29 ) 151 105 69 i
90 * 052 42 2A * 152 106 6A j
91 * 053 43 2B + 153 107 6B k
92 * 054 44 2C , 154 108 6C l
93 * 055 45 2D - 155 109 6D m
94 * 056 46 2E . 156 110 6E n
95 * 057 47 2F / 157 111 6F o
96 * 060 48 30 0 160 112 70 p
97 * 061 49 31 1 161 113 71 q
98 * 062 50 32 2 162 114 72 r
99 * 063 51 33 3 163 115 73 s
100 * 064 52 34 4 164 116 74 t
101 * 065 53 35 5 165 117 75 u
102 * 066 54 36 6 166 118 76 v
103 * 067 55 37 7 167 119 77 w
104 * 070 56 38 8 170 120 78 x
105 * 071 57 39 9 171 121 79 y
106 * 072 58 3A : 172 122 7A z
107 * 073 59 3B ; 173 123 7B {
108 * 074 60 3C < 174 124 7C |
109 * 075 61 3D = 175 125 7D }
110 * 076 62 3E > 176 126 7E ~
111 * 077 63 3F ? 177 127 7F DEL
112 *
113 * Above chart reprinted from Linux manual page.
114 *
115 * When adding key functionality, be aware of key functions in the "big five"
116 * levels of tin operation: top (group selection), group, thread, article
117 * (pager), and help. If possible, when adding a key to any of these levels,
118 * check the others to make sure that the key doesn't do something
119 * non-analogous elsewhere. For instance, having "^R" map to "redraw screen"
120 * at article level and "reset .newsrc" (a drastic and unreversible action)
121 * at top level is a bad idea.
122 *
123 * [make emacs happy: "]
124 */
125
126 /*
127 * Maximum chars (including null byte) needed to print a key name
128 * A multibyte character can use up to MB_CUR_MAX chars. But as MB_CUR_MAX
129 * can't be used here, use MB_LEN_MAX instead.
130 * Some values for MB_LEN_MAX:
131 * - glibc 2.3.5: 16
132 * - gcc 4.0: 1
133 * - icc 8.0/9.0: 8
134 * Use the largest + 1 to be on the safe side.
135 */
136 #define MAXKEYLEN 17
137
138 /* TODO: permanently move here from tin.h */
139 #define ctrl(c) ((c) & 0x1F)
140 #define ESC 27
141
142 /* TODO: get rid of these remaining #define */
143 #define iKeyAbort ESC
144 #define iKeyQuitTin 'Q'
145 #define iKeyQuit 'q'
146
147 /* complete list of functions which can be associated with keys */
148 enum defined_functions {
149 NOT_ASSIGNED = 0,
150 DIGIT_0,
151 DIGIT_1,
152 DIGIT_2,
153 DIGIT_3,
154 DIGIT_4,
155 DIGIT_5,
156 DIGIT_6,
157 DIGIT_7,
158 DIGIT_8,
159 DIGIT_9,
160 ATTACHMENT_PIPE,
161 ATTACHMENT_SAVE,
162 ATTACHMENT_SELECT,
163 ATTACHMENT_TAG,
164 ATTACHMENT_TAG_PATTERN,
165 ATTACHMENT_TOGGLE_TAGGED,
166 ATTACHMENT_UNTAG,
167 SPECIAL_CATCHUP_LEFT,
168 SPECIAL_MOUSE_TOGGLE,
169 CATCHUP,
170 CATCHUP_NEXT_UNREAD,
171 CONFIG_RESET_ATTRIB,
172 CONFIG_SCOPE_MENU,
173 CONFIG_SELECT,
174 CONFIG_NO_SAVE,
175 CONFIG_TOGGLE_ATTRIB,
176 FEED_ARTICLE,
177 FEED_THREAD,
178 FEED_HOT,
179 FEED_PATTERN,
180 FEED_RANGE,
181 FEED_TAGGED,
182 FEED_KEY_REPOST,
183 FEED_SUPERSEDE,
184 FILTER_EDIT,
185 FILTER_SAVE,
186 GLOBAL_ABORT,
187 GLOBAL_BUGREPORT,
188 GLOBAL_CONNECTION_INFO,
189 GLOBAL_DISPLAY_POST_HISTORY,
190 GLOBAL_EDIT_FILTER,
191 GLOBAL_FIRST_PAGE,
192 GLOBAL_HELP,
193 GLOBAL_LAST_PAGE,
194 GLOBAL_LAST_VIEWED,
195 GLOBAL_LINE_DOWN,
196 GLOBAL_LINE_UP,
197 GLOBAL_LOOKUP_MESSAGEID,
198 GLOBAL_MENU_FILTER_KILL,
199 GLOBAL_MENU_FILTER_SELECT,
200 GLOBAL_OPTION_MENU,
201 GLOBAL_PAGE_DOWN,
202 GLOBAL_PAGE_UP,
203 GLOBAL_PIPE,
204 GLOBAL_POST,
205 GLOBAL_POSTPONED,
206 #ifndef DISABLE_PRINTING
207 GLOBAL_PRINT,
208 #endif /* !DISABLE_PRINTING */
209 GLOBAL_QUICK_FILTER_KILL,
210 GLOBAL_QUICK_FILTER_SELECT,
211 GLOBAL_QUIT,
212 GLOBAL_QUIT_TIN,
213 GLOBAL_REDRAW_SCREEN,
214 GLOBAL_SCROLL_DOWN,
215 GLOBAL_SCROLL_UP,
216 GLOBAL_SEARCH_BODY,
217 GLOBAL_SEARCH_REPEAT,
218 GLOBAL_SEARCH_AUTHOR_BACKWARD,
219 GLOBAL_SEARCH_AUTHOR_FORWARD,
220 GLOBAL_SEARCH_SUBJECT_BACKWARD,
221 GLOBAL_SEARCH_SUBJECT_FORWARD,
222 GLOBAL_SET_RANGE,
223 #ifndef NO_SHELL_ESCAPE
224 GLOBAL_SHELL_ESCAPE,
225 #endif /* !NO_SHELL_ESCAPE */
226 #ifdef HAVE_COLOR
227 GLOBAL_TOGGLE_COLOR,
228 #endif /* HAVE_COLOR */
229 GLOBAL_TOGGLE_HELP_DISPLAY,
230 GLOBAL_TOGGLE_INFO_LAST_LINE,
231 GLOBAL_TOGGLE_INVERSE_VIDEO,
232 GLOBAL_VERSION,
233 GROUP_AUTOSAVE,
234 GROUP_CANCEL,
235 GROUP_DO_AUTOSELECT,
236 GROUP_GOTO,
237 GROUP_LIST_THREAD,
238 GROUP_MAIL,
239 GROUP_MARK_THREAD_READ,
240 GROUP_MARK_UNSELECTED_ARTICLES_READ,
241 GROUP_NEXT_GROUP,
242 GROUP_NEXT_UNREAD_ARTICLE,
243 GROUP_NEXT_UNREAD_ARTICLE_OR_GROUP,
244 GROUP_PREVIOUS_GROUP,
245 GROUP_PREVIOUS_UNREAD_ARTICLE,
246 GROUP_READ_BASENOTE,
247 GROUP_REPOST,
248 GROUP_REVERSE_SELECTIONS,
249 GROUP_SAVE,
250 GROUP_SELECT_PATTERN,
251 GROUP_SELECT_THREAD,
252 GROUP_SELECT_THREAD_IF_UNREAD_SELECTED,
253 GROUP_TAG,
254 GROUP_TAG_PARTS,
255 GROUP_TOGGLE_GET_ARTICLES_LIMIT,
256 GROUP_TOGGLE_READ_UNREAD,
257 GROUP_TOGGLE_SUBJECT_DISPLAY,
258 GROUP_TOGGLE_SELECT_THREAD,
259 GROUP_TOGGLE_THREADING,
260 GROUP_UNDO_SELECTIONS,
261 GROUP_UNTAG,
262 MARK_ARTICLE_UNREAD,
263 MARK_THREAD_UNREAD,
264 MARK_FEED_READ,
265 MARK_FEED_UNREAD,
266 PAGE_AUTOSAVE,
267 PAGE_BOTTOM_THREAD,
268 PAGE_CANCEL,
269 PAGE_EDIT_ARTICLE,
270 PAGE_FOLLOWUP,
271 PAGE_FOLLOWUP_QUOTE,
272 PAGE_FOLLOWUP_QUOTE_HEADERS,
273 PAGE_GOTO_PARENT,
274 PAGE_GROUP_SELECT,
275 PAGE_LIST_THREAD,
276 PAGE_MAIL,
277 PAGE_MARK_THREAD_READ,
278 PAGE_NEXT_ARTICLE,
279 PAGE_NEXT_THREAD,
280 PAGE_NEXT_UNREAD,
281 PAGE_NEXT_UNREAD_ARTICLE,
282 #ifdef HAVE_PGP_GPG
283 PAGE_PGP_CHECK_ARTICLE,
284 #endif /* HAVE_PGP_GPG */
285 PAGE_PREVIOUS_ARTICLE,
286 PAGE_PREVIOUS_UNREAD_ARTICLE,
287 PAGE_REVEAL,
288 PAGE_REPLY,
289 PAGE_REPLY_QUOTE,
290 PAGE_REPLY_QUOTE_HEADERS,
291 PAGE_REPOST,
292 PAGE_SAVE,
293 PAGE_SKIP_INCLUDED_TEXT,
294 PAGE_TAG,
295 PAGE_TOGGLE_HEADERS,
296 PAGE_TOGGLE_HIGHLIGHTING,
297 PAGE_TOGGLE_RAW,
298 PAGE_TOGGLE_ROT13,
299 PAGE_TOGGLE_TABS,
300 PAGE_TOGGLE_TEX2ISO,
301 PAGE_TOGGLE_UUE,
302 PAGE_TOP_THREAD,
303 PAGE_VIEW_ATTACHMENTS,
304 PAGE_VIEW_URL,
305 #ifdef HAVE_PGP_GPG
306 PGP_KEY_ENCRYPT,
307 PGP_KEY_ENCRYPT_SIGN,
308 PGP_INCLUDE_KEY,
309 PGP_KEY_SIGN,
310 #endif /* HAVE_PGP_GPG */
311 POST_ABORT,
312 POST_CANCEL,
313 POST_CONTINUE,
314 POST_EDIT,
315 POST_IGNORE_FUPTO,
316 #ifdef HAVE_ISPELL
317 POST_ISPELL,
318 #endif /* HAVE_ISPELL */
319 POST_MAIL,
320 #ifdef HAVE_PGP_GPG
321 POST_PGP,
322 #endif /* HAVE_PGP_GPG */
323 POST_POSTPONE,
324 POST_SEND,
325 POST_SUPERSEDE,
326 POSTED_SELECT,
327 POSTPONE_ALL,
328 POSTPONE_OVERRIDE,
329 POSTPROCESS_NO,
330 POSTPROCESS_SHAR,
331 POSTPROCESS_YES,
332 PROMPT_NO,
333 PROMPT_YES,
334 SAVE_APPEND_FILE,
335 SAVE_OVERWRITE_FILE,
336 SCOPE_ADD,
337 SCOPE_DELETE,
338 SCOPE_EDIT_ATTRIBUTES_FILE,
339 SCOPE_MOVE,
340 SCOPE_RENAME,
341 SCOPE_SELECT,
342 SELECT_ENTER_GROUP,
343 SELECT_ENTER_NEXT_UNREAD_GROUP,
344 SELECT_GOTO,
345 SELECT_MARK_GROUP_UNREAD,
346 SELECT_MOVE_GROUP,
347 SELECT_NEXT_UNREAD_GROUP,
348 SELECT_RESET_NEWSRC,
349 SELECT_SORT_ACTIVE,
350 SELECT_SUBSCRIBE,
351 SELECT_SUBSCRIBE_PATTERN,
352 SELECT_SYNC_WITH_ACTIVE,
353 SELECT_TOGGLE_DESCRIPTIONS,
354 SELECT_TOGGLE_READ_DISPLAY,
355 SELECT_UNSUBSCRIBE,
356 SELECT_UNSUBSCRIBE_PATTERN,
357 SELECT_QUIT_NO_WRITE,
358 SELECT_YANK_ACTIVE,
359 THREAD_AUTOSAVE,
360 THREAD_CANCEL,
361 THREAD_MAIL,
362 THREAD_MARK_ARTICLE_READ,
363 THREAD_READ_NEXT_ARTICLE_OR_THREAD,
364 THREAD_READ_ARTICLE,
365 THREAD_REVERSE_SELECTIONS,
366 THREAD_SAVE,
367 THREAD_SELECT_ARTICLE,
368 THREAD_TAG,
369 THREAD_TAG_PARTS,
370 THREAD_TOGGLE_ARTICLE_SELECTION,
371 THREAD_TOGGLE_SUBJECT_DISPLAY,
372 THREAD_UNDO_SELECTIONS,
373 THREAD_UNTAG,
374 URL_SELECT
375 };
376 typedef enum defined_functions t_function;
377
378
379 struct keynode {
380 #if defined(MULTIBYTE_ABLE) && !defined(NO_LOCALE)
381 wchar_t key;
382 #else
383 char key;
384 #endif /* MULTIBYTE_ABLE && !NO_LOCALE */
385 t_function function;
386 };
387
388
389 struct keylist {
390 struct keynode *list;
391 size_t used;
392 size_t max;
393 };
394
395
396 extern struct keylist attachment_keys;
397 extern struct keylist feed_post_process_keys;
398 extern struct keylist feed_supersede_article_keys;
399 extern struct keylist feed_type_keys;
400 extern struct keylist filter_keys;
401 extern struct keylist group_keys;
402 extern struct keylist info_keys;
403 extern struct keylist option_menu_keys;
404 extern struct keylist post_hist_keys;
405 extern struct keylist page_keys;
406 #ifdef HAVE_PGP_GPG
407 extern struct keylist pgp_mail_keys;
408 extern struct keylist pgp_news_keys;
409 #endif /* HAVE_PGP_GPG */
410 extern struct keylist post_cancel_keys;
411 extern struct keylist post_continue_keys;
412 extern struct keylist post_delete_keys;
413 extern struct keylist post_edit_keys;
414 extern struct keylist post_edit_ext_keys;
415 extern struct keylist post_ignore_fupto_keys;
416 extern struct keylist post_mail_fup_keys;
417 extern struct keylist post_post_keys;
418 extern struct keylist post_postpone_keys;
419 extern struct keylist post_send_keys;
420 extern struct keylist prompt_keys;
421 extern struct keylist save_append_overwrite_keys;
422 extern struct keylist scope_keys;
423 extern struct keylist select_keys;
424 extern struct keylist thread_keys;
425 extern struct keylist url_keys;
426
427
428 extern t_function global_mouse_action(t_function (*left_action) (void), t_function (*right_action) (void));
429 extern t_function handle_keypad(
430 t_function (*left_action) (void),
431 t_function (*right_action) (void),
432 t_function (*mouse_action) (
433 t_function (*left_action) (void),
434 t_function (*right_action) (void)),
435 const struct keylist keys);
436 extern t_function prompt_slk_response(t_function default_func, const struct keylist keys, const char *fmt, ...);
437 #if defined(MULTIBYTE_ABLE) && !defined(NO_LOCALE)
438 extern char *printascii(char *buf, wint_t ch);
439 extern wchar_t func_to_key(t_function func, const struct keylist keys);
440 extern t_function key_to_func(const wchar_t key, const struct keylist keys);
441 #define PrintFuncKey(buf, func, keys) printascii(buf, (wint_t) func_to_key(func, keys))
442 #else
443 extern char *printascii(char *buf, int ch);
444 extern char func_to_key (t_function func, const struct keylist keys);
445 extern t_function key_to_func (const char key, const struct keylist keys);
446 #define PrintFuncKey(buf, func, keys) printascii(buf, (int) func_to_key(func, keys))
447 #endif /* MULTIBYTE_ABLE && !NO_LOCALE */
448 #endif /* !KEYMAP_H */