1/* generated by MKkeyname.awk */
2
3#include <curses.priv.h>
4#include <tic.h>
5#include <term_entry.h>
6
7const struct kn _nc_key_names[] = {
8	{ "KEY_A1", KEY_A1 },
9	{ "KEY_A3", KEY_A3 },
10	{ "KEY_B2", KEY_B2 },
11	{ "KEY_BACKSPACE", KEY_BACKSPACE },
12	{ "KEY_BEG", KEY_BEG },
13	{ "KEY_BREAK", KEY_BREAK },
14	{ "KEY_BTAB", KEY_BTAB },
15	{ "KEY_C1", KEY_C1 },
16	{ "KEY_C3", KEY_C3 },
17	{ "KEY_CANCEL", KEY_CANCEL },
18	{ "KEY_CATAB", KEY_CATAB },
19	{ "KEY_CLEAR", KEY_CLEAR },
20	{ "KEY_CLOSE", KEY_CLOSE },
21	{ "KEY_COMMAND", KEY_COMMAND },
22	{ "KEY_COPY", KEY_COPY },
23	{ "KEY_CREATE", KEY_CREATE },
24	{ "KEY_CTAB", KEY_CTAB },
25	{ "KEY_DC", KEY_DC },
26	{ "KEY_DL", KEY_DL },
27	{ "KEY_DOWN", KEY_DOWN },
28	{ "KEY_EIC", KEY_EIC },
29	{ "KEY_END", KEY_END },
30	{ "KEY_ENTER", KEY_ENTER },
31	{ "KEY_EOL", KEY_EOL },
32	{ "KEY_EOS", KEY_EOS },
33	{ "KEY_EXIT", KEY_EXIT },
34	{ "KEY_F(0)", KEY_F(0) },
35	{ "KEY_F(1)", KEY_F(1) },
36	{ "KEY_F(10)", KEY_F(10) },
37	{ "KEY_F(11)", KEY_F(11) },
38	{ "KEY_F(12)", KEY_F(12) },
39	{ "KEY_F(13)", KEY_F(13) },
40	{ "KEY_F(14)", KEY_F(14) },
41	{ "KEY_F(15)", KEY_F(15) },
42	{ "KEY_F(16)", KEY_F(16) },
43	{ "KEY_F(17)", KEY_F(17) },
44	{ "KEY_F(18)", KEY_F(18) },
45	{ "KEY_F(19)", KEY_F(19) },
46	{ "KEY_F(2)", KEY_F(2) },
47	{ "KEY_F(20)", KEY_F(20) },
48	{ "KEY_F(21)", KEY_F(21) },
49	{ "KEY_F(22)", KEY_F(22) },
50	{ "KEY_F(23)", KEY_F(23) },
51	{ "KEY_F(24)", KEY_F(24) },
52	{ "KEY_F(25)", KEY_F(25) },
53	{ "KEY_F(26)", KEY_F(26) },
54	{ "KEY_F(27)", KEY_F(27) },
55	{ "KEY_F(28)", KEY_F(28) },
56	{ "KEY_F(29)", KEY_F(29) },
57	{ "KEY_F(3)", KEY_F(3) },
58	{ "KEY_F(30)", KEY_F(30) },
59	{ "KEY_F(31)", KEY_F(31) },
60	{ "KEY_F(32)", KEY_F(32) },
61	{ "KEY_F(33)", KEY_F(33) },
62	{ "KEY_F(34)", KEY_F(34) },
63	{ "KEY_F(35)", KEY_F(35) },
64	{ "KEY_F(36)", KEY_F(36) },
65	{ "KEY_F(37)", KEY_F(37) },
66	{ "KEY_F(38)", KEY_F(38) },
67	{ "KEY_F(39)", KEY_F(39) },
68	{ "KEY_F(4)", KEY_F(4) },
69	{ "KEY_F(40)", KEY_F(40) },
70	{ "KEY_F(41)", KEY_F(41) },
71	{ "KEY_F(42)", KEY_F(42) },
72	{ "KEY_F(43)", KEY_F(43) },
73	{ "KEY_F(44)", KEY_F(44) },
74	{ "KEY_F(45)", KEY_F(45) },
75	{ "KEY_F(46)", KEY_F(46) },
76	{ "KEY_F(47)", KEY_F(47) },
77	{ "KEY_F(48)", KEY_F(48) },
78	{ "KEY_F(49)", KEY_F(49) },
79	{ "KEY_F(5)", KEY_F(5) },
80	{ "KEY_F(50)", KEY_F(50) },
81	{ "KEY_F(51)", KEY_F(51) },
82	{ "KEY_F(52)", KEY_F(52) },
83	{ "KEY_F(53)", KEY_F(53) },
84	{ "KEY_F(54)", KEY_F(54) },
85	{ "KEY_F(55)", KEY_F(55) },
86	{ "KEY_F(56)", KEY_F(56) },
87	{ "KEY_F(57)", KEY_F(57) },
88	{ "KEY_F(58)", KEY_F(58) },
89	{ "KEY_F(59)", KEY_F(59) },
90	{ "KEY_F(6)", KEY_F(6) },
91	{ "KEY_F(60)", KEY_F(60) },
92	{ "KEY_F(61)", KEY_F(61) },
93	{ "KEY_F(62)", KEY_F(62) },
94	{ "KEY_F(63)", KEY_F(63) },
95	{ "KEY_F(7)", KEY_F(7) },
96	{ "KEY_F(8)", KEY_F(8) },
97	{ "KEY_F(9)", KEY_F(9) },
98	{ "KEY_FIND", KEY_FIND },
99	{ "KEY_HELP", KEY_HELP },
100	{ "KEY_HOME", KEY_HOME },
101	{ "KEY_IC", KEY_IC },
102	{ "KEY_IL", KEY_IL },
103	{ "KEY_LEFT", KEY_LEFT },
104	{ "KEY_LL", KEY_LL },
105	{ "KEY_MARK", KEY_MARK },
106	{ "KEY_MESSAGE", KEY_MESSAGE },
107	{ "KEY_MOUSE", KEY_MOUSE },
108	{ "KEY_MOVE", KEY_MOVE },
109	{ "KEY_NEXT", KEY_NEXT },
110	{ "KEY_NPAGE", KEY_NPAGE },
111	{ "KEY_OPEN", KEY_OPEN },
112	{ "KEY_OPTIONS", KEY_OPTIONS },
113	{ "KEY_PPAGE", KEY_PPAGE },
114	{ "KEY_PREVIOUS", KEY_PREVIOUS },
115	{ "KEY_PRINT", KEY_PRINT },
116	{ "KEY_REDO", KEY_REDO },
117	{ "KEY_REFERENCE", KEY_REFERENCE },
118	{ "KEY_REFRESH", KEY_REFRESH },
119	{ "KEY_REPLACE", KEY_REPLACE },
120	{ "KEY_RESET", KEY_RESET },
121	{ "KEY_RESIZE", KEY_RESIZE },
122	{ "KEY_RESTART", KEY_RESTART },
123	{ "KEY_RESUME", KEY_RESUME },
124	{ "KEY_RIGHT", KEY_RIGHT },
125	{ "KEY_SAVE", KEY_SAVE },
126	{ "KEY_SBEG", KEY_SBEG },
127	{ "KEY_SCANCEL", KEY_SCANCEL },
128	{ "KEY_SCOMMAND", KEY_SCOMMAND },
129	{ "KEY_SCOPY", KEY_SCOPY },
130	{ "KEY_SCREATE", KEY_SCREATE },
131	{ "KEY_SDC", KEY_SDC },
132	{ "KEY_SDL", KEY_SDL },
133	{ "KEY_SELECT", KEY_SELECT },
134	{ "KEY_SEND", KEY_SEND },
135	{ "KEY_SEOL", KEY_SEOL },
136	{ "KEY_SEXIT", KEY_SEXIT },
137	{ "KEY_SF", KEY_SF },
138	{ "KEY_SFIND", KEY_SFIND },
139	{ "KEY_SHELP", KEY_SHELP },
140	{ "KEY_SHOME", KEY_SHOME },
141	{ "KEY_SIC", KEY_SIC },
142	{ "KEY_SLEFT", KEY_SLEFT },
143	{ "KEY_SMESSAGE", KEY_SMESSAGE },
144	{ "KEY_SMOVE", KEY_SMOVE },
145	{ "KEY_SNEXT", KEY_SNEXT },
146	{ "KEY_SOPTIONS", KEY_SOPTIONS },
147	{ "KEY_SPREVIOUS", KEY_SPREVIOUS },
148	{ "KEY_SPRINT", KEY_SPRINT },
149	{ "KEY_SR", KEY_SR },
150	{ "KEY_SREDO", KEY_SREDO },
151	{ "KEY_SREPLACE", KEY_SREPLACE },
152	{ "KEY_SRESET", KEY_SRESET },
153	{ "KEY_SRIGHT", KEY_SRIGHT },
154	{ "KEY_SRSUME", KEY_SRSUME },
155	{ "KEY_SSAVE", KEY_SSAVE },
156	{ "KEY_SSUSPEND", KEY_SSUSPEND },
157	{ "KEY_STAB", KEY_STAB },
158	{ "KEY_SUNDO", KEY_SUNDO },
159	{ "KEY_SUSPEND", KEY_SUSPEND },
160	{ "KEY_UNDO", KEY_UNDO },
161	{ "KEY_UP", KEY_UP },
162	{ 0, 0 }};
163
164NCURSES_EXPORT(NCURSES_CONST char *) keyname (int c)
165{
166	static char **table;
167	int i;
168	char name[20];
169	char *p;
170	NCURSES_CONST char *result = 0;
171
172	if (c == -1) {
173		result = "-1";
174	} else {
175		for (i = 0; _nc_key_names[i].name != 0; i++) {
176			if (_nc_key_names[i].code == c) {
177				result = (NCURSES_CONST char *)_nc_key_names[i].name;
178				break;
179			}
180		}
181
182		if (result == 0 && (c >= 0 && c < 256)) {
183			if (table == 0)
184				table = typeCalloc(char *, 256);
185			if (table != 0) {
186				if (table[c] == 0) {
187					p = name;
188					if (c >= 128) {
189						strcpy(p, "M-");
190						p += 2;
191						c -= 128;
192					}
193					if (c < 32)
194						sprintf(p, "^%c", c + '@');
195					else if (c == 127)
196						strcpy(p, "^?");
197					else
198						sprintf(p, "%c", c);
199					table[c] = strdup(name);
200				}
201				result = table[c];
202			}
203#if NCURSES_EXT_FUNCS && NCURSES_XNAMES
204		} else if (result == 0 && cur_term != 0) {
205			int j, k;
206			char * bound;
207			TERMTYPE *tp = &(cur_term->type);
208			int save_trace = _nc_tracing;
209
210			_nc_tracing = 0;	/* prevent recursion via keybound() */
211			for (j = 0; (bound = keybound(c, j)) != 0; ++j) {
212				for(k = STRCOUNT; k < NUM_STRINGS(tp);  k++) {
213					if (tp->Strings[k] != 0 && !strcmp(bound, tp->Strings[k])) {
214						result = ExtStrname(tp, k, strnames);
215						break;
216					}
217				}
218				if (result != 0)
219					break;
220			}
221			_nc_tracing = save_trace;
222#endif
223		}
224	}
225	return result;
226}
227
228#if USE_WIDEC_SUPPORT
229NCURSES_EXPORT(NCURSES_CONST char *) key_name (wchar_t c)
230{
231	NCURSES_CONST char *result = keyname((int)c);
232	if (!strncmp(result, "M-", 2)) result = 0;
233	return result;
234}
235#endif
236