64
60
* Translate an input keysym to the corresponding NRC keysym.
66
unsigned xtermCharSetIn(unsigned code, int charset)
63
xtermCharSetIn(unsigned code, int charset)
68
if (code >= 128 && code < 256) {
70
case 'A': /* United Kingdom set (or Latin 1) */
71
if (code == XK_sterling)
65
#define MAP(to, from) case from: code = to; break
67
if (code >= 128 && code < 256) {
69
case 'A': /* United Kingdom set (or Latin 1) */
70
if (code == XK_sterling)
79
case '1': /* Alternate Character ROM standard characters */
80
case '2': /* Alternate Character ROM special graphics */
81
case 'B': /* ASCII set */
84
case '0': /* special graphics (line drawing) */
89
case XK_sterling: code = 0x23; break;
90
case XK_threequarters: code = 0x40; break;
91
case XK_ydiaeresis: code = 0x5b; break;
92
case XK_onehalf: code = 0x5c; break;
93
/* N/A case XK_bar: code = 0x5d; break; */
94
case XK_diaeresis: code = 0x7b; break;
95
/* N/A case XK_f: code = 0x7c; break; */
96
case XK_onequarter: code = 0x7d; break;
97
case XK_acute: code = 0x7e; break;
102
case '5': /* Finnish */
104
case XK_Adiaeresis: code = 0x5b; break;
105
case XK_Odiaeresis: code = 0x5c; break;
106
case XK_Aring: code = 0x5d; break;
107
case XK_Udiaeresis: code = 0x5e; break;
108
case XK_eacute: code = 0x60; break;
109
case XK_adiaeresis: code = 0x7b; break;
110
case XK_odiaeresis: code = 0x7c; break;
111
case XK_aring: code = 0x7d; break;
112
case XK_udiaeresis: code = 0x7e; break;
116
case 'R': /* French */
118
case XK_sterling: code = 0x23; break;
119
case XK_agrave: code = 0x40; break;
120
case XK_degree: code = 0x5b; break;
121
case XK_ccedilla: code = 0x5c; break;
122
case XK_section: code = 0x5d; break;
123
case XK_eacute: code = 0x7b; break;
124
case XK_ugrave: code = 0x7c; break;
125
case XK_egrave: code = 0x7d; break;
126
case XK_diaeresis: code = 0x7e; break;
130
case 'Q': /* French Canadian */
132
case XK_agrave: code = 0x40; break;
133
case XK_acircumflex: code = 0x5b; break;
134
case XK_ccedilla: code = 0x5c; break;
135
case XK_ecircumflex: code = 0x5d; break;
136
case XK_icircumflex: code = 0x5e; break;
137
case XK_ocircumflex: code = 0x60; break;
138
case XK_eacute: code = 0x7b; break;
139
case XK_ugrave: code = 0x7c; break;
140
case XK_egrave: code = 0x7d; break;
141
case XK_ucircumflex: code = 0x7e; break;
145
case 'K': /* German */
147
case XK_section: code = 0x40; break;
148
case XK_Adiaeresis: code = 0x5b; break;
149
case XK_Odiaeresis: code = 0x5c; break;
150
case XK_Udiaeresis: code = 0x5d; break;
151
case XK_adiaeresis: code = 0x7b; break;
152
case XK_odiaeresis: code = 0x7c; break;
153
case XK_udiaeresis: code = 0x7d; break;
154
case XK_ssharp: code = 0x7e; break;
158
case 'Y': /* Italian */
160
case XK_sterling: code = 0x23; break;
161
case XK_section: code = 0x40; break;
162
case XK_degree: code = 0x5b; break;
163
case XK_ccedilla: code = 0x5c; break;
164
case XK_eacute: code = 0x5d; break;
165
case XK_ugrave: code = 0x60; break;
166
case XK_agrave: code = 0x7b; break;
167
case XK_ograve: code = 0x7c; break;
168
case XK_egrave: code = 0x7d; break;
169
case XK_igrave: code = 0x7e; break;
174
case '6': /* Norwegian/Danish */
176
case XK_Adiaeresis: code = 0x40; break;
177
case XK_AE: code = 0x5b; break;
178
case XK_Ooblique: code = 0x5c; break;
179
case XK_Aring: code = 0x5d; break;
180
case XK_Udiaeresis: code = 0x5e; break;
181
case XK_adiaeresis: code = 0x60; break;
182
case XK_ae: code = 0x7b; break;
183
case XK_oslash: code = 0x7c; break;
184
case XK_aring: code = 0x7d; break;
185
case XK_udiaeresis: code = 0x7e; break;
189
case 'Z': /* Spanish */
191
case XK_sterling: code = 0x23; break;
192
case XK_section: code = 0x40; break;
193
case XK_exclamdown: code = 0x5b; break;
194
case XK_Ntilde: code = 0x5c; break;
195
case XK_questiondown: code = 0x5d; break;
196
case XK_degree: code = 0x7b; break;
197
case XK_ntilde: code = 0x7c; break;
198
case XK_ccedilla: code = 0x7d; break;
203
case '7': /* Swedish */
205
case XK_Eacute: code = 0x40; break;
206
case XK_Adiaeresis: code = 0x5b; break;
207
case XK_Odiaeresis: code = 0x5c; break;
208
case XK_Aring: code = 0x5d; break;
209
case XK_Udiaeresis: code = 0x5e; break;
210
case XK_eacute: code = 0x60; break;
211
case XK_adiaeresis: code = 0x7b; break;
212
case XK_odiaeresis: code = 0x7c; break;
213
case XK_aring: code = 0x7d; break;
214
case XK_udiaeresis: code = 0x7e; break;
218
case '=': /* Swiss */
220
case XK_ugrave: code = 0x23; break;
221
case XK_agrave: code = 0x40; break;
222
case XK_eacute: code = 0x5b; break;
223
case XK_ccedilla: code = 0x5c; break;
224
case XK_ecircumflex: code = 0x5d; break;
225
case XK_icircumflex: code = 0x5e; break;
226
case XK_egrave: code = 0x5f; break;
227
case XK_ocircumflex: code = 0x60; break;
228
case XK_adiaeresis: code = 0x7b; break;
229
case XK_odiaeresis: code = 0x7c; break;
230
case XK_udiaeresis: code = 0x7d; break;
231
case XK_ucircumflex: code = 0x7e; break;
235
default: /* any character sets we don't recognize*/
238
code &= 0x7f; /* NRC in any case is 7-bit */
78
case '1': /* Alternate Character ROM standard characters */
79
case '2': /* Alternate Character ROM special graphics */
80
case 'B': /* ASCII set */
83
case '0': /* special graphics (line drawing) */
88
MAP(0x23, XK_sterling);
89
MAP(0x40, XK_threequarters);
90
MAP(0x5b, XK_ydiaeresis);
91
MAP(0x5c, XK_onehalf);
92
MAP(0x5d, XK_bar); /* glyph is not ISO-8859-1 */
93
MAP(0x7b, XK_diaeresis);
94
MAP(0x7c, XK_f); /* glyph is not ISO-8859-1 */
95
MAP(0x7d, XK_onequarter);
101
case '5': /* Finnish */
103
MAP(0x5b, XK_Adiaeresis);
104
MAP(0x5c, XK_Odiaeresis);
106
MAP(0x5e, XK_Udiaeresis);
107
MAP(0x60, XK_eacute);
108
MAP(0x7b, XK_adiaeresis);
109
MAP(0x7c, XK_odiaeresis);
111
MAP(0x7e, XK_udiaeresis);
115
case 'R': /* French */
117
MAP(0x23, XK_sterling);
118
MAP(0x40, XK_agrave);
119
MAP(0x5b, XK_degree);
120
MAP(0x5c, XK_ccedilla);
121
MAP(0x5d, XK_section);
122
MAP(0x7b, XK_eacute);
123
MAP(0x7c, XK_ugrave);
124
MAP(0x7d, XK_egrave);
125
MAP(0x7e, XK_diaeresis);
129
case 'Q': /* French Canadian */
131
MAP(0x40, XK_agrave);
132
MAP(0x5b, XK_acircumflex);
133
MAP(0x5c, XK_ccedilla);
134
MAP(0x5d, XK_ecircumflex);
135
MAP(0x5e, XK_icircumflex);
136
MAP(0x60, XK_ocircumflex);
137
MAP(0x7b, XK_eacute);
138
MAP(0x7c, XK_ugrave);
139
MAP(0x7d, XK_egrave);
140
MAP(0x7e, XK_ucircumflex);
144
case 'K': /* German */
146
MAP(0x40, XK_section);
147
MAP(0x5b, XK_Adiaeresis);
148
MAP(0x5c, XK_Odiaeresis);
149
MAP(0x5d, XK_Udiaeresis);
150
MAP(0x7b, XK_adiaeresis);
151
MAP(0x7c, XK_odiaeresis);
152
MAP(0x7d, XK_udiaeresis);
153
MAP(0x7e, XK_ssharp);
157
case 'Y': /* Italian */
159
MAP(0x23, XK_sterling);
160
MAP(0x40, XK_section);
161
MAP(0x5b, XK_degree);
162
MAP(0x5c, XK_ccedilla);
163
MAP(0x5d, XK_eacute);
164
MAP(0x60, XK_ugrave);
165
MAP(0x7b, XK_agrave);
166
MAP(0x7c, XK_ograve);
167
MAP(0x7d, XK_egrave);
168
MAP(0x7e, XK_igrave);
173
case '6': /* Norwegian/Danish */
175
MAP(0x40, XK_Adiaeresis);
177
MAP(0x5c, XK_Ooblique);
179
MAP(0x5e, XK_Udiaeresis);
180
MAP(0x60, XK_adiaeresis);
182
MAP(0x7c, XK_oslash);
184
MAP(0x7e, XK_udiaeresis);
188
case 'Z': /* Spanish */
190
MAP(0x23, XK_sterling);
191
MAP(0x40, XK_section);
192
MAP(0x5b, XK_exclamdown);
193
MAP(0x5c, XK_Ntilde);
194
MAP(0x5d, XK_questiondown);
195
MAP(0x7b, XK_degree);
196
MAP(0x7c, XK_ntilde);
197
MAP(0x7d, XK_ccedilla);
202
case '7': /* Swedish */
204
MAP(0x40, XK_Eacute);
205
MAP(0x5b, XK_Adiaeresis);
206
MAP(0x5c, XK_Odiaeresis);
208
MAP(0x5e, XK_Udiaeresis);
209
MAP(0x60, XK_eacute);
210
MAP(0x7b, XK_adiaeresis);
211
MAP(0x7c, XK_odiaeresis);
213
MAP(0x7e, XK_udiaeresis);
217
case '=': /* Swiss */
219
MAP(0x23, XK_ugrave);
220
MAP(0x40, XK_agrave);
221
MAP(0x5b, XK_eacute);
222
MAP(0x5c, XK_ccedilla);
223
MAP(0x5d, XK_ecircumflex);
224
MAP(0x5e, XK_icircumflex);
225
MAP(0x5f, XK_egrave);
226
MAP(0x60, XK_ocircumflex);
227
MAP(0x7b, XK_adiaeresis);
228
MAP(0x7c, XK_odiaeresis);
229
MAP(0x7d, XK_udiaeresis);
230
MAP(0x7e, XK_ucircumflex);
234
default: /* any character sets we don't recognize */
237
code &= 0x7f; /* NRC in any case is 7-bit */
244
244
* Translate a string to the display form. This assumes the font has the
245
245
* DEC graphic characters in cells 0-31, and otherwise is ISO-8859-1.
247
int xtermCharSetOut(IChar *buf, IChar *ptr, int leftset)
248
xtermCharSetOut(XtermWidget xw, IChar * buf, IChar * ptr, int leftset)
250
register TScreen *screen = TScreenOf(term);
252
int rightset = screen->gsets[(int)(screen->curgr)];
254
TRACE(("CHARSET GL=%c(G%d) GR=%c(G%d) SS%d:%s\n",
255
leftset, screen->curgl,
256
rightset, screen->curgr,
258
visibleIChar(buf, (unsigned)(ptr - buf))));
260
for (s = buf; s < ptr; ++s) {
261
int eight = CharOf(E2A(*s));
262
int seven = eight & 0x7f;
263
int cs = (eight >= 128) ? rightset : leftset;
268
case 'A': /* United Kingdom set (or Latin 1) */
269
if ((term->flags & NATIONAL)
270
|| (screen->vtXX_level <= 1)) {
272
chr = XTERM_POUND; /* UK pound sign*/
275
chr = (seven | 0x80);
251
TScreen *screen = TScreenOf(xw);
253
int rightset = screen->gsets[(int) (screen->curgr)];
255
#define MAP(from, to) case from: chr = to; break
257
TRACE(("CHARSET GL=%c(G%d) GR=%c(G%d) SS%d\n\t%s\n",
258
leftset, screen->curgl,
259
rightset, screen->curgr,
261
visibleIChar(buf, (unsigned) (ptr - buf))));
263
for (s = buf; s < ptr; ++s) {
264
int eight = CharOf(E2A(*s));
265
int seven = eight & 0x7f;
266
int cs = (eight >= 128) ? rightset : leftset;
272
* This is only partly right - prevent inadvertant remapping of
273
* the replacement character and other non-8bit codes into bogus
276
if (screen->utf8_mode) {
282
case 'A': /* United Kingdom set (or Latin 1) */
283
if ((xw->flags & NATIONAL)
284
|| (screen->vtXX_level <= 1)) {
287
chr = (screen->utf8_mode
295
chr = (seven | 0x80);
279
299
#if OPT_XMC_GLITCH
282
case '1': /* Alternate Character ROM standard characters */
283
case '2': /* Alternate Character ROM special graphics */
284
case 'B': /* ASCII set */
302
case '1': /* Alternate Character ROM standard characters */
303
case '2': /* Alternate Character ROM special graphics */
304
case 'B': /* ASCII set */
287
case '0': /* special graphics (line drawing) */
288
if (seven > 0x5f && seven <= 0x7e) {
307
case '0': /* special graphics (line drawing) */
308
if (seven > 0x5f && seven <= 0x7e) {
289
309
#if OPT_WIDE_CHARS
290
if (screen->utf8_mode)
291
chr = dec2ucs((unsigned)(seven - 0x5f));
310
if (screen->utf8_mode)
311
chr = dec2ucs((unsigned) (seven - 0x5f));
300
case '4': /* Dutch */
301
switch (chr = seven) {
302
case 0x23: chr = XK_sterling; break;
303
case 0x40: chr = XK_threequarters; break;
304
case 0x5b: chr = XK_ydiaeresis; break;
305
case 0x5c: chr = XK_onehalf; break;
306
case 0x5d: chr = XK_bar; break;
307
case 0x7b: chr = XK_diaeresis; break;
308
case 0x7c: chr = XK_f; break;
309
case 0x7d: chr = XK_onequarter; break;
310
case 0x7e: chr = XK_acute; break;
315
case '5': /* Finnish */
316
switch (chr = seven) {
317
case 0x5b: chr = XK_Adiaeresis; break;
318
case 0x5c: chr = XK_Odiaeresis; break;
319
case 0x5d: chr = XK_Aring; break;
320
case 0x5e: chr = XK_Udiaeresis; break;
321
case 0x60: chr = XK_eacute; break;
322
case 0x7b: chr = XK_adiaeresis; break;
323
case 0x7c: chr = XK_odiaeresis; break;
324
case 0x7d: chr = XK_aring; break;
325
case 0x7e: chr = XK_udiaeresis; break;
329
case 'R': /* French */
330
switch (chr = seven) {
331
case 0x23: chr = XK_sterling; break;
332
case 0x40: chr = XK_agrave; break;
333
case 0x5b: chr = XK_degree; break;
334
case 0x5c: chr = XK_ccedilla; break;
335
case 0x5d: chr = XK_section; break;
336
case 0x7b: chr = XK_eacute; break;
337
case 0x7c: chr = XK_ugrave; break;
338
case 0x7d: chr = XK_egrave; break;
339
case 0x7e: chr = XK_diaeresis; break;
343
case 'Q': /* French Canadian */
344
switch (chr = seven) {
345
case 0x40: chr = XK_agrave; break;
346
case 0x5b: chr = XK_acircumflex; break;
347
case 0x5c: chr = XK_ccedilla; break;
348
case 0x5d: chr = XK_ecircumflex; break;
349
case 0x5e: chr = XK_icircumflex; break;
350
case 0x60: chr = XK_ocircumflex; break;
351
case 0x7b: chr = XK_eacute; break;
352
case 0x7c: chr = XK_ugrave; break;
353
case 0x7d: chr = XK_egrave; break;
354
case 0x7e: chr = XK_ucircumflex; break;
358
case 'K': /* German */
359
switch (chr = seven) {
360
case 0x40: chr = XK_section; break;
361
case 0x5b: chr = XK_Adiaeresis; break;
362
case 0x5c: chr = XK_Odiaeresis; break;
363
case 0x5d: chr = XK_Udiaeresis; break;
364
case 0x7b: chr = XK_adiaeresis; break;
365
case 0x7c: chr = XK_odiaeresis; break;
366
case 0x7d: chr = XK_udiaeresis; break;
367
case 0x7e: chr = XK_ssharp; break;
371
case 'Y': /* Italian */
372
switch (chr = seven) {
373
case 0x23: chr = XK_sterling; break;
374
case 0x40: chr = XK_section; break;
375
case 0x5b: chr = XK_degree; break;
376
case 0x5c: chr = XK_ccedilla; break;
377
case 0x5d: chr = XK_eacute; break;
378
case 0x60: chr = XK_ugrave; break;
379
case 0x7b: chr = XK_agrave; break;
380
case 0x7c: chr = XK_ograve; break;
381
case 0x7d: chr = XK_egrave; break;
382
case 0x7e: chr = XK_igrave; break;
387
case '6': /* Norwegian/Danish */
388
switch (chr = seven) {
389
case 0x40: chr = XK_Adiaeresis; break;
390
case 0x5b: chr = XK_AE; break;
391
case 0x5c: chr = XK_Ooblique; break;
392
case 0x5d: chr = XK_Aring; break;
393
case 0x5e: chr = XK_Udiaeresis; break;
394
case 0x60: chr = XK_adiaeresis; break;
395
case 0x7b: chr = XK_ae; break;
396
case 0x7c: chr = XK_oslash; break;
397
case 0x7d: chr = XK_aring; break;
398
case 0x7e: chr = XK_udiaeresis; break;
402
case 'Z': /* Spanish */
403
switch (chr = seven) {
404
case 0x23: chr = XK_sterling; break;
405
case 0x40: chr = XK_section; break;
406
case 0x5b: chr = XK_exclamdown; break;
407
case 0x5c: chr = XK_Ntilde; break;
408
case 0x5d: chr = XK_questiondown; break;
409
case 0x7b: chr = XK_degree; break;
410
case 0x7c: chr = XK_ntilde; break;
411
case 0x7d: chr = XK_ccedilla; break;
416
case '7': /* Swedish */
417
switch (chr = seven) {
418
case 0x40: chr = XK_Eacute; break;
419
case 0x5b: chr = XK_Adiaeresis; break;
420
case 0x5c: chr = XK_Odiaeresis; break;
421
case 0x5d: chr = XK_Aring; break;
422
case 0x5e: chr = XK_Udiaeresis; break;
423
case 0x60: chr = XK_eacute; break;
424
case 0x7b: chr = XK_adiaeresis; break;
425
case 0x7c: chr = XK_odiaeresis; break;
426
case 0x7d: chr = XK_aring; break;
427
case 0x7e: chr = XK_udiaeresis; break;
431
case '=': /* Swiss */
432
switch (chr = seven) {
433
case 0x23: chr = XK_ugrave; break;
434
case 0x40: chr = XK_agrave; break;
435
case 0x5b: chr = XK_eacute; break;
436
case 0x5c: chr = XK_ccedilla; break;
437
case 0x5d: chr = XK_ecircumflex; break;
438
case 0x5e: chr = XK_icircumflex; break;
439
case 0x5f: chr = XK_egrave; break;
440
case 0x60: chr = XK_ocircumflex; break;
441
case 0x7b: chr = XK_adiaeresis; break;
442
case 0x7c: chr = XK_odiaeresis; break;
443
case 0x7d: chr = XK_udiaeresis; break;
444
case 0x7e: chr = XK_ucircumflex; break;
448
default: /* any character sets we don't recognize*/
453
* The state machine already treated DEL as a nonprinting and
454
* nonspacing character. If we have DEL now, simply render
320
case '4': /* Dutch */
321
switch (chr = seven) {
322
MAP(0x23, XK_sterling);
323
MAP(0x40, XK_threequarters);
324
MAP(0x5b, XK_ydiaeresis);
325
MAP(0x5c, XK_onehalf);
327
MAP(0x7b, XK_diaeresis);
329
MAP(0x7d, XK_onequarter);
335
case '5': /* Finnish */
336
switch (chr = seven) {
337
MAP(0x5b, XK_Adiaeresis);
338
MAP(0x5c, XK_Odiaeresis);
340
MAP(0x5e, XK_Udiaeresis);
341
MAP(0x60, XK_eacute);
342
MAP(0x7b, XK_adiaeresis);
343
MAP(0x7c, XK_odiaeresis);
345
MAP(0x7e, XK_udiaeresis);
349
case 'R': /* French */
350
switch (chr = seven) {
351
MAP(0x23, XK_sterling);
352
MAP(0x40, XK_agrave);
353
MAP(0x5b, XK_degree);
354
MAP(0x5c, XK_ccedilla);
355
MAP(0x5d, XK_section);
356
MAP(0x7b, XK_eacute);
357
MAP(0x7c, XK_ugrave);
358
MAP(0x7d, XK_egrave);
359
MAP(0x7e, XK_diaeresis);
363
case 'Q': /* French Canadian */
364
switch (chr = seven) {
365
MAP(0x40, XK_agrave);
366
MAP(0x5b, XK_acircumflex);
367
MAP(0x5c, XK_ccedilla);
368
MAP(0x5d, XK_ecircumflex);
369
MAP(0x5e, XK_icircumflex);
370
MAP(0x60, XK_ocircumflex);
371
MAP(0x7b, XK_eacute);
372
MAP(0x7c, XK_ugrave);
373
MAP(0x7d, XK_egrave);
374
MAP(0x7e, XK_ucircumflex);
378
case 'K': /* German */
379
switch (chr = seven) {
380
MAP(0x40, XK_section);
381
MAP(0x5b, XK_Adiaeresis);
382
MAP(0x5c, XK_Odiaeresis);
383
MAP(0x5d, XK_Udiaeresis);
384
MAP(0x7b, XK_adiaeresis);
385
MAP(0x7c, XK_odiaeresis);
386
MAP(0x7d, XK_udiaeresis);
387
MAP(0x7e, XK_ssharp);
391
case 'Y': /* Italian */
392
switch (chr = seven) {
393
MAP(0x23, XK_sterling);
394
MAP(0x40, XK_section);
395
MAP(0x5b, XK_degree);
396
MAP(0x5c, XK_ccedilla);
397
MAP(0x5d, XK_eacute);
398
MAP(0x60, XK_ugrave);
399
MAP(0x7b, XK_agrave);
400
MAP(0x7c, XK_ograve);
401
MAP(0x7d, XK_egrave);
402
MAP(0x7e, XK_igrave);
407
case '6': /* Norwegian/Danish */
408
switch (chr = seven) {
409
MAP(0x40, XK_Adiaeresis);
411
MAP(0x5c, XK_Ooblique);
413
MAP(0x5e, XK_Udiaeresis);
414
MAP(0x60, XK_adiaeresis);
416
MAP(0x7c, XK_oslash);
418
MAP(0x7e, XK_udiaeresis);
422
case 'Z': /* Spanish */
423
switch (chr = seven) {
424
MAP(0x23, XK_sterling);
425
MAP(0x40, XK_section);
426
MAP(0x5b, XK_exclamdown);
427
MAP(0x5c, XK_Ntilde);
428
MAP(0x5d, XK_questiondown);
429
MAP(0x7b, XK_degree);
430
MAP(0x7c, XK_ntilde);
431
MAP(0x7d, XK_ccedilla);
436
case '7': /* Swedish */
437
switch (chr = seven) {
438
MAP(0x40, XK_Eacute);
439
MAP(0x5b, XK_Adiaeresis);
440
MAP(0x5c, XK_Odiaeresis);
442
MAP(0x5e, XK_Udiaeresis);
443
MAP(0x60, XK_eacute);
444
MAP(0x7b, XK_adiaeresis);
445
MAP(0x7c, XK_odiaeresis);
447
MAP(0x7e, XK_udiaeresis);
451
case '=': /* Swiss */
452
switch (chr = seven) {
453
MAP(0x23, XK_ugrave);
454
MAP(0x40, XK_agrave);
455
MAP(0x5b, XK_eacute);
456
MAP(0x5c, XK_ccedilla);
457
MAP(0x5d, XK_ecircumflex);
458
MAP(0x5e, XK_icircumflex);
459
MAP(0x5f, XK_egrave);
460
MAP(0x60, XK_ocircumflex);
461
MAP(0x7b, XK_adiaeresis);
462
MAP(0x7c, XK_odiaeresis);
463
MAP(0x7d, XK_udiaeresis);
464
MAP(0x7e, XK_ucircumflex);
468
default: /* any character sets we don't recognize */
473
* The state machine already treated DEL as a nonprinting and
474
* nonspacing character. If we have DEL now, simply render
483
visibleIChar(buf, (unsigned) (ptr - buf))));