forked from enlightenment/terminology
parent
64d87067ba
commit
2a03fbbd04
|
@ -980,6 +980,43 @@ _handle_esc_terminology(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce)
|
||||||
return cc - c;
|
return cc - c;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int
|
||||||
|
_handle_esc_dcs(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce)
|
||||||
|
{
|
||||||
|
const Eina_Unicode *cc;
|
||||||
|
Eina_Unicode buf[4096], *b;
|
||||||
|
char *s;
|
||||||
|
int len = 0;
|
||||||
|
|
||||||
|
cc = c;
|
||||||
|
b = buf;
|
||||||
|
while ((cc < ce) && (*cc != ST))
|
||||||
|
{
|
||||||
|
if ((cc < ce - 1) && (*cc == ESC) && (*(cc + 1) == '\\'))
|
||||||
|
{
|
||||||
|
cc++;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
*b = *cc;
|
||||||
|
b++;
|
||||||
|
cc++;
|
||||||
|
}
|
||||||
|
*b = 0;
|
||||||
|
if ((*cc == ST) || (*cc == '\\')) cc++;
|
||||||
|
else return -2;
|
||||||
|
switch (buf[0])
|
||||||
|
{
|
||||||
|
case '+':
|
||||||
|
/* TODO: Set request termcap/terminfo */
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
// many others
|
||||||
|
ERR("unhandled dcs esc '%c'", buf[0]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return cc - c;
|
||||||
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
_handle_esc(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce)
|
_handle_esc(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce)
|
||||||
{
|
{
|
||||||
|
@ -993,6 +1030,8 @@ _handle_esc(Termpty *ty, const Eina_Unicode *c, Eina_Unicode *ce)
|
||||||
return 2 + _handle_esc_xterm(ty, c + 2, ce);
|
return 2 + _handle_esc_xterm(ty, c + 2, ce);
|
||||||
case '}':
|
case '}':
|
||||||
return 2 + _handle_esc_terminology(ty, c + 2, ce);
|
return 2 + _handle_esc_terminology(ty, c + 2, ce);
|
||||||
|
case 'P':
|
||||||
|
return 2 + _handle_esc_dcs(ty, c + 2, ce);
|
||||||
case '=': // set alternate keypad mode
|
case '=': // set alternate keypad mode
|
||||||
ty->state.alt_kp = 1;
|
ty->state.alt_kp = 1;
|
||||||
return 2;
|
return 2;
|
||||||
|
|
Loading…
Reference in New Issue