1 /* 2 3 +---------------------------------------------------------------+ 4 | | 5 | This file is a replacement for the routines in the curses | 6 | library. Although the functions contained in this file | 7 | are only a subset of those contained in curses, these | 8 | will perform the tasks expected of them without the | 9 | glitches found in curses. | 10 | | 11 +---------------------------------------------------------------+ 12 */ 13 14 #ifndef __XCURSE_INC__ 15 #define __XCURSE_INC__ 16 17 18 #include <stdio.h> 19 #include <signal.h> 20 21 #include <fcntl.h> 22 23 #define KEY_BREAK 0401 24 #define KEY_DOWN 0402 25 #define KEY_UP 0403 26 #define KEY_LEFT 0404 27 #define KEY_RIGHT 0405 28 #define KEY_HOME 0406 29 #define KEY_BACKSPACE 0407 30 #define KEY_F0 0410 31 #define KEY_F(n) (KEY_F0+(n)) 32 #define KEY_DL 0510 33 #define KEY_IL 0511 34 #define KEY_DC 0512 35 #define KEY_IC 0513 36 #define KEY_EIC 0514 37 #define KEY_CLEAR 0515 38 #define KEY_EOS 0516 39 #define KEY_EOL 0517 40 #define KEY_SF 0520 41 #define KEY_SR 0521 42 #define KEY_NPAGE 0522 43 #define KEY_PPAGE 0523 44 #define KEY_STAB 0524 45 #define KEY_CTAB 0525 46 #define KEY_CATAB 0526 47 #define KEY_ENTER 0527 48 #define KEY_SRESET 0530 49 #define KEY_RESET 0531 50 #define KEY_PRINT 0532 51 #define KEY_LL 0533 52 #define KEY_A1 0534 53 #define KEY_A3 0535 54 #define KEY_B2 0536 55 #define KEY_C1 0537 56 #define KEY_C3 0540 57 #define KEY_BTAB 0541 58 #define KEY_BEG 0542 59 #define KEY_CANCEL 0543 60 #define KEY_CLOSE 0544 61 #define KEY_COMMAND 0545 62 #define KEY_COPY 0546 63 #define KEY_CREATE 0547 64 #define KEY_END 0550 65 #define KEY_EXIT 0551 66 #define KEY_FIND 0552 67 #define KEY_HELP 0553 68 #define KEY_MARK 0554 69 #define KEY_MESSAGE 0555 70 #define KEY_MOVE 0556 71 #define KEY_NEXT 0557 72 #define KEY_OPEN 0560 73 #define KEY_OPTIONS 0561 74 #define KEY_PREVIOUS 0562 75 #define KEY_REDO 0563 76 #define KEY_REFERENCE 0564 77 #define KEY_REFRESH 0565 78 #define KEY_REPLACE 0566 79 #define KEY_RESTART 0567 80 #define KEY_RESUME 0570 81 #define KEY_SAVE 0571 82 #define KEY_SBEG 0572 83 #define KEY_SCANCEL 0573 84 #define KEY_SCOMMAND 0574 85 #define KEY_SCOPY 0575 86 #define KEY_SCREATE 0576 87 #define KEY_SDC 0577 88 #define KEY_SDL 0600 89 #define KEY_SELECT 0601 90 #define KEY_SEND 0602 91 #define KEY_SEOL 0603 92 #define KEY_SEXIT 0604 93 #define KEY_SFIND 0605 94 #define KEY_SHELP 0606 95 #define KEY_SHOME 0607 96 #define KEY_SIC 0610 97 #define KEY_SLEFT 0611 98 #define KEY_SMESSAGE 0612 99 #define KEY_SMOVE 0613 100 #define KEY_SNEXT 0614 101 #define KEY_SOPTIONS 0615 102 #define KEY_SPREVIOUS 0616 103 #define KEY_SPRINT 0617 104 #define KEY_SREDO 0620 105 #define KEY_SREPLACE 0621 106 #define KEY_SRIGHT 0622 107 #define KEY_SRSUME 0623 108 #define KEY_SSAVE 0624 109 #define KEY_SSUSPEND 0625 110 #define KEY_SUNDO 0626 111 #define KEY_SUSPEND 0627 112 #define KEY_UNDO 0630 113 114 #define TRUE 1 115 #define FALSE 0 116 117 #define A_STANDOUT 0001 /* standout mode */ 118 #define SCROLL 1 /* text has been scrolled */ 119 #define CLEAR 2 /* window has been cleared */ 120 #define CHANGE 3 /* window has been changed */ 121 #define UP 1 /* direction of scroll */ 122 #define DOWN 2 123 124 struct _line { 125 struct _line *next_screen; 126 struct _line *prev_screen; 127 char *row; 128 char *attributes; 129 int last_char; 130 int changed; 131 int scroll; 132 int number; 133 }; 134 135 struct _line *top_of_win; 136 137 typedef struct WIND { 138 int SR; /* starting row */ 139 int SC; /* starting column */ 140 int LC; /* last column */ 141 int LX; /* last cursor column position */ 142 int LY; /* last cursor row position */ 143 int Attrib; /* attributes active in window */ 144 int Num_lines; /* number of lines */ 145 int Num_cols; /* number of columns */ 146 int scroll_up; /* number of lines moved */ 147 int scroll_down; 148 int SCROLL_CLEAR; /* indicates that window has been scrolled or cleared */ 149 struct _line *first_line; 150 struct _line **line_array; 151 } WINDOW; 152 153 extern WINDOW *curscr; 154 extern WINDOW *stdscr; 155 156 extern unsigned int LINES, COLS; 157 158 /* X-windows definitions */ 159 #include <X11/Xlib.h> 160 161 #if defined(__STDC__) || defined(__cplusplus) 162 #define P_(s) s 163 #else 164 #define P_(s) () 165 #endif 166 167 extern void copy_window P_((WINDOW *origin, WINDOW *destination)); 168 extern void reinitscr P_((void)); 169 extern void get_options P_((int argc, char *argv[])); 170 extern void get_defaults P_((void)); 171 extern void initscr P_((int cols, int lines)); 172 extern void Key_Get P_((void)); 173 extern struct _line *Screenalloc P_((int columns)); 174 extern WINDOW *newwin P_((int lines, int cols, int start_l, int start_c)); 175 extern void wmove P_((WINDOW *window, int row, int column)); 176 extern void clear_line P_((struct _line *line, int column, int cols)); 177 extern void werase P_((WINDOW *window)); 178 extern void wclrtoeol P_((WINDOW *window)); 179 extern void wrefresh P_((WINDOW *window)); 180 extern void touchwin P_((WINDOW *window)); 181 extern void wnoutrefresh P_((WINDOW *window)); 182 extern void flushinp P_((void)); 183 extern int wgetch P_((WINDOW *window)); 184 extern int look_up_key P_((int key_code)); 185 extern void waddch P_((WINDOW *window, int c)); 186 extern void winsertln P_((WINDOW *window)); 187 extern void wdeleteln P_((WINDOW *window)); 188 extern void wclrtobot P_((WINDOW *window)); 189 extern void wstandout P_((WINDOW *window)); 190 extern void wstandend P_((WINDOW *window)); 191 extern void waddstr P_((WINDOW *window, char *string)); 192 extern void clearok P_((WINDOW *window, int flag)); 193 extern void echo P_((void)); 194 extern void noecho P_((void)); 195 extern void raw P_((void)); 196 extern void noraw P_((void)); 197 extern void nl P_((void)); 198 extern void nonl P_((void)); 199 extern void saveterm P_((void)); 200 extern void fixterm P_((void)); 201 extern void resetterm P_((void)); 202 extern void nodelay P_((WINDOW *window, int flag)); 203 extern void idlok P_((WINDOW *window, int flag)); 204 extern void keypad P_((WINDOW *window, int flag)); 205 extern void savetty P_((void)); 206 extern void resetty P_((void)); 207 extern void endwin P_((void)); 208 extern void delwin P_((WINDOW *window)); 209 extern void wprintw P_((WINDOW *window, const char* format, ...)); 210 extern void iout P_((WINDOW *window, int value, int base)); 211 extern int Comp_line P_((struct _line *line1, struct _line *line2)); 212 extern struct _line *Insert_line P_((int row, int end_row, WINDOW *window)); 213 extern struct _line *Delete_line P_((int row, int end_row, WINDOW *window)); 214 extern void CLEAR_TO_EOL P_((WINDOW *window, int row, int column)); 215 extern void doupdate P_((void)); 216 extern void Position P_((WINDOW *window, int row, int col)); 217 extern void Char_out P_((int newc, int newatt, char *line, char *attrib, int offset)); 218 extern void draw_cursor P_((int visible)); 219 extern void cursor P_((WINDOW *window, int row, int col, int erase, int visible)); 220 221 #undef P_ 222 223 224 #endif /* __XCURSE_INC__ */ 225 226