Beispiel #1
0
void monitor_process_key_press(uint8_t scancode)
{
	struct terminal_position p = terminal_position();
	uint8_t code = scancodes[scancode];
	const char *command = NULL;

	terminal_set_position(command_line_position);
	if (scancode == KEY_BACKSPACE &&
	    command_line_position.column > COMMAND_LINE_PROMPT_LEN) {
		command_line_position.column--;
		terminal_set_position(command_line_position);
		terminal_put(' ');
	} else if (code == '\n') {
		command = terminal_read_command(COMMAND_LINE_PROMPT_LEN);
		assert(command != NULL);

		terminal_clear_line();
	} else if (code != 0) {
		if (command_line_position.column < TERMINAL_COL_COUNT-1) {
			command_line_position.column++;
			terminal_put(code);
		}
	}

	if (command != NULL) {
		// redraw command line prompt
		terminal_printf("%s", COMMAND_LINE_PROMPT);
		command_line_position = terminal_position();
	}

	terminal_set_position(p);
	if (command != NULL)
		monitor_process_command(command);
}
Beispiel #2
0
void scroll_up(void)
{
	for(size_t index = 0; index < VGA_TERMINAL_WIDTH * (VGA_TERMINAL_HEIGHT - 1) ; index++)
		terminal_buffer[index] = terminal_buffer[index + VGA_TERMINAL_WIDTH];

	terminal_clear_line(VGA_TERMINAL_HEIGHT - 1);
}