Update to xterm 262.
tested by ajacoutot@, jasper@ and krw@.
This commit is contained in:
parent
203a984640
commit
b4ebb62e0d
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
310
app/xterm/misc.c
310
app/xterm/misc.c
@ -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)
|
||||
{
|
||||
|
@ -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
|
||||
|
@ -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) ||
|
||||
|
@ -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"
|
||||
|
@ -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 */
|
||||
|
@ -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);
|
||||
|
@ -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
Loading…
Reference in New Issue
Block a user