1
/* $XTermId: trace.c,v 1.133 2011/12/27 10:10:53 tom Exp $ */
1
/* $XTermId: trace.c,v 1.149 2013/09/09 00:15:00 tom Exp $ */
4
* Copyright 1997-2010,2011 by Thomas E. Dickey
4
* Copyright 1997-2012,2013 by Thomas E. Dickey
6
6
* All Rights Reserved
183
185
if (E2A(value) < 32 || (E2A(value) >= 127 && E2A(value) < 160))
184
sprintf(dst, "\\%03o", value);
186
sprintf(dst, "\\%03o", value & 0xff);
186
188
sprintf(dst, "%c", CharOf(value));
218
visibleScsCode(unsigned chrset)
220
#define MAP(to,from) case from: result = to; break
221
const char *result = "<ERR>";
222
switch ((DECNRCM_codes) chrset) {
224
MAP("A", nrc_British);
225
MAP("A", nrc_British_Latin_1);
226
MAP("&4", nrc_Cyrillic);
227
MAP("0", nrc_DEC_Spec_Graphic);
228
MAP("1", nrc_DEC_Alt_Chars);
229
MAP("2", nrc_DEC_Alt_Graphics);
230
MAP("<", nrc_DEC_Supp);
231
MAP("%5", nrc_DEC_Supp_Graphic);
232
MAP(">", nrc_DEC_Technical);
234
MAP("5", nrc_Finnish);
235
MAP("C", nrc_Finnish2);
236
MAP("R", nrc_French);
237
MAP("f", nrc_French2);
238
MAP("Q", nrc_French_Canadian);
239
MAP("9", nrc_French_Canadian2);
240
MAP("K", nrc_German);
241
MAP("\"?", nrc_Greek);
242
MAP("F", nrc_Greek_Supp);
243
MAP("\"4", nrc_Hebrew);
244
MAP("%=", nrc_Hebrew2);
245
MAP("H", nrc_Hebrew_Supp);
246
MAP("Y", nrc_Italian);
247
MAP("M", nrc_Latin_5_Supp);
248
MAP("L", nrc_Latin_Cyrillic);
249
MAP("`", nrc_Norwegian_Danish);
250
MAP("E", nrc_Norwegian_Danish2);
251
MAP("6", nrc_Norwegian_Danish3);
252
MAP("%6", nrc_Portugese);
253
MAP("&5", nrc_Russian);
254
MAP("%3", nrc_SCS_NRCS);
255
MAP("Z", nrc_Spanish);
256
MAP("7", nrc_Swedish);
257
MAP("H", nrc_Swedish2);
259
MAP("%0", nrc_Turkish);
260
MAP("%2", nrc_Turkish2);
261
MAP("<UNK>", nrc_Unknown);
216
visibleChars(const Char * buf, unsigned len)
268
visibleChars(const Char *buf, unsigned len)
218
270
static char *result;
219
271
static unsigned used;
283
visibleIChar(IChar * buf, unsigned len)
335
visibleUChar(unsigned chr)
286
static unsigned used;
289
unsigned limit = ((len + 1) * 8) + 1;
294
result = XtRealloc(result, used);
299
unsigned value = *buf++;
302
sprintf(dst, "\\u+%04X", value);
305
formatAscii(dst, value);
309
} else if (result != 0) {
339
return visibleIChars(buf, 1);
317
342
#define CASETYPE(name) case name: result = #name; break
403
visibleNotifyMode(int code)
405
const char *result = "?";
407
CASETYPE(NotifyNormal);
408
CASETYPE(NotifyGrab);
409
CASETYPE(NotifyUngrab);
410
CASETYPE(NotifyWhileGrabbed);
378
416
visibleNotifyDetail(int code)
380
418
const char *result = "?";
464
LineClrFlag(LineData * ld, int flag)
502
LineClrFlag(LineData *ld, int flag)
467
505
SHOW_BAD_LINE(LineClrFlag, ld);
477
LineSetFlag(LineData * ld, int flag)
515
LineSetFlag(LineData *ld, int flag)
480
518
SHOW_BAD_LINE(LineSetFlag, ld);
504
542
#endif /* OPT_TRACE_FLAGS */
545
* Trace the normal or alternate screen, showing color values up to 16, e.g.,
546
* for debugging with vttest.
549
TraceScreen(XtermWidget xw, int whichBuf)
551
TScreen *screen = TScreenOf(xw);
554
if (screen->editBuf_index[whichBuf]) {
555
TRACE(("TraceScreen %d:\n", whichBuf));
556
for (row = 0; row <= screen->max_row; ++row) {
557
LineData *ld = getLineData(screen, row);
558
TRACE((" %3d:", row));
560
for (col = 0; col < ld->lineSize; ++col) {
561
int ch = (int) ld->charData[col];
571
for (col = 0; col < ld->lineSize; ++col) {
572
unsigned attrs = ld->attribs[col];
574
if (attrs & PROTECTED) {
576
} else if (attrs & BLINK) {
578
} else if (attrs & CHARDRAWN) {
589
for (col = 0; col < ld->lineSize; ++col) {
590
unsigned fg = extract_fg(xw, ld->color[col], ld->attribs[col]);
598
for (col = 0; col < ld->lineSize; ++col) {
599
unsigned bg = extract_bg(xw, ld->color[col], ld->attribs[col]);
607
TRACE(("null lineData\n"));
611
TRACE(("TraceScreen %d is nil\n", whichBuf));
507
616
TraceFocus(Widget w, XEvent * ev)
515
624
XFocusChangeEvent *event = (XFocusChangeEvent *) ev;
516
625
TRACE(("\tdetail: %s\n", visibleNotifyDetail(event->detail)));
517
TRACE(("\tmode: %d\n", event->mode));
626
TRACE(("\tmode: %s\n", visibleNotifyMode(event->mode)));
518
627
TRACE(("\twindow: %#lx\n", event->window));
524
633
XCrossingEvent *event = (XCrossingEvent *) ev;
525
634
TRACE(("\tdetail: %s\n", visibleNotifyDetail(event->detail)));
526
TRACE(("\tmode: %d\n", event->mode));
635
TRACE(("\tmode: %s\n", visibleNotifyMode(event->mode)));
527
636
TRACE(("\twindow: %#lx\n", event->window));
528
637
TRACE(("\tfocus: %d\n", event->focus));
529
638
TRACE(("\troot: %#lx\n", event->root));
663
no_error(Display * dpy GCC_UNUSED, XErrorEvent * event GCC_UNUSED)
772
no_error(Display *dpy GCC_UNUSED, XErrorEvent * event GCC_UNUSED)
778
ModifierName(unsigned modifier)
781
if (modifier & ShiftMask)
783
else if (modifier & LockMask)
785
else if (modifier & ControlMask)
787
else if (modifier & Mod1Mask)
789
else if (modifier & Mod2Mask)
791
else if (modifier & Mod3Mask)
793
else if (modifier & Mod4Mask)
795
else if (modifier & Mod5Mask)
669
801
TraceTranslations(const char *name, Widget w)