1 /*
2 * $LynxId: LYEditmap.c,v 1.29 2013/01/04 00:03:24 tom Exp $
3 *
4 * LYEditMap.c
5 * Keybindings for line and form editting.
6 */
7
8 #include <HTUtils.h>
9 #include <LYGlobalDefs.h>
10 #include <LYStrings.h>
11 #include <LYKeymap.h> /* KEYMAP_SIZE, LKC_*, LYK_* - kw */
12
13 /* * * * * LynxEditactionCodes * * * * */
14 #ifdef USE_ALT_BINDINGS
15
16 /* Last valid index for the (lynxkeycode+modifier -> lynxeditactioncode)
17 * tables. Currently all three tables are the same. - kw
18 */
19 #define LAST_MOD1_LKC 0x111
20 #define LAST_MOD2_LKC 0x111
21 #define LAST_MOD3_LKC 0x111
22
23 /* Get (lynxkeycode+modifier -> lynxeditactioncode) mapping, intermediate.
24 */
25 #define LKC_TO_LEC_M1(c) ((c)>LAST_MOD1_LKC? (int)LYE_UNMOD: Mod1Binding[c])
26 #define LKC_TO_LEC_M2(c) ((c)>LAST_MOD2_LKC? (int)LYE_UNMOD: Mod2Binding[c])
27 #define LKC_TO_LEC_M3(c) ((c)>LAST_MOD3_LKC? (int)LYE_UNMOD: Mod3Binding[c])
28
29 #endif /* USE_ALT_BINDINGS */
30
31 int current_lineedit = 0; /* Index into LYLineEditors[] */
32
33 int escape_bound = 0; /* User wanted Escape to perform actions? */
34
35 /*
36 * See LYStrings.h for the LYE definitions.
37 */
38 /* *INDENT-OFF* */
39 static LYEditCode DefaultEditBinding[KEYMAP_SIZE - 1] = {
40
41 LYE_NOP, LYE_BOL, LYE_DELPW, LYE_ABORT,
42 /* nul ^A ^B ^C */
43
44 LYE_DELN, LYE_EOL, LYE_DELNW, LYE_ABORT,
45 /* ^D ^E ^F ^G */
46
47 LYE_DELP, LYE_TAB, LYE_ENTER, LYE_LOWER,
48 /* bs tab nl ^K */
49
50 LYE_NOP, LYE_ENTER, LYE_FORWW, LYE_ABORT,
51 /* ^L cr ^N ^O */
52
53 LYE_BACKW, LYE_NOP, LYE_DELN, LYE_NOP,
54 /* ^P XON ^R XOFF */
55
56 #ifdef CAN_CUT_AND_PASTE
57 LYE_UPPER, LYE_ERASE, LYE_LKCMD, LYE_PASTE,
58 #else
59 LYE_UPPER, LYE_ERASE, LYE_LKCMD, LYE_NOP,
60 #endif
61 /* ^T ^U ^V ^W */
62
63 LYE_SETM1, LYE_NOP, LYE_NOP, LYE_NOP,
64 /* ^X ^Y ^Z ESC */
65
66 LYE_NOP, LYE_NOP, LYE_SWMAP, LYE_DELEL,
67 /* ^\ ^] ^^ ^_ */
68
69 /* sp .. RUBOUT */
70 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
71 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
72 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
73 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
74 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
75 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
76 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
77 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
78 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
79 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
80 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
81 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
82 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
83 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
84 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
85 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
86 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
87 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
88 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
89 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
90 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
91 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
92 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
93 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_DELP,
94
95 /* 80..9F ISO-8859-1 8-bit escape characters. */
96 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
97 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
98 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
99 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
100 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
101 #ifdef CJK_EX /* 1997/11/03 (Mon) 20:30:54 */
102 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
103 #else
104 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_AIX,
105 /* 97 AIX */
106 #endif
107 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
108 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
109
110 /* A0..FF (permissible ISO-8859-1) 8-bit characters. */
111 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
112 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
113 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
114 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
115 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
116 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
117 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
118 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
119 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
120 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
121 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
122 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
123 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
124 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
125 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
126 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
127 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
128 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
129 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
130 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
131 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
132 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
133 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
134 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
135
136 /* 100..10F function key definitions in LYStrings.h */
137 LYE_FORM_PASS, LYE_FORM_PASS, LYE_FORW, LYE_BACK,
138 /* UPARROW DNARROW RTARROW LTARROW */
139
140 LYE_FORM_PASS, LYE_FORM_PASS, LYE_BOL, LYE_EOL,
141 /* PGDOWN PGUP HOME END */
142
143 #if (defined(_WINDOWS) || defined(__DJGPP__))
144
145 LYE_FORM_PASS, LYE_NOP, LYE_NOP, LYE_NOP,
146 /* F1 */
147
148 #else
149
150 LYE_FORM_PASS, LYE_TAB, LYE_BOL, LYE_EOL,
151 /* F1 Do key Find key Select key */
152
153 #endif /* _WINDOWS || __DJGPP__ */
154
155 LYE_NOP, LYE_DELP, LYE_NOP, LYE_FORM_PASS,
156 /* Insert key Remove key DO_NOTHING Back tab */
157
158 /* 110..18F */
159 #if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
160
161 LYE_DELP, LYE_ENTER, LYE_NOP, LYE_NOP,
162 /* Backspace Enter */
163
164 #else
165
166 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
167
168 #endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */
169
170 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
171 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
172 /* MOUSE_KEY */
173 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
174 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
175 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
176 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
177 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
178 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
179 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
180 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
181 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
182 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
183 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
184 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
185 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
186 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
187 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
188 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
189 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
190 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
191 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
192 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
193 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
194 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
195 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
196 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
197 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
198 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
199 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
200 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
201 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
202 /* 190..20F */
203
204 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
205 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
206 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
207 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
208 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
209 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
210 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
211 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
212 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
213 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
214 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
215 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
216 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
217 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
218 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
219 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
220 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
221 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
222 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
223 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
224 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
225 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
226 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
227 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
228 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
229 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
230 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
231 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
232 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
233 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
234 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
235 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
236 /* 210..28F */
237
238 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
239 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
240 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
241 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
242 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
243 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
244 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
245 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
246 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
247 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
248 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
249 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
250 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
251 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
252 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
253 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
254 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
255 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
256 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
257 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
258 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
259 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
260 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
261 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
262 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
263 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
264 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
265 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
266 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
267 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
268 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
269 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
270 /* 290..293 */
271 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
272 };
273
274 /*
275 * Add your favorite key bindings HERE
276 */
277
278 /* KED-01 */ /* Default except: ^B=cursor-backward, ^F=cursor-forward, */
279 /* ^K=delete-to-EOL, ^X=delete-to-BOL, */
280 /* ^R=delete-prev-word, ^T=delete-next-word, */
281 /* ^^=upper-case-line, ^_=lower-case-line */
282 /* Why the difference for tab? - kw */
283
284 #ifdef USE_ALT_BINDINGS
285 static LYEditCode BetterEditBinding[KEYMAP_SIZE - 1]={
286
287 LYE_NOP, LYE_BOL, LYE_BACK, LYE_ABORT,
288 /* nul ^A ^B ^C */
289
290 LYE_DELN, LYE_EOL, LYE_FORW, LYE_ABORT,
291 /* ^D ^E ^F ^G */
292
293 LYE_DELP, LYE_ENTER, LYE_ENTER, LYE_DELEL,
294 /* bs tab nl ^K */
295
296 LYE_NOP, LYE_ENTER, LYE_FORWW, LYE_ABORT,
297 /* ^L cr ^N ^O */
298
299 LYE_BACKW, LYE_NOP, LYE_DELPW, LYE_NOP,
300 /* ^P XON ^R XOFF */
301
302 #ifdef CAN_CUT_AND_PASTE
303 LYE_DELNW, LYE_ERASE, LYE_LKCMD, LYE_PASTE,
304 #else
305 LYE_DELNW, LYE_ERASE, LYE_LKCMD, LYE_NOP,
306 #endif
307 /* ^T ^U ^V ^W */
308
309 LYE_SETM1, LYE_NOP, LYE_NOP, LYE_NOP,
310 /* ^X ^Y ^Z ESC */
311
312 LYE_NOP, LYE_NOP, LYE_UPPER, LYE_LOWER,
313 /* ^\ ^] ^^ ^_ */
314
315 /* sp .. RUBOUT */
316 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
317 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
318 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
319 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
320 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
321 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
322 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
323 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
324 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
325 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
326 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
327 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
328 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
329 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
330 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
331 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
332 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
333 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
334 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
335 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
336 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
337 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
338 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
339 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_DELP,
340
341 /* 80..9F ISO-8859-1 8-bit escape characters. */
342 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
343 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
344 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
345 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
346 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
347 #ifdef CJK_EX /* 1997/11/03 (Mon) 20:30:54 */
348 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
349 #else
350 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_AIX,
351 /* 97 AIX */
352 #endif
353 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
354 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
355
356 /* A0..FF (permissible ISO-8859-1) 8-bit characters. */
357 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
358 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
359 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
360 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
361 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
362 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
363 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
364 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
365 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
366 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
367 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
368 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
369 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
370 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
371 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
372 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
373 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
374 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
375 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
376 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
377 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
378 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
379 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
380 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
381
382 /* 100..10F function key definitions in LYStrings.h */
383 LYE_FORM_PASS, LYE_FORM_PASS, LYE_FORW, LYE_BACK,
384 /* UPARROW DNARROW RTARROW LTARROW */
385
386 LYE_FORM_PASS, LYE_FORM_PASS, LYE_BOL, LYE_EOL,
387 /* PGDOWN PGUP HOME END */
388
389 #if (defined(_WINDOWS) || defined(__DJGPP__))
390
391 LYE_FORM_PASS, LYE_NOP, LYE_NOP, LYE_NOP,
392 /* F1 */
393
394 #else
395
396 LYE_FORM_PASS, LYE_TAB, LYE_BOL, LYE_EOL,
397 /* F1 Do key Find key Select key */
398
399 #endif /* _WINDOWS || __DJGPP__ */
400
401 LYE_NOP, LYE_DELP, LYE_NOP, LYE_FORM_PASS,
402 /* Insert key Remove key DO_NOTHING Back tab */
403
404 /* 110..18F */
405 #if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
406
407 LYE_DELP, LYE_ENTER, LYE_NOP, LYE_NOP,
408 /* Backspace Enter */
409
410 #else
411
412 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
413
414 #endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */
415
416 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
417 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
418 /* MOUSE_KEY */
419 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
420 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
421 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
422 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
423 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
424 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
425 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
426 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
427 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
428 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
429 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
430 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
431 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
432 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
433 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
434 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
435 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
436 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
437 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
438 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
439 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
440 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
441 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
442 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
443 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
444 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
445 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
446 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
447 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
448 /* 190..20F */
449
450 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
451 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
452 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
453 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
454 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
455 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
456 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
457 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
458 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
459 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
460 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
461 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
462 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
463 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
464 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
465 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
466 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
467 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
468 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
469 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
470 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
471 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
472 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
473 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
474 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
475 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
476 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
477 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
478 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
479 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
480 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
481 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
482 /* 210..28F */
483
484 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
485 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
486 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
487 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
488 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
489 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
490 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
491 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
492 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
493 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
494 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
495 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
496 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
497 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
498 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
499 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
500 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
501 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
502 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
503 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
504 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
505 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
506 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
507 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
508 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
509 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
510 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
511 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
512 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
513 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
514 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
515 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
516 /* 290..293 */
517 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
518 };
519
520 /* kw */ /* Default except: ^B=cursor-backward[+],^F=cursor-forward[+], */
521 /* ^K=delete-to-EOL[+][++],^X=Modifier Prefix, */
522 /* ^[ (ESC)=Modifier Prefix, */
523 /* ^R=BACKW, ^S=FORWW, */
524 /* ^T=transpose-chars, */
525 /* ^U=delete-to-BOL, ^W=delete-prev-word, */
526 /* ^@ (NUL)=SETMARK, ^Y=YANK, */
527 /* ^_=ABORT (undo), */
528 /* ^P=FORM_PASS, ^N=FORM_PASS, */
529 /* ^O=FORM_PASS, ^L=FORM_PASS, */
530 /* ^\=FORM_PASS, ^]=FORM_PASS, */
531 /* ^Z=FORM_PASS, F1=FORM_PASS, */
532 /* ^E=EOL[++], Remove=DELN */
533 /* [+]: same as BetterEditBinding */
534 /* [++]: additionally set double-key modifier */
535
536 /* Default where BetterEditBinding deviates: ^^=SWMAP, */
537 /* tab=LYE_TAB */
538
539 /* Some functions for which the modifier binding is preferred: */
540 /* M-bs,M-del=delete-prev-word, M-d=delete-next-word, */
541 /* M-b=BACKW, M-f=FORWW, */
542
543 static LYEditCode BashlikeEditBinding[KEYMAP_SIZE - 1] = {
544
545 LYE_SETMARK, LYE_BOL, LYE_BACK, LYE_ABORT,
546 /* nul ^A ^B ^C */
547
548 LYE_DELN, LYE_EOL|LYE_DF, LYE_FORW, LYE_ABORT,
549 /* ^D ^E ^F ^G */
550
551 LYE_DELP, LYE_TAB, LYE_ENTER, LYE_DELEL|LYE_DF,
552 /* bs tab nl ^K */
553
554 LYE_FORM_PASS, LYE_ENTER, LYE_FORM_PASS, LYE_FORM_PASS,
555 /* ^L cr ^N ^O */
556
557 LYE_FORM_PASS, LYE_NOP, LYE_BACKW, LYE_FORWW,
558 /* ^P XON ^R ^S/XOFF */
559
560 LYE_TPOS, LYE_DELBL, LYE_LKCMD, LYE_DELPW,
561 /* ^T ^U ^V ^W */
562
563 LYE_SETM1, LYE_YANK, LYE_FORM_PASS, LYE_SETM2,
564 /* ^X ^Y ^Z ESC */
565
566 LYE_FORM_PASS, LYE_FORM_PASS, LYE_SWMAP, LYE_ABORT,
567 /* ^\ ^] ^^ ^_ */
568
569 /* sp .. RUBOUT */
570 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
571 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
572 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
573 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
574 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
575 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
576 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
577 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
578 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
579 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
580 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
581 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
582 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
583 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
584 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
585 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
586 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
587 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
588 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
589 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
590 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
591 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
592 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
593 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_DELP,
594
595 /* 80..9F ISO-8859-1 8-bit escape characters. */
596 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
597 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
598 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
599 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
600 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
601 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_AIX,
602 /* 97 AIX */
603 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
604 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
605
606 /* A0..FF (permissible ISO-8859-1) 8-bit characters. */
607 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
608 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
609 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
610 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
611 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
612 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
613 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
614 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
615 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
616 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
617 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
618 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
619 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
620 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
621 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
622 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
623 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
624 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
625 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
626 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
627 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
628 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
629 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
630 LYE_CHAR, LYE_CHAR, LYE_CHAR, LYE_CHAR,
631
632 /* 100..10F function key definitions in LYStrings.h */
633 LYE_FORM_PASS, LYE_FORM_PASS, LYE_FORW, LYE_BACK,
634 /* UPARROW DNARROW RTARROW LTARROW */
635
636 LYE_FORM_PASS, LYE_FORM_PASS, LYE_BOL, LYE_EOL,
637 /* PGDOWN PGUP HOME END */
638
639 #if (defined(_WINDOWS) || defined(__DJGPP__))
640
641 LYE_FORM_PASS, LYE_NOP, LYE_NOP, LYE_NOP,
642 /* F1 */
643
644 #else
645
646 LYE_FORM_PASS, LYE_TAB, LYE_BOL, LYE_EOL,
647 /* F1 Do key Find key Select key */
648
649 #endif /* _WINDOWS || __DJGPP__ */
650
651 LYE_NOP, LYE_DELN, LYE_NOP, LYE_FORM_PASS,
652 /* Insert key Remove key DO_NOTHING Back tab */
653
654 /* 110..18F */
655 #if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
656
657 LYE_DELP, LYE_ENTER, LYE_NOP, LYE_NOP,
658 /* Backspace Enter */
659
660 #else
661
662 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
663
664 #endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */
665
666 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
667 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
668 /* MOUSE_KEY */
669 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
670 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
671 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
672 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
673 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
674 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
675 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
676 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
677 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
678 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
679 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
680 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
681 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
682 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
683 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
684 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
685 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
686 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
687 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
688 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
689 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
690 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
691 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
692 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
693 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
694 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
695 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
696 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
697 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
698 /* 190..20F */
699
700 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
701 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
702 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
703 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
704 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
705 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
706 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
707 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
708 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
709 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
710 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
711 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
712 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
713 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
714 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
715 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
716 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
717 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
718 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
719 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
720 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
721 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
722 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
723 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
724 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
725 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
726 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
727 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
728 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
729 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
730 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
731 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
732 /* 210..28F */
733
734 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
735 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
736 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
737 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
738 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
739 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
740 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
741 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
742 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
743 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
744 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
745 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
746 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
747 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
748 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
749 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
750 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
751 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
752 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
753 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
754 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
755 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
756 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
757 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
758 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
759 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
760 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
761 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
762 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
763 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
764 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
765 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
766 /* 290..293 */
767 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
768 };
769
770 /* Oh no, not another one of those tables...
771 *
772 * If modifier bit is set in a lynxkeycode, it is first looked up here. Note
773 * the type different from the previous tables (short vs. char), since we want
774 * to hold larger values. OTOH we can keep the size shorter, everything beyond
775 * the end is effectively LYE_UNMOD (ignore modifier) by virtue of the
776 * LKC_TO_LEC_M1 macro.
777 *
778 * Currently this table isn't specific to the current_lineedit value, it is
779 * shared by all alternative "Bindings" to save space. However, if the
780 * modifier flag is set only by a LYE_SETMn lynxeditaction, this table can have
781 * effect only for those Bindings that map a lynxkeycode to LYE_SETMn. ( This
782 * doesn't apply if the modifier is already being set in LYgetch(). ) - kw
783 */
784 static short Mod1Binding[LAST_MOD1_LKC+1]={
785
786 LYE_NOP, LYE_BOL, LYE_BACKW, LYE_UNMOD,
787 /* nul ^A ^B ^C */
788
789 LYE_FORM_LAC|LYK_NEXT_LINK,
790 LYE_FORM_LAC|LYK_EDIT_TEXTAREA,
791 LYE_FORWW, LYE_ABORT,
792 /* ^D ^E ^F ^G */
793
794 LYE_DELPW, LYE_UNMOD, LYE_ENTER, LYE_FORM_LAC|LYK_LPOS_NEXT_LINK,
795 /* bs tab nl ^K */
796
797 LYE_FORM_PASS, LYE_ENTER, LYE_FORWW, LYE_UNMOD,
798 /* ^L cr ^N ^O */
799
800 LYE_BACKW, LYE_NOP, LYE_BACKW, LYE_NOP,
801 /* ^P XON ^R ^S/XOFF */
802
803 LYE_NOP, LYE_FORM_PASS, LYE_NOP, LYE_KILLREG,
804 /* ^T ^U ^V ^W */
805
806 LYE_XPMARK, LYE_UNMOD, LYE_FORM_PASS, LYE_NOP,
807 /* ^X ^Y ^Z ESC */
808
809 LYE_FORM_PASS, LYE_FORM_PASS, LYE_UNMOD, LYE_NOP,
810 /* ^\ ^] ^^ ^_ */
811
812 /* sp .. ? */
813 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
814 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
815 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
816 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_FORM_PASS,
817
818 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
819 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
820 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
821 LYE_FORM_LAC|LYK_HOME,
822 LYE_UNMOD, LYE_FORM_LAC|LYK_END,
823 LYE_UNMOD,
824
825 /* @, A .. Z, [, \, ], ^, _ */
826 LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR,
827 LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR,
828 LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR,
829 LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR,
830 LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR,
831 LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR,
832 LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR,
833 LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR, LYE_C1CHAR,
834
835 /* `, a .. z, {, |, }, ~, RUBOUT */
836 LYE_UNMOD, LYE_BOL, LYE_BACKW, LYE_UNMOD,
837 LYE_DELNW, LYE_FORM_LAC|LYK_EDIT_TEXTAREA,
838 LYE_FORWW, LYE_FORM_LAC|LYK_GROW_TEXTAREA,
839 LYE_CHAR, LYE_FORM_LAC|LYK_INSERT_FILE,
840 LYE_CHAR, LYE_ERASE,
841 LYE_LOWER, LYE_CHAR, LYE_FORM_PASS, LYE_UNMOD,
842 LYE_CHAR, LYE_NOP, LYE_NOP, LYE_NOP,
843 LYE_NOP, LYE_UPPER, LYE_NOP, LYE_NOP,
844 LYE_NOP, LYE_NOP, LYE_UNMOD, LYE_UNMOD,
845 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_DELPW,
846
847 /* 80..9F ISO-8859-1 8-bit escape characters. */
848 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
849 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
850 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
851 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
852 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
853 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
854 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
855 LYE_NOP, LYE_NOP, LYE_NOP, LYE_NOP,
856
857 /* A0..FF (permissible ISO-8859-1) 8-bit characters. */
858 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
859 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
860 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
861 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
862 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
863 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
864 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
865 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
866 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
867 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
868 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
869 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
870 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
871 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
872 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
873 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
874 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
875 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
876 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
877 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
878 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
879 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
880 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
881 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
882
883 /* 100..10F function key definitions in LYStrings.h */
884 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
885 /* UPARROW DNARROW RTARROW LTARROW */
886
887 LYE_UNMOD, LYE_UNMOD, LYE_FORM_PASS, LYE_FORM_PASS,
888 /* PGDOWN PGUP HOME END */
889
890 #if (defined(_WINDOWS) || defined(__DJGPP__))
891
892 LYE_FORM_LAC|LYK_DWIMHELP,
893 LYE_UNMOD, LYE_UNMOD, LYE_UNMOD,
894 /* F1 */
895
896 #else
897
898 LYE_FORM_LAC|LYK_DWIMHELP,
899 LYE_UNMOD, LYE_FORM_LAC|LYK_WHEREIS, LYE_FORM_LAC|LYK_NEXT,
900 /* F1 Do key Find key Select key */
901
902 #endif /* _WINDOWS || __DJGPP__ */
903
904 LYE_UNMOD, LYE_NOP, LYE_UNMOD, LYE_UNMOD,
905 /* Insert key Remove key DO_NOTHING Back tab */
906
907 /* 110..111 */
908 #if (defined(_WINDOWS) || defined(__DJGPP__)) && defined(USE_SLANG) && !defined(DJGPP_KEYHANDLER)
909
910 LYE_DELPW, LYE_UNMOD,
911 /* Backspace Enter */
912
913 #else
914
915 LYE_UNMOD, LYE_UNMOD,
916
917 #endif /* USE_SLANG &&(_WINDOWS || __DJGPP) && !DJGPP_KEYHANDLER */
918 };
919
920 /* Two more tables here, but currently they are all the same.
921 In other words, we are cheating to save space, until there
922 is a need for different tables. - kw */
923 static short *Mod2Binding = Mod1Binding;
924 static short *Mod3Binding = Mod1Binding;
925
926 #endif /* USE_ALT_BINDINGS */
927 /* *INDENT-ON* */
928
929 /*
930 * Add the array name to LYLineEditors
931 */
932
933 LYEditCode *LYLineEditors[] =
934 {
935 DefaultEditBinding, /* You can't please everyone, so you ... DW */
936 #ifdef USE_ALT_BINDINGS
937 BetterEditBinding, /* No, you certainly can't ... /ked 10/27/98 */
938 BashlikeEditBinding, /* and one more... - kw 1999-02-15 */
939 #endif
940 };
941
942 /*
943 * Add the name that the user will see below.
944 * The order of LYLineEditors and LYLineditNames MUST be the same.
945 */
946 const char *LYLineeditNames[] =
947 {
948 "Default Binding",
949 #ifdef USE_ALT_BINDINGS
950 "Alternate Bindings",
951 "Bash-like Bindings",
952 #endif
953 (char *) 0
954 };
955
956 /*
957 * Add the URL (relative to helpfilepath) used for context-dependent
958 * help on form field editing.
959 *
960 * The order must correspond to that of LYLineditNames.
961 */
962 const char *LYLineeditHelpURLs[] =
963 {
964 EDIT_HELP,
965 #ifdef USE_ALT_BINDINGS
966 ALT_EDIT_HELP,
967 BASHLIKE_EDIT_HELP,
968 #endif
969 (char *) 0
970 };
971
EditBinding(int xlkc)972 int EditBinding(int xlkc)
973 {
974 int editaction, xleac = LYE_UNMOD;
975 int c = xlkc & LKC_MASK;
976
977 if (xlkc == -1)
978 return LYE_NOP; /* maybe LYE_ABORT? or LYE_FORM_LAC|LYK_UNKNOWN? */
979 #ifdef NOT_ASCII
980 if (c < 256) {
981 c = TOASCII(c);
982 }
983 #endif
984 #ifdef USE_ALT_BINDINGS
985 /*
986 * Get intermediate code from one of the lynxkeycode+modifier tables if
987 * applicable, otherwise get the lynxeditactioncode directly. If we have
988 * more than one modifier bits, the first currently wins. - kw
989 */
990 if (xlkc & LKC_ISLECLAC) {
991 return LKC2_TO_LEC(xlkc);
992 } else if (xlkc & LKC_MOD1) {
993 xleac = LKC_TO_LEC_M1(c);
994 } else if (xlkc & LKC_MOD2) {
995 xleac = LKC_TO_LEC_M2(c);
996 } else if (xlkc & LKC_MOD3) {
997 xleac = LKC_TO_LEC_M3(c);
998 } else {
999 xleac = UCH(CurrentLineEditor()[c]);
1000 }
1001 #endif
1002 /*
1003 * If we have an intermediate code that says "same as without modifier",
1004 * look that up now; otherwise we are already done. - kw
1005 */
1006 if (xleac == LYE_UNMOD) {
1007 editaction = CurrentLineEditor()[c];
1008 } else {
1009 editaction = xleac;
1010 }
1011 return editaction;
1012 }
1013
1014 /*
1015 * Install lec as the lynxeditaction for lynxkeycode xlkc. func must be
1016 * present in the revmap table. For normal (non-modifier) lynxkeycodes,
1017 * select_edi selects which of the alternative line-editor binding tables is
1018 * modified. If select_edi is positive, only the table given by it is modified
1019 * (the DefaultEditBinding table is numbered 1). If select_edi is 0, all
1020 * tables are modified. If select_edi is negative, all tables except the one
1021 * given by abs(select_edi) are modified. returns TRUE if the mapping was
1022 * made, FALSE if not. Note that this remapping cannot be undone (as might be
1023 * desirable as a result of re-parsing lynx.cfg), we don't remember the
1024 * original editaction from the Bindings tables anywhere. - kw
1025 */
LYRemapEditBinding(int xlkc,int lec,int select_edi)1026 BOOL LYRemapEditBinding(int xlkc,
1027 int lec,
1028 int select_edi)
1029 {
1030 int j;
1031 int c = xlkc & LKC_MASK;
1032 BOOLEAN success = FALSE;
1033
1034 if (xlkc < 0 || (xlkc & LKC_ISLAC) || c >= KEYMAP_SIZE + 1)
1035 return FALSE;
1036 #ifdef USE_ALT_BINDINGS
1037 if (xlkc & LKC_MOD1) {
1038 if (c > LAST_MOD1_LKC)
1039 return FALSE;
1040 else
1041 Mod1Binding[c] = (short) lec;
1042 return TRUE;
1043 } else if (xlkc & LKC_MOD2) {
1044 if (c > LAST_MOD2_LKC)
1045 return FALSE;
1046 else
1047 Mod2Binding[c] = (short) lec;
1048 return TRUE;
1049 } else if (xlkc & LKC_MOD3) {
1050 if (c > LAST_MOD3_LKC)
1051 return FALSE;
1052 else
1053 Mod3Binding[c] = (short) lec;
1054 return TRUE;
1055 } else
1056 #endif /* USE_ALT_BINDINGS */
1057 {
1058 #ifndef UCHAR_MAX
1059 #define UCHAR_MAX 255
1060 #endif
1061 if ((unsigned int) lec > UCHAR_MAX)
1062 return FALSE; /* cannot do, doesn't fit in a char - kw */
1063 if (select_edi > 0) {
1064 if ((unsigned int) select_edi < TABLESIZE(LYLineEditors)) {
1065 LYLineEditors[select_edi - 1][c] = (LYEditCode) lec;
1066 success = TRUE;
1067 }
1068 } else {
1069 for (j = 0; LYLineeditNames[j]; j++) {
1070 success = TRUE;
1071 if (select_edi < 0 && j + 1 + select_edi == 0)
1072 continue;
1073 LYLineEditors[j][c] = (LYEditCode) lec;
1074 }
1075 }
1076 }
1077 return success;
1078 }
1079
1080 /*
1081 * Macro to walk through lkc-indexed tables up to imax, in the (ASCII) order
1082 * 97 - 122 ('a' - 'z'),
1083 * 32 - 96 (' ' - '`', includes 'A' - 'Z'),
1084 * 123 - 126 ('{' - '~'),
1085 * 0 - 31 (^@ - ^_),
1086 * 256 - imax,
1087 * 127 - 255
1088 */
1089 #define NEXT_I(i,imax) ((i==122) ? 32 : (i==96) ? 123 : (i==126) ? 0 :\
1090 (i==31) ? 256 : (i==imax) ? 127 :\
1091 (i==255) ? (-1) :i+1)
1092 #define FIRST_I 97
1093
LYKeyForEditAction(int lec)1094 int LYKeyForEditAction(int lec)
1095 {
1096 int editaction, i;
1097
1098 for (i = FIRST_I; i >= 0; i = NEXT_I(i, KEYMAP_SIZE - 2)) {
1099 editaction = CurrentLineEditor()[i];
1100 if (editaction == lec) {
1101 #ifdef NOT_ASCII
1102 if (i < 256) {
1103 return FROMASCII(i);
1104 } else
1105 #endif
1106 return i;
1107 }
1108 }
1109 return (-1);
1110 }
1111
1112 /*
1113 * Given a lynxactioncode, return a key (lynxkeycode) or sequence of two keys
1114 * that results in the given action while forms-editing. The main keycode is
1115 * returned as function value, possibly with modifier bits set; in addition, if
1116 * applicable, a key that sets the required modifier flag is returned in
1117 * *pmodkey if (pmodkey!=NULL). Non-lineediting bindings that would require
1118 * typing LYE_LKCMD (default ^V) to activate are not checked here, the caller
1119 * should do that separately if required. If no key is bound by current
1120 * line-editor bindings to the action, -1 is returned.
1121 *
1122 * This is all a bit long - it is general enough to continue to work should the
1123 * three Mod<N>Binding[] become different tables. - kw
1124 */
LYEditKeyForAction(int lac,int * pmodkey)1125 int LYEditKeyForAction(int lac,
1126 int *pmodkey)
1127 {
1128 int editaction, i, c;
1129 int mod1found = -1, mod2found = -1, mod3found = -1;
1130
1131 if (pmodkey)
1132 *pmodkey = -1;
1133 for (i = FIRST_I; i >= 0; i = NEXT_I(i, KEYMAP_SIZE - 2)) {
1134 editaction = CurrentLineEditor()[i];
1135 #ifdef NOT_ASCII
1136 if (i < 256) {
1137 c = FROMASCII(i);
1138 } else
1139 #endif
1140 c = i;
1141 if (editaction == (lac | LYE_FORM_LAC))
1142 return c;
1143 if (editaction == LYE_FORM_PASS) {
1144 #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
1145 if (lynx_edit_mode && !no_dired_support && lac &&
1146 LKC_TO_LAC(key_override, c) == lac)
1147 return c;
1148 #endif /* DIRED_SUPPORT && OK_OVERRIDE */
1149 if (LKC_TO_LAC(keymap, c) == lac)
1150 return c;
1151 }
1152 if (editaction == LYE_TAB) {
1153 #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
1154 if (lynx_edit_mode && !no_dired_support && lac &&
1155 LKC_TO_LAC(key_override, '\t') == lac)
1156 return c;
1157 #endif /* DIRED_SUPPORT && OK_OVERRIDE */
1158 if (LKC_TO_LAC(keymap, '\t') == lac)
1159 return c;
1160 }
1161 if (editaction == LYE_SETM1 && mod1found < 0)
1162 mod1found = i;
1163 if (editaction == LYE_SETM2 && mod2found < 0)
1164 mod2found = i;
1165 if ((editaction & LYE_DF) && mod3found < 0)
1166 mod3found = i;
1167 }
1168 #ifdef USE_ALT_BINDINGS
1169 if (mod3found >= 0) {
1170 for (i = mod3found; i >= 0; i = NEXT_I(i, LAST_MOD3_LKC)) {
1171 editaction = CurrentLineEditor()[i];
1172 if (!(editaction & LYE_DF))
1173 continue;
1174 editaction = Mod3Binding[i];
1175 #ifdef NOT_ASCII
1176 if (i < 256) {
1177 c = FROMASCII(i);
1178 } else
1179 #endif
1180 c = i;
1181 if (pmodkey)
1182 *pmodkey = c;
1183 if (editaction == (lac | LYE_FORM_LAC))
1184 return (c | LKC_MOD3);
1185 if (editaction == LYE_FORM_PASS) {
1186 #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
1187 if (lynx_edit_mode && !no_dired_support && lac &&
1188 LKC_TO_LAC(key_override, c) == lac)
1189 return (c | LKC_MOD3);
1190 #endif /* DIRED_SUPPORT && OK_OVERRIDE */
1191 if (LKC_TO_LAC(keymap, c) == lac)
1192 return (c | LKC_MOD3);
1193 }
1194 if (editaction == LYE_TAB) {
1195 #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
1196 if (lynx_edit_mode && !no_dired_support && lac &&
1197 LKC_TO_LAC(key_override, '\t') == lac)
1198 return (c | LKC_MOD3);
1199 #endif /* DIRED_SUPPORT && OK_OVERRIDE */
1200 if (LKC_TO_LAC(keymap, '\t') == lac)
1201 return (c | LKC_MOD3);
1202 }
1203 }
1204 }
1205 if (mod1found >= 0) {
1206 if (pmodkey) {
1207 #ifdef NOT_ASCII
1208 if (mod1found < 256) {
1209 *pmodkey = FROMASCII(mod1found);
1210 } else
1211 #endif
1212 *pmodkey = mod1found;
1213 }
1214 for (i = FIRST_I; i >= 0; i = NEXT_I(i, LAST_MOD1_LKC)) {
1215 editaction = Mod1Binding[i];
1216 #ifdef NOT_ASCII
1217 if (i < 256) {
1218 c = FROMASCII(i);
1219 } else
1220 #endif
1221 c = i;
1222 if (editaction == (lac | LYE_FORM_LAC))
1223 return (c | LKC_MOD1);
1224 if (editaction == LYE_FORM_PASS) {
1225 #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
1226 if (lynx_edit_mode && !no_dired_support && lac &&
1227 LKC_TO_LAC(key_override, c) == lac)
1228 return (c | LKC_MOD1);
1229 #endif /* DIRED_SUPPORT && OK_OVERRIDE */
1230 if (LKC_TO_LAC(keymap, c) == lac)
1231 return (c | LKC_MOD1);
1232 }
1233 if (editaction == LYE_TAB) {
1234 #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
1235 if (lynx_edit_mode && !no_dired_support && lac &&
1236 LKC_TO_LAC(key_override, '\t') == lac)
1237 return (c | LKC_MOD1);
1238 #endif /* DIRED_SUPPORT && OK_OVERRIDE */
1239 if (LKC_TO_LAC(keymap, '\t') == lac)
1240 return (c | LKC_MOD1);
1241 }
1242 }
1243 }
1244 if (mod2found >= 0) {
1245 if (pmodkey) {
1246 #ifdef NOT_ASCII
1247 if (mod1found < 256) {
1248 *pmodkey = FROMASCII(mod1found);
1249 } else
1250 #endif
1251 *pmodkey = mod1found;
1252 }
1253 for (i = FIRST_I; i >= 0; i = NEXT_I(i, LAST_MOD2_LKC)) {
1254 editaction = Mod2Binding[i];
1255 #ifdef NOT_ASCII
1256 if (i < 256) {
1257 c = FROMASCII(i);
1258 } else
1259 #endif
1260 c = i;
1261 if (editaction == (lac | LYE_FORM_LAC))
1262 return (c | LKC_MOD2);
1263 if (editaction == LYE_FORM_PASS) {
1264 #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
1265 if (lynx_edit_mode && !no_dired_support && lac &&
1266 LKC_TO_LAC(key_override, c) == lac)
1267 return (c | LKC_MOD2);
1268 #endif /* DIRED_SUPPORT && OK_OVERRIDE */
1269 if (LKC_TO_LAC(keymap, c) == lac)
1270 return (c | LKC_MOD2);
1271 }
1272 if (editaction == LYE_TAB) {
1273 #if defined(DIRED_SUPPORT) && defined(OK_OVERRIDE)
1274 if (lynx_edit_mode && !no_dired_support && lac &&
1275 LKC_TO_LAC(key_override, '\t') == lac)
1276 return (c | LKC_MOD2);
1277 #endif /* DIRED_SUPPORT && OK_OVERRIDE */
1278 if (LKC_TO_LAC(keymap, '\t') == lac)
1279 return (c | LKC_MOD2);
1280 }
1281 }
1282 }
1283 #endif /* USE_ALT_BINDINGS */
1284 if (pmodkey)
1285 *pmodkey = -1;
1286 return (-1);
1287 }
1288
1289 /*
1290 * Dummy initializer to ensure this module is linked
1291 * if the external model is common block, and the
1292 * module is ever placed in a library. - FM
1293 */
LYEditmapDeclared(void)1294 int LYEditmapDeclared(void)
1295 {
1296 int status = 1;
1297
1298 return status;
1299 }
1300