Update to xterm 262.

tested by ajacoutot@, jasper@ and krw@.
This commit is contained in:
matthieu 2010-10-05 19:37:23 +00:00
parent 203a984640
commit b4ebb62e0d
16 changed files with 1289 additions and 378 deletions

View File

@ -1,4 +1,4 @@
MANIFEST for xterm-260, version xterm-260
MANIFEST for xterm-262, version xterm-262
--------------------------------------------------------------------------------
MANIFEST this file
256colres.h resource-definitions for 256-color mode
@ -36,7 +36,6 @@ config.guess configure script: guess the system type
config.sub configure script: validate system type
configure generated
configure.in template for generating configure script
configure Configuration script for UNIX
ctlseqs.ms documentation: Xterm Control Sequences
ctlseqs.txt generated rendition of ctlseqs.ms
cursor.c VT100 low-level cursor movement

View File

@ -1,4 +1,4 @@
/* $XTermId: VTPrsTbl.c,v 1.58 2010/06/15 10:58:13 tom Exp $ */
/* $XTermId: VTPrsTbl.c,v 1.59 2010/08/24 21:26:42 tom Exp $ */
/*
*
@ -938,14 +938,14 @@ CASE_CSI_EX_STATE,
CASE_CSI_QUOTE_STATE,
CASE_CSI_IGNORE,
/* currency yen brokenbar section */
CASE_CSI_IGNORE,
CASE_CSI_DOLLAR_STATE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_TICK_STATE,
/* diaeresis copyright ordfeminine guillemotleft */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_STAR_STATE,
CASE_CSI_IGNORE,
/* notsign hyphen registered macron */
CASE_CSI_IGNORE,
@ -2498,7 +2498,7 @@ CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* p q r s */
CASE_GROUND_STATE,
CASE_RQM,
CASE_GROUND_STATE,
CASE_DECCARA,
CASE_GROUND_STATE,
@ -2658,7 +2658,7 @@ CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* eth ntilde ograve oacute */
CASE_GROUND_STATE,
CASE_RQM,
CASE_GROUND_STATE,
CASE_DECCARA,
CASE_GROUND_STATE,
@ -3052,7 +3052,7 @@ CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* $ % & ' */
CASE_CSI_IGNORE,
CASE_CSI_DEC_DOLLAR_STATE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
@ -3212,7 +3212,7 @@ CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* currency yen brokenbar section */
CASE_CSI_IGNORE,
CASE_CSI_DEC_DOLLAR_STATE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
@ -3328,6 +3328,332 @@ CASE_GROUND_STATE,
CASE_IGNORE,
};
#if OPT_DEC_RECTOPS
Const PARSE_T csi_dec_dollar_table[] = /* CSI ?... $ */
{
/* NUL SOH STX ETX */
CASE_IGNORE,
CASE_IGNORE,
CASE_IGNORE,
CASE_IGNORE,
/* EOT ENQ ACK BEL */
CASE_IGNORE,
CASE_ENQ,
CASE_IGNORE,
CASE_BELL,
/* BS HT NL VT */
CASE_BS,
CASE_TAB,
CASE_VMOT,
CASE_VMOT,
/* NP CR SO SI */
CASE_VMOT,
CASE_CR,
CASE_SO,
CASE_SI,
/* DLE DC1 DC2 DC3 */
CASE_IGNORE,
CASE_IGNORE,
CASE_IGNORE,
CASE_IGNORE,
/* DC4 NAK SYN ETB */
CASE_IGNORE,
CASE_IGNORE,
CASE_IGNORE,
CASE_IGNORE,
/* CAN EM SUB ESC */
CASE_GROUND_STATE,
CASE_IGNORE,
CASE_GROUND_STATE,
CASE_ESC,
/* FS GS RS US */
CASE_IGNORE,
CASE_IGNORE,
CASE_IGNORE,
CASE_IGNORE,
/* SP ! " # */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* $ % & ' */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* ( ) * + */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* , - . / */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* 0 1 2 3 */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* 4 5 6 7 */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* 8 9 : ; */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* < = > ? */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* @ A B C */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* D E F G */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* H I J K */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* L M N O */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* P Q R S */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* T U V W */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* X Y Z [ */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* \ ] ^ _ */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* ` a b c */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* d e f g */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* h i j k */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* l m n o */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* p q r s */
CASE_DECRQM,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* t u v w */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* x y z { */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* | } ~ DEL */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_IGNORE,
/* 0x80 0x81 0x82 0x83 */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* 0x84 0x85 0x86 0x87 */
CASE_IND,
CASE_NEL,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* 0x88 0x89 0x8a 0x8b */
CASE_HTS,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* 0x8c 0x8d 0x8e 0x8f */
CASE_GROUND_STATE,
CASE_RI,
CASE_SS2,
CASE_SS3,
/* 0x90 0x91 0x92 0x93 */
CASE_DCS,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* 0x94 0x95 0x96 0x97 */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_SPA,
CASE_EPA,
/* 0x98 0x99 0x9a 0x9b */
CASE_SOS,
CASE_GROUND_STATE,
CASE_DECID,
CASE_CSI_STATE,
/* 0x9c 0x9d 0x9e 0x9f */
CASE_ST,
CASE_OSC,
CASE_PM,
CASE_APC,
/* nobreakspace exclamdown cent sterling */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* currency yen brokenbar section */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* diaeresis copyright ordfeminine guillemotleft */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* notsign hyphen registered macron */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* degree plusminus twosuperior threesuperior */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* acute mu paragraph periodcentered */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* cedilla onesuperior masculine guillemotright */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* onequarter onehalf threequarters questiondown */
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
CASE_CSI_IGNORE,
/* Agrave Aacute Acircumflex Atilde */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* Adiaeresis Aring AE Ccedilla */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* Egrave Eacute Ecircumflex Ediaeresis */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* Igrave Iacute Icircumflex Idiaeresis */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* Eth Ntilde Ograve Oacute */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* Ocircumflex Otilde Odiaeresis multiply */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* Ooblique Ugrave Uacute Ucircumflex */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* Udiaeresis Yacute Thorn ssharp */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* agrave aacute acircumflex atilde */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* adiaeresis aring ae ccedilla */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* egrave eacute ecircumflex ediaeresis */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* igrave iacute icircumflex idiaeresis */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* eth ntilde ograve oacute */
CASE_DECRQM,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* ocircumflex otilde odiaeresis division */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* oslash ugrave uacute ucircumflex */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
/* udiaeresis yacute thorn ydiaeresis */
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
CASE_GROUND_STATE,
};
#endif /* OPT_DEC_RECTOPS */
Const PARSE_T dec2_table[] = /* CSI > */
{
/* NUL SOH STX ETX */

View File

@ -1,4 +1,4 @@
# $XTermId: VTparse.def,v 1.39 2010/06/15 10:58:13 tom Exp $
# $XTermId: VTparse.def,v 1.40 2010/08/24 21:26:42 tom Exp $
#
# vile:confmode rs=lf
# -----------------------------------------------------------------------------
@ -182,3 +182,6 @@ CASE_RM_TITLE
CASE_DECSMBV
CASE_DECSWBV
CASE_DECLL
CASE_DECRQM
CASE_RQM
CASE_CSI_DEC_DOLLAR_STATE

View File

@ -1,4 +1,4 @@
/* $XTermId: VTparse.h,v 1.52 2010/06/15 10:58:13 tom Exp $ */
/* $XTermId: VTparse.h,v 1.53 2010/08/24 21:27:13 tom Exp $ */
/*
* Copyright 2002-2009,2010 by Thomas E. Dickey
@ -87,6 +87,7 @@ extern Const PARSE_T scrtable[];
extern Const PARSE_T scs96table[];
extern Const PARSE_T scstable[];
extern Const PARSE_T sos_table[];
extern Const PARSE_T csi_dec_dollar_table[];
#if OPT_DEC_LOCATOR
extern Const PARSE_T csi_tick_table[];
@ -262,5 +263,8 @@ extern Const PARSE_T esc_pct_table[];
#define CASE_DECSMBV 141
#define CASE_DECSWBV 142
#define CASE_DECLL 143
#define CASE_DECRQM 144
#define CASE_RQM 145
#define CASE_CSI_DEC_DOLLAR_STATE 146
#endif /* included_VTparse_h */

View File

@ -1,4 +1,4 @@
/* $XTermId: button.c,v 1.377 2010/06/04 09:27:07 tom Exp $ */
/* $XTermId: button.c,v 1.381 2010/08/23 23:25:57 tom Exp $ */
/*
* Copyright 1999-2009,2010 by Thomas E. Dickey
@ -164,6 +164,40 @@ static void _OwnSelection(XtermWidget xw, String * selections, Cardinal count);
static void do_select_end(XtermWidget xw, XEvent * event, String * params,
Cardinal *num_params, Bool use_cursor_loc);
#define MOUSE_LIMIT (255 - 32)
/* Send SET_EXT_SIZE_MOUSE to enable offsets up to EXT_MOUSE_LIMIT */
#define EXT_MOUSE_LIMIT (2047 - 32)
#define EXT_MOUSE_START (127 - 32)
static unsigned
EmitMousePosition(TScreen * screen, Char line[], unsigned count, int value)
{
int mouse_limit = (screen->ext_mode_mouse
? EXT_MOUSE_LIMIT
: MOUSE_LIMIT);
/* Add pointer position to key sequence
* In extended mode we encode large positions as two-byte UTF-8
*
* NOTE: historically, it was possible to emit 256, which became
* zero by truncation to 8 bits. While this was arguably a bug,
* it's also somewhat useful as a past-end marker. We preserve
* this behavior for both normal and extended mouse modes.
*/
if (value == mouse_limit) {
line[count++] = CharOf(0);
} else if (!screen->ext_mode_mouse || value < EXT_MOUSE_START) {
line[count++] = CharOf(' ' + value + 1);
} else {
value += ' ' + 1;
line[count++] = CharOf(0xC0 + (value >> 6));
line[count++] = CharOf(0x80 + (value & 0x3F));
}
return count;
}
Bool
SendMousePosition(XtermWidget xw, XEvent * event)
{
@ -2167,7 +2201,7 @@ EndExtend(XtermWidget xw,
CELL cell;
unsigned count;
TScreen *screen = TScreenOf(xw);
Char line[9];
Char line[20];
if (use_cursor_loc) {
cell = screen->cursorp;
@ -2190,17 +2224,17 @@ EndExtend(XtermWidget xw,
&& isSameCELL(&cell, &(screen->endSel))) {
/* Use short-form emacs select */
line[count++] = 't';
line[count++] = CharOf(' ' + screen->endSel.col + 1);
line[count++] = CharOf(' ' + screen->endSel.row + 1);
count = EmitMousePosition(screen, line, count, screen->endSel.col);
count = EmitMousePosition(screen, line, count, screen->endSel.row);
} else {
/* long-form, specify everything */
line[count++] = 'T';
line[count++] = CharOf(' ' + screen->startSel.col + 1);
line[count++] = CharOf(' ' + screen->startSel.row + 1);
line[count++] = CharOf(' ' + screen->endSel.col + 1);
line[count++] = CharOf(' ' + screen->endSel.row + 1);
line[count++] = CharOf(' ' + cell.col + 1);
line[count++] = CharOf(' ' + cell.row + 1);
count = EmitMousePosition(screen, line, count, screen->startSel.col);
count = EmitMousePosition(screen, line, count, screen->startSel.row);
count = EmitMousePosition(screen, line, count, screen->endSel.col);
count = EmitMousePosition(screen, line, count, screen->endSel.row);
count = EmitMousePosition(screen, line, count, cell.col);
count = EmitMousePosition(screen, line, count, cell.row);
}
v_write(screen->respond, line, count);
TrackText(xw, &zeroCELL, &zeroCELL);
@ -3991,14 +4025,13 @@ BtnCode(XButtonEvent * event, int button)
return CharOf(result);
}
#define MOUSE_LIMIT (255 - 32)
static void
EditorButton(XtermWidget xw, XButtonEvent * event)
{
TScreen *screen = TScreenOf(xw);
int pty = screen->respond;
Char line[6];
int mouse_limit = screen->ext_mode_mouse ? EXT_MOUSE_LIMIT : MOUSE_LIMIT;
Char line[10];
int row, col;
int button;
unsigned count = 0;
@ -4018,15 +4051,17 @@ EditorButton(XtermWidget xw, XButtonEvent * event)
row = 0;
else if (row > screen->max_row)
row = screen->max_row;
else if (row > MOUSE_LIMIT)
row = MOUSE_LIMIT;
if (col < 0)
col = 0;
else if (col > screen->max_col)
col = screen->max_col;
else if (col > MOUSE_LIMIT)
col = MOUSE_LIMIT;
/* Limit to representable mouse dimensions */
if (row > mouse_limit)
row = mouse_limit;
if (col > mouse_limit)
col = mouse_limit;
/* Build key sequence starting with \E[M */
if (screen->control_eight_bits) {
@ -4086,12 +4121,11 @@ EditorButton(XtermWidget xw, XButtonEvent * event)
screen->mouse_row = row;
screen->mouse_col = col;
/* Add pointer position to key sequence */
line[count++] = CharOf(' ' + col + 1);
line[count++] = CharOf(' ' + row + 1);
TRACE(("mouse at %d,%d button+mask = %#x\n", row, col, line[count - 1]));
TRACE(("mouse at %d,%d button+mask = %#x\n", row, col,
(screen->control_eight_bits) ? line[2] : line[3]));
/* Add pointer position to key sequence */
count = EmitMousePosition(screen, line, count, col);
count = EmitMousePosition(screen, line, count, row);
/* Transmit key sequence to process running under xterm */
v_write(pty, line, count);

View File

@ -1,4 +1,4 @@
/* $XTermId: charproc.c,v 1.1071 2010/06/28 09:03:42 tom Exp $ */
/* $XTermId: charproc.c,v 1.1076 2010/08/29 22:51:09 tom Exp $ */
/*
@ -1223,6 +1223,7 @@ which_table(Const PARSE_T * table)
#if OPT_DEC_RECTOPS
else WHICH_TABLE (csi_dollar_table);
else WHICH_TABLE (csi_star_table);
else WHICH_TABLE (csi_dec_dollar_table);
#endif
#if OPT_WIDE_CHARS
else WHICH_TABLE (esc_pct_table);
@ -2934,15 +2935,17 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
#if OPT_DEC_RECTOPS
case CASE_CSI_DOLLAR_STATE:
TRACE(("CASE_CSI_DOLLAR_STATE\n"));
/* csi dollar ($) */
if (screen->vtXX_level >= 4)
if (screen->vtXX_level >= 3)
sp->parsestate = csi_dollar_table;
else
sp->parsestate = eigtable;
break;
case CASE_CSI_STAR_STATE:
/* csi dollar (*) */
TRACE(("CASE_CSI_STAR_STATE\n"));
/* csi star (*) */
if (screen->vtXX_level >= 4)
sp->parsestate = csi_star_table;
else
@ -2950,34 +2953,42 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
break;
case CASE_DECCRA:
TRACE(("CASE_DECCRA - Copy rectangular area\n"));
xtermParseRect(xw, nparam, param, &myRect);
ScrnCopyRectangle(xw, &myRect, nparam - 5, param + 5);
if (screen->vtXX_level >= 4) {
TRACE(("CASE_DECCRA - Copy rectangular area\n"));
xtermParseRect(xw, nparam, param, &myRect);
ScrnCopyRectangle(xw, &myRect, nparam - 5, param + 5);
}
ResetState(sp);
break;
case CASE_DECERA:
TRACE(("CASE_DECERA - Erase rectangular area\n"));
xtermParseRect(xw, nparam, param, &myRect);
ScrnFillRectangle(xw, &myRect, ' ', 0, True);
if (screen->vtXX_level >= 4) {
TRACE(("CASE_DECERA - Erase rectangular area\n"));
xtermParseRect(xw, nparam, param, &myRect);
ScrnFillRectangle(xw, &myRect, ' ', 0, True);
}
ResetState(sp);
break;
case CASE_DECFRA:
TRACE(("CASE_DECFRA - Fill rectangular area\n"));
if (nparam > 0
&& ((param[0] >= 32 && param[0] <= 126)
|| (param[0] >= 160 && param[0] <= 255))) {
xtermParseRect(xw, nparam - 1, param + 1, &myRect);
ScrnFillRectangle(xw, &myRect, param[0], xw->flags, True);
if (screen->vtXX_level >= 4) {
TRACE(("CASE_DECFRA - Fill rectangular area\n"));
if (nparam > 0
&& ((param[0] >= 32 && param[0] <= 126)
|| (param[0] >= 160 && param[0] <= 255))) {
xtermParseRect(xw, nparam - 1, param + 1, &myRect);
ScrnFillRectangle(xw, &myRect, param[0], xw->flags, True);
}
}
ResetState(sp);
break;
case CASE_DECSERA:
TRACE(("CASE_DECSERA - Selective erase rectangular area\n"));
xtermParseRect(xw, nparam > 4 ? 4 : nparam, param, &myRect);
ScrnWipeRectangle(xw, &myRect);
if (screen->vtXX_level >= 4) {
TRACE(("CASE_DECSERA - Selective erase rectangular area\n"));
xtermParseRect(xw, nparam > 4 ? 4 : nparam, param, &myRect);
ScrnWipeRectangle(xw, &myRect);
}
ResetState(sp);
break;
@ -2988,18 +2999,40 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
break;
case CASE_DECCARA:
TRACE(("CASE_DECCARA - Change attributes in rectangular area\n"));
xtermParseRect(xw, nparam > 4 ? 4 : nparam, param, &myRect);
ScrnMarkRectangle(xw, &myRect, False, nparam - 4, param + 4);
if (screen->vtXX_level >= 4) {
TRACE(("CASE_DECCARA - Change attributes in rectangular area\n"));
xtermParseRect(xw, nparam > 4 ? 4 : nparam, param, &myRect);
ScrnMarkRectangle(xw, &myRect, False, nparam - 4, param + 4);
}
ResetState(sp);
break;
case CASE_DECRARA:
TRACE(("CASE_DECRARA - Reverse attributes in rectangular area\n"));
xtermParseRect(xw, nparam > 4 ? 4 : nparam, param, &myRect);
ScrnMarkRectangle(xw, &myRect, True, nparam - 4, param + 4);
if (screen->vtXX_level >= 4) {
TRACE(("CASE_DECRARA - Reverse attributes in rectangular area\n"));
xtermParseRect(xw, nparam > 4 ? 4 : nparam, param, &myRect);
ScrnMarkRectangle(xw, &myRect, True, nparam - 4, param + 4);
}
ResetState(sp);
break;
case CASE_RQM:
TRACE(("CASE_RQM\n"));
do_rpm(xw, nparam, param);
ResetState(sp);
break;
case CASE_DECRQM:
TRACE(("CASE_DECRQM\n"));
do_decrpm(xw, nparam, param);
ResetState(sp);
break;
case CASE_CSI_DEC_DOLLAR_STATE:
TRACE(("CASE_CSI_DEC_DOLLAR_STATE\n"));
/* csi ? dollar ($) */
sp->parsestate = csi_dec_dollar_table;
break;
#else
case CASE_CSI_DOLLAR_STATE:
/* csi dollar ($) */
@ -3010,6 +3043,11 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
/* csi dollar (*) */
sp->parsestate = eigtable;
break;
case CASE_CSI_DEC_DOLLAR_STATE:
/* csi ? dollar ($) */
sp->parsestate = eigtable;
break;
#endif /* OPT_DEC_RECTOPS */
case CASE_S7C1T:
@ -4322,6 +4360,9 @@ dpmodes(XtermWidget xw, BitFunc func)
set_bool_mode(screen->send_focus_pos);
break;
#endif
case SET_EXT_MODE_MOUSE:
set_bool_mode(screen->ext_mode_mouse);
break;
case 1010: /* rxvt */
set_bool_mode(screen->scrollttyoutput);
update_scrollttyoutput();
@ -4331,7 +4372,7 @@ dpmodes(XtermWidget xw, BitFunc func)
update_scrollkey();
break;
case 1034:
set_bool_mode(TScreenOf(xw)->input_eight_bits);
set_bool_mode(screen->input_eight_bits);
update_alt_esc();
break;
#if OPT_NUM_LOCK
@ -4524,6 +4565,9 @@ savemodes(XtermWidget xw)
DoSM(DP_X_FOCUS, screen->send_focus_pos);
break;
#endif
case SET_EXT_MODE_MOUSE:
DoSM(DP_X_EXT_MOUSE, screen->ext_mode_mouse);
break;
case 1048:
if (!xw->misc.titeInhibit) {
CursorSave(xw);
@ -4692,6 +4736,9 @@ restoremodes(XtermWidget xw)
DoRM(DP_X_FOCUS, screen->send_focus_pos);
break;
#endif
case SET_EXT_MODE_MOUSE:
DoRM(DP_X_EXT_MOUSE, screen->ext_mode_mouse);
break;
case 1048:
if (!xw->misc.titeInhibit) {
CursorRestore(xw);
@ -5205,13 +5252,14 @@ unparseputs(XtermWidget xw, const char *s)
void
unparseputc(XtermWidget xw, int c)
{
IChar *buf = TScreenOf(xw)->unparse_bfr;
TScreen *screen = TScreenOf(xw);
IChar *buf = screen->unparse_bfr;
unsigned len;
if ((TScreenOf(xw)->unparse_len + 2) >= sizeof(TScreenOf(xw)->unparse_bfr))
if ((screen->unparse_len + 2) >= sizeof(screen->unparse_bfr))
unparse_end(xw);
len = TScreenOf(xw)->unparse_len;
len = screen->unparse_len;
#if OPT_TCAP_QUERY
/*
@ -5220,7 +5268,7 @@ unparseputc(XtermWidget xw, int c)
* printable ASCII (counting tab, carriage return, etc). For now,
* just use hexadecimal for the whole thing.
*/
if (TScreenOf(xw)->tc_query_code >= 0) {
if (screen->tc_query_code >= 0) {
char tmp[3];
sprintf(tmp, "%02X", c & 0xFF);
buf[len++] = CharOf(tmp[0]);
@ -5231,7 +5279,7 @@ unparseputc(XtermWidget xw, int c)
buf[len++] = '\n';
}
TScreenOf(xw)->unparse_len = len;
screen->unparse_len = len;
/* If send/receive mode is reset, we echo characters locally */
if ((xw->keyboard.flags & MODE_SRM) == 0) {
@ -7551,8 +7599,8 @@ VTSetValues(Widget cur,
if (!fonts_redone
&& (T_COLOR(TScreenOf(curvt), TEXT_CURSOR) !=
T_COLOR(TScreenOf(newvt), TEXT_CURSOR))) {
set_cursor_gcs(newvt);
refresh_needed = True;
if (set_cursor_gcs(newvt))
refresh_needed = True;
}
if (curvt->misc.re_verse != newvt->misc.re_verse) {
newvt->flags ^= REVERSE_VIDEO;
@ -8232,6 +8280,7 @@ VTReset(XtermWidget xw, Bool full, Bool saved)
/* reset the mouse mode */
screen->send_mouse_pos = MOUSE_OFF;
screen->send_focus_pos = OFF;
screen->ext_mode_mouse = OFF;
screen->waitingForTrackInfo = False;
screen->eventMode = NORMAL;
@ -8625,7 +8674,7 @@ FindFontSelection(XtermWidget xw, const char *atom_name, Bool justprobe)
return;
}
void
Bool
set_cursor_gcs(XtermWidget xw)
{
TScreen *screen = TScreenOf(xw);
@ -8634,7 +8683,7 @@ set_cursor_gcs(XtermWidget xw)
Pixel cc = T_COLOR(screen, TEXT_CURSOR);
Pixel fg = T_COLOR(screen, TEXT_FG);
Pixel bg = T_COLOR(screen, TEXT_BG);
Boolean changed = False;
Bool changed = False;
/*
* Let's see, there are three things that have "color":
@ -8693,6 +8742,7 @@ set_cursor_gcs(XtermWidget xw)
if (changed) {
TRACE(("...set_cursor_gcs - done\n"));
}
return changed;
}
#ifdef NO_LEAKS

View File

@ -1,6 +1,6 @@
.\"#! troff -ms $1 -*- Nroff -*-
.\" "Xterm Control Sequences" document
.\" $XTermId: ctlseqs.ms,v 1.214 2010/06/13 16:58:12 tom Exp $
.\" $XTermId: ctlseqs.ms,v 1.221 2010/08/26 08:26:09 tom Exp $
.\"
.\"
.\" Copyright 1996-2009,2010 by Thomas E. Dickey
@ -79,6 +79,13 @@
.nr PD .3v
.nr VS 12
..
.de bP
.IP \(bu 4
..
.de lP
.sp
.LP
..
.ds CH \" as nothing
.ds LH Xterm Control Sequences
.nr s 6*\n(PS/10
@ -338,7 +345,8 @@ End of Guarded Area (\*(Eg is 0x97)
.IP \\*(Es\\*(XX
Start of String (\*(SS is 0x98)
.IP \\*(Es\\*Z
Return Terminal ID (DECID is 0x9a). Obsolete form of \*(Cs\*c (DA).
Return Terminal ID (DECID is 0x9a).
Obsolete form of \*(Cs\*c (DA).
.IP \\*(Es\\*([[
Control Sequence Introducer (\*(Cs is 0x9b)
.IP \\*(Es\\*(bS
@ -366,7 +374,8 @@ since the only way X provides for this will affect all windows.
There are additional control sequences to provide
\fIxterm-\fPdependent functions, such as the scrollbar or window size.
Where the function is specified by DEC or ISO 6429, the code assigned
to it is given in parentheses. The escape codes to designate and invoke
to it is given in parentheses.
The escape codes to designate and invoke
character sets are specified by ISO 2022; see that document for a
discussion of character sets.
.
@ -522,7 +531,8 @@ enabled by the \fBhpLowerleftBugCompat\fP resource).
Full Reset (RIS)
.
.IP \\*(Es\\*l
Memory Lock (per HP terminals). Locks memory above the cursor.
Memory Lock (per HP terminals).
Locks memory above the cursor.
.
.IP \\*(Es\\*m
Memory Unlock (per HP terminals)
@ -588,11 +598,12 @@ for invalid requests.
.
.IP \\*(Dc\\*+\\*p\\*(Pt\\*s\\*(ST
Set Termcap/Terminfo Data (xterm, experimental).
The string following the "p" is a name to use for retrieving data from
the terminal database. The data will be used for the "tcap" keyboard
The string following the "p" is a name to use for retrieving data from
the terminal database.
The data will be used for the "tcap" keyboard
configuration's function- and special-keys, as well as by the
Request Termcap/Terminfo String control.
.
.IP \\*(Dc\\*+\\*q\\*(Pt\\*s\\*(ST
Request Termcap/Terminfo String (xterm, experimental).
The string following the "q" is a list of names
@ -809,6 +820,7 @@ See the section \fBMouse Tracking\fP.
\*(Ps = \*1\*0\*0\*2 \(-> Use Cell Motion Mouse Tracking.
\*(Ps = \*1\*0\*0\*3 \(-> Use All Motion Mouse Tracking.
\*(Ps = \*1\*0\*0\*4 \(-> Send FocusIn/FocusOut events.
\*(Ps = \*1\*0\*0\*5 \(-> Enable Extended Mouse Mode.
\*(Ps = \*1\*0\*1\*0 \(-> Scroll to bottom on tty output (rxvt).
\*(Ps = \*1\*0\*1\*1 \(-> Scroll to bottom on key press (rxvt).
\*(Ps = \*1\*0\*3\*4 \(-> Interpret "meta" key, sets eighth bit.
@ -901,6 +913,7 @@ See the section \fBMouse Tracking\fP.
\*(Ps = \*1\*0\*0\*2 \(-> Don't use Cell Motion Mouse Tracking.
\*(Ps = \*1\*0\*0\*3 \(-> Don't use All Motion Mouse Tracking.
\*(Ps = \*1\*0\*0\*4 \(-> Don't send FocusIn/FocusOut events.
\*(Ps = \*1\*0\*0\*5 \(-> Disable Extended Mouse Mode.
\*(Ps = \*1\*0\*1\*0 \(-> Don't scroll to bottom on tty output (rxvt).
\*(Ps = \*1\*0\*1\*1 \(-> Don't scroll to bottom on key press (rxvt).
\*(Ps = \*1\*0\*3\*4 \(-> Don't interpret "meta" key
@ -1073,6 +1086,30 @@ which is \*1.
.IP \\*(Cs\\*!\\*p
Soft terminal reset (DECSTR)
.
.IP \\*(Cs\\*(Ps\\*$\\*p
Request ANSI mode (DECRQM).
For VT300 and up, reply is
.br
\*(Cs\*(Ps\*;\*(Pm\*$\*p
.br
where \*(Ps is the mode number as in RM,
and \*(Pm is the mode value:
.br
0 - not recognized
1 - set
2 - reset
3 - permanently set
4 - permanently reset
.
.IP \\*(Cs\\*?\\*(Ps\\*$\\*p
Request DEC private mode (DECRQM).
For VT300 and up, reply is
.br
\*(Cs\*?\*(Ps\*;\*(Pm\*$\*p
.br
where \*(Ps is the mode number as in DECSET,
\*(Pm is the mode value as in the ANSI DECRQM.
.
.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*(c"\\*p
Set conformance level (DECSCL)
Valid values for the first parameter:
@ -1114,11 +1151,12 @@ Valid values for the parameter:
Set Scrolling Region [top;bottom] (default = full size of window) (DECSTBM)
.
.IP \\*(Cs\\*?\\*(Pm\\*s\\*r
Restore DEC Private Mode Values. The value of \*(Ps previously saved is
restored. \*(Ps values are the same as for DECSET.
Restore DEC Private Mode Values.
The value of \*(Ps previously saved is restored.
\*(Ps values are the same as for DECSET.
.
.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*;\\*(Ps\\*$\\*r
Change Attributes in Rectangular Area (DECCARA).
Change Attributes in Rectangular Area (DECCARA), VT400 and up.
\*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
\*(Ps denotes the SGR attributes to change: 0, 1, 4, 5, 7
.
@ -1126,7 +1164,8 @@ Change Attributes in Rectangular Area (DECCARA).
Save cursor (ANSI.SYS)
.
.IP \\*(Cs\\*?\\*(Pm\\*s\\*(cs
Save DEC Private Mode Values. \*(Ps values are the same as for DECSET.
Save DEC Private Mode Values.
\*(Ps values are the same as for DECSET.
.
.IP \\*(Cs\\*(Ps\\*s\\*;\\*(Ps\\*s\\*;\\*(Ps\\*s\\*t
Window manipulation (from \fIdtterm\fP, as well as extensions).
@ -1156,7 +1195,7 @@ If the \fIxterm\fP window is iconified, it returns \*(Cs\*2\*t.
\*(Ps = \*2\*0 \(-> Report \fIxterm\fP window's icon label as
\*(Os\*s\*L\*s\fIlabel\fP\*s\*(ST
\*(Ps = \*2\*1 \(-> Report \fIxterm\fP window's title as
\*(Os\*s\*L\*s\fIlabel\fP\*s\*(ST
\*(Os\*s\*l\*s\fIlabel\fP\*s\*(ST
\*(Ps = \*2\*2\*s\*;\*s\*0 \(-> Save \fIxterm\fP icon and window title on stack.
\*(Ps = \*2\*2\*s\*;\*s\*1 \(-> Save \fIxterm\fP icon title on stack.
\*(Ps = \*2\*2\*s\*;\*s\*2 \(-> Save \fIxterm\fP window title on stack.
@ -1166,9 +1205,9 @@ If the \fIxterm\fP window is iconified, it returns \*(Cs\*2\*t.
\*(Ps >= \*2\*4 \(-> Resize to \*(Ps lines (DECSLPP)
.
.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*;\\*(Ps\\*$\\*t
Reverse Attributes in Rectangular Area (DECRARA).
Reverse Attributes in Rectangular Area (DECRARA), VT400 and up.
\*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
\*(Ps denotes the attributes to reverse. 1, 4, 5, 7
\*(Ps denotes the attributes to reverse, i.e., 1, 4, 5, 7
.
.IP \\*(Cs\\*>\\*(Ps\\*;\\*(Ps\\*s\\*t
Set one or more features of the title modes.
@ -1195,14 +1234,14 @@ Set margin-bell volume (DECSMBV, VT520)
\*(Ps = \*0, \*5, \*6, \*7, or \*8 \(-> high
.
.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*;\\*(Pp\\*;\\*(Pt\\*;\\*(Pl\\*;\\*(Pp\\*$\\*v
Copy Rectangular Area (DECCRA)
Copy Rectangular Area (DECCRA, VT400 and up)
\*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
\*(Pp denotes the source page.
\*(Pt\*;\*(Pl denotes the target location.
\*(Pp denotes the target page.
.
.IP \\*(Cs\\*(Pt\\*s\\*;\\*(Pl\\*s\\*;\\*(Pb\\*s\\*;\\*(Pr\\*s\\*(qu\\*w
Enable Filter Rectangle (DECEFR)
Enable Filter Rectangle (DECEFR), VT420 and up.
.br
Parameters are [top;left;bottom;right].
.br
@ -1235,7 +1274,7 @@ Select Attribute Change Extent (DECSACE).
\*(Ps = \*2 \(-> rectangle (exact).
.
.IP \\*(Cs\\*(Pc\\*;\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*$\\*x
Fill Rectangular Area (DECFRA).
Fill Rectangular Area (DECFRA), VT420 and up.
\*(Pc is the character to use.
\*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
.
@ -1255,7 +1294,7 @@ Valid values for the second parameter:
\*(Pu = \*2 \(-> character cells
.
.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*$\\*z
Erase Rectangular Area (DECERA).
Erase Rectangular Area (DECERA), VT400 and up.
\*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
.
.IP \\*(Cs\\*(Pm\\*s\\*(qu\\*{
@ -1270,7 +1309,7 @@ Valid values for the first (and any additional parameters) are:
\*(Ps = \*4 \(-> do not report button up transitions
.
.IP \\*(Cs\\*(Pt\\*;\\*(Pl\\*;\\*(Pb\\*;\\*(Pr\\*$\\*{
Selective Erase Rectangular Area (DECSERA).
Selective Erase Rectangular Area (DECSERA), VT400 and up.
\*(Pt\*;\*(Pl\*;\*(Pb\*;\*(Pr denotes the rectangle.
.
.IP \\*(Cs\\*(Ps\\*s\\*(qu\\*|
@ -1280,7 +1319,8 @@ Valid values for the parameter are:
\*(Ps = \*0, 1 or omitted \(-> transmit a single DECLRP locator report
.sp
If Locator Reporting has been enabled by a DECELR, xterm will respond
with a DECLRP Locator Report. This report is also generated on button
with a DECLRP Locator Report.
This report is also generated on button
up and down events if they have been enabled with a DECSLE, or when
the locator is detected outside of a filter rectangle, if filter rectangles
have been enabled with a DECEFR.
@ -1332,7 +1372,8 @@ and window title.
\*(Ps = \*0 \(-> Change Icon Name and Window Title to \*(Pt
\*(Ps = \*1 \(-> Change Icon Name to \*(Pt
\*(Ps = \*2 \(-> Change Window Title to \*(Pt
\*(Ps = \*3 \(-> Set X property on top-level window. \*(Pt should be in the form
\*(Ps = \*3 \(-> Set X property on top-level window.
\*(Pt should be in the form
"\fIprop=value\fP", or just "\fIprop\fP" to delete the property
\*(Ps = \*4 ; \fIc ; spec\fP \(-> Change Color Number \fIc\fP to
the color specified by \fIspec\fP,
@ -1395,12 +1436,14 @@ compile-time option)
\*(Ps = \*5\*0 \(-> Set Font to \*(Pt
These controls may be disabled using the \fIallowFontOps\fP resource.
If \*(Pt begins with a "#", index in the font menu, relative (if the
next character is a plus or minus sign) or absolute. A number is
next character is a plus or minus sign) or absolute.
A number is
expected but not required after the sign (the default is the current
entry for relative, zero for absolute indexing).
.br
The same rule (plus or minus sign, optional number) is used when
querying the font. The remainder of \*(Pt is ignored.
querying the font.
The remainder of \*(Pt is ignored.
.br
A font can be specified after a "#" index expression,
by adding a space and then the font specifier.
@ -1464,7 +1507,7 @@ The \fIdynamic colors\fR can also be reset to their default (resource) values:
\*(Ps = \*1\*1\*8 \(-> Reset Tektronix cursor color.
.
.St
.LP
.lP
.B
Privacy Message
.IP \\*(PM\\*(Pt\\*s\\*(ST
@ -1491,7 +1534,7 @@ keycode 115 = Meta_L
clear mod3
add mod3 = Meta_L
.DE
.LP
.lP
The \fBmetaSendsEscape\fP resource
(and \fBaltSendsEscape\fP if \fBaltIsNotMeta\fP is set)
can be used to control the way the \fIMeta\fP modifier applies to ordinary
@ -1502,7 +1545,7 @@ prefix a key with the \*(Es character.
.IP
-
shift the key from codes 0-127 to 128-255 by adding 128.
.LP
.lP
The table shows the result for a given character "x" with modifiers
according to the default translations with the resources set on or off.
This assumes \fBaltIsNotMeta\fP is set:
@ -1540,13 +1583,13 @@ with a PC-style keyboard, so PC-style function keys result.
Sun keyboards are similar to PC keyboards.
Both have cursor and scrolling operations printed on the keypad,
which duplicate the smaller cursor and scrolling keypads.
.LP
.lP
X does not predefine NumLock (used for VT220 keyboards) or Alt (used as
an extension for the Sun/PC keyboards) as modifiers.
These keys are recognized as modifiers when enabled
by the \fBnumLock\fP resource,
or by the DECSET \*1\*0\*3\*5 control sequence.
.LP
.lP
The cursor keys transmit the following escape sequences depending on the
mode specified via the \fBDECCKM\fP escape sequence.
.TS
@ -1575,11 +1618,11 @@ Home \*(Cs\*H \*(S3\*H
End \*(Cs\*F \*(S3\*F
_
.TE
.LP
.lP
The application keypad transmits the following escape sequences depending on the
mode specified via the \fBDECPNM\fP and \fBDECPAM\fP escape sequences.
Use the NumLock key to override the application mode.
.LP
.lP
Not all keys are present on the Sun/PC keypad (e.g., PF1, Tab), but are supported by
the program.
.TS
@ -1635,7 +1678,7 @@ F11 \*(Cs\*2\*3\*(c~
F12 \*(Cs\*2\*4\*(c~
_
.TE
.LP
.lP
Older versions of \fIxterm\fP implement different escape sequences for F1 through F4.
These can be activated by setting the \fBoldXtermFKeys\fP resource.
However, since they do not correspond to any hardware terminal, they have been deprecated.
@ -1674,7 +1717,7 @@ _
.TE
For example, shift-F5 would be sent as
\*(Cs\*1\*5\*;\*2\*(c~
.LP
.lP
If the \fBalwaysUseMods\fP resource is set, the Meta modifier also is
recognized, making parameters 9 through 16.
.SH
@ -1683,7 +1726,7 @@ VT220-Style Function Keys
However, \fIxterm\fP is most useful as a DEC VT102 or VT220 emulator.
Set the \fBsunKeyboard\fP resource to true to force a Sun/PC keyboard
to act like a VT220 keyboard.
.lP
The VT102/VT220 application keypad transmits unique escape sequences in
application mode, which are distinct from the cursor and scrolling keypad:
.TS
@ -1811,8 +1854,9 @@ Sun-Style Function Keys
The \fIxterm\fP program provides support for Sun keyboards more directly, by
a menu toggle that causes it to send Sun-style function key codes rather than VT220.
Note, however, that the \fIsun\fP and \fIVT100\fP emulations are not really
compatible. For example, their wrap-margin behavior differs.
.LP
compatible.
For example, their wrap-margin behavior differs.
.lP
Only function keys are altered; keypad and cursor keys are the same.
The emulation responds identically.
See the xterm-sun terminfo entry for details.
@ -1833,7 +1877,7 @@ When the alternate screen buffer is active,
you cannot scroll back to view saved lines.
\fBXterm\fP provides control sequences and menu entries
for switching between the two.
.lP
Most full-screen applications use terminfo or termcap to obtain
strings used to start/stop full-screen mode,
i.e., \fIsmcup\fP and \fIrmcup\fP for terminfo,
@ -1879,23 +1923,23 @@ This is no longer the case.
However, there are many applications which still assume that titles are
set using ISO-8859-1.
So that is the default behavior.
.LP
.lP
If \fIxterm\fP is running with UTF-8 encoding,
it is possible to use window- and icon-labels encoded using UTF-8.
That is because the underlying X libraries (and many, but not all)
window managers support this feature.
.LP
.lP
The \fButf8Title\fP X resource setting tells \fIxterm\fP to disable
a reconversion of the title string back to ISO-8859-1,
allowing the title strings to be interpreted as UTF-8.
The same feature can be enabled using the title mode control sequence
described in this summary.
.LP
described in this summary.
.lP
Separate from the ability to set the titles,
\fIxterm\fP provides the ability to query the titles,
returning them either in ISO-8859-1 or UTF-8.
This choice is available only while \fIxterm\fP is using UTF-8 encoding.
.LP
.lP
Finally, the characters sent to, or returned by a title control
are less constrained than the rest of the control sequences.
To make them more manageable (and constrained), for use in shell scripts,
@ -1908,10 +1952,11 @@ Mouse Tracking
.ds RH Mouse Tracking
.LP
The VT widget can be set to send the mouse position and other
information on button presses. These modes are typically used by
information on button presses.
These modes are typically used by
editors and other full-screen applications that want to make use of
the mouse.
.lP
There are six mutually exclusive modes.
One is DEC Locator mode, enabled by the
DECELR \*(Cs\*(Ps\*s\*;\*(Ps\*s\*s\*(qu\*s\*z
@ -1923,7 +1968,7 @@ DECSET \*(Cs\*?\*(Pm\*s\*h
or
DECRST \*(Cs\*?\*(Pm\*s\*l
control sequence.
.lP
Manifest constants for the parameter values
are defined in \fBxcharmouse.h\fP as follows:
.
@ -1935,35 +1980,42 @@ are defined in \fBxcharmouse.h\fP as follows:
#define SET_ANY_EVENT_MOUSE 1003
#define SET_FOCUS_EVENT_MOUSE 1004
#define SET_EXT_MODE_MOUSE 1005
.DE
.LP
The motion reporting modes are strictly \fIxterm\fP extensions, and are not
part of any standard, though they are analogous to the DEC VT200 DECELR
locator reports.
.lP
Parameters (such as pointer position and button number) for all mouse
tracking escape sequences generated by \fIxterm\fP
encode numeric parameters in a single character as
\fIvalue\fP+32.
For example, \*! specifies the value 1.
The upper left character position on the terminal is denoted as 1,1.
.lP
X10 compatibility mode sends an escape sequence only on button press,
encoding the location and the mouse button pressed.
It is enabled by specifying parameter 9 to DECSET.
On button press, \fIxterm\fP sends
\*(Cs\*M\*(Cb\*(Cx\*(Cy (6 characters).
.bP
\*(Cb is button\-1.
.bP
\*(Cx and \*(Cy are the x and y coordinates of the mouse when the
button was pressed.
.lP
Normal tracking mode sends an escape sequence on both button press and
release. Modifier key (shift, ctrl, meta) information is also sent.
release.
Modifier key (shift, ctrl, meta) information is also sent.
It is enabled by specifying parameter 1000 to DECSET.
On button press or release, \fIxterm\fP sends
\*(Cs\*M\*(Cb\*(Cx\*(Cy.
.bP
The low two bits of \*(Cb encode button information:
0=MB1 pressed, 1=MB2 pressed, 2=MB3 pressed, 3=release.
.bP
The next three bits encode the modifiers which were down when the button was
pressed and are added together: 4=Shift, 8=Meta, 16=Control.
Note however that the shift and control bits are normally unavailable
@ -1971,15 +2023,16 @@ because \fIxterm\fP uses the control modifier with mouse for popup menus,
and the shift modifier is used in the default translations for button events.
The \fIMeta\fP modifier recognized by \fIxterm\fP is the \fImod1\fP mask,
and is not necessarily the "Meta" key (see \fIxmodmap\fP).
.bP
\*(Cx and \*(Cy are the x and y coordinates of the mouse event, encoded as
in X10 mode.
.lP
Wheel mice may return buttons 4 and 5.
Those buttons are represented by the same event codes
as buttons 1 and 2 respectively,
except that 64 is added to the event code.
Release events for the wheel buttons are not reported.
.lP
Mouse highlight tracking notifies a program of a button press, receives a
range of lines from the program, highlights the region covered by
the mouse within that range until button release, and then sends the
@ -1987,8 +2040,10 @@ program the release coordinates.
It is enabled by specifying parameter 1001 to DECSET.
Highlighting is performed only for button 1, though other button events
can be received.
.sp
\fBWarning:\fP use of this mode requires a cooperating program or it will
hang \fIxterm.\fP
.sp
On button press, the same information as for normal tracking is
generated; \fIxterm\fP then waits for the program to send mouse
tracking information.
@ -1998,27 +2053,45 @@ received from the pty:\fP
The parameters are \fIfunc, startx, starty, firstrow,\fP and \fIlastrow.\fP
\fIfunc\fP is non-zero to initiate highlight tracking and zero to abort.
\fIstartx\fP and \fIstarty\fP give the starting x and y location for
the highlighted region. The ending location tracks the mouse, but
the highlighted region.
The ending location tracks the mouse, but
will never be above row \fIfirstrow\fP and will always be above row
\fIlastrow.\fP (The top of the screen is row 1.)
\fIlastrow.\fP
(The top of the screen is row 1.)
When the button is released, \fIxterm\fP reports the ending position
one of two ways: if the start and end coordinates are valid text
locations: \*(Cs\*t\*(Cx\*(Cy. If either coordinate is past
the end of the line:
one of two ways:
.bP
if the start and end coordinates are the same locations:
.br
\*(Cs\*t\*(Cx\*(Cy.
.bP
otherwise:
.br
\*(Cs\*T\*(Cx\*(Cy\*(Cx\*(Cy\*(Cx\*(Cy.
.br
The parameters are \fIstartx, starty, endx, endy, mousex,\fP and \fImousey.\fP
.RS
.IP \- 5
\fIstartx, starty, endx, \fPand\fI endy\fP give the starting and
ending character positions of the region. \fImousex\fP and \fImousey\fP
ending character positions of the region.
.IP \- 5
\fImousex\fP and \fImousey\fP
give the location of the mouse at button up, which may not be over a
character.
.RE
.lP
Button-event tracking is essentially the same as normal tracking, but
\fIxterm\fP also reports button-motion events. Motion events
\fIxterm\fP also reports button-motion events.
Motion events
are reported only if the mouse pointer has moved to a different character
cell. It is enabled by specifying parameter 1002 to DECSET.
cell.
It is enabled by specifying parameter 1002 to DECSET.
On button press or release, \fIxterm\fP sends the same codes used by normal
tracking mode. On button-motion events, \fIxterm\fP adds 32 to the event code
tracking mode.
.bP
On button-motion events, \fIxterm\fP adds 32 to the event code
(the third character, \*(Cb).
.bP
The other bits of the event code specify button and modifier keys as in normal mode.
For example, motion into cell x,y with button 1
down is reported as \*(Cs\*M\*@\*(Cx\*(Cy.
@ -2026,16 +2099,29 @@ down is reported as \*(Cs\*M\*@\*(Cx\*(Cy.
Similarly, motion with button 3
down is reported as \*(Cs\*M\*(cB\*(Cx\*(Cy.
( \*(cB = 32 + 2 (button 3) + 32 (motion indicator) ).
.lP
Any-event mode is the same as button-event mode, except that all motion
events are reported, even if no mouse button is down.
It is enabled by specifying 1003 to DECSET.
.lP
FocusIn/FocusOut can be combined with any of the mouse events since
it uses a different protocol.
When set, it causes \fIxterm\fP to send
\*(Cs\*I when the terminal gains focus, and
\*(Cs\*O when it loses focus.
.lP
Extended mouse mode enables UTF-8 encoding for \*(Cx and \*(Cy under
all tracking modes, expanding the maximum encodable position from 223 to 2015.
For positions less than 95, the resulting output is identical under both modes.
Under extended mouse mode, positions greater than 95
generate "extra" bytes which will confuse applications which do not treat
their input as a UTF-8 stream.
.lP
NOTE: Under normal mouse mode, positions outside (160,94) result in
byte pairs which can be interpreted as a single UTF-8 character;
applications
which do treat their input as UTF-8 will almost certainly be confused
unless extended mouse mode is active.
.
.br
.ds RH Tektronix 4014 Mode

View File

@ -199,7 +199,6 @@ DCS + p Pt ST
the terminal database. The data will be used for the "tcap"
keyboard configuration's function- and special-keys, as well
as by the Request Termcap/Terminfo String control.
DCS + q Pt ST
Request Termcap/Terminfo String (xterm, experimental). The
string following the "q" is a list of names encoded in hexa-
@ -352,6 +351,7 @@ CSI ? Pm h
Ps = 1 0 0 2 -> Use Cell Motion Mouse Tracking.
Ps = 1 0 0 3 -> Use All Motion Mouse Tracking.
Ps = 1 0 0 4 -> Send FocusIn/FocusOut events.
Ps = 1 0 0 5 -> Enable Extended Mouse Mode.
Ps = 1 0 1 0 -> Scroll to bottom on tty output (rxvt).
Ps = 1 0 1 1 -> Scroll to bottom on key press (rxvt).
Ps = 1 0 3 4 -> Interpret "meta" key, sets eighth bit.
@ -438,6 +438,7 @@ CSI ? Pm l
Ps = 1 0 0 2 -> Don't use Cell Motion Mouse Tracking.
Ps = 1 0 0 3 -> Don't use All Motion Mouse Tracking.
Ps = 1 0 0 4 -> Don't send FocusIn/FocusOut events.
Ps = 1 0 0 5 -> Disable Extended Mouse Mode.
Ps = 1 0 1 0 -> Don't scroll to bottom on tty output
(rxvt).
Ps = 1 0 1 1 -> Don't scroll to bottom on key press (rxvt).
@ -589,6 +590,20 @@ CSI > Ps p
Ps = 2 -> always hide the pointer If no parameter is given,
xterm uses the default, which is 1 .
CSI ! p Soft terminal reset (DECSTR)
CSI Ps$ p Request ANSI mode (DECRQM). For VT300 and up, reply is
CSI Ps; Pm$ p
where Ps is the mode number as in RM, and Pm is the mode
value:
0 - not recognized
1 - set
2 - reset
3 - permanently set
4 - permanently reset
CSI ? Ps$ p
Request DEC private mode (DECRQM). For VT300 and up, reply is
CSI ? Ps; Pm$ p
where Ps is the mode number as in DECSET, Pm is the mode value
as in the ANSI DECRQM.
CSI Ps ; Ps " p
Set conformance level (DECSCL) Valid values for the first
parameter:
@ -627,7 +642,7 @@ CSI ? Pm r
Restore DEC Private Mode Values. The value of Ps previously
saved is restored. Ps values are the same as for DECSET.
CSI Pt; Pl; Pb; Pr; Ps$ r
Change Attributes in Rectangular Area (DECCARA).
Change Attributes in Rectangular Area (DECCARA), VT400 and up.
Pt; Pl; Pb; Pr denotes the rectangle.
Ps denotes the SGR attributes to change: 0, 1, 4, 5, 7
CSI s Save cursor (ANSI.SYS)
@ -666,7 +681,7 @@ CSI Ps ; Ps ; Ps t
CSI 9 ; height ; width t
Ps = 2 0 -> Report xterm window's icon label as OSC L
label ST
Ps = 2 1 -> Report xterm window's title as OSC L label ST
Ps = 2 1 -> Report xterm window's title as OSC l label ST
Ps = 2 2 ; 0 -> Save xterm icon and window title on
stack.
Ps = 2 2 ; 1 -> Save xterm icon title on stack.
@ -677,9 +692,10 @@ CSI Ps ; Ps ; Ps t
Ps = 2 3 ; 2 -> Restore xterm window title from stack.
Ps >= 2 4 -> Resize to Ps lines (DECSLPP)
CSI Pt; Pl; Pb; Pr; Ps$ t
Reverse Attributes in Rectangular Area (DECRARA).
Reverse Attributes in Rectangular Area (DECRARA), VT400 and
up.
Pt; Pl; Pb; Pr denotes the rectangle.
Ps denotes the attributes to reverse. 1, 4, 5, 7
Ps denotes the attributes to reverse, i.e., 1, 4, 5, 7
CSI > Ps; Ps t
Set one or more features of the title modes. Each parameter
enables a single feature.
@ -700,13 +716,13 @@ CSI Ps SP u
Ps = 2 , 3 or 4 -> low
Ps = 0 , 5 , 6 , 7 , or 8 -> high
CSI Pt; Pl; Pb; Pr; Pp; Pt; Pl; Pp$ v
Copy Rectangular Area (DECCRA)
Copy Rectangular Area (DECCRA, VT400 and up)
Pt; Pl; Pb; Pr denotes the rectangle.
Pp denotes the source page.
Pt; Pl denotes the target location.
Pp denotes the target page.
CSI Pt ; Pl ; Pb ; Pr ' w
Enable Filter Rectangle (DECEFR)
Enable Filter Rectangle (DECEFR), VT420 and up.
Parameters are [top;left;bottom;right].
Defines the coordinates of a filter rectangle and activates
it. Anytime the locator is detected outside of the filter
@ -732,7 +748,7 @@ CSI Ps x Select Attribute Change Extent (DECSACE).
Ps = 1 -> from start to end position, wrapped
Ps = 2 -> rectangle (exact).
CSI Pc; Pt; Pl; Pb; Pr$ x
Fill Rectangular Area (DECFRA).
Fill Rectangular Area (DECFRA), VT420 and up.
Pc is the character to use.
Pt; Pl; Pb; Pr denotes the rectangle.
CSI Ps ; Pu ' z
@ -748,7 +764,7 @@ CSI Ps ; Pu ' z
Pu = 1 -> device physical pixels
Pu = 2 -> character cells
CSI Pt; Pl; Pb; Pr$ z
Erase Rectangular Area (DECERA).
Erase Rectangular Area (DECERA), VT400 and up.
Pt; Pl; Pb; Pr denotes the rectangle.
CSI Pm ' {
Select Locator Events (DECSLE)
@ -761,7 +777,7 @@ CSI Pm ' {
Ps = 3 -> report button up transitions
Ps = 4 -> do not report button up transitions
CSI Pt; Pl; Pb; Pr$ {
Selective Erase Rectangular Area (DECSERA).
Selective Erase Rectangular Area (DECSERA), VT400 and up.
Pt; Pl; Pb; Pr denotes the rectangle.
CSI Ps ' |
Request Locator Position (DECRQLP)
@ -815,7 +831,7 @@ OSC Ps ; Pt BEL
Ps = 0 -> Change Icon Name and Window Title to Pt
Ps = 1 -> Change Icon Name to Pt
Ps = 2 -> Change Window Title to Pt
Ps = 3 -> Set X property on top-level window. Pt should be
Ps = 3 -> Set X property on top-level window. Pt should be
in the form "prop=value", or just "prop" to delete the prop-
erty
Ps = 4 ; c ; spec -> Change Color Number c to the color
@ -932,6 +948,7 @@ OSC Ps ; Pt BEL
Ps = 1 1 7 -> Reset highlight color.
Ps = 1 1 8 -> Reset Tektronix cursor color.
Privacy Message
PM Pt ST xterm implements no PM functions; Pt is ignored. Pt need not
be printable characters.
@ -951,11 +968,13 @@ have "real" alt and meta keys. Here is an example:
clear mod3
add mod3 = Meta_L
The metaSendsEscape resource (and altSendsEscape if altIsNotMeta is set)
can be used to control the way the Meta modifier applies to ordinary
keys unless the modifyOtherKeys resource is set:
- prefix a key with the ESC character.
- shift the key from codes 0-127 to 128-255 by adding 128.
The table shows the result for a given character "x" with modifiers
according to the default translations with the resources set on or off.
This assumes altIsNotMeta is set:
@ -988,10 +1007,12 @@ this with a PC-style keyboard, so PC-style function keys result. Sun
keyboards are similar to PC keyboards. Both have cursor and scrolling
operations printed on the keypad, which duplicate the smaller cursor and
scrolling keypads.
X does not predefine NumLock (used for VT220 keyboards) or Alt (used as
an extension for the Sun/PC keyboards) as modifiers. These keys are
recognized as modifiers when enabled by the numLock resource, or by the
DECSET 1 0 3 5 control sequence.
The cursor keys transmit the following escape sequences depending on the
mode specified via the DECCKM escape sequence.
@ -1013,9 +1034,11 @@ also controlled by the DECCKM escape sequence:
End CSI F SS3 F
----------------------------------
The application keypad transmits the following escape sequences depend-
ing on the mode specified via the DECPNM and DECPAM escape sequences.
Use the NumLock key to override the application mode.
Not all keys are present on the Sun/PC keypad (e.g., PF1, Tab), but are
supported by the program.
@ -1066,6 +1089,7 @@ pose keys.
F12 CSI 2 4 ~
---------------------------
Older versions of xterm implement different escape sequences for F1
through F4. These can be activated by setting the oldXtermFKeys
resource. However, since they do not correspond to any hardware termi-
@ -1096,6 +1120,7 @@ appended before the final character of the control sequence.
---------------------------------
For example, shift-F5 would be sent as CSI 1 5 ; 2 ~
If the alwaysUseMods resource is set, the Meta modifier also is recog-
nized, making parameters 9 through 16.
@ -1214,6 +1239,7 @@ The xterm program provides support for Sun keyboards more directly, by a
menu toggle that causes it to send Sun-style function key codes rather
than VT220. Note, however, that the sun and VT100 emulations are not
really compatible. For example, their wrap-margin behavior differs.
Only function keys are altered; keypad and cursor keys are the same.
The emulation responds identically. See the xterm-sun terminfo entry
for details.
@ -1261,16 +1287,20 @@ to be the case (and was documented) that window titles had to be
ISO-8859-1. This is no longer the case. However, there are many appli-
cations which still assume that titles are set using ISO-8859-1. So
that is the default behavior.
If xterm is running with UTF-8 encoding, it is possible to use window-
and icon-labels encoded using UTF-8. That is because the underlying X
libraries (and many, but not all) window managers support this feature.
The utf8Title X resource setting tells xterm to disable a reconversion
of the title string back to ISO-8859-1, allowing the title strings to be
interpreted as UTF-8. The same feature can be enabled using the title
mode control sequence described in this summary.
Separate from the ability to set the titles, xterm provides the ability
to query the titles, returning them either in ISO-8859-1 or UTF-8. This
choice is available only while xterm is using UTF-8 encoding.
Finally, the characters sent to, or returned by a title control are less
constrained than the rest of the control sequences. To make them more
manageable (and constrained), for use in shell scripts, xterm has an
@ -1300,6 +1330,8 @@ as follows:
#define SET_FOCUS_EVENT_MOUSE 1004
#define SET_EXT_MODE_MOUSE 1005
The motion reporting modes are strictly xterm extensions, and are not
part of any standard, though they are analogous to the DEC VT200 DECELR
locator reports.
@ -1312,22 +1344,26 @@ in a single character as value+32. For example, ! specifies the value
X10 compatibility mode sends an escape sequence only on button press,
encoding the location and the mouse button pressed. It is enabled by
specifying parameter 9 to DECSET. On button press, xterm sends CSI M
CbCxCy (6 characters). Cb is button-1. Cx and Cy are the x and y coor-
dinates of the mouse when the button was pressed.
CbCxCy (6 characters).
o Cb is button-1.
o Cx and Cy are the x and y coordinates of the mouse when the button
was pressed.
Normal tracking mode sends an escape sequence on both button press and
release. Modifier key (shift, ctrl, meta) information is also sent. It
is enabled by specifying parameter 1000 to DECSET. On button press or
release, xterm sends CSI M CbCxCy. The low two bits of Cb encode button
information: 0=MB1 pressed, 1=MB2 pressed, 2=MB3 pressed, 3=release.
The next three bits encode the modifiers which were down when the button
was pressed and are added together: 4=Shift, 8=Meta, 16=Control. Note
however that the shift and control bits are normally unavailable because
xterm uses the control modifier with mouse for popup menus, and the
shift modifier is used in the default translations for button events.
The Meta modifier recognized by xterm is the mod1 mask, and is not nec-
essarily the "Meta" key (see xmodmap). Cx and Cy are the x and y coor-
dinates of the mouse event, encoded as in X10 mode.
release, xterm sends CSI M CbCxCy.
o The low two bits of Cb encode button information: 0=MB1 pressed,
1=MB2 pressed, 2=MB3 pressed, 3=release.
o The next three bits encode the modifiers which were down when the
button was pressed and are added together: 4=Shift, 8=Meta, 16=Con-
trol. Note however that the shift and control bits are normally
unavailable because xterm uses the control modifier with mouse for
popup menus, and the shift modifier is used in the default transla-
tions for button events. The Meta modifier recognized by xterm is
the mod1 mask, and is not necessarily the "Meta" key (see xmodmap).
o Cx and Cy are the x and y coordinates of the mouse event, encoded as
in X10 mode.
Wheel mice may return buttons 4 and 5. Those buttons are represented by
the same event codes as buttons 1 and 2 respectively, except that 64 is
@ -1339,36 +1375,45 @@ a range of lines from the program, highlights the region covered by the
mouse within that range until button release, and then sends the program
the release coordinates. It is enabled by specifying parameter 1001 to
DECSET. Highlighting is performed only for button 1, though other but-
ton events can be received. Warning: use of this mode requires a coop-
erating program or it will hang xterm. On button press, the same infor-
mation as for normal tracking is generated; xterm then waits for the
program to send mouse tracking information. All X events are ignored
until the proper escape sequence is received from the pty: CSI Ps ; Ps ;
Ps ; Ps ; Ps T . The parameters are func, startx, starty, firstrow, and
lastrow. func is non-zero to initiate highlight tracking and zero to
abort. startx and starty give the starting x and y location for the
highlighted region. The ending location tracks the mouse, but will
never be above row firstrow and will always be above row lastrow. (The
top of the screen is row 1.) When the button is released, xterm reports
the ending position one of two ways: if the start and end coordinates
are valid text locations: CSI t CxCy. If either coordinate is past the
end of the line: CSI T CxCyCxCyCxCy. The parameters are startx, starty,
endx, endy, mousex, and mousey. startx, starty, endx, and endy give the
starting and ending character positions of the region. mousex and
mousey give the location of the mouse at button up, which may not be
over a character.
ton events can be received.
Warning: use of this mode requires a cooperating program or it will hang
xterm.
On button press, the same information as for normal tracking is gener-
ated; xterm then waits for the program to send mouse tracking informa-
tion. All X events are ignored until the proper escape sequence is
received from the pty: CSI Ps ; Ps ; Ps ; Ps ; Ps T . The parameters
are func, startx, starty, firstrow, and lastrow. func is non-zero to
initiate highlight tracking and zero to abort. startx and starty give
the starting x and y location for the highlighted region. The ending
location tracks the mouse, but will never be above row firstrow and will
always be above row lastrow. (The top of the screen is row 1.) When
the button is released, xterm reports the ending position one of two
ways:
o if the start and end coordinates are the same locations:
CSI t CxCy.
o otherwise:
CSI T CxCyCxCyCxCy.
The parameters are startx, starty, endx, endy, mousex, and mousey.
- startx, starty, endx, and endy give the starting and ending
character positions of the region.
- mousex and mousey give the location of the mouse at button up,
which may not be over a character.
Button-event tracking is essentially the same as normal tracking, but
xterm also reports button-motion events. Motion events are reported
only if the mouse pointer has moved to a different character cell. It
is enabled by specifying parameter 1002 to DECSET. On button press or
release, xterm sends the same codes used by normal tracking mode. On
button-motion events, xterm adds 32 to the event code (the third charac-
ter, Cb). The other bits of the event code specify button and modifier
keys as in normal mode. For example, motion into cell x,y with button 1
down is reported as CSI M @ CxCy. ( @ = 32 + 0 (button 1) + 32 (motion
indicator) ). Similarly, motion with button 3 down is reported as CSI M
B CxCy. ( B = 32 + 2 (button 3) + 32 (motion indicator) ).
release, xterm sends the same codes used by normal tracking mode.
o On button-motion events, xterm adds 32 to the event code (the third
character, Cb).
o The other bits of the event code specify button and modifier keys as
in normal mode. For example, motion into cell x,y with button 1
down is reported as CSI M @ CxCy. ( @ = 32 + 0 (button 1) + 32
(motion indicator) ). Similarly, motion with button 3 down is
reported as CSI M B CxCy. ( B = 32 + 2 (button 3) + 32 (motion
indicator) ).
Any-event mode is the same as button-event mode, except that all motion
events are reported, even if no mouse button is down. It is enabled by
@ -1378,6 +1423,18 @@ FocusIn/FocusOut can be combined with any of the mouse events since it
uses a different protocol. When set, it causes xterm to send CSI I
when the terminal gains focus, and CSI O when it loses focus.
Extended mouse mode enables UTF-8 encoding for Cx and Cy under all
tracking modes, expanding the maximum encodable position from 223 to
2015. For positions less than 95, the resulting output is identical
under both modes. Under extended mouse mode, positions greater than 95
generate "extra" bytes which will confuse applications which do not
treat their input as a UTF-8 stream.
NOTE: Under normal mouse mode, positions outside (160,94) result in byte
pairs which can be interpreted as a single UTF-8 character; applications
which do treat their input as UTF-8 will almost certainly be confused
unless extended mouse mode is active.
Tektronix 4014 Mode
Most of these sequences are standard Tektronix 4014 control sequences.
Graph mode supports the 12-bit addressing of the Tektronix 4014. The

View File

@ -1,4 +1,4 @@
/* $XTermId: misc.c,v 1.503 2010/06/20 21:33:49 tom Exp $ */
/* $XTermId: misc.c,v 1.507 2010/08/30 08:26:45 tom Exp $ */
/*
* Copyright 1999-2009,2010 by Thomas E. Dickey
@ -3384,6 +3384,314 @@ do_dcs(XtermWidget xw, Char * dcsbuf, size_t dcslen)
unparse_end(xw);
}
#if OPT_DEC_RECTOPS
enum {
mdUnknown = 0,
mdMaybeSet = 1,
mdMaybeReset = 2,
mdAlwaysSet = 3,
mdAlwaysReset = 4
};
#define MdBool(bool) ((bool) ? mdMaybeSet : mdMaybeReset)
#define MdFlag(mode,flag) MdBool(xw->keyboard.flags & MODE_KAM)
/*
* Reply is the same format as the query, with pair of mode/value:
* 0 - not recognized
* 1 - set
* 2 - reset
* 3 - permanently set
* 4 - permanently reset
* Only one mode can be reported at a time.
*/
void
do_rpm(XtermWidget xw, int nparams, int *params)
{
ANSI reply;
int result = 0;
int count = 0;
TRACE(("do_rpm %d:%d\n", nparams, params[0]));
memset(&reply, 0, sizeof(reply));
if (nparams >= 1) {
switch (params[0]) {
case 1: /* GATM */
result = mdAlwaysReset;
break;
case 2:
result = MdFlag(xw->keyboard.flags, MODE_KAM);
break;
case 3: /* CRM */
result = mdMaybeReset;
break;
case 4:
result = MdFlag(xw->flags, INSERT);
break;
case 5: /* SRTM */
case 7: /* VEM */
case 10: /* HEM */
case 11: /* PUM */
result = mdAlwaysReset;
break;
case 12:
result = MdFlag(xw->keyboard.flags, MODE_SRM);
break;
case 13: /* FEAM */
case 14: /* FETM */
case 15: /* MATM */
case 16: /* TTM */
case 17: /* SATM */
case 18: /* TSM */
case 19: /* EBM */
result = mdAlwaysReset;
break;
case 20:
result = MdFlag(xw->flags, LINEFEED);
break;
}
reply.a_param[count++] = params[0];
reply.a_param[count++] = result;
}
reply.a_type = ANSI_CSI;
reply.a_nparam = count;
reply.a_inters = '$';
reply.a_final = 'y';
unparseseq(xw, &reply);
}
void
do_decrpm(XtermWidget xw, int nparams, int *params)
{
ANSI reply;
int result = 0;
int count = 0;
TRACE(("do_decrpm %d:%d\n", nparams, params[0]));
memset(&reply, 0, sizeof(reply));
if (nparams >= 1) {
TScreen *screen = TScreenOf(xw);
switch (params[0]) {
case 1: /* DECCKM */
result = MdFlag(xw->keyboard.flags, MODE_DECCKM);
break;
case 2: /* DECANM - ANSI/VT52 mode */
#if OPT_VT52_MODE
result = MdBool(screen->terminal_id >= 100);
#else
result = mdMaybeSet;
#endif
break;
case 3: /* DECCOLM */
result = MdFlag(xw->flags, IN132COLUMNS);
break;
case 4: /* DECSCLM (slow scroll) */
result = MdFlag(xw->flags, SMOOTHSCROLL);
break;
case 5: /* DECSCNM */
result = MdFlag(xw->flags, REVERSE_VIDEO);
break;
case 6: /* DECOM */
result = MdFlag(xw->flags, ORIGIN);
break;
case 7: /* DECAWM */
result = MdFlag(xw->flags, WRAPAROUND);
break;
case 8: /* DECARM */
result = mdAlwaysReset;
break;
case SET_X10_MOUSE: /* X10 mouse */
result = MdBool(screen->send_mouse_pos == X10_MOUSE);
break;
#if OPT_TOOLBAR
case 10: /* rxvt */
result = MdBool(resource.toolBar);
break;
#endif
#if OPT_BLINK_CURS
case 12: /* att610: Start/stop blinking cursor */
result = MdBool(screen->cursor_blink_res);
break;
#endif
case 18: /* DECPFF: print form feed */
result = MdBool(screen->printer_formfeed);
break;
case 19: /* DECPEX: print extent */
result = MdBool(screen->printer_extent);
break;
case 25: /* DECTCEM: Show/hide cursor (VT200) */
result = MdBool(screen->cursor_set);
break;
case 30: /* rxvt */
result = MdBool(screen->fullVwin.sb_info.width != OFF);
break;
#if OPT_SHIFT_FONTS
case 35: /* rxvt */
result = MdBool(xw->misc.shift_fonts);
break;
#endif
#if OPT_TEK4014
case 38: /* DECTEK */
result = MdBool(TEK4014_ACTIVE(xw));
break;
#endif
case 40: /* 132 column mode */
result = MdBool(screen->c132);
break;
case 41: /* curses hack */
result = MdBool(screen->curses);
break;
case 42: /* DECNRCM national charset (VT220) */
result = MdFlag(xw->flags, NATIONAL);
break;
case 44: /* margin bell */
result = MdBool(screen->marginbell);
break;
case 45: /* reverse wraparound */
result = MdFlag(xw->flags, REVERSEWRAP);
break;
#ifdef ALLOWLOGGING
case 46: /* logging */
#ifdef ALLOWLOGFILEONOFF
result = MdBool(screen->logging);
#endif /* ALLOWLOGFILEONOFF */
break;
#endif
case 1049: /* alternate buffer & cursor */
/* FALLTHRU */
case 1047:
/* FALLTHRU */
case 47: /* alternate buffer */
result = MdBool(screen->whichBuf);
break;
case 66: /* DECNKM */
result = MdFlag(xw->keyboard.flags, MODE_DECKPAM);
break;
case 67: /* DECBKM */
result = MdFlag(xw->keyboard.flags, MODE_DECBKM);
break;
case SET_VT200_MOUSE: /* xterm bogus sequence */
result = MdBool(screen->send_mouse_pos == VT200_MOUSE);
break;
case SET_VT200_HIGHLIGHT_MOUSE: /* xterm sequence w/hilite tracking */
result = MdBool(screen->send_mouse_pos == VT200_HIGHLIGHT_MOUSE);
break;
case SET_BTN_EVENT_MOUSE:
result = MdBool(screen->send_mouse_pos == BTN_EVENT_MOUSE);
break;
case SET_ANY_EVENT_MOUSE:
result = MdBool(screen->send_mouse_pos == ANY_EVENT_MOUSE);
break;
#if OPT_FOCUS_EVENT
case SET_FOCUS_EVENT_MOUSE:
result = MdBool(screen->send_focus_pos);
break;
#endif
case SET_EXT_MODE_MOUSE:
result = MdBool(screen->ext_mode_mouse);
break;
case 1010: /* rxvt */
result = MdBool(screen->scrollttyoutput);
break;
case 1011: /* rxvt */
result = MdBool(screen->scrollkey);
break;
case 1034:
result = MdBool(screen->input_eight_bits);
break;
#if OPT_NUM_LOCK
case 1035:
result = MdBool(xw->misc.real_NumLock);
break;
case 1036:
result = MdBool(screen->meta_sends_esc);
break;
#endif
case 1037:
result = MdBool(screen->delete_is_del);
break;
#if OPT_NUM_LOCK
case 1039:
result = MdBool(screen->alt_sends_esc);
break;
#endif
case 1040:
result = MdBool(screen->keepSelection);
break;
case 1041:
result = MdBool(screen->selectToClipboard);
break;
case 1042:
result = MdBool(screen->bellIsUrgent);
break;
case 1043:
result = MdBool(screen->poponbell);
break;
case 1048:
result = MdBool(screen->sc[screen->whichBuf].saved);
break;
#if OPT_TCAP_FKEYS
case 1050:
result = MdBool(xw->keyboard.type == keyboardIsTermcap);
break;
#endif
#if OPT_SUN_FUNC_KEYS
case 1051:
result = MdBool(xw->keyboard.type == keyboardIsSun);
break;
#endif
#if OPT_HP_FUNC_KEYS
case 1052:
result = MdBool(xw->keyboard.type == keyboardIsHP);
break;
#endif
#if OPT_SCO_FUNC_KEYS
case 1053:
result = MdBool(xw->keyboard.type == keyboardIsSCO);
break;
#endif
case 1060:
result = MdBool(xw->keyboard.type == keyboardIsLegacy);
break;
#if OPT_SUNPC_KBD
case 1061:
result = MdBool(xw->keyboard.type == keyboardIsVT220);
break;
#endif
#if OPT_READLINE
case SET_BUTTON1_MOVE_POINT:
result = MdBool(screen->click1_moves);
break;
case SET_BUTTON2_MOVE_POINT:
result = MdBool(screen->paste_moves);
break;
case SET_DBUTTON3_DELETE:
result = MdBool(screen->dclick3_deletes);
break;
case SET_PASTE_IN_BRACKET:
result = MdBool(screen->paste_brackets);
break;
case SET_PASTE_QUOTE:
result = MdBool(screen->paste_quotes);
break;
case SET_PASTE_LITERAL_NL:
result = MdBool(screen->paste_literal_nl);
break;
#endif /* OPT_READLINE */
}
reply.a_param[count++] = params[0];
reply.a_param[count++] = result;
}
reply.a_type = ANSI_CSI;
reply.a_pintro = '?';
reply.a_nparam = count;
reply.a_inters = '$';
reply.a_final = 'y';
unparseseq(xw, &reply);
}
#endif /* OPT_DEC_RECTOPS */
char *
udk_lookup(int keycode, int *len)
{

View File

@ -1,4 +1,4 @@
/* $XTermId: ptyx.h,v 1.670 2010/06/15 08:34:38 tom Exp $ */
/* $XTermId: ptyx.h,v 1.671 2010/08/19 09:30:01 Ryan.Johnson Exp $ */
/*
* Copyright 1999-2009,2010 by Thomas E. Dickey
@ -1377,6 +1377,7 @@ typedef enum {
DP_X_MARGIN,
DP_X_MORE,
DP_X_MOUSE,
DP_X_EXT_MOUSE,
DP_X_REVWRAP,
DP_X_X10MSE,
#if OPT_BLINK_CURS
@ -1583,6 +1584,7 @@ typedef struct {
long event_mask;
unsigned send_mouse_pos; /* user wants mouse transition */
/* and position information */
unsigned ext_mode_mouse; /* support large terminals */
Boolean send_focus_pos; /* user wants focus in/out info */
Boolean quiet_grab; /* true if no cursor change on focus */
#if OPT_PASTE64

View File

@ -1,4 +1,4 @@
/* $XTermId: util.c,v 1.538 2010/06/15 08:17:36 tom Exp $ */
/* $XTermId: util.c,v 1.539 2010/08/29 22:49:16 tom Exp $ */
/*
* Copyright 1999-2009,2010 by Thomas E. Dickey
@ -1816,9 +1816,12 @@ ChangeColors(XtermWidget xw, ScrnColors * pNew)
/* no repaint needed */
} else if ((T_COLOR(screen, TEXT_CURSOR) == T_COLOR(screen, TEXT_FG)) &&
(COLOR_DEFINED(pNew, TEXT_FG))) {
T_COLOR(screen, TEXT_CURSOR) = COLOR_VALUE(pNew, TEXT_FG);
TRACE(("... TEXT_CURSOR: %#lx\n", T_COLOR(screen, TEXT_CURSOR)));
repaint = screen->Vshow;
if (T_COLOR(screen, TEXT_CURSOR) != COLOR_VALUE(pNew, TEXT_FG)) {
T_COLOR(screen, TEXT_CURSOR) = COLOR_VALUE(pNew, TEXT_FG);
TRACE(("... TEXT_CURSOR: %#lx\n", T_COLOR(screen, TEXT_CURSOR)));
if (screen->Vshow)
repaint = True;
}
}
if (COLOR_DEFINED(pNew, TEXT_FG)) {
@ -1849,14 +1852,20 @@ ChangeColors(XtermWidget xw, ScrnColors * pNew)
}
#if OPT_HIGHLIGHT_COLOR
if (COLOR_DEFINED(pNew, HIGHLIGHT_BG)) {
T_COLOR(screen, HIGHLIGHT_BG) = COLOR_VALUE(pNew, HIGHLIGHT_BG);
TRACE(("... HIGHLIGHT_BG: %#lx\n", T_COLOR(screen, HIGHLIGHT_BG)));
repaint = screen->Vshow;
if (T_COLOR(screen, HIGHLIGHT_BG) != COLOR_VALUE(pNew, HIGHLIGHT_BG)) {
T_COLOR(screen, HIGHLIGHT_BG) = COLOR_VALUE(pNew, HIGHLIGHT_BG);
TRACE(("... HIGHLIGHT_BG: %#lx\n", T_COLOR(screen, HIGHLIGHT_BG)));
if (screen->Vshow)
repaint = True;
}
}
if (COLOR_DEFINED(pNew, HIGHLIGHT_FG)) {
T_COLOR(screen, HIGHLIGHT_FG) = COLOR_VALUE(pNew, HIGHLIGHT_FG);
TRACE(("... HIGHLIGHT_FG: %#lx\n", T_COLOR(screen, HIGHLIGHT_FG)));
repaint = screen->Vshow;
if (T_COLOR(screen, HIGHLIGHT_FG) != COLOR_VALUE(pNew, HIGHLIGHT_FG)) {
T_COLOR(screen, HIGHLIGHT_FG) = COLOR_VALUE(pNew, HIGHLIGHT_FG);
TRACE(("... HIGHLIGHT_FG: %#lx\n", T_COLOR(screen, HIGHLIGHT_FG)));
if (screen->Vshow)
repaint = True;
}
}
#endif
@ -1897,7 +1906,9 @@ ChangeColors(XtermWidget xw, ScrnColors * pNew)
if (COLOR_DEFINED(pNew, TEXT_FG) ||
COLOR_DEFINED(pNew, TEXT_BG) ||
COLOR_DEFINED(pNew, TEXT_CURSOR)) {
set_cursor_gcs(xw);
if (set_cursor_gcs(xw) && screen->Vshow) {
repaint = True;
}
}
#if OPT_TEK4014
if (COLOR_DEFINED(pNew, TEK_FG) ||

View File

@ -1,5 +1,5 @@
/*
* $XTermId: version.h,v 1.319 2010/06/28 08:49:07 tom Exp $
* $XTermId: version.h,v 1.320 2010/07/16 00:42:31 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 261
#define XTERM_PATCH 262
#ifndef __vendorversion__
#define __vendorversion__ "XTerm/OpenBSD"

View File

@ -1,4 +1,4 @@
/* $XTermId: xcharmouse.h,v 1.11 2008/10/05 21:18:49 tom Exp $ */
/* $XTermId: xcharmouse.h,v 1.12 2010/08/19 09:30:03 Ryan.Johnson Exp $ */
/************************************************************
@ -46,6 +46,9 @@ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#define SET_FOCUS_EVENT_MOUSE 1004 /* can be combined with above */
#endif
/* Extend mouse tracking for terminals wider(taller) than 223 cols(rows) */
#define SET_EXT_MODE_MOUSE 1005 /* compatible with above */
#define SET_BUTTON1_MOVE_POINT 2001 /* click1 emit Esc seq to move point*/
#define SET_BUTTON2_MOVE_POINT 2002 /* press2 emit Esc seq to move point*/
#define SET_DBUTTON3_DELETE 2003 /* Double click-3 deletes */

View File

@ -1,4 +1,4 @@
/* $XTermId: xterm.h,v 1.628 2010/06/20 21:34:48 tom Exp $ */
/* $XTermId: xterm.h,v 1.630 2010/08/29 22:42:57 tom Exp $ */
/************************************************************
@ -802,6 +802,7 @@ extern void noleaks_cachedCgs (XtermWidget /* xw */);
/* charproc.c */
extern Bool CheckBufPtrs (TScreen * /* screen */);
extern Bool set_cursor_gcs (XtermWidget /* xw */);
extern int VTInit (XtermWidget /* xw */);
extern void FindFontSelection (XtermWidget /* xw */, const char * /* atom_name */, Bool /* justprobe */);
extern void HideCursor (void);
@ -815,7 +816,6 @@ extern void dotext (XtermWidget /* xw */, int /* charset */, IChar * /* buf */,
extern void releaseCursorGCs(XtermWidget /*xw*/);
extern void releaseWindowGCs(XtermWidget /*xw*/, VTwin * /*win*/);
extern void resetCharsets (TScreen * /* screen */);
extern void set_cursor_gcs (XtermWidget /* xw */);
extern void set_max_col(TScreen * /* screen */, int /* cols */);
extern void set_max_row(TScreen * /* screen */, int /* rows */);
extern void set_tb_margins (TScreen * /* screen */, int /* top */, int /* bottom */);
@ -974,7 +974,9 @@ extern void ReverseOldColors (void);
extern void SysError (int /* i */) GCC_NORETURN;
extern void VisualBell (void);
extern void do_dcs (XtermWidget /* xw */, Char * /* buf */, size_t /* len */);
extern void do_decrpm (XtermWidget /* xw */, int /* nparam */, int * /* params */);
extern void do_osc (XtermWidget /* xw */, Char * /* buf */, size_t /* len */, int /* final */);
extern void do_rpm (XtermWidget /* xw */, int /* nparam */, int * /* params */);
extern void do_xevents (void);
extern void end_tek_mode (void);
extern void end_vt_mode (void);

View File

@ -31,7 +31,7 @@
* sale, use or other dealings in this Software without prior written *
* authorization. *
*****************************************************************************
$XTermId: xterm.log.html,v 1.957 2010/06/28 09:25:58 tom Exp $
$XTermId: xterm.log.html,v 1.965 2010/08/30 00:19:46 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_262">Patch #262 - 2010/8/30</A>
<LI><A HREF="#xterm_261">Patch #261 - 2010/6/28</A>
<LI><A HREF="#xterm_260">Patch #260 - 2010/6/20</A>
<LI><A HREF="#xterm_259">Patch #259 - 2010/6/5</A>
@ -320,6 +321,31 @@ is the latest version of this file.
<LI><A HREF="#xterm_01">Patch #1 - 1996/1/6</A>
</UL>
<H1><A NAME="xterm_262">Patch #262 - 2010/8/30</A></H1>
<ul>
<li>fix a case where changing the cursor color via escape sequences
did not immediately update the screen (report by Andreas Wagner).
<li>implement ANSI and DEC request-mode control sequences. The
latter includes the xterm-specific private modes such as the
mouse mode. The feature is ifdef'd with the rectangle operations
since its decoding overlaps that feature.
<li>correct typo in ctlseqs.ms for response of OSC 21 (patch by
Kevin Schoedel).
<li>improve discussion of mouse tracking in ctlseqs.ms
<li>increase an array limit used in reporting mouse events (report
by Ryan Johnson).
<li>add extended mouse-coordinates mode, allowing up to 2015x2015
windows, using UTF-8 encoding (patch by Ryan Johnson).
<li>modify manpage hyphens to conform with
<a href="http://lintian.debian.org/tags/hyphen-used-as-minus-sign.html">Debian</a>.
</ul>
<H1><A NAME="xterm_261">Patch #261 - 2010/6/28</A></H1>
<ul>
<li>fix regression in <code>renderFont</code> logic, from

File diff suppressed because it is too large Load Diff