mirror of
https://codeberg.org/dnkl/foot.git
synced 2026-03-23 05:33:57 -04:00
vt: track charsets G0-G3 and support either ASCII or graphical mode
This commit is contained in:
parent
dd5a3b1009
commit
ea6e06d689
2 changed files with 12 additions and 15 deletions
|
|
@ -126,6 +126,7 @@ struct kbd {
|
||||||
|
|
||||||
enum decckm { DECCKM_CSI, DECCKM_SS3 };
|
enum decckm { DECCKM_CSI, DECCKM_SS3 };
|
||||||
enum keypad_mode { KEYPAD_NUMERICAL, KEYPAD_APPLICATION };
|
enum keypad_mode { KEYPAD_NUMERICAL, KEYPAD_APPLICATION };
|
||||||
|
enum charset { CHARSET_ASCII, CHARSET_GRAPHIC };
|
||||||
|
|
||||||
struct terminal {
|
struct terminal {
|
||||||
pid_t slave;
|
pid_t slave;
|
||||||
|
|
@ -138,6 +139,9 @@ struct terminal {
|
||||||
bool insert_mode;
|
bool insert_mode;
|
||||||
bool bracketed_paste;
|
bool bracketed_paste;
|
||||||
|
|
||||||
|
int selected_charset;
|
||||||
|
enum charset charset[4]; /* G0-G3 */
|
||||||
|
|
||||||
struct vt vt;
|
struct vt vt;
|
||||||
struct kbd kbd;
|
struct kbd kbd;
|
||||||
|
|
||||||
|
|
|
||||||
23
vt.c
23
vt.c
|
|
@ -572,15 +572,10 @@ esc_dispatch(struct terminal *term, uint8_t final)
|
||||||
char param = term->vt.params.idx > 0 ? term->vt.params.v[0].value : '(';
|
char param = term->vt.params.idx > 0 ? term->vt.params.v[0].value : '(';
|
||||||
|
|
||||||
switch (param) {
|
switch (param) {
|
||||||
case '(':
|
case '(': term->charset[0] = CHARSET_ASCII; break;
|
||||||
/* This is the default charset */
|
case ')': term->charset[1] = CHARSET_ASCII; break;
|
||||||
break;
|
case '*': term->charset[2] = CHARSET_ASCII; break;
|
||||||
|
case '+': term->charset[3] = CHARSET_ASCII; break;
|
||||||
case ')':
|
|
||||||
case '*':
|
|
||||||
case '+':
|
|
||||||
LOG_WARN("unimplemented: charset %c uses ASCII", param);
|
|
||||||
return false;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
LOG_ERR("<ESC>%cB: invalid charset identifier", param);
|
LOG_ERR("<ESC>%cB: invalid charset identifier", param);
|
||||||
|
|
@ -594,12 +589,10 @@ esc_dispatch(struct terminal *term, uint8_t final)
|
||||||
char param = term->vt.params.idx > 0 ? term->vt.params.v[0].value : '(';
|
char param = term->vt.params.idx > 0 ? term->vt.params.v[0].value : '(';
|
||||||
|
|
||||||
switch (param) {
|
switch (param) {
|
||||||
case '(':
|
case '(': term->charset[0] = CHARSET_GRAPHIC; break;
|
||||||
case ')':
|
case ')': term->charset[1] = CHARSET_GRAPHIC; break;
|
||||||
case '*':
|
case '*': term->charset[2] = CHARSET_GRAPHIC; break;
|
||||||
case '+':
|
case '+': term->charset[3] = CHARSET_GRAPHIC; break;
|
||||||
LOG_WARN("unimplemented: charset %c uses special characters and line drawings", param);
|
|
||||||
break;
|
|
||||||
|
|
||||||
default:
|
default:
|
||||||
LOG_ERR("<ESC>%c0: invalid charset identifier", param);
|
LOG_ERR("<ESC>%c0: invalid charset identifier", param);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue