summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan Moffett <ian@osmora.org>2025-04-22 23:35:17 -0400
committerIan Moffett <ian@osmora.org>2025-04-22 23:35:17 -0400
commitd1aab61698855709e2dc9ffb264d7d668a101fbc (patch)
tree7d29059996bba1dd348ffd0e95f68b6a9c67e3b3
parent6453151425085f2f1ef9edd24a6941c9a0b49c67 (diff)
kernel: cons: Add backspace support
Signed-off-by: Ian Moffett <ian@osmora.org>
-rw-r--r--sys/dev/cons/cons.c13
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);