mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-04-01 07:15:32 -04:00
dcs: sort of implement DCS passthrough
We now store the passthrough characters in a buffer, and call dcs_passthrough() on unhook. However, dcs_passthrough() doesn't do anything.
This commit is contained in:
parent
153628a217
commit
b953326768
6 changed files with 62 additions and 4 deletions
20
vt.c
20
vt.c
|
|
@ -9,8 +9,9 @@
|
|||
#define LOG_ENABLE_DBG 0
|
||||
#include "log.h"
|
||||
#include "csi.h"
|
||||
#include "osc.h"
|
||||
#include "dcs.h"
|
||||
#include "grid.h"
|
||||
#include "osc.h"
|
||||
|
||||
/* https://vt100.net/emu/dec_ansi_parser */
|
||||
|
||||
|
|
@ -923,10 +924,21 @@ action(struct terminal *term, enum action _action, uint8_t c)
|
|||
break;
|
||||
|
||||
case ACTION_HOOK:
|
||||
case ACTION_UNHOOK:
|
||||
term->vt.dcs.idx = 0;
|
||||
break;
|
||||
|
||||
case ACTION_PUT:
|
||||
LOG_ERR("unimplemented: action %s", action_names[_action]);
|
||||
abort();
|
||||
if (!dcs_ensure_size(term, term->vt.dcs.idx + 1))
|
||||
break;
|
||||
term->vt.dcs.data[term->vt.dcs.idx++] = c;
|
||||
break;
|
||||
|
||||
case ACTION_UNHOOK:
|
||||
if (!dcs_ensure_size(term, term->vt.dcs.idx + 1))
|
||||
break;
|
||||
term->vt.dcs.data[term->vt.dcs.idx] = '\0';
|
||||
dcs_passthrough(term);
|
||||
break;
|
||||
|
||||
case ACTION_UTF8_2_ENTRY:
|
||||
term->vt.utf8.idx = 0;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue