vte: implement backspace control
Add new helper to console subsystem which performs a backspace operation. We must take care of auto-wrap mode so we cannot simply use the *_move_left() function. Signed-off-by: David Herrmann <dh.herrmann@googlemail.com>
This commit is contained in:
parent
5f0d151bb7
commit
cdb3d112a6
@ -289,6 +289,21 @@ void kmscon_console_newline(struct kmscon_console *con)
|
||||
}
|
||||
}
|
||||
|
||||
void kmscon_console_backspace(struct kmscon_console *con)
|
||||
{
|
||||
if (!con)
|
||||
return;
|
||||
|
||||
if (con->cursor_x >= con->cells_x) {
|
||||
con->cursor_x = con->cells_x - 2;
|
||||
} else if (con->cursor_x > 0) {
|
||||
con->cursor_x--;
|
||||
} else if (con->auto_wrap) {
|
||||
con->cursor_x = con->cells_x - 1;
|
||||
kmscon_console_move_up(con, 1, true);
|
||||
}
|
||||
}
|
||||
|
||||
void kmscon_console_move_to(struct kmscon_console *con, unsigned int x,
|
||||
unsigned int y)
|
||||
{
|
||||
|
@ -91,6 +91,7 @@ void kmscon_console_map(struct kmscon_console *con);
|
||||
|
||||
void kmscon_console_write(struct kmscon_console *con, kmscon_symbol_t ch);
|
||||
void kmscon_console_newline(struct kmscon_console *con);
|
||||
void kmscon_console_backspace(struct kmscon_console *con);
|
||||
void kmscon_console_move_to(struct kmscon_console *con, unsigned int x,
|
||||
unsigned int y);
|
||||
void kmscon_console_move_up(struct kmscon_console *con, unsigned int num,
|
||||
|
Loading…
x
Reference in New Issue
Block a user