1 /* Public Domain Curses */ 2 3 /*----------------------------------------------------------------------* 4 * PDCurses * 5 *----------------------------------------------------------------------*/ 6 7 #ifndef __PDCURSES__ 8 #define __PDCURSES__ 1 9 10 /*man-start************************************************************** 11 12 PDCurses definitions list: (Only define those needed) 13 14 XCURSES True if compiling for X11. 15 PDC_RGB True if you want to use RGB color definitions 16 (Red = 1, Green = 2, Blue = 4) instead of BGR. 17 PDC_WIDE True if building wide-character support. 18 PDC_DLL_BUILD True if building a Win32 DLL. 19 NCURSES_MOUSE_VERSION Use the ncurses mouse API instead 20 of PDCurses' traditional mouse API. 21 22 PDCurses portable platform definitions list: 23 24 PDC_BUILD Defines API build version. 25 PDCURSES Enables access to PDCurses-only routines. 26 XOPEN Always true. 27 SYSVcurses True if you are compiling for SYSV portability. 28 BSDcurses True if you are compiling for BSD portability. 29 30 **man-end****************************************************************/ 31 32 #define PDCURSES 1 /* PDCurses-only routines */ 33 #define XOPEN 1 /* X/Open Curses routines */ 34 #define SYSVcurses 1 /* System V Curses routines */ 35 #define BSDcurses 1 /* BSD Curses routines */ 36 #if defined( CHTYPE_32) 37 #define CHTYPE_LONG 1 /* chtypes will be 32 bits */ 38 #elif !defined( CHTYPE_16) 39 #define CHTYPE_LONG 2 /* chtypes will be (default) 64 bits */ 40 #endif 41 42 /*----------------------------------------------------------------------*/ 43 44 #include <stdarg.h> 45 #include <stdint.h> 46 #include <stddef.h> 47 #include <stdio.h> /* Required by X/Open usage below */ 48 49 #ifdef PDC_WIDE 50 # include <wchar.h> 51 #endif 52 53 #if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS) 54 extern "C" 55 { 56 # define bool _bool 57 #endif 58 59 /*---------------------------------------------------------------------- 60 * 61 * PDCurses Manifest Constants 62 * 63 */ 64 65 #ifndef FALSE 66 # define FALSE 0 67 #endif 68 #ifndef TRUE 69 # define TRUE 1 70 #endif 71 #ifndef NULL 72 # define NULL (void *)0 73 #endif 74 #ifndef ERR 75 # define ERR (-1) 76 #endif 77 #ifndef OK 78 # define OK 0 79 #endif 80 81 /*---------------------------------------------------------------------- 82 * 83 * PDCurses Type Declarations 84 * 85 */ 86 87 typedef unsigned char bool; /* PDCurses Boolean type */ 88 89 #ifdef CHTYPE_LONG 90 #if(CHTYPE_LONG >= 2) /* "non-standard" 64-bit chtypes */ 91 typedef uint64_t chtype; 92 #else /* "Standard" CHTYPE_LONG case, 32-bit: */ 93 typedef uint32_t chtype; 94 # endif 95 #else 96 typedef uint16_t chtype; /* 8-bit attr + 8-bit char */ 97 #endif 98 99 #ifdef PDC_WIDE 100 typedef chtype cchar_t; 101 #endif 102 103 typedef chtype attr_t; 104 105 /* Version constants, available as of version 4.0 : */ 106 /* Don't forget to update 'version.mif' if MAJOR/MINOR changes! */ 107 108 #define PDC_VER_MAJOR 4 109 #define PDC_VER_MINOR 0 110 #define PDC_VER_CHANGE 2 111 #define PDC_VER_YEAR 2017 112 #define PDC_VER_MONTH 07 113 #define PDC_VER_DAY 26 114 115 #define PDC_BUILD (PDC_VER_MAJOR*1000 + PDC_VER_MINOR *100 + PDC_VER_CHANGE) 116 117 /* When using PDCurses as a DLL (Windows) or shared library (BSD or *nix), 118 it's possible to switch the DLL or shared library. One may therefore want 119 to inquire of the DLL/shared library the port, version numbers, and 120 chtype_size used, and make sure they're what one was expecting. The 121 'PDC_version' structure lets you do just that. */ 122 123 enum PDC_port 124 { 125 PDC_PORT_X11 = 0, 126 PDC_PORT_WIN32 = 1, 127 PDC_PORT_WIN32A = 2, 128 PDC_PORT_DOS = 3, 129 PDC_PORT_OS2 = 4, 130 PDC_PORT_SDL1 = 5, 131 PDC_PORT_SDL2 = 6 132 }; 133 134 /* Detailed PDC version information */ 135 136 typedef struct 137 { 138 const enum PDC_port port; 139 const int ver_major; 140 const int ver_minor; 141 const int ver_change; 142 const size_t chtype_size; 143 const bool is_wide; 144 const bool is_forced_utf8; 145 } PDC_version_info; 146 147 /*---------------------------------------------------------------------- 148 * 149 * PDCurses Mouse Interface -- SYSVR4, with extensions 150 * 151 */ 152 153 /* Most flavors of PDCurses support three buttons. Win32a supports */ 154 /* these plus two "extended" buttons. But we'll set this macro to */ 155 /* six, allowing future versions to support up to nine total buttons. */ 156 /* (The button states are broken up into two arrays to allow for the */ 157 /* possibility of backward compatibility to DLLs compiled with only */ 158 /* three mouse buttons.) */ 159 160 #define PDC_MAX_MOUSE_BUTTONS 9 161 #define PDC_N_EXTENDED_MOUSE_BUTTONS 6 162 163 typedef struct 164 { 165 int x; /* absolute column, 0 based, measured in characters */ 166 int y; /* absolute row, 0 based, measured in characters */ 167 short button[3]; /* state of three "normal" buttons */ 168 int changes; /* flags indicating what has changed with the mouse */ 169 short xbutton[PDC_N_EXTENDED_MOUSE_BUTTONS]; /* state of ext buttons */ 170 } MOUSE_STATUS; 171 172 #define BUTTON_RELEASED 0x0000 173 #define BUTTON_PRESSED 0x0001 174 #define BUTTON_CLICKED 0x0002 175 #define BUTTON_DOUBLE_CLICKED 0x0003 176 #define BUTTON_TRIPLE_CLICKED 0x0004 177 #define BUTTON_MOVED 0x0005 /* PDCurses */ 178 #define WHEEL_SCROLLED 0x0006 /* PDCurses */ 179 #define BUTTON_ACTION_MASK 0x0007 /* PDCurses */ 180 181 #define PDC_BUTTON_SHIFT 0x0008 /* PDCurses */ 182 #define PDC_BUTTON_CONTROL 0x0010 /* PDCurses */ 183 #define PDC_BUTTON_ALT 0x0020 /* PDCurses */ 184 #define BUTTON_MODIFIER_MASK 0x0038 /* PDCurses */ 185 186 #define MOUSE_X_POS (Mouse_status.x) 187 #define MOUSE_Y_POS (Mouse_status.y) 188 189 /* 190 * Bits associated with the .changes field: 191 * 3 2 1 0 192 * 210987654321098765432109876543210 193 * 1 <- button 1 has changed 0 194 * 10 <- button 2 has changed 1 195 * 100 <- button 3 has changed 2 196 * 1000 <- mouse has moved 3 197 * 10000 <- mouse position report 4 198 * 100000 <- mouse wheel up 5 199 * 1000000 <- mouse wheel down 6 200 * 10000000 <- mouse wheel left 7 201 * 100000000 <- mouse wheel right 8 202 * 1000000000 <- button 4 has changed 9 203 * (NOTE: buttons 6 to 10000000000 <- button 5 has changed 10 204 * 9 aren't implemented 100000000000 <- button 6 has changed 11 205 * in any flavor of 1000000000000 <- button 7 has changed 12 206 * PDCurses yet!) 10000000000000 <- button 8 has changed 13 207 * 100000000000000 <- button 9 has changed 14 208 */ 209 210 #define PDC_MOUSE_MOVED 0x0008 211 #define PDC_MOUSE_POSITION 0x0010 212 #define PDC_MOUSE_WHEEL_UP 0x0020 213 #define PDC_MOUSE_WHEEL_DOWN 0x0040 214 #define PDC_MOUSE_WHEEL_LEFT 0x0080 215 #define PDC_MOUSE_WHEEL_RIGHT 0x0100 216 217 #define A_BUTTON_CHANGED (Mouse_status.changes & 7) 218 #define MOUSE_MOVED (Mouse_status.changes & PDC_MOUSE_MOVED) 219 #define MOUSE_POS_REPORT (Mouse_status.changes & PDC_MOUSE_POSITION) 220 #define BUTTON_CHANGED(x) (Mouse_status.changes & (1 << ((x) - ((x)<4 ? 1 : -5)))) 221 #define BUTTON_STATUS(x) (Mouse_status.button[(x) - 1]) 222 #define MOUSE_WHEEL_UP (Mouse_status.changes & PDC_MOUSE_WHEEL_UP) 223 #define MOUSE_WHEEL_DOWN (Mouse_status.changes & PDC_MOUSE_WHEEL_DOWN) 224 #define MOUSE_WHEEL_LEFT (Mouse_status.changes & PDC_MOUSE_WHEEL_LEFT) 225 #define MOUSE_WHEEL_RIGHT (Mouse_status.changes & PDC_MOUSE_WHEEL_RIGHT) 226 227 /* mouse bit-masks */ 228 229 #define BUTTON1_RELEASED 0x00000001L 230 #define BUTTON1_PRESSED 0x00000002L 231 #define BUTTON1_CLICKED 0x00000004L 232 #define BUTTON1_DOUBLE_CLICKED 0x00000008L 233 #define BUTTON1_TRIPLE_CLICKED 0x00000010L 234 #define BUTTON1_MOVED 0x00000010L /* PDCurses */ 235 236 #define BUTTON2_RELEASED 0x00000020L 237 #define BUTTON2_PRESSED 0x00000040L 238 #define BUTTON2_CLICKED 0x00000080L 239 #define BUTTON2_DOUBLE_CLICKED 0x00000100L 240 #define BUTTON2_TRIPLE_CLICKED 0x00000200L 241 #define BUTTON2_MOVED 0x00000200L /* PDCurses */ 242 243 #define BUTTON3_RELEASED 0x00000400L 244 #define BUTTON3_PRESSED 0x00000800L 245 #define BUTTON3_CLICKED 0x00001000L 246 #define BUTTON3_DOUBLE_CLICKED 0x00002000L 247 #define BUTTON3_TRIPLE_CLICKED 0x00004000L 248 #define BUTTON3_MOVED 0x00004000L /* PDCurses */ 249 250 /* For the ncurses-compatible functions only, BUTTON4_PRESSED and 251 BUTTON5_PRESSED are returned for mouse scroll wheel up and down; 252 otherwise PDCurses doesn't support buttons 4 and 5... except 253 as described above for Win32a, and perhaps to be extended to 254 other PDCurses flavors */ 255 256 #define BUTTON4_RELEASED 0x00008000L 257 #define BUTTON4_PRESSED 0x00010000L 258 #define BUTTON4_CLICKED 0x00020000L 259 #define BUTTON4_DOUBLE_CLICKED 0x00040000L 260 #define BUTTON4_TRIPLE_CLICKED 0x00080000L 261 262 #define BUTTON5_RELEASED 0x00100000L 263 #define BUTTON5_PRESSED 0x00200000L 264 #define BUTTON5_CLICKED 0x00400000L 265 #define BUTTON5_DOUBLE_CLICKED 0x00800000L 266 #define BUTTON5_TRIPLE_CLICKED 0x01000000L 267 268 #define MOUSE_WHEEL_SCROLL 0x02000000L /* PDCurses */ 269 #define BUTTON_MODIFIER_SHIFT 0x04000000L /* PDCurses */ 270 #define BUTTON_MODIFIER_CONTROL 0x08000000L /* PDCurses */ 271 #define BUTTON_MODIFIER_ALT 0x10000000L /* PDCurses */ 272 273 #define ALL_MOUSE_EVENTS 0x1fffffffL 274 #define REPORT_MOUSE_POSITION 0x20000000L 275 276 /* ncurses mouse interface */ 277 278 typedef unsigned long mmask_t; 279 280 typedef struct 281 { 282 short id; /* unused, always 0 */ 283 int x, y, z; /* x, y same as MOUSE_STATUS; z unused */ 284 mmask_t bstate; /* equivalent to changes + button[], but 285 in the same format as used for mousemask() */ 286 } MEVENT; 287 288 #ifdef NCURSES_MOUSE_VERSION 289 # define BUTTON_SHIFT BUTTON_MODIFIER_SHIFT 290 # define BUTTON_CONTROL BUTTON_MODIFIER_CONTROL 291 # define BUTTON_CTRL BUTTON_MODIFIER_CONTROL 292 # define BUTTON_ALT BUTTON_MODIFIER_ALT 293 #else 294 # define BUTTON_SHIFT PDC_BUTTON_SHIFT 295 # define BUTTON_CONTROL PDC_BUTTON_CONTROL 296 # define BUTTON_ALT PDC_BUTTON_ALT 297 #endif 298 299 /*---------------------------------------------------------------------- 300 * 301 * PDCurses Structure Definitions 302 * 303 */ 304 305 typedef struct _win /* definition of a window */ 306 { 307 int _cury; /* current pseudo-cursor */ 308 int _curx; 309 int _maxy; /* max window coordinates */ 310 int _maxx; 311 int _begy; /* origin on screen */ 312 int _begx; 313 int _flags; /* window properties */ 314 chtype _attrs; /* standard attributes and colors */ 315 chtype _bkgd; /* background, normally blank */ 316 bool _clear; /* causes clear at next refresh */ 317 bool _leaveit; /* leaves cursor where it is */ 318 bool _scroll; /* allows window scrolling */ 319 bool _nodelay; /* input character wait flag */ 320 bool _immed; /* immediate update flag */ 321 bool _sync; /* synchronise window ancestors */ 322 bool _use_keypad; /* flags keypad key mode active */ 323 chtype **_y; /* pointer to line pointer array */ 324 int *_firstch; /* first changed character in line */ 325 int *_lastch; /* last changed character in line */ 326 int _tmarg; /* top of scrolling region */ 327 int _bmarg; /* bottom of scrolling region */ 328 int _delayms; /* milliseconds of delay for getch() */ 329 int _parx, _pary; /* coords relative to parent (0,0) */ 330 struct _win *_parent; /* subwin's pointer to parent win */ 331 } WINDOW; 332 333 /* Avoid using the SCREEN struct directly -- use the corresponding 334 functions if possible. This struct may eventually be made private. */ 335 336 typedef struct 337 { 338 bool alive; /* if initscr() called, and not endwin() */ 339 bool autocr; /* if cr -> lf */ 340 bool cbreak; /* if terminal unbuffered */ 341 bool echo; /* if terminal echo */ 342 bool raw_inp; /* raw input mode (v. cooked input) */ 343 bool raw_out; /* raw output mode (7 v. 8 bits) */ 344 bool audible; /* FALSE if the bell is visual */ 345 bool mono; /* TRUE if current screen is mono */ 346 bool resized; /* TRUE if TERM has been resized */ 347 bool orig_attr; /* TRUE if we have the original colors */ 348 short orig_fore; /* original screen foreground color */ 349 short orig_back; /* original screen foreground color */ 350 int cursrow; /* position of physical cursor */ 351 int curscol; /* position of physical cursor */ 352 int visibility; /* visibility of cursor */ 353 int orig_cursor; /* original cursor size */ 354 int lines; /* new value for LINES */ 355 int cols; /* new value for COLS */ 356 unsigned long _trap_mbe; /* trap these mouse button events */ 357 unsigned long _map_mbe_to_key; /* map mouse buttons to slk */ 358 int mouse_wait; /* time to wait (in ms) for a 359 button release after a press, in 360 order to count it as a click */ 361 int slklines; /* lines in use by slk_init() */ 362 WINDOW *slk_winptr; /* window for slk */ 363 int linesrippedoff; /* lines ripped off via ripoffline() */ 364 int linesrippedoffontop; /* lines ripped off on 365 top via ripoffline() */ 366 int delaytenths; /* 1/10ths second to wait block 367 getch() for */ 368 bool _preserve; /* TRUE if screen background 369 to be preserved */ 370 int _restore; /* specifies if screen background 371 to be restored, and how */ 372 bool save_key_modifiers; /* TRUE if each key modifiers saved 373 with each key press */ 374 bool return_key_modifiers; /* TRUE if modifier keys are 375 returned as "real" keys */ 376 bool key_code; /* TRUE if last key is a special key; 377 used internally by get_wch() */ 378 #ifdef XCURSES 379 int XcurscrSize; /* size of Xcurscr shared memory block */ 380 bool sb_on; 381 int sb_viewport_y; 382 int sb_viewport_x; 383 int sb_total_y; 384 int sb_total_x; 385 int sb_cur_y; 386 int sb_cur_x; 387 int exit_key; 388 #endif 389 short line_color; /* color of line attributes - default -1 */ 390 } SCREEN; 391 392 /*---------------------------------------------------------------------- 393 * 394 * PDCurses External Variables 395 * 396 */ 397 398 #ifdef PDC_DLL_BUILD 399 # ifdef CURSES_LIBRARY 400 # define PDCEX __declspec(dllexport) extern 401 # else 402 # define PDCEX __declspec(dllimport) 403 # endif 404 #else 405 # define PDCEX extern 406 #endif 407 408 PDCEX int LINES; /* terminal height */ 409 PDCEX int COLS; /* terminal width */ 410 PDCEX WINDOW *stdscr; /* the default screen window */ 411 PDCEX WINDOW *curscr; /* the current screen image */ 412 PDCEX SCREEN *SP; /* curses variables */ 413 PDCEX MOUSE_STATUS Mouse_status; 414 PDCEX int COLORS; 415 PDCEX int COLOR_PAIRS; 416 PDCEX int TABSIZE; 417 PDCEX chtype acs_map[]; /* alternate character set map */ 418 PDCEX char ttytype[]; /* terminal name/description */ 419 PDCEX PDC_version_info PDC_version; 420 421 /*man-start************************************************************** 422 423 PDCurses Text Attributes 424 ======================== 425 426 Originally, PDCurses used a short (16 bits) for its chtype. To include 427 color, a number of things had to be sacrificed from the strict Unix and 428 System V support. The main problem was fitting all character attributes 429 and color into an unsigned char (all 8 bits!). 430 431 Today, PDCurses by default uses a long (32 bits) for its chtype, as in 432 System V. The short chtype is still available, by undefining CHTYPE_LONG 433 and rebuilding the library. 434 435 The following is the structure of a win->_attrs chtype: 436 437 short form: 438 439 +-----------------------------------------------+ 440 |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0| 441 +-----------------------------------------------+ 442 color number | attrs | character eg 'a' 443 444 The available non-color attributes are bold, reverse and blink. Others 445 have no effect. The high order char is an index into an array of 446 physical colors (defined in color.c) -- 32 foreground/background color 447 pairs (5 bits) plus 3 bits for other attributes. 448 449 long form: 450 451 +--------------------------------------------------------------------+ 452 |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|..| 2| 1| 0| 453 +--------------------------------------------------------------------+ 454 color number | modifiers | character eg 'a' 455 456 The available non-color attributes are bold, underline, invisible, 457 right-line, left-line, protect, reverse and blink. 256 color pairs (8 458 bits), 8 bits for other attributes, and 16 bits for character data. 459 460 Note that there is now a "super-long" 64-bit form, available by 461 defining CHTYPE_LONG to be 2: 462 463 ------------------------------------------------------------------------------- 464 |63|62|61|60|59|..|34|33|32|31|30|29|28|..|22|21|20|19|18|17|16|..| 3| 2| 1| 0| 465 ------------------------------------------------------------------------------- 466 color number | modifiers | character eg 'a' 467 468 469 We take five more bits for the character (thus allowing Unicode values 470 past 64K; UTF-16 can go up to 0x10ffff, requiring 21 bits total), and 471 four more bits for attributes. Three are currently used as A_OVERLINE, A_DIM, 472 and A_STRIKEOUT; one more is reserved for future use. 31 bits are then used 473 for color. These are usually just treated as the usual palette 474 indices, and range from 0 to 255. However, if bit 63 is 475 set, the remaining 30 bits are interpreted as foreground RGB (first 476 fifteen bits, five bits for each of the three channels) and background RGB 477 (same scheme using the remaining 15 bits.) 478 479 **man-end****************************************************************/ 480 481 /*** Video attribute macros ***/ 482 483 #define A_NORMAL (chtype)0 484 485 #ifdef CHTYPE_LONG 486 487 # if(CHTYPE_LONG >= 2) /* 64-bit chtypes */ 488 # define PDC_CHARTEXT_BITS 21 489 # define A_CHARTEXT (chtype)( ((chtype)0x1 << PDC_CHARTEXT_BITS) - 1) 490 # define A_ALTCHARSET ((chtype)0x001 << PDC_CHARTEXT_BITS) 491 # define A_RIGHTLINE ((chtype)0x002 << PDC_CHARTEXT_BITS) 492 # define A_LEFTLINE ((chtype)0x004 << PDC_CHARTEXT_BITS) 493 # define A_INVIS ((chtype)0x008 << PDC_CHARTEXT_BITS) 494 # define A_UNDERLINE ((chtype)0x010 << PDC_CHARTEXT_BITS) 495 # define A_REVERSE ((chtype)0x020 << PDC_CHARTEXT_BITS) 496 # define A_BLINK ((chtype)0x040 << PDC_CHARTEXT_BITS) 497 # define A_BOLD ((chtype)0x080 << PDC_CHARTEXT_BITS) 498 # define A_OVERLINE ((chtype)0x100 << PDC_CHARTEXT_BITS) 499 # define A_STRIKEOUT ((chtype)0x200 << PDC_CHARTEXT_BITS) 500 # define A_DIM ((chtype)0x400 << PDC_CHARTEXT_BITS) 501 #if 0 502 /* May come up with a use for this bit */ 503 /* someday; reserved for the future: */ 504 # define A_FUTURE_2 ((chtype)0x800 << PDC_CHARTEXT_BITS) 505 #endif 506 # define PDC_COLOR_SHIFT (PDC_CHARTEXT_BITS + 12) 507 # define A_COLOR ((chtype)0x7fffffff << PDC_COLOR_SHIFT) 508 # define A_RGB_COLOR ((chtype)0x40000000 << PDC_COLOR_SHIFT) 509 # define A_ATTRIBUTES (((chtype)0xfff << PDC_CHARTEXT_BITS) | A_COLOR) 510 # define A_RGB( rfore, gfore, bfore, rback, gback, bback) \ 511 (( (((chtype)(bfore) << 25) \ 512 | ((chtype)(gfore) << 20) \ 513 | ((chtype)(rfore) << 15) \ 514 | ((chtype)(bback) << 10) \ 515 | ((chtype)(gback) << 5) \ 516 | ((chtype)(rback) )) << PDC_COLOR_SHIFT) | A_RGB_COLOR) 517 # else /* plain ol' 32-bit chtypes */ 518 # define A_ALTCHARSET (chtype)0x00010000 519 # define A_RIGHTLINE (chtype)0x00020000 520 # define A_LEFTLINE (chtype)0x00040000 521 # define A_INVIS (chtype)0x00080000 522 # define A_UNDERLINE (chtype)0x00100000 523 # define A_REVERSE (chtype)0x00200000 524 # define A_BLINK (chtype)0x00400000 525 # define A_BOLD (chtype)0x00800000 526 # define A_COLOR (chtype)0xff000000 527 # define A_RGB_COLOR A_NORMAL 528 #ifdef PDC_WIDE 529 # define A_CHARTEXT (chtype)0x0000ffff 530 # define A_ATTRIBUTES (chtype)0xffff0000 531 # define A_DIM A_NORMAL 532 # define A_OVERLINE A_NORMAL 533 # define A_STRIKEOUT A_NORMAL 534 #else /* with 8-bit chars, we have bits for these attribs : */ 535 # define A_CHARTEXT (chtype)0x000000ff 536 # define A_ATTRIBUTES (chtype)0xffffe000 537 # define A_DIM (chtype)0x00008000 538 # define A_OVERLINE (chtype)0x00004000 539 # define A_STRIKEOUT (chtype)0x00002000 540 #endif 541 # define PDC_COLOR_SHIFT 24 542 #endif 543 544 545 # define A_ITALIC A_INVIS 546 # define A_PROTECT (A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE) 547 548 #else /* 16-bit chtypes */ 549 # define A_BOLD (chtype)0x0100 /* X/Open */ 550 # define A_REVERSE (chtype)0x0200 /* X/Open */ 551 # define A_BLINK (chtype)0x0400 /* X/Open */ 552 553 # define A_ATTRIBUTES (chtype)0xff00 /* X/Open */ 554 # define A_CHARTEXT (chtype)0x00ff /* X/Open */ 555 # define A_COLOR (chtype)0xf800 /* System V */ 556 557 # define A_ALTCHARSET A_NORMAL /* X/Open */ 558 # define A_PROTECT A_NORMAL /* X/Open */ 559 # define A_UNDERLINE A_NORMAL /* X/Open */ 560 # define A_OVERLINE A_NORMAL /* X/Open */ 561 # define A_STRIKEOUT A_NORMAL /* X/Open */ 562 563 # define A_LEFTLINE A_NORMAL 564 # define A_RIGHTLINE A_NORMAL 565 # define A_ITALIC A_NORMAL 566 # define A_INVIS A_NORMAL 567 # define A_RGB_COLOR A_NORMAL 568 # define A_DIM A_NORMAL 569 570 # define PDC_COLOR_SHIFT 11 571 #endif 572 573 #define A_STANDOUT (A_REVERSE | A_BOLD) /* X/Open */ 574 575 #define CHR_MSK A_CHARTEXT /* Obsolete */ 576 #define ATR_MSK A_ATTRIBUTES /* Obsolete */ 577 #define ATR_NRM A_NORMAL /* Obsolete */ 578 579 /* For use with attr_t -- X/Open says, "these shall be distinct", so 580 this is a non-conforming implementation. */ 581 582 #define WA_NORMAL A_NORMAL 583 584 #define WA_ALTCHARSET A_ALTCHARSET 585 #define WA_BLINK A_BLINK 586 #define WA_BOLD A_BOLD 587 #define WA_DIM A_DIM 588 #define WA_INVIS A_INVIS 589 #define WA_LEFT A_LEFTLINE 590 #define WA_PROTECT A_PROTECT 591 #define WA_REVERSE A_REVERSE 592 #define WA_RIGHT A_RIGHTLINE 593 #define WA_STANDOUT A_STANDOUT 594 #define WA_UNDERLINE A_UNDERLINE 595 596 #define WA_HORIZONTAL A_NORMAL 597 #define WA_LOW A_NORMAL 598 #define WA_TOP A_NORMAL 599 #define WA_VERTICAL A_NORMAL 600 601 #define WA_ATTRIBUTES A_ATTRIBUTES 602 603 /*** Alternate character set macros ***/ 604 605 /* 'w' = 32-bit chtype; acs_map[] index | A_ALTCHARSET 606 'n' = 16-bit chtype; it gets the fallback set because no bit is 607 available for A_ALTCHARSET */ 608 609 #ifdef CHTYPE_LONG 610 # define ACS_PICK(w, n) ((chtype)w | A_ALTCHARSET) 611 #else 612 # define ACS_PICK(w, n) ((chtype)n) 613 #endif 614 615 /* VT100-compatible symbols -- box chars */ 616 617 #define ACS_LRCORNER ACS_PICK('V', '+') 618 #define ACS_URCORNER ACS_PICK('W', '+') 619 #define ACS_ULCORNER ACS_PICK('X', '+') 620 #define ACS_LLCORNER ACS_PICK('Y', '+') 621 #define ACS_PLUS ACS_PICK('Z', '+') 622 #define ACS_LTEE ACS_PICK('[', '+') 623 #define ACS_RTEE ACS_PICK('\\', '+') 624 #define ACS_BTEE ACS_PICK(']', '+') 625 #define ACS_TTEE ACS_PICK('^', '+') 626 #define ACS_HLINE ACS_PICK('_', '-') 627 #define ACS_VLINE ACS_PICK('`', '|') 628 629 /* PDCurses-only ACS chars. Don't use if ncurses compatibility matters. 630 Some won't work in non-wide X11 builds (see 'acs_defs.h' for details). */ 631 632 #define ACS_CENT ACS_PICK('{', 'c') 633 #define ACS_YEN ACS_PICK('|', 'y') 634 #define ACS_PESETA ACS_PICK('}', 'p') 635 #define ACS_HALF ACS_PICK('&', '/') 636 #define ACS_QUARTER ACS_PICK('\'', '/') 637 #define ACS_LEFT_ANG_QU ACS_PICK(')', '<') 638 #define ACS_RIGHT_ANG_QU ACS_PICK('*', '>') 639 #define ACS_D_HLINE ACS_PICK('a', '-') 640 #define ACS_D_VLINE ACS_PICK('b', '|') 641 #define ACS_CLUB ACS_PICK( 11, 'C') 642 #define ACS_HEART ACS_PICK( 12, 'H') 643 #define ACS_SPADE ACS_PICK( 13, 'S') 644 #define ACS_SMILE ACS_PICK( 14, 'O') 645 #define ACS_REV_SMILE ACS_PICK( 15, 'O') 646 #define ACS_MED_BULLET ACS_PICK( 16, '.') 647 #define ACS_WHITE_BULLET ACS_PICK( 17, 'O') 648 #define ACS_PILCROW ACS_PICK( 18, 'O') 649 #define ACS_SECTION ACS_PICK( 19, 'O') 650 651 #define ACS_SUP2 ACS_PICK(',', '2') 652 #define ACS_ALPHA ACS_PICK('.', 'a') 653 #define ACS_BETA ACS_PICK('/', 'b') 654 #define ACS_GAMMA ACS_PICK('0', 'y') 655 #define ACS_UP_SIGMA ACS_PICK('1', 'S') 656 #define ACS_LO_SIGMA ACS_PICK('2', 's') 657 #define ACS_MU ACS_PICK('4', 'u') 658 #define ACS_TAU ACS_PICK('5', 't') 659 #define ACS_UP_PHI ACS_PICK('6', 'F') 660 #define ACS_THETA ACS_PICK('7', 't') 661 #define ACS_OMEGA ACS_PICK('8', 'w') 662 #define ACS_DELTA ACS_PICK('9', 'd') 663 #define ACS_INFINITY ACS_PICK('-', 'i') 664 #define ACS_LO_PHI ACS_PICK( 22, 'f') 665 #define ACS_EPSILON ACS_PICK(':', 'e') 666 #define ACS_INTERSECT ACS_PICK('e', 'u') 667 #define ACS_TRIPLE_BAR ACS_PICK('f', '=') 668 #define ACS_DIVISION ACS_PICK('c', '/') 669 #define ACS_APPROX_EQ ACS_PICK('d', '~') 670 #define ACS_SM_BULLET ACS_PICK('g', '.') 671 #define ACS_SQUARE_ROOT ACS_PICK('i', '!') 672 #define ACS_UBLOCK ACS_PICK('p', '^') 673 #define ACS_BBLOCK ACS_PICK('q', '_') 674 #define ACS_LBLOCK ACS_PICK('r', '<') 675 #define ACS_RBLOCK ACS_PICK('s', '>') 676 677 #define ACS_A_ORDINAL ACS_PICK(20, 'a') 678 #define ACS_O_ORDINAL ACS_PICK(21, 'o') 679 #define ACS_INV_QUERY ACS_PICK(24, '?') 680 #define ACS_REV_NOT ACS_PICK(25, '!') 681 #define ACS_NOT ACS_PICK(26, '!') 682 #define ACS_INV_BANG ACS_PICK(23, '!') 683 #define ACS_UP_INTEGRAL ACS_PICK(27, '|') 684 #define ACS_LO_INTEGRAL ACS_PICK(28, '|') 685 #define ACS_SUP_N ACS_PICK(29, 'n') 686 #define ACS_CENTER_SQU ACS_PICK(30, 'x') 687 #define ACS_F_WITH_HOOK ACS_PICK(31, 'f') 688 689 #define ACS_SD_LRCORNER ACS_PICK(';', '+') 690 #define ACS_SD_URCORNER ACS_PICK('<', '+') 691 #define ACS_SD_ULCORNER ACS_PICK('=', '+') 692 #define ACS_SD_LLCORNER ACS_PICK('>', '+') 693 #define ACS_SD_PLUS ACS_PICK('?', '+') 694 #define ACS_SD_LTEE ACS_PICK('@', '+') 695 #define ACS_SD_RTEE ACS_PICK('A', '+') 696 #define ACS_SD_BTEE ACS_PICK('B', '+') 697 #define ACS_SD_TTEE ACS_PICK('C', '+') 698 699 #define ACS_D_LRCORNER ACS_PICK('D', '+') 700 #define ACS_D_URCORNER ACS_PICK('E', '+') 701 #define ACS_D_ULCORNER ACS_PICK('F', '+') 702 #define ACS_D_LLCORNER ACS_PICK('G', '+') 703 #define ACS_D_PLUS ACS_PICK('H', '+') 704 #define ACS_D_LTEE ACS_PICK('I', '+') 705 #define ACS_D_RTEE ACS_PICK('J', '+') 706 #define ACS_D_BTEE ACS_PICK('K', '+') 707 #define ACS_D_TTEE ACS_PICK('L', '+') 708 709 #define ACS_DS_LRCORNER ACS_PICK('M', '+') 710 #define ACS_DS_URCORNER ACS_PICK('N', '+') 711 #define ACS_DS_ULCORNER ACS_PICK('O', '+') 712 #define ACS_DS_LLCORNER ACS_PICK('P', '+') 713 #define ACS_DS_PLUS ACS_PICK('Q', '+') 714 #define ACS_DS_LTEE ACS_PICK('R', '+') 715 #define ACS_DS_RTEE ACS_PICK('S', '+') 716 #define ACS_DS_BTEE ACS_PICK('T', '+') 717 #define ACS_DS_TTEE ACS_PICK('U', '+') 718 719 /* VT100-compatible symbols -- other */ 720 721 #define ACS_S1 ACS_PICK('l', '-') 722 #define ACS_S9 ACS_PICK('o', '_') 723 #define ACS_DIAMOND ACS_PICK('j', '+') 724 #define ACS_CKBOARD ACS_PICK('k', ':') 725 #define ACS_DEGREE ACS_PICK('w', '\'') 726 #define ACS_PLMINUS ACS_PICK('x', '#') 727 #define ACS_BULLET ACS_PICK('h', 'o') 728 729 /* Teletype 5410v1 symbols -- these are defined in SysV curses, but 730 are not well-supported by most terminals. Stick to VT100 characters 731 for optimum portability. */ 732 733 #define ACS_LARROW ACS_PICK('!', '<') 734 #define ACS_RARROW ACS_PICK(' ', '>') 735 #define ACS_DARROW ACS_PICK('#', 'v') 736 #define ACS_UARROW ACS_PICK('"', '^') 737 #define ACS_BOARD ACS_PICK('+', '#') 738 #define ACS_LTBOARD ACS_PICK('y', '#') 739 #define ACS_LANTERN ACS_PICK('z', '*') 740 #define ACS_BLOCK ACS_PICK('t', '#') 741 742 /* That goes double for these -- undocumented SysV symbols. Don't use 743 them. */ 744 745 #define ACS_S3 ACS_PICK('m', '-') 746 #define ACS_S7 ACS_PICK('n', '-') 747 #define ACS_LEQUAL ACS_PICK('u', '<') 748 #define ACS_GEQUAL ACS_PICK('v', '>') 749 #define ACS_PI ACS_PICK('$', 'n') 750 #define ACS_NEQUAL ACS_PICK('%', '+') 751 #define ACS_STERLING ACS_PICK('~', 'L') 752 753 /* Box char aliases */ 754 755 #define ACS_BSSB ACS_ULCORNER 756 #define ACS_SSBB ACS_LLCORNER 757 #define ACS_BBSS ACS_URCORNER 758 #define ACS_SBBS ACS_LRCORNER 759 #define ACS_SBSS ACS_RTEE 760 #define ACS_SSSB ACS_LTEE 761 #define ACS_SSBS ACS_BTEE 762 #define ACS_BSSS ACS_TTEE 763 #define ACS_BSBS ACS_HLINE 764 #define ACS_SBSB ACS_VLINE 765 #define ACS_SSSS ACS_PLUS 766 767 /* cchar_t aliases */ 768 769 #ifdef PDC_WIDE 770 # define WACS_LRCORNER (&(acs_map['V'])) 771 # define WACS_URCORNER (&(acs_map['W'])) 772 # define WACS_ULCORNER (&(acs_map['X'])) 773 # define WACS_LLCORNER (&(acs_map['Y'])) 774 # define WACS_PLUS (&(acs_map['Z'])) 775 # define WACS_LTEE (&(acs_map['['])) 776 # define WACS_RTEE (&(acs_map['\\'])) 777 # define WACS_BTEE (&(acs_map[']'])) 778 # define WACS_TTEE (&(acs_map['^'])) 779 # define WACS_HLINE (&(acs_map['_'])) 780 # define WACS_VLINE (&(acs_map['`'])) 781 782 # define WACS_CENT (&(acs_map['{'])) 783 # define WACS_YEN (&(acs_map['|'])) 784 # define WACS_PESETA (&(acs_map['}'])) 785 # define WACS_HALF (&(acs_map['&'])) 786 # define WACS_QUARTER (&(acs_map['\''])) 787 # define WACS_LEFT_ANG_QU (&(acs_map[')'])) 788 # define WACS_RIGHT_ANG_QU (&(acs_map['*'])) 789 # define WACS_D_HLINE (&(acs_map['a'])) 790 # define WACS_D_VLINE (&(acs_map['b'])) 791 # define WACS_CLUB (&(acs_map[ 11])) 792 # define WACS_HEART (&(acs_map[ 12])) 793 # define WACS_SPADE (&(acs_map[ 13])) 794 # define WACS_SMILE (&(acs_map[ 14])) 795 # define WACS_REV_SMILE (&(acs_map[ 15])) 796 # define WACS_MED_BULLET (&(acs_map[ 16])) 797 # define WACS_WHITE_BULLET (&(acs_map[ 17])) 798 # define WACS_PILCROW (&(acs_map[ 18])) 799 # define WACS_SECTION (&(acs_map[ 19])) 800 801 # define WACS_SUP2 (&(acs_map[','])) 802 # define WACS_ALPHA (&(acs_map['.'])) 803 # define WACS_BETA (&(acs_map['/'])) 804 # define WACS_GAMMA (&(acs_map['0'])) 805 # define WACS_UP_SIGMA (&(acs_map['1'])) 806 # define WACS_LO_SIGMA (&(acs_map['2'])) 807 # define WACS_MU (&(acs_map['4'])) 808 # define WACS_TAU (&(acs_map['5'])) 809 # define WACS_UP_PHI (&(acs_map['6'])) 810 # define WACS_THETA (&(acs_map['7'])) 811 # define WACS_OMEGA (&(acs_map['8'])) 812 # define WACS_DELTA (&(acs_map['9'])) 813 # define WACS_INFINITY (&(acs_map['-'])) 814 # define WACS_LO_PHI (&(acs_map[ 22])) 815 # define WACS_EPSILON (&(acs_map[':'])) 816 # define WACS_INTERSECT (&(acs_map['e'])) 817 # define WACS_TRIPLE_BAR (&(acs_map['f'])) 818 # define WACS_DIVISION (&(acs_map['c'])) 819 # define WACS_APPROX_EQ (&(acs_map['d'])) 820 # define WACS_SM_BULLET (&(acs_map['g'])) 821 # define WACS_SQUARE_ROOT (&(acs_map['i'])) 822 # define WACS_UBLOCK (&(acs_map['p'])) 823 # define WACS_BBLOCK (&(acs_map['q'])) 824 # define WACS_LBLOCK (&(acs_map['r'])) 825 # define WACS_RBLOCK (&(acs_map['s'])) 826 827 # define WACS_A_ORDINAL (&(acs_map[20])) 828 # define WACS_O_ORDINAL (&(acs_map[21])) 829 # define WACS_INV_QUERY (&(acs_map[24])) 830 # define WACS_REV_NOT (&(acs_map[25])) 831 # define WACS_NOT (&(acs_map[26])) 832 # define WACS_INV_BANG (&(acs_map[23])) 833 # define WACS_UP_INTEGRAL (&(acs_map[27])) 834 # define WACS_LO_INTEGRAL (&(acs_map[28])) 835 # define WACS_SUP_N (&(acs_map[29])) 836 # define WACS_CENTER_SQU (&(acs_map[30])) 837 # define WACS_F_WITH_HOOK (&(acs_map[31])) 838 839 # define WACS_SD_LRCORNER (&(acs_map[';'])) 840 # define WACS_SD_URCORNER (&(acs_map['<'])) 841 # define WACS_SD_ULCORNER (&(acs_map['='])) 842 # define WACS_SD_LLCORNER (&(acs_map['>'])) 843 # define WACS_SD_PLUS (&(acs_map['?'])) 844 # define WACS_SD_LTEE (&(acs_map['@'])) 845 # define WACS_SD_RTEE (&(acs_map['A'])) 846 # define WACS_SD_BTEE (&(acs_map['B'])) 847 # define WACS_SD_TTEE (&(acs_map['C'])) 848 849 # define WACS_D_LRCORNER (&(acs_map['D'])) 850 # define WACS_D_URCORNER (&(acs_map['E'])) 851 # define WACS_D_ULCORNER (&(acs_map['F'])) 852 # define WACS_D_LLCORNER (&(acs_map['G'])) 853 # define WACS_D_PLUS (&(acs_map['H'])) 854 # define WACS_D_LTEE (&(acs_map['I'])) 855 # define WACS_D_RTEE (&(acs_map['J'])) 856 # define WACS_D_BTEE (&(acs_map['K'])) 857 # define WACS_D_TTEE (&(acs_map['L'])) 858 859 # define WACS_DS_LRCORNER (&(acs_map['M'])) 860 # define WACS_DS_URCORNER (&(acs_map['N'])) 861 # define WACS_DS_ULCORNER (&(acs_map['O'])) 862 # define WACS_DS_LLCORNER (&(acs_map['P'])) 863 # define WACS_DS_PLUS (&(acs_map['Q'])) 864 # define WACS_DS_LTEE (&(acs_map['R'])) 865 # define WACS_DS_RTEE (&(acs_map['S'])) 866 # define WACS_DS_BTEE (&(acs_map['T'])) 867 # define WACS_DS_TTEE (&(acs_map['U'])) 868 869 # define WACS_S1 (&(acs_map['l'])) 870 # define WACS_S9 (&(acs_map['o'])) 871 # define WACS_DIAMOND (&(acs_map['j'])) 872 # define WACS_CKBOARD (&(acs_map['k'])) 873 # define WACS_DEGREE (&(acs_map['w'])) 874 # define WACS_PLMINUS (&(acs_map['x'])) 875 # define WACS_BULLET (&(acs_map['h'])) 876 877 878 # define WACS_LARROW (&(acs_map['!'])) 879 # define WACS_RARROW (&(acs_map[' '])) 880 # define WACS_DARROW (&(acs_map['#'])) 881 # define WACS_UARROW (&(acs_map['"'])) 882 # define WACS_BOARD (&(acs_map['+'])) 883 # define WACS_LTBOARD (&(acs_map['y'])) 884 # define WACS_LANTERN (&(acs_map['z'])) 885 # define WACS_BLOCK (&(acs_map['t'])) 886 887 # define WACS_S3 (&(acs_map['m'])) 888 # define WACS_S7 (&(acs_map['n'])) 889 # define WACS_LEQUAL (&(acs_map['u'])) 890 # define WACS_GEQUAL (&(acs_map['v'])) 891 # define WACS_PI (&(acs_map['$'])) 892 # define WACS_NEQUAL (&(acs_map['%'])) 893 # define WACS_STERLING (&(acs_map['~'])) 894 895 # define WACS_BSSB WACS_ULCORNER 896 # define WACS_SSBB WACS_LLCORNER 897 # define WACS_BBSS WACS_URCORNER 898 # define WACS_SBBS WACS_LRCORNER 899 # define WACS_SBSS WACS_RTEE 900 # define WACS_SSSB WACS_LTEE 901 # define WACS_SSBS WACS_BTEE 902 # define WACS_BSSS WACS_TTEE 903 # define WACS_BSBS WACS_HLINE 904 # define WACS_SBSB WACS_VLINE 905 # define WACS_SSSS WACS_PLUS 906 #endif 907 908 /*** Color macros ***/ 909 910 #define COLOR_BLACK 0 911 912 #ifdef PDC_RGB /* RGB */ 913 # define COLOR_RED 1 914 # define COLOR_GREEN 2 915 # define COLOR_BLUE 4 916 #else /* BGR */ 917 # define COLOR_BLUE 1 918 # define COLOR_GREEN 2 919 # define COLOR_RED 4 920 #endif 921 922 #define COLOR_CYAN (COLOR_BLUE | COLOR_GREEN) 923 #define COLOR_MAGENTA (COLOR_RED | COLOR_BLUE) 924 #define COLOR_YELLOW (COLOR_RED | COLOR_GREEN) 925 926 #define COLOR_WHITE 7 927 928 /*---------------------------------------------------------------------- 929 * 930 * Function and Keypad Key Definitions. 931 * Many are just for compatibility. 932 * 933 */ 934 935 #ifdef PDC_WIDE 936 #define KEY_OFFSET 0xec00 937 #else 938 #define KEY_OFFSET 0x100 939 #endif 940 941 #define KEY_CODE_YES (KEY_OFFSET + 0x00) /* If get_wch() gives a key code */ 942 943 #define KEY_BREAK (KEY_OFFSET + 0x01) /* Not on PC KBD */ 944 #define KEY_DOWN (KEY_OFFSET + 0x02) /* Down arrow key */ 945 #define KEY_UP (KEY_OFFSET + 0x03) /* Up arrow key */ 946 #define KEY_LEFT (KEY_OFFSET + 0x04) /* Left arrow key */ 947 #define KEY_RIGHT (KEY_OFFSET + 0x05) /* Right arrow key */ 948 #define KEY_HOME (KEY_OFFSET + 0x06) /* home key */ 949 #define KEY_BACKSPACE (KEY_OFFSET + 0x07) /* not on pc */ 950 #define KEY_F0 (KEY_OFFSET + 0x08) /* function keys; 64 reserved */ 951 952 #define KEY_DL (KEY_OFFSET + 0x48) /* delete line */ 953 #define KEY_IL (KEY_OFFSET + 0x49) /* insert line */ 954 #define KEY_DC (KEY_OFFSET + 0x4a) /* delete character */ 955 #define KEY_IC (KEY_OFFSET + 0x4b) /* insert char or enter ins mode */ 956 #define KEY_EIC (KEY_OFFSET + 0x4c) /* exit insert char mode */ 957 #define KEY_CLEAR (KEY_OFFSET + 0x4d) /* clear screen */ 958 #define KEY_EOS (KEY_OFFSET + 0x4e) /* clear to end of screen */ 959 #define KEY_EOL (KEY_OFFSET + 0x4f) /* clear to end of line */ 960 #define KEY_SF (KEY_OFFSET + 0x50) /* scroll 1 line forward */ 961 #define KEY_SR (KEY_OFFSET + 0x51) /* scroll 1 line back (reverse) */ 962 #define KEY_NPAGE (KEY_OFFSET + 0x52) /* next page */ 963 #define KEY_PPAGE (KEY_OFFSET + 0x53) /* previous page */ 964 #define KEY_STAB (KEY_OFFSET + 0x54) /* set tab */ 965 #define KEY_CTAB (KEY_OFFSET + 0x55) /* clear tab */ 966 #define KEY_CATAB (KEY_OFFSET + 0x56) /* clear all tabs */ 967 #define KEY_ENTER (KEY_OFFSET + 0x57) /* enter or send (unreliable) */ 968 #define KEY_SRESET (KEY_OFFSET + 0x58) /* soft/reset (partial/unreliable) */ 969 #define KEY_RESET (KEY_OFFSET + 0x59) /* reset/hard reset (unreliable) */ 970 #define KEY_PRINT (KEY_OFFSET + 0x5a) /* print/copy */ 971 #define KEY_LL (KEY_OFFSET + 0x5b) /* home down/bottom (lower left) */ 972 #define KEY_ABORT (KEY_OFFSET + 0x5c) /* abort/terminate key (any) */ 973 #define KEY_SHELP (KEY_OFFSET + 0x5d) /* short help */ 974 #define KEY_LHELP (KEY_OFFSET + 0x5e) /* long help */ 975 #define KEY_BTAB (KEY_OFFSET + 0x5f) /* Back tab key */ 976 #define KEY_BEG (KEY_OFFSET + 0x60) /* beg(inning) key */ 977 #define KEY_CANCEL (KEY_OFFSET + 0x61) /* cancel key */ 978 #define KEY_CLOSE (KEY_OFFSET + 0x62) /* close key */ 979 #define KEY_COMMAND (KEY_OFFSET + 0x63) /* cmd (command) key */ 980 #define KEY_COPY (KEY_OFFSET + 0x64) /* copy key */ 981 #define KEY_CREATE (KEY_OFFSET + 0x65) /* create key */ 982 #define KEY_END (KEY_OFFSET + 0x66) /* end key */ 983 #define KEY_EXIT (KEY_OFFSET + 0x67) /* exit key */ 984 #define KEY_FIND (KEY_OFFSET + 0x68) /* find key */ 985 #define KEY_HELP (KEY_OFFSET + 0x69) /* help key */ 986 #define KEY_MARK (KEY_OFFSET + 0x6a) /* mark key */ 987 #define KEY_MESSAGE (KEY_OFFSET + 0x6b) /* message key */ 988 #define KEY_MOVE (KEY_OFFSET + 0x6c) /* move key */ 989 #define KEY_NEXT (KEY_OFFSET + 0x6d) /* next object key */ 990 #define KEY_OPEN (KEY_OFFSET + 0x6e) /* open key */ 991 #define KEY_OPTIONS (KEY_OFFSET + 0x6f) /* options key */ 992 #define KEY_PREVIOUS (KEY_OFFSET + 0x70) /* previous object key */ 993 #define KEY_REDO (KEY_OFFSET + 0x71) /* redo key */ 994 #define KEY_REFERENCE (KEY_OFFSET + 0x72) /* ref(erence) key */ 995 #define KEY_REFRESH (KEY_OFFSET + 0x73) /* refresh key */ 996 #define KEY_REPLACE (KEY_OFFSET + 0x74) /* replace key */ 997 #define KEY_RESTART (KEY_OFFSET + 0x75) /* restart key */ 998 #define KEY_RESUME (KEY_OFFSET + 0x76) /* resume key */ 999 #define KEY_SAVE (KEY_OFFSET + 0x77) /* save key */ 1000 #define KEY_SBEG (KEY_OFFSET + 0x78) /* shifted beginning key */ 1001 #define KEY_SCANCEL (KEY_OFFSET + 0x79) /* shifted cancel key */ 1002 #define KEY_SCOMMAND (KEY_OFFSET + 0x7a) /* shifted command key */ 1003 #define KEY_SCOPY (KEY_OFFSET + 0x7b) /* shifted copy key */ 1004 #define KEY_SCREATE (KEY_OFFSET + 0x7c) /* shifted create key */ 1005 #define KEY_SDC (KEY_OFFSET + 0x7d) /* shifted delete char key */ 1006 #define KEY_SDL (KEY_OFFSET + 0x7e) /* shifted delete line key */ 1007 #define KEY_SELECT (KEY_OFFSET + 0x7f) /* select key */ 1008 #define KEY_SEND (KEY_OFFSET + 0x80) /* shifted end key */ 1009 #define KEY_SEOL (KEY_OFFSET + 0x81) /* shifted clear line key */ 1010 #define KEY_SEXIT (KEY_OFFSET + 0x82) /* shifted exit key */ 1011 #define KEY_SFIND (KEY_OFFSET + 0x83) /* shifted find key */ 1012 #define KEY_SHOME (KEY_OFFSET + 0x84) /* shifted home key */ 1013 #define KEY_SIC (KEY_OFFSET + 0x85) /* shifted input key */ 1014 1015 #define KEY_SLEFT (KEY_OFFSET + 0x87) /* shifted left arrow key */ 1016 #define KEY_SMESSAGE (KEY_OFFSET + 0x88) /* shifted message key */ 1017 #define KEY_SMOVE (KEY_OFFSET + 0x89) /* shifted move key */ 1018 #define KEY_SNEXT (KEY_OFFSET + 0x8a) /* shifted next key */ 1019 #define KEY_SOPTIONS (KEY_OFFSET + 0x8b) /* shifted options key */ 1020 #define KEY_SPREVIOUS (KEY_OFFSET + 0x8c) /* shifted prev key */ 1021 #define KEY_SPRINT (KEY_OFFSET + 0x8d) /* shifted print key */ 1022 #define KEY_SREDO (KEY_OFFSET + 0x8e) /* shifted redo key */ 1023 #define KEY_SREPLACE (KEY_OFFSET + 0x8f) /* shifted replace key */ 1024 #define KEY_SRIGHT (KEY_OFFSET + 0x90) /* shifted right arrow */ 1025 #define KEY_SRSUME (KEY_OFFSET + 0x91) /* shifted resume key */ 1026 #define KEY_SSAVE (KEY_OFFSET + 0x92) /* shifted save key */ 1027 #define KEY_SSUSPEND (KEY_OFFSET + 0x93) /* shifted suspend key */ 1028 #define KEY_SUNDO (KEY_OFFSET + 0x94) /* shifted undo key */ 1029 #define KEY_SUSPEND (KEY_OFFSET + 0x95) /* suspend key */ 1030 #define KEY_UNDO (KEY_OFFSET + 0x96) /* undo key */ 1031 1032 /* PDCurses-specific key definitions -- PC only */ 1033 1034 #define ALT_0 (KEY_OFFSET + 0x97) 1035 #define ALT_1 (KEY_OFFSET + 0x98) 1036 #define ALT_2 (KEY_OFFSET + 0x99) 1037 #define ALT_3 (KEY_OFFSET + 0x9a) 1038 #define ALT_4 (KEY_OFFSET + 0x9b) 1039 #define ALT_5 (KEY_OFFSET + 0x9c) 1040 #define ALT_6 (KEY_OFFSET + 0x9d) 1041 #define ALT_7 (KEY_OFFSET + 0x9e) 1042 #define ALT_8 (KEY_OFFSET + 0x9f) 1043 #define ALT_9 (KEY_OFFSET + 0xa0) 1044 #define ALT_A (KEY_OFFSET + 0xa1) 1045 #define ALT_B (KEY_OFFSET + 0xa2) 1046 #define ALT_C (KEY_OFFSET + 0xa3) 1047 #define ALT_D (KEY_OFFSET + 0xa4) 1048 #define ALT_E (KEY_OFFSET + 0xa5) 1049 #define ALT_F (KEY_OFFSET + 0xa6) 1050 #define ALT_G (KEY_OFFSET + 0xa7) 1051 #define ALT_H (KEY_OFFSET + 0xa8) 1052 #define ALT_I (KEY_OFFSET + 0xa9) 1053 #define ALT_J (KEY_OFFSET + 0xaa) 1054 #define ALT_K (KEY_OFFSET + 0xab) 1055 #define ALT_L (KEY_OFFSET + 0xac) 1056 #define ALT_M (KEY_OFFSET + 0xad) 1057 #define ALT_N (KEY_OFFSET + 0xae) 1058 #define ALT_O (KEY_OFFSET + 0xaf) 1059 #define ALT_P (KEY_OFFSET + 0xb0) 1060 #define ALT_Q (KEY_OFFSET + 0xb1) 1061 #define ALT_R (KEY_OFFSET + 0xb2) 1062 #define ALT_S (KEY_OFFSET + 0xb3) 1063 #define ALT_T (KEY_OFFSET + 0xb4) 1064 #define ALT_U (KEY_OFFSET + 0xb5) 1065 #define ALT_V (KEY_OFFSET + 0xb6) 1066 #define ALT_W (KEY_OFFSET + 0xb7) 1067 #define ALT_X (KEY_OFFSET + 0xb8) 1068 #define ALT_Y (KEY_OFFSET + 0xb9) 1069 #define ALT_Z (KEY_OFFSET + 0xba) 1070 1071 #define CTL_LEFT (KEY_OFFSET + 0xbb) /* Control-Left-Arrow */ 1072 #define CTL_RIGHT (KEY_OFFSET + 0xbc) 1073 #define CTL_PGUP (KEY_OFFSET + 0xbd) 1074 #define CTL_PGDN (KEY_OFFSET + 0xbe) 1075 #define CTL_HOME (KEY_OFFSET + 0xbf) 1076 #define CTL_END (KEY_OFFSET + 0xc0) 1077 1078 #define KEY_A1 (KEY_OFFSET + 0xc1) /* upper left on Virtual keypad */ 1079 #define KEY_A2 (KEY_OFFSET + 0xc2) /* upper middle on Virt. keypad */ 1080 #define KEY_A3 (KEY_OFFSET + 0xc3) /* upper right on Vir. keypad */ 1081 #define KEY_B1 (KEY_OFFSET + 0xc4) /* middle left on Virt. keypad */ 1082 #define KEY_B2 (KEY_OFFSET + 0xc5) /* center on Virt. keypad */ 1083 #define KEY_B3 (KEY_OFFSET + 0xc6) /* middle right on Vir. keypad */ 1084 #define KEY_C1 (KEY_OFFSET + 0xc7) /* lower left on Virt. keypad */ 1085 #define KEY_C2 (KEY_OFFSET + 0xc8) /* lower middle on Virt. keypad */ 1086 #define KEY_C3 (KEY_OFFSET + 0xc9) /* lower right on Vir. keypad */ 1087 1088 #define PADSLASH (KEY_OFFSET + 0xca) /* slash on keypad */ 1089 #define PADENTER (KEY_OFFSET + 0xcb) /* enter on keypad */ 1090 #define CTL_PADENTER (KEY_OFFSET + 0xcc) /* ctl-enter on keypad */ 1091 #define ALT_PADENTER (KEY_OFFSET + 0xcd) /* alt-enter on keypad */ 1092 #define PADSTOP (KEY_OFFSET + 0xce) /* stop on keypad */ 1093 #define PADSTAR (KEY_OFFSET + 0xcf) /* star on keypad */ 1094 #define PADMINUS (KEY_OFFSET + 0xd0) /* minus on keypad */ 1095 #define PADPLUS (KEY_OFFSET + 0xd1) /* plus on keypad */ 1096 #define CTL_PADSTOP (KEY_OFFSET + 0xd2) /* ctl-stop on keypad */ 1097 #define CTL_PADCENTER (KEY_OFFSET + 0xd3) /* ctl-enter on keypad */ 1098 #define CTL_PADPLUS (KEY_OFFSET + 0xd4) /* ctl-plus on keypad */ 1099 #define CTL_PADMINUS (KEY_OFFSET + 0xd5) /* ctl-minus on keypad */ 1100 #define CTL_PADSLASH (KEY_OFFSET + 0xd6) /* ctl-slash on keypad */ 1101 #define CTL_PADSTAR (KEY_OFFSET + 0xd7) /* ctl-star on keypad */ 1102 #define ALT_PADPLUS (KEY_OFFSET + 0xd8) /* alt-plus on keypad */ 1103 #define ALT_PADMINUS (KEY_OFFSET + 0xd9) /* alt-minus on keypad */ 1104 #define ALT_PADSLASH (KEY_OFFSET + 0xda) /* alt-slash on keypad */ 1105 #define ALT_PADSTAR (KEY_OFFSET + 0xdb) /* alt-star on keypad */ 1106 #define ALT_PADSTOP (KEY_OFFSET + 0xdc) /* alt-stop on keypad */ 1107 #define CTL_INS (KEY_OFFSET + 0xdd) /* ctl-insert */ 1108 #define ALT_DEL (KEY_OFFSET + 0xde) /* alt-delete */ 1109 #define ALT_INS (KEY_OFFSET + 0xdf) /* alt-insert */ 1110 #define CTL_UP (KEY_OFFSET + 0xe0) /* ctl-up arrow */ 1111 #define CTL_DOWN (KEY_OFFSET + 0xe1) /* ctl-down arrow */ 1112 #define CTL_TAB (KEY_OFFSET + 0xe2) /* ctl-tab */ 1113 #define ALT_TAB (KEY_OFFSET + 0xe3) 1114 #define ALT_MINUS (KEY_OFFSET + 0xe4) 1115 #define ALT_EQUAL (KEY_OFFSET + 0xe5) 1116 #define ALT_HOME (KEY_OFFSET + 0xe6) 1117 #define ALT_PGUP (KEY_OFFSET + 0xe7) 1118 #define ALT_PGDN (KEY_OFFSET + 0xe8) 1119 #define ALT_END (KEY_OFFSET + 0xe9) 1120 #define ALT_UP (KEY_OFFSET + 0xea) /* alt-up arrow */ 1121 #define ALT_DOWN (KEY_OFFSET + 0xeb) /* alt-down arrow */ 1122 #define ALT_RIGHT (KEY_OFFSET + 0xec) /* alt-right arrow */ 1123 #define ALT_LEFT (KEY_OFFSET + 0xed) /* alt-left arrow */ 1124 #define ALT_ENTER (KEY_OFFSET + 0xee) /* alt-enter */ 1125 #define ALT_ESC (KEY_OFFSET + 0xef) /* alt-escape */ 1126 #define ALT_BQUOTE (KEY_OFFSET + 0xf0) /* alt-back quote */ 1127 #define ALT_LBRACKET (KEY_OFFSET + 0xf1) /* alt-left bracket */ 1128 #define ALT_RBRACKET (KEY_OFFSET + 0xf2) /* alt-right bracket */ 1129 #define ALT_SEMICOLON (KEY_OFFSET + 0xf3) /* alt-semi-colon */ 1130 #define ALT_FQUOTE (KEY_OFFSET + 0xf4) /* alt-forward quote */ 1131 #define ALT_COMMA (KEY_OFFSET + 0xf5) /* alt-comma */ 1132 #define ALT_STOP (KEY_OFFSET + 0xf6) /* alt-stop */ 1133 #define ALT_FSLASH (KEY_OFFSET + 0xf7) /* alt-forward slash */ 1134 #define ALT_BKSP (KEY_OFFSET + 0xf8) /* alt-backspace */ 1135 #define CTL_BKSP (KEY_OFFSET + 0xf9) /* ctl-backspace */ 1136 #define PAD0 (KEY_OFFSET + 0xfa) /* keypad 0 */ 1137 1138 #define CTL_PAD0 (KEY_OFFSET + 0xfb) /* ctl-keypad 0 */ 1139 #define CTL_PAD1 (KEY_OFFSET + 0xfc) 1140 #define CTL_PAD2 (KEY_OFFSET + 0xfd) 1141 #define CTL_PAD3 (KEY_OFFSET + 0xfe) 1142 #define CTL_PAD4 (KEY_OFFSET + 0xff) 1143 #define CTL_PAD5 (KEY_OFFSET + 0x100) 1144 #define CTL_PAD6 (KEY_OFFSET + 0x101) 1145 #define CTL_PAD7 (KEY_OFFSET + 0x102) 1146 #define CTL_PAD8 (KEY_OFFSET + 0x103) 1147 #define CTL_PAD9 (KEY_OFFSET + 0x104) 1148 1149 #define ALT_PAD0 (KEY_OFFSET + 0x105) /* alt-keypad 0 */ 1150 #define ALT_PAD1 (KEY_OFFSET + 0x106) 1151 #define ALT_PAD2 (KEY_OFFSET + 0x107) 1152 #define ALT_PAD3 (KEY_OFFSET + 0x108) 1153 #define ALT_PAD4 (KEY_OFFSET + 0x109) 1154 #define ALT_PAD5 (KEY_OFFSET + 0x10a) 1155 #define ALT_PAD6 (KEY_OFFSET + 0x10b) 1156 #define ALT_PAD7 (KEY_OFFSET + 0x10c) 1157 #define ALT_PAD8 (KEY_OFFSET + 0x10d) 1158 #define ALT_PAD9 (KEY_OFFSET + 0x10e) 1159 1160 #define CTL_DEL (KEY_OFFSET + 0x10f) /* clt-delete */ 1161 #define ALT_BSLASH (KEY_OFFSET + 0x110) /* alt-back slash */ 1162 #define CTL_ENTER (KEY_OFFSET + 0x111) /* ctl-enter */ 1163 1164 #define SHF_PADENTER (KEY_OFFSET + 0x112) /* shift-enter on keypad */ 1165 #define SHF_PADSLASH (KEY_OFFSET + 0x113) /* shift-slash on keypad */ 1166 #define SHF_PADSTAR (KEY_OFFSET + 0x114) /* shift-star on keypad */ 1167 #define SHF_PADPLUS (KEY_OFFSET + 0x115) /* shift-plus on keypad */ 1168 #define SHF_PADMINUS (KEY_OFFSET + 0x116) /* shift-minus on keypad */ 1169 #define SHF_UP (KEY_OFFSET + 0x117) /* shift-up on keypad */ 1170 #define SHF_DOWN (KEY_OFFSET + 0x118) /* shift-down on keypad */ 1171 #define SHF_IC (KEY_OFFSET + 0x119) /* shift-insert on keypad */ 1172 #define SHF_DC (KEY_OFFSET + 0x11a) /* shift-delete on keypad */ 1173 1174 #define KEY_MOUSE (KEY_OFFSET + 0x11b) /* "mouse" key */ 1175 #define KEY_SHIFT_L (KEY_OFFSET + 0x11c) /* Left-shift */ 1176 #define KEY_SHIFT_R (KEY_OFFSET + 0x11d) /* Right-shift */ 1177 #define KEY_CONTROL_L (KEY_OFFSET + 0x11e) /* Left-control */ 1178 #define KEY_CONTROL_R (KEY_OFFSET + 0x11f) /* Right-control */ 1179 #define KEY_ALT_L (KEY_OFFSET + 0x120) /* Left-alt */ 1180 #define KEY_ALT_R (KEY_OFFSET + 0x121) /* Right-alt */ 1181 #define KEY_RESIZE (KEY_OFFSET + 0x122) /* Window resize */ 1182 #define KEY_SUP (KEY_OFFSET + 0x123) /* Shifted up arrow */ 1183 #define KEY_SDOWN (KEY_OFFSET + 0x124) /* Shifted down arrow */ 1184 1185 /* The following were added 2011 Sep 14, and are */ 1186 /* not returned by most flavors of PDCurses: */ 1187 1188 #define CTL_SEMICOLON (KEY_OFFSET + 0x125) 1189 #define CTL_EQUAL (KEY_OFFSET + 0x126) 1190 #define CTL_COMMA (KEY_OFFSET + 0x127) 1191 #define CTL_MINUS (KEY_OFFSET + 0x128) 1192 #define CTL_STOP (KEY_OFFSET + 0x129) 1193 #define CTL_FSLASH (KEY_OFFSET + 0x12a) 1194 #define CTL_BQUOTE (KEY_OFFSET + 0x12b) 1195 1196 #define KEY_APPS (KEY_OFFSET + 0x12c) 1197 #define KEY_SAPPS (KEY_OFFSET + 0x12d) 1198 #define CTL_APPS (KEY_OFFSET + 0x12e) 1199 #define ALT_APPS (KEY_OFFSET + 0x12f) 1200 1201 #define KEY_PAUSE (KEY_OFFSET + 0x130) 1202 #define KEY_SPAUSE (KEY_OFFSET + 0x131) 1203 #define CTL_PAUSE (KEY_OFFSET + 0x132) 1204 1205 #define KEY_PRINTSCREEN (KEY_OFFSET + 0x133) 1206 #define ALT_PRINTSCREEN (KEY_OFFSET + 0x134) 1207 #define KEY_SCROLLLOCK (KEY_OFFSET + 0x135) 1208 #define ALT_SCROLLLOCK (KEY_OFFSET + 0x136) 1209 1210 #define CTL_0 (KEY_OFFSET + 0x137) 1211 #define CTL_1 (KEY_OFFSET + 0x138) 1212 #define CTL_2 (KEY_OFFSET + 0x139) 1213 #define CTL_3 (KEY_OFFSET + 0x13a) 1214 #define CTL_4 (KEY_OFFSET + 0x13b) 1215 #define CTL_5 (KEY_OFFSET + 0x13c) 1216 #define CTL_6 (KEY_OFFSET + 0x13d) 1217 #define CTL_7 (KEY_OFFSET + 0x13e) 1218 #define CTL_8 (KEY_OFFSET + 0x13f) 1219 #define CTL_9 (KEY_OFFSET + 0x140) 1220 1221 #define KEY_BROWSER_BACK (KEY_OFFSET + 0x141) 1222 #define KEY_SBROWSER_BACK (KEY_OFFSET + 0x142) 1223 #define KEY_CBROWSER_BACK (KEY_OFFSET + 0x143) 1224 #define KEY_ABROWSER_BACK (KEY_OFFSET + 0x144) 1225 #define KEY_BROWSER_FWD (KEY_OFFSET + 0x145) 1226 #define KEY_SBROWSER_FWD (KEY_OFFSET + 0x146) 1227 #define KEY_CBROWSER_FWD (KEY_OFFSET + 0x147) 1228 #define KEY_ABROWSER_FWD (KEY_OFFSET + 0x148) 1229 #define KEY_BROWSER_REF (KEY_OFFSET + 0x149) 1230 #define KEY_SBROWSER_REF (KEY_OFFSET + 0x14A) 1231 #define KEY_CBROWSER_REF (KEY_OFFSET + 0x14B) 1232 #define KEY_ABROWSER_REF (KEY_OFFSET + 0x14C) 1233 #define KEY_BROWSER_STOP (KEY_OFFSET + 0x14D) 1234 #define KEY_SBROWSER_STOP (KEY_OFFSET + 0x14E) 1235 #define KEY_CBROWSER_STOP (KEY_OFFSET + 0x14F) 1236 #define KEY_ABROWSER_STOP (KEY_OFFSET + 0x150) 1237 #define KEY_SEARCH (KEY_OFFSET + 0x151) 1238 #define KEY_SSEARCH (KEY_OFFSET + 0x152) 1239 #define KEY_CSEARCH (KEY_OFFSET + 0x153) 1240 #define KEY_ASEARCH (KEY_OFFSET + 0x154) 1241 #define KEY_FAVORITES (KEY_OFFSET + 0x155) 1242 #define KEY_SFAVORITES (KEY_OFFSET + 0x156) 1243 #define KEY_CFAVORITES (KEY_OFFSET + 0x157) 1244 #define KEY_AFAVORITES (KEY_OFFSET + 0x158) 1245 #define KEY_BROWSER_HOME (KEY_OFFSET + 0x159) 1246 #define KEY_SBROWSER_HOME (KEY_OFFSET + 0x15A) 1247 #define KEY_CBROWSER_HOME (KEY_OFFSET + 0x15B) 1248 #define KEY_ABROWSER_HOME (KEY_OFFSET + 0x15C) 1249 #define KEY_VOLUME_MUTE (KEY_OFFSET + 0x15D) 1250 #define KEY_SVOLUME_MUTE (KEY_OFFSET + 0x15E) 1251 #define KEY_CVOLUME_MUTE (KEY_OFFSET + 0x15F) 1252 #define KEY_AVOLUME_MUTE (KEY_OFFSET + 0x160) 1253 #define KEY_VOLUME_DOWN (KEY_OFFSET + 0x161) 1254 #define KEY_SVOLUME_DOWN (KEY_OFFSET + 0x162) 1255 #define KEY_CVOLUME_DOWN (KEY_OFFSET + 0x163) 1256 #define KEY_AVOLUME_DOWN (KEY_OFFSET + 0x164) 1257 #define KEY_VOLUME_UP (KEY_OFFSET + 0x165) 1258 #define KEY_SVOLUME_UP (KEY_OFFSET + 0x166) 1259 #define KEY_CVOLUME_UP (KEY_OFFSET + 0x167) 1260 #define KEY_AVOLUME_UP (KEY_OFFSET + 0x168) 1261 #define KEY_NEXT_TRACK (KEY_OFFSET + 0x169) 1262 #define KEY_SNEXT_TRACK (KEY_OFFSET + 0x16A) 1263 #define KEY_CNEXT_TRACK (KEY_OFFSET + 0x16B) 1264 #define KEY_ANEXT_TRACK (KEY_OFFSET + 0x16C) 1265 #define KEY_PREV_TRACK (KEY_OFFSET + 0x16D) 1266 #define KEY_SPREV_TRACK (KEY_OFFSET + 0x16E) 1267 #define KEY_CPREV_TRACK (KEY_OFFSET + 0x16F) 1268 #define KEY_APREV_TRACK (KEY_OFFSET + 0x170) 1269 #define KEY_MEDIA_STOP (KEY_OFFSET + 0x171) 1270 #define KEY_SMEDIA_STOP (KEY_OFFSET + 0x172) 1271 #define KEY_CMEDIA_STOP (KEY_OFFSET + 0x173) 1272 #define KEY_AMEDIA_STOP (KEY_OFFSET + 0x174) 1273 #define KEY_PLAY_PAUSE (KEY_OFFSET + 0x175) 1274 #define KEY_SPLAY_PAUSE (KEY_OFFSET + 0x176) 1275 #define KEY_CPLAY_PAUSE (KEY_OFFSET + 0x177) 1276 #define KEY_APLAY_PAUSE (KEY_OFFSET + 0x178) 1277 #define KEY_LAUNCH_MAIL (KEY_OFFSET + 0x179) 1278 #define KEY_SLAUNCH_MAIL (KEY_OFFSET + 0x17A) 1279 #define KEY_CLAUNCH_MAIL (KEY_OFFSET + 0x17B) 1280 #define KEY_ALAUNCH_MAIL (KEY_OFFSET + 0x17C) 1281 #define KEY_MEDIA_SELECT (KEY_OFFSET + 0x17D) 1282 #define KEY_SMEDIA_SELECT (KEY_OFFSET + 0x17E) 1283 #define KEY_CMEDIA_SELECT (KEY_OFFSET + 0x17F) 1284 #define KEY_AMEDIA_SELECT (KEY_OFFSET + 0x180) 1285 #define KEY_LAUNCH_APP1 (KEY_OFFSET + 0x181) 1286 #define KEY_SLAUNCH_APP1 (KEY_OFFSET + 0x182) 1287 #define KEY_CLAUNCH_APP1 (KEY_OFFSET + 0x183) 1288 #define KEY_ALAUNCH_APP1 (KEY_OFFSET + 0x184) 1289 #define KEY_LAUNCH_APP2 (KEY_OFFSET + 0x185) 1290 #define KEY_SLAUNCH_APP2 (KEY_OFFSET + 0x186) 1291 #define KEY_CLAUNCH_APP2 (KEY_OFFSET + 0x187) 1292 #define KEY_ALAUNCH_APP2 (KEY_OFFSET + 0x188) 1293 1294 #define KEY_MIN KEY_BREAK /* Minimum curses key value */ 1295 #define KEY_MAX KEY_ALAUNCH_APP2 /* Maximum curses key */ 1296 1297 #define KEY_F(n) (KEY_F0 + (n)) 1298 1299 /*---------------------------------------------------------------------- 1300 * 1301 * PDCurses Function Declarations 1302 * 1303 */ 1304 1305 /* Standard */ 1306 1307 PDCEX int addch(const chtype); 1308 PDCEX int addchnstr(const chtype *, int); 1309 PDCEX int addchstr(const chtype *); 1310 PDCEX int addnstr(const char *, int); 1311 PDCEX int addstr(const char *); 1312 PDCEX int attroff(chtype); 1313 PDCEX int attron(chtype); 1314 PDCEX int attrset(chtype); 1315 PDCEX int attr_get(attr_t *, short *, void *); 1316 PDCEX int attr_off(attr_t, void *); 1317 PDCEX int attr_on(attr_t, void *); 1318 PDCEX int attr_set(attr_t, short, void *); 1319 PDCEX int baudrate(void); 1320 PDCEX int beep(void); 1321 PDCEX int bkgd(chtype); 1322 PDCEX void bkgdset(chtype); 1323 PDCEX int border(chtype, chtype, chtype, chtype, chtype, chtype, chtype, chtype); 1324 PDCEX int box(WINDOW *, chtype, chtype); 1325 PDCEX bool can_change_color(void); 1326 PDCEX int cbreak(void); 1327 PDCEX int chgat(int, attr_t, short, const void *); 1328 PDCEX int clearok(WINDOW *, bool); 1329 PDCEX int clear(void); 1330 PDCEX int clrtobot(void); 1331 PDCEX int clrtoeol(void); 1332 PDCEX int color_content(short, short *, short *, short *); 1333 PDCEX int color_set(short, void *); 1334 PDCEX int copywin(const WINDOW *, WINDOW *, int, int, int, int, int, int, int); 1335 PDCEX int curs_set(int); 1336 PDCEX int def_prog_mode(void); 1337 PDCEX int def_shell_mode(void); 1338 PDCEX int delay_output(int); 1339 PDCEX int delch(void); 1340 PDCEX int deleteln(void); 1341 PDCEX void delscreen(SCREEN *); 1342 PDCEX int delwin(WINDOW *); 1343 PDCEX WINDOW *derwin(WINDOW *, int, int, int, int); 1344 PDCEX int doupdate(void); 1345 PDCEX WINDOW *dupwin(WINDOW *); 1346 PDCEX int echochar(const chtype); 1347 PDCEX int echo(void); 1348 PDCEX int endwin(void); 1349 PDCEX char erasechar(void); 1350 PDCEX int erase(void); 1351 PDCEX void filter(void); 1352 PDCEX int flash(void); 1353 PDCEX int flushinp(void); 1354 PDCEX chtype getbkgd(WINDOW *); 1355 PDCEX int getnstr(char *, int); 1356 PDCEX int getstr(char *); 1357 PDCEX WINDOW *getwin(FILE *); 1358 PDCEX int halfdelay(int); 1359 PDCEX bool has_colors(void); 1360 PDCEX bool has_ic(void); 1361 PDCEX bool has_il(void); 1362 PDCEX int hline(chtype, int); 1363 PDCEX void idcok(WINDOW *, bool); 1364 PDCEX int idlok(WINDOW *, bool); 1365 PDCEX void immedok(WINDOW *, bool); 1366 PDCEX int inchnstr(chtype *, int); 1367 PDCEX int inchstr(chtype *); 1368 PDCEX chtype inch(void); 1369 PDCEX int init_color(short, short, short, short); 1370 PDCEX int init_pair(short, short, short); 1371 PDCEX WINDOW *initscr(void); 1372 PDCEX int innstr(char *, int); 1373 PDCEX int insch(chtype); 1374 PDCEX int insdelln(int); 1375 PDCEX int insertln(void); 1376 PDCEX int insnstr(const char *, int); 1377 PDCEX int insstr(const char *); 1378 PDCEX int instr(char *); 1379 PDCEX int intrflush(WINDOW *, bool); 1380 PDCEX bool isendwin(void); 1381 PDCEX bool is_linetouched(WINDOW *, int); 1382 PDCEX bool is_wintouched(WINDOW *); 1383 PDCEX char *keyname(int); 1384 PDCEX int keypad(WINDOW *, bool); 1385 PDCEX char killchar(void); 1386 PDCEX int leaveok(WINDOW *, bool); 1387 PDCEX char *longname(void); 1388 PDCEX int meta(WINDOW *, bool); 1389 PDCEX int move(int, int); 1390 PDCEX int mvaddch(int, int, const chtype); 1391 PDCEX int mvaddchnstr(int, int, const chtype *, int); 1392 PDCEX int mvaddchstr(int, int, const chtype *); 1393 PDCEX int mvaddnstr(int, int, const char *, int); 1394 PDCEX int mvaddstr(int, int, const char *); 1395 PDCEX int mvchgat(int, int, int, attr_t, short, const void *); 1396 PDCEX int mvcur(int, int, int, int); 1397 PDCEX int mvdelch(int, int); 1398 PDCEX int mvderwin(WINDOW *, int, int); 1399 PDCEX int mvgetch(int, int); 1400 PDCEX int mvgetnstr(int, int, char *, int); 1401 PDCEX int mvgetstr(int, int, char *); 1402 PDCEX int mvhline(int, int, chtype, int); 1403 PDCEX chtype mvinch(int, int); 1404 PDCEX int mvinchnstr(int, int, chtype *, int); 1405 PDCEX int mvinchstr(int, int, chtype *); 1406 PDCEX int mvinnstr(int, int, char *, int); 1407 PDCEX int mvinsch(int, int, chtype); 1408 PDCEX int mvinsnstr(int, int, const char *, int); 1409 PDCEX int mvinsstr(int, int, const char *); 1410 PDCEX int mvinstr(int, int, char *); 1411 PDCEX int mvprintw(int, int, const char *, ...); 1412 PDCEX int mvscanw(int, int, const char *, ...); 1413 PDCEX int mvvline(int, int, chtype, int); 1414 PDCEX int mvwaddchnstr(WINDOW *, int, int, const chtype *, int); 1415 PDCEX int mvwaddchstr(WINDOW *, int, int, const chtype *); 1416 PDCEX int mvwaddch(WINDOW *, int, int, const chtype); 1417 PDCEX int mvwaddnstr(WINDOW *, int, int, const char *, int); 1418 PDCEX int mvwaddstr(WINDOW *, int, int, const char *); 1419 PDCEX int mvwchgat(WINDOW *, int, int, int, attr_t, short, const void *); 1420 PDCEX int mvwdelch(WINDOW *, int, int); 1421 PDCEX int mvwgetch(WINDOW *, int, int); 1422 PDCEX int mvwgetnstr(WINDOW *, int, int, char *, int); 1423 PDCEX int mvwgetstr(WINDOW *, int, int, char *); 1424 PDCEX int mvwhline(WINDOW *, int, int, chtype, int); 1425 PDCEX int mvwinchnstr(WINDOW *, int, int, chtype *, int); 1426 PDCEX int mvwinchstr(WINDOW *, int, int, chtype *); 1427 PDCEX chtype mvwinch(WINDOW *, int, int); 1428 PDCEX int mvwinnstr(WINDOW *, int, int, char *, int); 1429 PDCEX int mvwinsch(WINDOW *, int, int, chtype); 1430 PDCEX int mvwinsnstr(WINDOW *, int, int, const char *, int); 1431 PDCEX int mvwinsstr(WINDOW *, int, int, const char *); 1432 PDCEX int mvwinstr(WINDOW *, int, int, char *); 1433 PDCEX int mvwin(WINDOW *, int, int); 1434 PDCEX int mvwprintw(WINDOW *, int, int, const char *, ...); 1435 PDCEX int mvwscanw(WINDOW *, int, int, const char *, ...); 1436 PDCEX int mvwvline(WINDOW *, int, int, chtype, int); 1437 PDCEX int napms(int); 1438 PDCEX WINDOW *newpad(int, int); 1439 PDCEX SCREEN *newterm(const char *, FILE *, FILE *); 1440 PDCEX WINDOW *newwin(int, int, int, int); 1441 PDCEX int nl(void); 1442 PDCEX int nocbreak(void); 1443 PDCEX int nodelay(WINDOW *, bool); 1444 PDCEX int noecho(void); 1445 PDCEX int nonl(void); 1446 PDCEX void noqiflush(void); 1447 PDCEX int noraw(void); 1448 PDCEX int notimeout(WINDOW *, bool); 1449 PDCEX int overlay(const WINDOW *, WINDOW *); 1450 PDCEX int overwrite(const WINDOW *, WINDOW *); 1451 PDCEX int pair_content(short, short *, short *); 1452 PDCEX int pechochar(WINDOW *, chtype); 1453 PDCEX int pnoutrefresh(WINDOW *, int, int, int, int, int, int); 1454 PDCEX int prefresh(WINDOW *, int, int, int, int, int, int); 1455 PDCEX int printw(const char *, ...); 1456 PDCEX int putwin(WINDOW *, FILE *); 1457 PDCEX void qiflush(void); 1458 PDCEX int raw(void); 1459 PDCEX int redrawwin(WINDOW *); 1460 PDCEX int refresh(void); 1461 PDCEX int reset_prog_mode(void); 1462 PDCEX int reset_shell_mode(void); 1463 PDCEX int resetty(void); 1464 PDCEX int ripoffline(int, int (*)(WINDOW *, int)); 1465 PDCEX int savetty(void); 1466 PDCEX int scanw(const char *, ...); 1467 PDCEX int scr_dump(const char *); 1468 PDCEX int scr_init(const char *); 1469 PDCEX int scr_restore(const char *); 1470 PDCEX int scr_set(const char *); 1471 PDCEX int scrl(int); 1472 PDCEX int scroll(WINDOW *); 1473 PDCEX int scrollok(WINDOW *, bool); 1474 PDCEX SCREEN *set_term(SCREEN *); 1475 PDCEX int setscrreg(int, int); 1476 PDCEX int slk_attroff(const chtype); 1477 PDCEX int slk_attr_off(const attr_t, void *); 1478 PDCEX int slk_attron(const chtype); 1479 PDCEX int slk_attr_on(const attr_t, void *); 1480 PDCEX int slk_attrset(const chtype); 1481 PDCEX int slk_attr_set(const attr_t, short, void *); 1482 PDCEX int slk_clear(void); 1483 PDCEX int slk_color(short); 1484 PDCEX int slk_init(int); 1485 PDCEX char *slk_label(int); 1486 PDCEX int slk_noutrefresh(void); 1487 PDCEX int slk_refresh(void); 1488 PDCEX int slk_restore(void); 1489 PDCEX int slk_set(int, const char *, int); 1490 PDCEX int slk_touch(void); 1491 PDCEX int standend(void); 1492 PDCEX int standout(void); 1493 PDCEX int start_color(void); 1494 PDCEX WINDOW *subpad(WINDOW *, int, int, int, int); 1495 PDCEX WINDOW *subwin(WINDOW *, int, int, int, int); 1496 PDCEX int syncok(WINDOW *, bool); 1497 PDCEX chtype termattrs(void); 1498 PDCEX attr_t term_attrs(void); 1499 PDCEX char *termname(void); 1500 PDCEX void timeout(int); 1501 PDCEX int touchline(WINDOW *, int, int); 1502 PDCEX int touchwin(WINDOW *); 1503 PDCEX int typeahead(int); 1504 PDCEX int untouchwin(WINDOW *); 1505 PDCEX void use_env(bool); 1506 PDCEX int vidattr(chtype); 1507 PDCEX int vid_attr(attr_t, short, void *); 1508 PDCEX int vidputs(chtype, int (*)(int)); 1509 PDCEX int vid_puts(attr_t, short, void *, int (*)(int)); 1510 PDCEX int vline(chtype, int); 1511 PDCEX int vw_printw(WINDOW *, const char *, va_list); 1512 PDCEX int vwprintw(WINDOW *, const char *, va_list); 1513 PDCEX int vw_scanw(WINDOW *, const char *, va_list); 1514 PDCEX int vwscanw(WINDOW *, const char *, va_list); 1515 PDCEX int waddchnstr(WINDOW *, const chtype *, int); 1516 PDCEX int waddchstr(WINDOW *, const chtype *); 1517 PDCEX int waddch(WINDOW *, const chtype); 1518 PDCEX int waddnstr(WINDOW *, const char *, int); 1519 PDCEX int waddstr(WINDOW *, const char *); 1520 PDCEX int wattroff(WINDOW *, chtype); 1521 PDCEX int wattron(WINDOW *, chtype); 1522 PDCEX int wattrset(WINDOW *, chtype); 1523 PDCEX int wattr_get(WINDOW *, attr_t *, short *, void *); 1524 PDCEX int wattr_off(WINDOW *, attr_t, void *); 1525 PDCEX int wattr_on(WINDOW *, attr_t, void *); 1526 PDCEX int wattr_set(WINDOW *, attr_t, short, void *); 1527 PDCEX void wbkgdset(WINDOW *, chtype); 1528 PDCEX int wbkgd(WINDOW *, chtype); 1529 PDCEX int wborder(WINDOW *, chtype, chtype, chtype, chtype, 1530 chtype, chtype, chtype, chtype); 1531 PDCEX int wchgat(WINDOW *, int, attr_t, short, const void *); 1532 PDCEX int wclear(WINDOW *); 1533 PDCEX int wclrtobot(WINDOW *); 1534 PDCEX int wclrtoeol(WINDOW *); 1535 PDCEX int wcolor_set(WINDOW *, short, void *); 1536 PDCEX void wcursyncup(WINDOW *); 1537 PDCEX int wdelch(WINDOW *); 1538 PDCEX int wdeleteln(WINDOW *); 1539 PDCEX int wechochar(WINDOW *, const chtype); 1540 PDCEX int werase(WINDOW *); 1541 PDCEX int wgetch(WINDOW *); 1542 PDCEX int wgetnstr(WINDOW *, char *, int); 1543 PDCEX int wgetstr(WINDOW *, char *); 1544 PDCEX int whline(WINDOW *, chtype, int); 1545 PDCEX int winchnstr(WINDOW *, chtype *, int); 1546 PDCEX int winchstr(WINDOW *, chtype *); 1547 PDCEX chtype winch(WINDOW *); 1548 PDCEX int winnstr(WINDOW *, char *, int); 1549 PDCEX int winsch(WINDOW *, chtype); 1550 PDCEX int winsdelln(WINDOW *, int); 1551 PDCEX int winsertln(WINDOW *); 1552 PDCEX int winsnstr(WINDOW *, const char *, int); 1553 PDCEX int winsstr(WINDOW *, const char *); 1554 PDCEX int winstr(WINDOW *, char *); 1555 PDCEX int wmove(WINDOW *, int, int); 1556 PDCEX int wnoutrefresh(WINDOW *); 1557 PDCEX int wprintw(WINDOW *, const char *, ...); 1558 PDCEX int wredrawln(WINDOW *, int, int); 1559 PDCEX int wrefresh(WINDOW *); 1560 PDCEX int wscanw(WINDOW *, const char *, ...); 1561 PDCEX int wscrl(WINDOW *, int); 1562 PDCEX int wsetscrreg(WINDOW *, int, int); 1563 PDCEX int wstandend(WINDOW *); 1564 PDCEX int wstandout(WINDOW *); 1565 PDCEX void wsyncdown(WINDOW *); 1566 PDCEX void wsyncup(WINDOW *); 1567 PDCEX void wtimeout(WINDOW *, int); 1568 PDCEX int wtouchln(WINDOW *, int, int, int); 1569 PDCEX int wvline(WINDOW *, chtype, int); 1570 1571 /* Wide-character functions */ 1572 1573 #ifdef PDC_WIDE 1574 PDCEX int addnwstr(const wchar_t *, int); 1575 PDCEX int addwstr(const wchar_t *); 1576 PDCEX int add_wch(const cchar_t *); 1577 PDCEX int add_wchnstr(const cchar_t *, int); 1578 PDCEX int add_wchstr(const cchar_t *); 1579 PDCEX int border_set(const cchar_t *, const cchar_t *, const cchar_t *, 1580 const cchar_t *, const cchar_t *, const cchar_t *, 1581 const cchar_t *, const cchar_t *); 1582 PDCEX int box_set(WINDOW *, const cchar_t *, const cchar_t *); 1583 PDCEX int echo_wchar(const cchar_t *); 1584 PDCEX int erasewchar(wchar_t *); 1585 PDCEX int getbkgrnd(cchar_t *); 1586 PDCEX int getcchar(const cchar_t *, wchar_t *, attr_t *, short *, void *); 1587 PDCEX int getn_wstr(wint_t *, int); 1588 PDCEX int get_wch(wint_t *); 1589 PDCEX int get_wstr(wint_t *); 1590 PDCEX int hline_set(const cchar_t *, int); 1591 PDCEX int innwstr(wchar_t *, int); 1592 PDCEX int ins_nwstr(const wchar_t *, int); 1593 PDCEX int ins_wch(const cchar_t *); 1594 PDCEX int ins_wstr(const wchar_t *); 1595 PDCEX int inwstr(wchar_t *); 1596 PDCEX int in_wch(cchar_t *); 1597 PDCEX int in_wchnstr(cchar_t *, int); 1598 PDCEX int in_wchstr(cchar_t *); 1599 PDCEX char *key_name(wchar_t); 1600 PDCEX int killwchar(wchar_t *); 1601 PDCEX int mvaddnwstr(int, int, const wchar_t *, int); 1602 PDCEX int mvaddwstr(int, int, const wchar_t *); 1603 PDCEX int mvadd_wch(int, int, const cchar_t *); 1604 PDCEX int mvadd_wchnstr(int, int, const cchar_t *, int); 1605 PDCEX int mvadd_wchstr(int, int, const cchar_t *); 1606 PDCEX int mvgetn_wstr(int, int, wint_t *, int); 1607 PDCEX int mvget_wch(int, int, wint_t *); 1608 PDCEX int mvget_wstr(int, int, wint_t *); 1609 PDCEX int mvhline_set(int, int, const cchar_t *, int); 1610 PDCEX int mvinnwstr(int, int, wchar_t *, int); 1611 PDCEX int mvins_nwstr(int, int, const wchar_t *, int); 1612 PDCEX int mvins_wch(int, int, const cchar_t *); 1613 PDCEX int mvins_wstr(int, int, const wchar_t *); 1614 PDCEX int mvinwstr(int, int, wchar_t *); 1615 PDCEX int mvin_wch(int, int, cchar_t *); 1616 PDCEX int mvin_wchnstr(int, int, cchar_t *, int); 1617 PDCEX int mvin_wchstr(int, int, cchar_t *); 1618 PDCEX int mvvline_set(int, int, const cchar_t *, int); 1619 PDCEX int mvwaddnwstr(WINDOW *, int, int, const wchar_t *, int); 1620 PDCEX int mvwaddwstr(WINDOW *, int, int, const wchar_t *); 1621 PDCEX int mvwadd_wch(WINDOW *, int, int, const cchar_t *); 1622 PDCEX int mvwadd_wchnstr(WINDOW *, int, int, const cchar_t *, int); 1623 PDCEX int mvwadd_wchstr(WINDOW *, int, int, const cchar_t *); 1624 PDCEX int mvwgetn_wstr(WINDOW *, int, int, wint_t *, int); 1625 PDCEX int mvwget_wch(WINDOW *, int, int, wint_t *); 1626 PDCEX int mvwget_wstr(WINDOW *, int, int, wint_t *); 1627 PDCEX int mvwhline_set(WINDOW *, int, int, const cchar_t *, int); 1628 PDCEX int mvwinnwstr(WINDOW *, int, int, wchar_t *, int); 1629 PDCEX int mvwins_nwstr(WINDOW *, int, int, const wchar_t *, int); 1630 PDCEX int mvwins_wch(WINDOW *, int, int, const cchar_t *); 1631 PDCEX int mvwins_wstr(WINDOW *, int, int, const wchar_t *); 1632 PDCEX int mvwin_wch(WINDOW *, int, int, cchar_t *); 1633 PDCEX int mvwin_wchnstr(WINDOW *, int, int, cchar_t *, int); 1634 PDCEX int mvwin_wchstr(WINDOW *, int, int, cchar_t *); 1635 PDCEX int mvwinwstr(WINDOW *, int, int, wchar_t *); 1636 PDCEX int mvwvline_set(WINDOW *, int, int, const cchar_t *, int); 1637 PDCEX int pecho_wchar(WINDOW *, const cchar_t*); 1638 PDCEX int setcchar(cchar_t*, const wchar_t*, const attr_t, short, const void*); 1639 PDCEX int slk_wset(int, const wchar_t *, int); 1640 PDCEX int unget_wch(const wchar_t); 1641 PDCEX int vline_set(const cchar_t *, int); 1642 PDCEX int waddnwstr(WINDOW *, const wchar_t *, int); 1643 PDCEX int waddwstr(WINDOW *, const wchar_t *); 1644 PDCEX int wadd_wch(WINDOW *, const cchar_t *); 1645 PDCEX int wadd_wchnstr(WINDOW *, const cchar_t *, int); 1646 PDCEX int wadd_wchstr(WINDOW *, const cchar_t *); 1647 PDCEX int wbkgrnd(WINDOW *, const cchar_t *); 1648 PDCEX void wbkgrndset(WINDOW *, const cchar_t *); 1649 PDCEX int wborder_set(WINDOW *, const cchar_t *, const cchar_t *, 1650 const cchar_t *, const cchar_t *, const cchar_t *, 1651 const cchar_t *, const cchar_t *, const cchar_t *); 1652 PDCEX int wecho_wchar(WINDOW *, const cchar_t *); 1653 PDCEX int wgetbkgrnd(WINDOW *, cchar_t *); 1654 PDCEX int wgetn_wstr(WINDOW *, wint_t *, int); 1655 PDCEX int wget_wch(WINDOW *, wint_t *); 1656 PDCEX int wget_wstr(WINDOW *, wint_t *); 1657 PDCEX int whline_set(WINDOW *, const cchar_t *, int); 1658 PDCEX int winnwstr(WINDOW *, wchar_t *, int); 1659 PDCEX int wins_nwstr(WINDOW *, const wchar_t *, int); 1660 PDCEX int wins_wch(WINDOW *, const cchar_t *); 1661 PDCEX int wins_wstr(WINDOW *, const wchar_t *); 1662 PDCEX int winwstr(WINDOW *, wchar_t *); 1663 PDCEX int win_wch(WINDOW *, cchar_t *); 1664 PDCEX int win_wchnstr(WINDOW *, cchar_t *, int); 1665 PDCEX int win_wchstr(WINDOW *, cchar_t *); 1666 PDCEX wchar_t *wunctrl(cchar_t *); 1667 PDCEX int wvline_set(WINDOW *, const cchar_t *, int); 1668 #endif 1669 1670 /* Quasi-standard */ 1671 1672 PDCEX chtype getattrs(WINDOW *); 1673 PDCEX int getbegx(WINDOW *); 1674 PDCEX int getbegy(WINDOW *); 1675 PDCEX int getmaxx(WINDOW *); 1676 PDCEX int getmaxy(WINDOW *); 1677 PDCEX int getparx(WINDOW *); 1678 PDCEX int getpary(WINDOW *); 1679 PDCEX int getcurx(WINDOW *); 1680 PDCEX int getcury(WINDOW *); 1681 PDCEX void traceoff(void); 1682 PDCEX void traceon(void); 1683 PDCEX char *unctrl(chtype); 1684 1685 PDCEX int crmode(void); 1686 PDCEX int nocrmode(void); 1687 PDCEX int draino(int); 1688 PDCEX int resetterm(void); 1689 PDCEX int fixterm(void); 1690 PDCEX int saveterm(void); 1691 PDCEX int setsyx(int, int); 1692 1693 PDCEX int mouse_set(unsigned long); 1694 PDCEX int mouse_on(unsigned long); 1695 PDCEX int mouse_off(unsigned long); 1696 PDCEX int request_mouse_pos(void); 1697 PDCEX int map_button(unsigned long); 1698 PDCEX void wmouse_position(WINDOW *, int *, int *); 1699 PDCEX unsigned long getmouse(void); 1700 PDCEX unsigned long getbmap(void); 1701 1702 /* ncurses */ 1703 1704 PDCEX int assume_default_colors(int, int); 1705 PDCEX const char *curses_version(void); 1706 PDCEX bool has_key(int); 1707 PDCEX int use_default_colors(void); 1708 PDCEX int wresize(WINDOW *, int, int); 1709 1710 PDCEX int mouseinterval(int); 1711 PDCEX mmask_t mousemask(mmask_t, mmask_t *); 1712 PDCEX bool mouse_trafo(int *, int *, bool); 1713 PDCEX int nc_getmouse(MEVENT *); 1714 PDCEX int ungetmouse(MEVENT *); 1715 PDCEX bool wenclose(const WINDOW *, int, int); 1716 PDCEX bool wmouse_trafo(const WINDOW *, int *, int *, bool); 1717 1718 /* PDCurses */ 1719 1720 PDCEX int addrawch(chtype); 1721 PDCEX int insrawch(chtype); 1722 PDCEX bool is_termresized(void); 1723 PDCEX int mvaddrawch(int, int, chtype); 1724 PDCEX int mvdeleteln(int, int); 1725 PDCEX int mvinsertln(int, int); 1726 PDCEX int mvinsrawch(int, int, chtype); 1727 PDCEX int mvwaddrawch(WINDOW *, int, int, chtype); 1728 PDCEX int mvwdeleteln(WINDOW *, int, int); 1729 PDCEX int mvwinsertln(WINDOW *, int, int); 1730 PDCEX int mvwinsrawch(WINDOW *, int, int, chtype); 1731 PDCEX int raw_output(bool); 1732 PDCEX int resize_term(int, int); 1733 PDCEX WINDOW *resize_window(WINDOW *, int, int); 1734 PDCEX int waddrawch(WINDOW *, chtype); 1735 PDCEX int winsrawch(WINDOW *, chtype); 1736 PDCEX char wordchar(void); 1737 1738 #ifdef PDC_WIDE 1739 PDCEX wchar_t *slk_wlabel(int); 1740 #endif 1741 1742 PDCEX void PDC_debug(const char *, ...); 1743 PDCEX int PDC_ungetch(int); 1744 PDCEX int PDC_set_blink(bool); 1745 PDCEX int PDC_set_line_color(short); 1746 PDCEX void PDC_set_title(const char *); 1747 1748 PDCEX int PDC_clearclipboard(void); 1749 PDCEX int PDC_freeclipboard(char *); 1750 PDCEX int PDC_getclipboard(char **, long *); 1751 PDCEX int PDC_setclipboard(const char *, long); 1752 1753 PDCEX unsigned long PDC_get_input_fd(void); 1754 PDCEX unsigned long PDC_get_key_modifiers(void); 1755 PDCEX int PDC_return_key_modifiers(bool); 1756 PDCEX int PDC_save_key_modifiers(bool); 1757 PDCEX void PDC_set_resize_limits( const int new_min_lines, 1758 const int new_max_lines, 1759 const int new_min_cols, 1760 const int new_max_cols); 1761 1762 #define FUNCTION_KEY_SHUT_DOWN 0 1763 #define FUNCTION_KEY_PASTE 1 1764 #define FUNCTION_KEY_ENLARGE_FONT 2 1765 #define FUNCTION_KEY_SHRINK_FONT 3 1766 #define FUNCTION_KEY_CHOOSE_FONT 4 1767 #define FUNCTION_KEY_ABORT 5 1768 #define PDC_MAX_FUNCTION_KEYS 6 1769 1770 PDCEX int PDC_set_function_key( const unsigned function, 1771 const int new_key); 1772 1773 PDCEX WINDOW *Xinitscr(int, char **); 1774 #ifdef XCURSES 1775 void XCursesExit(void); 1776 int sb_init(void); 1777 int sb_set_horz(int, int, int); 1778 int sb_set_vert(int, int, int); 1779 int sb_get_horz(int *, int *, int *); 1780 int sb_get_vert(int *, int *, int *); 1781 int sb_refresh(void); 1782 #endif 1783 1784 /*** Functions defined as macros ***/ 1785 1786 /* getch() and ungetch() conflict with some DOS libraries */ 1787 1788 #define getch() wgetch(stdscr) 1789 #define ungetch(ch) PDC_ungetch(ch) 1790 1791 #define COLOR_PAIR(n) (((chtype)(n) << PDC_COLOR_SHIFT) & A_COLOR) 1792 #define PAIR_NUMBER(n) ((((n) & A_COLOR) >> PDC_COLOR_SHIFT) & 0xff) 1793 1794 /* These will _only_ work as macros */ 1795 1796 #define getbegyx(w, y, x) (y = getbegy(w), x = getbegx(w)) 1797 #define getmaxyx(w, y, x) (y = getmaxy(w), x = getmaxx(w)) 1798 #define getparyx(w, y, x) (y = getpary(w), x = getparx(w)) 1799 #define getyx(w, y, x) (y = getcury(w), x = getcurx(w)) 1800 1801 #define getsyx(y, x) { if (curscr->_leaveit) (y)=(x)=-1; \ 1802 else getyx(curscr,(y),(x)); } 1803 1804 #ifdef NCURSES_MOUSE_VERSION 1805 # define getmouse(x) nc_getmouse(x) 1806 #endif 1807 1808 /* return codes from PDC_getclipboard() and PDC_setclipboard() calls */ 1809 1810 #define PDC_CLIP_SUCCESS 0 1811 #define PDC_CLIP_ACCESS_ERROR 1 1812 #define PDC_CLIP_EMPTY 2 1813 #define PDC_CLIP_MEMORY_ERROR 3 1814 1815 /* PDCurses key modifier masks */ 1816 1817 #define PDC_KEY_MODIFIER_SHIFT 1 1818 #define PDC_KEY_MODIFIER_CONTROL 2 1819 #define PDC_KEY_MODIFIER_ALT 4 1820 #define PDC_KEY_MODIFIER_NUMLOCK 8 1821 1822 #if defined(__cplusplus) || defined(__cplusplus__) || defined(__CPLUSPLUS) 1823 # undef bool 1824 } 1825 #endif 1826 1827 #endif /* __PDCURSES__ */ 1828