sync with OpenBSD -current
This commit is contained in:
parent
a34e492c6b
commit
acb2a22980
86 changed files with 12131 additions and 4602 deletions
16
README.md
16
README.md
|
@ -100,8 +100,8 @@ in a non-standard directory (the default is /usr/xenocara).
|
||||||
|
|
||||||
Xenocara requires objdirs. Just run 'make obj' as root at any level
|
Xenocara requires objdirs. Just run 'make obj' as root at any level
|
||||||
before 'make build' to make sure that the object directories are
|
before 'make build' to make sure that the object directories are
|
||||||
created. XOBJDIR defines the obj directory that is used (defaults to
|
created. XOBJDIR defines the obj directory that is used (defaults to
|
||||||
/usr/xobj). It should be created before running 'make obj'.
|
/usr/xobj). It should be created before running 'make obj'.
|
||||||
|
|
||||||
## Regenerating configure scripts
|
## Regenerating configure scripts
|
||||||
|
|
||||||
|
@ -156,18 +156,18 @@ to a new release of XCB:
|
||||||
python3 package.
|
python3 package.
|
||||||
3. Update dist/libxcb.
|
3. Update dist/libxcb.
|
||||||
4. Check lib/libxcb/src/Makefile if new files need to be generated.
|
4. Check lib/libxcb/src/Makefile if new files need to be generated.
|
||||||
5. Run `make` in lib/xcb/src to generate the files for the new version.
|
5. Run make in lib/xcb/src to generate the files for the new version.
|
||||||
6. Check lib/libxcb/ for other files needing updates.
|
6. Check lib/libxcb/ for other files needing updates.
|
||||||
7. Commit the result.
|
7. Commit the result.
|
||||||
|
|
||||||
## How to build something with debug information?
|
## How to build something with debug information?
|
||||||
|
|
||||||
You can use `env CFLAGS=-g make -f Makefile.bsd-wrapper build` to
|
You can use env CFLAGS=-g make -f Makefile.bsd-wrapper build to
|
||||||
build any module with debugging information, but you'll need to remove
|
build any module with debugging information, but you'll need to remove
|
||||||
`XOBJDIR/xorg-config.cache.${MACHINE}` before doing that because
|
XOBJDIR/xorg-config.cache.${MACHINE} before doing that because
|
||||||
autoconf caches the value of CFLAGS in its cache.
|
autoconf caches the value of CFLAGS in its cache.
|
||||||
|
|
||||||
## How to get a core file out of the X server?
|
## How to get a core file out of the X server?
|
||||||
|
|
||||||
Several things are needed:
|
Several things are needed:
|
||||||
|
|
||||||
|
@ -176,7 +176,7 @@ Several things are needed:
|
||||||
xenodm, you can add the option in /etc/X11/xenodm/Xservers. If you
|
xenodm, you can add the option in /etc/X11/xenodm/Xservers. If you
|
||||||
want to use startx, you need to run it as root, like this:
|
want to use startx, you need to run it as root, like this:
|
||||||
|
|
||||||
`startx -- /usr/X11R6/bin/X -keepPriv`
|
startx -- /usr/X11R6/bin/X -keepPriv
|
||||||
|
|
||||||
Now the X server should dump core when catching a fatal signal and the
|
Now the X server should dump core when catching a fatal signal and the
|
||||||
core dump should be in /var/crash/Xorg/<pid>.core.
|
core dump should be in /var/crash/Xorg/<pid>.core.
|
||||||
|
@ -189,4 +189,4 @@ dump will be in the current directory where startx was executed.
|
||||||
See also http://xorg.freedesktop.org/wiki/Development/Documentation/ServerDebugging
|
See also http://xorg.freedesktop.org/wiki/Development/Documentation/ServerDebugging
|
||||||
|
|
||||||
--
|
--
|
||||||
$OpenBSD: README.md,v 1.1 2024/07/20 19:56:40 matthieu Exp $
|
$OpenBSD: README.md,v 1.2 2024/07/22 19:36:31 rsadowski Exp $
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
--- $XTermId: COPYING,v 1.6 2023/01/02 15:46:55 tom Exp $
|
--- $XTermId: COPYING,v 1.7 2024/01/01 20:00:01 tom Exp $
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
Copyright 1996-2022,2023 by Thomas E. Dickey
|
Copyright 1996-2023,2024 by Thomas E. Dickey
|
||||||
|
|
||||||
All Rights Reserved
|
All Rights Reserved
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
MANIFEST for xterm, version xterm-378
|
MANIFEST for xterm, version xterm-393
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
MANIFEST this file
|
MANIFEST this file
|
||||||
256colres.h resource-definitions for 256-color mode
|
256colres.h resource-definitions for 256-color mode
|
||||||
|
@ -33,6 +33,8 @@ charclass.c compact character-class module
|
||||||
charclass.h interface of charclass.c
|
charclass.h interface of charclass.c
|
||||||
charproc.c VT100 parser functions
|
charproc.c VT100 parser functions
|
||||||
charsets.c module to translate character-sets
|
charsets.c module to translate character-sets
|
||||||
|
charsets.dat raw data to transform into charsets.h
|
||||||
|
charsets.h charset definitions for xterm
|
||||||
config.guess configure script: guess the system type
|
config.guess configure script: guess the system type
|
||||||
config.sub configure script: validate system type
|
config.sub configure script: validate system type
|
||||||
configure generated
|
configure generated
|
||||||
|
@ -148,6 +150,8 @@ icons/xterm.xpms collection of icons
|
||||||
icons/xterm_16x16.xpm normal icon 16x16 pixmap
|
icons/xterm_16x16.xpm normal icon 16x16 pixmap
|
||||||
icons/xterm_32x32.xpm 32x32 monochrome icon
|
icons/xterm_32x32.xpm 32x32 monochrome icon
|
||||||
icons/xterm_48x48.xpm 48x48 monochrome icon
|
icons/xterm_48x48.xpm 48x48 monochrome icon
|
||||||
|
package subdirectory
|
||||||
|
package/xterm.spec build-script
|
||||||
package/debian subdirectory
|
package/debian subdirectory
|
||||||
package/debian/changelog build-script
|
package/debian/changelog build-script
|
||||||
package/debian/color.sed build-script
|
package/debian/color.sed build-script
|
||||||
|
@ -157,14 +161,13 @@ package/debian/copyright build-script
|
||||||
package/debian/postinst post-install script for update-alternatives
|
package/debian/postinst post-install script for update-alternatives
|
||||||
package/debian/prerm pre-remove script for update-alternatives
|
package/debian/prerm pre-remove script for update-alternatives
|
||||||
package/debian/rules build-script
|
package/debian/rules build-script
|
||||||
package/debian/source subdirectory
|
|
||||||
package/debian/source/format build-script
|
|
||||||
package/debian subdirectory
|
|
||||||
package/debian/watch build-script
|
package/debian/watch build-script
|
||||||
package/debian/xterm-dev.docs build-script
|
package/debian/xterm-dev.docs build-script
|
||||||
package/debian/xterm-dev.lintian-overrides ignore useless warnings from lintian
|
package/debian/xterm-dev.lintian-overrides ignore useless warnings from lintian
|
||||||
package/debian/xterm-dev.menu Debian menu-file for xterm-dev package.
|
package/debian/xterm-dev.menu Debian menu-file for xterm-dev package.
|
||||||
package/debian/xterm-xres.sed build-script
|
package/debian/xterm-xres.sed build-script
|
||||||
|
package/debian/source subdirectory
|
||||||
|
package/debian/source/format build-script
|
||||||
package/freebsd subdirectory
|
package/freebsd subdirectory
|
||||||
package/freebsd/Makefile build-script
|
package/freebsd/Makefile build-script
|
||||||
package/freebsd/distinfo generated sums
|
package/freebsd/distinfo generated sums
|
||||||
|
@ -178,8 +181,6 @@ package/pkgsrc/Makefile build-script
|
||||||
package/pkgsrc/PLIST build-script
|
package/pkgsrc/PLIST build-script
|
||||||
package/pkgsrc/distinfo build-script
|
package/pkgsrc/distinfo build-script
|
||||||
package/pkgsrc/options.mk build-script
|
package/pkgsrc/options.mk build-script
|
||||||
package subdirectory
|
|
||||||
package/xterm.spec build-script
|
|
||||||
tektests subdirectory
|
tektests subdirectory
|
||||||
tektests/aitest.tek tek4014 demo: draw a globe
|
tektests/aitest.tek tek4014 demo: draw a globe
|
||||||
tektests/dmerc.tek tek4014 demo: draws a Mercator projection with orbit
|
tektests/dmerc.tek tek4014 demo: draws a Mercator projection with orbit
|
||||||
|
|
|
@ -1,22 +1,31 @@
|
||||||
The NEWS file was generated from xterm.log.html, which serves as the changelog
|
The NEWS file was generated from xterm.log.html, which serves as the changelog
|
||||||
for xterm.
|
for xterm.
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
Patch #378 - 2023/01/09
|
Patch #393 - 2024/07/11
|
||||||
|
|
||||||
* improve descriptions of XTQMODKEYS and XTQALLOWED features in
|
* add a check for ANSI SC/RC, to ignore CSI parameters.
|
||||||
ctlseqs.ms (reports by Bram Moolenaar, Thomas Wolff).
|
* improve check for missing characters for bitmap-fonts by using the
|
||||||
* add bracketed+paste and report+version building blocks to terminfo,
|
normal font for reference in the case where the current font, e.g.,
|
||||||
from ncurses 6.4
|
the wide-font was derived from the normal font and lacks
|
||||||
* improve check for unsupported formatting characters, e.g.,
|
per-character metrics (report by Rajeev V. Pillai).
|
||||||
zero-width space, to properly ignore them (report by Thomas Wolff).
|
* fix regression in error-recovery for SGR parameters from patch #357
|
||||||
* improve/document error-checking for some of the controls which
|
(report by James Holderness).
|
||||||
return responses: DECRQSS, XTGETXRES, XTSETTCAP, XTGETTCAP
|
* remove some duplicates in xtermcfg.h (report by Matthew Green).
|
||||||
(prompted by discussion with David Leadbeater).
|
* change default for --enable-imake configure option.
|
||||||
* improve limit-checks for fallback font cache (report by Dimitrije
|
* fixes for wcwidth:
|
||||||
Erdeljan).
|
+ return 0 for format effectors, like a zero-width printing
|
||||||
* improve check for too-wide glyph in fallback font by allowing xterm
|
character rather than -1 like a control character (report by
|
||||||
to continue searching for a suitable font rather than just failing
|
Rajeev V. Pillai).
|
||||||
on the first. Also add limitFontWidth to allow changing the amount
|
+ correct doublewidth to account for reserved codepoints which
|
||||||
by which a glyph must extend outside the font's bounding box to
|
are listed in the EastAsianWidth file.
|
||||||
disallow it.
|
+ add a special case for surrogate pairs, which might be checked
|
||||||
|
in testing the wcwidth function.
|
||||||
|
* amend sixel bounds-check added in patch #371 to not wrap
|
||||||
|
out-of-bounds data.
|
||||||
|
* eliminate maxStringParse limit for SIXEL.
|
||||||
|
* improve logic which ignores APC, PM and SOS controls to also not
|
||||||
|
accumulate their data temporarily in a buffer.
|
||||||
|
* exclude TERM_INGRESS from cleanup of environment variables (patch
|
||||||
|
by Iain Riley).
|
||||||
|
* fix some documentation typos (report by Thomas Wolff).
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
-- $XTermId: THANKS,v 1.36 2022/11/17 00:49:53 tom Exp $
|
-- $XTermId: THANKS,v 1.39 2024/02/10 01:24:54 tom Exp $
|
||||||
-- vile:txtmode fk=utf-8
|
-- vile:txtmode fk=utf-8
|
||||||
There's no AUTHORS file in this distribution; it would be redundant since
|
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.
|
I (Thomas E. Dickey) have done more than 80% of the work on xterm since 1996.
|
||||||
|
@ -13,6 +13,7 @@ Here is a list from xterm.log.html of people who have contributed changes,
|
||||||
or whose suggested change could be adapted:
|
or whose suggested change could be adapted:
|
||||||
|
|
||||||
Adam M Costello
|
Adam M Costello
|
||||||
|
Adam Saponara
|
||||||
Adam Sulmicki
|
Adam Sulmicki
|
||||||
Ailin Nemui
|
Ailin Nemui
|
||||||
Al Poole
|
Al Poole
|
||||||
|
@ -81,6 +82,7 @@ Dennis Schneider
|
||||||
Dimitrios Christidis
|
Dimitrios Christidis
|
||||||
Ed Schouten
|
Ed Schouten
|
||||||
Eddy De Greef
|
Eddy De Greef
|
||||||
|
Edward Rosten
|
||||||
Edward S Arthur
|
Edward S Arthur
|
||||||
Egbert Eich
|
Egbert Eich
|
||||||
Egmont Koblinger
|
Egmont Koblinger
|
||||||
|
@ -124,6 +126,7 @@ Joe Allen
|
||||||
Joe Peterson
|
Joe Peterson
|
||||||
Johnny Billquist
|
Johnny Billquist
|
||||||
Jonathan Irwin
|
Jonathan Irwin
|
||||||
|
Jonny Langley
|
||||||
Julien Cristau
|
Julien Cristau
|
||||||
Juliusz Chroboczek
|
Juliusz Chroboczek
|
||||||
Jungshik Shin
|
Jungshik Shin
|
||||||
|
@ -154,6 +157,7 @@ Martin Hostettler
|
||||||
Martin Pirker
|
Martin Pirker
|
||||||
Martin Tournoij
|
Martin Tournoij
|
||||||
Matthew Green
|
Matthew Green
|
||||||
|
Matthew Martin
|
||||||
Matthias Baake
|
Matthias Baake
|
||||||
Matthias Scheler
|
Matthias Scheler
|
||||||
Matthieu Herrb
|
Matthieu Herrb
|
||||||
|
@ -193,6 +197,7 @@ Pavel Roskin
|
||||||
Peder Stray
|
Peder Stray
|
||||||
Per Hedeland
|
Per Hedeland
|
||||||
Peter Berg Larsen
|
Peter Berg Larsen
|
||||||
|
Petri Kaukasoina
|
||||||
Phil Sidler
|
Phil Sidler
|
||||||
Philipp Klaus Krause
|
Philipp Klaus Krause
|
||||||
Pierre Lombard
|
Pierre Lombard
|
||||||
|
@ -252,6 +257,7 @@ Victor Stinner
|
||||||
Victor Vaile
|
Victor Vaile
|
||||||
Vincent Lefèvre
|
Vincent Lefèvre
|
||||||
Vladimir A Pavlov
|
Vladimir A Pavlov
|
||||||
|
Waldemar Brodkorb
|
||||||
Walter Harms
|
Walter Harms
|
||||||
Werner Fink
|
Werner Fink
|
||||||
Werner Lemberg
|
Werner Lemberg
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: VTPrsTbl.c,v 1.106 2022/11/25 01:19:18 tom Exp $ */
|
/* $XTermId: VTPrsTbl.c,v 1.117 2023/12/27 22:46:08 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1999-2021,2022 by Thomas E. Dickey
|
* Copyright 1999-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -467,13 +467,13 @@ CASE_CSI_HASH_STATE,
|
||||||
/* $ % & ' */
|
/* $ % & ' */
|
||||||
CASE_CSI_DOLLAR_STATE,
|
CASE_CSI_DOLLAR_STATE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_AMP_STATE,
|
||||||
CASE_CSI_TICK_STATE,
|
CASE_CSI_TICK_STATE,
|
||||||
/* ( ) * + */
|
/* ( ) * + */
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE, /* vt525 */
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE, /* vt420 and vt520 */
|
||||||
CASE_CSI_IGNORE,
|
|
||||||
/* , - . / */
|
/* , - . / */
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
|
@ -526,8 +526,8 @@ CASE_GROUND_STATE,
|
||||||
CASE_SU,
|
CASE_SU,
|
||||||
/* T U V W */
|
/* T U V W */
|
||||||
CASE_TRACK_MOUSE,
|
CASE_TRACK_MOUSE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt420:NP */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt420:PP */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* X Y Z [ */
|
/* X Y Z [ */
|
||||||
CASE_ECH,
|
CASE_ECH,
|
||||||
|
@ -627,7 +627,7 @@ CASE_CSI_HASH_STATE,
|
||||||
/* currency yen brokenbar section */
|
/* currency yen brokenbar section */
|
||||||
CASE_CSI_DOLLAR_STATE,
|
CASE_CSI_DOLLAR_STATE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_AMP_STATE,
|
||||||
CASE_CSI_TICK_STATE,
|
CASE_CSI_TICK_STATE,
|
||||||
/* diaeresis copyright ordfeminine guillemotleft */
|
/* diaeresis copyright ordfeminine guillemotleft */
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
|
@ -791,15 +791,15 @@ CASE_CSI_HASH_STATE,
|
||||||
/* $ % & ' */
|
/* $ % & ' */
|
||||||
CASE_CSI_DOLLAR_STATE,
|
CASE_CSI_DOLLAR_STATE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_AMP_STATE,
|
||||||
CASE_CSI_TICK_STATE,
|
CASE_CSI_TICK_STATE,
|
||||||
/* ( ) * + */
|
/* ( ) * + */
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_STAR_STATE,
|
CASE_CSI_STAR_STATE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE, /* vt420 and vt520 */
|
||||||
/* , - . / */
|
/* , - . / */
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_COMMA_STATE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
|
@ -850,8 +850,8 @@ CASE_GROUND_STATE,
|
||||||
CASE_SU,
|
CASE_SU,
|
||||||
/* T U V W */
|
/* T U V W */
|
||||||
CASE_TRACK_MOUSE,
|
CASE_TRACK_MOUSE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt420:NP */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt420:PP */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* X Y Z [ */
|
/* X Y Z [ */
|
||||||
CASE_ECH,
|
CASE_ECH,
|
||||||
|
@ -901,7 +901,7 @@ CASE_GROUND_STATE,
|
||||||
/* | } ~ DEL */
|
/* | } ~ DEL */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECFNK */
|
||||||
CASE_IGNORE,
|
CASE_IGNORE,
|
||||||
/* 0x80 0x81 0x82 0x83 */
|
/* 0x80 0x81 0x82 0x83 */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
|
@ -951,7 +951,7 @@ CASE_CSI_HASH_STATE,
|
||||||
/* currency yen brokenbar section */
|
/* currency yen brokenbar section */
|
||||||
CASE_CSI_DOLLAR_STATE,
|
CASE_CSI_DOLLAR_STATE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_AMP_STATE,
|
||||||
CASE_CSI_TICK_STATE,
|
CASE_CSI_TICK_STATE,
|
||||||
/* diaeresis copyright ordfeminine guillemotleft */
|
/* diaeresis copyright ordfeminine guillemotleft */
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
|
@ -959,7 +959,7 @@ CASE_CSI_IGNORE,
|
||||||
CASE_CSI_STAR_STATE,
|
CASE_CSI_STAR_STATE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
/* notsign hyphen registered macron */
|
/* notsign hyphen registered macron */
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_COMMA_STATE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
CASE_CSI_IGNORE,
|
CASE_CSI_IGNORE,
|
||||||
|
@ -1537,10 +1537,10 @@ CASE_DECSCA,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* t u v w */
|
/* t u v w */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECSRFR */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECSTRL */
|
||||||
CASE_GROUND_STATE,
|
CASE_DECRQDE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt420:DECRPDE */
|
||||||
/* x y z { */
|
/* x y z { */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
|
@ -1699,7 +1699,7 @@ CASE_GROUND_STATE,
|
||||||
/* ocircumflex otilde odiaeresis division */
|
/* ocircumflex otilde odiaeresis division */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_DECRQDE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* oslash ugrave uacute ucircumflex */
|
/* oslash ugrave uacute ucircumflex */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
|
@ -1817,9 +1817,9 @@ CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* P Q R S */
|
/* P Q R S */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:PPA */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt420:PPR */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:PPB */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* T U V W */
|
/* T U V W */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
|
@ -1857,14 +1857,14 @@ CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* p q r s */
|
/* p q r s */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECSSCLS */
|
||||||
CASE_DECSCUSR,
|
CASE_DECSCUSR,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECSKCV */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* t u v w */
|
/* t u v w */
|
||||||
CASE_DECSWBV,
|
CASE_DECSWBV,
|
||||||
CASE_DECSMBV,
|
CASE_DECSMBV,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECSLCK */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* x y z { */
|
/* x y z { */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
|
@ -1873,8 +1873,8 @@ CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* | } ~ DEL */
|
/* | } ~ DEL */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECKBD */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECTME */
|
||||||
CASE_IGNORE,
|
CASE_IGNORE,
|
||||||
/* 0x80 0x81 0x82 0x83 */
|
/* 0x80 0x81 0x82 0x83 */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
|
@ -2689,6 +2689,330 @@ CASE_GROUND_STATE,
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Const PARSE_T csi_amp_table[] = /* CSI ... & */
|
||||||
|
{
|
||||||
|
/* NUL SOH STX ETX */
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
/* EOT ENQ ACK BEL */
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_ENQ,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_BELL,
|
||||||
|
/* BS HT NL VT */
|
||||||
|
CASE_BS,
|
||||||
|
CASE_TAB,
|
||||||
|
CASE_VMOT,
|
||||||
|
CASE_VMOT,
|
||||||
|
/* FF CR SO SI */
|
||||||
|
CASE_VMOT,
|
||||||
|
CASE_CR,
|
||||||
|
CASE_SO,
|
||||||
|
CASE_SI,
|
||||||
|
/* DLE DC1 DC2 DC3 */
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
/* DC4 NAK SYN ETB */
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
/* CAN EM SUB ESC */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_ESC,
|
||||||
|
/* FS GS RS US */
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
/* SP ! " # */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* $ % & ' */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* ( ) * + */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* , - . / */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* 0 1 2 3 */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* 4 5 6 7 */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* 8 9 : ; */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* < = > ? */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* @ A B C */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* D E F G */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* H I J K */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* L M N O */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* P Q R S */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* T U V W */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* X Y Z [ */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* \ ] ^ _ */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* ` a b c */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* d e f g */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* h i j k */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* l m n o */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* p q r s */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* t u v w */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_DECRQUPSS,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* x y z { */
|
||||||
|
CASE_GROUND_STATE, /* vt420:Enable Session */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* | } ~ DEL */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
/* 0x80 0x81 0x82 0x83 */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* 0x84 0x85 0x86 0x87 */
|
||||||
|
CASE_IND,
|
||||||
|
CASE_NEL,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* 0x88 0x89 0x8a 0x8b */
|
||||||
|
CASE_HTS,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* 0x8c 0x8d 0x8e 0x8f */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_RI,
|
||||||
|
CASE_SS2,
|
||||||
|
CASE_SS3,
|
||||||
|
/* 0x90 0x91 0x92 0x93 */
|
||||||
|
CASE_DCS,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* 0x94 0x95 0x96 0x97 */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_SPA,
|
||||||
|
CASE_EPA,
|
||||||
|
/* 0x98 0x99 0x9a 0x9b */
|
||||||
|
CASE_SOS,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_DECID,
|
||||||
|
CASE_CSI_STATE,
|
||||||
|
/* 0x9c 0x9d 0x9e 0x9f */
|
||||||
|
CASE_ST,
|
||||||
|
CASE_OSC,
|
||||||
|
CASE_PM,
|
||||||
|
CASE_APC,
|
||||||
|
/* nobreakspace exclamdown cent sterling */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* currency yen brokenbar section */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* diaeresis copyright ordfeminine guillemotleft */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* notsign hyphen registered macron */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* degree plusminus twosuperior threesuperior */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* acute mu paragraph periodcentered */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* cedilla onesuperior masculine guillemotright */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* onequarter onehalf threequarters questiondown */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* Agrave Aacute Acircumflex Atilde */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Adiaeresis Aring AE Ccedilla */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Egrave Eacute Ecircumflex Ediaeresis */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Igrave Iacute Icircumflex Idiaeresis */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Eth Ntilde Ograve Oacute */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Ocircumflex Otilde Odiaeresis multiply */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Ooblique Ugrave Uacute Ucircumflex */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Udiaeresis Yacute Thorn ssharp */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* agrave aacute acircumflex atilde */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* adiaeresis aring ae ccedilla */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* egrave eacute ecircumflex ediaeresis */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* igrave iacute icircumflex idiaeresis */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* eth ntilde ograve oacute */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* ocircumflex otilde odiaeresis division */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_DECRQUPSS,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* oslash ugrave uacute ucircumflex */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* udiaeresis yacute thorn ydiaeresis */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
};
|
||||||
|
|
||||||
#if OPT_DEC_RECTOPS
|
#if OPT_DEC_RECTOPS
|
||||||
Const PARSE_T csi_dollar_table[] = /* CSI ... $ */
|
Const PARSE_T csi_dollar_table[] = /* CSI ... $ */
|
||||||
{
|
{
|
||||||
|
@ -2839,12 +3163,12 @@ CASE_DECCARA,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* t u v w */
|
/* t u v w */
|
||||||
CASE_DECRARA,
|
CASE_DECRARA,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt420:DECRQTSR */
|
||||||
CASE_DECCRA,
|
CASE_DECCRA,
|
||||||
CASE_DECRQPSR,
|
CASE_DECRQPSR,
|
||||||
/* x y z { */
|
/* x y z { */
|
||||||
CASE_DECFRA,
|
CASE_DECFRA,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt420:DECRPM */
|
||||||
CASE_DECERA,
|
CASE_DECERA,
|
||||||
CASE_DECSERA,
|
CASE_DECSERA,
|
||||||
/* | } ~ DEL */
|
/* | } ~ DEL */
|
||||||
|
@ -3157,23 +3481,23 @@ CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* p q r s */
|
/* p q r s */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECSPPCS */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt420:DECSRC */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECSCS */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECSFC */
|
||||||
/* t u v w */
|
/* t u v w */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt510:DECSCP */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* x y z { */
|
/* x y z { */
|
||||||
CASE_DECSACE,
|
CASE_DECSACE,
|
||||||
CASE_DECRQCRA,
|
CASE_DECRQCRA,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt420:DECINVM */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
/* | } ~ DEL */
|
/* | } ~ DEL */
|
||||||
CASE_DECSNLS,
|
CASE_DECSNLS,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE, /* vt420:DECLFKC */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_IGNORE,
|
CASE_IGNORE,
|
||||||
/* 0x80 0x81 0x82 0x83 */
|
/* 0x80 0x81 0x82 0x83 */
|
||||||
|
@ -3339,6 +3663,332 @@ CASE_GROUND_STATE,
|
||||||
};
|
};
|
||||||
#endif /* OPT_DEC_RECTOPS */
|
#endif /* OPT_DEC_RECTOPS */
|
||||||
|
|
||||||
|
#if OPT_VT525_COLORS
|
||||||
|
Const PARSE_T csi_comma_table[] = /* CSI ... , */
|
||||||
|
{
|
||||||
|
/* NUL SOH STX ETX */
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
/* EOT ENQ ACK BEL */
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_ENQ,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_BELL,
|
||||||
|
/* BS HT NL VT */
|
||||||
|
CASE_BS,
|
||||||
|
CASE_TAB,
|
||||||
|
CASE_VMOT,
|
||||||
|
CASE_VMOT,
|
||||||
|
/* FF CR SO SI */
|
||||||
|
CASE_VMOT,
|
||||||
|
CASE_CR,
|
||||||
|
CASE_SO,
|
||||||
|
CASE_SI,
|
||||||
|
/* DLE DC1 DC2 DC3 */
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
/* DC4 NAK SYN ETB */
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
/* CAN EM SUB ESC */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_ESC,
|
||||||
|
/* FS GS RS US */
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
CASE_IGNORE,
|
||||||
|
/* SP ! " # */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* $ % & ' */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* ( ) * + */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* , - . / */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* 0 1 2 3 */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* 4 5 6 7 */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* 8 9 : ; */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* < = > ? */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* @ A B C */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* D E F G */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* H I J K */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* L M N O */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* P Q R S */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* T U V W */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* X Y Z [ */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* \ ] ^ _ */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* ` a b c */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* d e f g */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* h i j k */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* l m n o */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* p q r s */
|
||||||
|
CASE_GROUND_STATE, /* vt520:DECLTOD */
|
||||||
|
CASE_DECTID,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* t u v w */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE, /* vt520:DECRQKT */
|
||||||
|
CASE_GROUND_STATE, /* vt520:DECRPKT */
|
||||||
|
CASE_GROUND_STATE, /* vt520:DECRQKD */
|
||||||
|
/* x y z { */
|
||||||
|
CASE_GROUND_STATE, /* vt520:DECSPMA */
|
||||||
|
CASE_GROUND_STATE, /* vt520:DECUS */
|
||||||
|
CASE_GROUND_STATE, /* vt520:DECDLDA */
|
||||||
|
CASE_GROUND_STATE, /* vt520:DECSZS */
|
||||||
|
/* | } ~ DEL */
|
||||||
|
CASE_DECAC,
|
||||||
|
CASE_DECATC,
|
||||||
|
CASE_GROUND_STATE, /* vt520:DECPS */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* 0x80 0x81 0x82 0x83 */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* 0x84 0x85 0x86 0x87 */
|
||||||
|
CASE_IND,
|
||||||
|
CASE_NEL,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* 0x88 0x89 0x8a 0x8b */
|
||||||
|
CASE_HTS,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* 0x8c 0x8d 0x8e 0x8f */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_RI,
|
||||||
|
CASE_SS2,
|
||||||
|
CASE_SS3,
|
||||||
|
/* 0x90 0x91 0x92 0x93 */
|
||||||
|
CASE_DCS,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* 0x94 0x95 0x96 0x97 */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_SPA,
|
||||||
|
CASE_EPA,
|
||||||
|
/* 0x98 0x99 0x9a 0x9b */
|
||||||
|
CASE_SOS,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_DECID,
|
||||||
|
CASE_CSI_STATE,
|
||||||
|
/* 0x9c 0x9d 0x9e 0x9f */
|
||||||
|
CASE_ST,
|
||||||
|
CASE_OSC,
|
||||||
|
CASE_PM,
|
||||||
|
CASE_APC,
|
||||||
|
/* nobreakspace exclamdown cent sterling */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* currency yen brokenbar section */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* diaeresis copyright ordfeminine guillemotleft */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* notsign hyphen registered macron */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* degree plusminus twosuperior threesuperior */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* acute mu paragraph periodcentered */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* cedilla onesuperior masculine guillemotright */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* onequarter onehalf threequarters questiondown */
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
CASE_CSI_IGNORE,
|
||||||
|
/* Agrave Aacute Acircumflex Atilde */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Adiaeresis Aring AE Ccedilla */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Egrave Eacute Ecircumflex Ediaeresis */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Igrave Iacute Icircumflex Idiaeresis */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Eth Ntilde Ograve Oacute */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Ocircumflex Otilde Odiaeresis multiply */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Ooblique Ugrave Uacute Ucircumflex */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* Udiaeresis Yacute Thorn ssharp */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* agrave aacute acircumflex atilde */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* adiaeresis aring ae ccedilla */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* egrave eacute ecircumflex ediaeresis */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* igrave iacute icircumflex idiaeresis */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* eth ntilde ograve oacute */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_DECTID,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* ocircumflex otilde odiaeresis division */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* oslash ugrave uacute ucircumflex */
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
/* udiaeresis yacute thorn ydiaeresis */
|
||||||
|
CASE_DECAC,
|
||||||
|
CASE_DECATC,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
CASE_GROUND_STATE,
|
||||||
|
};
|
||||||
|
#endif /* OPT_VT525_COLORS */
|
||||||
|
|
||||||
Const PARSE_T dec_table[] = /* CSI ? */
|
Const PARSE_T dec_table[] = /* CSI ? */
|
||||||
{
|
{
|
||||||
/* NUL SOH STX ETX */
|
/* NUL SOH STX ETX */
|
||||||
|
@ -3450,7 +4100,7 @@ CASE_GRAPHICS_ATTRIBUTES,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_DECST8C,
|
||||||
/* X Y Z [ */
|
/* X Y Z [ */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
|
@ -3610,7 +4260,7 @@ CASE_GRAPHICS_ATTRIBUTES,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_DECST8C,
|
||||||
/* Ooblique Ugrave Uacute Ucircumflex */
|
/* Ooblique Ugrave Uacute Ucircumflex */
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
CASE_GROUND_STATE,
|
CASE_GROUND_STATE,
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
# $XTermId: VTparse.def,v 1.66 2022/11/24 13:58:46 tom Exp $
|
# $XTermId: VTparse.def,v 1.72 2023/12/27 22:45:19 tom Exp $
|
||||||
#
|
#
|
||||||
# vile:confmode rs=lf
|
# vile:confmode rs=lf
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# this file is part of xterm
|
# this file is part of xterm
|
||||||
#
|
#
|
||||||
# Copyright 1996-2021,2022 by Thomas E. Dickey
|
# Copyright 1996-2022,2023 by Thomas E. Dickey
|
||||||
#
|
#
|
||||||
# All Rights Reserved
|
# All Rights Reserved
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
@ -221,3 +221,11 @@ CASE_XTERM_SHIFT_ESCAPE # XTSHIFTESCAPE
|
||||||
CASE_DECSSDT
|
CASE_DECSSDT
|
||||||
CASE_DECSASD
|
CASE_DECSASD
|
||||||
CASE_XTERM_REPORT_MOD_FKEYS # XTQMODKEYS
|
CASE_XTERM_REPORT_MOD_FKEYS # XTQMODKEYS
|
||||||
|
CASE_DECRQDE
|
||||||
|
CASE_DECRQUPSS
|
||||||
|
CASE_CSI_AMP_STATE
|
||||||
|
CASE_CSI_COMMA_STATE
|
||||||
|
CASE_DECAC
|
||||||
|
CASE_DECATC
|
||||||
|
CASE_DECTID
|
||||||
|
CASE_DECST8C
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: VTparse.h,v 1.69 2019/02/10 23:34:21 tom Exp $ */
|
/* $XTermId: VTparse.h,v 1.72 2023/11/24 13:18:38 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1996-2018,2019 by Thomas E. Dickey
|
* Copyright 1996-2019,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -51,10 +51,13 @@ typedef unsigned char PARSE_T;
|
||||||
extern Const PARSE_T ansi_table[];
|
extern Const PARSE_T ansi_table[];
|
||||||
extern Const PARSE_T cigtable[];
|
extern Const PARSE_T cigtable[];
|
||||||
extern Const PARSE_T csi2_table[];
|
extern Const PARSE_T csi2_table[];
|
||||||
|
extern Const PARSE_T csi_amp_table[];
|
||||||
|
extern Const PARSE_T csi_dec_dollar_table[];
|
||||||
extern Const PARSE_T csi_ex_table[];
|
extern Const PARSE_T csi_ex_table[];
|
||||||
extern Const PARSE_T csi_quo_table[];
|
extern Const PARSE_T csi_quo_table[];
|
||||||
extern Const PARSE_T csi_sp_table[];
|
extern Const PARSE_T csi_sp_table[];
|
||||||
extern Const PARSE_T csi_table[];
|
extern Const PARSE_T csi_table[];
|
||||||
|
extern Const PARSE_T csi_tick_table[];
|
||||||
extern Const PARSE_T dec2_table[];
|
extern Const PARSE_T dec2_table[];
|
||||||
extern Const PARSE_T dec3_table[];
|
extern Const PARSE_T dec3_table[];
|
||||||
extern Const PARSE_T dec_table[];
|
extern Const PARSE_T dec_table[];
|
||||||
|
@ -65,8 +68,6 @@ extern Const PARSE_T scrtable[];
|
||||||
extern Const PARSE_T scs96table[];
|
extern Const PARSE_T scs96table[];
|
||||||
extern Const PARSE_T scstable[];
|
extern Const PARSE_T scstable[];
|
||||||
extern Const PARSE_T sos_table[];
|
extern Const PARSE_T sos_table[];
|
||||||
extern Const PARSE_T csi_dec_dollar_table[];
|
|
||||||
extern Const PARSE_T csi_tick_table[];
|
|
||||||
|
|
||||||
#if OPT_DEC_RECTOPS
|
#if OPT_DEC_RECTOPS
|
||||||
extern Const PARSE_T csi_dollar_table[];
|
extern Const PARSE_T csi_dollar_table[];
|
||||||
|
@ -79,6 +80,10 @@ extern Const PARSE_T vt52_esc_table[];
|
||||||
extern Const PARSE_T vt52_ignore_table[];
|
extern Const PARSE_T vt52_ignore_table[];
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if OPT_VT525_COLORS
|
||||||
|
extern Const PARSE_T csi_comma_table[];
|
||||||
|
#endif
|
||||||
|
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
extern Const PARSE_T esc_pct_table[];
|
extern Const PARSE_T esc_pct_table[];
|
||||||
extern Const PARSE_T scs_amp_table[];
|
extern Const PARSE_T scs_amp_table[];
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: button.c,v 1.646 2022/11/25 00:26:32 tom Exp $ */
|
/* $XTermId: button.c,v 1.663 2024/04/19 07:42:00 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1999-2021,2022 by Thomas E. Dickey
|
* Copyright 1999-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -77,6 +77,7 @@ button.c Handles button events in the terminal emulator.
|
||||||
#include <menu.h>
|
#include <menu.h>
|
||||||
#include <charclass.h>
|
#include <charclass.h>
|
||||||
#include <xstrings.h>
|
#include <xstrings.h>
|
||||||
|
#include <xterm_io.h>
|
||||||
|
|
||||||
#if OPT_SELECT_REGEX
|
#if OPT_SELECT_REGEX
|
||||||
#if defined(HAVE_PCRE2POSIX_H)
|
#if defined(HAVE_PCRE2POSIX_H)
|
||||||
|
@ -1302,8 +1303,9 @@ eventColBetween(TScreen *screen, XEvent *event) /* must be XButtonEvent */
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
ReadLineMovePoint(TScreen *screen, int col, int ldelta)
|
ReadLineMovePoint(XtermWidget xw, int col, int ldelta)
|
||||||
{
|
{
|
||||||
|
TScreen *screen = TScreenOf(xw);
|
||||||
Char line[6];
|
Char line[6];
|
||||||
unsigned count = 0;
|
unsigned count = 0;
|
||||||
|
|
||||||
|
@ -1314,13 +1316,13 @@ ReadLineMovePoint(TScreen *screen, int col, int ldelta)
|
||||||
line[count++] = ANSI_CSI;
|
line[count++] = ANSI_CSI;
|
||||||
} else {
|
} else {
|
||||||
line[count++] = ANSI_ESC;
|
line[count++] = ANSI_ESC;
|
||||||
line[count++] = '['; /* XXX maybe sometimes O is better? */
|
line[count++] = (xw->keyboard.flags & MODE_DECCKM) ? 'O' : '[';
|
||||||
}
|
}
|
||||||
line[count] = CharOf(col > 0 ? 'C' : 'D');
|
line[count] = CharOf(col > 0 ? 'C' : 'D');
|
||||||
if (col < 0)
|
if (col < 0)
|
||||||
col = -col;
|
col = -col;
|
||||||
while (col--)
|
while (col--)
|
||||||
v_write(screen->respond, line, 3);
|
v_write(screen->respond, line, (size_t) 3);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1328,12 +1330,16 @@ static int
|
||||||
ReadLineDelete(TScreen *screen, CELL *cell1, CELL *cell2)
|
ReadLineDelete(TScreen *screen, CELL *cell1, CELL *cell2)
|
||||||
{
|
{
|
||||||
int del;
|
int del;
|
||||||
|
Char erases[2];
|
||||||
|
|
||||||
|
erases[0] = (Char) get_tty_erase(screen->respond, XTERM_ERASE, "pty");
|
||||||
|
erases[1] = 0;
|
||||||
|
|
||||||
del = (cell2->col - cell1->col) + ((cell2->row - cell1->row) * MaxCols(screen));
|
del = (cell2->col - cell1->col) + ((cell2->row - cell1->row) * MaxCols(screen));
|
||||||
if (del <= 0) /* Just in case... */
|
if (del <= 0) /* Just in case... */
|
||||||
return 0;
|
return 0;
|
||||||
while (del--)
|
while (del--)
|
||||||
v_write(screen->respond, (const Char *) "\177", 1);
|
v_write(screen->respond, erases, (size_t) 1);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1348,13 +1354,13 @@ readlineExtend(XtermWidget xw, XEvent *event)
|
||||||
if (isClick1_clean(xw, my_event)
|
if (isClick1_clean(xw, my_event)
|
||||||
&& SCREEN_FLAG(screen, click1_moves)
|
&& SCREEN_FLAG(screen, click1_moves)
|
||||||
&& rowOnCurrentLine(screen, eventRow(screen, event), &ldelta1)) {
|
&& rowOnCurrentLine(screen, eventRow(screen, event), &ldelta1)) {
|
||||||
ReadLineMovePoint(screen, eventColBetween(screen, event), ldelta1);
|
ReadLineMovePoint(xw, eventColBetween(screen, event), ldelta1);
|
||||||
}
|
}
|
||||||
if (isDoubleClick3(xw, screen, my_event)
|
if (isDoubleClick3(xw, screen, my_event)
|
||||||
&& SCREEN_FLAG(screen, dclick3_deletes)
|
&& SCREEN_FLAG(screen, dclick3_deletes)
|
||||||
&& rowOnCurrentLine(screen, screen->startSel.row, &ldelta1)
|
&& rowOnCurrentLine(screen, screen->startSel.row, &ldelta1)
|
||||||
&& rowOnCurrentLine(screen, screen->endSel.row, &ldelta2)) {
|
&& rowOnCurrentLine(screen, screen->endSel.row, &ldelta2)) {
|
||||||
ReadLineMovePoint(screen, screen->endSel.col, ldelta2);
|
ReadLineMovePoint(xw, screen->endSel.col, ldelta2);
|
||||||
ReadLineDelete(screen, &screen->startSel, &(screen->endSel));
|
ReadLineDelete(screen, &screen->startSel, &(screen->endSel));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1388,7 +1394,7 @@ DiredButton(Widget w,
|
||||||
Line[2] = 'G';
|
Line[2] = 'G';
|
||||||
Line[3] = CharOf(' ' + col);
|
Line[3] = CharOf(' ' + col);
|
||||||
Line[4] = CharOf(' ' + line);
|
Line[4] = CharOf(' ' + line);
|
||||||
v_write(screen->respond, Line, 5);
|
v_write(screen->respond, Line, (size_t) 5);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1436,13 +1442,12 @@ ReadLineButton(Widget w,
|
||||||
if (col == 0)
|
if (col == 0)
|
||||||
goto finish;
|
goto finish;
|
||||||
Line[0] = ANSI_ESC;
|
Line[0] = ANSI_ESC;
|
||||||
/* XXX: sometimes it is better to send '['? */
|
Line[1] = (xw->keyboard.flags & MODE_DECCKM) ? 'O' : '[';
|
||||||
Line[1] = 'O';
|
|
||||||
Line[2] = CharOf(col > 0 ? 'C' : 'D');
|
Line[2] = CharOf(col > 0 ? 'C' : 'D');
|
||||||
if (col < 0)
|
if (col < 0)
|
||||||
col = -col;
|
col = -col;
|
||||||
while (col--)
|
while (col--)
|
||||||
v_write(screen->respond, Line, 3);
|
v_write(screen->respond, Line, (size_t) 3);
|
||||||
finish:
|
finish:
|
||||||
if (event->type == ButtonRelease)
|
if (event->type == ButtonRelease)
|
||||||
do_select_end(xw, event, params, num_params, False);
|
do_select_end(xw, event, params, num_params, False);
|
||||||
|
@ -1473,7 +1478,7 @@ ViButton(Widget w,
|
||||||
Char Line[6];
|
Char Line[6];
|
||||||
|
|
||||||
Line[0] = ANSI_ESC; /* force an exit from insert-mode */
|
Line[0] = ANSI_ESC; /* force an exit from insert-mode */
|
||||||
v_write(pty, Line, 1);
|
v_write(pty, Line, (size_t) 1);
|
||||||
|
|
||||||
if (line < 0) {
|
if (line < 0) {
|
||||||
line = -line;
|
line = -line;
|
||||||
|
@ -1482,7 +1487,7 @@ ViButton(Widget w,
|
||||||
Line[0] = CONTROL('p');
|
Line[0] = CONTROL('p');
|
||||||
}
|
}
|
||||||
while (--line >= 0)
|
while (--line >= 0)
|
||||||
v_write(pty, Line, 1);
|
v_write(pty, Line, (size_t) 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1665,6 +1670,8 @@ DECtoASCII(unsigned ch)
|
||||||
if (xtermIsDecGraphic(ch)) {
|
if (xtermIsDecGraphic(ch)) {
|
||||||
ch = CharOf("###########+++++##-##++++|######"[ch]);
|
ch = CharOf("###########+++++##-##++++|######"[ch]);
|
||||||
/* 01234567890123456789012345678901 */
|
/* 01234567890123456789012345678901 */
|
||||||
|
} else {
|
||||||
|
ch = '?'; /* DEC Technical has no mapping */
|
||||||
}
|
}
|
||||||
return ch;
|
return ch;
|
||||||
}
|
}
|
||||||
|
@ -1697,20 +1704,22 @@ UTF8toLatin1(TScreen *screen, Char *s, unsigned long len, unsigned long *result)
|
||||||
|
|
||||||
if (len != 0) {
|
if (len != 0) {
|
||||||
PtyData data;
|
PtyData data;
|
||||||
|
Boolean save_vt100 = screen->vt100_graphics;
|
||||||
|
|
||||||
fakePtyData(&data, s, s + len);
|
fakePtyData(&data, s, s + len);
|
||||||
|
screen->vt100_graphics = False; /* temporary override */
|
||||||
while (decodeUtf8(screen, &data)) {
|
while (decodeUtf8(screen, &data)) {
|
||||||
Bool fails = False;
|
Bool fails = False;
|
||||||
Bool extra = False;
|
Bool extra = False;
|
||||||
IChar value;
|
IChar value;
|
||||||
skipPtyData(&data, value);
|
skipPtyData(&data, value);
|
||||||
if (value == UCS_REPL) {
|
if (is_UCS_SPECIAL(value)) {
|
||||||
fails = True;
|
fails = True;
|
||||||
} else if (value < 256) {
|
} else if (value < 256) {
|
||||||
AddChar(&buffer, &used, offset, CharOf(value));
|
AddChar(&buffer, &used, offset, CharOf(value));
|
||||||
} else {
|
} else {
|
||||||
unsigned eqv = ucs2dec(screen, value);
|
unsigned eqv = ucs2dec(screen, value);
|
||||||
if (xtermIsDecGraphic(eqv)) {
|
if (xtermIsInternalCs(eqv)) {
|
||||||
AddChar(&buffer, &used, offset, DECtoASCII(eqv));
|
AddChar(&buffer, &used, offset, DECtoASCII(eqv));
|
||||||
} else {
|
} else {
|
||||||
eqv = AsciiEquivs(value);
|
eqv = AsciiEquivs(value);
|
||||||
|
@ -1740,6 +1749,7 @@ UTF8toLatin1(TScreen *screen, Char *s, unsigned long len, unsigned long *result)
|
||||||
AddChar(&buffer, &used, offset, ' ');
|
AddChar(&buffer, &used, offset, ' ');
|
||||||
}
|
}
|
||||||
AddChar(&buffer, &used, offset, '\0');
|
AddChar(&buffer, &used, offset, '\0');
|
||||||
|
screen->vt100_graphics = save_vt100;
|
||||||
*result = (unsigned long) (offset - 1);
|
*result = (unsigned long) (offset - 1);
|
||||||
} else {
|
} else {
|
||||||
*result = 0;
|
*result = 0;
|
||||||
|
@ -2278,7 +2288,7 @@ GettingSelection(Display *dpy, Atom type, Char *line, unsigned long len)
|
||||||
#ifdef VMS
|
#ifdef VMS
|
||||||
# define tty_vwrite(pty,lag,l) tt_write(lag,l)
|
# define tty_vwrite(pty,lag,l) tt_write(lag,l)
|
||||||
#else /* !( VMS ) */
|
#else /* !( VMS ) */
|
||||||
# define tty_vwrite(pty,lag,l) v_write(pty,lag,l)
|
# define tty_vwrite(pty,lag,l) v_write(pty,lag,(size_t) l)
|
||||||
#endif /* defined VMS */
|
#endif /* defined VMS */
|
||||||
|
|
||||||
#if OPT_PASTE64
|
#if OPT_PASTE64
|
||||||
|
@ -2454,14 +2464,18 @@ _qWriteSelectionData(XtermWidget xw, Char *lag, size_t length)
|
||||||
#endif /* OPT_PASTE64 */
|
#endif /* OPT_PASTE64 */
|
||||||
#if OPT_READLINE
|
#if OPT_READLINE
|
||||||
if (SCREEN_FLAG(screen, paste_quotes)) {
|
if (SCREEN_FLAG(screen, paste_quotes)) {
|
||||||
|
Char quote[2];
|
||||||
|
quote[0] = (Char) get_tty_lnext(screen->respond, XTERM_LNEXT, "pty");
|
||||||
|
quote[1] = 0;
|
||||||
|
TRACE(("writing quoted selection data %s\n", visibleChars(lag, length)));
|
||||||
while (length--) {
|
while (length--) {
|
||||||
tty_vwrite(screen->respond, (const Char *) "\026", 1); /* Control-V */
|
tty_vwrite(screen->respond, quote, 1);
|
||||||
tty_vwrite(screen->respond, lag++, 1);
|
tty_vwrite(screen->respond, lag++, 1);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
TRACE(("writing base64 padding %s\n", visibleChars(lag, length)));
|
TRACE(("writing selection data %s\n", visibleChars(lag, length)));
|
||||||
tty_vwrite(screen->respond, lag, length);
|
tty_vwrite(screen->respond, lag, length);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2469,14 +2483,9 @@ _qWriteSelectionData(XtermWidget xw, Char *lag, size_t length)
|
||||||
static void
|
static void
|
||||||
_WriteSelectionData(XtermWidget xw, Char *line, size_t length)
|
_WriteSelectionData(XtermWidget xw, Char *line, size_t length)
|
||||||
{
|
{
|
||||||
/* Write data to pty a line at a time. */
|
#if OPT_PASTE64 || OPT_READLINE
|
||||||
/* Doing this one line at a time may no longer be necessary
|
|
||||||
because v_write has been re-written. */
|
|
||||||
|
|
||||||
#if OPT_PASTE64
|
|
||||||
TScreen *screen = TScreenOf(xw);
|
TScreen *screen = TScreenOf(xw);
|
||||||
#endif
|
#endif
|
||||||
Char *lag, *end;
|
|
||||||
|
|
||||||
/* in the VMS version, if tt_pasting isn't set to True then qio
|
/* in the VMS version, if tt_pasting isn't set to True then qio
|
||||||
reads aren't blocked and an infinite loop is entered, where the
|
reads aren't blocked and an infinite loop is entered, where the
|
||||||
|
@ -2486,30 +2495,23 @@ _WriteSelectionData(XtermWidget xw, Char *line, size_t length)
|
||||||
tt_pasting = True;
|
tt_pasting = True;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
end = &line[length];
|
|
||||||
lag = line;
|
|
||||||
|
|
||||||
#if OPT_PASTE64
|
#if OPT_PASTE64
|
||||||
if (screen->base64_paste) {
|
if (screen->base64_paste) {
|
||||||
_qWriteSelectionData(xw, lag, (size_t) (end - lag));
|
_qWriteSelectionData(xw, line, length);
|
||||||
base64_flush(screen);
|
base64_flush(screen);
|
||||||
} else
|
} else
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
if (!SCREEN_FLAG(screen, paste_literal_nl)) {
|
if (!SCREEN_FLAG(screen, paste_literal_nl)) {
|
||||||
Char *cp;
|
size_t n;
|
||||||
for (cp = line; cp != end; cp++) {
|
for (n = 0; n < length; ++n) {
|
||||||
if (*cp == '\n') {
|
if (line[n] == '\n') {
|
||||||
*cp = '\r';
|
line[n] = '\r';
|
||||||
_qWriteSelectionData(xw, lag, (size_t) (cp - lag + 1));
|
|
||||||
lag = cp + 1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (lag != end) {
|
_qWriteSelectionData(xw, line, length);
|
||||||
_qWriteSelectionData(xw, lag, (size_t) (end - lag));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
#ifdef VMS
|
#ifdef VMS
|
||||||
tt_pasting = False;
|
tt_pasting = False;
|
||||||
|
@ -2551,11 +2553,82 @@ removeControls(XtermWidget xw, char *value)
|
||||||
dst = strlen(value);
|
dst = strlen(value);
|
||||||
} else {
|
} else {
|
||||||
size_t src = 0;
|
size_t src = 0;
|
||||||
|
Boolean *disallowed = screen->disallow_paste_ops;
|
||||||
|
TERMIO_STRUCT data;
|
||||||
|
char current_chars[epLAST];
|
||||||
|
|
||||||
|
if (disallowed[epSTTY] && ttyGetAttr(screen->respond, &data) == 0) {
|
||||||
|
int n;
|
||||||
|
int disabled = xtermDisabledChar();
|
||||||
|
|
||||||
|
TRACE(("disallow(STTY):"));
|
||||||
|
memcpy(current_chars, disallowed, sizeof(current_chars));
|
||||||
|
|
||||||
|
for (n = 0; n < NCCS; ++n) {
|
||||||
|
PasteControls nc = (data.c_cc[n] < 32
|
||||||
|
? data.c_cc[n]
|
||||||
|
: (data.c_cc[n] == 127
|
||||||
|
? epDEL
|
||||||
|
: epLAST));
|
||||||
|
if (nc == epNUL || nc == epLAST)
|
||||||
|
continue;
|
||||||
|
if (CharOf(data.c_cc[n]) == CharOf(disabled))
|
||||||
|
continue;
|
||||||
|
if ((n == VMIN || n == VTIME) && !(data.c_lflag & ICANON))
|
||||||
|
continue;
|
||||||
|
switch (n) {
|
||||||
|
/* POSIX */
|
||||||
|
case VEOF:
|
||||||
|
case VEOL:
|
||||||
|
case VERASE:
|
||||||
|
case VINTR:
|
||||||
|
case VKILL:
|
||||||
|
case VQUIT:
|
||||||
|
case VSTART:
|
||||||
|
case VSTOP:
|
||||||
|
case VSUSP:
|
||||||
|
/* system-dependent */
|
||||||
|
#ifdef VDISCARD
|
||||||
|
case VDISCARD:
|
||||||
|
#endif
|
||||||
|
#ifdef VDSUSP
|
||||||
|
case VDSUSP:
|
||||||
|
#endif
|
||||||
|
#ifdef VEOL2
|
||||||
|
case VEOL2:
|
||||||
|
#endif
|
||||||
|
#ifdef VLNEXT
|
||||||
|
case VLNEXT:
|
||||||
|
#endif
|
||||||
|
#ifdef VREPRINT
|
||||||
|
case VREPRINT:
|
||||||
|
#endif
|
||||||
|
#ifdef VSTATUS
|
||||||
|
case VSTATUS:
|
||||||
|
#endif
|
||||||
|
#ifdef VSWTC
|
||||||
|
case VSWTC: /* System V SWTCH */
|
||||||
|
#endif
|
||||||
|
#ifdef VWERASE
|
||||||
|
case VWERASE:
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if (nc != epLAST) {
|
||||||
|
TRACE((" \\%03o", data.c_cc[n]));
|
||||||
|
current_chars[nc] = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TRACE(("\n"));
|
||||||
|
disallowed = current_chars;
|
||||||
|
}
|
||||||
while ((value[dst] = value[src]) != '\0') {
|
while ((value[dst] = value[src]) != '\0') {
|
||||||
int ch = CharOf(value[src++]);
|
int ch = CharOf(value[src++]);
|
||||||
|
|
||||||
#define ReplacePaste(n) \
|
#define ReplacePaste(n) \
|
||||||
if (screen->disallow_paste_ops[n]) \
|
if (disallowed[n]) \
|
||||||
value[dst] = ' '
|
value[dst] = ' '
|
||||||
|
|
||||||
if (ch < 32) {
|
if (ch < 32) {
|
||||||
|
@ -2826,7 +2899,7 @@ HandleInsertSelection(Widget w,
|
||||||
&& (okSendMousePos(xw) == MOUSE_OFF)
|
&& (okSendMousePos(xw) == MOUSE_OFF)
|
||||||
&& SCREEN_FLAG(screen, paste_moves)
|
&& SCREEN_FLAG(screen, paste_moves)
|
||||||
&& rowOnCurrentLine(screen, eventRow(screen, event), &ldelta))
|
&& rowOnCurrentLine(screen, eventRow(screen, event), &ldelta))
|
||||||
ReadLineMovePoint(screen, eventColBetween(screen, event), ldelta);
|
ReadLineMovePoint(xw, eventColBetween(screen, event), ldelta);
|
||||||
#endif /* OPT_READLINE */
|
#endif /* OPT_READLINE */
|
||||||
|
|
||||||
xtermGetSelection(w, event->xbutton.time, params, *num_params, NULL);
|
xtermGetSelection(w, event->xbutton.time, params, *num_params, NULL);
|
||||||
|
@ -3101,7 +3174,7 @@ EndExtend(XtermWidget xw,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
v_write(screen->respond, line, count);
|
v_write(screen->respond, line, (size_t) count);
|
||||||
UnHiliteText(xw);
|
UnHiliteText(xw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3932,6 +4005,7 @@ do_select_regex(TScreen *screen, CELL *startc, CELL *endc)
|
||||||
indexed)) != 0) {
|
indexed)) != 0) {
|
||||||
int len = (int) strlen(search);
|
int len = (int) strlen(search);
|
||||||
int col;
|
int col;
|
||||||
|
int offset;
|
||||||
int best_col = -1;
|
int best_col = -1;
|
||||||
int best_len = -1;
|
int best_len = -1;
|
||||||
|
|
||||||
|
@ -3940,12 +4014,13 @@ do_select_regex(TScreen *screen, CELL *startc, CELL *endc)
|
||||||
endc->row = 0;
|
endc->row = 0;
|
||||||
endc->col = 0;
|
endc->col = 0;
|
||||||
|
|
||||||
for (col = 0; indexed[col] < len; ++col) {
|
for (col = 0; (offset = indexed[col]) < len; ++col) {
|
||||||
if (regexec(&preg,
|
if (regexec(&preg,
|
||||||
search + indexed[col],
|
search + offset,
|
||||||
(size_t) 1, &match, 0) == 0) {
|
(size_t) 1, &match,
|
||||||
int start_inx = (int) (match.rm_so + indexed[col]);
|
col ? REG_NOTBOL : 0) == 0) {
|
||||||
int finis_inx = (int) (match.rm_eo + indexed[col]);
|
int start_inx = (int) (match.rm_so + offset);
|
||||||
|
int finis_inx = (int) (match.rm_eo + offset);
|
||||||
int start_col = indexToCol(indexed, len, start_inx);
|
int start_col = indexToCol(indexed, len, start_inx);
|
||||||
int finis_col = indexToCol(indexed, len, finis_inx);
|
int finis_col = indexToCol(indexed, len, finis_inx);
|
||||||
|
|
||||||
|
@ -3972,11 +4047,10 @@ do_select_regex(TScreen *screen, CELL *startc, CELL *endc)
|
||||||
indexed[best_col],
|
indexed[best_col],
|
||||||
indexed[best_nxt]));
|
indexed[best_nxt]));
|
||||||
TRACE(("matched:%d:%s\n",
|
TRACE(("matched:%d:%s\n",
|
||||||
indexed[best_nxt] + 1 -
|
indexed[best_nxt] -
|
||||||
indexed[best_col],
|
indexed[best_col],
|
||||||
visibleChars((Char *) (search + indexed[best_col]),
|
visibleChars((Char *) (search + indexed[best_col]),
|
||||||
(unsigned) (indexed[best_nxt] +
|
(unsigned) (indexed[best_nxt] -
|
||||||
1 -
|
|
||||||
indexed[best_col]))));
|
indexed[best_col]))));
|
||||||
}
|
}
|
||||||
free(search);
|
free(search);
|
||||||
|
@ -4947,14 +5021,15 @@ _OwnSelection(XtermWidget xw,
|
||||||
SelectedCells *tcp = &(screen->clipboard_data);
|
SelectedCells *tcp = &(screen->clipboard_data);
|
||||||
TRACE(("saving selection to clipboard buffer\n"));
|
TRACE(("saving selection to clipboard buffer\n"));
|
||||||
scp = &(screen->selected_cells[CLIPBOARD_CODE]);
|
scp = &(screen->selected_cells[CLIPBOARD_CODE]);
|
||||||
if ((buf = (Char *) malloc((size_t) scp->data_length)) == 0)
|
if ((buf = (Char *) malloc((size_t) scp->data_length)) == 0) {
|
||||||
SysError(ERROR_BMALLOC2);
|
SysError(ERROR_BMALLOC2);
|
||||||
|
} else {
|
||||||
free(tcp->data_buffer);
|
free(tcp->data_buffer);
|
||||||
memcpy(buf, scp->data_buffer, scp->data_length);
|
memcpy(buf, scp->data_buffer, scp->data_length);
|
||||||
tcp->data_buffer = buf;
|
tcp->data_buffer = buf;
|
||||||
tcp->data_limit = scp->data_length;
|
tcp->data_limit = scp->data_length;
|
||||||
tcp->data_length = scp->data_length;
|
tcp->data_length = scp->data_length;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
scp = &(screen->selected_cells[which]);
|
scp = &(screen->selected_cells[which]);
|
||||||
if (scp->data_length == 0) {
|
if (scp->data_length == 0) {
|
||||||
|
@ -5094,6 +5169,8 @@ SaveText(TScreen *screen,
|
||||||
unsigned c;
|
unsigned c;
|
||||||
assert(i < (int) ld->lineSize);
|
assert(i < (int) ld->lineSize);
|
||||||
c = E2A(ld->charData[i]);
|
c = E2A(ld->charData[i]);
|
||||||
|
if (ld->attribs[i] & INVISIBLE)
|
||||||
|
continue;
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
/* We want to strip out every occurrence of HIDDEN_CHAR AFTER a
|
/* We want to strip out every occurrence of HIDDEN_CHAR AFTER a
|
||||||
* wide character.
|
* wide character.
|
||||||
|
@ -5432,7 +5509,7 @@ EditorButton(XtermWidget xw, XButtonEvent *event)
|
||||||
|
|
||||||
/* Transmit key sequence to process running under xterm */
|
/* Transmit key sequence to process running under xterm */
|
||||||
TRACE(("EditorButton -> %s\n", visibleChars(line, count)));
|
TRACE(("EditorButton -> %s\n", visibleChars(line, count)));
|
||||||
v_write(pty, line, count);
|
v_write(pty, line, (size_t) count);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: cachedGCs.c,v 1.81 2021/09/16 19:48:02 tom Exp $ */
|
/* $XTermId: cachedGCs.c,v 1.82 2024/05/17 20:59:36 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2007-2019,2021 by Thomas E. Dickey
|
* Copyright 2007-2021,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -92,7 +92,7 @@ traceCgsEnum(CgsEnum value)
|
||||||
CASE(BoldReverse);
|
CASE(BoldReverse);
|
||||||
CASE(Border);
|
CASE(Border);
|
||||||
CASE(Filler);
|
CASE(Filler);
|
||||||
#if OPT_BOX_CHARS
|
#if OPT_BOX_CHARS || OPT_WIDE_CHARS
|
||||||
CASE(Line);
|
CASE(Line);
|
||||||
CASE(Dots);
|
CASE(Dots);
|
||||||
#endif
|
#endif
|
||||||
|
@ -343,7 +343,7 @@ newCache(XtermWidget xw, VTwin *cgsWin, CgsEnum cgsId, CgsCache * me)
|
||||||
xgcv.graphics_exposures = True; /* default */
|
xgcv.graphics_exposures = True; /* default */
|
||||||
xgcv.function = GXcopy;
|
xgcv.function = GXcopy;
|
||||||
break;
|
break;
|
||||||
#if OPT_BOX_CHARS
|
#if OPT_BOX_CHARS || OPT_WIDE_CHARS
|
||||||
case gcLine:
|
case gcLine:
|
||||||
mask |= (GCGraphicsExposures | GCFunction);
|
mask |= (GCGraphicsExposures | GCFunction);
|
||||||
xgcv.graphics_exposures = True; /* default */
|
xgcv.graphics_exposures = True; /* default */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $XTermId: charclass.c,v 1.46 2023/01/04 09:26:46 tom Exp $ */
|
/* $XTermId: charclass.c,v 1.50 2023/04/01 00:11:47 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2022,2023 by Thomas E. Dickey
|
* Copyright 2002-2022,2023 by Thomas E. Dickey
|
||||||
|
@ -262,8 +262,8 @@ report_wide_char_class(void)
|
||||||
printf("from these overlapping intervals of character codes:\n");
|
printf("from these overlapping intervals of character codes:\n");
|
||||||
for (i = classtab[0].first; i <= classtab[0].last; i++) {
|
for (i = classtab[0].first; i <= classtab[0].last; i++) {
|
||||||
printf("\tU+%04X .. U+%04X %s\n",
|
printf("\tU+%04X .. U+%04X %s\n",
|
||||||
classtab[i].first,
|
(unsigned) classtab[i].first,
|
||||||
classtab[i].last,
|
(unsigned) classtab[i].last,
|
||||||
class_name((Classes) classtab[i].cclass));
|
class_name((Classes) classtab[i].cclass));
|
||||||
}
|
}
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
@ -311,7 +311,7 @@ expected_class(int wch)
|
||||||
{
|
{
|
||||||
int result = wch;
|
int result = wch;
|
||||||
wint_t ch = (wint_t) wch;
|
wint_t ch = (wint_t) wch;
|
||||||
if (ch == '\0' || ch == '\t') {
|
if (wch < 0 || ch == '\0' || ch == '\t') {
|
||||||
result = BLANK;
|
result = BLANK;
|
||||||
} else if (iswcntrl(ch)) {
|
} else if (iswcntrl(ch)) {
|
||||||
result = CNTRL;
|
result = CNTRL;
|
||||||
|
|
1441
app/xterm/charproc.c
1441
app/xterm/charproc.c
File diff suppressed because it is too large
Load diff
1705
app/xterm/charsets.c
1705
app/xterm/charsets.c
File diff suppressed because it is too large
Load diff
1302
app/xterm/charsets.dat
Normal file
1302
app/xterm/charsets.dat
Normal file
File diff suppressed because it is too large
Load diff
2286
app/xterm/charsets.h
Normal file
2286
app/xterm/charsets.h
Normal file
File diff suppressed because it is too large
Load diff
|
@ -1,9 +1,9 @@
|
||||||
dnl $XTermId: configure.in,v 1.392 2023/01/08 11:41:52 tom Exp $
|
dnl $XTermId: configure.in,v 1.402 2024/05/11 17:24:20 tom Exp $
|
||||||
dnl
|
dnl
|
||||||
dnl -----------------------------------------------------------------------------
|
dnl -----------------------------------------------------------------------------
|
||||||
dnl this file is part of xterm
|
dnl this file is part of xterm
|
||||||
dnl
|
dnl
|
||||||
dnl Copyright 1997-2022,2023 by Thomas E. Dickey
|
dnl Copyright 1997-2023,2024 by Thomas E. Dickey
|
||||||
dnl
|
dnl
|
||||||
dnl All Rights Reserved
|
dnl All Rights Reserved
|
||||||
dnl
|
dnl
|
||||||
|
@ -82,6 +82,7 @@ AM_LANGINFO_CODESET
|
||||||
CF_SIG_ATOMIC_T
|
CF_SIG_ATOMIC_T
|
||||||
AC_CHECK_TYPE(time_t, long)
|
AC_CHECK_TYPE(time_t, long)
|
||||||
CF_TYPE_CC_T
|
CF_TYPE_CC_T
|
||||||
|
CF_TYPE_NFDS_T
|
||||||
AC_TYPE_MODE_T
|
AC_TYPE_MODE_T
|
||||||
AC_TYPE_PID_T
|
AC_TYPE_PID_T
|
||||||
AC_TYPE_UID_T
|
AC_TYPE_UID_T
|
||||||
|
@ -99,12 +100,15 @@ AC_CHECK_FUNCS( \
|
||||||
unsetenv \
|
unsetenv \
|
||||||
sched_yield \
|
sched_yield \
|
||||||
setpgid \
|
setpgid \
|
||||||
strftime \
|
setsid \
|
||||||
tcgetattr \
|
tcgetattr \
|
||||||
waitpid \
|
waitpid \
|
||||||
wcswidth \
|
wcswidth \
|
||||||
wcwidth )
|
wcwidth )
|
||||||
|
CF_FUNC_GETTIME
|
||||||
|
CF_FUNC_STRFTIME
|
||||||
CF_MKSTEMP
|
CF_MKSTEMP
|
||||||
|
CF_SETITIMER
|
||||||
CF_UTMP
|
CF_UTMP
|
||||||
CF_STRUCT_LASTLOG
|
CF_STRUCT_LASTLOG
|
||||||
CF_POSIX_SAVED_IDS
|
CF_POSIX_SAVED_IDS
|
||||||
|
@ -163,7 +167,7 @@ cf_name=`echo "$program_transform_name" | sed -e '[s,\\$\\$,$,g]'`
|
||||||
cf_name=`echo xterm |sed -e "$cf_name"`
|
cf_name=`echo xterm |sed -e "$cf_name"`
|
||||||
AC_MSG_CHECKING(for symbolic link to create to $cf_name)
|
AC_MSG_CHECKING(for symbolic link to create to $cf_name)
|
||||||
AC_ARG_WITH(xterm-symlink,
|
AC_ARG_WITH(xterm-symlink,
|
||||||
[ --with-xterm-symlink=XXX make symbolic link to installed xterm],
|
[[ --with-xterm-symlink[=XXX] make symbolic link to installed xterm]],
|
||||||
[with_symlink=$withval],
|
[with_symlink=$withval],
|
||||||
[with_symlink=xterm])
|
[with_symlink=xterm])
|
||||||
AC_MSG_RESULT($with_symlink)
|
AC_MSG_RESULT($with_symlink)
|
||||||
|
@ -200,7 +204,7 @@ AC_MSG_RESULT($disable_setgid)
|
||||||
|
|
||||||
AC_MSG_CHECKING(if you want to run xterm setuid to a given user)
|
AC_MSG_CHECKING(if you want to run xterm setuid to a given user)
|
||||||
AC_ARG_WITH(setuid,
|
AC_ARG_WITH(setuid,
|
||||||
[ --with-setuid=XXX use the given setuid user],
|
[[ --with-setuid[=XXX] use the given setuid user]],
|
||||||
[use_given_setuid=$withval],
|
[use_given_setuid=$withval],
|
||||||
[use_given_setuid=no])
|
[use_given_setuid=no])
|
||||||
AC_MSG_RESULT($use_given_setuid)
|
AC_MSG_RESULT($use_given_setuid)
|
||||||
|
@ -217,7 +221,7 @@ fi
|
||||||
|
|
||||||
AC_MSG_CHECKING(if you want to run xterm setgid to match utmp/utmpx file)
|
AC_MSG_CHECKING(if you want to run xterm setgid to match utmp/utmpx file)
|
||||||
AC_ARG_WITH(utmp-setgid,
|
AC_ARG_WITH(utmp-setgid,
|
||||||
[ --with-utmp-setgid=XXX use setgid to match utmp/utmpx file],
|
[[ --with-utmp-setgid[=XXX] use setgid to match utmp/utmpx file]],
|
||||||
[use_utmp_setgid=$withval],
|
[use_utmp_setgid=$withval],
|
||||||
[use_utmp_setgid=no])
|
[use_utmp_setgid=no])
|
||||||
AC_MSG_RESULT($use_utmp_setgid)
|
AC_MSG_RESULT($use_utmp_setgid)
|
||||||
|
@ -260,6 +264,10 @@ if test "$use_utempter" = yes ; then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# We use these for the manpage:
|
||||||
|
CF_WITH_UTMP_PATH
|
||||||
|
CF_WITH_WTMP_PATH
|
||||||
|
|
||||||
### checks for external data
|
### checks for external data
|
||||||
CF_ERRNO
|
CF_ERRNO
|
||||||
CF_TTY_GROUP
|
CF_TTY_GROUP
|
||||||
|
@ -296,7 +304,7 @@ CF_TERMIOS_TYPES
|
||||||
# the feature if it is unwanted.
|
# the feature if it is unwanted.
|
||||||
AC_MSG_CHECKING(if we expect to use the Xcursor library)
|
AC_MSG_CHECKING(if we expect to use the Xcursor library)
|
||||||
CF_ARG_DISABLE(xcursor,
|
CF_ARG_DISABLE(xcursor,
|
||||||
[ --disable-xcursor disable cursorTheme resource],
|
[ --disable-xcursor disable cursorTheme resource],
|
||||||
[enable_xcursor=no],
|
[enable_xcursor=no],
|
||||||
[enable_xcursor=yes])
|
[enable_xcursor=yes])
|
||||||
AC_MSG_RESULT($enable_xcursor)
|
AC_MSG_RESULT($enable_xcursor)
|
||||||
|
@ -343,6 +351,11 @@ AC_MSG_RESULT($default_termid)
|
||||||
case $default_termid in
|
case $default_termid in
|
||||||
(vt*) default_termid=`echo $default_termid | sed -e 's/^..//'`
|
(vt*) default_termid=`echo $default_termid | sed -e 's/^..//'`
|
||||||
;;
|
;;
|
||||||
|
([[1-9]][[0-9]][[0-9]]|[[1-9]][[0-9]])
|
||||||
|
;;
|
||||||
|
(*)
|
||||||
|
AC_MSG_ERROR([expected a number, not $default_termid])
|
||||||
|
;;
|
||||||
esac
|
esac
|
||||||
AC_DEFINE_UNQUOTED(DFT_DECID,"$default_termid",[default terminal-id])
|
AC_DEFINE_UNQUOTED(DFT_DECID,"$default_termid",[default terminal-id])
|
||||||
AC_SUBST(default_termid)
|
AC_SUBST(default_termid)
|
||||||
|
@ -415,7 +428,7 @@ if test "$cf_tic_prog" = yes ; then
|
||||||
fi
|
fi
|
||||||
AC_MSG_CHECKING(for private terminfo-directory)
|
AC_MSG_CHECKING(for private terminfo-directory)
|
||||||
AC_ARG_WITH(own-terminfo,
|
AC_ARG_WITH(own-terminfo,
|
||||||
[ --with-own-terminfo=P set default $TERMINFO (default: from environment)],
|
[[ --with-own-terminfo[=P] set default $TERMINFO (default: from environment)]],
|
||||||
[TERMINFO_DIR=$withval],
|
[TERMINFO_DIR=$withval],
|
||||||
[TERMINFO_DIR=${TERMINFO-none}])
|
[TERMINFO_DIR=${TERMINFO-none}])
|
||||||
AC_MSG_RESULT($TERMINFO_DIR)
|
AC_MSG_RESULT($TERMINFO_DIR)
|
||||||
|
@ -759,7 +772,7 @@ CF_INPUT_METHOD
|
||||||
test "$cf_cv_input_method" = no && enable_ximp=no
|
test "$cf_cv_input_method" = no && enable_ximp=no
|
||||||
if test "$enable_ximp" != no ; then
|
if test "$enable_ximp" != no ; then
|
||||||
if test "$enable_i18n" = no ; then
|
if test "$enable_i18n" = no ; then
|
||||||
AC_MSG_WARN(input-methor relies upon internationalization)
|
AC_MSG_WARN(input-method relies upon internationalization)
|
||||||
enable_ximp=no
|
enable_ximp=no
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
@ -839,10 +852,10 @@ else
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_MSG_CHECKING(if you want support for mouse in readline applications)
|
AC_MSG_CHECKING(if you want support for mouse in readline applications)
|
||||||
CF_ARG_ENABLE(readline-mouse,
|
CF_ARG_DISABLE(readline-mouse,
|
||||||
[ --enable-readline-mouse enable support for mouse in readline applications],
|
[ --disable-readline-mouse disable support for mouse in readline applications],
|
||||||
[enable_readline_mouse=yes],
|
[enable_readline_mouse=no],
|
||||||
[enable_readline_mouse=no])
|
[enable_readline_mouse=yes])
|
||||||
AC_MSG_RESULT($enable_readline_mouse)
|
AC_MSG_RESULT($enable_readline_mouse)
|
||||||
if test "$enable_readline_mouse" = yes ; then
|
if test "$enable_readline_mouse" = yes ; then
|
||||||
AC_DEFINE(OPT_READLINE,1,[Define to 1 to enable support for mouse in readline applications])
|
AC_DEFINE(OPT_READLINE,1,[Define to 1 to enable support for mouse in readline applications])
|
||||||
|
@ -1084,7 +1097,11 @@ if test "$enable_regis_graphics" = yes || test "$enable_sixel_graphics" = yes ;
|
||||||
EXTRAHDRS="$EXTRAHDRS graphics.h"
|
EXTRAHDRS="$EXTRAHDRS graphics.h"
|
||||||
EXTRASRCS="$EXTRASRCS graphics.c"
|
EXTRASRCS="$EXTRASRCS graphics.c"
|
||||||
EXTRAOBJS="$EXTRAOBJS graphics.o"
|
EXTRAOBJS="$EXTRAOBJS graphics.o"
|
||||||
|
STRINGS_MAX=600000
|
||||||
|
else
|
||||||
|
STRINGS_MAX=20000
|
||||||
fi
|
fi
|
||||||
|
AC_SUBST(STRINGS_MAX)
|
||||||
|
|
||||||
AC_MSG_CHECKING(if you want sixel screen dump support)
|
AC_MSG_CHECKING(if you want sixel screen dump support)
|
||||||
CF_ARG_DISABLE(print-graphics,
|
CF_ARG_DISABLE(print-graphics,
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -20,8 +20,8 @@
|
||||||
|
|
||||||
Thomas Dickey
|
Thomas Dickey
|
||||||
XFree86 Project (1996-2006)
|
XFree86 Project (1996-2006)
|
||||||
invisible-island.net (2006-2023)
|
invisible-island.net (2006-2024)
|
||||||
updated for XTerm Patch #378 (2023/01/06)
|
updated for XTerm Patch #392 (2024/05/25)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -315,6 +315,7 @@ ESC ( C Designate G0 Character Set, VT100, ISO 2022.
|
||||||
There are a few other 94-character sets:
|
There are a few other 94-character sets:
|
||||||
C = 0 -> DEC Special Character and Line Drawing Set, VT100.
|
C = 0 -> DEC Special Character and Line Drawing Set, VT100.
|
||||||
C = < -> DEC Supplemental, VT200.
|
C = < -> DEC Supplemental, VT200.
|
||||||
|
C = < -> User Preferred Selection Set, VT300.
|
||||||
C = > -> DEC Technical, VT300.
|
C = > -> DEC Technical, VT300.
|
||||||
These are documented as 94-character sets (like USASCII)
|
These are documented as 94-character sets (like USASCII)
|
||||||
without NRCS:
|
without NRCS:
|
||||||
|
@ -413,6 +414,29 @@ DCS Ps ; Ps | Pt ST
|
||||||
key value. The key codes correspond to the DEC function-key
|
key value. The key codes correspond to the DEC function-key
|
||||||
codes (e.g., F6=17).
|
codes (e.g., F6=17).
|
||||||
|
|
||||||
|
DCS Ps! u Pt ST
|
||||||
|
Assigning User-Preferred Supplemental Sets (DECAUPSS), VT320,
|
||||||
|
VT510. XTerm ignores this in UTF-8 mode, and uses the
|
||||||
|
preferLatin1 resource to choose the default setting.
|
||||||
|
VT320 provides these:
|
||||||
|
DCS 0 ! u % 5 ST -> DEC Supplemental Graphic
|
||||||
|
DCS 1 ! u A ST -> ISO Latin-1 supplemental
|
||||||
|
VT510 adds these:
|
||||||
|
DCS 0 ! u " ? ST -> DEC Greek
|
||||||
|
DCS 0 ! u " 4 ST -> DEC Hebrew
|
||||||
|
DCS 0 ! u % 0 ST -> DEC Turkish
|
||||||
|
DCS 0 ! u & 4 ST -> DEC Cyrillic
|
||||||
|
DCS 1 ! u B ST -> ISO Latin-2 Supplemental
|
||||||
|
DCS 1 ! u F ST -> ISO Greek Supplemental
|
||||||
|
DCS 1 ! u H ST -> ISO Hebrew Supplemental
|
||||||
|
DCS 1 ! u M ST -> ISO Latin-5 Supplemental
|
||||||
|
DCS 1 ! u L ST -> ISO Latin-Cyrillic
|
||||||
|
VT520 accepts a few others (undocumented); xterm adds these:
|
||||||
|
DCS 0 ! u B ST -> United States (USASCII).
|
||||||
|
DCS 0 ! u 0 ST -> DEC Special Character and Line Drawing
|
||||||
|
Set.
|
||||||
|
DCS 0 ! u > ST -> DEC Technical.
|
||||||
|
|
||||||
DCS $ q Pt ST
|
DCS $ q Pt ST
|
||||||
Request Status String (DECRQSS), VT420 and up.
|
Request Status String (DECRQSS), VT420 and up.
|
||||||
The string following the "q" is one of the following:
|
The string following the "q" is one of the following:
|
||||||
|
@ -426,7 +450,11 @@ DCS $ q Pt ST
|
||||||
$ | -> DECSCPP
|
$ | -> DECSCPP
|
||||||
$ } -> DECSASD
|
$ } -> DECSASD
|
||||||
$ ~ -> DECSSDT
|
$ ~ -> DECSSDT
|
||||||
|
* x -> DECSACE
|
||||||
* | -> DECSNLS
|
* | -> DECSNLS
|
||||||
|
, | -> DECAC (VT525 only)
|
||||||
|
, } -> DECATC (VT525 only)
|
||||||
|
> Pm m -> XTQMODKEYS (xterm)
|
||||||
xterm responds with DCS 1 $ r Pt ST for valid requests,
|
xterm responds with DCS 1 $ r Pt ST for valid requests,
|
||||||
replacing the Pt with the corresponding CSI string, or DCS 0 $
|
replacing the Pt with the corresponding CSI string, or DCS 0 $
|
||||||
r ST for invalid requests.
|
r ST for invalid requests.
|
||||||
|
@ -615,7 +643,7 @@ CSI ? Pi ; Pa ; Pv S
|
||||||
sizes, but disallows modifying those sizes because that is
|
sizes, but disallows modifying those sizes because that is
|
||||||
done once, using resource-values.
|
done once, using resource-values.
|
||||||
o Graphics geometry is not necessarily the same as "window
|
o Graphics geometry is not necessarily the same as "window
|
||||||
size" (see the dtterm window manipulation extensions).
|
size" (see the XTWINOPS window manipulation extensions).
|
||||||
XTerm limits the maximum graphics geometry according to
|
XTerm limits the maximum graphics geometry according to
|
||||||
the maxGraphicSize resource.
|
the maxGraphicSize resource.
|
||||||
The maxGraphicSize resource can be either an explicit
|
The maxGraphicSize resource can be either an explicit
|
||||||
|
@ -655,6 +683,9 @@ CSI > Pm T
|
||||||
|
|
||||||
(See discussion of Title Modes).
|
(See discussion of Title Modes).
|
||||||
|
|
||||||
|
CSI ? 5 W Reset tab stops to start with column 9, every 8 columns
|
||||||
|
(DECST8C), VT510.
|
||||||
|
|
||||||
CSI Ps X Erase Ps Character(s) (default = 1) (ECH).
|
CSI Ps X Erase Ps Character(s) (default = 1) (ECH).
|
||||||
|
|
||||||
CSI Ps Z Cursor Backward Tabulation Ps tab stops (default = 1) (CBT).
|
CSI Ps Z Cursor Backward Tabulation Ps tab stops (default = 1) (CBT).
|
||||||
|
@ -683,6 +714,7 @@ CSI Ps c Send Device Attributes (Primary DA).
|
||||||
-> CSI ? 6 2 ; Ps c ("VT220")
|
-> CSI ? 6 2 ; Ps c ("VT220")
|
||||||
-> CSI ? 6 3 ; Ps c ("VT320")
|
-> CSI ? 6 3 ; Ps c ("VT320")
|
||||||
-> CSI ? 6 4 ; Ps c ("VT420")
|
-> CSI ? 6 4 ; Ps c ("VT420")
|
||||||
|
-> CSI ? 6 5 ; Ps c ("VT510" to ("VT525")
|
||||||
|
|
||||||
The VT100-style response parameters do not mean anything by
|
The VT100-style response parameters do not mean anything by
|
||||||
themselves. VT220 (and higher) parameters do, telling the
|
themselves. VT220 (and higher) parameters do, telling the
|
||||||
|
@ -793,16 +825,21 @@ CSI ? Pm h
|
||||||
Ps = 4 1 -> more(1) fix (see curses resource).
|
Ps = 4 1 -> more(1) fix (see curses resource).
|
||||||
Ps = 4 2 -> Enable National Replacement Character sets
|
Ps = 4 2 -> Enable National Replacement Character sets
|
||||||
(DECNRCM), VT220.
|
(DECNRCM), VT220.
|
||||||
Ps = 4 3 -> Enable Graphics Expanded Print Mode (DECGEPM).
|
Ps = 4 3 -> Enable Graphic Expanded Print Mode (DECGEPM),
|
||||||
|
VT340.
|
||||||
Ps = 4 4 -> Turn on margin bell, xterm.
|
Ps = 4 4 -> Turn on margin bell, xterm.
|
||||||
Ps = 4 4 -> Enable Graphics Print Color Mode (DECGPCM).
|
Ps = 4 4 -> Enable Graphic Print Color Mode (DECGPCM),
|
||||||
Ps = 4 5 -> Reverse-wraparound mode, xterm.
|
VT340.
|
||||||
Ps = 4 5 -> Enable Graphics Print ColorSpace (DECGPCS).
|
Ps = 4 5 -> Reverse-wraparound mode (XTREVWRAP), xterm.
|
||||||
Ps = 4 6 -> Start logging, xterm. This is normally
|
Ps = 4 5 -> Enable Graphic Print Color Syntax (DECGPCS),
|
||||||
disabled by a compile-time option.
|
VT340.
|
||||||
|
Ps = 4 6 -> Start logging (XTLOGGING), xterm. This is
|
||||||
|
normally disabled by a compile-time option.
|
||||||
|
Ps = 4 6 -> Graphic Print Background Mode, VT340.
|
||||||
Ps = 4 7 -> Use Alternate Screen Buffer, xterm. This may
|
Ps = 4 7 -> Use Alternate Screen Buffer, xterm. This may
|
||||||
be disabled by the titeInhibit resource.
|
be disabled by the titeInhibit resource.
|
||||||
Ps = 4 7 -> Enable Graphics Rotated Print Mode (DECGRPM).
|
Ps = 4 7 -> Enable Graphic Rotated Print Mode (DECGRPM),
|
||||||
|
VT340.
|
||||||
Ps = 6 6 -> Application keypad mode (DECNKM), VT320.
|
Ps = 6 6 -> Application keypad mode (DECNKM), VT320.
|
||||||
Ps = 6 7 -> Backarrow key sends backspace (DECBKM), VT340,
|
Ps = 6 7 -> Backarrow key sends backspace (DECBKM), VT340,
|
||||||
VT420. This sets the backarrowKey resource to "true".
|
VT420. This sets the backarrowKey resource to "true".
|
||||||
|
@ -829,6 +866,7 @@ CSI ? Pm h
|
||||||
This sets the scrollTtyOutput resource to "true".
|
This sets the scrollTtyOutput resource to "true".
|
||||||
Ps = 1 0 1 1 -> Scroll to bottom on key press (rxvt). This
|
Ps = 1 0 1 1 -> Scroll to bottom on key press (rxvt). This
|
||||||
sets the scrollKey resource to "true".
|
sets the scrollKey resource to "true".
|
||||||
|
Ps = 1 0 1 4 -> Enable fastScroll resource, xterm.
|
||||||
Ps = 1 0 1 5 -> Enable urxvt Mouse Mode.
|
Ps = 1 0 1 5 -> Enable urxvt Mouse Mode.
|
||||||
Ps = 1 0 1 6 -> Enable SGR Mouse PixelMode, xterm.
|
Ps = 1 0 1 6 -> Enable SGR Mouse PixelMode, xterm.
|
||||||
Ps = 1 0 3 4 -> Interpret "meta" key, xterm. This sets the
|
Ps = 1 0 3 4 -> Interpret "meta" key, xterm. This sets the
|
||||||
|
@ -853,6 +891,8 @@ CSI ? Pm h
|
||||||
is received, xterm. This enables the popOnBell resource.
|
is received, xterm. This enables the popOnBell resource.
|
||||||
Ps = 1 0 4 4 -> Reuse the most recent data copied to
|
Ps = 1 0 4 4 -> Reuse the most recent data copied to
|
||||||
CLIPBOARD, xterm. This enables the keepClipboard resource.
|
CLIPBOARD, xterm. This enables the keepClipboard resource.
|
||||||
|
Ps = 1 0 4 5 -> Extended Reverse-wraparound mode
|
||||||
|
(XTREVWRAP2), xterm.
|
||||||
Ps = 1 0 4 6 -> Enable switching to/from Alternate Screen
|
Ps = 1 0 4 6 -> Enable switching to/from Alternate Screen
|
||||||
Buffer, xterm. This works for terminfo-based systems,
|
Buffer, xterm. This works for terminfo-based systems,
|
||||||
updating the titeInhibit resource.
|
updating the titeInhibit resource.
|
||||||
|
@ -874,7 +914,12 @@ CSI ? Pm h
|
||||||
Ps = 1 0 6 0 -> Set legacy keyboard emulation, i.e, X11R6,
|
Ps = 1 0 6 0 -> Set legacy keyboard emulation, i.e, X11R6,
|
||||||
xterm.
|
xterm.
|
||||||
Ps = 1 0 6 1 -> Set VT220 keyboard emulation, xterm.
|
Ps = 1 0 6 1 -> Set VT220 keyboard emulation, xterm.
|
||||||
|
Ps = 2 0 0 1 -> Enable readline mouse button-1, xterm.
|
||||||
|
Ps = 2 0 0 2 -> Enable readline mouse button-2, xterm.
|
||||||
|
Ps = 2 0 0 3 -> Enable readline mouse button-3, xterm.
|
||||||
Ps = 2 0 0 4 -> Set bracketed paste mode, xterm.
|
Ps = 2 0 0 4 -> Set bracketed paste mode, xterm.
|
||||||
|
Ps = 2 0 0 5 -> Enable readline character-quoting, xterm.
|
||||||
|
Ps = 2 0 0 6 -> Enable readline newline pasting, xterm.
|
||||||
|
|
||||||
CSI Ps i Media Copy (MC).
|
CSI Ps i Media Copy (MC).
|
||||||
Ps = 0 -> Print screen (default).
|
Ps = 0 -> Print screen (default).
|
||||||
|
@ -924,15 +969,19 @@ CSI ? Pm l
|
||||||
Ps = 4 1 -> No more(1) fix (see curses resource).
|
Ps = 4 1 -> No more(1) fix (see curses resource).
|
||||||
Ps = 4 2 -> Disable National Replacement Character sets
|
Ps = 4 2 -> Disable National Replacement Character sets
|
||||||
(DECNRCM), VT220.
|
(DECNRCM), VT220.
|
||||||
Ps = 4 3 -> Disable Graphics Expanded Print Mode (DECGEPM).
|
Ps = 4 3 -> Disable Graphic Expanded Print Mode (DECGEPM),
|
||||||
|
VT340.
|
||||||
Ps = 4 4 -> Turn off margin bell, xterm.
|
Ps = 4 4 -> Turn off margin bell, xterm.
|
||||||
Ps = 4 4 -> Disable Graphics Print Color Mode (DECGPCM).
|
Ps = 4 4 -> Disable Graphic Print Color Mode (DECGPCM),
|
||||||
Ps = 4 5 -> No Reverse-wraparound mode, xterm.
|
VT340.
|
||||||
Ps = 4 5 -> Disable Graphics Print ColorSpace (DECGPCS).
|
Ps = 4 5 -> No Reverse-wraparound mode (XTREVWRAP), xterm.
|
||||||
Ps = 4 6 -> Stop logging, xterm. This is normally disabled
|
Ps = 4 5 -> Disable Graphic Print Color Syntax (DECGPCS),
|
||||||
by a compile-time option.
|
VT340.
|
||||||
|
Ps = 4 6 -> Stop logging (XTLOGGING), xterm. This is
|
||||||
|
normally disabled by a compile-time option.
|
||||||
Ps = 4 7 -> Use Normal Screen Buffer, xterm.
|
Ps = 4 7 -> Use Normal Screen Buffer, xterm.
|
||||||
Ps = 4 7 -> Disable Graphics Rotated Print Mode (DECGRPM).
|
Ps = 4 7 -> Disable Graphic Rotated Print Mode (DECGRPM),
|
||||||
|
VT340.
|
||||||
Ps = 6 6 -> Numeric keypad mode (DECNKM), VT320.
|
Ps = 6 6 -> Numeric keypad mode (DECNKM), VT320.
|
||||||
Ps = 6 7 -> Backarrow key sends delete (DECBKM), VT340,
|
Ps = 6 7 -> Backarrow key sends delete (DECBKM), VT340,
|
||||||
VT420. This sets the backarrowKey resource to "false".
|
VT420. This sets the backarrowKey resource to "false".
|
||||||
|
@ -959,6 +1008,7 @@ CSI ? Pm l
|
||||||
(rxvt). This sets the scrollTtyOutput resource to "false".
|
(rxvt). This sets the scrollTtyOutput resource to "false".
|
||||||
Ps = 1 0 1 1 -> Don't scroll to bottom on key press (rxvt).
|
Ps = 1 0 1 1 -> Don't scroll to bottom on key press (rxvt).
|
||||||
This sets the scrollKey resource to "false".
|
This sets the scrollKey resource to "false".
|
||||||
|
Ps = 1 0 1 4 -> Disable fastScroll resource, xterm.
|
||||||
Ps = 1 0 1 5 -> Disable urxvt Mouse Mode.
|
Ps = 1 0 1 5 -> Disable urxvt Mouse Mode.
|
||||||
Ps = 1 0 1 6 -> Disable SGR Mouse Pixel-Mode, xterm.
|
Ps = 1 0 1 6 -> Disable SGR Mouse Pixel-Mode, xterm.
|
||||||
Ps = 1 0 3 4 -> Don't interpret "meta" key, xterm. This
|
Ps = 1 0 3 4 -> Don't interpret "meta" key, xterm. This
|
||||||
|
@ -980,6 +1030,8 @@ CSI ? Pm l
|
||||||
resource.
|
resource.
|
||||||
Ps = 1 0 4 3 -> Disable raising of the window when Control-
|
Ps = 1 0 4 3 -> Disable raising of the window when Control-
|
||||||
G is received, xterm. This disables the popOnBell resource.
|
G is received, xterm. This disables the popOnBell resource.
|
||||||
|
Ps = 1 0 4 5 -> No Extended Reverse-wraparound mode
|
||||||
|
(XTREVWRAP2), xterm.
|
||||||
Ps = 1 0 4 6 -> Disable switching to/from Alternate Screen
|
Ps = 1 0 4 6 -> Disable switching to/from Alternate Screen
|
||||||
Buffer, xterm. This works for terminfo-based systems,
|
Buffer, xterm. This works for terminfo-based systems,
|
||||||
updating the titeInhibit resource. If currently using the
|
updating the titeInhibit resource. If currently using the
|
||||||
|
@ -1004,7 +1056,12 @@ CSI ? Pm l
|
||||||
X11R6, xterm.
|
X11R6, xterm.
|
||||||
Ps = 1 0 6 1 -> Reset keyboard emulation to Sun/PC style,
|
Ps = 1 0 6 1 -> Reset keyboard emulation to Sun/PC style,
|
||||||
xterm.
|
xterm.
|
||||||
|
Ps = 2 0 0 1 -> Disable readline mouse button-1, xterm.
|
||||||
|
Ps = 2 0 0 2 -> Disable readline mouse button-2, xterm.
|
||||||
|
Ps = 2 0 0 3 -> Disable readline mouse button-3, xterm.
|
||||||
Ps = 2 0 0 4 -> Reset bracketed paste mode, xterm.
|
Ps = 2 0 0 4 -> Reset bracketed paste mode, xterm.
|
||||||
|
Ps = 2 0 0 5 -> Disable readline character-quoting, xterm.
|
||||||
|
Ps = 2 0 0 6 -> Disable readline newline pasting, xterm.
|
||||||
|
|
||||||
CSI Pm m Character Attributes (SGR).
|
CSI Pm m Character Attributes (SGR).
|
||||||
Ps = 0 -> Normal (default), VT100.
|
Ps = 0 -> Normal (default), VT100.
|
||||||
|
@ -1250,11 +1307,8 @@ CSI ? Ps n
|
||||||
The last two parameters apply to VT300 & up (keyboard ready)
|
The last two parameters apply to VT300 & up (keyboard ready)
|
||||||
and VT400 & up (LK01) respectively.
|
and VT400 & up (LK01) respectively.
|
||||||
|
|
||||||
Ps = 5 3 -> Report Locator status. The response is CSI ? 5
|
|
||||||
3 n Locator available, if compiled-in, or CSI ? 5 0 n No
|
|
||||||
Locator, if not.
|
|
||||||
Ps = 5 5 -> Report Locator status. The response is CSI ? 5
|
Ps = 5 5 -> Report Locator status. The response is CSI ? 5
|
||||||
3 n Locator available, if compiled-in, or CSI ? 5 0 n No
|
0 n Locator available, if compiled-in, or CSI ? 5 3 n No
|
||||||
Locator, if not.
|
Locator, if not.
|
||||||
Ps = 5 6 -> Report Locator type. The response is CSI ? 5 7
|
Ps = 5 6 -> Report Locator type. The response is CSI ? 5 7
|
||||||
; 1 n Mouse, if compiled-in, or CSI ? 5 7 ; 0 n Cannot
|
; 1 n Mouse, if compiled-in, or CSI ? 5 7 ; 0 n Cannot
|
||||||
|
@ -1338,9 +1392,9 @@ CSI Pm # p
|
||||||
limitations of C#.
|
limitations of C#.
|
||||||
|
|
||||||
CSI > Ps q
|
CSI > Ps q
|
||||||
Ps = 0 -> Report xterm name and version (XTVERSION). The
|
Ps = 0 -> Report xterm name and version (XTVERSION).
|
||||||
response is a DSR sequence identifying the version: DCS > |
|
The response is a DSR sequence identifying the version:
|
||||||
text ST
|
DCS > | text ST
|
||||||
|
|
||||||
CSI Ps q Load LEDs (DECLL), VT100.
|
CSI Ps q Load LEDs (DECLL), VT100.
|
||||||
Ps = 0 -> Clear all LEDS (default).
|
Ps = 0 -> Clear all LEDS (default).
|
||||||
|
@ -1500,6 +1554,12 @@ CSI Ps ; Ps ; Ps t
|
||||||
Ps >= 2 4 -> Resize to Ps lines (DECSLPP), VT340 and VT420.
|
Ps >= 2 4 -> Resize to Ps lines (DECSLPP), VT340 and VT420.
|
||||||
xterm adapts this by resizing its window.
|
xterm adapts this by resizing its window.
|
||||||
|
|
||||||
|
XTWINOPS 2 2 (save/push title) and 2 3 (restore/pop title)
|
||||||
|
accept an optional third parameter for direct access to the
|
||||||
|
stack. Parameters in the range 1 through 10, may be used to
|
||||||
|
store the title into the stack or retrieve the title from the
|
||||||
|
stack without pushing/popping.
|
||||||
|
|
||||||
CSI > Pm t
|
CSI > Pm t
|
||||||
This xterm control sets one or more features of the title
|
This xterm control sets one or more features of the title
|
||||||
modes (XTSMTITLE), xterm. Each parameter enables a single
|
modes (XTSMTITLE), xterm. Each parameter enables a single
|
||||||
|
@ -1524,12 +1584,25 @@ CSI Pt ; Pl ; Pb ; Pr ; Pm $ t
|
||||||
|
|
||||||
CSI u Restore cursor (SCORC, also ANSI.SYS).
|
CSI u Restore cursor (SCORC, also ANSI.SYS).
|
||||||
|
|
||||||
|
CSI & u User-Preferred Supplemental Set (DECRQUPSS), VT320, VT510.
|
||||||
|
Response is DECAUPSS.
|
||||||
|
|
||||||
CSI Ps SP u
|
CSI Ps SP u
|
||||||
Set margin-bell volume (DECSMBV), VT520.
|
Set margin-bell volume (DECSMBV), VT520.
|
||||||
Ps = 0 , 5 , 6 , 7 , or 8 -> high.
|
Ps = 0 , 5 , 6 , 7 , or 8 -> high.
|
||||||
Ps = 1 -> off.
|
Ps = 1 -> off.
|
||||||
Ps = 2 , 3 or 4 -> low.
|
Ps = 2 , 3 or 4 -> low.
|
||||||
|
|
||||||
|
CSI " v Request Displayed Extent (DECRQDE), VT340, VT420.
|
||||||
|
Response is
|
||||||
|
CSI Ph; Pw; Pc; Pr; Pp " w
|
||||||
|
where
|
||||||
|
Ph is the number of lines of the current page
|
||||||
|
Pw is the number of columns of the current page
|
||||||
|
Pc is the column number at the top-left of the window
|
||||||
|
Pr is the row number at the top-left of the window
|
||||||
|
Pp is the current page number
|
||||||
|
|
||||||
CSI Pt ; Pl ; Pb ; Pr ; Pp ; Pt ; Pl ; Pp $ v
|
CSI Pt ; Pl ; Pb ; Pr ; Pp ; Pt ; Pl ; Pp $ v
|
||||||
Copy Rectangular Area (DECCRA), VT400 and up.
|
Copy Rectangular Area (DECCRA), VT400 and up.
|
||||||
Pt ; Pl ; Pb ; Pr denotes the rectangle.
|
Pt ; Pl ; Pb ; Pr denotes the rectangle.
|
||||||
|
@ -1595,7 +1668,6 @@ CSI Ps # y
|
||||||
3 -> omit checksum for cells not explicitly initialized.
|
3 -> omit checksum for cells not explicitly initialized.
|
||||||
4 -> do not mask cell value to 8 bits or ignore combining
|
4 -> do not mask cell value to 8 bits or ignore combining
|
||||||
characters.
|
characters.
|
||||||
5 -> do not mask cell value to 7 bits.
|
|
||||||
|
|
||||||
CSI Pi ; Pg ; Pt ; Pl ; Pb ; Pr * y
|
CSI Pi ; Pg ; Pt ; Pl ; Pb ; Pr * y
|
||||||
Request Checksum of Rectangular Area (DECRQCRA), VT420 and up.
|
Request Checksum of Rectangular Area (DECRQCRA), VT420 and up.
|
||||||
|
@ -1718,6 +1790,42 @@ CSI # } Pop video attributes from stack (XTPOPSGR), xterm. Popping
|
||||||
restores the video-attributes which were saved using XTPUSHSGR
|
restores the video-attributes which were saved using XTPUSHSGR
|
||||||
to their previous state.
|
to their previous state.
|
||||||
|
|
||||||
|
CSI Ps; Pf; Pb, |
|
||||||
|
Assign Color (DECAC), VT525 only.
|
||||||
|
Ps selects the color item
|
||||||
|
Pf is the foreground color index 0..15
|
||||||
|
Pb is the background color index 0..15
|
||||||
|
Color items:
|
||||||
|
Ps = 1 -> normal text
|
||||||
|
Ps = 2 -> window frame
|
||||||
|
xterm uses the SGR color palette with DECAC color item 1 to
|
||||||
|
update the VT100 window colors, like OSC 1 0 and 1 1 .
|
||||||
|
|
||||||
|
CSI Ps; Pf; Pb, }
|
||||||
|
Alternate Text Color (DECATC), VT525 only. This feature
|
||||||
|
specifies the colors to use when DECSTGLT is selected to 1 or
|
||||||
|
2.
|
||||||
|
Ps selects attribute combinations
|
||||||
|
Pf is the foreground color index 0..15
|
||||||
|
Pb is the background color index 0..15
|
||||||
|
Attribute combinations:
|
||||||
|
Ps = 0 -> normal text
|
||||||
|
Ps = 1 -> bold
|
||||||
|
Ps = 2 -> reverse
|
||||||
|
Ps = 3 -> underline
|
||||||
|
Ps = 4 -> blink
|
||||||
|
Ps = 5 -> bold reverse
|
||||||
|
Ps = 6 -> bold underline
|
||||||
|
Ps = 7 -> bold blink
|
||||||
|
Ps = 8 -> reverse underline
|
||||||
|
Ps = 9 -> reverse blink
|
||||||
|
Ps = 1 0 -> underline blink
|
||||||
|
Ps = 1 1 -> bold reverse underline
|
||||||
|
Ps = 1 2 -> bold reverse blink
|
||||||
|
Ps = 1 3 -> bold underline blink
|
||||||
|
Ps = 1 4 -> reverse underline blink
|
||||||
|
Ps = 1 5 -> bold reverse underline blink
|
||||||
|
|
||||||
CSI Ps ' }
|
CSI Ps ' }
|
||||||
Insert Ps Column(s) (default = 1) (DECIC), VT420 and up.
|
Insert Ps Column(s) (default = 1) (DECIC), VT420 and up.
|
||||||
|
|
||||||
|
@ -1741,13 +1849,15 @@ Operating System Commands
|
||||||
OSC Ps ; Pt BEL
|
OSC Ps ; Pt BEL
|
||||||
|
|
||||||
OSC Ps ; Pt ST
|
OSC Ps ; Pt ST
|
||||||
Set Text Parameters. Some control sequences return
|
Set Text Parameters, xterm. Some control sequences return
|
||||||
information:
|
information:
|
||||||
o For colors and font, if Pt is a "?", the control sequence
|
o For colors and font, if Pt is a "?", the control sequence
|
||||||
elicits a response which consists of the control sequence
|
elicits a response which consists of the control sequence
|
||||||
which would set the corresponding value.
|
which would set the corresponding value.
|
||||||
o The dtterm control sequences allow you to determine the
|
o A few of these control sequences began with dtterm (codes
|
||||||
icon name and window title.
|
0 , 1 , and 2 ). Code 3 in dtterm sets the working
|
||||||
|
directory for the next session. XTerm does that with the
|
||||||
|
spawn-new-terminal action.
|
||||||
|
|
||||||
XTerm accepts either BEL or ST for terminating OSC
|
XTerm accepts either BEL or ST for terminating OSC
|
||||||
sequences, and when returning information, uses the same
|
sequences, and when returning information, uses the same
|
||||||
|
@ -1816,6 +1926,25 @@ OSC Ps ; Pt ST
|
||||||
list. The colors are specified by name or RGB specification
|
list. The colors are specified by name or RGB specification
|
||||||
as per XParseColor.
|
as per XParseColor.
|
||||||
|
|
||||||
|
Resource Description
|
||||||
|
-----------------------+-----------------------------
|
||||||
|
foreground | VT100 text foreground color
|
||||||
|
background | VT100 text background color
|
||||||
|
cursorColor | text cursor color
|
||||||
|
pointerColor | pointer foreground color
|
||||||
|
pointerColorBackground | pointer background
|
||||||
|
(foreground) | Tektronix foreground color
|
||||||
|
(background) | Tektronix background color
|
||||||
|
highlightColor | highlight background color
|
||||||
|
(cursorColor) | Tektronix cursor color
|
||||||
|
highlightTextColor | highlight foreground color
|
||||||
|
-----------------------+-----------------------------
|
||||||
|
|
||||||
|
|
||||||
|
The Tektronix colors are initially set from the VT100 colors,
|
||||||
|
but after that can be set independently using these control
|
||||||
|
sequences.
|
||||||
|
|
||||||
If a "?" is given rather than a name or RGB specification,
|
If a "?" is given rather than a name or RGB specification,
|
||||||
xterm replies with a control sequence of the same form which
|
xterm replies with a control sequence of the same form which
|
||||||
can be used to set the corresponding dynamic color. Because
|
can be used to set the corresponding dynamic color. Because
|
||||||
|
@ -1834,10 +1963,14 @@ OSC Ps ; Pt ST
|
||||||
Ps = 1 8 -> Change Tektronix cursor color to Pt.
|
Ps = 1 8 -> Change Tektronix cursor color to Pt.
|
||||||
Ps = 1 9 -> Change highlight foreground color to Pt.
|
Ps = 1 9 -> Change highlight foreground color to Pt.
|
||||||
|
|
||||||
Ps = 2 2 -> Change pointer cursor to Pt.
|
Ps = 2 2 -> Change pointer cursor shape to Pt. The
|
||||||
|
parameter Pt sets the pointerShape resource. If Pt is empty,
|
||||||
|
or does not match any of the standard names, n uses the
|
||||||
|
resource's default "xterm" shape.
|
||||||
|
|
||||||
Ps = 4 6 -> Change Log File to Pt. This is normally
|
Ps = 4 6 -> Change Log File to Pt. The parameter Pt sets
|
||||||
disabled by a compile-time option.
|
the logFile resource. Logging is normally disabled by a
|
||||||
|
compile-time option.
|
||||||
|
|
||||||
Ps = 5 0 -> Set Font to Pt. These controls may be disabled
|
Ps = 5 0 -> Set Font to Pt. These controls may be disabled
|
||||||
using the allowFontOps resource. If Pt begins with a "#",
|
using the allowFontOps resource. If Pt begins with a "#",
|
||||||
|
@ -1981,8 +2114,8 @@ XTerm detects all of these keys via X key-press and key-release events.
|
||||||
It uses the translations resource to decide what to do with these
|
It uses the translations resource to decide what to do with these
|
||||||
events.
|
events.
|
||||||
|
|
||||||
o Ordinary keys are handled with the insert-seven-bit or insert-eight-
|
o Ordinary keys are handled with the insert-seven-bit action, or the
|
||||||
bit action.
|
insert-eight-bit action.
|
||||||
|
|
||||||
o Special keys may be handled with other resources. However, xterm
|
o Special keys may be handled with other resources. However, xterm
|
||||||
also has built-in logic to map commonly-used special keys into
|
also has built-in logic to map commonly-used special keys into
|
||||||
|
@ -2459,6 +2592,50 @@ For background and discussion, see the FAQ:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Readline Modes
|
||||||
|
|
||||||
|
Several modes provide support for mouse button events in readline.
|
||||||
|
Bracketed paste is one of these readline modes, but is used more widely.
|
||||||
|
|
||||||
|
Some assumptions (particular mouse buttons) and limitations (the mouse
|
||||||
|
is clicked on the current row on the screen) apply:
|
||||||
|
|
||||||
|
2 0 0 1 If mouse button 1 is used to end or extend a selection (the
|
||||||
|
select-end action), and if the cursor position is on the same
|
||||||
|
row as the mouse-click, send left/right cursor control
|
||||||
|
sequences to the host to adjust the cursor position to match
|
||||||
|
the mouse click.
|
||||||
|
|
||||||
|
2 0 0 2 When pasting text (the insert-selection action which is
|
||||||
|
normally bound to mouse button 2), if mouse protocol is not
|
||||||
|
enabled, and if the cursor position is on the same row as the
|
||||||
|
mouse-click, send left/right cursor control sequences to the
|
||||||
|
host to adjust the cursor position to match the mouse click.
|
||||||
|
|
||||||
|
2 0 0 3 If mouse button 3 is double-clicked when ending or extending a
|
||||||
|
selection, (the select-end action), and if the cursor position
|
||||||
|
is on the same line as the mouse-click:
|
||||||
|
|
||||||
|
o Send left/right cursor control sequences to the host to
|
||||||
|
adjust the cursor position to match the mouse click.
|
||||||
|
|
||||||
|
o In addition to the same row, the selection may be part of
|
||||||
|
a wrapped line as in other xterm selections (see the
|
||||||
|
Selection Functions section in the manual page).
|
||||||
|
|
||||||
|
o After adjusting the cursor position, xterm sends erase-
|
||||||
|
characters (one for each character in the selection) to
|
||||||
|
tell the host to delete the selected text.
|
||||||
|
|
||||||
|
2 0 0 5 When writing a selection to the host (i.e., pasting text),
|
||||||
|
escape each character with the literal-next (Ctrl-V)
|
||||||
|
character.
|
||||||
|
|
||||||
|
2 0 0 6 Normally when xterm writes selections to the host, it
|
||||||
|
translates newlines to carriage returns. This mode disables
|
||||||
|
the translation, passing newlines literally.
|
||||||
|
|
||||||
|
|
||||||
Title Modes
|
Title Modes
|
||||||
|
|
||||||
The window- and icon-labels can be set or queried using control
|
The window- and icon-labels can be set or queried using control
|
||||||
|
@ -2858,6 +3035,13 @@ DCS Pm p Pr..Pr ST
|
||||||
Pm = 2 -> resume command, use command display mode.
|
Pm = 2 -> resume command, use command display mode.
|
||||||
Pm = 3 -> start new command, use command display mode.
|
Pm = 3 -> start new command, use command display mode.
|
||||||
|
|
||||||
|
A few of the VT330/VT340 private modes conflict with xterm. Codes 4 0
|
||||||
|
to 4 7 were first used by xterm in X10R4 (December 1986). While X11R1
|
||||||
|
xterm dropped codes 4 1 and 4 2 , the remaining ones are still used.
|
||||||
|
The VT330/VT340 introduced in April 1987 uses 4 4 to 4 7 for color
|
||||||
|
graphics printing controls. When configured for ReGIS, xterm uses the
|
||||||
|
VT330/VT340 interpretation of these private modes.
|
||||||
|
|
||||||
|
|
||||||
Non-VT100 Modes
|
Non-VT100 Modes
|
||||||
|
|
||||||
|
@ -3019,10 +3203,11 @@ However long, the technical manuals have problems:
|
||||||
o DEC's manuals did not provide a comprehensive comparison of the
|
o DEC's manuals did not provide a comprehensive comparison of the
|
||||||
features in different model.
|
features in different model.
|
||||||
|
|
||||||
Peter Sichel's Host Interface Functions Checklist spreadsheet is
|
Host Interface Functions Checklist by Peter Sichel (January 12,
|
||||||
useful for noting which model introduced a given feature (although
|
1994) is helpful. This spreadsheet is useful for noting which model
|
||||||
there are a few apparent errors such as the DECRQSS feature cited
|
introduced a given feature (although there are a few apparent errors
|
||||||
for VT320 whereas the technical manual omits it).
|
such as the DECRQSS feature cited for VT320 whereas the technical
|
||||||
|
manual omits it).
|
||||||
|
|
||||||
o Sometimes the manuals disagree. For example, DEC's standard
|
o Sometimes the manuals disagree. For example, DEC's standard
|
||||||
document (DEC STD 070) for terminals says that DECSCL performs a
|
document (DEC STD 070) for terminals says that DECSCL performs a
|
||||||
|
@ -3159,7 +3344,7 @@ Standards
|
||||||
The DEC terminal family (VT100 through VT525) is upward-compatible,
|
The DEC terminal family (VT100 through VT525) is upward-compatible,
|
||||||
using standards plus extensions, e.g., "private modes". Not all
|
using standards plus extensions, e.g., "private modes". Not all
|
||||||
commonly-used features are standard. For example, scrolling regions are
|
commonly-used features are standard. For example, scrolling regions are
|
||||||
not found in ECMA-48. On the other hand, ECMA-48 was not intended to
|
not found in ECMA-48. On the other hand, ECMA-48 was not intended to be
|
||||||
all-encompassing. Quoting from the second edition:
|
all-encompassing. Quoting from the second edition:
|
||||||
|
|
||||||
Full conformance to a standard means that all its requirements are
|
Full conformance to a standard means that all its requirements are
|
||||||
|
@ -3173,7 +3358,7 @@ all-encompassing. Quoting from the second edition:
|
||||||
|
|
||||||
This Standard addresses a whole class of devices which can vary
|
This Standard addresses a whole class of devices which can vary
|
||||||
greatly from each other depending on the application for which a
|
greatly from each other depending on the application for which a
|
||||||
device has been specifically designed. Obviously, a product which
|
device has been specifically designed. Obviously, a product which
|
||||||
implements all facilities described in this standard - thus being in
|
implements all facilities described in this standard - thus being in
|
||||||
"full conformance" with it - whilst theoretically possible, would be
|
"full conformance" with it - whilst theoretically possible, would be
|
||||||
technically and economically unthinkable.
|
technically and economically unthinkable.
|
||||||
|
@ -3215,7 +3400,7 @@ o ANSI X3.64-1979 does not list color as a feature of the SGR sequence
|
||||||
ANSI X3.64-1979, and ECMA-48, Additional Controls for Character-
|
ANSI X3.64-1979, and ECMA-48, Additional Controls for Character-
|
||||||
Imaging I/O Devices, were developed in parallel, with close
|
Imaging I/O Devices, were developed in parallel, with close
|
||||||
liaison. ISO DP 6429, Additional Control Functions for
|
liaison. ISO DP 6429, Additional Control Functions for
|
||||||
Character-Imaging Devices, was developed as a synthesis of X3.04
|
Character-Imaging Devices, was developed as a synthesis of X3.64
|
||||||
and ECMA-48. During this process, some control functions as
|
and ECMA-48. During this process, some control functions as
|
||||||
well as additional selective parameters were added. Except for
|
well as additional selective parameters were added. Except for
|
||||||
point 1 below, X3.64 is a subset of ISO 6429. Although the two
|
point 1 below, X3.64 is a subset of ISO 6429. Although the two
|
||||||
|
@ -3352,47 +3537,47 @@ o The SCOSC/SCORC control sequences for saving/restoring the cursor
|
||||||
Most Dec Private mode settings can be saved away internally
|
Most Dec Private mode settings can be saved away internally
|
||||||
using \E[?ns, where n is the same number to set or reset the Dec
|
using \E[?ns, where n is the same number to set or reset the Dec
|
||||||
Private mode. The mode can be restored using \E[?nr. This can
|
Private mode. The mode can be restored using \E[?nr. This can
|
||||||
be used in termcap for vi, for example, to turn off saving of
|
be used in termcap for vi(1), for example, to turn off saving of
|
||||||
lines, but restore whatever the original state was on exit.
|
lines, but restore whatever the original state was on exit.
|
||||||
|
|
||||||
while the SCOSC/SCORC pair was added in 1995 by XFree86 (and
|
while the SCOSC/SCORC pair was added in 1995 by XFree86 (and
|
||||||
documented long afterwards).
|
documented long afterwards).
|
||||||
|
|
||||||
The SCO ANSI console terminal descriptions did not use these
|
The SCO ANSI console terminal descriptions did not use these
|
||||||
controls (they used the VT100-compatible SC/RC pair). SCOSC/SCORC
|
controls (they used the VT100-compatible SC/RC pair). SCOSC/SCORC
|
||||||
were an artifact of DOS 2.00 (January 1983), by Microsoft and later
|
were an artifact of DOS 2.00 (January 1983), by Microsoft and later
|
||||||
supported by SCO and other vendors.
|
supported by SCO and other vendors.
|
||||||
|
|
||||||
The SCOSC/SCORC pair is considered a private mode because the final
|
The SCOSC/SCORC pair is considered a private mode because the final
|
||||||
characters (s and u ) fall in the range from "`" to "~" (octal 0140
|
characters (s and u ) fall in the range from "`" to "~" (octal 0140
|
||||||
to octal 0176). Other private control sequences can be constructed
|
to octal 0176). Other private control sequences can be constructed
|
||||||
by using octets 074 to 077 (characters "<", "=", ">", or "?") at the
|
by using octets 074 to 077 (characters "<", "=", ">", or "?") at the
|
||||||
beginning of the parameter string. The XTSAVE and XTRESTORE
|
beginning of the parameter string. The XTSAVE and XTRESTORE
|
||||||
controls use "?") in this manner.
|
controls use "?") in this manner.
|
||||||
|
|
||||||
Because the XTSAVE and XTRESTORE controls are private, other
|
Because the XTSAVE and XTRESTORE controls are private, other
|
||||||
terminals may behave differently. For example, DEC (a contributor
|
terminals may behave differently. For example, DEC (a contributor
|
||||||
to the early xterm as well as a manufacturer of terminals) used an
|
to the early xterm as well as a manufacturer of terminals) used an
|
||||||
incompatible private control in one of its terminals more than five
|
incompatible private control in one of its terminals more than five
|
||||||
years later (for the VT420 PCTerm, announced in February 1992).
|
years later (for the VT420 PCTerm, announced in February 1992).
|
||||||
|
|
||||||
In that model of the VT420, CSI ? Pm; Pc r selects the PC TERM
|
In that model of the VT420, CSI ? Pm; Pc r selects the PC TERM
|
||||||
emulation mode. When this mode is enabled, the keyboard sends scan
|
emulation mode. When this mode is enabled, the keyboard sends scan
|
||||||
codes rather than characters (analogous to X keyboard events). The
|
codes rather than characters (analogous to X keyboard events). The
|
||||||
first parameter of this private control enables or disables PC TERM
|
first parameter of this private control enables or disables PC TERM
|
||||||
mode, while the second selects a character set. An ambiguity arises
|
mode, while the second selects a character set. An ambiguity arises
|
||||||
if an application omits the second parameter. In that special case,
|
if an application omits the second parameter. In that special case,
|
||||||
it cannot be distinguished from XTRESTORE. DEC did not take this
|
it cannot be distinguished from XTRESTORE. DEC did not take this
|
||||||
into account when designing the feature.
|
into account when designing the feature.
|
||||||
|
|
||||||
If there were potential users, xterm could accommodate this by a
|
If there were potential users, xterm could accommodate this by a
|
||||||
resource setting. In retrospect (thirty years later), there have
|
resource setting. In retrospect (thirty years later), there have
|
||||||
been no uses of PC TERM, while the XTRESTORE feature is still in
|
been no uses of PC TERM, while the XTRESTORE feature is still in
|
||||||
use.
|
use.
|
||||||
|
|
||||||
o The aixterm manual page gives the format of the control sequence for
|
o The aixterm manual page gives the format of the control sequence for
|
||||||
foreground and background colors 8-15, but does not specify what
|
foreground and background colors 8-15, but does not specify what
|
||||||
those colors are. That is implied by the description's mention of
|
those colors are. That is implied by the description's mention of
|
||||||
HFT:
|
HFT:
|
||||||
|
|
||||||
The aixterm command provides a standard terminal type for
|
The aixterm command provides a standard terminal type for
|
||||||
|
@ -3402,7 +3587,7 @@ o The aixterm manual page gives the format of the control sequence for
|
||||||
the -v flag.
|
the -v flag.
|
||||||
|
|
||||||
Unlike xterm, there are no resource names for the 16 colors, leaving
|
Unlike xterm, there are no resource names for the 16 colors, leaving
|
||||||
the reader to assume that the mapping is hard-coded. The control
|
the reader to assume that the mapping is hard-coded. The control
|
||||||
sequences for colors 8-15 are not specified by ECMA-48, but rather
|
sequences for colors 8-15 are not specified by ECMA-48, but rather
|
||||||
(as done in other instances by xterm) chosen to not conflict with
|
(as done in other instances by xterm) chosen to not conflict with
|
||||||
current or future standards.
|
current or future standards.
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: cursor.c,v 1.83 2022/09/23 08:13:43 tom Exp $ */
|
/* $XTermId: cursor.c,v 1.93 2023/09/21 08:17:56 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2021,2022 by Thomas E. Dickey
|
* Copyright 2002-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -100,46 +100,101 @@ CursorSet(TScreen *screen, int row, int col, unsigned flags)
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* moves the cursor left n, no wrap around
|
* Unlike VT100, xterm allows reverse wrapping of the cursor. This feature was
|
||||||
|
* introduced in X10R4 (December 1986), but did not modify the comment which
|
||||||
|
* said "moves the cursor left n, no wrap around". However, this reverse
|
||||||
|
* wrapping allowed the cursor to wrap around to the end of the screen.
|
||||||
|
*
|
||||||
|
* xterm added VT420-compatible left/right margin support in 2012. If the
|
||||||
|
* cursor starts off within the margins, the reverse wrapping result will be
|
||||||
|
* within the margins.
|
||||||
|
*
|
||||||
|
* Wrapping to the end of the screen did not appear to be the original intent.
|
||||||
|
* That was revised in 2023, using private mode 45 for movement within the
|
||||||
|
* current (wrapped) line, and 1045 for movement to "any" line.
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
CursorBack(XtermWidget xw, int n)
|
CursorBack(XtermWidget xw, int n)
|
||||||
{
|
{
|
||||||
#define WRAP_MASK (REVERSEWRAP | WRAPAROUND)
|
#define WRAP_MASK (REVERSEWRAP | WRAPAROUND)
|
||||||
|
#define WRAP_MASK2 (REVERSEWRAP2 | WRAPAROUND)
|
||||||
TScreen *screen = TScreenOf(xw);
|
TScreen *screen = TScreenOf(xw);
|
||||||
int rev;
|
/* *INDENT-EQLS* */
|
||||||
int left = ScrnLeftMargin(xw);
|
int rev = (((xw->flags & WRAP_MASK) == WRAP_MASK) != 0);
|
||||||
|
int rev2 = (((xw->flags & WRAP_MASK2) == WRAP_MASK2) != 0);
|
||||||
|
int left = ScrnLeftMargin(xw);
|
||||||
|
int right = ScrnRightMargin(xw);
|
||||||
int before = screen->cur_col;
|
int before = screen->cur_col;
|
||||||
|
int top = ScrnTopMargin(xw);
|
||||||
|
int bottom = ScrnBottomMargin(xw);
|
||||||
|
int col = screen->cur_col;
|
||||||
|
int row = screen->cur_row;
|
||||||
|
|
||||||
if ((rev = ((xw->flags & WRAP_MASK) == WRAP_MASK)) != 0
|
int count;
|
||||||
&& screen->do_wrap) {
|
CLineData *ld;
|
||||||
n--;
|
|
||||||
}
|
TRACE(("CursorBack(%d) current %d,%d rev=%d/%d margins H[%d..%d] V[%d..%d]\n",
|
||||||
|
n,
|
||||||
|
screen->cur_row, screen->cur_col,
|
||||||
|
rev, rev2,
|
||||||
|
left, right,
|
||||||
|
top, bottom));
|
||||||
|
|
||||||
/* if the cursor is already before the left-margin, we have to let it go */
|
/* if the cursor is already before the left-margin, we have to let it go */
|
||||||
if (before < left)
|
if (before < left)
|
||||||
left = 0;
|
left = 0;
|
||||||
|
|
||||||
if ((screen->cur_col -= n) < left) {
|
ld = NULL;
|
||||||
if (rev) {
|
if ((count = n) > 0) {
|
||||||
int in_row = ScrnRightMargin(xw) - left + 1;
|
if ((rev || rev2) && screen->do_wrap) {
|
||||||
int offset = (in_row * screen->cur_row) + screen->cur_col - left;
|
--count;
|
||||||
if ((before == left) &&
|
|
||||||
ScrnIsColInMargins(screen, before) &&
|
|
||||||
ScrnIsRowInMargins(screen, screen->cur_row) &&
|
|
||||||
screen->cur_row == screen->top_marg) {
|
|
||||||
offset = (screen->bot_marg + 1) * in_row - 1;
|
|
||||||
} else if (offset < 0) {
|
|
||||||
int length = in_row * MaxRows(screen);
|
|
||||||
offset += ((-offset) / length + 1) * length;
|
|
||||||
}
|
|
||||||
set_cur_row(screen, (offset / in_row));
|
|
||||||
set_cur_col(screen, (offset % in_row) + left);
|
|
||||||
do_xevents(xw);
|
|
||||||
} else {
|
} else {
|
||||||
set_cur_col(screen, left);
|
--col;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (;;) {
|
||||||
|
if (col < left) {
|
||||||
|
if (rev2) {
|
||||||
|
col = right;
|
||||||
|
if (row == top)
|
||||||
|
row = bottom + 1;
|
||||||
|
} else {
|
||||||
|
if (!rev) {
|
||||||
|
col = left;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (row <= top) {
|
||||||
|
col = left;
|
||||||
|
row = top;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ld = NULL; /* try a reverse-wrap */
|
||||||
|
--row;
|
||||||
|
}
|
||||||
|
if (ld == NULL) {
|
||||||
|
ld = getLineData(screen, ROW2INX(screen, row));
|
||||||
|
if (ld == NULL)
|
||||||
|
break; /* should not happen */
|
||||||
|
if (row != screen->cur_row) {
|
||||||
|
if (!rev2 && !LineTstWrapped(ld)) {
|
||||||
|
++row; /* reverse-wrap failed */
|
||||||
|
col = left;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
col = right;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (--count <= 0)
|
||||||
|
break;
|
||||||
|
--col;
|
||||||
|
}
|
||||||
|
set_cur_row(screen, row);
|
||||||
|
set_cur_col(screen, col);
|
||||||
|
do_xevents(xw);
|
||||||
|
|
||||||
ResetWrap(screen);
|
ResetWrap(screen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -289,7 +344,8 @@ CarriageReturn(XtermWidget xw)
|
||||||
|
|
||||||
set_cur_col(screen, col);
|
set_cur_col(screen, col);
|
||||||
ResetWrap(screen);
|
ResetWrap(screen);
|
||||||
do_xevents(xw);
|
if (screen->jumpscroll && !screen->fastscroll)
|
||||||
|
do_xevents(xw);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -451,7 +507,6 @@ CursorNextLine(XtermWidget xw, int count)
|
||||||
|
|
||||||
CursorDown(screen, count < 1 ? 1 : count);
|
CursorDown(screen, count < 1 ? 1 : count);
|
||||||
CarriageReturn(xw);
|
CarriageReturn(xw);
|
||||||
do_xevents(xw);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -464,7 +519,6 @@ CursorPrevLine(XtermWidget xw, int count)
|
||||||
|
|
||||||
CursorUp(screen, count < 1 ? 1 : count);
|
CursorUp(screen, count < 1 ? 1 : count);
|
||||||
CarriageReturn(xw);
|
CarriageReturn(xw);
|
||||||
do_xevents(xw);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: error.h,v 1.26 2012/10/05 00:17:51 tom Exp $ */
|
/* $XTermId: error.h,v 1.28 2023/11/24 00:56:16 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1997-2011,2012 by Thomas E. Dickey
|
* Copyright 1997-2012,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -53,6 +53,8 @@
|
||||||
|
|
||||||
/* @(#)error.h X10/6.6 11/6/86 */
|
/* @(#)error.h X10/6.6 11/6/86 */
|
||||||
|
|
||||||
|
#define ERROR_MISC 1 /* miscellaneous errors */
|
||||||
|
|
||||||
/* main.c */
|
/* main.c */
|
||||||
#define ERROR_FIONBIO 11 /* main: ioctl() failed on FIONBIO */
|
#define ERROR_FIONBIO 11 /* main: ioctl() failed on FIONBIO */
|
||||||
#define ERROR_F_GETFL 12 /* main: ioctl() failed on F_GETFL */
|
#define ERROR_F_GETFL 12 /* main: ioctl() failed on F_GETFL */
|
||||||
|
@ -73,6 +75,7 @@
|
||||||
#define ERROR_INIGROUPS 28 /* spawn: initgroups() failed */
|
#define ERROR_INIGROUPS 28 /* spawn: initgroups() failed */
|
||||||
#define ERROR_FORK 29 /* spawn: fork() failed */
|
#define ERROR_FORK 29 /* spawn: fork() failed */
|
||||||
#define ERROR_EXEC 30 /* spawn: exec() failed */
|
#define ERROR_EXEC 30 /* spawn: exec() failed */
|
||||||
|
#define ERROR_GET_ATOM 31 /* intern_atom() failed */
|
||||||
#define ERROR_PTYS 32 /* get_pty: not enough ptys */
|
#define ERROR_PTYS 32 /* get_pty: not enough ptys */
|
||||||
#define ERROR_PTY_EXEC 34 /* waiting for initial map */
|
#define ERROR_PTY_EXEC 34 /* waiting for initial map */
|
||||||
#define ERROR_SETUID 35 /* spawn: setuid() failed */
|
#define ERROR_SETUID 35 /* spawn: setuid() failed */
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: fontutils.c,v 1.760 2023/01/08 23:42:23 tom Exp $ */
|
/* $XTermId: fontutils.c,v 1.783 2024/07/10 15:48:26 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1998-2022,2023 by Thomas E. Dickey
|
* Copyright 1998-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -44,6 +44,7 @@
|
||||||
|
|
||||||
#include <main.h>
|
#include <main.h>
|
||||||
#include <data.h>
|
#include <data.h>
|
||||||
|
#include <error.h>
|
||||||
#include <menu.h>
|
#include <menu.h>
|
||||||
#include <xstrings.h>
|
#include <xstrings.h>
|
||||||
#include <xterm.h>
|
#include <xterm.h>
|
||||||
|
@ -393,7 +394,7 @@ get_font_name_props(Display *dpy, XFontStruct *fs, char **result)
|
||||||
* first get the full font name
|
* first get the full font name
|
||||||
*/
|
*/
|
||||||
name = 0;
|
name = 0;
|
||||||
fontatom = XInternAtom(dpy, "FONT", False);
|
fontatom = CachedInternAtom(dpy, "FONT");
|
||||||
if (fontatom != 0) {
|
if (fontatom != 0) {
|
||||||
XFontProp *fp;
|
XFontProp *fp;
|
||||||
int i;
|
int i;
|
||||||
|
@ -1201,6 +1202,81 @@ reportXCharStruct(const char *tag, XCharStruct * cs)
|
||||||
ReportFonts("\t\t\tdescent: %d\n", cs->descent);
|
ReportFonts("\t\t\tdescent: %d\n", cs->descent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
fillXCharStruct(XCharStruct * cs, short value)
|
||||||
|
{
|
||||||
|
cs->lbearing = value;
|
||||||
|
cs->rbearing = value;
|
||||||
|
cs->width = value;
|
||||||
|
cs->ascent = value;
|
||||||
|
cs->descent = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if the per-character data differs from the summary, that is a problem */
|
||||||
|
static void
|
||||||
|
compareXCharStruct(const char *tag, XCharStruct * actual, XCharStruct * expect)
|
||||||
|
{
|
||||||
|
#define CompareXCharStruct(field) \
|
||||||
|
if (actual->field != expect->field) \
|
||||||
|
ReportFonts("\t\t%s %s differs: %d\n", tag, #field, actual->field)
|
||||||
|
CompareXCharStruct(lbearing);
|
||||||
|
CompareXCharStruct(rbearing);
|
||||||
|
CompareXCharStruct(width);
|
||||||
|
CompareXCharStruct(ascent);
|
||||||
|
CompareXCharStruct(descent);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
reportXPerChar(XFontStruct *fs)
|
||||||
|
{
|
||||||
|
XCharStruct *cs = fs->per_char;
|
||||||
|
|
||||||
|
if (cs != NULL) {
|
||||||
|
XCharStruct min_bounds;
|
||||||
|
XCharStruct max_bounds;
|
||||||
|
int valid = 0;
|
||||||
|
int total = 0;
|
||||||
|
unsigned first_char = 0;
|
||||||
|
unsigned last_char = 0;
|
||||||
|
unsigned ch;
|
||||||
|
|
||||||
|
if (fs->max_byte1 == 0) {
|
||||||
|
first_char = fs->min_char_or_byte2;
|
||||||
|
last_char = fs->max_char_or_byte2;
|
||||||
|
} else {
|
||||||
|
first_char = (fs->min_byte1 * 256) + fs->min_char_or_byte2;
|
||||||
|
last_char = (fs->max_byte1 * 256) + fs->max_char_or_byte2;
|
||||||
|
}
|
||||||
|
|
||||||
|
fillXCharStruct(&max_bounds, -32768);
|
||||||
|
fillXCharStruct(&min_bounds, 32767);
|
||||||
|
for (ch = first_char; ch < last_char; ++ch) {
|
||||||
|
XCharStruct *item = cs + ch;
|
||||||
|
++total;
|
||||||
|
if (!CI_NONEXISTCHAR(item)) {
|
||||||
|
++valid;
|
||||||
|
#define MIN_BOUNDS(field) min_bounds.field = Min(min_bounds.field, item->field)
|
||||||
|
MIN_BOUNDS(lbearing);
|
||||||
|
MIN_BOUNDS(rbearing);
|
||||||
|
MIN_BOUNDS(width);
|
||||||
|
MIN_BOUNDS(ascent);
|
||||||
|
MIN_BOUNDS(descent);
|
||||||
|
#define MAX_BOUNDS(field) max_bounds.field = Max(max_bounds.field, item->field)
|
||||||
|
MAX_BOUNDS(lbearing);
|
||||||
|
MAX_BOUNDS(rbearing);
|
||||||
|
MAX_BOUNDS(width);
|
||||||
|
MAX_BOUNDS(ascent);
|
||||||
|
MAX_BOUNDS(descent);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ReportFonts("\t\tPer-character: %d/%d\n", valid, total);
|
||||||
|
compareXCharStruct("Max", &max_bounds, &(fs->max_bounds));
|
||||||
|
compareXCharStruct("Min", &min_bounds, &(fs->min_bounds));
|
||||||
|
} else {
|
||||||
|
ReportFonts("\t\tPer-character: none\n");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
reportOneVTFont(const char *tag,
|
reportOneVTFont(const char *tag,
|
||||||
XTermFonts * fnt)
|
XTermFonts * fnt)
|
||||||
|
@ -1222,8 +1298,8 @@ reportOneVTFont(const char *tag,
|
||||||
ReportFonts("\t\tall chars: %s\n", (fs->all_chars_exist
|
ReportFonts("\t\tall chars: %s\n", (fs->all_chars_exist
|
||||||
? "yes"
|
? "yes"
|
||||||
: "no"));
|
: "no"));
|
||||||
ReportFonts("\t\tdefault char: %d\n", fs->default_char);
|
ReportFonts("\t\tdefault char: %u\n", fs->default_char);
|
||||||
ReportFonts("\t\tdirection: %d\n", fs->direction);
|
ReportFonts("\t\tdirection: %u\n", fs->direction);
|
||||||
ReportFonts("\t\tascent: %d\n", fs->ascent);
|
ReportFonts("\t\tascent: %d\n", fs->ascent);
|
||||||
ReportFonts("\t\tdescent: %d\n", fs->descent);
|
ReportFonts("\t\tdescent: %d\n", fs->descent);
|
||||||
ReportFonts("\t\tfirst char: %u\n", first_char);
|
ReportFonts("\t\tfirst char: %u\n", first_char);
|
||||||
|
@ -1243,12 +1319,13 @@ reportOneVTFont(const char *tag,
|
||||||
ReportFonts("\t\tmissing-chars: %u\n", missing);
|
ReportFonts("\t\tmissing-chars: %u\n", missing);
|
||||||
ReportFonts("\t\tpresent-chars: %u\n", countGlyphs(fs) - missing);
|
ReportFonts("\t\tpresent-chars: %u\n", countGlyphs(fs) - missing);
|
||||||
}
|
}
|
||||||
ReportFonts("\t\tmin_byte1: %d\n", fs->min_byte1);
|
ReportFonts("\t\tmin_byte1: %u\n", fs->min_byte1);
|
||||||
ReportFonts("\t\tmax_byte1: %d\n", fs->max_byte1);
|
ReportFonts("\t\tmax_byte1: %u\n", fs->max_byte1);
|
||||||
ReportFonts("\t\tproperties: %d\n", fs->n_properties);
|
ReportFonts("\t\tproperties: %d\n", fs->n_properties);
|
||||||
reportXCharStruct("min_bounds", &(fs->min_bounds));
|
reportXCharStruct("min_bounds", &(fs->min_bounds));
|
||||||
reportXCharStruct("max_bounds", &(fs->max_bounds));
|
reportXCharStruct("max_bounds", &(fs->max_bounds));
|
||||||
/* TODO: report fs->properties and fs->per_char */
|
reportXPerChar(fs);
|
||||||
|
/* TODO: report fs->properties */
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1264,11 +1341,12 @@ reportVTFontInfo(XtermWidget xw, int fontnum)
|
||||||
ReportFonts("Loaded VTFonts(default)\n");
|
ReportFonts("Loaded VTFonts(default)\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
reportOneVTFont("fNorm", GetNormalFont(screen, fNorm));
|
#define ReportOneVTFont(name) reportOneVTFont(#name, screen->fnts + name)
|
||||||
reportOneVTFont("fBold", GetNormalFont(screen, fBold));
|
ReportOneVTFont(fNorm);
|
||||||
|
ReportOneVTFont(fBold);
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
reportOneVTFont("fWide", GetNormalFont(screen, fWide));
|
ReportOneVTFont(fWide);
|
||||||
reportOneVTFont("fWBold", GetNormalFont(screen, fWBold));
|
ReportOneVTFont(fWBold);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1775,7 +1853,7 @@ xtermLoadFont(XtermWidget xw,
|
||||||
UIntSet(screen->fnt_boxes, 2);
|
UIntSet(screen->fnt_boxes, 2);
|
||||||
for (ch = 1; ch < 32; ch++) {
|
for (ch = 1; ch < 32; ch++) {
|
||||||
unsigned n = dec2ucs(screen, ch);
|
unsigned n = dec2ucs(screen, ch);
|
||||||
if ((n != UCS_REPL)
|
if (!is_UCS_SPECIAL(n)
|
||||||
&& (n != ch)
|
&& (n != ch)
|
||||||
&& (screen->fnt_boxes & 2)) {
|
&& (screen->fnt_boxes & 2)) {
|
||||||
if (xtermMissingChar(n, &new_fonts[fNorm]) ||
|
if (xtermMissingChar(n, &new_fonts[fNorm]) ||
|
||||||
|
@ -2188,7 +2266,7 @@ xtermLoadVTFonts(XtermWidget xw, String myName, String myClass)
|
||||||
#define ALLOC_SUBLIST(which,field) \
|
#define ALLOC_SUBLIST(which,field) \
|
||||||
if (subresourceRec.default_font.field != NULL) { \
|
if (subresourceRec.default_font.field != NULL) { \
|
||||||
char *blob = x_strdup(subresourceRec.default_font.field); \
|
char *blob = x_strdup(subresourceRec.default_font.field); \
|
||||||
char *base = blob; \
|
char *base; \
|
||||||
for (base = blob; ; base = NULL) { \
|
for (base = blob; ; base = NULL) { \
|
||||||
char *item = strtok(base, ","); \
|
char *item = strtok(base, ","); \
|
||||||
if (item == NULL) \
|
if (item == NULL) \
|
||||||
|
@ -2398,8 +2476,12 @@ xtermSetCursorBox(TScreen *screen)
|
||||||
XPoint *vp;
|
XPoint *vp;
|
||||||
int fw = FontWidth(screen) - 1;
|
int fw = FontWidth(screen) - 1;
|
||||||
int fh = FontHeight(screen) - 1;
|
int fh = FontHeight(screen) - 1;
|
||||||
int ww = isCursorBar(screen) ? 1 : fw;
|
int ww = isCursorBar(screen) ? fw / 8 : fw;
|
||||||
int hh = isCursorUnderline(screen) ? 1 : fh;
|
int hh = isCursorUnderline(screen) ? fh / 8 : fh;
|
||||||
|
if (ww < 2)
|
||||||
|
ww = 2;
|
||||||
|
if (hh < 2)
|
||||||
|
hh = 2;
|
||||||
|
|
||||||
vp = &VTbox[1];
|
vp = &VTbox[1];
|
||||||
(vp++)->x = (short) ww;
|
(vp++)->x = (short) ww;
|
||||||
|
@ -3268,7 +3350,7 @@ checkFontInfo(int value, const char *tag, int failed)
|
||||||
if (value == 0 || failed) {
|
if (value == 0 || failed) {
|
||||||
if (value == 0) {
|
if (value == 0) {
|
||||||
xtermWarning("Selected font has no non-zero %s for ISO-8859-1 encoding\n", tag);
|
xtermWarning("Selected font has no non-zero %s for ISO-8859-1 encoding\n", tag);
|
||||||
exit(1);
|
exit(ERROR_MISC);
|
||||||
} else {
|
} else {
|
||||||
xtermWarning("Selected font has no valid %s for ISO-8859-1 encoding\n", tag);
|
xtermWarning("Selected font has no valid %s for ISO-8859-1 encoding\n", tag);
|
||||||
}
|
}
|
||||||
|
@ -3512,8 +3594,7 @@ xtermComputeFontInfo(XtermWidget xw,
|
||||||
*/
|
*/
|
||||||
if (screen->fnt_boxes) {
|
if (screen->fnt_boxes) {
|
||||||
screen->fnt_boxes = 0;
|
screen->fnt_boxes = 0;
|
||||||
TRACE(("Xft opened - will %suse internal line-drawing characters\n",
|
TRACE(("Xft opened - will not use internal line-drawing characters\n"));
|
||||||
screen->fnt_boxes ? "not " : ""));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3813,7 +3894,7 @@ xtermMissingChar(unsigned ch, XTermFonts * font)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OPT_BOX_CHARS
|
#if OPT_BOX_CHARS || OPT_WIDE_CHARS
|
||||||
/*
|
/*
|
||||||
* The grid is arbitrary, enough resolution that nothing's lost in
|
* The grid is arbitrary, enough resolution that nothing's lost in
|
||||||
* initialization.
|
* initialization.
|
||||||
|
@ -3987,6 +4068,39 @@ xtermDrawBoxChar(XTermDraw * params,
|
||||||
SEG( 0, 2*BOX_HIGH/3, CHR_WIDE, 2*BOX_HIGH/3),
|
SEG( 0, 2*BOX_HIGH/3, CHR_WIDE, 2*BOX_HIGH/3),
|
||||||
SEG( 0, MID_HIGH, CHR_WIDE, MID_HIGH),
|
SEG( 0, MID_HIGH, CHR_WIDE, MID_HIGH),
|
||||||
-1
|
-1
|
||||||
|
}, sigma_1[] =
|
||||||
|
{
|
||||||
|
SEG(BOX_WIDE, MID_HIGH, BOX_WIDE/2, MID_HIGH),
|
||||||
|
SEG(BOX_WIDE/2, MID_HIGH, BOX_WIDE, BOX_HIGH),
|
||||||
|
-1
|
||||||
|
}, sigma_2[] =
|
||||||
|
{
|
||||||
|
SEG(BOX_WIDE, MID_HIGH, BOX_WIDE/2, MID_HIGH),
|
||||||
|
SEG(BOX_WIDE/2, MID_HIGH, BOX_WIDE, 0),
|
||||||
|
-1
|
||||||
|
}, sigma_3[] =
|
||||||
|
{
|
||||||
|
SEG( 0, 0, BOX_WIDE, BOX_HIGH),
|
||||||
|
-1
|
||||||
|
}, sigma_4[] =
|
||||||
|
{
|
||||||
|
SEG( 0, BOX_HIGH, BOX_WIDE, 0),
|
||||||
|
-1
|
||||||
|
}, sigma_5[] =
|
||||||
|
{
|
||||||
|
SEG( 0, MID_HIGH, MID_WIDE, MID_HIGH),
|
||||||
|
SEG(MID_WIDE, MID_HIGH, MID_WIDE, BOX_HIGH),
|
||||||
|
-1
|
||||||
|
}, sigma_6[] =
|
||||||
|
{
|
||||||
|
SEG( 0, MID_HIGH, MID_WIDE, MID_HIGH),
|
||||||
|
SEG(MID_WIDE, MID_HIGH, MID_WIDE, 0),
|
||||||
|
-1
|
||||||
|
}, sigma_7[] =
|
||||||
|
{
|
||||||
|
SEG( 0, 0, MID_WIDE, MID_HIGH),
|
||||||
|
SEG( 0, BOX_HIGH, MID_WIDE, MID_HIGH),
|
||||||
|
-1
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct {
|
static const struct {
|
||||||
|
@ -4026,6 +4140,14 @@ xtermDrawBoxChar(XTermDraw * params,
|
||||||
{ 0, not_equal_to }, /* 1D */
|
{ 0, not_equal_to }, /* 1D */
|
||||||
{ 0, 0 }, /* 1E LB */
|
{ 0, 0 }, /* 1E LB */
|
||||||
{ 0, 0 }, /* 1F bullet */
|
{ 0, 0 }, /* 1F bullet */
|
||||||
|
{ 0, 0 }, /* 20 space */
|
||||||
|
{ 3, sigma_1 }, /* PUA(0) */
|
||||||
|
{ 3, sigma_2 }, /* PUA(1) */
|
||||||
|
{ 3, sigma_3 }, /* PUA(2) */
|
||||||
|
{ 3, sigma_4 }, /* PUA(3) */
|
||||||
|
{ 3, sigma_5 }, /* PUA(4) */
|
||||||
|
{ 3, sigma_6 }, /* PUA(5) */
|
||||||
|
{ 3, sigma_7 }, /* PUA(6) */
|
||||||
};
|
};
|
||||||
/* *INDENT-ON* */
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
@ -4037,6 +4159,7 @@ xtermDrawBoxChar(XTermDraw * params,
|
||||||
* screen->fnt_wide);
|
* screen->fnt_wide);
|
||||||
unsigned font_height = (((params->draw_flags & DOUBLEHFONT) ? 2U : 1U)
|
unsigned font_height = (((params->draw_flags & DOUBLEHFONT) ? 2U : 1U)
|
||||||
* screen->fnt_high);
|
* screen->fnt_high);
|
||||||
|
unsigned thick;
|
||||||
|
|
||||||
if (cells > 1)
|
if (cells > 1)
|
||||||
font_width *= (unsigned) cells;
|
font_width *= (unsigned) cells;
|
||||||
|
@ -4051,11 +4174,11 @@ xtermDrawBoxChar(XTermDraw * params,
|
||||||
&& !UsingRenderFont(params->xw)
|
&& !UsingRenderFont(params->xw)
|
||||||
#endif
|
#endif
|
||||||
&& (ch > 127)
|
&& (ch > 127)
|
||||||
&& (ch != UCS_REPL)) {
|
&& !is_UCS_SPECIAL(ch)) {
|
||||||
int which = (params->attr_flags & BOLD) ? fBold : fNorm;
|
int which = (params->attr_flags & BOLD) ? fBold : fNorm;
|
||||||
unsigned n;
|
unsigned n;
|
||||||
for (n = 1; n < 32; n++) {
|
for (n = 1; n < 32; n++) {
|
||||||
if (xtermMissingChar(n, getNormalFont(screen, which)))
|
if (xtermMissingChar(n, XTermFontsRef(screen->fnts, which)))
|
||||||
continue;
|
continue;
|
||||||
if (dec2ucs(screen, n) != ch)
|
if (dec2ucs(screen, n) != ch)
|
||||||
continue;
|
continue;
|
||||||
|
@ -4080,7 +4203,7 @@ xtermDrawBoxChar(XTermDraw * params,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Line-drawing characters show use the full (scaled) cellsize, while
|
* Line-drawing characters display using the full (scaled) cellsize, while
|
||||||
* other characters should be shifted to center them vertically.
|
* other characters should be shifted to center them vertically.
|
||||||
*/
|
*/
|
||||||
if (!xftords) {
|
if (!xftords) {
|
||||||
|
@ -4091,6 +4214,11 @@ xtermDrawBoxChar(XTermDraw * params,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (xtermIsDecTechnical(ch)) {
|
||||||
|
ch -= XTERM_PUA;
|
||||||
|
ch += 33;
|
||||||
|
}
|
||||||
|
|
||||||
TRACE(("DRAW_BOX(%02X) cell %dx%d at %d,%d%s\n",
|
TRACE(("DRAW_BOX(%02X) cell %dx%d at %d,%d%s\n",
|
||||||
ch, font_height, font_width, y, x,
|
ch, font_height, font_width, y, x,
|
||||||
((ch >= XtNumber(lines))
|
((ch >= XtNumber(lines))
|
||||||
|
@ -4119,19 +4247,18 @@ xtermDrawBoxChar(XTermDraw * params,
|
||||||
setCgsBack(params->xw, cgsWin, cgsId, getCgsBack(params->xw, cgsWin, gc));
|
setCgsBack(params->xw, cgsWin, cgsId, getCgsBack(params->xw, cgsWin, gc));
|
||||||
gc2 = getCgsGC(params->xw, cgsWin, cgsId);
|
gc2 = getCgsGC(params->xw, cgsWin, cgsId);
|
||||||
|
|
||||||
XSetLineAttributes(screen->display, gc2,
|
thick = ((params->attr_flags & BOLD)
|
||||||
(params->attr_flags & BOLD)
|
? (Max((unsigned) screen->fnt_high / 12, 1))
|
||||||
? ((font_height > 12)
|
: (Max((unsigned) screen->fnt_high / 16, 1)));
|
||||||
? font_height / 12
|
setXtermLineAttributes(screen->display, gc2,
|
||||||
: 1)
|
thick,
|
||||||
: ((font_height > 16)
|
((ch < XtNumber(lines))
|
||||||
? font_height / 16
|
? LineSolid
|
||||||
: 1),
|
: LineOnOffDash));
|
||||||
LineSolid,
|
|
||||||
CapProjecting,
|
|
||||||
JoinMiter);
|
|
||||||
|
|
||||||
if (ch == 1) { /* diamond */
|
if (ch == 32) { /* space! */
|
||||||
|
; /* boxing a missing space is pointless */
|
||||||
|
} else if (ch == 1) { /* diamond */
|
||||||
XPoint points[5];
|
XPoint points[5];
|
||||||
int npoints = 5, n;
|
int npoints = 5, n;
|
||||||
|
|
||||||
|
@ -4209,12 +4336,37 @@ xtermDrawBoxChar(XTermDraw * params,
|
||||||
}
|
}
|
||||||
} else if (screen->force_all_chars) {
|
} else if (screen->force_all_chars) {
|
||||||
/* bounding rectangle, for debugging */
|
/* bounding rectangle, for debugging */
|
||||||
XDrawRectangle(screen->display, VDrawable(screen), gc2, x, y,
|
if ((params->draw_flags & DOUBLEHFONT)) {
|
||||||
font_width - 1,
|
XRectangle clip;
|
||||||
font_height - 1);
|
|
||||||
|
clip.x = 0;
|
||||||
|
clip.y = 0;
|
||||||
|
clip.width = (unsigned short) ((font_width - 1) + (unsigned) thick);
|
||||||
|
clip.height = (unsigned short) ((unsigned) FontHeight(screen) + thick);
|
||||||
|
|
||||||
|
if ((params->draw_flags & DOUBLEFIRST)) {
|
||||||
|
y -= (2 * FontDescent(screen));
|
||||||
|
clip.height =
|
||||||
|
(unsigned short) (clip.height
|
||||||
|
- ((unsigned short) FontDescent(screen)));
|
||||||
|
} else {
|
||||||
|
y -= FontHeight(screen);
|
||||||
|
y += FontDescent(screen);
|
||||||
|
clip.y = (short) FontHeight(screen);
|
||||||
|
}
|
||||||
|
XSetClipRectangles(screen->display, gc2, x, y, &clip, 1, Unsorted);
|
||||||
|
}
|
||||||
|
XDrawRectangle(screen->display, VDrawable(screen), gc2,
|
||||||
|
x + (int) thick, y + (int) thick,
|
||||||
|
font_width - (2 * thick),
|
||||||
|
font_height - (2 * thick));
|
||||||
|
if ((params->draw_flags & DOUBLEHFONT)) {
|
||||||
|
XSetClipMask(screen->display, gc2, None);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
resetXtermLineAttributes(screen->display, gc2);
|
||||||
}
|
}
|
||||||
#endif /* OPT_BOX_CHARS */
|
#endif /* OPT_BOX_CHARS || OPT_WIDE_CHARS */
|
||||||
|
|
||||||
#if OPT_RENDERFONT
|
#if OPT_RENDERFONT
|
||||||
static int
|
static int
|
||||||
|
@ -4401,7 +4553,7 @@ findXftGlyph(XtermWidget xw, XTermXftFonts *fontData, unsigned wc)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* initialize on the first call */
|
/* initialize on the first call */
|
||||||
if (fontData->fontset == NULL) {
|
if (fontData->fontset == NULL && fontData->pattern != NULL) {
|
||||||
FcFontSet *sortedFonts;
|
FcFontSet *sortedFonts;
|
||||||
FcPattern *myPattern;
|
FcPattern *myPattern;
|
||||||
int j;
|
int j;
|
||||||
|
@ -4462,7 +4614,8 @@ findXftGlyph(XtermWidget xw, XTermXftFonts *fontData, unsigned wc)
|
||||||
FcPatternDestroy(myPattern);
|
FcPatternDestroy(myPattern);
|
||||||
|
|
||||||
fontData->fs_size = Min(MaxXftCache, fontData->fontset->nfont);
|
fontData->fs_size = Min(MaxXftCache, fontData->fontset->nfont);
|
||||||
} {
|
}
|
||||||
|
if (fontData->fontset != NULL && fontData->fs_size > 0) {
|
||||||
XftFont *check;
|
XftFont *check;
|
||||||
int empty = fontData->fs_size;
|
int empty = fontData->fs_size;
|
||||||
|
|
||||||
|
@ -4542,9 +4695,8 @@ findXftGlyph(XtermWidget xw, XTermXftFonts *fontData, unsigned wc)
|
||||||
TRACE_FALLBACK(xw, "new", wc, result, actual);
|
TRACE_FALLBACK(xw, "new", wc, result, actual);
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
Bool ok;
|
|
||||||
if (defer >= 0
|
if (defer >= 0
|
||||||
&& (ok = !slowXftMissing(xw, check, wc))
|
&& !slowXftMissing(xw, check, wc)
|
||||||
&& checkXftGlyph(xw, check, wc)) {
|
&& checkXftGlyph(xw, check, wc)) {
|
||||||
XTermFontMap *font_map = &(fontData->font_map);
|
XTermFontMap *font_map = &(fontData->font_map);
|
||||||
TRACE(("checkrecover2 %d\n", n));
|
TRACE(("checkrecover2 %d\n", n));
|
||||||
|
@ -4660,7 +4812,7 @@ ucs2dec(TScreen *screen, unsigned ch)
|
||||||
|
|
||||||
(void) screen;
|
(void) screen;
|
||||||
if ((ch > 127)
|
if ((ch > 127)
|
||||||
&& (ch != UCS_REPL)) {
|
&& !is_UCS_SPECIAL(ch)) {
|
||||||
#if OPT_VT52_MODE
|
#if OPT_VT52_MODE
|
||||||
if (screen != 0 && !(screen->vtXX_level)) {
|
if (screen != 0 && !(screen->vtXX_level)) {
|
||||||
/*
|
/*
|
||||||
|
@ -5776,6 +5928,7 @@ getDoubleXftFont(XTermDraw * params, XTermXftFonts *data, unsigned chrset, unsig
|
||||||
(void *) 0);
|
(void *) 0);
|
||||||
}
|
}
|
||||||
xtermOpenXft(xw, data, 0, face_name, sub_pattern, category);
|
xtermOpenXft(xw, data, 0, face_name, sub_pattern, category);
|
||||||
|
data->pattern = sub_pattern;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: fontutils.h,v 1.142 2022/10/23 14:47:45 tom Exp $ */
|
/* $XTermId: fontutils.h,v 1.147 2024/07/11 08:16:39 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1998-2021,2022 by Thomas E. Dickey
|
* Copyright 1998-2022,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -123,13 +123,21 @@ extern char *xtermSpecialFont (XTermDraw * /* params */);
|
||||||
? ((font)->known_missing[(Char)(ch)] > 1) \
|
? ((font)->known_missing[(Char)(ch)] > 1) \
|
||||||
: ((FontIsIncomplete(font) && xtermMissingChar(ch, font)) \
|
: ((FontIsIncomplete(font) && xtermMissingChar(ch, font)) \
|
||||||
|| ForceBoxChars(screen, ch)))
|
|| ForceBoxChars(screen, ch)))
|
||||||
|
|
||||||
extern void xtermDrawBoxChar (XTermDraw * /* params */, unsigned /* ch */, GC /* gc */, int /* x */, int /* y */, int /* cols */, Bool /* xftords */);
|
|
||||||
#else
|
#else
|
||||||
#define IsXtermMissingChar(screen, ch, font) False
|
#define IsXtermMissingChar(screen, ch, font) False
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
extern void xtermDrawBoxChar (XTermDraw * /* params */, unsigned /* ch */, GC /* gc */, int /* x */, int /* y */, int /* cols */, Bool /* xftords */);
|
||||||
|
|
||||||
#if OPT_BOX_CHARS || OPT_REPORT_FONTS
|
#if OPT_BOX_CHARS || OPT_REPORT_FONTS
|
||||||
|
#define XTermFontsRef(fontList, which) \
|
||||||
|
(((which) != fNorm && \
|
||||||
|
((fontList)[(which)].fs == NULL || \
|
||||||
|
(fontList)[(which)].fs->per_char == NULL) && \
|
||||||
|
((fontList)[fNorm].fs != NULL && \
|
||||||
|
(fontList)[fNorm].fs->per_char != NULL)) \
|
||||||
|
? &((fontList)[fNorm]) \
|
||||||
|
: &((fontList)[(which)]))
|
||||||
extern Bool xtermMissingChar (unsigned /* ch */, XTermFonts */* font */);
|
extern Bool xtermMissingChar (unsigned /* ch */, XTermFonts */* font */);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -142,7 +150,10 @@ extern Bool xtermLoadWideFonts (XtermWidget /* w */, Bool /* nullOk */);
|
||||||
extern void xtermSaveVTFonts (XtermWidget /* xw */);
|
extern void xtermSaveVTFonts (XtermWidget /* xw */);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* checks for internal charset codes */
|
||||||
|
#define xtermIsDecTechnical(ch) ((ch) >= XTERM_PUA && (ch) <= XTERM_PUA + 6)
|
||||||
#define xtermIsDecGraphic(ch) ((ch) > 0 && (ch) < 32)
|
#define xtermIsDecGraphic(ch) ((ch) > 0 && (ch) < 32)
|
||||||
|
#define xtermIsInternalCs(ch) (xtermIsDecGraphic(ch) || xtermIsDecTechnical(ch))
|
||||||
|
|
||||||
#if OPT_RENDERFONT
|
#if OPT_RENDERFONT
|
||||||
extern Boolean maybeXftCache(XtermWidget /* xw */, XftFont * /* font */);
|
extern Boolean maybeXftCache(XtermWidget /* xw */, XftFont * /* font */);
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#! /usr/bin/perl -w
|
#! /usr/bin/env perl
|
||||||
# $XTermId: gen-charsets.pl,v 1.2 2018/08/22 22:59:15 tom Exp $
|
# $XTermId: gen-charsets.pl,v 1.37 2024/02/09 01:11:52 tom Exp $
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# this file is part of xterm
|
# this file is part of xterm
|
||||||
#
|
#
|
||||||
# Copyright 2018 by Thomas E. Dickey
|
# Copyright 2018-2023,2024 by Thomas E. Dickey
|
||||||
#
|
#
|
||||||
# All Rights Reserved
|
# All Rights Reserved
|
||||||
#
|
#
|
||||||
|
@ -31,32 +31,88 @@
|
||||||
# sale, use or other dealings in this Software without prior written
|
# sale, use or other dealings in this Software without prior written
|
||||||
# authorization.
|
# authorization.
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
#
|
# Format/maintain xterm's charsets.h header.
|
||||||
# Translate a Unicode mapping, e.g., for one of the ISO-8859-x codepages,
|
|
||||||
# into the form used in charsets.c for converting characters.
|
|
||||||
use strict;
|
use strict;
|
||||||
|
use warnings;
|
||||||
|
|
||||||
|
use Getopt::Std;
|
||||||
|
|
||||||
$| = 1;
|
$| = 1;
|
||||||
|
|
||||||
sub do_file($) {
|
our ( $opt_d, $opt_i, $opt_v, $opt_x );
|
||||||
my $file = shift;
|
our $undef = hex(0x2426);
|
||||||
my $undef = hex(0x2426);
|
our $head_file = "charsets.h";
|
||||||
|
our $data_file = "charsets.dat";
|
||||||
|
our @import;
|
||||||
|
|
||||||
|
our %wide_chars = qw(
|
||||||
|
map_DEC_Cyrillic 1
|
||||||
|
map_DEC_Greek_Supp 1
|
||||||
|
map_DEC_Hebrew_Supp 1
|
||||||
|
map_DEC_Technical 1
|
||||||
|
map_DEC_Turkish_Supp 1
|
||||||
|
map_ISO_Greek_Supp 1
|
||||||
|
map_ISO_Hebrew 1
|
||||||
|
map_ISO_Latin_2 1
|
||||||
|
map_ISO_Latin_5 1
|
||||||
|
map_ISO_Latin_Cyrillic 1
|
||||||
|
map_NRCS_Greek 1
|
||||||
|
map_NRCS_Hebrew 1
|
||||||
|
map_NRCS_Turkish 1
|
||||||
|
);
|
||||||
|
|
||||||
|
our $note_1 = "\
|
||||||
|
#ifndef included_charsets_h
|
||||||
|
#define included_charsets_h 1";
|
||||||
|
|
||||||
|
our $note_2 = "\
|
||||||
|
#ifndef PUA
|
||||||
|
#define PUA(n) (0xEEEE + (n))
|
||||||
|
#endif
|
||||||
|
#define UNDEF 0x2426\t\t/* rendered as a backwards \"?\" */";
|
||||||
|
|
||||||
|
our $note_3 = "\
|
||||||
|
#if OPT_WIDE_CHARS
|
||||||
|
#define begin_CODEPAGE(size) \\
|
||||||
|
\tif (!(xw->flags & NATIONAL)) { \\
|
||||||
|
\t screen->utf8_nrc_mode++; \\
|
||||||
|
\t}
|
||||||
|
#define end_CODEPAGE() \\
|
||||||
|
\tif (!(xw->flags & NATIONAL)) { \\
|
||||||
|
\t screen->utf8_nrc_mode--; \\
|
||||||
|
\t}
|
||||||
|
#else
|
||||||
|
#define begin_CODEPAGE(size)\t/* nothing */
|
||||||
|
#define end_CODEPAGE()\t\t/* nothing */
|
||||||
|
#endif";
|
||||||
|
|
||||||
|
sub read_file($) {
|
||||||
|
my $file = shift;
|
||||||
open( FP, $file ) || do {
|
open( FP, $file ) || do {
|
||||||
print STDERR "Can't open $file: $!\n";
|
print STDERR "Can't open $file: $!\n";
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
my @data = <FP>;
|
my @data = <FP>;
|
||||||
close(FP);
|
close(FP);
|
||||||
|
chomp @data;
|
||||||
|
return @data;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Translate a Unicode mapping, e.g., for one of the ISO-8859-x codepages,
|
||||||
|
# into the form used in charsets.c for converting characters.
|
||||||
|
sub do_import($) {
|
||||||
|
my $file = shift;
|
||||||
|
my @data = &read_file($file);
|
||||||
my $name = $file;
|
my $name = $file;
|
||||||
$name =~ s,^.*/,,;
|
$name =~ s,^.*/,,;
|
||||||
$name =~ s/\..*$//;
|
$name =~ s/\..*$//;
|
||||||
$name =~ s/^(8859)/ISO-$1/;
|
$name =~ s/^(8859)/ISO-$1/;
|
||||||
$name =~ s/-/_/g;
|
$name =~ s/-/_/g;
|
||||||
printf "#define map_%s(code) \\\n", $name;
|
|
||||||
printf "\tswitch (code) { \\\n";
|
|
||||||
my @target;
|
my @target;
|
||||||
my @noteof;
|
my @noteof;
|
||||||
|
|
||||||
|
$import[ $#import + 1 ] = sprintf "map_%s", $name;
|
||||||
for my $n ( 0 .. $#data ) {
|
for my $n ( 0 .. $#data ) {
|
||||||
chomp $data[$n];
|
chomp $data[$n];
|
||||||
$data[$n] =~ s/^\s*//;
|
$data[$n] =~ s/^\s*//;
|
||||||
|
@ -88,18 +144,278 @@ sub do_file($) {
|
||||||
my $hi = $target[127] ? 127 : 126;
|
my $hi = $target[127] ? 127 : 126;
|
||||||
for my $n ( $lo .. $hi ) {
|
for my $n ( $lo .. $hi ) {
|
||||||
if ( defined $target[$n] ) {
|
if ( defined $target[$n] ) {
|
||||||
printf "\t UNI(0x%02x, 0x%04x);\t/* %s */ \\\n", $n,
|
$import[ $#import + 1 ] = sprintf "\t0x%02x\t0x%04x\t\t# %s", $n,
|
||||||
$target[$n], $noteof[$n];
|
$target[$n], $noteof[$n];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
printf "\t XXX(0x%02x, UNDEF);\t/* undefined */ \\\n", $n;
|
$import[ $#import + 1 ] = sprintf "\t0x%02x\tUNDEF\t\t# undefined",
|
||||||
|
$n;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ($opt_v) {
|
||||||
|
for my $n ( 0 .. $#import ) {
|
||||||
|
printf "%s\n", $import[$n];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
printf "\t}\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( $#ARGV >= 0 ) {
|
sub add_text($$) {
|
||||||
&do_file( shift @ARGV );
|
my @head = @{ $_[0] };
|
||||||
|
my @note = split /\n/, $_[1];
|
||||||
|
for my $n ( 0 .. $#note ) {
|
||||||
|
$head[ $#head + 1 ] = $note[$n];
|
||||||
|
}
|
||||||
|
return @head;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub end_note($$) {
|
||||||
|
my @head = @{ $_[0] };
|
||||||
|
my $note = $_[1];
|
||||||
|
$head[ $#head + 1 ] = " */";
|
||||||
|
my $notes;
|
||||||
|
if ( $note == 1 ) {
|
||||||
|
$notes = $note_1;
|
||||||
|
}
|
||||||
|
elsif ( $note == 2 ) {
|
||||||
|
$notes = $note_2;
|
||||||
|
}
|
||||||
|
elsif ( $note == 3 ) {
|
||||||
|
$notes = $note_3;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
$notes = "";
|
||||||
|
}
|
||||||
|
return &add_text( \@head, $notes );
|
||||||
|
}
|
||||||
|
|
||||||
|
sub hex_of($) {
|
||||||
|
my $text = shift;
|
||||||
|
if ($text) {
|
||||||
|
$text =~ s/^(0x|u\+)//i;
|
||||||
|
$text = "0x" . $text if ( $text =~ /^[[:xdigit:]]+$/ );
|
||||||
|
}
|
||||||
|
return $text;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub add($$) {
|
||||||
|
my @data = @{ $_[0] };
|
||||||
|
my $text = $_[1];
|
||||||
|
$data[ $#data + 1 ] = $text;
|
||||||
|
return @data;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub add_unmap($$) {
|
||||||
|
my @head = @{ $_[0] };
|
||||||
|
my %unmap = %{ $_[1] };
|
||||||
|
my %noted = %{ $_[2] };
|
||||||
|
my $title = $_[3];
|
||||||
|
my $macro = "un$title";
|
||||||
|
$macro .= "(code,dft)" unless ( $macro =~ /\(code/ );
|
||||||
|
$macro =~ s/code\)/code,dft\)/;
|
||||||
|
@head = &add( \@head, "" );
|
||||||
|
|
||||||
|
if (%unmap) {
|
||||||
|
my @codes = sort keys %unmap;
|
||||||
|
|
||||||
|
if ( $#codes > 0 ) {
|
||||||
|
@head = &add( \@head, "#define $macro \\" );
|
||||||
|
@head = &add( \@head, "\tswitch (code) { \\" );
|
||||||
|
for my $code ( sort keys %unmap ) {
|
||||||
|
my $note = $noted{$code};
|
||||||
|
my $pads = " ";
|
||||||
|
if ( $title =~ /_NRCS_/ ) {
|
||||||
|
$pads = sprintf( "%*s", 17 - length($code), " " );
|
||||||
|
$note =~ s/\t/ /;
|
||||||
|
}
|
||||||
|
@head = &add(
|
||||||
|
\@head,
|
||||||
|
sprintf(
|
||||||
|
"\t MAP(%s,%s%s)%s \\",
|
||||||
|
$code, $pads, $unmap{$code}, $note
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
@head = &add( \@head, "\t default: dft; break; \\" );
|
||||||
|
@head = &add( \@head, "\t}" );
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
@head = &add( \@head, "#define $macro /* nothing? */" );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
@head = &add( \@head, "#define $macro /* nothing */" );
|
||||||
|
}
|
||||||
|
return @head;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Read the current charsets data file, and format a new charsets.h file.
|
||||||
|
sub do_update($) {
|
||||||
|
my $file = shift;
|
||||||
|
my @data = &read_file($file);
|
||||||
|
return unless ( $#data >= 0 );
|
||||||
|
my @head;
|
||||||
|
my %noted;
|
||||||
|
my %unmap;
|
||||||
|
my $title = "";
|
||||||
|
my $state = 0;
|
||||||
|
my $ended = "";
|
||||||
|
my $extra = "";
|
||||||
|
my $notes = 0;
|
||||||
|
my $codep = 0;
|
||||||
|
|
||||||
|
for my $n ( 0 .. $#data ) {
|
||||||
|
my $data = $data[$n];
|
||||||
|
if ( $data =~ /^\s*#/ ) {
|
||||||
|
@head = &add( \@head, "/*" ) unless ( $state == 1 );
|
||||||
|
$data =~ s/#/ */;
|
||||||
|
@head = &add( \@head, $data );
|
||||||
|
$state = 1;
|
||||||
|
}
|
||||||
|
elsif ( $data =~ /^\s*$/ ) {
|
||||||
|
@head = &end_note( \@head, $notes++ ) if ( $state == 1 );
|
||||||
|
|
||||||
|
if ( $state >= 2 ) {
|
||||||
|
@head = &add( \@head, $ended );
|
||||||
|
@head = &add_unmap( \@head, \%unmap, \%noted, $title );
|
||||||
|
@head = &add( \@head, $extra ) if ( $extra ne "" );
|
||||||
|
}
|
||||||
|
@head = &add( \@head, "" );
|
||||||
|
|
||||||
|
$title = "";
|
||||||
|
%unmap = ();
|
||||||
|
$state = 0;
|
||||||
|
$ended = "";
|
||||||
|
$extra = "";
|
||||||
|
}
|
||||||
|
elsif ( $data =~ /^map_/ ) {
|
||||||
|
$title = $data;
|
||||||
|
@head = &end_note( \@head, $notes++ ) if ( $state == 1 );
|
||||||
|
$state = 2;
|
||||||
|
$codep = 0;
|
||||||
|
$codep = 94 if ( $data =~ /_DEC_/ );
|
||||||
|
$codep = 96 if ( $data =~ /_ISO_/ );
|
||||||
|
|
||||||
|
$data .= "(code)" unless ( $data =~ /\(code/ );
|
||||||
|
|
||||||
|
@head = &add( \@head, sprintf( "#define %s \\", $data ) );
|
||||||
|
@head = &add( \@head, sprintf( "\tbegin_CODEPAGE(%d) \\", $codep ) )
|
||||||
|
if ($codep);
|
||||||
|
@head = &add( \@head, "\tswitch (code) { \\" );
|
||||||
|
|
||||||
|
$ended = $codep ? "\t} \\\n\tend_CODEPAGE()" : "\t}";
|
||||||
|
|
||||||
|
# special case for map_DEC_Supp_Graphic
|
||||||
|
if ( $data =~ /\(code,dft\)/ ) {
|
||||||
|
$ended = "\t default: dft; break; \\\n" . $ended;
|
||||||
|
$extra = "\n#if OPT_WIDE_CHARS";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elsif (
|
||||||
|
$data =~ /^\s+(0x)?[[:xdigit:]]{2}
|
||||||
|
\s+(BLANK
|
||||||
|
|PUA\(\d\)
|
||||||
|
|UNDEF
|
||||||
|
|XK_\w+
|
||||||
|
|(0x|U\+)?[[:xdigit:]]{1,4})\s*/x
|
||||||
|
)
|
||||||
|
{
|
||||||
|
@head = &add( \@head, " */" ) if ( $state == 1 );
|
||||||
|
$state = 3;
|
||||||
|
my $note = "";
|
||||||
|
if ( $data =~ /#/ ) {
|
||||||
|
$note = $data;
|
||||||
|
$note =~ s/[^#]*#\s*//;
|
||||||
|
$note = "\t/* $note */" if ( $note ne "" );
|
||||||
|
$data =~ s/\s*#.*//;
|
||||||
|
}
|
||||||
|
$data =~ s/\s+/ /g;
|
||||||
|
$data =~ s/^ //;
|
||||||
|
$data =~ s/ $//;
|
||||||
|
my @fields = split /\s/, $data;
|
||||||
|
my $source = &hex_of( $fields[0] );
|
||||||
|
my $target = &hex_of( $fields[1] );
|
||||||
|
my $intern = &hex_of( $fields[2] );
|
||||||
|
my $macros = "UNI";
|
||||||
|
$macros = "MAP" if ( $target =~ /^XK_/ );
|
||||||
|
$macros = "XXX" if ( $target eq "UNDEF" );
|
||||||
|
$macros = "XXX" if ( $target =~ /PUA\(\d\)/ );
|
||||||
|
|
||||||
|
if ( $target ne $source ) {
|
||||||
|
$intern = $source unless ($intern);
|
||||||
|
}
|
||||||
|
my $item = sprintf( " %s(%s, %s)", $macros, $source, $target );
|
||||||
|
|
||||||
|
# fix formatting for the XK_-based VT220 definitions
|
||||||
|
if ( $codep == 0
|
||||||
|
and $title !~ /(Greek|Hebrew|Turkish)/
|
||||||
|
and index( $note, "\t/*" ) == 0 )
|
||||||
|
{
|
||||||
|
my $pads = 24 - length($item);
|
||||||
|
$item .= "\t" if ( $pads > 0 );
|
||||||
|
}
|
||||||
|
@head = &add( \@head, sprintf( "\t%s%s \\", $item, $note ) );
|
||||||
|
|
||||||
|
if ( defined $intern ) {
|
||||||
|
if ( $source ne $intern ) {
|
||||||
|
$unmap{$source} = $intern;
|
||||||
|
$noted{$source} = $note;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
printf STDERR "? unexpected data:\n\t%s\n", $data;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ( $state >= 2 ) {
|
||||||
|
@head = &add( \@head, $ended );
|
||||||
|
@head = &add_unmap( \@head, \%unmap, \%noted, $title );
|
||||||
|
@head = &add( \@head, $extra ) if ( $extra ne "" );
|
||||||
|
}
|
||||||
|
@head = &add( \@head, "#else" );
|
||||||
|
foreach my $key ( sort keys %wide_chars ) {
|
||||||
|
@head =
|
||||||
|
&add( \@head, sprintf( "#define %s(code)\t/* nothing */", $key ) );
|
||||||
|
@head = &add( \@head, sprintf( "#define un%s(code,dft) dft", $key ) );
|
||||||
|
}
|
||||||
|
@head = &add( \@head, "#endif /* OPT_WIDE_CHARS */" );
|
||||||
|
@head = &add( \@head, "" );
|
||||||
|
@head = &add( \@head, "#endif /* included_charsets_h */" );
|
||||||
|
|
||||||
|
my $origin = $file;
|
||||||
|
$origin =~ s/\.dat\b/.h/;
|
||||||
|
my $update = $origin . ".new";
|
||||||
|
unlink $update;
|
||||||
|
open( my $fh, ">", $update )
|
||||||
|
or die "Can't open > $update.txt: $!";
|
||||||
|
for my $n ( 0 .. $#head ) {
|
||||||
|
printf $fh "%s\n", $head[$n];
|
||||||
|
}
|
||||||
|
close $fh;
|
||||||
|
|
||||||
|
system("diff -u $origin $update") if $opt_v;
|
||||||
|
rename $update, $origin if $opt_x;
|
||||||
|
unlink $update;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub main::HELP_MESSAGE() {
|
||||||
|
printf STDERR <<EOF
|
||||||
|
Usage: $0 [options]
|
||||||
|
|
||||||
|
Options:
|
||||||
|
-d debug
|
||||||
|
-i import charset data from Unicode file
|
||||||
|
-v verbose
|
||||||
|
-x update charsets.h from $data_file
|
||||||
|
EOF
|
||||||
|
;
|
||||||
|
exit 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
$Getopt::Std::STANDARD_HELP_VERSION = 1;
|
||||||
|
&getopts('i:vx') || &main::HELP_MESSAGE;
|
||||||
|
$#ARGV >= 0 && &main::HELP_MESSAGE;
|
||||||
|
|
||||||
|
&do_import($opt_i) if ($opt_i);
|
||||||
|
&do_update($data_file);
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/* $XTermId: graphics.c,v 1.118 2022/05/16 23:35:50 tom Exp $ */
|
/* $XTermId: graphics.c,v 1.135 2024/05/11 09:49:08 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2013-2021,2022 by Ross Combs
|
* Copyright 2013-2023,2024 by Thomas E. Dickey
|
||||||
* Copyright 2013-2021,2022 by Thomas E. Dickey
|
* Copyright 2013-2022,2023 by Ross Combs
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -43,6 +43,12 @@
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <graphics.h>
|
#include <graphics.h>
|
||||||
|
|
||||||
|
#define OPT_INHERIT_COLORS 0
|
||||||
|
|
||||||
|
#if OPT_REGIS_GRAPHICS
|
||||||
|
#include <graphics_regis.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#undef DUMP_BITMAP
|
#undef DUMP_BITMAP
|
||||||
#undef DUMP_COLORS
|
#undef DUMP_COLORS
|
||||||
#undef DEBUG_PALETTE
|
#undef DEBUG_PALETTE
|
||||||
|
@ -278,7 +284,7 @@ draw_solid_pixel(Graphic *graphic, int x, int y, unsigned color)
|
||||||
y >= 0 && y < graphic->actual_height) {
|
y >= 0 && y < graphic->actual_height) {
|
||||||
_draw_pixel(graphic, x, y, color);
|
_draw_pixel(graphic, x, y, color);
|
||||||
if (color < MAX_COLOR_REGISTERS)
|
if (color < MAX_COLOR_REGISTERS)
|
||||||
graphic->color_registers_used[color] = 1;
|
graphic->color_registers_used[color] = True;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,7 +317,7 @@ draw_solid_rectangle(Graphic *graphic, int x1, int y1, int x2, int y2, unsigned
|
||||||
y2 = graphic->actual_height - 1;
|
y2 = graphic->actual_height - 1;
|
||||||
|
|
||||||
if (color < MAX_COLOR_REGISTERS)
|
if (color < MAX_COLOR_REGISTERS)
|
||||||
graphic->color_registers_used[color] = 1;
|
graphic->color_registers_used[color] = True;
|
||||||
for (y = y1; y <= y2; y++)
|
for (y = y1; y <= y2; y++)
|
||||||
for (x = x1; x <= x2; x++)
|
for (x = x1; x <= x2; x++)
|
||||||
_draw_pixel(graphic, x, y, color);
|
_draw_pixel(graphic, x, y, color);
|
||||||
|
@ -377,10 +383,13 @@ copy_overlapping_area(Graphic *graphic, int src_ul_x, int src_ul_y,
|
||||||
|
|
||||||
#define set_color_register(color_registers, color, pr, pg, pb) \
|
#define set_color_register(color_registers, color, pr, pg, pb) \
|
||||||
do { \
|
do { \
|
||||||
|
assert(color <= MAX_COLOR_REGISTERS); \
|
||||||
|
{ \
|
||||||
ColorRegister *reg = &color_registers[color]; \
|
ColorRegister *reg = &color_registers[color]; \
|
||||||
reg->r = (short) pr; \
|
reg->r = (short) pr; \
|
||||||
reg->g = (short) pg; \
|
reg->g = (short) pg; \
|
||||||
reg->b = (short) pb; \
|
reg->b = (short) pb; \
|
||||||
|
} \
|
||||||
} while (0)
|
} while (0)
|
||||||
|
|
||||||
/* Graphics which don't use private colors will act as if they are using a
|
/* Graphics which don't use private colors will act as if they are using a
|
||||||
|
@ -412,6 +421,26 @@ set_shared_color_register(unsigned color, int r, int g, int b)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
fetch_color_register(Graphic *graphic,
|
||||||
|
unsigned color,
|
||||||
|
ColorRegister *reg)
|
||||||
|
{
|
||||||
|
assert(color < MAX_COLOR_REGISTERS);
|
||||||
|
|
||||||
|
reg->r = -1;
|
||||||
|
reg->g = -1;
|
||||||
|
reg->b = -1;
|
||||||
|
|
||||||
|
if (graphic->color_registers_used[color]) {
|
||||||
|
if (graphic->private_colors) {
|
||||||
|
*reg = graphic->private_color_registers[color];
|
||||||
|
} else {
|
||||||
|
*reg = getSharedRegisters()[color];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
update_color_register(Graphic *graphic,
|
update_color_register(Graphic *graphic,
|
||||||
unsigned color,
|
unsigned color,
|
||||||
|
@ -427,7 +456,7 @@ update_color_register(Graphic *graphic,
|
||||||
if (graphic->color_registers_used[color]) {
|
if (graphic->color_registers_used[color]) {
|
||||||
graphic->dirty = True;
|
graphic->dirty = True;
|
||||||
}
|
}
|
||||||
graphic->color_registers_used[color] = 1;
|
graphic->color_registers_used[color] = True;
|
||||||
} else {
|
} else {
|
||||||
set_shared_color_register(color, r, g, b);
|
set_shared_color_register(color, r, g, b);
|
||||||
}
|
}
|
||||||
|
@ -470,17 +499,29 @@ find_color_register(ColorRegister const *color_registers, int r, int g, int b)
|
||||||
return (RegisterNum) closest_index;
|
return (RegisterNum) closest_index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if OPT_INHERIT_COLORS
|
||||||
static void
|
static void
|
||||||
init_color_registers(ColorRegister *color_registers, int graphics_termid)
|
copy_color_registers(Graphic *target, Graphic *source)
|
||||||
{
|
{
|
||||||
TRACE(("setting initial colors for terminal %d\n", graphics_termid));
|
memcpy(target->color_registers_used,
|
||||||
{
|
source->color_registers_used,
|
||||||
unsigned i;
|
sizeof(Boolean) * MAX_COLOR_REGISTERS);
|
||||||
|
|
||||||
for (i = 0U; i < MAX_COLOR_REGISTERS; i++) {
|
memcpy(target->private_color_registers,
|
||||||
set_color_register(color_registers, (RegisterNum) i, 0, 0, 0);
|
source->color_registers,
|
||||||
}
|
sizeof(ColorRegister) * MAX_COLOR_REGISTERS);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static void
|
||||||
|
init_color_registers(TScreen const *screen, ColorRegister *color_registers)
|
||||||
|
{
|
||||||
|
const int graphics_termid = GraphicsTermId(screen);
|
||||||
|
|
||||||
|
TRACE(("setting initial colors for terminal %d\n", graphics_termid));
|
||||||
|
memset(color_registers,
|
||||||
|
0,
|
||||||
|
sizeof(ColorRegister) * MAX_COLOR_REGISTERS);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* default color registers:
|
* default color registers:
|
||||||
|
@ -631,14 +672,14 @@ get_color_register_count(TScreen const *screen)
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
init_graphic(Graphic *graphic,
|
init_graphic(TScreen *screen,
|
||||||
|
Graphic *graphic,
|
||||||
unsigned type,
|
unsigned type,
|
||||||
int graphics_termid,
|
|
||||||
int charrow,
|
int charrow,
|
||||||
int charcol,
|
int charcol,
|
||||||
unsigned num_color_registers,
|
unsigned num_color_registers)
|
||||||
int private_colors)
|
|
||||||
{
|
{
|
||||||
|
int private_colors = screen->privatecolorregisters;
|
||||||
const unsigned max_pixels = (unsigned) (graphic->max_width *
|
const unsigned max_pixels = (unsigned) (graphic->max_width *
|
||||||
graphic->max_height);
|
graphic->max_height);
|
||||||
|
|
||||||
|
@ -647,7 +688,7 @@ init_graphic(Graphic *graphic,
|
||||||
graphic->hidden = False;
|
graphic->hidden = False;
|
||||||
graphic->dirty = True;
|
graphic->dirty = True;
|
||||||
memset(graphic->pixels, COLOR_HOLE & 0xff, max_pixels * sizeof(RegisterNum));
|
memset(graphic->pixels, COLOR_HOLE & 0xff, max_pixels * sizeof(RegisterNum));
|
||||||
memset(graphic->color_registers_used, 0, sizeof(graphic->color_registers_used));
|
memset(graphic->color_registers_used, False, sizeof(graphic->color_registers_used));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* text and graphics interactions:
|
* text and graphics interactions:
|
||||||
|
@ -680,8 +721,33 @@ init_graphic(Graphic *graphic,
|
||||||
|
|
||||||
graphic->private_colors = private_colors;
|
graphic->private_colors = private_colors;
|
||||||
if (graphic->private_colors) {
|
if (graphic->private_colors) {
|
||||||
|
#if OPT_INHERIT_COLORS
|
||||||
|
unsigned ii;
|
||||||
|
int max_charrow = -1;
|
||||||
|
Graphic *newest = NULL;
|
||||||
|
#endif
|
||||||
|
|
||||||
TRACE(("using private color registers\n"));
|
TRACE(("using private color registers\n"));
|
||||||
init_color_registers(graphic->private_color_registers, graphics_termid);
|
|
||||||
|
#if OPT_INHERIT_COLORS
|
||||||
|
FOR_EACH_SLOT(ii) {
|
||||||
|
Graphic *check;
|
||||||
|
if (!(check = getActiveSlot(ii)))
|
||||||
|
continue;
|
||||||
|
if (!newest || check->charrow >= max_charrow) {
|
||||||
|
max_charrow = check->charrow;
|
||||||
|
newest = check;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (newest != NULL && newest != graphic) {
|
||||||
|
copy_color_registers(graphic, newest);
|
||||||
|
} else {
|
||||||
|
init_color_registers(screen, graphic->private_color_registers);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
init_color_registers(screen, graphic->private_color_registers);
|
||||||
|
#endif
|
||||||
graphic->color_registers = graphic->private_color_registers;
|
graphic->color_registers = graphic->private_color_registers;
|
||||||
} else {
|
} else {
|
||||||
TRACE(("using shared color registers\n"));
|
TRACE(("using shared color registers\n"));
|
||||||
|
@ -697,15 +763,17 @@ init_graphic(Graphic *graphic,
|
||||||
Graphic *
|
Graphic *
|
||||||
get_new_graphic(XtermWidget xw, int charrow, int charcol, unsigned type)
|
get_new_graphic(XtermWidget xw, int charrow, int charcol, unsigned type)
|
||||||
{
|
{
|
||||||
TScreen const *screen = TScreenOf(xw);
|
TScreen *screen = TScreenOf(xw);
|
||||||
const int bufferid = screen->whichBuf;
|
const int bufferid = screen->whichBuf;
|
||||||
const int graphics_termid = GraphicsTermId(screen);
|
|
||||||
Graphic *graphic = NULL;
|
Graphic *graphic = NULL;
|
||||||
unsigned ii;
|
unsigned ii;
|
||||||
|
|
||||||
|
TRACE(("get_new_graphic %d,%d type %d\n", charrow, charcol, type));
|
||||||
|
|
||||||
FOR_EACH_SLOT(ii) {
|
FOR_EACH_SLOT(ii) {
|
||||||
if ((graphic = getInactiveSlot(screen, ii))) {
|
if ((graphic = getInactiveSlot(screen, ii))) {
|
||||||
TRACE(("using fresh graphic index=%u id=%u\n", ii, next_graphic_id));
|
TRACE(("using fresh graphic index %u as id %u\n",
|
||||||
|
ii, next_graphic_id));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -714,16 +782,19 @@ get_new_graphic(XtermWidget xw, int charrow, int charcol, unsigned type)
|
||||||
if (!graphic) {
|
if (!graphic) {
|
||||||
int min_charrow = 0;
|
int min_charrow = 0;
|
||||||
Graphic *min_graphic = NULL;
|
Graphic *min_graphic = NULL;
|
||||||
|
if_TRACE(unsigned best_ii = (1 + MAX_GRAPHICS));
|
||||||
|
|
||||||
FOR_EACH_SLOT(ii) {
|
FOR_EACH_SLOT(ii) {
|
||||||
if (!(graphic = getActiveSlot(ii)))
|
if (!(graphic = getActiveSlot(ii)))
|
||||||
continue;
|
continue;
|
||||||
if (!min_graphic || graphic->charrow < min_charrow) {
|
if (!min_graphic || graphic->charrow < min_charrow) {
|
||||||
|
if_TRACE(best_ii = ii);
|
||||||
min_charrow = graphic->charrow;
|
min_charrow = graphic->charrow;
|
||||||
min_graphic = graphic;
|
min_graphic = graphic;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TRACE(("recycling old graphic index=%u id=%u\n", ii, next_graphic_id));
|
TRACE(("recycling old graphic index %u as id %u\n",
|
||||||
|
best_ii, next_graphic_id));
|
||||||
graphic = min_graphic;
|
graphic = min_graphic;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -733,13 +804,12 @@ get_new_graphic(XtermWidget xw, int charrow, int charcol, unsigned type)
|
||||||
graphic->xw = xw;
|
graphic->xw = xw;
|
||||||
graphic->bufferid = bufferid;
|
graphic->bufferid = bufferid;
|
||||||
graphic->id = next_graphic_id++;
|
graphic->id = next_graphic_id++;
|
||||||
init_graphic(graphic,
|
init_graphic(screen,
|
||||||
|
graphic,
|
||||||
type,
|
type,
|
||||||
graphics_termid,
|
|
||||||
charrow,
|
charrow,
|
||||||
charcol,
|
charcol,
|
||||||
num_color_registers,
|
num_color_registers);
|
||||||
screen->privatecolorregisters);
|
|
||||||
}
|
}
|
||||||
return graphic;
|
return graphic;
|
||||||
}
|
}
|
||||||
|
@ -944,7 +1014,11 @@ refresh_graphic(TScreen const *screen,
|
||||||
holes, total, out_of_range));
|
holes, total, out_of_range));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MAX_PCT 100. /* HLS uses this for L, S percentages */
|
||||||
|
#define MAX_RGB 100. /* use this rather than 255 */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
* In HLS, H is an angle, in degrees, and L, S are percentages.
|
||||||
* Primary color hues:
|
* Primary color hues:
|
||||||
* blue: 0 degrees
|
* blue: 0 degrees
|
||||||
* red: 120 degrees
|
* red: 120 degrees
|
||||||
|
@ -953,12 +1027,19 @@ refresh_graphic(TScreen const *screen,
|
||||||
void
|
void
|
||||||
hls2rgb(int h, int l, int s, short *r, short *g, short *b)
|
hls2rgb(int h, int l, int s, short *r, short *g, short *b)
|
||||||
{
|
{
|
||||||
const int hs = ((h + 240) / 60) % 6;
|
int hs;
|
||||||
const double lv = l / 100.0;
|
const double lv = l / MAX_PCT;
|
||||||
const double sv = s / 100.0;
|
const double sv = s / MAX_PCT;
|
||||||
double c, x, m, c2;
|
double c, x, m, c2;
|
||||||
double r1, g1, b1;
|
double r1, g1, b1;
|
||||||
|
|
||||||
|
h = h - 120; /* Rotate so that blue is at 0 degrees */
|
||||||
|
while (h < 0)
|
||||||
|
h += 360; /* Normalize to 0 to 360, */
|
||||||
|
while (h >= 360)
|
||||||
|
h -= 360;
|
||||||
|
hs = ((h + 59) / 60) % 6;
|
||||||
|
|
||||||
if (s == 0) {
|
if (s == 0) {
|
||||||
*r = *g = *b = (short) l;
|
*r = *g = *b = (short) l;
|
||||||
return;
|
return;
|
||||||
|
@ -1004,15 +1085,15 @@ hls2rgb(int h, int l, int s, short *r, short *g, short *b)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
TRACE(("Bad HLS input: [%d,%d,%d], returning white\n", h, l, s));
|
TRACE(("Bad HLS input: [%d,%d,%d], returning white\n", h, l, s));
|
||||||
*r = (short) 100;
|
*r = (short) 360;
|
||||||
*g = (short) 100;
|
*g = (short) MAX_PCT;
|
||||||
*b = (short) 100;
|
*b = (short) MAX_PCT;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
*r = (short) ((r1 + m) * 100.0 + 0.5);
|
*r = (short) ((r1 + m) * MAX_PCT + 0.5);
|
||||||
*g = (short) ((g1 + m) * 100.0 + 0.5);
|
*g = (short) ((g1 + m) * MAX_PCT + 0.5);
|
||||||
*b = (short) ((b1 + m) * 100.0 + 0.5);
|
*b = (short) ((b1 + m) * MAX_PCT + 0.5);
|
||||||
|
|
||||||
if (*r < 0)
|
if (*r < 0)
|
||||||
*r = 0;
|
*r = 0;
|
||||||
|
@ -1028,6 +1109,49 @@ hls2rgb(int h, int l, int s, short *r, short *g, short *b)
|
||||||
*b = 100;
|
*b = 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
rgb2hls(int r, int g, int b, short *h, short *l, short *s)
|
||||||
|
{
|
||||||
|
const double scaled_r = (r / MAX_RGB);
|
||||||
|
const double scaled_g = (g / MAX_RGB);
|
||||||
|
const double scaled_b = (b / MAX_RGB);
|
||||||
|
|
||||||
|
const double min_scale = Min(Min(scaled_r, scaled_g), scaled_b);
|
||||||
|
const double max_scale = Max(Max(scaled_r, scaled_g), scaled_b);
|
||||||
|
const double dif_scale = max_scale - min_scale;
|
||||||
|
|
||||||
|
double h_work = 0.;
|
||||||
|
double s_work = 0.;
|
||||||
|
double l_work = ((max_scale + min_scale) / 2.);
|
||||||
|
|
||||||
|
if (dif_scale != 0.) {
|
||||||
|
if (l_work < 0.5f) {
|
||||||
|
s_work = (dif_scale / (max_scale + min_scale));
|
||||||
|
} else {
|
||||||
|
s_work = (dif_scale / (2. - max_scale - min_scale));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (scaled_r == max_scale) {
|
||||||
|
h_work = (scaled_g - scaled_b) / dif_scale;
|
||||||
|
} else if (scaled_g == max_scale) {
|
||||||
|
h_work = 2. + (scaled_b - scaled_r) / dif_scale;
|
||||||
|
} else if (scaled_b == max_scale) {
|
||||||
|
h_work = 4. + (scaled_r - scaled_g) / dif_scale;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
h_work *= 60.;
|
||||||
|
if (h_work < 0)
|
||||||
|
h_work += 360.;
|
||||||
|
|
||||||
|
s_work *= MAX_RGB;
|
||||||
|
l_work *= MAX_RGB;
|
||||||
|
|
||||||
|
*h = (short) h_work;
|
||||||
|
*s = (short) s_work;
|
||||||
|
*l = (short) l_work;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
dump_graphic(Graphic const *graphic)
|
dump_graphic(Graphic const *graphic)
|
||||||
{
|
{
|
||||||
|
@ -1745,7 +1869,7 @@ chararea_clear_displayed_graphics(TScreen const *screen,
|
||||||
void
|
void
|
||||||
reset_displayed_graphics(TScreen const *screen)
|
reset_displayed_graphics(TScreen const *screen)
|
||||||
{
|
{
|
||||||
init_color_registers(getSharedRegisters(), GraphicsTermId(screen));
|
init_color_registers(screen, getSharedRegisters());
|
||||||
|
|
||||||
if (used_graphics) {
|
if (used_graphics) {
|
||||||
unsigned ii;
|
unsigned ii;
|
||||||
|
@ -1754,6 +1878,9 @@ reset_displayed_graphics(TScreen const *screen)
|
||||||
FOR_EACH_SLOT(ii) {
|
FOR_EACH_SLOT(ii) {
|
||||||
deactivateSlot(ii);
|
deactivateSlot(ii);
|
||||||
}
|
}
|
||||||
|
#if OPT_REGIS_GRAPHICS
|
||||||
|
reset_regis();
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/* $XTermId: graphics.h,v 1.29 2022/02/22 23:36:19 tom Exp $ */
|
/* $XTermId: graphics.h,v 1.32 2023/09/28 00:24:13 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2013-2016,2022 by Ross Combs
|
* Copyright 2013-2022,2023 by Ross Combs
|
||||||
* Copyright 2013-2016,2022 by Thomas E. Dickey
|
* Copyright 2013-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -66,7 +66,7 @@ typedef struct {
|
||||||
RegisterNum *pixels;
|
RegisterNum *pixels;
|
||||||
ColorRegister *private_color_registers;
|
ColorRegister *private_color_registers;
|
||||||
ColorRegister *color_registers;
|
ColorRegister *color_registers;
|
||||||
char color_registers_used[MAX_COLOR_REGISTERS];
|
Boolean color_registers_used[MAX_COLOR_REGISTERS];
|
||||||
XtermWidget xw;
|
XtermWidget xw;
|
||||||
int max_width; /* largest image which can be stored */
|
int max_width; /* largest image which can be stored */
|
||||||
int max_height; /* largest image which can be stored */
|
int max_height; /* largest image which can be stored */
|
||||||
|
@ -93,8 +93,10 @@ extern void draw_solid_pixel(Graphic */* graphic */, int /* x */, int /* y */, u
|
||||||
extern void draw_solid_rectangle(Graphic */* graphic */, int /* x1 */, int /* y1 */, int /* x2 */, int /* y2 */, unsigned /* color */);
|
extern void draw_solid_rectangle(Graphic */* graphic */, int /* x1 */, int /* y1 */, int /* x2 */, int /* y2 */, unsigned /* color */);
|
||||||
extern void copy_overlapping_area(Graphic */* graphic */, int /* src_x */, int /* src_y */, int /* dst_x */, int /* dst_y */, unsigned /* w */, unsigned /* h */, unsigned /* default_color */);
|
extern void copy_overlapping_area(Graphic */* graphic */, int /* src_x */, int /* src_y */, int /* dst_x */, int /* dst_y */, unsigned /* w */, unsigned /* h */, unsigned /* default_color */);
|
||||||
extern void hls2rgb(int /* h */, int /* l */, int /* s */, short */* r */, short */* g */, short */* b */);
|
extern void hls2rgb(int /* h */, int /* l */, int /* s */, short */* r */, short */* g */, short */* b */);
|
||||||
|
extern void rgb2hls(int /* r */, int /* g */, int /* b */, short */* h */, short */* l */, short */* s */);
|
||||||
extern void dump_graphic(Graphic const */* graphic */);
|
extern void dump_graphic(Graphic const */* graphic */);
|
||||||
extern unsigned get_color_register_count(TScreen const */* screen */);
|
extern unsigned get_color_register_count(TScreen const */* screen */);
|
||||||
|
extern void fetch_color_register(Graphic */* graphic */, unsigned /* color */, ColorRegister* /* reg */);
|
||||||
extern void update_color_register(Graphic */* graphic */, unsigned /* color */, int /* r */, int /* g */, int /* b */);
|
extern void update_color_register(Graphic */* graphic */, unsigned /* color */, int /* r */, int /* g */, int /* b */);
|
||||||
extern RegisterNum find_color_register(ColorRegister const */* color_registers */, int /* r */, int /* g */, int /* b */);
|
extern RegisterNum find_color_register(ColorRegister const */* color_registers */, int /* r */, int /* g */, int /* b */);
|
||||||
extern void chararea_clear_displayed_graphics(TScreen const */* screen */, int /* leftcol */, int /* toprow */, int /* ncols */, int /* nrows */);
|
extern void chararea_clear_displayed_graphics(TScreen const */* screen */, int /* leftcol */, int /* toprow */, int /* ncols */, int /* nrows */);
|
||||||
|
@ -117,6 +119,7 @@ extern void noleaks_graphics(Display */* dpy */);
|
||||||
#define draw_solid_rectangle(graphic, x1, y1, x2, y2, color) /* nothing */
|
#define draw_solid_rectangle(graphic, x1, y1, x2, y2, color) /* nothing */
|
||||||
#define copy_overlapping_area(graphic, src_x, src_y, dst_x, dst_y, w, h, default_color) /* nothing */
|
#define copy_overlapping_area(graphic, src_x, src_y, dst_x, dst_y, w, h, default_color) /* nothing */
|
||||||
#define hls2rgb(h, l, s, r, g, b) /* nothing */
|
#define hls2rgb(h, l, s, r, g, b) /* nothing */
|
||||||
|
#define rgb2hls(r, g, b, h, l, s) /* nothing */
|
||||||
#define dump_graphic(graphic) /* nothing */
|
#define dump_graphic(graphic) /* nothing */
|
||||||
#define get_color_register_count(screen) /* nothing */
|
#define get_color_register_count(screen) /* nothing */
|
||||||
#define update_color_register(graphic, color, r, g, b) /* nothing */
|
#define update_color_register(graphic, color, r, g, b) /* nothing */
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/* $XTermId: graphics_regis.c,v 1.130 2022/05/16 23:31:18 tom Exp $ */
|
/* $XTermId: graphics_regis.c,v 1.149 2023/10/08 23:11:35 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2014-2021,2022 by Ross Combs
|
* Copyright 2014-2022,2023 by Ross Combs
|
||||||
* Copyright 2014-2021,2022 by Thomas E. Dickey
|
* Copyright 2014-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -68,7 +68,7 @@
|
||||||
#undef DEBUG_COMPUTED_FONT_METRICS
|
#undef DEBUG_COMPUTED_FONT_METRICS
|
||||||
#undef DEBUG_FONT_NAME
|
#undef DEBUG_FONT_NAME
|
||||||
#undef DEBUG_FONT_SIZE_SEARCH
|
#undef DEBUG_FONT_SIZE_SEARCH
|
||||||
#undef DEBUG_XFT_GLYPH
|
#undef DEBUG_XFT_GLYPH_COPY
|
||||||
#undef DEBUG_GLYPH_RETRIEVAL
|
#undef DEBUG_GLYPH_RETRIEVAL
|
||||||
#undef DEBUG_XFT_GLYPH_LOADING
|
#undef DEBUG_XFT_GLYPH_LOADING
|
||||||
#undef DEBUG_LOAD
|
#undef DEBUG_LOAD
|
||||||
|
@ -119,6 +119,14 @@ typedef struct RegisTextControls {
|
||||||
int slant; /* for italic/oblique */
|
int slant; /* for italic/oblique */
|
||||||
} RegisTextControls;
|
} RegisTextControls;
|
||||||
|
|
||||||
|
#define S_QUOTE '\''
|
||||||
|
#define D_QUOTE '"'
|
||||||
|
|
||||||
|
#define isQuote(ch) ((ch) == S_QUOTE || (ch) == D_QUOTE)
|
||||||
|
#define PickQuote(ch) ((ch) == S_QUOTE ? D_QUOTE : S_QUOTE)
|
||||||
|
|
||||||
|
#define isName(c) ((c) == '_' || isalnum(CharOf(c)))
|
||||||
|
|
||||||
#define FixedCopy(dst, src, len) strncpy(dst, src, len - 1)[len - 1] = '\0'
|
#define FixedCopy(dst, src, len) strncpy(dst, src, len - 1)[len - 1] = '\0'
|
||||||
#define CopyFontname(dst, src) FixedCopy(dst, src, (size_t) REGIS_FONTNAME_LEN)
|
#define CopyFontname(dst, src) FixedCopy(dst, src, (size_t) REGIS_FONTNAME_LEN)
|
||||||
|
|
||||||
|
@ -538,8 +546,8 @@ draw_or_save_patterned_pixel(RegisGraphicsContext *context, int x, int y)
|
||||||
static int
|
static int
|
||||||
sort_points(void const *l, void const *r)
|
sort_points(void const *l, void const *r)
|
||||||
{
|
{
|
||||||
RegisPoint const *const lp = (RegisPoint const *)l;
|
RegisPoint const *const lp = (RegisPoint const *) l;
|
||||||
RegisPoint const *const rp = (RegisPoint const *)r;
|
RegisPoint const *const rp = (RegisPoint const *) r;
|
||||||
|
|
||||||
if (lp->y < rp->y)
|
if (lp->y < rp->y)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -580,9 +588,6 @@ draw_shaded_polygon(RegisGraphicsContext *context)
|
||||||
for (p = 0U; p < context->fill_point_count; p++) {
|
for (p = 0U; p < context->fill_point_count; p++) {
|
||||||
int new_x = context->fill_points[p].x;
|
int new_x = context->fill_points[p].x;
|
||||||
int new_y = context->fill_points[p].y;
|
int new_y = context->fill_points[p].y;
|
||||||
#if 0
|
|
||||||
printf("got %d,%d (%d,%d) inside=%d\n", new_x, new_y, old_x, old_y, inside);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME: This is using pixels to represent lines which loses
|
* FIXME: This is using pixels to represent lines which loses
|
||||||
|
@ -642,9 +647,6 @@ draw_filled_polygon(RegisGraphicsContext *context)
|
||||||
for (p = 0U; p < context->fill_point_count; p++) {
|
for (p = 0U; p < context->fill_point_count; p++) {
|
||||||
int new_x = context->fill_points[p].x;
|
int new_x = context->fill_points[p].x;
|
||||||
int new_y = context->fill_points[p].y;
|
int new_y = context->fill_points[p].y;
|
||||||
#if 0
|
|
||||||
printf("got %d,%d (%d,%d) inside=%d\n", new_x, new_y, old_x, old_y, inside);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* FIXME: This is using pixels to represent lines which loses
|
* FIXME: This is using pixels to represent lines which loses
|
||||||
|
@ -1826,32 +1828,54 @@ get_xft_glyph_dimensions(XtermWidget xw, XftFont *font, unsigned *w,
|
||||||
|
|
||||||
#define FONT_SIZE_CACHE_SIZE 32U
|
#define FONT_SIZE_CACHE_SIZE 32U
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
XftFont *font_data;
|
||||||
|
char fontname[REGIS_FONTNAME_LEN];
|
||||||
|
unsigned maxw, maxh, max_pixels;
|
||||||
|
unsigned targeth;
|
||||||
|
unsigned w, h;
|
||||||
|
unsigned xmin;
|
||||||
|
unsigned ymin;
|
||||||
|
} FONT_CACHE;
|
||||||
|
|
||||||
|
static FONT_CACHE font_cache[FONT_SIZE_CACHE_SIZE];
|
||||||
|
|
||||||
|
static void
|
||||||
|
close_xft_font(XtermWidget xw, XftFont *font)
|
||||||
|
{
|
||||||
|
if (font != NULL) {
|
||||||
|
Display *display = XtDisplay(xw);
|
||||||
|
unsigned ii;
|
||||||
|
for (ii = 0; ii < FONT_SIZE_CACHE_SIZE; ++ii) {
|
||||||
|
if (font == font_cache[ii].font_data) {
|
||||||
|
font_cache[ii].font_data = NULL;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
XftFontClose(display, font);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Find the font pixel size which returns the font which is closest to the given
|
/* Find the font pixel size which returns the font which is closest to the given
|
||||||
* maxw and maxh without overstepping either dimension.
|
* maxw and maxh without overstepping either dimension.
|
||||||
*/
|
*/
|
||||||
static XftFont *
|
static XftFont *
|
||||||
find_best_xft_font_size(XtermWidget xw,
|
find_best_xft_font_size(XtermWidget xw,
|
||||||
char const *fontname,
|
char const *fontname,
|
||||||
unsigned maxw, unsigned maxh, unsigned max_pixels,
|
unsigned maxw,
|
||||||
unsigned *w, unsigned *h,
|
unsigned maxh,
|
||||||
unsigned *xmin, unsigned *ymin)
|
unsigned max_pixels,
|
||||||
|
unsigned *w,
|
||||||
|
unsigned *h,
|
||||||
|
unsigned *xmin,
|
||||||
|
unsigned *ymin)
|
||||||
{
|
{
|
||||||
Display *display = XtDisplay(xw);
|
Display *display = XtDisplay(xw);
|
||||||
Screen *screen = XtScreen(xw);
|
Screen *screen = XtScreen(xw);
|
||||||
XftFont *font;
|
XftFont *font;
|
||||||
unsigned targeth;
|
unsigned targeth;
|
||||||
unsigned ii, cacheindex;
|
unsigned ii;
|
||||||
/* FIXME: change cache to just cache the final result and put it in a
|
FONT_CACHE *cp = NULL;
|
||||||
* wrapper function
|
|
||||||
*/
|
|
||||||
static struct {
|
|
||||||
char fontname[REGIS_FONTNAME_LEN];
|
|
||||||
unsigned maxw, maxh, max_pixels;
|
|
||||||
unsigned targeth;
|
|
||||||
unsigned w, h;
|
|
||||||
unsigned xmin;
|
|
||||||
unsigned ymin;
|
|
||||||
} cache[FONT_SIZE_CACHE_SIZE];
|
|
||||||
|
|
||||||
assert(display);
|
assert(display);
|
||||||
assert(screen);
|
assert(screen);
|
||||||
|
@ -1862,24 +1886,36 @@ find_best_xft_font_size(XtermWidget xw,
|
||||||
assert(ymin);
|
assert(ymin);
|
||||||
|
|
||||||
#ifdef DEBUG_FONT_SIZE_SEARCH
|
#ifdef DEBUG_FONT_SIZE_SEARCH
|
||||||
TRACE(("determining best size of font '%s' for %ux%u glyph with max_pixels=%u\n",
|
TRACE(("determining best size of font \"%s\" for %ux%u glyph with max_pixels=%u\n",
|
||||||
fontname, maxw, maxh, max_pixels));
|
fontname, maxw, maxh, max_pixels));
|
||||||
#endif
|
#endif
|
||||||
cacheindex = FONT_SIZE_CACHE_SIZE;
|
|
||||||
for (ii = 0U; ii < FONT_SIZE_CACHE_SIZE; ii++) {
|
for (ii = 0U; ii < FONT_SIZE_CACHE_SIZE; ii++) {
|
||||||
if (cache[ii].maxw == maxw && cache[ii].maxh == maxh &&
|
if (font_cache[ii].maxw == maxw &&
|
||||||
cache[ii].max_pixels == max_pixels &&
|
font_cache[ii].maxh == maxh &&
|
||||||
strcmp(cache[ii].fontname, fontname) == 0) {
|
font_cache[ii].max_pixels == max_pixels &&
|
||||||
cacheindex = ii;
|
strcmp(font_cache[ii].fontname, fontname) == 0) {
|
||||||
|
cp = &font_cache[ii];
|
||||||
|
if (cp->font_data) {
|
||||||
|
*w = cp->w;
|
||||||
|
*h = cp->h;
|
||||||
|
*xmin = cp->xmin;
|
||||||
|
*ymin = cp->ymin;
|
||||||
|
return cp->font_data;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (cacheindex < FONT_SIZE_CACHE_SIZE) {
|
if (cp != NULL) {
|
||||||
targeth = cache[cacheindex].targeth;
|
targeth = cp->targeth;
|
||||||
} else {
|
} else {
|
||||||
targeth = maxh * 10U + 5U;
|
targeth = maxh * 8U + 5U;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define MAX_TARGETH 720U /* above this level, fontconfig chokes */
|
||||||
|
if (targeth > MAX_TARGETH)
|
||||||
|
targeth = MAX_TARGETH;
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
if (targeth <= 5U) {
|
if (targeth <= 5U) {
|
||||||
TRACE(("Giving up finding suitable Xft font size for \"%s\" at %ux%u.\n",
|
TRACE(("Giving up finding suitable Xft font size for \"%s\" at %ux%u.\n",
|
||||||
|
@ -1917,17 +1953,8 @@ find_best_xft_font_size(XtermWidget xw,
|
||||||
TRACE(("trying targeth=%g\n", targeth / 10.0));
|
TRACE(("trying targeth=%g\n", targeth / 10.0));
|
||||||
#endif
|
#endif
|
||||||
XftPatternBuild(pat,
|
XftPatternBuild(pat,
|
||||||
#if 0
|
|
||||||
/* arbitrary value */
|
|
||||||
XFT_SIZE, XftTypeDouble, 12.0,
|
|
||||||
#endif
|
|
||||||
XFT_PIXEL_SIZE, XftTypeDouble, (double)
|
XFT_PIXEL_SIZE, XftTypeDouble, (double)
|
||||||
targeth / 10.0,
|
targeth / 10.0,
|
||||||
#if 0
|
|
||||||
XFT_CHAR_WIDTH, XftTypeInteger, (int) maxw,
|
|
||||||
XFT_CHAR_HEIGHT, XftTypeInteger, (int)
|
|
||||||
(targeth / 10U),
|
|
||||||
#endif
|
|
||||||
XFT_SPACING, XftTypeInteger, XFT_MONO,
|
XFT_SPACING, XftTypeInteger, XFT_MONO,
|
||||||
XFT_SLANT, XftTypeInteger, 0,
|
XFT_SLANT, XftTypeInteger, 0,
|
||||||
XFT_ANTIALIAS, XftTypeBool, False,
|
XFT_ANTIALIAS, XftTypeBool, False,
|
||||||
|
@ -1942,15 +1969,7 @@ find_best_xft_font_size(XtermWidget xw,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!font) {
|
if (!font) {
|
||||||
#ifdef DEBUG_FONT_SIZE_SEARCH
|
TRACE(("unable to open a monospaced Xft font matching \"%s\" with pixelsize %g\n",
|
||||||
{
|
|
||||||
char buffer[1024];
|
|
||||||
|
|
||||||
if (XftNameUnparse(font->pattern, buffer, (int) sizeof(buffer)))
|
|
||||||
printf("font name unparsed: \"%s\"\n", buffer);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
TRACE(("unable to open a monospaced Xft font matching '%s' with pixelsize %g\n",
|
|
||||||
fontname, targeth / 10.0));
|
fontname, targeth / 10.0));
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -1966,12 +1985,12 @@ find_best_xft_font_size(XtermWidget xw,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (cacheindex < FONT_SIZE_CACHE_SIZE &&
|
if (cp != NULL &&
|
||||||
targeth == cache[cacheindex].targeth) {
|
targeth == cp->targeth) {
|
||||||
*w = cache[cacheindex].w;
|
*w = cp->w;
|
||||||
*h = cache[cacheindex].h;
|
*h = cp->h;
|
||||||
*xmin = cache[cacheindex].xmin;
|
*xmin = cp->xmin;
|
||||||
*ymin = cache[cacheindex].ymin;
|
*ymin = cp->ymin;
|
||||||
} else {
|
} else {
|
||||||
get_xft_glyph_dimensions(xw, font, w, h, xmin, ymin);
|
get_xft_glyph_dimensions(xw, font, w, h, xmin, ymin);
|
||||||
|
|
||||||
|
@ -1990,28 +2009,26 @@ find_best_xft_font_size(XtermWidget xw,
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (*h > maxh) {
|
if (*h > maxh) {
|
||||||
|
float ratio = (float) (*h) / (float) maxh;
|
||||||
XftFontClose(display, font);
|
XftFontClose(display, font);
|
||||||
#ifdef DEBUG_FONT_SIZE_SEARCH
|
#ifdef DEBUG_FONT_SIZE_SEARCH
|
||||||
TRACE(("got %ux%u glyph; too tall; reducing target size\n", *w, *h));
|
TRACE(("got %ux%u glyph; too tall; reducing target size\n", *w, *h));
|
||||||
#endif
|
#endif
|
||||||
if (*h > 2U * maxh) {
|
if (targeth >= 10U && ratio > 1.1) {
|
||||||
targeth /= (*h / maxh);
|
targeth = (unsigned) ((float) targeth / ratio);
|
||||||
} else if (targeth > 10U && *h > maxh + 1U) {
|
|
||||||
targeth -= 10U;
|
|
||||||
} else {
|
} else {
|
||||||
targeth--;
|
targeth--;
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (*w > maxw) {
|
if (*w > maxw) {
|
||||||
|
float ratio = (float) (*w) / (float) maxw;
|
||||||
XftFontClose(display, font);
|
XftFontClose(display, font);
|
||||||
#ifdef DEBUG_FONT_SIZE_SEARCH
|
#ifdef DEBUG_FONT_SIZE_SEARCH
|
||||||
TRACE(("got %ux%u glyph; too wide; reducing target size\n", *w, *h));
|
TRACE(("got %ux%u glyph; too wide; reducing target size\n", *w, *h));
|
||||||
#endif
|
#endif
|
||||||
if (*w > 2U * maxw) {
|
if (targeth >= 10U && ratio > 1.1) {
|
||||||
targeth /= (*w / maxw);
|
targeth = (unsigned) ((float) targeth / ratio);
|
||||||
} else if (targeth > 10U && *w > maxw + 1U) {
|
|
||||||
targeth -= 10U;
|
|
||||||
} else {
|
} else {
|
||||||
targeth--;
|
targeth--;
|
||||||
}
|
}
|
||||||
|
@ -2052,34 +2069,32 @@ find_best_xft_font_size(XtermWidget xw,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (cacheindex == FONT_SIZE_CACHE_SIZE) {
|
if (cp == NULL) {
|
||||||
for (ii = 0U; ii < FONT_SIZE_CACHE_SIZE; ii++) {
|
for (ii = 0U; ii < FONT_SIZE_CACHE_SIZE; ii++) {
|
||||||
if (cache[ii].maxw == 0U || cache[ii].maxh == 0U ||
|
if (font_cache[ii].maxw == 0U ||
|
||||||
cache[ii].max_pixels == 0U) {
|
font_cache[ii].maxh == 0U ||
|
||||||
CopyFontname(cache[ii].fontname, fontname);
|
font_cache[ii].max_pixels == 0U) {
|
||||||
cache[ii].maxw = maxw;
|
cp = &font_cache[ii];
|
||||||
cache[ii].maxh = maxh;
|
|
||||||
cache[ii].max_pixels = max_pixels;
|
|
||||||
cache[ii].targeth = targeth;
|
|
||||||
cache[ii].w = *w;
|
|
||||||
cache[ii].h = *h;
|
|
||||||
cache[ii].xmin = *xmin;
|
|
||||||
cache[ii].ymin = *ymin;
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (ii == FONT_SIZE_CACHE_SIZE) {
|
if (cp == NULL) {
|
||||||
ii = targeth % FONT_SIZE_CACHE_SIZE;
|
ii = targeth % FONT_SIZE_CACHE_SIZE;
|
||||||
CopyFontname(cache[ii].fontname, fontname);
|
cp = &font_cache[ii];
|
||||||
cache[ii].maxw = maxw;
|
close_xft_font(xw, cp->font_data);
|
||||||
cache[ii].maxh = maxh;
|
|
||||||
cache[ii].max_pixels = max_pixels;
|
|
||||||
cache[ii].targeth = targeth;
|
|
||||||
cache[ii].w = *w;
|
|
||||||
cache[ii].h = *h;
|
|
||||||
cache[ii].xmin = *xmin;
|
|
||||||
cache[ii].ymin = *ymin;
|
|
||||||
}
|
}
|
||||||
|
CopyFontname(cp->fontname, fontname);
|
||||||
|
cp->maxw = maxw;
|
||||||
|
cp->maxh = maxh;
|
||||||
|
cp->max_pixels = max_pixels;
|
||||||
|
cp->targeth = targeth;
|
||||||
|
cp->w = *w;
|
||||||
|
cp->h = *h;
|
||||||
|
cp->xmin = *xmin;
|
||||||
|
cp->ymin = *ymin;
|
||||||
|
}
|
||||||
|
if (cp != NULL) {
|
||||||
|
cp->font_data = font;
|
||||||
}
|
}
|
||||||
return font;
|
return font;
|
||||||
}
|
}
|
||||||
|
@ -2102,7 +2117,6 @@ get_xft_bitmap_of_character(RegisGraphicsContext const *context,
|
||||||
*/
|
*/
|
||||||
#ifdef XRENDERFONT
|
#ifdef XRENDERFONT
|
||||||
XtermWidget xw = context->destination_graphic->xw;
|
XtermWidget xw = context->destination_graphic->xw;
|
||||||
Display *display = XtDisplay(xw);
|
|
||||||
XftFont *font;
|
XftFont *font;
|
||||||
unsigned xmin = 0U, ymin = 0U;
|
unsigned xmin = 0U, ymin = 0U;
|
||||||
|
|
||||||
|
@ -2117,17 +2131,16 @@ get_xft_bitmap_of_character(RegisGraphicsContext const *context,
|
||||||
|
|
||||||
if (*w == 0U || *h == 0U) {
|
if (*w == 0U || *h == 0U) {
|
||||||
TRACE(("empty glyph found for '%c'\n", ch));
|
TRACE(("empty glyph found for '%c'\n", ch));
|
||||||
XftFontClose(display, font);
|
close_xft_font(xw, font);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!copy_bitmap_from_xft_font(xw, font, CharOf(ch), pixels, *w, *h,
|
if (!copy_bitmap_from_xft_font(xw, font, CharOf(ch), pixels, *w, *h,
|
||||||
xmin, ymin)) {
|
xmin, ymin)) {
|
||||||
TRACE(("Unable to create bitmap for '%c'\n", ch));
|
TRACE(("Unable to create bitmap for '%c'\n", ch));
|
||||||
XftFontClose(display, font);
|
close_xft_font(xw, font);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
XftFontClose(display, font);
|
|
||||||
# ifdef DEBUG_XFT_GLYPH_LOADING
|
# ifdef DEBUG_XFT_GLYPH_LOADING
|
||||||
TRACE(("loaded glyph '%c' at max size %dx%d\n", ch, maxw, maxh));
|
TRACE(("loaded glyph '%c' at max size %dx%d\n", ch, maxw, maxh));
|
||||||
# endif
|
# endif
|
||||||
|
@ -2365,7 +2378,7 @@ get_bitmap_of_character(RegisGraphicsContext const *context, int ch,
|
||||||
|
|
||||||
if (fontname) {
|
if (fontname) {
|
||||||
#ifdef DEBUG_GLYPH_RETRIEVAL
|
#ifdef DEBUG_GLYPH_RETRIEVAL
|
||||||
TRACE(("using xft font %s\n", fontname));
|
TRACE(("using xft font \"%s\"\n", fontname));
|
||||||
#endif
|
#endif
|
||||||
if (get_xft_bitmap_of_character(context, fontname, ch,
|
if (get_xft_bitmap_of_character(context, fontname, ch,
|
||||||
maxw, maxh, pixels,
|
maxw, maxh, pixels,
|
||||||
|
@ -3151,6 +3164,37 @@ extract_regis_command(RegisDataFragment *input, char *command)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Check a ReGIS alphabet name before reporting it, to pick an appropriate
|
||||||
|
* delimiter. If the string is empty, or contains nonreportable characters,
|
||||||
|
* just return NUL.
|
||||||
|
*/
|
||||||
|
static int
|
||||||
|
pick_quote(const char *value)
|
||||||
|
{
|
||||||
|
Bool s_quote = False;
|
||||||
|
Bool d_quote = False;
|
||||||
|
|
||||||
|
if (*value != '\0') {
|
||||||
|
while (*value != '\0') {
|
||||||
|
int ch = CharOf(*value++);
|
||||||
|
if (ch == D_QUOTE)
|
||||||
|
d_quote = True;
|
||||||
|
else if (ch == S_QUOTE)
|
||||||
|
s_quote = True;
|
||||||
|
else if (!isName(ch))
|
||||||
|
s_quote = d_quote = True;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
s_quote = d_quote = True;
|
||||||
|
}
|
||||||
|
return ((s_quote && d_quote)
|
||||||
|
? 0
|
||||||
|
: (s_quote
|
||||||
|
? D_QUOTE
|
||||||
|
: S_QUOTE));
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
extract_regis_string(RegisDataFragment *input, char *out, unsigned maxlen)
|
extract_regis_string(RegisDataFragment *input, char *out, unsigned maxlen)
|
||||||
{
|
{
|
||||||
|
@ -3166,7 +3210,7 @@ extract_regis_string(RegisDataFragment *input, char *out, unsigned maxlen)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
ch = peek_fragment(input);
|
ch = peek_fragment(input);
|
||||||
if (ch != '\'' && ch != '"')
|
if (!isQuote(ch))
|
||||||
return 0;
|
return 0;
|
||||||
open_quote_ch = ch;
|
open_quote_ch = ch;
|
||||||
outlen = 0U;
|
outlen = 0U;
|
||||||
|
@ -3246,7 +3290,7 @@ extract_regis_parenthesized_data(RegisDataFragment *input,
|
||||||
for (; input->pos < input->len; input->pos++, output->len++) {
|
for (; input->pos < input->len; input->pos++, output->len++) {
|
||||||
char prev_ch = ch;
|
char prev_ch = ch;
|
||||||
ch = input->start[input->pos];
|
ch = input->start[input->pos];
|
||||||
if (ch == '\'' || ch == '"') {
|
if (isQuote(ch)) {
|
||||||
if (open_quote_ch == '\0') {
|
if (open_quote_ch == '\0') {
|
||||||
open_quote_ch = ch;
|
open_quote_ch = ch;
|
||||||
} else {
|
} else {
|
||||||
|
@ -3314,7 +3358,7 @@ extract_regis_option(RegisDataFragment *input,
|
||||||
if (ch == ';' || ch == ',' ||
|
if (ch == ';' || ch == ',' ||
|
||||||
ch == '(' || ch == ')' ||
|
ch == '(' || ch == ')' ||
|
||||||
ch == '[' || ch == ']' ||
|
ch == '[' || ch == ']' ||
|
||||||
ch == '"' || ch == '\'' ||
|
isQuote(ch) ||
|
||||||
isdigit(CharOf(ch))) {
|
isdigit(CharOf(ch))) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -3330,7 +3374,7 @@ extract_regis_option(RegisDataFragment *input,
|
||||||
TRACE(("looking at char '%c' in option '%c'\n", ch, *option));
|
TRACE(("looking at char '%c' in option '%c'\n", ch, *option));
|
||||||
/* FIXME: any special rules for commas? */
|
/* FIXME: any special rules for commas? */
|
||||||
/* FIXME: handle escaped quotes */
|
/* FIXME: handle escaped quotes */
|
||||||
if (ch == '\'' || ch == '"') {
|
if (isQuote(ch)) {
|
||||||
if (open_quote_ch == ch) {
|
if (open_quote_ch == ch) {
|
||||||
open_quote_ch = '\0';
|
open_quote_ch = '\0';
|
||||||
} else {
|
} else {
|
||||||
|
@ -3421,33 +3465,56 @@ regis_num_to_int(RegisDataFragment const *input, int *out)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#define spec_H xBIT(0)
|
||||||
|
#define spec_L xBIT(1)
|
||||||
|
#define spec_S xBIT(2)
|
||||||
|
|
||||||
|
#define spec_HLS (spec_H | spec_L | spec_S)
|
||||||
|
|
||||||
|
#define spec_R xBIT(3)
|
||||||
|
#define spec_G xBIT(4)
|
||||||
|
#define spec_B xBIT(5)
|
||||||
|
|
||||||
|
#define spec_RGB (spec_R | spec_G | spec_B)
|
||||||
|
|
||||||
static int
|
static int
|
||||||
load_regis_colorspec(RegisGraphicsContext const *context,
|
load_regis_colorspec(RegisGraphicsContext const *context,
|
||||||
RegisDataFragment const *input,
|
RegisDataFragment const *input,
|
||||||
short *r_out, short *g_out, short *b_out)
|
ColorRegister *colors)
|
||||||
{
|
{
|
||||||
RegisDataFragment colorspec;
|
RegisDataFragment colorspec;
|
||||||
short r = -1, g = -1, b = -1;
|
short r = colors->r;
|
||||||
|
short g = colors->g;
|
||||||
|
short b = colors->b;
|
||||||
short l = -1;
|
short l = -1;
|
||||||
int simple;
|
int simple;
|
||||||
|
unsigned len;
|
||||||
|
unsigned spec = 0;
|
||||||
|
|
||||||
assert(context);
|
assert(context);
|
||||||
assert(input);
|
assert(input);
|
||||||
assert(r_out);
|
assert(colors);
|
||||||
assert(g_out);
|
|
||||||
assert(b_out);
|
|
||||||
|
|
||||||
copy_fragment(&colorspec, input);
|
copy_fragment(&colorspec, input);
|
||||||
TRACE(("colorspec option: \"%s\"\n", fragment_to_tempstr(&colorspec)));
|
TRACE(("colorspec option: \"%s\"\n", fragment_to_tempstr(&colorspec)));
|
||||||
|
|
||||||
skip_regis_whitespace(&colorspec);
|
skip_regis_whitespace(&colorspec);
|
||||||
simple = 0;
|
simple = 0;
|
||||||
if (fragment_remaining(&colorspec) == 1U) {
|
if ((len = fragment_remaining(&colorspec)) == 1U) {
|
||||||
simple = 1;
|
simple = 1;
|
||||||
} else if (fragment_remaining(&colorspec) > 1U) {
|
} else if (len > 1U) {
|
||||||
char after = get_fragment(&colorspec, 1U);
|
unsigned n;
|
||||||
if (IsSpace(after))
|
for (n = 1; n < len; ++n) {
|
||||||
simple = 1;
|
char after = get_fragment(&colorspec, n);
|
||||||
|
/* if no parameters, we might see a right-parenthesis, but on error
|
||||||
|
* we can anything */
|
||||||
|
if (strchr("[(,)]", after) != NULL) {
|
||||||
|
simple = 1;
|
||||||
|
break;
|
||||||
|
} else if (!IsSpace(after)) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (simple) {
|
if (simple) {
|
||||||
char ch = pop_fragment(&colorspec);
|
char ch = pop_fragment(&colorspec);
|
||||||
|
@ -3576,7 +3643,7 @@ load_regis_colorspec(RegisGraphicsContext const *context,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (!regis_num_to_int(&num, &val)) {
|
if (!regis_num_to_int(&num, &val)) {
|
||||||
TRACE(("DATA_ERROR: component value %s is not a number\n",
|
TRACE(("DATA_ERROR: component value \"%s\" is not a number\n",
|
||||||
fragment_to_tempstr(&num)));
|
fragment_to_tempstr(&num)));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -3589,38 +3656,56 @@ load_regis_colorspec(RegisGraphicsContext const *context,
|
||||||
switch (comp) {
|
switch (comp) {
|
||||||
case 'H':
|
case 'H':
|
||||||
h = (short) val;
|
h = (short) val;
|
||||||
|
spec |= spec_H;
|
||||||
break;
|
break;
|
||||||
case 'L':
|
case 'L':
|
||||||
l = (short) val;
|
l = (short) val;
|
||||||
|
spec |= spec_L;
|
||||||
break;
|
break;
|
||||||
case 'S':
|
case 'S':
|
||||||
s = (short) val;
|
s = (short) val;
|
||||||
|
spec |= spec_S;
|
||||||
break;
|
break;
|
||||||
case 'R':
|
case 'R':
|
||||||
r = (short) val;
|
r = (short) val;
|
||||||
|
spec |= spec_R;
|
||||||
break;
|
break;
|
||||||
case 'G':
|
case 'G':
|
||||||
g = (short) val;
|
g = (short) val;
|
||||||
|
spec |= spec_G;
|
||||||
break;
|
break;
|
||||||
case 'B':
|
case 'B':
|
||||||
b = (short) val;
|
b = (short) val;
|
||||||
|
spec |= spec_B;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (h >= 0 && l >= 0 && s >= 0 && r < 0 && g < 0 && b < 0) {
|
if ((spec & spec_HLS) && (spec & spec_RGB)) {
|
||||||
|
TRACE(("DATA_ERROR: conflicting colorspec format\n"));
|
||||||
|
return 0;
|
||||||
|
} else if (spec == spec_HLS) {
|
||||||
TRACE(("found HLS colorspec to be converted: %hd,%hd,%hd\n",
|
TRACE(("found HLS colorspec to be converted: %hd,%hd,%hd\n",
|
||||||
h, l, s));
|
h, l, s));
|
||||||
hls2rgb(h, l, s, &r, &g, &b);
|
hls2rgb(h, l, s, &r, &g, &b);
|
||||||
TRACE(("converted to RGB: %hd,%hd,%hd\n", r, g, b));
|
TRACE(("converted to RGB: %hd,%hd,%hd\n", r, g, b));
|
||||||
} else if (h < 0 && l < 0 && s < 0 && r >= 0 && g >= 0 && b >= 0) {
|
} else if (spec == spec_RGB) {
|
||||||
TRACE(("found RGB colorspec: %hd,%hd,%hd\n", r, g, b));
|
TRACE(("found RGB colorspec: %hd,%hd,%hd\n", r, g, b));
|
||||||
l = (short) ((MIN3(r, g, b) + MAX3(r, g, b)) / 2);
|
l = (short) ((MIN3(r, g, b) + MAX3(r, g, b)) / 2);
|
||||||
TRACE(("calculated L: %d\n", l));
|
TRACE(("calculated L: %d\n", l));
|
||||||
} else if (h < 0 && l >= 0 && s < 0 && r < 0 && g < 0 && b < 0) {
|
} else if ((spec & spec_HLS)) {
|
||||||
TRACE(("found L colorspec to be converted: %hd,%hd,%hd\n",
|
short old_h, old_l, old_s;
|
||||||
|
TRACE(("using partial HLS %hd,%hd,%hd\n", h, l, s));
|
||||||
|
rgb2hls(r, g, b, &old_h, &old_l, &old_s);
|
||||||
|
if (h < 0)
|
||||||
|
h = old_h;
|
||||||
|
if (l < 0)
|
||||||
|
l = old_l;
|
||||||
|
if (s < 0)
|
||||||
|
s = old_s;
|
||||||
|
TRACE(("resulting HLS colorspec to convert: %hd,%hd,%hd\n",
|
||||||
h, l, s));
|
h, l, s));
|
||||||
hls2rgb(0, l, 0, &r, &g, &b);
|
hls2rgb(h, l, s, &r, &g, &b);
|
||||||
TRACE(("converted to RGB: %hd,%hd,%hd\n", r, g, b));
|
TRACE(("converted to RGB: %hd,%hd,%hd\n", r, g, b));
|
||||||
} else {
|
} else {
|
||||||
TRACE(("DATA_ERROR: unrecognized colorspec format\n"));
|
TRACE(("DATA_ERROR: unrecognized colorspec format\n"));
|
||||||
|
@ -3636,9 +3721,9 @@ load_regis_colorspec(RegisGraphicsContext const *context,
|
||||||
TRACE(("converted to grayscale: %hd,%hd,%hd\n", r, g, b));
|
TRACE(("converted to grayscale: %hd,%hd,%hd\n", r, g, b));
|
||||||
}
|
}
|
||||||
|
|
||||||
*r_out = r;
|
colors->r = r;
|
||||||
*g_out = g;
|
colors->g = g;
|
||||||
*b_out = b;
|
colors->b = b;
|
||||||
|
|
||||||
skip_regis_whitespace(&colorspec);
|
skip_regis_whitespace(&colorspec);
|
||||||
if (!fragment_consumed(&colorspec)) {
|
if (!fragment_consumed(&colorspec)) {
|
||||||
|
@ -3671,7 +3756,7 @@ load_regis_regnum_or_colorspec(RegisGraphicsContext const *context,
|
||||||
|
|
||||||
if (extract_regis_num(&colorspec, &num)) {
|
if (extract_regis_num(&colorspec, &num)) {
|
||||||
if (!regis_num_to_int(&num, &val)) {
|
if (!regis_num_to_int(&num, &val)) {
|
||||||
TRACE(("DATA_ERROR: colorspec value %s is not a valid register\n",
|
TRACE(("DATA_ERROR: colorspec value \"%s\" is not a valid register\n",
|
||||||
fragment_to_tempstr(&num)));
|
fragment_to_tempstr(&num)));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -3705,15 +3790,16 @@ load_regis_regnum_or_colorspec(RegisGraphicsContext const *context,
|
||||||
}
|
}
|
||||||
|
|
||||||
if (extract_regis_parenthesized_data(&colorspec, &coloroption)) {
|
if (extract_regis_parenthesized_data(&colorspec, &coloroption)) {
|
||||||
short r, g, b;
|
ColorRegister find_reg =
|
||||||
|
{-1, -1, -1};
|
||||||
|
|
||||||
if (!load_regis_colorspec(context, &coloroption, &r, &g, &b)) {
|
if (!load_regis_colorspec(context, &coloroption, &find_reg)) {
|
||||||
TRACE(("unable to parse colorspec\n"));
|
TRACE(("unable to parse colorspec\n"));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
*out = find_color_register(context->destination_graphic->color_registers,
|
*out = find_color_register(context->destination_graphic->color_registers,
|
||||||
r, g, b);
|
find_reg.r, find_reg.g, find_reg.b);
|
||||||
TRACE(("colorspec maps to closest register %u\n", *out));
|
TRACE(("colorspec maps to closest register %u\n", *out));
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -3847,11 +3933,11 @@ load_regis_mult_extent(char const *extent, int *w, int *h)
|
||||||
int px, py;
|
int px, py;
|
||||||
|
|
||||||
if (!load_regis_raw_extent(extent, &relx, &rely, &px, &py, 1)) {
|
if (!load_regis_raw_extent(extent, &relx, &rely, &px, &py, 1)) {
|
||||||
TRACE(("invalid coordinates in extent %s\n", extent));
|
TRACE(("invalid coordinates in extent \"%s\"\n", extent));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (relx | rely) {
|
if (relx | rely) {
|
||||||
TRACE(("invalid relative value in multiplier extent %s\n", extent));
|
TRACE(("invalid relative value in multiplier extent \"%s\"\n", extent));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3869,7 +3955,7 @@ load_regis_pixel_extent(char const *extent, int origx, int origy,
|
||||||
int px, py;
|
int px, py;
|
||||||
|
|
||||||
if (!load_regis_raw_extent(extent, &relx, &rely, &px, &py, 1)) {
|
if (!load_regis_raw_extent(extent, &relx, &rely, &px, &py, 1)) {
|
||||||
TRACE(("invalid coordinates in extent %s\n", extent));
|
TRACE(("invalid coordinates in extent \"%s\"\n", extent));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3894,7 +3980,7 @@ load_regis_coord_extent(RegisGraphicsContext const *context, char const *extent,
|
||||||
int ux, uy;
|
int ux, uy;
|
||||||
|
|
||||||
if (!load_regis_raw_extent(extent, &relx, &rely, &ux, &uy, COORD_SCALE)) {
|
if (!load_regis_raw_extent(extent, &relx, &rely, &ux, &uy, COORD_SCALE)) {
|
||||||
TRACE(("invalid coordinates in extent %s\n", extent));
|
TRACE(("invalid coordinates in extent \"%s\"\n", extent));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5008,6 +5094,7 @@ parse_regis_command(RegisParseState *state)
|
||||||
static int
|
static int
|
||||||
parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
|
parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
{
|
{
|
||||||
|
XtermWidget xw = context->display_graphic->xw;
|
||||||
RegisDataFragment optionarg;
|
RegisDataFragment optionarg;
|
||||||
|
|
||||||
if (!extract_regis_option(&state->input, &state->option, &optionarg))
|
if (!extract_regis_option(&state->input, &state->option, &optionarg))
|
||||||
|
@ -5586,13 +5673,18 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
state->option, fragment_to_tempstr(&optionarg)));
|
state->option, fragment_to_tempstr(&optionarg)));
|
||||||
break;
|
break;
|
||||||
} {
|
} {
|
||||||
char reply[64];
|
unsigned err_code = 0U;
|
||||||
|
unsigned err_char = 0U;
|
||||||
|
|
||||||
TRACE(("got report last error condition\n"));
|
TRACE(("got report last error condition\n"));
|
||||||
/* FIXME: implement after adding error tracking */
|
/* FIXME: implement after adding error tracking */
|
||||||
sprintf(reply, "\"%u,%u\"\r", 0U, 0U);
|
unparseputc(xw, D_QUOTE);
|
||||||
unparseputs(context->display_graphic->xw, reply);
|
unparseputn(xw, err_code);
|
||||||
unparse_end(context->display_graphic->xw);
|
unparseputc(xw, ',');
|
||||||
|
unparseputn(xw, err_char);
|
||||||
|
unparseputc(xw, D_QUOTE);
|
||||||
|
unparseputc(xw, '\r');
|
||||||
|
unparse_end(xw);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'I':
|
case 'I':
|
||||||
|
@ -5639,8 +5731,8 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
/* FIXME: implement arrow key movement */
|
/* FIXME: implement arrow key movement */
|
||||||
/* FIXME: implement button/key collection */
|
/* FIXME: implement button/key collection */
|
||||||
|
|
||||||
unparseputs(context->display_graphic->xw, "\r");
|
unparseputc(xw, '\r');
|
||||||
unparse_end(context->display_graphic->xw);
|
unparse_end(xw);
|
||||||
|
|
||||||
skip_regis_whitespace(&optionarg);
|
skip_regis_whitespace(&optionarg);
|
||||||
if (!fragment_consumed(&optionarg)) {
|
if (!fragment_consumed(&optionarg)) {
|
||||||
|
@ -5657,25 +5749,22 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
if (!fragment_consumed(&optionarg)) {
|
if (!fragment_consumed(&optionarg)) {
|
||||||
TRACE(("DATA_ERROR: unexpected arguments to ReGIS report command option '%c' arg \"%s\"\n",
|
TRACE(("DATA_ERROR: unexpected arguments to ReGIS report command option '%c' arg \"%s\"\n",
|
||||||
state->option, fragment_to_tempstr(&optionarg)));
|
state->option, fragment_to_tempstr(&optionarg)));
|
||||||
break;
|
} else if (state->load_index == MAX_REGIS_ALPHABETS) {
|
||||||
} {
|
/* If this happens something went wrong elsewhere. */
|
||||||
char buffer[32];
|
TRACE(("DATA_ERROR: unable to report current load alphabet\n"));
|
||||||
|
unparseputs(xw, "A0\"\"\r");
|
||||||
if (state->load_index == MAX_REGIS_ALPHABETS) {
|
unparse_end(xw);
|
||||||
/* If this happens something went wrong elsewhere. */
|
} else {
|
||||||
TRACE(("DATA_ERROR: unable to report current load alphabet\n"));
|
int delim = pick_quote(state->load_name);
|
||||||
unparseputs(context->display_graphic->xw, "A0\"\"\r");
|
if (delim != '\0') {
|
||||||
unparse_end(context->display_graphic->xw);
|
unparseputs(xw, "A");
|
||||||
break;
|
unparseputn(xw, state->load_alphabet);
|
||||||
|
unparseputc(xw, delim);
|
||||||
|
unparseputs(xw, state->load_name);
|
||||||
|
unparseputc(xw, delim);
|
||||||
}
|
}
|
||||||
|
unparseputc(xw, '\r');
|
||||||
unparseputs(context->display_graphic->xw, "A");
|
unparse_end(xw);
|
||||||
sprintf(buffer, "%u", state->load_alphabet);
|
|
||||||
unparseputs(context->display_graphic->xw, buffer);
|
|
||||||
unparseputs(context->display_graphic->xw, "\"");
|
|
||||||
unparseputs(context->display_graphic->xw, state->load_name);
|
|
||||||
unparseputs(context->display_graphic->xw, "\"\r");
|
|
||||||
unparse_end(context->display_graphic->xw);
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'M':
|
case 'M':
|
||||||
|
@ -5717,27 +5806,31 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name == '=') {
|
if (name == '=') {
|
||||||
char reply[64];
|
unsigned max_available = 1000U;
|
||||||
|
unsigned cur_available = max_available;
|
||||||
|
|
||||||
TRACE(("got report macrograph storage request\n"));
|
TRACE(("got report macrograph storage request\n"));
|
||||||
/* FIXME: Implement when macrographs are supported. */
|
/* FIXME: Implement when macrographs are supported. */
|
||||||
sprintf(reply, "\"%u,%u\"\r", 1000U, 1000U);
|
unparseputc(xw, D_QUOTE);
|
||||||
unparseputs(context->display_graphic->xw, reply);
|
unparseputn(xw, cur_available);
|
||||||
unparse_end(context->display_graphic->xw);
|
unparseputc(xw, ',');
|
||||||
|
unparseputn(xw, max_available);
|
||||||
|
unparseputc(xw, D_QUOTE);
|
||||||
|
unparseputc(xw, '\r');
|
||||||
|
unparse_end(xw);
|
||||||
} else if (name < 'A' || name > 'Z') {
|
} else if (name < 'A' || name > 'Z') {
|
||||||
TRACE(("DATA_ERROR: invalid macrograph name: \"%c\"\n", name));
|
TRACE(("DATA_ERROR: invalid macrograph name: \"%c\"\n", name));
|
||||||
/* FIXME: what should happen? */
|
/* FIXME: what should happen? */
|
||||||
break;
|
break;
|
||||||
} else {
|
} else {
|
||||||
char temp[8];
|
|
||||||
|
|
||||||
TRACE(("got report macrograph request for name '%c'\n", name));
|
TRACE(("got report macrograph request for name '%c'\n", name));
|
||||||
sprintf(temp, "@=%c", name);
|
unparseputs(xw, "@=");
|
||||||
unparseputs(context->display_graphic->xw, temp);
|
unparseputc(xw, name);
|
||||||
/* FIXME: Allow this to be disabled for security reasons. */
|
/* FIXME: Allow this to be disabled for security reasons. */
|
||||||
/* FIXME: implement when macrographs are supported. */
|
/* FIXME: implement when macrographs are supported. */
|
||||||
unparseputs(context->display_graphic->xw, "@;\r");
|
unparseputs(xw, "@;");
|
||||||
unparse_end(context->display_graphic->xw);
|
unparseputc(xw, '\r');
|
||||||
|
unparse_end(xw);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -5785,78 +5878,59 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
TRACE(("got report cursor position (output=%d)\n", output));
|
TRACE(("got report cursor position (output=%d)\n", output));
|
||||||
|
|
||||||
/* FIXME: look into supporting ANSI locator reports (DECLRP) */
|
/* FIXME: look into supporting ANSI locator reports (DECLRP) */
|
||||||
|
unparseputc(xw, L_BLOK);
|
||||||
if (output == 1) {
|
if (output == 1) {
|
||||||
char reply[64];
|
|
||||||
|
|
||||||
/* FIXME: verify in absolute, not user, coordinates */
|
/* FIXME: verify in absolute, not user, coordinates */
|
||||||
sprintf(reply, "[%d,%d]\r",
|
unparseputn(xw, (unsigned) context->graphics_output_cursor_x);
|
||||||
context->graphics_output_cursor_x,
|
unparseputc(xw, ',');
|
||||||
context->graphics_output_cursor_y);
|
unparseputn(xw, (unsigned) context->graphics_output_cursor_y);
|
||||||
unparseputs(context->display_graphic->xw, reply);
|
} else if (context->multi_input_mode) {
|
||||||
unparse_end(context->display_graphic->xw);
|
/* FIXME: track input coordinates */
|
||||||
|
unsigned x = 0, y = 0; /* placeholders */
|
||||||
|
|
||||||
|
/* send CSI240~[x,y]\r with current input cursor location */
|
||||||
|
|
||||||
|
/* FIXME: verify no leading char or button sequence */
|
||||||
|
/* FIXME: should we ever send an eight-bit CSI? */
|
||||||
|
/* FIXME: verify in absolute, not user, coordinates */
|
||||||
|
TRACE(("sending multi-mode input report at %u,%u\n", x, y));
|
||||||
|
unparseputn(xw, x);
|
||||||
|
unparseputc(xw, ',');
|
||||||
|
unparseputn(xw, y);
|
||||||
} else {
|
} else {
|
||||||
char reply[64];
|
char ch = ' '; /* placeholder */
|
||||||
int x, y;
|
unsigned x = 0, y = 0; /* placeholders */
|
||||||
|
|
||||||
if (context->multi_input_mode) {
|
/* FIXME: wait for first non-arrow keypress or mouse click, and don't update graphics while waiting */
|
||||||
/* FIXME: track input coordinates */
|
/* send <key or button>[x,y]\r to report input cursor location */
|
||||||
x = y = 0; /* placeholders */
|
|
||||||
|
|
||||||
/* send CSI240~[x,y]\r with current input cursor location */
|
/* null button: CSI240~ */
|
||||||
|
/* left button: CSI241~ */
|
||||||
/* FIXME: verify no leading char or button sequence */
|
/* middle button: CSI243~ */
|
||||||
/* FIXME: should we ever send an eight-bit CSI? */
|
/* right button: CSI245~ */
|
||||||
/* FIXME: verify in absolute, not user, coordinates */
|
/* extra button: CSI247~ */
|
||||||
TRACE(("sending multi-mode input report at %d,%d\n",
|
/* FIXME: support DECLBD to change button assignments */
|
||||||
x, y));
|
/* FIXME: verify no leading char or button sequence */
|
||||||
sprintf(reply, "[%d,%d]\r", x, y);
|
TRACE(("sending one-shot input report with %c at %u,%u\n",
|
||||||
unparseputs(context->display_graphic->xw, reply);
|
ch, x, y));
|
||||||
unparse_end(context->display_graphic->xw);
|
if (ch != '\177') {
|
||||||
break;
|
unparseputn(xw, x);
|
||||||
} else {
|
unparseputc(xw, ',');
|
||||||
char ch;
|
unparseputn(xw, y);
|
||||||
|
|
||||||
/* FIXME: wait for first non-arrow keypress or mouse click, and don't update graphics while waiting */
|
|
||||||
ch = ' '; /* placeholder */
|
|
||||||
x = y = 0; /* placeholders */
|
|
||||||
|
|
||||||
/* send <key or button>[x,y]\r to report input cursor location */
|
|
||||||
|
|
||||||
/* null button: CSI240~ */
|
|
||||||
/* left button: CSI241~ */
|
|
||||||
/* middle button: CSI243~ */
|
|
||||||
/* right button: CSI245~ */
|
|
||||||
/* extra button: CSI247~ */
|
|
||||||
/* FIXME: support DECLBD to change button assignments */
|
|
||||||
/* FIXME: verify no leading char or button sequence */
|
|
||||||
TRACE(("sending one-shot input report with %c at %d,%d\n",
|
|
||||||
ch, x, y));
|
|
||||||
#if 0 /* FIXME - dead code */
|
|
||||||
if (ch == '\r') {
|
|
||||||
/* Return only reports the location. */
|
|
||||||
sprintf(reply, "[%d,%d]\r", x, y);
|
|
||||||
} else if (ch == '\177') {
|
|
||||||
/* DEL exits locator mode reporting nothing. */
|
|
||||||
sprintf(reply, "\r");
|
|
||||||
} else
|
|
||||||
#endif
|
|
||||||
{
|
|
||||||
sprintf(reply, "%c[%d,%d]\r", ch, x, y);
|
|
||||||
}
|
|
||||||
unparseputs(context->display_graphic->xw, reply);
|
|
||||||
unparse_end(context->display_graphic->xw);
|
|
||||||
/* FIXME: exit one-shot mode and disable input cursor */
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
/* FIXME: exit one-shot mode and disable input cursor */
|
||||||
}
|
}
|
||||||
|
unparseputc(xw, R_BLOK);
|
||||||
|
unparseputc(xw, '\r');
|
||||||
|
unparse_end(xw);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
TRACE(("DATA_ERROR: sending empty report for unknown ReGIS report command option '%c' arg \"%s\"\n",
|
TRACE(("DATA_ERROR: sending empty report for unknown ReGIS report command option '%c' arg \"%s\"\n",
|
||||||
state->option, fragment_to_tempstr(&optionarg)));
|
state->option, fragment_to_tempstr(&optionarg)));
|
||||||
/* Unknown report request types must receive empty reports. */
|
/* Unknown report request types must receive empty reports. */
|
||||||
unparseputs(context->display_graphic->xw, "\r");
|
unparseputs(xw, "\r");
|
||||||
unparse_end(context->display_graphic->xw);
|
unparse_end(xw);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -6060,7 +6134,7 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
if (extract_regis_num(&optionarg, ®num)) {
|
if (extract_regis_num(&optionarg, ®num)) {
|
||||||
int register_num;
|
int register_num;
|
||||||
int color_only;
|
int color_only;
|
||||||
short r, g, b;
|
ColorRegister my_reg;
|
||||||
|
|
||||||
if (!regis_num_to_int(®num, ®ister_num)) {
|
if (!regis_num_to_int(®num, ®ister_num)) {
|
||||||
TRACE(("DATA_ERROR: unable to parse int in screen color register mapping option: \"%s\"\n",
|
TRACE(("DATA_ERROR: unable to parse int in screen color register mapping option: \"%s\"\n",
|
||||||
|
@ -6093,10 +6167,17 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
TRACE(("mapping register %d to color spec: \"%s\"\n",
|
fetch_color_register(context->destination_graphic,
|
||||||
register_num, fragment_to_tempstr(&colorspec)));
|
(RegisterNum) register_num,
|
||||||
if (!load_regis_colorspec(context, &colorspec,
|
&my_reg);
|
||||||
&r, &g, &b)) {
|
|
||||||
|
TRACE(("mapping register %d %d,%d,%d to color spec: \"%s\"\n",
|
||||||
|
register_num,
|
||||||
|
my_reg.r,
|
||||||
|
my_reg.g,
|
||||||
|
my_reg.b,
|
||||||
|
fragment_to_tempstr(&colorspec)));
|
||||||
|
if (!load_regis_colorspec(context, &colorspec, &my_reg)) {
|
||||||
TRACE(("DATA_ERROR: unable to use colorspec for mapping of register %d\n",
|
TRACE(("DATA_ERROR: unable to use colorspec for mapping of register %d\n",
|
||||||
register_num));
|
register_num));
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -6106,13 +6187,13 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
(context->graphics_termid == 240 ||
|
(context->graphics_termid == 240 ||
|
||||||
context->graphics_termid == 330)) {
|
context->graphics_termid == 330)) {
|
||||||
TRACE(("NOT setting color register %d to %hd,%hd,%hd\n",
|
TRACE(("NOT setting color register %d to %hd,%hd,%hd\n",
|
||||||
register_num, r, g, b));
|
register_num, my_reg.r, my_reg.g, my_reg.b));
|
||||||
} else {
|
} else {
|
||||||
TRACE(("setting color register %d to %hd,%hd,%hd\n",
|
TRACE(("setting color register %d to %hd,%hd,%hd\n",
|
||||||
register_num, r, g, b));
|
register_num, my_reg.r, my_reg.g, my_reg.b));
|
||||||
update_color_register(context->destination_graphic,
|
update_color_register(context->destination_graphic,
|
||||||
(RegisterNum) register_num,
|
(RegisterNum) register_num,
|
||||||
r, g, b);
|
my_reg.r, my_reg.g, my_reg.b);
|
||||||
}
|
}
|
||||||
continue;
|
continue;
|
||||||
} {
|
} {
|
||||||
|
@ -6154,7 +6235,7 @@ parse_regis_option(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
|
|
||||||
TRACE(("using display page number: %d\n", page));
|
TRACE(("using display page number: %d\n", page));
|
||||||
context->display_page = (unsigned) page;
|
context->display_page = (unsigned) page;
|
||||||
map_regis_graphics_pages(context->display_graphic->xw, context);
|
map_regis_graphics_pages(xw, context);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 'T':
|
case 'T':
|
||||||
|
@ -7433,12 +7514,6 @@ parse_regis_toplevel(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
{
|
{
|
||||||
RegisDataFragment parenthesized;
|
RegisDataFragment parenthesized;
|
||||||
char ch;
|
char ch;
|
||||||
#if 0
|
|
||||||
TRACE(("reference line: shading=%d ref=%u loc=%d\n",
|
|
||||||
context->temporary_write_controls.shading_enabled,
|
|
||||||
context->temporary_write_controls.shading_reference_dim,
|
|
||||||
context->temporary_write_controls.shading_reference));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef DEBUG_PARSING
|
#ifdef DEBUG_PARSING
|
||||||
TRACE(("parsing top level: char %u of %u (next char '%c')\n",
|
TRACE(("parsing top level: char %u of %u (next char '%c')\n",
|
||||||
|
@ -7581,6 +7656,13 @@ parse_regis_toplevel(RegisParseState *state, RegisGraphicsContext *context)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
reset_regis(void)
|
||||||
|
{
|
||||||
|
persistent_context.width = 0;
|
||||||
|
persistent_context.height = 0;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
parse_regis(XtermWidget xw, ANSI *params, char const *string)
|
parse_regis(XtermWidget xw, ANSI *params, char const *string)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
/* $XTermId: graphics_regis.h,v 1.2 2016/05/29 16:34:47 tom Exp $ */
|
/* $XTermId: graphics_regis.h,v 1.3 2023/07/07 20:10:32 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2014,2016 by Ross Combs
|
* Copyright 2014-2016,2023 by Ross Combs
|
||||||
* Copyright 2014,2016 by Thomas E. Dickey
|
* Copyright 2014-2016,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -38,8 +38,10 @@
|
||||||
#include <ptyx.h>
|
#include <ptyx.h>
|
||||||
|
|
||||||
#if OPT_REGIS_GRAPHICS
|
#if OPT_REGIS_GRAPHICS
|
||||||
|
extern void reset_regis(void);
|
||||||
extern void parse_regis(XtermWidget /* xw */, ANSI */* params */, char const */* string */);
|
extern void parse_regis(XtermWidget /* xw */, ANSI */* params */, char const */* string */);
|
||||||
#else
|
#else
|
||||||
|
#define reset_regis() /* nothing */
|
||||||
#define parse_regis(xw, params, string) /* nothing */
|
#define parse_regis(xw, params, string) /* nothing */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,8 +1,8 @@
|
||||||
/* $XTermId: graphics_sixel.h,v 1.4 2016/05/29 16:35:11 tom Exp $ */
|
/* $XTermId: graphics_sixel.h,v 1.9 2024/07/01 21:19:14 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
* Copyright 2014-2016,2024 by Thomas E. Dickey
|
||||||
* Copyright 2014,2016 by Ross Combs
|
* Copyright 2014,2016 by Ross Combs
|
||||||
* Copyright 2014,2016 by Thomas E. Dickey
|
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -38,9 +38,9 @@
|
||||||
#include <ptyx.h>
|
#include <ptyx.h>
|
||||||
|
|
||||||
#if OPT_SIXEL_GRAPHICS
|
#if OPT_SIXEL_GRAPHICS
|
||||||
extern int parse_sixel(XtermWidget /* xw */, ANSI */* params */, char const */* string */);
|
extern void parse_sixel_init(XtermWidget /* xw */, ANSI * /* params */);
|
||||||
#else
|
extern void parse_sixel_char(char /* cp */);
|
||||||
#define parse_sixel(xw, params, string) /* nothing */
|
extern void parse_sixel_finished(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* *INDENT-ON* */
|
/* *INDENT-ON* */
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: input.c,v 1.369 2022/11/24 12:48:54 tom Exp $ */
|
/* $XTermId: input.c,v 1.370 2023/05/09 08:14:04 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1999-2021,2022 by Thomas E. Dickey
|
* Copyright 1999-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -1204,8 +1204,7 @@ Input(XtermWidget xw,
|
||||||
reply.a_param[0] = (ParmType) dec_code;
|
reply.a_param[0] = (ParmType) dec_code;
|
||||||
reply.a_final = '~';
|
reply.a_final = '~';
|
||||||
}
|
}
|
||||||
if (reply.a_final != 0
|
if (reply.a_nparam == 0 || reply.a_param[0] >= 0)
|
||||||
&& (reply.a_nparam == 0 || reply.a_param[0] >= 0))
|
|
||||||
unparseseq(xw, &reply);
|
unparseseq(xw, &reply);
|
||||||
}
|
}
|
||||||
key = True;
|
key = True;
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# $XTermId: koi8rxterm,v 1.6 2021/01/27 01:35:34 tom Exp $
|
# $XTermId: koi8rxterm,v 1.7 2023/05/03 23:59:22 tom Exp $
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# this file is part of xterm
|
# this file is part of xterm
|
||||||
#
|
#
|
||||||
# Copyright 2007,2021 by Thomas E. Dickey
|
# Copyright 2007-2021,2023 by Thomas E. Dickey
|
||||||
#
|
#
|
||||||
# All Rights Reserved
|
# All Rights Reserved
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
@ -112,4 +112,4 @@ fi
|
||||||
# for testing:
|
# for testing:
|
||||||
#test -f ./xterm && XTERM_PROGRAM=./xterm
|
#test -f ./xterm && XTERM_PROGRAM=./xterm
|
||||||
|
|
||||||
exec "$XTERM_PROGRAM" -class KOI8RXTerm -title "$whoami" -k8 "$@"
|
exec "$XTERM_PROGRAM" -class KOI8RXTerm -k8 "$@"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
.\" $XTermId: koi8rxterm.man,v 1.8 2018/06/23 00:19:53 tom Exp $
|
.\" $XTermId: koi8rxterm.man,v 1.9 2024/01/11 21:55:09 tom Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright 2007-2012, 2018 Thomas E. Dickey
|
.\" Copyright 2007-2018,2024 Thomas E. Dickey
|
||||||
.\" Copyright 2004 Branden Robinson
|
.\" Copyright 2004 Branden Robinson
|
||||||
.\"
|
.\"
|
||||||
.\" Permission is hereby granted, free of charge, to any person obtaining a
|
.\" Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
@ -24,16 +24,24 @@
|
||||||
.ds N Koi8rxterm
|
.ds N Koi8rxterm
|
||||||
.ds n koi8rxterm
|
.ds n koi8rxterm
|
||||||
.\"
|
.\"
|
||||||
.ie \n(.g .ds AQ \(aq
|
|
||||||
.el .ds AQ '
|
|
||||||
.ie \n(.g .ds `` \(lq
|
|
||||||
.el .ds `` ``
|
|
||||||
.ie \n(.g .ds '' \(rq
|
|
||||||
.el .ds '' ''
|
|
||||||
.\"
|
|
||||||
.TH KOI8RXTERM 1 "__app_date__" "__app_version__" "X Window System"
|
.TH KOI8RXTERM 1 "__app_date__" "__app_version__" "X Window System"
|
||||||
|
.\"
|
||||||
|
.ie \n(.g \{\
|
||||||
|
.ds `` \(lq
|
||||||
|
.ds '' \(rq
|
||||||
|
.ds ' \(aq
|
||||||
|
.\}
|
||||||
|
.el \{\
|
||||||
|
.ie t .ds `` ``
|
||||||
|
.el .ds `` ""
|
||||||
|
.ie t .ds '' ''
|
||||||
|
.el .ds '' ""
|
||||||
|
.ie t .ds ' \(aq
|
||||||
|
.el .ds ' '
|
||||||
|
.\}
|
||||||
.SH NAME
|
.SH NAME
|
||||||
koi8rxterm \- X terminal emulator for KOI8-R environments
|
koi8rxterm \-
|
||||||
|
X terminal emulator for KOI8-R environments
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B \*n
|
.B \*n
|
||||||
[
|
[
|
||||||
|
@ -95,7 +103,7 @@ is available for Unicode UTF-8 environments.
|
||||||
.B LC_ALL\fR, \fBLC_CTYPE\fR, \fBLANG
|
.B LC_ALL\fR, \fBLC_CTYPE\fR, \fBLANG
|
||||||
The values of these variables are checked, in order, to determine the
|
The values of these variables are checked, in order, to determine the
|
||||||
character set used by the current locale.
|
character set used by the current locale.
|
||||||
.SH AUTHOR
|
.SH AUTHORS
|
||||||
.B \*n
|
.B \*n
|
||||||
was written by Branden Robinson and is very heavily based on
|
was written by Branden Robinson and is very heavily based on
|
||||||
.BR uxterm ,
|
.BR uxterm ,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: linedata.c,v 1.102 2022/09/18 21:17:43 tom Exp $ */
|
/* $XTermId: linedata.c,v 1.106 2023/12/31 20:12:06 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2009-2021,2022 by Thomas E. Dickey
|
* Copyright 2009-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -91,6 +91,10 @@ copyLineData(LineData *dst, CLineData *src)
|
||||||
+ sizeof(dst->charData[0])
|
+ sizeof(dst->charData[0])
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
+ sizeof(dst->combData[0][0]) * dst->combSize
|
+ sizeof(dst->combData[0][0]) * dst->combSize
|
||||||
|
#endif
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
+ sizeof(dst->charSeen[0])
|
||||||
|
+ sizeof(dst->charSets[0])
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -110,6 +114,10 @@ copyLineData(LineData *dst, CLineData *src)
|
||||||
dst->color[col] = src->color[col];
|
dst->color[col] = src->color[col];
|
||||||
#endif
|
#endif
|
||||||
dst->charData[col] = src->charData[col];
|
dst->charData[col] = src->charData[col];
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
dst->charSeen[col] = src->charSeen[col];
|
||||||
|
dst->charSets[col] = src->charSets[col];
|
||||||
|
#endif
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
for (comb = 0; comb < dst->combSize; ++comb) {
|
for (comb = 0; comb < dst->combSize; ++comb) {
|
||||||
dst->combData[comb][col] = src->combData[comb][col];
|
dst->combData[comb][col] = src->combData[comb][col];
|
||||||
|
@ -122,6 +130,10 @@ copyLineData(LineData *dst, CLineData *src)
|
||||||
dst->color[col] = initCColor;
|
dst->color[col] = initCColor;
|
||||||
#endif
|
#endif
|
||||||
dst->charData[col] = 0;
|
dst->charData[col] = 0;
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
dst->charSeen[col] = 0;
|
||||||
|
dst->charSets[col] = 0;
|
||||||
|
#endif
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
for (comb = 0; comb < dst->combSize; ++comb) {
|
for (comb = 0; comb < dst->combSize; ++comb) {
|
||||||
dst->combData[comb][col] = 0;
|
dst->combData[comb][col] = 0;
|
||||||
|
@ -174,6 +186,10 @@ initLineData(XtermWidget xw)
|
||||||
TRACE((" offset(bufHead) %lu\n", (unsigned long) offsetof(LineData, bufHead)));
|
TRACE((" offset(bufHead) %lu\n", (unsigned long) offsetof(LineData, bufHead)));
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
TRACE((" offset(combSize) %lu\n", (unsigned long) offsetof(LineData, combSize)));
|
TRACE((" offset(combSize) %lu\n", (unsigned long) offsetof(LineData, combSize)));
|
||||||
|
#endif
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
TRACE((" offset(*charSeen) %lu\n", (unsigned long) offsetof(LineData, charSeen)));
|
||||||
|
TRACE((" offset(*charSets) %lu\n", (unsigned long) offsetof(LineData, charSets)));
|
||||||
#endif
|
#endif
|
||||||
TRACE((" offset(*attribs) %lu\n", (unsigned long) offsetof(LineData, attribs)));
|
TRACE((" offset(*attribs) %lu\n", (unsigned long) offsetof(LineData, attribs)));
|
||||||
#if OPT_ISO_COLORS
|
#if OPT_ISO_COLORS
|
||||||
|
@ -190,6 +206,10 @@ initLineData(XtermWidget xw)
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
TRACE((" offset(combSize) %lu\n", (unsigned long) offsetof(CellData, combSize)));
|
TRACE((" offset(combSize) %lu\n", (unsigned long) offsetof(CellData, combSize)));
|
||||||
#endif
|
#endif
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
TRACE((" offset(charSeen) %lu\n", (unsigned long) offsetof(CellData, charSeen)));
|
||||||
|
TRACE((" offset(charSets) %lu\n", (unsigned long) offsetof(CellData, charSets)));
|
||||||
|
#endif
|
||||||
#if OPT_ISO_COLORS
|
#if OPT_ISO_COLORS
|
||||||
TRACE((" offset(color) %lu\n", (unsigned long) offsetof(CellData, color)));
|
TRACE((" offset(color) %lu\n", (unsigned long) offsetof(CellData, color)));
|
||||||
#endif
|
#endif
|
||||||
|
@ -234,7 +254,10 @@ saveCellData(TScreen *screen,
|
||||||
if_OPT_ISO_COLORS(screen, {
|
if_OPT_ISO_COLORS(screen, {
|
||||||
item->color = ld->color[column];
|
item->color = ld->color[column];
|
||||||
});
|
});
|
||||||
item->charData = ld->charData[column];
|
if_OPT_DEC_RECTOPS({
|
||||||
|
item->charSeen = ld->charSeen[column];
|
||||||
|
item->charData = ld->charData[column];
|
||||||
|
});
|
||||||
if_OPT_WIDE_CHARS(screen, {
|
if_OPT_WIDE_CHARS(screen, {
|
||||||
size_t off;
|
size_t off;
|
||||||
Bool blank = (((item->charData == HIDDEN_CHAR)
|
Bool blank = (((item->charData == HIDDEN_CHAR)
|
||||||
|
@ -245,9 +268,13 @@ saveCellData(TScreen *screen,
|
||||||
&& (limits == NULL
|
&& (limits == NULL
|
||||||
|| (column + 1) >= limits->right)));
|
|| (column + 1) >= limits->right)));
|
||||||
if (blank) {
|
if (blank) {
|
||||||
|
if_OPT_DEC_RECTOPS(item->charSeen = ' ');
|
||||||
item->charData = (CharData) ' ';
|
item->charData = (CharData) ' ';
|
||||||
}
|
}
|
||||||
item->combSize = blank ? 0 : ld->combSize;
|
item->combSize = blank ? 0 : ld->combSize;
|
||||||
|
if_OPT_DEC_RECTOPS(item->charSets = (blank
|
||||||
|
? 0
|
||||||
|
: ld->charSets[column]));
|
||||||
for_each_combData(off, item) {
|
for_each_combData(off, item) {
|
||||||
item->combData[off] = ld->combData[off][column];
|
item->combData[off] = ld->combData[off][column];
|
||||||
}
|
}
|
||||||
|
@ -273,10 +300,15 @@ restoreCellData(TScreen *screen,
|
||||||
if_OPT_ISO_COLORS(screen, {
|
if_OPT_ISO_COLORS(screen, {
|
||||||
ld->color[column] = item->color;
|
ld->color[column] = item->color;
|
||||||
});
|
});
|
||||||
|
if_OPT_DEC_RECTOPS({
|
||||||
|
ld->charSeen[column] = item->charSeen;
|
||||||
|
ld->charSets[column] = item->charSets;
|
||||||
|
});
|
||||||
ld->charData[column] = item->charData;
|
ld->charData[column] = item->charData;
|
||||||
if_OPT_WIDE_CHARS(screen, {
|
if_OPT_WIDE_CHARS(screen, {
|
||||||
size_t off;
|
size_t off;
|
||||||
ld->combSize = item->combSize;
|
ld->combSize = item->combSize;
|
||||||
|
if_OPT_DEC_RECTOPS(ld->charSets[column] = item->charSets);
|
||||||
for_each_combData(off, ld) {
|
for_each_combData(off, ld) {
|
||||||
ld->combData[off][column] = item->combData[off];
|
ld->combData[off][column] = item->combData[off];
|
||||||
}
|
}
|
||||||
|
|
784
app/xterm/main.c
784
app/xterm/main.c
File diff suppressed because it is too large
Load diff
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: main.h,v 1.82 2022/11/21 22:28:35 tom Exp $ */
|
/* $XTermId: main.h,v 1.85 2023/10/22 10:34:12 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2000-2021,2022 by Thomas E. Dickey
|
* Copyright 2000-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -132,7 +132,7 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef DEF_DISALLOWED_PASTE_CONTROLS
|
#ifndef DEF_DISALLOWED_PASTE_CONTROLS
|
||||||
#define DEF_DISALLOWED_PASTE_CONTROLS "BS,DEL,ENQ,EOT,ESC,NUL"
|
#define DEF_DISALLOWED_PASTE_CONTROLS "BS,DEL,ENQ,EOT,ESC,NUL,STTY"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef DEF_DISALLOWED_TCAP
|
#ifndef DEF_DISALLOWED_TCAP
|
||||||
|
@ -227,10 +227,26 @@
|
||||||
#define DEF_SCROLL_LINES 1
|
#define DEF_SCROLL_LINES 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef DEF_SL_CLOCK
|
||||||
|
#define DEF_SL_CLOCK 1000
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef DEF_SL_COORDS
|
||||||
|
#define DEF_SL_COORDS 80
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef DEF_SL_FORMAT
|
#ifndef DEF_SL_FORMAT
|
||||||
#define DEF_SL_FORMAT "%{version%} %{position%} %{unixtime%}"
|
#define DEF_SL_FORMAT "%{version%} %{position%} %{unixtime%}"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef DEF_STRINGS_MAX
|
||||||
|
#if OPT_REGIS_GRAPHICS || OPT_SIXEL_GRAPHICS
|
||||||
|
#define DEF_STRINGS_MAX 600000
|
||||||
|
#else
|
||||||
|
#define DEF_STRINGS_MAX 20000
|
||||||
|
#endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef DEF_TITLE_MODES
|
#ifndef DEF_TITLE_MODES
|
||||||
#define DEF_TITLE_MODES 0
|
#define DEF_TITLE_MODES 0
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: menu.c,v 1.370 2022/10/07 08:00:53 Ben.Wong Exp $ */
|
/* $XTermId: menu.c,v 1.375 2023/12/01 21:39:31 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1999-2021,2022 by Thomas E. Dickey
|
* Copyright 1999-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -55,6 +55,7 @@
|
||||||
|
|
||||||
#include <xterm.h>
|
#include <xterm.h>
|
||||||
#include <data.h>
|
#include <data.h>
|
||||||
|
#include <error.h>
|
||||||
#include <menu.h>
|
#include <menu.h>
|
||||||
#include <fontutils.h>
|
#include <fontutils.h>
|
||||||
#include <xstrings.h>
|
#include <xstrings.h>
|
||||||
|
@ -696,7 +697,7 @@ create_menu(Widget w, XtermWidget xw, MenuIndex num)
|
||||||
toplevel,
|
toplevel,
|
||||||
NULL, 0);
|
NULL, 0);
|
||||||
TRACE(("created popupShell(%s) widget %p, window %#lx\n",
|
TRACE(("created popupShell(%s) widget %p, window %#lx\n",
|
||||||
data->internal_name, list->w, XtWindow(list->w)));
|
data->internal_name, (void *) list->w, XtWindow(list->w)));
|
||||||
#endif
|
#endif
|
||||||
if (list->w != 0) {
|
if (list->w != 0) {
|
||||||
Boolean *unused = unusedEntries(xw, num);
|
Boolean *unused = unusedEntries(xw, num);
|
||||||
|
@ -1434,7 +1435,7 @@ do_quit(Widget gw GCC_UNUSED,
|
||||||
XtPointer closure GCC_UNUSED,
|
XtPointer closure GCC_UNUSED,
|
||||||
XtPointer data GCC_UNUSED)
|
XtPointer data GCC_UNUSED)
|
||||||
{
|
{
|
||||||
Cleanup(SIGHUP);
|
Cleanup(ERROR_MISC);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -3754,6 +3755,7 @@ update_titeInhibit(void)
|
||||||
void
|
void
|
||||||
update_activeicon(void)
|
update_activeicon(void)
|
||||||
{
|
{
|
||||||
|
SetItemSensitivity(vtMenuEntries[vtMenu_activeicon].widget, False);
|
||||||
UpdateCheckbox("update_activeicon",
|
UpdateCheckbox("update_activeicon",
|
||||||
vtMenuEntries,
|
vtMenuEntries,
|
||||||
vtMenu_activeicon,
|
vtMenu_activeicon,
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# $XTermId: minstall.in,v 1.27 2022/10/02 20:13:11 tom Exp $
|
# $XTermId: minstall.in,v 1.32 2023/10/08 21:11:07 tom Exp $
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# this file is part of xterm
|
# this file is part of xterm
|
||||||
#
|
#
|
||||||
# Copyright 2001-2021,2022 by Thomas E. Dickey
|
# Copyright 2001-2022,2023 by Thomas E. Dickey
|
||||||
#
|
#
|
||||||
# All Rights Reserved
|
# All Rights Reserved
|
||||||
#
|
#
|
||||||
|
@ -66,55 +66,23 @@ break
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
|
prefix=@prefix@
|
||||||
|
exec_prefix=@exec_prefix@
|
||||||
|
datarootdir=@datarootdir@
|
||||||
|
datadir=@datadir@
|
||||||
|
|
||||||
# get parameters
|
# get parameters
|
||||||
MINSTALL="$1"
|
MINSTALL="$1"
|
||||||
OLD_FILE="$2"
|
OLD_FILE="$2"
|
||||||
END_FILE="$3"
|
END_FILE="$3"
|
||||||
APPS_DIR="$4"
|
APP_name="$4"
|
||||||
APP_TYPE="$5"
|
USE_name="$5"
|
||||||
APP_name="$6"
|
|
||||||
USE_name="$7"
|
|
||||||
XPMS_DIR="$8"
|
|
||||||
|
|
||||||
suffix=`echo "$END_FILE" | sed -e 's%^.*\.%%'`
|
suffix=`echo "$END_FILE" | sed -e 's%^.*\.%%'`
|
||||||
NEW_FILE=temp$$
|
NEW_FILE=temp$$
|
||||||
|
|
||||||
MY_MANSECT=$suffix
|
MY_MANSECT=$suffix
|
||||||
|
|
||||||
# utmp and wtmp have different pathnames on different systems, but there
|
|
||||||
# are only a few common choices. Note that they may not necessarily appear
|
|
||||||
# in the same directories. Prefer utmpx/wtmpx to utmp/wtmp, since that's
|
|
||||||
# the way the configure script is designed.
|
|
||||||
UTMP_NAME=utmp
|
|
||||||
UTMP_PATH=/etc
|
|
||||||
for name in /etc /var/adm /var/run /var/log
|
|
||||||
do
|
|
||||||
if test -f $name/utmpx ; then
|
|
||||||
UTMP_NAME=utmpx
|
|
||||||
UTMP_PATH=$name
|
|
||||||
break
|
|
||||||
elif test -f $name/utmp ; then
|
|
||||||
UTMP_PATH=$name
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
UTMP_PATH=$UTMP_PATH/$UTMP_NAME
|
|
||||||
|
|
||||||
WTMP_NAME=wtmp
|
|
||||||
WTMP_PATH=/etc
|
|
||||||
for name in /etc /var/adm /var/run /var/log
|
|
||||||
do
|
|
||||||
if test -f $name/wtmpx ; then
|
|
||||||
WTMP_NAME=wtmpx
|
|
||||||
WTMP_PATH=$name
|
|
||||||
break
|
|
||||||
elif test -f $name/wtmp ; then
|
|
||||||
WTMP_PATH=$name
|
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
WTMP_PATH=$WTMP_PATH/$WTMP_NAME
|
|
||||||
|
|
||||||
lower=abcdefghijklmnopqrstuvwxyz
|
lower=abcdefghijklmnopqrstuvwxyz
|
||||||
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
|
||||||
|
|
||||||
|
@ -157,15 +125,16 @@ sed -e 's%__vendorversion__%"X Window System"%' \
|
||||||
-e "s%__delete_is_del__%@delete_is_del@%" \
|
-e "s%__delete_is_del__%@delete_is_del@%" \
|
||||||
-e "s%__double_buffer__%@double_buffer@%" \
|
-e "s%__double_buffer__%@double_buffer@%" \
|
||||||
-e "s%__initial_erase__%@initial_erase@%" \
|
-e "s%__initial_erase__%@initial_erase@%" \
|
||||||
-e "s%__default_class__%$APP_TYPE%" \
|
-e "s%__default_class__%@APP_CLASS@%" \
|
||||||
-e "s%__apploaddir__%$APPS_DIR%" \
|
-e "s%__apploaddir__%@APPSDIR@%" \
|
||||||
-e "s%__mansuffix__%$MY_MANSECT%g" \
|
-e "s%__mansuffix__%$MY_MANSECT%g" \
|
||||||
-e "s%__miscmansuffix__%$X_MANSECT%g" \
|
-e "s%__miscmansuffix__%$X_MANSECT%g" \
|
||||||
-e "s%__pixmapsdir__%$XPMS_DIR%" \
|
-e "s%__pixmapsdir__%@PIXMAPDIR@%" \
|
||||||
-e 's%fIutmp\\%fI'$UTMP_NAME'\\%g' \
|
-e "s%__strings_max__%@STRINGS_MAX@%" \
|
||||||
-e "s%/etc/utmp%$UTMP_PATH%g" \
|
-e "s%__utmp_name__%@UTMP_NAME@%g" \
|
||||||
-e 's%fIwtmp\\%fI'$WTMP_NAME'\\%g' \
|
-e "s%__utmp_path__%@UTMP_PATH@%g" \
|
||||||
-e "s%/etc/wtmp%$WTMP_PATH%g" \
|
-e "s%__wtmp_name__%@WTMP_NAME@%g" \
|
||||||
|
-e "s%__wtmp_path__%@WTMP_PATH@%g" \
|
||||||
-e 's%/\\(\*\*%/*%g' \
|
-e 's%/\\(\*\*%/*%g' \
|
||||||
"$OLD_FILE" >$NEW_FILE
|
"$OLD_FILE" >$NEW_FILE
|
||||||
# diff -u $OLD_FILE $NEW_FILE
|
# diff -u $OLD_FILE $NEW_FILE
|
||||||
|
|
452
app/xterm/misc.c
452
app/xterm/misc.c
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: misc.c,v 1.1044 2023/01/07 01:11:16 tom Exp $ */
|
/* $XTermId: misc.c,v 1.1094 2024/06/26 08:05:39 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1999-2022,2023 by Thomas E. Dickey
|
* Copyright 1999-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -138,8 +138,6 @@
|
||||||
static Boolean xtermAllocColor(XtermWidget, XColor *, const char *);
|
static Boolean xtermAllocColor(XtermWidget, XColor *, const char *);
|
||||||
static Cursor make_hidden_cursor(XtermWidget);
|
static Cursor make_hidden_cursor(XtermWidget);
|
||||||
|
|
||||||
static char emptyString[] = "";
|
|
||||||
|
|
||||||
#if OPT_EXEC_XTERM
|
#if OPT_EXEC_XTERM
|
||||||
/* Like readlink(2), but returns a malloc()ed buffer, or NULL on
|
/* Like readlink(2), but returns a malloc()ed buffer, or NULL on
|
||||||
error; adapted from libc docs */
|
error; adapted from libc docs */
|
||||||
|
@ -308,14 +306,9 @@ do_xevents(XtermWidget xw)
|
||||||
TScreen *screen = TScreenOf(xw);
|
TScreen *screen = TScreenOf(xw);
|
||||||
|
|
||||||
if (xtermAppPending()
|
if (xtermAppPending()
|
||||||
||
|
|| GetBytesAvailable(screen->display) > 0) {
|
||||||
#if defined(VMS) || defined(__VMS)
|
|
||||||
screen->display->qlen > 0
|
|
||||||
#else
|
|
||||||
GetBytesAvailable(ConnectionNumber(screen->display)) > 0
|
|
||||||
#endif
|
|
||||||
)
|
|
||||||
xevents(xw);
|
xevents(xw);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -1346,7 +1339,7 @@ AtomBell(XtermWidget xw, int which)
|
||||||
|
|
||||||
for (n = 0; n < XtNumber(table); ++n) {
|
for (n = 0; n < XtNumber(table); ++n) {
|
||||||
if (table[n].value == which) {
|
if (table[n].value == which) {
|
||||||
result = XInternAtom(XtDisplay(xw), table[n].name, False);
|
result = CachedInternAtom(XtDisplay(xw), table[n].name);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1780,10 +1773,11 @@ xtermDeiconify(XtermWidget xw)
|
||||||
Display *dpy = screen->display;
|
Display *dpy = screen->display;
|
||||||
Window target = VShellWindow(xw);
|
Window target = VShellWindow(xw);
|
||||||
XEvent e;
|
XEvent e;
|
||||||
Atom atom_state = XInternAtom(dpy, "_NET_ACTIVE_WINDOW", False);
|
Atom atom_state = CachedInternAtom(dpy, "_NET_ACTIVE_WINDOW");
|
||||||
|
|
||||||
if (xtermIsIconified(xw)) {
|
if (xtermIsIconified(xw)) {
|
||||||
TRACE(("...de-iconify window %#lx\n", target));
|
TRACE(("...de-iconify window %#lx\n", target));
|
||||||
|
ResetHiddenHint(xw);
|
||||||
XMapWindow(dpy, target);
|
XMapWindow(dpy, target);
|
||||||
|
|
||||||
memset(&e, 0, sizeof(e));
|
memset(&e, 0, sizeof(e));
|
||||||
|
@ -1833,8 +1827,8 @@ xtermIsIconified(XtermWidget xw)
|
||||||
unsigned char *prop_return = 0;
|
unsigned char *prop_return = 0;
|
||||||
long long_length = 1024;
|
long long_length = 1024;
|
||||||
Atom requested_type = XA_ATOM;
|
Atom requested_type = XA_ATOM;
|
||||||
Atom is_hidden = XInternAtom(dpy, "_NET_WM_STATE_HIDDEN", False);
|
Atom is_hidden = CachedInternAtom(dpy, "_NET_WM_STATE_HIDDEN");
|
||||||
Atom wm_state = XInternAtom(dpy, "_NET_WM_STATE", False);
|
Atom wm_state = CachedInternAtom(dpy, "_NET_WM_STATE");
|
||||||
|
|
||||||
/* this works with non-EWMH */
|
/* this works with non-EWMH */
|
||||||
result = (win_attrs.map_state != IsViewable) ? True : False;
|
result = (win_attrs.map_state != IsViewable) ? True : False;
|
||||||
|
@ -2484,9 +2478,11 @@ GenerateLogPath(void)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
static const char log_def_name[] = "XtermLog.XXXXXX";
|
{
|
||||||
if ((log_default = x_strdup(log_def_name)) != NULL) {
|
static const char log_def_name[] = "XtermLog.XXXXXX";
|
||||||
MakeTemp(log_default);
|
if ((log_default = x_strdup(log_def_name)) != NULL) {
|
||||||
|
MakeTemp(log_default);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -3482,7 +3478,7 @@ xtermIsPrintable(XtermWidget xw, Char **bufp, Char *last)
|
||||||
PtyData data;
|
PtyData data;
|
||||||
|
|
||||||
if (decodeUtf8(screen, fakePtyData(&data, cp, last))) {
|
if (decodeUtf8(screen, fakePtyData(&data, cp, last))) {
|
||||||
if (data.utf_data != UCS_REPL
|
if (!is_UCS_SPECIAL(data.utf_data)
|
||||||
&& (data.utf_data >= 128 ||
|
&& (data.utf_data >= 128 ||
|
||||||
ansi_table[data.utf_data] == CASE_PRINT)) {
|
ansi_table[data.utf_data] == CASE_PRINT)) {
|
||||||
next += (data.utf_size - 1);
|
next += (data.utf_size - 1);
|
||||||
|
@ -4462,7 +4458,7 @@ parse_decudk(XtermWidget xw, const char *cp)
|
||||||
* Parse numeric parameters. Normally we use a state machine to simplify
|
* Parse numeric parameters. Normally we use a state machine to simplify
|
||||||
* interspersing with control characters, but have the string already.
|
* interspersing with control characters, but have the string already.
|
||||||
*/
|
*/
|
||||||
static void
|
void
|
||||||
parse_ansi_params(ANSI *params, const char **string)
|
parse_ansi_params(ANSI *params, const char **string)
|
||||||
{
|
{
|
||||||
const char *cp = *string;
|
const char *cp = *string;
|
||||||
|
@ -4615,7 +4611,6 @@ parse_decdld(ANSI *params, const char *string)
|
||||||
#define parse_decdld(p,q) /* nothing */
|
#define parse_decdld(p,q) /* nothing */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OPT_DEC_RECTOPS
|
|
||||||
static const char *
|
static const char *
|
||||||
skip_params(const char *cp)
|
skip_params(const char *cp)
|
||||||
{
|
{
|
||||||
|
@ -4624,9 +4619,11 @@ skip_params(const char *cp)
|
||||||
return cp;
|
return cp;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if OPT_MOD_FKEYS || OPT_DEC_RECTOPS || (OPT_VT525_COLORS && OPT_ISO_COLORS)
|
||||||
static int
|
static int
|
||||||
parse_int_param(const char **cp)
|
parse_int_param(const char **cp)
|
||||||
{
|
{
|
||||||
|
Boolean found = False;
|
||||||
int result = 0;
|
int result = 0;
|
||||||
const char *s = *cp;
|
const char *s = *cp;
|
||||||
while (*s != '\0') {
|
while (*s != '\0') {
|
||||||
|
@ -4635,15 +4632,18 @@ parse_int_param(const char **cp)
|
||||||
break;
|
break;
|
||||||
} else if (*s >= '0' && *s <= '9') {
|
} else if (*s >= '0' && *s <= '9') {
|
||||||
result = (result * 10) + (*s++ - '0');
|
result = (result * 10) + (*s++ - '0');
|
||||||
|
found = True;
|
||||||
} else {
|
} else {
|
||||||
s += strlen(s);
|
s += strlen(s);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TRACE(("parse-int %s ->%d, %#x->%s\n", *cp, result, result, s));
|
TRACE(("parse-int \"%s\" ->%d, %#x->\"%s\"\n", *cp, result, result, s));
|
||||||
*cp = s;
|
*cp = s;
|
||||||
return result;
|
return found ? result : -1;
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
static int
|
static int
|
||||||
parse_chr_param(const char **cp)
|
parse_chr_param(const char **cp)
|
||||||
{
|
{
|
||||||
|
@ -4658,11 +4658,17 @@ parse_chr_param(const char **cp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
TRACE(("parse-chr %s ->%d, %#x->%s\n", *cp, result, result, s));
|
TRACE(("parse-chr %s ->%#x, %#x->%s\n", *cp, result, result, s));
|
||||||
*cp = s;
|
*cp = s;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if OPT_TRACE
|
||||||
|
#define done_DECCIR() do { TRACE(("...quit DECCIR @%d\n", __LINE__)); return; } while(0)
|
||||||
|
#else
|
||||||
|
#define done_DECCIR() return
|
||||||
|
#endif
|
||||||
|
|
||||||
static void
|
static void
|
||||||
restore_DECCIR(XtermWidget xw, const char *cp)
|
restore_DECCIR(XtermWidget xw, const char *cp)
|
||||||
{
|
{
|
||||||
|
@ -4671,22 +4677,33 @@ restore_DECCIR(XtermWidget xw, const char *cp)
|
||||||
|
|
||||||
/* row */
|
/* row */
|
||||||
if ((value = parse_int_param(&cp)) <= 0 || value > MaxRows(screen))
|
if ((value = parse_int_param(&cp)) <= 0 || value > MaxRows(screen))
|
||||||
return;
|
done_DECCIR();
|
||||||
screen->cur_row = (value - 1);
|
screen->cur_row = (value - 1);
|
||||||
|
|
||||||
/* column */
|
/* column */
|
||||||
if ((value = parse_int_param(&cp)) <= 0 || value > MaxCols(screen))
|
if ((value = parse_int_param(&cp)) <= 0 || value > MaxCols(screen))
|
||||||
return;
|
done_DECCIR();
|
||||||
screen->cur_col = (value - 1);
|
screen->cur_col = (value - 1);
|
||||||
|
|
||||||
/* page */
|
/* page */
|
||||||
if (parse_int_param(&cp) != 1)
|
if (parse_int_param(&cp) != 1)
|
||||||
return;
|
done_DECCIR();
|
||||||
|
|
||||||
/* rendition */
|
/* rendition */
|
||||||
if (((value = parse_chr_param(&cp)) & 0xf0) != 0x40)
|
if (((value = parse_chr_param(&cp)) & 0xf0) != 0x40) {
|
||||||
return;
|
if (value & 0x10) {
|
||||||
|
/*
|
||||||
|
* VT420 is documented for bit 5 always reset; VT520/VT525 are not
|
||||||
|
* documented, but do use the bit for setting invisible mode.
|
||||||
|
*/
|
||||||
|
if (screen->vtXX_level <= 4)
|
||||||
|
done_DECCIR();
|
||||||
|
} else if (!(value & 0x40)) {
|
||||||
|
done_DECCIR();
|
||||||
|
}
|
||||||
|
}
|
||||||
UIntClr(xw->flags, (INVERSE | BLINK | UNDERLINE | BOLD));
|
UIntClr(xw->flags, (INVERSE | BLINK | UNDERLINE | BOLD));
|
||||||
|
xw->flags |= (value & 16) ? INVISIBLE : 0;
|
||||||
xw->flags |= (value & 8) ? INVERSE : 0;
|
xw->flags |= (value & 8) ? INVERSE : 0;
|
||||||
xw->flags |= (value & 4) ? BLINK : 0;
|
xw->flags |= (value & 4) ? BLINK : 0;
|
||||||
xw->flags |= (value & 2) ? UNDERLINE : 0;
|
xw->flags |= (value & 2) ? UNDERLINE : 0;
|
||||||
|
@ -4694,38 +4711,39 @@ restore_DECCIR(XtermWidget xw, const char *cp)
|
||||||
|
|
||||||
/* attributes */
|
/* attributes */
|
||||||
if (((value = parse_chr_param(&cp)) & 0xfe) != 0x40)
|
if (((value = parse_chr_param(&cp)) & 0xfe) != 0x40)
|
||||||
return;
|
done_DECCIR();
|
||||||
screen->protected_mode &= ~DEC_PROTECT;
|
screen->protected_mode &= ~DEC_PROTECT;
|
||||||
screen->protected_mode |= (value & 1) ? DEC_PROTECT : 0;
|
screen->protected_mode |= (value & 1) ? DEC_PROTECT : 0;
|
||||||
|
|
||||||
/* flags */
|
/* flags */
|
||||||
if (((value = parse_chr_param(&cp)) & 0xf0) != 0x40)
|
if (((value = parse_chr_param(&cp)) & 0xf0) != 0x40)
|
||||||
return;
|
done_DECCIR();
|
||||||
screen->do_wrap = (value & 8) ? True : False;
|
screen->do_wrap = (value & 8) ? True : False;
|
||||||
screen->curss = (Char) ((value & 4) ? 3 : ((value & 2) ? 2 : 0));
|
screen->curss = (Char) ((value & 4) ? 3 : ((value & 2) ? 2 : 0));
|
||||||
UIntClr(xw->flags, ORIGIN);
|
UIntClr(xw->flags, ORIGIN);
|
||||||
xw->flags |= (value & 1) ? ORIGIN : 0;
|
xw->flags |= (value & 1) ? ORIGIN : 0;
|
||||||
|
|
||||||
if ((value = (parse_chr_param(&cp) - '0')) < 0 || value >= NUM_GSETS)
|
if ((value = (parse_chr_param(&cp) - '0')) < 0 || value >= NUM_GSETS)
|
||||||
return;
|
done_DECCIR();
|
||||||
screen->curgl = (Char) value;
|
screen->curgl = (Char) value;
|
||||||
|
|
||||||
if ((value = (parse_chr_param(&cp) - '0')) < 0 || value >= NUM_GSETS)
|
if ((value = (parse_chr_param(&cp) - '0')) < 0 || value >= NUM_GSETS)
|
||||||
return;
|
done_DECCIR();
|
||||||
screen->curgr = (Char) value;
|
screen->curgr = (Char) value;
|
||||||
|
|
||||||
/* character-set size */
|
/* character-set size */
|
||||||
if (parse_chr_param(&cp) != 0x4f) /* works for xterm */
|
if (parse_chr_param(&cp) == 0xffff) /* FIXME: limit SCS? */
|
||||||
return;
|
done_DECCIR();
|
||||||
|
|
||||||
/* SCS designators */
|
/* SCS designators */
|
||||||
for (value = 0; value < NUM_GSETS; ++value) {
|
for (value = 0; value < NUM_GSETS; ++value) {
|
||||||
if (*cp == '%') {
|
if (*cp == '\0') {
|
||||||
xtermDecodeSCS(xw, value, 0, '%', *++cp);
|
done_DECCIR();
|
||||||
} else if (*cp != '\0') {
|
} else if (strchr("%&\"", *cp) != NULL) {
|
||||||
xtermDecodeSCS(xw, value, 0, '\0', *cp);
|
int prefix = *cp++;
|
||||||
|
xtermDecodeSCS(xw, value, 0, prefix, *cp);
|
||||||
} else {
|
} else {
|
||||||
return;
|
xtermDecodeSCS(xw, value, 0, '\0', *cp);
|
||||||
}
|
}
|
||||||
cp++;
|
cp++;
|
||||||
}
|
}
|
||||||
|
@ -4747,10 +4765,8 @@ restore_DECTABSR(XtermWidget xw, const char *cp)
|
||||||
--stop;
|
--stop;
|
||||||
if (OkTAB(stop)) {
|
if (OkTAB(stop)) {
|
||||||
TabSet(xw->tabs, stop);
|
TabSet(xw->tabs, stop);
|
||||||
stop = 0;
|
|
||||||
} else {
|
|
||||||
fail = True;
|
|
||||||
}
|
}
|
||||||
|
stop = 0;
|
||||||
} else {
|
} else {
|
||||||
fail = True;
|
fail = True;
|
||||||
}
|
}
|
||||||
|
@ -4762,7 +4778,116 @@ restore_DECTABSR(XtermWidget xw, const char *cp)
|
||||||
|
|
||||||
TRACE(("...done DECTABSR\n"));
|
TRACE(("...done DECTABSR\n"));
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* OPT_DEC_RECTOPS */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* VT510 and VT520 reference manual have the same explanation for Pn (params),
|
||||||
|
* but it does not agree with the possible values for Dscs because it refers
|
||||||
|
* to "ISO Latin-7" (ISO 8859-13 aka "Baltic Rim"), and omits ISO Greek
|
||||||
|
* (ISO 8859-7):
|
||||||
|
*
|
||||||
|
* ------------------------------------------------------------------------
|
||||||
|
* Pn Meaning
|
||||||
|
* ------------------------------------------------------------------------
|
||||||
|
* 0 DEC, ISO Latin-1, ISO Latin-2
|
||||||
|
* 1 ISO Latin-5, ISO Latin-7, ISO Cyrillic, ISO Hebrew
|
||||||
|
* ------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* versus
|
||||||
|
*
|
||||||
|
* ------------------------------------------------------------------------
|
||||||
|
* Dscs Character Set
|
||||||
|
* ------------------------------------------------------------------------
|
||||||
|
* %5 DEC Supplemental
|
||||||
|
* "? DEC Greek
|
||||||
|
* "4 DEC Hebrew
|
||||||
|
* %0 DEC Turkish
|
||||||
|
* &4 DEC Cyrillic
|
||||||
|
* < User-preferred Supplemental
|
||||||
|
* A ISO Latin-1 Supplemental
|
||||||
|
* B ISO Latin-2 Supplemental
|
||||||
|
* F ISO Greek Supplemental
|
||||||
|
* H ISO Hebrew Supplemental
|
||||||
|
* M ISO Latin-5 Supplemental
|
||||||
|
* L ISO Latin-Cyrillic
|
||||||
|
* ------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* DEC 070, page 5-123 explains that Pn ("Ps" in the text) selects 94 or 96
|
||||||
|
* character sets (0 or 1, respectively), and on the next page states that
|
||||||
|
* the valid combinations are 0 (DEC Supplemental) and 1 (ISO Latin-1
|
||||||
|
* supplemental). The document comments in regard to LS0 that (applications)
|
||||||
|
* should not assume that they can use 96-character sets for G0, but that it
|
||||||
|
* is possible to do this using UPSS.
|
||||||
|
*
|
||||||
|
* The VT510/VT520 reference manuals under SCS Select Character Set show
|
||||||
|
* a list of 94- and 96-character sets with "DEC" and "NRCS" as 94-characters,
|
||||||
|
* and the "ISO" as 96-characters. A few 94-character sets are added, based
|
||||||
|
* on testing VT520/VT525 that shows that DEC Special Graphics also is allowed.
|
||||||
|
*/
|
||||||
|
static Bool
|
||||||
|
decode_upss(XtermWidget xw, const char *cp, char psarg, DECNRCM_codes * upss)
|
||||||
|
{
|
||||||
|
/* *INDENT-OFF* */
|
||||||
|
static const struct {
|
||||||
|
DECNRCM_codes code;
|
||||||
|
int params; /* 0 for 94-characters, 1 for 96-characters */
|
||||||
|
int prefix;
|
||||||
|
int suffix;
|
||||||
|
int min_level;
|
||||||
|
int max_level;
|
||||||
|
} upss_table[] = {
|
||||||
|
{ DFT_UPSS, 0, '%', '5', 3, 9 },
|
||||||
|
{ nrc_ASCII, 0, 0, 'A', 1, 9 }, /* undocumented */
|
||||||
|
{ nrc_DEC_Spec_Graphic, 0, 0, '0', 1, 9 }, /* undocumented */
|
||||||
|
{ nrc_DEC_Technical, 0, 0, '>', 3, 9 }, /* undocumented */
|
||||||
|
{ nrc_DEC_Greek_Supp, 0, '"', '?', 5, 9 },
|
||||||
|
{ nrc_DEC_Hebrew_Supp, 0, '"', '4', 5, 9 },
|
||||||
|
{ nrc_DEC_Turkish_Supp, 0, '%', '0', 5, 9 },
|
||||||
|
{ nrc_DEC_Cyrillic, 0, '&', '4', 5, 9 },
|
||||||
|
{ ALT_UPSS, 1, 0, 'A', 3, 9 },
|
||||||
|
{ nrc_ISO_Latin_2_Supp, 1, 0, 'B', 5, 9 },
|
||||||
|
{ nrc_ISO_Greek_Supp, 1, 0, 'F', 5, 9 },
|
||||||
|
{ nrc_ISO_Hebrew_Supp, 1, 0, 'H', 5, 9 },
|
||||||
|
{ nrc_ISO_Latin_5_Supp, 1, 0, 'M', 5, 9 },
|
||||||
|
{ nrc_ISO_Latin_Cyrillic, 1, 0, 'L', 5, 9 },
|
||||||
|
};
|
||||||
|
/* *INDENT-ON* */
|
||||||
|
TScreen *screen = TScreenOf(xw);
|
||||||
|
Bool result = False;
|
||||||
|
|
||||||
|
*upss = nrc_ASCII;
|
||||||
|
if (screen->vtXX_level >= 3) {
|
||||||
|
Cardinal n;
|
||||||
|
for (n = 0; n < XtNumber(upss_table); ++n) {
|
||||||
|
if (((int) psarg - '0') != upss_table[n].params)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (cp[1] == '\0') {
|
||||||
|
if (upss_table[n].suffix != cp[0])
|
||||||
|
continue;
|
||||||
|
} else if (cp[2] == '\0') {
|
||||||
|
if (upss_table[n].prefix != cp[0])
|
||||||
|
continue;
|
||||||
|
if (upss_table[n].suffix != cp[1])
|
||||||
|
continue;
|
||||||
|
} else {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
result = True;
|
||||||
|
*upss = upss_table[n].code;
|
||||||
|
if (*upss == DFT_UPSS) {
|
||||||
|
TRACE(("DECAUPSS (default)\n"));
|
||||||
|
} else if (*upss == ALT_UPSS) {
|
||||||
|
TRACE(("DECAUPSS (alternate)\n"));
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
TRACE(("DECAUPSS %ssuccessful %s\n",
|
||||||
|
result ? "" : "not ", visibleScsCode(*upss)));
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
do_dcs(XtermWidget xw, Char *dcsbuf, size_t dcslen)
|
do_dcs(XtermWidget xw, Char *dcsbuf, size_t dcslen)
|
||||||
|
@ -4772,8 +4897,12 @@ do_dcs(XtermWidget xw, Char *dcsbuf, size_t dcslen)
|
||||||
const char *cp = (const char *) dcsbuf;
|
const char *cp = (const char *) dcsbuf;
|
||||||
Bool okay;
|
Bool okay;
|
||||||
ANSI params;
|
ANSI params;
|
||||||
#if OPT_DEC_RECTOPS
|
|
||||||
char psarg = '0';
|
char psarg = '0';
|
||||||
|
#if OPT_VT525_COLORS && OPT_ISO_COLORS
|
||||||
|
const char *cp2;
|
||||||
|
#endif
|
||||||
|
#if (OPT_VT525_COLORS && OPT_ISO_COLORS) || OPT_MOD_FKEYS
|
||||||
|
int ival;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
TRACE(("do_dcs(%s:%lu)\n", (char *) dcsbuf, (unsigned long) dcslen));
|
TRACE(("do_dcs(%s:%lu)\n", (char *) dcsbuf, (unsigned long) dcslen));
|
||||||
|
@ -4863,13 +4992,80 @@ do_dcs(XtermWidget xw, Char *dcsbuf, size_t dcslen)
|
||||||
screen->status_type,
|
screen->status_type,
|
||||||
cp);
|
cp);
|
||||||
} else
|
} else
|
||||||
|
#endif
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
if (!strcmp(cp, "*x")) { /* DECSACE */
|
||||||
|
TRACE(("reply DECSACE\n"));
|
||||||
|
sprintf(reply, "%d%s",
|
||||||
|
screen->cur_decsace,
|
||||||
|
cp);
|
||||||
|
} else
|
||||||
#endif
|
#endif
|
||||||
if (!strcmp(cp, "*|")) { /* DECSNLS */
|
if (!strcmp(cp, "*|")) { /* DECSNLS */
|
||||||
TRACE(("reply DECSNLS\n"));
|
TRACE(("reply DECSNLS\n"));
|
||||||
sprintf(reply, "%d%s",
|
sprintf(reply, "%d%s",
|
||||||
screen->max_row + 1,
|
screen->max_row + 1,
|
||||||
cp);
|
cp);
|
||||||
} else {
|
} else
|
||||||
|
#if OPT_VT525_COLORS && OPT_ISO_COLORS
|
||||||
|
if (screen->terminal_id == 525
|
||||||
|
&& !strcmp((cp2 = skip_params(cp)), ",}")) { /* DECATC */
|
||||||
|
ival = parse_int_param(&cp);
|
||||||
|
TRACE(("reply DECATC:%s\n", cp));
|
||||||
|
if (ival >= 0 && ival < 16 && *cp2 == ',') {
|
||||||
|
sprintf(reply, "%d;%d;%d%s", ival,
|
||||||
|
screen->alt_colors[ival].fg,
|
||||||
|
screen->alt_colors[ival].bg,
|
||||||
|
cp2);
|
||||||
|
} else {
|
||||||
|
okay = False;
|
||||||
|
}
|
||||||
|
} else if (screen->terminal_id == 525
|
||||||
|
&& !strcmp((cp2 = skip_params(cp)), ",|")) { /* DECAC */
|
||||||
|
ival = parse_int_param(&cp);
|
||||||
|
TRACE(("reply DECAC\n"));
|
||||||
|
switch (ival) {
|
||||||
|
case 1: /* normal text */
|
||||||
|
sprintf(reply, "%d,%d%s",
|
||||||
|
screen->assigned_fg,
|
||||||
|
screen->assigned_bg,
|
||||||
|
cp2);
|
||||||
|
break;
|
||||||
|
case 2: /* window frame (not implemented) */
|
||||||
|
/* FALLTHRU */
|
||||||
|
default:
|
||||||
|
okay = False;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
#if OPT_MOD_FKEYS
|
||||||
|
if (*cp == '>' && !strcmp(skip_params(1 + cp), "m")) { /* XTQMODKEYS */
|
||||||
|
++cp;
|
||||||
|
okay = True;
|
||||||
|
ival = parse_int_param(&cp);
|
||||||
|
#define GET_MOD_FKEYS(field) xw->keyboard.modify_now.field
|
||||||
|
#define FMT_MOD_FKEYS(field) sprintf(reply, ">%d;%dm", ival, GET_MOD_FKEYS(field))
|
||||||
|
switch (ival) {
|
||||||
|
case 0:
|
||||||
|
FMT_MOD_FKEYS(allow_keys);
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
FMT_MOD_FKEYS(cursor_keys);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
FMT_MOD_FKEYS(function_keys);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
FMT_MOD_FKEYS(other_keys);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
okay = False;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
okay = False;
|
okay = False;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4935,7 +5131,7 @@ do_dcs(XtermWidget xw, Char *dcsbuf, size_t dcslen)
|
||||||
unparseputn(xw, xw->rgb_widths[0]);
|
unparseputn(xw, xw->rgb_widths[0]);
|
||||||
} else {
|
} else {
|
||||||
char temp[1024];
|
char temp[1024];
|
||||||
sprintf(temp, "%d/%d/%d",
|
sprintf(temp, "%u/%u/%u",
|
||||||
xw->rgb_widths[0],
|
xw->rgb_widths[0],
|
||||||
xw->rgb_widths[1],
|
xw->rgb_widths[1],
|
||||||
xw->rgb_widths[2]);
|
xw->rgb_widths[2]);
|
||||||
|
@ -4988,6 +5184,7 @@ do_dcs(XtermWidget xw, Char *dcsbuf, size_t dcslen)
|
||||||
break; /* no data found, error */
|
break; /* no data found, error */
|
||||||
}
|
}
|
||||||
if ((cp - parsed) > 1024) {
|
if ((cp - parsed) > 1024) {
|
||||||
|
free(name);
|
||||||
break; /* ignore improbable resource */
|
break; /* ignore improbable resource */
|
||||||
}
|
}
|
||||||
TRACE(("query-feature '%s'\n", name));
|
TRACE(("query-feature '%s'\n", name));
|
||||||
|
@ -5032,8 +5229,25 @@ do_dcs(XtermWidget xw, Char *dcsbuf, size_t dcslen)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
#if OPT_DEC_RECTOPS
|
case '0':
|
||||||
|
/* FALLTHRU */
|
||||||
case '1':
|
case '1':
|
||||||
|
if (screen->vtXX_level >= 3 && *skip_params(cp) == '!') {
|
||||||
|
DECNRCM_codes upss;
|
||||||
|
psarg = *cp++;
|
||||||
|
if (*cp++ == '!' && *cp++ == 'u') {
|
||||||
|
#if OPT_WIDE_CHARS
|
||||||
|
if (screen->wide_chars && screen->utf8_mode) {
|
||||||
|
; /* EMPTY */
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
if (decode_upss(xw, cp, psarg, &upss)) {
|
||||||
|
screen->gsets_upss = upss;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
/* FALLTHRU */
|
/* FALLTHRU */
|
||||||
case '2':
|
case '2':
|
||||||
if (*skip_params(cp) == '$') {
|
if (*skip_params(cp) == '$') {
|
||||||
|
@ -5058,7 +5272,6 @@ do_dcs(XtermWidget xw, Char *dcsbuf, size_t dcslen)
|
||||||
/* FALLTHRU */
|
/* FALLTHRU */
|
||||||
default:
|
default:
|
||||||
if (optRegisGraphics(screen) ||
|
if (optRegisGraphics(screen) ||
|
||||||
optSixelGraphics(screen) ||
|
|
||||||
screen->vtXX_level >= 2) { /* VT220 */
|
screen->vtXX_level >= 2) { /* VT220 */
|
||||||
parse_ansi_params(¶ms, &cp);
|
parse_ansi_params(¶ms, &cp);
|
||||||
switch (params.a_final) {
|
switch (params.a_final) {
|
||||||
|
@ -5071,14 +5284,7 @@ do_dcs(XtermWidget xw, Char *dcsbuf, size_t dcslen)
|
||||||
TRACE(("ignoring ReGIS graphic (compilation flag not enabled)\n"));
|
TRACE(("ignoring ReGIS graphic (compilation flag not enabled)\n"));
|
||||||
#endif
|
#endif
|
||||||
break;
|
break;
|
||||||
case 'q': /* sixel */
|
case 'q': /* sixel is done in charproc.c */
|
||||||
#if OPT_SIXEL_GRAPHICS
|
|
||||||
if (optSixelGraphics(screen)) {
|
|
||||||
(void) parse_sixel(xw, ¶ms, cp);
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
TRACE(("ignoring sixel graphic (compilation flag not enabled)\n"));
|
|
||||||
#endif
|
|
||||||
break;
|
break;
|
||||||
case '|': /* DECUDK */
|
case '|': /* DECUDK */
|
||||||
if (screen->vtXX_level >= 2) { /* VT220 */
|
if (screen->vtXX_level >= 2) { /* VT220 */
|
||||||
|
@ -5304,6 +5510,9 @@ do_dec_rqm(XtermWidget xw, int nparams, int *params)
|
||||||
if_PRINT_GRAPHICS2(result = MdBool(screen->graphics_print_color_syntax))
|
if_PRINT_GRAPHICS2(result = MdBool(screen->graphics_print_color_syntax))
|
||||||
result = MdFlag(xw->flags, REVERSEWRAP);
|
result = MdFlag(xw->flags, REVERSEWRAP);
|
||||||
break;
|
break;
|
||||||
|
case srm_REVERSEWRAP2: /* extended reverse wraparound */
|
||||||
|
result = MdFlag(xw->flags, REVERSEWRAP2);
|
||||||
|
break;
|
||||||
#if defined(ALLOWLOGGING)
|
#if defined(ALLOWLOGGING)
|
||||||
case srm_ALLOWLOGGING: /* logging */
|
case srm_ALLOWLOGGING: /* logging */
|
||||||
if_PRINT_GRAPHICS2(result = MdBool(screen->graphics_print_background_mode))
|
if_PRINT_GRAPHICS2(result = MdBool(screen->graphics_print_background_mode))
|
||||||
|
@ -5429,6 +5638,9 @@ do_dec_rqm(XtermWidget xw, int nparams, int *params)
|
||||||
case srm_SAVE_CURSOR:
|
case srm_SAVE_CURSOR:
|
||||||
result = MdBool(screen->sc[screen->whichBuf].saved);
|
result = MdBool(screen->sc[screen->whichBuf].saved);
|
||||||
break;
|
break;
|
||||||
|
case srm_FAST_SCROLL:
|
||||||
|
result = MdBool(screen->fastscroll);
|
||||||
|
break;
|
||||||
#if OPT_TCAP_FKEYS
|
#if OPT_TCAP_FKEYS
|
||||||
case srm_TCAP_FKEYS:
|
case srm_TCAP_FKEYS:
|
||||||
result = MdBool(xw->keyboard.type == keyboardIsTermcap);
|
result = MdBool(xw->keyboard.type == keyboardIsTermcap);
|
||||||
|
@ -5489,6 +5701,35 @@ do_dec_rqm(XtermWidget xw, int nparams, int *params)
|
||||||
result = MdBool(screen->sixel_scrolls_right);
|
result = MdBool(screen->sixel_scrolls_right);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
|
case srm_DECARSM: /* ignore */
|
||||||
|
case srm_DECATCBM: /* ignore */
|
||||||
|
case srm_DECATCUM: /* ignore */
|
||||||
|
case srm_DECBBSM: /* ignore */
|
||||||
|
case srm_DECCAAM: /* ignore */
|
||||||
|
case srm_DECCANSM: /* ignore */
|
||||||
|
case srm_DECCAPSLK: /* ignore */
|
||||||
|
case srm_DECCRTSM: /* ignore */
|
||||||
|
case srm_DECECM: /* ignore */
|
||||||
|
case srm_DECFWM: /* ignore */
|
||||||
|
case srm_DECHCCM: /* ignore */
|
||||||
|
case srm_DECHDPXM: /* ignore */
|
||||||
|
case srm_DECHEM: /* ignore */
|
||||||
|
case srm_DECHWUM: /* ignore */
|
||||||
|
case srm_DECIPEM: /* ignore */
|
||||||
|
case srm_DECKBUM: /* ignore */
|
||||||
|
case srm_DECKLHIM: /* ignore */
|
||||||
|
case srm_DECKPM: /* ignore */
|
||||||
|
case srm_DECRLM: /* ignore */
|
||||||
|
case srm_DECMCM: /* ignore */
|
||||||
|
case srm_DECNAKB: /* ignore */
|
||||||
|
case srm_DECNULM: /* ignore */
|
||||||
|
case srm_DECNUMLK: /* ignore */
|
||||||
|
case srm_DECOSCNM: /* ignore */
|
||||||
|
case srm_DECPCCM: /* ignore */
|
||||||
|
case srm_DECRLCM: /* ignore */
|
||||||
|
case srm_DECRPL: /* ignore */
|
||||||
|
case srm_DECVCCM: /* ignore */
|
||||||
|
case srm_DECXRLM: /* ignore */
|
||||||
default:
|
default:
|
||||||
TRACE(("DATA_ERROR: requested report for unknown private mode %d\n",
|
TRACE(("DATA_ERROR: requested report for unknown private mode %d\n",
|
||||||
params[0]));
|
params[0]));
|
||||||
|
@ -5914,7 +6155,9 @@ ChangeGroup(XtermWidget xw, const char *attribute, char *value)
|
||||||
char *buf = 0;
|
char *buf = 0;
|
||||||
XtSetArg(args[0], my_attr, &buf);
|
XtSetArg(args[0], my_attr, &buf);
|
||||||
XtGetValues(top, args, 1);
|
XtGetValues(top, args, 1);
|
||||||
TRACE(("...comparing{%s}\n", NonNull(buf)));
|
TRACE(("...comparing resource{%s} to new value{%s}\n",
|
||||||
|
NonNull(buf),
|
||||||
|
NonNull(value)));
|
||||||
if (buf != 0 && strcmp(value, buf) == 0)
|
if (buf != 0 && strcmp(value, buf) == 0)
|
||||||
changed = False;
|
changed = False;
|
||||||
}
|
}
|
||||||
|
@ -5932,7 +6175,7 @@ ChangeGroup(XtermWidget xw, const char *attribute, char *value)
|
||||||
const char *propname = (!strcmp(my_attr, XtNtitle)
|
const char *propname = (!strcmp(my_attr, XtNtitle)
|
||||||
? "_NET_WM_NAME"
|
? "_NET_WM_NAME"
|
||||||
: "_NET_WM_ICON_NAME");
|
: "_NET_WM_ICON_NAME");
|
||||||
Atom my_atom = XInternAtom(dpy, propname, False);
|
Atom my_atom = CachedInternAtom(dpy, propname);
|
||||||
|
|
||||||
if (my_atom != None) {
|
if (my_atom != None) {
|
||||||
changed = True;
|
changed = True;
|
||||||
|
@ -5997,9 +6240,6 @@ ChangeGroup(XtermWidget xw, const char *attribute, char *value)
|
||||||
void
|
void
|
||||||
ChangeIconName(XtermWidget xw, char *name)
|
ChangeIconName(XtermWidget xw, char *name)
|
||||||
{
|
{
|
||||||
if (name == 0) {
|
|
||||||
name = emptyString;
|
|
||||||
}
|
|
||||||
if (!showZIconBeep(xw, name))
|
if (!showZIconBeep(xw, name))
|
||||||
ChangeGroup(xw, XtNiconName, name);
|
ChangeGroup(xw, XtNiconName, name);
|
||||||
}
|
}
|
||||||
|
@ -6023,7 +6263,7 @@ ChangeXprop(char *buf)
|
||||||
|
|
||||||
if (pchEndPropName)
|
if (pchEndPropName)
|
||||||
*pchEndPropName = '\0';
|
*pchEndPropName = '\0';
|
||||||
aprop = XInternAtom(dpy, buf, False);
|
aprop = CachedInternAtom(dpy, buf);
|
||||||
if (pchEndPropName == NULL) {
|
if (pchEndPropName == NULL) {
|
||||||
/* no "=value" given, so delete the property */
|
/* no "=value" given, so delete the property */
|
||||||
XDeleteProperty(dpy, w, aprop);
|
XDeleteProperty(dpy, w, aprop);
|
||||||
|
@ -6581,7 +6821,7 @@ xt_error(String message)
|
||||||
if (x_getenv("DISPLAY") == 0) {
|
if (x_getenv("DISPLAY") == 0) {
|
||||||
xtermWarning("DISPLAY is not set\n");
|
xtermWarning("DISPLAY is not set\n");
|
||||||
}
|
}
|
||||||
exit(1);
|
exit(ERROR_MISC);
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
int
|
||||||
|
@ -7593,6 +7833,90 @@ xtermSetWinSize(XtermWidget xw)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
xtermInitTitle(TScreen *screen, int which)
|
||||||
|
{
|
||||||
|
TRACE(("xtermInitTitle #%d\n", which));
|
||||||
|
screen->saved_titles.data[which].iconName = NULL;
|
||||||
|
screen->saved_titles.data[which].windowName = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Store/update an item on the title stack.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xtermPushTitle(TScreen *screen, int which, SaveTitle * item)
|
||||||
|
{
|
||||||
|
if (which-- <= 0) {
|
||||||
|
which = screen->saved_titles.used++;
|
||||||
|
screen->saved_titles.used %= MAX_SAVED_TITLES;
|
||||||
|
}
|
||||||
|
which %= MAX_SAVED_TITLES;
|
||||||
|
xtermFreeTitle(&screen->saved_titles.data[which]);
|
||||||
|
screen->saved_titles.data[which] = *item;
|
||||||
|
TRACE(("xtermPushTitle #%d: icon='%s', window='%s'\n", which,
|
||||||
|
NonNull(item->iconName),
|
||||||
|
NonNull(item->windowName)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Pop/retrieve an item from the title stack.
|
||||||
|
*/
|
||||||
|
Boolean
|
||||||
|
xtermPopTitle(TScreen *screen, int which, SaveTitle * item)
|
||||||
|
{
|
||||||
|
Boolean result = True;
|
||||||
|
Boolean popped = False;
|
||||||
|
|
||||||
|
if (which-- > 0) {
|
||||||
|
which %= MAX_SAVED_TITLES;
|
||||||
|
} else if (screen->saved_titles.used > 0) {
|
||||||
|
which = ((--(screen->saved_titles.used) + MAX_SAVED_TITLES) % MAX_SAVED_TITLES);
|
||||||
|
popped = True;
|
||||||
|
} else {
|
||||||
|
result = False;
|
||||||
|
}
|
||||||
|
if (result) {
|
||||||
|
*item = screen->saved_titles.data[which];
|
||||||
|
TRACE(("xtermPopTitle #%d: icon='%s', window='%s'\n", which,
|
||||||
|
NonNull(item->iconName),
|
||||||
|
NonNull(item->windowName)));
|
||||||
|
|
||||||
|
/* if the data is incomplete, try to get it from the next levels */
|
||||||
|
#define TryHigher(name) \
|
||||||
|
if (item->name == NULL) { \
|
||||||
|
int n; \
|
||||||
|
for (n = 1; n < MAX_SAVED_TITLES; ++n) { \
|
||||||
|
int nw = ((which - n) + MAX_SAVED_TITLES) % MAX_SAVED_TITLES; \
|
||||||
|
if ((item->name = screen->saved_titles.data[nw].name) != NULL) { \
|
||||||
|
item->name = x_strdup(item->name); \
|
||||||
|
break; \
|
||||||
|
} \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
TryHigher(iconName);
|
||||||
|
TryHigher(windowName);
|
||||||
|
|
||||||
|
if (popped) {
|
||||||
|
xtermInitTitle(screen, which);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Discard data used for pushing or popping title.
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
xtermFreeTitle(SaveTitle * item)
|
||||||
|
{
|
||||||
|
TRACE(("xtermFreeTitle icon='%s', window='%s'\n",
|
||||||
|
NonNull(item->iconName),
|
||||||
|
NonNull(item->windowName)));
|
||||||
|
FreeAndNull(item->iconName);
|
||||||
|
FreeAndNull(item->windowName);
|
||||||
|
}
|
||||||
|
|
||||||
#if OPT_XTERM_SGR
|
#if OPT_XTERM_SGR
|
||||||
|
|
||||||
#if OPT_TRACE
|
#if OPT_TRACE
|
||||||
|
|
|
@ -1,3 +1,93 @@
|
||||||
|
xterm-dev (393) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Sat, 25 May 2024 09:03:00 -0400
|
||||||
|
|
||||||
|
xterm-dev (392) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Wed, 15 May 2024 16:52:03 -0400
|
||||||
|
|
||||||
|
xterm-dev (391) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Tue, 16 Apr 2024 03:51:06 -0400
|
||||||
|
|
||||||
|
xterm-dev (390) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Thu, 11 Jan 2024 16:18:30 -0500
|
||||||
|
|
||||||
|
xterm-dev (389) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 12 Nov 2023 16:48:50 -0500
|
||||||
|
|
||||||
|
xterm-dev (388) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Fri, 20 Oct 2023 16:43:09 -0400
|
||||||
|
|
||||||
|
xterm-dev (387) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Tue, 10 Oct 2023 20:02:59 -0400
|
||||||
|
|
||||||
|
xterm-dev (386) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 02 Oct 2023 17:19:01 -0400
|
||||||
|
|
||||||
|
xterm-dev (385) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Thu, 13 Jul 2023 14:57:11 -0400
|
||||||
|
|
||||||
|
xterm-dev (384) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Thu, 29 Jun 2023 18:22:58 -0400
|
||||||
|
|
||||||
|
xterm-dev (383) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Wed, 31 May 2023 13:04:55 -0400
|
||||||
|
|
||||||
|
xterm-dev (382) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Mon, 29 May 2023 07:15:40 -0400
|
||||||
|
|
||||||
|
xterm-dev (381) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 28 May 2023 04:34:22 -0400
|
||||||
|
|
||||||
|
xterm-dev (380) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Sun, 26 Feb 2023 20:00:24 -0500
|
||||||
|
|
||||||
|
xterm-dev (379) unstable; urgency=low
|
||||||
|
|
||||||
|
* maintenance updates
|
||||||
|
|
||||||
|
-- Thomas E. Dickey <dickey@invisible-island.net> Tue, 24 Jan 2023 20:14:44 -0500
|
||||||
|
|
||||||
xterm-dev (378) unstable; urgency=low
|
xterm-dev (378) unstable; urgency=low
|
||||||
|
|
||||||
* maintenance updates
|
* maintenance updates
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
10
|
12
|
||||||
|
|
|
@ -35,7 +35,7 @@ authorization.
|
||||||
Files: * */*
|
Files: * */*
|
||||||
License: MIT-X11
|
License: MIT-X11
|
||||||
|
|
||||||
Copyright 1996-2022,2023 by Thomas E. Dickey
|
Copyright 1996-2023,2024 by Thomas E. Dickey
|
||||||
|
|
||||||
(date ranges vary, depending on when the respective files were first changed
|
(date ranges vary, depending on when the respective files were first changed
|
||||||
significantly, and run through the most recent change date).
|
significantly, and run through the most recent change date).
|
||||||
|
|
|
@ -109,7 +109,7 @@ install: install-stamp
|
||||||
install-stamp: build-stamp
|
install-stamp: build-stamp
|
||||||
dh_testdir
|
dh_testdir
|
||||||
dh_testroot
|
dh_testroot
|
||||||
dh_clean -k
|
dh_prep
|
||||||
dh_installdirs
|
dh_installdirs
|
||||||
|
|
||||||
$(MAKE) install \
|
$(MAKE) install \
|
||||||
|
@ -123,8 +123,8 @@ install-indep:
|
||||||
install-arch:
|
install-arch:
|
||||||
dh_testdir
|
dh_testdir
|
||||||
dh_testroot
|
dh_testroot
|
||||||
dh_prep -s
|
dh_prep -a
|
||||||
dh_installdirs -s
|
dh_installdirs -a
|
||||||
|
|
||||||
$(MAKE) install-bin \
|
$(MAKE) install-bin \
|
||||||
DESTDIR=$(DSTDIR)
|
DESTDIR=$(DSTDIR)
|
||||||
|
|
|
@ -4,22 +4,4 @@
|
||||||
xterm-dev: command-in-menu-file-and-desktop-file xterm-dev usr/share/menu/xterm-dev:7
|
xterm-dev: command-in-menu-file-and-desktop-file xterm-dev usr/share/menu/xterm-dev:7
|
||||||
xterm-dev: command-in-menu-file-and-desktop-file uxterm-dev usr/share/menu/xterm-dev:14
|
xterm-dev: command-in-menu-file-and-desktop-file uxterm-dev usr/share/menu/xterm-dev:14
|
||||||
|
|
||||||
# The lintian warning is incorrect: there is no portable path for Perl.
|
|
||||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=906901
|
|
||||||
# https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=904409
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/256colors.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/256colors2.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/88colors.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/88colors2.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/closest-rgb.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/dynamic.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/paste64.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/query-color.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/query-fonts.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/query-status.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/report-sgr.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/resize.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/sgrPushPop.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
xterm-dev: wrong-path-for-interpreter usr/share/doc/xterm-dev/examples/vttests/tcapquery.pl (#!/usr/bin/env != /usr/bin/perl)
|
|
||||||
|
|
||||||
# vile: confmode
|
# vile: confmode
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $XTermId: Makefile,v 1.99 2022/11/26 12:25:02 tom Exp $
|
# $XTermId: Makefile,v 1.114 2024/05/25 13:03:00 tom Exp $
|
||||||
# $FreeBSD: head/x11/xterm/Makefile 492827 2019-02-13 06:43:36Z ehaupt $
|
# $FreeBSD: head/x11/xterm/Makefile 492827 2019-02-13 06:43:36Z ehaupt $
|
||||||
|
|
||||||
# This is adapted from the FreeBSD port, installing as "xterm-dev" with
|
# This is adapted from the FreeBSD port, installing as "xterm-dev" with
|
||||||
|
@ -7,7 +7,7 @@
|
||||||
# and "make makesum".
|
# and "make makesum".
|
||||||
|
|
||||||
PORTNAME= xterm
|
PORTNAME= xterm
|
||||||
PORTVERSION= 378
|
PORTVERSION= 393
|
||||||
CATEGORIES= x11
|
CATEGORIES= x11
|
||||||
MASTER_SITES= ftp://ftp.invisible-island.net/xterm/:src1 \
|
MASTER_SITES= ftp://ftp.invisible-island.net/xterm/:src1 \
|
||||||
https://invisible-mirror.net/archives/xterm/:src1
|
https://invisible-mirror.net/archives/xterm/:src1
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
# $NetBSD: Makefile,v 1.117 2018/03/12 11:18:00 wiz Exp $
|
# $NetBSD: Makefile,v 1.117 2018/03/12 11:18:00 wiz Exp $
|
||||||
|
|
||||||
DISTNAME= xterm-378
|
DISTNAME= xterm-393
|
||||||
PKGREVISION= 1
|
PKGREVISION= 1
|
||||||
CATEGORIES= x11
|
CATEGORIES= x11
|
||||||
MASTER_SITES= ftp://ftp.invisible-island.net/xterm/
|
MASTER_SITES= ftp://ftp.invisible-island.net/xterm/
|
||||||
|
|
|
@ -1,15 +1,15 @@
|
||||||
# $XTermId: xterm.spec,v 1.156 2022/11/26 12:25:02 tom Exp $
|
# $XTermId: xterm.spec,v 1.172 2024/05/25 13:03:00 tom Exp $
|
||||||
Summary: X terminal emulator (development version)
|
Summary: X terminal emulator (development version)
|
||||||
%global my_middle xterm
|
%global my_middle xterm
|
||||||
%global my_suffix -dev
|
%global my_suffix -dev
|
||||||
%global fullname %{my_middle}%{my_suffix}
|
%global fullname %{my_middle}%{my_suffix}
|
||||||
%global my_class XTermDev
|
%global my_class XTermDev
|
||||||
Name: %{fullname}
|
Name: %{fullname}
|
||||||
Version: 378
|
Version: 393
|
||||||
Release: 1
|
Release: 1
|
||||||
License: X11
|
License: X11
|
||||||
Group: User Interface/X
|
Group: User Interface/X
|
||||||
Source: xterm-%{version}.tgz
|
Source: https://invisible-island.net/archives/xterm/xterm-%{version}.tgz
|
||||||
URL: https://invisible-island.net/xterm/
|
URL: https://invisible-island.net/xterm/
|
||||||
Provides: x-terminal-emulator >= %{version}
|
Provides: x-terminal-emulator >= %{version}
|
||||||
|
|
||||||
|
@ -209,14 +209,6 @@ if [ -x %{_bindir}/gtk-update-icon-cache ]; then
|
||||||
fi
|
fi
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
%clean
|
|
||||||
if rm -rf $RPM_BUILD_ROOT; then
|
|
||||||
echo OK
|
|
||||||
else
|
|
||||||
find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1
|
|
||||||
fi
|
|
||||||
exit 0
|
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root,-)
|
%defattr(-,root,root,-)
|
||||||
%{_bindir}/koi8r%{fullname}
|
%{_bindir}/koi8r%{fullname}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: print.c,v 1.173 2022/09/18 21:00:08 tom Exp $ */
|
/* $XTermId: print.c,v 1.176 2023/11/24 12:16:37 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1997-2021,2022 by Thomas E. Dickey
|
* Copyright 1997-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -395,6 +395,7 @@ send_SGR(XtermWidget xw, unsigned attr, unsigned fg, unsigned bg)
|
||||||
if ((attr & FG_COLOR) && (fg != NO_COLOR)) {
|
if ((attr & FG_COLOR) && (fg != NO_COLOR)) {
|
||||||
if (TScreenOf(xw)->boldColors
|
if (TScreenOf(xw)->boldColors
|
||||||
&& fg > 8
|
&& fg > 8
|
||||||
|
&& fg < 16
|
||||||
&& (attr & BOLD) != 0)
|
&& (attr & BOLD) != 0)
|
||||||
fg -= 8;
|
fg -= 8;
|
||||||
}
|
}
|
||||||
|
@ -413,6 +414,17 @@ charToPrinter(XtermWidget xw, unsigned chr)
|
||||||
{
|
{
|
||||||
TScreen *screen = TScreenOf(xw);
|
TScreen *screen = TScreenOf(xw);
|
||||||
|
|
||||||
|
#if OPT_WIDE_CHARS
|
||||||
|
if (screen->wide_chars && screen->utf8_mode) {
|
||||||
|
if (chr == UCS_REPL) {
|
||||||
|
stringToPrinter(xw, screen->default_string);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (is_NON_CHAR(chr))
|
||||||
|
return;
|
||||||
|
|
||||||
if (!SPS.isOpen && (SPS.toFile || xtermHasPrinter(xw))) {
|
if (!SPS.isOpen && (SPS.toFile || xtermHasPrinter(xw))) {
|
||||||
switch (SPS.toFile) {
|
switch (SPS.toFile) {
|
||||||
/*
|
/*
|
||||||
|
@ -453,7 +465,7 @@ charToPrinter(XtermWidget xw, unsigned chr)
|
||||||
|
|
||||||
/* don't want privileges! */
|
/* don't want privileges! */
|
||||||
if (xtermResetIds(screen) < 0)
|
if (xtermResetIds(screen) < 0)
|
||||||
exit(1);
|
exit(ERROR_MISC);
|
||||||
|
|
||||||
SPS.fp = popen(SPS.printer_command, "w");
|
SPS.fp = popen(SPS.printer_command, "w");
|
||||||
if (SPS.fp != 0) {
|
if (SPS.fp != 0) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: ptydata.c,v 1.158 2022/10/10 19:27:56 tom Exp $ */
|
/* $XTermId: ptydata.c,v 1.160 2024/05/10 22:54:17 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1999-2020,2022 by Thomas E. Dickey
|
* Copyright 1999-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -98,13 +98,24 @@ decodeUtf8(TScreen *screen, PtyData *data)
|
||||||
} else if (c < 0xc0) {
|
} else if (c < 0xc0) {
|
||||||
/* We received a continuation byte */
|
/* We received a continuation byte */
|
||||||
if (utf_count < 1) {
|
if (utf_count < 1) {
|
||||||
/*
|
if (screen->c1_printable) {
|
||||||
* We received a continuation byte before receiving a sequence
|
data->utf_data = (IChar) c;
|
||||||
* state. Or an attempt to use a C1 control string. Either
|
} else if ((i + 1) < length
|
||||||
* way, it is mapped to the replacement character, unless
|
&& data->next[i + 1] > 0x20
|
||||||
* allowed by optional feature.
|
&& data->next[i + 1] < 0x80) {
|
||||||
*/
|
/*
|
||||||
data->utf_data = (IChar) (screen->c1_printable ? c : UCS_REPL);
|
* Allow for C1 control string if the next byte is
|
||||||
|
* available for inspection.
|
||||||
|
*/
|
||||||
|
data->utf_data = (IChar) c;
|
||||||
|
} else {
|
||||||
|
/*
|
||||||
|
* We received a continuation byte before receiving a
|
||||||
|
* sequence state, or a failed attempt to use a C1 control
|
||||||
|
* string.
|
||||||
|
*/
|
||||||
|
data->utf_data = (IChar) UCS_REPL;
|
||||||
|
}
|
||||||
data->utf_size = (i + 1);
|
data->utf_size = (i + 1);
|
||||||
break;
|
break;
|
||||||
} else if (screen->utf8_weblike
|
} else if (screen->utf8_weblike
|
||||||
|
@ -224,10 +235,10 @@ decodeUtf8(TScreen *screen, PtyData *data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#if OPT_TRACE > 1
|
#if OPT_TRACE > 1
|
||||||
TRACE(("UTF-8 char %04X [%d..%d]\n",
|
TRACE(("UTF-8 char %04X [%lu..%lu]\n",
|
||||||
data->utf_data,
|
data->utf_data,
|
||||||
(size_t) (data->next - data->buffer),
|
(unsigned long) (data->next - data->buffer),
|
||||||
(size_t) (data->next - data->buffer + data->utf_size - 1)));
|
(unsigned long) (data->next - data->buffer + data->utf_size - 1)));
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
return (data->utf_size != 0);
|
return (data->utf_size != 0);
|
||||||
|
@ -889,7 +900,7 @@ do_range(const char *source)
|
||||||
data->last = data->buffer + j;
|
data->last = data->buffer + j;
|
||||||
while (decodeUtf8(&screen, data)) {
|
while (decodeUtf8(&screen, data)) {
|
||||||
total_test++;
|
total_test++;
|
||||||
if (data->utf_data == UCS_REPL)
|
if (is_UCS_SPECIAL(data->utf_data))
|
||||||
total_errs++;
|
total_errs++;
|
||||||
data->next += data->utf_size;
|
data->next += data->utf_size;
|
||||||
if (message_level > 1) {
|
if (message_level > 1) {
|
||||||
|
|
280
app/xterm/ptyx.h
280
app/xterm/ptyx.h
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: ptyx.h,v 1.1082 2023/01/02 13:24:41 tom Exp $ */
|
/* $XTermId: ptyx.h,v 1.1124 2024/05/21 23:30:59 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1999-2022,2023 by Thomas E. Dickey
|
* Copyright 1999-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -389,6 +389,7 @@ typedef struct {
|
||||||
#define ANSI_OSC 0x9D
|
#define ANSI_OSC 0x9D
|
||||||
#define ANSI_PM 0x9E
|
#define ANSI_PM 0x9E
|
||||||
#define ANSI_APC 0x9F
|
#define ANSI_APC 0x9F
|
||||||
|
#define XTERM_PUA 0xEEEE /* internal mapping for DEC Technical */
|
||||||
|
|
||||||
#define BAD_ASCII '?'
|
#define BAD_ASCII '?'
|
||||||
#define NonLatin1(c) (((c) != ANSI_LF) && \
|
#define NonLatin1(c) (((c) != ANSI_LF) && \
|
||||||
|
@ -397,6 +398,9 @@ typedef struct {
|
||||||
((c) >= ANSI_DEL && (c) <= ANSI_APC)))
|
((c) >= ANSI_DEL && (c) <= ANSI_APC)))
|
||||||
#define OnlyLatin1(c) (NonLatin1(c) ? BAD_ASCII : (c))
|
#define OnlyLatin1(c) (NonLatin1(c) ? BAD_ASCII : (c))
|
||||||
|
|
||||||
|
#define L_BLOK '['
|
||||||
|
#define R_BLOK ']'
|
||||||
|
|
||||||
#define L_CURL '{'
|
#define L_CURL '{'
|
||||||
#define R_CURL '}'
|
#define R_CURL '}'
|
||||||
|
|
||||||
|
@ -445,6 +449,12 @@ typedef struct {
|
||||||
typedef short ParmType;
|
typedef short ParmType;
|
||||||
typedef unsigned short UParm; /* unparseputn passes ParmType */
|
typedef unsigned short UParm; /* unparseputn passes ParmType */
|
||||||
|
|
||||||
|
#define MaxSParm 0x7fff /* limit if a signed value is needed */
|
||||||
|
#define MaxUParm 0xffff /* limit if unsigned value is needed */
|
||||||
|
|
||||||
|
#define SParmOf(n) ((int)(ParmType)(n))
|
||||||
|
#define UParmOf(n) ((unsigned)(UParm)(n))
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Char a_type; /* CSI, etc., see unparseq() */
|
Char a_type; /* CSI, etc., see unparseq() */
|
||||||
Char a_pintro; /* private-mode char, if any */
|
Char a_pintro; /* private-mode char, if any */
|
||||||
|
@ -485,15 +495,14 @@ typedef struct {
|
||||||
int height;
|
int height;
|
||||||
} BitmapBits;
|
} BitmapBits;
|
||||||
|
|
||||||
/* bit-assignments for extensions to DECRQCRA */
|
/* bit-assignments for extensions to DECRQCRA, to omit DEC features */
|
||||||
typedef enum {
|
typedef enum {
|
||||||
csDEC = 0
|
csDEC = 0
|
||||||
,csPOSITIVE = xBIT(0)
|
,csPOSITIVE = xBIT(0) /* do not negate the result */
|
||||||
,csATTRIBS = xBIT(1)
|
,csATTRIBS = xBIT(1) /* do not report the VT100 video attributes */
|
||||||
,csNOTRIM = xBIT(2)
|
,csNOTRIM = xBIT(2) /* do not omit checksum for blanks */
|
||||||
,csDRAWN = xBIT(3)
|
,csDRAWN = xBIT(3) /* do not skip uninitialized cells */
|
||||||
,csBYTE = xBIT(4)
|
,csBYTE = xBIT(4) /* do not mask cell value to 8 bits or ignore combining chars */
|
||||||
,cs8TH = xBIT(5)
|
|
||||||
} CSBITS;
|
} CSBITS;
|
||||||
|
|
||||||
#define EXCHANGE(a,b,tmp) tmp = a; a = b; b = tmp
|
#define EXCHANGE(a,b,tmp) tmp = a; a = b; b = tmp
|
||||||
|
@ -830,6 +839,10 @@ typedef enum {
|
||||||
#define OPT_WIDE_ATTRS 1 /* true if xterm supports 16-bit attributes */
|
#define OPT_WIDE_ATTRS 1 /* true if xterm supports 16-bit attributes */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef OPT_VT525_COLORS
|
||||||
|
#define OPT_VT525_COLORS 1 /* true if xterm is configured for VT525 colors */
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef OPT_WIDE_CHARS
|
#ifndef OPT_WIDE_CHARS
|
||||||
#define OPT_WIDE_CHARS 1 /* true if xterm supports 16-bit characters */
|
#define OPT_WIDE_CHARS 1 /* true if xterm supports 16-bit characters */
|
||||||
#endif
|
#endif
|
||||||
|
@ -923,7 +936,7 @@ typedef enum {
|
||||||
, gcBoldReverse
|
, gcBoldReverse
|
||||||
, gcFiller
|
, gcFiller
|
||||||
, gcBorder
|
, gcBorder
|
||||||
#if OPT_BOX_CHARS
|
#if OPT_BOX_CHARS || OPT_WIDE_CHARS
|
||||||
, gcLine
|
, gcLine
|
||||||
, gcDots
|
, gcDots
|
||||||
#endif
|
#endif
|
||||||
|
@ -1028,6 +1041,7 @@ typedef enum {
|
||||||
,nrc_DEC_Supp /* vt2xx */
|
,nrc_DEC_Supp /* vt2xx */
|
||||||
,nrc_DEC_Supp_Graphic /* vt3xx */
|
,nrc_DEC_Supp_Graphic /* vt3xx */
|
||||||
,nrc_DEC_Technical /* vt3xx */
|
,nrc_DEC_Technical /* vt3xx */
|
||||||
|
,nrc_DEC_UPSS /* vt3xx */
|
||||||
,nrc_Dutch /* vt2xx */
|
,nrc_Dutch /* vt2xx */
|
||||||
,nrc_Finnish /* vt2xx */
|
,nrc_Finnish /* vt2xx */
|
||||||
,nrc_Finnish2 /* vt2xx */
|
,nrc_Finnish2 /* vt2xx */
|
||||||
|
@ -1043,7 +1057,7 @@ typedef enum {
|
||||||
,nrc_Hebrew /* vt5xx */
|
,nrc_Hebrew /* vt5xx */
|
||||||
,nrc_ISO_Hebrew_Supp /* vt5xx */
|
,nrc_ISO_Hebrew_Supp /* vt5xx */
|
||||||
,nrc_Italian /* vt2xx */
|
,nrc_Italian /* vt2xx */
|
||||||
,nrc_ISO_Latin_1_Supp /* vt5xx */
|
,nrc_ISO_Latin_1_Supp /* vt3xx */
|
||||||
,nrc_ISO_Latin_2_Supp /* vt5xx */
|
,nrc_ISO_Latin_2_Supp /* vt5xx */
|
||||||
,nrc_ISO_Latin_5_Supp /* vt5xx */
|
,nrc_ISO_Latin_5_Supp /* vt5xx */
|
||||||
,nrc_ISO_Latin_Cyrillic /* vt5xx */
|
,nrc_ISO_Latin_Cyrillic /* vt5xx */
|
||||||
|
@ -1062,19 +1076,26 @@ typedef enum {
|
||||||
,nrc_Unknown
|
,nrc_Unknown
|
||||||
} DECNRCM_codes;
|
} DECNRCM_codes;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Default and alternate codes for user-preferred supplemental set.
|
||||||
|
*/
|
||||||
|
#define DFT_UPSS nrc_DEC_Supp_Graphic
|
||||||
|
#define ALT_UPSS nrc_ISO_Latin_1_Supp
|
||||||
|
#define PreferredUPSS(screen) ((screen)->prefer_latin1 ? ALT_UPSS : DFT_UPSS)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Use this enumerated type to check consistency among dpmodes(), savemodes()
|
* Use this enumerated type to check consistency among dpmodes(), savemodes()
|
||||||
* restoremodes() and do_dec_rqm().
|
* restoremodes() and do_dec_rqm().
|
||||||
*/
|
*/
|
||||||
typedef enum {
|
typedef enum {
|
||||||
srm_DECCKM = 1
|
srm_DECCKM = 1 /* Cursor Keys Mode */
|
||||||
,srm_DECANM = 2
|
,srm_DECANM = 2 /* ANSI Mode */
|
||||||
,srm_DECCOLM = 3
|
,srm_DECCOLM = 3 /* Column Mode */
|
||||||
,srm_DECSCLM = 4
|
,srm_DECSCLM = 4 /* Scrolling Mode */
|
||||||
,srm_DECSCNM = 5
|
,srm_DECSCNM = 5 /* Screen Mode */
|
||||||
,srm_DECOM = 6
|
,srm_DECOM = 6 /* Origin Mode */
|
||||||
,srm_DECAWM = 7
|
,srm_DECAWM = 7 /* Autowrap Mode */
|
||||||
,srm_DECARM = 8
|
,srm_DECARM = 8 /* Autorepeat Mode */
|
||||||
,srm_X10_MOUSE = SET_X10_MOUSE
|
,srm_X10_MOUSE = SET_X10_MOUSE
|
||||||
#if OPT_TOOLBAR
|
#if OPT_TOOLBAR
|
||||||
,srm_RXVT_TOOLBAR = 10
|
,srm_RXVT_TOOLBAR = 10
|
||||||
|
@ -1084,19 +1105,21 @@ typedef enum {
|
||||||
,srm_CURSOR_BLINK_OPS = 13
|
,srm_CURSOR_BLINK_OPS = 13
|
||||||
,srm_XOR_CURSOR_BLINKS = 14
|
,srm_XOR_CURSOR_BLINKS = 14
|
||||||
#endif
|
#endif
|
||||||
,srm_DECPFF = 18
|
,srm_DECPFF = 18 /* Print Form Feed Mode */
|
||||||
,srm_DECPEX = 19
|
,srm_DECPEX = 19 /* Printer Extent Mode */
|
||||||
,srm_DECTCEM = 25
|
,srm_DECTCEM = 25 /* Text Cursor Enable Mode */
|
||||||
,srm_RXVT_SCROLLBAR = 30
|
,srm_RXVT_SCROLLBAR = 30
|
||||||
|
,srm_DECRLM = 34 /* vt510:Cursor Right to Left Mode */
|
||||||
#if OPT_SHIFT_FONTS
|
#if OPT_SHIFT_FONTS
|
||||||
,srm_RXVT_FONTSIZE = 35
|
,srm_RXVT_FONTSIZE = 35 /* also vt520:DECHEBM */
|
||||||
#endif
|
#endif
|
||||||
|
,srm_DECHEM = 36 /* vt510:Hebrew Encoding Mode */
|
||||||
#if OPT_TEK4014
|
#if OPT_TEK4014
|
||||||
,srm_DECTEK = 38
|
,srm_DECTEK = 38
|
||||||
#endif
|
#endif
|
||||||
,srm_132COLS = 40
|
,srm_132COLS = 40
|
||||||
,srm_CURSES_HACK = 41
|
,srm_CURSES_HACK = 41
|
||||||
,srm_DECNRCM = 42
|
,srm_DECNRCM = 42 /* National Replacement Character Set Mode */
|
||||||
#if OPT_PRINT_GRAPHICS
|
#if OPT_PRINT_GRAPHICS
|
||||||
,srm_DECGEPM = 43 /* Graphics Expanded Print Mode */
|
,srm_DECGEPM = 43 /* Graphics Expanded Print Mode */
|
||||||
#endif
|
#endif
|
||||||
|
@ -1108,13 +1131,40 @@ typedef enum {
|
||||||
,srm_DECGPBM = 46 /* Graphics Print Background Mode */
|
,srm_DECGPBM = 46 /* Graphics Print Background Mode */
|
||||||
#endif
|
#endif
|
||||||
,srm_ALTBUF = 47 /* also DECGRPM (Graphics Rotated Print Mode) */
|
,srm_ALTBUF = 47 /* also DECGRPM (Graphics Rotated Print Mode) */
|
||||||
,srm_DECNKM = 66
|
,srm_DECNAKB = 57 /* vt510:Greek/N-A Keyboard Mapping */
|
||||||
,srm_DECBKM = 67
|
,srm_DECIPEM = 58 /* vt510:IBM ProPrinter Emulation Mode */
|
||||||
,srm_DECLRMM = 69
|
,srm_DECHCCM = 60 /* vt420:Horizontal Cursor-Coupling Mode */
|
||||||
|
,srm_DECVCCM = 61 /* vt420:Vertical Cursor-Coupling Mode */
|
||||||
|
,srm_DECPCCM = 64 /* vt420:Page Cursor-Coupling Mode */
|
||||||
|
,srm_DECNKM = 66 /* vt420:Numeric Keypad Mode */
|
||||||
|
,srm_DECBKM = 67 /* vt420:Backarrow Key mode */
|
||||||
|
,srm_DECKBUM = 68 /* vt420:Keyboard Usage mode */
|
||||||
|
,srm_DECLRMM = 69 /* vt420:Vertical Split Screen Mode (DECVSSM) */
|
||||||
|
,srm_DECXRLM = 73 /* vt420:Transmit Rate Limiting */
|
||||||
#if OPT_SIXEL_GRAPHICS
|
#if OPT_SIXEL_GRAPHICS
|
||||||
,srm_DECSDM = 80 /* Sixel Display Mode */
|
,srm_DECSDM = 80 /* Sixel Display Mode */
|
||||||
#endif
|
#endif
|
||||||
,srm_DECNCSM = 95
|
,srm_DECKPM = 81 /* vt420:Key Position Mode */
|
||||||
|
,srm_DECNCSM = 95 /* vt510:No Clearing Screen On Column Change */
|
||||||
|
,srm_DECRLCM = 96 /* vt510:Right-to-Left Copy */
|
||||||
|
,srm_DECCRTSM = 97 /* vt510:CRT Save Mode */
|
||||||
|
,srm_DECARSM = 98 /* vt510:Auto Resize Mode */
|
||||||
|
,srm_DECMCM = 99 /* vt510:Modem Control Mode */
|
||||||
|
,srm_DECCAAM = 100 /* vt510:Auto Answerback Mode */
|
||||||
|
,srm_DECCANSM = 101 /* vt510:Conceal Answerback Message Mode */
|
||||||
|
,srm_DECNULM = 102 /* vt510:Ignoring Null Mode */
|
||||||
|
,srm_DECHDPXM = 103 /* vt510:Half-Duplex Mode */
|
||||||
|
,srm_DECOSCNM = 106 /* vt510:Overscan Mode */
|
||||||
|
,srm_DECNUMLK = 108 /* vt510:Num Lock Mode */
|
||||||
|
,srm_DECCAPSLK = 109 /* vt510:Caps Lock Mode */
|
||||||
|
,srm_DECKLHIM = 110 /* vt510:Keyboard LEDs Host Indicator Mode */
|
||||||
|
,srm_DECFWM = 111 /* vt520:Framed Windows Mode */
|
||||||
|
,srm_DECRPL = 112 /* vt520:Review Previous Lines */
|
||||||
|
,srm_DECHWUM = 113 /* vt520:Host Wake-Up */
|
||||||
|
,srm_DECATCUM = 114 /* vt520:Alternate Text Color Underline */
|
||||||
|
,srm_DECATCBM = 115 /* vt520:Alternate Text Color Blink */
|
||||||
|
,srm_DECBBSM = 116 /* vt520:Bold and Blink Style Mode */
|
||||||
|
,srm_DECECM = 117 /* vt520:Erase Color Mode */
|
||||||
,srm_VT200_MOUSE = SET_VT200_MOUSE
|
,srm_VT200_MOUSE = SET_VT200_MOUSE
|
||||||
,srm_VT200_HIGHLIGHT_MOUSE = SET_VT200_HIGHLIGHT_MOUSE
|
,srm_VT200_HIGHLIGHT_MOUSE = SET_VT200_HIGHLIGHT_MOUSE
|
||||||
,srm_BTN_EVENT_MOUSE = SET_BTN_EVENT_MOUSE
|
,srm_BTN_EVENT_MOUSE = SET_BTN_EVENT_MOUSE
|
||||||
|
@ -1129,6 +1179,7 @@ typedef enum {
|
||||||
,srm_ALTERNATE_SCROLL = SET_ALTERNATE_SCROLL
|
,srm_ALTERNATE_SCROLL = SET_ALTERNATE_SCROLL
|
||||||
,srm_RXVT_SCROLL_TTY_OUTPUT = 1010
|
,srm_RXVT_SCROLL_TTY_OUTPUT = 1010
|
||||||
,srm_RXVT_SCROLL_TTY_KEYPRESS = 1011
|
,srm_RXVT_SCROLL_TTY_KEYPRESS = 1011
|
||||||
|
,srm_FAST_SCROLL = 1014
|
||||||
,srm_EIGHT_BIT_META = 1034
|
,srm_EIGHT_BIT_META = 1034
|
||||||
#if OPT_NUM_LOCK
|
#if OPT_NUM_LOCK
|
||||||
,srm_REAL_NUMLOCK = 1035
|
,srm_REAL_NUMLOCK = 1035
|
||||||
|
@ -1143,6 +1194,7 @@ typedef enum {
|
||||||
,srm_BELL_IS_URGENT = 1042
|
,srm_BELL_IS_URGENT = 1042
|
||||||
,srm_POP_ON_BELL = 1043
|
,srm_POP_ON_BELL = 1043
|
||||||
,srm_KEEP_CLIPBOARD = 1044
|
,srm_KEEP_CLIPBOARD = 1044
|
||||||
|
,srm_REVERSEWRAP2 = 1045 /* reverse-wrap without limits */
|
||||||
,srm_ALLOW_ALTBUF = 1046
|
,srm_ALLOW_ALTBUF = 1046
|
||||||
,srm_OPT_ALTBUF = 1047
|
,srm_OPT_ALTBUF = 1047
|
||||||
,srm_SAVE_CURSOR = 1048
|
,srm_SAVE_CURSOR = 1048
|
||||||
|
@ -1295,6 +1347,7 @@ typedef enum {
|
||||||
/* aliases */
|
/* aliases */
|
||||||
, DATA(C0)
|
, DATA(C0)
|
||||||
, DATA(DEL)
|
, DATA(DEL)
|
||||||
|
, DATA(STTY)
|
||||||
#undef DATA
|
#undef DATA
|
||||||
, epLAST
|
, epLAST
|
||||||
} PasteControls;
|
} PasteControls;
|
||||||
|
@ -1531,10 +1584,10 @@ typedef enum {
|
||||||
#if OPT_DEC_CHRSET
|
#if OPT_DEC_CHRSET
|
||||||
#define if_OPT_DEC_CHRSET(code) code
|
#define if_OPT_DEC_CHRSET(code) code
|
||||||
/* Use 2 bits for encoding the double high/wide sense of characters */
|
/* Use 2 bits for encoding the double high/wide sense of characters */
|
||||||
#define CSET_SWL 0
|
#define CSET_SWL 0 /* character set: single-width line */
|
||||||
#define CSET_DHL_TOP 1
|
#define CSET_DHL_TOP 1 /* character set: double-height top line */
|
||||||
#define CSET_DHL_BOT 2
|
#define CSET_DHL_BOT 2 /* character set: double-height bottom line */
|
||||||
#define CSET_DWL 3
|
#define CSET_DWL 3 /* character set: double-width line */
|
||||||
#define NUM_CHRSET 8 /* normal/bold and 4 CSET_xxx values */
|
#define NUM_CHRSET 8 /* normal/bold and 4 CSET_xxx values */
|
||||||
|
|
||||||
/* Use remaining bits for encoding the other character-sets */
|
/* Use remaining bits for encoding the other character-sets */
|
||||||
|
@ -1584,6 +1637,14 @@ typedef enum {
|
||||||
|
|
||||||
/***====================================================================***/
|
/***====================================================================***/
|
||||||
|
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
#define if_OPT_DEC_RECTOPS(stmt) stmt
|
||||||
|
#else
|
||||||
|
#define if_OPT_DEC_RECTOPS(stmt) /* nothing */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/***====================================================================***/
|
||||||
|
|
||||||
#if OPT_EBCDIC
|
#if OPT_EBCDIC
|
||||||
extern int E2A(int);
|
extern int E2A(int);
|
||||||
extern int A2E(int);
|
extern int A2E(int);
|
||||||
|
@ -1594,6 +1655,9 @@ extern int A2E(int);
|
||||||
|
|
||||||
#define CONTROL(a) (A2E(E2A(a)&037))
|
#define CONTROL(a) (A2E(E2A(a)&037))
|
||||||
|
|
||||||
|
#define XTERM_ERASE A2E(CONTROL('H'))
|
||||||
|
#define XTERM_LNEXT A2E(CONTROL('V'))
|
||||||
|
|
||||||
/***====================================================================***/
|
/***====================================================================***/
|
||||||
|
|
||||||
#if OPT_TEK4014
|
#if OPT_TEK4014
|
||||||
|
@ -1652,15 +1716,24 @@ typedef unsigned char IAttr; /* at least 8 bits */
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
#define if_OPT_WIDE_CHARS(screen, code) if(screen->wide_chars) code
|
#define if_OPT_WIDE_CHARS(screen, code) if(screen->wide_chars) code
|
||||||
#define if_WIDE_OR_NARROW(screen, wide, narrow) if(screen->wide_chars) wide else narrow
|
#define if_WIDE_OR_NARROW(screen, wide, narrow) if(screen->wide_chars) wide else narrow
|
||||||
#define NARROW_ICHAR 0xffff
|
#define NARROW_ICHAR 0xffff
|
||||||
#if OPT_WIDER_ICHAR
|
#if OPT_WIDER_ICHAR
|
||||||
#define WIDEST_ICHAR 0x1fffff
|
#define is_NON_CHAR(c) (((c) >= 0xffd0 && (c) <= 0xfdef) || \
|
||||||
typedef unsigned IChar; /* for 8-21 bit characters */
|
(((c) & 0xffff) >= 0xfffe))
|
||||||
|
#define is_UCS_SPECIAL(c) ((c) >= 0xfff0 && (c) <= 0xffff)
|
||||||
|
#define WIDEST_ICHAR 0x1fffff
|
||||||
|
typedef unsigned IChar; /* for 8-21 bit characters */
|
||||||
#else
|
#else
|
||||||
#define WIDEST_ICHAR NARROW_ICHAR
|
#define is_NON_CHAR(c) (((c) >= 0xffd0 && (c) <= 0xfdef) || \
|
||||||
|
((c) >= 0xfffe && (c) <= 0xffff))
|
||||||
|
#define is_UCS_SPECIAL(c) ((c) >= 0xfff0)
|
||||||
|
#define WIDEST_ICHAR NARROW_ICHAR
|
||||||
typedef unsigned short IChar; /* for 8-16 bit characters */
|
typedef unsigned short IChar; /* for 8-16 bit characters */
|
||||||
#endif
|
#endif
|
||||||
#else
|
#else /* !OPT_WIDE_CHARS */
|
||||||
|
#undef OPT_WIDER_ICHAR
|
||||||
|
#define OPT_WIDER_ICHAR 0
|
||||||
|
#define is_NON_CHAR(c) ((c) > 255)
|
||||||
#define if_OPT_WIDE_CHARS(screen, code) /* nothing */
|
#define if_OPT_WIDE_CHARS(screen, code) /* nothing */
|
||||||
#define if_WIDE_OR_NARROW(screen, wide, narrow) narrow
|
#define if_WIDE_OR_NARROW(screen, wide, narrow) narrow
|
||||||
typedef unsigned char IChar; /* for 8-bit characters */
|
typedef unsigned char IChar; /* for 8-bit characters */
|
||||||
|
@ -1811,16 +1884,20 @@ typedef IChar CharData;
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Dimension lineSize; /* number of columns in this row */
|
Dimension lineSize; /* number of columns in this row */
|
||||||
RowData bufHead; /* flag for wrapped lines */
|
RowData bufHead; /* flag for wrapped lines */
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
Char combSize; /* number of items in combData[] */
|
Char combSize; /* number of items in combData[] */
|
||||||
#endif
|
#endif
|
||||||
IAttr *attribs; /* video attributes */
|
#if OPT_DEC_RECTOPS
|
||||||
|
Char *charSets; /* SCS code (DECNRCM_codes) */
|
||||||
|
Char *charSeen; /* pre-SCS value */
|
||||||
|
#endif
|
||||||
|
IAttr *attribs; /* video attributes */
|
||||||
#if OPT_ISO_COLORS
|
#if OPT_ISO_COLORS
|
||||||
CellColor *color; /* foreground+background color numbers */
|
CellColor *color; /* foreground+background color numbers */
|
||||||
#endif
|
#endif
|
||||||
CharData *charData; /* cell's base character */
|
CharData *charData; /* cell's base character */
|
||||||
CharData *combData[1]; /* first enum past fixed-offsets */
|
CharData *combData[1]; /* first field past fixed-offsets */
|
||||||
} LineData;
|
} LineData;
|
||||||
|
|
||||||
typedef const LineData CLineData;
|
typedef const LineData CLineData;
|
||||||
|
@ -1830,12 +1907,16 @@ typedef const LineData CLineData;
|
||||||
* variable.
|
* variable.
|
||||||
*/
|
*/
|
||||||
typedef struct {
|
typedef struct {
|
||||||
IAttr attribs;
|
IAttr attribs; /* video attributes */
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
Char combSize; /* number of items in combData[] */
|
Char combSize; /* number of items in combData[] */
|
||||||
|
#endif
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
Char charSets; /* SCS code (DECNRCM_codes) */
|
||||||
|
Char charSeen; /* pre-SCS value */
|
||||||
#endif
|
#endif
|
||||||
#if OPT_ISO_COLORS
|
#if OPT_ISO_COLORS
|
||||||
CellColor color; /* color-array */
|
CellColor color; /* foreground+background color numbers */
|
||||||
#endif
|
#endif
|
||||||
CharData charData; /* cell's base character */
|
CharData charData; /* cell's base character */
|
||||||
CharData combData[1]; /* array of combining chars */
|
CharData combData[1]; /* array of combining chars */
|
||||||
|
@ -2018,6 +2099,7 @@ typedef enum {
|
||||||
DP_DECTCEM,
|
DP_DECTCEM,
|
||||||
DP_DELETE_IS_DEL,
|
DP_DELETE_IS_DEL,
|
||||||
DP_EIGHT_BIT_META,
|
DP_EIGHT_BIT_META,
|
||||||
|
DP_FAST_SCROLL,
|
||||||
DP_KEEP_CLIPBOARD,
|
DP_KEEP_CLIPBOARD,
|
||||||
DP_KEEP_SELECTION,
|
DP_KEEP_SELECTION,
|
||||||
DP_KEYBOARD_TYPE,
|
DP_KEYBOARD_TYPE,
|
||||||
|
@ -2038,6 +2120,7 @@ typedef enum {
|
||||||
DP_X_MOUSE,
|
DP_X_MOUSE,
|
||||||
DP_X_NCSM,
|
DP_X_NCSM,
|
||||||
DP_X_REVWRAP,
|
DP_X_REVWRAP,
|
||||||
|
DP_X_REVWRAP2,
|
||||||
DP_X_X10MSE,
|
DP_X_X10MSE,
|
||||||
#if OPT_BLINK_CURS
|
#if OPT_BLINK_CURS
|
||||||
DP_CRS_BLINK,
|
DP_CRS_BLINK,
|
||||||
|
@ -2138,6 +2221,10 @@ typedef struct {
|
||||||
} ScrnColors;
|
} ScrnColors;
|
||||||
|
|
||||||
#define NUM_GSETS 4
|
#define NUM_GSETS 4
|
||||||
|
#define NUM_GSETS2 (NUM_GSETS + 1) /* include user-preferred */
|
||||||
|
#define gsets_upss gsets[4]
|
||||||
|
|
||||||
|
#define SAVED_CURSORS 2
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
Boolean saved;
|
Boolean saved;
|
||||||
|
@ -2146,7 +2233,7 @@ typedef struct {
|
||||||
IFlags flags; /* VTxxx saves graphics rendition */
|
IFlags flags; /* VTxxx saves graphics rendition */
|
||||||
Char curgl;
|
Char curgl;
|
||||||
Char curgr;
|
Char curgr;
|
||||||
DECNRCM_codes gsets[NUM_GSETS];
|
DECNRCM_codes gsets[NUM_GSETS2];
|
||||||
Boolean wrap_flag;
|
Boolean wrap_flag;
|
||||||
#if OPT_ISO_COLORS
|
#if OPT_ISO_COLORS
|
||||||
int cur_foreground; /* current foreground color */
|
int cur_foreground; /* current foreground color */
|
||||||
|
@ -2163,7 +2250,12 @@ typedef struct _SaveTitle {
|
||||||
char *windowName;
|
char *windowName;
|
||||||
} SaveTitle;
|
} SaveTitle;
|
||||||
|
|
||||||
#define SAVED_CURSORS 2
|
#define MAX_SAVED_TITLES 10
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int used; /* index to current item */
|
||||||
|
SaveTitle data[MAX_SAVED_TITLES];
|
||||||
|
} SavedTitles;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
int width; /* if > 0, width of scrollbar, */
|
int width; /* if > 0, width of scrollbar, */
|
||||||
|
@ -2330,6 +2422,7 @@ typedef struct {
|
||||||
IChar *unparse_bfr;
|
IChar *unparse_bfr;
|
||||||
unsigned unparse_len;
|
unsigned unparse_len;
|
||||||
unsigned unparse_max; /* limitResponse resource */
|
unsigned unparse_max; /* limitResponse resource */
|
||||||
|
unsigned strings_max; /* maxStringParse resource */
|
||||||
|
|
||||||
#if OPT_TCAP_QUERY
|
#if OPT_TCAP_QUERY
|
||||||
int tc_query_code;
|
int tc_query_code;
|
||||||
|
@ -2365,6 +2458,14 @@ typedef struct {
|
||||||
#if OPT_WIDE_ATTRS && OPT_SGR2_HASH
|
#if OPT_WIDE_ATTRS && OPT_SGR2_HASH
|
||||||
Boolean faint_relative; /* faint is relative? */
|
Boolean faint_relative; /* faint is relative? */
|
||||||
#endif
|
#endif
|
||||||
|
#if OPT_VT525_COLORS
|
||||||
|
int assigned_fg; /* DECAC */
|
||||||
|
int assigned_bg;
|
||||||
|
struct {
|
||||||
|
int fg; /* 0..15 */
|
||||||
|
int bg; /* 0..15 */
|
||||||
|
} alt_colors[16]; /* DECATC if DECSTGLT is 1 or 2 */
|
||||||
|
#endif
|
||||||
#endif /* OPT_ISO_COLORS */
|
#endif /* OPT_ISO_COLORS */
|
||||||
#if OPT_DEC_CHRSET
|
#if OPT_DEC_CHRSET
|
||||||
Boolean font_doublesize;/* enable font-scaling */
|
Boolean font_doublesize;/* enable font-scaling */
|
||||||
|
@ -2404,9 +2505,10 @@ typedef struct {
|
||||||
Boolean char_was_written;
|
Boolean char_was_written;
|
||||||
int last_written_col;
|
int last_written_col;
|
||||||
int last_written_row;
|
int last_written_row;
|
||||||
TypedBuffer(XChar2b);
|
|
||||||
TypedBuffer(char);
|
|
||||||
#endif
|
#endif
|
||||||
|
TypedBuffer(IChar);
|
||||||
|
TypedBuffer(Char);
|
||||||
|
TypedBuffer(XChar2b);
|
||||||
#if OPT_BROKEN_OSC
|
#if OPT_BROKEN_OSC
|
||||||
Boolean brokenLinuxOSC; /* true to ignore Linux palette ctls */
|
Boolean brokenLinuxOSC; /* true to ignore Linux palette ctls */
|
||||||
#endif
|
#endif
|
||||||
|
@ -2533,7 +2635,8 @@ typedef struct {
|
||||||
Cursor pointer_cursor; /* current pointer cursor */
|
Cursor pointer_cursor; /* current pointer cursor */
|
||||||
Cursor hidden_cursor; /* hidden cursor in window */
|
Cursor hidden_cursor; /* hidden cursor in window */
|
||||||
|
|
||||||
String answer_back; /* response to ENQ */
|
String answer_back; /* response to ENQ */
|
||||||
|
Boolean prefer_latin1; /* preference for UPSS */
|
||||||
|
|
||||||
PrinterState printer_state; /* actual printer state */
|
PrinterState printer_state; /* actual printer state */
|
||||||
PrinterFlags printer_flags; /* working copy of printer flags */
|
PrinterFlags printer_flags; /* working copy of printer flags */
|
||||||
|
@ -2547,10 +2650,13 @@ typedef struct {
|
||||||
#if OPT_BOX_CHARS
|
#if OPT_BOX_CHARS
|
||||||
Boolean force_box_chars;/* true if we assume no boxchars */
|
Boolean force_box_chars;/* true if we assume no boxchars */
|
||||||
Boolean broken_box_chars;/* true if broken boxchars */
|
Boolean broken_box_chars;/* true if broken boxchars */
|
||||||
Boolean force_all_chars;/* true to outline missing chars */
|
|
||||||
Boolean assume_all_chars;/* true to allow missing chars */
|
Boolean assume_all_chars;/* true to allow missing chars */
|
||||||
Boolean allow_packing; /* true to allow packed-fonts */
|
Boolean allow_packing; /* true to allow packed-fonts */
|
||||||
#endif
|
#endif
|
||||||
|
#if OPT_BOX_CHARS || OPT_WIDE_CHARS
|
||||||
|
Boolean force_all_chars;/* true to outline missing chars */
|
||||||
|
#endif
|
||||||
|
|
||||||
Dimension fnt_wide;
|
Dimension fnt_wide;
|
||||||
Dimension fnt_high;
|
Dimension fnt_high;
|
||||||
float scale_height; /* scaling for font-height */
|
float scale_height; /* scaling for font-height */
|
||||||
|
@ -2572,6 +2678,7 @@ typedef struct {
|
||||||
int cursor_state; /* ON, OFF, or BLINKED_OFF */
|
int cursor_state; /* ON, OFF, or BLINKED_OFF */
|
||||||
int cursor_busy; /* do not redraw... */
|
int cursor_busy; /* do not redraw... */
|
||||||
Boolean cursor_underline; /* true if cursor is in underline mode */
|
Boolean cursor_underline; /* true if cursor is in underline mode */
|
||||||
|
Boolean cursor_bar; /* true if cursor is in bar mode */
|
||||||
XtCursorShape cursor_shape;
|
XtCursorShape cursor_shape;
|
||||||
#if OPT_BLINK_CURS
|
#if OPT_BLINK_CURS
|
||||||
BlinkOps cursor_blink; /* cursor blink enable */
|
BlinkOps cursor_blink; /* cursor blink enable */
|
||||||
|
@ -2685,16 +2792,17 @@ typedef struct {
|
||||||
|
|
||||||
int title_modes; /* control set/get of titles */
|
int title_modes; /* control set/get of titles */
|
||||||
int title_modes0; /* ...initial value */
|
int title_modes0; /* ...initial value */
|
||||||
SaveTitle *save_title;
|
SavedTitles saved_titles;
|
||||||
|
|
||||||
/* Improved VT100 emulation stuff. */
|
/* Improved VT100 emulation stuff. */
|
||||||
String keyboard_dialect; /* default keyboard dialect */
|
String keyboard_dialect; /* default keyboard dialect */
|
||||||
DECNRCM_codes gsets[NUM_GSETS]; /* G0 through G3. */
|
DECNRCM_codes gsets[NUM_GSETS2]; /* G0 through G3, plus UPSS */
|
||||||
Char curgl; /* Current GL setting. */
|
Char curgl; /* Current GL setting. */
|
||||||
Char curgr; /* Current GR setting. */
|
Char curgr; /* Current GR setting. */
|
||||||
Char curss; /* Current single shift. */
|
Char curss; /* Current single shift. */
|
||||||
String term_id; /* resource for terminal_id */
|
String term_id; /* resource for terminal_id */
|
||||||
int terminal_id; /* 100=vt100, 220=vt220, etc. */
|
int terminal_id; /* 100=vt100, 220=vt220, etc. */
|
||||||
|
int display_da1; /* 100=vt100, 220=vt220, etc. */
|
||||||
int vtXX_level; /* 0=vt52, 1,2,3 = vt100 ... vt320 */
|
int vtXX_level; /* 0=vt52, 1,2,3 = vt100 ... vt320 */
|
||||||
int ansi_level; /* dpANSI levels 1,2,3 */
|
int ansi_level; /* dpANSI levels 1,2,3 */
|
||||||
int protected_mode; /* 0=off, 1=DEC, 2=ISO */
|
int protected_mode; /* 0=off, 1=DEC, 2=ISO */
|
||||||
|
@ -2743,11 +2851,14 @@ typedef struct {
|
||||||
#if OPT_SIXEL_GRAPHICS
|
#if OPT_SIXEL_GRAPHICS
|
||||||
Boolean sixel_scrolling; /* sixel scrolling */
|
Boolean sixel_scrolling; /* sixel scrolling */
|
||||||
Boolean sixel_scrolls_right; /* sixel scrolling moves cursor to right */
|
Boolean sixel_scrolls_right; /* sixel scrolling moves cursor to right */
|
||||||
|
Boolean sixel_scrolls_right0; /* initial sixelScrolling mode */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OPT_GRAPHICS
|
#if OPT_GRAPHICS
|
||||||
int numcolorregisters; /* number of supported color registers */
|
int numcolorregisters; /* number of supported color registers */
|
||||||
Boolean privatecolorregisters; /* private color registers for each graphic */
|
Boolean privatecolorregisters; /* private color registers for each graphic */
|
||||||
|
Boolean privatecolorregisters0; /* initial privateColorRegisters */
|
||||||
|
Boolean incremental_graphics; /* draw graphics incrementally */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Graphics Printing */
|
/* Graphics Printing */
|
||||||
|
@ -2782,10 +2893,10 @@ typedef struct {
|
||||||
if (IsStatusShown(screen) && (screen)->status_active) stmt
|
if (IsStatusShown(screen) && (screen)->status_active) stmt
|
||||||
|
|
||||||
Boolean status_timeout; /* status timeout needs service */
|
Boolean status_timeout; /* status timeout needs service */
|
||||||
Boolean status_active; /* DECSASD */
|
int status_active; /* DECSASD */
|
||||||
int status_type; /* DECSSDT */
|
int status_type; /* DECSSDT */
|
||||||
int status_shown; /* last-displayed type */
|
int status_shown; /* last-displayed type */
|
||||||
SavedCursor status_data[2];
|
SavedCursor status_data[2]; /* main- and status-cursors */
|
||||||
char * status_fmt; /* format for indicator-status */
|
char * status_fmt; /* format for indicator-status */
|
||||||
|
|
||||||
#else /* !OPT_STATUS_LINE */
|
#else /* !OPT_STATUS_LINE */
|
||||||
|
@ -2804,7 +2915,7 @@ typedef struct {
|
||||||
Char vt52_save_curgl;
|
Char vt52_save_curgl;
|
||||||
Char vt52_save_curgr;
|
Char vt52_save_curgr;
|
||||||
Char vt52_save_curss;
|
Char vt52_save_curss;
|
||||||
DECNRCM_codes vt52_save_gsets[NUM_GSETS];
|
DECNRCM_codes vt52_save_gsets[NUM_GSETS2];
|
||||||
#endif
|
#endif
|
||||||
/* Testing */
|
/* Testing */
|
||||||
#if OPT_XMC_GLITCH
|
#if OPT_XMC_GLITCH
|
||||||
|
@ -3230,6 +3341,7 @@ typedef struct _Misc {
|
||||||
float face_size[NMENUFONTS];
|
float face_size[NMENUFONTS];
|
||||||
char *render_font_s;
|
char *render_font_s;
|
||||||
int limit_fontsets;
|
int limit_fontsets;
|
||||||
|
int limit_fontheight;
|
||||||
int limit_fontwidth;
|
int limit_fontwidth;
|
||||||
#endif
|
#endif
|
||||||
} Misc;
|
} Misc;
|
||||||
|
@ -3286,6 +3398,14 @@ typedef struct _Work {
|
||||||
ScrnColors *oldColors;
|
ScrnColors *oldColors;
|
||||||
Boolean palette_changed;
|
Boolean palette_changed;
|
||||||
Boolean broken_box_chars;
|
Boolean broken_box_chars;
|
||||||
|
/* data write dotext/WriteText */
|
||||||
|
IChar *write_text; /* points to print_area */
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
Char *write_sums; /* if non-null, points to buffer_sums */
|
||||||
|
Char *buffer_sums; /* data for ->charSeen[] */
|
||||||
|
Char *buffer_sets; /* data for ->charSets[] */
|
||||||
|
size_t sizeof_sums; /* allocated size of buffer_sums */
|
||||||
|
#endif
|
||||||
} Work;
|
} Work;
|
||||||
|
|
||||||
typedef struct {int foo;} XtermClassPart, TekClassPart;
|
typedef struct {int foo;} XtermClassPart, TekClassPart;
|
||||||
|
@ -3326,7 +3446,7 @@ extern WidgetClass tekWidgetClass;
|
||||||
#define TAB_ARRAY_SIZE (1024 / TAB_BITS_WIDTH)
|
#define TAB_ARRAY_SIZE (1024 / TAB_BITS_WIDTH)
|
||||||
#define MAX_TABS (TAB_BITS_WIDTH * TAB_ARRAY_SIZE)
|
#define MAX_TABS (TAB_BITS_WIDTH * TAB_ARRAY_SIZE)
|
||||||
|
|
||||||
#define OkTAB(c) ((c) >= 0 && (c) < MAX_TABS)
|
#define OkTAB(c) ((c) > 0 && (c) < MAX_TABS)
|
||||||
|
|
||||||
typedef unsigned Tabs [TAB_ARRAY_SIZE];
|
typedef unsigned Tabs [TAB_ARRAY_SIZE];
|
||||||
|
|
||||||
|
@ -3429,45 +3549,57 @@ typedef struct _TekWidgetRec {
|
||||||
the screen. Used to distinguish
|
the screen. Used to distinguish
|
||||||
blanks from empty parts of the
|
blanks from empty parts of the
|
||||||
screen when selecting */
|
screen when selecting */
|
||||||
|
/*
|
||||||
|
* This does not fit in a byte with the other (more important) attributes, but
|
||||||
|
* if wide-attributes are configured, it is possible to maintain it there.
|
||||||
|
*/
|
||||||
|
#define INVISIBLE AttrBIT(8) /* true if writing invisible text */
|
||||||
|
|
||||||
#if OPT_WIDE_ATTRS
|
#if OPT_WIDE_ATTRS
|
||||||
#define ATR_FAINT AttrBIT(8)
|
#define ATR_FAINT AttrBIT(9)
|
||||||
#define ATR_ITALIC AttrBIT(9)
|
#define ATR_ITALIC AttrBIT(10)
|
||||||
#define ATR_STRIKEOUT AttrBIT(10)
|
#define ATR_STRIKEOUT AttrBIT(11)
|
||||||
#define ATR_DBL_UNDER AttrBIT(11)
|
#define ATR_DBL_UNDER AttrBIT(12)
|
||||||
#define ATR_DIRECT_FG AttrBIT(12)
|
#define ATR_DIRECT_FG AttrBIT(13)
|
||||||
#define ATR_DIRECT_BG AttrBIT(13)
|
#define ATR_DIRECT_BG AttrBIT(14)
|
||||||
#define SGR_MASK2 (ATR_FAINT | ATR_ITALIC | ATR_STRIKEOUT | ATR_DBL_UNDER | ATR_DIRECT_FG | ATR_DIRECT_BG)
|
#define SGR_MASK2 (ATR_FAINT | ATR_ITALIC | ATR_STRIKEOUT | ATR_DBL_UNDER | ATR_DIRECT_FG | ATR_DIRECT_BG)
|
||||||
|
#define AttrEND 15
|
||||||
#else
|
#else
|
||||||
#define SGR_MASK2 0
|
#define SGR_MASK2 0
|
||||||
|
#define AttrEND 9
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Other flags
|
* Other flags
|
||||||
*/
|
*/
|
||||||
#define WRAPAROUND MiscBIT(0) /* true if auto wraparound mode */
|
#define REVERSE_VIDEO MiscBIT(0) /* true if screen white on black */
|
||||||
#define REVERSEWRAP MiscBIT(1) /* true if reverse wraparound mode */
|
#define WRAPAROUND MiscBIT(1) /* true if auto wraparound mode */
|
||||||
#define REVERSE_VIDEO MiscBIT(2) /* true if screen white on black */
|
#define REVERSEWRAP MiscBIT(2) /* true if reverse wraparound mode */
|
||||||
#define LINEFEED MiscBIT(3) /* true if in auto linefeed mode */
|
#define REVERSEWRAP2 MiscBIT(3) /* true if extended reverse wraparound */
|
||||||
#define ORIGIN MiscBIT(4) /* true if in origin mode */
|
#define LINEFEED MiscBIT(4) /* true if in auto linefeed mode */
|
||||||
#define INSERT MiscBIT(5) /* true if in insert mode */
|
#define ORIGIN MiscBIT(5) /* true if in origin mode */
|
||||||
#define SMOOTHSCROLL MiscBIT(6) /* true if in smooth scroll mode */
|
#define INSERT MiscBIT(6) /* true if in insert mode */
|
||||||
#define IN132COLUMNS MiscBIT(7) /* true if in 132 column mode */
|
#define SMOOTHSCROLL MiscBIT(7) /* true if in smooth scroll mode */
|
||||||
#define INVISIBLE MiscBIT(8) /* true if writing invisible text */
|
#define IN132COLUMNS MiscBIT(8) /* true if in 132 column mode */
|
||||||
#define NATIONAL MiscBIT(9) /* true if writing national charset */
|
#define NATIONAL MiscBIT(9) /* true if writing national charset */
|
||||||
#define LEFT_RIGHT MiscBIT(10) /* true if left/right margin mode */
|
#define LEFT_RIGHT MiscBIT(10) /* true if left/right margin mode */
|
||||||
#define NOCLEAR_COLM MiscBIT(11) /* true if no clear on DECCOLM change */
|
#define NOCLEAR_COLM MiscBIT(11) /* true if no clear on DECCOLM change */
|
||||||
|
|
||||||
#define DrawBIT(n) xBIT(n + 8) /* XTermDraw.draw_flags */
|
/*
|
||||||
|
* Drawing-bits start after the video/color attributes, and are independent
|
||||||
|
* of the miscellaneous flags.
|
||||||
|
*/
|
||||||
|
#define DrawBIT(n) xBIT(n + AttrEND) /* XTermDraw.draw_flags */
|
||||||
/* The following attributes are used in the argument of drawXtermText() */
|
/* The following attributes are used in the argument of drawXtermText() */
|
||||||
#define NOBACKGROUND DrawBIT(0) /* Used for overstrike */
|
#define NOBACKGROUND DrawBIT(0) /* Used for overstrike */
|
||||||
#define NOTRANSLATION DrawBIT(1) /* No scan for chars missing in font */
|
#define NOTRANSLATION DrawBIT(1) /* No scan for chars missing in font */
|
||||||
#define DOUBLEWFONT DrawBIT(2) /* The actual X-font is double-width */
|
#define DOUBLEWFONT DrawBIT(2) /* The actual X-font is double-width */
|
||||||
#define DOUBLEHFONT DrawBIT(3) /* The actual X-font is double-height */
|
#define DOUBLEHFONT DrawBIT(3) /* The actual X-font is double-height */
|
||||||
#define CHARBYCHAR DrawBIT(4) /* Draw chars one-by-one */
|
#define DOUBLEFIRST DrawBIT(4) /* Draw chars one-by-one */
|
||||||
|
#define CHARBYCHAR DrawBIT(5) /* Draw chars one-by-one */
|
||||||
|
|
||||||
/* The following attribute is used in the argument of xtermSpecialFont etc */
|
/* The following attribute is used in the argument of xtermSpecialFont etc */
|
||||||
#define NORESOLUTION DrawBIT(5) /* find the font without resolution */
|
#define NORESOLUTION DrawBIT(6) /* find the font without resolution */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Groups of attributes
|
* Groups of attributes
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: resize.c,v 1.148 2022/02/18 20:32:48 tom Exp $ */
|
/* $XTermId: resize.c,v 1.150 2023/03/31 23:09:38 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2003-2021,2022 by Thomas E. Dickey
|
* Copyright 2003-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -98,7 +98,7 @@ int ignore_unused;
|
||||||
#define SUN 1
|
#define SUN 1
|
||||||
#define VT100 0
|
#define VT100 0
|
||||||
|
|
||||||
#define TIMEOUT 10
|
#define TIMEOUT 3
|
||||||
|
|
||||||
#define SHELL_UNKNOWN 0
|
#define SHELL_UNKNOWN 0
|
||||||
#define SHELL_C 1
|
#define SHELL_C 1
|
||||||
|
@ -133,6 +133,11 @@ static const char *const emuname[EMULATIONS] =
|
||||||
};
|
};
|
||||||
static char *myname;
|
static char *myname;
|
||||||
static int shell_type = SHELL_UNKNOWN;
|
static int shell_type = SHELL_UNKNOWN;
|
||||||
|
static const char *const getattr[EMULATIONS] =
|
||||||
|
{
|
||||||
|
ESCAPE("[c"),
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
static const char *const getsize[EMULATIONS] =
|
static const char *const getsize[EMULATIONS] =
|
||||||
{
|
{
|
||||||
ESCAPE("7") ESCAPE("[r") ESCAPE("[9999;9999H") ESCAPE("[6n"),
|
ESCAPE("7") ESCAPE("[r") ESCAPE("[9999;9999H") ESCAPE("[6n"),
|
||||||
|
@ -164,7 +169,12 @@ static struct termios tioorig;
|
||||||
static struct sgttyb sgorig;
|
static struct sgttyb sgorig;
|
||||||
#endif /* USE_ANY_SYSV_TERMIO/USE_TERMIOS */
|
#endif /* USE_ANY_SYSV_TERMIO/USE_TERMIOS */
|
||||||
|
|
||||||
static const char *const size[EMULATIONS] =
|
static const char *const reply_attr[EMULATIONS] =
|
||||||
|
{
|
||||||
|
ESCAPE("[?%d;%dc"),
|
||||||
|
NULL,
|
||||||
|
};
|
||||||
|
static const char *const reply_size[EMULATIONS] =
|
||||||
{
|
{
|
||||||
ESCAPE("[%d;%dR"),
|
ESCAPE("[%d;%dR"),
|
||||||
ESCAPE("[8;%d;%dt"),
|
ESCAPE("[8;%d;%dt"),
|
||||||
|
@ -211,10 +221,12 @@ onintr(int sig GCC_UNUSED)
|
||||||
exit(EXIT_FAILURE);
|
exit(EXIT_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char *timeout_message = "?";
|
||||||
|
|
||||||
static void
|
static void
|
||||||
resize_timeout(int sig)
|
resize_timeout(int sig)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "\n%s: Time out occurred\r\n", myname);
|
fprintf(stderr, "\n%s: %s\r\n", myname, timeout_message);
|
||||||
onintr(sig);
|
onintr(sig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -267,7 +279,9 @@ checkdigits(char *str)
|
||||||
static void
|
static void
|
||||||
unexpected_char(int c)
|
unexpected_char(int c)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "%s: unknown character %#x, exiting.\r\n", myname, c);
|
fprintf(stderr,
|
||||||
|
"%s: unknown character %#x, exiting.\r\n",
|
||||||
|
myname, (unsigned) c);
|
||||||
onintr(0);
|
onintr(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,19 +289,18 @@ static void
|
||||||
readstring(FILE *fp, char *buf, const char *str)
|
readstring(FILE *fp, char *buf, const char *str)
|
||||||
{
|
{
|
||||||
int last, c;
|
int last, c;
|
||||||
#if !defined(USG) && !defined(__minix)
|
#if HAVE_SETITIMER
|
||||||
/* What is the advantage of setitimer() over alarm()? */
|
|
||||||
struct itimerval it;
|
struct itimerval it;
|
||||||
#endif
|
#endif
|
||||||
int limit = (BUFSIZ - 3);
|
int limit = (BUFSIZ - 3);
|
||||||
|
|
||||||
signal(SIGALRM, resize_timeout);
|
signal(SIGALRM, resize_timeout);
|
||||||
#if defined(USG) || defined(__minix)
|
#if HAVE_SETITIMER
|
||||||
alarm(TIMEOUT);
|
|
||||||
#else
|
|
||||||
memset((char *) &it, 0, sizeof(struct itimerval));
|
memset((char *) &it, 0, sizeof(struct itimerval));
|
||||||
it.it_value.tv_sec = TIMEOUT;
|
it.it_value.tv_sec = TIMEOUT;
|
||||||
setitimer(ITIMER_REAL, &it, (struct itimerval *) NULL);
|
setitimer(ITIMER_REAL, &it, (struct itimerval *) NULL);
|
||||||
|
#else
|
||||||
|
alarm(TIMEOUT);
|
||||||
#endif
|
#endif
|
||||||
if ((c = getc(fp)) == 0233) { /* meta-escape, CSI */
|
if ((c = getc(fp)) == 0233) { /* meta-escape, CSI */
|
||||||
c = ESCAPE("")[0];
|
c = ESCAPE("")[0];
|
||||||
|
@ -312,11 +325,11 @@ readstring(FILE *fp, char *buf, const char *str)
|
||||||
if (c == last)
|
if (c == last)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
#if defined(USG) || defined(__minix)
|
#if HAVE_SETITIMER
|
||||||
alarm(0);
|
|
||||||
#else
|
|
||||||
memset((char *) &it, 0, sizeof(struct itimerval));
|
memset((char *) &it, 0, sizeof(struct itimerval));
|
||||||
setitimer(ITIMER_REAL, &it, (struct itimerval *) NULL);
|
setitimer(ITIMER_REAL, &it, (struct itimerval *) NULL);
|
||||||
|
#else
|
||||||
|
alarm(0);
|
||||||
#endif
|
#endif
|
||||||
*buf = 0;
|
*buf = 0;
|
||||||
}
|
}
|
||||||
|
@ -513,9 +526,15 @@ main(int argc, char **argv ENVP_ARG)
|
||||||
free(tmpbuf);
|
free(tmpbuf);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (getattr[emu]) {
|
||||||
|
timeout_message = "Terminal is not VT100-compatible";
|
||||||
|
IGNORE_RC(write(tty, getattr[emu], strlen(getattr[emu])));
|
||||||
|
readstring(ttyfp, buf, reply_attr[emu]);
|
||||||
|
}
|
||||||
|
timeout_message = "Time out occurred";
|
||||||
IGNORE_RC(write(tty, getsize[emu], strlen(getsize[emu])));
|
IGNORE_RC(write(tty, getsize[emu], strlen(getsize[emu])));
|
||||||
readstring(ttyfp, buf, size[emu]);
|
readstring(ttyfp, buf, reply_size[emu]);
|
||||||
if (sscanf(buf, size[emu], &rows, &cols) != 2) {
|
if (sscanf(buf, reply_size[emu], &rows, &cols) != 2) {
|
||||||
fprintf(stderr, "%s: Can't get rows and columns\r\n", myname);
|
fprintf(stderr, "%s: Can't get rows and columns\r\n", myname);
|
||||||
onintr(0);
|
onintr(0);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
.\" $XTermId: resize.man,v 1.37 2019/02/07 00:16:12 tom Exp $
|
.\" $XTermId: resize.man,v 1.40 2024/01/11 22:06:30 tom Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright 1998-2017,2019 by Thomas E. Dickey
|
.\" Copyright 1998-2023,2024 by Thomas E. Dickey
|
||||||
.\"
|
.\"
|
||||||
.\" All Rights Reserved
|
.\" All Rights Reserved
|
||||||
.\"
|
.\"
|
||||||
|
@ -32,22 +32,49 @@
|
||||||
.\"
|
.\"
|
||||||
.ds N Resize
|
.ds N Resize
|
||||||
.ds n resize
|
.ds n resize
|
||||||
|
.
|
||||||
|
.TH RESIZE 1 "__app_date__" "__app_version__" "X Window System"
|
||||||
.\"
|
.\"
|
||||||
.\" Bulleted paragraph
|
.ie n .ds CW R
|
||||||
|
.el \{
|
||||||
|
.ie \n(.g .ds CW CR
|
||||||
|
.el .ds CW CW
|
||||||
|
.\}
|
||||||
|
.
|
||||||
|
.ie \n(.g \{\
|
||||||
|
.ds `` \(lq
|
||||||
|
.ds '' \(rq
|
||||||
|
.ds ' \(aq
|
||||||
|
.\}
|
||||||
|
.el \{\
|
||||||
|
.ie t .ds `` ``
|
||||||
|
.el .ds `` ""
|
||||||
|
.ie t .ds '' ''
|
||||||
|
.el .ds '' ""
|
||||||
|
.ie t .ds ' \(aq
|
||||||
|
.el .ds ' '
|
||||||
|
.\}
|
||||||
.de bP
|
.de bP
|
||||||
.ie n .IP \(bu 4
|
.ie n .IP \(bu 4
|
||||||
.el .IP \(bu 2
|
.el .IP \(bu 2
|
||||||
..
|
..
|
||||||
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
.de NE
|
||||||
.ie \n(.g .ds AQ \(aq
|
.fi
|
||||||
.el .ds AQ '
|
.ft R
|
||||||
.ie \n(.g .ds `` \(lq
|
.ie n .in -4
|
||||||
.el .ds `` ``
|
.el .in -2
|
||||||
.ie \n(.g .ds '' \(rq
|
..
|
||||||
.el .ds '' ''
|
.de NS
|
||||||
.TH RESIZE 1 "__app_date__" "__app_version__" "X Window System"
|
.ie n .sp
|
||||||
|
.el .sp .5
|
||||||
|
.ie n .in +4
|
||||||
|
.el .in +2
|
||||||
|
.nf
|
||||||
|
.ft \*(CW
|
||||||
|
..
|
||||||
.SH NAME
|
.SH NAME
|
||||||
resize \- set environment and terminal settings to current xterm window size
|
resize \-
|
||||||
|
set environment and terminal settings to current xterm window size
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B \*n
|
.B \*n
|
||||||
[ \fB\-v\fP | \fB\-u\fP | \fB\-c\fP ] [ \fB\-s\fP [ \fIrow col\fP ] ]
|
[ \fB\-v\fP | \fB\-u\fP | \fB\-c\fP ] [ \fB\-s\fP [ \fIrow col\fP ] ]
|
||||||
|
@ -98,34 +125,6 @@ This affects the values shown by \fIstty\fP.
|
||||||
finally, \fI\*n\fP generates shell commands for setting the
|
finally, \fI\*n\fP generates shell commands for setting the
|
||||||
environment variables,
|
environment variables,
|
||||||
and writes that to the standard output.
|
and writes that to the standard output.
|
||||||
.SH EXAMPLES
|
|
||||||
For \fI\*n\fP's output to take effect,
|
|
||||||
\fI\*n\fP must either be evaluated
|
|
||||||
as part of the command line (usually done with a shell alias or function) or
|
|
||||||
else redirected to a file which can then be read in.
|
|
||||||
From the C shell (usually
|
|
||||||
known as \fI/bin/csh\fP), the following alias could be defined in the
|
|
||||||
user's \fI.cshrc\fP:
|
|
||||||
.sp
|
|
||||||
.nf
|
|
||||||
% alias rs \*(AQset noglob; eval \fC\`\fP\*n\fC\`\fP\*(AQ
|
|
||||||
.fi
|
|
||||||
.sp
|
|
||||||
After resizing the window, the user would type:
|
|
||||||
.sp
|
|
||||||
.nf
|
|
||||||
% rs
|
|
||||||
.fi
|
|
||||||
.sp
|
|
||||||
Users of versions of the Bourne shell (usually known as \fI/bin/sh\fP) that
|
|
||||||
don't have command
|
|
||||||
functions will need to send the output to a temporary file and then read it back
|
|
||||||
in with the \*(``.\*('' command:
|
|
||||||
.sp
|
|
||||||
.nf
|
|
||||||
$ \*n > /tmp/out
|
|
||||||
$ .\0/tmp/out
|
|
||||||
.fi
|
|
||||||
.SH OPTIONS
|
.SH OPTIONS
|
||||||
The following options may be used with \fI\*n\fP:
|
The following options may be used with \fI\*n\fP:
|
||||||
.TP 8
|
.TP 8
|
||||||
|
@ -167,13 +166,6 @@ which causes makes it assume the \fB\-s\fP option.
|
||||||
The \fIrows\fP and
|
The \fIrows\fP and
|
||||||
\fIcolumns\fP arguments must appear last; though they are normally
|
\fIcolumns\fP arguments must appear last; though they are normally
|
||||||
associated with the \fB\-s\fP option, they are parsed separately.
|
associated with the \fB\-s\fP option, they are parsed separately.
|
||||||
.SH FILES
|
|
||||||
.TP 15
|
|
||||||
/etc/termcap
|
|
||||||
for the base termcap entry to modify.
|
|
||||||
.TP 15
|
|
||||||
~/.cshrc
|
|
||||||
user's alias for the command.
|
|
||||||
.SH ENVIRONMENT
|
.SH ENVIRONMENT
|
||||||
.TP 15
|
.TP 15
|
||||||
SHELL
|
SHELL
|
||||||
|
@ -217,12 +209,38 @@ generated shell command
|
||||||
sets these variables on systems using terminfo.
|
sets these variables on systems using terminfo.
|
||||||
Many applications (including the curses library)
|
Many applications (including the curses library)
|
||||||
use those variables when set to override their screensize.
|
use those variables when set to override their screensize.
|
||||||
.SH "SEE ALSO"
|
.SH FILES
|
||||||
use_env(3x)
|
.TP 15
|
||||||
.br
|
/etc/termcap
|
||||||
csh(1), stty(1), tset(1)
|
for the base termcap entry to modify.
|
||||||
.br
|
.TP 15
|
||||||
xterm(__mansuffix__)
|
~/.cshrc
|
||||||
|
user's alias for the command.
|
||||||
|
.SH EXAMPLES
|
||||||
|
For \fI\*n\fP's output to take effect,
|
||||||
|
\fI\*n\fP must either be evaluated
|
||||||
|
as part of the command line (usually done with a shell alias or function) or
|
||||||
|
else redirected to a file which can then be read in.
|
||||||
|
From the C shell (usually
|
||||||
|
known as \fI/bin/csh\fP), the following alias could be defined in the
|
||||||
|
user's \fI.cshrc\fP:
|
||||||
|
.NS
|
||||||
|
% alias rs \*'set noglob; eval \`\*n\`\*'
|
||||||
|
.NE
|
||||||
|
.PP
|
||||||
|
After resizing the window, the user would type:
|
||||||
|
.NS
|
||||||
|
% rs
|
||||||
|
.NE
|
||||||
|
.PP
|
||||||
|
Users of versions of the Bourne shell (usually known as \fI/bin/sh\fP) that
|
||||||
|
don't have command
|
||||||
|
functions will need to send the output to a temporary file and then read it back
|
||||||
|
in with the \*(``.\*('' command:
|
||||||
|
.NS
|
||||||
|
$ \*n > /tmp/out
|
||||||
|
$ .\0/tmp/out
|
||||||
|
.NE
|
||||||
.SH AUTHORS
|
.SH AUTHORS
|
||||||
Mark Vandevoorde (MIT-Athena), Edward Moy (Berkeley)
|
Mark Vandevoorde (MIT-Athena), Edward Moy (Berkeley)
|
||||||
.br
|
.br
|
||||||
|
@ -233,3 +251,9 @@ Copyright (c) 1984, 1985 by X Consortium
|
||||||
See
|
See
|
||||||
.IR X (__miscmansuffix__)
|
.IR X (__miscmansuffix__)
|
||||||
for a complete copyright notice.
|
for a complete copyright notice.
|
||||||
|
.SH "SEE ALSO"
|
||||||
|
use_env(3x)
|
||||||
|
.br
|
||||||
|
csh(1), stty(1), tset(1)
|
||||||
|
.br
|
||||||
|
xterm(__mansuffix__)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: screen.c,v 1.627 2022/10/23 22:57:40 tom Exp $ */
|
/* $XTermId: screen.c,v 1.651 2024/02/13 22:10:51 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1999-2021,2022 by Thomas E. Dickey
|
* Copyright 1999-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -193,6 +193,9 @@ setupLineData(TScreen *screen,
|
||||||
/* these names are based on types */
|
/* these names are based on types */
|
||||||
unsigned skipNcolIAttr;
|
unsigned skipNcolIAttr;
|
||||||
unsigned skipNcolCharData;
|
unsigned skipNcolCharData;
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
unsigned skipNcolChar;
|
||||||
|
#endif
|
||||||
#if OPT_ISO_COLORS
|
#if OPT_ISO_COLORS
|
||||||
unsigned skipNcolCellColor;
|
unsigned skipNcolCellColor;
|
||||||
#endif
|
#endif
|
||||||
|
@ -207,8 +210,12 @@ setupLineData(TScreen *screen,
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
skipNcolIAttr = (ncol * SizeofScrnPtr(attribs));
|
/* *INDENT-EQLS* */
|
||||||
skipNcolCharData = (ncol * SizeofScrnPtr(charData));
|
skipNcolIAttr = (ncol * SizeofScrnPtr(attribs));
|
||||||
|
skipNcolCharData = (ncol * SizeofScrnPtr(charData));
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
skipNcolChar = (ncol * SizeofScrnPtr(charSeen)); /* = charSets */
|
||||||
|
#endif
|
||||||
#if OPT_ISO_COLORS
|
#if OPT_ISO_COLORS
|
||||||
skipNcolCellColor = (ncol * SizeofScrnPtr(color));
|
skipNcolCellColor = (ncol * SizeofScrnPtr(color));
|
||||||
#endif
|
#endif
|
||||||
|
@ -226,6 +233,10 @@ setupLineData(TScreen *screen,
|
||||||
SetupScrnPtr(ptr->color, data, CellColor);
|
SetupScrnPtr(ptr->color, data, CellColor);
|
||||||
#endif
|
#endif
|
||||||
SetupScrnPtr(ptr->charData, data, CharData);
|
SetupScrnPtr(ptr->charData, data, CharData);
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
SetupScrnPtr(ptr->charSeen, data, Char);
|
||||||
|
SetupScrnPtr(ptr->charSets, data, Char);
|
||||||
|
#endif
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
if (screen->wide_chars) {
|
if (screen->wide_chars) {
|
||||||
unsigned extra = (unsigned) screen->max_combining;
|
unsigned extra = (unsigned) screen->max_combining;
|
||||||
|
@ -302,9 +313,16 @@ sizeofScrnRow(TScreen *screen, unsigned ncol)
|
||||||
|
|
||||||
(void) screen;
|
(void) screen;
|
||||||
|
|
||||||
result = (ncol * (unsigned) sizeof(CharData));
|
result = (ncol * (unsigned) sizeof(CharData)); /* ->charData */
|
||||||
AlignValue(result);
|
AlignValue(result);
|
||||||
|
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
result += (ncol * (unsigned) sizeof(Char)); /* ->charSeen */
|
||||||
|
AlignValue(result);
|
||||||
|
result += (ncol * (unsigned) sizeof(Char)); /* ->charSets */
|
||||||
|
AlignValue(result);
|
||||||
|
#endif
|
||||||
|
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
if (screen->wide_chars) {
|
if (screen->wide_chars) {
|
||||||
result *= (unsigned) (1 + screen->max_combining);
|
result *= (unsigned) (1 + screen->max_combining);
|
||||||
|
@ -800,6 +818,7 @@ ClearCells(XtermWidget xw, int flags, unsigned len, int row, int col)
|
||||||
flags = (int) ((unsigned) flags | TERM_COLOR_FLAGS(xw));
|
flags = (int) ((unsigned) flags | TERM_COLOR_FLAGS(xw));
|
||||||
|
|
||||||
for (n = 0; n < len; ++n) {
|
for (n = 0; n < len; ++n) {
|
||||||
|
if_OPT_DEC_RECTOPS(ld->charSeen[(unsigned) col + n] = ' ');
|
||||||
ld->charData[(unsigned) col + n] = (CharData) ' ';
|
ld->charData[(unsigned) col + n] = (CharData) ' ';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -867,16 +886,20 @@ ScrnDisownSelection(XtermWidget xw)
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
ScrnWriteText(XtermWidget xw,
|
ScrnWriteText(XtermWidget xw,
|
||||||
IChar *str,
|
Cardinal offset,
|
||||||
|
Cardinal length,
|
||||||
unsigned flags,
|
unsigned flags,
|
||||||
CellColor cur_fg_bg,
|
CellColor cur_fg_bg)
|
||||||
unsigned length)
|
|
||||||
{
|
{
|
||||||
|
IChar *str = xw->work.write_text + offset;
|
||||||
TScreen *screen = TScreenOf(xw);
|
TScreen *screen = TScreenOf(xw);
|
||||||
LineData *ld;
|
LineData *ld;
|
||||||
IAttr *attrs;
|
IAttr *attrs;
|
||||||
int avail = MaxCols(screen) - screen->cur_col;
|
int avail = MaxCols(screen) - screen->cur_col;
|
||||||
IChar *chars;
|
IChar *chars;
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
Char *seens;
|
||||||
|
#endif
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
IChar starcol1;
|
IChar starcol1;
|
||||||
#endif
|
#endif
|
||||||
|
@ -898,6 +921,7 @@ ScrnWriteText(XtermWidget xw,
|
||||||
|
|
||||||
ld = getLineData(screen, screen->cur_row);
|
ld = getLineData(screen, screen->cur_row);
|
||||||
|
|
||||||
|
if_OPT_DEC_RECTOPS(seens = ld->charSeen + screen->cur_col);
|
||||||
chars = ld->charData + screen->cur_col;
|
chars = ld->charData + screen->cur_col;
|
||||||
attrs = ld->attribs + screen->cur_col;
|
attrs = ld->attribs + screen->cur_col;
|
||||||
|
|
||||||
|
@ -905,12 +929,26 @@ ScrnWriteText(XtermWidget xw,
|
||||||
starcol1 = *chars;
|
starcol1 = *chars;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* write blanks if we're writing invisible text */
|
/*
|
||||||
|
* Copy the string onto the line,
|
||||||
|
* writing blanks if we're writing invisible text.
|
||||||
|
*/
|
||||||
for (n = 0; n < length; ++n) {
|
for (n = 0; n < length; ++n) {
|
||||||
if ((flags & INVISIBLE))
|
#if OPT_DEC_RECTOPS
|
||||||
chars[n] = ' ';
|
if (xw->work.write_sums != NULL) {
|
||||||
else
|
ld->charSeen[screen->cur_col + (int) n] = xw->work.buffer_sums[n];
|
||||||
chars[n] = str[n];
|
ld->charSets[screen->cur_col + (int) n] = xw->work.buffer_sets[n];
|
||||||
|
} else {
|
||||||
|
seens[n] = (str[n] < 32
|
||||||
|
#if OPT_WIDE_CHARS
|
||||||
|
|| str[n] > 255
|
||||||
|
#endif
|
||||||
|
)
|
||||||
|
? ANSI_ESC
|
||||||
|
: (Char) str[n];
|
||||||
|
}
|
||||||
|
#endif /* OPT_DEC_RECTOPS */
|
||||||
|
chars[n] = str[n];
|
||||||
}
|
}
|
||||||
|
|
||||||
#if OPT_BLINK_TEXT
|
#if OPT_BLINK_TEXT
|
||||||
|
@ -1049,6 +1087,10 @@ ScrnClearLines(XtermWidget xw, ScrnBuf sb, int where, unsigned n, unsigned size)
|
||||||
memset(work->color, 0, size * sizeof(work->color[0]));
|
memset(work->color, 0, size * sizeof(work->color[0]));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
if_OPT_DEC_RECTOPS({
|
||||||
|
memset(work->charSeen, 0, size * sizeof(Char));
|
||||||
|
memset(work->charSets, 0, size * sizeof(work->charSets[0]));
|
||||||
|
});
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
if (screen->wide_chars) {
|
if (screen->wide_chars) {
|
||||||
size_t off;
|
size_t off;
|
||||||
|
@ -1636,7 +1678,6 @@ ScrnRefresh(XtermWidget xw,
|
||||||
fg = extract_fg(xw, fg_bg, flags);
|
fg = extract_fg(xw, fg_bg, flags);
|
||||||
bg = extract_bg(xw, fg_bg, flags);
|
bg = extract_bg(xw, fg_bg, flags);
|
||||||
});
|
});
|
||||||
|
|
||||||
#if OPT_WIDE_ATTRS
|
#if OPT_WIDE_ATTRS
|
||||||
old_attrs = xtermUpdateItalics(xw, flags, old_attrs);
|
old_attrs = xtermUpdateItalics(xw, flags, old_attrs);
|
||||||
#endif
|
#endif
|
||||||
|
@ -1896,7 +1937,7 @@ freeLineData(TScreen *screen, LineData *source)
|
||||||
|
|
||||||
#define ALLOC_IT(field) \
|
#define ALLOC_IT(field) \
|
||||||
if (result != NULL) { \
|
if (result != NULL) { \
|
||||||
if ((result->field = calloc(ncol, sizeof(*result->field))) == NULL) { \
|
if ((result->field = calloc((size_t) ncol, sizeof(*result->field))) == NULL) { \
|
||||||
result = freeLineData(screen, result); \
|
result = freeLineData(screen, result); \
|
||||||
} \
|
} \
|
||||||
}
|
}
|
||||||
|
@ -1913,14 +1954,18 @@ allocLineData(TScreen *screen, LineData *source)
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
size += source->combSize * sizeof(result->combData[0]);
|
size += source->combSize * sizeof(result->combData[0]);
|
||||||
#endif
|
#endif
|
||||||
if ((result = calloc(1, size)) != NULL) {
|
if ((result = calloc((size_t) 1, size)) != NULL) {
|
||||||
result->lineSize = ncol;
|
result->lineSize = ncol;
|
||||||
ALLOC_IT(attribs);
|
ALLOC_IT(attribs);
|
||||||
#if OPT_ISO_COLORS
|
#if OPT_ISO_COLORS
|
||||||
ALLOC_IT(color);
|
ALLOC_IT(color);
|
||||||
#endif
|
#endif
|
||||||
|
#if OPT_DEC_RECTOPS
|
||||||
|
ALLOC_IT(charSeen);
|
||||||
ALLOC_IT(charData);
|
ALLOC_IT(charData);
|
||||||
|
#endif
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
|
ALLOC_IT(charSets);
|
||||||
if_OPT_WIDE_CHARS(screen, {
|
if_OPT_WIDE_CHARS(screen, {
|
||||||
size_t off;
|
size_t off;
|
||||||
for_each_combData(off, source) {
|
for_each_combData(off, source) {
|
||||||
|
@ -2603,11 +2648,6 @@ ScrnCopyRectangle(XtermWidget xw, XTermRect *source, int nparam, int *params)
|
||||||
/*
|
/*
|
||||||
* Modifies the video-attributes only - so selection (not a video attribute) is
|
* Modifies the video-attributes only - so selection (not a video attribute) is
|
||||||
* unaffected. Colors and double-size flags are unaffected as well.
|
* unaffected. Colors and double-size flags are unaffected as well.
|
||||||
*
|
|
||||||
* FIXME: our representation for "invisible" does not work with this operation,
|
|
||||||
* since the attribute byte is fully-allocated for other flags. The logic
|
|
||||||
* is shown for INVISIBLE because it's harmless, and useful in case the
|
|
||||||
* CHARDRAWN or PROTECTED flags are reassigned.
|
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
ScrnMarkRectangle(XtermWidget xw,
|
ScrnMarkRectangle(XtermWidget xw,
|
||||||
|
@ -2812,14 +2852,13 @@ xtermCheckRect(XtermWidget xw,
|
||||||
int trimmed = 0;
|
int trimmed = 0;
|
||||||
int mode = screen->checksum_ext;
|
int mode = screen->checksum_ext;
|
||||||
|
|
||||||
TRACE(("xtermCheckRect: %s%s%s%s%s%s%s\n",
|
TRACE(("xtermCheckRect: %s%s%s%s%s%s\n",
|
||||||
(mode == csDEC) ? "DEC" : "checksumExtension",
|
(mode == csDEC) ? "DEC" : "checksumExtension",
|
||||||
(mode & csPOSITIVE) ? " !negative" : "",
|
(mode & csPOSITIVE) ? " !negative" : "",
|
||||||
(mode & csATTRIBS) ? " !attribs" : "",
|
(mode & csATTRIBS) ? " !attribs" : "",
|
||||||
(mode & csNOTRIM) ? " !trimmed" : "",
|
(mode & csNOTRIM) ? " !trimmed" : "",
|
||||||
(mode & csDRAWN) ? " !drawn" : "",
|
(mode & csDRAWN) ? " !drawn" : "",
|
||||||
(mode & csBYTE) ? " !byte" : "",
|
(mode & csBYTE) ? " !byte" : ""));
|
||||||
(mode & cs8TH) ? " !7bit" : ""));
|
|
||||||
|
|
||||||
if (nparam > 2) {
|
if (nparam > 2) {
|
||||||
nparam -= 2;
|
nparam -= 2;
|
||||||
|
@ -2832,29 +2871,62 @@ xtermCheckRect(XtermWidget xw,
|
||||||
int row, col;
|
int row, col;
|
||||||
Boolean first = True;
|
Boolean first = True;
|
||||||
int embedded = 0;
|
int embedded = 0;
|
||||||
DECNRCM_codes my_GR = screen->gsets[(int) screen->curgr];
|
|
||||||
|
|
||||||
for (row = top; row <= bottom; ++row) {
|
for (row = top; row <= bottom; ++row) {
|
||||||
int left = (target.left - 1);
|
int left = (target.left - 1);
|
||||||
int right = (target.right - 1);
|
int right = (target.right - 1);
|
||||||
|
int ch;
|
||||||
|
|
||||||
ld = getLineData(screen, row);
|
ld = getLineData(screen, row);
|
||||||
if (ld == 0)
|
if (ld == 0)
|
||||||
continue;
|
continue;
|
||||||
for (col = left; col <= right && col < (int) ld->lineSize; ++col) {
|
for (col = left; col <= right && col < (int) ld->lineSize; ++col) {
|
||||||
int ch = ((ld->attribs[col] & CHARDRAWN)
|
if (!(ld->attribs[col] & CHARDRAWN)) {
|
||||||
? (int) ld->charData[col]
|
if (!(mode & (csNOTRIM | csDRAWN)))
|
||||||
: ' ');
|
continue;
|
||||||
if (!(mode & csBYTE)) {
|
ch = ' ';
|
||||||
unsigned c2 = (unsigned) ch;
|
} else if (!(mode & csBYTE)) {
|
||||||
if (c2 > 0x7f && my_GR != nrc_ASCII) {
|
ch = xtermCharSetDec(xw,
|
||||||
c2 = xtermCharSetIn(xw, c2, my_GR);
|
ld->charSeen[col],
|
||||||
if (!(mode & cs8TH) && (c2 < 0x80))
|
ld->charSets[col]);
|
||||||
c2 |= 0x80;
|
} else {
|
||||||
}
|
ch = (int) ld->charData[col];
|
||||||
ch = (c2 & 0xff);
|
if_OPT_WIDE_CHARS(screen, {
|
||||||
|
if (is_UCS_SPECIAL(ch))
|
||||||
|
continue;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
if (!(mode & csATTRIBS)) {
|
if (!(mode & csATTRIBS)) {
|
||||||
|
#if OPT_ISO_COLORS && OPT_VT525_COLORS
|
||||||
|
if (screen->terminal_id == 525) {
|
||||||
|
IAttr flags = ld->attribs[col];
|
||||||
|
CellColor fg_bg = ld->color[col];
|
||||||
|
int fg = (int) extract_fg(xw, fg_bg, flags);
|
||||||
|
int bg = (int) extract_bg(xw, fg_bg, flags);
|
||||||
|
Boolean dft_bg = (bg < 0);
|
||||||
|
Boolean dft_fg = (fg < 0);
|
||||||
|
|
||||||
|
if (dft_bg)
|
||||||
|
bg = screen->assigned_bg;
|
||||||
|
if (bg >= 0 && bg < 16)
|
||||||
|
ch += bg;
|
||||||
|
|
||||||
|
if (dft_fg)
|
||||||
|
fg = screen->assigned_fg;
|
||||||
|
if (fg >= 0 && fg < 16)
|
||||||
|
ch += (fg << 4);
|
||||||
|
|
||||||
|
/* special case to match VT525 behavior */
|
||||||
|
if (dft_bg && !dft_fg && (ld->attribs[col] & BOLD))
|
||||||
|
ch -= 0x80;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
if (ld->attribs[col] & PROTECTED)
|
||||||
|
ch += 0x4;
|
||||||
|
#if OPT_WIDE_ATTRS
|
||||||
|
if (ld->attribs[col] & INVISIBLE)
|
||||||
|
ch += 0x8;
|
||||||
|
#endif
|
||||||
if (ld->attribs[col] & UNDERLINE)
|
if (ld->attribs[col] & UNDERLINE)
|
||||||
ch += 0x10;
|
ch += 0x10;
|
||||||
if (ld->attribs[col] & INVERSE)
|
if (ld->attribs[col] & INVERSE)
|
||||||
|
@ -2871,20 +2943,16 @@ xtermCheckRect(XtermWidget xw,
|
||||||
if ((mode & csNOTRIM))
|
if ((mode & csNOTRIM))
|
||||||
embedded += ch;
|
embedded += ch;
|
||||||
}
|
}
|
||||||
if ((ld->attribs[col] & CHARDRAWN)) {
|
total += ch;
|
||||||
total += ch;
|
if_OPT_WIDE_CHARS(screen, {
|
||||||
if_OPT_WIDE_CHARS(screen, {
|
/* FIXME - not counted if trimming blanks */
|
||||||
/* FIXME - not counted if trimming blanks */
|
if (!(mode & csBYTE)) {
|
||||||
if (!(mode & csBYTE)) {
|
size_t off;
|
||||||
size_t off;
|
for_each_combData(off, ld) {
|
||||||
for_each_combData(off, ld) {
|
total += (int) ld->combData[off][col];
|
||||||
total += (int) ld->combData[off][col];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
} else if (!(mode & csDRAWN)) {
|
});
|
||||||
total += ch;
|
|
||||||
}
|
|
||||||
first = ((mode & csNOTRIM) != 0) ? True : False;
|
first = ((mode & csNOTRIM) != 0) ? True : False;
|
||||||
}
|
}
|
||||||
if (!(mode & csNOTRIM)) {
|
if (!(mode & csNOTRIM)) {
|
||||||
|
@ -2901,6 +2969,55 @@ xtermCheckRect(XtermWidget xw,
|
||||||
}
|
}
|
||||||
#endif /* OPT_DEC_RECTOPS */
|
#endif /* OPT_DEC_RECTOPS */
|
||||||
|
|
||||||
|
static void
|
||||||
|
set_ewmh_hint(XtermWidget xw, int operation, _Xconst char *prop)
|
||||||
|
{
|
||||||
|
TScreen *screen = TScreenOf(xw);
|
||||||
|
Display *dpy = screen->display;
|
||||||
|
Window window;
|
||||||
|
XEvent e;
|
||||||
|
Atom atom_fullscreen = CachedInternAtom(dpy, prop);
|
||||||
|
Atom atom_state = CachedInternAtom(dpy, "_NET_WM_STATE");
|
||||||
|
|
||||||
|
#if OPT_TRACE
|
||||||
|
const char *what = "?";
|
||||||
|
switch (operation) {
|
||||||
|
case _NET_WM_STATE_ADD:
|
||||||
|
what = "adding";
|
||||||
|
break;
|
||||||
|
case _NET_WM_STATE_REMOVE:
|
||||||
|
what = "removing";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
TRACE(("set_ewmh_hint %s %s\n", what, prop));
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if OPT_TEK4014
|
||||||
|
if (TEK4014_ACTIVE(xw)) {
|
||||||
|
window = TShellWindow;
|
||||||
|
} else
|
||||||
|
#endif
|
||||||
|
window = VShellWindow(xw);
|
||||||
|
|
||||||
|
memset(&e, 0, sizeof(e));
|
||||||
|
e.xclient.type = ClientMessage;
|
||||||
|
e.xclient.message_type = atom_state;
|
||||||
|
e.xclient.display = dpy;
|
||||||
|
e.xclient.window = window;
|
||||||
|
e.xclient.format = 32;
|
||||||
|
e.xclient.data.l[0] = operation;
|
||||||
|
e.xclient.data.l[1] = (long) atom_fullscreen;
|
||||||
|
|
||||||
|
XSendEvent(dpy, DefaultRootWindow(dpy), False,
|
||||||
|
SubstructureRedirectMask, &e);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
ResetHiddenHint(XtermWidget xw)
|
||||||
|
{
|
||||||
|
set_ewmh_hint(xw, _NET_WM_STATE_REMOVE, "_NET_WM_STATE_HIDDEN");
|
||||||
|
}
|
||||||
|
|
||||||
#if OPT_MAXIMIZE
|
#if OPT_MAXIMIZE
|
||||||
|
|
||||||
static _Xconst char *
|
static _Xconst char *
|
||||||
|
@ -2982,39 +3099,6 @@ unset_resize_increments(XtermWidget xw)
|
||||||
XFlush(XtDisplay(xw));
|
XFlush(XtDisplay(xw));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
|
||||||
set_ewmh_hint(Display *dpy, Window window, int operation, _Xconst char *prop)
|
|
||||||
{
|
|
||||||
XEvent e;
|
|
||||||
Atom atom_fullscreen = XInternAtom(dpy, prop, False);
|
|
||||||
Atom atom_state = XInternAtom(dpy, "_NET_WM_STATE", False);
|
|
||||||
|
|
||||||
#if OPT_TRACE
|
|
||||||
const char *what = "?";
|
|
||||||
switch (operation) {
|
|
||||||
case _NET_WM_STATE_ADD:
|
|
||||||
what = "adding";
|
|
||||||
break;
|
|
||||||
case _NET_WM_STATE_REMOVE:
|
|
||||||
what = "removing";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
TRACE(("set_ewmh_hint %s %s\n", what, prop));
|
|
||||||
#endif
|
|
||||||
|
|
||||||
memset(&e, 0, sizeof(e));
|
|
||||||
e.xclient.type = ClientMessage;
|
|
||||||
e.xclient.message_type = atom_state;
|
|
||||||
e.xclient.display = dpy;
|
|
||||||
e.xclient.window = window;
|
|
||||||
e.xclient.format = 32;
|
|
||||||
e.xclient.data.l[0] = operation;
|
|
||||||
e.xclient.data.l[1] = (long) atom_fullscreen;
|
|
||||||
|
|
||||||
XSendEvent(dpy, DefaultRootWindow(dpy), False,
|
|
||||||
SubstructureRedirectMask, &e);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check if the given property is supported on the root window.
|
* Check if the given property is supported on the root window.
|
||||||
*
|
*
|
||||||
|
@ -3029,8 +3113,8 @@ set_ewmh_hint(Display *dpy, Window window, int operation, _Xconst char *prop)
|
||||||
static Boolean
|
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_fullscreen = CachedInternAtom(dpy, propname);
|
||||||
Atom atom_supported = XInternAtom(dpy, "_NET_SUPPORTED", False);
|
Atom atom_supported = CachedInternAtom(dpy, "_NET_SUPPORTED");
|
||||||
Atom actual_type;
|
Atom actual_type;
|
||||||
int actual_format;
|
int actual_format;
|
||||||
long long_offset = 0;
|
long long_offset = 0;
|
||||||
|
@ -3107,15 +3191,10 @@ FullScreen(XtermWidget xw, int new_ewmh_mode)
|
||||||
_Xconst char *newprop;
|
_Xconst char *newprop;
|
||||||
|
|
||||||
int which = 0;
|
int which = 0;
|
||||||
Window window;
|
|
||||||
|
|
||||||
#if OPT_TEK4014
|
#if OPT_TEK4014
|
||||||
if (TEK4014_ACTIVE(xw)) {
|
if (TEK4014_ACTIVE(xw))
|
||||||
which = 1;
|
which = 1;
|
||||||
window = TShellWindow;
|
|
||||||
} else
|
|
||||||
#endif
|
#endif
|
||||||
window = VShellWindow(xw);
|
|
||||||
|
|
||||||
old_ewmh_mode = xw->work.ewmh[which].mode;
|
old_ewmh_mode = xw->work.ewmh[which].mode;
|
||||||
oldprop = ewmhProperty(old_ewmh_mode);
|
oldprop = ewmhProperty(old_ewmh_mode);
|
||||||
|
@ -3146,15 +3225,15 @@ FullScreen(XtermWidget xw, int new_ewmh_mode)
|
||||||
TRACE(("...new EWMH mode is allowed\n"));
|
TRACE(("...new EWMH mode is allowed\n"));
|
||||||
if (new_ewmh_mode && !xw->work.ewmh[which].mode) {
|
if (new_ewmh_mode && !xw->work.ewmh[which].mode) {
|
||||||
unset_resize_increments(xw);
|
unset_resize_increments(xw);
|
||||||
set_ewmh_hint(dpy, window, _NET_WM_STATE_ADD, newprop);
|
set_ewmh_hint(xw, _NET_WM_STATE_ADD, newprop);
|
||||||
} else if (xw->work.ewmh[which].mode && !new_ewmh_mode) {
|
} else if (xw->work.ewmh[which].mode && !new_ewmh_mode) {
|
||||||
if (!xw->misc.resizeByPixel) {
|
if (!xw->misc.resizeByPixel) {
|
||||||
set_resize_increments(xw);
|
set_resize_increments(xw);
|
||||||
}
|
}
|
||||||
set_ewmh_hint(dpy, window, _NET_WM_STATE_REMOVE, oldprop);
|
set_ewmh_hint(xw, _NET_WM_STATE_REMOVE, oldprop);
|
||||||
} else {
|
} else {
|
||||||
set_ewmh_hint(dpy, window, _NET_WM_STATE_REMOVE, oldprop);
|
set_ewmh_hint(xw, _NET_WM_STATE_REMOVE, oldprop);
|
||||||
set_ewmh_hint(dpy, window, _NET_WM_STATE_ADD, newprop);
|
set_ewmh_hint(xw, _NET_WM_STATE_ADD, newprop);
|
||||||
}
|
}
|
||||||
xw->work.ewmh[which].mode = new_ewmh_mode;
|
xw->work.ewmh[which].mode = new_ewmh_mode;
|
||||||
update_fullscreen();
|
update_fullscreen();
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: scrollbar.c,v 1.214 2021/12/31 23:35:02 tom Exp $ */
|
/* $XTermId: scrollbar.c,v 1.215 2023/11/12 22:08:19 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2000-2020,2021 by Thomas E. Dickey
|
* Copyright 2000-2021,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -862,7 +862,7 @@ getXkbLED(Display *dpy, const char *name, Boolean *result)
|
||||||
Bool state;
|
Bool state;
|
||||||
|
|
||||||
if (have_xkb(dpy)) {
|
if (have_xkb(dpy)) {
|
||||||
my_atom = XInternAtom(dpy, name, False);
|
my_atom = CachedInternAtom(dpy, name);
|
||||||
if ((my_atom != None) &&
|
if ((my_atom != None) &&
|
||||||
XkbGetNamedIndicator(dpy, my_atom, NULL, &state, NULL, NULL)) {
|
XkbGetNamedIndicator(dpy, my_atom, NULL, &state, NULL, NULL)) {
|
||||||
*result = (Boolean) state;
|
*result = (Boolean) state;
|
||||||
|
@ -883,7 +883,7 @@ showXkbLED(Display *dpy, const char *name, Bool enable)
|
||||||
Boolean result = False;
|
Boolean result = False;
|
||||||
|
|
||||||
if (have_xkb(dpy)) {
|
if (have_xkb(dpy)) {
|
||||||
my_atom = XInternAtom(dpy, name, False);
|
my_atom = CachedInternAtom(dpy, name);
|
||||||
if ((my_atom != None) &&
|
if ((my_atom != None) &&
|
||||||
XkbGetNamedIndicator(dpy, my_atom, NULL, NULL, NULL, NULL) &&
|
XkbGetNamedIndicator(dpy, my_atom, NULL, NULL, NULL, NULL) &&
|
||||||
XkbSetNamedIndicator(dpy, my_atom, True, enable, False, NULL)) {
|
XkbSetNamedIndicator(dpy, my_atom, True, enable, False, NULL)) {
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: svg.c,v 1.21 2021/09/19 18:22:57 tom Exp $ */
|
/* $XTermId: svg.c,v 1.23 2023/03/31 23:08:13 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2017-2020,2021 Thomas E. Dickey
|
* Copyright 2017-2021,2023 Thomas E. Dickey
|
||||||
* Copyright 2015-2016,2017 Jens Schweikhardt
|
* Copyright 2015-2016,2017 Jens Schweikhardt
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
|
@ -105,11 +105,12 @@ dumpSvgScreen(XtermWidget xw, FILE *fp)
|
||||||
int row;
|
int row;
|
||||||
|
|
||||||
fprintf(fp, " <rect x='0' y='0' width='%u' height='%u' fill='%s'/>\n",
|
fprintf(fp, " <rect x='0' y='0' width='%u' height='%u' fill='%s'/>\n",
|
||||||
cols * CELLW + 2 * (bw + ib), rows * CELLH + 2 * (bw + ib),
|
(unsigned) (cols * CELLW + 2 * (bw + ib)),
|
||||||
|
(unsigned) (rows * CELLH + 2 * (bw + ib)),
|
||||||
PixelToCSSColor(xw, xw->core.border_pixel));
|
PixelToCSSColor(xw, xw->core.border_pixel));
|
||||||
fprintf(fp, " <rect x='%u' y='%u' width='%u' height='%u' fill='%s'/>\n",
|
fprintf(fp, " <rect x='%u' y='%u' width='%u' height='%u' fill='%s'/>\n",
|
||||||
bw, bw,
|
bw, bw,
|
||||||
MaxCols(s) * CELLW + 2 * ib,
|
(unsigned) (MaxCols(s) * CELLW + 2 * ib),
|
||||||
(unsigned) (rows * CELLH + 2 * ib),
|
(unsigned) (rows * CELLH + 2 * ib),
|
||||||
PixelToCSSColor(xw, xw->old_background));
|
PixelToCSSColor(xw, xw->old_background));
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
# $XTermId: terminfo,v 1.206 2023/01/08 10:51:12 tom Exp $
|
# $XTermId: terminfo,v 1.209 2024/02/11 23:35:48 tom Exp $
|
||||||
#
|
#
|
||||||
# Updates/notes/new entries (e.g., xterm-8bit, xterm-16color, xterm-256color)
|
# Updates/notes/new entries (e.g., xterm-8bit, xterm-16color, xterm-256color)
|
||||||
# - Thomas E. Dickey
|
# - Thomas E. Dickey
|
||||||
#
|
#
|
||||||
#------------------------------------------------------------------------------
|
#------------------------------------------------------------------------------
|
||||||
# Copyright 1996-2022,2023 by Thomas E. Dickey
|
# Copyright 1996-2023,2024 by Thomas E. Dickey
|
||||||
#
|
#
|
||||||
# All Rights Reserved
|
# All Rights Reserved
|
||||||
#
|
#
|
||||||
|
@ -130,11 +130,6 @@
|
||||||
# respectively.
|
# respectively.
|
||||||
#
|
#
|
||||||
xterm-new|modern xterm terminal emulator,
|
xterm-new|modern xterm terminal emulator,
|
||||||
npc,
|
|
||||||
indn=\E[%p1%dS,
|
|
||||||
kcbt=\E[Z,
|
|
||||||
kent=\EOM,
|
|
||||||
nel=\EE,
|
|
||||||
use=dec+sl,
|
use=dec+sl,
|
||||||
use=ecma+index,
|
use=ecma+index,
|
||||||
use=xterm+keypad,
|
use=xterm+keypad,
|
||||||
|
@ -147,6 +142,7 @@ xterm-new|modern xterm terminal emulator,
|
||||||
use=xterm+nofkeys,
|
use=xterm+nofkeys,
|
||||||
use=bracketed+paste,
|
use=bracketed+paste,
|
||||||
use=report+version,
|
use=report+version,
|
||||||
|
use=xterm+focus,
|
||||||
|
|
||||||
# Left/right margins are supported in xterm since patch #279 (2012/05/10)
|
# Left/right margins are supported in xterm since patch #279 (2012/05/10)
|
||||||
vt420+lrmm|VT420 left/right margins,
|
vt420+lrmm|VT420 left/right margins,
|
||||||
|
@ -155,9 +151,23 @@ vt420+lrmm|VT420 left/right margins,
|
||||||
smglr=\E[?69h\E[%i%p1%d;%p2%ds,
|
smglr=\E[?69h\E[%i%p1%d;%p2%ds,
|
||||||
smgrp=\E[?69h\E[%i;%p1%ds,
|
smgrp=\E[?69h\E[%i;%p1%ds,
|
||||||
|
|
||||||
# These "ansi+XXX" blocks were added in ncurses 5.0:
|
# These "ansi+XXX" blocks were added in ncurses 5.0 or 5.1:
|
||||||
ansi+rep,
|
ansi+arrows|ANSI normal-mode home and cursor-keys,
|
||||||
rep=%p1%c\E[%p2%{1}%-%db,
|
kbs=^H,
|
||||||
|
kcub1=\E[D,
|
||||||
|
kcud1=\E[B,
|
||||||
|
kcuf1=\E[C,
|
||||||
|
kcuu1=\E[A,
|
||||||
|
khome=\E[H,
|
||||||
|
|
||||||
|
ansi+csr|ANSI scroll-region plus cursor save & restore,
|
||||||
|
csr=\E[%i%p1%d;%p2%dr,
|
||||||
|
rc=\E8,
|
||||||
|
sc=\E7,
|
||||||
|
|
||||||
|
ansi+cup|ANSI absolute cursor-addressing,
|
||||||
|
cup=\E[%i%p1%d;%p2%dH,
|
||||||
|
home=\E[H,
|
||||||
|
|
||||||
ansi+enq|ncurses extension for ANSI ENQ,
|
ansi+enq|ncurses extension for ANSI ENQ,
|
||||||
u6=\E[%i%d;%dR,
|
u6=\E[%i%d;%dR,
|
||||||
|
@ -165,6 +175,172 @@ ansi+enq|ncurses extension for ANSI ENQ,
|
||||||
u8=\E[?%[;0123456789]c,
|
u8=\E[?%[;0123456789]c,
|
||||||
u9=\E[c,
|
u9=\E[c,
|
||||||
|
|
||||||
|
ansi+erase|ANSI clear screen/line,
|
||||||
|
clear=\E[H\E[J,
|
||||||
|
ed=\E[J,
|
||||||
|
el=\E[K,
|
||||||
|
|
||||||
|
ansi+idc1|ANSI insert/delete one character,
|
||||||
|
dch1=\E[P,
|
||||||
|
ich1=\E[@,
|
||||||
|
rmir=\E[4l,
|
||||||
|
smir=\E[4h,
|
||||||
|
|
||||||
|
ansi+idc|ANSI insert/delete characters,
|
||||||
|
dch=\E[%p1%dP,
|
||||||
|
ich=\E[%p1%d@,
|
||||||
|
use=ansi+idc1,
|
||||||
|
|
||||||
|
ansi+idl1|ANSI insert/delete one line,
|
||||||
|
dl1=\E[M,
|
||||||
|
il1=\E[L,
|
||||||
|
|
||||||
|
ansi+idl|ANSI insert/delete lines,
|
||||||
|
dl=\E[%p1%dM,
|
||||||
|
il=\E[%p1%dL,
|
||||||
|
use=ansi+idl1,
|
||||||
|
|
||||||
|
ansi+inittabs|ANSI initial tab-stops,
|
||||||
|
it#8,
|
||||||
|
use=ansi+tabs,
|
||||||
|
|
||||||
|
ansi+local1|ANSI normal-mode cursor-keys,
|
||||||
|
cub1=\E[D,
|
||||||
|
cud1=\E[B,
|
||||||
|
cuf1=\E[C,
|
||||||
|
cuu1=\E[A,
|
||||||
|
|
||||||
|
ansi+local|ANSI normal-mode parameterized cursor-keys,
|
||||||
|
cub=\E[%p1%dD,
|
||||||
|
cud=\E[%p1%dB,
|
||||||
|
cuf=\E[%p1%dC,
|
||||||
|
cuu=\E[%p1%dA,
|
||||||
|
use=ansi+local1,
|
||||||
|
|
||||||
|
ansi+pp|ANSI printer port,
|
||||||
|
mc5i,
|
||||||
|
mc0=\E[i,
|
||||||
|
mc4=\E[4i,
|
||||||
|
mc5=\E[5i,
|
||||||
|
|
||||||
|
ansi+rep|ANSI repeat-character,
|
||||||
|
rep=%p1%c\E[%p2%{1}%-%db,
|
||||||
|
|
||||||
|
ansi+sgr|ANSI graphic renditions,
|
||||||
|
blink=\E[5m,
|
||||||
|
invis=\E[8m,
|
||||||
|
rev=\E[7m,
|
||||||
|
sgr=\E[0
|
||||||
|
%?
|
||||||
|
%p3
|
||||||
|
%t;7
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p4
|
||||||
|
%t;5
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p7
|
||||||
|
%t;8
|
||||||
|
%;
|
||||||
|
m,
|
||||||
|
sgr0=\E[0m,
|
||||||
|
|
||||||
|
ansi+sgrso|ANSI standout only,
|
||||||
|
rmso=\E[m,
|
||||||
|
smso=\E[7m,
|
||||||
|
|
||||||
|
ansi+sgrul|ANSI underline only,
|
||||||
|
rmul=\E[m,
|
||||||
|
smul=\E[4m,
|
||||||
|
|
||||||
|
ansi+sgrbold|ANSI graphic renditions; assuming terminal has bold; not dim,
|
||||||
|
bold=\E[1m,
|
||||||
|
sgr=\E[
|
||||||
|
%?
|
||||||
|
%p1
|
||||||
|
%t7;
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p2
|
||||||
|
%t4;
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p3
|
||||||
|
%t7;
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p4
|
||||||
|
%t5;
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p6
|
||||||
|
%t1;
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p7
|
||||||
|
%t8;
|
||||||
|
%;
|
||||||
|
m,
|
||||||
|
use=ansi+sgr,
|
||||||
|
use=ansi+sgrso,
|
||||||
|
use=ansi+sgrul,
|
||||||
|
|
||||||
|
ansi+sgrdim|ANSI graphic renditions; assuming terminal has dim; not bold,
|
||||||
|
dim=\E[2m,
|
||||||
|
sgr=\E[
|
||||||
|
%?
|
||||||
|
%p1
|
||||||
|
%t7;
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p2
|
||||||
|
%t4;
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p3
|
||||||
|
%t7;
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p4
|
||||||
|
%t5;
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p5
|
||||||
|
%t2;
|
||||||
|
%;
|
||||||
|
%?
|
||||||
|
%p7
|
||||||
|
%t8;
|
||||||
|
%;
|
||||||
|
m,
|
||||||
|
use=ansi+sgr,
|
||||||
|
use=ansi+sgrso,
|
||||||
|
use=ansi+sgrul,
|
||||||
|
|
||||||
|
ansi+tabs|ANSI tab-stops,
|
||||||
|
cbt=\E[Z,
|
||||||
|
ht=^I,
|
||||||
|
hts=\EH,
|
||||||
|
tbc=\E[3g,
|
||||||
|
|
||||||
|
# These were added after ncurses 6.0:
|
||||||
|
ansi+apparrows|ANSI application-mode home and cursor-keys,
|
||||||
|
kcub1=\EOD,
|
||||||
|
kcud1=\EOB,
|
||||||
|
kcuf1=\EOC,
|
||||||
|
kcuu1=\EOA,
|
||||||
|
khome=\EOH,
|
||||||
|
use=ansi+arrows,
|
||||||
|
|
||||||
|
ansi+cpr|ncurses extension for ANSI CPR,
|
||||||
|
u6=\E[%i%d;%dR,
|
||||||
|
u7=\E[6n,
|
||||||
|
|
||||||
|
ansi+rca2|ANSI relative cursor-addressing,
|
||||||
|
hpa=\E[%i%p1%dG,
|
||||||
|
vpa=\E[%i%p1%dd,
|
||||||
|
|
||||||
# Encode modifiers using parameters (see "Xterm Control Sequences" ctlseqs.ms).
|
# Encode modifiers using parameters (see "Xterm Control Sequences" ctlseqs.ms).
|
||||||
# Note that this is unrelated to PCTERM.
|
# Note that this is unrelated to PCTERM.
|
||||||
#
|
#
|
||||||
|
@ -908,7 +1084,7 @@ xterm+pce0|fragment with modifyCursorKeys:0,
|
||||||
kPRV5=\E[5;5~,
|
kPRV5=\E[5;5~,
|
||||||
kPRV6=\E[5;6~,
|
kPRV6=\E[5;6~,
|
||||||
kPRV7=\E[5;7~,
|
kPRV7=\E[5;7~,
|
||||||
use=xterm+edit,
|
use=vt220+pcedit,
|
||||||
|
|
||||||
ecma+italics|ECMA-48 italics,
|
ecma+italics|ECMA-48 italics,
|
||||||
ritm=\E[23m,
|
ritm=\E[23m,
|
||||||
|
@ -968,6 +1144,16 @@ xterm+x11mouse|X11 xterm mouse protocol,
|
||||||
%p2%'!'%+%c
|
%p2%'!'%+%c
|
||||||
%p1%'!'%+%c,
|
%p1%'!'%+%c,
|
||||||
|
|
||||||
|
# xterm patch #224 2007/2/11 added private mode 1004, for enabling/disabling
|
||||||
|
# focus in/out event reporting. The 1004 is normally part of XM in a different
|
||||||
|
# building-block, e.g., for reporting any events.
|
||||||
|
xterm+focus|xterm focus-in/out event "keys",
|
||||||
|
XF,
|
||||||
|
fd=\E[?1004l,
|
||||||
|
fe=\E[?1004h,
|
||||||
|
kxIN=\E[I,
|
||||||
|
kxOUT=\E[O,
|
||||||
|
|
||||||
# https://invisible-island.net/xterm/xterm-paste64.html
|
# https://invisible-island.net/xterm/xterm-paste64.html
|
||||||
#
|
#
|
||||||
# Bracketed paste was introduced by xterm patch #203 in May 2005, as part of a
|
# Bracketed paste was introduced by xterm patch #203 in May 2005, as part of a
|
||||||
|
@ -988,7 +1174,21 @@ bracketed+paste|xterm bracketed paste,
|
||||||
# For example:
|
# For example:
|
||||||
# ^[P>|XTerm(354)^[\
|
# ^[P>|XTerm(354)^[\
|
||||||
report+version|Report xterm name and version (XTVERSION).,
|
report+version|Report xterm name and version (XTVERSION).,
|
||||||
RV=\E[>0q,
|
XR=\E[>0q,
|
||||||
|
xr=\EP>\\|XTerm\\([1-9][0-9]+\\)
|
||||||
|
\E\\\\,
|
||||||
|
use=report+da2,
|
||||||
|
|
||||||
|
# Vim uses RV to denote the secondary device attributes. Xterm documents the
|
||||||
|
# - first parameter as the terminal type (extending it to VT100),
|
||||||
|
# - the second as the patch number for xterm, and
|
||||||
|
# - the third parameter as zero.
|
||||||
|
# Other terminals may provide useful responses, though few are documented.
|
||||||
|
#
|
||||||
|
# Since patch #280 2012/06/24, xterm by default reports itself as a VT420.
|
||||||
|
report+da2|report secondary device attributes (DA2),
|
||||||
|
RV=\E[>c,
|
||||||
|
rv=\E\\[41;[1-6][0-9][0-9];0c,
|
||||||
|
|
||||||
# This chunk is used for building the VT220/Sun/PC keyboard variants.
|
# This chunk is used for building the VT220/Sun/PC keyboard variants.
|
||||||
xterm-basic|modern xterm terminal emulator - common,
|
xterm-basic|modern xterm terminal emulator - common,
|
||||||
|
@ -996,7 +1196,6 @@ xterm-basic|modern xterm terminal emulator - common,
|
||||||
am,
|
am,
|
||||||
bce,
|
bce,
|
||||||
km,
|
km,
|
||||||
mc5i,
|
|
||||||
mir,
|
mir,
|
||||||
msgr,
|
msgr,
|
||||||
xenl,
|
xenl,
|
||||||
|
@ -1004,59 +1203,34 @@ xterm-basic|modern xterm terminal emulator - common,
|
||||||
XT,
|
XT,
|
||||||
colors#8,
|
colors#8,
|
||||||
cols#80,
|
cols#80,
|
||||||
it#8,
|
|
||||||
lines#24,
|
lines#24,
|
||||||
pairs#64,
|
pairs#64,
|
||||||
acsc=``aaffggiijjkkllmmnnooppqqr
|
acsc=``aaffggiijjkkllmmnnooppqqr
|
||||||
rssttuuvvwwxxyyzz{{||}}~~,
|
rssttuuvvwwxxyyzz{{||}}~~,
|
||||||
bel=^G,
|
bel=^G,
|
||||||
blink=\E[5m,
|
|
||||||
bold=\E[1m,
|
|
||||||
cbt=\E[Z,
|
|
||||||
civis=\E[?25l,
|
civis=\E[?25l,
|
||||||
clear=\E[H\E[2J,
|
clear=\E[H\E[2J,
|
||||||
cnorm=\E[?12l\E[?25h,
|
cnorm=\E[?12l\E[?25h,
|
||||||
cr=\r,
|
cr=\r,
|
||||||
csr=\E[%i%p1%d;%p2%dr,
|
|
||||||
cub=\E[%p1%dD,
|
|
||||||
cub1=^H,
|
cub1=^H,
|
||||||
cud=\E[%p1%dB,
|
|
||||||
cud1=\n,
|
cud1=\n,
|
||||||
cuf=\E[%p1%dC,
|
|
||||||
cuf1=\E[C,
|
|
||||||
cup=\E[%i%p1%d;%p2%dH,
|
cup=\E[%i%p1%d;%p2%dH,
|
||||||
cuu=\E[%p1%dA,
|
|
||||||
cuu1=\E[A,
|
|
||||||
cvvis=\E[?12;25h,
|
cvvis=\E[?12;25h,
|
||||||
dch=\E[%p1%dP,
|
dch=\E[%p1%dP,
|
||||||
dch1=\E[P,
|
dch1=\E[P,
|
||||||
dim=\E[2m,
|
|
||||||
dl=\E[%p1%dM,
|
|
||||||
dl1=\E[M,
|
|
||||||
ech=\E[%p1%dX,
|
ech=\E[%p1%dX,
|
||||||
ed=\E[J,
|
ed=\E[J,
|
||||||
el=\E[K,
|
el=\E[K,
|
||||||
el1=\E[1K,
|
el1=\E[1K,
|
||||||
flash=\E[?5h$<100/>\E[?5l,
|
flash=\E[?5h$<100/>\E[?5l,
|
||||||
home=\E[H,
|
home=\E[H,
|
||||||
hpa=\E[%i%p1%dG,
|
|
||||||
ht=^I,
|
|
||||||
hts=\EH,
|
|
||||||
ich=\E[%p1%d@,
|
ich=\E[%p1%d@,
|
||||||
il=\E[%p1%dL,
|
|
||||||
il1=\E[L,
|
|
||||||
ind=\n,
|
ind=\n,
|
||||||
invis=\E[8m,
|
|
||||||
is2=\E[!p\E[?3;4l\E[4l\E>,
|
is2=\E[!p\E[?3;4l\E[4l\E>,
|
||||||
kmous=\E[M,
|
kmous=\E[M,
|
||||||
mc0=\E[i,
|
|
||||||
mc4=\E[4i,
|
|
||||||
mc5=\E[5i,
|
|
||||||
meml=\El,
|
meml=\El,
|
||||||
memu=\Em,
|
memu=\Em,
|
||||||
op=\E[39;49m,
|
op=\E[39;49m,
|
||||||
rc=\E8,
|
|
||||||
rev=\E[7m,
|
|
||||||
ri=\EM,
|
ri=\EM,
|
||||||
rmacs=\E(B,
|
rmacs=\E(B,
|
||||||
rmam=\E[?7l,
|
rmam=\E[?7l,
|
||||||
|
@ -1067,7 +1241,6 @@ xterm-basic|modern xterm terminal emulator - common,
|
||||||
rmul=\E[24m,
|
rmul=\E[24m,
|
||||||
rs1=\Ec,
|
rs1=\Ec,
|
||||||
rs2=\E[!p\E[?3;4l\E[4l\E>,
|
rs2=\E[!p\E[?3;4l\E[4l\E>,
|
||||||
sc=\E7,
|
|
||||||
setab=\E[4%p1%dm,
|
setab=\E[4%p1%dm,
|
||||||
setaf=\E[3%p1%dm,
|
setaf=\E[3%p1%dm,
|
||||||
setb=\E[4
|
setb=\E[4
|
||||||
|
@ -1144,12 +1317,16 @@ xterm-basic|modern xterm terminal emulator - common,
|
||||||
smir=\E[4h,
|
smir=\E[4h,
|
||||||
smkx=\E[?1h\E=,
|
smkx=\E[?1h\E=,
|
||||||
smm=\E[?1034h,
|
smm=\E[?1034h,
|
||||||
smso=\E[7m,
|
|
||||||
smul=\E[4m,
|
|
||||||
tbc=\E[3g,
|
|
||||||
vpa=\E[%i%p1%dd,
|
|
||||||
E3=\E[3J,
|
E3=\E[3J,
|
||||||
|
use=ansi+csr,
|
||||||
use=ansi+enq,
|
use=ansi+enq,
|
||||||
|
use=ansi+idl,
|
||||||
|
use=ansi+inittabs,
|
||||||
|
use=ansi+local,
|
||||||
|
use=ansi+pp,
|
||||||
|
use=ansi+rca2,
|
||||||
|
use=ansi+sgrbold,
|
||||||
|
use=ansi+sgrdim,
|
||||||
use=xterm+alt+title,
|
use=xterm+alt+title,
|
||||||
use=xterm+kbs,
|
use=xterm+kbs,
|
||||||
|
|
||||||
|
@ -1164,6 +1341,7 @@ xterm+nofkeys|building block for xterm fkey-variants,
|
||||||
use=vt420+lrmm,
|
use=vt420+lrmm,
|
||||||
use=xterm+sm+1006,
|
use=xterm+sm+1006,
|
||||||
use=xterm+tmux,
|
use=xterm+tmux,
|
||||||
|
use=xterm+focus,
|
||||||
use=ecma+italics,
|
use=ecma+italics,
|
||||||
use=xterm+keypad,
|
use=xterm+keypad,
|
||||||
use=xterm-basic,
|
use=xterm-basic,
|
||||||
|
@ -1184,12 +1362,7 @@ xterm+nofkeys|building block for xterm fkey-variants,
|
||||||
xterm-vt220|xterm emulating vt220,
|
xterm-vt220|xterm emulating vt220,
|
||||||
npc,
|
npc,
|
||||||
kcbt=\E[Z,
|
kcbt=\E[Z,
|
||||||
kcub1=\EOD,
|
|
||||||
kcud1=\EOB,
|
|
||||||
kcuf1=\EOC,
|
|
||||||
kcuu1=\EOA,
|
|
||||||
kend=\E[4~,
|
kend=\E[4~,
|
||||||
kent=\EOM,
|
|
||||||
kf10=\E[21~,
|
kf10=\E[21~,
|
||||||
kf11=\E[23~,
|
kf11=\E[23~,
|
||||||
kf12=\E[24~,
|
kf12=\E[24~,
|
||||||
|
@ -1207,18 +1380,16 @@ xterm-vt220|xterm emulating vt220,
|
||||||
kf8=\E[19~,
|
kf8=\E[19~,
|
||||||
kf9=\E[20~,
|
kf9=\E[20~,
|
||||||
khome=\E[1~,
|
khome=\E[1~,
|
||||||
kich1=\E[2~,
|
|
||||||
kmous=\E[M,
|
kmous=\E[M,
|
||||||
knp=\E[6~,
|
|
||||||
kpp=\E[5~,
|
|
||||||
nel=\EE,
|
nel=\EE,
|
||||||
use=xterm+app,
|
use=xterm+app,
|
||||||
use=xterm+edit,
|
|
||||||
use=vt220+keypad,
|
use=vt220+keypad,
|
||||||
|
use=vt220+pcedit,
|
||||||
use=ecma+italics,
|
use=ecma+italics,
|
||||||
use=ecma+index,
|
use=ecma+index,
|
||||||
use=ansi+rep,
|
use=ansi+rep,
|
||||||
use=ecma+strikeout,
|
use=ecma+strikeout,
|
||||||
|
use=xterm+focus,
|
||||||
use=xterm+sm+1006,
|
use=xterm+sm+1006,
|
||||||
use=xterm+tmux,
|
use=xterm+tmux,
|
||||||
use=xterm+keypad,
|
use=xterm+keypad,
|
||||||
|
@ -1333,13 +1504,8 @@ vt52+keypad|DECScope auxiliary keypad,
|
||||||
xterm-sun|xterm with sun function keys,
|
xterm-sun|xterm with sun function keys,
|
||||||
kb2=\E[218z,
|
kb2=\E[218z,
|
||||||
kcpy=\E[197z,
|
kcpy=\E[197z,
|
||||||
kcub1=\EOD,
|
|
||||||
kcud1=\EOB,
|
|
||||||
kcuf1=\EOC,
|
|
||||||
kcuu1=\EOA,
|
|
||||||
kdch1=\E[3z,
|
kdch1=\E[3z,
|
||||||
kend=\E[220z,
|
kend=\E[220z,
|
||||||
kent=\EOM,
|
|
||||||
kf1=\E[224z,
|
kf1=\E[224z,
|
||||||
kf10=\E[233z,
|
kf10=\E[233z,
|
||||||
kf11=\E[192z,
|
kf11=\E[192z,
|
||||||
|
@ -1379,6 +1545,8 @@ xterm-sun|xterm with sun function keys,
|
||||||
knp=\E[222z,
|
knp=\E[222z,
|
||||||
kpp=\E[216z,
|
kpp=\E[216z,
|
||||||
kund=\E[195z,
|
kund=\E[195z,
|
||||||
|
use=xterm+kbs,
|
||||||
|
use=ansi+apparrows,
|
||||||
use=xterm+nopcfkeys,
|
use=xterm+nopcfkeys,
|
||||||
use=xterm+nofkeys,
|
use=xterm+nofkeys,
|
||||||
|
|
||||||
|
@ -1491,7 +1659,7 @@ xterm-sco|xterm with SCO function keys,
|
||||||
kmous=\E[>M,
|
kmous=\E[>M,
|
||||||
knp=\E[G,
|
knp=\E[G,
|
||||||
kpp=\E[I,
|
kpp=\E[I,
|
||||||
use=xterm+noapp,
|
use=vt100+noapp,
|
||||||
use=xterm+nofkeys,
|
use=xterm+nofkeys,
|
||||||
#
|
#
|
||||||
# Other variants (these are all very old entries, from X11R5):
|
# Other variants (these are all very old entries, from X11R5):
|
||||||
|
@ -1569,15 +1737,22 @@ xterm-noapp|xterm with cursor keys in normal mode,
|
||||||
rmkx=\E>,
|
rmkx=\E>,
|
||||||
smcup@,
|
smcup@,
|
||||||
smkx=\E=,
|
smkx=\E=,
|
||||||
use=xterm+noapp,
|
use=vt100+noapp,
|
||||||
use=xterm,
|
use=xterm,
|
||||||
|
|
||||||
xterm+noapp|fragment with cursor keys in normal mode,
|
vt100+noapp|fragment with cursor keys in normal mode,
|
||||||
kcub1=\E[D,
|
kcub1=\E[D,
|
||||||
kcud1=\E[B,
|
kcud1=\E[B,
|
||||||
kcuf1=\E[C,
|
kcuf1=\E[C,
|
||||||
kcuu1=\E[A,
|
kcuu1=\E[A,
|
||||||
use=xterm+noapp+pc,
|
use=vt100+noapp+pc,
|
||||||
|
|
||||||
|
xterm+acs|ISO-2022 alternate character-switching for xterm,
|
||||||
|
acsc=``aaffggiijjkkllmmnnooppqqr
|
||||||
|
rssttuuvvwwxxyyzz{{||}}~~,
|
||||||
|
enacs@,
|
||||||
|
rmacs=\E(B,
|
||||||
|
smacs=\E(0,
|
||||||
|
|
||||||
xterm+app|fragment with cursor keys in application mode,
|
xterm+app|fragment with cursor keys in application mode,
|
||||||
kcub1=\EOD,
|
kcub1=\EOD,
|
||||||
|
@ -1586,7 +1761,7 @@ xterm+app|fragment with cursor keys in application mode,
|
||||||
kcuu1=\EOA,
|
kcuu1=\EOA,
|
||||||
use=xterm+app+pc,
|
use=xterm+app+pc,
|
||||||
|
|
||||||
xterm+noapp+pc|fragment for noapp pc-style home/end,
|
vt100+noapp+pc|fragment for noapp pc-style home/end,
|
||||||
kend=\E[F,
|
kend=\E[F,
|
||||||
khome=\E[H,
|
khome=\E[H,
|
||||||
|
|
||||||
|
@ -1594,7 +1769,7 @@ xterm+app+pc|fragment for app pc-style home/end,
|
||||||
kend=\EOF,
|
kend=\EOF,
|
||||||
khome=\EOH,
|
khome=\EOH,
|
||||||
|
|
||||||
xterm+edit|fragment for 6-key editing-keypad,
|
vt220+pcedit|fragment for 6-key editing-keypad,
|
||||||
kdch1=\E[3~,
|
kdch1=\E[3~,
|
||||||
kich1=\E[2~,
|
kich1=\E[2~,
|
||||||
knp=\E[6~,
|
knp=\E[6~,
|
||||||
|
@ -1616,10 +1791,6 @@ xterm+vt+edit|fragment for vt220-style editing keypad,
|
||||||
kfnd=\E[1~,
|
kfnd=\E[1~,
|
||||||
kslt=\E[4~,
|
kslt=\E[4~,
|
||||||
|
|
||||||
xterm+noalt|xterm without altscreen,
|
|
||||||
rmcup@,
|
|
||||||
smcup@,
|
|
||||||
|
|
||||||
xterm+alt1049|xterm 90 feature,
|
xterm+alt1049|xterm 90 feature,
|
||||||
rmcup=\E[?1049l,
|
rmcup=\E[?1049l,
|
||||||
smcup=\E[?1049h,
|
smcup=\E[?1049h,
|
||||||
|
@ -2066,8 +2237,6 @@ xterm+256color2|xterm 256-color feature,
|
||||||
%p1%d
|
%p1%d
|
||||||
%;
|
%;
|
||||||
m,
|
m,
|
||||||
setb@,
|
|
||||||
setf@,
|
|
||||||
use=xterm+256color,
|
use=xterm+256color,
|
||||||
xterm-256color|xterm with 256 colors,
|
xterm-256color|xterm with 256 colors,
|
||||||
use=xterm+256color2,
|
use=xterm+256color2,
|
||||||
|
@ -2150,8 +2319,6 @@ xterm-8bit|xterm terminal emulator with 8-bit controls (X Window System),
|
||||||
it#8,
|
it#8,
|
||||||
lines#24,
|
lines#24,
|
||||||
pairs#64,
|
pairs#64,
|
||||||
acsc=``aaffggiijjkkllmmnnooppqqr
|
|
||||||
rssttuuvvwwxxyyzz{{||}}~~,
|
|
||||||
bel=^G,
|
bel=^G,
|
||||||
blink=\2335m,
|
blink=\2335m,
|
||||||
bold=\2331m,
|
bold=\2331m,
|
||||||
|
@ -2240,7 +2407,6 @@ xterm-8bit|xterm terminal emulator with 8-bit controls (X Window System),
|
||||||
rc=\E8,
|
rc=\E8,
|
||||||
rev=\2337m,
|
rev=\2337m,
|
||||||
ri=\215,
|
ri=\215,
|
||||||
rmacs=\E(B,
|
|
||||||
rmam=\233?7l,
|
rmam=\233?7l,
|
||||||
rmcup=\233?1049l,
|
rmcup=\233?1049l,
|
||||||
rmir=\2334l,
|
rmir=\2334l,
|
||||||
|
@ -2318,7 +2484,6 @@ xterm-8bit|xterm terminal emulator with 8-bit controls (X Window System),
|
||||||
\E(B
|
\E(B
|
||||||
%;,
|
%;,
|
||||||
sgr0=\2330m\E(B,
|
sgr0=\2330m\E(B,
|
||||||
smacs=\E(0,
|
|
||||||
smam=\233?7h,
|
smam=\233?7h,
|
||||||
smcup=\233?1049h,
|
smcup=\233?1049h,
|
||||||
smir=\2334h,
|
smir=\2334h,
|
||||||
|
@ -2331,6 +2496,7 @@ xterm-8bit|xterm terminal emulator with 8-bit controls (X Window System),
|
||||||
u8=\233[?%[;0123456789]c,
|
u8=\233[?%[;0123456789]c,
|
||||||
u9=\E[c,
|
u9=\E[c,
|
||||||
vpa=\233%i%p1%dd,
|
vpa=\233%i%p1%dd,
|
||||||
|
use=xterm+acs,
|
||||||
use=xterm+kbs,
|
use=xterm+kbs,
|
||||||
#
|
#
|
||||||
xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
|
xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
|
||||||
|
@ -2338,7 +2504,6 @@ xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
|
||||||
am,
|
am,
|
||||||
bce,
|
bce,
|
||||||
km,
|
km,
|
||||||
mc5i,
|
|
||||||
mir,
|
mir,
|
||||||
msgr,
|
msgr,
|
||||||
npc,
|
npc,
|
||||||
|
@ -2347,50 +2512,30 @@ xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
|
||||||
XT,
|
XT,
|
||||||
colors#8,
|
colors#8,
|
||||||
cols#80,
|
cols#80,
|
||||||
it#8,
|
|
||||||
lines#24,
|
lines#24,
|
||||||
pairs#64,
|
pairs#64,
|
||||||
acsc=``aaffggiijjkkllmmnnooppqqr
|
acsc=``aaffggiijjkkllmmnnooppqqr
|
||||||
rssttuuvvwwxxyyzz{{||}}~~,
|
rssttuuvvwwxxyyzz{{||}}~~,
|
||||||
bel=^G,
|
bel=^G,
|
||||||
blink=\E[5m,
|
|
||||||
bold=\E[1m,
|
|
||||||
cbt=\E[Z,
|
|
||||||
civis=\E[?25l,
|
civis=\E[?25l,
|
||||||
clear=\E[H\E[2J,
|
clear=\E[H\E[2J,
|
||||||
cnorm=\E[?12l\E[?25h,
|
cnorm=\E[?12l\E[?25h,
|
||||||
cr=\r,
|
cr=\r,
|
||||||
csr=\E[%i%p1%d;%p2%dr,
|
|
||||||
cub=\E[%p1%dD,
|
|
||||||
cub1=^H,
|
cub1=^H,
|
||||||
cud=\E[%p1%dB,
|
|
||||||
cud1=\n,
|
cud1=\n,
|
||||||
cuf=\E[%p1%dC,
|
|
||||||
cuf1=\E[C,
|
|
||||||
cup=\E[%i%p1%d;%p2%dH,
|
|
||||||
cuu=\E[%p1%dA,
|
|
||||||
cuu1=\E[A,
|
|
||||||
cvvis=\E[?12;25h,
|
cvvis=\E[?12;25h,
|
||||||
dch=\E[%p1%dP,
|
dch=\E[%p1%dP,
|
||||||
dch1=\E[P,
|
dch1=\E[P,
|
||||||
dl=\E[%p1%dM,
|
|
||||||
dl1=\E[M,
|
|
||||||
ech=\E[%p1%dX,
|
ech=\E[%p1%dX,
|
||||||
ed=\E[J,
|
ed=\E[J,
|
||||||
el=\E[K,
|
el=\E[K,
|
||||||
el1=\E[1K,
|
el1=\E[1K,
|
||||||
enacs=\E(B\E)0,
|
enacs=\E(B\E)0,
|
||||||
flash=\E[?5h$<100/>\E[?5l,
|
flash=\E[?5h$<100/>\E[?5l,
|
||||||
home=\E[H,
|
|
||||||
hpa=\E[%i%p1%dG,
|
hpa=\E[%i%p1%dG,
|
||||||
ht=^I,
|
|
||||||
hts=\EH,
|
|
||||||
ich=\E[%p1%d@,
|
ich=\E[%p1%d@,
|
||||||
il=\E[%p1%dL,
|
|
||||||
il1=\E[L,
|
|
||||||
ind=\n,
|
ind=\n,
|
||||||
indn=\E[%p1%dS,
|
indn=\E[%p1%dS,
|
||||||
invis=\E[8m,
|
|
||||||
is2=\E[!p\E[?3;4l\E[4l\E>,
|
is2=\E[!p\E[?3;4l\E[4l\E>,
|
||||||
kDC=\E[3;2~,
|
kDC=\E[3;2~,
|
||||||
kEND=\E[1;2F,
|
kEND=\E[1;2F,
|
||||||
|
@ -2402,10 +2547,6 @@ xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
|
||||||
kRIT=\E[1;2C,
|
kRIT=\E[1;2C,
|
||||||
kb2=\EOE,
|
kb2=\EOE,
|
||||||
kcbt=\E[Z,
|
kcbt=\E[Z,
|
||||||
kcub1=\EOD,
|
|
||||||
kcud1=\EOB,
|
|
||||||
kcuf1=\EOC,
|
|
||||||
kcuu1=\EOA,
|
|
||||||
kdch1=\E[3~,
|
kdch1=\E[3~,
|
||||||
kend=\EOF,
|
kend=\EOF,
|
||||||
kent=\EOM,
|
kent=\EOM,
|
||||||
|
@ -2457,19 +2598,13 @@ xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
|
||||||
kf7=\E[18~,
|
kf7=\E[18~,
|
||||||
kf8=\E[19~,
|
kf8=\E[19~,
|
||||||
kf9=\E[20~,
|
kf9=\E[20~,
|
||||||
khome=\EOH,
|
|
||||||
kich1=\E[2~,
|
kich1=\E[2~,
|
||||||
kmous=\E[M,
|
kmous=\E[M,
|
||||||
knp=\E[6~,
|
knp=\E[6~,
|
||||||
kpp=\E[5~,
|
kpp=\E[5~,
|
||||||
mc0=\E[i,
|
|
||||||
mc4=\E[4i,
|
|
||||||
mc5=\E[5i,
|
|
||||||
meml=\El,
|
meml=\El,
|
||||||
memu=\Em,
|
memu=\Em,
|
||||||
op=\E[39;49m,
|
op=\E[39;49m,
|
||||||
rc=\E8,
|
|
||||||
rev=\E[7m,
|
|
||||||
ri=\EM,
|
ri=\EM,
|
||||||
rin=\E[%p1%dT,
|
rin=\E[%p1%dT,
|
||||||
rmacs=^O,
|
rmacs=^O,
|
||||||
|
@ -2480,7 +2615,6 @@ xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
|
||||||
rmul=\E[24m,
|
rmul=\E[24m,
|
||||||
rs1=\Ec,
|
rs1=\Ec,
|
||||||
rs2=\E[!p\E[?3;4l\E[4l\E>,
|
rs2=\E[!p\E[?3;4l\E[4l\E>,
|
||||||
sc=\E7,
|
|
||||||
setab=\E[4%p1%dm,
|
setab=\E[4%p1%dm,
|
||||||
setaf=\E[3%p1%dm,
|
setaf=\E[3%p1%dm,
|
||||||
setb=\E[4
|
setb=\E[4
|
||||||
|
@ -2551,20 +2685,24 @@ xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System),
|
||||||
smam=\E[?7h,
|
smam=\E[?7h,
|
||||||
smir=\E[4h,
|
smir=\E[4h,
|
||||||
smkx=\E[?1h\E=,
|
smkx=\E[?1h\E=,
|
||||||
smso=\E[7m,
|
|
||||||
smul=\E[4m,
|
|
||||||
tbc=\E[3g,
|
|
||||||
u6=\E[%i%d;%dR,
|
|
||||||
u7=\E[6n,
|
|
||||||
u8=\E[?1;2c,
|
u8=\E[?1;2c,
|
||||||
u9=\E[c,
|
|
||||||
vpa=\E[%i%p1%dd,
|
vpa=\E[%i%p1%dd,
|
||||||
ka2=\EOx,
|
ka2=\EOx,
|
||||||
kb1=\EOt,
|
kb1=\EOt,
|
||||||
kb3=\EOv,
|
kb3=\EOv,
|
||||||
kc2=\EOr,
|
kc2=\EOr,
|
||||||
use=xterm+alt1049,
|
|
||||||
use=xterm+kbs,
|
use=xterm+kbs,
|
||||||
|
use=ansi+apparrows,
|
||||||
|
use=ansi+csr,
|
||||||
|
use=ansi+cup,
|
||||||
|
use=ansi+enq,
|
||||||
|
use=ansi+idl,
|
||||||
|
use=ansi+inittabs,
|
||||||
|
use=ansi+local,
|
||||||
|
use=ansi+pp,
|
||||||
|
use=ansi+sgrbold,
|
||||||
|
use=xterm+alt1049,
|
||||||
|
|
||||||
xterm-xfree86|xterm terminal emulator (XFree86 4.4 Window System),
|
xterm-xfree86|xterm terminal emulator (XFree86 4.4 Window System),
|
||||||
use=xterm-xf86-v44,
|
use=xterm-xf86-v44,
|
||||||
#
|
#
|
||||||
|
@ -2590,24 +2728,19 @@ xterm-r6|xterm X11R6 version,
|
||||||
bold=\E[1m,
|
bold=\E[1m,
|
||||||
clear=\E[H\E[2J,
|
clear=\E[H\E[2J,
|
||||||
cr=\r,
|
cr=\r,
|
||||||
csr=\E[%i%p1%d;%p2%dr,
|
|
||||||
cub=\E[%p1%dD,
|
cub=\E[%p1%dD,
|
||||||
cub1=^H,
|
cub1=^H,
|
||||||
cud=\E[%p1%dB,
|
cud=\E[%p1%dB,
|
||||||
cud1=\n,
|
cud1=\n,
|
||||||
cuf=\E[%p1%dC,
|
cuf=\E[%p1%dC,
|
||||||
cuf1=\E[C,
|
cuf1=\E[C,
|
||||||
cup=\E[%i%p1%d;%p2%dH,
|
|
||||||
cuu=\E[%p1%dA,
|
cuu=\E[%p1%dA,
|
||||||
cuu1=\E[A,
|
cuu1=\E[A,
|
||||||
dch=\E[%p1%dP,
|
dch=\E[%p1%dP,
|
||||||
dch1=\E[P,
|
dch1=\E[P,
|
||||||
dl=\E[%p1%dM,
|
dl=\E[%p1%dM,
|
||||||
dl1=\E[M,
|
dl1=\E[M,
|
||||||
ed=\E[J,
|
|
||||||
el=\E[K,
|
|
||||||
enacs=\E)0,
|
enacs=\E)0,
|
||||||
home=\E[H,
|
|
||||||
ht=^I,
|
ht=^I,
|
||||||
hts=\EH,
|
hts=\EH,
|
||||||
il=\E[%p1%dL,
|
il=\E[%p1%dL,
|
||||||
|
@ -2619,7 +2752,6 @@ xterm-r6|xterm X11R6 version,
|
||||||
kcud1=\EOB,
|
kcud1=\EOB,
|
||||||
kcuf1=\EOC,
|
kcuf1=\EOC,
|
||||||
kcuu1=\EOA,
|
kcuu1=\EOA,
|
||||||
kdch1=\E[3~,
|
|
||||||
kf1=\E[11~,
|
kf1=\E[11~,
|
||||||
kf10=\E[21~,
|
kf10=\E[21~,
|
||||||
kf11=\E[23~,
|
kf11=\E[23~,
|
||||||
|
@ -2643,7 +2775,6 @@ xterm-r6|xterm X11R6 version,
|
||||||
kmous=\E[M,
|
kmous=\E[M,
|
||||||
meml=\El,
|
meml=\El,
|
||||||
memu=\Em,
|
memu=\Em,
|
||||||
rc=\E8,
|
|
||||||
rev=\E[7m,
|
rev=\E[7m,
|
||||||
ri=\EM,
|
ri=\EM,
|
||||||
rmacs=^O,
|
rmacs=^O,
|
||||||
|
@ -2654,7 +2785,6 @@ xterm-r6|xterm X11R6 version,
|
||||||
rmul=\E[m,
|
rmul=\E[m,
|
||||||
rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[
|
rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[
|
||||||
?1;3;4;6l\E8,
|
?1;3;4;6l\E8,
|
||||||
sc=\E7,
|
|
||||||
sgr0=\E[m,
|
sgr0=\E[m,
|
||||||
smacs=^N,
|
smacs=^N,
|
||||||
smcup=\E7\E[?47h,
|
smcup=\E7\E[?47h,
|
||||||
|
@ -2663,10 +2793,12 @@ xterm-r6|xterm X11R6 version,
|
||||||
smso=\E[7m,
|
smso=\E[7m,
|
||||||
smul=\E[4m,
|
smul=\E[4m,
|
||||||
tbc=\E[3g,
|
tbc=\E[3g,
|
||||||
u6=\E[%i%d;%dR,
|
|
||||||
u7=\E[6n,
|
|
||||||
u8=\E[?1;2c,
|
u8=\E[?1;2c,
|
||||||
u9=\E[c,
|
u9=\E[c,
|
||||||
|
use=ansi+cpr,
|
||||||
|
use=ansi+csr,
|
||||||
|
use=ansi+cup,
|
||||||
|
use=ansi+erase,
|
||||||
use=xterm+kbs,
|
use=xterm+kbs,
|
||||||
use=xterm+decedit,
|
use=xterm+decedit,
|
||||||
xterm-old|antique xterm version,
|
xterm-old|antique xterm version,
|
||||||
|
@ -2697,34 +2829,15 @@ xterm-r5|xterm R5 version,
|
||||||
bold=\E[1m,
|
bold=\E[1m,
|
||||||
clear=\E[H\E[2J,
|
clear=\E[H\E[2J,
|
||||||
cr=\r,
|
cr=\r,
|
||||||
csr=\E[%i%p1%d;%p2%dr,
|
|
||||||
cub=\E[%p1%dD,
|
|
||||||
cub1=^H,
|
cub1=^H,
|
||||||
cud=\E[%p1%dB,
|
|
||||||
cud1=\n,
|
cud1=\n,
|
||||||
cuf=\E[%p1%dC,
|
|
||||||
cuf1=\E[C,
|
|
||||||
cup=\E[%i%p1%d;%p2%dH,
|
cup=\E[%i%p1%d;%p2%dH,
|
||||||
cuu=\E[%p1%dA,
|
|
||||||
cuu1=\E[A,
|
|
||||||
dch=\E[%p1%dP,
|
|
||||||
dch1=\E[P,
|
|
||||||
dl=\E[%p1%dM,
|
|
||||||
dl1=\E[M,
|
|
||||||
ed=\E[J,
|
ed=\E[J,
|
||||||
el=\E[K,
|
el=\E[K,
|
||||||
home=\E[H,
|
home=\E[H,
|
||||||
ht=^I,
|
ht=^I,
|
||||||
hts=\EH,
|
hts=\EH,
|
||||||
ich=\E[%p1%d@,
|
|
||||||
ich1=\E[@,
|
|
||||||
il=\E[%p1%dL,
|
|
||||||
il1=\E[L,
|
|
||||||
ind=\n,
|
ind=\n,
|
||||||
kcub1=\EOD,
|
|
||||||
kcud1=\EOB,
|
|
||||||
kcuf1=\EOC,
|
|
||||||
kcuu1=\EOA,
|
|
||||||
kdch1=\E[3~,
|
kdch1=\E[3~,
|
||||||
kdl1=\E[31~,
|
kdl1=\E[31~,
|
||||||
kel=\E[8~,
|
kel=\E[8~,
|
||||||
|
@ -2748,16 +2861,12 @@ xterm-r5|xterm R5 version,
|
||||||
kmous=\E[M,
|
kmous=\E[M,
|
||||||
knp=\E[6~,
|
knp=\E[6~,
|
||||||
kpp=\E[5~,
|
kpp=\E[5~,
|
||||||
rc=\E8,
|
|
||||||
rev=\E[7m,
|
rev=\E[7m,
|
||||||
ri=\EM,
|
ri=\EM,
|
||||||
rmir=\E[4l,
|
|
||||||
rmkx=\E[?1l\E>,
|
rmkx=\E[?1l\E>,
|
||||||
rmso=\E[m,
|
|
||||||
rmul=\E[m,
|
rmul=\E[m,
|
||||||
rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h
|
rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h
|
||||||
\E[m\E[r\E[2J\E[H,
|
\E[m\E[r\E[2J\E[H,
|
||||||
sc=\E7,
|
|
||||||
sgr=\E[
|
sgr=\E[
|
||||||
%?
|
%?
|
||||||
%p1
|
%p1
|
||||||
|
@ -2781,16 +2890,18 @@ xterm-r5|xterm R5 version,
|
||||||
%;
|
%;
|
||||||
m,
|
m,
|
||||||
sgr0=\E[m,
|
sgr0=\E[m,
|
||||||
smir=\E[4h,
|
|
||||||
smkx=\E[?1h\E=,
|
smkx=\E[?1h\E=,
|
||||||
smso=\E[7m,
|
|
||||||
smul=\E[4m,
|
smul=\E[4m,
|
||||||
tbc=\E[3g,
|
tbc=\E[3g,
|
||||||
u6=\E[%i%d;%dR,
|
|
||||||
u7=\E[6n,
|
|
||||||
u8=\E[?1;2c,
|
u8=\E[?1;2c,
|
||||||
u9=\E[c,
|
|
||||||
use=xterm+kbs,
|
use=xterm+kbs,
|
||||||
|
use=ansi+apparrows,
|
||||||
|
use=ansi+csr,
|
||||||
|
use=ansi+enq,
|
||||||
|
use=ansi+idc,
|
||||||
|
use=ansi+idl,
|
||||||
|
use=ansi+local,
|
||||||
|
use=ansi+sgrso,
|
||||||
|
|
||||||
# DEC status-line is an extension for VT220, and standard with VT320 and up.
|
# DEC status-line is an extension for VT220, and standard with VT320 and up.
|
||||||
dec+sl|DEC VTxx status line,
|
dec+sl|DEC VTxx status line,
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: trace.c,v 1.239 2022/10/06 20:43:02 tom Exp $ */
|
/* $XTermId: trace.c,v 1.240 2023/10/14 16:52:49 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1997-2021,2022 by Thomas E. Dickey
|
* Copyright 1997-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -269,6 +269,7 @@ visibleScsCode(DECNRCM_codes chrset)
|
||||||
MAP("1", nrc_DEC_Alt_Chars);
|
MAP("1", nrc_DEC_Alt_Chars);
|
||||||
MAP("2", nrc_DEC_Alt_Graphics);
|
MAP("2", nrc_DEC_Alt_Graphics);
|
||||||
MAP("<", nrc_DEC_Supp);
|
MAP("<", nrc_DEC_Supp);
|
||||||
|
MAP("<", nrc_DEC_UPSS);
|
||||||
MAP("%5", nrc_DEC_Supp_Graphic);
|
MAP("%5", nrc_DEC_Supp_Graphic);
|
||||||
MAP(">", nrc_DEC_Technical);
|
MAP(">", nrc_DEC_Technical);
|
||||||
MAP("4", nrc_Dutch);
|
MAP("4", nrc_Dutch);
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: trace.h,v 1.94 2022/10/06 20:40:49 tom Exp $ */
|
/* $XTermId: trace.h,v 1.95 2024/05/15 23:51:40 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1997-2021,2022 by Thomas E. Dickey
|
* Copyright 1997-2022,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -92,7 +92,7 @@ extern void TraceArgv(const char * /* tag */, char ** /* argv */);
|
||||||
|
|
||||||
extern const char *trace_who;
|
extern const char *trace_who;
|
||||||
#undef TRACE_CHILD
|
#undef TRACE_CHILD
|
||||||
#define TRACE_CHILD int tracing_child = (trace_who = "child") != 0; (void) tracing_child;
|
#define TRACE_CHILD int tracing_child = (trace_who = "child") != 0; (void) tracing_child
|
||||||
|
|
||||||
extern void TraceEvent(const char *, XEvent *, String *, Cardinal *);
|
extern void TraceEvent(const char *, XEvent *, String *, Cardinal *);
|
||||||
#undef TRACE_EVENT
|
#undef TRACE_EVENT
|
||||||
|
|
707
app/xterm/util.c
707
app/xterm/util.c
File diff suppressed because it is too large
Load diff
|
@ -1,10 +1,10 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# $XTermId: uxterm,v 1.29 2020/03/07 15:52:31 tom Exp $
|
# $XTermId: uxterm,v 1.30 2023/05/03 23:47:34 tom Exp $
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# this file is part of xterm
|
# this file is part of xterm
|
||||||
#
|
#
|
||||||
# Copyright 2001-2007,2020 by Thomas E. Dickey
|
# Copyright 2001-2020,2023 by Thomas E. Dickey
|
||||||
#
|
#
|
||||||
# All Rights Reserved
|
# All Rights Reserved
|
||||||
#
|
#
|
||||||
# Permission is hereby granted, free of charge, to any person obtaining a
|
# Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
@ -83,7 +83,7 @@ done
|
||||||
# user's shell does not reset unknown locale specifiers, but not all shells do.
|
# user's shell does not reset unknown locale specifiers, but not all shells do.
|
||||||
if test $found != yes ; then
|
if test $found != yes ; then
|
||||||
if test -n "$value" ; then
|
if test -n "$value" ; then
|
||||||
value=`echo ${value} |sed -e 's/[.@].*//'`.UTF-8
|
value=`echo "${value}" |sed -e 's/[.@].*//'`.UTF-8
|
||||||
else
|
else
|
||||||
expect=
|
expect=
|
||||||
for name in LC_ALL LC_CTYPE LANG
|
for name in LC_ALL LC_CTYPE LANG
|
||||||
|
@ -146,4 +146,4 @@ fi
|
||||||
# for testing:
|
# for testing:
|
||||||
#test -f ./xterm && XTERM_PROGRAM=./xterm
|
#test -f ./xterm && XTERM_PROGRAM=./xterm
|
||||||
|
|
||||||
exec "$XTERM_PROGRAM" -class UXTerm -title "$whoami" -u8 "$@"
|
exec "$XTERM_PROGRAM" -class UXTerm -u8 "$@"
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
.\" $XTermId: uxterm.man,v 1.8 2018/06/23 00:19:44 tom Exp $
|
.\" $XTermId: uxterm.man,v 1.9 2024/01/11 22:10:29 tom Exp $
|
||||||
.\"
|
.\"
|
||||||
.\" Copyright 2007-2012, 2018 Thomas E. Dickey
|
.\" Copyright 2007-2018,2024 Thomas E. Dickey
|
||||||
.\" Copyright 2001, 2004 Branden Robinson
|
.\" Copyright 2001, 2004 Branden Robinson
|
||||||
.\"
|
.\"
|
||||||
.\" Permission is hereby granted, free of charge, to any person obtaining a
|
.\" Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
@ -23,17 +23,25 @@
|
||||||
.\"
|
.\"
|
||||||
.ds N Uxterm
|
.ds N Uxterm
|
||||||
.ds n uxterm
|
.ds n uxterm
|
||||||
.\" Escape single quotes in literal strings from groff's Unicode transform.
|
|
||||||
.ie \n(.g .ds AQ \(aq
|
|
||||||
.el .ds AQ '
|
|
||||||
.ie \n(.g .ds `` \(lq
|
|
||||||
.el .ds `` ``
|
|
||||||
.ie \n(.g .ds '' \(rq
|
|
||||||
.el .ds '' ''
|
|
||||||
.\"
|
|
||||||
.TH UXTERM 1 "__app_date__" "__app_version__" "X Window System"
|
.TH UXTERM 1 "__app_date__" "__app_version__" "X Window System"
|
||||||
|
.
|
||||||
|
.ie \n(.g \{\
|
||||||
|
.ds `` \(lq
|
||||||
|
.ds '' \(rq
|
||||||
|
.ds ' \(aq
|
||||||
|
.\}
|
||||||
|
.el \{\
|
||||||
|
.ie t .ds `` ``
|
||||||
|
.el .ds `` ""
|
||||||
|
.ie t .ds '' ''
|
||||||
|
.el .ds '' ""
|
||||||
|
.ie t .ds ' \(aq
|
||||||
|
.el .ds ' '
|
||||||
|
.\}
|
||||||
|
.
|
||||||
.SH NAME
|
.SH NAME
|
||||||
uxterm \- X terminal emulator for Unicode (UTF-8) environments
|
uxterm \-
|
||||||
|
X terminal emulator for Unicode (UTF-8) environments
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B \*n
|
.B \*n
|
||||||
[
|
[
|
||||||
|
@ -94,7 +102,7 @@ is available for KOI8-R environments.
|
||||||
.B LC_ALL\fR, \fBLC_CTYPE\fR, \fBLANG
|
.B LC_ALL\fR, \fBLC_CTYPE\fR, \fBLANG
|
||||||
The values of these variables are checked, in order, to determine the
|
The values of these variables are checked, in order, to determine the
|
||||||
character set used by the current locale.
|
character set used by the current locale.
|
||||||
.SH AUTHOR
|
.SH AUTHORS
|
||||||
Thomas Dickey
|
Thomas Dickey
|
||||||
.SH "SEE ALSO"
|
.SH "SEE ALSO"
|
||||||
.B locale(1),
|
.B locale(1),
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: version.h,v 1.536 2023/01/09 10:29:58 tom Exp $ */
|
/* $XTermId: version.h,v 1.565 2024/07/11 23:38:21 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1998-2022,2023 by Thomas E. Dickey
|
* Copyright 1998-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -38,8 +38,8 @@
|
||||||
* version of X to which this version of xterm has been built. The resulting
|
* version of X to which this version of xterm has been built. The resulting
|
||||||
* number in parentheses is my patch number (Thomas E. Dickey).
|
* number in parentheses is my patch number (Thomas E. Dickey).
|
||||||
*/
|
*/
|
||||||
#define XTERM_PATCH 378
|
#define XTERM_PATCH 393
|
||||||
#define XTERM_DATE 2023-01-09
|
#define XTERM_DATE 2024-07-11
|
||||||
|
|
||||||
#ifndef __vendorversion__
|
#ifndef __vendorversion__
|
||||||
#define __vendorversion__ "XTerm/SecBSD"
|
#define __vendorversion__ "XTerm/SecBSD"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#!/usr/bin/env perl
|
#!/usr/bin/env perl
|
||||||
# $XTermId: vxt-insdelln,v 1.10 2022/10/10 17:05:38 tom Exp $
|
# $XTermId: insdelln.pl,v 1.10 2022/10/10 17:05:38 tom Exp $
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# this file is part of xterm
|
# this file is part of xterm
|
||||||
#
|
#
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
/* $XTermId: wcwidth.c,v 1.61 2022/09/24 00:24:57 tom Exp $ */
|
/* $XTermId: wcwidth.c,v 1.73 2024/07/06 00:45:04 tom Exp $ */
|
||||||
|
|
||||||
/* $XFree86: xc/programs/xterm/wcwidth.c,v 1.9 2006/06/19 00:36:52 dickey Exp $ */
|
/* $XFree86: xc/programs/xterm/wcwidth.c,v 1.9 2006/06/19 00:36:52 dickey Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2002-2021,2022 by Thomas E. Dickey
|
* Copyright 2002-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -115,16 +115,23 @@
|
||||||
*-----------------------------------------------------------------------------
|
*-----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#ifdef HAVE_CONFIG_H
|
||||||
|
#include <xtermcfg.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef TEST_DRIVER
|
#ifdef TEST_DRIVER
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h> /* EXIT_SUCCESS, etc. */
|
#include <stdlib.h> /* EXIT_SUCCESS, etc. */
|
||||||
#include <unistd.h> /* getopt() */
|
#include <unistd.h> /* getopt() */
|
||||||
#include <string.h> /* strncmp() */
|
#include <string.h> /* strncmp() */
|
||||||
#include <locale.h> /* setlocale() */
|
#include <locale.h> /* setlocale() */
|
||||||
#include <wchar.h> /* wcwidth() */
|
|
||||||
#include <wctype.h> /* this module */
|
#include <wctype.h> /* this module */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_WCHAR_H
|
||||||
|
#include <wchar.h> /* wcwidth() */
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <wcwidth.h>
|
#include <wcwidth.h>
|
||||||
|
|
||||||
struct interval {
|
struct interval {
|
||||||
|
@ -223,7 +230,7 @@ int mk_wcwidth(wchar_t ucs)
|
||||||
{ 0x0890, 0x0891 }, { 0x08E2, 0x08E2 }, { 0x180E, 0x180E },
|
{ 0x0890, 0x0891 }, { 0x08E2, 0x08E2 }, { 0x180E, 0x180E },
|
||||||
{ 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2064 },
|
{ 0x200B, 0x200F }, { 0x202A, 0x202E }, { 0x2060, 0x2064 },
|
||||||
{ 0x2066, 0x206F }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB },
|
{ 0x2066, 0x206F }, { 0xFEFF, 0xFEFF }, { 0xFFF9, 0xFFFB },
|
||||||
{ 0x110BD, 0x110BD }, { 0x110CD, 0x110CD }, { 0x13430, 0x13438 },
|
{ 0x110BD, 0x110BD }, { 0x110CD, 0x110CD }, { 0x13430, 0x1343F },
|
||||||
{ 0x1BCA0, 0x1BCA3 }, { 0x1D173, 0x1D17A }, { 0xE0001, 0xE0001 },
|
{ 0x1BCA0, 0x1BCA3 }, { 0x1D173, 0x1D17A }, { 0xE0001, 0xE0001 },
|
||||||
{ 0xE0020, 0xE007F }
|
{ 0xE0020, 0xE007F }
|
||||||
};
|
};
|
||||||
|
@ -267,7 +274,7 @@ int mk_wcwidth(wchar_t ucs)
|
||||||
{ 0x0D4D, 0x0D4D }, { 0x0D62, 0x0D63 }, { 0x0D81, 0x0D81 },
|
{ 0x0D4D, 0x0D4D }, { 0x0D62, 0x0D63 }, { 0x0D81, 0x0D81 },
|
||||||
{ 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 },
|
{ 0x0DCA, 0x0DCA }, { 0x0DD2, 0x0DD4 }, { 0x0DD6, 0x0DD6 },
|
||||||
{ 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E },
|
{ 0x0E31, 0x0E31 }, { 0x0E34, 0x0E3A }, { 0x0E47, 0x0E4E },
|
||||||
{ 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EBC }, { 0x0EC8, 0x0ECD },
|
{ 0x0EB1, 0x0EB1 }, { 0x0EB4, 0x0EBC }, { 0x0EC8, 0x0ECE },
|
||||||
{ 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, { 0x0F37, 0x0F37 },
|
{ 0x0F18, 0x0F19 }, { 0x0F35, 0x0F35 }, { 0x0F37, 0x0F37 },
|
||||||
{ 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, { 0x0F80, 0x0F84 },
|
{ 0x0F39, 0x0F39 }, { 0x0F71, 0x0F7E }, { 0x0F80, 0x0F84 },
|
||||||
{ 0x0F86, 0x0F87 }, { 0x0F8D, 0x0F97 }, { 0x0F99, 0x0FBC },
|
{ 0x0F86, 0x0F87 }, { 0x0F8D, 0x0F97 }, { 0x0F99, 0x0FBC },
|
||||||
|
@ -311,44 +318,48 @@ int mk_wcwidth(wchar_t ucs)
|
||||||
{ 0x102E0, 0x102E0 }, { 0x10376, 0x1037A }, { 0x10A01, 0x10A03 },
|
{ 0x102E0, 0x102E0 }, { 0x10376, 0x1037A }, { 0x10A01, 0x10A03 },
|
||||||
{ 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F }, { 0x10A38, 0x10A3A },
|
{ 0x10A05, 0x10A06 }, { 0x10A0C, 0x10A0F }, { 0x10A38, 0x10A3A },
|
||||||
{ 0x10A3F, 0x10A3F }, { 0x10AE5, 0x10AE6 }, { 0x10D24, 0x10D27 },
|
{ 0x10A3F, 0x10A3F }, { 0x10AE5, 0x10AE6 }, { 0x10D24, 0x10D27 },
|
||||||
{ 0x10EAB, 0x10EAC }, { 0x10F46, 0x10F50 }, { 0x10F82, 0x10F85 },
|
{ 0x10EAB, 0x10EAC }, { 0x10EFD, 0x10EFF }, { 0x10F46, 0x10F50 },
|
||||||
{ 0x11001, 0x11001 }, { 0x11038, 0x11046 }, { 0x11070, 0x11070 },
|
{ 0x10F82, 0x10F85 }, { 0x11001, 0x11001 }, { 0x11038, 0x11046 },
|
||||||
{ 0x11073, 0x11074 }, { 0x1107F, 0x11081 }, { 0x110B3, 0x110B6 },
|
{ 0x11070, 0x11070 }, { 0x11073, 0x11074 }, { 0x1107F, 0x11081 },
|
||||||
{ 0x110B9, 0x110BA }, { 0x110C2, 0x110C2 }, { 0x11100, 0x11102 },
|
{ 0x110B3, 0x110B6 }, { 0x110B9, 0x110BA }, { 0x110C2, 0x110C2 },
|
||||||
{ 0x11127, 0x1112B }, { 0x1112D, 0x11134 }, { 0x11173, 0x11173 },
|
{ 0x11100, 0x11102 }, { 0x11127, 0x1112B }, { 0x1112D, 0x11134 },
|
||||||
{ 0x11180, 0x11181 }, { 0x111B6, 0x111BE }, { 0x111C9, 0x111CC },
|
{ 0x11173, 0x11173 }, { 0x11180, 0x11181 }, { 0x111B6, 0x111BE },
|
||||||
{ 0x111CF, 0x111CF }, { 0x1122F, 0x11231 }, { 0x11234, 0x11234 },
|
{ 0x111C9, 0x111CC }, { 0x111CF, 0x111CF }, { 0x1122F, 0x11231 },
|
||||||
{ 0x11236, 0x11237 }, { 0x1123E, 0x1123E }, { 0x112DF, 0x112DF },
|
{ 0x11234, 0x11234 }, { 0x11236, 0x11237 }, { 0x1123E, 0x1123E },
|
||||||
{ 0x112E3, 0x112EA }, { 0x11300, 0x11301 }, { 0x1133B, 0x1133C },
|
{ 0x11241, 0x11241 }, { 0x112DF, 0x112DF }, { 0x112E3, 0x112EA },
|
||||||
{ 0x11340, 0x11340 }, { 0x11366, 0x1136C }, { 0x11370, 0x11374 },
|
{ 0x11300, 0x11301 }, { 0x1133B, 0x1133C }, { 0x11340, 0x11340 },
|
||||||
{ 0x11438, 0x1143F }, { 0x11442, 0x11444 }, { 0x11446, 0x11446 },
|
{ 0x11366, 0x1136C }, { 0x11370, 0x11374 }, { 0x11438, 0x1143F },
|
||||||
{ 0x1145E, 0x1145E }, { 0x114B3, 0x114B8 }, { 0x114BA, 0x114BA },
|
{ 0x11442, 0x11444 }, { 0x11446, 0x11446 }, { 0x1145E, 0x1145E },
|
||||||
{ 0x114BF, 0x114C0 }, { 0x114C2, 0x114C3 }, { 0x115B2, 0x115B5 },
|
{ 0x114B3, 0x114B8 }, { 0x114BA, 0x114BA }, { 0x114BF, 0x114C0 },
|
||||||
{ 0x115BC, 0x115BD }, { 0x115BF, 0x115C0 }, { 0x115DC, 0x115DD },
|
{ 0x114C2, 0x114C3 }, { 0x115B2, 0x115B5 }, { 0x115BC, 0x115BD },
|
||||||
{ 0x11633, 0x1163A }, { 0x1163D, 0x1163D }, { 0x1163F, 0x11640 },
|
{ 0x115BF, 0x115C0 }, { 0x115DC, 0x115DD }, { 0x11633, 0x1163A },
|
||||||
{ 0x116AB, 0x116AB }, { 0x116AD, 0x116AD }, { 0x116B0, 0x116B5 },
|
{ 0x1163D, 0x1163D }, { 0x1163F, 0x11640 }, { 0x116AB, 0x116AB },
|
||||||
{ 0x116B7, 0x116B7 }, { 0x1171D, 0x1171F }, { 0x11722, 0x11725 },
|
{ 0x116AD, 0x116AD }, { 0x116B0, 0x116B5 }, { 0x116B7, 0x116B7 },
|
||||||
{ 0x11727, 0x1172B }, { 0x1182F, 0x11837 }, { 0x11839, 0x1183A },
|
{ 0x1171D, 0x1171F }, { 0x11722, 0x11725 }, { 0x11727, 0x1172B },
|
||||||
{ 0x1193B, 0x1193C }, { 0x1193E, 0x1193E }, { 0x11943, 0x11943 },
|
{ 0x1182F, 0x11837 }, { 0x11839, 0x1183A }, { 0x1193B, 0x1193C },
|
||||||
{ 0x119D4, 0x119D7 }, { 0x119DA, 0x119DB }, { 0x119E0, 0x119E0 },
|
{ 0x1193E, 0x1193E }, { 0x11943, 0x11943 }, { 0x119D4, 0x119D7 },
|
||||||
{ 0x11A01, 0x11A0A }, { 0x11A33, 0x11A38 }, { 0x11A3B, 0x11A3E },
|
{ 0x119DA, 0x119DB }, { 0x119E0, 0x119E0 }, { 0x11A01, 0x11A0A },
|
||||||
{ 0x11A47, 0x11A47 }, { 0x11A51, 0x11A56 }, { 0x11A59, 0x11A5B },
|
{ 0x11A33, 0x11A38 }, { 0x11A3B, 0x11A3E }, { 0x11A47, 0x11A47 },
|
||||||
{ 0x11A8A, 0x11A96 }, { 0x11A98, 0x11A99 }, { 0x11C30, 0x11C36 },
|
{ 0x11A51, 0x11A56 }, { 0x11A59, 0x11A5B }, { 0x11A8A, 0x11A96 },
|
||||||
{ 0x11C38, 0x11C3D }, { 0x11C3F, 0x11C3F }, { 0x11C92, 0x11CA7 },
|
{ 0x11A98, 0x11A99 }, { 0x11C30, 0x11C36 }, { 0x11C38, 0x11C3D },
|
||||||
{ 0x11CAA, 0x11CB0 }, { 0x11CB2, 0x11CB3 }, { 0x11CB5, 0x11CB6 },
|
{ 0x11C3F, 0x11C3F }, { 0x11C92, 0x11CA7 }, { 0x11CAA, 0x11CB0 },
|
||||||
{ 0x11D31, 0x11D36 }, { 0x11D3A, 0x11D3A }, { 0x11D3C, 0x11D3D },
|
{ 0x11CB2, 0x11CB3 }, { 0x11CB5, 0x11CB6 }, { 0x11D31, 0x11D36 },
|
||||||
{ 0x11D3F, 0x11D45 }, { 0x11D47, 0x11D47 }, { 0x11D90, 0x11D91 },
|
{ 0x11D3A, 0x11D3A }, { 0x11D3C, 0x11D3D }, { 0x11D3F, 0x11D45 },
|
||||||
{ 0x11D95, 0x11D95 }, { 0x11D97, 0x11D97 }, { 0x11EF3, 0x11EF4 },
|
{ 0x11D47, 0x11D47 }, { 0x11D90, 0x11D91 }, { 0x11D95, 0x11D95 },
|
||||||
{ 0x16AF0, 0x16AF4 }, { 0x16B30, 0x16B36 }, { 0x16F4F, 0x16F4F },
|
{ 0x11D97, 0x11D97 }, { 0x11EF3, 0x11EF4 }, { 0x11F00, 0x11F01 },
|
||||||
{ 0x16F8F, 0x16F92 }, { 0x16FE4, 0x16FE4 }, { 0x1BC9D, 0x1BC9E },
|
{ 0x11F36, 0x11F3A }, { 0x11F40, 0x11F40 }, { 0x11F42, 0x11F42 },
|
||||||
{ 0x1CF00, 0x1CF2D }, { 0x1CF30, 0x1CF46 }, { 0x1D167, 0x1D169 },
|
{ 0x13440, 0x13440 }, { 0x13447, 0x13455 }, { 0x16AF0, 0x16AF4 },
|
||||||
{ 0x1D17B, 0x1D182 }, { 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD },
|
{ 0x16B30, 0x16B36 }, { 0x16F4F, 0x16F4F }, { 0x16F8F, 0x16F92 },
|
||||||
{ 0x1D242, 0x1D244 }, { 0x1DA00, 0x1DA36 }, { 0x1DA3B, 0x1DA6C },
|
{ 0x16FE4, 0x16FE4 }, { 0x1BC9D, 0x1BC9E }, { 0x1CF00, 0x1CF2D },
|
||||||
{ 0x1DA75, 0x1DA75 }, { 0x1DA84, 0x1DA84 }, { 0x1DA9B, 0x1DA9F },
|
{ 0x1CF30, 0x1CF46 }, { 0x1D167, 0x1D169 }, { 0x1D17B, 0x1D182 },
|
||||||
{ 0x1DAA1, 0x1DAAF }, { 0x1E000, 0x1E006 }, { 0x1E008, 0x1E018 },
|
{ 0x1D185, 0x1D18B }, { 0x1D1AA, 0x1D1AD }, { 0x1D242, 0x1D244 },
|
||||||
{ 0x1E01B, 0x1E021 }, { 0x1E023, 0x1E024 }, { 0x1E026, 0x1E02A },
|
{ 0x1DA00, 0x1DA36 }, { 0x1DA3B, 0x1DA6C }, { 0x1DA75, 0x1DA75 },
|
||||||
|
{ 0x1DA84, 0x1DA84 }, { 0x1DA9B, 0x1DA9F }, { 0x1DAA1, 0x1DAAF },
|
||||||
|
{ 0x1E000, 0x1E006 }, { 0x1E008, 0x1E018 }, { 0x1E01B, 0x1E021 },
|
||||||
|
{ 0x1E023, 0x1E024 }, { 0x1E026, 0x1E02A }, { 0x1E08F, 0x1E08F },
|
||||||
{ 0x1E130, 0x1E136 }, { 0x1E2AE, 0x1E2AE }, { 0x1E2EC, 0x1E2EF },
|
{ 0x1E130, 0x1E136 }, { 0x1E2AE, 0x1E2AE }, { 0x1E2EC, 0x1E2EF },
|
||||||
{ 0x1E8D0, 0x1E8D6 }, { 0x1E944, 0x1E94A }, { 0xE0100, 0xE01EF }
|
{ 0x1E4EC, 0x1E4EF }, { 0x1E8D0, 0x1E8D6 }, { 0x1E944, 0x1E94A },
|
||||||
|
{ 0xE0100, 0xE01EF }
|
||||||
};
|
};
|
||||||
/* *INDENT-ON* */
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
@ -399,7 +410,7 @@ int mk_wcwidth(wchar_t ucs)
|
||||||
{ 0x0CA9, 0x0CA9 }, { 0x0CB4, 0x0CB4 }, { 0x0CBA, 0x0CBB },
|
{ 0x0CA9, 0x0CA9 }, { 0x0CB4, 0x0CB4 }, { 0x0CBA, 0x0CBB },
|
||||||
{ 0x0CC5, 0x0CC5 }, { 0x0CC9, 0x0CC9 }, { 0x0CCE, 0x0CD4 },
|
{ 0x0CC5, 0x0CC5 }, { 0x0CC9, 0x0CC9 }, { 0x0CCE, 0x0CD4 },
|
||||||
{ 0x0CD7, 0x0CDC }, { 0x0CDF, 0x0CDF }, { 0x0CE4, 0x0CE5 },
|
{ 0x0CD7, 0x0CDC }, { 0x0CDF, 0x0CDF }, { 0x0CE4, 0x0CE5 },
|
||||||
{ 0x0CF0, 0x0CF0 }, { 0x0CF3, 0x0CFF }, { 0x0D0D, 0x0D0D },
|
{ 0x0CF0, 0x0CF0 }, { 0x0CF4, 0x0CFF }, { 0x0D0D, 0x0D0D },
|
||||||
{ 0x0D11, 0x0D11 }, { 0x0D45, 0x0D45 }, { 0x0D49, 0x0D49 },
|
{ 0x0D11, 0x0D11 }, { 0x0D45, 0x0D45 }, { 0x0D49, 0x0D49 },
|
||||||
{ 0x0D50, 0x0D53 }, { 0x0D64, 0x0D65 }, { 0x0D80, 0x0D80 },
|
{ 0x0D50, 0x0D53 }, { 0x0D64, 0x0D65 }, { 0x0D80, 0x0D80 },
|
||||||
{ 0x0D84, 0x0D84 }, { 0x0D97, 0x0D99 }, { 0x0DB2, 0x0DB2 },
|
{ 0x0D84, 0x0D84 }, { 0x0D97, 0x0D99 }, { 0x0DB2, 0x0DB2 },
|
||||||
|
@ -409,7 +420,7 @@ int mk_wcwidth(wchar_t ucs)
|
||||||
{ 0x0E3B, 0x0E3E }, { 0x0E5C, 0x0E80 }, { 0x0E83, 0x0E83 },
|
{ 0x0E3B, 0x0E3E }, { 0x0E5C, 0x0E80 }, { 0x0E83, 0x0E83 },
|
||||||
{ 0x0E85, 0x0E85 }, { 0x0E8B, 0x0E8B }, { 0x0EA4, 0x0EA4 },
|
{ 0x0E85, 0x0E85 }, { 0x0E8B, 0x0E8B }, { 0x0EA4, 0x0EA4 },
|
||||||
{ 0x0EA6, 0x0EA6 }, { 0x0EBE, 0x0EBF }, { 0x0EC5, 0x0EC5 },
|
{ 0x0EA6, 0x0EA6 }, { 0x0EBE, 0x0EBF }, { 0x0EC5, 0x0EC5 },
|
||||||
{ 0x0EC7, 0x0EC7 }, { 0x0ECE, 0x0ECF }, { 0x0EDA, 0x0EDB },
|
{ 0x0EC7, 0x0EC7 }, { 0x0ECF, 0x0ECF }, { 0x0EDA, 0x0EDB },
|
||||||
{ 0x0EE0, 0x0EFF }, { 0x0F48, 0x0F48 }, { 0x0F6D, 0x0F70 },
|
{ 0x0EE0, 0x0EFF }, { 0x0F48, 0x0F48 }, { 0x0F6D, 0x0F70 },
|
||||||
{ 0x0F98, 0x0F98 }, { 0x0FBD, 0x0FBD }, { 0x0FCD, 0x0FCD },
|
{ 0x0F98, 0x0F98 }, { 0x0FBD, 0x0FBD }, { 0x0FCD, 0x0FCD },
|
||||||
{ 0x0FDB, 0x0FFF }, { 0x10C6, 0x10C6 }, { 0x10C8, 0x10CC },
|
{ 0x0FDB, 0x0FFF }, { 0x10C6, 0x10C6 }, { 0x10C8, 0x10CC },
|
||||||
|
@ -449,117 +460,120 @@ int mk_wcwidth(wchar_t ucs)
|
||||||
{ 0x2DBF, 0x2DBF }, { 0x2DC7, 0x2DC7 }, { 0x2DCF, 0x2DCF },
|
{ 0x2DBF, 0x2DBF }, { 0x2DC7, 0x2DC7 }, { 0x2DCF, 0x2DCF },
|
||||||
{ 0x2DD7, 0x2DD7 }, { 0x2DDF, 0x2DDF }, { 0x2E5E, 0x2E7F },
|
{ 0x2DD7, 0x2DD7 }, { 0x2DDF, 0x2DDF }, { 0x2E5E, 0x2E7F },
|
||||||
{ 0x2E9A, 0x2E9A }, { 0x2EF4, 0x2EFF }, { 0x2FD6, 0x2FEF },
|
{ 0x2E9A, 0x2E9A }, { 0x2EF4, 0x2EFF }, { 0x2FD6, 0x2FEF },
|
||||||
{ 0x2FFC, 0x2FFF }, { 0x3040, 0x3040 }, { 0x3097, 0x3098 },
|
{ 0x3040, 0x3040 }, { 0x3097, 0x3098 }, { 0x3100, 0x3104 },
|
||||||
{ 0x3100, 0x3104 }, { 0x3130, 0x3130 }, { 0x318F, 0x318F },
|
{ 0x3130, 0x3130 }, { 0x318F, 0x318F }, { 0x31E4, 0x31EE },
|
||||||
{ 0x31E4, 0x31EF }, { 0x321F, 0x321F }, { 0x4DB6, 0x4DBF },
|
{ 0x321F, 0x321F }, { 0x4DB6, 0x4DBF }, { 0x9FD6, 0x9FFF },
|
||||||
{ 0x9FD6, 0x9FFF }, { 0xA48D, 0xA48F }, { 0xA4C7, 0xA4CF },
|
{ 0xA48D, 0xA48F }, { 0xA4C7, 0xA4CF }, { 0xA62C, 0xA63F },
|
||||||
{ 0xA62C, 0xA63F }, { 0xA6F8, 0xA6FF }, { 0xA7CB, 0xA7CF },
|
{ 0xA6F8, 0xA6FF }, { 0xA7CB, 0xA7CF }, { 0xA7D2, 0xA7D2 },
|
||||||
{ 0xA7D2, 0xA7D2 }, { 0xA7D4, 0xA7D4 }, { 0xA7DA, 0xA7F1 },
|
{ 0xA7D4, 0xA7D4 }, { 0xA7DA, 0xA7F1 }, { 0xA82D, 0xA82F },
|
||||||
{ 0xA82D, 0xA82F }, { 0xA83A, 0xA83F }, { 0xA878, 0xA87F },
|
{ 0xA83A, 0xA83F }, { 0xA878, 0xA87F }, { 0xA8C6, 0xA8CD },
|
||||||
{ 0xA8C6, 0xA8CD }, { 0xA8DA, 0xA8DF }, { 0xA954, 0xA95E },
|
{ 0xA8DA, 0xA8DF }, { 0xA954, 0xA95E }, { 0xA97D, 0xA97F },
|
||||||
{ 0xA97D, 0xA97F }, { 0xA9CE, 0xA9CE }, { 0xA9DA, 0xA9DD },
|
{ 0xA9CE, 0xA9CE }, { 0xA9DA, 0xA9DD }, { 0xA9FF, 0xA9FF },
|
||||||
{ 0xA9FF, 0xA9FF }, { 0xAA37, 0xAA3F }, { 0xAA4E, 0xAA4F },
|
{ 0xAA37, 0xAA3F }, { 0xAA4E, 0xAA4F }, { 0xAA5A, 0xAA5B },
|
||||||
{ 0xAA5A, 0xAA5B }, { 0xAAC3, 0xAADA }, { 0xAAF7, 0xAB00 },
|
{ 0xAAC3, 0xAADA }, { 0xAAF7, 0xAB00 }, { 0xAB07, 0xAB08 },
|
||||||
{ 0xAB07, 0xAB08 }, { 0xAB0F, 0xAB10 }, { 0xAB17, 0xAB1F },
|
{ 0xAB0F, 0xAB10 }, { 0xAB17, 0xAB1F }, { 0xAB27, 0xAB27 },
|
||||||
{ 0xAB27, 0xAB27 }, { 0xAB2F, 0xAB2F }, { 0xAB6C, 0xAB6F },
|
{ 0xAB2F, 0xAB2F }, { 0xAB6C, 0xAB6F }, { 0xABEE, 0xABEF },
|
||||||
{ 0xABEE, 0xABEF }, { 0xABFA, 0xABFF }, { 0xD7A4, 0xD7AF },
|
{ 0xABFA, 0xABFF }, { 0xD7A4, 0xD7AF }, { 0xD7C7, 0xD7CA },
|
||||||
{ 0xD7C7, 0xD7CA }, { 0xD7FC, 0xDFFF }, { 0xFA6E, 0xFA6F },
|
{ 0xD7FC, 0xDFFF }, { 0xFA6E, 0xFA6F }, { 0xFADA, 0xFAFF },
|
||||||
{ 0xFADA, 0xFAFF }, { 0xFB07, 0xFB12 }, { 0xFB18, 0xFB1C },
|
{ 0xFB07, 0xFB12 }, { 0xFB18, 0xFB1C }, { 0xFB37, 0xFB37 },
|
||||||
{ 0xFB37, 0xFB37 }, { 0xFB3D, 0xFB3D }, { 0xFB3F, 0xFB3F },
|
{ 0xFB3D, 0xFB3D }, { 0xFB3F, 0xFB3F }, { 0xFB42, 0xFB42 },
|
||||||
{ 0xFB42, 0xFB42 }, { 0xFB45, 0xFB45 }, { 0xFBC3, 0xFBD2 },
|
{ 0xFB45, 0xFB45 }, { 0xFBC3, 0xFBD2 }, { 0xFD90, 0xFD91 },
|
||||||
{ 0xFD90, 0xFD91 }, { 0xFDC8, 0xFDCE }, { 0xFDD0, 0xFDEF },
|
{ 0xFDC8, 0xFDCE }, { 0xFDD0, 0xFDEF }, { 0xFE1A, 0xFE1F },
|
||||||
{ 0xFE1A, 0xFE1F }, { 0xFE53, 0xFE53 }, { 0xFE67, 0xFE67 },
|
{ 0xFE53, 0xFE53 }, { 0xFE67, 0xFE67 }, { 0xFE6C, 0xFE6F },
|
||||||
{ 0xFE6C, 0xFE6F }, { 0xFE75, 0xFE75 }, { 0xFEFD, 0xFEFE },
|
{ 0xFE75, 0xFE75 }, { 0xFEFD, 0xFEFE }, { 0xFF00, 0xFF00 },
|
||||||
{ 0xFF00, 0xFF00 }, { 0xFFBF, 0xFFC1 }, { 0xFFC8, 0xFFC9 },
|
{ 0xFFBF, 0xFFC1 }, { 0xFFC8, 0xFFC9 }, { 0xFFD0, 0xFFD1 },
|
||||||
{ 0xFFD0, 0xFFD1 }, { 0xFFD8, 0xFFD9 }, { 0xFFDD, 0xFFDF },
|
{ 0xFFD8, 0xFFD9 }, { 0xFFDD, 0xFFDF }, { 0xFFE7, 0xFFE7 },
|
||||||
{ 0xFFE7, 0xFFE7 }, { 0xFFEF, 0xFFF8 }, { 0xFFFE, 0xFFFF },
|
{ 0xFFEF, 0xFFF8 }, { 0xFFFE, 0xFFFF }, { 0x1000C, 0x1000C },
|
||||||
{ 0x1000C, 0x1000C }, { 0x10027, 0x10027 }, { 0x1003B, 0x1003B },
|
{ 0x10027, 0x10027 }, { 0x1003B, 0x1003B }, { 0x1003E, 0x1003E },
|
||||||
{ 0x1003E, 0x1003E }, { 0x1004E, 0x1004F }, { 0x1005E, 0x1007F },
|
{ 0x1004E, 0x1004F }, { 0x1005E, 0x1007F }, { 0x100FB, 0x100FF },
|
||||||
{ 0x100FB, 0x100FF }, { 0x10103, 0x10106 }, { 0x10134, 0x10136 },
|
{ 0x10103, 0x10106 }, { 0x10134, 0x10136 }, { 0x1018F, 0x1018F },
|
||||||
{ 0x1018F, 0x1018F }, { 0x1019D, 0x1019F }, { 0x101A1, 0x101CF },
|
{ 0x1019D, 0x1019F }, { 0x101A1, 0x101CF }, { 0x101FE, 0x1027F },
|
||||||
{ 0x101FE, 0x1027F }, { 0x1029D, 0x1029F }, { 0x102D1, 0x102DF },
|
{ 0x1029D, 0x1029F }, { 0x102D1, 0x102DF }, { 0x102FC, 0x102FF },
|
||||||
{ 0x102FC, 0x102FF }, { 0x10324, 0x1032C }, { 0x1034B, 0x1034F },
|
{ 0x10324, 0x1032C }, { 0x1034B, 0x1034F }, { 0x1037B, 0x1037F },
|
||||||
{ 0x1037B, 0x1037F }, { 0x1039E, 0x1039E }, { 0x103C4, 0x103C7 },
|
{ 0x1039E, 0x1039E }, { 0x103C4, 0x103C7 }, { 0x103D6, 0x103FF },
|
||||||
{ 0x103D6, 0x103FF }, { 0x1049E, 0x1049F }, { 0x104AA, 0x104AF },
|
{ 0x1049E, 0x1049F }, { 0x104AA, 0x104AF }, { 0x104D4, 0x104D7 },
|
||||||
{ 0x104D4, 0x104D7 }, { 0x104FC, 0x104FF }, { 0x10528, 0x1052F },
|
{ 0x104FC, 0x104FF }, { 0x10528, 0x1052F }, { 0x10564, 0x1056E },
|
||||||
{ 0x10564, 0x1056E }, { 0x1057B, 0x1057B }, { 0x1058B, 0x1058B },
|
{ 0x1057B, 0x1057B }, { 0x1058B, 0x1058B }, { 0x10593, 0x10593 },
|
||||||
{ 0x10593, 0x10593 }, { 0x10596, 0x10596 }, { 0x105A2, 0x105A2 },
|
{ 0x10596, 0x10596 }, { 0x105A2, 0x105A2 }, { 0x105B2, 0x105B2 },
|
||||||
{ 0x105B2, 0x105B2 }, { 0x105BA, 0x105BA }, { 0x105BD, 0x105FF },
|
{ 0x105BA, 0x105BA }, { 0x105BD, 0x105FF }, { 0x10737, 0x1073F },
|
||||||
{ 0x10737, 0x1073F }, { 0x10756, 0x1075F }, { 0x10768, 0x1077F },
|
{ 0x10756, 0x1075F }, { 0x10768, 0x1077F }, { 0x10786, 0x10786 },
|
||||||
{ 0x10786, 0x10786 }, { 0x107B1, 0x107B1 }, { 0x107BB, 0x107FF },
|
{ 0x107B1, 0x107B1 }, { 0x107BB, 0x107FF }, { 0x10806, 0x10807 },
|
||||||
{ 0x10806, 0x10807 }, { 0x10809, 0x10809 }, { 0x10836, 0x10836 },
|
{ 0x10809, 0x10809 }, { 0x10836, 0x10836 }, { 0x10839, 0x1083B },
|
||||||
{ 0x10839, 0x1083B }, { 0x1083D, 0x1083E }, { 0x10856, 0x10856 },
|
{ 0x1083D, 0x1083E }, { 0x10856, 0x10856 }, { 0x1089F, 0x108A6 },
|
||||||
{ 0x1089F, 0x108A6 }, { 0x108B0, 0x108DF }, { 0x108F3, 0x108F3 },
|
{ 0x108B0, 0x108DF }, { 0x108F3, 0x108F3 }, { 0x108F6, 0x108FA },
|
||||||
{ 0x108F6, 0x108FA }, { 0x1091C, 0x1091E }, { 0x1093A, 0x1093E },
|
{ 0x1091C, 0x1091E }, { 0x1093A, 0x1093E }, { 0x10940, 0x1097F },
|
||||||
{ 0x10940, 0x1097F }, { 0x109B8, 0x109BB }, { 0x109D0, 0x109D1 },
|
{ 0x109B8, 0x109BB }, { 0x109D0, 0x109D1 }, { 0x10A04, 0x10A04 },
|
||||||
{ 0x10A04, 0x10A04 }, { 0x10A07, 0x10A0B }, { 0x10A14, 0x10A14 },
|
{ 0x10A07, 0x10A0B }, { 0x10A14, 0x10A14 }, { 0x10A18, 0x10A18 },
|
||||||
{ 0x10A18, 0x10A18 }, { 0x10A36, 0x10A37 }, { 0x10A3B, 0x10A3E },
|
{ 0x10A36, 0x10A37 }, { 0x10A3B, 0x10A3E }, { 0x10A49, 0x10A4F },
|
||||||
{ 0x10A49, 0x10A4F }, { 0x10A59, 0x10A5F }, { 0x10AA0, 0x10ABF },
|
{ 0x10A59, 0x10A5F }, { 0x10AA0, 0x10ABF }, { 0x10AE7, 0x10AEA },
|
||||||
{ 0x10AE7, 0x10AEA }, { 0x10AF7, 0x10AFF }, { 0x10B36, 0x10B38 },
|
{ 0x10AF7, 0x10AFF }, { 0x10B36, 0x10B38 }, { 0x10B56, 0x10B57 },
|
||||||
{ 0x10B56, 0x10B57 }, { 0x10B73, 0x10B77 }, { 0x10B92, 0x10B98 },
|
{ 0x10B73, 0x10B77 }, { 0x10B92, 0x10B98 }, { 0x10B9D, 0x10BA8 },
|
||||||
{ 0x10B9D, 0x10BA8 }, { 0x10BB0, 0x10BFF }, { 0x10C49, 0x10C7F },
|
{ 0x10BB0, 0x10BFF }, { 0x10C49, 0x10C7F }, { 0x10CB3, 0x10CBF },
|
||||||
{ 0x10CB3, 0x10CBF }, { 0x10CF3, 0x10CF9 }, { 0x10D28, 0x10D2F },
|
{ 0x10CF3, 0x10CF9 }, { 0x10D28, 0x10D2F }, { 0x10D3A, 0x10E5F },
|
||||||
{ 0x10D3A, 0x10E5F }, { 0x10E7F, 0x10E7F }, { 0x10EAA, 0x10EAA },
|
{ 0x10E7F, 0x10E7F }, { 0x10EAA, 0x10EAA }, { 0x10EAE, 0x10EAF },
|
||||||
{ 0x10EAE, 0x10EAF }, { 0x10EB2, 0x10EFF }, { 0x10F28, 0x10F2F },
|
{ 0x10EB2, 0x10EFC }, { 0x10F28, 0x10F2F }, { 0x10F5A, 0x10F6F },
|
||||||
{ 0x10F5A, 0x10F6F }, { 0x10F8A, 0x10FAF }, { 0x10FCC, 0x10FDF },
|
{ 0x10F8A, 0x10FAF }, { 0x10FCC, 0x10FDF }, { 0x10FF7, 0x10FFF },
|
||||||
{ 0x10FF7, 0x10FFF }, { 0x1104E, 0x11051 }, { 0x11076, 0x1107E },
|
{ 0x1104E, 0x11051 }, { 0x11076, 0x1107E }, { 0x110C3, 0x110CC },
|
||||||
{ 0x110C3, 0x110CC }, { 0x110CE, 0x110CF }, { 0x110E9, 0x110EF },
|
{ 0x110CE, 0x110CF }, { 0x110E9, 0x110EF }, { 0x110FA, 0x110FF },
|
||||||
{ 0x110FA, 0x110FF }, { 0x11135, 0x11135 }, { 0x11148, 0x1114F },
|
{ 0x11135, 0x11135 }, { 0x11148, 0x1114F }, { 0x11177, 0x1117F },
|
||||||
{ 0x11177, 0x1117F }, { 0x111E0, 0x111E0 }, { 0x111F5, 0x111FF },
|
{ 0x111E0, 0x111E0 }, { 0x111F5, 0x111FF }, { 0x11212, 0x11212 },
|
||||||
{ 0x11212, 0x11212 }, { 0x1123F, 0x1127F }, { 0x11287, 0x11287 },
|
{ 0x11242, 0x1127F }, { 0x11287, 0x11287 }, { 0x11289, 0x11289 },
|
||||||
{ 0x11289, 0x11289 }, { 0x1128E, 0x1128E }, { 0x1129E, 0x1129E },
|
{ 0x1128E, 0x1128E }, { 0x1129E, 0x1129E }, { 0x112AA, 0x112AF },
|
||||||
{ 0x112AA, 0x112AF }, { 0x112EB, 0x112EF }, { 0x112FA, 0x112FF },
|
{ 0x112EB, 0x112EF }, { 0x112FA, 0x112FF }, { 0x11304, 0x11304 },
|
||||||
{ 0x11304, 0x11304 }, { 0x1130D, 0x1130E }, { 0x11311, 0x11312 },
|
{ 0x1130D, 0x1130E }, { 0x11311, 0x11312 }, { 0x11329, 0x11329 },
|
||||||
{ 0x11329, 0x11329 }, { 0x11331, 0x11331 }, { 0x11334, 0x11334 },
|
{ 0x11331, 0x11331 }, { 0x11334, 0x11334 }, { 0x1133A, 0x1133A },
|
||||||
{ 0x1133A, 0x1133A }, { 0x11345, 0x11346 }, { 0x11349, 0x1134A },
|
{ 0x11345, 0x11346 }, { 0x11349, 0x1134A }, { 0x1134E, 0x1134F },
|
||||||
{ 0x1134E, 0x1134F }, { 0x11351, 0x11356 }, { 0x11358, 0x1135C },
|
{ 0x11351, 0x11356 }, { 0x11358, 0x1135C }, { 0x11364, 0x11365 },
|
||||||
{ 0x11364, 0x11365 }, { 0x1136D, 0x1136F }, { 0x11375, 0x113FF },
|
{ 0x1136D, 0x1136F }, { 0x11375, 0x113FF }, { 0x1145C, 0x1145C },
|
||||||
{ 0x1145C, 0x1145C }, { 0x11462, 0x1147F }, { 0x114C8, 0x114CF },
|
{ 0x11462, 0x1147F }, { 0x114C8, 0x114CF }, { 0x114DA, 0x1157F },
|
||||||
{ 0x114DA, 0x1157F }, { 0x115B6, 0x115B7 }, { 0x115DE, 0x115FF },
|
{ 0x115B6, 0x115B7 }, { 0x115DE, 0x115FF }, { 0x11645, 0x1164F },
|
||||||
{ 0x11645, 0x1164F }, { 0x1165A, 0x1165F }, { 0x1166D, 0x1167F },
|
{ 0x1165A, 0x1165F }, { 0x1166D, 0x1167F }, { 0x116BA, 0x116BF },
|
||||||
{ 0x116BA, 0x116BF }, { 0x116CA, 0x116FF }, { 0x1171B, 0x1171C },
|
{ 0x116CA, 0x116FF }, { 0x1171B, 0x1171C }, { 0x1172C, 0x1172F },
|
||||||
{ 0x1172C, 0x1172F }, { 0x11747, 0x117FF }, { 0x1183C, 0x1189F },
|
{ 0x11747, 0x117FF }, { 0x1183C, 0x1189F }, { 0x118F3, 0x118FE },
|
||||||
{ 0x118F3, 0x118FE }, { 0x11907, 0x11908 }, { 0x1190A, 0x1190B },
|
{ 0x11907, 0x11908 }, { 0x1190A, 0x1190B }, { 0x11914, 0x11914 },
|
||||||
{ 0x11914, 0x11914 }, { 0x11917, 0x11917 }, { 0x11936, 0x11936 },
|
{ 0x11917, 0x11917 }, { 0x11936, 0x11936 }, { 0x11939, 0x1193A },
|
||||||
{ 0x11939, 0x1193A }, { 0x11947, 0x1194F }, { 0x1195A, 0x1199F },
|
{ 0x11947, 0x1194F }, { 0x1195A, 0x1199F }, { 0x119A8, 0x119A9 },
|
||||||
{ 0x119A8, 0x119A9 }, { 0x119D8, 0x119D9 }, { 0x119E5, 0x119FF },
|
{ 0x119D8, 0x119D9 }, { 0x119E5, 0x119FF }, { 0x11A48, 0x11A4F },
|
||||||
{ 0x11A48, 0x11A4F }, { 0x11AA3, 0x11AAF }, { 0x11AF9, 0x11BFF },
|
{ 0x11AA3, 0x11AAF }, { 0x11AF9, 0x11AFF }, { 0x11B0A, 0x11BFF },
|
||||||
{ 0x11C09, 0x11C09 }, { 0x11C37, 0x11C37 }, { 0x11C46, 0x11C4F },
|
{ 0x11C09, 0x11C09 }, { 0x11C37, 0x11C37 }, { 0x11C46, 0x11C4F },
|
||||||
{ 0x11C6D, 0x11C6F }, { 0x11C90, 0x11C91 }, { 0x11CA8, 0x11CA8 },
|
{ 0x11C6D, 0x11C6F }, { 0x11C90, 0x11C91 }, { 0x11CA8, 0x11CA8 },
|
||||||
{ 0x11CB7, 0x11CFF }, { 0x11D07, 0x11D07 }, { 0x11D0A, 0x11D0A },
|
{ 0x11CB7, 0x11CFF }, { 0x11D07, 0x11D07 }, { 0x11D0A, 0x11D0A },
|
||||||
{ 0x11D37, 0x11D39 }, { 0x11D3B, 0x11D3B }, { 0x11D3E, 0x11D3E },
|
{ 0x11D37, 0x11D39 }, { 0x11D3B, 0x11D3B }, { 0x11D3E, 0x11D3E },
|
||||||
{ 0x11D48, 0x11D4F }, { 0x11D5A, 0x11D5F }, { 0x11D66, 0x11D66 },
|
{ 0x11D48, 0x11D4F }, { 0x11D5A, 0x11D5F }, { 0x11D66, 0x11D66 },
|
||||||
{ 0x11D69, 0x11D69 }, { 0x11D8F, 0x11D8F }, { 0x11D92, 0x11D92 },
|
{ 0x11D69, 0x11D69 }, { 0x11D8F, 0x11D8F }, { 0x11D92, 0x11D92 },
|
||||||
{ 0x11D99, 0x11D9F }, { 0x11DAA, 0x11EDF }, { 0x11EF9, 0x11FAF },
|
{ 0x11D99, 0x11D9F }, { 0x11DAA, 0x11EDF }, { 0x11EF9, 0x11EFF },
|
||||||
|
{ 0x11F11, 0x11F11 }, { 0x11F3B, 0x11F3D }, { 0x11F5A, 0x11FAF },
|
||||||
{ 0x11FB1, 0x11FBF }, { 0x11FF2, 0x11FFE }, { 0x1239A, 0x123FF },
|
{ 0x11FB1, 0x11FBF }, { 0x11FF2, 0x11FFE }, { 0x1239A, 0x123FF },
|
||||||
{ 0x1246F, 0x1246F }, { 0x12475, 0x1247F }, { 0x12544, 0x12F8F },
|
{ 0x1246F, 0x1246F }, { 0x12475, 0x1247F }, { 0x12544, 0x12F8F },
|
||||||
{ 0x12FF3, 0x12FFF }, { 0x1342F, 0x1342F }, { 0x13439, 0x143FF },
|
{ 0x12FF3, 0x12FFF }, { 0x13456, 0x143FF }, { 0x14647, 0x167FF },
|
||||||
{ 0x14647, 0x167FF }, { 0x16A39, 0x16A3F }, { 0x16A5F, 0x16A5F },
|
{ 0x16A39, 0x16A3F }, { 0x16A5F, 0x16A5F }, { 0x16A6A, 0x16A6D },
|
||||||
{ 0x16A6A, 0x16A6D }, { 0x16ABF, 0x16ABF }, { 0x16ACA, 0x16ACF },
|
{ 0x16ABF, 0x16ABF }, { 0x16ACA, 0x16ACF }, { 0x16AEE, 0x16AEF },
|
||||||
{ 0x16AEE, 0x16AEF }, { 0x16AF6, 0x16AFF }, { 0x16B46, 0x16B4F },
|
{ 0x16AF6, 0x16AFF }, { 0x16B46, 0x16B4F }, { 0x16B5A, 0x16B5A },
|
||||||
{ 0x16B5A, 0x16B5A }, { 0x16B62, 0x16B62 }, { 0x16B78, 0x16B7C },
|
{ 0x16B62, 0x16B62 }, { 0x16B78, 0x16B7C }, { 0x16B90, 0x16E3F },
|
||||||
{ 0x16B90, 0x16E3F }, { 0x16E9B, 0x16EFF }, { 0x16F4B, 0x16F4E },
|
{ 0x16E9B, 0x16EFF }, { 0x16F4B, 0x16F4E }, { 0x16F88, 0x16F8E },
|
||||||
{ 0x16F88, 0x16F8E }, { 0x16FA0, 0x16FDF }, { 0x16FE5, 0x16FEF },
|
{ 0x16FA0, 0x16FDF }, { 0x16FE5, 0x16FEF }, { 0x16FF2, 0x187FF },
|
||||||
{ 0x16FF2, 0x187FF }, { 0x18CD6, 0x1AFEF }, { 0x1AFF4, 0x1AFF4 },
|
{ 0x18CD6, 0x1AFEF }, { 0x1AFF4, 0x1AFF4 }, { 0x1AFFC, 0x1AFFC },
|
||||||
{ 0x1AFFC, 0x1AFFC }, { 0x1AFFF, 0x1AFFF }, { 0x1B123, 0x1B14F },
|
{ 0x1AFFF, 0x1AFFF }, { 0x1B123, 0x1B131 }, { 0x1B133, 0x1B14F },
|
||||||
{ 0x1B153, 0x1B163 }, { 0x1B168, 0x1B16F }, { 0x1B2FC, 0x1BBFF },
|
{ 0x1B153, 0x1B154 }, { 0x1B156, 0x1B163 }, { 0x1B168, 0x1B16F },
|
||||||
{ 0x1BC6B, 0x1BC6F }, { 0x1BC7D, 0x1BC7F }, { 0x1BC89, 0x1BC8F },
|
{ 0x1B2FC, 0x1BBFF }, { 0x1BC6B, 0x1BC6F }, { 0x1BC7D, 0x1BC7F },
|
||||||
{ 0x1BC9A, 0x1BC9B }, { 0x1BCA4, 0x1CEFF }, { 0x1CF2E, 0x1CF2F },
|
{ 0x1BC89, 0x1BC8F }, { 0x1BC9A, 0x1BC9B }, { 0x1BCA4, 0x1CEFF },
|
||||||
{ 0x1CF47, 0x1CF4F }, { 0x1CFC4, 0x1CFFF }, { 0x1D0F6, 0x1D0FF },
|
{ 0x1CF2E, 0x1CF2F }, { 0x1CF47, 0x1CF4F }, { 0x1CFC4, 0x1CFFF },
|
||||||
{ 0x1D127, 0x1D128 }, { 0x1D1EB, 0x1D1FF }, { 0x1D246, 0x1D2DF },
|
{ 0x1D0F6, 0x1D0FF }, { 0x1D127, 0x1D128 }, { 0x1D1EB, 0x1D1FF },
|
||||||
{ 0x1D2F4, 0x1D2FF }, { 0x1D357, 0x1D35F }, { 0x1D379, 0x1D3FF },
|
{ 0x1D246, 0x1D2BF }, { 0x1D2D4, 0x1D2DF }, { 0x1D2F4, 0x1D2FF },
|
||||||
{ 0x1D455, 0x1D455 }, { 0x1D49D, 0x1D49D }, { 0x1D4A0, 0x1D4A1 },
|
{ 0x1D357, 0x1D35F }, { 0x1D379, 0x1D3FF }, { 0x1D455, 0x1D455 },
|
||||||
{ 0x1D4A3, 0x1D4A4 }, { 0x1D4A7, 0x1D4A8 }, { 0x1D4AD, 0x1D4AD },
|
{ 0x1D49D, 0x1D49D }, { 0x1D4A0, 0x1D4A1 }, { 0x1D4A3, 0x1D4A4 },
|
||||||
{ 0x1D4BA, 0x1D4BA }, { 0x1D4BC, 0x1D4BC }, { 0x1D4C4, 0x1D4C4 },
|
{ 0x1D4A7, 0x1D4A8 }, { 0x1D4AD, 0x1D4AD }, { 0x1D4BA, 0x1D4BA },
|
||||||
{ 0x1D506, 0x1D506 }, { 0x1D50B, 0x1D50C }, { 0x1D515, 0x1D515 },
|
{ 0x1D4BC, 0x1D4BC }, { 0x1D4C4, 0x1D4C4 }, { 0x1D506, 0x1D506 },
|
||||||
{ 0x1D51D, 0x1D51D }, { 0x1D53A, 0x1D53A }, { 0x1D53F, 0x1D53F },
|
{ 0x1D50B, 0x1D50C }, { 0x1D515, 0x1D515 }, { 0x1D51D, 0x1D51D },
|
||||||
{ 0x1D545, 0x1D545 }, { 0x1D547, 0x1D549 }, { 0x1D551, 0x1D551 },
|
{ 0x1D53A, 0x1D53A }, { 0x1D53F, 0x1D53F }, { 0x1D545, 0x1D545 },
|
||||||
{ 0x1D6A6, 0x1D6A7 }, { 0x1D7CC, 0x1D7CD }, { 0x1DA8C, 0x1DA9A },
|
{ 0x1D547, 0x1D549 }, { 0x1D551, 0x1D551 }, { 0x1D6A6, 0x1D6A7 },
|
||||||
{ 0x1DAA0, 0x1DAA0 }, { 0x1DAB0, 0x1DEFF }, { 0x1DF1F, 0x1DFFF },
|
{ 0x1D7CC, 0x1D7CD }, { 0x1DA8C, 0x1DA9A }, { 0x1DAA0, 0x1DAA0 },
|
||||||
|
{ 0x1DAB0, 0x1DEFF }, { 0x1DF1F, 0x1DF24 }, { 0x1DF2B, 0x1DFFF },
|
||||||
{ 0x1E007, 0x1E007 }, { 0x1E019, 0x1E01A }, { 0x1E022, 0x1E022 },
|
{ 0x1E007, 0x1E007 }, { 0x1E019, 0x1E01A }, { 0x1E022, 0x1E022 },
|
||||||
{ 0x1E025, 0x1E025 }, { 0x1E02B, 0x1E0FF }, { 0x1E12D, 0x1E12F },
|
{ 0x1E025, 0x1E025 }, { 0x1E02B, 0x1E02F }, { 0x1E06E, 0x1E08E },
|
||||||
{ 0x1E13E, 0x1E13F }, { 0x1E14A, 0x1E14D }, { 0x1E150, 0x1E28F },
|
{ 0x1E090, 0x1E0FF }, { 0x1E12D, 0x1E12F }, { 0x1E13E, 0x1E13F },
|
||||||
{ 0x1E2AF, 0x1E2BF }, { 0x1E2FA, 0x1E2FE }, { 0x1E300, 0x1E7DF },
|
{ 0x1E14A, 0x1E14D }, { 0x1E150, 0x1E28F }, { 0x1E2AF, 0x1E2BF },
|
||||||
|
{ 0x1E2FA, 0x1E2FE }, { 0x1E300, 0x1E4CF }, { 0x1E4FA, 0x1E7DF },
|
||||||
{ 0x1E7E7, 0x1E7E7 }, { 0x1E7EC, 0x1E7EC }, { 0x1E7EF, 0x1E7EF },
|
{ 0x1E7E7, 0x1E7E7 }, { 0x1E7EC, 0x1E7EC }, { 0x1E7EF, 0x1E7EF },
|
||||||
{ 0x1E7FF, 0x1E7FF }, { 0x1E8C5, 0x1E8C6 }, { 0x1E8D7, 0x1E8FF },
|
{ 0x1E7FF, 0x1E7FF }, { 0x1E8C5, 0x1E8C6 }, { 0x1E8D7, 0x1E8FF },
|
||||||
{ 0x1E94C, 0x1E94F }, { 0x1E95A, 0x1E95D }, { 0x1E960, 0x1EC70 },
|
{ 0x1E94C, 0x1E94F }, { 0x1E95A, 0x1E95D }, { 0x1E960, 0x1EC70 },
|
||||||
|
@ -579,17 +593,16 @@ int mk_wcwidth(wchar_t ucs)
|
||||||
{ 0x1F0C0, 0x1F0C0 }, { 0x1F0D0, 0x1F0D0 }, { 0x1F0F6, 0x1F0FF },
|
{ 0x1F0C0, 0x1F0C0 }, { 0x1F0D0, 0x1F0D0 }, { 0x1F0F6, 0x1F0FF },
|
||||||
{ 0x1F1AE, 0x1F1E5 }, { 0x1F203, 0x1F20F }, { 0x1F23C, 0x1F23F },
|
{ 0x1F1AE, 0x1F1E5 }, { 0x1F203, 0x1F20F }, { 0x1F23C, 0x1F23F },
|
||||||
{ 0x1F249, 0x1F24F }, { 0x1F252, 0x1F25F }, { 0x1F266, 0x1F2FF },
|
{ 0x1F249, 0x1F24F }, { 0x1F252, 0x1F25F }, { 0x1F266, 0x1F2FF },
|
||||||
{ 0x1F6D8, 0x1F6DC }, { 0x1F6ED, 0x1F6EF }, { 0x1F6FD, 0x1F6FF },
|
{ 0x1F6D8, 0x1F6DB }, { 0x1F6ED, 0x1F6EF }, { 0x1F6FD, 0x1F6FF },
|
||||||
{ 0x1F774, 0x1F77F }, { 0x1F7D9, 0x1F7DF }, { 0x1F7EC, 0x1F7EF },
|
{ 0x1F777, 0x1F77A }, { 0x1F7DA, 0x1F7DF }, { 0x1F7EC, 0x1F7EF },
|
||||||
{ 0x1F7F1, 0x1F7FF }, { 0x1F80C, 0x1F80F }, { 0x1F848, 0x1F84F },
|
{ 0x1F7F1, 0x1F7FF }, { 0x1F80C, 0x1F80F }, { 0x1F848, 0x1F84F },
|
||||||
{ 0x1F85A, 0x1F85F }, { 0x1F888, 0x1F88F }, { 0x1F8AE, 0x1F8AF },
|
{ 0x1F85A, 0x1F85F }, { 0x1F888, 0x1F88F }, { 0x1F8AE, 0x1F8AF },
|
||||||
{ 0x1F8B2, 0x1F8FF }, { 0x1FA54, 0x1FA5F }, { 0x1FA6E, 0x1FA6F },
|
{ 0x1F8B2, 0x1F8FF }, { 0x1FA54, 0x1FA5F }, { 0x1FA6E, 0x1FA6F },
|
||||||
{ 0x1FA75, 0x1FA77 }, { 0x1FA7D, 0x1FA7F }, { 0x1FA87, 0x1FA8F },
|
{ 0x1FA7D, 0x1FA7F }, { 0x1FA89, 0x1FA8F }, { 0x1FABE, 0x1FABE },
|
||||||
{ 0x1FAAD, 0x1FAAF }, { 0x1FABB, 0x1FABF }, { 0x1FAC6, 0x1FACF },
|
{ 0x1FAC6, 0x1FACD }, { 0x1FADC, 0x1FADF }, { 0x1FAE9, 0x1FAEF },
|
||||||
{ 0x1FADA, 0x1FADF }, { 0x1FAE8, 0x1FAEF }, { 0x1FAF7, 0x1FAFF },
|
{ 0x1FAF9, 0x1FAFF }, { 0x1FB93, 0x1FB93 }, { 0x1FBCB, 0x1FBEF },
|
||||||
{ 0x1FB93, 0x1FB93 }, { 0x1FBCB, 0x1FBEF }, { 0x1FBFA, 0x1FFFF },
|
{ 0x1FBFA, 0x1FFFF }, { 0x2A6D7, 0x2F7FF }, { 0x2FA1E, 0xE0000 },
|
||||||
{ 0x2A6D7, 0x2F7FF }, { 0x2FA1E, 0xE0000 }, { 0xE0002, 0xE001F },
|
{ 0xE0002, 0xE001F }, { 0xE0080, 0xE00FF }, { 0xE01F0, 0x10FFFD }
|
||||||
{ 0xE0080, 0xE00FF }, { 0xE01F0, 0x10FFFD }
|
|
||||||
};
|
};
|
||||||
/* *INDENT-ON* */
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
@ -612,35 +625,37 @@ int mk_wcwidth(wchar_t ucs)
|
||||||
{ 0x2753, 0x2755 }, { 0x2757, 0x2757 }, { 0x2795, 0x2797 },
|
{ 0x2753, 0x2755 }, { 0x2757, 0x2757 }, { 0x2795, 0x2797 },
|
||||||
{ 0x27B0, 0x27B0 }, { 0x27BF, 0x27BF }, { 0x2B1B, 0x2B1C },
|
{ 0x27B0, 0x27B0 }, { 0x27BF, 0x27BF }, { 0x2B1B, 0x2B1C },
|
||||||
{ 0x2B50, 0x2B50 }, { 0x2B55, 0x2B55 }, { 0x2E80, 0x2E99 },
|
{ 0x2B50, 0x2B50 }, { 0x2B55, 0x2B55 }, { 0x2E80, 0x2E99 },
|
||||||
{ 0x2E9B, 0x2EF3 }, { 0x2F00, 0x2FD5 }, { 0x2FF0, 0x2FFB },
|
{ 0x2E9B, 0x2EF3 }, { 0x2F00, 0x2FD5 }, { 0x2FF0, 0x3029 },
|
||||||
{ 0x3000, 0x3029 }, { 0x302E, 0x303E }, { 0x3041, 0x3096 },
|
{ 0x302E, 0x303E }, { 0x3041, 0x3096 }, { 0x309B, 0x30FF },
|
||||||
{ 0x309B, 0x30FF }, { 0x3105, 0x312F }, { 0x3131, 0x318E },
|
{ 0x3105, 0x312F }, { 0x3131, 0x318E }, { 0x3190, 0x31E3 },
|
||||||
{ 0x3190, 0x31E3 }, { 0x31F0, 0x321E }, { 0x3220, 0x3247 },
|
{ 0x31EF, 0x321E }, { 0x3220, 0x3247 }, { 0x3250, 0x4DBF },
|
||||||
{ 0x3250, 0x4DBF }, { 0x4E00, 0xA48C }, { 0xA490, 0xA4C6 },
|
{ 0x4E00, 0xA48C }, { 0xA490, 0xA4C6 }, { 0xA960, 0xA97C },
|
||||||
{ 0xA960, 0xA97C }, { 0xAC00, 0xD7A3 }, { 0xF900, 0xFAFF },
|
{ 0xAC00, 0xD7A3 }, { 0xF900, 0xFA6D }, { 0xFA70, 0xFAD9 },
|
||||||
{ 0xFE10, 0xFE19 }, { 0xFE30, 0xFE52 }, { 0xFE54, 0xFE66 },
|
{ 0xFE10, 0xFE19 }, { 0xFE30, 0xFE52 }, { 0xFE54, 0xFE66 },
|
||||||
{ 0xFE68, 0xFE6B }, { 0xFF01, 0xFF60 }, { 0xFFE0, 0xFFE6 },
|
{ 0xFE68, 0xFE6B }, { 0xFF01, 0xFF60 }, { 0xFFE0, 0xFFE6 },
|
||||||
{ 0x16FE0, 0x16FE3 }, { 0x16FF0, 0x16FF1 }, { 0x17000, 0x187F7 },
|
{ 0x16FE0, 0x16FE3 }, { 0x16FF0, 0x16FF1 }, { 0x17000, 0x187F7 },
|
||||||
{ 0x18800, 0x18CD5 }, { 0x18D00, 0x18D08 }, { 0x1AFF0, 0x1AFF3 },
|
{ 0x18800, 0x18CD5 }, { 0x18D00, 0x18D08 }, { 0x1AFF0, 0x1AFF3 },
|
||||||
{ 0x1AFF5, 0x1AFFB }, { 0x1AFFD, 0x1AFFE }, { 0x1B000, 0x1B122 },
|
{ 0x1AFF5, 0x1AFFB }, { 0x1AFFD, 0x1AFFE }, { 0x1B000, 0x1B122 },
|
||||||
{ 0x1B150, 0x1B152 }, { 0x1B164, 0x1B167 }, { 0x1B170, 0x1B2FB },
|
{ 0x1B132, 0x1B132 }, { 0x1B150, 0x1B152 }, { 0x1B155, 0x1B155 },
|
||||||
{ 0x1F004, 0x1F004 }, { 0x1F0CF, 0x1F0CF }, { 0x1F18E, 0x1F18E },
|
{ 0x1B164, 0x1B167 }, { 0x1B170, 0x1B2FB }, { 0x1F004, 0x1F004 },
|
||||||
{ 0x1F191, 0x1F19A }, { 0x1F200, 0x1F202 }, { 0x1F210, 0x1F23B },
|
{ 0x1F0CF, 0x1F0CF }, { 0x1F18E, 0x1F18E }, { 0x1F191, 0x1F19A },
|
||||||
{ 0x1F240, 0x1F248 }, { 0x1F250, 0x1F251 }, { 0x1F260, 0x1F265 },
|
{ 0x1F200, 0x1F202 }, { 0x1F210, 0x1F23B }, { 0x1F240, 0x1F248 },
|
||||||
{ 0x1F300, 0x1F320 }, { 0x1F32D, 0x1F335 }, { 0x1F337, 0x1F37C },
|
{ 0x1F250, 0x1F251 }, { 0x1F260, 0x1F265 }, { 0x1F300, 0x1F320 },
|
||||||
{ 0x1F37E, 0x1F393 }, { 0x1F3A0, 0x1F3CA }, { 0x1F3CF, 0x1F3D3 },
|
{ 0x1F32D, 0x1F335 }, { 0x1F337, 0x1F37C }, { 0x1F37E, 0x1F393 },
|
||||||
{ 0x1F3E0, 0x1F3F0 }, { 0x1F3F4, 0x1F3F4 }, { 0x1F3F8, 0x1F43E },
|
{ 0x1F3A0, 0x1F3CA }, { 0x1F3CF, 0x1F3D3 }, { 0x1F3E0, 0x1F3F0 },
|
||||||
{ 0x1F440, 0x1F440 }, { 0x1F442, 0x1F4FC }, { 0x1F4FF, 0x1F53D },
|
{ 0x1F3F4, 0x1F3F4 }, { 0x1F3F8, 0x1F43E }, { 0x1F440, 0x1F440 },
|
||||||
{ 0x1F54B, 0x1F54E }, { 0x1F550, 0x1F567 }, { 0x1F57A, 0x1F57A },
|
{ 0x1F442, 0x1F4FC }, { 0x1F4FF, 0x1F53D }, { 0x1F54B, 0x1F54E },
|
||||||
{ 0x1F595, 0x1F596 }, { 0x1F5A4, 0x1F5A4 }, { 0x1F5FB, 0x1F64F },
|
{ 0x1F550, 0x1F567 }, { 0x1F57A, 0x1F57A }, { 0x1F595, 0x1F596 },
|
||||||
{ 0x1F680, 0x1F6C5 }, { 0x1F6CC, 0x1F6CC }, { 0x1F6D0, 0x1F6D2 },
|
{ 0x1F5A4, 0x1F5A4 }, { 0x1F5FB, 0x1F64F }, { 0x1F680, 0x1F6C5 },
|
||||||
{ 0x1F6D5, 0x1F6D7 }, { 0x1F6DD, 0x1F6DF }, { 0x1F6EB, 0x1F6EC },
|
{ 0x1F6CC, 0x1F6CC }, { 0x1F6D0, 0x1F6D2 }, { 0x1F6D5, 0x1F6D7 },
|
||||||
{ 0x1F6F4, 0x1F6FC }, { 0x1F7E0, 0x1F7EB }, { 0x1F7F0, 0x1F7F0 },
|
{ 0x1F6DC, 0x1F6DF }, { 0x1F6EB, 0x1F6EC }, { 0x1F6F4, 0x1F6FC },
|
||||||
{ 0x1F90C, 0x1F93A }, { 0x1F93C, 0x1F945 }, { 0x1F947, 0x1F9FF },
|
{ 0x1F7E0, 0x1F7EB }, { 0x1F7F0, 0x1F7F0 }, { 0x1F90C, 0x1F93A },
|
||||||
{ 0x1FA70, 0x1FA74 }, { 0x1FA78, 0x1FA7C }, { 0x1FA80, 0x1FA86 },
|
{ 0x1F93C, 0x1F945 }, { 0x1F947, 0x1F9FF }, { 0x1FA70, 0x1FA7C },
|
||||||
{ 0x1FA90, 0x1FAAC }, { 0x1FAB0, 0x1FABA }, { 0x1FAC0, 0x1FAC5 },
|
{ 0x1FA80, 0x1FA88 }, { 0x1FA90, 0x1FABD }, { 0x1FABF, 0x1FAC5 },
|
||||||
{ 0x1FAD0, 0x1FAD9 }, { 0x1FAE0, 0x1FAE7 }, { 0x1FAF0, 0x1FAF6 },
|
{ 0x1FACE, 0x1FADB }, { 0x1FAE0, 0x1FAE8 }, { 0x1FAF0, 0x1FAF8 },
|
||||||
{ 0x20000, 0x2FFFD }, { 0x30000, 0x3FFFD }
|
{ 0x20000, 0x2A6DF }, { 0x2A700, 0x2B739 }, { 0x2B740, 0x2B81D },
|
||||||
|
{ 0x2B820, 0x2CEA1 }, { 0x2CEB0, 0x2EBE0 }, { 0x2EBF0, 0x2EE5D },
|
||||||
|
{ 0x2F800, 0x2FA1D }, { 0x30000, 0x3134A }, { 0x31350, 0x323AF }
|
||||||
};
|
};
|
||||||
/* *INDENT-ON* */
|
/* *INDENT-ON* */
|
||||||
|
|
||||||
|
@ -659,7 +674,7 @@ int mk_wcwidth(wchar_t ucs)
|
||||||
result = use_latin1;
|
result = use_latin1;
|
||||||
} else if (Lookup(cmp, formatting)) {
|
} else if (Lookup(cmp, formatting)) {
|
||||||
/* treat formatting characters like control characters */
|
/* treat formatting characters like control characters */
|
||||||
result = -1;
|
result = 0;
|
||||||
} else if (Lookup(cmp, combining)) {
|
} else if (Lookup(cmp, combining)) {
|
||||||
/* binary search in table of non-spacing characters */
|
/* binary search in table of non-spacing characters */
|
||||||
result = 0;
|
result = 0;
|
||||||
|
@ -669,6 +684,12 @@ int mk_wcwidth(wchar_t ucs)
|
||||||
|
|
||||||
if (Lookup(cmp, doublewidth)) {
|
if (Lookup(cmp, doublewidth)) {
|
||||||
result = 2;
|
result = 2;
|
||||||
|
} else if (cmp >= 0xd800 && cmp <= 0xdfff) {
|
||||||
|
#ifdef HAVE_WCWIDTH
|
||||||
|
result = (wcwidth)(ucs);
|
||||||
|
#else
|
||||||
|
result = -1;
|
||||||
|
#endif
|
||||||
} else if (cmp >= unknowns[0].first && Lookup(cmp, unknowns)) {
|
} else if (cmp >= unknowns[0].first && Lookup(cmp, unknowns)) {
|
||||||
result = -1;
|
result = -1;
|
||||||
}
|
}
|
||||||
|
@ -868,8 +889,9 @@ static void do_range(const char *source)
|
||||||
int lo, hi;
|
int lo, hi;
|
||||||
if (decode_range(source, &lo, &hi)) {
|
if (decode_range(source, &lo, &hi)) {
|
||||||
while (lo <= hi) {
|
while (lo <= hi) {
|
||||||
int local_rc = opt_wider ? mk_wcwidth_cjk(lo) : mk_wcwidth(lo);
|
wchar_t wlo = (wchar_t) lo;
|
||||||
int other_rc = wcwidth(lo);
|
int local_rc = opt_wider ? mk_wcwidth_cjk(wlo) : mk_wcwidth(wlo);
|
||||||
|
int other_rc = wcwidth(wlo);
|
||||||
++total_test;
|
++total_test;
|
||||||
if (opt_all || (local_rc != other_rc)) {
|
if (opt_all || (local_rc != other_rc)) {
|
||||||
if (!opt_quiet)
|
if (!opt_quiet)
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: xstrings.c,v 1.79 2022/11/16 23:54:32 tom Exp $ */
|
/* $XTermId: xstrings.c,v 1.80 2023/05/09 08:13:56 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2000-2020,2022 by Thomas E. Dickey
|
* Copyright 2000-2022,2023 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -163,9 +163,8 @@ login_alias(char *login_name, uid_t uid, struct passwd *in_out)
|
||||||
if (!IsEmpty(login_name)
|
if (!IsEmpty(login_name)
|
||||||
&& strcmp(login_name, in_out->pw_name)) {
|
&& strcmp(login_name, in_out->pw_name)) {
|
||||||
struct passwd pw2;
|
struct passwd pw2;
|
||||||
Boolean ok2;
|
|
||||||
|
|
||||||
if ((ok2 = x_getpwnam(login_name, &pw2))) {
|
if (x_getpwnam(login_name, &pw2)) {
|
||||||
uid_t uid2 = pw2.pw_uid;
|
uid_t uid2 = pw2.pw_uid;
|
||||||
struct passwd pw3;
|
struct passwd pw3;
|
||||||
Boolean ok3;
|
Boolean ok3;
|
||||||
|
@ -177,8 +176,7 @@ login_alias(char *login_name, uid_t uid, struct passwd *in_out)
|
||||||
} else {
|
} else {
|
||||||
FreeAndNull(login_name);
|
FreeAndNull(login_name);
|
||||||
}
|
}
|
||||||
if (ok2)
|
free_pw(&pw2);
|
||||||
free_pw(&pw2);
|
|
||||||
if (ok3)
|
if (ok3)
|
||||||
free_pw(&pw3);
|
free_pw(&pw3);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!-- Copyright 2014-2022,2023 Thomas Dickey <dickey@invisible-island.net> -->
|
<!-- Copyright 2014-2023,2024 Thomas Dickey <dickey@invisible-island.net> -->
|
||||||
<component type="desktop">
|
<component type="desktop">
|
||||||
<id>xterm.desktop</id>
|
<id>xterm.desktop</id>
|
||||||
<metadata_license>CC-BY-3.0</metadata_license>
|
<metadata_license>CC-BY-3.0</metadata_license>
|
||||||
|
@ -35,7 +35,7 @@
|
||||||
<keyword>terminal</keyword>
|
<keyword>terminal</keyword>
|
||||||
</keywords>
|
</keywords>
|
||||||
<releases>
|
<releases>
|
||||||
<release version="378" date="2023-01-09"/>
|
<release version="393" date="2024-07-11"/>
|
||||||
</releases>
|
</releases>
|
||||||
<url type="homepage">https://invisible-island.net/xterm/</url>
|
<url type="homepage">https://invisible-island.net/xterm/</url>
|
||||||
<update_contact>dickey@invisible-island.net</update_contact>
|
<update_contact>dickey@invisible-island.net</update_contact>
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: xterm.h,v 1.922 2023/01/04 09:21:42 tom Exp $ */
|
/* $XTermId: xterm.h,v 1.948 2024/06/26 07:45:55 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1999-2022,2023 by Thomas E. Dickey
|
* Copyright 1999-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -135,15 +135,15 @@
|
||||||
#define HAVE_UTMP_UT_SESSION 1
|
#define HAVE_UTMP_UT_SESSION 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !(defined(linux) && (!defined(__GLIBC__) || (__GLIBC__ < 2))) && !defined(SVR4) && !defined(__FreeBSD__)
|
#if !(defined(__linux__) && (!defined(__GLIBC__) || (__GLIBC__ < 2))) && !defined(SVR4) && !defined(__FreeBSD__)
|
||||||
#define ut_xstatus ut_exit.e_exit
|
#define ut_xstatus ut_exit.e_exit
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX) || (defined(linux) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0)))
|
#if defined(SVR4) || defined(__SCO__) || defined(BSD_UTMPX) || (defined(__linux__) && defined(__GLIBC__) && (__GLIBC__ >= 2) && !(defined(__powerpc__) && (__GLIBC__ == 2) && (__GLIBC_MINOR__ == 0)))
|
||||||
#define HAVE_UTMP_UT_XTIME 1
|
#define HAVE_UTMP_UT_XTIME 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(linux) || defined(__CYGWIN__)
|
#if defined(__linux__) || defined(__CYGWIN__)
|
||||||
#define USE_LASTLOG
|
#define USE_LASTLOG
|
||||||
#define HAVE_LASTLOG_H
|
#define HAVE_LASTLOG_H
|
||||||
#define USE_STRUCT_LASTLOG
|
#define USE_STRUCT_LASTLOG
|
||||||
|
@ -170,11 +170,11 @@
|
||||||
#define OPT_SCO_FUNC_KEYS 1
|
#define OPT_SCO_FUNC_KEYS 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__SCO__) || defined(SVR4) || defined(_POSIX_SOURCE) || defined(__QNX__) || defined(__hpux) || (defined(BSD) && (BSD >= 199103)) || defined(__CYGWIN__)
|
#if defined(__SCO__) || defined(SVR4) || defined(_POSIX_VERSION) || defined(__QNX__) || defined(__hpux) || (defined(BSD) && (BSD >= 199103)) || defined(__CYGWIN__)
|
||||||
#define USE_POSIX_WAIT
|
#define USE_POSIX_WAIT
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(AIXV3) || defined(CRAY) || defined(__SCO__) || defined(SVR4) || (defined(SYSV) && defined(i386)) || defined(__MVS__) || defined(__hpux) || defined(__osf__) || defined(linux) || defined(macII) || defined(BSD_UTMPX)
|
#if defined(AIXV3) || defined(CRAY) || defined(__SCO__) || defined(SVR4) || (defined(SYSV) && defined(i386)) || defined(__MVS__) || defined(__hpux) || defined(__osf__) || defined(__linux__) || defined(macII) || defined(BSD_UTMPX)
|
||||||
#define USE_SYSV_UTMP
|
#define USE_SYSV_UTMP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -205,14 +205,28 @@
|
||||||
#define HAVE_XKB_BELL_EXT 1
|
#define HAVE_XKB_BELL_EXT 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined(SVR4) && !defined(__CYGWIN__)) || defined(linux) || (defined(BSD) && (BSD >= 199103))
|
#if (defined(SVR4) && !defined(__CYGWIN__)) || defined(__linux__) || (defined(BSD) && (BSD >= 199103))
|
||||||
#define HAVE_POSIX_SAVED_IDS
|
#define HAVE_POSIX_SAVED_IDS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(linux) || defined(__GLIBC__) || (defined(SYSV) && (defined(CRAY) || defined(macII) || defined(__hpux) || defined(__osf__) || defined(__sgi))) || !(defined(SYSV) || defined(__QNX__) || defined(VMS) || defined(__INTERIX))
|
#if defined(__linux__) || defined(__GLIBC__) || (defined(SYSV) && (defined(CRAY) || defined(macII) || defined(__hpux) || defined(__osf__) || defined(__sgi))) || !(defined(SYSV) || defined(__QNX__) || defined(VMS) || defined(__INTERIX))
|
||||||
#define HAVE_INITGROUPS
|
#define HAVE_INITGROUPS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(__linux__)
|
||||||
|
#define HAVE_PTY_H
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(USG) && !defined(__minix)
|
||||||
|
#define HAVE_SETITIMER 1
|
||||||
|
#else
|
||||||
|
#define HAVE_SETITIMER 0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(_POSIX_VERSION) || defined(SVR4) || defined(__convex__) || defined(__SCO__) || defined(__QNX__)
|
||||||
|
#define HAVE_SETSID 1
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif /* HAVE_CONFIG_H */
|
#endif /* HAVE_CONFIG_H */
|
||||||
|
|
||||||
#ifndef HAVE_X11_DECKEYSYM_H
|
#ifndef HAVE_X11_DECKEYSYM_H
|
||||||
|
@ -283,7 +297,7 @@ extern int errno;
|
||||||
* FIXME: Toggling logging from xterm hangs under Linux 2.0.29 with libc5 if
|
* FIXME: Toggling logging from xterm hangs under Linux 2.0.29 with libc5 if
|
||||||
* we use 'waitpid()', while 'wait()' seems to work properly.
|
* we use 'waitpid()', while 'wait()' seems to work properly.
|
||||||
*/
|
*/
|
||||||
#ifdef linux
|
#ifdef __linux__
|
||||||
#undef HAVE_WAITPID
|
#undef HAVE_WAITPID
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -386,7 +400,7 @@ extern int errno;
|
||||||
|
|
||||||
#include <setjmp.h>
|
#include <setjmp.h>
|
||||||
|
|
||||||
#if !defined(VMS) && !(defined(linux) && defined(__USE_GNU)) && !defined(__hpux) && !defined(_ALL_SOURCE) && !defined(__osf__)
|
#if !defined(VMS) && !(defined(__linux__) && defined(__USE_GNU)) && !defined(__hpux) && !defined(_ALL_SOURCE) && !defined(__osf__)
|
||||||
extern char **environ;
|
extern char **environ;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -434,6 +448,7 @@ extern char **environ;
|
||||||
|
|
||||||
/***====================================================================***/
|
/***====================================================================***/
|
||||||
|
|
||||||
|
#define XtNactiveIcon "activeIcon"
|
||||||
#define XtNallowBoldFonts "allowBoldFonts"
|
#define XtNallowBoldFonts "allowBoldFonts"
|
||||||
#define XtNallowC1Printable "allowC1Printable"
|
#define XtNallowC1Printable "allowC1Printable"
|
||||||
#define XtNallowColorOps "allowColorOps"
|
#define XtNallowColorOps "allowColorOps"
|
||||||
|
@ -455,10 +470,11 @@ extern char **environ;
|
||||||
#define XtNappcursorDefault "appcursorDefault"
|
#define XtNappcursorDefault "appcursorDefault"
|
||||||
#define XtNappkeypadDefault "appkeypadDefault"
|
#define XtNappkeypadDefault "appkeypadDefault"
|
||||||
#define XtNassumeAllChars "assumeAllChars"
|
#define XtNassumeAllChars "assumeAllChars"
|
||||||
#define XtNautoWrap "autoWrap"
|
|
||||||
#define XtNautoScrollLock "autoScrollLock"
|
#define XtNautoScrollLock "autoScrollLock"
|
||||||
|
#define XtNautoWrap "autoWrap"
|
||||||
#define XtNawaitInput "awaitInput"
|
#define XtNawaitInput "awaitInput"
|
||||||
#define XtNbackarrowKey "backarrowKey"
|
#define XtNbackarrowKey "backarrowKey"
|
||||||
|
#define XtNbackarrowKeyIsErase "backarrowKeyIsErase"
|
||||||
#define XtNbellIsUrgent "bellIsUrgent"
|
#define XtNbellIsUrgent "bellIsUrgent"
|
||||||
#define XtNbellOnReset "bellOnReset"
|
#define XtNbellOnReset "bellOnReset"
|
||||||
#define XtNbellSuppressTime "bellSuppressTime"
|
#define XtNbellSuppressTime "bellSuppressTime"
|
||||||
|
@ -487,11 +503,13 @@ extern char **environ;
|
||||||
#define XtNcombiningChars "combiningChars"
|
#define XtNcombiningChars "combiningChars"
|
||||||
#define XtNctrlFKeys "ctrlFKeys"
|
#define XtNctrlFKeys "ctrlFKeys"
|
||||||
#define XtNcurses "curses"
|
#define XtNcurses "curses"
|
||||||
|
#define XtNcursorBar "cursorBar"
|
||||||
#define XtNcursorBlink "cursorBlink"
|
#define XtNcursorBlink "cursorBlink"
|
||||||
#define XtNcursorBlinkXOR "cursorBlinkXOR"
|
#define XtNcursorBlinkXOR "cursorBlinkXOR"
|
||||||
#define XtNcursorColor "cursorColor"
|
#define XtNcursorColor "cursorColor"
|
||||||
#define XtNcursorOffTime "cursorOffTime"
|
#define XtNcursorOffTime "cursorOffTime"
|
||||||
#define XtNcursorOnTime "cursorOnTime"
|
#define XtNcursorOnTime "cursorOnTime"
|
||||||
|
#define XtNcursorTheme "cursorTheme"
|
||||||
#define XtNcursorUnderLine "cursorUnderLine"
|
#define XtNcursorUnderLine "cursorUnderLine"
|
||||||
#define XtNcutNewline "cutNewline"
|
#define XtNcutNewline "cutNewline"
|
||||||
#define XtNcutToBeginningOfLine "cutToBeginningOfLine"
|
#define XtNcutToBeginningOfLine "cutToBeginningOfLine"
|
||||||
|
@ -538,9 +556,16 @@ extern char **environ;
|
||||||
#define XtNhighlightReverse "highlightReverse"
|
#define XtNhighlightReverse "highlightReverse"
|
||||||
#define XtNhighlightSelection "highlightSelection"
|
#define XtNhighlightSelection "highlightSelection"
|
||||||
#define XtNhighlightTextColor "highlightTextColor"
|
#define XtNhighlightTextColor "highlightTextColor"
|
||||||
|
#define XtNhold "hold"
|
||||||
|
#define XtNhpFunctionKeys "hpFunctionKeys"
|
||||||
#define XtNhpLowerleftBugCompat "hpLowerleftBugCompat"
|
#define XtNhpLowerleftBugCompat "hpLowerleftBugCompat"
|
||||||
#define XtNi18nSelections "i18nSelections"
|
#define XtNi18nSelections "i18nSelections"
|
||||||
|
#define XtNiconBorderColor "iconBorderColor"
|
||||||
|
#define XtNiconBorderWidth "iconBorderWidth"
|
||||||
|
#define XtNiconFont "iconFont"
|
||||||
|
#define XtNiconGeometry "iconGeometry"
|
||||||
#define XtNiconHint "iconHint"
|
#define XtNiconHint "iconHint"
|
||||||
|
#define XtNincrementalGraphics "incrementalGraphics"
|
||||||
#define XtNindicatorFormat "indicatorFormat"
|
#define XtNindicatorFormat "indicatorFormat"
|
||||||
#define XtNinitialFont "initialFont"
|
#define XtNinitialFont "initialFont"
|
||||||
#define XtNinternalBorder "internalBorder"
|
#define XtNinternalBorder "internalBorder"
|
||||||
|
@ -549,8 +574,10 @@ extern char **environ;
|
||||||
#define XtNkeepClipboard "keepClipboard"
|
#define XtNkeepClipboard "keepClipboard"
|
||||||
#define XtNkeepSelection "keepSelection"
|
#define XtNkeepSelection "keepSelection"
|
||||||
#define XtNkeyboardDialect "keyboardDialect"
|
#define XtNkeyboardDialect "keyboardDialect"
|
||||||
#define XtNlimitFontsets "limitFontsets"
|
#define XtNkeyboardType "keyboardType"
|
||||||
|
#define XtNlimitFontHeight "limitFontHeight"
|
||||||
#define XtNlimitFontWidth "limitFontWidth"
|
#define XtNlimitFontWidth "limitFontWidth"
|
||||||
|
#define XtNlimitFontsets "limitFontsets"
|
||||||
#define XtNlimitResize "limitResize"
|
#define XtNlimitResize "limitResize"
|
||||||
#define XtNlimitResponse "limitResponse"
|
#define XtNlimitResponse "limitResponse"
|
||||||
#define XtNlocale "locale"
|
#define XtNlocale "locale"
|
||||||
|
@ -560,11 +587,16 @@ extern char **environ;
|
||||||
#define XtNlogging "logging"
|
#define XtNlogging "logging"
|
||||||
#define XtNloginShell "loginShell"
|
#define XtNloginShell "loginShell"
|
||||||
#define XtNmarginBell "marginBell"
|
#define XtNmarginBell "marginBell"
|
||||||
|
#define XtNmaxBufSize "maxBufSize"
|
||||||
#define XtNmaxGraphicSize "maxGraphicSize"
|
#define XtNmaxGraphicSize "maxGraphicSize"
|
||||||
|
#define XtNmaxStringParse "maxStringParse"
|
||||||
#define XtNmaximized "maximized"
|
#define XtNmaximized "maximized"
|
||||||
#define XtNmenuBar "menuBar" /* internal */
|
#define XtNmenuBar "menuBar" /* internal */
|
||||||
#define XtNmenuHeight "menuHeight"
|
#define XtNmenuHeight "menuHeight"
|
||||||
|
#define XtNmenuLocale "menuLocale"
|
||||||
|
#define XtNmessages "messages"
|
||||||
#define XtNmetaSendsEscape "metaSendsEscape"
|
#define XtNmetaSendsEscape "metaSendsEscape"
|
||||||
|
#define XtNminBufSize "minBufSize"
|
||||||
#define XtNmkSamplePass "mkSamplePass"
|
#define XtNmkSamplePass "mkSamplePass"
|
||||||
#define XtNmkSampleSize "mkSampleSize"
|
#define XtNmkSampleSize "mkSampleSize"
|
||||||
#define XtNmkWidth "mkWidth"
|
#define XtNmkWidth "mkWidth"
|
||||||
|
@ -581,6 +613,7 @@ extern char **environ;
|
||||||
#define XtNnumColorRegisters "numColorRegisters"
|
#define XtNnumColorRegisters "numColorRegisters"
|
||||||
#define XtNnumLock "numLock"
|
#define XtNnumLock "numLock"
|
||||||
#define XtNoldXtermFKeys "oldXtermFKeys"
|
#define XtNoldXtermFKeys "oldXtermFKeys"
|
||||||
|
#define XtNomitTranslation "omitTranslation"
|
||||||
#define XtNpointerColor "pointerColor"
|
#define XtNpointerColor "pointerColor"
|
||||||
#define XtNpointerColorBackground "pointerColorBackground"
|
#define XtNpointerColorBackground "pointerColorBackground"
|
||||||
#define XtNpointerFont "pointerFont"
|
#define XtNpointerFont "pointerFont"
|
||||||
|
@ -588,7 +621,14 @@ extern char **environ;
|
||||||
#define XtNpointerShape "pointerShape"
|
#define XtNpointerShape "pointerShape"
|
||||||
#define XtNpopOnBell "popOnBell"
|
#define XtNpopOnBell "popOnBell"
|
||||||
#define XtNprecompose "precompose"
|
#define XtNprecompose "precompose"
|
||||||
|
#define XtNpreferLatin1 "preferLatin1"
|
||||||
#define XtNprintAttributes "printAttributes"
|
#define XtNprintAttributes "printAttributes"
|
||||||
|
#define XtNprintFileImmediate "printFileImmediate"
|
||||||
|
#define XtNprintFileOnXError "printFileOnXError"
|
||||||
|
#define XtNprintModeImmediate "printModeImmediate"
|
||||||
|
#define XtNprintModeOnXError "printModeOnXError"
|
||||||
|
#define XtNprintOptsImmediate "printOptsImmediate"
|
||||||
|
#define XtNprintOptsOnXError "printOptsOnXError"
|
||||||
#define XtNprinterAutoClose "printerAutoClose"
|
#define XtNprinterAutoClose "printerAutoClose"
|
||||||
#define XtNprinterCommand "printerCommand"
|
#define XtNprinterCommand "printerCommand"
|
||||||
#define XtNprinterControlMode "printerControlMode"
|
#define XtNprinterControlMode "printerControlMode"
|
||||||
|
@ -596,23 +636,34 @@ extern char **environ;
|
||||||
#define XtNprinterFormFeed "printerFormFeed"
|
#define XtNprinterFormFeed "printerFormFeed"
|
||||||
#define XtNprinterNewLine "printerNewLine"
|
#define XtNprinterNewLine "printerNewLine"
|
||||||
#define XtNprivateColorRegisters "privateColorRegisters"
|
#define XtNprivateColorRegisters "privateColorRegisters"
|
||||||
|
#define XtNptyHandshake "ptyHandshake"
|
||||||
|
#define XtNptyInitialErase "ptyInitialErase"
|
||||||
|
#define XtNptySttySize "ptySttySize"
|
||||||
#define XtNquietGrab "quietGrab"
|
#define XtNquietGrab "quietGrab"
|
||||||
#define XtNregisDefaultFont "regisDefaultFont"
|
#define XtNregisDefaultFont "regisDefaultFont"
|
||||||
#define XtNregisScreenSize "regisScreenSize"
|
#define XtNregisScreenSize "regisScreenSize"
|
||||||
#define XtNrenderFont "renderFont"
|
#define XtNrenderFont "renderFont"
|
||||||
|
#define XtNreportCClass "reportCClass"
|
||||||
|
#define XtNreportColors "reportColors"
|
||||||
|
#define XtNreportFonts "reportFonts"
|
||||||
|
#define XtNreportIcons "reportIcons"
|
||||||
|
#define XtNreportXRes "reportXRes"
|
||||||
#define XtNresizeByPixel "resizeByPixel"
|
#define XtNresizeByPixel "resizeByPixel"
|
||||||
#define XtNresizeGravity "resizeGravity"
|
#define XtNresizeGravity "resizeGravity"
|
||||||
#define XtNretryInputMethod "retryInputMethod"
|
#define XtNretryInputMethod "retryInputMethod"
|
||||||
#define XtNreverseWrap "reverseWrap"
|
#define XtNreverseWrap "reverseWrap"
|
||||||
#define XtNrightScrollBar "rightScrollBar"
|
#define XtNrightScrollBar "rightScrollBar"
|
||||||
|
#define XtNsameName "sameName"
|
||||||
#define XtNsaveLines "saveLines"
|
#define XtNsaveLines "saveLines"
|
||||||
#define XtNscaleHeight "scaleHeight"
|
#define XtNscaleHeight "scaleHeight"
|
||||||
|
#define XtNscoFunctionKeys "scoFunctionKeys"
|
||||||
#define XtNscrollBar "scrollBar"
|
#define XtNscrollBar "scrollBar"
|
||||||
#define XtNscrollBarBorder "scrollBarBorder"
|
#define XtNscrollBarBorder "scrollBarBorder"
|
||||||
#define XtNscrollKey "scrollKey"
|
#define XtNscrollKey "scrollKey"
|
||||||
#define XtNscrollLines "scrollLines"
|
#define XtNscrollLines "scrollLines"
|
||||||
#define XtNscrollTtyOutput "scrollTtyOutput"
|
#define XtNscrollTtyOutput "scrollTtyOutput"
|
||||||
#define XtNselectToClipboard "selectToClipboard"
|
#define XtNselectToClipboard "selectToClipboard"
|
||||||
|
#define XtNsessionMgt "sessionMgt"
|
||||||
#define XtNshiftEscape "shiftEscape"
|
#define XtNshiftEscape "shiftEscape"
|
||||||
#define XtNshiftFonts "shiftFonts"
|
#define XtNshiftFonts "shiftFonts"
|
||||||
#define XtNshowBlinkAsBold "showBlinkAsBold"
|
#define XtNshowBlinkAsBold "showBlinkAsBold"
|
||||||
|
@ -621,29 +672,39 @@ extern char **environ;
|
||||||
#define XtNsignalInhibit "signalInhibit"
|
#define XtNsignalInhibit "signalInhibit"
|
||||||
#define XtNsixelScrolling "sixelScrolling"
|
#define XtNsixelScrolling "sixelScrolling"
|
||||||
#define XtNsixelScrollsRight "sixelScrollsRight"
|
#define XtNsixelScrollsRight "sixelScrollsRight"
|
||||||
|
#define XtNsunFunctionKeys "sunFunctionKeys"
|
||||||
|
#define XtNsunKeyboard "sunKeyboard"
|
||||||
|
#define XtNtcapFunctionKeys "tcapFunctionKeys"
|
||||||
#define XtNtekGeometry "tekGeometry"
|
#define XtNtekGeometry "tekGeometry"
|
||||||
#define XtNtekInhibit "tekInhibit"
|
#define XtNtekInhibit "tekInhibit"
|
||||||
#define XtNtekSmall "tekSmall"
|
#define XtNtekSmall "tekSmall"
|
||||||
#define XtNtekStartup "tekStartup"
|
#define XtNtekStartup "tekStartup"
|
||||||
|
#define XtNtermName "termName"
|
||||||
#define XtNtiXtraScroll "tiXtraScroll"
|
#define XtNtiXtraScroll "tiXtraScroll"
|
||||||
#define XtNtiteInhibit "titeInhibit"
|
#define XtNtiteInhibit "titeInhibit"
|
||||||
#define XtNtitleModes "titleModes"
|
#define XtNtitleModes "titleModes"
|
||||||
#define XtNtoolBar "toolBar"
|
#define XtNtoolBar "toolBar"
|
||||||
#define XtNtrimSelection "trimSelection"
|
#define XtNtrimSelection "trimSelection"
|
||||||
|
#define XtNttyModes "ttyModes"
|
||||||
#define XtNunderLine "underLine"
|
#define XtNunderLine "underLine"
|
||||||
#define XtNuseBorderClipping "useBorderClipping"
|
#define XtNuseBorderClipping "useBorderClipping"
|
||||||
#define XtNuseClipping "useClipping"
|
#define XtNuseClipping "useClipping"
|
||||||
|
#define XtNuseInsertMode "useInsertMode"
|
||||||
#define XtNutf8 "utf8"
|
#define XtNutf8 "utf8"
|
||||||
#define XtNutf8Fonts "utf8Fonts"
|
#define XtNutf8Fonts "utf8Fonts"
|
||||||
#define XtNutf8Latin1 "utf8Latin1"
|
#define XtNutf8Latin1 "utf8Latin1"
|
||||||
#define XtNutf8SelectTypes "utf8SelectTypes"
|
#define XtNutf8SelectTypes "utf8SelectTypes"
|
||||||
#define XtNutf8Title "utf8Title"
|
#define XtNutf8Title "utf8Title"
|
||||||
#define XtNutf8Weblike "utf8Weblike"
|
#define XtNutf8Weblike "utf8Weblike"
|
||||||
|
#define XtNutmpDisplayId "utmpDisplayId"
|
||||||
|
#define XtNutmpInhibit "utmpInhibit"
|
||||||
|
#define XtNvalidShells "validShells"
|
||||||
#define XtNveryBoldColors "veryBoldColors"
|
#define XtNveryBoldColors "veryBoldColors"
|
||||||
#define XtNvisualBell "visualBell"
|
#define XtNvisualBell "visualBell"
|
||||||
#define XtNvisualBellDelay "visualBellDelay"
|
#define XtNvisualBellDelay "visualBellDelay"
|
||||||
#define XtNvisualBellLine "visualBellLine"
|
#define XtNvisualBellLine "visualBellLine"
|
||||||
#define XtNvt100Graphics "vt100Graphics"
|
#define XtNvt100Graphics "vt100Graphics"
|
||||||
|
#define XtNwaitForMap "waitForMap"
|
||||||
#define XtNwideBoldFont "wideBoldFont"
|
#define XtNwideBoldFont "wideBoldFont"
|
||||||
#define XtNwideChars "wideChars"
|
#define XtNwideChars "wideChars"
|
||||||
#define XtNwideFont "wideFont"
|
#define XtNwideFont "wideFont"
|
||||||
|
@ -655,7 +716,10 @@ extern char **environ;
|
||||||
#define XtNxmcGlitch "xmcGlitch" /* ncurses-testing */
|
#define XtNxmcGlitch "xmcGlitch" /* ncurses-testing */
|
||||||
#define XtNxmcInline "xmcInline" /* ncurses-testing */
|
#define XtNxmcInline "xmcInline" /* ncurses-testing */
|
||||||
#define XtNxmcMoveSGR "xmcMoveSGR" /* ncurses-testing */
|
#define XtNxmcMoveSGR "xmcMoveSGR" /* ncurses-testing */
|
||||||
|
#define XtNzIconBeep "zIconBeep"
|
||||||
|
#define XtNzIconTitleFormat "zIconTitleFormat"
|
||||||
|
|
||||||
|
#define XtCActiveIcon "ActiveIcon"
|
||||||
#define XtCAllowBoldFonts "AllowBoldFonts"
|
#define XtCAllowBoldFonts "AllowBoldFonts"
|
||||||
#define XtCAllowC1Printable "AllowC1Printable"
|
#define XtCAllowC1Printable "AllowC1Printable"
|
||||||
#define XtCAllowColorOps "AllowColorOps"
|
#define XtCAllowColorOps "AllowColorOps"
|
||||||
|
@ -676,10 +740,11 @@ extern char **environ;
|
||||||
#define XtCAppcursorDefault "AppcursorDefault"
|
#define XtCAppcursorDefault "AppcursorDefault"
|
||||||
#define XtCAppkeypadDefault "AppkeypadDefault"
|
#define XtCAppkeypadDefault "AppkeypadDefault"
|
||||||
#define XtCAssumeAllChars "AssumeAllChars"
|
#define XtCAssumeAllChars "AssumeAllChars"
|
||||||
#define XtCAutoWrap "AutoWrap"
|
|
||||||
#define XtCAutoScrollLock "AutoScrollLock"
|
#define XtCAutoScrollLock "AutoScrollLock"
|
||||||
|
#define XtCAutoWrap "AutoWrap"
|
||||||
#define XtCAwaitInput "AwaitInput"
|
#define XtCAwaitInput "AwaitInput"
|
||||||
#define XtCBackarrowKey "BackarrowKey"
|
#define XtCBackarrowKey "BackarrowKey"
|
||||||
|
#define XtCBackarrowKeyIsErase "BackarrowKeyIsErase"
|
||||||
#define XtCBellIsUrgent "BellIsUrgent"
|
#define XtCBellIsUrgent "BellIsUrgent"
|
||||||
#define XtCBellOnReset "BellOnReset"
|
#define XtCBellOnReset "BellOnReset"
|
||||||
#define XtCBellSuppressTime "BellSuppressTime"
|
#define XtCBellSuppressTime "BellSuppressTime"
|
||||||
|
@ -703,10 +768,12 @@ extern char **environ;
|
||||||
#define XtCCombiningChars "CombiningChars"
|
#define XtCCombiningChars "CombiningChars"
|
||||||
#define XtCCtrlFKeys "CtrlFKeys"
|
#define XtCCtrlFKeys "CtrlFKeys"
|
||||||
#define XtCCurses "Curses"
|
#define XtCCurses "Curses"
|
||||||
|
#define XtCCursorBar "CursorBar"
|
||||||
#define XtCCursorBlink "CursorBlink"
|
#define XtCCursorBlink "CursorBlink"
|
||||||
#define XtCCursorBlinkXOR "CursorBlinkXOR"
|
#define XtCCursorBlinkXOR "CursorBlinkXOR"
|
||||||
#define XtCCursorOffTime "CursorOffTime"
|
#define XtCCursorOffTime "CursorOffTime"
|
||||||
#define XtCCursorOnTime "CursorOnTime"
|
#define XtCCursorOnTime "CursorOnTime"
|
||||||
|
#define XtCCursorTheme "CursorTheme"
|
||||||
#define XtCCursorUnderLine "CursorUnderLine"
|
#define XtCCursorUnderLine "CursorUnderLine"
|
||||||
#define XtCCutNewline "CutNewline"
|
#define XtCCutNewline "CutNewline"
|
||||||
#define XtCCutToBeginningOfLine "CutToBeginningOfLine"
|
#define XtCCutToBeginningOfLine "CutToBeginningOfLine"
|
||||||
|
@ -751,17 +818,25 @@ extern char **environ;
|
||||||
#define XtCHighlightColorMode "HighlightColorMode"
|
#define XtCHighlightColorMode "HighlightColorMode"
|
||||||
#define XtCHighlightReverse "HighlightReverse"
|
#define XtCHighlightReverse "HighlightReverse"
|
||||||
#define XtCHighlightSelection "HighlightSelection"
|
#define XtCHighlightSelection "HighlightSelection"
|
||||||
|
#define XtCHold "Hold"
|
||||||
|
#define XtCHpFunctionKeys "HpFunctionKeys"
|
||||||
#define XtCHpLowerleftBugCompat "HpLowerleftBugCompat"
|
#define XtCHpLowerleftBugCompat "HpLowerleftBugCompat"
|
||||||
#define XtCI18nSelections "I18nSelections"
|
#define XtCI18nSelections "I18nSelections"
|
||||||
|
#define XtCIconFont "IconFont"
|
||||||
|
#define XtCIconGeometry "IconGeometry"
|
||||||
#define XtCIconHint "IconHint"
|
#define XtCIconHint "IconHint"
|
||||||
|
#define XtCIncrementalGraphics "IncrementalGraphics"
|
||||||
#define XtCIndicatorFormat "IndicatorFormat"
|
#define XtCIndicatorFormat "IndicatorFormat"
|
||||||
#define XtCInitialFont "InitialFont"
|
#define XtCInitialFont "InitialFont"
|
||||||
|
#define XtCInternalBorder "InternalBorder"
|
||||||
#define XtCJumpScroll "JumpScroll"
|
#define XtCJumpScroll "JumpScroll"
|
||||||
#define XtCKeepClipboard "KeepClipboard"
|
#define XtCKeepClipboard "KeepClipboard"
|
||||||
#define XtCKeepSelection "KeepSelection"
|
#define XtCKeepSelection "KeepSelection"
|
||||||
#define XtCKeyboardDialect "KeyboardDialect"
|
#define XtCKeyboardDialect "KeyboardDialect"
|
||||||
#define XtCLimitFontsets "LimitFontsets"
|
#define XtCKeyboardType "KeyboardType"
|
||||||
|
#define XtCLimitFontHeight "LimitFontHeight"
|
||||||
#define XtCLimitFontWidth "LimitFontWidth"
|
#define XtCLimitFontWidth "LimitFontWidth"
|
||||||
|
#define XtCLimitFontsets "LimitFontsets"
|
||||||
#define XtCLimitResize "LimitResize"
|
#define XtCLimitResize "LimitResize"
|
||||||
#define XtCLimitResponse "LimitResponse"
|
#define XtCLimitResponse "LimitResponse"
|
||||||
#define XtCLocale "Locale"
|
#define XtCLocale "Locale"
|
||||||
|
@ -771,11 +846,16 @@ extern char **environ;
|
||||||
#define XtCLogging "Logging"
|
#define XtCLogging "Logging"
|
||||||
#define XtCLoginShell "LoginShell"
|
#define XtCLoginShell "LoginShell"
|
||||||
#define XtCMarginBell "MarginBell"
|
#define XtCMarginBell "MarginBell"
|
||||||
|
#define XtCMaxBufSize "MaxBufSize"
|
||||||
#define XtCMaxGraphicSize "MaxGraphicSize"
|
#define XtCMaxGraphicSize "MaxGraphicSize"
|
||||||
|
#define XtCMaxStringParse "MaxStringParse"
|
||||||
#define XtCMaximized "Maximized"
|
#define XtCMaximized "Maximized"
|
||||||
#define XtCMenuBar "MenuBar" /* internal */
|
#define XtCMenuBar "MenuBar" /* internal */
|
||||||
#define XtCMenuHeight "MenuHeight"
|
#define XtCMenuHeight "MenuHeight"
|
||||||
|
#define XtCMenuLocale "MenuLocale"
|
||||||
|
#define XtCMessages "Messages"
|
||||||
#define XtCMetaSendsEscape "MetaSendsEscape"
|
#define XtCMetaSendsEscape "MetaSendsEscape"
|
||||||
|
#define XtCMinBufSize "MinBufSize"
|
||||||
#define XtCMkSamplePass "MkSamplePass"
|
#define XtCMkSamplePass "MkSamplePass"
|
||||||
#define XtCMkSampleSize "MkSampleSize"
|
#define XtCMkSampleSize "MkSampleSize"
|
||||||
#define XtCMkWidth "MkWidth"
|
#define XtCMkWidth "MkWidth"
|
||||||
|
@ -791,11 +871,19 @@ extern char **environ;
|
||||||
#define XtCNumColorRegisters "NumColorRegisters"
|
#define XtCNumColorRegisters "NumColorRegisters"
|
||||||
#define XtCNumLock "NumLock"
|
#define XtCNumLock "NumLock"
|
||||||
#define XtCOldXtermFKeys "OldXtermFKeys"
|
#define XtCOldXtermFKeys "OldXtermFKeys"
|
||||||
|
#define XtCOmitTranslation "OmitTranslation"
|
||||||
#define XtCPointerFont "PointerFont"
|
#define XtCPointerFont "PointerFont"
|
||||||
#define XtCPointerMode "PointerMode"
|
#define XtCPointerMode "PointerMode"
|
||||||
#define XtCPopOnBell "PopOnBell"
|
#define XtCPopOnBell "PopOnBell"
|
||||||
#define XtCPrecompose "Precompose"
|
#define XtCPrecompose "Precompose"
|
||||||
|
#define XtCPreferLatin1 "PreferLatin1"
|
||||||
#define XtCPrintAttributes "PrintAttributes"
|
#define XtCPrintAttributes "PrintAttributes"
|
||||||
|
#define XtCPrintFileImmediate "PrintFileImmediate"
|
||||||
|
#define XtCPrintFileOnXError "PrintFileOnXError"
|
||||||
|
#define XtCPrintModeImmediate "PrintModeImmediate"
|
||||||
|
#define XtCPrintModeOnXError "PrintModeOnXError"
|
||||||
|
#define XtCPrintOptsImmediate "PrintOptsImmediate"
|
||||||
|
#define XtCPrintOptsOnXError "PrintOptsOnXError"
|
||||||
#define XtCPrinterAutoClose "PrinterAutoClose"
|
#define XtCPrinterAutoClose "PrinterAutoClose"
|
||||||
#define XtCPrinterCommand "PrinterCommand"
|
#define XtCPrinterCommand "PrinterCommand"
|
||||||
#define XtCPrinterControlMode "PrinterControlMode"
|
#define XtCPrinterControlMode "PrinterControlMode"
|
||||||
|
@ -803,22 +891,33 @@ extern char **environ;
|
||||||
#define XtCPrinterFormFeed "PrinterFormFeed"
|
#define XtCPrinterFormFeed "PrinterFormFeed"
|
||||||
#define XtCPrinterNewLine "PrinterNewLine"
|
#define XtCPrinterNewLine "PrinterNewLine"
|
||||||
#define XtCPrivateColorRegisters "PrivateColorRegisters"
|
#define XtCPrivateColorRegisters "PrivateColorRegisters"
|
||||||
|
#define XtCPtyHandshake "PtyHandshake"
|
||||||
|
#define XtCPtyInitialErase "PtyInitialErase"
|
||||||
|
#define XtCPtySttySize "PtySttySize"
|
||||||
#define XtCQuietGrab "QuietGrab"
|
#define XtCQuietGrab "QuietGrab"
|
||||||
#define XtCRegisDefaultFont "RegisDefaultFont"
|
#define XtCRegisDefaultFont "RegisDefaultFont"
|
||||||
#define XtCRegisScreenSize "RegisScreenSize"
|
#define XtCRegisScreenSize "RegisScreenSize"
|
||||||
#define XtCRenderFont "RenderFont"
|
#define XtCRenderFont "RenderFont"
|
||||||
|
#define XtCReportCClass "ReportCClass"
|
||||||
|
#define XtCReportColors "ReportColors"
|
||||||
|
#define XtCReportFonts "ReportFonts"
|
||||||
|
#define XtCReportIcons "ReportIcons"
|
||||||
|
#define XtCReportXRes "ReportXRes"
|
||||||
#define XtCResizeByPixel "ResizeByPixel"
|
#define XtCResizeByPixel "ResizeByPixel"
|
||||||
#define XtCResizeGravity "ResizeGravity"
|
#define XtCResizeGravity "ResizeGravity"
|
||||||
#define XtCRetryInputMethod "RetryInputMethod"
|
#define XtCRetryInputMethod "RetryInputMethod"
|
||||||
#define XtCReverseWrap "ReverseWrap"
|
#define XtCReverseWrap "ReverseWrap"
|
||||||
#define XtCRightScrollBar "RightScrollBar"
|
#define XtCRightScrollBar "RightScrollBar"
|
||||||
|
#define XtCSameName "SameName"
|
||||||
#define XtCSaveLines "SaveLines"
|
#define XtCSaveLines "SaveLines"
|
||||||
#define XtCScaleHeight "ScaleHeight"
|
#define XtCScaleHeight "ScaleHeight"
|
||||||
|
#define XtCScoFunctionKeys "ScoFunctionKeys"
|
||||||
#define XtCScrollBar "ScrollBar"
|
#define XtCScrollBar "ScrollBar"
|
||||||
#define XtCScrollBarBorder "ScrollBarBorder"
|
#define XtCScrollBarBorder "ScrollBarBorder"
|
||||||
#define XtCScrollCond "ScrollCond"
|
#define XtCScrollCond "ScrollCond"
|
||||||
#define XtCScrollLines "ScrollLines"
|
#define XtCScrollLines "ScrollLines"
|
||||||
#define XtCSelectToClipboard "SelectToClipboard"
|
#define XtCSelectToClipboard "SelectToClipboard"
|
||||||
|
#define XtCSessionMgt "SessionMgt"
|
||||||
#define XtCShiftEscape "ShiftEscape"
|
#define XtCShiftEscape "ShiftEscape"
|
||||||
#define XtCShiftFonts "ShiftFonts"
|
#define XtCShiftFonts "ShiftFonts"
|
||||||
#define XtCShowBlinkAsBold "ShowBlinkAsBold"
|
#define XtCShowBlinkAsBold "ShowBlinkAsBold"
|
||||||
|
@ -827,28 +926,38 @@ extern char **environ;
|
||||||
#define XtCSignalInhibit "SignalInhibit"
|
#define XtCSignalInhibit "SignalInhibit"
|
||||||
#define XtCSixelScrolling "SixelScrolling"
|
#define XtCSixelScrolling "SixelScrolling"
|
||||||
#define XtCSixelScrollsRight "SixelScrollsRight"
|
#define XtCSixelScrollsRight "SixelScrollsRight"
|
||||||
|
#define XtCSunFunctionKeys "SunFunctionKeys"
|
||||||
|
#define XtCSunKeyboard "SunKeyboard"
|
||||||
|
#define XtCTcapFunctionKeys "TcapFunctionKeys"
|
||||||
#define XtCTekInhibit "TekInhibit"
|
#define XtCTekInhibit "TekInhibit"
|
||||||
#define XtCTekSmall "TekSmall"
|
#define XtCTekSmall "TekSmall"
|
||||||
#define XtCTekStartup "TekStartup"
|
#define XtCTekStartup "TekStartup"
|
||||||
|
#define XtCTermName "TermName"
|
||||||
#define XtCTiXtraScroll "TiXtraScroll"
|
#define XtCTiXtraScroll "TiXtraScroll"
|
||||||
#define XtCTiteInhibit "TiteInhibit"
|
#define XtCTiteInhibit "TiteInhibit"
|
||||||
#define XtCTitleModes "TitleModes"
|
#define XtCTitleModes "TitleModes"
|
||||||
#define XtCToolBar "ToolBar"
|
#define XtCToolBar "ToolBar"
|
||||||
#define XtCTrimSelection "TrimSelection"
|
#define XtCTrimSelection "TrimSelection"
|
||||||
|
#define XtCTtyModes "TtyModes"
|
||||||
#define XtCUnderLine "UnderLine"
|
#define XtCUnderLine "UnderLine"
|
||||||
#define XtCUseBorderClipping "UseBorderClipping"
|
#define XtCUseBorderClipping "UseBorderClipping"
|
||||||
#define XtCUseClipping "UseClipping"
|
#define XtCUseClipping "UseClipping"
|
||||||
|
#define XtCUseInsertMode "UseInsertMode"
|
||||||
#define XtCUtf8 "Utf8"
|
#define XtCUtf8 "Utf8"
|
||||||
#define XtCUtf8Fonts "Utf8Fonts"
|
#define XtCUtf8Fonts "Utf8Fonts"
|
||||||
#define XtCUtf8Latin1 "Utf8Latin1"
|
#define XtCUtf8Latin1 "Utf8Latin1"
|
||||||
#define XtCUtf8SelectTypes "Utf8SelectTypes"
|
#define XtCUtf8SelectTypes "Utf8SelectTypes"
|
||||||
#define XtCUtf8Title "Utf8Title"
|
#define XtCUtf8Title "Utf8Title"
|
||||||
#define XtCUtf8Weblike "Utf8Weblike"
|
#define XtCUtf8Weblike "Utf8Weblike"
|
||||||
|
#define XtCUtmpDisplayId "UtmpDisplayId"
|
||||||
|
#define XtCUtmpInhibit "UtmpInhibit"
|
||||||
#define XtCVT100Graphics "VT100Graphics"
|
#define XtCVT100Graphics "VT100Graphics"
|
||||||
|
#define XtCValidShells "ValidShells"
|
||||||
#define XtCVeryBoldColors "VeryBoldColors"
|
#define XtCVeryBoldColors "VeryBoldColors"
|
||||||
#define XtCVisualBell "VisualBell"
|
#define XtCVisualBell "VisualBell"
|
||||||
#define XtCVisualBellDelay "VisualBellDelay"
|
#define XtCVisualBellDelay "VisualBellDelay"
|
||||||
#define XtCVisualBellLine "VisualBellLine"
|
#define XtCVisualBellLine "VisualBellLine"
|
||||||
|
#define XtCWaitForMap "WaitForMap"
|
||||||
#define XtCWideBoldFont "WideBoldFont"
|
#define XtCWideBoldFont "WideBoldFont"
|
||||||
#define XtCWideChars "WideChars"
|
#define XtCWideChars "WideChars"
|
||||||
#define XtCWideFont "WideFont"
|
#define XtCWideFont "WideFont"
|
||||||
|
@ -860,6 +969,8 @@ extern char **environ;
|
||||||
#define XtCXmcGlitch "XmcGlitch" /* ncurses-testing */
|
#define XtCXmcGlitch "XmcGlitch" /* ncurses-testing */
|
||||||
#define XtCXmcInline "XmcInline" /* ncurses-testing */
|
#define XtCXmcInline "XmcInline" /* ncurses-testing */
|
||||||
#define XtCXmcMoveSGR "XmcMoveSGR" /* ncurses-testing */
|
#define XtCXmcMoveSGR "XmcMoveSGR" /* ncurses-testing */
|
||||||
|
#define XtCZIconBeep "ZIconBeep"
|
||||||
|
#define XtCZIconTitleFormat "ZIconTitleFormat"
|
||||||
|
|
||||||
#if defined(NO_ACTIVE_ICON) && !defined(XtNgeometry)
|
#if defined(NO_ACTIVE_ICON) && !defined(XtNgeometry)
|
||||||
#define XtNgeometry "geometry"
|
#define XtNgeometry "geometry"
|
||||||
|
@ -896,13 +1007,13 @@ extern void HandleGINInput PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void TCursorToggle (TekWidget /* tw */, int /* toggle */);
|
extern void TCursorToggle (TekWidget /* tw */, int /* toggle */);
|
||||||
extern void TekCopy (TekWidget /* tw */);
|
extern void TekCopy (TekWidget /* tw */);
|
||||||
extern void TekEnqMouse (TekWidget /* tw */, int /* c */);
|
extern void TekEnqMouse (TekWidget /* tw */, int /* c */);
|
||||||
extern void TekExpose (Widget /* w */, XEvent * /* event */, Region /* region */);
|
extern void TekExpose (Widget /* w */, XEvent * /* event */, Region /* region */);
|
||||||
extern void TekGINoff (TekWidget /* tw */);
|
extern void TekGINoff (TekWidget /* tw */);
|
||||||
extern void TekRefresh (TekWidget /* tw */);
|
extern void TekRefresh (TekWidget /* tw */);
|
||||||
extern void TekRepaint (TekWidget /* xw */);
|
extern void TekRepaint (TekWidget /* xw */);
|
||||||
extern void TekReverseVideo (XtermWidget /* xw */, TekWidget /* tw */);
|
extern void TekReverseVideo (XtermWidget /* xw */, TekWidget /* tw */);
|
||||||
extern void TekRun (void);
|
extern void TekRun (void);
|
||||||
extern void TekSetFontSize (TekWidget /* tw */, Bool /* fromMenu */, int /* newitem */);
|
extern void TekSetFontSize (TekWidget /* tw */, Bool /* fromMenu */, int /* newitem */);
|
||||||
extern void TekSetWinSize (TekWidget /* tw */);
|
extern void TekSetWinSize (TekWidget /* tw */);
|
||||||
extern void TekSimulatePageButton (TekWidget /* tw */, Bool /* reset */);
|
extern void TekSimulatePageButton (TekWidget /* tw */, Bool /* reset */);
|
||||||
#endif
|
#endif
|
||||||
|
@ -918,11 +1029,11 @@ extern void TekSimulatePageButton (TekWidget /* tw */, Bool /* reset */);
|
||||||
(s)->event_mask |= PointerMotionMask; \
|
(s)->event_mask |= PointerMotionMask; \
|
||||||
XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); }
|
XSelectInput(XtDisplay((t)), XtWindow((t)), (long) (s)->event_mask); }
|
||||||
|
|
||||||
extern Bool SendMousePosition (XtermWidget /* w */, XEvent* /* event */);
|
extern Bool SendMousePosition (XtermWidget /* w */, XEvent* /* event */);
|
||||||
extern XtermMouseModes okSendMousePos(XtermWidget /* xw */);
|
extern XtermMouseModes okSendMousePos(XtermWidget /* xw */);
|
||||||
extern void DiredButton PROTO_XT_ACTIONS_ARGS;
|
extern void DiredButton PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void DisownSelection (XtermWidget /* xw */);
|
extern void DisownSelection (XtermWidget /* xw */);
|
||||||
extern void UnhiliteSelection (XtermWidget /* xw */);
|
extern void UnhiliteSelection (XtermWidget /* xw */);
|
||||||
extern void HandleCopySelection PROTO_XT_ACTIONS_ARGS;
|
extern void HandleCopySelection PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void HandleInsertSelection PROTO_XT_ACTIONS_ARGS;
|
extern void HandleInsertSelection PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void HandleKeyboardSelectEnd PROTO_XT_ACTIONS_ARGS;
|
extern void HandleKeyboardSelectEnd PROTO_XT_ACTIONS_ARGS;
|
||||||
|
@ -936,8 +1047,8 @@ extern void HandleSelectExtend PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void HandleSelectSet PROTO_XT_ACTIONS_ARGS;
|
extern void HandleSelectSet PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void HandleSelectStart PROTO_XT_ACTIONS_ARGS;
|
extern void HandleSelectStart PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void HandleStartExtend PROTO_XT_ACTIONS_ARGS;
|
extern void HandleStartExtend PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void ResizeSelection (TScreen * /* screen */, int /* rows */, int /* cols */);
|
extern void ResizeSelection (TScreen * /* screen */, int /* rows */, int /* cols */);
|
||||||
extern void ScrollSelection (TScreen * /* screen */, int /* amount */, Bool /* always */);
|
extern void ScrollSelection (TScreen * /* screen */, int /* amount */, Bool /* always */);
|
||||||
extern void TrackMouse (XtermWidget /* xw */, int /* func */, CELL * /* start */, int /* firstrow */, int /* lastrow */);
|
extern void TrackMouse (XtermWidget /* xw */, int /* func */, CELL * /* start */, int /* firstrow */, int /* lastrow */);
|
||||||
extern void ViButton PROTO_XT_ACTIONS_ARGS;
|
extern void ViButton PROTO_XT_ACTIONS_ARGS;
|
||||||
|
|
||||||
|
@ -946,8 +1057,8 @@ extern int xtermUtf8ToTextList (XtermWidget /* xw */, XTextProperty * /* text_pr
|
||||||
extern void xtermButtonInit (XtermWidget /* xw */);
|
extern void xtermButtonInit (XtermWidget /* xw */);
|
||||||
|
|
||||||
#if OPT_DEC_LOCATOR
|
#if OPT_DEC_LOCATOR
|
||||||
extern void GetLocatorPosition (XtermWidget /* w */);
|
extern void GetLocatorPosition (XtermWidget /* w */);
|
||||||
extern void InitLocatorFilter (XtermWidget /* w */);
|
extern void InitLocatorFilter (XtermWidget /* w */);
|
||||||
#endif /* OPT_DEC_LOCATOR */
|
#endif /* OPT_DEC_LOCATOR */
|
||||||
|
|
||||||
#if OPT_FOCUS_EVENT
|
#if OPT_FOCUS_EVENT
|
||||||
|
@ -957,10 +1068,10 @@ extern void SendFocusButton(XtermWidget /* xw */, XFocusChangeEvent * /* event *
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OPT_PASTE64
|
#if OPT_PASTE64
|
||||||
extern void AppendToSelectionBuffer (TScreen * /* screen */, unsigned /* c */, String /* selection */);
|
extern void AppendToSelectionBuffer (TScreen * /* screen */, unsigned /* c */, String /* selection */);
|
||||||
extern void ClearSelectionBuffer (TScreen * /* screen */, String /* selection */);
|
extern void ClearSelectionBuffer (TScreen * /* screen */, String /* selection */);
|
||||||
extern void CompleteSelection (XtermWidget /* xw */, String * /* args */, Cardinal /* len */);
|
extern void CompleteSelection (XtermWidget /* xw */, String * /* args */, Cardinal /* len */);
|
||||||
extern void xtermGetSelection (Widget /* w */, Time /* ev_time */, String * /* params */, Cardinal /* num_params */, Atom * /* targets */);
|
extern void xtermGetSelection (Widget /* w */, Time /* ev_time */, String * /* params */, Cardinal /* num_params */, Atom * /* targets */);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OPT_READLINE
|
#if OPT_READLINE
|
||||||
|
@ -971,18 +1082,20 @@ extern void ReadLineButton PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void report_char_class(XtermWidget);
|
extern void report_char_class(XtermWidget);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define IsLatin1(n) (((n) >= 32 && (n) <= 126) || ((n) >= 160 && (n) <= 255))
|
#define IsAscii1(n) (((n) >= 32 && (n) <= 126))
|
||||||
|
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
#define WideCells(n) (((IChar)(n) >= first_widechar) ? my_wcwidth((wchar_t) (n)) : 1)
|
#define WideCells(n) (((IChar)(n) >= first_widechar) ? my_wcwidth((wchar_t) (n)) : 1)
|
||||||
#define isWideFrg(n) (((n) == HIDDEN_CHAR) || (WideCells((n)) == 2))
|
#define isWideFrg(n) (((n) == HIDDEN_CHAR) || (WideCells((n)) == 2))
|
||||||
#define isWide(n) (((IChar)(n) >= first_widechar) && isWideFrg(n))
|
#define isWide(n) (((IChar)(n) >= first_widechar) && isWideFrg(n))
|
||||||
#define CharWidth(screen, n) ((!((screen)->utf8_mode) && ((n) < 256)) \
|
#define CharWidth(screen, n) (((n) < 256) \
|
||||||
? (IsLatin1(n) ? 1 : 0) \
|
? (IsLatin1(n) ? 1 : 0) \
|
||||||
: my_wcwidth((wchar_t) (n)))
|
: my_wcwidth((wchar_t) (n)))
|
||||||
|
#define IsLatin1(n) (IsAscii1(n) || ((n) >= 160 && (n) <= 255))
|
||||||
#else
|
#else
|
||||||
#define WideCells(n) 1
|
#define WideCells(n) 1
|
||||||
#define CharWidth(screen, n) (IsLatin1(n) ? 1 : 0)
|
#define CharWidth(screen, n) (IsLatin1(n) ? 1 : 0)
|
||||||
|
#define IsLatin1(n) (IsAscii1(n) || ((n) >= 160))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* cachedCgs.c */
|
/* cachedCgs.c */
|
||||||
|
@ -1000,6 +1113,7 @@ extern void setCgsCSet(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/
|
||||||
extern void setCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/);
|
extern void setCgsFont(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/);
|
||||||
extern void setCgsFont2(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/, unsigned /*which*/);
|
extern void setCgsFont2(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, XTermFonts * /*font*/, unsigned /*which*/);
|
||||||
extern void setCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*fg*/);
|
extern void setCgsFore(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*fg*/);
|
||||||
|
extern void setCgsLine(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*cgsId*/, Pixel /*fg*/);
|
||||||
extern void swapCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/);
|
extern void swapCgs(XtermWidget /*xw*/, VTwin * /*cgsWin*/, CgsEnum /*dstCgsId*/, CgsEnum /*srcCgsId*/);
|
||||||
|
|
||||||
#ifdef NO_LEAKS
|
#ifdef NO_LEAKS
|
||||||
|
@ -1011,7 +1125,7 @@ extern Bool CheckBufPtrs (TScreen * /* screen */);
|
||||||
extern Bool set_cursor_gcs (XtermWidget /* xw */);
|
extern Bool set_cursor_gcs (XtermWidget /* xw */);
|
||||||
extern char * vt100ResourceToString (XtermWidget /* xw */, const char * /* name */);
|
extern char * vt100ResourceToString (XtermWidget /* xw */, const char * /* name */);
|
||||||
extern int VTInit (XtermWidget /* xw */);
|
extern int VTInit (XtermWidget /* xw */);
|
||||||
extern Bool FindFontSelection (XtermWidget /* xw */, const char * /* atom_name */, Bool /* justprobe */);
|
extern Bool FindFontSelection (XtermWidget /* xw */, const char * /* atom_name */, Bool /* justprobe */);
|
||||||
extern void HideCursor (XtermWidget /* xw */);
|
extern void HideCursor (XtermWidget /* xw */);
|
||||||
extern void RestartBlinking(XtermWidget /* xw */);
|
extern void RestartBlinking(XtermWidget /* xw */);
|
||||||
extern void ShowCursor (XtermWidget /* xw */);
|
extern void ShowCursor (XtermWidget /* xw */);
|
||||||
|
@ -1020,7 +1134,7 @@ extern void ToggleAlternate (XtermWidget /* xw */);
|
||||||
extern void VTInitTranslations (void);
|
extern void VTInitTranslations (void);
|
||||||
extern GCC_NORETURN void VTReset (XtermWidget /* xw */, int /* full */, int /* saved */);
|
extern GCC_NORETURN void VTReset (XtermWidget /* xw */, int /* full */, int /* saved */);
|
||||||
extern void VTRun (XtermWidget /* xw */);
|
extern void VTRun (XtermWidget /* xw */);
|
||||||
extern void dotext (XtermWidget /* xw */, DECNRCM_codes /* charset */, IChar * /* buf */, Cardinal /* len */);
|
extern void dotext (XtermWidget /* xw */, DECNRCM_codes /* charset */, IChar * /* buf */, Cardinal /* len */);
|
||||||
extern void getKeymapResources(Widget /* w */, const char * /*mapName */, const char * /* mapClass */, const char * /* type */, void * /* result */, size_t /* size */);
|
extern void getKeymapResources(Widget /* w */, const char * /*mapName */, const char * /* mapClass */, const char * /* type */, void * /* result */, size_t /* size */);
|
||||||
extern void initBorderGC (XtermWidget /* xw */, VTwin * /* win */);
|
extern void initBorderGC (XtermWidget /* xw */, VTwin * /* win */);
|
||||||
extern void lookupSelectUnit(XtermWidget /* xw */, Cardinal /* item */, String /* value */);
|
extern void lookupSelectUnit(XtermWidget /* xw */, Cardinal /* item */, String /* value */);
|
||||||
|
@ -1030,16 +1144,16 @@ extern void resetCharsets (TScreen * /* screen */);
|
||||||
extern void resetMargins (XtermWidget /* xw */);
|
extern void resetMargins (XtermWidget /* xw */);
|
||||||
extern void restoreCharsets (TScreen * /* screen */, DECNRCM_codes * /* source */);
|
extern void restoreCharsets (TScreen * /* screen */, DECNRCM_codes * /* source */);
|
||||||
extern void saveCharsets (TScreen * /* screen */, DECNRCM_codes * /* target */);
|
extern void saveCharsets (TScreen * /* screen */, DECNRCM_codes * /* target */);
|
||||||
extern void set_max_col(TScreen * /* screen */, int /* cols */);
|
extern void set_max_col(TScreen * /* screen */, int /* cols */);
|
||||||
extern void set_max_row(TScreen * /* screen */, int /* rows */);
|
extern void set_max_row(TScreen * /* screen */, int /* rows */);
|
||||||
extern void unparse_disallowed_ops (XtermWidget /* xw */, char * /* value */);
|
extern void unparse_disallowed_ops (XtermWidget /* xw */, char * /* value */);
|
||||||
extern void unparse_end (XtermWidget /* xw */);
|
extern void unparse_end (XtermWidget /* xw */);
|
||||||
extern void unparseputc (XtermWidget /* xw */, int /* c */);
|
extern void unparseputc (XtermWidget /* xw */, int /* c */);
|
||||||
extern void unparseputc1 (XtermWidget /* xw */, int /* c */);
|
extern void unparseputc1 (XtermWidget /* xw */, int /* c */);
|
||||||
extern void unparseputn (XtermWidget /* xw */, unsigned /* n */);
|
extern void unparseputn (XtermWidget /* xw */, unsigned /* n */);
|
||||||
extern void unparseputs (XtermWidget /* xw */, const char * /* s */);
|
extern void unparseputs (XtermWidget /* xw */, const char * /* s */);
|
||||||
extern void unparseseq (XtermWidget /* xw */, ANSI * /* ap */);
|
extern void unparseseq (XtermWidget /* xw */, ANSI * /* ap */);
|
||||||
extern void v_write (int /* f */, const Char * /* d */, size_t /* len */);
|
extern void v_write (int /* f */, const Char * /* d */, size_t /* len */);
|
||||||
extern void xtermAddInput (Widget /* w */);
|
extern void xtermAddInput (Widget /* w */);
|
||||||
extern void xtermDecodeSCS (XtermWidget /* xw */, int /* which */, int /* sgroup */, int /* prefix */, int /* suffix */);
|
extern void xtermDecodeSCS (XtermWidget /* xw */, int /* which */, int /* sgroup */, int /* prefix */, int /* suffix */);
|
||||||
|
|
||||||
|
@ -1056,8 +1170,8 @@ extern TInput *lookupTInput (XtermWidget /* xw */, Widget /* w */);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OPT_ISO_COLORS
|
#if OPT_ISO_COLORS
|
||||||
extern void SGR_Background (XtermWidget /* xw */, int /* color */);
|
extern void SGR_Background (XtermWidget /* xw */, int /* color */);
|
||||||
extern void SGR_Foreground (XtermWidget /* xw */, int /* color */);
|
extern void SGR_Foreground (XtermWidget /* xw */, int /* color */);
|
||||||
extern void setExtendedColors (XtermWidget /* xw */);
|
extern void setExtendedColors (XtermWidget /* xw */);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -1066,8 +1180,9 @@ extern void noleaks_charproc (void);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* charsets.c */
|
/* charsets.c */
|
||||||
extern unsigned xtermCharSetIn (XtermWidget /* xw */, unsigned /* code */, DECNRCM_codes /* charset */);
|
extern unsigned xtermCharSetIn (XtermWidget /* xw */, unsigned /* code */, DECNRCM_codes /* charset */);
|
||||||
extern int xtermCharSetOut (XtermWidget /* xw */, IChar * /* buf */, IChar * /* ptr */, DECNRCM_codes /* charset */);
|
extern Cardinal xtermCharSetOut (XtermWidget /* xw */, Cardinal /* length */, DECNRCM_codes /* charset */);
|
||||||
|
extern int xtermCharSetDec (XtermWidget /* xw */, IChar /* ch */, DECNRCM_codes /* cs */);
|
||||||
|
|
||||||
/* cursor.c */
|
/* cursor.c */
|
||||||
extern int CursorCol (XtermWidget /* xw */);
|
extern int CursorCol (XtermWidget /* xw */);
|
||||||
|
@ -1080,17 +1195,17 @@ extern void CursorForward (XtermWidget /* xw */, int /* n */);
|
||||||
extern void CursorNextLine (XtermWidget /* xw */, int /* count */);
|
extern void CursorNextLine (XtermWidget /* xw */, int /* count */);
|
||||||
extern void CursorPrevLine (XtermWidget /* xw */, int /* count */);
|
extern void CursorPrevLine (XtermWidget /* xw */, int /* count */);
|
||||||
extern void CursorRestore2 (XtermWidget /* xw */, SavedCursor * /* sc */);
|
extern void CursorRestore2 (XtermWidget /* xw */, SavedCursor * /* sc */);
|
||||||
extern void CursorRestore (XtermWidget /* xw */);
|
extern void CursorRestore (XtermWidget /* xw */);
|
||||||
extern void CursorSave2 (XtermWidget /* xw */, SavedCursor * /* sc */);
|
extern void CursorSave2 (XtermWidget /* xw */, SavedCursor * /* sc */);
|
||||||
extern void CursorSave (XtermWidget /* xw */);
|
extern void CursorSave (XtermWidget /* xw */);
|
||||||
extern void CursorSet (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* flags */);
|
extern void CursorSet (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* flags */);
|
||||||
extern void CursorUp (TScreen * /* screen */, int /* n */);
|
extern void CursorUp (TScreen * /* screen */, int /* n */);
|
||||||
extern void RevIndex (XtermWidget /* xw */, int /* amount */);
|
extern void RevIndex (XtermWidget /* xw */, int /* amount */);
|
||||||
extern void xtermIndex (XtermWidget /* xw */, int /* amount */);
|
extern void xtermIndex (XtermWidget /* xw */, int /* amount */);
|
||||||
|
|
||||||
#if OPT_TRACE
|
#if OPT_TRACE
|
||||||
extern int set_cur_col(TScreen * /* screen */, int /* value */);
|
extern int set_cur_col(TScreen * /* screen */, int /* value */);
|
||||||
extern int set_cur_row(TScreen * /* screen */, int /* value */);
|
extern int set_cur_row(TScreen * /* screen */, int /* value */);
|
||||||
#else
|
#else
|
||||||
#define set_cur_col(screen, value) screen->cur_col = value
|
#define set_cur_col(screen, value) screen->cur_col = value
|
||||||
#define set_cur_row(screen, value) \
|
#define set_cur_row(screen, value) \
|
||||||
|
@ -1104,11 +1219,11 @@ extern int set_cur_row(TScreen * /* screen */, int /* value */);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* cursorfont.c */
|
/* cursorfont.c */
|
||||||
extern Cursor CreateAlternateCursorFontCursor(Display * /* dpy */, char const * /* cursorfont */, unsigned int /* which */);
|
extern Cursor CreateAlternateCursorFontCursor(Display * /* dpy */, char const * /* cursorfont */, unsigned int /* which */);
|
||||||
extern int CursorFontIndexFromShapeName(char const * /* shapename */);
|
extern int CursorFontIndexFromShapeName(char const * /* shapename */);
|
||||||
|
|
||||||
/* doublechr.c */
|
/* doublechr.c */
|
||||||
extern void xterm_DECDHL (XtermWidget /* xw */, Bool /* top */);
|
extern void xterm_DECDHL (XtermWidget /* xw */, Bool /* top */);
|
||||||
extern void xterm_DECSWL (XtermWidget /* xw */);
|
extern void xterm_DECSWL (XtermWidget /* xw */);
|
||||||
extern void xterm_DECDWL (XtermWidget /* xw */);
|
extern void xterm_DECDWL (XtermWidget /* xw */);
|
||||||
extern void xterm_ResetDouble(XtermWidget /* xw */);
|
extern void xterm_ResetDouble(XtermWidget /* xw */);
|
||||||
|
@ -1125,7 +1240,7 @@ extern unsigned xtermParamToState (XtermWidget /* xw */, unsigned /* param */);
|
||||||
extern unsigned xtermStateToParam (XtermWidget /* xw */, unsigned /* state */);
|
extern unsigned xtermStateToParam (XtermWidget /* xw */, unsigned /* state */);
|
||||||
extern Bool xtermDeleteIsDEL (XtermWidget /* xw */);
|
extern Bool xtermDeleteIsDEL (XtermWidget /* xw */);
|
||||||
extern void Input (XtermWidget /* xw */, XKeyEvent */* event */, Bool /* eightbit */);
|
extern void Input (XtermWidget /* xw */, XKeyEvent */* event */, Bool /* eightbit */);
|
||||||
extern void StringInput (XtermWidget /* xw */, const Char * /* string */, size_t /* nbytes */);
|
extern void StringInput (XtermWidget /* xw */, const Char * /* string */, size_t /* nbytes */);
|
||||||
|
|
||||||
#if OPT_NUM_LOCK
|
#if OPT_NUM_LOCK
|
||||||
extern void VTInitModifiers(XtermWidget /* xw */);
|
extern void VTInitModifiers(XtermWidget /* xw */);
|
||||||
|
@ -1145,10 +1260,19 @@ extern void restoreCellData(TScreen * /* screen */, const CellData * /* data */,
|
||||||
/* main.c */
|
/* main.c */
|
||||||
#define ENVP_ARG /**/
|
#define ENVP_ARG /**/
|
||||||
|
|
||||||
extern int main (int /* argc */, char ** /* argv */ ENVP_ARG);
|
extern int main (int /* argc */, char ** /* argv */ ENVP_ARG);
|
||||||
extern int GetBytesAvailable (int /* fd */);
|
extern int xtermDisabledChar(void);
|
||||||
extern int kill_process_group (int /* pid */, int /* sig */);
|
extern int GetBytesAvailable (Display * /* dpy */);
|
||||||
|
extern int kill_process_group (int /* pid */, int /* sig */);
|
||||||
extern int nonblocking_wait (void);
|
extern int nonblocking_wait (void);
|
||||||
|
extern Atom CachedInternAtom(Display * /* display */, const char * /* name */);
|
||||||
|
|
||||||
|
extern int get_tty_erase(int /* fd */, int /* default_erase */, const char * /* tag */);
|
||||||
|
extern int get_tty_lnext(int /* fd */, int /* default_lnext */, const char * /* tag */);
|
||||||
|
|
||||||
|
#if (defined(VMS) || defined(__VMS))
|
||||||
|
#define GetBytesAvailable(dpy) ((dpy)->qlen > 0)
|
||||||
|
#endif
|
||||||
|
|
||||||
#if OPT_PTY_HANDSHAKE
|
#if OPT_PTY_HANDSHAKE
|
||||||
extern void first_map_occurred (void);
|
extern void first_map_occurred (void);
|
||||||
|
@ -1243,6 +1367,7 @@ extern void hide_tek_window (void);
|
||||||
extern void hide_vt_window (void);
|
extern void hide_vt_window (void);
|
||||||
extern GCC_NORETURN void ice_error (IceConn /* iceConn */);
|
extern GCC_NORETURN void ice_error (IceConn /* iceConn */);
|
||||||
extern void init_colored_cursor (Display * /* dpy */);
|
extern void init_colored_cursor (Display * /* dpy */);
|
||||||
|
extern void parse_ansi_params(ANSI * /* params */, const char ** /* string */);
|
||||||
extern void reset_decudk (XtermWidget /* xw */);
|
extern void reset_decudk (XtermWidget /* xw */);
|
||||||
extern void set_tek_visibility (Bool /* on */);
|
extern void set_tek_visibility (Bool /* on */);
|
||||||
extern void set_vt_visibility (Bool /* on */);
|
extern void set_vt_visibility (Bool /* on */);
|
||||||
|
@ -1265,6 +1390,10 @@ extern void xtermShowPointer (XtermWidget /* xw */, Bool /* enable */);
|
||||||
extern void xtermUnsetenv (const char * /* var */);
|
extern void xtermUnsetenv (const char * /* var */);
|
||||||
extern void xtermWarning (const char * /*fmt*/,...) GCC_PRINTFLIKE(1,2);
|
extern void xtermWarning (const char * /*fmt*/,...) GCC_PRINTFLIKE(1,2);
|
||||||
|
|
||||||
|
extern Boolean xtermPopTitle(TScreen * /* screen */, int /* which */, SaveTitle * /* item */);
|
||||||
|
extern void xtermPushTitle(TScreen * /* screen */, int /* which */, SaveTitle * /* item */);
|
||||||
|
extern void xtermFreeTitle(SaveTitle *item);
|
||||||
|
|
||||||
#if OPT_DABBREV
|
#if OPT_DABBREV
|
||||||
extern void HandleDabbrevExpand PROTO_XT_ACTIONS_ARGS;
|
extern void HandleDabbrevExpand PROTO_XT_ACTIONS_ARGS;
|
||||||
#endif
|
#endif
|
||||||
|
@ -1298,12 +1427,12 @@ extern Boolean QueryOneColor(XtermWidget /* xw */, XColor * /* def */);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OPT_MAXIMIZE
|
#if OPT_MAXIMIZE
|
||||||
extern int QueryMaximize (XtermWidget /* xw */, unsigned * /* width */, unsigned * /* height */);
|
extern int QueryMaximize (XtermWidget /* xw */, unsigned * /* width */, unsigned * /* height */);
|
||||||
extern void HandleDeIconify PROTO_XT_ACTIONS_ARGS;
|
extern void HandleDeIconify PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void HandleIconify PROTO_XT_ACTIONS_ARGS;
|
extern void HandleIconify PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void HandleMaximize PROTO_XT_ACTIONS_ARGS;
|
extern void HandleMaximize PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void HandleRestoreSize PROTO_XT_ACTIONS_ARGS;
|
extern void HandleRestoreSize PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void RequestMaximize (XtermWidget /* xw */, int /* maximize */);
|
extern void RequestMaximize (XtermWidget /* xw */, int /* maximize */);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OPT_REPORT_ICONS
|
#if OPT_REPORT_ICONS
|
||||||
|
@ -1372,8 +1501,8 @@ extern PrinterFlags *getPrinterFlags (XtermWidget /* xw */, String * /* params *
|
||||||
extern int xtermPrinterControl (XtermWidget /* xw */, int /* chr */);
|
extern int xtermPrinterControl (XtermWidget /* xw */, int /* chr */);
|
||||||
extern void setPrinterControlMode (XtermWidget /* xw */, int /* mode */);
|
extern void setPrinterControlMode (XtermWidget /* xw */, int /* mode */);
|
||||||
extern void xtermAutoPrint (XtermWidget /* xw */, unsigned /* chr */);
|
extern void xtermAutoPrint (XtermWidget /* xw */, unsigned /* chr */);
|
||||||
extern void xtermMediaControl (XtermWidget /* xw */, int /* param */, int /* private_seq */);
|
extern void xtermMediaControl (XtermWidget /* xw */, int /* param */, int /* private_seq */);
|
||||||
extern void xtermPrintScreen (XtermWidget /* xw */, Bool /* use_DECPEX */, PrinterFlags * /* p */);
|
extern void xtermPrintScreen (XtermWidget /* xw */, Bool /* use_DECPEX */, PrinterFlags * /* p */);
|
||||||
extern void xtermPrintEverything (XtermWidget /* xw */, PrinterFlags * /* p */);
|
extern void xtermPrintEverything (XtermWidget /* xw */, PrinterFlags * /* p */);
|
||||||
extern void xtermPrintImmediately (XtermWidget /* xw */, String /* filename */, int /* opts */, int /* attributes */);
|
extern void xtermPrintImmediately (XtermWidget /* xw */, String /* filename */, int /* opts */, int /* attributes */);
|
||||||
extern void xtermPrintOnXError (XtermWidget /* xw */, int /* n */);
|
extern void xtermPrintOnXError (XtermWidget /* xw */, int /* n */);
|
||||||
|
@ -1395,7 +1524,7 @@ extern void xtermDumpSvg (XtermWidget /* xw */);
|
||||||
|
|
||||||
extern Bool decodeUtf8 (TScreen * /* screen */, PtyData * /* data */);
|
extern Bool decodeUtf8 (TScreen * /* screen */, PtyData * /* data */);
|
||||||
extern int readPtyData (XtermWidget /* xw */, PtySelect * /* select_mask */, PtyData * /* data */);
|
extern int readPtyData (XtermWidget /* xw */, PtySelect * /* select_mask */, PtyData * /* data */);
|
||||||
extern void fillPtyData (XtermWidget /* xw */, PtyData * /* data */, const char * /* value */, size_t /* length */);
|
extern void fillPtyData (XtermWidget /* xw */, PtyData * /* data */, const char * /* value */, size_t /* length */);
|
||||||
extern void initPtyData (PtyData ** /* data */);
|
extern void initPtyData (PtyData ** /* data */);
|
||||||
extern void trimPtyData (XtermWidget /* xw */, PtyData * /* data */);
|
extern void trimPtyData (XtermWidget /* xw */, PtyData * /* data */);
|
||||||
|
|
||||||
|
@ -1405,12 +1534,12 @@ extern void noleaks_ptydata ( void );
|
||||||
|
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
extern Boolean isValidUTF8 (Char * /* lp */);
|
extern Boolean isValidUTF8 (Char * /* lp */);
|
||||||
extern Char *convertToUTF8 (Char * /* lp */, unsigned /* c */);
|
extern Char *convertToUTF8 (Char * /* lp */, unsigned /* c */);
|
||||||
extern Char *convertFromUTF8 (Char * /* lp */, unsigned * /* cp */);
|
extern Char *convertFromUTF8 (Char * /* lp */, unsigned * /* cp */);
|
||||||
extern IChar nextPtyData (TScreen * /* screen */, PtyData * /* data */);
|
extern IChar nextPtyData (TScreen * /* screen */, PtyData * /* data */);
|
||||||
extern PtyData * fakePtyData (PtyData * /* result */, Char * /* next */, Char * /* last */);
|
extern PtyData * fakePtyData (PtyData * /* result */, Char * /* next */, Char * /* last */);
|
||||||
extern void switchPtyData (TScreen * /* screen */, int /* f */);
|
extern void switchPtyData (TScreen * /* screen */, int /* f */);
|
||||||
extern void writePtyData (int /* f */, IChar * /* d */, size_t /* len */);
|
extern void writePtyData (int /* f */, IChar * /* d */, size_t /* len */);
|
||||||
|
|
||||||
#define morePtyData(screen, data) \
|
#define morePtyData(screen, data) \
|
||||||
(((data)->last > (data)->next) \
|
(((data)->last > (data)->next) \
|
||||||
|
@ -1443,30 +1572,31 @@ extern void writePtyData (int /* f */, IChar * /* d */, size_t /* len */);
|
||||||
#define _NET_WM_STATE_ADD 1 /* add/set property */
|
#define _NET_WM_STATE_ADD 1 /* add/set property */
|
||||||
#define _NET_WM_STATE_TOGGLE 2 /* toggle property */
|
#define _NET_WM_STATE_TOGGLE 2 /* toggle property */
|
||||||
|
|
||||||
extern Bool non_blank_line (TScreen */* screen */, int /* row */, int /* col */, int /* len */);
|
extern Bool non_blank_line (TScreen */* screen */, int /* row */, int /* col */, int /* len */);
|
||||||
extern Char * allocScrnData (TScreen * /* screen */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */);
|
extern Char * allocScrnData (TScreen * /* screen */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */);
|
||||||
extern ScrnBuf allocScrnBuf (XtermWidget /* xw */, unsigned /* nrow */, unsigned /* ncol */, ScrnPtr * /* addr */);
|
extern ScrnBuf allocScrnBuf (XtermWidget /* xw */, unsigned /* nrow */, unsigned /* ncol */, ScrnPtr * /* addr */);
|
||||||
extern ScrnBuf scrnHeadAddr (TScreen * /* screen */, ScrnBuf /* base */, unsigned /* offset */);
|
extern ScrnBuf scrnHeadAddr (TScreen * /* screen */, ScrnBuf /* base */, unsigned /* offset */);
|
||||||
extern size_t ScrnPointers (TScreen * /* screen */, size_t /* len */);
|
extern size_t ScrnPointers (TScreen * /* screen */, size_t /* len */);
|
||||||
extern void ClearBufRows (XtermWidget /* xw */, int /* first */, int /* last */);
|
extern void ClearBufRows (XtermWidget /* xw */, int /* first */, int /* last */);
|
||||||
extern void ClearCells (XtermWidget /* xw */, int /* flags */, unsigned /* len */, int /* row */, int /* col */);
|
extern void ClearCells (XtermWidget /* xw */, int /* flags */, unsigned /* len */, int /* row */, int /* col */);
|
||||||
extern void CopyCells (TScreen * /* screen */, LineData * /* src */, LineData * /* dst */, int /* col */, int /* len */, Bool /* down */);
|
extern void CopyCells (TScreen * /* screen */, LineData * /* src */, LineData * /* dst */, int /* col */, int /* len */, Bool /* down */);
|
||||||
extern void FullScreen (XtermWidget /* xw */, int /* mode */);
|
extern void FullScreen (XtermWidget /* xw */, int /* mode */);
|
||||||
extern void FreeMarkGCs (XtermWidget /* xw */);
|
extern void FreeMarkGCs (XtermWidget /* xw */);
|
||||||
extern void ScreenResize (XtermWidget /* xw */, int /* width */, int /* height */, unsigned * /* flags */);
|
extern void ResetHiddenHint (XtermWidget /* xw */);
|
||||||
|
extern void ScreenResize (XtermWidget /* xw */, int /* width */, int /* height */, unsigned * /* flags */);
|
||||||
extern void ScrnAllocBuf (XtermWidget /* xw */);
|
extern void ScrnAllocBuf (XtermWidget /* xw */);
|
||||||
extern void ScrnClearCells (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */);
|
extern void ScrnClearCells (XtermWidget /* xw */, int /* row */, int /* col */, unsigned /* len */);
|
||||||
extern void ScrnDeleteChar (XtermWidget /* xw */, unsigned /* n */);
|
extern void ScrnDeleteChar (XtermWidget /* xw */, unsigned /* n */);
|
||||||
extern void ScrnDeleteCol (XtermWidget /* xw */, unsigned /* n */);
|
extern void ScrnDeleteCol (XtermWidget /* xw */, unsigned /* n */);
|
||||||
extern void ScrnDeleteLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* n */, int /* last */, unsigned /* where */);
|
extern void ScrnDeleteLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* n */, int /* last */, unsigned /* where */);
|
||||||
extern void ScrnDisownSelection (XtermWidget /* xw */);
|
extern void ScrnDisownSelection (XtermWidget /* xw */);
|
||||||
extern void ScrnFillRectangle (XtermWidget /* xw */, XTermRect *, int , unsigned /* flags */, Bool /* keepColors */);
|
extern void ScrnFillRectangle (XtermWidget /* xw */, XTermRect *, int , unsigned /* flags */, Bool /* keepColors */);
|
||||||
extern void ScrnInsertChar (XtermWidget /* xw */, unsigned /* n */);
|
extern void ScrnInsertChar (XtermWidget /* xw */, unsigned /* n */);
|
||||||
extern void ScrnInsertCol (XtermWidget /* xw */, unsigned /* n */);
|
extern void ScrnInsertCol (XtermWidget /* xw */, unsigned /* n */);
|
||||||
extern void ScrnInsertLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* last */, int /* where */, unsigned /* n */);
|
extern void ScrnInsertLine (XtermWidget /* xw */, ScrnBuf /* sb */, int /* last */, int /* where */, unsigned /* n */);
|
||||||
extern void ScrnRefresh (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */);
|
extern void ScrnRefresh (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */);
|
||||||
extern void ScrnUpdate (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */);
|
extern void ScrnUpdate (XtermWidget /* xw */, int /* toprow */, int /* leftcol */, int /* nrows */, int /* ncols */, Bool /* force */);
|
||||||
extern void ScrnWriteText (XtermWidget /* xw */, IChar * /* str */, unsigned /* flags */, CellColor /* cur_fg_bg */, unsigned /* length */);
|
extern void ScrnWriteText (XtermWidget /* xw */, Cardinal /* offset */, Cardinal /* length */, unsigned /* flags */, CellColor /* cur_fg_bg */);
|
||||||
extern void ShowWrapMarks (XtermWidget /* xw */, int /* row */, CLineData * /* ld */);
|
extern void ShowWrapMarks (XtermWidget /* xw */, int /* row */, CLineData * /* ld */);
|
||||||
extern void setupLineData (TScreen * /* screen */, ScrnBuf /* base */, Char * /* data */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */);
|
extern void setupLineData (TScreen * /* screen */, ScrnBuf /* base */, Char * /* data */, unsigned /* nrow */, unsigned /* ncol */, Bool /* bottom */);
|
||||||
extern void xtermParseRect (XtermWidget /* xw */, int, int *, XTermRect *);
|
extern void xtermParseRect (XtermWidget /* xw */, int, int *, XTermRect *);
|
||||||
|
@ -1556,16 +1686,16 @@ extern void DoResizeScreen (XtermWidget /* xw */);
|
||||||
extern void HandleScrollBack PROTO_XT_ACTIONS_ARGS;
|
extern void HandleScrollBack PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void HandleScrollForward PROTO_XT_ACTIONS_ARGS;
|
extern void HandleScrollForward PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void HandleScrollTo PROTO_XT_ACTIONS_ARGS;
|
extern void HandleScrollTo PROTO_XT_ACTIONS_ARGS;
|
||||||
extern void ResizeScrollBar (XtermWidget /* xw */);
|
extern void ResizeScrollBar (XtermWidget /* xw */);
|
||||||
extern void ScrollBarDrawThumb (XtermWidget /* xw */, int /* mode */);
|
extern void ScrollBarDrawThumb (XtermWidget /* xw */, int /* mode */);
|
||||||
extern void ScrollBarOff (XtermWidget /* xw */);
|
extern void ScrollBarOff (XtermWidget /* xw */);
|
||||||
extern void ScrollBarOn (XtermWidget /* xw */, Bool /* init */);
|
extern void ScrollBarOn (XtermWidget /* xw */, Bool /* init */);
|
||||||
extern void ScrollBarReverseVideo (Widget /* scrollWidget */);
|
extern void ScrollBarReverseVideo (Widget /* scrollWidget */);
|
||||||
extern void ToggleScrollBar (XtermWidget /* xw */);
|
extern void ToggleScrollBar (XtermWidget /* xw */);
|
||||||
extern void WindowScroll (XtermWidget /* xw */, int /* top */, Bool /* always */);
|
extern void WindowScroll (XtermWidget /* xw */, int /* top */, Bool /* always */);
|
||||||
|
|
||||||
#ifdef SCROLLBAR_RIGHT
|
#ifdef SCROLLBAR_RIGHT
|
||||||
extern void updateRightScrollbar(XtermWidget /* xw */);
|
extern void updateRightScrollbar(XtermWidget /* xw */);
|
||||||
#else
|
#else
|
||||||
#define updateRightScrollbar(xw) /* nothing */
|
#define updateRightScrollbar(xw) /* nothing */
|
||||||
#endif
|
#endif
|
||||||
|
@ -1580,10 +1710,12 @@ extern void TabZonk (Tabs /* tabs */);
|
||||||
extern Bool TabIsSet (Tabs /* tabs */, int /* col */);
|
extern Bool TabIsSet (Tabs /* tabs */, int /* col */);
|
||||||
|
|
||||||
/* util.c */
|
/* util.c */
|
||||||
|
extern Boolean AssignFgColor (XtermWidget /* xw */, Pixel /* bg */);
|
||||||
|
extern Boolean AssignBgColor (XtermWidget /* xw */, Pixel /* bg */);
|
||||||
extern Boolean isDefaultBackground (const char * /* name */);
|
extern Boolean isDefaultBackground (const char * /* name */);
|
||||||
extern Boolean isDefaultForeground (const char * /* name */);
|
extern Boolean isDefaultForeground (const char * /* name */);
|
||||||
extern CgsEnum whichXtermCgs (XtermWidget /* xw */, unsigned /* attr_flags */, Bool /* hilite */);
|
extern CgsEnum whichXtermCgs (XtermWidget /* xw */, unsigned /* attr_flags */, Bool /* hilite */);
|
||||||
extern GC updatedXtermGC (XtermWidget /* xw */, unsigned /* flags */, CellColor /* fg_bg */, Bool /* hilite */);
|
extern GC updatedXtermGC (XtermWidget /* xw */, unsigned /* flags */, CellColor /* fg_bg */, Bool /* hilite */);
|
||||||
extern Pixel getXtermBackground (XtermWidget /* xw */, unsigned /* flags */, int /* color */);
|
extern Pixel getXtermBackground (XtermWidget /* xw */, unsigned /* flags */, int /* color */);
|
||||||
extern Pixel getXtermForeground (XtermWidget /* xw */, unsigned /* flags */, int /* color */);
|
extern Pixel getXtermForeground (XtermWidget /* xw */, unsigned /* flags */, int /* color */);
|
||||||
extern char * xtermSetLocale (int /* category */, String /* after */);
|
extern char * xtermSetLocale (int /* category */, String /* after */);
|
||||||
|
@ -1592,32 +1724,32 @@ extern int HandleExposure (XtermWidget /* xw */, XEvent * /* event */);
|
||||||
extern int dimRound (double /* value */);
|
extern int dimRound (double /* value */);
|
||||||
extern int drawXtermText (XTermDraw * /* param */, GC /* gc */, int /* x */, int /* y */, const IChar * /* text */, Cardinal /* len */);
|
extern int drawXtermText (XTermDraw * /* param */, GC /* gc */, int /* x */, int /* y */, const IChar * /* text */, Cardinal /* len */);
|
||||||
extern int extendedBoolean (const char * /* value */, const FlagList * /* table */, Cardinal /* limit */);
|
extern int extendedBoolean (const char * /* value */, const FlagList * /* table */, Cardinal /* limit */);
|
||||||
extern void ChangeColors (XtermWidget /* xw */, ScrnColors * /* pNew */);
|
extern void ChangeColors (XtermWidget /* xw */, ScrnColors * /* pNew */);
|
||||||
extern void ClearLine (XtermWidget /* xw */);
|
extern void ClearLine (XtermWidget /* xw */);
|
||||||
extern void ClearRight (XtermWidget /* xw */, int /* n */);
|
extern void ClearRight (XtermWidget /* xw */, int /* n */);
|
||||||
extern void ClearScreen (XtermWidget /* xw */);
|
extern void ClearScreen (XtermWidget /* xw */);
|
||||||
extern void DeleteChar (XtermWidget /* xw */, unsigned /* n */);
|
extern void DeleteChar (XtermWidget /* xw */, unsigned /* n */);
|
||||||
extern void DeleteLine (XtermWidget /* xw */, int /* n */, Bool /* canSave */);
|
extern void DeleteLine (XtermWidget /* xw */, int /* n */, Bool /* canSave */);
|
||||||
extern void FlushScroll (XtermWidget /* xw */);
|
extern void FlushScroll (XtermWidget /* xw */);
|
||||||
extern void GetColors (XtermWidget /* xw */, ScrnColors * /* pColors */);
|
extern void GetColors (XtermWidget /* xw */, ScrnColors * /* pColors */);
|
||||||
extern void InsertChar (XtermWidget /* xw */, unsigned /* n */);
|
extern void InsertChar (XtermWidget /* xw */, unsigned /* n */);
|
||||||
extern void InsertLine (XtermWidget /* xw */, int /* n */);
|
extern void InsertLine (XtermWidget /* xw */, int /* n */);
|
||||||
extern void RevScroll (XtermWidget /* xw */, int /* amount */);
|
extern void RevScroll (XtermWidget /* xw */, int /* amount */);
|
||||||
extern void ReverseVideo (XtermWidget /* xw */);
|
extern void ReverseVideo (XtermWidget /* xw */);
|
||||||
extern void WriteText (XtermWidget /* xw */, IChar * /* str */, Cardinal /* len */);
|
extern void WriteText (XtermWidget /* xw */, Cardinal /* offset */, Cardinal /* len */);
|
||||||
extern void decode_keyboard_type (XtermWidget /* xw */, struct XTERM_RESOURCE * /* rp */);
|
extern void decode_keyboard_type (XtermWidget /* xw */, struct XTERM_RESOURCE * /* rp */);
|
||||||
extern void decode_wcwidth (XtermWidget /* xw */);
|
extern void decode_wcwidth (XtermWidget /* xw */);
|
||||||
extern void do_cd_xtra_scroll (XtermWidget /* xw */, int /* param */);
|
extern void do_cd_xtra_scroll (XtermWidget /* xw */, int /* param */);
|
||||||
extern void do_erase_display (XtermWidget /* xw */, int /* param */, int /* mode */);
|
extern void do_erase_display (XtermWidget /* xw */, int /* param */, int /* mode */);
|
||||||
extern void do_erase_char (XtermWidget /* xw */, int /* param */, int /* mode */);
|
extern void do_erase_char (XtermWidget /* xw */, int /* param */, int /* mode */);
|
||||||
extern void do_erase_line (XtermWidget /* xw */, int /* param */, int /* mode */);
|
extern void do_erase_line (XtermWidget /* xw */, int /* param */, int /* mode */);
|
||||||
extern void do_ti_xtra_scroll (XtermWidget /* xw */);
|
extern void do_ti_xtra_scroll (XtermWidget /* xw */);
|
||||||
extern void getXtermSizeHints (XtermWidget /* xw */);
|
extern void getXtermSizeHints (XtermWidget /* xw */);
|
||||||
extern void recolor_cursor (TScreen * /* screen */, Cursor /* cursor */, unsigned long /* fg */, unsigned long /* bg */);
|
extern void recolor_cursor (TScreen * /* screen */, Cursor /* cursor */, unsigned long /* fg */, unsigned long /* bg */);
|
||||||
extern void resetXtermGC (XtermWidget /* xw */, unsigned /* flags */, Bool /* hilite */);
|
extern void resetXtermGC (XtermWidget /* xw */, unsigned /* flags */, Bool /* hilite */);
|
||||||
extern void scrolling_copy_area (XtermWidget /* xw */, int /* firstline */, int /* nlines */, int /* amount */);
|
extern void scrolling_copy_area (XtermWidget /* xw */, int /* firstline */, int /* nlines */, int /* amount */);
|
||||||
extern void set_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */, Bool /* set */);
|
extern void set_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */, Bool /* set */);
|
||||||
extern void toggle_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */);
|
extern void toggle_keyboard_type (XtermWidget /* xw */, xtermKeyboardType /* type */);
|
||||||
extern void update_keyboard_type (void);
|
extern void update_keyboard_type (void);
|
||||||
extern void xtermClear (XtermWidget /* xw */);
|
extern void xtermClear (XtermWidget /* xw */);
|
||||||
extern void xtermClear2 (XtermWidget /* xw */, int /* x */, int /* y */, unsigned /* width */, unsigned /* height */);
|
extern void xtermClear2 (XtermWidget /* xw */, int /* x */, int /* y */, unsigned /* width */, unsigned /* height */);
|
||||||
|
@ -1627,7 +1759,7 @@ extern void xtermRepaint (XtermWidget /* xw */);
|
||||||
extern void xtermResetLocale (int /* category */, char * /* before */);
|
extern void xtermResetLocale (int /* category */, char * /* before */);
|
||||||
extern void xtermScroll (XtermWidget /* xw */, int /* amount */);
|
extern void xtermScroll (XtermWidget /* xw */, int /* amount */);
|
||||||
extern void xtermScrollLR (XtermWidget /* xw */, int /* amount */, Bool /* toLeft */);
|
extern void xtermScrollLR (XtermWidget /* xw */, int /* amount */, Bool /* toLeft */);
|
||||||
extern void xtermSizeHints (XtermWidget /* xw */, int /* scrollbarWidth */);
|
extern void xtermSizeHints (XtermWidget /* xw */, int /* scrollbarWidth */);
|
||||||
|
|
||||||
struct Xinerama_geometry {
|
struct Xinerama_geometry {
|
||||||
int x;
|
int x;
|
||||||
|
@ -1643,10 +1775,10 @@ extern int XParseXineramaGeometry(Display * /* display */, char * /* parsestring
|
||||||
|
|
||||||
#if OPT_ISO_COLORS
|
#if OPT_ISO_COLORS
|
||||||
|
|
||||||
extern Pixel extract_fg (XtermWidget /* xw */, CellColor /* color */, unsigned /* flags */);
|
extern Pixel extract_fg (XtermWidget /* xw */, CellColor /* color */, unsigned /* flags */);
|
||||||
extern Pixel extract_bg (XtermWidget /* xw */, CellColor /* color */, unsigned /* flags */);
|
extern Pixel extract_bg (XtermWidget /* xw */, CellColor /* color */, unsigned /* flags */);
|
||||||
extern CellColor makeColorPair (XtermWidget /* xw */);
|
extern CellColor makeColorPair (XtermWidget /* xw */);
|
||||||
extern void ClearCurBackground (XtermWidget /* xw */, int /* top */, int /* left */, unsigned /* height */, unsigned /* width */, unsigned /* fw */);
|
extern void ClearCurBackground (XtermWidget /* xw */, int /* top */, int /* left */, unsigned /* height */, unsigned /* width */, unsigned /* fw */);
|
||||||
|
|
||||||
#define xtermColorPair(xw) makeColorPair(xw)
|
#define xtermColorPair(xw) makeColorPair(xw)
|
||||||
|
|
||||||
|
@ -1735,7 +1867,7 @@ extern void discardRenderDraw(TScreen * /* screen */);
|
||||||
#if OPT_ZICONBEEP
|
#if OPT_ZICONBEEP
|
||||||
extern void initZIconBeep(void);
|
extern void initZIconBeep(void);
|
||||||
extern void resetZIconBeep(XtermWidget /* xw */);
|
extern void resetZIconBeep(XtermWidget /* xw */);
|
||||||
extern Boolean showZIconBeep(XtermWidget /* xw */, char * /* name */);
|
extern Boolean showZIconBeep(XtermWidget /* xw */, const char * /* name */);
|
||||||
#else
|
#else
|
||||||
#define initZIconBeep() /* nothing */
|
#define initZIconBeep() /* nothing */
|
||||||
#define resetZIconBeep(xw) /* nothing */
|
#define resetZIconBeep(xw) /* nothing */
|
||||||
|
@ -1744,9 +1876,9 @@ extern Boolean showZIconBeep(XtermWidget /* xw */, char * /* name */);
|
||||||
|
|
||||||
#define XTERM_CELL(row,col) getXtermCell(screen, ROW2INX(screen, row), col)
|
#define XTERM_CELL(row,col) getXtermCell(screen, ROW2INX(screen, row), col)
|
||||||
|
|
||||||
extern unsigned getXtermCell (TScreen * /* screen */, int /* row */, int /* col */);
|
extern unsigned getXtermCell (TScreen * /* screen */, int /* row */, int /* col */);
|
||||||
extern unsigned getXtermCombining(TScreen * /* screen */, int /* row */, int /* col */, int /* off */);
|
extern unsigned getXtermCombining(TScreen * /* screen */, int /* row */, int /* col */, int /* off */);
|
||||||
extern void putXtermCell (TScreen * /* screen */, int /* row */, int /* col */, int /* ch */);
|
extern void putXtermCell (TScreen * /* screen */, int /* row */, int /* col */, int /* ch */);
|
||||||
|
|
||||||
#define IsCellCombined(screen, row, col) (getXtermCombining(screen, row, col, 0) != 0)
|
#define IsCellCombined(screen, row, col) (getXtermCombining(screen, row, col, 0) != 0)
|
||||||
|
|
||||||
|
@ -1763,22 +1895,28 @@ extern void putXtermCell (TScreen * /* screen */, int /* row */, int /* col */
|
||||||
&& (sel) != (xw)->dft_background)
|
&& (sel) != (xw)->dft_background)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define setXtermLineAttributes(dpy, gc, width, style) \
|
||||||
|
XSetLineAttributes(dpy, gc, (unsigned) width, style, CapProjecting, JoinMiter);
|
||||||
|
|
||||||
|
#define resetXtermLineAttributes(dpy, gc) \
|
||||||
|
setXtermLineAttributes(dpy, gc, 0, LineSolid);
|
||||||
|
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
extern int DamagedCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */, int /* row */, int /* col */);
|
extern int DamagedCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */, int /* row */, int /* col */);
|
||||||
extern int DamagedCurCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */);
|
extern int DamagedCurCells(TScreen * /* screen */, unsigned /* n */, int * /* klp */, int * /* krp */);
|
||||||
extern unsigned AsciiEquivs(unsigned /* ch */);
|
extern unsigned AsciiEquivs(unsigned /* ch */);
|
||||||
extern void addXtermCombining (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* ch */);
|
extern void addXtermCombining (TScreen * /* screen */, int /* row */, int /* col */, unsigned /* ch */);
|
||||||
extern void allocXtermChars(ScrnPtr * /* buffer */, Cardinal /* length */);
|
extern void allocXtermChars(ScrnPtr * /* buffer */, Cardinal /* length */);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OPT_XMC_GLITCH
|
#if OPT_XMC_GLITCH
|
||||||
extern void Mark_XMC (XtermWidget /* xw */, int /* param */);
|
extern void Mark_XMC (XtermWidget /* xw */, int /* param */);
|
||||||
extern void Jump_XMC (XtermWidget /* xw */);
|
extern void Jump_XMC (XtermWidget /* xw */);
|
||||||
extern void Resolve_XMC (XtermWidget /* xw */);
|
extern void Resolve_XMC (XtermWidget /* xw */);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if OPT_WIDE_CHARS
|
#if OPT_WIDE_CHARS
|
||||||
unsigned visual_width(const IChar * /* str */, Cardinal /* len */);
|
unsigned visual_width(const IChar * /* str */, Cardinal /* len */);
|
||||||
#else
|
#else
|
||||||
#define visual_width(a, b) (b)
|
#define visual_width(a, b) (b)
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
* this file is part of xterm *
|
* this file is part of xterm *
|
||||||
* *
|
* *
|
||||||
* Copyright 1997-2022,2023 by Thomas E. Dickey *
|
* Copyright 1997-2023,2024 by Thomas E. Dickey *
|
||||||
* *
|
* *
|
||||||
* All Rights Reserved *
|
* All Rights Reserved *
|
||||||
* *
|
* *
|
||||||
|
@ -30,7 +30,7 @@
|
||||||
* sale, use or other dealings in this Software without prior written *
|
* sale, use or other dealings in this Software without prior written *
|
||||||
* authorization. *
|
* authorization. *
|
||||||
*****************************************************************************
|
*****************************************************************************
|
||||||
$XTermId: xterm.log.html,v 1.2478 2023/01/09 10:29:25 tom Exp $
|
$XTermId: xterm.log.html,v 1.2635 2024/07/11 23:37:57 tom Exp $
|
||||||
-->
|
-->
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
|
||||||
<html>
|
<html>
|
||||||
|
@ -50,7 +50,7 @@
|
||||||
<body>
|
<body>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<p>Copyright © 1997-2022,2023 by <a href=
|
<p>Copyright © 1997-2023,2024 by <a href=
|
||||||
"mailto:dickey@invisible-island.net">Thomas E. Dickey</a></p>
|
"mailto:dickey@invisible-island.net">Thomas E. Dickey</a></p>
|
||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -70,6 +70,36 @@
|
||||||
CHANGELOG</a>).</p>
|
CHANGELOG</a>).</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
|
<li><a href="#xterm_393">Patch #393 - 2024/07/11</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_392">Patch #392 - 2024/05/22</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_391">Patch #391 - 2024/05/12</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_390">Patch #390 - 2024/02/19</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_389">Patch #389 - 2024/01/01</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_388">Patch #388 - 2023/10/22</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_387">Patch #387 - 2023/10/15</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_386">Patch #386 - 2023/10/09</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_385">Patch #385 - 2023/10/01</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_384">Patch #384 - 2023/07/10</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_383">Patch #383 - 2023/06/27</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_382">Patch #382 - 2023/05/30</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_381">Patch #381 - 2023/05/28</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_380">Patch #380 - 2023/05/09</a></li>
|
||||||
|
|
||||||
|
<li><a href="#xterm_379">Patch #379 - 2023/02/15</a></li>
|
||||||
|
|
||||||
<li><a href="#xterm_378">Patch #378 - 2023/01/09</a></li>
|
<li><a href="#xterm_378">Patch #378 - 2023/01/09</a></li>
|
||||||
|
|
||||||
<li><a href="#xterm_377">Patch #377 - 2022/11/25</a></li>
|
<li><a href="#xterm_377">Patch #377 - 2022/11/25</a></li>
|
||||||
|
@ -1034,6 +1064,606 @@
|
||||||
<li><a href="#xterm_01">Patch #1 - 1996/1/6</a></li>
|
<li><a href="#xterm_01">Patch #1 - 1996/1/6</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_393" id="xterm_393">Patch #393 -
|
||||||
|
2024/07/11</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>add a check for ANSI SC/RC, to ignore CSI parameters.</li>
|
||||||
|
|
||||||
|
<li>improve check for missing characters for bitmap-fonts by
|
||||||
|
using the normal font for reference in the case where the
|
||||||
|
current font, e.g., the wide-font was derived from the normal
|
||||||
|
font and lacks per-character metrics (report by Rajeev V.
|
||||||
|
Pillai).</li>
|
||||||
|
|
||||||
|
<li>fix regression in error-recovery for SGR parameters from
|
||||||
|
<a href="#xterm_357">patch #357</a> (report by James
|
||||||
|
Holderness).</li>
|
||||||
|
|
||||||
|
<li>remove some duplicates in <tt>xtermcfg.h</tt> (report by
|
||||||
|
Matthew Green).</li>
|
||||||
|
|
||||||
|
<li>change default for <tt>--enable-imake</tt> configure
|
||||||
|
option.</li>
|
||||||
|
|
||||||
|
<li>fixes for <tt>wcwidth</tt>:
|
||||||
|
<ul>
|
||||||
|
<li>return 0 for format effectors, like a zero-width
|
||||||
|
printing character rather than -1 like a control character
|
||||||
|
(report by Rajeev V. Pillai).</li>
|
||||||
|
|
||||||
|
<li>correct <tt>doublewidth</tt> to account for reserved
|
||||||
|
codepoints which are listed in the EastAsianWidth
|
||||||
|
file.</li>
|
||||||
|
|
||||||
|
<li>add a special case for surrogate pairs, which might be
|
||||||
|
checked in testing the <tt>wcwidth</tt> function.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>amend sixel bounds-check added in <a href=
|
||||||
|
"#xterm_371">patch #371</a> to not wrap out-of-bounds
|
||||||
|
data.</li>
|
||||||
|
|
||||||
|
<li>eliminate <tt>maxStringParse</tt> limit for SIXEL.</li>
|
||||||
|
|
||||||
|
<li>improve logic which ignores APC, PM and SOS controls to
|
||||||
|
also not accumulate their data temporarily in a buffer.</li>
|
||||||
|
|
||||||
|
<li>exclude <tt>TERM_INGRESS</tt> from cleanup of environment
|
||||||
|
variables (patch by Iain Riley).</li>
|
||||||
|
|
||||||
|
<li>fix some documentation typos (report by Thomas Wolff).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_392" id="xterm_392">Patch #392 -
|
||||||
|
2024/05/22</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>improve input decoding for non-Latin1 character sets by
|
||||||
|
preserving the sense of GL/GR.</li>
|
||||||
|
|
||||||
|
<li>add resource <tt>preferLatin1</tt> to simplify UPSS
|
||||||
|
configuration (Gentoo #932154).</li>
|
||||||
|
|
||||||
|
<li>build-fix for <tt>--disable-boxchars</tt>; <a href=
|
||||||
|
"#xterm_390">patch #390</a> reuses that feature's code to draw
|
||||||
|
the part of the DEC Technical character set which has no
|
||||||
|
Unicode equivalent.</li>
|
||||||
|
|
||||||
|
<li>modify <tt>#include</tt> of <tt>pty.h</tt> to work with
|
||||||
|
musl (report by Khem Raj).</li>
|
||||||
|
|
||||||
|
<li>improve definitions used in <tt>clock_gettime</tt> logic in
|
||||||
|
<tt>graphics_sixel.c</tt>, as well as updating comments (patch
|
||||||
|
by Ben Wong).</li>
|
||||||
|
|
||||||
|
<li>amend <code>allowC1Printable</code> changes from <a href=
|
||||||
|
"#xterm_391">patch #391</a>, restoring a special case which
|
||||||
|
caused C1 characters to be ignored (report/testcase by Dmytro
|
||||||
|
Bagrii).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_391" id="xterm_391">Patch #391 -
|
||||||
|
2024/05/12</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>improve integration between UTF-8 and
|
||||||
|
<code>allowC1Printable</code>.</li>
|
||||||
|
|
||||||
|
<li>alter SIXEL HLS computation to make blue 0 degrees (patch
|
||||||
|
by Ben Wong).</li>
|
||||||
|
|
||||||
|
<li>disable SIXEL aspect-ratio, pending a rewrite (patch by Ben
|
||||||
|
Wong).</li>
|
||||||
|
|
||||||
|
<li>add resource <code>incrementalGraphics</code> (prompted by
|
||||||
|
patch by Ben Wong).</li>
|
||||||
|
|
||||||
|
<li>reorganize <tt>graphics_sixel.c</tt> as a step toward
|
||||||
|
eliminating graphics buffer-size (integrated patch by Ben
|
||||||
|
Wong).</li>
|
||||||
|
|
||||||
|
<li>use <code>__linux__</code> consistently rather than the
|
||||||
|
older <code>linux</code>.</li>
|
||||||
|
|
||||||
|
<li>build-fix for musl (report by Jonáš Vidra,
|
||||||
|
adapted patch by Khem Raj):
|
||||||
|
<ul>
|
||||||
|
<li>modify <code><em>ifdef</em></code> for
|
||||||
|
<code>USE_OPENPTY</code>, changing test for
|
||||||
|
<code>__GLIBC__</code> to <code>__linux__</code></li>
|
||||||
|
|
||||||
|
<li>change <code><em>ifdef</em></code>'s for
|
||||||
|
<code>_POSIX_SOURCE</code> to
|
||||||
|
<code>_POSIX_VERSION</code></li>
|
||||||
|
|
||||||
|
<li>modify <code><em>ifdef</em></code> for
|
||||||
|
<code>setsid</code> to use a configure-script check for
|
||||||
|
that function's existence and move the old check to imake
|
||||||
|
fallbacks.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>minor consistency fixes for manpage.</li>
|
||||||
|
|
||||||
|
<li>fix regression in <a href="#xterm_390">patch #390</a>:
|
||||||
|
non-UTF8 text pasted as a XA_UTF8_STRING was not decoded
|
||||||
|
(report by Petri Kaukasoina).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_390" id="xterm_390">Patch #390 -
|
||||||
|
2024/02/19</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>improve typography of control-sequences page (patches by
|
||||||
|
Branden Robinson).</li>
|
||||||
|
|
||||||
|
<li>amend UPSS change from <a href="#xterm_389">patch #389</a>,
|
||||||
|
fixing a regression in VT100/VT220 character sets.</li>
|
||||||
|
|
||||||
|
<li>modify ANSI conformance per ECMA-43 and DEC 070:
|
||||||
|
<ul>
|
||||||
|
<li>set ANSI conformance level to 3 for DEC levels 2 and
|
||||||
|
up.</li>
|
||||||
|
|
||||||
|
<li>disable locking shifts in level 1, e.g., VT100.</li>
|
||||||
|
|
||||||
|
<li>disable single-shifts from G2/G3 in level 1.</li>
|
||||||
|
|
||||||
|
<li>use UPSS for G2/G3 in levels 2 and up.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>modify invisible-character attribute to permit
|
||||||
|
<tt>DECRQCRA</tt> to report a consistent checksum
|
||||||
|
(report/testcase by Thomas Wolff).</li>
|
||||||
|
|
||||||
|
<li>align terminfo building blocks in terminfo to correspond to
|
||||||
|
recent refactoring/trimming in ncurses.</li>
|
||||||
|
|
||||||
|
<li>set flag in regexec call for
|
||||||
|
<code>on<em>N</em>Clicks</code> to handle
|
||||||
|
“<tt>^</tt>” anchor (patch by Matthew Martin).</li>
|
||||||
|
|
||||||
|
<li>add line-drawing data for the characters in <a href=
|
||||||
|
"https://www.vt100.net/charsets/technical.html"><em>DEC
|
||||||
|
Technical</em></a> which have no Unicode equivalents.</li>
|
||||||
|
|
||||||
|
<li>remove a special case in <tt>encode_scs</tt> which made
|
||||||
|
xterm report Latin-1 when encoding is set to UTF-8, where ASCII
|
||||||
|
is the selected character set. This fixes a regression in
|
||||||
|
vttest for the <tt>DECRSPS</tt> cursor test.</li>
|
||||||
|
|
||||||
|
<li>correct values for <em>Ps</em> of <tt>DECAUPSS</tt> in
|
||||||
|
<tt>ctlseqs.ms</tt> (report by James Holderness).</li>
|
||||||
|
|
||||||
|
<li>simplify/correct expression for checking Unicode
|
||||||
|
non-characters (report by Thomas Wolff).</li>
|
||||||
|
|
||||||
|
<li>correct loop for trimming environment variables
|
||||||
|
(report/patch by Casper Dik).</li>
|
||||||
|
|
||||||
|
<li>fixes for manpage formatting (Debian #1041809).</li>
|
||||||
|
|
||||||
|
<li>update config.guess, config.sub</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_389" id="xterm_389">Patch #389 -
|
||||||
|
2024/01/01</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>interchange variables in subparameter parsing, fixing a bug
|
||||||
|
where subparameters after the first parameter could be
|
||||||
|
misidentified (patch by Adam Saponara).</li>
|
||||||
|
|
||||||
|
<li>correct popping of icon/window titles in a case where only
|
||||||
|
one was pushed from <a href="#xterm_385">patch #385</a>
|
||||||
|
changes.</li>
|
||||||
|
|
||||||
|
<li>add <tt>XTQMODKEYS</tt> response in <tt>DECRQSS</tt>, as
|
||||||
|
alternative for vim.</li>
|
||||||
|
|
||||||
|
<li>correct <tt>DECCIR</tt> encoded information on character
|
||||||
|
set size, handle a VT525 quirk, and add <tt>DECST8C</tt>
|
||||||
|
(Windows Terminal #14984).</li>
|
||||||
|
|
||||||
|
<li>improve <tt>DECRQCRA</tt> (prompted by discussion with
|
||||||
|
James Holderness, Windows Terminal #14974).</li>
|
||||||
|
|
||||||
|
<li>add part of VT525 color controls:
|
||||||
|
<ul>
|
||||||
|
<li><tt>DECAC</tt>, to update default
|
||||||
|
foreground/background, respond to <tt>DECRQSS</tt></li>
|
||||||
|
|
||||||
|
<li><tt>DECATC</tt>, to respond with <tt>DECRQSS</tt></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>prevent Unicode non-characters from being printed (prompted
|
||||||
|
by patch by Grady Martin).</li>
|
||||||
|
|
||||||
|
<li>modify <tt>send_SGR()</tt> to avoid modifying colors 16 to
|
||||||
|
255 in printed output (patch by Grady Martin).</li>
|
||||||
|
|
||||||
|
<li>minor cleanup of miscellaneous error-codes with
|
||||||
|
<tt>ERROR_MISC</tt>.</li>
|
||||||
|
|
||||||
|
<li>remove legacy <tt><em>CSI</em> 53</tt> for locator status,
|
||||||
|
corrected in <a href="#xterm_294">patch #294</a>.</li>
|
||||||
|
|
||||||
|
<li>modify <tt>DECRQUPSS</tt> and <tt>DECAUPSS</tt> feature to
|
||||||
|
support VT5xx character sets (report by Thomas Wolff).</li>
|
||||||
|
|
||||||
|
<li>improve configure script:
|
||||||
|
<ul>
|
||||||
|
<li>reduce configure-check compiler warnings (prompted by
|
||||||
|
Florian Weimer, Redhat #2251945)</li>
|
||||||
|
|
||||||
|
<li>improve usage messages in configure script to make it
|
||||||
|
clearer when an option value is optional.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>improve EWMH handling (report/analysis by Edward Rosten)
|
||||||
|
<ul>
|
||||||
|
<li>reset <tt>_NET_WM_STATE_HIDDEN</tt> flag from
|
||||||
|
<tt>_NET_WM_STATE</tt> before mapping the window to
|
||||||
|
deiconify.</li>
|
||||||
|
|
||||||
|
<li>cache X properties to reduce latency (adapted from
|
||||||
|
patch by Edward Rosten).</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_388" id="xterm_388">Patch #388 -
|
||||||
|
2023/10/22</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>improve <tt>disallowPasteControls</tt> by adding a category
|
||||||
|
for the special characters known to <tt>stty</tt> (prompted by
|
||||||
|
discussion with David Leadbeater).</li>
|
||||||
|
|
||||||
|
<li>amend support of <tt>DECAUPSS</tt>, undoing change to
|
||||||
|
initialization of G2/G3 so that pasting of GR characters works
|
||||||
|
properly (report/analysis by Petri Kaukasoina).</li>
|
||||||
|
|
||||||
|
<li>update config.guess, config.sub</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_387" id="xterm_387">Patch #387 -
|
||||||
|
2023/10/15</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>add <tt>DECRQUPSS</tt> and <tt>DECAUPSS</tt>.</li>
|
||||||
|
|
||||||
|
<li>add <tt>DECRQDE</tt> (report by Jake Hamby).</li>
|
||||||
|
|
||||||
|
<li>correct indexing expression in title-stack, from <a href=
|
||||||
|
"#xterm_385">patch #385</a> changes (report by Brian
|
||||||
|
Lindholm).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_386" id="xterm_386">Patch #386 -
|
||||||
|
2023/10/09</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>improve references in <tt>ctlseqs.ms</tt> (prompted by
|
||||||
|
discussion with Kirill Chibisov).</li>
|
||||||
|
|
||||||
|
<li>make the maximum amount of memory used for buffering DCS
|
||||||
|
and OSC strings configurable with <tt>maxStringParse</tt>
|
||||||
|
resource (report by Daniel Franke).</li>
|
||||||
|
|
||||||
|
<li>improve performance of ReGIS when initializing the largest
|
||||||
|
fontsize (report by Ben Wong).</li>
|
||||||
|
|
||||||
|
<li>fix regression in SIXEL colors, in <a href=
|
||||||
|
"#xterm_385">patch #385</a> (report/patch by Jonny
|
||||||
|
Langley).</li>
|
||||||
|
|
||||||
|
<li>fix typo in <code>--with-wtmp</code> (report/patch by Sven
|
||||||
|
Joachim)</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_385" id="xterm_385">Patch #385 -
|
||||||
|
2023/10/01</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>fixes for ReGIS (report by Ben Wong).
|
||||||
|
<ul>
|
||||||
|
<li>correct conversion from HLS to RGB</li>
|
||||||
|
|
||||||
|
<li>improve font-caching performance.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>update tables in <code>wcwidth.c</code> based on Unicode
|
||||||
|
15.1.0</li>
|
||||||
|
|
||||||
|
<li>improve <code>fastScroll</code> resource:
|
||||||
|
<ul>
|
||||||
|
<li>suppress screen-refreshes for carriage-returns</li>
|
||||||
|
|
||||||
|
<li>add <code>-jf</code> option to simplify use of this
|
||||||
|
resource.</li>
|
||||||
|
|
||||||
|
<li>add a control sequence for enabling/disabling the
|
||||||
|
resource.</li>
|
||||||
|
|
||||||
|
<li>enable this feature by default</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>extend title-stack feature to allow an additional parameter
|
||||||
|
to directly access the stack, like the
|
||||||
|
<code>XTPUSHCOLORS</code> and <code>XTPOPCOLORS</code>
|
||||||
|
feature.</li>
|
||||||
|
|
||||||
|
<li>correct size and position of box shown for double-cell
|
||||||
|
character which happens to be missing from the bitmap font
|
||||||
|
(report by Peter Fabinski).</li>
|
||||||
|
|
||||||
|
<li>improved configure script:
|
||||||
|
<ul>
|
||||||
|
<li>add pattern for uClibc-ng to <tt>CF_XOPEN_SOURCE</tt>
|
||||||
|
(report/patch by Waldemar Brodkorb).</li>
|
||||||
|
|
||||||
|
<li>add configure options <tt>--with-utmp-path</tt> and
|
||||||
|
<tt>--with-wtmp-path</tt> to override configure script's
|
||||||
|
check for utmp/wtmp pathnames which are shown in the manual
|
||||||
|
(Debian #1042767).</li>
|
||||||
|
|
||||||
|
<li><tt>CF_XOPEN_SOURCE</tt> provides for defining
|
||||||
|
<tt>_DEFAULT_SOURCE</tt> for MinGW32 and MinGW64.</li>
|
||||||
|
|
||||||
|
<li>sed expression used to report gcc version now works
|
||||||
|
with MinGW</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>ensure that line-attributes are reset after drawing missing
|
||||||
|
character (report by Christian Weisgerber).</li>
|
||||||
|
|
||||||
|
<li>update config.guess, config.sub</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_384" id="xterm_384">Patch #384 -
|
||||||
|
2023/07/10</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>exclude ASCII space from <code>showMissingGlyphs</code>,
|
||||||
|
since a few bitmap fonts lack this (report by "SanRemo",
|
||||||
|
Emanuel Haupt).</li>
|
||||||
|
|
||||||
|
<li>correct a step in rendering double-width characters with
|
||||||
|
bitmap-fonts (report by Peter Fabinski, Debian #1039986).</li>
|
||||||
|
|
||||||
|
<li>fixes for ReGIS-related problems (report by Ben Wong):
|
||||||
|
<ul>
|
||||||
|
<li>mimic an undocumented hardware VT340 feature which
|
||||||
|
handles color initialization with incomplete
|
||||||
|
parameters.</li>
|
||||||
|
|
||||||
|
<li>handle whitespace between operator/operands for color
|
||||||
|
values.</li>
|
||||||
|
|
||||||
|
<li>reset ReGIS-context when resetting graphics in
|
||||||
|
<tt>RIS</tt>.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_383" id="xterm_383">Patch #383 -
|
||||||
|
2023/06/27</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>expand description of full- and soft-reset in the
|
||||||
|
manual.</li>
|
||||||
|
|
||||||
|
<li>fixes for full- and soft-reset:
|
||||||
|
<ul>
|
||||||
|
<li>clear alternate screen on full reset.</li>
|
||||||
|
|
||||||
|
<li>disable menu-entry for active icon; it merely shows
|
||||||
|
whether the feature is enabled.</li>
|
||||||
|
|
||||||
|
<li>use <tt>appcursorDefault</tt> and
|
||||||
|
<tt>appkeypadDefault</tt> resources for reset of
|
||||||
|
<tt>DECCKM</tt> and <tt>DECKPAM</tt>.</li>
|
||||||
|
|
||||||
|
<li>save initial resource values for
|
||||||
|
<tt>sixelScrolling</tt> and <tt>privateColorRegisters</tt>,
|
||||||
|
using those in full reset.</li>
|
||||||
|
|
||||||
|
<li>update checkbox for <em>Enable Blinking Cursor</em>
|
||||||
|
(report by Rajeev V. Pillai).</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>add reply for <tt>DECSACE</tt> with <tt>DECRQSS</tt>.</li>
|
||||||
|
|
||||||
|
<li>modify status-line feature to exit without erasing for
|
||||||
|
<tt>DECSTR</tt>.</li>
|
||||||
|
|
||||||
|
<li>add private mode <tt>1045</tt> which imitates the original
|
||||||
|
xterm cursor-back reverse wrapping mode <tt>45</tt> (see
|
||||||
|
<a href="#xterm_380">patch #380</a>).</li>
|
||||||
|
|
||||||
|
<li>improve checks for non-Unicode values, e.g., in
|
||||||
|
<tt>DECRQCRA</tt>.</li>
|
||||||
|
|
||||||
|
<li>re-checkout from RCS archive to fix stale identifiers
|
||||||
|
(report by Sven Joachim).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_382" id="xterm_382">Patch #382 -
|
||||||
|
2023/05/30</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>amend change to <tt>CursorBack</tt> in <a href=
|
||||||
|
"#xterm_380">patch #380</a>, allowing the result to be on the
|
||||||
|
hidden right-half of double-cell characters (report by Rajeev
|
||||||
|
V. Pillai).</li>
|
||||||
|
|
||||||
|
<li>amend <tt>xtermDrawString</tt>, fixing regression with
|
||||||
|
<tt>--disable-wide-chars</tt> configuration from <a href=
|
||||||
|
"#xterm_380">patch #380</a>.</li>
|
||||||
|
|
||||||
|
<li>corrected pathname for <tt>run-tic.sh</tt>, for full
|
||||||
|
install in an out-of-tree build (report by Rajeev V.
|
||||||
|
Pillai).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_381" id="xterm_381">Patch #381 -
|
||||||
|
2023/05/28</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>fix a regression in wide bitmap fonts versus check for
|
||||||
|
missing glyphs (report by Rajeev V. Pillai).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_380" id="xterm_380">Patch #380 -
|
||||||
|
2023/05/09</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>simplify the change for <code>sixelScrolling</code> from
|
||||||
|
<a href="#xterm_374">patch #374</a> (report by Per
|
||||||
|
Bothner).</li>
|
||||||
|
|
||||||
|
<li>add <tt>xterm+focus</tt> and <tt>report+da2</tt>, update
|
||||||
|
<tt>report+version</tt> building blocks in terminfo, from
|
||||||
|
post-ncurses 6.4</li>
|
||||||
|
|
||||||
|
<li>drop the <tt>-title</tt> option from <tt>uxterm</tt> and
|
||||||
|
<tt>koi8rxterm</tt>, because that interferes with deriving the
|
||||||
|
default title from the <tt>-e</tt> option (Debian #1031837).
|
||||||
|
Compensate for this by using the <tt>-class</tt> option to
|
||||||
|
derive a default title.</li>
|
||||||
|
|
||||||
|
<li>improve description of readline 2003 mode in
|
||||||
|
<tt>ctlseqs.ms</tt> (report by Thomas Wolff).</li>
|
||||||
|
|
||||||
|
<li>other improvements to status-line feature (report by Thomas
|
||||||
|
Wolff):
|
||||||
|
<ul>
|
||||||
|
<li>clear status line on <tt>DECCOLM</tt></li>
|
||||||
|
|
||||||
|
<li>ignore <tt>DECSASD</tt> if no previous
|
||||||
|
<tt>DECSSDT</tt></li>
|
||||||
|
|
||||||
|
<li>allow <tt>DECSSDT 1</tt> immediately after
|
||||||
|
<tt>DECSSDT 2</tt>, i.e., without switching back to
|
||||||
|
host mode.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>adjust <tt>RequestResize</tt> to avoid shrinking screen
|
||||||
|
when using <tt>DECCOLM</tt> while the status-line is active
|
||||||
|
(report/patch by Thomas Wolff).</li>
|
||||||
|
|
||||||
|
<li>disallow wrapping before the beginning of the screen, to
|
||||||
|
the end of the screen, for cursor-back sequences (Redhat
|
||||||
|
#2182357).</li>
|
||||||
|
|
||||||
|
<li>modify makefile to install the 16x16 xpm files (report by
|
||||||
|
Harald Dunkel).</li>
|
||||||
|
|
||||||
|
<li>update test-package to reflect resolution of Debian
|
||||||
|
#906901.</li>
|
||||||
|
|
||||||
|
<li>change default of <code>showMissingGlyphs</code> to
|
||||||
|
<em>True</em>.</li>
|
||||||
|
|
||||||
|
<li>improve handling of double-sized characters when those
|
||||||
|
happen to be missing from the bitmap font and/or are
|
||||||
|
fullwidth.</li>
|
||||||
|
|
||||||
|
<li>pointer/overflow fixes (reported by David Leadbeater):
|
||||||
|
<ul>
|
||||||
|
<li>improve limit-checks for control-sequence numeric
|
||||||
|
parameters in SIXEL graphics.</li>
|
||||||
|
|
||||||
|
<li>add null-pointer checks in <tt>WriteNow</tt> macro to
|
||||||
|
handle a case where <tt>SS2</tt> or <tt>SS3</tt> might be
|
||||||
|
in effect while processing a combining character.</li>
|
||||||
|
|
||||||
|
<li>disallow ReGIS reporting for character-set names
|
||||||
|
containing characters other than alphanumerics or
|
||||||
|
underscore.</li>
|
||||||
|
|
||||||
|
<li>implement TrueType fallback font for double-sized
|
||||||
|
characters, including Unicode fullwidth. Also add
|
||||||
|
<tt>limitFontHeight</tt> to provide for configuring the
|
||||||
|
distinction between slightly-oversized glyphs and
|
||||||
|
double-sized glyphs.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>configure script improvements:
|
||||||
|
<ul>
|
||||||
|
<li>check for <tt>nfsd_t</tt></li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>fix a typo in the underline cursor thickness derivation
|
||||||
|
(patch by Jan Engelhardt).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h1><a name="xterm_379" id="xterm_379">Patch #379 -
|
||||||
|
2023/02/15</a></h1>
|
||||||
|
|
||||||
|
<ul>
|
||||||
|
<li>improve text-cursor (patch by Jan Engelhardt):
|
||||||
|
<ul>
|
||||||
|
<li>allow selecting <tt>CURSOR_BAR</tt> mode from
|
||||||
|
command-line/Xresources.</li>
|
||||||
|
|
||||||
|
<li>draw cursor using filled rectangle instead of rectangle
|
||||||
|
outline to permit thicker underlines/bars.</li>
|
||||||
|
|
||||||
|
<li>scale up cursor relative to font size.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>improve readline modes (Fedora #2166860):
|
||||||
|
<ul>
|
||||||
|
<li>document readline modes</li>
|
||||||
|
|
||||||
|
<li>change the feature to configure by default</li>
|
||||||
|
|
||||||
|
<li>replace hard-coded SS3 for cursor movement with current
|
||||||
|
mode</li>
|
||||||
|
|
||||||
|
<li>replace hard-coded erase/lnext characters with current
|
||||||
|
values</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>improve status-line (report by Thomas Wolff):
|
||||||
|
<ul>
|
||||||
|
<li><tt>RIS</tt> turns off status-line</li>
|
||||||
|
|
||||||
|
<li>Right-margin (<tt>DECLRMM</tt> and <tt>DECSLRM</tt>)
|
||||||
|
limits the length of text written/updated in the
|
||||||
|
status-line.</li>
|
||||||
|
|
||||||
|
<li>Most controls which affect the whole screen are ignored
|
||||||
|
while updating the status-line.</li>
|
||||||
|
</ul>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>modify configure check for <tt>tgetent</tt> to allow for
|
||||||
|
some special cases of ncurses configuration (report by Satadru
|
||||||
|
Pramani).</li>
|
||||||
|
|
||||||
|
<li>reduce timeout, improve warning message if resize is run on
|
||||||
|
a terminal which is not VT100-compatible.</li>
|
||||||
|
|
||||||
|
<li>reduce compiler warnings in configure script.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<h1><a name="xterm_378" id="xterm_378">Patch #378 -
|
<h1><a name="xterm_378" id="xterm_378">Patch #378 -
|
||||||
2023/01/09</a></h1>
|
2023/01/09</a></h1>
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: xterm_io.h,v 1.67 2020/01/18 18:48:19 tom Exp $ */
|
/* $XTermId: xterm_io.h,v 1.69 2024/05/03 23:32:26 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2000-2018,2020 by Thomas E. Dickey
|
* Copyright 2000-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -70,7 +70,7 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef linux
|
#ifdef __linux__
|
||||||
#define USE_TERMIOS
|
#define USE_TERMIOS
|
||||||
#define HAVE_POSIX_OPENPT 1
|
#define HAVE_POSIX_OPENPT 1
|
||||||
#define HAVE_PTSNAME 1
|
#define HAVE_PTSNAME 1
|
||||||
|
@ -99,7 +99,7 @@
|
||||||
#define HAVE_GRANTPT_PTY_ISATTY 1
|
#define HAVE_GRANTPT_PTY_ISATTY 1
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__GLIBC__) && !(defined(linux) || defined(__GNU__))
|
#if defined(__GLIBC__) && !(defined(__linux__) || defined(__GNU__))
|
||||||
#define USE_POSIX_TERMIOS /* GNU/KFreeBSD and GNU/KNetBSD */
|
#define USE_POSIX_TERMIOS /* GNU/KFreeBSD and GNU/KNetBSD */
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@
|
||||||
|
|
||||||
#ifdef Lynx
|
#ifdef Lynx
|
||||||
#include <resource.h>
|
#include <resource.h>
|
||||||
#elif !(defined(SYSV) || defined(linux) || defined(VMS) || (defined(__QNX__)&&!defined(__QNXNTO__)))
|
#elif !(defined(SYSV) || defined(__linux__) || defined(VMS) || (defined(__QNX__)&&!defined(__QNXNTO__)))
|
||||||
#include <sys/resource.h>
|
#include <sys/resource.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@
|
||||||
#include <sys/filio.h>
|
#include <sys/filio.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(TIOCSLTC) && ! (defined(linux) || defined(__MVS__) || defined(Lynx) || defined(SVR4))
|
#if defined(TIOCSLTC) && ! (defined(__linux__) || defined(__MVS__) || defined(Lynx) || defined(SVR4))
|
||||||
#define HAS_LTCHARS
|
#define HAS_LTCHARS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -284,4 +284,18 @@
|
||||||
|
|
||||||
typedef unsigned short ttySize_t;
|
typedef unsigned short ttySize_t;
|
||||||
|
|
||||||
|
#ifdef USE_ANY_SYSV_TERMIO
|
||||||
|
#define TERMIO_STRUCT struct termio
|
||||||
|
#define ttySetAttr(fd, datap) ioctl(fd, TCSETA, datap)
|
||||||
|
#define ttyGetAttr(fd, datap) ioctl(fd, TCGETA, datap)
|
||||||
|
#define ttyFlush(fd) ioctl(fd, TCFLSH, 1)
|
||||||
|
#elif defined(USE_POSIX_TERMIOS)
|
||||||
|
#define TERMIO_STRUCT struct termios
|
||||||
|
#define ttySetAttr(fd, datap) tcsetattr(fd, TCSANOW, datap)
|
||||||
|
#define ttyGetAttr(fd, datap) tcgetattr(fd, datap)
|
||||||
|
#define ttyFlush(fd) tcflush(fd, TCOFLUSH)
|
||||||
|
#else
|
||||||
|
#error Neither termio or termios is enabled
|
||||||
|
#endif /* USE_ANY_SYSV_TERMIO */
|
||||||
|
|
||||||
#endif /* included_xterm_io_h */
|
#endif /* included_xterm_io_h */
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $XTermId: xtermcap.c,v 1.58 2023/01/02 18:19:19 tom Exp $ */
|
/* $XTermId: xtermcap.c,v 1.59 2023/12/25 21:18:03 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 2007-2020,2023 by Thomas E. Dickey
|
* Copyright 2007-2020,2023 by Thomas E. Dickey
|
||||||
|
@ -649,6 +649,8 @@ free_termcap(XtermWidget xw)
|
||||||
}
|
}
|
||||||
FreeAndNull(screen->tcap_fkeys);
|
FreeAndNull(screen->tcap_fkeys);
|
||||||
}
|
}
|
||||||
|
#else
|
||||||
|
(void) xw;
|
||||||
#endif
|
#endif
|
||||||
TcapFree();
|
TcapFree();
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: xtermcfg.hin,v 1.225 2022/02/13 13:50:45 tom Exp $ */
|
/* $XTermId: xtermcfg.hin,v 1.232 2024/05/17 08:13:42 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1997-2021,2022 by Thomas E. Dickey
|
* Copyright 1997-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -43,7 +43,6 @@
|
||||||
* DEBUG* (any debug-option)
|
* DEBUG* (any debug-option)
|
||||||
* DUMP_* (mostly in the ReGIS/SIXEL code)
|
* DUMP_* (mostly in the ReGIS/SIXEL code)
|
||||||
* HAS_LTCHARS
|
* HAS_LTCHARS
|
||||||
* HAVE_SYS_PTEM_H
|
|
||||||
* PUCC_PTYD
|
* PUCC_PTYD
|
||||||
* USE_LOGIN_DASH_P
|
* USE_LOGIN_DASH_P
|
||||||
* USE_X11TERM
|
* USE_X11TERM
|
||||||
|
@ -65,15 +64,18 @@
|
||||||
#define DFT_TERMTYPE "xterm" /* AC_ARG_WITH(default-term-type) */
|
#define DFT_TERMTYPE "xterm" /* AC_ARG_WITH(default-term-type) */
|
||||||
/* #undef DISABLE_SETGID */ /* CF_ARG_DISABLE(setgid) */
|
/* #undef DISABLE_SETGID */ /* CF_ARG_DISABLE(setgid) */
|
||||||
/* #undef DISABLE_SETUID */ /* CF_ARG_DISABLE(setuid) */
|
/* #undef DISABLE_SETUID */ /* CF_ARG_DISABLE(setuid) */
|
||||||
|
#define HAVE_CLOCK_GETTIME /* CF_FUNC_GETTIME */
|
||||||
#define HAVE_ENDUSERSHELL /* AC_CHECK_FUNCS(endusershell) */
|
#define HAVE_ENDUSERSHELL /* AC_CHECK_FUNCS(endusershell) */
|
||||||
#define HAVE_GETHOSTNAME 1 /* AC_CHECK_FUNCS(gethostname) */
|
#define HAVE_GETHOSTNAME 1 /* AC_CHECK_FUNCS(gethostname) */
|
||||||
#define HAVE_GETLOGIN 1 /* AC_CHECK_FUNCS(getlogin) */
|
#define HAVE_GETLOGIN 1 /* AC_CHECK_FUNCS(getlogin) */
|
||||||
|
#define HAVE_GETTIMEOFDAY /* CF_FUNC_GETTIME */
|
||||||
#define HAVE_GETUSERSHELL /* AC_CHECK_FUNCS(getusershell) */
|
#define HAVE_GETUSERSHELL /* AC_CHECK_FUNCS(getusershell) */
|
||||||
/* #undef HAVE_GRANTPT */ /* CF_FUNC_GRANTPT */
|
/* #undef HAVE_GRANTPT */ /* CF_FUNC_GRANTPT */
|
||||||
/* #undef HAVE_GRANTPT_PTY_ISATTY */ /* CF_FUNC_GRANTPT */
|
/* #undef HAVE_GRANTPT_PTY_ISATTY */ /* CF_FUNC_GRANTPT */
|
||||||
#define HAVE_INITGROUPS 1 /* AC_CHECK_FUNCS(initgroups) */
|
#define HAVE_INITGROUPS 1 /* AC_CHECK_FUNCS(initgroups) */
|
||||||
#define HAVE_LANGINFO_CODESET 1 /* AM_LANGINFO_CODESET */
|
#define HAVE_LANGINFO_CODESET 1 /* AM_LANGINFO_CODESET */
|
||||||
/* #undef HAVE_LASTLOG_H */ /* CF_LASTLOG */
|
/* #undef HAVE_LASTLOG_H */ /* CF_LASTLOG */
|
||||||
|
/* #undef HAVE_LIBUTIL_H */ /* AC_CHECK_HEADERS(libutil.h) */
|
||||||
#define HAVE_LIBXPM /* CF_WITH_XPM */
|
#define HAVE_LIBXPM /* CF_WITH_XPM */
|
||||||
/* #undef HAVE_LIB_NEXTAW */ /* CF_X_ATHENA(--with-neXtaw) */
|
/* #undef HAVE_LIB_NEXTAW */ /* CF_X_ATHENA(--with-neXtaw) */
|
||||||
/* #undef HAVE_LIB_PCRE */ /* CF_WITH_PCRE */
|
/* #undef HAVE_LIB_PCRE */ /* CF_WITH_PCRE */
|
||||||
|
@ -84,23 +86,29 @@
|
||||||
/* #undef HAVE_LIB_XAWPLUS */ /* CF_X_ATHENA(--with-XawPlus) */
|
/* #undef HAVE_LIB_XAWPLUS */ /* CF_X_ATHENA(--with-XawPlus) */
|
||||||
#define HAVE_LIB_XCURSOR 1 /* AC_CHECK_LIB(Xcursor) */
|
#define HAVE_LIB_XCURSOR 1 /* AC_CHECK_LIB(Xcursor) */
|
||||||
#define HAVE_MKDTEMP 1 /* AC_CHECK_FUNCS(mkdtemp) */
|
#define HAVE_MKDTEMP 1 /* AC_CHECK_FUNCS(mkdtemp) */
|
||||||
#define HAVE_MKSTEMP /* CF_MKSTEMP */
|
#define HAVE_MKSTEMP 1 /* CF_MKSTEMP */
|
||||||
/* #undef HAVE_NCURSES_CURSES_H */ /* AC_CHECK_HEADERS(ncurses/curses.h) */
|
/* #undef HAVE_NCURSES_CURSES_H */ /* AC_CHECK_HEADERS(ncurses/curses.h) */
|
||||||
/* #undef HAVE_NCURSES_TERM_H */ /* AC_CHECK_HEADERS(ncurses/term.h) */
|
/* #undef HAVE_NCURSES_TERM_H */ /* AC_CHECK_HEADERS(ncurses/term.h) */
|
||||||
#define HAVE_PATHS_H 1 /* CF_LASTLOG */
|
#define HAVE_PATHS_H 1 /* AC_CHECK_HEADERS(paths.h) */
|
||||||
/* #undef HAVE_PCRE2POSIX_H */ /* CF_WITH_PCRE2 */
|
/* #undef HAVE_PCRE2POSIX_H */ /* CF_WITH_PCRE2 */
|
||||||
/* #undef HAVE_PCRE2REGCOMP */ /* CF_WITH_PCRE2 */
|
/* #undef HAVE_PCRE2REGCOMP */ /* CF_WITH_PCRE2 */
|
||||||
/* #undef HAVE_PCREPOSIX_H */ /* CF_WITH_PCRE */
|
/* #undef HAVE_PCREPOSIX_H */ /* CF_WITH_PCRE */
|
||||||
/* #undef HAVE_POSIX_OPENPT */ /* CF_FUNC_GRANTPT */
|
/* #undef HAVE_POSIX_OPENPT */ /* CF_FUNC_GRANTPT */
|
||||||
#define HAVE_POSIX_SAVED_IDS 1 /* CF_POSIX_SAVED_IDS */
|
#define HAVE_POSIX_SAVED_IDS 1 /* CF_POSIX_SAVED_IDS */
|
||||||
/* #undef HAVE_PTSNAME */ /* CF_FUNC_GRANTPT */
|
/* #undef HAVE_PTSNAME */ /* CF_FUNC_GRANTPT */
|
||||||
|
/* #undef HAVE_PTY_H */ /* AC_CHECK_HEADERS(pty.h) */
|
||||||
#define HAVE_PUTENV 1 /* AC_CHECK_FUNCS(putenv) */
|
#define HAVE_PUTENV 1 /* AC_CHECK_FUNCS(putenv) */
|
||||||
#define HAVE_SCHED_YIELD 1 /* AC_CHECK_FUNCS(sched_yield) */
|
#define HAVE_SCHED_YIELD 1 /* AC_CHECK_FUNCS(sched_yield) */
|
||||||
|
#define HAVE_SETITIMER 1 /* CF_SETITIMER */
|
||||||
#define HAVE_SETPGID /* AC_CHECK_FUNCS(setpgid) */
|
#define HAVE_SETPGID /* AC_CHECK_FUNCS(setpgid) */
|
||||||
|
#define HAVE_SETSID 1 /* AC_CHECK_FUNCS(setsid) */
|
||||||
#define HAVE_STDINT_H 1 /* AC_PROG_CC_STDC */
|
#define HAVE_STDINT_H 1 /* AC_PROG_CC_STDC */
|
||||||
#define HAVE_STDLIB_H 1 /* AC_CHECK_HEADERS(stdlib.h) */
|
#define HAVE_STDLIB_H 1 /* AC_CHECK_HEADERS(stdlib.h) */
|
||||||
#undef HAVE_STDNORETURN_H /* CF_C11_NORETURN */
|
#undef HAVE_STDNORETURN_H /* CF_C11_NORETURN */
|
||||||
#define HAVE_STRFTIME 1 /* AC_CHECK_FUNCS(strftime) */
|
#define HAVE_STRFTIME 1 /* AC_CHECK_FUNCS(strftime) */
|
||||||
|
/* #undef HAVE_STROPTS_H */ /* AC_CHECK_HEADERS(stropts.h) */
|
||||||
|
#define HAVE_SYS_PARAM_H 1 /* AC_CHECK_HEADERS(sys/param.h) */
|
||||||
|
/* #undef HAVE_SYS_PTEM_H */ /* AC_CHECK_HEADERS(sys/ptem.h) */
|
||||||
/* #undef HAVE_SYS_TIME_H */ /* AC_HEADER_TIME */
|
/* #undef HAVE_SYS_TIME_H */ /* AC_HEADER_TIME */
|
||||||
#define HAVE_SYS_TTYDEFAULTS_H 1 /* AC_CHECK_HEADERS(sys/ttydefaults.h) */
|
#define HAVE_SYS_TTYDEFAULTS_H 1 /* AC_CHECK_HEADERS(sys/ttydefaults.h) */
|
||||||
#define HAVE_SYS_WAIT_H 1 /* AC_HEADER_SYS_WAIT */
|
#define HAVE_SYS_WAIT_H 1 /* AC_HEADER_SYS_WAIT */
|
||||||
|
@ -113,6 +121,7 @@
|
||||||
#define HAVE_UNISTD_H 1 /* AC_CHECK_HEADERS(unistd.h) */
|
#define HAVE_UNISTD_H 1 /* AC_CHECK_HEADERS(unistd.h) */
|
||||||
#define HAVE_UNSETENV /* AC_CHECK_FUNCS(unsetenv) */
|
#define HAVE_UNSETENV /* AC_CHECK_FUNCS(unsetenv) */
|
||||||
#define HAVE_USE_EXTENDED_NAMES 1 /* AC_CHECK_FUNCS(use_extended_names) */
|
#define HAVE_USE_EXTENDED_NAMES 1 /* AC_CHECK_FUNCS(use_extended_names) */
|
||||||
|
#define HAVE_UTIL_H /* AC_CHECK_HEADERS(util.h) */
|
||||||
#define HAVE_UTMP 1 /* CF_UTMP */
|
#define HAVE_UTMP 1 /* CF_UTMP */
|
||||||
#define HAVE_UTMP_UT_HOST 1 /* CF_UTMP_UT_HOST */
|
#define HAVE_UTMP_UT_HOST 1 /* CF_UTMP_UT_HOST */
|
||||||
/* #undef HAVE_UTMP_UT_SESSION */ /* CF_UTMP_UT_SESSION */
|
/* #undef HAVE_UTMP_UT_SESSION */ /* CF_UTMP_UT_SESSION */
|
||||||
|
@ -222,6 +231,7 @@
|
||||||
/* #undef cc_t */ /* CF_TYPE_CC_T */
|
/* #undef cc_t */ /* CF_TYPE_CC_T */
|
||||||
/* #undef gid_t */ /* AC_TYPE_UID_T */
|
/* #undef gid_t */ /* AC_TYPE_UID_T */
|
||||||
/* #undef mode_t */ /* AC_TYPE_MODE_T */
|
/* #undef mode_t */ /* AC_TYPE_MODE_T */
|
||||||
|
/* +#undef nfds_t */ /* CF_TYPE_NFDS_T */
|
||||||
/* #undef off_t */ /* AC_TYPE_OFF_T */
|
/* #undef off_t */ /* AC_TYPE_OFF_T */
|
||||||
/* #undef pid_t */ /* AC_TYPE_PID_T */
|
/* #undef pid_t */ /* AC_TYPE_PID_T */
|
||||||
/* #undef time_t */ /* AC_CHECK_TYPE(time_t, long) */
|
/* #undef time_t */ /* AC_CHECK_TYPE(time_t, long) */
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/* $XTermId: xtermcfg.hin,v 1.227 2022/09/11 19:26:01 tom Exp $ */
|
/* $XTermId: xtermcfg.hin,v 1.233 2024/07/05 23:37:42 tom Exp $ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Copyright 1997-2021,2022 by Thomas E. Dickey
|
* Copyright 1997-2023,2024 by Thomas E. Dickey
|
||||||
*
|
*
|
||||||
* All Rights Reserved
|
* All Rights Reserved
|
||||||
*
|
*
|
||||||
|
@ -43,7 +43,6 @@
|
||||||
* DEBUG* (any debug-option)
|
* DEBUG* (any debug-option)
|
||||||
* DUMP_* (mostly in the ReGIS/SIXEL code)
|
* DUMP_* (mostly in the ReGIS/SIXEL code)
|
||||||
* HAS_LTCHARS
|
* HAS_LTCHARS
|
||||||
* HAVE_SYS_PTEM_H
|
|
||||||
* PUCC_PTYD
|
* PUCC_PTYD
|
||||||
* USE_LOGIN_DASH_P
|
* USE_LOGIN_DASH_P
|
||||||
* USE_X11TERM
|
* USE_X11TERM
|
||||||
|
@ -65,15 +64,18 @@
|
||||||
#undef DFT_TERMTYPE /* AC_ARG_WITH(default-term-type) */
|
#undef DFT_TERMTYPE /* AC_ARG_WITH(default-term-type) */
|
||||||
#undef DISABLE_SETGID /* CF_ARG_DISABLE(setgid) */
|
#undef DISABLE_SETGID /* CF_ARG_DISABLE(setgid) */
|
||||||
#undef DISABLE_SETUID /* CF_ARG_DISABLE(setuid) */
|
#undef DISABLE_SETUID /* CF_ARG_DISABLE(setuid) */
|
||||||
|
#undef HAVE_CLOCK_GETTIME /* CF_FUNC_GETTIME */
|
||||||
#undef HAVE_ENDUSERSHELL /* AC_CHECK_FUNCS(endusershell) */
|
#undef HAVE_ENDUSERSHELL /* AC_CHECK_FUNCS(endusershell) */
|
||||||
#undef HAVE_GETHOSTNAME /* AC_CHECK_FUNCS(gethostname) */
|
#undef HAVE_GETHOSTNAME /* AC_CHECK_FUNCS(gethostname) */
|
||||||
#undef HAVE_GETLOGIN /* AC_CHECK_FUNCS(getlogin) */
|
#undef HAVE_GETLOGIN /* AC_CHECK_FUNCS(getlogin) */
|
||||||
|
#undef HAVE_GETTIMEOFDAY /* CF_FUNC_GETTIME */
|
||||||
#undef HAVE_GETUSERSHELL /* AC_CHECK_FUNCS(getusershell) */
|
#undef HAVE_GETUSERSHELL /* AC_CHECK_FUNCS(getusershell) */
|
||||||
#undef HAVE_GRANTPT /* CF_FUNC_GRANTPT */
|
#undef HAVE_GRANTPT /* CF_FUNC_GRANTPT */
|
||||||
#undef HAVE_GRANTPT_PTY_ISATTY /* CF_FUNC_GRANTPT */
|
#undef HAVE_GRANTPT_PTY_ISATTY /* CF_FUNC_GRANTPT */
|
||||||
#undef HAVE_INITGROUPS /* AC_CHECK_FUNCS(initgroups) */
|
#undef HAVE_INITGROUPS /* AC_CHECK_FUNCS(initgroups) */
|
||||||
#undef HAVE_LANGINFO_CODESET /* AM_LANGINFO_CODESET */
|
#undef HAVE_LANGINFO_CODESET /* AM_LANGINFO_CODESET */
|
||||||
#undef HAVE_LASTLOG_H /* CF_LASTLOG */
|
#undef HAVE_LASTLOG_H /* CF_LASTLOG */
|
||||||
|
#undef HAVE_LIBUTIL_H /* AC_CHECK_HEADERS(libutil.h) */
|
||||||
#undef HAVE_LIBXPM /* CF_WITH_XPM */
|
#undef HAVE_LIBXPM /* CF_WITH_XPM */
|
||||||
#undef HAVE_LIB_NEXTAW /* CF_X_ATHENA(--with-neXtaw) */
|
#undef HAVE_LIB_NEXTAW /* CF_X_ATHENA(--with-neXtaw) */
|
||||||
#undef HAVE_LIB_PCRE /* CF_WITH_PCRE */
|
#undef HAVE_LIB_PCRE /* CF_WITH_PCRE */
|
||||||
|
@ -94,13 +96,19 @@
|
||||||
#undef HAVE_POSIX_OPENPT /* CF_FUNC_GRANTPT */
|
#undef HAVE_POSIX_OPENPT /* CF_FUNC_GRANTPT */
|
||||||
#undef HAVE_POSIX_SAVED_IDS /* CF_POSIX_SAVED_IDS */
|
#undef HAVE_POSIX_SAVED_IDS /* CF_POSIX_SAVED_IDS */
|
||||||
#undef HAVE_PTSNAME /* CF_FUNC_GRANTPT */
|
#undef HAVE_PTSNAME /* CF_FUNC_GRANTPT */
|
||||||
|
#undef HAVE_PTY_H /* AC_CHECK_HEADERS(pty.h) */
|
||||||
#undef HAVE_PUTENV /* AC_CHECK_FUNCS(putenv) */
|
#undef HAVE_PUTENV /* AC_CHECK_FUNCS(putenv) */
|
||||||
#undef HAVE_SCHED_YIELD /* AC_CHECK_FUNCS(sched_yield) */
|
#undef HAVE_SCHED_YIELD /* AC_CHECK_FUNCS(sched_yield) */
|
||||||
|
#undef HAVE_SETITIMER /* CF_SETITIMER */
|
||||||
#undef HAVE_SETPGID /* AC_CHECK_FUNCS(setpgid) */
|
#undef HAVE_SETPGID /* AC_CHECK_FUNCS(setpgid) */
|
||||||
|
#undef HAVE_SETSID /* AC_CHECK_FUNCS(setsid) */
|
||||||
#undef HAVE_STDINT_H /* AC_PROG_CC_STDC */
|
#undef HAVE_STDINT_H /* AC_PROG_CC_STDC */
|
||||||
#undef HAVE_STDLIB_H /* AC_CHECK_HEADERS(stdlib.h) */
|
#undef HAVE_STDLIB_H /* AC_CHECK_HEADERS(stdlib.h) */
|
||||||
#undef HAVE_STDNORETURN_H /* CF_C11_NORETURN */
|
#undef HAVE_STDNORETURN_H /* CF_C11_NORETURN */
|
||||||
#undef HAVE_STRFTIME /* AC_CHECK_FUNCS(strftime) */
|
#undef HAVE_STRFTIME /* AC_CHECK_FUNCS(strftime) */
|
||||||
|
#undef HAVE_STROPTS_H /* AC_CHECK_HEADERS(stropts.h) */
|
||||||
|
#undef HAVE_SYS_PARAM_H /* AC_CHECK_HEADERS(sys/param.h) */
|
||||||
|
#undef HAVE_SYS_PTEM_H /* AC_CHECK_HEADERS(sys/ptem.h) */
|
||||||
#undef HAVE_SYS_TIME_H /* AC_HEADER_TIME */
|
#undef HAVE_SYS_TIME_H /* AC_HEADER_TIME */
|
||||||
#undef HAVE_SYS_TTYDEFAULTS_H /* AC_CHECK_HEADERS(sys/ttydefaults.h) */
|
#undef HAVE_SYS_TTYDEFAULTS_H /* AC_CHECK_HEADERS(sys/ttydefaults.h) */
|
||||||
#undef HAVE_SYS_WAIT_H /* AC_HEADER_SYS_WAIT */
|
#undef HAVE_SYS_WAIT_H /* AC_HEADER_SYS_WAIT */
|
||||||
|
@ -113,6 +121,7 @@
|
||||||
#undef HAVE_UNISTD_H /* AC_CHECK_HEADERS(unistd.h) */
|
#undef HAVE_UNISTD_H /* AC_CHECK_HEADERS(unistd.h) */
|
||||||
#undef HAVE_UNSETENV /* AC_CHECK_FUNCS(unsetenv) */
|
#undef HAVE_UNSETENV /* AC_CHECK_FUNCS(unsetenv) */
|
||||||
#undef HAVE_USE_EXTENDED_NAMES /* AC_CHECK_FUNCS(use_extended_names) */
|
#undef HAVE_USE_EXTENDED_NAMES /* AC_CHECK_FUNCS(use_extended_names) */
|
||||||
|
#undef HAVE_UTIL_H /* AC_CHECK_HEADERS(util.h) */
|
||||||
#undef HAVE_UTMP /* CF_UTMP */
|
#undef HAVE_UTMP /* CF_UTMP */
|
||||||
#undef HAVE_UTMP_UT_HOST /* CF_UTMP_UT_HOST */
|
#undef HAVE_UTMP_UT_HOST /* CF_UTMP_UT_HOST */
|
||||||
#undef HAVE_UTMP_UT_SESSION /* CF_UTMP_UT_SESSION */
|
#undef HAVE_UTMP_UT_SESSION /* CF_UTMP_UT_SESSION */
|
||||||
|
@ -222,6 +231,7 @@
|
||||||
#undef cc_t /* CF_TYPE_CC_T */
|
#undef cc_t /* CF_TYPE_CC_T */
|
||||||
#undef gid_t /* AC_TYPE_UID_T */
|
#undef gid_t /* AC_TYPE_UID_T */
|
||||||
#undef mode_t /* AC_TYPE_MODE_T */
|
#undef mode_t /* AC_TYPE_MODE_T */
|
||||||
|
#undef nfds_t /* CF_TYPE_NFDS_T */
|
||||||
#undef off_t /* AC_TYPE_OFF_T */
|
#undef off_t /* AC_TYPE_OFF_T */
|
||||||
#undef pid_t /* AC_TYPE_PID_T */
|
#undef pid_t /* AC_TYPE_PID_T */
|
||||||
#undef time_t /* AC_CHECK_TYPE(time_t, long) */
|
#undef time_t /* AC_CHECK_TYPE(time_t, long) */
|
||||||
|
|
|
@ -83,7 +83,6 @@
|
||||||
./usr/X11R6/include/libdrm/vmwgfx_drm.h
|
./usr/X11R6/include/libdrm/vmwgfx_drm.h
|
||||||
./usr/X11R6/include/va/va.h
|
./usr/X11R6/include/va/va.h
|
||||||
./usr/X11R6/include/va/va_backend.h
|
./usr/X11R6/include/va/va_backend.h
|
||||||
./usr/X11R6/include/va/va_backend_glx.h
|
|
||||||
./usr/X11R6/include/va/va_backend_prot.h
|
./usr/X11R6/include/va/va_backend_prot.h
|
||||||
./usr/X11R6/include/va/va_backend_vpp.h
|
./usr/X11R6/include/va/va_backend_vpp.h
|
||||||
./usr/X11R6/include/va/va_compat.h
|
./usr/X11R6/include/va/va_compat.h
|
||||||
|
@ -108,7 +107,6 @@
|
||||||
./usr/X11R6/include/va/va_fei.h
|
./usr/X11R6/include/va/va_fei.h
|
||||||
./usr/X11R6/include/va/va_fei_h264.h
|
./usr/X11R6/include/va/va_fei_h264.h
|
||||||
./usr/X11R6/include/va/va_fei_hevc.h
|
./usr/X11R6/include/va/va_fei_hevc.h
|
||||||
./usr/X11R6/include/va/va_glx.h
|
|
||||||
./usr/X11R6/include/va/va_prot.h
|
./usr/X11R6/include/va/va_prot.h
|
||||||
./usr/X11R6/include/va/va_str.h
|
./usr/X11R6/include/va/va_str.h
|
||||||
./usr/X11R6/include/va/va_tpi.h
|
./usr/X11R6/include/va/va_tpi.h
|
||||||
|
@ -315,7 +313,6 @@
|
||||||
./usr/X11R6/lib/libdrm_radeon_p.a
|
./usr/X11R6/lib/libdrm_radeon_p.a
|
||||||
./usr/X11R6/lib/libepoxy.a
|
./usr/X11R6/lib/libepoxy.a
|
||||||
./usr/X11R6/lib/libepoxy.so.4.1
|
./usr/X11R6/lib/libepoxy.so.4.1
|
||||||
./usr/X11R6/lib/libgallium_drv_video.a
|
|
||||||
./usr/X11R6/lib/libgbm.a
|
./usr/X11R6/lib/libgbm.a
|
||||||
./usr/X11R6/lib/libgbm.so.0.6
|
./usr/X11R6/lib/libgbm.so.0.6
|
||||||
./usr/X11R6/lib/libgbm_p.a
|
./usr/X11R6/lib/libgbm_p.a
|
||||||
|
@ -324,8 +321,6 @@
|
||||||
./usr/X11R6/lib/libglapi_p.a
|
./usr/X11R6/lib/libglapi_p.a
|
||||||
./usr/X11R6/lib/libva-drm.la
|
./usr/X11R6/lib/libva-drm.la
|
||||||
./usr/X11R6/lib/libva-drm.so.2.22
|
./usr/X11R6/lib/libva-drm.so.2.22
|
||||||
./usr/X11R6/lib/libva-glx.la
|
|
||||||
./usr/X11R6/lib/libva-glx.so.2.22
|
|
||||||
./usr/X11R6/lib/libva-x11.la
|
./usr/X11R6/lib/libva-x11.la
|
||||||
./usr/X11R6/lib/libva-x11.so.2.22
|
./usr/X11R6/lib/libva-x11.so.2.22
|
||||||
./usr/X11R6/lib/libva.la
|
./usr/X11R6/lib/libva.la
|
||||||
|
@ -349,7 +344,6 @@
|
||||||
./usr/X11R6/lib/pkgconfig/libdrm_amdgpu.pc
|
./usr/X11R6/lib/pkgconfig/libdrm_amdgpu.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libdrm_intel.pc
|
./usr/X11R6/lib/pkgconfig/libdrm_intel.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva-drm.pc
|
./usr/X11R6/lib/pkgconfig/libva-drm.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva-glx.pc
|
|
||||||
./usr/X11R6/lib/pkgconfig/libva-x11.pc
|
./usr/X11R6/lib/pkgconfig/libva-x11.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva.pc
|
./usr/X11R6/lib/pkgconfig/libva.pc
|
||||||
./usr/X11R6/lib/pkgconfig/osmesa.pc
|
./usr/X11R6/lib/pkgconfig/osmesa.pc
|
||||||
|
|
|
@ -78,7 +78,6 @@
|
||||||
./usr/X11R6/include/libdrm/vmwgfx_drm.h
|
./usr/X11R6/include/libdrm/vmwgfx_drm.h
|
||||||
./usr/X11R6/include/va/va.h
|
./usr/X11R6/include/va/va.h
|
||||||
./usr/X11R6/include/va/va_backend.h
|
./usr/X11R6/include/va/va_backend.h
|
||||||
./usr/X11R6/include/va/va_backend_glx.h
|
|
||||||
./usr/X11R6/include/va/va_backend_prot.h
|
./usr/X11R6/include/va/va_backend_prot.h
|
||||||
./usr/X11R6/include/va/va_backend_vpp.h
|
./usr/X11R6/include/va/va_backend_vpp.h
|
||||||
./usr/X11R6/include/va/va_compat.h
|
./usr/X11R6/include/va/va_compat.h
|
||||||
|
@ -103,7 +102,6 @@
|
||||||
./usr/X11R6/include/va/va_fei.h
|
./usr/X11R6/include/va/va_fei.h
|
||||||
./usr/X11R6/include/va/va_fei_h264.h
|
./usr/X11R6/include/va/va_fei_h264.h
|
||||||
./usr/X11R6/include/va/va_fei_hevc.h
|
./usr/X11R6/include/va/va_fei_hevc.h
|
||||||
./usr/X11R6/include/va/va_glx.h
|
|
||||||
./usr/X11R6/include/va/va_prot.h
|
./usr/X11R6/include/va/va_prot.h
|
||||||
./usr/X11R6/include/va/va_str.h
|
./usr/X11R6/include/va/va_str.h
|
||||||
./usr/X11R6/include/va/va_tpi.h
|
./usr/X11R6/include/va/va_tpi.h
|
||||||
|
@ -303,7 +301,6 @@
|
||||||
./usr/X11R6/lib/libdrm_radeon_p.a
|
./usr/X11R6/lib/libdrm_radeon_p.a
|
||||||
./usr/X11R6/lib/libepoxy.a
|
./usr/X11R6/lib/libepoxy.a
|
||||||
./usr/X11R6/lib/libepoxy.so.4.1
|
./usr/X11R6/lib/libepoxy.so.4.1
|
||||||
./usr/X11R6/lib/libgallium_drv_video.a
|
|
||||||
./usr/X11R6/lib/libgbm.a
|
./usr/X11R6/lib/libgbm.a
|
||||||
./usr/X11R6/lib/libgbm.so.0.6
|
./usr/X11R6/lib/libgbm.so.0.6
|
||||||
./usr/X11R6/lib/libgbm_p.a
|
./usr/X11R6/lib/libgbm_p.a
|
||||||
|
@ -312,8 +309,6 @@
|
||||||
./usr/X11R6/lib/libglapi_p.a
|
./usr/X11R6/lib/libglapi_p.a
|
||||||
./usr/X11R6/lib/libva-drm.la
|
./usr/X11R6/lib/libva-drm.la
|
||||||
./usr/X11R6/lib/libva-drm.so.2.22
|
./usr/X11R6/lib/libva-drm.so.2.22
|
||||||
./usr/X11R6/lib/libva-glx.la
|
|
||||||
./usr/X11R6/lib/libva-glx.so.2.22
|
|
||||||
./usr/X11R6/lib/libva-x11.la
|
./usr/X11R6/lib/libva-x11.la
|
||||||
./usr/X11R6/lib/libva-x11.so.2.22
|
./usr/X11R6/lib/libva-x11.so.2.22
|
||||||
./usr/X11R6/lib/libva.la
|
./usr/X11R6/lib/libva.la
|
||||||
|
@ -335,7 +330,6 @@
|
||||||
./usr/X11R6/lib/pkgconfig/libdrm_amdgpu.pc
|
./usr/X11R6/lib/pkgconfig/libdrm_amdgpu.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libdrm_radeon.pc
|
./usr/X11R6/lib/pkgconfig/libdrm_radeon.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva-drm.pc
|
./usr/X11R6/lib/pkgconfig/libva-drm.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva-glx.pc
|
|
||||||
./usr/X11R6/lib/pkgconfig/libva-x11.pc
|
./usr/X11R6/lib/pkgconfig/libva-x11.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva.pc
|
./usr/X11R6/lib/pkgconfig/libva.pc
|
||||||
./usr/X11R6/lib/pkgconfig/osmesa.pc
|
./usr/X11R6/lib/pkgconfig/osmesa.pc
|
||||||
|
|
|
@ -78,7 +78,6 @@
|
||||||
./usr/X11R6/include/libdrm/vmwgfx_drm.h
|
./usr/X11R6/include/libdrm/vmwgfx_drm.h
|
||||||
./usr/X11R6/include/va/va.h
|
./usr/X11R6/include/va/va.h
|
||||||
./usr/X11R6/include/va/va_backend.h
|
./usr/X11R6/include/va/va_backend.h
|
||||||
./usr/X11R6/include/va/va_backend_glx.h
|
|
||||||
./usr/X11R6/include/va/va_backend_prot.h
|
./usr/X11R6/include/va/va_backend_prot.h
|
||||||
./usr/X11R6/include/va/va_backend_vpp.h
|
./usr/X11R6/include/va/va_backend_vpp.h
|
||||||
./usr/X11R6/include/va/va_compat.h
|
./usr/X11R6/include/va/va_compat.h
|
||||||
|
@ -103,7 +102,6 @@
|
||||||
./usr/X11R6/include/va/va_fei.h
|
./usr/X11R6/include/va/va_fei.h
|
||||||
./usr/X11R6/include/va/va_fei_h264.h
|
./usr/X11R6/include/va/va_fei_h264.h
|
||||||
./usr/X11R6/include/va/va_fei_hevc.h
|
./usr/X11R6/include/va/va_fei_hevc.h
|
||||||
./usr/X11R6/include/va/va_glx.h
|
|
||||||
./usr/X11R6/include/va/va_prot.h
|
./usr/X11R6/include/va/va_prot.h
|
||||||
./usr/X11R6/include/va/va_str.h
|
./usr/X11R6/include/va/va_str.h
|
||||||
./usr/X11R6/include/va/va_tpi.h
|
./usr/X11R6/include/va/va_tpi.h
|
||||||
|
@ -303,7 +301,6 @@
|
||||||
./usr/X11R6/lib/libdrm_radeon_p.a
|
./usr/X11R6/lib/libdrm_radeon_p.a
|
||||||
./usr/X11R6/lib/libepoxy.a
|
./usr/X11R6/lib/libepoxy.a
|
||||||
./usr/X11R6/lib/libepoxy.so.4.1
|
./usr/X11R6/lib/libepoxy.so.4.1
|
||||||
./usr/X11R6/lib/libgallium_drv_video.a
|
|
||||||
./usr/X11R6/lib/libgbm.a
|
./usr/X11R6/lib/libgbm.a
|
||||||
./usr/X11R6/lib/libgbm.so.0.6
|
./usr/X11R6/lib/libgbm.so.0.6
|
||||||
./usr/X11R6/lib/libgbm_p.a
|
./usr/X11R6/lib/libgbm_p.a
|
||||||
|
@ -312,8 +309,6 @@
|
||||||
./usr/X11R6/lib/libglapi_p.a
|
./usr/X11R6/lib/libglapi_p.a
|
||||||
./usr/X11R6/lib/libva-drm.la
|
./usr/X11R6/lib/libva-drm.la
|
||||||
./usr/X11R6/lib/libva-drm.so.2.22
|
./usr/X11R6/lib/libva-drm.so.2.22
|
||||||
./usr/X11R6/lib/libva-glx.la
|
|
||||||
./usr/X11R6/lib/libva-glx.so.2.22
|
|
||||||
./usr/X11R6/lib/libva-x11.la
|
./usr/X11R6/lib/libva-x11.la
|
||||||
./usr/X11R6/lib/libva-x11.so.2.22
|
./usr/X11R6/lib/libva-x11.so.2.22
|
||||||
./usr/X11R6/lib/libva.la
|
./usr/X11R6/lib/libva.la
|
||||||
|
@ -334,7 +329,6 @@
|
||||||
./usr/X11R6/lib/pkgconfig/libdrm_amdgpu.pc
|
./usr/X11R6/lib/pkgconfig/libdrm_amdgpu.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libdrm_radeon.pc
|
./usr/X11R6/lib/pkgconfig/libdrm_radeon.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva-drm.pc
|
./usr/X11R6/lib/pkgconfig/libva-drm.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva-glx.pc
|
|
||||||
./usr/X11R6/lib/pkgconfig/libva-x11.pc
|
./usr/X11R6/lib/pkgconfig/libva-x11.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva.pc
|
./usr/X11R6/lib/pkgconfig/libva.pc
|
||||||
./usr/X11R6/lib/pkgconfig/osmesa.pc
|
./usr/X11R6/lib/pkgconfig/osmesa.pc
|
||||||
|
|
|
@ -83,7 +83,6 @@
|
||||||
./usr/X11R6/include/libdrm/vmwgfx_drm.h
|
./usr/X11R6/include/libdrm/vmwgfx_drm.h
|
||||||
./usr/X11R6/include/va/va.h
|
./usr/X11R6/include/va/va.h
|
||||||
./usr/X11R6/include/va/va_backend.h
|
./usr/X11R6/include/va/va_backend.h
|
||||||
./usr/X11R6/include/va/va_backend_glx.h
|
|
||||||
./usr/X11R6/include/va/va_backend_prot.h
|
./usr/X11R6/include/va/va_backend_prot.h
|
||||||
./usr/X11R6/include/va/va_backend_vpp.h
|
./usr/X11R6/include/va/va_backend_vpp.h
|
||||||
./usr/X11R6/include/va/va_compat.h
|
./usr/X11R6/include/va/va_compat.h
|
||||||
|
@ -108,7 +107,6 @@
|
||||||
./usr/X11R6/include/va/va_fei.h
|
./usr/X11R6/include/va/va_fei.h
|
||||||
./usr/X11R6/include/va/va_fei_h264.h
|
./usr/X11R6/include/va/va_fei_h264.h
|
||||||
./usr/X11R6/include/va/va_fei_hevc.h
|
./usr/X11R6/include/va/va_fei_hevc.h
|
||||||
./usr/X11R6/include/va/va_glx.h
|
|
||||||
./usr/X11R6/include/va/va_prot.h
|
./usr/X11R6/include/va/va_prot.h
|
||||||
./usr/X11R6/include/va/va_str.h
|
./usr/X11R6/include/va/va_str.h
|
||||||
./usr/X11R6/include/va/va_tpi.h
|
./usr/X11R6/include/va/va_tpi.h
|
||||||
|
@ -315,7 +313,6 @@
|
||||||
./usr/X11R6/lib/libdrm_radeon_p.a
|
./usr/X11R6/lib/libdrm_radeon_p.a
|
||||||
./usr/X11R6/lib/libepoxy.a
|
./usr/X11R6/lib/libepoxy.a
|
||||||
./usr/X11R6/lib/libepoxy.so.4.1
|
./usr/X11R6/lib/libepoxy.so.4.1
|
||||||
./usr/X11R6/lib/libgallium_drv_video.a
|
|
||||||
./usr/X11R6/lib/libgbm.a
|
./usr/X11R6/lib/libgbm.a
|
||||||
./usr/X11R6/lib/libgbm.so.0.6
|
./usr/X11R6/lib/libgbm.so.0.6
|
||||||
./usr/X11R6/lib/libgbm_p.a
|
./usr/X11R6/lib/libgbm_p.a
|
||||||
|
@ -324,8 +321,6 @@
|
||||||
./usr/X11R6/lib/libglapi_p.a
|
./usr/X11R6/lib/libglapi_p.a
|
||||||
./usr/X11R6/lib/libva-drm.la
|
./usr/X11R6/lib/libva-drm.la
|
||||||
./usr/X11R6/lib/libva-drm.so.2.22
|
./usr/X11R6/lib/libva-drm.so.2.22
|
||||||
./usr/X11R6/lib/libva-glx.la
|
|
||||||
./usr/X11R6/lib/libva-glx.so.2.22
|
|
||||||
./usr/X11R6/lib/libva-x11.la
|
./usr/X11R6/lib/libva-x11.la
|
||||||
./usr/X11R6/lib/libva-x11.so.2.22
|
./usr/X11R6/lib/libva-x11.so.2.22
|
||||||
./usr/X11R6/lib/libva.la
|
./usr/X11R6/lib/libva.la
|
||||||
|
@ -349,7 +344,6 @@
|
||||||
./usr/X11R6/lib/pkgconfig/libdrm_amdgpu.pc
|
./usr/X11R6/lib/pkgconfig/libdrm_amdgpu.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libdrm_intel.pc
|
./usr/X11R6/lib/pkgconfig/libdrm_intel.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva-drm.pc
|
./usr/X11R6/lib/pkgconfig/libva-drm.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva-glx.pc
|
|
||||||
./usr/X11R6/lib/pkgconfig/libva-x11.pc
|
./usr/X11R6/lib/pkgconfig/libva-x11.pc
|
||||||
./usr/X11R6/lib/pkgconfig/libva.pc
|
./usr/X11R6/lib/pkgconfig/libva.pc
|
||||||
./usr/X11R6/lib/pkgconfig/osmesa.pc
|
./usr/X11R6/lib/pkgconfig/osmesa.pc
|
||||||
|
|
|
@ -9,7 +9,9 @@
|
||||||
./usr/X11R6/lib/modules/dri/kms_swrast_dri.so
|
./usr/X11R6/lib/modules/dri/kms_swrast_dri.so
|
||||||
./usr/X11R6/lib/modules/dri/r300_dri.so
|
./usr/X11R6/lib/modules/dri/r300_dri.so
|
||||||
./usr/X11R6/lib/modules/dri/r600_dri.so
|
./usr/X11R6/lib/modules/dri/r600_dri.so
|
||||||
|
./usr/X11R6/lib/modules/dri/r600_drv_video.so
|
||||||
./usr/X11R6/lib/modules/dri/radeonsi_dri.so
|
./usr/X11R6/lib/modules/dri/radeonsi_dri.so
|
||||||
|
./usr/X11R6/lib/modules/dri/radeonsi_drv_video.so
|
||||||
./usr/X11R6/lib/modules/dri/swrast_dri.so
|
./usr/X11R6/lib/modules/dri/swrast_dri.so
|
||||||
./usr/X11R6/lib/modules/drivers/amdgpu_drv.la
|
./usr/X11R6/lib/modules/drivers/amdgpu_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/amdgpu_drv.so
|
./usr/X11R6/lib/modules/drivers/amdgpu_drv.so
|
||||||
|
@ -41,10 +43,8 @@
|
||||||
./usr/X11R6/lib/modules/drivers/openchrome_drv.so
|
./usr/X11R6/lib/modules/drivers/openchrome_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/r128_drv.la
|
./usr/X11R6/lib/modules/drivers/r128_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/r128_drv.so
|
./usr/X11R6/lib/modules/drivers/r128_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/r600_drv_video.so
|
|
||||||
./usr/X11R6/lib/modules/drivers/radeon_drv.la
|
./usr/X11R6/lib/modules/drivers/radeon_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/radeon_drv.so
|
./usr/X11R6/lib/modules/drivers/radeon_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/radeonsi_drv_video.so
|
|
||||||
./usr/X11R6/lib/modules/drivers/savage_drv.la
|
./usr/X11R6/lib/modules/drivers/savage_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/savage_drv.so
|
./usr/X11R6/lib/modules/drivers/savage_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/siliconmotion_drv.la
|
./usr/X11R6/lib/modules/drivers/siliconmotion_drv.la
|
||||||
|
|
|
@ -6,7 +6,9 @@
|
||||||
./usr/X11R6/lib/modules/dri/kms_swrast_dri.so
|
./usr/X11R6/lib/modules/dri/kms_swrast_dri.so
|
||||||
./usr/X11R6/lib/modules/dri/r300_dri.so
|
./usr/X11R6/lib/modules/dri/r300_dri.so
|
||||||
./usr/X11R6/lib/modules/dri/r600_dri.so
|
./usr/X11R6/lib/modules/dri/r600_dri.so
|
||||||
|
./usr/X11R6/lib/modules/dri/r600_drv_video.so
|
||||||
./usr/X11R6/lib/modules/dri/radeonsi_dri.so
|
./usr/X11R6/lib/modules/dri/radeonsi_dri.so
|
||||||
|
./usr/X11R6/lib/modules/dri/radeonsi_drv_video.so
|
||||||
./usr/X11R6/lib/modules/dri/swrast_dri.so
|
./usr/X11R6/lib/modules/dri/swrast_dri.so
|
||||||
./usr/X11R6/lib/modules/drivers/amdgpu_drv.la
|
./usr/X11R6/lib/modules/drivers/amdgpu_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/amdgpu_drv.so
|
./usr/X11R6/lib/modules/drivers/amdgpu_drv.so
|
||||||
|
@ -14,10 +16,8 @@
|
||||||
./usr/X11R6/lib/modules/drivers/ati_drv.so
|
./usr/X11R6/lib/modules/drivers/ati_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/modesetting_drv.la
|
./usr/X11R6/lib/modules/drivers/modesetting_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/modesetting_drv.so
|
./usr/X11R6/lib/modules/drivers/modesetting_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/r600_drv_video.so
|
|
||||||
./usr/X11R6/lib/modules/drivers/radeon_drv.la
|
./usr/X11R6/lib/modules/drivers/radeon_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/radeon_drv.so
|
./usr/X11R6/lib/modules/drivers/radeon_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/radeonsi_drv_video.so
|
|
||||||
./usr/X11R6/lib/modules/drivers/wsfb_drv.la
|
./usr/X11R6/lib/modules/drivers/wsfb_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/wsfb_drv.so
|
./usr/X11R6/lib/modules/drivers/wsfb_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/wsudl_drv.la
|
./usr/X11R6/lib/modules/drivers/wsudl_drv.la
|
||||||
|
|
|
@ -9,7 +9,9 @@
|
||||||
./usr/X11R6/lib/modules/dri/kms_swrast_dri.so
|
./usr/X11R6/lib/modules/dri/kms_swrast_dri.so
|
||||||
./usr/X11R6/lib/modules/dri/r300_dri.so
|
./usr/X11R6/lib/modules/dri/r300_dri.so
|
||||||
./usr/X11R6/lib/modules/dri/r600_dri.so
|
./usr/X11R6/lib/modules/dri/r600_dri.so
|
||||||
|
./usr/X11R6/lib/modules/dri/r600_drv_video.so
|
||||||
./usr/X11R6/lib/modules/dri/radeonsi_dri.so
|
./usr/X11R6/lib/modules/dri/radeonsi_dri.so
|
||||||
|
./usr/X11R6/lib/modules/dri/radeonsi_drv_video.so
|
||||||
./usr/X11R6/lib/modules/dri/swrast_dri.so
|
./usr/X11R6/lib/modules/dri/swrast_dri.so
|
||||||
./usr/X11R6/lib/modules/drivers/amdgpu_drv.la
|
./usr/X11R6/lib/modules/drivers/amdgpu_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/amdgpu_drv.so
|
./usr/X11R6/lib/modules/drivers/amdgpu_drv.so
|
||||||
|
@ -43,10 +45,8 @@
|
||||||
./usr/X11R6/lib/modules/drivers/openchrome_drv.so
|
./usr/X11R6/lib/modules/drivers/openchrome_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/r128_drv.la
|
./usr/X11R6/lib/modules/drivers/r128_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/r128_drv.so
|
./usr/X11R6/lib/modules/drivers/r128_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/r600_drv_video.so
|
|
||||||
./usr/X11R6/lib/modules/drivers/radeon_drv.la
|
./usr/X11R6/lib/modules/drivers/radeon_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/radeon_drv.so
|
./usr/X11R6/lib/modules/drivers/radeon_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/radeonsi_drv_video.so
|
|
||||||
./usr/X11R6/lib/modules/drivers/savage_drv.la
|
./usr/X11R6/lib/modules/drivers/savage_drv.la
|
||||||
./usr/X11R6/lib/modules/drivers/savage_drv.so
|
./usr/X11R6/lib/modules/drivers/savage_drv.so
|
||||||
./usr/X11R6/lib/modules/drivers/siliconmotion_drv.la
|
./usr/X11R6/lib/modules/drivers/siliconmotion_drv.la
|
||||||
|
|
|
@ -1,12 +1,13 @@
|
||||||
# $OpenBSD: Makefile.bsd-wrapper,v 1.1 2024/07/19 14:35:16 rsadowski Exp $
|
# $OpenBSD: Makefile.bsd-wrapper,v 1.4 2024/07/25 19:40:55 matthieu Exp $
|
||||||
|
|
||||||
SHARED_LIBS += va-drm 2.22
|
SHARED_LIBS += va-drm 2.22
|
||||||
SHARED_LIBS += va-glx 2.22
|
|
||||||
SHARED_LIBS += va-x11 2.22
|
SHARED_LIBS += va-x11 2.22
|
||||||
SHARED_LIBS += va 2.22
|
SHARED_LIBS += va 2.22
|
||||||
|
|
||||||
CONFIGURE_ARGS= --disable-wayland
|
LOCALBASE ?= /usr/local
|
||||||
|
|
||||||
|
CONFIGURE_ARGS= --disable-wayland --disable-glx
|
||||||
CONFIGURE_ARGS+= \
|
CONFIGURE_ARGS+= \
|
||||||
--with-drivers-path=${DESTDIR}${X11BASE}/lib/modules/drivers/
|
--with-drivers-path=${DESTDIR}${X11BASE}/lib/modules/dri:${LOCALBASE}/lib/dri
|
||||||
|
|
||||||
.include <bsd.xorg.mk>
|
.include <bsd.xorg.mk>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $OpenBSD: Makefile,v 1.10 2024/07/21 13:30:50 jsg Exp $
|
# $OpenBSD: Makefile,v 1.12 2024/07/25 06:54:05 jsg Exp $
|
||||||
|
|
||||||
.include "config.mk"
|
.include "config.mk"
|
||||||
|
|
||||||
|
@ -39,7 +39,6 @@ SUBDIR+= libisl_gfx${GFX}
|
||||||
|
|
||||||
.if ${WITH_GALLIUM_R300} == "yes" || ${WITH_GALLIUM_R600} == "yes" || \
|
.if ${WITH_GALLIUM_R300} == "yes" || ${WITH_GALLIUM_R600} == "yes" || \
|
||||||
${WITH_GALLIUM_RADEONSI} == "yes" || make(obj)
|
${WITH_GALLIUM_RADEONSI} == "yes" || make(obj)
|
||||||
SUBDIR+= libva_st
|
|
||||||
SUBDIR+= libradeonwinsys
|
SUBDIR+= libradeonwinsys
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
@ -102,8 +101,8 @@ SUBDIR+= libglapi libgbm libEGL libGL libGLESv1_CM libGLESv2 libOSMesa
|
||||||
|
|
||||||
SUBDIR+= libgallium_dri
|
SUBDIR+= libgallium_dri
|
||||||
|
|
||||||
.if ${WITH_VAAPI} == "yes" || make(obj)
|
.if ${WITH_GALLIUM_VA} == "yes" || make(obj)
|
||||||
SUBDIR+= libgallium_drv_video
|
SUBDIR+= libva_st libgallium_drv_video
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
.include <bsd.subdir.mk>
|
.include <bsd.subdir.mk>
|
||||||
|
|
|
@ -197,7 +197,7 @@ WITH_GALLIUM_IRIS=no
|
||||||
WITH_AMD_VK=no
|
WITH_AMD_VK=no
|
||||||
WITH_INTEL_VK=no
|
WITH_INTEL_VK=no
|
||||||
WITH_SSE41=no
|
WITH_SSE41=no
|
||||||
WITH_VAAPI=no
|
WITH_GALLIUM_VA=no
|
||||||
|
|
||||||
WITH_DRI=yes
|
WITH_DRI=yes
|
||||||
WITH_GALLIUM_DRISW_KMS=yes
|
WITH_GALLIUM_DRISW_KMS=yes
|
||||||
|
@ -225,14 +225,12 @@ WITH_SSE41=yes
|
||||||
${MACHINE} == "sparc64"
|
${MACHINE} == "sparc64"
|
||||||
WITH_GALLIUM_R300=yes
|
WITH_GALLIUM_R300=yes
|
||||||
WITH_GALLIUM_R600=yes
|
WITH_GALLIUM_R600=yes
|
||||||
WITH_VAAPI=yes
|
|
||||||
CPPFLAGS+= -DHAVE_R300 -DHAVE_R600
|
CPPFLAGS+= -DHAVE_R300 -DHAVE_R600
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
.if ${MACHINE} == "amd64" || ${MACHINE} == "arm64" || ${MACHINE} == "i386" || \
|
.if ${MACHINE} == "amd64" || ${MACHINE} == "arm64" || ${MACHINE} == "i386" || \
|
||||||
${MACHINE} == "powerpc64" || ${MACHINE} == "riscv64"
|
${MACHINE} == "powerpc64" || ${MACHINE} == "riscv64"
|
||||||
WITH_GALLIUM_RADEONSI=yes
|
WITH_GALLIUM_RADEONSI=yes
|
||||||
WITH_VAAPI=yes
|
|
||||||
WITH_AMD_VK=yes
|
WITH_AMD_VK=yes
|
||||||
CPPFLAGS+= -DHAVE_RADEONSI
|
CPPFLAGS+= -DHAVE_RADEONSI
|
||||||
.endif
|
.endif
|
||||||
|
@ -245,3 +243,8 @@ WITH_INTEL_VK=yes
|
||||||
CPPFLAGS+= -DHAVE_I915 -DHAVE_CROCUS -DHAVE_IRIS \
|
CPPFLAGS+= -DHAVE_I915 -DHAVE_CROCUS -DHAVE_IRIS \
|
||||||
-DSUPPORT_INTEL_INTEGRATED_GPUS
|
-DSUPPORT_INTEL_INTEGRATED_GPUS
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
|
.if ${WITH_GALLIUM_R600} == "yes" || ${WITH_GALLIUM_RADEONSI} == "yes"
|
||||||
|
WITH_GALLIUM_VA=yes
|
||||||
|
CPPFLAGS+= -DHAVE_VA_SURFACE_ATTRIB_DRM_FORMAT_MODIFIERS
|
||||||
|
.endif
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $OpenBSD: Makefile,v 1.2 2024/07/21 13:30:50 jsg Exp $
|
# $OpenBSD: Makefile,v 1.4 2024/07/25 00:18:21 jsg Exp $
|
||||||
|
|
||||||
LIB= gallium_drv_video
|
LIB= gallium_drv_video
|
||||||
|
|
||||||
|
@ -22,11 +22,6 @@ CPPFLAGS+= -I${MESA_SRC}/src/gallium/include \
|
||||||
-I${MESA_SRC}/generated/src/gallium/drivers \
|
-I${MESA_SRC}/generated/src/gallium/drivers \
|
||||||
-DGALLIUM_SOFTPIPE
|
-DGALLIUM_SOFTPIPE
|
||||||
|
|
||||||
obj: _xenocara_obj
|
|
||||||
|
|
||||||
.include <bsd.lib.mk>
|
|
||||||
.include <bsd.xorg.mk>
|
|
||||||
|
|
||||||
.if ${WITH_GALLIUM_R600} == "yes"
|
.if ${WITH_GALLIUM_R600} == "yes"
|
||||||
GALLIUM_DRIVERS+= r600
|
GALLIUM_DRIVERS+= r600
|
||||||
CPPFLAGS+= -DGALLIUM_R600
|
CPPFLAGS+= -DGALLIUM_R600
|
||||||
|
@ -42,11 +37,19 @@ CPPFLAGS+= -DGALLIUM_LLVMPIPE
|
||||||
.endif
|
.endif
|
||||||
|
|
||||||
install:
|
install:
|
||||||
.for driver in ${GALLIUM_DRIVERS}
|
|
||||||
${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP} \
|
${INSTALL} ${INSTALL_COPY} ${INSTALL_STRIP} \
|
||||||
-o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
-o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \
|
||||||
lib${LIB}.so ${DESTDIR}${X11BASE}/lib/modules/drivers/${driver}_drv_video.so
|
lib${LIB}.so ${DESTDIR}${X11BASE}/lib/modules/dri
|
||||||
|
.for driver in ${GALLIUM_DRIVERS}
|
||||||
|
ln -f ${DESTDIR}${X11BASE}/lib/modules/dri/lib${LIB}.so \
|
||||||
|
${DESTDIR}${X11BASE}/lib/modules/dri/${driver}_drv_video.so
|
||||||
.endfor
|
.endfor
|
||||||
|
rm ${DESTDIR}${X11BASE}/lib/modules/dri/lib${LIB}.so
|
||||||
|
|
||||||
|
obj: _xenocara_obj
|
||||||
|
|
||||||
|
.include <bsd.lib.mk>
|
||||||
|
.include <bsd.xorg.mk>
|
||||||
|
|
||||||
SLIBS+= libdri \
|
SLIBS+= libdri \
|
||||||
libmesa \
|
libmesa \
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
# $OpenBSD: Makefile,v 1.1 2024/07/19 14:40:39 rsadowski Exp $
|
# $OpenBSD: Makefile,v 1.2 2024/07/23 08:22:36 jsg Exp $
|
||||||
|
|
||||||
.include <bsd.xconf.mk>
|
.include <bsd.xconf.mk>
|
||||||
|
|
||||||
|
@ -32,9 +32,9 @@ SRCS= buffer.c \
|
||||||
CFLAGS+= ${C_VIS_ARGS}
|
CFLAGS+= ${C_VIS_ARGS}
|
||||||
CXXFLAGS+= ${CXX_VIS_ARGS}
|
CXXFLAGS+= ${CXX_VIS_ARGS}
|
||||||
|
|
||||||
# XXX keep in sync with libva
|
VA_INIT!= pkg-config --modversion libva \
|
||||||
CFLAGS += -DVA_DRIVER_INIT_FUNC=__vaDriverInit_1_22
|
| awk -F. '{printf "__vaDriverInit_%d_%d\n", $$1, $$2}'
|
||||||
CPPFLAGS += -DVA_DRIVER_INIT_FUNC=__vaDriverInit_1_22
|
CPPFLAGS+= -DVA_DRIVER_INIT_FUNC=${VA_INIT}
|
||||||
|
|
||||||
CPPFLAGS+= -I${MESA_SRC}/src/gallium/frontends/va \
|
CPPFLAGS+= -I${MESA_SRC}/src/gallium/frontends/va \
|
||||||
-I${MESA_SRC}/src/gallium/include \
|
-I${MESA_SRC}/src/gallium/include \
|
||||||
|
|
|
@ -299,17 +299,12 @@ LLVMPassManagerRef ac_create_passmgr(LLVMTargetLibraryInfoRef target_library_inf
|
||||||
*/
|
*/
|
||||||
unwrap(passmgr)->add(createBarrierNoopPass());
|
unwrap(passmgr)->add(createBarrierNoopPass());
|
||||||
|
|
||||||
/* This pass eliminates all loads and stores on alloca'd pointers. */
|
|
||||||
unwrap(passmgr)->add(createPromoteMemoryToRegisterPass());
|
|
||||||
#if LLVM_VERSION_MAJOR >= 16
|
#if LLVM_VERSION_MAJOR >= 16
|
||||||
unwrap(passmgr)->add(createSROAPass(true));
|
unwrap(passmgr)->add(createSROAPass(true));
|
||||||
#else
|
#else
|
||||||
unwrap(passmgr)->add(createSROAPass());
|
unwrap(passmgr)->add(createSROAPass());
|
||||||
#endif
|
#endif
|
||||||
/* TODO: restore IPSCCP */
|
/* TODO: restore IPSCCP */
|
||||||
if (LLVM_VERSION_MAJOR >= 16)
|
|
||||||
unwrap(passmgr)->add(createLoopSinkPass());
|
|
||||||
/* TODO: restore IPSCCP */
|
|
||||||
unwrap(passmgr)->add(createLICMPass());
|
unwrap(passmgr)->add(createLICMPass());
|
||||||
unwrap(passmgr)->add(createCFGSimplificationPass());
|
unwrap(passmgr)->add(createCFGSimplificationPass());
|
||||||
/* This is recommended by the instruction combining pass. */
|
/* This is recommended by the instruction combining pass. */
|
||||||
|
|
|
@ -613,7 +613,11 @@ gallivm_compile_module(struct gallivm_state *gallivm)
|
||||||
LLVMRunPasses(gallivm->module, passes, LLVMGetExecutionEngineTargetMachine(gallivm->engine), opts);
|
LLVMRunPasses(gallivm->module, passes, LLVMGetExecutionEngineTargetMachine(gallivm->engine), opts);
|
||||||
|
|
||||||
if (!(gallivm_perf & GALLIVM_PERF_NO_OPT))
|
if (!(gallivm_perf & GALLIVM_PERF_NO_OPT))
|
||||||
|
#if LLVM_VERSION_MAJOR >= 18
|
||||||
|
strcpy(passes, "sroa,early-cse,simplifycfg,reassociate,mem2reg,instsimplify,instcombine<no-verify-fixpoint>");
|
||||||
|
#else
|
||||||
strcpy(passes, "sroa,early-cse,simplifycfg,reassociate,mem2reg,instsimplify,instcombine");
|
strcpy(passes, "sroa,early-cse,simplifycfg,reassociate,mem2reg,instsimplify,instcombine");
|
||||||
|
#endif
|
||||||
else
|
else
|
||||||
strcpy(passes, "mem2reg");
|
strcpy(passes, "mem2reg");
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue