termptyesc: export DA handler to its own function + tests
Also support DA3.
This commit is contained in:
parent
b7e84963c7
commit
96bbfd054b
|
@ -2869,6 +2869,77 @@ _handle_esc_csi_rep(Termpty *ty, Eina_Unicode **ptr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_handle_esc_csi_da(Termpty *ty, Eina_Unicode **ptr)
|
||||||
|
{
|
||||||
|
Eina_Unicode *b = *ptr;
|
||||||
|
char bf[32];
|
||||||
|
char start = 'X';
|
||||||
|
int arg;
|
||||||
|
int len;
|
||||||
|
|
||||||
|
if (b)
|
||||||
|
{
|
||||||
|
start = *b;
|
||||||
|
}
|
||||||
|
arg = _csi_arg_get(ty, &b);
|
||||||
|
|
||||||
|
if ((arg == -CSI_ARG_ERROR) || (arg > 0))
|
||||||
|
return;
|
||||||
|
|
||||||
|
DBG("DA - Device Attributes");
|
||||||
|
switch (start)
|
||||||
|
{
|
||||||
|
case '=':
|
||||||
|
/* Tertiary device attributes
|
||||||
|
* Device ID is set to ~~TY in ascii:
|
||||||
|
* - '~' is 7E
|
||||||
|
* - 'T' is 54
|
||||||
|
* - 'Y' is 59
|
||||||
|
*/
|
||||||
|
len = snprintf(bf, sizeof(bf), "\033P!|7E7E5459\033\\");
|
||||||
|
break;
|
||||||
|
case '>':
|
||||||
|
/* Secondary device attributes
|
||||||
|
* 0 → VT100
|
||||||
|
* 1 → VT220
|
||||||
|
* 2 → VT240
|
||||||
|
* 18 → VT330
|
||||||
|
* 19 → VT340
|
||||||
|
* 24 → VT320
|
||||||
|
* 41 → VT420
|
||||||
|
* 61 → VT510
|
||||||
|
* 64 → VT520
|
||||||
|
* 65 → VT525
|
||||||
|
*/
|
||||||
|
len = snprintf(bf, sizeof(bf), "\033[>61;337;%ic", 0);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
/* Primary device attributes
|
||||||
|
* 1 132 columns
|
||||||
|
* 2 Printer port
|
||||||
|
* 4 Sixel
|
||||||
|
* 6 Selective erase
|
||||||
|
* 7 Soft character set (DRCS)
|
||||||
|
* 8 User-defined keys (UDKs)
|
||||||
|
* 9 National replacement character sets (NRCS) (International terminal only)
|
||||||
|
* 12 Yugoslavian (SCS)
|
||||||
|
* 15 Technical character set
|
||||||
|
* 18 Windowing capability
|
||||||
|
* 21 Horizontal scrolling
|
||||||
|
* 22 Color
|
||||||
|
* 23 Greek
|
||||||
|
* 24 Turkish
|
||||||
|
* 42 ISO Latin-2 character set
|
||||||
|
* 44 PCTerm
|
||||||
|
* 45 Soft key map
|
||||||
|
* 46 ASCII emulation
|
||||||
|
*/
|
||||||
|
len = snprintf(bf, sizeof(bf), "\033[?64;1;9;15;18;21;22c");
|
||||||
|
}
|
||||||
|
termpty_write(ty, bf, len);
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_handle_esc_csi(Termpty *ty, const Eina_Unicode *c, const Eina_Unicode *ce)
|
_handle_esc_csi(Termpty *ty, const Eina_Unicode *c, const Eina_Unicode *ce)
|
||||||
{
|
{
|
||||||
|
@ -2985,32 +3056,8 @@ _handle_esc_csi(Termpty *ty, const Eina_Unicode *c, const Eina_Unicode *ce)
|
||||||
case 'b':
|
case 'b':
|
||||||
_handle_esc_csi_rep(ty, &b);
|
_handle_esc_csi_rep(ty, &b);
|
||||||
break;
|
break;
|
||||||
case 'c': // query device attributes
|
case 'c':
|
||||||
DBG("query device attributes");
|
_handle_esc_csi_da(ty, &b);
|
||||||
{
|
|
||||||
char bf[32];
|
|
||||||
if (b && *b == '>')
|
|
||||||
{
|
|
||||||
// Primary device attributes
|
|
||||||
// 0 → VT100
|
|
||||||
// 1 → VT220
|
|
||||||
// 2 → VT240
|
|
||||||
// 18 → VT330
|
|
||||||
// 19 → VT340
|
|
||||||
// 24 → VT320
|
|
||||||
// 41 → VT420
|
|
||||||
// 61 → VT510
|
|
||||||
// 64 → VT520
|
|
||||||
// 65 → VT525
|
|
||||||
snprintf(bf, sizeof(bf), "\033[>41;337;%ic", 0);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Secondary device attributes
|
|
||||||
snprintf(bf, sizeof(bf), "\033[?64;1;9;15;18;21;22c");
|
|
||||||
}
|
|
||||||
termpty_write(ty, bf, strlen(bf));
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
case 'd': // to row N
|
case 'd': // to row N
|
||||||
arg = _csi_arg_get(ty, &b);
|
arg = _csi_arg_get(ty, &b);
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# fill space with E
|
||||||
|
printf '\033[69;1;1;25;80\044x'
|
||||||
|
|
||||||
|
#set color
|
||||||
|
printf '\033[46;31;3m'
|
||||||
|
|
||||||
|
# move
|
||||||
|
printf '\033[H'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Primary attributes
|
||||||
|
#
|
||||||
|
|
||||||
|
# default value
|
||||||
|
printf '\033[c'
|
||||||
|
# 0
|
||||||
|
printf '\033[0c'
|
||||||
|
# invalid value
|
||||||
|
printf '\033[42c'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Secondary attributes
|
||||||
|
#
|
||||||
|
|
||||||
|
# default value
|
||||||
|
printf '\033[>c'
|
||||||
|
# 0
|
||||||
|
printf '\033[>0c'
|
||||||
|
# invalid value
|
||||||
|
printf '\033[>42c'
|
||||||
|
|
||||||
|
#
|
||||||
|
# Tertiary attributes
|
||||||
|
#
|
||||||
|
|
||||||
|
# default value
|
||||||
|
printf '\033[=c'
|
||||||
|
# 0
|
||||||
|
printf '\033[=0c'
|
||||||
|
# invalid value
|
||||||
|
printf '\033[=42c'
|
||||||
|
|
||||||
|
# let it print
|
||||||
|
sleep 1
|
|
@ -16,9 +16,9 @@ cursor-shape-5.sh 21332951c006a2d91cf0f227758ff477
|
||||||
cursor-shape-6.sh 21332951c006a2d91cf0f227758ff477
|
cursor-shape-6.sh 21332951c006a2d91cf0f227758ff477
|
||||||
cursor-shape-7.sh 5d0dadf7273d918cbcd99df95e56795e
|
cursor-shape-7.sh 5d0dadf7273d918cbcd99df95e56795e
|
||||||
tabs.sh 960b74686e23e8e39c3446768b9efc75
|
tabs.sh 960b74686e23e8e39c3446768b9efc75
|
||||||
xterm-osc-0-title-icon.sh edae688004c15739bcc5a10f51faa6ed
|
xterm-osc-0-title-icon.sh 020e0953ecb230afdb4c28a8012556bb
|
||||||
xterm-osc-1-icon.sh be549a661504e4dcfb974dcccd7b0bdf
|
xterm-osc-1-icon.sh 36bd475d00e0ad408063dce8c8ea6fbd
|
||||||
xterm-osc-2-title.sh e8485fd460aba2a2ae1d4e63a1143b32
|
xterm-osc-2-title.sh 957a0748020027e6723a04aaff3acd3a
|
||||||
dsr-cpr.sh a03cfba07a7b76075a4126f452d48ad5
|
dsr-cpr.sh a03cfba07a7b76075a4126f452d48ad5
|
||||||
dsr-dir.sh 28b0d8b4b60f3c61d49cee69895a07b2
|
dsr-dir.sh 28b0d8b4b60f3c61d49cee69895a07b2
|
||||||
dsr-kbd.sh 1c474c101697080a85563d9b5bc1505c
|
dsr-kbd.sh 1c474c101697080a85563d9b5bc1505c
|
||||||
|
@ -70,3 +70,4 @@ text_append_after_right_margin.sh 26b334188d39e2b12538a6ca91ca168c
|
||||||
cbt.sh 417cd352d3eba45d6016df67a0314444
|
cbt.sh 417cd352d3eba45d6016df67a0314444
|
||||||
hpa.sh 0f86ca83e072d41b89dd1a012f0749a7
|
hpa.sh 0f86ca83e072d41b89dd1a012f0749a7
|
||||||
rep.sh b91ebb46fb5ebd95aa2cb87ad12bb4ba
|
rep.sh b91ebb46fb5ebd95aa2cb87ad12bb4ba
|
||||||
|
da.sh 3083fbec33befe5299ca3726a19fcff2
|
||||||
|
|
Loading…
Reference in New Issue