Commit graph

338 commits

Author SHA1 Message Date
Daniel Eklöf
25b09b909c
sixel: application configurable image max width/height 2020-02-22 21:03:24 +01:00
Daniel Eklöf
8e37a18083
sixel: application configurable palette size (color count)
This implements the CSI escapes for retrieving and (re)setting the
palette size.
2020-02-22 14:02:00 +01:00
Daniel Eklöf
a9971f4c32
csi: DA: we now implement sixel 2020-02-22 12:16:19 +01:00
Daniel Eklöf
cc5d596cd9
csi: log only the un-handled parameter in a multi-operation CSI
Assume we don't handle 'CSI 4 X'. Furthermore, assume we receive the
following: 'CSI 1;2;3;4X'. In this case, only log '4X' as un-handled,
not the entire CSI string.
2020-02-01 19:42:31 +01:00
Daniel Eklöf
4dde699107
csi: implement window and cell size reporting escapes
This implements the following queries:

* report window size in pixels
* report cell size in pixels
* report window size in chars

We also log a warning for the remaining window operation queries.
2020-02-01 19:27:52 +01:00
Daniel Eklöf
dfa5cb41e0
csi: recognize the X10 mouse tracking enabler/disabler
We still don't implement it, but now we at least recognize it and log
a warning when it is implemented.
2020-02-01 19:27:06 +01:00
Daniel Eklöf
38e2e037e6
csi: drop '28' from our DA response
We don't support rectangular editing
2020-02-01 19:26:08 +01:00
Daniel Eklöf
f13adf50dc
vt: use 8-bit indices for parameters and sub parameters
We only support 16 (sub) parameters and thus there's no need for
64-bit index variables.
2020-02-01 19:24:46 +01:00
Daniel Eklöf
51f8453f9d
csi: disable save/restore highlight mouse tracking
We don't implement it, so no point in warning about save/restore not
begin implemented.
2020-01-23 17:38:45 +01:00
Daniel Eklöf
e6d1ebbbfc
csi: warn when client tries to enable "highlight mouse tracking" 2020-01-23 17:38:23 +01:00
Daniel Eklöf
a3d919a90d
input: implement metaSendsEscape and eightBitMeta 2020-01-20 18:45:14 +01:00
Daniel Eklöf
4e87426712
csi: implement REP - CSI Ps b 2020-01-20 18:45:14 +01:00
Daniel Eklöf
2667fdd877
csi: change DA3 reply to "FOOT", in hex 2019-12-21 20:35:55 +01:00
Daniel Eklöf
7d29435d86
term: implement cursor blinking
Blinking can be enabled either by setting the cursor style with

 CSI Ps SP q

and selecting a blinking style.

Or, with 'CSI ? 12 h'

Note that both affect the same internal state. I.e. you can disable
blinking with CSI ? 12l after having selected a blinking cursor
style. This is consistent with XTerm behavior.
2019-12-15 15:07:56 +01:00
Daniel Eklöf
afc8ed97a6
csi: describe format of reply to tertiary DA 2019-12-14 19:10:59 +01:00
Daniel Eklöf
7d8327369b
csi: Send Device Attributes, Tertiary DA: require Ps == 0 2019-12-14 14:38:03 +01:00
Daniel Eklöf
9551be492c
csi/vt: don't bad client data as errors
This gets rid of spam when cat:ing binary data.
2019-11-30 00:12:30 +01:00
Daniel Eklöf
616896e2a5
csi/ocs/vt: log unhandled/unrecognized sequences as debug messages
Having them as error messages was nice when we where still missing
lots of sequences.

Now we don't anymore, and these just spam stdout as well as syslog
when e.g. cat:ing binary data.
2019-11-29 23:59:24 +01:00
Daniel Eklöf
0dd37f0a36
terminal: use the 'text' xcursor pointer whenever selection is possible 2019-11-28 19:35:47 +01:00
Daniel Eklöf
d41c4b9195
csi: implement "Send Device Attributes (Tertiary DA)" 2019-11-18 12:46:52 +01:00
Daniel Eklöf
612bf9ef4f
csi: adjust reply to primary DA
Report us as being VT220, as VT420 causes vttest to send a
DECRQSS. This is a DCS request that we don't implement (there's no DCS
handling *at all* - all DCS strings are ignored).

Should be ok as no one appears to care about this one. Other terminals
report a much lower level (urxvt for example, replies with vt100. We
used to reply with vt102, which also was fine).
2019-11-18 12:41:10 +01:00
Daniel Eklöf
2c99f692b3
csi: improve "Send Device Attributes (Primary DA)"
Pretend we're a VT420, with a couple of supported features
indicated. Note that I haven't verified we support *everything* that
each features entails - or even what exactly a feature *is* (locator
port?)
2019-11-18 12:07:17 +01:00
Daniel Eklöf
aa692d19e4
csi: document "Send Device Attributes (Secondary DA)" 2019-11-18 12:06:29 +01:00
Daniel Eklöf
0250a703e4
csi: implement 'Query Device Status'
By replying with "Device OK"
2019-11-18 11:44:03 +01:00
Daniel Eklöf
2d0c4928ee
csi: add debug logs for the various mouse reporting modes 2019-11-18 11:31:05 +01:00
Daniel Eklöf
9902a5732f
term: try to improve on a performance regression
When support was added for DECOM (absolute/relative row addressing), a
small but noticeable (~3.5%) performance regression was introduced.

