diff options
author | Ian Moffett <ian@osmora.org> | 2025-04-22 23:35:17 -0400 |
---|---|---|
committer | Ian Moffett <ian@osmora.org> | 2025-04-22 23:35:17 -0400 |
commit | d1aab61698855709e2dc9ffb264d7d668a101fbc (patch) | |
tree | 7d29059996bba1dd348ffd0e95f68b6a9c67e3b3 | |
parent | 6453151425085f2f1ef9edd24a6941c9a0b49c67 (diff) |
kernel: cons: Add backspace support
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r-- | sys/dev/cons/cons.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/sys/dev/cons/cons.c b/sys/dev/cons/cons.c index 365aa0b..b89727f 100644 --- a/sys/dev/cons/cons.c +++ b/sys/dev/cons/cons.c @@ -150,12 +150,25 @@ cons_flush(struct cons_screen *scr) static int cons_handle_special(struct cons_screen *scr, char c) { + struct cons_buf *bp; + if (scr->ch_col >= scr->ncols - 20) { scr->ch_col = 0; cons_handle_special(scr, '\n'); } switch (c) { + case ASCII_BS: + bp = scr->ob[scr->ch_row]; + if (bp->head > bp->tail) { + --bp->head; + } + + HIDE_CURSOR(scr); + --scr->ch_col; + --scr->curs_col; + SHOW_CURSOR(scr); + return 0; case ASCII_LF: HIDE_CURSOR(scr); |