Update to xterm 296. Sixel graphics disabled for now.
This commit is contained in:
parent
ce84febd9d
commit
3b638f84b8
@ -1,4 +1,4 @@
|
||||
-- $XTermId: INSTALL,v 1.147 2013/05/27 22:19:09 tom Exp $
|
||||
-- $XTermId: INSTALL,v 1.148 2013/06/23 20:22:46 tom Exp $
|
||||
-------------------------------------------------------------------------------
|
||||
-- Copyright 1997-2012,2013 by Thomas E. Dickey
|
||||
--
|
||||
@ -487,6 +487,10 @@ The options (in alphabetic order):
|
||||
|
||||
Compile-in code to support SCO-style function keys.
|
||||
|
||||
--enable-sixel-graphics enable support for sixel-graphics
|
||||
|
||||
Compile-in code to support experimental sixel-graphics
|
||||
|
||||
--enable-sun-fkeys enable support for Sun-style function keys
|
||||
|
||||
Compile-in code to support Sun-style function keys.
|
||||
|
@ -1,4 +1,4 @@
|
||||
XCOMM $XTermId: Imakefile,v 1.107 2013/01/01 12:16:40 tom Exp $
|
||||
XCOMM $XTermId: Imakefile,v 1.109 2013/06/23 22:32:37 tom Exp $
|
||||
XCOMM
|
||||
XCOMM Attention xterm porters
|
||||
XCOMM
|
||||
@ -165,6 +165,9 @@ TERMCAPDEFINES=-DUSE_TERMINFO -DHAVE_TIGETSTR
|
||||
#if !HasPutenv
|
||||
PUTENVDEF = -DNOPUTENV
|
||||
#endif
|
||||
#ifdef SixelXTerm
|
||||
SIXELDEF = -DOPT_SIXEL_GRAPHICS=1
|
||||
#endif
|
||||
#ifdef TraceXTerm
|
||||
TRACEDEF = -DOPT_TRACE=1
|
||||
#endif
|
||||
@ -174,11 +177,15 @@ TERMCAPDEFINES=-DUSE_TERMINFO -DHAVE_TIGETSTR
|
||||
MISC_DEFINES = /* -DALLOWLOGGING -DALLOWLOGFILEEXEC */
|
||||
XKB_DEFINES = XkbClientDefines
|
||||
PATH_DEFINES = -DPROJECTROOT=$(PROJECTROOT)
|
||||
DEFINES = $(XKB_DEFINES) $(TERMCAPDEFINES) $(FEATURE_DEFINES) $(SCROLLBAR_RIGHT) $(UTF8_OPTION) $(XRFDEF) $(PATH_DEFINES) $(PUTENVDEF) $(IMAKEDEFINES) $(TRACEDEF)
|
||||
DEFINES = $(XKB_DEFINES) $(TERMCAPDEFINES) $(FEATURE_DEFINES) $(SCROLLBAR_RIGHT) $(UTF8_OPTION) $(XRFDEF) $(PATH_DEFINES) $(PUTENVDEF) $(IMAKEDEFINES) $(SIXELDEF) $(TRACEDEF)
|
||||
INCLUDES = -I. $(XRFINCLUDES)
|
||||
|
||||
MAINSRC = main.c
|
||||
MAINOBJ = main.o
|
||||
#ifdef SixelXTerm
|
||||
SIXELSRC = graphics.c
|
||||
SIXELOBJ = graphics.o
|
||||
#endif
|
||||
#ifdef TraceXTerm
|
||||
TRACESRC = trace.c
|
||||
TRACEOBJ = trace.o
|
||||
@ -188,13 +195,13 @@ TERMCAPDEFINES=-DUSE_TERMINFO -DHAVE_TIGETSTR
|
||||
linedata.c menu.c misc.c print.c ptydata.c scrollback.c \
|
||||
screen.c scrollbar.c tabs.c util.c version.c xstrings.c \
|
||||
xtermcap.c TekPrsTbl.c Tekproc.c VTPrsTbl.c \
|
||||
$(MAINSRC) $(EXTRASRC) $(UTF8SRC) $(TRACESRC)
|
||||
$(MAINSRC) $(EXTRASRC) $(UTF8SRC) $(SIXELSRC) $(TRACESRC)
|
||||
OBJS1 = button.o cachedGCs.o charproc.o charsets.o cursor.o \
|
||||
data.o doublechr.o fontutils.o input.o \
|
||||
linedata.o menu.o misc.o print.o ptydata.o scrollback.o \
|
||||
screen.o scrollbar.o tabs.o util.o version.o xstrings.o \
|
||||
xtermcap.o TekPrsTbl.o Tekproc.o VTPrsTbl.o \
|
||||
$(MAINOBJ) $(EXTRAOBJ) $(UTF8OBJ) $(TRACEOBJ)
|
||||
$(MAINOBJ) $(EXTRAOBJ) $(UTF8OBJ) $(SIXELOBJ) $(TRACEOBJ)
|
||||
SRCS2 = resize.c version.c xstrings.c
|
||||
OBJS2 = resize.o version.o xstrings.o
|
||||
SRCS = $(SRCS1) $(SRCS2)
|
||||
|
@ -1,4 +1,4 @@
|
||||
MANIFEST for xterm-293, version xterm-293
|
||||
MANIFEST for xterm-296, version xterm-296
|
||||
--------------------------------------------------------------------------------
|
||||
MANIFEST this file
|
||||
256colres.h resource-definitions for 256-color mode
|
||||
@ -47,6 +47,7 @@ error.h error-code definitions for 'xterm'
|
||||
fontutils.c xterm functions for (re)loading fonts
|
||||
fontutils.h interface of fontutils.c
|
||||
gen-pc-fkeys.pl script to generate extended function-key terminfo
|
||||
graphics.c graphics support functions for 'xterm'
|
||||
input.c VT100 key-symbol and function-key translation
|
||||
install-sh install-script (needed by configure)
|
||||
keysym2ucs.c lookup-table for UTF-8 to keysyms
|
||||
|
@ -1,4 +1,4 @@
|
||||
-- $XTermId: THANKS,v 1.8 2012/11/21 23:47:03 tom Exp $
|
||||
-- $XTermId: THANKS,v 1.9 2013/07/04 23:04:24 tom Exp $
|
||||
-- vile:txtmode fk=8bit
|
||||
There's no AUTHORS file in this distribution; it would be redundant since
|
||||
I (Thomas E. Dickey) have done more than 80% of the work on xterm since 1996.
|
||||
@ -20,6 +20,7 @@ Alexander V Lukyanov
|
||||
Andrea Odetti
|
||||
Andreas Jaeger
|
||||
Andreas Schwab
|
||||
Andres Perera
|
||||
Andrew Sumner
|
||||
Andrew Tipton
|
||||
Andries E Brouwer
|
||||
@ -28,6 +29,7 @@ Balazs Kezes
|
||||
Ben Yoshino
|
||||
Bernhard R Link
|
||||
Bernhard Rosenkraenzer
|
||||
Bertram Felgenhauer
|
||||
Bill Nottingham
|
||||
Bob Maynard
|
||||
Bradd W Szonye
|
||||
@ -141,6 +143,7 @@ Paul Maier
|
||||
Paul Vojta
|
||||
Paul Williams
|
||||
Pavel Roskin
|
||||
Peder Stray
|
||||
Per Hedeland
|
||||
Peter Berg Larsen
|
||||
Pierre Lombard
|
||||
@ -150,6 +153,7 @@ Rob Braun
|
||||
Robert Brady
|
||||
Robert Earl
|
||||
Robin Cutshaw
|
||||
Ross Combs
|
||||
Ross Paterson
|
||||
Ryan Johnson
|
||||
Scott Sewall
|
||||
@ -161,6 +165,7 @@ Stefan Dirsch
|
||||
Steve Wall
|
||||
Stuart Lissaman
|
||||
Sven Verdoolaege
|
||||
Taketo Kabe
|
||||
Taneli Huuskonen
|
||||
Ted Phelps
|
||||
Thierry Reding
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: VTparse.h,v 1.59 2012/09/10 23:27:03 tom Exp $ */
|
||||
/* $XTermId: VTparse.h,v 1.61 2013/06/23 21:12:13 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 2002-2011,2012 by Thomas E. Dickey
|
||||
|
@ -1,4 +1,4 @@
|
||||
! $XTermId: XTerm.ad,v 1.97 2011/07/11 10:52:16 tom Exp $
|
||||
! $XTermId: XTerm.ad,v 1.99 2013/06/23 08:57:13 Ross.Combs Exp $
|
||||
! -----------------------------------------------------------------------------
|
||||
! this file is part of xterm
|
||||
!
|
||||
@ -100,6 +100,8 @@
|
||||
*vtMenu*tekmode*Label: Switch to Tek Mode
|
||||
*vtMenu*vthide*Label: Hide VT Window
|
||||
*vtMenu*altscreen*Label: Show Alternate Screen
|
||||
*vtMenu*sixelScrolling*Label: Sixel Scrolling
|
||||
*vtMenu*privateColorRegisters*Label: Private Color Registers
|
||||
|
||||
*fontMenu.Label: VT Fonts
|
||||
*fontMenu*fontdefault*Label: Default
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: button.c,v 1.456 2013/05/12 22:16:26 tom Exp $ */
|
||||
/* $XTermId: button.c,v 1.458 2013/07/01 00:50:20 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2012,2013 by Thomas E. Dickey
|
||||
@ -75,7 +75,6 @@ button.c Handles button events in the terminal emulator.
|
||||
#include <data.h>
|
||||
#include <error.h>
|
||||
#include <menu.h>
|
||||
#include <xcharmouse.h>
|
||||
#include <charclass.h>
|
||||
#include <xstrings.h>
|
||||
|
||||
@ -3346,13 +3345,6 @@ ComputeSelect(XtermWidget xw,
|
||||
screen->endSel.col = 0;
|
||||
NextRow(endSel);
|
||||
}
|
||||
/* Clicking on right edge will make endSel.col == screen->max_col,
|
||||
* so clamp it. Otherwise XTERM_CELL and friends will fail assertion
|
||||
*/
|
||||
if (screen->endSel.col > screen->max_col) {
|
||||
screen->endSel.col = screen->max_col;
|
||||
TRACE(("Select_WORD endSel.col clamped to %d\n", screen->endSel.col));
|
||||
}
|
||||
}
|
||||
#if OPT_WIDE_CHARS
|
||||
if (screen->endSel.col
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: charproc.c,v 1.1289 2013/05/26 21:18:52 tom Exp $ */
|
||||
/* $XTermId: charproc.c,v 1.1300 2013/07/04 15:19:32 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2012,2013 by Thomas E. Dickey
|
||||
@ -133,9 +133,9 @@
|
||||
#include <menu.h>
|
||||
#include <main.h>
|
||||
#include <fontutils.h>
|
||||
#include <xcharmouse.h>
|
||||
#include <charclass.h>
|
||||
#include <xstrings.h>
|
||||
#include <graphics.h>
|
||||
|
||||
typedef void (*BitFunc) (unsigned * /* p */ ,
|
||||
unsigned /* mask */ );
|
||||
@ -151,8 +151,10 @@ static void RequestResize(XtermWidget /* xw */ ,
|
||||
int /* cols */ ,
|
||||
Bool /* text */ );
|
||||
static void SwitchBufs(XtermWidget /* xw */ ,
|
||||
int /* toBuf */ );
|
||||
static void ToAlternate(XtermWidget /* xw */ );
|
||||
int /* toBuf */ ,
|
||||
Bool /* clearFirst */ );
|
||||
static void ToAlternate(XtermWidget /* xw */ ,
|
||||
Bool /* clearFirst */ );
|
||||
static void ansi_modes(XtermWidget termw,
|
||||
BitFunc /* func */ );
|
||||
static void bitclr(unsigned *p, unsigned mask);
|
||||
@ -364,6 +366,10 @@ static XtActionsRec actionsList[] = {
|
||||
{ "larger-vt-font", HandleLargerFont },
|
||||
{ "smaller-vt-font", HandleSmallerFont },
|
||||
#endif
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
{ "set-private-colors", HandleSetPrivateColorRegisters },
|
||||
{ "set-sixel-scrolling", HandleSixelScrolling },
|
||||
#endif
|
||||
#if OPT_SUN_FUNC_KEYS
|
||||
{ "set-sun-function-keys", HandleSunFunctionKeys },
|
||||
#endif
|
||||
@ -667,6 +673,12 @@ static XtResource xterm_resources[] =
|
||||
Bres(XtNshiftFonts, XtCShiftFonts, misc.shift_fonts, True),
|
||||
#endif
|
||||
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
Bres(XtNprivateColorRegisters, XtCPrivateColorRegisters,
|
||||
screen.privatecolorregisters, True),
|
||||
Bres(XtNsixelScrolling, XtCSixelScrolling, screen.sixel_scrolling, False),
|
||||
#endif
|
||||
|
||||
#if OPT_SUNPC_KBD
|
||||
Ires(XtNctrlFKeys, XtCCtrlFKeys, misc.ctrl_fkeys, 10),
|
||||
#endif
|
||||
@ -1983,7 +1995,10 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
}
|
||||
|
||||
DumpParams();
|
||||
TRACE(("parse %04X -> %d %s\n", c, sp->nextstate, which_table(sp->parsestate)));
|
||||
TRACE(("parse %04X -> %d %s (used=%lu)\n",
|
||||
c, sp->nextstate,
|
||||
which_table(sp->parsestate),
|
||||
(unsigned long) sp->string_used));
|
||||
|
||||
/*
|
||||
* If the parameter list has subparameters (tokens separated by ":")
|
||||
@ -2446,6 +2461,12 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
*/
|
||||
if (screen->terminal_id < 200) {
|
||||
switch (screen->terminal_id) {
|
||||
case 125:
|
||||
reply.a_param[count++] = 12; /* VT125 */
|
||||
reply.a_param[count++] = 0 | 2 | 0; /* no STP, AVO, no GPO (ReGIS) */
|
||||
reply.a_param[count++] = 0; /* no printer */
|
||||
reply.a_param[count++] = XTERM_PATCH; /* ROM version */
|
||||
break;
|
||||
case 102:
|
||||
reply.a_param[count++] = 6; /* VT102 */
|
||||
break;
|
||||
@ -2455,7 +2476,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
break;
|
||||
default: /* VT100 */
|
||||
reply.a_param[count++] = 1; /* VT100 */
|
||||
reply.a_param[count++] = 2; /* AVO */
|
||||
reply.a_param[count++] = 0 | 2 | 0; /* no STP, AVO, no GPO (ReGIS) */
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
@ -2464,6 +2485,15 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
/ 100);
|
||||
reply.a_param[count++] = 1; /* 132-columns */
|
||||
reply.a_param[count++] = 2; /* printer */
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
if (screen->terminal_id == 240 ||
|
||||
screen->terminal_id == 241 ||
|
||||
screen->terminal_id == 330 ||
|
||||
screen->terminal_id == 340) {
|
||||
reply.a_param[count++] = 3; /* ReGIS graphics */
|
||||
reply.a_param[count++] = 4; /* sixel graphics */
|
||||
}
|
||||
#endif
|
||||
reply.a_param[count++] = 6; /* selective-erase */
|
||||
#if OPT_SUNPC_KBD
|
||||
if (xw->keyboard.type == keyboardIsVT220)
|
||||
@ -2805,7 +2835,7 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
TRACE(("...request printer status\n"));
|
||||
if (sp->private_function
|
||||
&& screen->vtXX_level >= 2) { /* VT220 */
|
||||
reply.a_param[count++] = 13; /* implement printer */
|
||||
reply.a_param[count++] = 13; /* no printer detected */
|
||||
}
|
||||
break;
|
||||
case 25:
|
||||
@ -2827,7 +2857,8 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 53:
|
||||
case 53: /* according to existing xterm handling */
|
||||
case 55: /* according to the VT330/VT340 Text Programming Manual */
|
||||
TRACE(("...request locator status\n"));
|
||||
if (sp->private_function
|
||||
&& screen->vtXX_level >= 2) { /* VT220 */
|
||||
@ -2835,6 +2866,18 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
reply.a_param[count++] = 50; /* locator ready */
|
||||
#else
|
||||
reply.a_param[count++] = 53; /* no locator */
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
case 56:
|
||||
TRACE(("...request locator type\n"));
|
||||
if (sp->private_function
|
||||
&& screen->vtXX_level >= 3) { /* VT330 (FIXME: what about VT220?) */
|
||||
reply.a_param[count++] = 57;
|
||||
#if OPT_DEC_LOCATOR
|
||||
reply.a_param[count++] = 1; /* mouse */
|
||||
#else
|
||||
reply.a_param[count++] = 0; /* unknown */
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
@ -3243,7 +3286,9 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
break;
|
||||
|
||||
case CASE_ST:
|
||||
TRACE(("CASE_ST: End of String (%lu bytes)\n", (unsigned long) sp->string_used));
|
||||
TRACE(("CASE_ST: End of String (%lu bytes) (mode=%d)\n",
|
||||
(unsigned long) sp->string_used,
|
||||
sp->string_mode));
|
||||
ResetState(sp);
|
||||
if (!sp->string_used)
|
||||
break;
|
||||
@ -3264,6 +3309,9 @@ doparsing(XtermWidget xw, unsigned c, struct ParseState *sp)
|
||||
case ANSI_SOS:
|
||||
/* ignored */
|
||||
break;
|
||||
default:
|
||||
TRACE(("unknown mode\n"));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
@ -4796,104 +4844,6 @@ really_set_mousemode(XtermWidget xw,
|
||||
: SCREEN_FLAG_unset(screen, f))
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Use this enumerated type to check consistency among dpmodes(), savemodes()
|
||||
* and restoremodes().
|
||||
*/
|
||||
typedef enum {
|
||||
srm_DECCKM = 1
|
||||
,srm_DECANM = 2
|
||||
,srm_DECCOLM = 3
|
||||
,srm_DECSCLM = 4
|
||||
,srm_DECSCNM = 5
|
||||
,srm_DECOM = 6
|
||||
,srm_DECAWM = 7
|
||||
,srm_DECARM = 8
|
||||
,srm_X10_MOUSE = SET_X10_MOUSE
|
||||
#if OPT_TOOLBAR
|
||||
,srm_RXVT_TOOLBAR = 10
|
||||
#endif
|
||||
#if OPT_BLINK_CURS
|
||||
,srm_ATT610_BLINK = 12
|
||||
#endif
|
||||
,srm_DECPFF = 18
|
||||
,srm_DECPEX = 19
|
||||
,srm_DECTCEM = 25
|
||||
,srm_RXVT_SCROLLBAR = 30
|
||||
#if OPT_SHIFT_FONTS
|
||||
,srm_RXVT_FONTSIZE = 35
|
||||
#endif
|
||||
#if OPT_TEK4014
|
||||
,srm_DECTEK = 38
|
||||
#endif
|
||||
,srm_132COLS = 40
|
||||
,srm_CURSES_HACK = 41
|
||||
,srm_DECNRCM = 42
|
||||
,srm_MARGIN_BELL = 44
|
||||
,srm_REVERSEWRAP = 45
|
||||
#ifdef ALLOWLOGGING
|
||||
,srm_ALLOWLOGGING = 46
|
||||
#endif
|
||||
,srm_OPT_ALTBUF_CURSOR = 1049
|
||||
,srm_OPT_ALTBUF = 1047
|
||||
,srm_ALTBUF = 47
|
||||
,srm_DECNKM = 66
|
||||
,srm_DECBKM = 67
|
||||
,srm_DECLRMM = 69
|
||||
,srm_DECNCSM = 95
|
||||
,srm_VT200_MOUSE = SET_VT200_MOUSE
|
||||
,srm_VT200_HIGHLIGHT_MOUSE = SET_VT200_HIGHLIGHT_MOUSE
|
||||
,srm_BTN_EVENT_MOUSE = SET_BTN_EVENT_MOUSE
|
||||
,srm_ANY_EVENT_MOUSE = SET_ANY_EVENT_MOUSE
|
||||
#if OPT_FOCUS_EVENT
|
||||
,srm_FOCUS_EVENT_MOUSE = SET_FOCUS_EVENT_MOUSE
|
||||
#endif
|
||||
,srm_EXT_MODE_MOUSE = SET_EXT_MODE_MOUSE
|
||||
,srm_SGR_EXT_MODE_MOUSE = SET_SGR_EXT_MODE_MOUSE
|
||||
,srm_URXVT_EXT_MODE_MOUSE = SET_URXVT_EXT_MODE_MOUSE
|
||||
,srm_ALTERNATE_SCROLL = SET_ALTERNATE_SCROLL
|
||||
,srm_RXVT_SCROLL_TTY_OUTPUT = 1010
|
||||
,srm_RXVT_SCROLL_TTY_KEYPRESS = 1011
|
||||
,srm_EIGHT_BIT_META = 1034
|
||||
#if OPT_NUM_LOCK
|
||||
,srm_REAL_NUMLOCK = 1035
|
||||
,srm_META_SENDS_ESC = 1036
|
||||
#endif
|
||||
,srm_DELETE_IS_DEL = 1037
|
||||
#if OPT_NUM_LOCK
|
||||
,srm_ALT_SENDS_ESC = 1039
|
||||
#endif
|
||||
,srm_KEEP_SELECTION = 1040
|
||||
,srm_SELECT_TO_CLIPBOARD = 1041
|
||||
,srm_BELL_IS_URGENT = 1042
|
||||
,srm_POP_ON_BELL = 1043
|
||||
,srm_TITE_INHIBIT = 1048
|
||||
#if OPT_TCAP_FKEYS
|
||||
,srm_TCAP_FKEYS = 1050
|
||||
#endif
|
||||
#if OPT_SUN_FUNC_KEYS
|
||||
,srm_SUN_FKEYS = 1051
|
||||
#endif
|
||||
#if OPT_HP_FUNC_KEYS
|
||||
,srm_HP_FKEYS = 1052
|
||||
#endif
|
||||
#if OPT_SCO_FUNC_KEYS
|
||||
,srm_SCO_FKEYS = 1053
|
||||
#endif
|
||||
,srm_LEGACY_FKEYS = 1060
|
||||
#if OPT_SUNPC_KBD
|
||||
,srm_VT220_FKEYS = 1061
|
||||
#endif
|
||||
#if OPT_READLINE
|
||||
,srm_BUTTON1_MOVE_POINT = SET_BUTTON1_MOVE_POINT
|
||||
,srm_BUTTON2_MOVE_POINT = SET_BUTTON2_MOVE_POINT
|
||||
,srm_DBUTTON3_DELETE = SET_DBUTTON3_DELETE
|
||||
,srm_PASTE_IN_BRACKET = SET_PASTE_IN_BRACKET
|
||||
,srm_PASTE_QUOTE = SET_PASTE_QUOTE
|
||||
,srm_PASTE_LITERAL_NL = SET_PASTE_LITERAL_NL
|
||||
#endif /* OPT_READLINE */
|
||||
} DECSET_codes;
|
||||
|
||||
/*
|
||||
* process DEC private modes set, reset
|
||||
*/
|
||||
@ -4904,6 +4854,7 @@ dpmodes(XtermWidget xw, BitFunc func)
|
||||
int i, j;
|
||||
unsigned myflags;
|
||||
|
||||
TRACE(("changing %d DEC private modes\n", nparam));
|
||||
for (i = 0; i < nparam; ++i) {
|
||||
int code = GetParam(i);
|
||||
|
||||
@ -5071,7 +5022,7 @@ dpmodes(XtermWidget xw, BitFunc func)
|
||||
if (!xw->misc.titeInhibit) {
|
||||
if (IsSM()) {
|
||||
CursorSave(xw);
|
||||
ToAlternate(xw);
|
||||
ToAlternate(xw, True);
|
||||
ClearScreen(xw);
|
||||
} else {
|
||||
FromAlternate(xw);
|
||||
@ -5086,7 +5037,7 @@ dpmodes(XtermWidget xw, BitFunc func)
|
||||
case srm_ALTBUF: /* alternate buffer */
|
||||
if (!xw->misc.titeInhibit) {
|
||||
if (IsSM()) {
|
||||
ToAlternate(xw);
|
||||
ToAlternate(xw, False);
|
||||
} else {
|
||||
if (screen->whichBuf
|
||||
&& (code == 1047))
|
||||
@ -5119,6 +5070,20 @@ dpmodes(XtermWidget xw, BitFunc func)
|
||||
CursorSet(screen, 0, 0, xw->flags);
|
||||
}
|
||||
break;
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
case srm_DECSDM: /* sixel scrolling */
|
||||
if (screen->terminal_id == 240 ||
|
||||
screen->terminal_id == 241 ||
|
||||
screen->terminal_id == 330 ||
|
||||
screen->terminal_id == 340) {
|
||||
(*func) (&xw->keyboard.flags, MODE_DECSDM);
|
||||
TRACE(("DECSET/DECRST DECSDM %s (resource default is %d)\n",
|
||||
BtoS(xw->keyboard.flags & MODE_DECSDM),
|
||||
TScreenOf(xw)->sixel_scrolling));
|
||||
update_decsdm();
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case srm_DECNCSM:
|
||||
if (screen->vtXX_level >= 5) { /* VT510 */
|
||||
(*func) (&xw->flags, NOCLEAR_COLM);
|
||||
@ -5273,6 +5238,17 @@ dpmodes(XtermWidget xw, BitFunc func)
|
||||
set_mouseflag(paste_literal_nl);
|
||||
break;
|
||||
#endif /* OPT_READLINE */
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
case srm_PRIVATE_COLOR_REGISTERS: /* private color registers for each graphic */
|
||||
TRACE(("DECSET/DECRST PRIVATE_COLOR_REGISTERS %s\n",
|
||||
BtoS(screen->privatecolorregisters)));
|
||||
set_bool_mode(screen->privatecolorregisters);
|
||||
update_privatecolorregisters();
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
TRACE(("DATA_ERROR: unknown private code %d\n", code));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5383,12 +5359,18 @@ savemodes(XtermWidget xw)
|
||||
case srm_DECNKM:
|
||||
DoSM(DP_DECKPAM, xw->keyboard.flags & MODE_DECKPAM);
|
||||
break;
|
||||
case srm_DECBKM:
|
||||
case srm_DECBKM: /* backarrow mapping */
|
||||
DoSM(DP_DECBKM, xw->keyboard.flags & MODE_DECBKM);
|
||||
break;
|
||||
case srm_DECLRMM: /* left-right */
|
||||
DoSM(DP_X_LRMM, LEFT_RIGHT);
|
||||
break;
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
case srm_DECSDM: /* sixel scrolling */
|
||||
DoSM(DP_DECSDM, xw->keyboard.flags & MODE_DECSDM);
|
||||
update_decsdm();
|
||||
break;
|
||||
#endif
|
||||
case srm_DECNCSM: /* noclear */
|
||||
DoSM(DP_X_NCSM, NOCLEAR_COLM);
|
||||
break;
|
||||
@ -5498,6 +5480,14 @@ savemodes(XtermWidget xw)
|
||||
SCREEN_FLAG_save(screen, paste_literal_nl);
|
||||
break;
|
||||
#endif /* OPT_READLINE */
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
case srm_PRIVATE_COLOR_REGISTERS: /* private color registers for each graphic */
|
||||
TRACE(("save PRIVATE_COLOR_REGISTERS %s\n",
|
||||
BtoS(screen->privatecolorregisters)));
|
||||
DoSM(DP_X_PRIVATE_COLOR_REGISTERS, screen->privatecolorregisters);
|
||||
update_privatecolorregisters();
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -5655,7 +5645,7 @@ restoremodes(XtermWidget xw)
|
||||
case srm_ALTBUF: /* alternate buffer */
|
||||
if (!xw->misc.titeInhibit) {
|
||||
if (screen->save_modes[DP_X_ALTSCRN])
|
||||
ToAlternate(xw);
|
||||
ToAlternate(xw, False);
|
||||
else
|
||||
FromAlternate(xw);
|
||||
/* update_altscreen done by ToAlt and FromAlt */
|
||||
@ -5667,7 +5657,7 @@ restoremodes(XtermWidget xw)
|
||||
bitcpy(&xw->flags, screen->save_modes[DP_DECKPAM], MODE_DECKPAM);
|
||||
update_appkeypad();
|
||||
break;
|
||||
case srm_DECBKM:
|
||||
case srm_DECBKM: /* backarrow mapping */
|
||||
bitcpy(&xw->flags, screen->save_modes[DP_DECBKM], MODE_DECBKM);
|
||||
update_decbkm();
|
||||
break;
|
||||
@ -5680,6 +5670,12 @@ restoremodes(XtermWidget xw)
|
||||
}
|
||||
CursorSet(screen, 0, 0, xw->flags);
|
||||
break;
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
case srm_DECSDM: /* sixel scrolling */
|
||||
bitcpy(&xw->keyboard.flags, screen->save_modes[DP_DECSDM], MODE_DECSDM);
|
||||
update_decsdm();
|
||||
break;
|
||||
#endif
|
||||
case srm_DECNCSM: /* noclear */
|
||||
bitcpy(&xw->flags, screen->save_modes[DP_X_NCSM], NOCLEAR_COLM);
|
||||
break;
|
||||
@ -5802,6 +5798,14 @@ restoremodes(XtermWidget xw)
|
||||
SCREEN_FLAG_restore(screen, paste_literal_nl);
|
||||
break;
|
||||
#endif /* OPT_READLINE */
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
case srm_PRIVATE_COLOR_REGISTERS: /* private color registers for each graphic */
|
||||
TRACE(("restore PRIVATE_COLOR_REGISTERS %s\n",
|
||||
BtoS(screen->privatecolorregisters)));
|
||||
DoRM(DP_X_PRIVATE_COLOR_REGISTERS, screen->privatecolorregisters);
|
||||
update_privatecolorregisters();
|
||||
break;
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -6365,11 +6369,11 @@ ToggleAlternate(XtermWidget xw)
|
||||
if (TScreenOf(xw)->whichBuf)
|
||||
FromAlternate(xw);
|
||||
else
|
||||
ToAlternate(xw);
|
||||
ToAlternate(xw, False);
|
||||
}
|
||||
|
||||
static void
|
||||
ToAlternate(XtermWidget xw)
|
||||
ToAlternate(XtermWidget xw, Bool clearFirst)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
@ -6380,7 +6384,7 @@ ToAlternate(XtermWidget xw)
|
||||
(unsigned) MaxRows(screen),
|
||||
(unsigned) MaxCols(screen),
|
||||
&screen->editBuf_data[1]);
|
||||
SwitchBufs(xw, 1);
|
||||
SwitchBufs(xw, 1, clearFirst);
|
||||
screen->whichBuf = 1;
|
||||
#if OPT_SAVE_LINES
|
||||
screen->visbuf = screen->editBuf_index[screen->whichBuf];
|
||||
@ -6399,7 +6403,7 @@ FromAlternate(XtermWidget xw)
|
||||
if (screen->scroll_amt)
|
||||
FlushScroll(xw);
|
||||
screen->whichBuf = 0;
|
||||
SwitchBufs(xw, 0);
|
||||
SwitchBufs(xw, 0, False);
|
||||
#if OPT_SAVE_LINES
|
||||
screen->visbuf = screen->editBuf_index[screen->whichBuf];
|
||||
#endif
|
||||
@ -6408,7 +6412,7 @@ FromAlternate(XtermWidget xw)
|
||||
}
|
||||
|
||||
static void
|
||||
SwitchBufs(XtermWidget xw, int toBuf)
|
||||
SwitchBufs(XtermWidget xw, int toBuf, Bool clearFirst)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
int rows, top;
|
||||
@ -6440,6 +6444,9 @@ SwitchBufs(XtermWidget xw, int toBuf)
|
||||
(unsigned) ((rows - top) * FontHeight(screen)),
|
||||
False);
|
||||
#endif
|
||||
if (clearFirst) {
|
||||
ClearBufRows(xw, top, rows);
|
||||
}
|
||||
}
|
||||
ScrnUpdate(xw, 0, 0, rows, MaxCols(screen), False);
|
||||
}
|
||||
@ -7844,6 +7851,19 @@ VTInitialize(Widget wrequest,
|
||||
TRACE(("initialized DECBKM %s\n",
|
||||
BtoS(wnew->keyboard.flags & MODE_DECBKM)));
|
||||
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
init_Bres(screen.sixel_scrolling);
|
||||
if (TScreenOf(wnew)->sixel_scrolling) /* FIXME: should this be off unconditionally here? */
|
||||
wnew->keyboard.flags |= MODE_DECSDM;
|
||||
TRACE(("initialized DECSDM %s (resource default is %d)\n",
|
||||
BtoS(wnew->keyboard.flags & MODE_DECSDM),
|
||||
TScreenOf(wnew)->sixel_scrolling));
|
||||
|
||||
init_Bres(screen.privatecolorregisters); /* FIXME: should this be off unconditionally here? */
|
||||
TRACE(("initialized PRIVATE_COLOR_REGISTERS to resource default %s\n",
|
||||
BtoS(TScreenOf(wnew)->privatecolorregisters)));
|
||||
#endif
|
||||
|
||||
/* look for focus related events on the shell, because we need
|
||||
* to care about the shell's border being part of our focus.
|
||||
*/
|
||||
@ -9592,6 +9612,11 @@ HideCursor(void)
|
||||
screen->cursor_state = OFF;
|
||||
resetXtermGC(xw, flags, in_selection);
|
||||
|
||||
refresh_displayed_graphics(screen,
|
||||
screen->cursorp.col,
|
||||
screen->cursorp.row,
|
||||
1, 1);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -9809,6 +9834,8 @@ ReallyReset(XtermWidget xw, Bool full, Bool saved)
|
||||
bitclr(&xw->flags, PROTECTED);
|
||||
screen->protected_mode = OFF_PROTECT;
|
||||
|
||||
reset_displayed_graphics(screen);
|
||||
|
||||
if (full) { /* RIS */
|
||||
if (screen->bellOnReset)
|
||||
Bell(xw, XkbBI_TerminalBell, 0);
|
||||
@ -9833,9 +9860,17 @@ ReallyReset(XtermWidget xw, Bool full, Bool saved)
|
||||
xw->keyboard.flags |= MODE_DECBKM;
|
||||
TRACE(("full reset DECBKM %s\n",
|
||||
BtoS(xw->keyboard.flags & MODE_DECBKM)));
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
if (TScreenOf(xw)->sixel_scrolling) /* FIXME: should this be off unconditionally here? */
|
||||
xw->keyboard.flags |= MODE_DECSDM;
|
||||
TRACE(("full reset DECSDM %s (resource default is %d)\n",
|
||||
BtoS(xw->keyboard.flags & MODE_DECSDM),
|
||||
TScreenOf(xw)->sixel_scrolling));
|
||||
#endif
|
||||
update_appcursor();
|
||||
update_appkeypad();
|
||||
update_decbkm();
|
||||
update_decsdm();
|
||||
show_8bit_control(False);
|
||||
reset_decudk();
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
dnl $XTermId: configure.in,v 1.316 2013/05/27 13:46:02 tom Exp $
|
||||
dnl $XTermId: configure.in,v 1.318 2013/06/23 21:39:24 tom Exp $
|
||||
dnl
|
||||
dnl -----------------------------------------------------------------------------
|
||||
dnl this file is part of xterm
|
||||
@ -904,6 +904,19 @@ if test "$enable_dec_locator" = yes ; then
|
||||
AC_DEFINE(OPT_DEC_LOCATOR,1,[Define to 1 to enable DECterm Locator support])
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING(if you want sixel graphics support)
|
||||
CF_ARG_ENABLE(sixel-graphics,
|
||||
[ --enable-sixel-graphics enable sixel graphics support],
|
||||
[enable_sixel_graphics=yes],
|
||||
[enable_sixel_graphics=no])
|
||||
AC_MSG_RESULT($enable_sixel_graphics)
|
||||
if test "$enable_sixel_graphics" = yes ; then
|
||||
AC_DEFINE(OPT_SIXEL_GRAPHICS,1,[Define to 1 to enable sixel graphics support])
|
||||
EXTRAHDRS="$EXTRAHDRS graphics.h"
|
||||
EXTRASRCS="$EXTRASRCS graphics.c"
|
||||
EXTRAOBJS="$EXTRAOBJS graphics.o"
|
||||
fi
|
||||
|
||||
AC_MSG_CHECKING(if you want VT420 rectangle support)
|
||||
CF_ARG_DISABLE(rectangles,
|
||||
[ --disable-rectangles disable VT420 rectangle support],
|
||||
|
@ -1,6 +1,6 @@
|
||||
.\"#! troff -ms $1 -*- Nroff -*-
|
||||
.\" "Xterm Control Sequences" document
|
||||
.\" $XTermId: ctlseqs.ms,v 1.288 2013/04/24 09:49:19 tom Exp $
|
||||
.\" $XTermId: ctlseqs.ms,v 1.295 2013/07/05 20:14:27 tom Exp $
|
||||
.\"
|
||||
.\"
|
||||
.\" Copyright 1996-2012,2013 by Thomas E. Dickey
|
||||
@ -69,8 +69,8 @@
|
||||
.\"
|
||||
.ds XT XTerm
|
||||
.ds xt xterm
|
||||
.ds LF Patch #292
|
||||
.ds RF 2013/04/24
|
||||
.ds LF Patch #294
|
||||
.ds RF 2013/07/05
|
||||
.\"
|
||||
.if n .pl 9999v \" no page breaks in nroff
|
||||
.ND
|
||||
@ -88,7 +88,7 @@
|
||||
..
|
||||
.\" Bulleted paragraph
|
||||
.de bP
|
||||
.IP \(bu 4
|
||||
.IP \(bu 0.2i
|
||||
..
|
||||
.\" Normal leading paragraph
|
||||
.de lP
|
||||
@ -165,7 +165,7 @@
|
||||
.[] Sg \v'-1p'\s\nsSPA\s0\v'1p'
|
||||
.[] Dc \v'-1p'\s\nsDCS\s0\v'1p'
|
||||
.[] Ht \v'-1p'\s\nsHTS\s0\v'1p'
|
||||
.[] ID \v'-1p'\s\nsIND\s0\v'1p'
|
||||
.[] Id \v'-1p'\s\nsIND\s0\v'1p'
|
||||
.[] Nl \v'-1p'\s\nsNEL\s0\v'1p'
|
||||
.[] Os \v'-1p'\s\nsOSC\s0\v'1p'
|
||||
.[] RI \v'-1p'\s\nsRI\s0\v'1p'
|
||||
@ -288,11 +288,13 @@
|
||||
.ds Cb \fIC\v'.3m'\h'-.2m'\s-2b\s0\v'-.3m'\fP
|
||||
.ds Cx \fIC\v'.3m'\h'-.2m'\s-2x\s0\v'-.3m'\fP
|
||||
.ds Cy \fIC\v'.3m'\h'-.2m'\s-2y\s0\v'-.3m'\fP
|
||||
.ds Pa \fIP\v'.3m'\h'-.2m'\s-2a\s0\v'-.3m'\fP
|
||||
.ds Pb \fIP\v'.3m'\h'-.2m'\s-2b\s0\v'-.3m'\fP
|
||||
.ds Pc \fIP\v'.3m'\h'-.2m'\s-2c\s0\v'-.3m'\fP
|
||||
.ds Pd \fIP\v'.3m'\h'-.2m'\s-2d\s0\v'-.3m'\fP
|
||||
.ds Pe \fIP\v'.3m'\h'-.2m'\s-2e\s0\v'-.3m'\fP
|
||||
.ds Pg \fIP\v'.3m'\h'-.2m'\s-2g\s0\v'-.3m'\fP
|
||||
.ds Ph \fIP\v'.3m'\h'-.2m'\s-2h\s0\v'-.3m'\fP
|
||||
.ds Pi \fIP\v'.3m'\h'-.2m'\s-2i\s0\v'-.3m'\fP
|
||||
.ds Pl \fIP\v'.3m'\h'-.2m'\s-2l\s0\v'-.3m'\fP
|
||||
.ds Pm \fIP\v'.3m'\h'-.2m'\s-2m\s0\v'-.3m'\fP
|
||||
@ -328,7 +330,7 @@ X Consortium (1994)
|
||||
Thomas Dickey
|
||||
.AI
|
||||
XFree86 Project (1996-2006)
|
||||
invisible-island.net (2006-2012)
|
||||
invisible-island.net (2006-2013)
|
||||
updated for \*(XT \*(LF (\*(RF)
|
||||
.AU
|
||||
.
|
||||
@ -356,7 +358,7 @@ It generates 7-bit controls (by default) or 8-bit if S8C1T is enabled.
|
||||
The following pairs of 7-bit and 8-bit control characters are equivalent:
|
||||
.St
|
||||
.IP \\*(Es\\*D
|
||||
Index (\*(ID is 0x84).
|
||||
Index (\*(Id is 0x84).
|
||||
.IP \\*(Es\\*E
|
||||
Next Line (\*(Nl is 0x85).
|
||||
.IP \\*(Es\\*H
|
||||
@ -401,13 +403,18 @@ but there is support for later DEC VT terminals
|
||||
as well as ISO 6429 and \fIaixterm\fP color controls.
|
||||
The only VT102 feature not supported is auto-repeat,
|
||||
since the only way X provides for this will affect all windows.
|
||||
.LP
|
||||
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.
|
||||
.LP
|
||||
The escape codes to designate and invoke
|
||||
character sets are specified by ISO 2022; see that document for a
|
||||
discussion of character sets.
|
||||
.LP
|
||||
Many of the features are optional;
|
||||
\fI\*(xt\fP can be configured and built without support for them.
|
||||
.
|
||||
.St
|
||||
.\"
|
||||
@ -660,7 +667,7 @@ and
|
||||
\fIxterm\fP responds with
|
||||
\*(Dc\*1\*+\*r\*(Pt\*s\*(ST
|
||||
for valid requests, adding to \*(Pt an \*=,
|
||||
and the value of the corresponding string that \*(xt would send,
|
||||
and the value of the corresponding string that \fI\*(xt\fP would send,
|
||||
or
|
||||
\*(Dc\*0\*+\*r\*(Pt\*s\*(ST
|
||||
for invalid requests.
|
||||
@ -1114,6 +1121,21 @@ Device Status Report (DSR).
|
||||
\*(Ps = \*6 \(-> Report Cursor Position (CPR) [row;column]. Result is
|
||||
.br
|
||||
\*(Cs\*(Ir\*s\*;\*(Ic\*s\*R
|
||||
.sp
|
||||
\fBNote\fP:
|
||||
it is possible for this sequence to be sent by a function key.
|
||||
For example, with the default keyboard configuration
|
||||
the shifted F1 key may send (with shift-, control-, alt-modifiers)
|
||||
.br
|
||||
\*(Cs\*1\*s\*;\*2\*s\*R, or
|
||||
\*(Cs\*1\*s\*;\*5\*s\*R, or
|
||||
\*(Cs\*1\*s\*;\*6\*s\*R, etc.
|
||||
.br
|
||||
The second parameter encodes the modifiers; values range from 2 to 16.
|
||||
See the section \fBPC-Style Function Keys\fP for the codes.
|
||||
The \fBmodifyFunctionKeys\fP and \fBmodifyKeyboard\fP resources
|
||||
can change the form of the string sent from the modified F1 key.
|
||||
.sp
|
||||
.
|
||||
.IP \\*(Cs\\*>\\*(Ps\\*s\\*n
|
||||
Disable modifiers which may be enabled via the
|
||||
@ -1153,6 +1175,12 @@ The last two parameters apply to VT400 & up, and denote keyboard ready and LK01
|
||||
\*(Ps = \*5\*3 \(-> Report Locator status as
|
||||
\*(Cs\*?\*5\*3\*n Locator available, if compiled-in, or
|
||||
\*(Cs\*?\*5\*0\*n No Locator, if not.
|
||||
\*(Ps = \*5\*5 \(-> Report Locator status as
|
||||
\*(Cs\*?\*5\*3\*n Locator available, if compiled-in, or
|
||||
\*(Cs\*?\*5\*0\*n No Locator, if not.
|
||||
\*(Ps = \*5\*6 \(-> Report Locator type as
|
||||
\*(Cs\*?\*5\*7\*;\*1\*n Mouse, if compiled-in, or
|
||||
\*(Cs\*?\*5\*7\*;\*0\*n Cannot identify, if not.
|
||||
\*(Ps = \*6\*2 \(-> Report macro space (DECMSR) as
|
||||
\*(Cs\*(Pn\*s\\*\*s\*{
|
||||
\*(Ps = \*6\*3 \(-> Report memory checksum (DECCKSR) as
|
||||
@ -1439,7 +1467,7 @@ Request Locator Position (DECRQLP).
|
||||
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, \*(xt will respond
|
||||
If Locator Reporting has been enabled by a DECELR, \fI\*(xt\fP will respond
|
||||
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
|
||||
@ -1452,7 +1480,7 @@ Parameters are [event;button;row;column;page].
|
||||
.br
|
||||
Valid values for the event:
|
||||
\*(Pe = \*0 \(-> locator unavailable - no other parameters sent.
|
||||
\*(Pe = \*1 \(-> request - \*(xt received a DECRQLP.
|
||||
\*(Pe = \*1 \(-> request - \fI\*(xt\fP received a DECRQLP.
|
||||
\*(Pe = \*2 \(-> left button down.
|
||||
\*(Pe = \*3 \(-> left button up.
|
||||
\*(Pe = \*4 \(-> middle button down.
|
||||
@ -1471,7 +1499,7 @@ Valid values for the event:
|
||||
\*(Pb & \*8 \(<- M4 button down.
|
||||
.br
|
||||
``row'' and ``column'' parameters are the coordinates of the locator
|
||||
position in the \*(xt window, encoded as ASCII decimal.
|
||||
position in the \fI\*(xt\fP window, encoded as ASCII decimal.
|
||||
.br
|
||||
The ``page'' parameter is not used by \*(xt, and will be omitted.
|
||||
.
|
||||
@ -1509,7 +1537,7 @@ their bright versions 8-15,
|
||||
and if supported, the remainder of the 88-color or 256-color table.
|
||||
.sP
|
||||
If a "?" is given rather than a name or RGB specification,
|
||||
\*(xt replies with a control sequence of the same form which can be used
|
||||
\fI\*(xt\fP replies with a control sequence of the same form which can be used
|
||||
to set the corresponding color.
|
||||
Because more than one pair of color number and specification can
|
||||
be given in one control sequence, \fIxterm\fR can make more than one reply.
|
||||
@ -1539,7 +1567,7 @@ The value of \*(Ps tells the starting point in the list.
|
||||
The colors are specified by name or RGB specification as per \fIXParseColor\fP.
|
||||
.sP
|
||||
If a "?" is given rather than a name or RGB specification,
|
||||
\*(xt replies with a control sequence of the same form which can be used
|
||||
\fI\*(xt\fP replies with a control sequence of the same form which can be used
|
||||
to set the corresponding dynamic color.
|
||||
Because more than one pair of color number and specification can
|
||||
be given in one control sequence, \fIxterm\fR can make more than one reply.
|
||||
@ -1650,7 +1678,7 @@ Common keyboard configurations assign the \fIMeta\fP modifier to an "Alt" key.
|
||||
By using \fIxmodmap\fP one may have the modifier assigned to a different key,
|
||||
and have "real" alt and meta keys.
|
||||
Here is an example:
|
||||
.DS B
|
||||
.ID
|
||||
! put meta on mod3 to distinguish it from alt
|
||||
keycode 64 = Alt_L
|
||||
clear mod1
|
||||
@ -1845,7 +1873,7 @@ Code Modifiers
|
||||
_
|
||||
.TH
|
||||
.T&
|
||||
l | l .
|
||||
c | l .
|
||||
2 Shift
|
||||
3 Alt
|
||||
4 Shift + Alt
|
||||
@ -1853,6 +1881,14 @@ l | l .
|
||||
6 Shift + Control
|
||||
7 Alt + Control
|
||||
8 Shift + Alt + Control
|
||||
9 Meta
|
||||
10 Meta + Shift
|
||||
11 Meta + Alt
|
||||
12 Meta + Alt + Shift
|
||||
13 Meta + Ctrl
|
||||
14 Meta + Ctrl + Shift
|
||||
15 Meta + Ctrl + Alt
|
||||
16 Meta + Ctrl +Alt + Shift
|
||||
_
|
||||
.TE
|
||||
For example, shift-F5 would be sent as
|
||||
@ -2120,7 +2156,7 @@ control sequence.
|
||||
Manifest constants for the parameter values
|
||||
are defined in \fBxcharmouse.h\fP as follows:
|
||||
.
|
||||
.DS B
|
||||
.ID
|
||||
#define SET_X10_MOUSE 9
|
||||
#define SET_VT200_MOUSE 1000
|
||||
#define SET_VT200_HIGHLIGHT_MOUSE 1001
|
||||
@ -2240,10 +2276,10 @@ otherwise:
|
||||
.br
|
||||
The parameters are \fIstartx, starty, endx, endy, mousex,\fP and \fImousey.\fP
|
||||
.RS
|
||||
.IP \- 5
|
||||
.IP \- 0.2i
|
||||
\fIstartx, starty, endx, \fPand\fI endy\fP give the starting and
|
||||
ending character positions of the region.
|
||||
.IP \- 5
|
||||
.IP \- 0.2i
|
||||
\fImousex\fP and \fImousey\fP
|
||||
give the location of the mouse at button up, which may not be over a
|
||||
character.
|
||||
@ -2341,6 +2377,38 @@ and the Window manipulation controls.
|
||||
For these reasons, the 1015 control is not recommended;
|
||||
it is not an improvement over 1005.
|
||||
.
|
||||
.Sh "Sixel Graphics"
|
||||
.LP
|
||||
If \fI\*(xt\fP is configured as
|
||||
VT240,
|
||||
VT241,
|
||||
VT330 or
|
||||
VT340
|
||||
using the \fBdecTerminalID\fP resource,
|
||||
it supports Sixel Graphics controls, a subset of ReGIS graphics.
|
||||
.St
|
||||
.IP \\*(Cs\\*(Ps\\*s\\*c
|
||||
\fI\*(xt\fP responds to Send Device Attributes (Primary DA) with these
|
||||
additional codes:
|
||||
\*(Ps = \*3 \(-> ReGIS graphics.
|
||||
\*(Ps = \*4 \(-> SIXEL graphics.
|
||||
.IP \\*(Cs\\*?\\*(Pm\\*s\\*h
|
||||
\fI\*(xt\fP has these additional private Set Mode values:
|
||||
\*(Ps = \*8\*0 \(-> SIXEL scrolling.
|
||||
\*(Ps = \*1\*0\*7\*0 \(-> use private color registers for each graphic.
|
||||
.IP \\*(Dc\\*(Pa\\*;\\*(Pb\\*;\\*(Ph\\*s\\*q\\*s\\*(Ps..\\*(Ps\fP\\*(ST
|
||||
See
|
||||
.ID
|
||||
http://vt100.net/docs/vt3xx-gp/chapter14.html
|
||||
.DE
|
||||
The sixel data device control string has three positional parameters,
|
||||
following the \*q with sixel data.
|
||||
\*(Pa \(-> pixel aspect ratio
|
||||
\*(Pb \(-> background color option
|
||||
\*(Ph \(-> horizontal grid size (ignored).
|
||||
\*(Ps \(-> sixel data
|
||||
.Ed
|
||||
.
|
||||
.Sh "Tektronix 4014 Mode"
|
||||
.LP
|
||||
Most of these sequences are standard Tektronix 4014 control sequences.
|
||||
|
@ -20,8 +20,8 @@
|
||||
|
||||
Thomas Dickey
|
||||
XFree86 Project (1996-2006)
|
||||
invisible-island.net (2006-2012)
|
||||
updated for XTerm Patch #292 (2013/04/24)
|
||||
invisible-island.net (2006-2013)
|
||||
updated for XTerm Patch #294 (2013/07/05)
|
||||
|
||||
|
||||
|
||||
@ -89,12 +89,15 @@ Most of these control sequences are standard VT102 control sequences,
|
||||
but there is support for later DEC VT terminals (i.e., VT220, VT320,
|
||||
VT420, VT510), as well as ISO 6429 and aixterm color controls. The only
|
||||
VT102 feature not supported is auto-repeat, since the only way X pro-
|
||||
vides for this will affect all windows. There are additional control
|
||||
sequences to provide xterm-dependent 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 desig-
|
||||
nate and invoke character sets are specified by ISO 2022; see that docu-
|
||||
ment for a discussion of character sets.
|
||||
vides for this will affect all windows.
|
||||
There are additional control sequences to provide xterm-dependent func-
|
||||
tions, 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 paren-
|
||||
theses.
|
||||
The escape codes to designate and invoke character sets are specified by
|
||||
ISO 2022; see that document for a discussion of character sets.
|
||||
Many of the features are optional; xterm can be configured and built
|
||||
without support for them.
|
||||
|
||||
Single-character functions
|
||||
BEL Bell (Ctrl-G).
|
||||
@ -579,11 +582,11 @@ CSI Pm m Character Attributes (SGR).
|
||||
Xterm maintains a color palette whose entries are identified
|
||||
by an index beginning with zero. If 88- or 256-color support
|
||||
is compiled, the following apply:
|
||||
o All parameters are decimal integers.
|
||||
o RGB values range from zero (0) to 255.
|
||||
o ISO-8613-3 can be interpreted in more than one way; xterm
|
||||
allows the semicolons in this control to be replaced by
|
||||
colons (but after the first colon, colons must be used).
|
||||
o All parameters are decimal integers.
|
||||
o RGB values range from zero (0) to 255.
|
||||
o ISO-8613-3 can be interpreted in more than one way; xterm
|
||||
allows the semicolons in this control to be replaced by
|
||||
colons (but after the first colon, colons must be used).
|
||||
|
||||
These ISO-8613-3 controls are supported:
|
||||
Ps = 3 8 ; 2 ; Pr ; Pg ; Pb -> Set foreground color to the
|
||||
@ -614,6 +617,20 @@ CSI Ps n Device Status Report (DSR).
|
||||
Ps = 6 -> Report Cursor Position (CPR) [row;column].
|
||||
Result is
|
||||
CSI r ; c R
|
||||
|
||||
Note: it is possible for this sequence to be sent by a func-
|
||||
tion key. For example, with the default keyboard configura-
|
||||
tion the shifted F1 key may send (with shift-, control-, alt-
|
||||
modifiers)
|
||||
CSI 1 ; 2 R , or
|
||||
CSI 1 ; 5 R , or
|
||||
CSI 1 ; 6 R , etc.
|
||||
The second parameter encodes the modifiers; values range from
|
||||
2 to 16. See the section PC-Style Function Keys for the
|
||||
codes. The modifyFunctionKeys and modifyKeyboard resources
|
||||
can change the form of the string sent from the modified F1
|
||||
key.
|
||||
|
||||
CSI > Ps n
|
||||
Disable modifiers which may be enabled via the CSI > Ps; Ps m
|
||||
sequence. This corresponds to a resource value of "-1", which
|
||||
@ -642,6 +659,10 @@ CSI ? Ps n
|
||||
board ready and LK01 respectively.
|
||||
Ps = 5 3 -> Report Locator status as CSI ? 5 3 n Locator
|
||||
available, if compiled-in, or CSI ? 5 0 n No Locator, if not.
|
||||
Ps = 5 5 -> Report Locator status as CSI ? 5 3 n Locator
|
||||
available, if compiled-in, or CSI ? 5 0 n No Locator, if not.
|
||||
Ps = 5 6 -> Report Locator type as CSI ? 5 7 ; 1 n Mouse,
|
||||
if compiled-in, or CSI ? 5 7 ; 0 n Cannot identify, if not.
|
||||
Ps = 6 2 -> Report macro space (DECMSR) as CSI Pn \* {
|
||||
Ps = 6 3 -> Report memory checksum (DECCKSR) as DCS Pt ! x
|
||||
x x x ST
|
||||
@ -1068,13 +1089,13 @@ keyboard configurations assign the Meta modifier to an "Alt" key. By
|
||||
using xmodmap one may have the modifier assigned to a different key, and
|
||||
have "real" alt and meta keys. Here is an example:
|
||||
|
||||
! put meta on mod3 to distinguish it from alt
|
||||
keycode 64 = Alt_L
|
||||
clear mod1
|
||||
add mod1 = Alt_L
|
||||
keycode 115 = Meta_L
|
||||
clear mod3
|
||||
add mod3 = Meta_L
|
||||
! put meta on mod3 to distinguish it from alt
|
||||
keycode 64 = Alt_L
|
||||
clear mod1
|
||||
add mod1 = Alt_L
|
||||
keycode 115 = Meta_L
|
||||
clear mod3
|
||||
add mod3 = Meta_L
|
||||
|
||||
|
||||
The metaSendsEscape resource (and altSendsEscape if altIsNotMeta is set)
|
||||
@ -1216,16 +1237,24 @@ In normal mode, i.e., a Sun/PC keyboard when the sunKeyboard resource is
|
||||
false, xterm recognizes function key modifiers which are parameters
|
||||
appended before the final character of the control sequence.
|
||||
|
||||
Code Modifiers
|
||||
---------+-----------------------
|
||||
2 | Shift
|
||||
3 | Alt
|
||||
4 | Shift + Alt
|
||||
5 | Control
|
||||
6 | Shift + Control
|
||||
7 | Alt + Control
|
||||
8 | Shift + Alt + Control
|
||||
---------+-----------------------
|
||||
Code Modifiers
|
||||
---------+--------------------------
|
||||
2 | Shift
|
||||
3 | Alt
|
||||
4 | Shift + Alt
|
||||
5 | Control
|
||||
6 | Shift + Control
|
||||
7 | Alt + Control
|
||||
8 | Shift + Alt + Control
|
||||
9 | Meta
|
||||
10 | Meta + Shift
|
||||
11 | Meta + Alt
|
||||
12 | Meta + Alt + Shift
|
||||
13 | Meta + Ctrl
|
||||
14 | Meta + Ctrl + Shift
|
||||
15 | Meta + Ctrl + Alt
|
||||
16 | Meta + Ctrl +Alt + Shift
|
||||
---------+--------------------------
|
||||
|
||||
For example, shift-F5 would be sent as CSI 1 5 ; 2 ~
|
||||
|
||||
@ -1424,8 +1453,8 @@ tion on button presses. These modes are typically used by editors and
|
||||
other full-screen applications that want to make use of the mouse.
|
||||
|
||||
There are two sets of mutually exclusive modes:
|
||||
o mouse protocol
|
||||
o protocol encoding
|
||||
o mouse protocol
|
||||
o protocol encoding
|
||||
|
||||
The mouse protocols include DEC Locator mode, enabled by the DECELR CSI
|
||||
Ps ; Ps ' z control sequence, and is not described here (control
|
||||
@ -1436,19 +1465,19 @@ protocols are each enabled (or disabled) by a different parameter in the
|
||||
Manifest constants for the parameter values are defined in xcharmouse.h
|
||||
as follows:
|
||||
|
||||
#define SET_X10_MOUSE 9
|
||||
#define SET_VT200_MOUSE 1000
|
||||
#define SET_VT200_HIGHLIGHT_MOUSE 1001
|
||||
#define SET_BTN_EVENT_MOUSE 1002
|
||||
#define SET_ANY_EVENT_MOUSE 1003
|
||||
#define SET_X10_MOUSE 9
|
||||
#define SET_VT200_MOUSE 1000
|
||||
#define SET_VT200_HIGHLIGHT_MOUSE 1001
|
||||
#define SET_BTN_EVENT_MOUSE 1002
|
||||
#define SET_ANY_EVENT_MOUSE 1003
|
||||
|
||||
#define SET_FOCUS_EVENT_MOUSE 1004
|
||||
#define SET_FOCUS_EVENT_MOUSE 1004
|
||||
|
||||
#define SET_EXT_MODE_MOUSE 1005
|
||||
#define SET_SGR_EXT_MODE_MOUSE 1006
|
||||
#define SET_URXVT_EXT_MODE_MOUSE 1015
|
||||
#define SET_EXT_MODE_MOUSE 1005
|
||||
#define SET_SGR_EXT_MODE_MOUSE 1006
|
||||
#define SET_URXVT_EXT_MODE_MOUSE 1015
|
||||
|
||||
#define SET_ALTERNATE_SCROLL 1007
|
||||
#define SET_ALTERNATE_SCROLL 1007
|
||||
|
||||
The motion reporting modes are strictly xterm extensions, and are not
|
||||
part of any standard, though they are analogous to the DEC VT200 DECELR
|
||||
@ -1466,26 +1495,26 @@ 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).
|
||||
o Cb is button-1.
|
||||
o Cx and Cy are the x and y coordinates of the mouse when the button
|
||||
was pressed.
|
||||
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
|
||||
|
||||
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.
|
||||
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.
|
||||
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 but-
|
||||
ton 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 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
|
||||
|
||||
Wheel mice may return buttons 4 and 5. Those buttons are represented by
|
||||
@ -1520,15 +1549,15 @@ 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.
|
||||
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 charac-
|
||||
ter 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
|
||||
|
||||
Button-event tracking is essentially the same as normal tracking, but
|
||||
@ -1536,14 +1565,13 @@ 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.
|
||||
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) ).
|
||||
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 tracking
|
||||
|
||||
Any-event mode is the same as button-event mode, except that all motion
|
||||
@ -1581,14 +1609,13 @@ SGR (1006)
|
||||
semicolon-separated encoded button value, the Cx and Cy ordi-
|
||||
nates and a final character which is M for button press and m
|
||||
for button release.
|
||||
o The encoded button value in this case does not add 32
|
||||
since that was useful only in the X10 scheme for ensuring
|
||||
that the byte containing the button value is a printable
|
||||
code.
|
||||
o The modifiers are encoded in the same way.
|
||||
o A different final character is used for button release to
|
||||
resolve the X10 ambiguity regarding which button was
|
||||
released.
|
||||
o The encoded button value in this case does not add 32 since
|
||||
that was useful only in the X10 scheme for ensuring that the
|
||||
byte containing the button value is a printable code.
|
||||
o The modifiers are encoded in the same way.
|
||||
o A different final character is used for button release to
|
||||
resolve the X10 ambiguity regarding which button was
|
||||
released.
|
||||
The highlight tracking responses are also modified to an SGR-
|
||||
like format, using the same SGR-style scheme and button-encod-
|
||||
ings.
|
||||
@ -1604,6 +1631,32 @@ URXVT (1015)
|
||||
sons, the 1015 control is not recommended; it is not an
|
||||
improvement over 1005.
|
||||
|
||||
Sixel Graphics
|
||||
If xterm is configured as VT240, VT241, VT330 or VT340 using the decTer-
|
||||
minalID resource, it supports Sixel Graphics controls, a subset of ReGIS
|
||||
graphics.
|
||||
|
||||
CSI Ps c xterm responds to Send Device Attributes (Primary DA) with
|
||||
these additional codes:
|
||||
Ps = 3 -> ReGIS graphics.
|
||||
Ps = 4 -> SIXEL graphics.
|
||||
CSI ? Pm h
|
||||
xterm has these additional private Set Mode values:
|
||||
Ps = 8 0 -> SIXEL scrolling.
|
||||
Ps = 1 0 7 0 -> use private color registers for each
|
||||
graphic.
|
||||
DCS Pa; Pb; Ph q Ps..PsST
|
||||
See
|
||||
|
||||
http://vt100.net/docs/vt3xx-gp/chapter14.html
|
||||
|
||||
The sixel data device control string has three positional
|
||||
parameters, following the q with sixel data.
|
||||
Pa -> pixel aspect ratio
|
||||
Pb -> background color option
|
||||
Ph -> horizontal grid size (ignored).
|
||||
Ps -> sixel data
|
||||
|
||||
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
|
||||
|
1475
app/xterm/graphics.c
Normal file
1475
app/xterm/graphics.c
Normal file
File diff suppressed because it is too large
Load Diff
70
app/xterm/graphics.h
Normal file
70
app/xterm/graphics.h
Normal file
@ -0,0 +1,70 @@
|
||||
/* $XTermId: graphics.h,v 1.6 2013/07/10 08:28:55 Ross.Combs Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 2013 by Ross Combs
|
||||
* Copyright 2013 by Thomas E. Dickey
|
||||
*
|
||||
* All Rights Reserved
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the
|
||||
* "Software"), to deal in the Software without restriction, including
|
||||
* without limitation the rights to use, copy, modify, merge, publish,
|
||||
* distribute, sublicense, and/or sell copies of the Software, and to
|
||||
* permit persons to whom the Software is furnished to do so, subject to
|
||||
* the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included
|
||||
* in all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
* IN NO EVENT SHALL THE ABOVE LISTED COPYRIGHT HOLDER(S) BE LIABLE FOR ANY
|
||||
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*
|
||||
* Except as contained in this notice, the name(s) of the above copyright
|
||||
* holders shall not be used in advertising or otherwise to promote the
|
||||
* sale, use or other dealings in this Software without prior written
|
||||
* authorization.
|
||||
*/
|
||||
|
||||
#ifndef included_graphics_h
|
||||
#define included_graphics_h
|
||||
/* *INDENT-OFF* */
|
||||
|
||||
#include <ptyx.h>
|
||||
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
|
||||
typedef unsigned short RegisterNum;
|
||||
|
||||
extern void chararea_clear_displayed_graphics(TScreen const *screen, int leftcol, int toprow, int ncols, int nrows);
|
||||
extern void parse_regis(XtermWidget xw, ANSI *params, char const *string);
|
||||
extern void parse_sixel(XtermWidget xw, ANSI *params, char const *string);
|
||||
extern void pixelarea_clear_displayed_graphics(TScreen const *screen, int winx, int winy, int w, int h);
|
||||
extern void refresh_displayed_graphics(TScreen const *screen, int leftcol, int toprow, int ncols, int nrows);
|
||||
extern void refresh_modified_displayed_graphics(TScreen const *screen);
|
||||
extern void reset_displayed_graphics(TScreen const *screen);
|
||||
extern void scroll_displayed_graphics(int rows);
|
||||
extern void update_displayed_graphics_color_registers(TScreen const *screen, RegisterNum color, short r, short g, short b);
|
||||
|
||||
#else
|
||||
|
||||
#define chararea_clear_displayed_graphics(screen, leftcol, toprow, ncols, nrows) /* nothing */
|
||||
#define parse_regis(xw, params, string) /* nothing */
|
||||
#define parse_sixel(xw, params, string) /* nothing */
|
||||
#define pixelarea_clear_displayed_graphics(screen, winx, winy, w, h) /* nothing */
|
||||
#define refresh_displayed_graphics(screen, leftcol, toprow, ncols, nrows) /* nothing */
|
||||
#define refresh_modified_displayed_graphics(screen) /* nothing */
|
||||
#define reset_displayed_graphics(screen) /* nothing */
|
||||
#define scroll_displayed_graphics(rows) /* nothing */
|
||||
#define update_displayed_graphics_color_registers(screen, color, r, g, b) /* nothing */
|
||||
|
||||
#endif
|
||||
|
||||
/* *INDENT-ON* */
|
||||
|
||||
#endif /* included_graphics_h */
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: menu.c,v 1.313 2013/02/03 21:53:58 tom Exp $ */
|
||||
/* $XTermId: menu.c,v 1.320 2013/06/23 22:46:18 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2012,2013 by Thomas E. Dickey
|
||||
@ -228,6 +228,11 @@ static void do_font_renderfont PROTO_XT_CALLBACK_ARGS;
|
||||
static void do_sco_fkeys PROTO_XT_CALLBACK_ARGS;
|
||||
#endif
|
||||
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
static void do_privatecolorregisters PROTO_XT_CALLBACK_ARGS;
|
||||
static void do_sixelscrolling PROTO_XT_CALLBACK_ARGS;
|
||||
#endif
|
||||
|
||||
#if OPT_SUN_FUNC_KEYS
|
||||
static void do_sun_fkeys PROTO_XT_CALLBACK_ARGS;
|
||||
#endif
|
||||
@ -363,6 +368,10 @@ MenuEntry vtMenuEntries[] = {
|
||||
{ "vthide", do_vthide, NULL },
|
||||
#endif
|
||||
{ "altscreen", do_altscreen, NULL },
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
{ "sixelScrolling", do_sixelscrolling, NULL },
|
||||
{ "privateColorRegisters", do_privatecolorregisters, NULL },
|
||||
#endif
|
||||
};
|
||||
|
||||
MenuEntry fontMenuEntries[] = {
|
||||
@ -778,10 +787,12 @@ domenu(Widget w,
|
||||
update_bellIsUrgent();
|
||||
update_cursorblink();
|
||||
update_altscreen();
|
||||
update_decsdm(); /* Sixel Display Mode */
|
||||
update_titeInhibit();
|
||||
#ifndef NO_ACTIVE_ICON
|
||||
update_activeicon();
|
||||
#endif /* NO_ACTIVE_ICON */
|
||||
update_privatecolorregisters();
|
||||
}
|
||||
break;
|
||||
|
||||
@ -2205,6 +2216,65 @@ update_fullscreen(void)
|
||||
|
||||
#endif /* OPT_MAXIMIZE */
|
||||
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
static void
|
||||
do_sixelscrolling(Widget gw GCC_UNUSED,
|
||||
XtPointer closure GCC_UNUSED,
|
||||
XtPointer data GCC_UNUSED)
|
||||
{
|
||||
term->keyboard.flags ^= MODE_DECSDM;
|
||||
update_decsdm();
|
||||
}
|
||||
|
||||
static void
|
||||
do_privatecolorregisters(Widget gw GCC_UNUSED,
|
||||
XtPointer closure GCC_UNUSED,
|
||||
XtPointer data GCC_UNUSED)
|
||||
{
|
||||
TScreen *screen = TScreenOf(term);
|
||||
|
||||
ToggleFlag(screen->privatecolorregisters);
|
||||
update_privatecolorregisters();
|
||||
}
|
||||
|
||||
void
|
||||
update_privatecolorregisters(void)
|
||||
{
|
||||
UpdateCheckbox("update_privatecolorregisters",
|
||||
vtMenuEntries,
|
||||
vtMenu_privatecolorregisters,
|
||||
TScreenOf(term)->privatecolorregisters);
|
||||
}
|
||||
|
||||
void
|
||||
update_decsdm(void)
|
||||
{
|
||||
UpdateCheckbox("update_decsdm",
|
||||
vtMenuEntries,
|
||||
vtMenu_sixelscrolling,
|
||||
(term->keyboard.flags & MODE_DECSDM) != 0);
|
||||
}
|
||||
|
||||
void
|
||||
HandleSetPrivateColorRegisters(Widget w,
|
||||
XEvent * event GCC_UNUSED,
|
||||
String * params,
|
||||
Cardinal *param_count)
|
||||
{
|
||||
HANDLE_VT_TOGGLE(privatecolorregisters);
|
||||
}
|
||||
|
||||
void
|
||||
HandleSixelScrolling(Widget w,
|
||||
XEvent * event GCC_UNUSED,
|
||||
String * params,
|
||||
Cardinal *param_count)
|
||||
{
|
||||
handle_vt_toggle(do_sixelscrolling, term->keyboard.flags & MODE_DECSDM,
|
||||
params, *param_count, w);
|
||||
}
|
||||
#endif
|
||||
|
||||
#if OPT_SUN_FUNC_KEYS
|
||||
void
|
||||
HandleSunFunctionKeys(Widget w,
|
||||
|
@ -1,7 +1,7 @@
|
||||
/* $XTermId: menu.h,v 1.128 2012/09/21 10:39:10 tom Exp $ */
|
||||
/* $XTermId: menu.h,v 1.132 2013/06/23 20:52:38 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2010,2011 by Thomas E. Dickey
|
||||
* Copyright 1999-2011,2013 by Thomas E. Dickey
|
||||
*
|
||||
* All Rights Reserved
|
||||
*
|
||||
@ -126,10 +126,12 @@ extern void HandleScrollbar PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSecure PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSendSignal PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSetPopOnBell PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSetPrivateColorRegisters PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSetSelect PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSetTekText PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSetTerminalType PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSetVisualBell PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSixelScrolling PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSoftReset PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSunFunctionKeys PROTO_XT_ACTIONS_ARGS;
|
||||
extern void HandleSunKeyboard PROTO_XT_ACTIONS_ARGS;
|
||||
@ -255,6 +257,10 @@ typedef enum {
|
||||
vtMenu_vthide,
|
||||
#endif
|
||||
vtMenu_altscreen,
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
vtMenu_sixelscrolling,
|
||||
vtMenu_privatecolorregisters,
|
||||
#endif
|
||||
vtMenu_LAST
|
||||
} vtMenuIndices;
|
||||
|
||||
@ -479,6 +485,14 @@ extern void update_font_packed(void);
|
||||
#define update_font_packed() /* nothing */
|
||||
#endif
|
||||
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
extern void update_decsdm(void);
|
||||
extern void update_privatecolorregisters(void);
|
||||
#else
|
||||
#define update_decsdm() /* nothing */
|
||||
#define update_privatecolorregisters() /* nothing */
|
||||
#endif
|
||||
|
||||
#if OPT_DEC_SOFTFONT
|
||||
extern void update_font_loadable(void);
|
||||
#else
|
||||
|
248
app/xterm/misc.c
248
app/xterm/misc.c
@ -1,4 +1,4 @@
|
||||
/* $XTermId: misc.c,v 1.660 2013/05/26 21:16:20 tom Exp $ */
|
||||
/* $XTermId: misc.c,v 1.670 2013/06/23 22:11:54 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2012,2013 by Thomas E. Dickey
|
||||
@ -91,10 +91,10 @@
|
||||
#include <error.h>
|
||||
#include <menu.h>
|
||||
#include <fontutils.h>
|
||||
#include <xcharmouse.h>
|
||||
#include <xstrings.h>
|
||||
#include <xtermcap.h>
|
||||
#include <VTparse.h>
|
||||
#include <graphics.h>
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
@ -534,8 +534,10 @@ xtermAppPending(void)
|
||||
while (result && XtAppPeekEvent(app_con, &this_event)) {
|
||||
if (this_event.type == Expose) {
|
||||
result = mergeExposeEvents(&this_event);
|
||||
TRACE(("got merged expose events\n"));
|
||||
} else if (this_event.type == ConfigureNotify) {
|
||||
result = mergeConfigureEvents(&this_event);
|
||||
TRACE(("got merged configure notify events\n"));
|
||||
} else {
|
||||
TRACE(("pending %s\n", visibleEventType(this_event.type)));
|
||||
break;
|
||||
@ -2624,6 +2626,14 @@ ResetAnsiColorRequest(XtermWidget xw, char *buf, int start)
|
||||
#define allocateExactRGB(xw, cmap, def) XAllocColor(TScreenOf(xw)->display, cmap, def)
|
||||
#endif /* OPT_ISO_COLORS */
|
||||
|
||||
Boolean
|
||||
allocateBestRGB(XtermWidget xw, XColor * def)
|
||||
{
|
||||
Colormap cmap = xw->core.colormap;
|
||||
|
||||
return allocateExactRGB(xw, cmap, def) || allocateClosestRGB(xw, cmap, def);
|
||||
}
|
||||
|
||||
static Boolean
|
||||
xtermAllocColor(XtermWidget xw, XColor * def, const char *spec)
|
||||
{
|
||||
@ -2632,8 +2642,7 @@ xtermAllocColor(XtermWidget xw, XColor * def, const char *spec)
|
||||
Colormap cmap = xw->core.colormap;
|
||||
|
||||
if (XParseColor(screen->display, cmap, spec, def)
|
||||
&& (allocateExactRGB(xw, cmap, def)
|
||||
|| allocateClosestRGB(xw, cmap, def))) {
|
||||
&& allocateBestRGB(xw, def)) {
|
||||
TRACE(("xtermAllocColor -> %x/%x/%x\n",
|
||||
def->red, def->green, def->blue));
|
||||
result = True;
|
||||
@ -3624,6 +3633,49 @@ parse_decudk(const char *cp)
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Parse numeric parameters. Normally we use a state machine to simplify
|
||||
* interspersing with control characters, but have the string already.
|
||||
*/
|
||||
static void
|
||||
parse_ansi_params(ANSI * params, const char **string)
|
||||
{
|
||||
const char *cp = *string;
|
||||
ParmType nparam = 0;
|
||||
int last_empty = 1;
|
||||
|
||||
memset(params, 0, sizeof(*params));
|
||||
while (*cp != '\0') {
|
||||
Char ch = CharOf(*cp++);
|
||||
|
||||
if (isdigit(ch)) {
|
||||
last_empty = 0;
|
||||
if (nparam < NPARAM) {
|
||||
params->a_param[nparam] =
|
||||
(ParmType) ((params->a_param[nparam] * 10)
|
||||
+ (ch - '0'));
|
||||
}
|
||||
} else if (ch == ';') {
|
||||
last_empty = 1;
|
||||
nparam++;
|
||||
} else if (ch < 32) {
|
||||
/* EMPTY */ ;
|
||||
} else {
|
||||
/* should be 0x30 to 0x7e */
|
||||
params->a_final = ch;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
*string = cp;
|
||||
if (!last_empty)
|
||||
nparam++;
|
||||
if (nparam > NPARAM)
|
||||
params->a_nparam = NPARAM;
|
||||
else
|
||||
params->a_nparam = nparam;
|
||||
}
|
||||
|
||||
#if OPT_TRACE
|
||||
#define SOFT_WIDE 10
|
||||
#define SOFT_HIGH 20
|
||||
@ -3738,40 +3790,6 @@ parse_decdld(ANSI * params, const char *string)
|
||||
#define parse_decdld(p,q) /* nothing */
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Parse numeric parameters. Normally we use a state machine to simplify
|
||||
* interspersing with control characters, but have the string already.
|
||||
*/
|
||||
static void
|
||||
parse_ansi_params(ANSI * params, const char **string)
|
||||
{
|
||||
const char *cp = *string;
|
||||
ParmType nparam = 0;
|
||||
|
||||
memset(params, 0, sizeof(*params));
|
||||
while (*cp != '\0') {
|
||||
Char ch = CharOf(*cp++);
|
||||
|
||||
if (isdigit(ch)) {
|
||||
if (nparam < NPARAM) {
|
||||
params->a_param[nparam] =
|
||||
(ParmType) ((params->a_param[nparam] * 10)
|
||||
+ (ch - '0'));
|
||||
}
|
||||
} else if (ch == ';') {
|
||||
if (++nparam < NPARAM)
|
||||
params->a_nparam = nparam;
|
||||
} else if (ch < 32) {
|
||||
/* EMPTY */ ;
|
||||
} else {
|
||||
/* should be 0x30 to 0x7e */
|
||||
params->a_final = ch;
|
||||
break;
|
||||
}
|
||||
}
|
||||
*string = cp;
|
||||
}
|
||||
|
||||
void
|
||||
do_dcs(XtermWidget xw, Char * dcsbuf, size_t dcslen)
|
||||
{
|
||||
@ -3978,9 +3996,30 @@ do_dcs(XtermWidget xw, Char * dcsbuf, size_t dcslen)
|
||||
break;
|
||||
#endif
|
||||
default:
|
||||
if (screen->vtXX_level >= 2) { /* VT220 */
|
||||
if (screen->terminal_id == 125 ||
|
||||
screen->vtXX_level >= 2) { /* VT220 */
|
||||
parse_ansi_params(¶ms, &cp);
|
||||
switch (params.a_final) {
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
case 'p':
|
||||
if (screen->terminal_id == 125 ||
|
||||
screen->terminal_id == 240 ||
|
||||
screen->terminal_id == 241 ||
|
||||
screen->terminal_id == 330 ||
|
||||
screen->terminal_id == 340) {
|
||||
parse_regis(xw, ¶ms, cp);
|
||||
}
|
||||
break;
|
||||
case 'q':
|
||||
if (screen->terminal_id == 125 ||
|
||||
screen->terminal_id == 240 ||
|
||||
screen->terminal_id == 241 ||
|
||||
screen->terminal_id == 330 ||
|
||||
screen->terminal_id == 340) {
|
||||
parse_sixel(xw, ¶ms, cp);
|
||||
}
|
||||
break;
|
||||
#endif
|
||||
case '|': /* DECUDK */
|
||||
if (params.a_param[0] == 0)
|
||||
reset_decudk();
|
||||
@ -4085,222 +4124,227 @@ do_decrpm(XtermWidget xw, int nparams, int *params)
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
switch (params[0]) {
|
||||
case 1: /* DECCKM */
|
||||
case srm_DECCKM:
|
||||
result = MdFlag(xw->keyboard.flags, MODE_DECCKM);
|
||||
break;
|
||||
case 2: /* DECANM - ANSI/VT52 mode */
|
||||
case srm_DECANM: /* ANSI/VT52 mode */
|
||||
#if OPT_VT52_MODE
|
||||
result = MdBool(screen->vtXX_level >= 1);
|
||||
#else
|
||||
result = mdMaybeSet;
|
||||
#endif
|
||||
break;
|
||||
case 3: /* DECCOLM */
|
||||
case srm_DECCOLM:
|
||||
result = MdFlag(xw->flags, IN132COLUMNS);
|
||||
break;
|
||||
case 4: /* DECSCLM (slow scroll) */
|
||||
case srm_DECSCLM: /* (slow scroll) */
|
||||
result = MdFlag(xw->flags, SMOOTHSCROLL);
|
||||
break;
|
||||
case 5: /* DECSCNM */
|
||||
case srm_DECSCNM:
|
||||
result = MdFlag(xw->flags, REVERSE_VIDEO);
|
||||
break;
|
||||
case 6: /* DECOM */
|
||||
case srm_DECOM:
|
||||
result = MdFlag(xw->flags, ORIGIN);
|
||||
break;
|
||||
case 7: /* DECAWM */
|
||||
case srm_DECAWM:
|
||||
result = MdFlag(xw->flags, WRAPAROUND);
|
||||
break;
|
||||
case 8: /* DECARM */
|
||||
case srm_DECARM:
|
||||
result = mdAlwaysReset;
|
||||
break;
|
||||
case SET_X10_MOUSE: /* X10 mouse */
|
||||
case srm_X10_MOUSE: /* X10 mouse */
|
||||
result = MdBool(screen->send_mouse_pos == X10_MOUSE);
|
||||
break;
|
||||
#if OPT_TOOLBAR
|
||||
case 10: /* rxvt */
|
||||
case srm_RXVT_TOOLBAR:
|
||||
result = MdBool(resource.toolBar);
|
||||
break;
|
||||
#endif
|
||||
#if OPT_BLINK_CURS
|
||||
case 12: /* att610: Start/stop blinking cursor */
|
||||
case srm_ATT610_BLINK: /* att610: Start/stop blinking cursor */
|
||||
result = MdBool(screen->cursor_blink_res);
|
||||
break;
|
||||
#endif
|
||||
case 18: /* DECPFF: print form feed */
|
||||
case srm_DECPFF: /* print form feed */
|
||||
result = MdBool(PrinterOf(screen).printer_formfeed);
|
||||
break;
|
||||
case 19: /* DECPEX: print extent */
|
||||
case srm_DECPEX: /* print extent */
|
||||
result = MdBool(PrinterOf(screen).printer_extent);
|
||||
break;
|
||||
case 25: /* DECTCEM: Show/hide cursor (VT200) */
|
||||
case srm_DECTCEM: /* Show/hide cursor (VT200) */
|
||||
result = MdBool(screen->cursor_set);
|
||||
break;
|
||||
case 30: /* rxvt */
|
||||
case srm_RXVT_SCROLLBAR:
|
||||
result = MdBool(screen->fullVwin.sb_info.width != OFF);
|
||||
break;
|
||||
#if OPT_SHIFT_FONTS
|
||||
case 35: /* rxvt */
|
||||
case srm_RXVT_FONTSIZE:
|
||||
result = MdBool(xw->misc.shift_fonts);
|
||||
break;
|
||||
#endif
|
||||
#if OPT_TEK4014
|
||||
case 38: /* DECTEK */
|
||||
case srm_DECTEK:
|
||||
result = MdBool(TEK4014_ACTIVE(xw));
|
||||
break;
|
||||
#endif
|
||||
case 40: /* 132 column mode */
|
||||
case srm_132COLS:
|
||||
result = MdBool(screen->c132);
|
||||
break;
|
||||
case 41: /* curses hack */
|
||||
case srm_CURSES_HACK:
|
||||
result = MdBool(screen->curses);
|
||||
break;
|
||||
case 42: /* DECNRCM national charset (VT220) */
|
||||
case srm_DECNRCM: /* national charset (VT220) */
|
||||
result = MdFlag(xw->flags, NATIONAL);
|
||||
break;
|
||||
case 44: /* margin bell */
|
||||
case srm_MARGIN_BELL: /* margin bell */
|
||||
result = MdBool(screen->marginbell);
|
||||
break;
|
||||
case 45: /* reverse wraparound */
|
||||
case srm_REVERSEWRAP: /* reverse wraparound */
|
||||
result = MdFlag(xw->flags, REVERSEWRAP);
|
||||
break;
|
||||
#ifdef ALLOWLOGGING
|
||||
case 46: /* logging */
|
||||
case srm_ALLOWLOGGING: /* logging */
|
||||
#ifdef ALLOWLOGFILEONOFF
|
||||
result = MdBool(screen->logging);
|
||||
#endif /* ALLOWLOGFILEONOFF */
|
||||
break;
|
||||
#endif
|
||||
case 1049: /* alternate buffer & cursor */
|
||||
case srm_OPT_ALTBUF_CURSOR: /* alternate buffer & cursor */
|
||||
/* FALLTHRU */
|
||||
case 1047:
|
||||
case srm_OPT_ALTBUF:
|
||||
/* FALLTHRU */
|
||||
case 47: /* alternate buffer */
|
||||
case srm_ALTBUF:
|
||||
result = MdBool(screen->whichBuf);
|
||||
break;
|
||||
case 66: /* DECNKM */
|
||||
case srm_DECNKM:
|
||||
result = MdFlag(xw->keyboard.flags, MODE_DECKPAM);
|
||||
break;
|
||||
case 67: /* DECBKM */
|
||||
case srm_DECBKM:
|
||||
result = MdFlag(xw->keyboard.flags, MODE_DECBKM);
|
||||
break;
|
||||
case 69: /* DECLRMM */
|
||||
case srm_DECLRMM:
|
||||
result = MdFlag(xw->flags, LEFT_RIGHT);
|
||||
break;
|
||||
case 95: /* DECNCSM */
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
case srm_DECSDM:
|
||||
result = MdFlag(xw->keyboard.flags, MODE_DECSDM);
|
||||
break;
|
||||
#endif
|
||||
case srm_DECNCSM:
|
||||
result = MdFlag(xw->flags, NOCLEAR_COLM);
|
||||
break;
|
||||
case SET_VT200_MOUSE: /* xterm bogus sequence */
|
||||
case srm_VT200_MOUSE: /* xterm bogus sequence */
|
||||
result = MdBool(screen->send_mouse_pos == VT200_MOUSE);
|
||||
break;
|
||||
case SET_VT200_HIGHLIGHT_MOUSE: /* xterm sequence w/hilite tracking */
|
||||
case srm_VT200_HIGHLIGHT_MOUSE: /* xterm sequence w/hilite tracking */
|
||||
result = MdBool(screen->send_mouse_pos == VT200_HIGHLIGHT_MOUSE);
|
||||
break;
|
||||
case SET_BTN_EVENT_MOUSE:
|
||||
case srm_BTN_EVENT_MOUSE:
|
||||
result = MdBool(screen->send_mouse_pos == BTN_EVENT_MOUSE);
|
||||
break;
|
||||
case SET_ANY_EVENT_MOUSE:
|
||||
case srm_ANY_EVENT_MOUSE:
|
||||
result = MdBool(screen->send_mouse_pos == ANY_EVENT_MOUSE);
|
||||
break;
|
||||
#if OPT_FOCUS_EVENT
|
||||
case SET_FOCUS_EVENT_MOUSE:
|
||||
case srm_FOCUS_EVENT_MOUSE:
|
||||
result = MdBool(screen->send_focus_pos);
|
||||
break;
|
||||
#endif
|
||||
case SET_EXT_MODE_MOUSE:
|
||||
case srm_EXT_MODE_MOUSE:
|
||||
/* FALLTHRU */
|
||||
case SET_SGR_EXT_MODE_MOUSE:
|
||||
case srm_SGR_EXT_MODE_MOUSE:
|
||||
/* FALLTHRU */
|
||||
case SET_URXVT_EXT_MODE_MOUSE:
|
||||
case srm_URXVT_EXT_MODE_MOUSE:
|
||||
result = MdBool(screen->extend_coords == params[0]);
|
||||
break;
|
||||
case SET_ALTERNATE_SCROLL:
|
||||
case srm_ALTERNATE_SCROLL:
|
||||
result = MdBool(screen->alternateScroll);
|
||||
break;
|
||||
case 1010: /* rxvt */
|
||||
case srm_RXVT_SCROLL_TTY_OUTPUT:
|
||||
result = MdBool(screen->scrollttyoutput);
|
||||
break;
|
||||
case 1011: /* rxvt */
|
||||
case srm_RXVT_SCROLL_TTY_KEYPRESS:
|
||||
result = MdBool(screen->scrollkey);
|
||||
break;
|
||||
case 1034:
|
||||
case srm_EIGHT_BIT_META:
|
||||
result = MdBool(screen->eight_bit_meta);
|
||||
break;
|
||||
#if OPT_NUM_LOCK
|
||||
case 1035:
|
||||
case srm_REAL_NUMLOCK:
|
||||
result = MdBool(xw->misc.real_NumLock);
|
||||
break;
|
||||
case 1036:
|
||||
case srm_META_SENDS_ESC:
|
||||
result = MdBool(screen->meta_sends_esc);
|
||||
break;
|
||||
#endif
|
||||
case 1037:
|
||||
case srm_DELETE_IS_DEL:
|
||||
result = MdBool(screen->delete_is_del);
|
||||
break;
|
||||
#if OPT_NUM_LOCK
|
||||
case 1039:
|
||||
case srm_ALT_SENDS_ESC:
|
||||
result = MdBool(screen->alt_sends_esc);
|
||||
break;
|
||||
#endif
|
||||
case 1040:
|
||||
case srm_KEEP_SELECTION:
|
||||
result = MdBool(screen->keepSelection);
|
||||
break;
|
||||
case 1041:
|
||||
case srm_SELECT_TO_CLIPBOARD:
|
||||
result = MdBool(screen->selectToClipboard);
|
||||
break;
|
||||
case 1042:
|
||||
case srm_BELL_IS_URGENT:
|
||||
result = MdBool(screen->bellIsUrgent);
|
||||
break;
|
||||
case 1043:
|
||||
case srm_POP_ON_BELL:
|
||||
result = MdBool(screen->poponbell);
|
||||
break;
|
||||
case 1048:
|
||||
case srm_TITE_INHIBIT:
|
||||
result = MdBool(screen->sc[screen->whichBuf].saved);
|
||||
break;
|
||||
#if OPT_TCAP_FKEYS
|
||||
case 1050:
|
||||
case srm_TCAP_FKEYS:
|
||||
result = MdBool(xw->keyboard.type == keyboardIsTermcap);
|
||||
break;
|
||||
#endif
|
||||
#if OPT_SUN_FUNC_KEYS
|
||||
case 1051:
|
||||
case srm_SUN_FKEYS:
|
||||
result = MdBool(xw->keyboard.type == keyboardIsSun);
|
||||
break;
|
||||
#endif
|
||||
#if OPT_HP_FUNC_KEYS
|
||||
case 1052:
|
||||
case srm_HP_FKEYS:
|
||||
result = MdBool(xw->keyboard.type == keyboardIsHP);
|
||||
break;
|
||||
#endif
|
||||
#if OPT_SCO_FUNC_KEYS
|
||||
case 1053:
|
||||
case srm_SCO_FKEYS:
|
||||
result = MdBool(xw->keyboard.type == keyboardIsSCO);
|
||||
break;
|
||||
#endif
|
||||
case 1060:
|
||||
case srm_LEGACY_FKEYS:
|
||||
result = MdBool(xw->keyboard.type == keyboardIsLegacy);
|
||||
break;
|
||||
#if OPT_SUNPC_KBD
|
||||
case 1061:
|
||||
case srm_VT220_FKEYS:
|
||||
result = MdBool(xw->keyboard.type == keyboardIsVT220);
|
||||
break;
|
||||
#endif
|
||||
#if OPT_READLINE
|
||||
case SET_BUTTON1_MOVE_POINT:
|
||||
case srm_BUTTON1_MOVE_POINT:
|
||||
result = MdBool(screen->click1_moves);
|
||||
break;
|
||||
case SET_BUTTON2_MOVE_POINT:
|
||||
case srm_BUTTON2_MOVE_POINT:
|
||||
result = MdBool(screen->paste_moves);
|
||||
break;
|
||||
case SET_DBUTTON3_DELETE:
|
||||
case srm_DBUTTON3_DELETE:
|
||||
result = MdBool(screen->dclick3_deletes);
|
||||
break;
|
||||
case SET_PASTE_IN_BRACKET:
|
||||
case srm_PASTE_IN_BRACKET:
|
||||
result = MdBool(screen->paste_brackets);
|
||||
break;
|
||||
case SET_PASTE_QUOTE:
|
||||
case srm_PASTE_QUOTE:
|
||||
result = MdBool(screen->paste_quotes);
|
||||
break;
|
||||
case SET_PASTE_LITERAL_NL:
|
||||
case srm_PASTE_LITERAL_NL:
|
||||
result = MdBool(screen->paste_literal_nl);
|
||||
break;
|
||||
#endif /* OPT_READLINE */
|
||||
|
@ -1,3 +1,21 @@
|
||||
xterm-dev (296) unstable; urgency=low
|
||||
|
||||
* Build-fix for #295 changes
|
||||
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Tue, 09 Jul 2013 21:20:04 -0400
|
||||
|
||||
xterm-dev (295) unstable; urgency=low
|
||||
|
||||
* Workaround for problem with ld --as-needed option
|
||||
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 06 Jul 2013 21:20:33 -0400
|
||||
|
||||
xterm-dev (294) unstable; urgency=low
|
||||
|
||||
* Add experimental support for sixel graphics
|
||||
|
||||
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 23 Jun 2013 10:36:52 -0400
|
||||
|
||||
xterm-dev (293) unstable; urgency=low
|
||||
|
||||
* Miscellaneous fixes.
|
||||
|
@ -72,6 +72,7 @@ configure-stamp:
|
||||
--enable-paste64 \
|
||||
--enable-rectangles \
|
||||
--enable-sco-fkeys \
|
||||
--enable-sixel-graphics \
|
||||
--enable-tcap-fkeys \
|
||||
--enable-tcap-query \
|
||||
--enable-toolbar \
|
||||
|
@ -5,7 +5,7 @@
|
||||
# and "make makesum".
|
||||
|
||||
PORTNAME= xterm
|
||||
PORTVERSION= 291
|
||||
PORTVERSION= 296
|
||||
CATEGORIES= x11
|
||||
MASTER_SITES= ftp://invisible-island.net/xterm/ \
|
||||
CRITICAL
|
||||
|
@ -1,11 +1,11 @@
|
||||
# $XTermId: xterm.spec,v 1.50 2013/05/27 15:17:47 tom Exp $
|
||||
# $XTermId: xterm.spec,v 1.54 2013/07/10 01:19:30 tom Exp $
|
||||
Summary: X terminal emulator (development version)
|
||||
%global my_middle xterm
|
||||
%global my_suffix -dev
|
||||
%global fullname %{my_middle}%{my_suffix}
|
||||
%global my_class XTermDev
|
||||
Name: %{fullname}
|
||||
Version: 293
|
||||
Version: 296
|
||||
Release: 1
|
||||
License: X11
|
||||
Group: User Interface/X
|
||||
@ -95,6 +95,7 @@ CPPFLAGS="-DMISC_EXP -DEXP_HTTP_HEADERS" \
|
||||
--enable-mini-luit \
|
||||
--enable-paste64 \
|
||||
--enable-sco-fkeys \
|
||||
--enable-sixel-graphics \
|
||||
--enable-tcap-fkeys \
|
||||
--enable-tcap-query \
|
||||
--enable-toolbar \
|
||||
|
@ -1,12 +1,12 @@
|
||||
#!/bin/sh
|
||||
# $XTermId: plink.sh,v 1.7 2010/11/28 23:55:35 tom Exp $
|
||||
# $XTermId: plink.sh,v 1.10 2013/07/07 01:20:48 tom Exp $
|
||||
# -----------------------------------------------------------------------------
|
||||
# this file is part of xterm
|
||||
#
|
||||
# Copyright 2001-2005,2010 by Thomas E. Dickey
|
||||
#
|
||||
# Copyright 2001-2010,2013 by Thomas E. Dickey
|
||||
#
|
||||
# All Rights Reserved
|
||||
#
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||
# copy of this software and associated documentation files (the
|
||||
# "Software"), to deal in the Software without restriction, including
|
||||
@ -14,10 +14,10 @@
|
||||
# distribute, sublicense, and/or sell copies of the Software, and to
|
||||
# permit persons to whom the Software is furnished to do so, subject to
|
||||
# the following conditions:
|
||||
#
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
@ -25,7 +25,7 @@
|
||||
# CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||
# TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||
# SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
#
|
||||
#
|
||||
# Except as contained in this notice, the name(s) of the above copyright
|
||||
# holders shall not be used in advertising or otherwise to promote the
|
||||
# sale, use or other dealings in this Software without prior written
|
||||
@ -34,8 +34,27 @@
|
||||
#
|
||||
# Reduce the number of dynamic libraries used to link an executable.
|
||||
LINKIT=
|
||||
ASNEED=no
|
||||
while test $# != 0
|
||||
do
|
||||
if test $ASNEED = no && test -n "$LINKIT"
|
||||
then
|
||||
ASNEED=yes
|
||||
OPT=-Wl,-as-needed
|
||||
if ( eval $LINKIT $OPT $* >/dev/null 2>/dev/null )
|
||||
then
|
||||
WARNED=`eval $LINKIT $OPT $* 2>&1`
|
||||
case ".$WARNED" in
|
||||
*Warning*|*nsupported*|*nrecognized*|*nknown*)
|
||||
;;
|
||||
*)
|
||||
LINKIT="$LINKIT $OPT $*"
|
||||
break
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
fi
|
||||
|
||||
OPT="$1"
|
||||
shift
|
||||
case $OPT in
|
||||
|
132
app/xterm/ptyx.h
132
app/xterm/ptyx.h
@ -1,4 +1,4 @@
|
||||
/* $XTermId: ptyx.h,v 1.767 2013/05/27 22:21:32 tom Exp $ */
|
||||
/* $XTermId: ptyx.h,v 1.776 2013/06/23 22:00:58 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2012,2013 by Thomas E. Dickey
|
||||
@ -517,6 +517,10 @@ typedef struct {
|
||||
#define OPT_DEC_RECTOPS 0 /* true if xterm is configured for VT420 rectangles */
|
||||
#endif
|
||||
|
||||
#ifndef OPT_SIXEL_GRAPHICS
|
||||
#define OPT_SIXEL_GRAPHICS 0 /* true if xterm supports VT220-style sixel graphics */
|
||||
#endif
|
||||
|
||||
#ifndef OPT_DEC_SOFTFONT
|
||||
#define OPT_DEC_SOFTFONT 0 /* true if xterm is configured for VT220 softfonts */
|
||||
#endif
|
||||
@ -891,6 +895,112 @@ typedef enum {
|
||||
|
||||
#define IsTitleMode(xw,mode) (((xw)->screen.title_modes & mode) != 0)
|
||||
|
||||
#include <xcharmouse.h>
|
||||
|
||||
/*
|
||||
* Use this enumerated type to check consistency among dpmodes(), savemodes()
|
||||
* restoremodes() and do_decrpm().
|
||||
*/
|
||||
typedef enum {
|
||||
srm_DECCKM = 1
|
||||
,srm_DECANM = 2
|
||||
,srm_DECCOLM = 3
|
||||
,srm_DECSCLM = 4
|
||||
,srm_DECSCNM = 5
|
||||
,srm_DECOM = 6
|
||||
,srm_DECAWM = 7
|
||||
,srm_DECARM = 8
|
||||
,srm_X10_MOUSE = SET_X10_MOUSE
|
||||
#if OPT_TOOLBAR
|
||||
,srm_RXVT_TOOLBAR = 10
|
||||
#endif
|
||||
#if OPT_BLINK_CURS
|
||||
,srm_ATT610_BLINK = 12
|
||||
#endif
|
||||
,srm_DECPFF = 18
|
||||
,srm_DECPEX = 19
|
||||
,srm_DECTCEM = 25
|
||||
,srm_RXVT_SCROLLBAR = 30
|
||||
#if OPT_SHIFT_FONTS
|
||||
,srm_RXVT_FONTSIZE = 35
|
||||
#endif
|
||||
#if OPT_TEK4014
|
||||
,srm_DECTEK = 38
|
||||
#endif
|
||||
,srm_132COLS = 40
|
||||
,srm_CURSES_HACK = 41
|
||||
,srm_DECNRCM = 42
|
||||
,srm_MARGIN_BELL = 44
|
||||
,srm_REVERSEWRAP = 45
|
||||
#ifdef ALLOWLOGGING
|
||||
,srm_ALLOWLOGGING = 46
|
||||
#endif
|
||||
,srm_OPT_ALTBUF_CURSOR = 1049
|
||||
,srm_OPT_ALTBUF = 1047
|
||||
,srm_ALTBUF = 47
|
||||
,srm_DECNKM = 66
|
||||
,srm_DECBKM = 67
|
||||
,srm_DECLRMM = 69
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
,srm_DECSDM = 80 /* Sixel Display Mode */
|
||||
#endif
|
||||
,srm_DECNCSM = 95
|
||||
,srm_VT200_MOUSE = SET_VT200_MOUSE
|
||||
,srm_VT200_HIGHLIGHT_MOUSE = SET_VT200_HIGHLIGHT_MOUSE
|
||||
,srm_BTN_EVENT_MOUSE = SET_BTN_EVENT_MOUSE
|
||||
,srm_ANY_EVENT_MOUSE = SET_ANY_EVENT_MOUSE
|
||||
#if OPT_FOCUS_EVENT
|
||||
,srm_FOCUS_EVENT_MOUSE = SET_FOCUS_EVENT_MOUSE
|
||||
#endif
|
||||
,srm_EXT_MODE_MOUSE = SET_EXT_MODE_MOUSE
|
||||
,srm_SGR_EXT_MODE_MOUSE = SET_SGR_EXT_MODE_MOUSE
|
||||
,srm_URXVT_EXT_MODE_MOUSE = SET_URXVT_EXT_MODE_MOUSE
|
||||
,srm_ALTERNATE_SCROLL = SET_ALTERNATE_SCROLL
|
||||
,srm_RXVT_SCROLL_TTY_OUTPUT = 1010
|
||||
,srm_RXVT_SCROLL_TTY_KEYPRESS = 1011
|
||||
,srm_EIGHT_BIT_META = 1034
|
||||
#if OPT_NUM_LOCK
|
||||
,srm_REAL_NUMLOCK = 1035
|
||||
,srm_META_SENDS_ESC = 1036
|
||||
#endif
|
||||
,srm_DELETE_IS_DEL = 1037
|
||||
#if OPT_NUM_LOCK
|
||||
,srm_ALT_SENDS_ESC = 1039
|
||||
#endif
|
||||
,srm_KEEP_SELECTION = 1040
|
||||
,srm_SELECT_TO_CLIPBOARD = 1041
|
||||
,srm_BELL_IS_URGENT = 1042
|
||||
,srm_POP_ON_BELL = 1043
|
||||
,srm_TITE_INHIBIT = 1048
|
||||
#if OPT_TCAP_FKEYS
|
||||
,srm_TCAP_FKEYS = 1050
|
||||
#endif
|
||||
#if OPT_SUN_FUNC_KEYS
|
||||
,srm_SUN_FKEYS = 1051
|
||||
#endif
|
||||
#if OPT_HP_FUNC_KEYS
|
||||
,srm_HP_FKEYS = 1052
|
||||
#endif
|
||||
#if OPT_SCO_FUNC_KEYS
|
||||
,srm_SCO_FKEYS = 1053
|
||||
#endif
|
||||
,srm_LEGACY_FKEYS = 1060
|
||||
#if OPT_SUNPC_KBD
|
||||
,srm_VT220_FKEYS = 1061
|
||||
#endif
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
,srm_PRIVATE_COLOR_REGISTERS = 1070
|
||||
#endif
|
||||
#if OPT_READLINE
|
||||
,srm_BUTTON1_MOVE_POINT = SET_BUTTON1_MOVE_POINT
|
||||
,srm_BUTTON2_MOVE_POINT = SET_BUTTON2_MOVE_POINT
|
||||
,srm_DBUTTON3_DELETE = SET_DBUTTON3_DELETE
|
||||
,srm_PASTE_IN_BRACKET = SET_PASTE_IN_BRACKET
|
||||
,srm_PASTE_QUOTE = SET_PASTE_QUOTE
|
||||
,srm_PASTE_LITERAL_NL = SET_PASTE_LITERAL_NL
|
||||
#endif /* OPT_READLINE */
|
||||
} DECSET_codes;
|
||||
|
||||
/* indices for mapping multiple clicks to selection types */
|
||||
typedef enum {
|
||||
Select_CHAR=0
|
||||
@ -1458,12 +1568,16 @@ typedef enum {
|
||||
#if OPT_SHIFT_FONTS
|
||||
DP_RXVT_FONTSIZE,
|
||||
#endif
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
DP_DECSDM,
|
||||
#endif
|
||||
#if OPT_TEK4014
|
||||
DP_DECTEK,
|
||||
#endif
|
||||
#if OPT_TOOLBAR
|
||||
DP_TOOLBAR,
|
||||
#endif
|
||||
DP_X_PRIVATE_COLOR_REGISTERS,
|
||||
DP_LAST
|
||||
} SaveModes;
|
||||
|
||||
@ -1955,7 +2069,7 @@ typedef struct {
|
||||
int scrolls; /* outstanding scroll count,
|
||||
used only with multiscroll */
|
||||
SavedCursor sc[SAVED_CURSORS]; /* data for restore cursor */
|
||||
unsigned save_modes[DP_LAST]; /* save dec/xterm private modes */
|
||||
unsigned int save_modes[DP_LAST]; /* save dec/xterm private modes */
|
||||
|
||||
int title_modes; /* control set/get of titles */
|
||||
SaveTitle *save_title;
|
||||
@ -1995,6 +2109,11 @@ typedef struct {
|
||||
Boolean scroll_dirty; /* scrolling makes screen dirty */
|
||||
#endif
|
||||
|
||||
#if OPT_SIXEL_GRAPHICS
|
||||
Boolean sixel_scrolling; /* sixel scrolling */
|
||||
Boolean privatecolorregisters; /* private color registers for each graphic */
|
||||
#endif
|
||||
|
||||
#if OPT_VT52_MODE
|
||||
Char vt52_save_curgl;
|
||||
Char vt52_save_curgr;
|
||||
@ -2452,11 +2571,12 @@ extern WidgetClass tekWidgetClass;
|
||||
#endif
|
||||
|
||||
/* define masks for keyboard.flags */
|
||||
#define MODE_KAM xBIT(0) /* keyboard action mode */
|
||||
#define MODE_KAM xBIT(0) /* mode 2: keyboard action mode */
|
||||
#define MODE_DECKPAM xBIT(1) /* keypad application mode */
|
||||
#define MODE_DECCKM xBIT(2) /* cursor keys */
|
||||
#define MODE_SRM xBIT(3) /* send-receive mode */
|
||||
#define MODE_DECBKM xBIT(4) /* backarrow */
|
||||
#define MODE_DECCKM xBIT(2) /* private mode 1: cursor keys */
|
||||
#define MODE_SRM xBIT(3) /* mode 12: send-receive mode */
|
||||
#define MODE_DECBKM xBIT(4) /* private mode 67: backarrow */
|
||||
#define MODE_DECSDM xBIT(5) /* private mode 80: sixel scrolling mode */
|
||||
|
||||
|
||||
#define N_MARGINBELL 10
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: screen.c,v 1.477 2013/04/23 09:50:23 Bertram.Felgenhauer Exp $ */
|
||||
/* $XTermId: screen.c,v 1.485 2013/07/10 22:52:16 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2012,2013 by Thomas E. Dickey
|
||||
@ -58,7 +58,6 @@
|
||||
#include <xterm.h>
|
||||
#include <error.h>
|
||||
#include <data.h>
|
||||
#include <xcharmouse.h>
|
||||
#include <xterm_io.h>
|
||||
|
||||
#include <X11/Xatom.h>
|
||||
@ -76,6 +75,8 @@
|
||||
#define _Xconst const /* Solaris 7 workaround */
|
||||
#endif /* _Xconst */
|
||||
|
||||
#include <graphics.h>
|
||||
|
||||
#define inSaveBuf(screen, buf, inx) \
|
||||
((buf) == (screen)->saveBuf_index && \
|
||||
((inx) < (screen)->savelines || (screen)->savelines == 0))
|
||||
@ -135,7 +136,7 @@
|
||||
|
||||
#if OPT_TRACE > 1
|
||||
static void
|
||||
traceScrnBuf(const char *tag, TScreen * screen, ScrnBuf sb, unsigned len)
|
||||
traceScrnBuf(const char *tag, TScreen *screen, ScrnBuf sb, unsigned len)
|
||||
{
|
||||
unsigned j;
|
||||
|
||||
@ -155,7 +156,7 @@ traceScrnBuf(const char *tag, TScreen * screen, ScrnBuf sb, unsigned len)
|
||||
#endif
|
||||
|
||||
static unsigned
|
||||
scrnHeadSize(TScreen * screen, unsigned count)
|
||||
scrnHeadSize(TScreen *screen, unsigned count)
|
||||
{
|
||||
unsigned result = SizeOfLineData;
|
||||
|
||||
@ -172,7 +173,7 @@ scrnHeadSize(TScreen * screen, unsigned count)
|
||||
}
|
||||
|
||||
ScrnBuf
|
||||
scrnHeadAddr(TScreen * screen, ScrnBuf base, unsigned offset)
|
||||
scrnHeadAddr(TScreen *screen, ScrnBuf base, unsigned offset)
|
||||
{
|
||||
unsigned size = scrnHeadSize(screen, offset);
|
||||
ScrnBuf result = ScrnBufAddr(base, size);
|
||||
@ -186,7 +187,7 @@ scrnHeadAddr(TScreen * screen, ScrnBuf base, unsigned offset)
|
||||
* Given a block of data, build index to it in the 'base' parameter.
|
||||
*/
|
||||
void
|
||||
setupLineData(TScreen * screen, ScrnBuf base, Char * data, unsigned nrow, unsigned ncol)
|
||||
setupLineData(TScreen *screen, ScrnBuf base, Char *data, unsigned nrow, unsigned ncol)
|
||||
{
|
||||
unsigned i;
|
||||
unsigned offset = 0;
|
||||
@ -248,7 +249,7 @@ setupLineData(TScreen * screen, ScrnBuf base, Char * data, unsigned nrow, unsign
|
||||
* new copy of the screen buffer.
|
||||
*/
|
||||
static void
|
||||
extractScrnData(TScreen * screen,
|
||||
extractScrnData(TScreen *screen,
|
||||
ScrnBuf dstPtrs,
|
||||
ScrnBuf srcPtrs,
|
||||
unsigned nrows,
|
||||
@ -269,7 +270,7 @@ extractScrnData(TScreen * screen,
|
||||
}
|
||||
|
||||
static ScrnPtr *
|
||||
allocScrnHead(TScreen * screen, unsigned nrow)
|
||||
allocScrnHead(TScreen *screen, unsigned nrow)
|
||||
{
|
||||
ScrnPtr *result;
|
||||
unsigned size = scrnHeadSize(screen, 1);
|
||||
@ -288,7 +289,7 @@ allocScrnHead(TScreen * screen, unsigned nrow)
|
||||
* Return the size of a line's data.
|
||||
*/
|
||||
static unsigned
|
||||
sizeofScrnRow(TScreen * screen, unsigned ncol)
|
||||
sizeofScrnRow(TScreen *screen, unsigned ncol)
|
||||
{
|
||||
unsigned result;
|
||||
unsigned sizeAttribs;
|
||||
@ -321,7 +322,7 @@ sizeofScrnRow(TScreen * screen, unsigned ncol)
|
||||
}
|
||||
|
||||
Char *
|
||||
allocScrnData(TScreen * screen, unsigned nrow, unsigned ncol)
|
||||
allocScrnData(TScreen *screen, unsigned nrow, unsigned ncol)
|
||||
{
|
||||
Char *result;
|
||||
size_t length;
|
||||
@ -330,7 +331,7 @@ allocScrnData(TScreen * screen, unsigned nrow, unsigned ncol)
|
||||
length = ((nrow + 1) * sizeofScrnRow(screen, ncol));
|
||||
if (length == 0
|
||||
|| (result = (Char *) calloc(length, sizeof(Char))) == 0)
|
||||
SysError(ERROR_SCALLOC2);
|
||||
SysError(ERROR_SCALLOC2);
|
||||
|
||||
TRACE(("allocScrnData %ux%u -> %lu -> %p..%p\n",
|
||||
nrow, ncol, (unsigned long) length, result, result + length - 1));
|
||||
@ -351,7 +352,7 @@ allocScrnData(TScreen * screen, unsigned nrow, unsigned ncol)
|
||||
* We store it all as pointers, because of alignment considerations.
|
||||
*/
|
||||
ScrnBuf
|
||||
allocScrnBuf(XtermWidget xw, unsigned nrow, unsigned ncol, Char ** addr)
|
||||
allocScrnBuf(XtermWidget xw, unsigned nrow, unsigned ncol, Char **addr)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
ScrnBuf base = 0;
|
||||
@ -372,7 +373,7 @@ allocScrnBuf(XtermWidget xw, unsigned nrow, unsigned ncol, Char ** addr)
|
||||
* Copy line-data from the visible (edit) buffer to the save-lines buffer.
|
||||
*/
|
||||
static void
|
||||
saveEditBufLines(TScreen * screen, ScrnBuf sb, unsigned n)
|
||||
saveEditBufLines(TScreen *screen, ScrnBuf sb, unsigned n)
|
||||
{
|
||||
unsigned j;
|
||||
|
||||
@ -396,7 +397,7 @@ saveEditBufLines(TScreen * screen, ScrnBuf sb, unsigned n)
|
||||
* Copy line-data from the save-lines buffer to the visible (edit) buffer.
|
||||
*/
|
||||
static void
|
||||
unsaveEditBufLines(TScreen * screen, ScrnBuf sb, unsigned n)
|
||||
unsaveEditBufLines(TScreen *screen, ScrnBuf sb, unsigned n)
|
||||
{
|
||||
unsigned j;
|
||||
|
||||
@ -429,8 +430,8 @@ unsaveEditBufLines(TScreen * screen, ScrnBuf sb, unsigned n)
|
||||
*/
|
||||
static int
|
||||
Reallocate(XtermWidget xw,
|
||||
ScrnBuf * sbuf,
|
||||
Char ** sbufaddr,
|
||||
ScrnBuf *sbuf,
|
||||
Char **sbufaddr,
|
||||
unsigned nrow,
|
||||
unsigned ncol,
|
||||
unsigned oldrow)
|
||||
@ -523,8 +524,8 @@ Reallocate(XtermWidget xw,
|
||||
*/
|
||||
static void
|
||||
ReallocateBufOffsets(XtermWidget xw,
|
||||
ScrnBuf * sbuf,
|
||||
Char ** sbufaddr,
|
||||
ScrnBuf *sbuf,
|
||||
Char **sbufaddr,
|
||||
unsigned nrow,
|
||||
unsigned ncol)
|
||||
{
|
||||
@ -708,10 +709,10 @@ ChangeToWide(XtermWidget xw)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Clear cells, no side-effects.
|
||||
* Copy cells, no side-effects.
|
||||
*/
|
||||
void
|
||||
CopyCells(TScreen * screen, LineData * src, LineData * dst, int col, int len)
|
||||
CopyCells(TScreen *screen, LineData *src, LineData *dst, int col, int len)
|
||||
{
|
||||
if (len > 0) {
|
||||
int n;
|
||||
@ -819,7 +820,7 @@ ScrnDisownSelection(XtermWidget xw)
|
||||
*/
|
||||
void
|
||||
ScrnWriteText(XtermWidget xw,
|
||||
IChar * str,
|
||||
IChar *str,
|
||||
unsigned flags,
|
||||
unsigned cur_fg_bg,
|
||||
unsigned length)
|
||||
@ -835,7 +836,7 @@ ScrnWriteText(XtermWidget xw,
|
||||
unsigned n;
|
||||
unsigned real_width = visual_width(str, length);
|
||||
|
||||
(void) cur_fg_bg;
|
||||
(void) cur_fg_bg; /* quiet compiler warnings when unused */
|
||||
|
||||
if (real_width + (unsigned) screen->cur_col > (unsigned) MaxCols(screen)) {
|
||||
real_width = (unsigned) (MaxCols(screen) - screen->cur_col);
|
||||
@ -937,6 +938,15 @@ ScrnWriteText(XtermWidget xw,
|
||||
screen->last_written_row = screen->cur_row;
|
||||
#endif
|
||||
|
||||
TRACE(("text erasing cur_col=%d cur_row=%d real_width=%d\n",
|
||||
screen->cur_col,
|
||||
screen->cur_row,
|
||||
real_width));
|
||||
chararea_clear_displayed_graphics(screen,
|
||||
screen->cur_col,
|
||||
screen->cur_row,
|
||||
(int) real_width, 1);
|
||||
|
||||
if_OPT_XMC_GLITCH(screen, {
|
||||
Resolve_XMC(xw);
|
||||
});
|
||||
@ -1007,6 +1017,17 @@ ScrnClearLines(XtermWidget xw, ScrnBuf sb, int where, unsigned n, unsigned size)
|
||||
#endif
|
||||
base = ScrnBufAddr(base, jump);
|
||||
}
|
||||
|
||||
TRACE(("clear lines erasing where=%d screen->savelines=%d n=%d screen->max_col=%d\n",
|
||||
where,
|
||||
screen->savelines,
|
||||
n,
|
||||
screen->max_col));
|
||||
chararea_clear_displayed_graphics(screen,
|
||||
where + screen->savelines,
|
||||
0,
|
||||
screen->max_col + 1,
|
||||
(int) n);
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1064,7 +1085,7 @@ ScrnAllocBuf(XtermWidget xw)
|
||||
}
|
||||
|
||||
size_t
|
||||
ScrnPointers(TScreen * screen, size_t len)
|
||||
ScrnPointers(TScreen *screen, size_t len)
|
||||
{
|
||||
size_t result = scrnHeadSize(screen, (unsigned) len);
|
||||
|
||||
@ -1337,7 +1358,7 @@ ScrnDeleteChar(XtermWidget xw, unsigned n)
|
||||
* its line-wrapping state.
|
||||
*/
|
||||
void
|
||||
ShowWrapMarks(XtermWidget xw, int row, LineData * ld)
|
||||
ShowWrapMarks(XtermWidget xw, int row, LineData *ld)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
Boolean set = (Boolean) LineTstWrapped(ld);
|
||||
@ -1699,6 +1720,12 @@ ScrnRefresh(XtermWidget xw,
|
||||
resetXtermGC(xw, flags, hilite);
|
||||
}
|
||||
|
||||
refresh_displayed_graphics(screen,
|
||||
leftcol,
|
||||
toprow + screen->topline,
|
||||
ncols,
|
||||
nrows);
|
||||
|
||||
/*
|
||||
* If we're in color mode, reset the various GC's to the current
|
||||
* screen foreground and background so that other functions (e.g.,
|
||||
@ -2142,6 +2169,7 @@ ScreenResize(XtermWidget xw,
|
||||
screen->fullVwin.height = height - border;
|
||||
screen->fullVwin.width = width - border - screen->fullVwin.sb_info.width;
|
||||
|
||||
scroll_displayed_graphics(-move_down_by);
|
||||
} else if (FullHeight(screen) == height && FullWidth(screen) == width)
|
||||
return (0); /* nothing has changed at all */
|
||||
|
||||
@ -2211,7 +2239,7 @@ ScreenResize(XtermWidget xw,
|
||||
* nonnull.
|
||||
*/
|
||||
Bool
|
||||
non_blank_line(TScreen * screen,
|
||||
non_blank_line(TScreen *screen,
|
||||
int row,
|
||||
int col,
|
||||
int len)
|
||||
@ -2768,7 +2796,7 @@ unset_resize_increments(XtermWidget xw)
|
||||
}
|
||||
|
||||
static void
|
||||
set_ewmh_hint(Display * dpy, Window window, int operation, _Xconst char *prop)
|
||||
set_ewmh_hint(Display *dpy, Window window, int operation, _Xconst char *prop)
|
||||
{
|
||||
XEvent e;
|
||||
Atom atom_fullscreen = XInternAtom(dpy, prop, False);
|
||||
@ -2799,7 +2827,7 @@ set_ewmh_hint(Display * dpy, Window window, int operation, _Xconst char *prop)
|
||||
* window.
|
||||
*/
|
||||
static Boolean
|
||||
probe_netwm(Display * dpy, _Xconst char *propname)
|
||||
probe_netwm(Display *dpy, _Xconst char *propname)
|
||||
{
|
||||
Atom atom_fullscreen = XInternAtom(dpy, propname, False);
|
||||
Atom atom_supported = XInternAtom(dpy, "_NET_SUPPORTED", False);
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: scrollbar.c,v 1.196 2013/02/26 23:36:05 tom Exp $ */
|
||||
/* $XTermId: scrollbar.c,v 1.197 2013/06/23 21:55:39 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 2000-2012,2013 by Thomas E. Dickey
|
||||
@ -74,7 +74,6 @@
|
||||
#include <data.h>
|
||||
#include <error.h>
|
||||
#include <menu.h>
|
||||
#include <xcharmouse.h>
|
||||
#include <xstrings.h>
|
||||
|
||||
/*
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: util.c,v 1.601 2013/05/09 01:00:59 tom Exp $ */
|
||||
/* $XTermId: util.c,v 1.606 2013/07/10 22:52:14 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2012,2013 by Thomas E. Dickey
|
||||
@ -73,6 +73,8 @@
|
||||
#include <wcwidth.h>
|
||||
#endif
|
||||
|
||||
#include <graphics.h>
|
||||
|
||||
static int handle_translated_exposure(XtermWidget xw,
|
||||
int rect_x,
|
||||
int rect_y,
|
||||
@ -104,7 +106,7 @@ int (*my_wcwidth) (wchar_t);
|
||||
* that we should fill with blanks, return true if filling is needed.
|
||||
*/
|
||||
int
|
||||
DamagedCells(TScreen * screen, unsigned n, int *klp, int *krp, int row, int col)
|
||||
DamagedCells(TScreen *screen, unsigned n, int *klp, int *krp, int row, int col)
|
||||
{
|
||||
LineData *ld = getLineData(screen, row);
|
||||
int result = False;
|
||||
@ -157,7 +159,7 @@ DamagedCells(TScreen * screen, unsigned n, int *klp, int *krp, int row, int col)
|
||||
}
|
||||
|
||||
int
|
||||
DamagedCurCells(TScreen * screen, unsigned n, int *klp, int *krp)
|
||||
DamagedCurCells(TScreen *screen, unsigned n, int *klp, int *krp)
|
||||
{
|
||||
return DamagedCells(screen, n, klp, krp, screen->cur_row, screen->cur_col);
|
||||
}
|
||||
@ -685,6 +687,8 @@ xtermScroll(XtermWidget xw, int amount)
|
||||
}
|
||||
}
|
||||
|
||||
scroll_displayed_graphics(amount);
|
||||
|
||||
if (refreshheight > 0) {
|
||||
ScrnRefresh(xw,
|
||||
refreshtop,
|
||||
@ -1012,7 +1016,7 @@ resetZIconBeep(XtermWidget xw)
|
||||
* the current cursor position. update cursor position.
|
||||
*/
|
||||
void
|
||||
WriteText(XtermWidget xw, IChar * str, Cardinal len)
|
||||
WriteText(XtermWidget xw, IChar *str, Cardinal len)
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
LineData *ld = 0;
|
||||
@ -1485,6 +1489,12 @@ ClearAbove(XtermWidget xw)
|
||||
if ((height = screen->cur_row + top) > screen->max_row)
|
||||
height = screen->max_row + 1;
|
||||
if ((height -= top) > 0) {
|
||||
chararea_clear_displayed_graphics(screen,
|
||||
0,
|
||||
top,
|
||||
MaxCols(screen),
|
||||
height);
|
||||
|
||||
ClearCurBackground(xw,
|
||||
top,
|
||||
0,
|
||||
@ -1523,6 +1533,11 @@ ClearBelow(XtermWidget xw)
|
||||
if (screen->scroll_amt)
|
||||
FlushScroll(xw);
|
||||
if (++top <= screen->max_row) {
|
||||
chararea_clear_displayed_graphics(screen,
|
||||
0,
|
||||
top,
|
||||
MaxCols(screen),
|
||||
(screen->max_row - top + 1));
|
||||
ClearCurBackground(xw,
|
||||
top,
|
||||
0,
|
||||
@ -1749,6 +1764,11 @@ ClearScreen(XtermWidget xw)
|
||||
if ((top = INX2ROW(screen, 0)) <= screen->max_row) {
|
||||
if (screen->scroll_amt)
|
||||
FlushScroll(xw);
|
||||
chararea_clear_displayed_graphics(screen,
|
||||
0,
|
||||
top,
|
||||
MaxCols(screen),
|
||||
(screen->max_row - top + 1));
|
||||
ClearCurBackground(xw,
|
||||
top,
|
||||
0,
|
||||
@ -2029,14 +2049,18 @@ vertical_copy_area(XtermWidget xw,
|
||||
{
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
|
||||
TRACE(("vertical_copy_area - firstline=%d nlines=%d left=%d right=%d amount=%d\n",
|
||||
firstline, nlines, left, right, amount));
|
||||
|
||||
if (nlines > 0) {
|
||||
int src_x = CursorX(screen, left);
|
||||
int src_y = firstline * FontHeight(screen) + screen->border;
|
||||
unsigned int w = (unsigned) ((right + 1 - left) * FontWidth(screen));
|
||||
unsigned int h = (unsigned) (nlines * FontHeight(screen));
|
||||
int dst_x = src_x;
|
||||
int dst_y = src_y - amount * FontHeight(screen);
|
||||
|
||||
copy_area(xw, src_x, src_y,
|
||||
(unsigned) ((right + 1 - left) * FontWidth(screen)),
|
||||
(unsigned) (nlines * FontHeight(screen)),
|
||||
src_x, src_y - amount * FontHeight(screen));
|
||||
copy_area(xw, src_x, src_y, w, h, dst_x, dst_y);
|
||||
|
||||
if (screen->show_wrap_marks) {
|
||||
LineData *ld;
|
||||
@ -2078,10 +2102,10 @@ HandleExposure(XtermWidget xw, XEvent * event)
|
||||
#ifndef NO_ACTIVE_ICON
|
||||
if (reply->window == screen->iconVwin.window) {
|
||||
WhichVWin(screen) = &screen->iconVwin;
|
||||
TRACE(("HandleExposure - icon"));
|
||||
TRACE(("HandleExposure - icon\n"));
|
||||
} else {
|
||||
WhichVWin(screen) = &screen->fullVwin;
|
||||
TRACE(("HandleExposure - normal"));
|
||||
TRACE(("HandleExposure - normal\n"));
|
||||
}
|
||||
TRACE((" event %d,%d %dx%d\n",
|
||||
reply->y,
|
||||
@ -2387,13 +2411,13 @@ xtermRepaint(XtermWidget xw)
|
||||
Boolean
|
||||
isDefaultForeground(const char *name)
|
||||
{
|
||||
return (Boolean) ! x_strcasecmp(name, XtDefaultForeground);
|
||||
return (Boolean) !x_strcasecmp(name, XtDefaultForeground);
|
||||
}
|
||||
|
||||
Boolean
|
||||
isDefaultBackground(const char *name)
|
||||
{
|
||||
return (Boolean) ! x_strcasecmp(name, XtDefaultBackground);
|
||||
return (Boolean) !x_strcasecmp(name, XtDefaultBackground);
|
||||
}
|
||||
|
||||
#if OPT_WIDE_CHARS
|
||||
@ -2540,7 +2564,7 @@ ReverseVideo(XtermWidget xw)
|
||||
swapVTwinGCs(xw, &(screen->iconVwin));
|
||||
#endif /* NO_ACTIVE_ICON */
|
||||
|
||||
xw->misc.re_verse = (Boolean) ! xw->misc.re_verse;
|
||||
xw->misc.re_verse = (Boolean) !xw->misc.re_verse;
|
||||
|
||||
if (XtIsRealized((Widget) xw)) {
|
||||
xtermDisplayCursor(xw);
|
||||
@ -2581,7 +2605,7 @@ ReverseVideo(XtermWidget xw)
|
||||
}
|
||||
|
||||
void
|
||||
recolor_cursor(TScreen * screen,
|
||||
recolor_cursor(TScreen *screen,
|
||||
Cursor cursor, /* X cursor ID to set */
|
||||
unsigned long fg, /* pixel indexes to look up */
|
||||
unsigned long bg) /* pixel indexes to look up */
|
||||
@ -2688,7 +2712,7 @@ xtermXftDrawString(XtermWidget xw,
|
||||
XftFont * font,
|
||||
int x,
|
||||
int y,
|
||||
IChar * text,
|
||||
IChar *text,
|
||||
Cardinal len,
|
||||
Bool really)
|
||||
{
|
||||
@ -2972,7 +2996,7 @@ xtermFillCells(XtermWidget xw,
|
||||
|
||||
#if OPT_TRACE
|
||||
static void
|
||||
xtermSetClipRectangles(Display * dpy,
|
||||
xtermSetClipRectangles(Display *dpy,
|
||||
GC gc,
|
||||
int x,
|
||||
int y,
|
||||
@ -3061,7 +3085,7 @@ drawClippedXftString(XtermWidget xw,
|
||||
XftColor * fg_color,
|
||||
int x,
|
||||
int y,
|
||||
IChar * text,
|
||||
IChar *text,
|
||||
Cardinal len)
|
||||
{
|
||||
int ncells = xtermXftWidth(xw, flags,
|
||||
@ -3100,13 +3124,14 @@ int
|
||||
drawXtermText(XtermWidget xw,
|
||||
unsigned flags,
|
||||
GC gc,
|
||||
int x,
|
||||
int y,
|
||||
int start_x,
|
||||
int start_y,
|
||||
int chrset,
|
||||
IChar * text,
|
||||
IChar *text,
|
||||
Cardinal len,
|
||||
int on_wide)
|
||||
{
|
||||
int x = start_x, y = start_y;
|
||||
TScreen *screen = TScreenOf(xw);
|
||||
Cardinal real_length = len;
|
||||
Cardinal underline_len = 0;
|
||||
@ -3421,7 +3446,10 @@ drawXtermText(XtermWidget xw,
|
||||
x + (int) underline_len * FontWidth(screen) - 1,
|
||||
y);
|
||||
}
|
||||
return x + (int) len *FontWidth(screen);
|
||||
|
||||
x += (int) len *FontWidth(screen);
|
||||
|
||||
return x;
|
||||
}
|
||||
#endif /* OPT_RENDERFONT */
|
||||
/*
|
||||
@ -3471,6 +3499,7 @@ drawXtermText(XtermWidget xw,
|
||||
gc, x + adj, y, chrset,
|
||||
text++, 1, on_wide) - adj;
|
||||
}
|
||||
|
||||
return x;
|
||||
}
|
||||
#if OPT_BOX_CHARS
|
||||
@ -3812,7 +3841,8 @@ drawXtermText(XtermWidget xw,
|
||||
x, y, (x + (int) underline_len * font_width - 1), y);
|
||||
}
|
||||
|
||||
return x + (int) real_length *FontWidth(screen);
|
||||
x += (int) real_length *FontWidth(screen);
|
||||
return x;
|
||||
}
|
||||
|
||||
#if OPT_WIDE_CHARS
|
||||
@ -4113,7 +4143,7 @@ ClearCurBackground(XtermWidget xw,
|
||||
* Returns a single base character for the given cell.
|
||||
*/
|
||||
unsigned
|
||||
getXtermCell(TScreen * screen, int row, int col)
|
||||
getXtermCell(TScreen *screen, int row, int col)
|
||||
{
|
||||
LineData *ld = getLineData(screen, row);
|
||||
|
||||
@ -4126,7 +4156,7 @@ getXtermCell(TScreen * screen, int row, int col)
|
||||
* Sets a single base character for the given cell.
|
||||
*/
|
||||
void
|
||||
putXtermCell(TScreen * screen, int row, int col, int ch)
|
||||
putXtermCell(TScreen *screen, int row, int col, int ch)
|
||||
{
|
||||
LineData *ld = getLineData(screen, row);
|
||||
|
||||
@ -4146,7 +4176,7 @@ putXtermCell(TScreen * screen, int row, int col, int ch)
|
||||
* Add a combining character for the given cell
|
||||
*/
|
||||
void
|
||||
addXtermCombining(TScreen * screen, int row, int col, unsigned ch)
|
||||
addXtermCombining(TScreen *screen, int row, int col, unsigned ch)
|
||||
{
|
||||
if (ch != 0) {
|
||||
LineData *ld = getLineData(screen, row);
|
||||
@ -4165,7 +4195,7 @@ addXtermCombining(TScreen * screen, int row, int col, unsigned ch)
|
||||
}
|
||||
|
||||
unsigned
|
||||
getXtermCombining(TScreen * screen, int row, int col, int off)
|
||||
getXtermCombining(TScreen *screen, int row, int col, int off)
|
||||
{
|
||||
LineData *ld = getLineData(screen, row);
|
||||
return ld->combData[off][col];
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: version.h,v 1.364 2013/05/28 00:02:50 tom Exp $ */
|
||||
/* $XTermId: version.h,v 1.370 2013/07/10 23:53:57 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1998-2012,2013 by Thomas E. Dickey
|
||||
@ -38,8 +38,8 @@
|
||||
* version of X to which this version of xterm has been built. The resulting
|
||||
* number in parentheses is my patch number (Thomas E. Dickey).
|
||||
*/
|
||||
#define XTERM_PATCH 293
|
||||
#define XTERM_DATE 2013-05-27
|
||||
#define XTERM_PATCH 296
|
||||
#define XTERM_DATE 2013-07-10
|
||||
|
||||
#ifndef __vendorversion__
|
||||
#define __vendorversion__ "XTerm/OpenBSD"
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: xterm.h,v 1.718 2013/04/24 08:55:50 tom Exp $ */
|
||||
/* $XTermId: xterm.h,v 1.720 2013/06/23 08:57:13 Ross.Combs Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1999-2012,2013 by Thomas E. Dickey
|
||||
@ -479,6 +479,7 @@ extern char **environ;
|
||||
#define XtNpointerMode "pointerMode"
|
||||
#define XtNpointerShape "pointerShape"
|
||||
#define XtNpopOnBell "popOnBell"
|
||||
#define XtNprivateColorRegisters "privateColorRegisters"
|
||||
#define XtNprecompose "precompose"
|
||||
#define XtNprintAttributes "printAttributes"
|
||||
#define XtNprinterAutoClose "printerAutoClose"
|
||||
@ -507,6 +508,7 @@ extern char **environ;
|
||||
#define XtNshowMissingGlyphs "showMissingGlyphs"
|
||||
#define XtNshowWrapMarks "showWrapMarks"
|
||||
#define XtNsignalInhibit "signalInhibit"
|
||||
#define XtNsixelScrolling "sixelScrolling"
|
||||
#define XtNtekGeometry "tekGeometry"
|
||||
#define XtNtekInhibit "tekInhibit"
|
||||
#define XtNtekSmall "tekSmall"
|
||||
@ -636,8 +638,8 @@ extern char **environ;
|
||||
#define XtCMenuBar "MenuBar"
|
||||
#define XtCMenuHeight "MenuHeight"
|
||||
#define XtCMetaSendsEscape "MetaSendsEscape"
|
||||
#define XtCMkSamplePass "MkSamplePass"
|
||||
#define XtCMkSampleSize "MkSampleSize"
|
||||
#define XtCMkSamplePass "MkSamplePass"
|
||||
#define XtCMkSampleSize "MkSampleSize"
|
||||
#define XtCMkWidth "MkWidth"
|
||||
#define XtCModifyCursorKeys "ModifyCursorKeys"
|
||||
#define XtCModifyFunctionKeys "ModifyFunctionKeys"
|
||||
@ -651,6 +653,7 @@ extern char **environ;
|
||||
#define XtCOldXtermFKeys "OldXtermFKeys"
|
||||
#define XtCPointerMode "PointerMode"
|
||||
#define XtCPopOnBell "PopOnBell"
|
||||
#define XtCPrivateColorRegisters "PrivateColorRegisters"
|
||||
#define XtCPrecompose "Precompose"
|
||||
#define XtCPrintAttributes "PrintAttributes"
|
||||
#define XtCPrinterAutoClose "PrinterAutoClose"
|
||||
@ -678,6 +681,7 @@ extern char **environ;
|
||||
#define XtCShowMissingGlyphs "ShowMissingGlyphs"
|
||||
#define XtCShowWrapMarks "ShowWrapMarks"
|
||||
#define XtCSignalInhibit "SignalInhibit"
|
||||
#define XtCSixelScrolling "SixelScrolling"
|
||||
#define XtCTekInhibit "TekInhibit"
|
||||
#define XtCTekSmall "TekSmall"
|
||||
#define XtCTekStartup "TekStartup"
|
||||
@ -997,6 +1001,7 @@ extern char *xtermEnvEncoding (void);
|
||||
extern char *xtermFindShell (char * /* leaf */, Bool /* warning */);
|
||||
extern const char *SysErrorMsg (int /* n */);
|
||||
extern const char *SysReasonMsg (int /* n */);
|
||||
extern Boolean allocateBestRGB(XtermWidget /* xw */, XColor * /* def */);
|
||||
extern int ResetAnsiColorRequest (XtermWidget, char *, int);
|
||||
extern int XStrCmp (char * /* s1 */, char * /* s2 */);
|
||||
extern int creat_as (uid_t /* uid */, gid_t /* gid */, Bool /* append */, char * /* pathname */, unsigned /* mode */);
|
||||
|
@ -30,7 +30,7 @@
|
||||
* sale, use or other dealings in this Software without prior written *
|
||||
* authorization. *
|
||||
*****************************************************************************
|
||||
$XTermId: xterm.log.html,v 1.1351 2013/05/28 00:01:55 tom Exp $
|
||||
$XTermId: xterm.log.html,v 1.1366 2013/07/10 23:46:32 tom Exp $
|
||||
-->
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||
|
||||
@ -69,6 +69,12 @@
|
||||
CHANGELOG</a>).</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="#xterm_296">Patch #296 - 2013/07/10</a></li>
|
||||
|
||||
<li><a href="#xterm_295">Patch #295 - 2013/07/06</a></li>
|
||||
|
||||
<li><a href="#xterm_294">Patch #294 - 2013/07/05</a></li>
|
||||
|
||||
<li><a href="#xterm_293">Patch #293 - 2013/05/27</a></li>
|
||||
|
||||
<li><a href="#xterm_292">Patch #292 - 2013/04/25</a></li>
|
||||
@ -868,6 +874,62 @@
|
||||
<li><a href="#xterm_01">Patch #1 - 1996/1/6</a></li>
|
||||
</ul>
|
||||
|
||||
<h1><a name="xterm_296" id="xterm_296">Patch #296 -
|
||||
2013/07/10</a></h1>
|
||||
|
||||
<ul>
|
||||
<li>improve experimental sixel feature (patch by Ross
|
||||
Combs).</li>
|
||||
|
||||
<li>modify delimiter in configure macro used to add a library
|
||||
after a given library to avoid confusion with <code>-Wl</code>
|
||||
pass-through options to linker (NetBSD #48031).</li>
|
||||
|
||||
<li>fix quoting in expression used to trim extra libraries from
|
||||
<a href="#xterm_295">patch #295</a> changes (report by Thomas
|
||||
Klausner).</li>
|
||||
</ul>
|
||||
|
||||
<h1><a name="xterm_295" id="xterm_295">Patch #295 -
|
||||
2013/07/06</a></h1>
|
||||
|
||||
<ul>
|
||||
<li>adjust order of libraries to work around incomplete symbol
|
||||
resolution when using <code>--as-needed</code> option
|
||||
(ArchLinux #36047).</li>
|
||||
|
||||
<li>minor fix for <code>plink.sh</code>, for IRIX64.</li>
|
||||
</ul>
|
||||
|
||||
<h1><a name="xterm_294" id="xterm_294">Patch #294 -
|
||||
2013/07/05</a></h1>
|
||||
|
||||
<ul>
|
||||
<li>add note in ctlseqs.ms for CPR response pointing out a
|
||||
potential point of confusion with the string sent by a modified
|
||||
F1 key (suggested by Bram Moolenaar).</li>
|
||||
|
||||
<li>improve <code>plink.sh</code> by checking if the linker
|
||||
supports the <code>--as-needed</code> option (suggested by
|
||||
David Philippi).</li>
|
||||
|
||||
<li>improve clearing for private mode 1049 when switching to
|
||||
the alternate screen (Debian #711758).</li>
|
||||
|
||||
<li>amend fix from <a href="#xterm_292">patch #292</a> by
|
||||
removing now-unneeded chunk which introduced problem in
|
||||
selection (Debian #714527).</li>
|
||||
|
||||
<li>add definition to optionally override compiled-in class for
|
||||
xterm from makefile, needed for test-packages.</li>
|
||||
|
||||
<li>add configure option
|
||||
<code>--enable-sixel-graphics</code></li>
|
||||
|
||||
<li>add experimental support for sixel graphics (patch by Ross
|
||||
Combs).</li>
|
||||
</ul>
|
||||
|
||||
<h1><a name="xterm_293" id="xterm_293">Patch #293 -
|
||||
2013/05/27</a></h1>
|
||||
|
||||
@ -1001,8 +1063,8 @@
|
||||
by Peder Stray).</li>
|
||||
|
||||
<li>fix inconsistent use of noreturn-attribute in
|
||||
<code>Exit</code> function which interfered with analysis by
|
||||
clang.</li>
|
||||
<code>Exit</code> function which interfered with clang
|
||||
--analyze.</li>
|
||||
|
||||
<li>remove incorrect <code>free</code> used in computation of
|
||||
<code>XTERM_SHELL</code> variable, from Coverity fixes in
|
||||
@ -1127,9 +1189,9 @@
|
||||
<li>modify the handling of focus-change events to ignore those
|
||||
whose detail is <code>NotifyPointer</code>, since those are
|
||||
sent in addition to focus-change events directed to the old/new
|
||||
windows having focus (prompted by patch by Balazs Kezes to
|
||||
prevent the urgency-hint from being reset in this
|
||||
scenario).</li>
|
||||
windows having focus. In particular, this prevents the
|
||||
urgency-hint from being reset inadvertantly (prompted by patch
|
||||
by Balazs Kezes).</li>
|
||||
|
||||
<li>modify description of <code>iconName</code> in manpage to
|
||||
make it clearer that this resource does not specify the
|
||||
@ -1219,7 +1281,7 @@
|
||||
existing uses of the <code>iconName</code> resource in the
|
||||
<code>Shell</code> widget (report by Emanuel Haupt).</li>
|
||||
|
||||
<li>fix documentation errata (reports by Miroslav Lichvar):
|
||||
<li>fix documentation errata reported by Miroslav Lichvar:
|
||||
|
||||
<ul>
|
||||
<li>correct manpage default for <code>allowTcapOps</code>
|
||||
@ -8528,7 +8590,7 @@ Klanderman).
|
||||
Smith).</li>
|
||||
|
||||
<li>modify terminfo entry for <code>xterm-xfree86</code> to
|
||||
reflect modifiers for shift and control which (from a patch by
|
||||
reflect modifiers for shift and control (from a patch by
|
||||
Alexander V Lukyanov).</li>
|
||||
|
||||
<li>modify terminfo entry for <code>xterm-sun</code> to match
|
||||
|
@ -1,5 +1,5 @@
|
||||
'\" t
|
||||
.\" $XTermId: xterm.man,v 1.564 2013/05/16 09:57:06 tom Exp $
|
||||
.\" $XTermId: xterm.man,v 1.569 2013/07/05 20:35:30 tom Exp $
|
||||
.\"
|
||||
.\" Copyright 1996-2012,2013 by Thomas E. Dickey
|
||||
.\"
|
||||
@ -971,7 +971,7 @@ Specify the name used by \fI\*n\fP to select the
|
||||
correct response to terminal ID queries.
|
||||
It also specifies the emulation level,
|
||||
used to determine the type of response to a DA control sequence.
|
||||
Valid values include vt52, vt100, vt101, vt102, and vt220
|
||||
Valid values include vt52, vt100, vt101, vt102, vt220, and vt240
|
||||
(the \*(``vt\*('' is optional).
|
||||
The default is \*(``vt__default_termid__\*(''.
|
||||
The term_id argument specifies the terminal ID to use.
|
||||
@ -3540,6 +3540,13 @@ Controls whether a newline is sent to the printer at the end of a print
|
||||
page function.
|
||||
The default is \*(``true\*(''.
|
||||
.TP 8
|
||||
.B "privateColorRegisters (\fPclass\fB privateColorRegisters)"
|
||||
If true, allocate separate color registers for each sixel
|
||||
device control string, e.g., for DECGCI.
|
||||
If not true, color registers are allocated only once,
|
||||
when the terminal is reset.
|
||||
The default is \*(``true\*(''.
|
||||
.TP 8
|
||||
.B "quietGrab (\fPclass\fB QuietGrab)"
|
||||
Controls whether the cursor is repainted
|
||||
when \fINotifyGrab\fP and \fINotifyUngrab\fP
|
||||
@ -3743,6 +3750,11 @@ Specifies whether or not the entries in the \*(``Main Options\*('' menu for send
|
||||
signals to \fI\*n\fP should be disallowed.
|
||||
The default is \*(``false\*(''.
|
||||
.TP 8
|
||||
.B "sixelScrolling (\fPclass\fB SixelScrolling)"
|
||||
If true, graphics scroll up one line at a time when sixels would be written
|
||||
past the bottom line on the window.
|
||||
The default is \*(``false\*(''.
|
||||
.TP 8
|
||||
.B "tekGeometry (\fPclass\fB Geometry)"
|
||||
Specifies the preferred size and position of the Tektronix window.
|
||||
There is no default for this resource.
|
||||
@ -4240,6 +4252,9 @@ This entry invokes the \fBset-visibility(vt,off)\fP action.
|
||||
.TP 8
|
||||
.B "altscreen (\fPclass\fB SmeBSB)"
|
||||
This entry invokes the \fBset-altscreen(toggle)\fP action.
|
||||
.TP 8
|
||||
.B "sixelScrolling (\fPclass\fB SmeBSB)"
|
||||
This entry invokes the \fBset-sixel-scrolling(toggle)\fP action.
|
||||
.
|
||||
.PP
|
||||
The \fIVT Fonts\fP menu (widget name \fIfontMenu\fP)
|
||||
@ -4908,6 +4923,34 @@ This corresponds to the
|
||||
option and the
|
||||
.B activeIcon
|
||||
resource.
|
||||
.
|
||||
.TP
|
||||
Sixel Scrolling (sixelScrolling)
|
||||
When enabled,
|
||||
sixel graphics are positioned at the current text cursor location, scroll
|
||||
the image vertically if larger than the screen, and leave the text cursor
|
||||
after the image when returning to text mode.
|
||||
When disabled,
|
||||
sixel graphics are positioned at the upper left of the screen, are
|
||||
cropped to fit the screen, and do not affect the text cursor location
|
||||
(this is the default).
|
||||
This corresponds to the
|
||||
.B sixelScrolling
|
||||
resource.
|
||||
There is no corresponding command-line option.
|
||||
.
|
||||
.TP
|
||||
Private Color Registers (privateColorRegisters)
|
||||
When enabled,
|
||||
each graphic image uses a separate set of color registers, so that it
|
||||
essentially has a private palette (this is the default). If it is not set,
|
||||
all graphics images share a common set of registers which is how sixel and
|
||||
ReGIS graphics worked on actual hardware. The default is likely a more
|
||||
useful mode on modern TrueColor hardware.
|
||||
This corresponds to the
|
||||
.B privateColorRegisters
|
||||
resource.
|
||||
There is no corresponding command-line option.
|
||||
.RE
|
||||
.
|
||||
.TP
|
||||
@ -5883,6 +5926,9 @@ This action toggles the state of the \fBnumLock\fP resource.
|
||||
This action sets, unsets or toggles the \fBpopOnBell\fP resource.
|
||||
It is also invoked by the \fBpoponbell\fP entry in \fIvtMenu\fP.
|
||||
.TP 8
|
||||
.B "set-private-colors(\fIon/off/toggle\fP)"
|
||||
This action sets, unsets or toggles the \fBprivateColorRegisters\fP resource.
|
||||
.TP 8
|
||||
.B "set-render-font(\fIon/off/toggle\fP)"
|
||||
This action sets, unsets or toggles the \fBrenderFont\fP resource.
|
||||
It is also invoked by the \fBrender-font\fP entry in \fIfontMenu\fP.
|
||||
@ -5907,13 +5953,18 @@ It is also invoked from the \fBscrollttyoutput\fP entry in \fIvtMenu\fP.
|
||||
This action sets, unsets or toggles the \fBscrollbar\fP resource.
|
||||
It is also invoked by the \fBscrollbar\fP entry in \fIvtMenu\fP.
|
||||
.TP 8
|
||||
.B "set-sco-function-keys(\fIon/off/toggle\fP)"
|
||||
This action sets, unsets or toggles the \fBscoFunctionKeys\fP resource.
|
||||
It is also invoked by the \fBscoFunctionKeys\fP entry in \fImainMenu\fP.
|
||||
.TP 8
|
||||
.B "set-select(\fIon/off/toggle\fP)"
|
||||
This action sets, unsets or toggles the \fBselectToClipboard\fP resource.
|
||||
It is also invoked by the \fBselectToClipboard\fP entry in \fIvtMenu\fP.
|
||||
.TP 8
|
||||
.B "set-sco-function-keys(\fIon/off/toggle\fP)"
|
||||
This action sets, unsets or toggles the \fBscoFunctionKeys\fP resource.
|
||||
It is also invoked by the \fBscoFunctionKeys\fP entry in \fImainMenu\fP.
|
||||
.B "set-sixel-scrolling(\fIon/off/toggle\fP)"
|
||||
This action toggles between inline (sixel scrolling) and absolute positioning.
|
||||
It can also be controlled via DEC private mode 80 (DECSDM) or from
|
||||
the \fBsixelScrolling\fP entry in the \fIbtMenu\fP.
|
||||
.TP 8
|
||||
.B "set-sun-function-keys(\fIon/off/toggle\fP)"
|
||||
This action sets, unsets or toggles the \fBsunFunctionKeys\fP resource.
|
||||
@ -6089,7 +6140,6 @@ This action sends the indicated graphics input code.
|
||||
The default bindings in the VT102 window use the SELECT token,
|
||||
which is set by the \fBselectToClipboard\fP resource:
|
||||
.NS
|
||||
.ta 2.5i
|
||||
Shift <KeyPress> Prior:scroll-back(1,halfpage) \\n\\\&
|
||||
Shift <KeyPress> Next:scroll-forw(1,halfpage) \\n\\\&
|
||||
Shift <KeyPress> Select:select-cursor-start() \\\&
|
||||
@ -6138,7 +6188,6 @@ which is set by the \fBselectToClipboard\fP resource:
|
||||
The default bindings for the scrollbar widget
|
||||
are separate from the VT100 widget:
|
||||
.NS
|
||||
.ta 2.5i
|
||||
<Btn5Down>: StartScroll(Forward) \\n\\\&
|
||||
<Btn1Down>: StartScroll(Forward) \\n\\\&
|
||||
<Btn2Down>: StartScroll(Continuous) MoveThumb() NotifyThumb() \\n\\\&
|
||||
@ -6150,7 +6199,6 @@ are separate from the VT100 widget:
|
||||
.PP
|
||||
The default bindings in the Tektronix window are:
|
||||
.NS
|
||||
.ta 2.5i
|
||||
~Meta<KeyPress>: insert-seven-bit() \\n\\\&
|
||||
Meta<KeyPress>: insert-eight-bit() \\n\\\&
|
||||
!Ctrl <Btn1Down>: popup-menu(mainMenu) \\n\\\&
|
||||
@ -6180,7 +6228,6 @@ While \fI\*n\fP owns the selection, it highlights it.
|
||||
When it loses the selection, it removes the corresponding highlight.
|
||||
But you can still paste from the corresponding cut buffer.
|
||||
.NS
|
||||
.ta .5i 1.5i
|
||||
*VT100*translations: #override \\n\\\&
|
||||
~Shift~Ctrl<Btn2Up>: insert-selection(PRIMARY, CUT_BUFFER0) \\n\\\&
|
||||
Shift~Ctrl<Btn2Up>: insert-selection(CLIPBOARD, CUT_BUFFER1) \\n\\\&
|
||||
@ -6191,7 +6238,6 @@ But you can still paste from the corresponding cut buffer.
|
||||
Below is a sample of how the \fBkeymap()\fP action is used to add special
|
||||
keys for entering commonly-typed works:
|
||||
.NS
|
||||
.ta .5i 1.5i
|
||||
*VT100.Translations: #override <Key>F13: keymap(dbx)
|
||||
*VT100.dbxKeymap.translations: \\\&
|
||||
<Key>F14: keymap(None) \\n\\\&
|
||||
@ -6205,7 +6251,6 @@ Some people prefer using the left pointer button
|
||||
for dragging the scrollbar thumb.
|
||||
That can be setup by altering the translations resource, e.g.,
|
||||
.NS
|
||||
.ta .5i 1.5i
|
||||
*VT100.scrollbar.translations: #override \\n\\\&
|
||||
<Btn5Down>: StartScroll(Forward) \\n\\\&
|
||||
<Btn1Down>: StartScroll(Continuous) MoveThumb() NotifyThumb() \\n\\\&
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: xtermcap.h,v 1.18 2011/09/11 14:59:33 tom Exp $ */
|
||||
/* $XTermId: xtermcap.h,v 1.19 2013/06/23 15:34:37 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 2007-2010,2011 by Thomas E. Dickey
|
||||
@ -35,6 +35,7 @@
|
||||
*/
|
||||
#ifndef included_xtermcap_h
|
||||
#define included_xtermcap_h
|
||||
/* *INDENT-OFF* */
|
||||
|
||||
#include <xterm.h>
|
||||
|
||||
@ -115,4 +116,5 @@ extern int xtermcapKeycode(XtermWidget /* xw */, const char ** /* params */, uns
|
||||
}
|
||||
#endif
|
||||
|
||||
/* *INDENT-ON* */
|
||||
#endif /* included_xtermcap_h */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: xtermcfg.hin,v 1.199 2013/05/27 21:05:23 tom Exp $ */
|
||||
/* $XTermId: xtermcfg.hin,v 1.200 2013/06/23 19:20:22 tom Exp $ */
|
||||
|
||||
/************************************************************
|
||||
|
||||
@ -148,6 +148,7 @@ authorization.
|
||||
/* #undef OPT_SELECTION_OPS /* CF_ARG_DISABLE(selection-ops) */
|
||||
#define OPT_SELECT_REGEX 1 /* CF_ARG_DISABLE(regex) */
|
||||
/* #undef OPT_SESSION_MGT */ /* CF_ARG_DISABLE(session-mgt) */
|
||||
/* #undef OPT_SIXEL_GRAPHICS 1 /* CF_ARG_ENABLE(sixel-graphics) */
|
||||
/* #undef OPT_SUN_FUNC_KEYS */ /* CF_ARG_ENABLE(sun-fkeys) */
|
||||
/* #undef OPT_TCAP_FKEYS */ /* CF_ARG_ENABLE(tcap-fkeys) */
|
||||
/* #undef OPT_TCAP_QUERY */ /* CF_ARG_ENABLE(tcap-query) */
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* $XTermId: xtermcfg.hin,v 1.199 2013/05/27 21:05:23 tom Exp $ */
|
||||
/* $XTermId: xtermcfg.hin,v 1.200 2013/06/23 19:20:22 tom Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright 1997-2012,2013 by Thomas E. Dickey
|
||||
@ -147,6 +147,7 @@
|
||||
#undef OPT_SELECTION_OPS /* CF_ARG_DISABLE(selection-ops) */
|
||||
#undef OPT_SELECT_REGEX /* CF_ARG_DISABLE(regex) */
|
||||
#undef OPT_SESSION_MGT /* CF_ARG_DISABLE(session-mgt) */
|
||||
#undef OPT_SIXEL_GRAPHICS /* CF_ARG_ENABLE(sixel-graphics) */
|
||||
#undef OPT_SUN_FUNC_KEYS /* CF_ARG_ENABLE(sun-fkeys) */
|
||||
#undef OPT_TCAP_FKEYS /* CF_ARG_ENABLE(tcap-fkeys) */
|
||||
#undef OPT_TCAP_QUERY /* CF_ARG_ENABLE(tcap-query) */
|
||||
|
Loading…
Reference in New Issue
Block a user