Update to xterm 271. Tested by shadchin@ and ajacoutot@
This commit is contained in:
parent
3e2ff7b40f
commit
80d4fad9d4
@ -1,4 +1,4 @@
|
||||
-- $XTermId: INSTALL,v 1.124 2011/04/22 09:30:55 tom Exp $
|
||||
-- $XTermId: INSTALL,v 1.125 2011/07/07 01:01:14 tom Exp $
|
||||
-------------------------------------------------------------------------------
|
||||
-- Copyright 1997-2010,2011 by Thomas E. Dickey
|
||||
--
|
||||
@ -499,6 +499,11 @@ The options (in alphabetic order):
|
||||
|
||||
Look for, compile and link with the Xaw Plus widget library.
|
||||
|
||||
--with-app-class=XXX X resource class (default: XTerm)
|
||||
|
||||
Rename the X resource class, e.g., for packaging a development version
|
||||
of xterm with different result names.
|
||||
|
||||
--with-app-defaults=DIR directory in which to install resource files (default: EPREFIX/lib/X11/app-defaults)
|
||||
|
||||
autoconf scripts assume that all of the files should be installed
|
||||
|
@ -1,4 +1,4 @@
|
||||
XCOMM $XTermId: Imakefile,v 1.103 2011/02/19 13:09:15 tom Exp $
|
||||
XCOMM $XTermId: Imakefile,v 1.104 2011/07/02 00:48:49 tom Exp $
|
||||
XCOMM
|
||||
XCOMM Attention xterm porters
|
||||
XCOMM
|
||||
@ -143,11 +143,14 @@ module.o: ; $(CC) -c defines $(CFLAGS) module.c
|
||||
OSMINORVERSION = OSMinorVersion
|
||||
|
||||
#if defined(NTOArchitecture) || \
|
||||
defined(LinuxArchitecture) || \
|
||||
defined(OpenBSDArchitecture) || \
|
||||
defined(SGIArchitecture) || \
|
||||
defined(SunArchitecture)
|
||||
TERMCAPDEFINES=-DUSE_TERMINFO -DHAVE_TIGETSTR
|
||||
#elif defined(LinuxArchitecture)
|
||||
# if LinuxUsesNcurses
|
||||
TERMCAPDEFINES=-DUSE_TERMINFO -DHAVE_TIGETSTR
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if !defined(OS2Architecture) && !defined(__GNU__)
|
||||
|
@ -1,4 +1,4 @@
|
||||
MANIFEST for xterm-270, version xterm-270
|
||||
MANIFEST for xterm-271, version xterm-271
|
||||
--------------------------------------------------------------------------------
|
||||
MANIFEST this file
|
||||
256colres.h resource-definitions for 256-color mode
|
||||
@ -155,6 +155,7 @@ vttests/88colors2.pl sample script showing 88-colors
|
||||
vttests/8colors.sh test-script to illustrate 8-colors
|
||||
vttests/acolors.sh demonstrate changing the ANSI colors
|
||||
vttests/doublechars.sh test script to demonstrate doublesize chars
|
||||
vttests/dynamic.pl demo for dynamic colors
|
||||
vttests/dynamic.sh script to illustrate the dynamic colors control sequence
|
||||
vttests/dynamic2.sh complete example of dynamic colors
|
||||
vttests/fonts.sh script to demonstrate font-switching sequences
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: Tekproc.c,v 1.188 2011/02/20 00:55:33 tom Exp $ */
|
||||
/* $XTermId: Tekproc.c,v 1.189 2011/07/10 22:19:32 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 2001-2010,2011 by Thomas E. Dickey
|
||||
@ -1897,7 +1897,7 @@ TekCopy(TekWidget tw)
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
TekLink *Tp;
|
||||
char buf[32];
|
||||
char buf[TIMESTAMP_LEN + 10];
|
||||
char initbuf[5];
|
||||
int tekcopyfd;
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
! $XTermId: XTerm.ad,v 1.96 2011/04/22 22:48:00 tom Exp $
|
||||
! $XTermId: XTerm.ad,v 1.97 2011/07/11 10:52:16 tom Exp $
|
||||
! -----------------------------------------------------------------------------
|
||||
! this file is part of xterm
|
||||
!
|
||||
@ -49,6 +49,8 @@
|
||||
*mainMenu*allowsends*Label: Allow SendEvents
|
||||
*mainMenu*redraw*Label: Redraw Window
|
||||
*mainMenu*logging*Label: Log to File
|
||||
*mainMenu*print-immediate*Label: Print-All Immediately
|
||||
*mainMenu*print-on-error*Label: Print-All on Error
|
||||
*mainMenu*print*Label: Print Window
|
||||
*mainMenu*print-redir*Label: Redirect to Printer
|
||||
*mainMenu*8-bit control*Label: 8-Bit Controls
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: button.c,v 1.397 2011/02/13 20:09:31 tom Exp $ */
|
||||
/* $XTermId: button.c,v 1.398 2011/07/04 21:49:39 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2010,2011 by Thomas E. Dickey
|
||||
@ -1407,13 +1407,15 @@ allocUtf8Targets(Widget w, TScreen * screen)
|
||||
} else {
|
||||
int n = 0;
|
||||
|
||||
result[n++] = XA_UTF8_STRING(XtDisplay(w));
|
||||
if (XSupportsLocale()) {
|
||||
result[n++] = XA_UTF8_STRING(XtDisplay(w));
|
||||
#ifdef X_HAVE_UTF8_STRING
|
||||
if (screen->i18nSelections) {
|
||||
result[n++] = XA_TEXT(XtDisplay(w));
|
||||
result[n++] = XA_COMPOUND_TEXT(XtDisplay(w));
|
||||
}
|
||||
if (screen->i18nSelections) {
|
||||
result[n++] = XA_TEXT(XtDisplay(w));
|
||||
result[n++] = XA_COMPOUND_TEXT(XtDisplay(w));
|
||||
}
|
||||
#endif
|
||||
}
|
||||
result[n++] = XA_STRING;
|
||||
result[n] = None;
|
||||
}
|
||||
@ -1441,12 +1443,14 @@ alloc8bitTargets(Widget w, TScreen * screen)
|
||||
} else {
|
||||
int n = 0;
|
||||
|
||||
if (XSupportsLocale()) {
|
||||
#ifdef X_HAVE_UTF8_STRING
|
||||
result[n++] = XA_UTF8_STRING(XtDisplay(w));
|
||||
result[n++] = XA_UTF8_STRING(XtDisplay(w));
|
||||
#endif
|
||||
if (screen->i18nSelections) {
|
||||
result[n++] = XA_TEXT(XtDisplay(w));
|
||||
result[n++] = XA_COMPOUND_TEXT(XtDisplay(w));
|
||||
if (screen->i18nSelections) {
|
||||
result[n++] = XA_TEXT(XtDisplay(w));
|
||||
result[n++] = XA_COMPOUND_TEXT(XtDisplay(w));
|
||||
}
|
||||
}
|
||||
result[n++] = XA_STRING;
|
||||
result[n] = None;
|
||||
@ -1931,7 +1935,7 @@ SelectionReceived(Widget w,
|
||||
text_prop.nitems));
|
||||
|
||||
#if OPT_WIDE_CHARS
|
||||
if (screen->wide_chars) {
|
||||
if (XSupportsLocale() && screen->wide_chars) {
|
||||
if (*type == XA_UTF8_STRING(dpy) ||
|
||||
*type == XA_STRING ||
|
||||
*type == XA_COMPOUND_TEXT(dpy)) {
|
||||
@ -1939,7 +1943,7 @@ SelectionReceived(Widget w,
|
||||
if (Xutf8TextPropertyToTextList(dpy, &text_prop,
|
||||
&text_list,
|
||||
&text_list_count) < 0) {
|
||||
TRACE(("Conversion failed\n"));
|
||||
TRACE(("default Xutf8 Conversion failed\n"));
|
||||
text_list = NULL;
|
||||
}
|
||||
}
|
||||
@ -1962,7 +1966,7 @@ SelectionReceived(Widget w,
|
||||
&text_list, &text_list_count);
|
||||
} else
|
||||
#endif
|
||||
if (*type == XA_STRING && screen->brokenSelections) {
|
||||
if (*type == XA_STRING && (!XSupportsLocale() || screen->brokenSelections)) {
|
||||
rc = XTextPropertyToStringList(&text_prop,
|
||||
&text_list, &text_list_count);
|
||||
} else {
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: charproc.c,v 1.1121 2011/04/24 22:57:13 tom Exp $ */
|
||||
/* $XTermId: charproc.c,v 1.1126 2011/07/10 23:19:26 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2010,2011 by Thomas E. Dickey
|
||||
@ -138,6 +138,9 @@ typedef void (*BitFunc) (unsigned * /* p */ ,
|
||||
static IChar doinput(void);
|
||||
static int set_character_class(char * /*s */ );
|
||||
static void FromAlternate(XtermWidget /* xw */ );
|
||||
static void ReallyReset(XtermWidget /* xw */ ,
|
||||
Bool /* full */ ,
|
||||
Bool /* saved */ );
|
||||
static void RequestResize(XtermWidget /* xw */ ,
|
||||
int /* rows */ ,
|
||||
int /* cols */ ,
|
||||
@ -364,6 +367,8 @@ static XtActionsRec actionsList[] = {
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
|
||||
#define SPS screen.printer_state
|
||||
|
||||
static XtResource xterm_resources[] =
|
||||
{
|
||||
Bres(XtNallowSendEvents, XtCAllowSendEvents, screen.allowSendEvent0, False),
|
||||
@ -411,10 +416,10 @@ static XtResource xterm_resources[] =
|
||||
Bres(XtNmultiScroll, XtCMultiScroll, screen.multiscroll, False),
|
||||
Bres(XtNoldXtermFKeys, XtCOldXtermFKeys, screen.old_fkeys, False),
|
||||
Bres(XtNpopOnBell, XtCPopOnBell, screen.poponbell, False),
|
||||
Bres(XtNprinterAutoClose, XtCPrinterAutoClose, screen.printer_autoclose, False),
|
||||
Bres(XtNprinterExtent, XtCPrinterExtent, screen.printer_extent, False),
|
||||
Bres(XtNprinterFormFeed, XtCPrinterFormFeed, screen.printer_formfeed, False),
|
||||
Bres(XtNprinterNewLine, XtCPrinterNewLine, screen.printer_newline, True),
|
||||
Bres(XtNprinterAutoClose, XtCPrinterAutoClose, SPS.printer_autoclose, False),
|
||||
Bres(XtNprinterExtent, XtCPrinterExtent, SPS.printer_extent, False),
|
||||
Bres(XtNprinterFormFeed, XtCPrinterFormFeed, SPS.printer_formfeed, False),
|
||||
Bres(XtNprinterNewLine, XtCPrinterNewLine, SPS.printer_newline, True),
|
||||
Bres(XtNquietGrab, XtCQuietGrab, screen.quiet_grab, False),
|
||||
Bres(XtNreverseVideo, XtCReverseVideo, misc.re_verse, False),
|
||||
Bres(XtNreverseWrap, XtCReverseWrap, misc.reverseWrap, False),
|
||||
@ -438,7 +443,7 @@ static XtResource xterm_resources[] =
|
||||
Ires(XtNnMarginBell, XtCColumn, screen.nmarginbell, N_MARGINBELL),
|
||||
Ires(XtNpointerMode, XtCPointerMode, screen.pointer_mode, DEF_POINTER_MODE),
|
||||
Ires(XtNprinterControlMode, XtCPrinterControlMode,
|
||||
screen.printer_controlmode, 0),
|
||||
SPS.printer_controlmode, 0),
|
||||
Ires(XtNtitleModes, XtCTitleModes, screen.title_modes, DEF_TITLE_MODES),
|
||||
Ires(XtNvisualBellDelay, XtCVisualBellDelay, screen.visualBellDelay, 100),
|
||||
Ires(XtNsaveLines, XtCSaveLines, screen.savelines, SAVELINES),
|
||||
@ -471,7 +476,7 @@ static XtResource xterm_resources[] =
|
||||
Sres(XtNfont, XtCFont, misc.default_font.f_n, DEFFONT),
|
||||
Sres(XtNgeometry, XtCGeometry, misc.geo_metry, NULL),
|
||||
Sres(XtNkeyboardDialect, XtCKeyboardDialect, screen.keyboard_dialect, DFT_KBD_DIALECT),
|
||||
Sres(XtNprinterCommand, XtCPrinterCommand, screen.printer_command, ""),
|
||||
Sres(XtNprinterCommand, XtCPrinterCommand, SPS.printer_command, ""),
|
||||
Sres(XtNtekGeometry, XtCGeometry, misc.T_geometry, NULL),
|
||||
|
||||
Tres(XtNcursorColor, XtCCursorColor, TEXT_CURSOR, XtDefaultForeground),
|
||||
@ -526,7 +531,7 @@ static XtResource xterm_resources[] =
|
||||
#endif
|
||||
|
||||
#if OPT_BROKEN_ST
|
||||
Bres(XtNbrokenStringTerm, XtCBrokenStringTerm, screen.brokenStringTerm, True),
|
||||
Bres(XtNbrokenStringTerm, XtCBrokenStringTerm, screen.brokenStringTerm, False),
|
||||
#endif
|
||||
|
||||
#if OPT_C1_PRINT
|
||||
@ -626,7 +631,7 @@ static XtResource xterm_resources[] =
|
||||
#endif
|
||||
|
||||
#if OPT_PRINT_COLORS
|
||||
Ires(XtNprintAttributes, XtCPrintAttributes, screen.print_attributes, 1),
|
||||
Ires(XtNprintAttributes, XtCPrintAttributes, SPS.print_attributes, 1),
|
||||
#endif
|
||||
|
||||
#if OPT_SHIFT_FONTS
|
||||
@ -1324,6 +1329,20 @@ illegal_parse(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
Bell(xw, XkbBI_MinorError, 0);
|
||||
}
|
||||
|
||||
static void
|
||||
init_parser(XtermWidget xw, struct ParseState *sp)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
memset(sp, 0, sizeof(*sp));
|
||||
sp->scssize = 94; /* number of printable/nonspace ASCII */
|
||||
sp->lastchar = -1; /* not a legal IChar */
|
||||
sp->nextstate = -1; /* not a legal state */
|
||||
|
||||
init_groundtable(screen, sp);
|
||||
ResetState(sp);
|
||||
}
|
||||
|
||||
static Boolean
|
||||
doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
{
|
||||
@ -1384,7 +1403,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
#endif
|
||||
|
||||
/* Intercept characters for printer controller mode */
|
||||
if (screen->printer_controlmode == 2) {
|
||||
if (PrinterOf(screen).printer_controlmode == 2) {
|
||||
if ((c = (unsigned) xtermPrinterControl(xw, (int) c)) == 0)
|
||||
continue;
|
||||
}
|
||||
@ -2621,7 +2640,8 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
* reset (RIS). VT220 manual states that it is a soft reset.
|
||||
* Perhaps both are right (unlikely). Kermit says it's soft.
|
||||
*/
|
||||
VTReset(xw, False, False);
|
||||
ReallyReset(xw, False, False);
|
||||
init_parser(xw, sp);
|
||||
screen->vtXX_level = param[0] - 60;
|
||||
if (param[0] > 61) {
|
||||
switch (zero_if_default(1)) {
|
||||
@ -3256,18 +3276,9 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
static void
|
||||
VTparse(XtermWidget xw)
|
||||
{
|
||||
TScreen *screen;
|
||||
|
||||
/* We longjmp back to this point in VTReset() */
|
||||
(void) setjmp(vtjmpbuf);
|
||||
screen = TScreenOf(xw);
|
||||
memset(&myState, 0, sizeof(myState));
|
||||
myState.scssize = 94; /* number of printable/nonspace ASCII */
|
||||
myState.lastchar = -1; /* not a legal IChar */
|
||||
myState.nextstate = -1; /* not a legal state */
|
||||
|
||||
init_groundtable(screen, &myState);
|
||||
myState.parsestate = myState.groundtable;
|
||||
init_parser(xw, &myState);
|
||||
|
||||
do {
|
||||
} while (doparsing(xw, doinput(), &myState));
|
||||
@ -3446,6 +3457,28 @@ v_write(int f, const Char * data, unsigned len)
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
updateCursor(TScreen * screen)
|
||||
{
|
||||
if (screen->cursor_set != screen->cursor_state) {
|
||||
if (screen->cursor_set)
|
||||
ShowCursor();
|
||||
else
|
||||
HideCursor();
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
reallyStopBlinking(TScreen * screen)
|
||||
{
|
||||
if (screen->cursor_state == BLINKED_OFF) {
|
||||
/* force cursor to display if it is enabled */
|
||||
screen->cursor_state = !screen->cursor_set;
|
||||
updateCursor(screen);
|
||||
xevents();
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef VMS
|
||||
#define ptymask() (v_bufptr > v_bufstr ? pty_mask : 0)
|
||||
|
||||
@ -3509,11 +3542,8 @@ in_put(XtermWidget xw)
|
||||
#if OPT_INPUT_METHOD
|
||||
PreeditPosition(screen);
|
||||
#endif
|
||||
} else if (screen->cursor_set != screen->cursor_state) {
|
||||
if (screen->cursor_set)
|
||||
ShowCursor();
|
||||
else
|
||||
HideCursor();
|
||||
} else {
|
||||
updateCursor(screen);
|
||||
}
|
||||
|
||||
if (QLength(screen->display)) {
|
||||
@ -3613,11 +3643,8 @@ in_put(XtermWidget xw)
|
||||
#if OPT_INPUT_METHOD
|
||||
PreeditPosition(screen);
|
||||
#endif
|
||||
} else if (screen->cursor_set != screen->cursor_state) {
|
||||
if (screen->cursor_set)
|
||||
ShowCursor();
|
||||
else
|
||||
HideCursor();
|
||||
} else {
|
||||
updateCursor(screen);
|
||||
}
|
||||
|
||||
XFlush(screen->display); /* always flush writes before waiting */
|
||||
@ -4020,7 +4047,9 @@ SetCursorBlink(TScreen * screen, Bool enable)
|
||||
StartBlinking(screen);
|
||||
} else {
|
||||
/* EMPTY */
|
||||
#if !OPT_BLINK_TEXT
|
||||
#if OPT_BLINK_TEXT
|
||||
reallyStopBlinking(screen);
|
||||
#else
|
||||
StopBlinking(screen);
|
||||
#endif
|
||||
}
|
||||
@ -4191,10 +4220,10 @@ dpmodes(XtermWidget xw, BitFunc func)
|
||||
break;
|
||||
#endif
|
||||
case 18: /* DECPFF: print form feed */
|
||||
set_bool_mode(screen->printer_formfeed);
|
||||
set_bool_mode(PrinterOf(screen).printer_formfeed);
|
||||
break;
|
||||
case 19: /* DECPEX: print extent */
|
||||
set_bool_mode(screen->printer_extent);
|
||||
set_bool_mode(PrinterOf(screen).printer_extent);
|
||||
break;
|
||||
case 25: /* DECTCEM: Show/hide cursor (VT200) */
|
||||
set_bool_mode(screen->cursor_set);
|
||||
@ -4485,10 +4514,10 @@ savemodes(XtermWidget xw)
|
||||
break;
|
||||
#endif
|
||||
case 18: /* DECPFF: print form feed */
|
||||
DoSM(DP_PRN_FORMFEED, screen->printer_formfeed);
|
||||
DoSM(DP_PRN_FORMFEED, PrinterOf(screen).printer_formfeed);
|
||||
break;
|
||||
case 19: /* DECPEX: print extent */
|
||||
DoSM(DP_PRN_EXTENT, screen->printer_extent);
|
||||
DoSM(DP_PRN_EXTENT, PrinterOf(screen).printer_extent);
|
||||
break;
|
||||
case 25: /* DECTCEM: Show/hide cursor (VT200) */
|
||||
DoSM(DP_CRS_VISIBLE, screen->cursor_set);
|
||||
@ -4638,10 +4667,10 @@ restoremodes(XtermWidget xw)
|
||||
break;
|
||||
#endif
|
||||
case 18: /* DECPFF: print form feed */
|
||||
DoRM(DP_PRN_FORMFEED, screen->printer_formfeed);
|
||||
DoRM(DP_PRN_FORMFEED, PrinterOf(screen).printer_formfeed);
|
||||
break;
|
||||
case 19: /* DECPEX: print extent */
|
||||
DoRM(DP_PRN_EXTENT, screen->printer_extent);
|
||||
DoRM(DP_PRN_EXTENT, PrinterOf(screen).printer_extent);
|
||||
break;
|
||||
case 25: /* DECTCEM: Show/hide cursor (VT200) */
|
||||
DoRM(DP_CRS_VISIBLE, screen->cursor_set);
|
||||
@ -6084,14 +6113,20 @@ VTInitialize(Widget wrequest,
|
||||
wnew->dft_foreground = MyBlackPixel(TScreenOf(wnew)->display);
|
||||
wnew->dft_background = MyWhitePixel(TScreenOf(wnew)->display);
|
||||
}
|
||||
|
||||
init_Tres(TEXT_FG);
|
||||
init_Tres(TEXT_BG);
|
||||
|
||||
wnew->old_foreground = T_COLOR(TScreenOf(wnew), TEXT_FG);
|
||||
wnew->old_background = T_COLOR(TScreenOf(wnew), TEXT_BG);
|
||||
|
||||
TRACE(("Color resource initialization:\n"));
|
||||
TRACE((" Default foreground %#lx\n", wnew->dft_foreground));
|
||||
TRACE((" Default background %#lx\n", wnew->dft_background));
|
||||
TRACE((" Screen foreground %#lx\n", T_COLOR(TScreenOf(wnew), TEXT_FG)));
|
||||
TRACE((" Screen background %#lx\n", T_COLOR(TScreenOf(wnew), TEXT_BG)));
|
||||
TRACE((" Default foreground 0x%06lx\n", wnew->dft_foreground));
|
||||
TRACE((" Default background 0x%06lx\n", wnew->dft_background));
|
||||
TRACE((" Screen foreground 0x%06lx\n", T_COLOR(TScreenOf(wnew), TEXT_FG)));
|
||||
TRACE((" Screen background 0x%06lx\n", T_COLOR(TScreenOf(wnew), TEXT_BG)));
|
||||
TRACE((" Actual foreground 0x%06lx\n", wnew->old_foreground));
|
||||
TRACE((" Actual background 0x%06lx\n", wnew->old_background));
|
||||
|
||||
TScreenOf(wnew)->mouse_button = -1;
|
||||
TScreenOf(wnew)->mouse_row = -1;
|
||||
@ -6231,14 +6266,14 @@ VTInitialize(Widget wrequest,
|
||||
|
||||
init_Sres(screen.answer_back);
|
||||
|
||||
init_Sres(screen.printer_command);
|
||||
init_Bres(screen.printer_autoclose);
|
||||
init_Bres(screen.printer_extent);
|
||||
init_Bres(screen.printer_formfeed);
|
||||
init_Bres(screen.printer_newline);
|
||||
init_Ires(screen.printer_controlmode);
|
||||
init_Sres(SPS.printer_command);
|
||||
init_Bres(SPS.printer_autoclose);
|
||||
init_Bres(SPS.printer_extent);
|
||||
init_Bres(SPS.printer_formfeed);
|
||||
init_Bres(SPS.printer_newline);
|
||||
init_Ires(SPS.printer_controlmode);
|
||||
#if OPT_PRINT_COLORS
|
||||
init_Ires(screen.print_attributes);
|
||||
init_Ires(SPS.print_attributes);
|
||||
#endif
|
||||
|
||||
init_Sres(screen.keyboard_dialect);
|
||||
@ -8135,9 +8170,13 @@ StartBlinking(TScreen * screen)
|
||||
static void
|
||||
StopBlinking(TScreen * screen)
|
||||
{
|
||||
if (screen->blink_timer)
|
||||
if (screen->blink_timer) {
|
||||
XtRemoveTimeOut(screen->blink_timer);
|
||||
screen->blink_timer = 0;
|
||||
screen->blink_timer = 0;
|
||||
reallyStopBlinking(screen);
|
||||
} else {
|
||||
screen->blink_timer = 0;
|
||||
}
|
||||
}
|
||||
|
||||
#if OPT_BLINK_TEXT
|
||||
@ -8282,8 +8321,8 @@ RestartBlinking(TScreen * screen GCC_UNUSED)
|
||||
* + the popup menu offers a choice of resetting the savedLines, or not.
|
||||
* (but the control sequence does this anyway).
|
||||
*/
|
||||
void
|
||||
VTReset(XtermWidget xw, Bool full, Bool saved)
|
||||
static void
|
||||
ReallyReset(XtermWidget xw, Bool full, Bool saved)
|
||||
{
|
||||
static char empty[1];
|
||||
|
||||
@ -8414,6 +8453,12 @@ VTReset(XtermWidget xw, Bool full, Bool saved)
|
||||
screen->sc[screen->whichBuf].row =
|
||||
screen->sc[screen->whichBuf].col = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
VTReset(XtermWidget xw, Bool full, Bool saved)
|
||||
{
|
||||
ReallyReset(xw, full, saved);
|
||||
longjmp(vtjmpbuf, 1); /* force ground state in parser */
|
||||
}
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
dnl $XTermId: configure.in,v 1.272 2011/04/22 08:54:15 tom Exp $
|
||||
dnl $XTermId: configure.in,v 1.274 2011/07/07 00:06:11 tom Exp $
|
||||
dnl
|
||||
dnl -----------------------------------------------------------------------------
|
||||
dnl this file is part of xterm
|
||||
@ -115,6 +115,7 @@ CF_POSIX_SAVED_IDS
|
||||
CF_HELP_MESSAGE(Compile/Install Options:)
|
||||
CF_FUNC_TGETENT
|
||||
|
||||
CF_WITH_APP_CLASS(XTerm)
|
||||
CF_WITH_APP_DEFAULTS
|
||||
CF_WITH_ICONDIR
|
||||
CF_DISABLE_DESKTOP(xterm)
|
||||
@ -278,6 +279,18 @@ AC_CHECK_FUNCS(Xutf8LookupString, [],[
|
||||
|
||||
CF_WITH_IMAKE_CFLAGS($(MAIN_DEFINES) $(VENDORMANDEFS))
|
||||
|
||||
# If we have already established that there is a full termcap implementation,
|
||||
# suppress the definitions for terminfo that we make have imported from the
|
||||
# imake-file.
|
||||
if test "x$cf_cv_lib_tgetent" != xno ; then
|
||||
case "$IMAKE_CFLAGS" in
|
||||
*-DUSE_TERMINFO\ -DHAVE_TIGETSTR*)
|
||||
CF_UNDO_CFLAGS(IMAKE_CFLAGS,terminfo,[-DUSE_TERMINFO[[ ]]*-DHAVE_TIGETSTR[[ ]]*])
|
||||
CF_UNDO_CFLAGS(CPPFLAGS,terminfo,[-DUSE_TERMINFO[[ ]]*-DHAVE_TIGETSTR[[ ]]*])
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
|
||||
CF_HELP_MESSAGE(Terminal Configuration:)
|
||||
|
||||
AC_MSG_CHECKING(for default terminal-id)
|
||||
|
@ -1,6 +1,6 @@
|
||||
.\"#! troff -ms $1 -*- Nroff -*-
|
||||
.\" "Xterm Control Sequences" document
|
||||
.\" $XTermId: ctlseqs.ms,v 1.238 2011/02/16 11:57:19 tom Exp $
|
||||
.\" $XTermId: ctlseqs.ms,v 1.242 2011/07/04 22:56:23 tom Exp $
|
||||
.\"
|
||||
.\"
|
||||
.\" Copyright 1996-2010,2011 by Thomas E. Dickey
|
||||
@ -317,7 +317,7 @@ X Consortium (1994)
|
||||
Thomas Dickey
|
||||
.AI
|
||||
XFree86 Project (1996-2006)
|
||||
invisible-island.net (2006-2010)
|
||||
invisible-island.net (2006-2011)
|
||||
.AU
|
||||
.
|
||||
.am BT \" add page numbers after first page
|
||||
@ -759,7 +759,7 @@ The response depends on the \fBdecTerminalID\fP resource setting.
|
||||
\(-> \*(Cs\*?\*1\*;\*2\*c (``VT100 with Advanced Video Option'')
|
||||
\(-> \*(Cs\*?\*1\*;\*0\*c (``VT101 with No Options'')
|
||||
\(-> \*(Cs\*?\*6\*c (``VT102'')
|
||||
\(->\ \*(Cs\*?\*6\*0\*;\*1\*;\*2\*;\*6\*;\*8\*;\*9\*;\*1\*5\*;\*c (``VT220'')
|
||||
\(-> \*(Cs\*?\*6\*0\*;\*1\*;\*2\*;\*6\*;\*8\*;\*9\*;\*1\*5\*;\*c (``VT220'')
|
||||
.br
|
||||
The VT100-style response parameters do not mean anything by themselves.
|
||||
VT220 parameters do, telling the host what features the terminal supports:
|
||||
@ -1429,8 +1429,8 @@ to these codes in an \*(Os\*4 control:
|
||||
\*(Pc = \*2 \(<- resource \fBcolorBL\fP (BLINK).
|
||||
\*(Pc = \*3 \(<- resource \fBcolorRV\fP (REVERSE).
|
||||
.sP
|
||||
The 8 colors (below) which may be set or queried
|
||||
using \*1\*0 through \*1\*7 are
|
||||
The 10 colors (below) which may be set or queried
|
||||
using \*1\*0 through \*1\*9 are
|
||||
denoted \fIdynamic colors\fR, since the corresponding control sequences
|
||||
were the first means for setting \fBxterm\fR's colors dynamically,
|
||||
i.e., after it was started.
|
||||
@ -1487,13 +1487,13 @@ The parameter \*(Pt is parsed as
|
||||
.br
|
||||
\*(Pc\*;\*(Pd
|
||||
.br
|
||||
The first, \*(Pc, may contain any character from the
|
||||
The first, \*(Pc, may contain zero or more characters from the
|
||||
set \*c \*p \*(cs \*0 \*1 \*2 \*3 \*4 \*5 \*6 \*7.
|
||||
It is used to construct a list of selection parameters for
|
||||
clipboard,
|
||||
primary,
|
||||
select,
|
||||
or cut buffers 0 through 8 respectively,
|
||||
or cut buffers 0 through 7 respectively,
|
||||
in the order given.
|
||||
If the parameter is empty, \fIxterm\fP uses \*(cs\*0,
|
||||
to specify the configurable primary/clipboard selection and cut buffer 0.
|
||||
@ -1506,6 +1506,9 @@ which is then available for pasting by other applications.
|
||||
If the second parameter is a \*?,
|
||||
\fIxterm\fP replies to the host with the selection
|
||||
data encoded using the same protocol.
|
||||
.br
|
||||
If the second parameter is neither a base64 string nor \*?,
|
||||
then the selection is cleared.
|
||||
.Ed
|
||||
.sP
|
||||
\*(Ps = \*1\*0\*4 ; \fIc\fP \(-> Reset Color Number \fIc\fP. It is reset to
|
||||
@ -2184,7 +2187,7 @@ Begin 4015 APL mode (ESC Ctrl-N). (This is ignored by \fIxterm\fP).
|
||||
.IP \\*(Es\\*(Si
|
||||
End 4015 APL mode (ESC Ctrl-O). (This is ignored by \fIxterm\fP).
|
||||
.IP \\*(Es\\*(Eb
|
||||
COPY (Save Tektronix Codes to file COPYyyyy-mm-dd.hh:mm:ss).
|
||||
COPY (Save Tektronix Codes to file COPY\fIyyyy-mm-dd.hh:mm:ss\fP).
|
||||
\*(Eb (end transmission block) is the same as Ctrl-W.
|
||||
.IP \\*(Es\\*(Ca
|
||||
Bypass Condition (ESC Ctrl-X).
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
Thomas Dickey
|
||||
XFree86 Project (1996-2006)
|
||||
invisible-island.net (2006-2010)
|
||||
invisible-island.net (2006-2011)
|
||||
|
||||
|
||||
|
||||
@ -879,8 +879,8 @@ OSC Ps ; Pt BEL
|
||||
Pc = 2 <- resource colorBL (BLINK).
|
||||
Pc = 3 <- resource colorRV (REVERSE).
|
||||
|
||||
The 8 colors (below) which may be set or queried using 1 0
|
||||
through 1 7 are denoted dynamic colors, since the correspond-
|
||||
The 10 colors (below) which may be set or queried using 1 0
|
||||
through 1 9 are denoted dynamic colors, since the correspond-
|
||||
ing control sequences were the first means for setting xterm's
|
||||
colors dynamically, i.e., after it was started. They are not
|
||||
the same as the ANSI colors. These controls may be disabled
|
||||
@ -931,18 +931,20 @@ OSC Ps ; Pt BEL
|
||||
be disabled using the allowWindowOps resource. The parameter
|
||||
Pt is parsed as
|
||||
Pc; Pd
|
||||
The first, Pc, may contain any character from the set c p s
|
||||
0 1 2 3 4 5 6 7 . It is used to construct a list of
|
||||
selection parameters for clipboard, primary, select, or cut
|
||||
buffers 0 through 8 respectively, in the order given. If the
|
||||
parameter is empty, xterm uses s 0 , to specify the config-
|
||||
urable primary/clipboard selection and cut buffer 0.
|
||||
The first, Pc, may contain zero or more characters from the
|
||||
set c p s 0 1 2 3 4 5 6 7 . It is used to construct
|
||||
a list of selection parameters for clipboard, primary, select,
|
||||
or cut buffers 0 through 7 respectively, in the order given.
|
||||
If the parameter is empty, xterm uses s 0 , to specify the
|
||||
configurable primary/clipboard selection and cut buffer 0.
|
||||
The second parameter, Pd, gives the selection data. Normally
|
||||
this is a string encoded in base64. The data becomes the new
|
||||
selection, which is then available for pasting by other appli-
|
||||
cations.
|
||||
If the second parameter is a ? , xterm replies to the host
|
||||
with the selection data encoded using the same protocol.
|
||||
If the second parameter is neither a base64 string nor ? ,
|
||||
then the selection is cleared.
|
||||
|
||||
Ps = 1 0 4 ; c -> Reset Color Number c. It is reset to the
|
||||
color specified by the corresponding X resource. Any number
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: data.h,v 1.117 2011/04/17 19:21:11 tom Exp $ */
|
||||
/* $XTermId: data.h,v 1.119 2011/07/12 08:37:24 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 2002-2009,2011 by Thomas E. Dickey
|
||||
@ -162,7 +162,11 @@ typedef struct XTERM_RESOURCE {
|
||||
String keyboardType;
|
||||
|
||||
#if OPT_PRINT_ON_EXIT
|
||||
int printModeNow;
|
||||
int printModeOnXError;
|
||||
int printOptsNow;
|
||||
int printOptsOnXError;
|
||||
String printFileNow;
|
||||
String printFileOnXError;
|
||||
#endif
|
||||
#if OPT_SUNPC_KBD
|
||||
|
@ -1,5 +1,5 @@
|
||||
#!/bin/sh
|
||||
# $XTermId: df-install.in,v 1.4 2011/04/22 20:43:06 tom Exp $
|
||||
# $XTermId: df-install.in,v 1.5 2011/07/07 09:41:14 tom Exp $
|
||||
# -----------------------------------------------------------------------------
|
||||
# this file is part of xterm
|
||||
#
|
||||
@ -37,9 +37,14 @@
|
||||
#
|
||||
# Parameters are passed to the desktop-file-install program. The last
|
||||
# parameter is the name of the ".desktop" file to install.
|
||||
CATEGORY="@DESKTOP_CATEGORY@"
|
||||
OPTS=
|
||||
|
||||
if test $# != 0
|
||||
then
|
||||
APP_NAME=$1
|
||||
shift 1
|
||||
fi
|
||||
|
||||
CDPATH=:
|
||||
export CDPATH
|
||||
|
||||
@ -75,14 +80,13 @@ then
|
||||
fi
|
||||
|
||||
NEW_FILE=`basename $OLD_FILE`
|
||||
sed -e '/^Category=/s%=.*%@DESKTOP_CATEGORY@%' $OLD_FILE >$MY_TEMP/$NEW_FILE
|
||||
sed \
|
||||
-e '/^[^#]/s%xterm%'$APP_NAME'%g' \
|
||||
-e '/^[^#]/s%XTerm%@APP_CLASS@%g' \
|
||||
-e '/^Category=/s%=.*%@DESKTOP_CATEGORY@%' \
|
||||
$OLD_FILE >$MY_TEMP/$NEW_FILE
|
||||
cd $MY_TEMP
|
||||
|
||||
if ! cmp -s $OLD_FILE $NEW_FILE
|
||||
then
|
||||
echo "** customizing desktop category"
|
||||
diff $OLD_FILE $NEW_FILE
|
||||
fi
|
||||
desktop-file-install $OPTS $NEW_FILE
|
||||
|
||||
cd ..
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: fontutils.c,v 1.358 2011/04/24 22:58:56 tom Exp $ */
|
||||
/* $XTermId: fontutils.c,v 1.360 2011/07/13 09:54:49 tom Exp $ */
|
||||
|
||||
/************************************************************
|
||||
|
||||
@ -976,7 +976,7 @@ xtermLoadFont(XtermWidget xw,
|
||||
|
||||
if (check_fontname(myfonts.f_w)) {
|
||||
cache_menu_font_name(screen, fontnum, fWide, myfonts.f_w);
|
||||
} else if (!is_double_width_font(fnts[fNorm].fs)) {
|
||||
} else if (screen->utf8_fonts && !is_double_width_font(fnts[fNorm].fs)) {
|
||||
fp = get_font_name_props(screen->display, fnts[fNorm].fs, normal);
|
||||
if (fp != 0) {
|
||||
myfonts.f_w = wide_font_name(fp);
|
||||
@ -1005,17 +1005,32 @@ xtermLoadFont(XtermWidget xw,
|
||||
|
||||
if (check_fontname(myfonts.f_wb)) {
|
||||
|
||||
xtermOpenFont(xw, myfonts.f_wb, &fnts[fWBold], warn[fWBold], False);
|
||||
xtermOpenFont(xw,
|
||||
myfonts.f_wb,
|
||||
&fnts[fWBold],
|
||||
(screen->utf8_fonts
|
||||
? warn[fWBold]
|
||||
: (xw->misc.fontWarnings + 1)),
|
||||
False);
|
||||
|
||||
if (derived
|
||||
&& !compatibleWideCounts(fnts[fWide].fs, fnts[fWBold].fs)) {
|
||||
xtermCloseFont(xw, &fnts[fWBold]);
|
||||
}
|
||||
if (fnts[fWBold].fs == 0) {
|
||||
myfonts.f_wb = myfonts.f_w;
|
||||
warn[fWBold] = fwAlways;
|
||||
xtermCopyFontInfo(&fnts[fWBold], &fnts[fWide]);
|
||||
TRACE(("...cannot load wide-bold, use wide %s\n", NonNull(myfonts.f_w)));
|
||||
if (IsEmpty(myfonts.f_w)) {
|
||||
myfonts.f_wb = myfonts.f_b;
|
||||
warn[fWBold] = fwAlways;
|
||||
xtermCopyFontInfo(&fnts[fWBold], &fnts[fBold]);
|
||||
TRACE(("...cannot load wide-bold, use bold %s\n",
|
||||
NonNull(myfonts.f_b)));
|
||||
} else {
|
||||
myfonts.f_wb = myfonts.f_w;
|
||||
warn[fWBold] = fwAlways;
|
||||
xtermCopyFontInfo(&fnts[fWBold], &fnts[fWide]);
|
||||
TRACE(("...cannot load wide-bold, use wide %s\n",
|
||||
NonNull(myfonts.f_w)));
|
||||
}
|
||||
} else {
|
||||
TRACE(("...%s wide/bold %s\n",
|
||||
derived ? "derived" : "given",
|
||||
@ -1251,6 +1266,14 @@ xtermLoadFont(XtermWidget xw,
|
||||
TRACE(("MERGE_SUBFONT " #dst "." #name " found %s\n", NonNull(dst.name))); \
|
||||
}
|
||||
|
||||
#define INFER_SUBFONT(src,dst,name) \
|
||||
if (IsEmpty(dst.name)) { \
|
||||
TRACE(("INFER_SUBFONT " #dst "." #name " will infer\n")); \
|
||||
dst.name = x_strdup(""); \
|
||||
} else { \
|
||||
TRACE(("INFER_SUBFONT " #dst "." #name " found %s\n", NonNull(dst.name))); \
|
||||
}
|
||||
|
||||
#define COPY_MENU_FONTS(src,dst) \
|
||||
TRACE(("COPY_MENU_FONTS " #src " to " #dst "\n")); \
|
||||
for (n = fontMenu_default; n <= fontMenu_lastBuiltin; ++n) { \
|
||||
@ -1372,10 +1395,10 @@ xtermLoadVTFonts(XtermWidget xw, String myName, String myClass)
|
||||
* If a particular resource value was not found, use the original.
|
||||
*/
|
||||
MERGE_SUBFONT(xw->misc, subresourceRec, default_font.f_n);
|
||||
MERGE_SUBFONT(xw->misc, subresourceRec, default_font.f_b);
|
||||
INFER_SUBFONT(xw->misc, subresourceRec, default_font.f_b);
|
||||
#if OPT_WIDE_CHARS
|
||||
MERGE_SUBFONT(xw->misc, subresourceRec, default_font.f_w);
|
||||
MERGE_SUBFONT(xw->misc, subresourceRec, default_font.f_wb);
|
||||
INFER_SUBFONT(xw->misc, subresourceRec, default_font.f_w);
|
||||
INFER_SUBFONT(xw->misc, subresourceRec, default_font.f_wb);
|
||||
#endif
|
||||
for (n = fontMenu_font1; n <= fontMenu_lastBuiltin; ++n)
|
||||
MERGE_SUBFONT(xw->screen, subresourceRec, MenuFontName(n));
|
||||
@ -2227,8 +2250,10 @@ xtermMissingChar(unsigned ch, XTermFonts * font)
|
||||
/*
|
||||
* ...since we'll scale the values anyway.
|
||||
*/
|
||||
#define SCALE_X(n) n = (n * (((int) font_width) - 1)) / (BOX_WIDE-1)
|
||||
#define SCALE_Y(n) n = (n * (((int) font_height) - 1)) / (BOX_HIGH-1)
|
||||
#define SCALED_X(n) ((int)(n) * (((int) font_width) - 1)) / (BOX_WIDE-1)
|
||||
#define SCALED_Y(n) ((int)(n) * (((int) font_height) - 1)) / (BOX_HIGH-1)
|
||||
#define SCALE_X(n) n = SCALED_X(n)
|
||||
#define SCALE_Y(n) n = SCALED_Y(n)
|
||||
|
||||
#define SEG(x0,y0,x1,y1) x0,y0, x1,y1
|
||||
|
||||
@ -2515,10 +2540,10 @@ xtermDrawBoxChar(XtermWidget xw,
|
||||
points[4].y = points[0].y;
|
||||
|
||||
for (n = 0; n < npoints; ++n) {
|
||||
SCALE_X(points[n].x);
|
||||
SCALE_Y(points[n].y);
|
||||
points[n].x += x;
|
||||
points[n].y += y;
|
||||
points[n].x = (short) SCALED_X(points[n].x);
|
||||
points[n].y = (short) SCALED_Y(points[n].y);
|
||||
points[n].x = (short) (points[n].x + x);
|
||||
points[n].y = (short) (points[n].y + y);
|
||||
}
|
||||
|
||||
XFillPolygon(screen->display,
|
||||
@ -2532,7 +2557,7 @@ xtermDrawBoxChar(XtermWidget xw,
|
||||
|
||||
SCALE_X(x_coord);
|
||||
SCALE_Y(y_coord);
|
||||
SCALE_X(width);
|
||||
width = (unsigned) SCALED_X(width);
|
||||
|
||||
XDrawArc(screen->display,
|
||||
VWindow(screen), gc2,
|
||||
@ -2546,7 +2571,7 @@ xtermDrawBoxChar(XtermWidget xw,
|
||||
|
||||
SCALE_X(x_coord);
|
||||
SCALE_Y(y_coord);
|
||||
SCALE_X(width);
|
||||
width = (unsigned) SCALED_X(width);
|
||||
|
||||
XDrawArc(screen->display,
|
||||
VWindow(screen), gc2,
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: main.c,v 1.629 2011/04/22 23:09:15 tom Exp $ */
|
||||
/* $XTermId: main.c,v 1.638 2011/07/14 00:18:58 tom Exp $ */
|
||||
|
||||
/*
|
||||
* W A R N I N G
|
||||
@ -847,7 +847,11 @@ static XtResource application_resources[] =
|
||||
Sres("omitTranslation", "OmitTranslation", omitTranslation, NULL),
|
||||
Sres("keyboardType", "KeyboardType", keyboardType, "unknown"),
|
||||
#if OPT_PRINT_ON_EXIT
|
||||
Ires("printModeImmediate", "PrintModeImmediate", printModeNow, 0),
|
||||
Ires("printOptsImmediate", "PrintOptsImmediate", printOptsNow, 9),
|
||||
Sres("printFileImmediate", "PrintFileImmediate", printFileNow, NULL),
|
||||
Ires("printModeOnXError", "PrintModeOnXError", printModeOnXError, 0),
|
||||
Ires("printOptsOnXError", "PrintOptsOnXError", printOptsOnXError, 9),
|
||||
Sres("printFileOnXError", "PrintFileOnXError", printFileOnXError, NULL),
|
||||
#endif
|
||||
#if OPT_SUNPC_KBD
|
||||
@ -1833,24 +1837,21 @@ main(int argc, char *argv[]ENVP_ARG)
|
||||
if (argc > 1) {
|
||||
int n;
|
||||
size_t unique = 2;
|
||||
Bool quit = True;
|
||||
Bool quit = False;
|
||||
|
||||
for (n = 1; n < argc; n++) {
|
||||
TRACE(("parsing %s\n", argv[n]));
|
||||
if (abbrev(argv[n], "-version", unique)) {
|
||||
Version();
|
||||
quit = True;
|
||||
} else if (abbrev(argv[n], "-help", unique)) {
|
||||
Help();
|
||||
quit = True;
|
||||
} else if (abbrev(argv[n], "-class", (size_t) 3)) {
|
||||
if ((my_class = argv[++n]) == 0) {
|
||||
Help();
|
||||
} else {
|
||||
quit = False;
|
||||
quit = True;
|
||||
}
|
||||
unique = 3;
|
||||
} else {
|
||||
quit = False;
|
||||
unique = 3;
|
||||
}
|
||||
}
|
||||
if (quit)
|
||||
@ -2107,10 +2108,10 @@ main(int argc, char *argv[]ENVP_ARG)
|
||||
switch (argv[0][1]) {
|
||||
case 'h': /* -help */
|
||||
Help();
|
||||
continue;
|
||||
exit(0);
|
||||
case 'v': /* -version */
|
||||
Version();
|
||||
continue;
|
||||
exit(0);
|
||||
case 'C':
|
||||
#if defined(TIOCCONS) || defined(SRIOCSREDIR)
|
||||
#ifndef __sgi
|
||||
@ -2286,11 +2287,11 @@ main(int argc, char *argv[]ENVP_ARG)
|
||||
/* Set up stderr properly. Opening this log file cannot be
|
||||
done securely by a privileged xterm process (although we try),
|
||||
so the debug feature is disabled by default. */
|
||||
char dbglogfile[45];
|
||||
char dbglogfile[TIMESTAMP_LEN + 20];
|
||||
int i = -1;
|
||||
if (debug) {
|
||||
timestamp_filename(dbglogfile, "xterm.debug.log.");
|
||||
if (creat_as(save_ruid, save_rgid, False, dbglogfile, 0666) > 0) {
|
||||
if (creat_as(save_ruid, save_rgid, False, dbglogfile, 0600) > 0) {
|
||||
i = open(dbglogfile, O_WRONLY | O_TRUNC);
|
||||
}
|
||||
}
|
||||
@ -2395,6 +2396,7 @@ main(int argc, char *argv[]ENVP_ARG)
|
||||
}
|
||||
#endif
|
||||
|
||||
TRACE(("checking winToEmbedInto %#lx\n", winToEmbedInto));
|
||||
if (winToEmbedInto != None) {
|
||||
XtRealizeWidget(toplevel);
|
||||
/*
|
||||
@ -2402,6 +2404,9 @@ main(int argc, char *argv[]ENVP_ARG)
|
||||
* winToEmbedInto in order to verify that it exists, but I'm still not
|
||||
* certain what is the best way to do it -GPS
|
||||
*/
|
||||
TRACE(("...reparenting toplevel %#lx into %#lx\n",
|
||||
XtWindow(toplevel),
|
||||
winToEmbedInto));
|
||||
XReparentWindow(XtDisplay(toplevel),
|
||||
XtWindow(toplevel),
|
||||
winToEmbedInto, 0, 0);
|
||||
@ -2947,8 +2952,7 @@ set_owner(char *device, uid_t uid, gid_t gid, mode_t mode)
|
||||
strerror(why));
|
||||
}
|
||||
TRACE(("...chown failed: %s\n", strerror(why)));
|
||||
}
|
||||
if (chmod(device, mode) < 0) {
|
||||
} else if (chmod(device, mode) < 0) {
|
||||
why = errno;
|
||||
if (why != ENOENT) {
|
||||
struct stat sb;
|
||||
@ -4744,6 +4748,7 @@ Exit(int n)
|
||||
*/
|
||||
ttyFlush(screen->respond);
|
||||
|
||||
#ifdef USE_PTY_SEARCH
|
||||
if (am_slave < 0) {
|
||||
TRACE_IDS;
|
||||
/* restore ownership of tty and pty */
|
||||
@ -4752,6 +4757,7 @@ Exit(int n)
|
||||
set_owner(ptydev, 0, 0, 0666U);
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Close after releasing ownership to avoid race condition: other programs
|
||||
@ -4763,30 +4769,7 @@ Exit(int n)
|
||||
CloseLog(xw);
|
||||
#endif
|
||||
|
||||
#if OPT_PRINT_ON_EXIT
|
||||
/*
|
||||
* The user may have requested that the contents of the screen will be
|
||||
* written to a file if an X error occurs.
|
||||
*/
|
||||
if (!IsEmpty(resource.printFileOnXError)) {
|
||||
switch (n) {
|
||||
case ERROR_XERROR:
|
||||
/* FALLTHRU */
|
||||
case ERROR_XIOERROR:
|
||||
/* FALLTHRU */
|
||||
case ERROR_ICEERROR:
|
||||
closePrinter(xw);
|
||||
screen->printToFile = True;
|
||||
screen->printer_command = resource.printFileOnXError;
|
||||
screen->printer_autoclose = True;
|
||||
screen->printer_formfeed = False;
|
||||
screen->printer_newline = True;
|
||||
screen->print_attributes = resource.printModeOnXError;
|
||||
xtermPrintEverything(xw, getPrinterFlags(xw, NULL, 0));
|
||||
break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
xtermPrintOnXError(xw, n);
|
||||
|
||||
#ifdef NO_LEAKS
|
||||
if (n == 0) {
|
||||
|
270
app/xterm/menu.c
270
app/xterm/menu.c
@ -1,4 +1,4 @@
|
||||
/* $XTermId: menu.c,v 1.289 2011/04/24 18:18:30 tom Exp $ */
|
||||
/* $XTermId: menu.c,v 1.295 2011/07/12 10:45:36 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2010,2011 by Thomas E. Dickey
|
||||
@ -215,6 +215,11 @@ static void do_num_lock PROTO_XT_CALLBACK_ARGS;
|
||||
static void do_meta_esc PROTO_XT_CALLBACK_ARGS;
|
||||
#endif
|
||||
|
||||
#if OPT_PRINT_ON_EXIT
|
||||
static void do_write_now PROTO_XT_CALLBACK_ARGS;
|
||||
static void do_write_error PROTO_XT_CALLBACK_ARGS;
|
||||
#endif
|
||||
|
||||
#if OPT_RENDERFONT
|
||||
static void do_font_renderfont PROTO_XT_CALLBACK_ARGS;
|
||||
#endif
|
||||
@ -281,6 +286,10 @@ MenuEntry mainMenuEntries[] = {
|
||||
{ "line1", NULL, NULL },
|
||||
#ifdef ALLOWLOGGING
|
||||
{ "logging", do_logging, NULL },
|
||||
#endif
|
||||
#ifdef OPT_PRINT_ON_EXIT
|
||||
{ "print-immediate", do_write_now, NULL },
|
||||
{ "print-on-error", do_write_error, NULL },
|
||||
#endif
|
||||
{ "print", do_print, NULL },
|
||||
{ "print-redir", do_print_redir, NULL },
|
||||
@ -512,12 +521,90 @@ sizeof_menu(Widget w, MenuIndex num)
|
||||
return select_menu(w, num)->entries;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return an array of flags telling if a given menu item is never going to
|
||||
* be used, so we can reduce the size of menus.
|
||||
*/
|
||||
static Boolean *
|
||||
unusedEntries(XtermWidget xw, MenuIndex num)
|
||||
{
|
||||
static Boolean result[XtNumber(mainMenuEntries)
|
||||
+ XtNumber(vtMenuEntries)
|
||||
+ XtNumber(fontMenuEntries)
|
||||
#if OPT_TEK4014
|
||||
+ XtNumber(tekMenuEntries)
|
||||
#endif
|
||||
];
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
memset(result, 0, sizeof(result));
|
||||
switch (num) {
|
||||
case mainMenu:
|
||||
if (resource.fullscreen > 1) {
|
||||
result[mainMenu_fullscreen] = True;
|
||||
}
|
||||
#if OPT_NUM_LOCK
|
||||
if (!screen->alt_is_not_meta) {
|
||||
result[mainMenu_alt_esc] = True;
|
||||
}
|
||||
#endif
|
||||
if (!xtermHasPrinter(xw)) {
|
||||
result[mainMenu_print] = True;
|
||||
result[mainMenu_print_redir] = True;
|
||||
}
|
||||
if (screen->terminal_id < 200) {
|
||||
result[mainMenu_8bit_ctrl] = True;
|
||||
}
|
||||
#if !defined(SIGTSTP)
|
||||
result[mainMenu_suspend] = True;
|
||||
#endif
|
||||
#if !defined(SIGCONT)
|
||||
result[mainMenu_continue] = True;
|
||||
#endif
|
||||
#ifdef ALLOWLOGGING
|
||||
if (screen->inhibit & I_LOG) {
|
||||
result[mainMenu_logging] = True;
|
||||
}
|
||||
#endif
|
||||
if (screen->inhibit & I_SIGNAL) {
|
||||
int n;
|
||||
for (n = (int) mainMenu_suspend; n <= (int) mainMenu_quit; ++n) {
|
||||
result[n] = True;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case vtMenu:
|
||||
#ifndef NO_ACTIVE_ICON
|
||||
if (!screen->fnt_icon.fs || !screen->iconVwin.window) {
|
||||
result[vtMenu_activeicon] = True;
|
||||
}
|
||||
#endif /* NO_ACTIVE_ICON */
|
||||
#if OPT_TEK4014
|
||||
if (screen->inhibit & I_TEK) {
|
||||
int n;
|
||||
for (n = (int) vtMenu_tekshow; n <= (int) vtMenu_vthide; ++n) {
|
||||
result[n] = True;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case fontMenu:
|
||||
break;
|
||||
#if OPT_TEK4014
|
||||
case tekMenu:
|
||||
break;
|
||||
#endif
|
||||
case noMenu:
|
||||
break;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* create_menu - create a popup shell and stuff the menu into it.
|
||||
*/
|
||||
|
||||
static Widget
|
||||
create_menu(Widget w, XtermWidget xtw, MenuIndex num)
|
||||
create_menu(Widget w, XtermWidget xw, MenuIndex num)
|
||||
{
|
||||
static XtCallbackRec cb[2] =
|
||||
{
|
||||
@ -526,7 +613,7 @@ create_menu(Widget w, XtermWidget xtw, MenuIndex num)
|
||||
static Arg arg =
|
||||
{XtNcallback, (XtArgVal) cb};
|
||||
|
||||
TScreen *screen = TScreenOf(xtw);
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
MenuHeader *data = &menu_names[num];
|
||||
MenuList *list = select_menu(w, num);
|
||||
struct _MenuEntry *entries = data->entry_list;
|
||||
@ -548,8 +635,8 @@ create_menu(Widget w, XtermWidget xtw, MenuIndex num)
|
||||
};
|
||||
|
||||
screen->menu_item_bitmap =
|
||||
XCreateBitmapFromData(XtDisplay(xtw),
|
||||
RootWindowOfScreen(XtScreen(xtw)),
|
||||
XCreateBitmapFromData(XtDisplay(xw),
|
||||
RootWindowOfScreen(XtScreen(xw)),
|
||||
(char *) check_bits, check_width, check_height);
|
||||
}
|
||||
#if !OPT_TOOLBAR
|
||||
@ -560,17 +647,23 @@ create_menu(Widget w, XtermWidget xtw, MenuIndex num)
|
||||
NULL, 0);
|
||||
#endif
|
||||
if (list->w != 0) {
|
||||
list->entries = nentries;
|
||||
Boolean *unused = unusedEntries(xw, num);
|
||||
Cardinal n;
|
||||
|
||||
for (; nentries > 0; nentries--, entries++) {
|
||||
cb[0].callback = (XtCallbackProc) entries->function;
|
||||
cb[0].closure = (caddr_t) entries->name;
|
||||
entries->widget = XtCreateManagedWidget(entries->name,
|
||||
(entries->function
|
||||
? smeBSBObjectClass
|
||||
: smeLineObjectClass),
|
||||
list->w,
|
||||
&arg, (Cardinal) 1);
|
||||
list->entries = 0;
|
||||
|
||||
for (n = 0; n < nentries; ++n) {
|
||||
if (!unused[n]) {
|
||||
cb[0].callback = (XtCallbackProc) entries[n].function;
|
||||
cb[0].closure = (caddr_t) entries[n].name;
|
||||
entries[n].widget = XtCreateManagedWidget(entries[n].name,
|
||||
(entries[n].function
|
||||
? smeBSBObjectClass
|
||||
: smeLineObjectClass),
|
||||
list->w,
|
||||
&arg, (Cardinal) 1);
|
||||
list->entries++;
|
||||
}
|
||||
}
|
||||
}
|
||||
#if !OPT_TOOLBAR
|
||||
@ -654,43 +747,11 @@ domenu(Widget w,
|
||||
update_meta_esc();
|
||||
update_delete_del();
|
||||
update_keyboard_type();
|
||||
#if OPT_NUM_LOCK
|
||||
if (!screen->alt_is_not_meta) {
|
||||
SetItemSensitivity(mainMenuEntries[mainMenu_alt_esc].widget,
|
||||
False);
|
||||
}
|
||||
#ifdef PRINT_ON_EXIT
|
||||
screen->write_error = !IsEmpty(resource.printOnXError);
|
||||
SetItemSensitivity(mainMenuEntries[mainMenu_write_now].widget, False);
|
||||
SetItemSensitivity(mainMenuEntries[mainMenu_write_error].widget, screen->write_error);
|
||||
#endif
|
||||
if (!xtermHasPrinter(xw)) {
|
||||
SetItemSensitivity(mainMenuEntries[mainMenu_print].widget,
|
||||
False);
|
||||
SetItemSensitivity(mainMenuEntries[mainMenu_print_redir].widget,
|
||||
False);
|
||||
}
|
||||
if (screen->terminal_id < 200) {
|
||||
SetItemSensitivity(
|
||||
mainMenuEntries[mainMenu_8bit_ctrl].widget,
|
||||
False);
|
||||
}
|
||||
#if !defined(SIGTSTP)
|
||||
SetItemSensitivity(
|
||||
mainMenuEntries[mainMenu_suspend].widget, False);
|
||||
#endif
|
||||
#if !defined(SIGCONT)
|
||||
SetItemSensitivity(
|
||||
mainMenuEntries[mainMenu_continue].widget, False);
|
||||
#endif
|
||||
#ifdef ALLOWLOGGING
|
||||
if (screen->inhibit & I_LOG) {
|
||||
SetItemSensitivity(
|
||||
mainMenuEntries[mainMenu_logging].widget, False);
|
||||
}
|
||||
#endif
|
||||
if (screen->inhibit & I_SIGNAL) {
|
||||
int n;
|
||||
for (n = (int) mainMenu_suspend; n <= (int) mainMenu_quit; ++n) {
|
||||
SetItemSensitivity(mainMenuEntries[n].widget, False);
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@ -717,21 +778,8 @@ domenu(Widget w,
|
||||
update_altscreen();
|
||||
update_titeInhibit();
|
||||
#ifndef NO_ACTIVE_ICON
|
||||
if (!screen->fnt_icon.fs || !screen->iconVwin.window) {
|
||||
SetItemSensitivity(
|
||||
vtMenuEntries[vtMenu_activeicon].widget,
|
||||
False);
|
||||
} else
|
||||
update_activeicon();
|
||||
update_activeicon();
|
||||
#endif /* NO_ACTIVE_ICON */
|
||||
#if OPT_TEK4014
|
||||
if (screen->inhibit & I_TEK) {
|
||||
int n;
|
||||
for (n = (int) vtMenu_tekshow; n <= (int) vtMenu_vthide; ++n) {
|
||||
SetItemSensitivity(vtMenuEntries[n].widget, False);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
|
||||
@ -834,10 +882,29 @@ HandlePopupMenu(Widget w,
|
||||
{
|
||||
TRACE(("HandlePopupMenu\n"));
|
||||
if (domenu(w, event, params, param_count)) {
|
||||
XtermWidget xw = term;
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
#if OPT_TOOLBAR
|
||||
w = select_menu(w, mainMenu)->w;
|
||||
#endif
|
||||
XtCallActionProc(w, "XawPositionSimpleMenu", event, params, 1);
|
||||
/*
|
||||
* The action procedure in SimpleMenu.c, PositionMenu does not expect a
|
||||
* key translation event when we are popping up a menu. In particular,
|
||||
* if the pointer is outside the menu, then the action procedure will
|
||||
* fail in its attempt to determine the location of the pointer within
|
||||
* the menu. Anticipate that by warping the pointer into the menu when
|
||||
* a key event is detected.
|
||||
*/
|
||||
switch (event->type) {
|
||||
case KeyPress:
|
||||
case KeyRelease:
|
||||
XWarpPointer(screen->display, None, XtWindow(w), 0, 0, 0, 0, 0, 0);
|
||||
break;
|
||||
default:
|
||||
XtCallActionProc(w, "XawPositionSimpleMenu", event, params, 1);
|
||||
break;
|
||||
}
|
||||
XtCallActionProc(w, "MenuPopup", event, params, 1);
|
||||
}
|
||||
}
|
||||
@ -1048,6 +1115,37 @@ do_logging(Widget gw GCC_UNUSED,
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef OPT_PRINT_ON_EXIT
|
||||
static void
|
||||
do_write_now(Widget gw GCC_UNUSED,
|
||||
XtPointer closure GCC_UNUSED,
|
||||
XtPointer data GCC_UNUSED)
|
||||
{
|
||||
XtermWidget xw = term;
|
||||
|
||||
xtermPrintImmediately(xw,
|
||||
(IsEmpty(resource.printFileNow)
|
||||
? "XTerm"
|
||||
: resource.printFileNow),
|
||||
resource.printOptsNow,
|
||||
resource.printModeNow);
|
||||
}
|
||||
|
||||
static void
|
||||
do_write_error(Widget gw GCC_UNUSED,
|
||||
XtPointer closure GCC_UNUSED,
|
||||
XtPointer data GCC_UNUSED)
|
||||
{
|
||||
XtermWidget xw = term;
|
||||
|
||||
if (IsEmpty(resource.printFileOnXError)) {
|
||||
resource.printFileOnXError = "XTermError";
|
||||
}
|
||||
TScreenOf(xw)->write_error = (Boolean) (!TScreenOf(xw)->write_error);
|
||||
update_write_error();
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
do_print(Widget gw GCC_UNUSED,
|
||||
XtPointer closure GCC_UNUSED,
|
||||
@ -1061,7 +1159,10 @@ do_print_redir(Widget gw GCC_UNUSED,
|
||||
XtPointer closure GCC_UNUSED,
|
||||
XtPointer data GCC_UNUSED)
|
||||
{
|
||||
setPrinterControlMode(term, TScreenOf(term)->printer_controlmode ? 0 : 2);
|
||||
setPrinterControlMode(term,
|
||||
(PrinterOf(TScreenOf(term)).printer_controlmode
|
||||
? 0
|
||||
: 2));
|
||||
}
|
||||
|
||||
static void
|
||||
@ -1948,6 +2049,26 @@ HandleLogging(Widget w,
|
||||
}
|
||||
#endif
|
||||
|
||||
#if OPT_PRINT_ON_EXIT
|
||||
void
|
||||
HandleWriteNow(Widget w,
|
||||
XEvent * event GCC_UNUSED,
|
||||
String * params GCC_UNUSED,
|
||||
Cardinal *param_count GCC_UNUSED)
|
||||
{
|
||||
do_write_now(w, 0, 0);
|
||||
}
|
||||
|
||||
void
|
||||
HandleWriteError(Widget w,
|
||||
XEvent * event GCC_UNUSED,
|
||||
String * params,
|
||||
Cardinal *param_count)
|
||||
{
|
||||
HANDLE_VT_TOGGLE(write_error);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* ARGSUSED */
|
||||
void
|
||||
HandlePrintScreen(Widget w GCC_UNUSED,
|
||||
@ -2987,13 +3108,24 @@ update_logging(void)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if OPT_PRINT_ON_EXIT
|
||||
void
|
||||
update_write_error(void)
|
||||
{
|
||||
UpdateCheckbox("update_write_error",
|
||||
mainMenuEntries,
|
||||
mainMenu_write_error,
|
||||
TScreenOf(term)->write_error);
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
update_print_redir(void)
|
||||
{
|
||||
UpdateCheckbox("update_print_redir",
|
||||
mainMenuEntries,
|
||||
mainMenu_print_redir,
|
||||
TScreenOf(term)->printer_controlmode);
|
||||
PrinterOf(TScreenOf(term)).printer_controlmode);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: menu.h,v 1.124 2011/04/23 12:14:21 tom Exp $ */
|
||||
/* $XTermId: menu.h,v 1.125 2011/07/11 09:41:34 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2010,2011 by Thomas E. Dickey
|
||||
@ -138,10 +138,12 @@ extern void HandleTekPage PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleTekReset PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleTiteInhibit PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleToolbar PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleUTF8Mode PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleUTF8Fonts PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleUTF8Mode PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleUTF8Title PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleVisibility PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleWriteError PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleWriteNow PROTO_XT_ACTIONS_ARGS;
|
||||
|
||||
extern void SetupMenus (Widget /*shell*/, Widget */*forms*/, Widget */*menus*/, Dimension * /*menu_high*/);
|
||||
|
||||
@ -170,6 +172,10 @@ typedef enum {
|
||||
mainMenu_line1,
|
||||
#ifdef ALLOWLOGGING
|
||||
mainMenu_logging,
|
||||
#endif
|
||||
#if OPT_PRINT_ON_EXIT
|
||||
mainMenu_write_now,
|
||||
mainMenu_write_error,
|
||||
#endif
|
||||
mainMenu_print,
|
||||
mainMenu_print_redir,
|
||||
@ -358,6 +364,12 @@ extern void update_logging(void);
|
||||
#define update_logging() /*nothing*/
|
||||
#endif
|
||||
|
||||
#if OPT_PRINT_ON_EXIT
|
||||
extern void update_write_error(void);
|
||||
#else
|
||||
#define update_write_error() /*nothing*/
|
||||
#endif
|
||||
|
||||
extern void update_print_redir(void);
|
||||
extern void update_8bit_control(void);
|
||||
extern void update_decbkm(void);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: misc.c,v 1.521 2011/04/17 19:04:06 tom Exp $ */
|
||||
/* $XTermId: misc.c,v 1.530 2011/07/11 00:16:41 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2010,2011 by Thomas E. Dickey
|
||||
@ -1495,7 +1495,7 @@ open_userfile(uid_t uid, gid_t gid, char *path, Bool append)
|
||||
* 0 otherwise.
|
||||
*/
|
||||
int
|
||||
creat_as(uid_t uid, gid_t gid, Bool append, char *pathname, int mode)
|
||||
creat_as(uid_t uid, gid_t gid, Bool append, char *pathname, unsigned mode)
|
||||
{
|
||||
int fd;
|
||||
pid_t pid;
|
||||
@ -1960,7 +1960,7 @@ AllocateAnsiColor(XtermWidget xw,
|
||||
} else {
|
||||
result = 1;
|
||||
SET_COLOR_RES(res, def.pixel);
|
||||
TRACE(("AllocateAnsiColor[%d] %s (pixel %#lx)\n",
|
||||
TRACE(("AllocateAnsiColor[%d] %s (pixel 0x%06lx)\n",
|
||||
(int) (res - screen->Acolors), spec, def.pixel));
|
||||
#if OPT_COLOR_RES
|
||||
if (!res->mode)
|
||||
@ -2387,7 +2387,7 @@ ReportColorRequest(XtermWidget xw, int ndx, int final)
|
||||
color.red,
|
||||
color.green,
|
||||
color.blue);
|
||||
TRACE(("ReportColors %d: %#lx as %s\n",
|
||||
TRACE(("ReportColorRequest #%d: 0x%06lx as %s\n",
|
||||
ndx, pOldColors->colors[ndx], buffer));
|
||||
unparseputc1(xw, ANSI_OSC);
|
||||
unparseputs(xw, buffer);
|
||||
@ -2735,6 +2735,8 @@ do_osc(XtermWidget xw, Char * oscbuf, size_t len, int final)
|
||||
|
||||
TRACE(("do_osc %s\n", oscbuf));
|
||||
|
||||
(void) screen;
|
||||
|
||||
/*
|
||||
* Lines should be of the form <OSC> number ; string <ST>, however
|
||||
* older xterms can accept <BEL> as a final character. We will respond
|
||||
@ -3284,6 +3286,13 @@ do_dcs(XtermWidget xw, Char * dcsbuf, size_t dcslen)
|
||||
});
|
||||
#endif
|
||||
strcat(reply, "m");
|
||||
} else if (!strcmp(cp, " q")) { /* DECSCUSR */
|
||||
int code = 0;
|
||||
if (screen->cursor_underline)
|
||||
code |= 2;
|
||||
if (screen->cursor_blink)
|
||||
code |= 1;
|
||||
sprintf(reply, "%d%s", code + 1, cp);
|
||||
} else
|
||||
okay = False;
|
||||
|
||||
@ -3521,10 +3530,10 @@ do_decrpm(XtermWidget xw, int nparams, int *params)
|
||||
break;
|
||||
#endif
|
||||
case 18: /* DECPFF: print form feed */
|
||||
result = MdBool(screen->printer_formfeed);
|
||||
result = MdBool(PrinterOf(screen).printer_formfeed);
|
||||
break;
|
||||
case 19: /* DECPEX: print extent */
|
||||
result = MdBool(screen->printer_extent);
|
||||
result = MdBool(PrinterOf(screen).printer_extent);
|
||||
break;
|
||||
case 25: /* DECTCEM: Show/hide cursor (VT200) */
|
||||
result = MdBool(screen->cursor_set);
|
||||
@ -3883,7 +3892,7 @@ ChangeTitle(XtermWidget xw, char *name)
|
||||
ChangeGroup(xw, XtNtitle, name);
|
||||
}
|
||||
|
||||
#define Strlen(s) strlen((char *)(s))
|
||||
#define Strlen(s) strlen((const char *)(s))
|
||||
|
||||
void
|
||||
ChangeXprop(char *buf)
|
||||
@ -3966,18 +3975,31 @@ AllocateTermColor(XtermWidget xw,
|
||||
Colormap cmap = xw->core.colormap;
|
||||
char *newName;
|
||||
|
||||
if (XParseColor(screen->display, cmap, name, &def)
|
||||
&& (XAllocColor(screen->display, cmap, &def)
|
||||
|| find_closest_color(screen->display, cmap, &def))
|
||||
result = True;
|
||||
if (!x_strcasecmp(name, XtDefaultForeground)) {
|
||||
def.pixel = xw->old_foreground;
|
||||
} else if (!x_strcasecmp(name, XtDefaultBackground)) {
|
||||
def.pixel = xw->old_background;
|
||||
} else if (XParseColor(screen->display, cmap, name, &def)
|
||||
&& (XAllocColor(screen->display, cmap, &def)
|
||||
|| find_closest_color(screen->display, cmap, &def))) {
|
||||
; /*empty */
|
||||
} else {
|
||||
result = False;
|
||||
}
|
||||
|
||||
if (result
|
||||
&& (newName = x_strdup(name)) != 0) {
|
||||
if (COLOR_DEFINED(pNew, ndx))
|
||||
if (COLOR_DEFINED(pNew, ndx)) {
|
||||
free(pNew->names[ndx]);
|
||||
}
|
||||
SET_COLOR_VALUE(pNew, ndx, def.pixel);
|
||||
SET_COLOR_NAME(pNew, ndx, newName);
|
||||
TRACE(("AllocateTermColor #%d: %s (pixel %#lx)\n", ndx, newName, def.pixel));
|
||||
result = True;
|
||||
TRACE(("AllocateTermColor #%d: %s (pixel 0x%06lx)\n",
|
||||
ndx, newName, def.pixel));
|
||||
} else {
|
||||
TRACE(("AllocateTermColor #%d: %s (failed)\n", ndx, name));
|
||||
result = False;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
@ -4564,7 +4586,7 @@ sortedOpts(OptionHelp * options, XrmOptionDescRec * descs, Cardinal numDescs)
|
||||
/* supply the "turn on/off" strings if needed */
|
||||
#if OPT_TRACE
|
||||
for (j = 0; j < opt_count; j++) {
|
||||
if (!strncmp(opt_array[j].opt, "-/+", 3)) {
|
||||
if (!strncmp(opt_array[j].opt, "-/+", (size_t) 3)) {
|
||||
char temp[80];
|
||||
const char *name = opt_array[j].opt + 3;
|
||||
for (k = 0; k < numDescs; ++k) {
|
||||
@ -4590,7 +4612,7 @@ sortedOpts(OptionHelp * options, XrmOptionDescRec * descs, Cardinal numDescs)
|
||||
mesg = "turn off/on";
|
||||
}
|
||||
if (strncmp(mesg, opt_array[j].desc, strlen(mesg))) {
|
||||
if (strncmp(opt_array[j].desc, "turn ", 5)) {
|
||||
if (strncmp(opt_array[j].desc, "turn ", (size_t) 5)) {
|
||||
char *s = CastMallocN(char,
|
||||
strlen(mesg)
|
||||
+ 1
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: os2main.c,v 1.269 2011/04/23 00:02:03 tom Exp $ */
|
||||
/* $XTermId: os2main.c,v 1.271 2011/07/10 22:19:51 tom Exp $ */
|
||||
|
||||
/* removed all foreign stuff to get the code more clear (hv)
|
||||
* and did some rewrite for the obscure OS/2 environment
|
||||
@ -968,24 +968,21 @@ main(int argc, char **argv ENVP_ARG)
|
||||
if (argc > 1) {
|
||||
int n;
|
||||
size_t unique = 2;
|
||||
Bool quit = True;
|
||||
Bool quit = False;
|
||||
|
||||
for (n = 1; n < argc; n++) {
|
||||
TRACE(("parsing %s\n", argv[n]));
|
||||
if (abbrev(argv[n], "-version", unique)) {
|
||||
Version();
|
||||
quit = True;
|
||||
} else if (abbrev(argv[n], "-help", unique)) {
|
||||
Help();
|
||||
quit = True;
|
||||
} else if (abbrev(argv[n], "-class", (size_t) 3)) {
|
||||
if ((my_class = argv[++n]) == 0) {
|
||||
Help();
|
||||
} else {
|
||||
quit = False;
|
||||
quit = True;
|
||||
}
|
||||
unique = 3;
|
||||
} else {
|
||||
quit = False;
|
||||
unique = 3;
|
||||
}
|
||||
}
|
||||
if (quit)
|
||||
@ -1120,10 +1117,10 @@ main(int argc, char **argv ENVP_ARG)
|
||||
switch (argv[0][1]) {
|
||||
case 'h': /* -help */
|
||||
Help();
|
||||
continue;
|
||||
exit(0);
|
||||
case 'v': /* -version */
|
||||
Version();
|
||||
continue;
|
||||
exit(0);
|
||||
case 'C':
|
||||
{
|
||||
struct stat sbuf;
|
||||
@ -1294,11 +1291,11 @@ main(int argc, char **argv ENVP_ARG)
|
||||
/* Set up stderr properly. Opening this log file cannot be
|
||||
done securely by a privileged xterm process (although we try),
|
||||
so the debug feature is disabled by default. */
|
||||
char dbglogfile[45];
|
||||
char dbglogfile[TIMESTAMP_LEN + 20];
|
||||
int i = -1;
|
||||
if (debug) {
|
||||
timestamp_filename(dbglogfile, "xterm.debug.log.");
|
||||
if (creat_as(save_ruid, save_rgid, False, dbglogfile, 0666) > 0) {
|
||||
if (creat_as(save_ruid, save_rgid, False, dbglogfile, 0600) > 0) {
|
||||
i = open(dbglogfile, O_WRONLY | O_TRUNC);
|
||||
}
|
||||
}
|
||||
@ -1358,6 +1355,7 @@ main(int argc, char **argv ENVP_ARG)
|
||||
}
|
||||
#endif
|
||||
|
||||
TRACE(("checking winToEmbedInto %#lx\n", winToEmbedInto));
|
||||
if (winToEmbedInto != None) {
|
||||
XtRealizeWidget(toplevel);
|
||||
/*
|
||||
@ -1365,6 +1363,9 @@ main(int argc, char **argv ENVP_ARG)
|
||||
* winToEmbedInto in order to verify that it exists, but I'm still not
|
||||
* certain what is the best way to do it -GPS
|
||||
*/
|
||||
TRACE(("...reparenting toplevel %#lx into %#lx\n",
|
||||
XtWindow(toplevel),
|
||||
winToEmbedInto));
|
||||
XReparentWindow(XtDisplay(toplevel),
|
||||
XtWindow(toplevel),
|
||||
winToEmbedInto, 0, 0);
|
||||
|
@ -1,3 +1,9 @@
|
||||
xterm-dev (271) unstable; urgency=low
|
||||
|
||||
* Ubuntu #756273 (accommodate function keys as popup-menu triggers)
|
||||
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 29 Apr 2011 20:30:29 -0400
|
||||
|
||||
xterm-dev (270) unstable; urgency=low
|
||||
|
||||
* more fixes for fullscreen toggle.
|
||||
|
@ -18,4 +18,6 @@ Description: X terminal emulator (development version)
|
||||
implements ISO/ANSI colors, Unicode, and most of the control sequences
|
||||
used by DEC VT220 terminals.
|
||||
.
|
||||
This package contains a development version of xterm.
|
||||
This package contains a development version of xterm. It is
|
||||
configured to use "xterm-dev" and "XTermDev" for the program
|
||||
and its resource class, to avoid conflict with other packages.
|
||||
|
@ -14,6 +14,7 @@ DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
|
||||
DESKTOP_VENDOR = dickey
|
||||
|
||||
PKG_SUFFIX = -dev
|
||||
PKG_CLASS = XTermDev
|
||||
|
||||
PACKAGE := $(shell dpkg-parsechangelog| \
|
||||
sed -n 's/^Source: \(.*\)$$/\1/p')
|
||||
@ -55,6 +56,7 @@ configure-stamp:
|
||||
--sysconfdir=/etc/$(PACKAGE) \
|
||||
--localstatedir=/var \
|
||||
--libdir=/etc/$(PACKAGE) \
|
||||
--with-app-class=$(PKG_CLASS) \
|
||||
--without-xterm-symlink \
|
||||
--enable-256-color \
|
||||
--enable-88-color \
|
||||
@ -148,13 +150,6 @@ binary-indep: build install
|
||||
|
||||
# The Debian package does not install desktop files.
|
||||
# http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=486317
|
||||
$(SHELL) -c 'for p in *.desktop;do \
|
||||
sed -i \
|
||||
-e "s/Categories=System;/Categories=Application;Utility;/" \
|
||||
-e "s/^\\(Name=.*\\)/\\1$(PKG_SUFFIX)/" \
|
||||
-e "s/^\\(Exec=.*\\)/\\1$(PKG_SUFFIX)/" \
|
||||
$$p; done'
|
||||
|
||||
$(MAKE) install-desktop \
|
||||
DESKTOP_FLAGS="--vendor='$(DESKTOP_VENDOR)' --dir $(MY_DESKTOP)"
|
||||
|
||||
|
@ -1,11 +1,11 @@
|
||||
# $XTermId: xterm.spec,v 1.9 2011/03/20 18:53:25 tom Exp $
|
||||
# $XTermId: xterm.spec,v 1.13 2011/07/14 22:15:37 tom Exp $
|
||||
Summary: A text-based Web browser
|
||||
Name: xterm
|
||||
Version: dev
|
||||
Release: 270
|
||||
Name: xterm-dev
|
||||
Version: 271
|
||||
Release: 1
|
||||
License: X11
|
||||
Group: Applications/Internet
|
||||
Source: xterm-%{release}.tgz
|
||||
Source: xterm-%{version}.tgz
|
||||
# URL: http://invisible-island.net/xterm/
|
||||
Provides: x-terminal-emulator
|
||||
|
||||
@ -32,9 +32,13 @@ The xterm program uses bitmap images provided by the xbitmaps package.
|
||||
Those interested in using koi8rxterm will likely want to install the
|
||||
xfonts-cyrillic package as well.
|
||||
|
||||
This package is configured to use "xterm-dev" and "XTermDev" for the program
|
||||
and its resource class, to avoid conflict with other packages.
|
||||
|
||||
%prep
|
||||
|
||||
%define my_suffix -dev
|
||||
%define my_class XTermDev
|
||||
|
||||
%define desktop_vendor dickey
|
||||
%define desktop_utils %(if which desktop-file-install 2>&1 >/dev/null ; then echo "yes" ; fi)
|
||||
@ -52,7 +56,7 @@ xfonts-cyrillic package as well.
|
||||
%define _pixmapsdir %{_datadir}/pixmaps
|
||||
%define my_docdir %{_datadir}/doc/xterm%{my_suffix}
|
||||
|
||||
%setup -q -n xterm-%{release}
|
||||
%setup -q -n xterm-%{version}
|
||||
|
||||
%build
|
||||
CPPFLAGS="-DMISC_EXP -DEXP_HTTP_HEADERS" \
|
||||
@ -66,6 +70,7 @@ CPPFLAGS="-DMISC_EXP -DEXP_HTTP_HEADERS" \
|
||||
--program-suffix=%{my_suffix} \
|
||||
--without-xterm-symlink \
|
||||
%endif
|
||||
--with-app-class=%{my_class} \
|
||||
--enable-256-color \
|
||||
--enable-88-color \
|
||||
--enable-dabbrev \
|
||||
@ -125,15 +130,6 @@ make install-bin install-man install-app install-icon \
|
||||
chmod 644 $RPM_BUILD_ROOT%{my_docdir}/vttests/*
|
||||
|
||||
%if "%{desktop_utils}" == "yes"
|
||||
for p in *.desktop
|
||||
do
|
||||
sed -i \
|
||||
-e 's/Categories=System;/Categories=Application;Utility;/' \
|
||||
-e 's/^\\(Name=.*\\)/\\1%{my_suffix}/' \
|
||||
-e 's/^\\(Exec=.*\\)/\\1%{my_suffix}/' \
|
||||
$p
|
||||
done
|
||||
|
||||
make install-desktop \
|
||||
DESKTOP_FLAGS="--vendor='%{desktop_vendor}' --dir $RPM_BUILD_ROOT%{_datadir}/applications"
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: print.c,v 1.123 2011/04/17 19:45:14 tom Exp $ */
|
||||
/* $XTermId: print.c,v 1.138 2011/07/14 23:49:10 tom Exp $ */
|
||||
|
||||
/************************************************************
|
||||
|
||||
@ -39,6 +39,7 @@ authorization.
|
||||
#include <xstrings.h>
|
||||
|
||||
#include <stdio.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
#undef CTRL
|
||||
#define CTRL(c) ((c) & 0x1f)
|
||||
@ -50,9 +51,11 @@ authorization.
|
||||
#define CSET_OUT '0'
|
||||
|
||||
#define isForm(c) ((c) == '\r' || (c) == '\n' || (c) == '\f')
|
||||
#define Strlen(a) strlen((char *)a)
|
||||
#define Strcmp(a,b) strcmp((char *)a,(char *)b)
|
||||
#define Strncmp(a,b,c) strncmp((char *)a,(char *)b,c)
|
||||
#define Strlen(a) strlen((const char *)a)
|
||||
#define Strcmp(a,b) strcmp((const char *)a,(const char *)b)
|
||||
#define Strncmp(a,b,c) strncmp((const char *)a,(const char *)b,c)
|
||||
|
||||
#define SPS PrinterOf(screen)
|
||||
|
||||
#ifdef VMS
|
||||
#define VMS_TEMP_PRINT_FILE "sys$scratch:xterm_print.txt"
|
||||
@ -73,25 +76,20 @@ static void send_SGR(XtermWidget /* xw */ ,
|
||||
static void stringToPrinter(XtermWidget /* xw */ ,
|
||||
const char * /*str */ );
|
||||
|
||||
static FILE *Printer;
|
||||
static pid_t Printer_pid;
|
||||
static int initialized;
|
||||
|
||||
void
|
||||
closePrinter(XtermWidget xw GCC_UNUSED)
|
||||
{
|
||||
if (xtermHasPrinter(xw) != 0) {
|
||||
#ifdef VMS
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
#ifdef VMS
|
||||
char pcommand[256];
|
||||
(void) sprintf(pcommand, "%s %s;",
|
||||
screen->printer_command,
|
||||
SPS.printer_command,
|
||||
VMS_TEMP_PRINT_FILE);
|
||||
#endif
|
||||
|
||||
if (Printer != 0) {
|
||||
fclose(Printer);
|
||||
if (SPS.fp != 0) {
|
||||
fclose(SPS.fp);
|
||||
TRACE(("closed printer, waiting...\n"));
|
||||
#ifdef VMS /* This is a quick hack, really should use
|
||||
spawn and check status or system services
|
||||
@ -101,8 +99,8 @@ closePrinter(XtermWidget xw GCC_UNUSED)
|
||||
while (nonblocking_wait() > 0)
|
||||
#endif /* VMS */
|
||||
;
|
||||
Printer = 0;
|
||||
initialized = 0;
|
||||
SPS.fp = 0;
|
||||
SPS.isOpen = False;
|
||||
TRACE(("closed printer\n"));
|
||||
}
|
||||
}
|
||||
@ -252,26 +250,32 @@ printLine(XtermWidget xw, int row, unsigned chr, PrinterFlags * p)
|
||||
|
||||
#define PrintNewLine() (unsigned) (((top < bot) || p->printer_newline) ? '\n' : '\0')
|
||||
|
||||
static void
|
||||
printLines(XtermWidget xw, int top, int bot, PrinterFlags * p)
|
||||
{
|
||||
TRACE(("printLines, rows %d..%d\n", top, bot));
|
||||
while (top <= bot) {
|
||||
printLine(xw, top, PrintNewLine(), p);
|
||||
++top;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
xtermPrintScreen(XtermWidget xw, Bool use_DECPEX, PrinterFlags * p)
|
||||
{
|
||||
if (XtIsRealized((Widget) xw)) {
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
Bool extent = (use_DECPEX && p->printer_extent);
|
||||
int top = extent ? 0 : screen->top_marg;
|
||||
int bot = extent ? screen->max_row : screen->bot_marg;
|
||||
int was_open = initialized;
|
||||
Boolean was_open = SPS.isOpen;
|
||||
|
||||
TRACE(("xtermPrintScreen, rows %d..%d\n", top, bot));
|
||||
|
||||
while (top <= bot) {
|
||||
printLine(xw, top, PrintNewLine(), p);
|
||||
++top;
|
||||
}
|
||||
printLines(xw,
|
||||
extent ? 0 : screen->top_marg,
|
||||
extent ? screen->max_row : screen->bot_marg,
|
||||
p);
|
||||
if (p->printer_formfeed)
|
||||
charToPrinter(xw, '\f');
|
||||
|
||||
if (!was_open || screen->printer_autoclose) {
|
||||
if (!was_open || SPS.printer_autoclose) {
|
||||
closePrinter(xw);
|
||||
}
|
||||
} else {
|
||||
@ -280,32 +284,59 @@ xtermPrintScreen(XtermWidget xw, Bool use_DECPEX, PrinterFlags * p)
|
||||
}
|
||||
|
||||
/*
|
||||
* If p->print_everything is zero, use this behavior:
|
||||
* If the alternate screen is active, we'll print only that. Otherwise, print
|
||||
* the normal screen plus all scrolled-back lines. The distinction is made
|
||||
* because the normal screen's buffer is part of the overall scrollback buffer.
|
||||
*
|
||||
* Otherwise, decode bits:
|
||||
* 1 = current screen
|
||||
* 2 = normal screen
|
||||
* 4 = alternate screen
|
||||
* 8 = saved lines
|
||||
*/
|
||||
void
|
||||
xtermPrintEverything(XtermWidget xw, PrinterFlags * p)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
int top = 0;
|
||||
int bot = screen->max_row;
|
||||
int was_open = initialized;
|
||||
Boolean was_open = SPS.isOpen;
|
||||
int save_which = screen->whichBuf;
|
||||
int done_which = 0;
|
||||
|
||||
if (!screen->whichBuf) {
|
||||
top = -screen->savedlines - screen->topline;
|
||||
bot -= screen->topline;
|
||||
}
|
||||
|
||||
TRACE(("xtermPrintEverything, rows %d..%d\n", top, bot));
|
||||
while (top <= bot) {
|
||||
printLine(xw, top, PrintNewLine(), p);
|
||||
++top;
|
||||
if (p->print_everything) {
|
||||
if (p->print_everything & 8) {
|
||||
printLines(xw, -screen->savedlines, -(screen->topline + 1), p);
|
||||
}
|
||||
if (p->print_everything & 4) {
|
||||
screen->whichBuf = 1;
|
||||
done_which |= 2;
|
||||
printLines(xw, 0, screen->max_row, p);
|
||||
screen->whichBuf = save_which;
|
||||
}
|
||||
if (p->print_everything & 2) {
|
||||
screen->whichBuf = 0;
|
||||
done_which |= 1;
|
||||
printLines(xw, 0, screen->max_row, p);
|
||||
screen->whichBuf = save_which;
|
||||
}
|
||||
if (p->print_everything & 1) {
|
||||
if (!(done_which & (1 << screen->whichBuf))) {
|
||||
printLines(xw, 0, screen->max_row, p);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
int top = 0;
|
||||
int bot = screen->max_row;
|
||||
if (!screen->whichBuf) {
|
||||
top = -screen->savedlines - screen->topline;
|
||||
bot -= screen->topline;
|
||||
}
|
||||
printLines(xw, top, bot, p);
|
||||
}
|
||||
if (p->printer_formfeed)
|
||||
charToPrinter(xw, '\f');
|
||||
|
||||
if (!was_open || screen->printer_autoclose) {
|
||||
if (!was_open || SPS.printer_autoclose) {
|
||||
closePrinter(xw);
|
||||
}
|
||||
}
|
||||
@ -342,6 +373,7 @@ static void
|
||||
send_SGR(XtermWidget xw, unsigned attr, unsigned fg, unsigned bg)
|
||||
{
|
||||
char msg[80];
|
||||
|
||||
strcpy(msg, "\033[0");
|
||||
if (attr & BOLD)
|
||||
strcat(msg, ";1");
|
||||
@ -380,8 +412,8 @@ charToPrinter(XtermWidget xw, unsigned chr)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
if (!initialized && xtermHasPrinter(xw)) {
|
||||
switch (screen->printToFile) {
|
||||
if (!SPS.isOpen && xtermHasPrinter(xw)) {
|
||||
switch (SPS.toFile) {
|
||||
/*
|
||||
* write to a pipe.
|
||||
*/
|
||||
@ -393,19 +425,20 @@ charToPrinter(XtermWidget xw, unsigned chr)
|
||||
* be of the form:
|
||||
* print/que=name/delete [/otherflags].
|
||||
*/
|
||||
Printer = fopen(VMS_TEMP_PRINT_FILE, "w");
|
||||
SPS.fp = fopen(VMS_TEMP_PRINT_FILE, "w");
|
||||
#else
|
||||
{
|
||||
FILE *input;
|
||||
int my_pipe[2];
|
||||
int c;
|
||||
pid_t my_pid;
|
||||
|
||||
if (pipe(my_pipe))
|
||||
SysError(ERROR_FORK);
|
||||
if ((Printer_pid = fork()) < 0)
|
||||
if ((my_pid = fork()) < 0)
|
||||
SysError(ERROR_FORK);
|
||||
|
||||
if (Printer_pid == 0) {
|
||||
if (my_pid == 0) {
|
||||
TRACE_CLOSE();
|
||||
close(my_pipe[1]); /* printer is silent */
|
||||
close(screen->respond);
|
||||
@ -422,41 +455,42 @@ charToPrinter(XtermWidget xw, unsigned chr)
|
||||
if (xtermResetIds(screen) < 0)
|
||||
exit(1);
|
||||
|
||||
Printer = popen(screen->printer_command, "w");
|
||||
SPS.fp = popen(SPS.printer_command, "w");
|
||||
input = fdopen(my_pipe[0], "r");
|
||||
while ((c = fgetc(input)) != EOF) {
|
||||
fputc(c, Printer);
|
||||
fputc(c, SPS.fp);
|
||||
if (isForm(c))
|
||||
fflush(Printer);
|
||||
fflush(SPS.fp);
|
||||
}
|
||||
pclose(Printer);
|
||||
pclose(SPS.fp);
|
||||
exit(0);
|
||||
} else {
|
||||
close(my_pipe[0]); /* won't read from printer */
|
||||
Printer = fdopen(my_pipe[1], "w");
|
||||
SPS.fp = fdopen(my_pipe[1], "w");
|
||||
TRACE(("opened printer from pid %d/%d\n",
|
||||
(int) getpid(), (int) Printer_pid));
|
||||
(int) getpid(), (int) my_pid));
|
||||
}
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case True:
|
||||
Printer = fopen(screen->printer_command, "w");
|
||||
TRACE(("opening \"%s\" as printer output\n", SPS.printer_command));
|
||||
SPS.fp = fopen(SPS.printer_command, "w");
|
||||
break;
|
||||
}
|
||||
initialized++;
|
||||
SPS.isOpen = True;
|
||||
}
|
||||
if (Printer != 0) {
|
||||
if (SPS.fp != 0) {
|
||||
#if OPT_WIDE_CHARS
|
||||
if (chr > 127) {
|
||||
Char temp[10];
|
||||
*convertToUTF8(temp, chr) = 0;
|
||||
fputs((char *) temp, Printer);
|
||||
fputs((char *) temp, SPS.fp);
|
||||
} else
|
||||
#endif
|
||||
fputc((int) chr, Printer);
|
||||
fputc((int) chr, SPS.fp);
|
||||
if (isForm(chr))
|
||||
fflush(Printer);
|
||||
fflush(SPS.fp);
|
||||
}
|
||||
}
|
||||
|
||||
@ -523,11 +557,11 @@ xtermAutoPrint(XtermWidget xw, unsigned chr)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
if (screen->printer_controlmode == 1) {
|
||||
if (SPS.printer_controlmode == 1) {
|
||||
TRACE(("AutoPrint %d\n", chr));
|
||||
printLine(xw, screen->cursorp.row, chr, getPrinterFlags(xw, NULL, 0));
|
||||
if (Printer != 0)
|
||||
fflush(Printer);
|
||||
if (SPS.fp != 0)
|
||||
fflush(SPS.fp);
|
||||
}
|
||||
}
|
||||
|
||||
@ -548,8 +582,8 @@ xtermPrinterControl(XtermWidget xw, int chr)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
/* *INDENT-OFF* */
|
||||
static struct {
|
||||
Char seq[5];
|
||||
static const struct {
|
||||
const Char seq[5];
|
||||
int active;
|
||||
} tbl[] = {
|
||||
{ { ANSI_CSI, '5', 'i' }, 2 },
|
||||
@ -584,8 +618,8 @@ xtermPrinterControl(XtermWidget xw, int chr)
|
||||
if (length == len
|
||||
&& Strcmp(bfr, tbl[n].seq) == 0) {
|
||||
setPrinterControlMode(xw, tbl[n].active);
|
||||
if (screen->printer_autoclose
|
||||
&& screen->printer_controlmode == 0)
|
||||
if (SPS.printer_autoclose
|
||||
&& SPS.printer_controlmode == 0)
|
||||
closePrinter(xw);
|
||||
length = 0;
|
||||
return 0;
|
||||
@ -615,7 +649,7 @@ xtermHasPrinter(XtermWidget xw)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
return (strlen(screen->printer_command) != 0);
|
||||
return (strlen(SPS.printer_command) != 0);
|
||||
}
|
||||
|
||||
#define showPrinterControlMode(mode) \
|
||||
@ -631,15 +665,15 @@ setPrinterControlMode(XtermWidget xw, int mode)
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
if (xtermHasPrinter(xw)
|
||||
&& screen->printer_controlmode != mode) {
|
||||
&& SPS.printer_controlmode != mode) {
|
||||
TRACE(("%s %s mode\n",
|
||||
(mode
|
||||
? "set"
|
||||
: "reset"),
|
||||
(mode
|
||||
? showPrinterControlMode(mode)
|
||||
: showPrinterControlMode(screen->printer_controlmode))));
|
||||
screen->printer_controlmode = mode;
|
||||
: showPrinterControlMode(SPS.printer_controlmode))));
|
||||
SPS.printer_controlmode = mode;
|
||||
update_print_redir();
|
||||
}
|
||||
}
|
||||
@ -668,10 +702,11 @@ getPrinterFlags(XtermWidget xw, String * params, Cardinal *param_count)
|
||||
|
||||
TRACE(("getPrinterFlags %d params\n", param_count ? *param_count : 0));
|
||||
|
||||
result->printer_extent = screen->printer_extent;
|
||||
result->printer_formfeed = screen->printer_formfeed;
|
||||
result->printer_newline = screen->printer_newline;
|
||||
result->print_attributes = screen->print_attributes;
|
||||
result->printer_extent = SPS.printer_extent;
|
||||
result->printer_formfeed = SPS.printer_formfeed;
|
||||
result->printer_newline = SPS.printer_newline;
|
||||
result->print_attributes = SPS.print_attributes;
|
||||
result->print_everything = SPS.print_everything;
|
||||
|
||||
if (param_count != 0 && *param_count != 0) {
|
||||
Cardinal j;
|
||||
@ -694,3 +729,67 @@ getPrinterFlags(XtermWidget xw, String * params, Cardinal *param_count)
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* Print a timestamped copy of everything.
|
||||
*/
|
||||
void
|
||||
xtermPrintImmediately(XtermWidget xw, String filename, int opts, int attrs)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
PrinterState save_state = screen->printer_state;
|
||||
char *my_filename = malloc(TIMESTAMP_LEN + strlen(filename));
|
||||
|
||||
if (my_filename != 0) {
|
||||
unsigned save_umask = umask(0177);
|
||||
|
||||
timestamp_filename(my_filename, filename);
|
||||
SPS.fp = 0;
|
||||
SPS.isOpen = False;
|
||||
SPS.toFile = True;
|
||||
SPS.printer_command = my_filename;
|
||||
SPS.printer_autoclose = True;
|
||||
SPS.printer_formfeed = False;
|
||||
SPS.printer_newline = True;
|
||||
SPS.print_attributes = attrs;
|
||||
SPS.print_everything = opts;
|
||||
xtermPrintEverything(xw, getPrinterFlags(xw, NULL, 0));
|
||||
|
||||
umask(save_umask);
|
||||
screen->printer_state = save_state;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
xtermPrintOnXError(XtermWidget xw, int n)
|
||||
{
|
||||
#if OPT_PRINT_ON_EXIT
|
||||
/*
|
||||
* The user may have requested that the contents of the screen will be
|
||||
* written to a file if an X error occurs.
|
||||
*/
|
||||
if (TScreenOf(xw)->write_error && !IsEmpty(resource.printFileOnXError)) {
|
||||
Boolean printIt = False;
|
||||
|
||||
switch (n) {
|
||||
case ERROR_XERROR:
|
||||
/* FALLTHRU */
|
||||
case ERROR_XIOERROR:
|
||||
/* FALLTHRU */
|
||||
case ERROR_ICEERROR:
|
||||
printIt = True;
|
||||
break;
|
||||
}
|
||||
|
||||
if (printIt) {
|
||||
xtermPrintImmediately(xw,
|
||||
resource.printFileOnXError,
|
||||
resource.printOptsOnXError,
|
||||
resource.printModeOnXError);
|
||||
}
|
||||
}
|
||||
#else
|
||||
(void) xw;
|
||||
(void) n;
|
||||
#endif
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: ptyx.h,v 1.692 2011/04/25 08:33:57 tom Exp $ */
|
||||
/* $XTermId: ptyx.h,v 1.700 2011/07/12 08:33:58 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2010,2011 by Thomas E. Dickey
|
||||
@ -74,6 +74,8 @@
|
||||
#include <X11/Xft/Xft.h>
|
||||
#endif
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
/* adapted from IntrinsicI.h */
|
||||
#define MyStackAlloc(size, stack_cache_array) \
|
||||
((size) <= sizeof(stack_cache_array) \
|
||||
@ -1450,8 +1452,23 @@ typedef struct {
|
||||
int printer_formfeed; /* print formfeed per function */
|
||||
int printer_newline; /* print newline per function */
|
||||
int print_attributes; /* 0=off, 1=normal, 2=color */
|
||||
int print_everything; /* 0=all, 1=dft, 2=alt, 3=saved */
|
||||
} PrinterFlags;
|
||||
|
||||
typedef struct {
|
||||
FILE * fp; /* output file/pipe used */
|
||||
Boolean isOpen; /* output was opened/tried */
|
||||
Boolean toFile; /* true when directly to file */
|
||||
String printer_command; /* pipe/shell command string */
|
||||
Boolean printer_autoclose; /* close printer when offline */
|
||||
Boolean printer_extent; /* print complete page */
|
||||
Boolean printer_formfeed; /* print formfeed per function */
|
||||
Boolean printer_newline; /* print newline per function */
|
||||
int printer_controlmode; /* 0=off, 1=auto, 2=controller */
|
||||
int print_attributes; /* 0=off, 1=normal, 2=color */
|
||||
int print_everything; /* 0=all, 1=dft, 2=alt, 3=saved */
|
||||
} PrinterState;
|
||||
|
||||
typedef struct {
|
||||
unsigned which; /* must have NCOLORS bits */
|
||||
Pixel colors[NCOLORS];
|
||||
@ -1715,16 +1732,11 @@ typedef struct {
|
||||
|
||||
String answer_back; /* response to ENQ */
|
||||
|
||||
Boolean printToFile; /* false, except for X-errors */
|
||||
String printer_command; /* pipe/shell command string */
|
||||
Boolean printer_autoclose; /* close printer when offline */
|
||||
Boolean printer_extent; /* print complete page */
|
||||
Boolean printer_formfeed; /* print formfeed per function */
|
||||
Boolean printer_newline; /* print newline per function */
|
||||
int printer_controlmode; /* 0=off, 1=auto, 2=controller */
|
||||
int print_attributes; /* 0=off, 1=normal, 2=color */
|
||||
|
||||
PrinterState printer_state; /* actual printer state */
|
||||
PrinterFlags printer_flags; /* working copy of printer flags */
|
||||
#if OPT_PRINT_ON_EXIT
|
||||
Boolean write_error;
|
||||
#endif
|
||||
|
||||
Boolean fnt_prop; /* true if proportional fonts */
|
||||
Boolean fnt_boxes; /* true if font has box-chars */
|
||||
@ -2322,6 +2334,8 @@ typedef struct _XtermWidgetRec {
|
||||
int cur_background; /* current background color */
|
||||
Pixel dft_foreground; /* default foreground color */
|
||||
Pixel dft_background; /* default background color */
|
||||
Pixel old_foreground; /* original foreground color */
|
||||
Pixel old_background; /* original background color */
|
||||
#if OPT_ISO_COLORS
|
||||
int sgr_foreground; /* current SGR foreground color */
|
||||
int sgr_background; /* current SGR background color */
|
||||
@ -2415,9 +2429,9 @@ typedef struct _TekWidgetRec {
|
||||
#define USE_BOLD(screen) ((screen)->allowBoldFonts)
|
||||
|
||||
#if OPT_BLINK_TEXT
|
||||
#define BOLDATTR(screen) (USE_BOLD(screen) ? (BOLD | ((screen)->blink_as_bold ? BLINK : 0)) : 0)
|
||||
#define BOLDATTR(screen) (unsigned) (USE_BOLD(screen) ? (BOLD | ((screen)->blink_as_bold ? BLINK : 0)) : 0)
|
||||
#else
|
||||
#define BOLDATTR(screen) (USE_BOLD(screen) ? (BOLD | BLINK) : 0)
|
||||
#define BOLDATTR(screen) (unsigned) (USE_BOLD(screen) ? (BOLD | BLINK) : 0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
@ -2453,6 +2467,8 @@ typedef struct _TekWidgetRec {
|
||||
#define TScreenOf(xw) (&(xw)->screen)
|
||||
#define TekScreenOf(tw) (&(tw)->screen)
|
||||
|
||||
#define PrinterOf(screen) (screen)->printer_state
|
||||
|
||||
#ifdef SCROLLBAR_RIGHT
|
||||
#define OriginX(screen) (((term->misc.useRight)?0:ScrollbarWidth(screen)) + screen->border)
|
||||
#else
|
||||
|
@ -1,4 +1,4 @@
|
||||
# $XTermId: terminfo,v 1.155 2007/11/11 23:26:52 tom Exp $
|
||||
# $XTermId: terminfo,v 1.156 2011/07/04 11:11:43 tom Exp $
|
||||
#
|
||||
# $XFree86: xc/programs/xterm/terminfo,v 3.59 2006/02/13 01:14:59 dickey Exp $
|
||||
#
|
||||
@ -6,7 +6,7 @@
|
||||
# - Thomas E. Dickey
|
||||
#
|
||||
#------------------------------------------------------------------------------
|
||||
# Copyright 1996-2006,2007 by Thomas E. Dickey
|
||||
# Copyright 1996-2007,2011 by Thomas E. Dickey
|
||||
#
|
||||
# All Rights Reserved
|
||||
#
|
||||
@ -137,6 +137,7 @@ xterm-new|modern xterm terminal emulator,
|
||||
kent=\EOM,
|
||||
rin=\E[%p1%dT,
|
||||
use=xterm+pcfkeys,
|
||||
use=xterm+tmux,
|
||||
use=xterm-basic,
|
||||
#
|
||||
# Encode modifiers using parameters (see "Xterm Control Sequences" ctlseqs.ms).
|
||||
@ -198,6 +199,31 @@ xterm+pcfkeys|fragment for PC-style keys,
|
||||
use=xterm+pcf2,
|
||||
use=xterm+pce2,
|
||||
use=xterm+pcc2,
|
||||
|
||||
# This chunk is based on suggestions by Ailin Nemui and Nicholas Marriott, who
|
||||
# asked for some of xterm's advanced features to be added to its terminfo
|
||||
# entry. It defines extended capabilities not found in standard terminfo or
|
||||
# termcap. These are useful in tmux, for instance, hence the name.
|
||||
#
|
||||
# One caveat in adding extended capabilities in ncurses is that if the names
|
||||
# are longer than two characters, then they will not be visible through the
|
||||
# termcap interface.
|
||||
#
|
||||
# Ms modifies the selection/clipboard. Its parameters are
|
||||
# p1 = the storage unit (clipboard, selection or cut buffer)
|
||||
# p2 = the base64-encoded clipboard content.
|
||||
#
|
||||
# Ss is used to set the cursor style as described by the DECSCUSR
|
||||
# function to a block or underline.
|
||||
# Se resets the cursor style to the terminal power-on default.
|
||||
#
|
||||
# Cs and Ce set and reset the cursor colour.
|
||||
xterm+tmux|advanced xterm features used in tmux,
|
||||
Cr=\E]112\007,
|
||||
Cs=\E]12;%p1%s\007,
|
||||
Ms=\E]52;%p1%s;%p2%s\007,
|
||||
Se=\E[2 q,
|
||||
Ss=\E[%p1%d q,
|
||||
#
|
||||
# The ctrlFKeys resource is only relevant to the xterm+pcfn and xterm+pcfN
|
||||
# entries, since the modifyFunctionKeys resource overrides ctrlFKeys when it is
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: trace.c,v 1.122 2011/04/17 19:21:11 tom Exp $ */
|
||||
/* $XTermId: trace.c,v 1.125 2011/07/12 09:31:05 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1997-2010,2011 by Thomas E. Dickey
|
||||
@ -513,6 +513,7 @@ TraceFocus(Widget w, XEvent * ev)
|
||||
TRACE(("\tdetail: %s\n", visibleNotifyDetail(event->detail)));
|
||||
TRACE(("\tmode: %d\n", event->mode));
|
||||
TRACE(("\twindow: %#lx\n", event->window));
|
||||
TRACE(("\tfocus: %d\n", event->focus));
|
||||
TRACE(("\troot: %#lx\n", event->root));
|
||||
TRACE(("\tsubwindow: %#lx\n", event->subwindow));
|
||||
}
|
||||
@ -604,14 +605,14 @@ TraceTranslations(const char *name, Widget w)
|
||||
|
||||
int
|
||||
TraceResizeRequest(const char *fn, int ln, Widget w,
|
||||
Dimension reqwide,
|
||||
Dimension reqhigh,
|
||||
unsigned reqwide,
|
||||
unsigned reqhigh,
|
||||
Dimension * gotwide,
|
||||
Dimension * gothigh)
|
||||
{
|
||||
int rc;
|
||||
|
||||
TRACE(("%s@%d ResizeRequest %dx%d\n", fn, ln, reqhigh, reqwide));
|
||||
TRACE(("%s@%d ResizeRequest %ux%u\n", fn, ln, reqhigh, reqwide));
|
||||
rc = XtMakeResizeRequest((Widget) w, reqwide, reqhigh, gotwide, gothigh);
|
||||
TRACE(("... ResizeRequest -> "));
|
||||
if (gothigh && gotwide)
|
||||
@ -635,12 +636,21 @@ TraceXtermResources(void)
|
||||
XRES_S(icon_name);
|
||||
XRES_S(term_name);
|
||||
XRES_S(tty_modes);
|
||||
XRES_I(minBufSize);
|
||||
XRES_I(maxBufSize);
|
||||
XRES_B(hold_screen);
|
||||
XRES_B(utmpInhibit);
|
||||
XRES_B(utmpDisplayId);
|
||||
XRES_B(messages);
|
||||
XRES_S(menuLocale);
|
||||
XRES_S(omitTranslation);
|
||||
XRES_S(keyboardType);
|
||||
#if OPT_PRINT_ON_EXIT
|
||||
XRES_I(printModeNow);
|
||||
XRES_I(printModeOnXError);
|
||||
XRES_I(printOptsNow);
|
||||
XRES_I(printOptsOnXError);
|
||||
XRES_S(printFileNow);
|
||||
XRES_S(printFileOnXError);
|
||||
#endif
|
||||
#if OPT_SUNPC_KBD
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: trace.h,v 1.56 2010/11/11 01:10:52 tom Exp $ */
|
||||
/* $XTermId: trace.h,v 1.57 2011/07/08 10:51:08 tom Exp $ */
|
||||
|
||||
/*
|
||||
*
|
||||
@ -101,11 +101,11 @@ extern void TraceXtermResources(void);
|
||||
#undef TRACE_XRES
|
||||
#define TRACE_XRES() TraceXtermResources()
|
||||
|
||||
extern int TraceResizeRequest(const char * /* fn */, int /* ln */, Widget /* w */, Dimension /* reqwide */, Dimension /* reqhigh */, Dimension * /* gotwide */, Dimension * /* gothigh */);
|
||||
extern int TraceResizeRequest(const char * /* fn */, int /* ln */, Widget /* w */, unsigned /* reqwide */, unsigned /* reqhigh */, Dimension * /* gotwide */, Dimension * /* gothigh */);
|
||||
#undef REQ_RESIZE
|
||||
#define REQ_RESIZE(w, reqwide, reqhigh, gotwide, gothigh) \
|
||||
TraceResizeRequest(__FILE__, __LINE__, w, \
|
||||
(Dimension) (reqwide), (Dimension) (reqhigh), \
|
||||
(reqwide), (reqhigh), \
|
||||
(gotwide), (gothigh))
|
||||
|
||||
#else
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* $XTermId: version.h,v 1.328 2011/03/19 14:31:41 tom Exp $
|
||||
* $XTermId: version.h,v 1.329 2011/04/29 23:01:38 tom Exp $
|
||||
* ----------------------------------------------------------------------------
|
||||
* this file is part of xterm
|
||||
*
|
||||
@ -39,7 +39,7 @@
|
||||
* version of X to which this version of xterm has been built. The number in
|
||||
* parentheses is my patch number (Thomas E. Dickey).
|
||||
*/
|
||||
#define XTERM_PATCH 270
|
||||
#define XTERM_PATCH 271
|
||||
|
||||
#ifndef __vendorversion__
|
||||
#define __vendorversion__ "XTerm/OpenBSD"
|
||||
|
131
app/xterm/vttests/dynamic.pl
Normal file
131
app/xterm/vttests/dynamic.pl
Normal file
@ -0,0 +1,131 @@
|
||||
#!/usr/bin/perl -w
|
||||
# $XTermId: dynamic.pl,v 1.2 2011/07/05 09:32:53 tom Exp $
|
||||
# -----------------------------------------------------------------------------
|
||||
# this file is part of xterm
|
||||
#
|
||||
# Copyright 2011 by Thomas E. Dickey
|
||||
#
|
||||
# All Rights Reserved
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the
|
||||
# "Software"), to deal in the Software without restriction, including
|
||||
# without limitation the rights to use, copy, modify, merge, publish,
|
||||
# distribute, sublicense, and/or sell copies of the Software, and to
|
||||
# permit persons to whom the Software is furnished to do so, subject to
|
||||
# the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
# IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
# Except as contained in this notice, the name(s) of the above copyright
|
||||
# holders shall not be used in advertising or otherwise to promote the
|
||||
# sale, use or other dealings in this Software without prior written
|
||||
# authorization.
|
||||
# -----------------------------------------------------------------------------
|
||||
# Test the dynamic-color query option of xterm.
|
||||
# The programs xtermcontrol and xtermset provide more options.
|
||||
|
||||
use strict;
|
||||
|
||||
use Getopt::Std;
|
||||
use IO::Handle;
|
||||
|
||||
our @color_names = (
|
||||
"VT100 text foreground",
|
||||
"VT100 text background",
|
||||
"text cursor",
|
||||
"mouse foreground",
|
||||
"mouse background",
|
||||
"Tektronix foreground",
|
||||
"Tektronix background",
|
||||
"highlight background",
|
||||
"Tektronix cursor",
|
||||
"highlight foreground"
|
||||
);
|
||||
|
||||
our ($opt_c, $opt_r);
|
||||
&getopts('c:r') || die("Usage: $0 [options]\n
|
||||
Options:\n
|
||||
-c XXX set cursor-color
|
||||
-r reset colors
|
||||
");
|
||||
|
||||
sub no_reply($) {
|
||||
open TTY, "+</dev/tty" or die("Cannot open /dev/tty\n");
|
||||
autoflush TTY 1;
|
||||
my $old=`stty -g`;
|
||||
system "stty raw -echo min 0 time 5";
|
||||
|
||||
print TTY @_;
|
||||
close TTY;
|
||||
system "stty $old";
|
||||
}
|
||||
|
||||
sub get_reply($) {
|
||||
open TTY, "+</dev/tty" or die("Cannot open /dev/tty\n");
|
||||
autoflush TTY 1;
|
||||
my $old=`stty -g`;
|
||||
system "stty raw -echo min 0 time 5";
|
||||
|
||||
print TTY @_;
|
||||
my $reply=<TTY>;
|
||||
close TTY;
|
||||
system "stty $old";
|
||||
if ( defined $reply ) {
|
||||
die("^C received\n") if ( "$reply" eq "\003" );
|
||||
}
|
||||
return $reply;
|
||||
}
|
||||
|
||||
sub query_color($) {
|
||||
my $code = $_[0];
|
||||
my $param1 = $code + 10;
|
||||
my $reply;
|
||||
|
||||
$reply=get_reply("\x1b]$param1;?\007");
|
||||
|
||||
return unless defined $reply;
|
||||
if ( $reply =~ /\x1b]$param1;.*\007/ ) {
|
||||
my $value = $reply;
|
||||
|
||||
$value =~ s/^\x1b]$param1;//;
|
||||
$value =~ s/\007//;
|
||||
|
||||
printf "%24s = %s\n", $color_names[$code], $value;
|
||||
}
|
||||
}
|
||||
|
||||
sub query_colors() {
|
||||
my $n;
|
||||
|
||||
for ( $n = 0; $n <= 9; ++$n) {
|
||||
&query_color($n);
|
||||
}
|
||||
}
|
||||
|
||||
sub reset_colors() {
|
||||
my $n;
|
||||
|
||||
for ( $n = 0; $n <= 9; ++$n) {
|
||||
my $code = 110 + $n;
|
||||
&no_reply("\x1b]$code\007");
|
||||
}
|
||||
}
|
||||
|
||||
if ( defined ($opt_c) ) {
|
||||
&no_reply("\x1b]12;$opt_c\007");
|
||||
}
|
||||
if ( defined ($opt_r) ) {
|
||||
&reset_colors();
|
||||
}
|
||||
|
||||
&query_colors();
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: xterm.h,v 1.647 2011/04/23 12:15:04 tom Exp $ */
|
||||
/* $XTermId: xterm.h,v 1.654 2011/07/12 08:39:49 tom Exp $ */
|
||||
|
||||
/************************************************************
|
||||
|
||||
@ -825,7 +825,7 @@ extern void ShowCursor (void);
|
||||
extern void SwitchBufPtrs (TScreen * /* screen */, int /* toBuf */);
|
||||
extern void ToggleAlternate (XtermWidget /* xw */);
|
||||
extern void VTInitTranslations (void);
|
||||
extern void VTReset (XtermWidget /* xw */, int /* full */, int /* saved */);
|
||||
extern void VTReset (XtermWidget /* xw */, int /* full */, int /* saved */) GCC_NORETURN;
|
||||
extern void VTRun (XtermWidget /* xw */);
|
||||
extern void dotext (XtermWidget /* xw */, int /* charset */, IChar * /* buf */, Cardinal /* len */);
|
||||
extern void releaseCursorGCs(XtermWidget /*xw*/);
|
||||
@ -949,6 +949,9 @@ extern void repairSizeHints (void);
|
||||
extern void show_8bit_control (Bool /* value */);
|
||||
|
||||
/* misc.c */
|
||||
|
||||
#define TIMESTAMP_LEN 20 /* length of TIMESTAMP_FMT */
|
||||
|
||||
extern Bool AllocateTermColor(XtermWidget, ScrnColors *, int, const char *, Bool);
|
||||
extern Cursor make_colored_cursor (unsigned /* cursorindex */, unsigned long /* fg */, unsigned long /* bg */);
|
||||
extern OptionHelp * sortedOpts(OptionHelp *, XrmOptionDescRec *, Cardinal);
|
||||
@ -964,7 +967,7 @@ extern const char *SysErrorMsg (int /* n */);
|
||||
extern const char *SysReasonMsg (int /* n */);
|
||||
extern int ResetAnsiColorRequest(XtermWidget, char *, int);
|
||||
extern int XStrCmp (char * /* s1 */, char * /* s2 */);
|
||||
extern int creat_as (uid_t /* uid */, gid_t /* gid */, Bool /* append */, char * /* pathname */, int /* mode */);
|
||||
extern int creat_as (uid_t /* uid */, gid_t /* gid */, Bool /* append */, char * /* pathname */, unsigned /* mode */);
|
||||
extern int open_userfile (uid_t /* uid */, gid_t /* gid */, char * /* path */, Bool /* append */);
|
||||
extern int xerror (Display * /* d */, XErrorEvent * /* ev */);
|
||||
extern int xioerror (Display * /* dpy */);
|
||||
@ -1061,6 +1064,8 @@ extern void xtermAutoPrint (XtermWidget /* xw */, unsigned /* chr */);
|
||||
extern void xtermMediaControl (XtermWidget /* xw */, int /* param */, int /* private_seq */);
|
||||
extern void xtermPrintScreen (XtermWidget /* xw */, Bool /* use_DECPEX */, PrinterFlags * /* p */);
|
||||
extern void xtermPrintEverything (XtermWidget /* xw */, PrinterFlags * /* p */);
|
||||
extern void xtermPrintImmediately (XtermWidget /* xw */, String /* filename */, int /* opts */, int /* attributes */);
|
||||
extern void xtermPrintOnXError (XtermWidget /* xw */, int /* n */);
|
||||
|
||||
/* ptydata.c */
|
||||
#ifdef VMS
|
||||
|
@ -31,7 +31,7 @@
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
*****************************************************************************
|
||||
$XTermId: xterm.log.html,v 1.1037 2011/04/26 10:48:22 tom Exp $
|
||||
$XTermId: xterm.log.html,v 1.1063 2011/07/15 00:51:57 tom Exp $
|
||||
-->
|
||||
<HTML>
|
||||
<HEAD>
|
||||
@ -56,6 +56,7 @@ Most of these are summarized in the XFree86 CHANGELOG
|
||||
is the latest version of this file.
|
||||
|
||||
<UL>
|
||||
<LI><A HREF="#xterm_271">Patch #271 - 2011/07/14</A>
|
||||
<LI><A HREF="#xterm_270">Patch #270 - 2011/04/26</A>
|
||||
<LI><A HREF="#xterm_269">Patch #269 - 2011/02/19</A>
|
||||
<LI><A HREF="#xterm_268">Patch #268 - 2011/02/10</A>
|
||||
@ -329,6 +330,102 @@ is the latest version of this file.
|
||||
<LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
|
||||
</UL>
|
||||
|
||||
<H1><A NAME="xterm_271">Patch #271 - 2011/07/14</A></H1>
|
||||
<ul>
|
||||
<li>omit permissions adjustments to pty on exit except for
|
||||
pre-Unix98 ptys, since modern implementations handle this
|
||||
(report by Sean C Farley).
|
||||
|
||||
<li>modify logic for switching fonts between UTF-8 and non-UTF-8
|
||||
encoding to not merge the derivable bold-, wide- and widebold
|
||||
values from the VT100 fonts. Also suppress warning when not
|
||||
using UTF-8 fonts if wide- and widebold-fonts cannot be derived
|
||||
or otherwise loaded (report by Werner Scheinast).
|
||||
|
||||
<li>modify menu-creation to suppress entries which will never be used
|
||||
in the current configuration, rather than simply disabling them.
|
||||
|
||||
<li>add resource <code>printModeImmediate</code> and menu item to
|
||||
allow print of screen plus saved lines to a file.
|
||||
|
||||
<li>add menu item to allow runtime enable/disable of the
|
||||
<code>printFileOnXError</code> feature.
|
||||
|
||||
<li>append a timestamp to filename used in
|
||||
<code>printFileOnXError</code> feature,
|
||||
and restrict its permissions
|
||||
(request by Vincent Lefevre).
|
||||
|
||||
<li>add a check when cancelling cursor-blinking, in case the cursor
|
||||
is blinked off. Fix so that the cursor is repainted without
|
||||
waiting for other events, e.g., keypress (report by Ailin Nemui).
|
||||
|
||||
<li>add configure <code>--with-app-class</code> option, to simplify
|
||||
building "xterm-dev" packages with filenames that do not conflict
|
||||
with conventional "xterm" packages.
|
||||
|
||||
<li>corrected logic flow for DECSCL, which prevented the updated
|
||||
operating level from being reported via DECRQSS (report by
|
||||
Ailin Nemui).
|
||||
|
||||
<li>corrected default for <code>brokenStringTerm</code> resource to
|
||||
match manpage.
|
||||
|
||||
<li>add vttests/dynamic.pl
|
||||
|
||||
<li>add runtime check for locale not supported by X libraries, and
|
||||
fallback to XA_STRING in this case (request by Bryan Henderson).
|
||||
|
||||
<li>fix a special case in configure script after no FreeType libraries
|
||||
are found. The script was proceeding to check for a usable
|
||||
configuration.
|
||||
|
||||
<li>add <code>xterm+tmux</code> building block to terminfo (adapted
|
||||
from changes proposed by Ailin Nemui and Nicholas Marriott).
|
||||
|
||||
<li>improve discussion of <code>faceName</code> resource in manpage
|
||||
(adapted from suggestions by Jens Schweikhardt).
|
||||
|
||||
<li>correct mapping of shifted up/down cursor-keys in termcap
|
||||
function-keys mode, i.e., resource <code>tcapFunctionKeys</code>
|
||||
(patch by Gertjan Halkes).
|
||||
|
||||
<li>update AIX case in <code>CF_XOPEN_SOURCE</code> configure macro to
|
||||
add release 7.x.
|
||||
|
||||
<li>modify ifdef's in <code>xterm_io.h</code> for <code>__hpux</code>
|
||||
to force that to use the hacked SYSV support in that file.
|
||||
This fixes a problem with a non-blocking socket call (patch
|
||||
by Paul Lampert).
|
||||
|
||||
<li>improve filtering of desktop category scanning, to exclude XFCE.
|
||||
|
||||
<li>modify configure script to work with systems that have both
|
||||
ncurses (or other terminfo) as well as a real termcap library,
|
||||
e.g., Slackware (report by Alan Watts).
|
||||
|
||||
<li>modify configure script to work around special case where user's
|
||||
environment adds compiler flags to the <code>CC</code> variable
|
||||
(prompted by report by Paul Lampert).
|
||||
|
||||
<li>amend change for Debian #110226 so that "-h" or "-v" options cause
|
||||
an exit, rather than simply printing to stdout while the window is
|
||||
displayed (Debian #629358).
|
||||
|
||||
<li>add response for <code>DECRQSS</code> which gives the setting
|
||||
for <code>DECSCUSR</code>.
|
||||
|
||||
<li>modify AllocateTermColor() to handle
|
||||
<code>XtDefaultForeground</code> and
|
||||
<code>XtDefaultBackground</code>,
|
||||
which are not recognized by <code>XParseColor</code>.
|
||||
For example, this fixes the use of OSC 112
|
||||
when no explicit cursor color was set (report by Ailin Nemui).
|
||||
|
||||
<li>handle special-case of <code>KeyPress</code> translated to
|
||||
<code>popup-menu</code> action (Ubuntu #756273).
|
||||
</ul>
|
||||
|
||||
<H1><A NAME="xterm_270">Patch #270 - 2011/04/26</A></H1>
|
||||
<ul>
|
||||
<li>build-fix, e.g., for using <code>imake</code> on platforms which
|
||||
@ -339,7 +436,8 @@ is the latest version of this file.
|
||||
<li>mention default for <code>fontWarnings</code> in manpage
|
||||
(report by Werner Scheinast).
|
||||
|
||||
<li>split "UTF-8" menu entry into "UTF-8 Encoding" and "UTF-8 Fonts".
|
||||
<li>split "UTF-8" menu entry into "UTF-8 Encoding" and "UTF-8 Fonts"
|
||||
(prompted by discussion with Werner Scheinast).
|
||||
|
||||
<li>gray-out font-menu entries when a font fails to load, e.g.,
|
||||
a bitmap font is not installed.
|
||||
|
@ -1,5 +1,5 @@
|
||||
'\" t
|
||||
.\" $XTermId: xterm.man,v 1.489 2011/04/24 21:20:59 tom Exp $
|
||||
.\" $XTermId: xterm.man,v 1.501 2011/07/13 08:59:37 tom Exp $
|
||||
.\"
|
||||
.\" Copyright 1996-2010,2011 by Thomas E. Dickey
|
||||
.\"
|
||||
@ -235,18 +235,21 @@ instead of a
|
||||
.RB ` \- ',
|
||||
the option is restored to its default value.
|
||||
The \fB\-version\fP and \fB\-help\fP options are interpreted even if \fIxterm\fP
|
||||
cannot open the display, and are useful for testing and configuration scripts:
|
||||
cannot open the display, and are useful for testing and configuration scripts.
|
||||
Along with \fB\-class\fP, they are checked before other options.
|
||||
.TP 8
|
||||
.B \-version
|
||||
This causes \fIxterm\fP to print a version number to the standard output.
|
||||
This causes \fIxterm\fP to print a version number to the standard output,
|
||||
and then exit.
|
||||
.TP 8
|
||||
.B \-help
|
||||
This causes \fIxterm\fP to print out a verbose message describing its options,
|
||||
one per line.
|
||||
The message is written to the standard output.
|
||||
After printing the message, \fIxterm\fP exits.
|
||||
\fIXterm\fP generates this message, sorting it and noting whether
|
||||
a "\fB\-option\fP"
|
||||
or a "\fB+option\fP" turns the feature on or off,
|
||||
a \*(``\fB\-\fR\fIoption\fP\*(''
|
||||
or a \*(``\fB+\fR\fIoption\fP\*('' turns the feature on or off,
|
||||
since some features historically have been one or the other.
|
||||
\fIXterm\fP generates a concise help message (multiple options per line)
|
||||
when an unknown option is used, e.g.,
|
||||
@ -322,7 +325,7 @@ This option specifies the size of the inner border (the distance between
|
||||
the outer edge of the characters and the window border) in pixels.
|
||||
That is the \fIvt100\fP \fIinternalBorder\fP resource.
|
||||
The
|
||||
default is 2.
|
||||
default is \*(``2\*(''.
|
||||
.TP 8
|
||||
.B +bc
|
||||
turn off text cursor blinking.
|
||||
@ -541,7 +544,7 @@ This corresponds to the \fBwideBoldFont\fP resource.
|
||||
.TP 8
|
||||
.B \-fx \fIfont\fP
|
||||
This option specifies the font to be used for displaying the preedit string
|
||||
in the "OverTheSpot" input method.
|
||||
in the \*(``OverTheSpot\*('' input method.
|
||||
.IP
|
||||
See also the discussion of the \fBximFont\fP resource.
|
||||
.TP 8
|
||||
@ -582,11 +585,11 @@ Turn off the \fBhold\fP resource, i.e.,
|
||||
.TP 8
|
||||
.B \-ie
|
||||
Turn on the \fBptyInitialErase\fP resource, i.e.,
|
||||
use the pseudo-terminal's sense of the stty erase value.
|
||||
use the pseudo-terminal's sense of the \fIstty\fP erase value.
|
||||
.TP 8
|
||||
.B +ie
|
||||
Turn off the \fBptyInitialErase\fP resource, i.e.,
|
||||
set the stty erase value using the \fBkb\fP string from the termcap entry as
|
||||
set the \fIstty\fP erase value using the \fBkb\fP string from the termcap entry as
|
||||
a reference, if available.
|
||||
.TP 8
|
||||
.B \-im
|
||||
@ -779,7 +782,7 @@ This sets the \fIpointerColor\fP resource.
|
||||
.BI \-nb " number"
|
||||
This option specifies the number of characters from the right end of a line
|
||||
at which the margin bell, if enabled, will ring.
|
||||
The default is 10.
|
||||
The default is \*(``10\*(''.
|
||||
.TP 8
|
||||
.B "\-nul"
|
||||
This option disables the display of underlining.
|
||||
@ -897,7 +900,7 @@ should not cause the window to be repositioned.
|
||||
This option specifies the number of lines to save that have been scrolled
|
||||
off the top of the screen.
|
||||
This corresponds to the \fBsaveLines\fP resource.
|
||||
The default is 64.
|
||||
The default is \*(``64\*(''.
|
||||
.TP 8
|
||||
.B \-sm
|
||||
This option, corresponding to the \fBsessionMgt\fR resource,
|
||||
@ -943,7 +946,7 @@ This option, corresponding to the \fBtoolBar\fR resource,
|
||||
indicates that \fIxterm\fR should display a toolbar (or menubar)
|
||||
at the top of its window.
|
||||
The buttons in the toolbar correspond to
|
||||
the popup menus, e.g., control/left/mouse for "Main Options".
|
||||
the popup menus, e.g., control/left/mouse for \*(``Main Options\*(''.
|
||||
.TP 8
|
||||
.B +tb
|
||||
This option indicates that \fIxterm\fR should
|
||||
@ -954,8 +957,9 @@ Specify the name used by \fIxterm\fP to select the
|
||||
correct response to terminal ID queries.
|
||||
It also specifies the emulation level,
|
||||
used to determine the type of response to a DA control sequence.
|
||||
Valid values include vt52, vt100, vt101, vt102, and vt220 (the "vt" is optional).
|
||||
The default is vt100.
|
||||
Valid values include vt52, vt100, vt101, vt102, and vt220
|
||||
(the \*(``vt\*('' is optional).
|
||||
The default is \*(``vt100\*(''.
|
||||
The term_id argument specifies the terminal ID to use.
|
||||
(This is the same as the \fBdecTerminalID\fP resource).
|
||||
.TP 8
|
||||
@ -1064,7 +1068,7 @@ subprocess.
|
||||
Same as \fBzIconBeep\fP resource.
|
||||
If percent is non-zero, xterms that produce output while iconified
|
||||
will cause an XBell sound at the given volume
|
||||
and have "***" prepended to their icon titles.
|
||||
and have \*(``***\*('' prepended to their icon titles.
|
||||
Most window managers will detect this change immediately, showing you
|
||||
which window has the output.
|
||||
(A similar feature was in x10 \fIxterm\fP.)
|
||||
@ -1221,12 +1225,12 @@ useful for setting resources that do not have separate command line options.
|
||||
.
|
||||
.SH RESOURCES
|
||||
The program understands all of the core X Toolkit resource names and classes.
|
||||
Application specific resources (e.g., "\fBXTerm.\fP\fINAME\fP") follow:
|
||||
Application specific resources (e.g., \*(``\fBXTerm.\fP\fINAME\fP\*('') follow:
|
||||
.TP 8
|
||||
.B "backarrowKeyIsErase (\fPclass\fB BackarrowKeyIsErase)"
|
||||
Tie the VTxxx \fBbackarrowKey\fP and \fBptyInitialErase\fP resources
|
||||
together by setting the DECBKM state according to whether the initial value of
|
||||
stty erase is a backspace (8) or delete (127) character.
|
||||
\fIstty\fP erase is a backspace (8) or delete (127) character.
|
||||
The default is \*(``false\*('', which disables this feature.
|
||||
.TP 8
|
||||
.B "fullscreen (\fPclass\fB Fullscreen)"
|
||||
@ -1277,7 +1281,7 @@ It is not necessarily obeyed by all window managers.
|
||||
.TP 8
|
||||
.B "iconName (\fPclass\fB IconName)"
|
||||
Specifies the icon name.
|
||||
The default is the application name.
|
||||
The default is the application name, e.g., \*(``xterm\*(''.
|
||||
.TP 8
|
||||
.B "keyboardType (\fPclass\fB KeyboardType)"
|
||||
Enables one (or none) of the various keyboard-type resources:
|
||||
@ -1294,10 +1298,14 @@ The resource's value should be one of the corresponding strings
|
||||
\*(``vt220\*(''.
|
||||
The individual resources are provided for legacy support;
|
||||
this resource is simpler to use.
|
||||
.IP
|
||||
The default is
|
||||
\*(``unknown.\*('', i.e., none of the associated resources are set
|
||||
via this resource.
|
||||
.TP 8
|
||||
.B "maxBufSize (\fPclass\fB MaxBufSize)"
|
||||
Specify the maximum size of the input buffer.
|
||||
The default is 32768.
|
||||
The default is \*(``32768\*(''.
|
||||
You cannot set this to a value less than the \fBminBufSize\fR resource.
|
||||
It will be increased as needed to make that value evenly divide this one.
|
||||
.IP
|
||||
@ -1324,7 +1332,7 @@ the popup menus.
|
||||
Use this to improve initialization performance of the Athena popup menus,
|
||||
which may load unnecessary (and very large) fonts, e.g.,
|
||||
in a locale having UTF-8 encoding.
|
||||
The default is the "C" (POSIX).
|
||||
The default is \*(``C\*('' (POSIX).
|
||||
.IP
|
||||
To use the current locale
|
||||
(only useful if you have localized the resource settings for the menu entries),
|
||||
@ -1333,7 +1341,7 @@ set the resource to an empty string.
|
||||
.B "minBufSize (\fPclass\fB MinBufSize)"
|
||||
Specify the minimum size of the input buffer, i.e., the amount of data
|
||||
that \fIxterm\fR requests on each read.
|
||||
The default is 4096.
|
||||
The default is \*(``4096\*(''.
|
||||
You cannot set this to a value less than 64.
|
||||
.TP 8
|
||||
.B "omitTranslation (\fPclass\fB OmitTranslation)"
|
||||
@ -1361,9 +1369,9 @@ initialization is complete.
|
||||
The default is \*(``true\*(''.
|
||||
.TP 8
|
||||
.B "ptyInitialErase (\fPclass\fB PtyInitialErase)"
|
||||
If \*(``true\*('', \fIxterm\fP will use the pseudo-terminal's sense of the stty erase
|
||||
If \*(``true\*('', \fIxterm\fP will use the pseudo-terminal's sense of the \fIstty\fP erase
|
||||
value.
|
||||
If \*(``false\*('', \fIxterm\fP will set the stty erase value to match its own
|
||||
If \*(``false\*('', \fIxterm\fP will set the \fIstty\fP erase value to match its own
|
||||
configuration, using the \fBkb\fP string from the termcap entry as
|
||||
a reference, if available.
|
||||
In either case, the result is applied to the TERMCAP variable
|
||||
@ -1440,6 +1448,8 @@ See also the \fBkeyboardType\fP resource.
|
||||
Specifies whether or not function key escape codes read from the
|
||||
termcap/terminfo entry should be generated for
|
||||
function keys instead of standard escape sequences.
|
||||
The default is
|
||||
\*(``false.\*('', i.e., this feature is disabled.
|
||||
.IP
|
||||
See also the \fBkeyboardType\fP resource.
|
||||
.TP 8
|
||||
@ -1487,7 +1497,7 @@ an X resource escapes the next character.
|
||||
This is very useful for overriding
|
||||
the default terminal settings without having to do an \fIstty\fP every time
|
||||
an \fIxterm\fP is started.
|
||||
Note, however, that the stty program on a given host may use different
|
||||
Note, however, that the \fIstty\fP program on a given host may use different
|
||||
keywords; \fIxterm\fR's table is built-in.
|
||||
.IP
|
||||
If the \fBttyModes\fP resource specifies a value for \fBerase\fP,
|
||||
@ -1530,7 +1540,7 @@ The default is \*(``false.\*(''
|
||||
Same as \-ziconbeep command line argument.
|
||||
If the value of this resource is non-zero, xterms that produce output
|
||||
while iconified will cause an XBell sound at the given volume
|
||||
and have "***" prepended to their icon titles.
|
||||
and have \*(``***\*('' prepended to their icon titles.
|
||||
Most window managers will detect this change immediately, showing you
|
||||
which window has the output.
|
||||
(A similar feature was in x10 \fIxterm\fR.)
|
||||
@ -1540,13 +1550,14 @@ The default is \*(``false.\*(''
|
||||
.PP
|
||||
The following resources are specified as part
|
||||
of the \fIvt100\fP widget (class \fIVT100\fP).
|
||||
They are specified by patterns such as "\fBXTerm.vt100.\fP\fINAME\fP".
|
||||
They are specified by patterns such as \*(``\fBXTerm.vt100.\fP\fINAME\fP\*(''.
|
||||
.PP
|
||||
If your \fIxterm\fP is configured to support the "toolbar", then those
|
||||
If your \fIxterm\fP is configured to support the \*(``toolbar\*('', then those
|
||||
patterns need an extra level for the form-widget which holds the
|
||||
toolbar and vt100 widget. A wildcard between the top-level
|
||||
"XTerm" and the "vt100" widget makes the resource settings work for
|
||||
either, e.g., "\fBXTerm*vt100.\fP\fINAME\fP".
|
||||
toolbar and vt100 widget.
|
||||
A wildcard between the top-level
|
||||
\*(``XTerm\*('' and the \*(``vt100\*('' widget makes the resource settings work for
|
||||
either, e.g., \*(``\fBXTerm*vt100.\fP\fINAME\fP\*(''.
|
||||
.TP 8
|
||||
.B "activeIcon (\fPclass\fB ActiveIcon)"
|
||||
Specifies whether or not active icon windows are to be used when the
|
||||
@ -1597,7 +1608,8 @@ If the current viewport is scrolled past the limit set by the
|
||||
\fBsaveLines\fP resource, then Scroll Lock has no further effect.
|
||||
.IP
|
||||
The reason for setting the default to \*(``false.\*('' is to avoid
|
||||
user surprise. This key is generally unused in keyboard configurations,
|
||||
user surprise.
|
||||
This key is generally unused in keyboard configurations,
|
||||
and has not acquired a standard meaning even when it is used in that manner.
|
||||
Consequently, users have assigned it for ad hoc purposes.
|
||||
.TP 8
|
||||
@ -1615,7 +1627,7 @@ notion of its function-key strings, as termcap or terminfo capabilities
|
||||
should be allowed.
|
||||
The default is \*(``false.\*(''
|
||||
.IP
|
||||
A few programs, e.g,. \fIvim\fP, use this feature to get an accurate
|
||||
A few programs, e.g., \fIvim\fP, use this feature to get an accurate
|
||||
description of the terminal's capabilities,
|
||||
independent of the termcap/terminfo setting:
|
||||
.RS
|
||||
@ -1813,9 +1825,10 @@ Since X11R6, bitmap fonts have been scaled.
|
||||
The font server claims to provide the bold font that \fIxterm\fP requests,
|
||||
but the result is not always readable.
|
||||
XFree86 provides a feature which can be used to suppress the scaling.
|
||||
In the X server's configuration file (e.g., "/etc/X11/XFree86"), you
|
||||
can add ":unscaled" to the end of the directory specification for the
|
||||
"misc" fonts, which comprise the fixed-pitch fonts that are used by \fIxterm\fP.
|
||||
In the X server's configuration file (e.g., \*(``/etc/X11/XFree86\*(''), you
|
||||
can add \*(``:unscaled\*('' to the end of the directory specification for the
|
||||
\*(``misc\*('' fonts,
|
||||
which comprise the fixed-pitch fonts that are used by \fIxterm\fP.
|
||||
For example
|
||||
.RS
|
||||
FontPath "/usr/lib/X11/fonts/misc/"
|
||||
@ -1828,8 +1841,8 @@ would become
|
||||
.IP
|
||||
Depending on your configuration, the font server may have its own configuration
|
||||
file.
|
||||
The same ":unscaled" can be added to its configuration file at the
|
||||
end of the directory specification for "misc".
|
||||
The same \*(``:unscaled\*('' can be added to its configuration file at the
|
||||
end of the directory specification for \*(``misc\*(''.
|
||||
.IP
|
||||
The bitmap scaling feature is also used by \fIxterm\fP to implement
|
||||
VT102 double-width and double-height characters.
|
||||
@ -2114,16 +2127,16 @@ It will still use reverse-video to disallow some cases, such as a black
|
||||
cursor on a black background.
|
||||
.TP 8
|
||||
.B "cursorOffTime (\fPclass\fB CursorOffTime)"
|
||||
Specifies the duration of the "off" part of the cursor blink cycle-time
|
||||
Specifies the duration of the \*(``off\*('' part of the cursor blink cycle-time
|
||||
in milliseconds.
|
||||
The same timer is used for text blinking.
|
||||
The default is 300.
|
||||
The default is \*(``300\*(''.
|
||||
.TP 8
|
||||
.B "cursorOnTime (\fPclass\fB CursorOnTime)"
|
||||
Specifies the duration of the "on" part of the cursor blink cycle-time,
|
||||
Specifies the duration of the \*(``on\*('' part of the cursor blink cycle-time,
|
||||
in milliseconds.
|
||||
The same timer is used for text blinking.
|
||||
The default is 600.
|
||||
The default is \*(``600\*(''.
|
||||
.TP 8
|
||||
.B "cutNewline (\fPclass\fB CutNewline)"
|
||||
If \*(``false\*('', triple clicking to select a line does not include the Newline
|
||||
@ -2144,8 +2157,9 @@ The default is \*(``true.\*(''
|
||||
.B "decTerminalID (\fPclass\fB DecTerminalID)"
|
||||
Specifies the emulation level (100=VT100, 220=VT220, etc.), used to determine
|
||||
the type of response to a DA control sequence.
|
||||
Leading non-digit characters are ignored, e.g., "vt100" and "100" are the same.
|
||||
The default is 100.
|
||||
Leading non-digit characters are ignored,
|
||||
e.g., \*(``vt100\*('' and \*(``100\*('' are the same.
|
||||
The default is \*(``100\*(''.
|
||||
.TP 8
|
||||
.B "defaultString (\fPclass\fB DefaultString)"
|
||||
Specify the character (or string) which \fIxterm\fP will substitute when
|
||||
@ -2173,7 +2187,8 @@ The default value is
|
||||
SetColor,GetColor,GetAnsiColor
|
||||
.RE
|
||||
.IP
|
||||
The names are listed below. \fIxterm\fP ignores capitalization, but
|
||||
The names are listed below.
|
||||
\fIxterm\fP ignores capitalization, but
|
||||
they are shown in mixed-case for clarity.
|
||||
.RS
|
||||
.TP 5
|
||||
@ -2196,7 +2211,8 @@ The default value is
|
||||
SetFont,GetFont
|
||||
.RE
|
||||
.IP
|
||||
The names are listed below. \fIxterm\fP ignores capitalization, but
|
||||
The names are listed below.
|
||||
\fIxterm\fP ignores capitalization, but
|
||||
they are shown in mixed-case for clarity.
|
||||
.RS
|
||||
.TP 5
|
||||
@ -2215,7 +2231,8 @@ The default value is
|
||||
SetTcap,GetTcap
|
||||
.RE
|
||||
.IP
|
||||
The names are listed below. \fIxterm\fP ignores capitalization, but
|
||||
The names are listed below.
|
||||
\fIxterm\fP ignores capitalization, but
|
||||
they are shown in mixed-case for clarity.
|
||||
.RS
|
||||
.TP 5
|
||||
@ -2235,8 +2252,10 @@ The default value is
|
||||
20,21,SetXprop,SetSelection
|
||||
.RE
|
||||
.IP
|
||||
The names are listed below. \fIxterm\fP ignores capitalization, but
|
||||
they are shown in mixed-case for clarity. Where a number can be used
|
||||
The names are listed below.
|
||||
\fIxterm\fP ignores capitalization, but
|
||||
they are shown in mixed-case for clarity.
|
||||
Where a number can be used
|
||||
as an alternative, it is given in parentheses after the name.
|
||||
.RS
|
||||
.TP 5
|
||||
@ -2331,10 +2350,11 @@ On startup, \fIxterm\fP tries to put the terminal into 7-bit mode.
|
||||
The \fBmetaSendsEscape\fP and \fBaltSendsEscape\fP resources may override this.
|
||||
The default is \*(``true.\*(''
|
||||
.IP
|
||||
Generally keyboards do not have a key labeled "Meta",
|
||||
but "Alt" keys are common, and they are conventionally used for "Meta".
|
||||
Generally keyboards do not have a key labeled \*(``Meta\*('',
|
||||
but \*(``Alt\*('' keys are common,
|
||||
and they are conventionally used for \*(``Meta\*(''.
|
||||
If they were synonymous, it would have been reasonable to name this
|
||||
resource "altSendsEscape", reversing its sense.
|
||||
resource \*(``\fBaltSendsEscape\fP\*('', reversing its sense.
|
||||
For more background on this, see the \fBmeta\fP function in curses.
|
||||
.IP
|
||||
Note that the \fIAlt\fP key is not necessarily the same as the
|
||||
@ -2366,19 +2386,36 @@ which means that they are accepted as is.
|
||||
.B "eightBitSelectTypes (\fPclass\fB EightBitSelectTypes\fP)"
|
||||
Override \fIxterm\fP's default selection target list (see SELECT/PASTE) for
|
||||
selections in normal (ISO-8859-1) mode.
|
||||
The default is an empty string, which does not override anything.
|
||||
The default is an empty string, i.e., \*(``\*('',
|
||||
which does not override anything.
|
||||
.TP 8
|
||||
.B "faceName (\fPclass\fB FaceName)"
|
||||
Specify the pattern for fonts selected from the FreeType
|
||||
Specify the pattern for scalable fonts selected from the FreeType
|
||||
library if support for that library was compiled into \fIxterm\fR.
|
||||
There is no default value.
|
||||
.IP
|
||||
If not specified,
|
||||
or if there is no match for both normal and bold fonts,
|
||||
\fIxterm\fR uses the \fBfont\fP and related resources.
|
||||
\fIxterm\fR uses the bitmap \fBfont\fP and related resources.
|
||||
.IP
|
||||
It is possible to select suitable bitmap fonts using a script such as this:
|
||||
.NS
|
||||
\&#!/bin/sh
|
||||
\&FONT=`xfontsel -print`
|
||||
\&test -n "$FONT" && xfd -fn "$FONT"
|
||||
.NE
|
||||
However (even though \fIxfd\fP accepts a \*(``\fB\-fa\fP\*('' option
|
||||
to denote FreeType fonts),
|
||||
\fIxfontsel\fP has not been similarly extended.
|
||||
As a workaround, you may try
|
||||
.NS
|
||||
fc-list :scalable=true:spacing=mono: family
|
||||
.NE
|
||||
to find a list of scalable fixed-pitch fonts
|
||||
which may be used for the \fBfaceName\fP resource value.
|
||||
.TP 8
|
||||
.B "faceNameDoublesize (\fPclass\fB FaceNameDoublesize)"
|
||||
Specify an double-width font for cases where an application requires
|
||||
Specify a double-width scalable font for cases where an application requires
|
||||
this, e.g., in CJK applications.
|
||||
There is no default value.
|
||||
.IP
|
||||
@ -2388,14 +2425,14 @@ If the application uses double-wide characters and this resource is not given,
|
||||
.B "faceSize (\fPclass\fB FaceSize)"
|
||||
Specify the pointsize for fonts selected from the FreeType
|
||||
library if support for that library was compiled into \fIxterm\fR.
|
||||
The default is \*(``14.\*(''
|
||||
The default is \*(``14.0\*(''
|
||||
On the \fBVT\ Fonts\fP menu, this corresponds to the \fIDefault\fP entry.
|
||||
.IP
|
||||
Although the default is \*(``14.\*('',
|
||||
Although the default is \*(``14.0\*('',
|
||||
this may not be the same as the pointsize for the default bitmap font,
|
||||
i.e., that assigned with the \fB\-fn\fP option,
|
||||
or the \fBfont\fP resource.
|
||||
For example, the "fixed" font usually has a pointsize of \*(``8.\*(''.
|
||||
For example, the \*(``fixed\*('' font usually has a pointsize of \*(``8.0\*(''.
|
||||
If you set \fBfaceSize\fP to match the size of the bitmap font,
|
||||
then switching between bitmap and TrueType fonts via the font menu
|
||||
will give comparable sizes for the window.
|
||||
@ -2690,18 +2727,18 @@ border visible.
|
||||
.B "iconBorderWidth (\fPclass\fB BorderWidth)"
|
||||
Specifies the border width for the active icon window if this feature
|
||||
is compiled into \fIxterm\fR.
|
||||
The default is 2.
|
||||
The default is \*(``2\*(''.
|
||||
Not all window managers will make the border visible.
|
||||
.TP 8
|
||||
.B "iconFont (\fPclass\fB IconFont)"
|
||||
Specifies the font for the miniature active icon window, if this feature
|
||||
is compiled into \fIxterm\fR.
|
||||
The default is "nil2".
|
||||
The default is \*(``nil2\*(''.
|
||||
.TP 8
|
||||
.B "initialFont (\fPclass\fB InitialFont)"
|
||||
Specifies which of the VT100 fonts to use initially.
|
||||
Values are the same as for the \fIset-vt-font\fP action.
|
||||
The default is \*(``d\*('', i.e., "default".
|
||||
The default is \*(``d\*('', i.e., \*(``default\*(''.
|
||||
.TP 8
|
||||
.B "inputMethod (\fPclass\fB XtCInputMethod)"
|
||||
Tells \fIxterm\fP which type of input method to use.
|
||||
@ -2709,7 +2746,7 @@ There is no default method.
|
||||
.TP 8
|
||||
.B "internalBorder (\fPclass\fB BorderWidth)"
|
||||
Specifies the number of pixels between the characters and the window border.
|
||||
The default is 2.
|
||||
The default is \*(``2\*(''.
|
||||
.TP 8
|
||||
.B "italicULMode (\fPclass\fB ColorAttrMode)"
|
||||
Specifies whether characters with the underline attribute should be displayed
|
||||
@ -2790,10 +2827,10 @@ At startup, \fIxterm\fP uses a mechanism equivalent to
|
||||
the \fBload-vt-fonts(utf8Fonts,\ Utf8Fonts)\fP action
|
||||
to load font name subresources of the VT100 widget.
|
||||
That is,
|
||||
resource patterns such as "\fB*vt100.utf8Fonts.font\fP" will be loaded,
|
||||
resource patterns such as \*(``\fB*vt100.utf8Fonts.font\fP\*('' will be loaded,
|
||||
and (if this resource is enabled), override the normal fonts.
|
||||
If no subresources are found,
|
||||
the normal fonts such as "\fB*vt100.font\fP", etc., are used.
|
||||
the normal fonts such as \*(``\fB*vt100.font\fP\*('', etc., are used.
|
||||
The resource files distributed with \fIxterm\fP use ISO-10646-1 fonts,
|
||||
but do not rely on them unless you are using the locale mechanism.
|
||||
.TP 8
|
||||
@ -2922,7 +2959,7 @@ terminals that implement user-defined keys (UDK).
|
||||
.TP 8
|
||||
.B "modifyOtherKeys (\fPclass\fB ModifyOtherKeys\fP)"
|
||||
Like \fBmodifyCursorKeys\fP, tells \fIxterm\fP to construct an
|
||||
escape sequence for other keys (such as "2") when modified by
|
||||
escape sequence for other keys (such as \*(``2\*('') when modified by
|
||||
Control-, Alt- or Meta-modifiers.
|
||||
This feature does not apply to function keys and well-defined
|
||||
keys such as ESC or the control keys.
|
||||
@ -2944,7 +2981,7 @@ enables this feature for keys including the exceptions listed.
|
||||
.B "multiClickTime (\fPclass\fB MultiClickTime)"
|
||||
Specifies the maximum time in milliseconds between multi-click select
|
||||
events.
|
||||
The default is 250 milliseconds.
|
||||
The default is \*(``250\*('' milliseconds.
|
||||
.TP 8
|
||||
.B "multiScroll (\fPclass\fB MultiScroll)"
|
||||
Specifies whether or not scrolling should be done asynchronously.
|
||||
@ -2953,7 +2990,7 @@ The default is \*(``false.\*(''
|
||||
.B "nMarginBell (\fPclass\fB Column)"
|
||||
Specifies the number of characters from the right margin at which the margin
|
||||
bell should be rung, when enabled by the \fBmarginBell\fP resource.
|
||||
The default is 10.
|
||||
The default is \*(``10\*(''.
|
||||
.TP 8
|
||||
.B "numLock (\fPclass\fB NumLock)"
|
||||
If \*(``true\*('', \fIxterm\fR checks if NumLock is used as a modifier (see \fIxmodmap\fP(__mansuffix__)).
|
||||
@ -3073,32 +3110,100 @@ The default is \*(``OverTheSpot,Root\*(''.
|
||||
Specifies whether to print graphic attributes along with the text.
|
||||
A real DEC VTxxx terminal will print the underline, highlighting codes
|
||||
but your printer may not handle these.
|
||||
A \*(``0\*('' disables the attributes.
|
||||
A \*(``1\*('' prints the normal set of attributes (bold, underline, inverse and blink)
|
||||
.RS
|
||||
.bP
|
||||
\*(``0\*('' disables the attributes.
|
||||
.bP
|
||||
\*(``1\*('' prints the normal set of attributes (bold, underline, inverse and blink)
|
||||
as VT100-style control sequences.
|
||||
A \*(``2\*('' prints ANSI color attributes as well.
|
||||
The default is \*(``1.\*(''
|
||||
.bP
|
||||
\*(``2\*('' prints ANSI color attributes as well.
|
||||
.RE
|
||||
.IP
|
||||
The default is \*(``1\*(''.
|
||||
.TP 8
|
||||
.B "printFileImmediate (\fPPrintFileImmediate)"
|
||||
When the \fBprint-immediate\fP action is invoked,
|
||||
\fIxterm\fP prints the screen contents directly to a file.
|
||||
Set this resource to the prefix of the filename
|
||||
(a timestamp will be appended to the actual name).
|
||||
.IP
|
||||
The default is an empty string, i.e., \*(``\*('',
|
||||
However, when the \fBprint-immediate\fP action is invoked,
|
||||
if the string is empty, then \*(``XTerm\*('' is used.
|
||||
.TP 8
|
||||
.B "printFileOnXError (\fPPrintFileOnXError)"
|
||||
If \fIxterm\fP exits with an X error,
|
||||
e.g. your connection is broken when the server crashes,
|
||||
e.g., your connection is broken when the server crashes,
|
||||
it can be told to write the contents of the screen to a file.
|
||||
To enable the feature, set this resource to the name of the file.
|
||||
The default is an empty string,
|
||||
To enable the feature, set this resource to the prefix of the filename
|
||||
(a timestamp will be appended to the actual name).
|
||||
.IP
|
||||
The default is an empty string, i.e., \*(``\*('',
|
||||
which disables this feature.
|
||||
However, when the \fBprint-on-error\fP action is invoked,
|
||||
if the string is empty, then \*(``XTermError\*('' is used.
|
||||
.IP
|
||||
These error codes are handled:
|
||||
ERROR_XERROR,
|
||||
ERROR_XIOERROR and
|
||||
ERROR_ICEERROR.
|
||||
.TP 8
|
||||
.B "printModeImmediate (\fPPrintModeImmediate)"
|
||||
When the \fBprint-immediate\fP action is invoked,
|
||||
\fIxterm\fP prints the screen contents directly to a file.
|
||||
You can use the \fBprintModeImmediate\fP resource to tell it to
|
||||
use escape sequences to reconstruct the video attributes and colors.
|
||||
This uses the same values as the \fBprintAttributes\fP resource.
|
||||
The default is \*(``0\*(''.
|
||||
.TP 8
|
||||
.B "printModeOnXError (\fPPrintModeOnXError)"
|
||||
\fIXterm\fP implements the \fBprintFileOnXError\fP feature using
|
||||
the printer feature, although the output is written directly to a file.
|
||||
You can use the \fBprintModeOnXError\fP resource to tell it to
|
||||
use escape sequences to reconstruct the video attributes and colors.
|
||||
This uses the same values as the \fBprintAttributes\fP resource.
|
||||
The default is \*(``0.\*(''
|
||||
The default is \*(``0\*(''.
|
||||
.TP 8
|
||||
.B "printOptsImmediate (\fPPrintOptsImmediate)"
|
||||
Specify the range of text which is printed to a file when
|
||||
the \fBprint-immediately\fP action is invoked.
|
||||
.RS
|
||||
.bP
|
||||
If zero (0), then this selects the current (visible screen) plus the
|
||||
saved lines, except if the alternate screen is being used.
|
||||
In that case, only the alternate screen is selectd.
|
||||
.bP
|
||||
If nonzero,
|
||||
the bits of this resource value (checked in descending order)
|
||||
select the range:
|
||||
.RS
|
||||
.TP 3
|
||||
8
|
||||
selects the saved lines.
|
||||
.TP 3
|
||||
4
|
||||
selects the alternate screen.
|
||||
.TP 3
|
||||
2
|
||||
selects the normal screen.
|
||||
.TP 3
|
||||
1
|
||||
selects the current screen,
|
||||
which can be either the normal or alternate screen.
|
||||
.RE
|
||||
.RE
|
||||
.IP
|
||||
The default is \*(``9\*('', which selects the current visible screen
|
||||
plus saved lines, with no special case for the alternated screen.
|
||||
.TP 8
|
||||
.B "printOptsOnXError (\fPPrintOptsOnXError)"
|
||||
Specify the range of text which is printed to a file when
|
||||
the \fBprint-on-error\fP action is invoked.
|
||||
The resource value is interpreted the same as in \fBprintOptsImmediate\fP.
|
||||
.IP
|
||||
The default is \*(``9\*('', which selects the current visible screen
|
||||
plus saved lines, with no special case for the alternated screen.
|
||||
.TP 8
|
||||
.B "printerAutoClose (\fPclass\fB PrinterAutoClose)"
|
||||
If \*(``true\*('', \fIxterm\fR will close the printer (a pipe) when the application switches
|
||||
@ -3110,8 +3215,8 @@ Specifies a shell command to which
|
||||
.I xterm
|
||||
will open a pipe when the first
|
||||
MC (Media Copy) command is initiated.
|
||||
The default is a blank string.
|
||||
If the resource value is given as a blank string, the printer is disabled.
|
||||
The default is an empty string, i.e., \*(``\*(''.
|
||||
If the resource value is given as an empty string, the printer is disabled.
|
||||
.TP 8
|
||||
.B "printerControlMode (\fPclass\fB PrinterControlMode)"
|
||||
Specifies the printer control mode.
|
||||
@ -3122,7 +3227,7 @@ line with a line feed, form feed or vertical tab character, or an
|
||||
autowrap occurs.
|
||||
Autoprint mode is overridden by printer controller mode (a \*(``2\*(''),
|
||||
which causes all of the output to be directed to the printer.
|
||||
The default is \*(``0.\*(''
|
||||
The default is \*(``0\*(''.
|
||||
.TP 8
|
||||
.B "printerExtent (\fPclass\fB PrinterExtent)"
|
||||
Controls whether a print page function will print the entire page (true), or
|
||||
@ -3231,7 +3336,7 @@ some users prefer the X defaults (black text on a white background),
|
||||
others prefer white text on a black background.
|
||||
.bP
|
||||
After startup,
|
||||
the user can toggle the "Enable Reverse Video" menu entry.
|
||||
the user can toggle the \*(``Enable Reverse Video\*('' menu entry.
|
||||
This exchanges the current foreground and background colors
|
||||
of the VT100 widget,
|
||||
and repaints the screen.
|
||||
@ -3255,7 +3360,7 @@ foreground and background colors.
|
||||
Extensions to the ANSI color controls (such as 16-, 88- or 256-colors)
|
||||
are treated similarly to the ANSI control.
|
||||
.bP
|
||||
Using other control sequences (the "\fIdynamic colors\fR" feature),
|
||||
Using other control sequences (the \*(``\fIdynamic colors\fR\*('' feature),
|
||||
a program can change the foreground and background colors.
|
||||
.RE
|
||||
.TP 8
|
||||
@ -3273,7 +3378,7 @@ The default is \*(``false.\*(''
|
||||
.B "saveLines (\fPclass\fB SaveLines)"
|
||||
Specifies the number of lines to save beyond the top of the screen when a
|
||||
scrollbar is turned on.
|
||||
The default is 64.
|
||||
The default is \*(``64\*(''.
|
||||
.TP 8
|
||||
.B "scrollBar (\fPclass\fB ScrollBar)"
|
||||
Specifies whether or not the scrollbar should be displayed.
|
||||
@ -3390,9 +3495,10 @@ Tells \fIxterm\fP whether to accept or return
|
||||
window- and icon-labels in ISO-8859-1
|
||||
(the default) or UTF-8.
|
||||
Either can be encoded in hexadecimal.
|
||||
The default for this resource is \*(``0.\*(''
|
||||
The default for this resource is \*(``0\*(''.
|
||||
.IP
|
||||
Each bit (bit "0" is 1, bit "1" is 2, etc) corresponds to one of the
|
||||
Each bit (bit \*(``0\*('' is 1, bit \*(``1\*('' is 2, etc.)
|
||||
corresponds to one of the
|
||||
parameters set by the title modes control sequence:
|
||||
.RS
|
||||
.TP 5
|
||||
@ -3447,7 +3553,7 @@ The default is \*(``true.\*(''
|
||||
.B "utf8 (\fPclass\fB Utf8)"
|
||||
This specifies whether \fIxterm\fP will run in UTF-8 mode.
|
||||
If you set this resource, \fIxterm\fP also sets the \fBwideChars\fP resource as a side-effect.
|
||||
The resource can be set via the menu entry "UTF-8 Encoding".
|
||||
The resource can be set via the menu entry \*(``UTF-8 Encoding\*(''.
|
||||
The default is \*(``default.\*(''
|
||||
.IP
|
||||
\fIXterm\fP accepts either a keyword (ignoring case)
|
||||
@ -3483,9 +3589,9 @@ escape sequences for turning UTF-8 mode on/off are allowed.
|
||||
.B "utf8Fonts (\fPclass\fB Utf8Fonts)"
|
||||
See the discussion of the \fBlocale\fP resource.
|
||||
This specifies whether \fIxterm\fP will use UTF-8 fonts specified via
|
||||
resource patterns such as "\fB*vt100.utf8Fonts.font\fP"
|
||||
or normal (ISO-8859-1) fonts via patterns such as "\fB*vt100.font\fP".
|
||||
The resource can be set via the menu entry "UTF-8 Fonts".
|
||||
resource patterns such as \*(``\fB*vt100.utf8Fonts.font\fP\*(''
|
||||
or normal (ISO-8859-1) fonts via patterns such as \*(``\fB*vt100.font\fP\*(''.
|
||||
The resource can be set via the menu entry \*(``UTF-8 Fonts\*(''.
|
||||
The default is \*(``default.\*(''
|
||||
.IP
|
||||
\fIXterm\fP accepts either a keyword (ignoring case)
|
||||
@ -3521,7 +3627,8 @@ The default is \*(``false.\*(''
|
||||
.B "utf8SelectTypes (\fPclass\fB Utf8SelectTypes)"
|
||||
Override \fIxterm\fP's default selection target list (see SELECT/PASTE) for
|
||||
selections in wide-character (UTF-8) mode.
|
||||
The default is an empty string, which does not override anything.
|
||||
The default is an empty string, i.e., \*(``\*('',
|
||||
which does not override anything.
|
||||
.TP 8
|
||||
.B "utf8Title (\fPclass\fB Utf8Title)"
|
||||
Applications can set \fIxterm\fP's title by writing a control sequence.
|
||||
@ -3541,7 +3648,8 @@ allowing UTF-8 strings to be displayed as is.
|
||||
.IP
|
||||
This feature is available as a menu entry, since it is related to
|
||||
the particular applications you are running within \fIxterm\fP.
|
||||
You can also use a control sequence (see the discussion of "Title Modes"
|
||||
You can also use a control sequence
|
||||
(see the discussion of \*(``Title Modes\*(''
|
||||
in the control sequences document), to set an equivalent flag.
|
||||
The \fBtitleModes\fP resource sets the same value,
|
||||
which overrides this resource.
|
||||
@ -3561,7 +3669,7 @@ The resource value is the sum of values for each attribute:
|
||||
.fi
|
||||
.RE
|
||||
.IP
|
||||
The default is \*(``0.\*(''
|
||||
The default is \*(``0\*(''.
|
||||
.TP 8
|
||||
.B "visualBell (\fPclass\fB VisualBell)"
|
||||
Specifies whether or not a visible bell (i.e., flashing) should be used instead
|
||||
@ -3602,15 +3710,15 @@ the normal font.
|
||||
.TP 8
|
||||
.B "ximFont (\fPclass\fB XimFont)"
|
||||
This option specifies the font to be used for displaying the preedit string
|
||||
in the "OverTheSpot" input method.
|
||||
in the \*(``OverTheSpot\*('' input method.
|
||||
.IP
|
||||
In "OverTheSpot" preedit type, the preedit (preconversion)
|
||||
In \*(``OverTheSpot\*('' preedit type, the preedit (preconversion)
|
||||
string is displayed at the position of the cursor.
|
||||
It is the XIM server's responsibility to display the preedit string.
|
||||
The XIM client must inform the XIM server of the cursor position.
|
||||
For best results, the preedit string must be displayed with a proper font.
|
||||
Therefore, \fIxterm\fP informs the XIM server of the proper font.
|
||||
The font is be supplied by a "fontset", whose default value is "*".
|
||||
The font is be supplied by a "fontset", whose default value is \*(``*\*(''.
|
||||
This matches every font, the X library automatically chooses fonts with
|
||||
proper charsets.
|
||||
The \fBximFont\fP resource is provided to override this default font setting.
|
||||
@ -3619,7 +3727,7 @@ The \fBximFont\fP resource is provided to override this default font setting.
|
||||
.PP
|
||||
The following resources are specified
|
||||
as part of the \fItek4014\fP widget (class \fITek4014\fP).
|
||||
These are specified by patterns such as "\fBXTerm.tek4014.\fP\fINAME\fP":
|
||||
These are specified by patterns such as \*(``\fBXTerm.tek4014.\fP\fINAME\fP\*('':
|
||||
.TP 8
|
||||
.B "font2 (\fPclass\fB Font)"
|
||||
Specifies font number 2 to use in the Tektronix window.
|
||||
@ -3656,7 +3764,7 @@ The resources that may be specified for the various menus are described in
|
||||
the documentation for the Athena \fBSimpleMenu\fP widget.
|
||||
The name and classes
|
||||
of the entries in each of the menus are listed below.
|
||||
Resources named "\fBline\fR\fIN\fR" where \fIN\fR is a number
|
||||
Resources named \*(``\fBline\fR\fIN\fR\*('' where \fIN\fR is a number
|
||||
are separators with class \fBSmeLine\fR.
|
||||
.
|
||||
.PP
|
||||
@ -3677,6 +3785,12 @@ This entry invokes the \fBredraw()\fP action.
|
||||
.B "logging (\fPclass\fB SmeBSB)"
|
||||
This entry invokes the \fBlogging(toggle)\fP action.
|
||||
.TP 8
|
||||
.B "print-immediate (\fPclass\fB SmeBSB)"
|
||||
This entry invokes the \fBprint-immediate()\fP action.
|
||||
.TP 8
|
||||
.B "print-on-error (\fPclass\fB SmeBSB)"
|
||||
This entry invokes the \fBprint-on-error()\fP action.
|
||||
.TP 8
|
||||
.B "print (\fPclass\fB SmeBSB)"
|
||||
This entry invokes the \fBprint()\fP action.
|
||||
.TP 8
|
||||
@ -4044,11 +4158,11 @@ When configured to use the primary selection,
|
||||
provide the selection data in ways which help to retain character
|
||||
encoding information as it is pasted.
|
||||
.PP
|
||||
A user "selects" text on xterm, which highlights the selected text.
|
||||
A subsequent "paste" to another client forwards a request to the client owning
|
||||
A user \*(``selects\*('' text on xterm, which highlights the selected text.
|
||||
A subsequent \*(``paste\*('' to another client forwards a request to the client owning
|
||||
the selection.
|
||||
If \fIxterm\fP owns the primary selection, it makes the data
|
||||
available in the form of one or more "selection targets".
|
||||
available in the form of one or more \*(``selection targets\*(''.
|
||||
If it does not own the primary selection,
|
||||
e.g., if it has released it or another client has
|
||||
asserted ownership, it relies on cut-buffers to pass the data.
|
||||
@ -4105,7 +4219,8 @@ You can alter the types which \fIxterm\fP tries using the
|
||||
For instance, you might have some specific locale setting
|
||||
which does not use UTF-8 encoding.
|
||||
The resource value is a comma-separated list of the selection targets,
|
||||
which consist of the names shown. You can use the special name I18N
|
||||
which consist of the names shown.
|
||||
You can use the special name I18N
|
||||
to denote the optional inclusion of TEXT and COMPOUND_TEXT.
|
||||
The names are matched ignoring case, and can be abbreviated.
|
||||
The default list can be expressed in several ways, e.g.,
|
||||
@ -4152,7 +4267,7 @@ Commands for managing X events:
|
||||
.RS
|
||||
.TP
|
||||
Toolbar
|
||||
Clicking on the "Toolbar" menu entry hides the toolbar if it is visible,
|
||||
Clicking on the \*(``Toolbar\*('' menu entry hides the toolbar if it is visible,
|
||||
and shows it if it is not.
|
||||
.TP
|
||||
Secure Keyboard (securekbd)
|
||||
@ -4179,6 +4294,25 @@ Log to File (logging)
|
||||
Captures text sent to the screen in a logfile,
|
||||
as in the \fB\-l\fP logging option.
|
||||
.TP
|
||||
Print-All Immediately
|
||||
Invokes the \fBprint-immediate\fP action,
|
||||
sending the text of the current window directly to a file,
|
||||
as specified by the
|
||||
\fBprintFileImmediate\fP,
|
||||
\fBprintModeImmediate\fP and
|
||||
\fBprintOptsImmediate\fP
|
||||
resources.
|
||||
.TP
|
||||
Print-All on Error
|
||||
Invokes the \fBprint-on-error\fP action,
|
||||
which toggles a flag telling \fIxterm\fP that if it exits with an X error,
|
||||
to send the text of the current window directly to a file,
|
||||
as specified by the
|
||||
\fBprintFileXError\fP,
|
||||
\fBprintModeXError\fP and
|
||||
\fBprintOptsXError\fP
|
||||
resources.
|
||||
.TP
|
||||
Print Window (print)
|
||||
Sends the text of the current window to the program given in the
|
||||
\fBprinterCommand\fP resource.
|
||||
@ -4623,14 +4757,20 @@ It is useful for temporarily switching \fIxterm\fP to display
|
||||
text from an application which does not follow the locale settings.
|
||||
It corresponds to the \fButf8\fP resource.
|
||||
.TP
|
||||
UTF-8 Titles (utf8-mode)
|
||||
UTF-8 Fonts (utf8-fonts)
|
||||
This controls whether \fIxterm\fP uses UTF-8 fonts for display.
|
||||
It is useful for temporarily switching \fIxterm\fP to display
|
||||
text from an application which does not follow the locale settings.
|
||||
It combines the \fButf8\fP and \fButf8Fonts\fP resources.
|
||||
.TP
|
||||
UTF-8 Titles (utf8-titles)
|
||||
This controls whether \fIxterm\fP accepts UTF-8 encoding for
|
||||
title control sequences.
|
||||
It corresponds to the \fButf8Fonts\fP resource.
|
||||
.IP
|
||||
Initially the checkmark is set according to both the \fButf8\fP
|
||||
and \fButf8Fonts\fP resource values.
|
||||
If the latter is set to "always", the checkmark is disabled.
|
||||
If the latter is set to \*(``always\*('', the checkmark is disabled.
|
||||
Likewise, if there are no fonts given in the \fButf8Fonts\fP
|
||||
subresources, then the checkmark also is disabled.
|
||||
.IP
|
||||
@ -5009,11 +5149,12 @@ the \fBmetaSendsEscape\fP and
|
||||
the \fBeightBitInput\fP resources.
|
||||
The \fBmetaSendsEscape\fP resource is tested first.
|
||||
.IP
|
||||
The term "eight-bit" is misleading:
|
||||
The term \*(``eight-bit\*('' is misleading:
|
||||
\fIxterm\fP checks if the key's value is less than 128.
|
||||
If so, \fIxterm\fP adds 128 to the value, setting its eighth bit.
|
||||
Otherwise \fIxterm\fP sends an ESC byte before the key.
|
||||
In other applications' documentation, that is referred to as a "meta key".
|
||||
In other applications' documentation,
|
||||
that is referred to as a \*(``meta key\*(''.
|
||||
.TP 8
|
||||
.B "insert-selection(\fIsourcename\fP [, ...])"
|
||||
This action inserts the string found in the selection or cutbuffer indicated
|
||||
@ -5027,7 +5168,7 @@ typically named \fICUT_BUFFER0\fP through \fICUT_BUFFER7\fP.
|
||||
.TP 8
|
||||
.B "insert-seven-bit()"
|
||||
This action is a synonym for \fBinsert()\fP
|
||||
The term "seven-bit" is misleading:
|
||||
The term \*(``seven-bit\*('' is misleading:
|
||||
it only implies that \fIxterm\fP does not try to add 128 to the key's value
|
||||
as in \fBinsert-eight-bit()\fP.
|
||||
.TP 8
|
||||
@ -5036,8 +5177,8 @@ Interpret the given control sequence locally, i.e., without passing it to
|
||||
the host.
|
||||
This works by inserting the control sequence at the front
|
||||
of the input buffer.
|
||||
Use "\\" to escape octal digits in the string.
|
||||
Xt does not allow you to put a null character (i.e., "\\000") in the string.
|
||||
Use \*(``\\\*('' to escape octal digits in the string.
|
||||
Xt does not allow you to put a null character (i.e., \*(``\\000\*('') in the string.
|
||||
.TP 8
|
||||
.B "keymap(\fIname\fP)"
|
||||
This action dynamically defines a new translation table whose resource
|
||||
@ -5050,7 +5191,8 @@ See also \fBset-vt-font()\fP.
|
||||
.TP 8
|
||||
.B "load-vt-fonts(\fIname\fP[,\fIclass\fP])"
|
||||
Load fontnames from the given subresource name and class.
|
||||
That is, load the "*VT100.\fIname\fP.font", resource as "*VT100.font" etc.
|
||||
That is, load the \*(``*VT100.\fIname\fP.font\*('',
|
||||
resource as \*(``*VT100.font\*('' etc.
|
||||
If no name is given, the original set of fontnames is restored.
|
||||
.IP
|
||||
Unlike \fBset-vt-font()\fR, this does not affect the escape- and select-fonts,
|
||||
@ -5117,6 +5259,23 @@ It allows the same optional parameters as the \fBprint\fP action.
|
||||
With a suitable printer command, the action can be used to load the text
|
||||
history in an editor.
|
||||
.TP 8
|
||||
.B "print-immediate()"
|
||||
Sends the text of the current window directly to a file,
|
||||
as specified by the
|
||||
\fBprintFileImmediate\fP,
|
||||
\fBprintModeImmediate\fP and
|
||||
\fBprintOptsImmediate\fP
|
||||
resources.
|
||||
.TP 8
|
||||
.B "print-on-error()"
|
||||
Toggles a flag telling \fIxterm\fP that if it exits with an X error,
|
||||
to send the text of the current window directly to a file,
|
||||
as specified by the
|
||||
\fBprintFileXError\fP,
|
||||
\fBprintModeXError\fP and
|
||||
\fBprintOptsXError\fP
|
||||
resources.
|
||||
.TP 8
|
||||
.B "print-redir()"
|
||||
This action toggles the \fBprinterControlMode\fR between 0 and 2.
|
||||
The corresponding popup menu entry is useful for switching the printer
|
||||
@ -5149,7 +5308,8 @@ The \fIcount\fP argument
|
||||
indicates the number of \fIunits\fP (which may be \fIpage\fP, \fIhalfpage\fP,
|
||||
\fIpixel\fP, or \fIline\fP) by which to scroll.
|
||||
.IP
|
||||
An adjustment can be specified for these values by appending a "+" or "\-"
|
||||
An adjustment can be specified for these values
|
||||
by appending a \*(``+\*('' or \*(``\-\*(''
|
||||
sign followed by a number,
|
||||
e.g., \fIpage\-2\fP to specify 2 lines less than a page.
|
||||
.IP
|
||||
@ -5431,12 +5591,12 @@ The effect is identical to a soft reset (DECSTR) control sequence.
|
||||
.B "spawn-new-terminal(params)"
|
||||
Spawn a new \fIxterm\fP process.
|
||||
This is available on systems which have a modern version of the
|
||||
process filesystem, e.g., "/proc", which \fIxterm\fP can read.
|
||||
process filesystem, e.g., \*(``/proc\*('', which \fIxterm\fP can read.
|
||||
.IP
|
||||
Use the "cwd" process entry, e.g., /proc/12345/cwd to obtain the
|
||||
Use the \*(``cwd\*('' process entry, e.g., /proc/12345/cwd to obtain the
|
||||
working directory of the process which is running in the current \fIxterm\fP.
|
||||
.IP
|
||||
On systems which have the "exe" process entry, e.g., /proc/12345/exe,
|
||||
On systems which have the \*(``exe\*('' process entry, e.g., /proc/12345/exe,
|
||||
use this to obtain the actual executable.
|
||||
Otherwise, use the $PATH variable to find \fIxterm\fP.
|
||||
.IP
|
||||
@ -5674,13 +5834,13 @@ Depending on your system configuration, \fIxterm\fP may also set the
|
||||
following:
|
||||
.TP 5
|
||||
COLUMNS
|
||||
the width of the \fIxterm\fP in characters (cf: "stty columns").
|
||||
the width of the \fIxterm\fP in characters (cf: \*(``stty columns\*('').
|
||||
.TP 5
|
||||
HOME
|
||||
when \fIxterm\fP is configured to update utmp.
|
||||
.TP 5
|
||||
LINES
|
||||
the height of the \fIxterm\fP in characters (cf: "stty rows").
|
||||
the height of the \fIxterm\fP in characters (cf: \*(``stty rows\*('').
|
||||
.TP 5
|
||||
LOGNAME
|
||||
when \fIxterm\fP is configured to update utmp.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: xterm_io.h,v 1.50 2010/05/23 16:04:32 tom Exp $ */
|
||||
/* $XTermId: xterm_io.h,v 1.51 2011/07/03 15:48:35 Paul.Lampert Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 2000-2006,2010 by Thomas E. Dickey
|
||||
@ -56,7 +56,7 @@
|
||||
#define USE_SYSV_TERMIO
|
||||
#endif
|
||||
|
||||
#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__INTERIX) || defined(__APPLE__) || defined(__UNIXWARE__)
|
||||
#if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__INTERIX) || defined(__APPLE__) || defined(__UNIXWARE__) || defined(__hpux)
|
||||
#ifndef USE_POSIX_TERMIOS
|
||||
#define USE_POSIX_TERMIOS
|
||||
#endif
|
||||
@ -133,7 +133,7 @@
|
||||
/*
|
||||
* Terminal I/O includes (termio, termios, sgtty headers).
|
||||
*/
|
||||
#if defined(USE_POSIX_TERMIOS)
|
||||
#if defined(USE_POSIX_TERMIOS) && !defined(__hpux)
|
||||
#include <termios.h>
|
||||
#elif defined(USE_TERMIOS)
|
||||
#include <termios.h>
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: xtermcap.c,v 1.45 2011/02/19 20:28:13 tom Exp $ */
|
||||
/* $XTermId: xtermcap.c,v 1.47 2011/07/11 00:31:26 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 2007-2010,2011 by Thomas E. Dickey
|
||||
@ -68,7 +68,7 @@ typedef struct {
|
||||
} TCAPINFO;
|
||||
/* *INDENT-OFF* */
|
||||
#define DATA(tc,ti,x,y) { tc, ti, x, y }
|
||||
static TCAPINFO table[] = {
|
||||
static const TCAPINFO table[] = {
|
||||
/* tcap terminfo code state */
|
||||
DATA( "%1", "khlp", XK_Help, 0 ),
|
||||
DATA( "#1", "kHLP", XK_Help, SHIFT ),
|
||||
@ -89,8 +89,8 @@ static TCAPINFO table[] = {
|
||||
|
||||
DATA( "#4", "kLFT", XK_Left, SHIFT ),
|
||||
DATA( "%i", "kRIT", XK_Right, SHIFT ),
|
||||
DATA( "kF", "kind", XK_Up, SHIFT ),
|
||||
DATA( "kR", "kri", XK_Down, SHIFT ),
|
||||
DATA( "kF", "kind", XK_Down, SHIFT ),
|
||||
DATA( "kR", "kri", XK_Up, SHIFT ),
|
||||
|
||||
DATA( "k1", "kf1", XK_Fn(1), 0 ),
|
||||
DATA( "k2", "kf2", XK_Fn(2), 0 ),
|
||||
@ -345,7 +345,7 @@ lookupTcapByName(const char *name)
|
||||
int
|
||||
xtermcapKeycode(XtermWidget xw, const char **params, unsigned *state, Bool * fkey)
|
||||
{
|
||||
TCAPINFO *data;
|
||||
const TCAPINFO *data;
|
||||
int which;
|
||||
int code = -1;
|
||||
char *name;
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: xutf8.c,v 1.9 2009/11/05 23:30:05 tom Exp $ */
|
||||
/* $XTermId: xutf8.c,v 1.10 2011/07/04 13:51:08 tom Exp $ */
|
||||
|
||||
/*
|
||||
Copyright (c) 2001 by Juliusz Chroboczek
|
||||
@ -73,22 +73,22 @@ utf8insert(char *dest, int c, int *len_return)
|
||||
return;
|
||||
|
||||
if (c <= 0x7F) {
|
||||
dest[0] = c;
|
||||
dest[0] = (char) c;
|
||||
*len_return = 1;
|
||||
} else if (c <= 0x7FF) {
|
||||
dest[0] = 0xC0 | ((c >> 6) & 0x1F);
|
||||
dest[1] = 0x80 | (c & 0x3F);
|
||||
dest[0] = (char) (0xC0 | ((c >> 6) & 0x1F));
|
||||
dest[1] = (char) (0x80 | (c & 0x3F));
|
||||
*len_return = 2;
|
||||
} else if (c <= 0xFFFF) {
|
||||
dest[0] = 0xE0 | ((c >> 12) & 0x0F);
|
||||
dest[1] = 0x80 | ((c >> 6) & 0x3F);
|
||||
dest[2] = 0x80 | (c & 0x3F);
|
||||
dest[0] = (char) (0xE0 | ((c >> 12) & 0x0F));
|
||||
dest[1] = (char) (0x80 | ((c >> 6) & 0x3F));
|
||||
dest[2] = (char) (0x80 | (c & 0x3F));
|
||||
*len_return = 3;
|
||||
} else {
|
||||
dest[0] = 0xF0 | ((c >> 18) & 0x07);
|
||||
dest[1] = 0x80 | ((c >> 12) & 0x3f);
|
||||
dest[2] = 0x80 | ((c >> 6) & 0x3f);
|
||||
dest[3] = 0x80 | (c & 0x3f);
|
||||
dest[0] = (char) (0xF0 | ((c >> 18) & 0x07));
|
||||
dest[1] = (char) (0x80 | ((c >> 12) & 0x3f));
|
||||
dest[2] = (char) (0x80 | ((c >> 6) & 0x3f));
|
||||
dest[3] = (char) (0x80 | (c & 0x3f));
|
||||
*len_return = 4;
|
||||
}
|
||||
}
|
||||
@ -132,7 +132,7 @@ utf8l1strcpy(char *d, char *s)
|
||||
s++; /* incorrect UTF-8 */
|
||||
continue;
|
||||
} else if ((*s & 0x7C) == 0x40) {
|
||||
*d++ = ((*s & 0x03) << 6) | (s[1] & 0x3F);
|
||||
*d++ = (char) (((*s & 0x03) << 6) | (s[1] & 0x3F));
|
||||
s += 2;
|
||||
} else {
|
||||
*d++ = '?';
|
||||
|
Loading…
Reference in New Issue
Block a user