Try to improve the situation by simplifying the relative-to-absolute
conversion; only the row needs to be transformed.
2019-11-17 18:52:27 +01:00
Daniel Eklöf
7f4b2c5755
csi: implement 'CHT' - Cursor Horizontal Tab 2019-11-17 12:29:52 +01:00
Daniel Eklöf
f4be84871f
csi: implement 'CPL' - Cursor Previous Line 2019-11-17 11:36:24 +01:00
Daniel Eklöf
d8708d1105
csi: implement 'CNL' - Cursor Next Line 2019-11-17 11:35:30 +01:00
Daniel Eklöf
53f4273b17
csi: implement 'HPR' - Horizontal Position Relative 2019-11-17 11:31:35 +01:00
Daniel Eklöf
616e506f2e
csi: fix bad implementation of CBT (back tab)
* It takes a parameter, that indicates the number of tab stops to move
  through
* Use the tab stops defined in the tab stops list, not hard coded mod
  8 columns.
2019-11-17 11:20:59 +01:00
Daniel Eklöf
ca58c4c621
csi: implement 'HPA' - Horizontal Position Absolute 2019-11-17 11:09:16 +01:00
Daniel Eklöf
a70fe1f5d7
term: move lcf flag into 'cursor' struct 2019-11-17 09:46:20 +01:00
Daniel Eklöf
d637b8c9ba
term: add struct cursor 2019-11-17 09:44:31 +01:00
Daniel Eklöf
c1088d77ac
term: rename: print_needs_wrap -> lcf (Last Column Flag) 2019-11-17 09:39:43 +01:00
Daniel Eklöf
f74026ba9b
csi: el/ed/dch/ich/ech: reset 'print_needs_wrap' (lcf)
This makes the result of 'wraptest', by Mattias Engdegård, match the
behavior of 'DEC' (the architectural behavior of DEC terminals).
2019-11-17 09:36:55 +01:00
Daniel Eklöf
9840291100
csi: implement CSI 0g and CSI 3g
* 0g - clear tab stop at current column
* 3g - clear all tab stops
2019-11-16 10:55:28 +01:00
Daniel Eklöf
f6d87e235b
csi: CSI ?4h enables smooth scrolling, ?4l enables jump scrolling 2019-11-05 14:37:17 +01:00
Daniel Eklöf
95eaad7ce4
csi: implement DECOM - switch cursor origin between absolute and relative
The default is absolute mode, where 0,0 is the upper left corner of
the screen.

In relative mode, the origin is relative the top scroll margin.

Internally, we always track the current cursor position in absolute
mode. Every time we the client *sets* or *queries* the cursor position
in relative mode, we translate it to absolute.
2019-11-05 13:27:37 +01:00
Daniel Eklöf
89dbc61a34
csi: DECCOLM erases screen 2019-11-05 13:21:47 +01:00
Daniel Eklöf
342d6036f9
csi: CSI ?3h enables 132 column mode, CSI ?3l 80 column mode 2019-11-05 11:10:56 +01:00
Daniel Eklöf
bf58b9ea8e
csi: implement force cursor position 2019-11-05 11:10:19 +01:00
Daniel Eklöf
15b12f45c6
scan-build: fix a couple of minor warnings from a scan-build run 2019-11-05 10:39:36 +01:00
Daniel Eklöf
5f6d230c10
csi: comment out handling of CSI ? 1042/1043 h/l
In Wayland, we neither _have_ an urgency hint to set, nor can we raise
the window(?)
2019-11-04 12:23:02 +01:00
Daniel Eklöf
42eef90268
csi: recognize CSI ? 1042/1043 h/l
1042: set 'urgency' window manager hint when receiving ctrl-g
1043: raise window when receiving ctrl-g
2019-11-04 12:00:50 +01:00
Daniel Eklöf
9f1525aef7
Rename: vt_to_slave() -> term_to_slave() 2019-11-03 00:52:24 +01:00
Daniel Eklöf
4594899114
csi: ignore invalid scrolling regions
There must be at least one scrolling row. I.e. the bottom margin must
be larger than the top margin.

Note that trying to set an invalid region really will
be *ignored*. I.e. we *don't* reset the scrolling region.

This conforms to xterm's behavior.
2019-09-29 14:58:02 +02:00
Daniel Eklöf
684624c11e
csi: don't ignore the color space identifier in SGRs
Only a color space ID of '2' means the sequence is an RGB
sequence. Update existing code to verify this, and ignore sequences
with other color space IDs.

Except color space ID '5', which is the same as a regular 38;5;<idx>
sequence, but using sub-parameters instead (38:2:5:<idx>).
2019-09-04 20:28:35 +02:00
Daniel Eklöf
f4291690ee
csi: CSI h isn't a valid sequence - it needs a parameter
And, 'insert mode' isn't activated with \e[h, but with
\e[4h.
2019-08-30 22:01:05 +02:00
Daniel Eklöf
d8fb80ea32
term: rename colors256 -> table 2019-08-21 18:50:24 +02:00