/* console.h -- Public interface to the console server. Copyright (C) 2002 Free Software Foundation, Inc. Written by Marcus Brinkmann. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ #ifndef _HURD_CONSOLE_H #define _HURD_CONSOLE_H #include #define CONS_COLOR_BLACK 0 #define CONS_COLOR_RED 1 #define CONS_COLOR_GREEN 2 #define CONS_COLOR_YELLOW 3 #define CONS_COLOR_BLUE 4 #define CONS_COLOR_MAGENTA 5 #define CONS_COLOR_CYAN 6 #define CONS_COLOR_WHITE 7 typedef struct { #define CONS_ATTR_INTENSITY_NORMAL 000000000000 #define CONS_ATTR_INTENSITY_BOLD 000000000001 #define CONS_ATTR_INTENSITY_DIM 000000000002 uint32_t intensity : 2; uint32_t underlined : 1; uint32_t blinking : 1; uint32_t reversed : 1; uint32_t concealed : 1; uint32_t bgcol : 3; uint32_t fgcol : 3; } conchar_attr_t; typedef struct { wchar_t chr; conchar_attr_t attr; } conchar_t; struct cons_display { #define CONS_MAGIC 0x48555244 /* Hex for "HURD". */ uint32_t magic; /* CONS_MAGIC, use to detect endianess. */ #define CONS_VERSION_MAJ 0x0 #define CONS_VERSION_MAJ_SHIFT 16 #define CONS_VERSION_AGE 0x0 uint32_t version; /* Version of interface. Lower 16 bits define the age, upper 16 bits the major version. */ struct { uint32_t width; /* Width of screen matrix. */ uint32_t lines; /* Length of whole matrix. */ uint32_t cur_line; /* Beginning of visible area. This is only ever increased by the server, so clients can optimize scrolling. */ uint32_t scr_lines;/* Number of lines in scrollback buffer preceeding CUR_LINE. */ uint32_t height; /* Number of lines in visible area following (and including) CUR_LINE. */ uint32_t matrix; /* Index (in wchar_t) of the beginning of screen matrix in this structure. */ } screen; struct { uint32_t col; /* Current column (x-position) of cursor. */ uint32_t row; /* Current row (y-position) of cursor. */ #define CONS_CURSOR_INVISIBLE 0 #define CONS_CURSOR_NORMAL 1 #define CONS_CURSOR_VERY_VISIBLE 2 uint32_t status; /* Visibility status of cursor. */ } cursor; /* Don't use this, use ((wchar_t *) cons_display + cons_display.screen.matrix) instead. This will make your client upward compatible with future versions of this interface. */ conchar_t _matrix[0]; }; /* The console server will use the following UCS-4 characters for the specified terminal graphic characters. If the display driver is UCS-4 capable, it can print them without interpretation. */ /* ACS_BLOCK maps to FULL BLOCK. */ #define CONS_CHAR_BLOCK ((wchar_t) 0x2588) /* ACS_DIAMOND maps to BLACK DIAMOND. */ #define CONS_CHAR_DIAMOND ((wchar_t) 0x25c6) /* ACS_CKBOARD maps to MEDIUM SHADE. */ #define CONS_CHAR_CKBOARD ((wchar_t) 0x2592) /* ACS_BOARD maps to LIGHT SHADE. */ #define CONS_CHAR_BOARD ((wchar_t) 0x2591) /* ACS_BULLET maps to BULLET (Linux maps it to MIDDLE DOT 0x00b7). */ #define CONS_CHAR_BULLET ((wchar_t) 0x2022) /* ACS_STERLING maps to POUND STERLING. */ #define CONS_CHAR_STERLING ((wchar_t) 0x00a3) /* ACS_DEGREE maps to DEGREE SIGN. */ #define CONS_CHAR_DEGREE ((wchar_t) 0x00b0) /* ACS_PLMINUS maps to PLUS-MINUS SIGN. */ #define CONS_CHAR_PLMINUS ((wchar_t) 0x00b1) /* ACS_PI maps to GREEK SMALL LETTER PI. */ #define CONS_CHAR_PI ((wchar_t) 0x03c0) /* ACS_LANTERN maps to BLACK HOURGLASS. XXX Is this appropriate? */ #define CONS_CHAR_LANTERN ((wchar_t) 0x29d7) /* ACS_RARROW maps to RIGHTWARDS ARROW. */ #define CONS_CHAR_RARROW ((wchar_t) 0x2192) /* ACS_LARROW maps to LEFTWARDS ARROW. */ #define CONS_CHAR_LARROW ((wchar_t) 0x2190) /* ACS_UARROW maps to UPWARDS ARROW. */ #define CONS_CHAR_UARROW ((wchar_t) 0x2191) /* ACS_DARROW maps to DOWNWARDS ARROW. */ #define CONS_CHAR_DARROW ((wchar_t) 0x2193) /* ACS_LRCORNER maps to BOX DRAWINGS LIGHT UP AND LEFT. */ #define CONS_CHAR_LRCORNER ((wchar_t) 0x2518) /* ACS_URCORNER maps to BOX DRAWINGS LIGHT DOWN AND LEFT. */ #define CONS_CHAR_URCORNER ((wchar_t) 0x2510) /* ACS_ULCORNER maps to BOX DRAWINGS LIGHT DOWN AND RIGHT. */ #define CONS_CHAR_ULCORNER ((wchar_t) 0x250c) /* ACS_LLCORNER maps to BOX DRAWINGS LIGHT UP AND RIGHT. */ #define CONS_CHAR_LLCORNER ((wchar_t) 0x2514) /* ACS_PLUS maps to BOX DRAWINGS LIGHT VERTICAL AND HORIZONTAL. */ #define CONS_CHAR_PLUS ((wchar_t) 0x253c) /* ACS_HLINE maps to BOX DRAWINGS LIGHT HORIZONTAL. */ #define CONS_CHAR_HLINE ((wchar_t) 0x2500) /* ACS_LTEE maps to BOX DRAWINGS LIGHT VERTICAL AND RIGHT. */ #define CONS_CHAR_LTEE ((wchar_t) 0x251c) /* ACS_RTEE maps to BOX DRAWINGS LIGHT VERTICAL AND LEFT. */ #define CONS_CHAR_RTEE ((wchar_t) 0x2524) /* ACS_BTEE maps to BOX DRAWINGS LIGHT UP AND HORIZONTAL. */ #define CONS_CHAR_BTEE ((wchar_t) 0x2534) /* ACS_TTEE maps to BOX DRAWINGS LIGHT DOWN AND HORIZONTAL. */ #define CONS_CHAR_TTEE ((wchar_t) 0x252c) /* ACS_VLINE maps to BOX DRAWINGS LIGHT VERTICAL. */ #define CONS_CHAR_VLINE ((wchar_t) 0x2502) /* ACS_S1 maps to HORIZONTAL SCAN LINE-1. */ #define CONS_CHAR_S1 ((wchar_t) 0x23ba) /* ACS_S3 maps to HORIZONTAL SCAN LINE-3. */ #define CONS_CHAR_S3 ((wchar_t) 0x23bb) /* ACS_S7 maps to HORIZONTAL SCAN LINE-1. */ #define CONS_CHAR_S7 ((wchar_t) 0x23bc) /* ACS_S9 maps to HORIZONTAL SCAN LINE-1. */ #define CONS_CHAR_S9 ((wchar_t) 0x23bd) /* ACS_NEQUAL maps to NOT EQUAL TO. */ #define CONS_CHAR_NEQUAL ((wchar_t) 0x2260) /* ACS_LEQUAL maps to LESS-THAN OR EQUAL TO. */ #define CONS_CHAR_LEQUAL ((wchar_t) 0x2264) /* ACS_GEQUAL maps to GREATER-THAN OR EQUAL TO. */ #define CONS_CHAR_GEQUAL ((wchar_t) 0x2265) /* The input driver should emit these escape sequences for special keys which don't represent characters in UTF-8. */ #define CONS_KEY_UP "\eOA" /* Cursor up. */ #define CONS_KEY_DOWN "\eOB" /* Cursor down. */ #define CONS_KEY_RIGHT "\eOC" /* Cursor right. */ #define CONS_KEY_LEFT "\eOD" /* Cursor left. */ #define CONS_KEY_BACKSPACE "\177" /* Backspace key. */ #define CONS_KEY_F1 "\eOP" /* Function key 1. */ #define CONS_KEY_F2 "\eOQ" /* Function key 2. */ #define CONS_KEY_F3 "\eOR" /* Function key 3. */ #define CONS_KEY_F4 "\eOS" /* Function key 4. */ #define CONS_KEY_F5 "\e[15~" /* Function key 5. */ #define CONS_KEY_F6 "\e[17~" /* Function key 6. */ #define CONS_KEY_F7 "\e[18~" /* Function key 7. */ #define CONS_KEY_F8 "\e[19~" /* Function key 8. */ #define CONS_KEY_F9 "\e[20~" /* Function key 9. */ #define CONS_KEY_F10 "\e[21~" /* Function key 10. */ #define CONS_KEY_F11 "\e[23~" /* Function key 11. */ #define CONS_KEY_F12 "\e[24~" /* Function key 12. */ #define CONS_KEY_F13 "\e[25~" /* Function key 13. */ #define CONS_KEY_F14 "\e[26~" /* Function key 14. */ #define CONS_KEY_F15 "\e[28~" /* Function key 15. */ #define CONS_KEY_F16 "\e[29~" /* Function key 16. */ #define CONS_KEY_F17 "\e[31~" /* Function key 17. */ #define CONS_KEY_F18 "\e[32~" /* Function key 18. */ #define CONS_KEY_F19 "\e[33~" /* Function key 19. */ #define CONS_KEY_F20 "\e[34~" /* Function key 20. */ #define CONS_KEY_HOME "\e[1~" /* Home key. */ #define CONS_KEY_IC "\e[2~" /* Insert char mode. */ #define CONS_KEY_DC "\e[3~" /* Delete character. */ #define CONS_KEY_END "\e[4~" /* End key. */ #define CONS_KEY_PPAGE "\e[5~" /* Previous page. */ #define CONS_KEY_NPAGE "\e[6~" /* Next page. */ #define CONS_KEY_BTAB "\e[Z" /* Back tab key. */ #endif /* _HURD_CONSOLE_H */