1 /* 2 * Copyright 2004, Axel Dörfler, axeld@pinc-software.de. All rights reserved. 3 * Distributed under the terms of the MIT License. 4 */ 5 #ifndef GENERIC_TEXT_CONSOLE_H 6 #define GENERIC_TEXT_CONSOLE_H 7 8 9 #include <boot/vfs.h> 10 #include <boot/stdio.h> 11 12 // Standard 16 color palette. 13 enum console_color { 14 // foreground and background colors 15 BLACK, 16 BLUE, 17 GREEN, 18 CYAN, 19 RED, 20 PURPLE, 21 BROWN, 22 GRAY, 23 // foreground colors only, if blinking is enabled (on bios_ia32) 24 DARK_GRAY, 25 BRIGHT_BLUE, 26 BRIGHT_GREEN, 27 BRIGHT_CYAN, 28 BRIGHT_RED, 29 MAGENTA, 30 YELLOW, 31 WHITE 32 }; 33 34 enum { 35 // ASCII 36 TEXT_CONSOLE_NO_KEY = '\0', 37 TEXT_CONSOLE_KEY_RETURN = '\r', 38 TEXT_CONSOLE_KEY_BACKSPACE = '\b', 39 TEXT_CONSOLE_KEY_ESCAPE = 0x1b, 40 TEXT_CONSOLE_KEY_SPACE = ' ', 41 42 // cursor keys 43 TEXT_CONSOLE_CURSOR_KEYS_START = 0x40000000, 44 TEXT_CONSOLE_KEY_UP = TEXT_CONSOLE_CURSOR_KEYS_START, 45 TEXT_CONSOLE_KEY_DOWN, 46 TEXT_CONSOLE_KEY_LEFT, 47 TEXT_CONSOLE_KEY_RIGHT, 48 TEXT_CONSOLE_KEY_PAGE_UP, 49 TEXT_CONSOLE_KEY_PAGE_DOWN, 50 TEXT_CONSOLE_KEY_HOME, 51 TEXT_CONSOLE_KEY_END, 52 TEXT_CONSOLE_CURSOR_KEYS_END, 53 }; 54 55 #define TEXT_CONSOLE_IS_CURSOR_KEY(key) \ 56 (key >= TEXT_CONSOLE_CURSOR_KEYS_START \ 57 && key < TEXT_CONSOLE_CURSOR_KEYS_END) 58 59 #ifdef __cplusplus 60 extern "C" { 61 #endif 62 63 extern void console_clear_screen(void); 64 extern int32 console_width(void); 65 extern int32 console_height(void); 66 extern void console_set_cursor(int32 x, int32 y); 67 extern void console_show_cursor(void); 68 extern void console_hide_cursor(void); 69 extern void console_set_color(int32 foreground, int32 background); 70 71 extern int console_wait_for_key(void); 72 73 #ifdef __cplusplus 74 } 75 #endif 76 77 #endif /* GENERIC_TEXT_CONSOLE_H */ 78