xref: /haiku/headers/private/kernel/boot/platform/generic/text_console.h (revision 02354704729d38c3b078c696adc1bbbd33cbcf72)
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