curses 1.3.0 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/macos.yml +19 -0
- data/.github/workflows/ubuntu.yml +26 -0
- data/.github/workflows/windows.yml +25 -0
- data/History.md +34 -0
- data/README.md +14 -46
- data/Rakefile +0 -86
- data/curses.gemspec +2 -3
- data/ext/curses/curses.c +70 -58
- data/ext/curses/extconf.rb +134 -21
- data/lib/curses.rb +5 -12
- data/sample/addch.rb +16 -0
- data/sample/attr_demo.rb +32 -0
- data/sample/colors.rb +26 -0
- data/sample/menu.rb +3 -3
- data/sample/mouse_move.rb +75 -0
- data/vendor/PDCurses/.gitignore +47 -0
- data/vendor/PDCurses/.travis.yml +49 -0
- data/vendor/PDCurses/CMakeLists.txt +68 -0
- data/vendor/PDCurses/HISTORY.md +2036 -0
- data/vendor/PDCurses/IMPLEMNT.md +327 -0
- data/vendor/PDCurses/README.md +77 -0
- data/vendor/PDCurses/acs_defs.h +265 -0
- data/vendor/PDCurses/appveyor.yml +218 -0
- data/vendor/PDCurses/cmake/README.md +71 -0
- data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
- data/vendor/PDCurses/cmake/build_options.cmake +25 -0
- data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
- data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
- data/vendor/PDCurses/cmake/get_version.cmake +17 -0
- data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
- data/vendor/PDCurses/cmake/project_common.cmake +121 -0
- data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
- data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
- data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
- data/vendor/PDCurses/cmake/version.in.cmake +73 -0
- data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
- data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
- data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
- data/vendor/PDCurses/curses.h +1846 -0
- data/vendor/PDCurses/curspriv.h +134 -0
- data/vendor/PDCurses/demos/README.md +25 -0
- data/vendor/PDCurses/demos/firework.c +144 -0
- data/vendor/PDCurses/demos/newtest.c +581 -0
- data/vendor/PDCurses/demos/ozdemo.c +447 -0
- data/vendor/PDCurses/demos/ptest.c +283 -0
- data/vendor/PDCurses/demos/rain.c +157 -0
- data/vendor/PDCurses/demos/testcurs.c +1607 -0
- data/vendor/PDCurses/demos/tui.c +1048 -0
- data/vendor/PDCurses/demos/tui.h +65 -0
- data/vendor/PDCurses/demos/tuidemo.c +233 -0
- data/vendor/PDCurses/demos/version.c +61 -0
- data/vendor/PDCurses/demos/worm.c +432 -0
- data/vendor/PDCurses/demos/xmas.c +955 -0
- data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
- data/vendor/PDCurses/dos/Makefile.bcc +83 -0
- data/vendor/PDCurses/dos/Makefile.dmc +257 -0
- data/vendor/PDCurses/dos/Makefile.msc +113 -0
- data/vendor/PDCurses/dos/Makefile.wcc +107 -0
- data/vendor/PDCurses/dos/README.md +51 -0
- data/vendor/PDCurses/dos/bccdos.lrf +9 -0
- data/vendor/PDCurses/dos/mscdos.lrf +50 -0
- data/vendor/PDCurses/dos/pdcclip.c +132 -0
- data/vendor/PDCurses/dos/pdcdisp.c +135 -0
- data/vendor/PDCurses/dos/pdcdos.h +194 -0
- data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
- data/vendor/PDCurses/dos/pdckbd.c +513 -0
- data/vendor/PDCurses/dos/pdcscrn.c +785 -0
- data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
- data/vendor/PDCurses/dos/pdcutil.c +212 -0
- data/vendor/PDCurses/libobjs.mif +26 -0
- data/vendor/PDCurses/makedist.mif +20 -0
- data/vendor/PDCurses/man/README.md +21 -0
- data/vendor/PDCurses/man/intro.md +361 -0
- data/vendor/PDCurses/man/manext.c +119 -0
- data/vendor/PDCurses/man/sdl.md +152 -0
- data/vendor/PDCurses/man/sdl2.md +58 -0
- data/vendor/PDCurses/man/x11.md +407 -0
- data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
- data/vendor/PDCurses/ncurses/README.md +26 -0
- data/vendor/PDCurses/ncurses/makefile +29 -0
- data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
- data/vendor/PDCurses/os2/Makefile.bcc +90 -0
- data/vendor/PDCurses/os2/Makefile.wcc +43 -0
- data/vendor/PDCurses/os2/README.md +43 -0
- data/vendor/PDCurses/os2/iccos2.lrf +50 -0
- data/vendor/PDCurses/os2/iccos2.mak +256 -0
- data/vendor/PDCurses/os2/pdcclip.c +188 -0
- data/vendor/PDCurses/os2/pdcdisp.c +93 -0
- data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
- data/vendor/PDCurses/os2/pdckbd.c +521 -0
- data/vendor/PDCurses/os2/pdcos2.h +55 -0
- data/vendor/PDCurses/os2/pdcscrn.c +449 -0
- data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
- data/vendor/PDCurses/os2/pdcutil.c +52 -0
- data/vendor/PDCurses/panel.h +56 -0
- data/vendor/PDCurses/pdcurses/README.md +25 -0
- data/vendor/PDCurses/pdcurses/addch.c +693 -0
- data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
- data/vendor/PDCurses/pdcurses/addstr.c +240 -0
- data/vendor/PDCurses/pdcurses/attr.c +359 -0
- data/vendor/PDCurses/pdcurses/beep.c +68 -0
- data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
- data/vendor/PDCurses/pdcurses/border.c +411 -0
- data/vendor/PDCurses/pdcurses/clear.c +159 -0
- data/vendor/PDCurses/pdcurses/color.c +298 -0
- data/vendor/PDCurses/pdcurses/debug.c +109 -0
- data/vendor/PDCurses/pdcurses/delch.c +96 -0
- data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
- data/vendor/PDCurses/pdcurses/deprec.c +27 -0
- data/vendor/PDCurses/pdcurses/getch.c +417 -0
- data/vendor/PDCurses/pdcurses/getstr.c +474 -0
- data/vendor/PDCurses/pdcurses/getyx.c +139 -0
- data/vendor/PDCurses/pdcurses/inch.c +127 -0
- data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
- data/vendor/PDCurses/pdcurses/initscr.c +367 -0
- data/vendor/PDCurses/pdcurses/inopts.c +324 -0
- data/vendor/PDCurses/pdcurses/insch.c +271 -0
- data/vendor/PDCurses/pdcurses/insstr.c +264 -0
- data/vendor/PDCurses/pdcurses/instr.c +246 -0
- data/vendor/PDCurses/pdcurses/kernel.c +259 -0
- data/vendor/PDCurses/pdcurses/keyname.c +157 -0
- data/vendor/PDCurses/pdcurses/mouse.c +438 -0
- data/vendor/PDCurses/pdcurses/move.c +57 -0
- data/vendor/PDCurses/pdcurses/outopts.c +159 -0
- data/vendor/PDCurses/pdcurses/overlay.c +214 -0
- data/vendor/PDCurses/pdcurses/pad.c +260 -0
- data/vendor/PDCurses/pdcurses/panel.c +633 -0
- data/vendor/PDCurses/pdcurses/printw.c +126 -0
- data/vendor/PDCurses/pdcurses/refresh.c +279 -0
- data/vendor/PDCurses/pdcurses/scanw.c +578 -0
- data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
- data/vendor/PDCurses/pdcurses/scroll.c +101 -0
- data/vendor/PDCurses/pdcurses/slk.c +591 -0
- data/vendor/PDCurses/pdcurses/termattr.c +182 -0
- data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
- data/vendor/PDCurses/pdcurses/touch.c +163 -0
- data/vendor/PDCurses/pdcurses/util.c +312 -0
- data/vendor/PDCurses/pdcurses/window.c +569 -0
- data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
- data/vendor/PDCurses/sdl1/README.md +31 -0
- data/vendor/PDCurses/sdl1/deffont.h +385 -0
- data/vendor/PDCurses/sdl1/deficon.h +23 -0
- data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
- data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
- data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
- data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
- data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
- data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
- data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
- data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
- data/vendor/PDCurses/sdl1/sdltest.c +79 -0
- data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
- data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
- data/vendor/PDCurses/sdl2/README.md +34 -0
- data/vendor/PDCurses/sdl2/deffont.h +385 -0
- data/vendor/PDCurses/sdl2/deficon.h +23 -0
- data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
- data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
- data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
- data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
- data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
- data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
- data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
- data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
- data/vendor/PDCurses/sdl2/sdltest.c +81 -0
- data/vendor/PDCurses/term.h +48 -0
- data/vendor/PDCurses/version.mif +7 -0
- data/vendor/PDCurses/vt/CMakeLists.txt +28 -0
- data/vendor/PDCurses/vt/Makefile.bcc +111 -0
- data/vendor/PDCurses/vt/Makefile.dmc +258 -0
- data/vendor/PDCurses/vt/Makefile.vc +144 -0
- data/vendor/PDCurses/vt/Makefile.wcc +107 -0
- data/vendor/PDCurses/vt/README.md +64 -0
- data/vendor/PDCurses/vt/pdcclip.c +20 -0
- data/vendor/PDCurses/vt/pdcdisp.c +284 -0
- data/vendor/PDCurses/vt/pdcgetsc.c +27 -0
- data/vendor/PDCurses/vt/pdckbd.c +394 -0
- data/vendor/PDCurses/vt/pdcscrn.c +434 -0
- data/vendor/PDCurses/vt/pdcsetsc.c +45 -0
- data/vendor/PDCurses/vt/pdcutil.c +43 -0
- data/vendor/PDCurses/vt/pdcvt.h +16 -0
- data/vendor/PDCurses/watcom.mif +68 -0
- data/vendor/PDCurses/wincon/CMakeLists.txt +27 -0
- data/vendor/PDCurses/wincon/Makefile.bcc +88 -0
- data/vendor/PDCurses/wincon/Makefile.dmc +256 -0
- data/vendor/PDCurses/wincon/Makefile.lcc +273 -0
- data/vendor/PDCurses/wincon/Makefile.mng +176 -0
- data/vendor/PDCurses/wincon/Makefile.vc +144 -0
- data/vendor/PDCurses/wincon/Makefile.wcc +51 -0
- data/vendor/PDCurses/wincon/README.md +85 -0
- data/vendor/PDCurses/wincon/pdcclip.c +174 -0
- data/vendor/PDCurses/wincon/pdcdisp.c +143 -0
- data/vendor/PDCurses/wincon/pdcgetsc.c +55 -0
- data/vendor/PDCurses/wincon/pdckbd.c +786 -0
- data/vendor/PDCurses/wincon/pdcscrn.c +717 -0
- data/vendor/PDCurses/wincon/pdcsetsc.c +91 -0
- data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
- data/vendor/PDCurses/wincon/pdcurses.rc +28 -0
- data/vendor/PDCurses/wincon/pdcutil.c +41 -0
- data/vendor/PDCurses/wincon/pdcwin.h +31 -0
- data/vendor/PDCurses/wingui/CMakeLists.txt +27 -0
- data/vendor/PDCurses/wingui/Makefile.bcc +85 -0
- data/vendor/PDCurses/wingui/Makefile.dmc +259 -0
- data/vendor/PDCurses/wingui/Makefile.lcc +273 -0
- data/vendor/PDCurses/wingui/Makefile.mng +171 -0
- data/vendor/PDCurses/wingui/Makefile.vc +144 -0
- data/vendor/PDCurses/wingui/Makefile.wcc +51 -0
- data/vendor/PDCurses/wingui/README.md +93 -0
- data/vendor/PDCurses/wingui/pdcclip.c +174 -0
- data/vendor/PDCurses/wingui/pdcdisp.c +718 -0
- data/vendor/PDCurses/wingui/pdcgetsc.c +30 -0
- data/vendor/PDCurses/wingui/pdckbd.c +143 -0
- data/vendor/PDCurses/wingui/pdcscrn.c +2797 -0
- data/vendor/PDCurses/wingui/pdcsetsc.c +89 -0
- data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
- data/vendor/PDCurses/wingui/pdcurses.rc +28 -0
- data/vendor/PDCurses/wingui/pdcutil.c +61 -0
- data/vendor/PDCurses/wingui/pdcwin.h +122 -0
- data/vendor/PDCurses/x11/Makefile.in +754 -0
- data/vendor/PDCurses/x11/PDCurses.spec +82 -0
- data/vendor/PDCurses/x11/README.md +62 -0
- data/vendor/PDCurses/x11/ScrollBox.c +319 -0
- data/vendor/PDCurses/x11/ScrollBox.h +51 -0
- data/vendor/PDCurses/x11/ScrollBoxP.h +70 -0
- data/vendor/PDCurses/x11/aclocal.m4 +994 -0
- data/vendor/PDCurses/x11/big_icon.xbm +46 -0
- data/vendor/PDCurses/x11/compose.h +201 -0
- data/vendor/PDCurses/x11/config.guess +1500 -0
- data/vendor/PDCurses/x11/config.h.in +100 -0
- data/vendor/PDCurses/x11/config.sub +1616 -0
- data/vendor/PDCurses/x11/configure +6700 -0
- data/vendor/PDCurses/x11/configure.ac +295 -0
- data/vendor/PDCurses/x11/debian/changelog +6 -0
- data/vendor/PDCurses/x11/debian/compat +1 -0
- data/vendor/PDCurses/x11/debian/control +11 -0
- data/vendor/PDCurses/x11/debian/copyright +27 -0
- data/vendor/PDCurses/x11/debian/rules +98 -0
- data/vendor/PDCurses/x11/install-sh +253 -0
- data/vendor/PDCurses/x11/little_icon.xbm +14 -0
- data/vendor/PDCurses/x11/ncurses_cfg.h +45 -0
- data/vendor/PDCurses/x11/pdcclip.c +173 -0
- data/vendor/PDCurses/x11/pdcdisp.c +85 -0
- data/vendor/PDCurses/x11/pdcgetsc.c +28 -0
- data/vendor/PDCurses/x11/pdckbd.c +104 -0
- data/vendor/PDCurses/x11/pdcscrn.c +258 -0
- data/vendor/PDCurses/x11/pdcsetsc.c +95 -0
- data/vendor/PDCurses/x11/pdcutil.c +52 -0
- data/vendor/PDCurses/x11/pdcx11.c +316 -0
- data/vendor/PDCurses/x11/pdcx11.h +191 -0
- data/vendor/PDCurses/x11/sb.c +155 -0
- data/vendor/PDCurses/x11/x11.c +3686 -0
- data/vendor/PDCurses/x11/xcurses-config.in +81 -0
- metadata +258 -24
- data/.travis.yml +0 -16
- data/appveyor.yml +0 -16
| @@ -0,0 +1,101 @@ | |
| 1 | 
            +
            /* Public Domain Curses */
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            #include "pdcdos.h"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            /*man-start**************************************************************
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            pdcsetsc
         | 
| 8 | 
            +
            --------
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            ### Synopsis
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                int PDC_set_blink(bool blinkon);
         | 
| 13 | 
            +
                void PDC_set_title(const char *title);
         | 
| 14 | 
            +
             | 
| 15 | 
            +
            ### Description
         | 
| 16 | 
            +
             | 
| 17 | 
            +
               PDC_set_blink() toggles whether the A_BLINK attribute sets an
         | 
| 18 | 
            +
               actual blink mode (TRUE), or sets the background color to high
         | 
| 19 | 
            +
               intensity (FALSE). The default is platform-dependent (FALSE in
         | 
| 20 | 
            +
               most cases). It returns OK if it could set the state to match
         | 
| 21 | 
            +
               the given parameter, ERR otherwise. Current platforms also
         | 
| 22 | 
            +
               adjust the value of COLORS according to this function -- 16 for
         | 
| 23 | 
            +
               FALSE, and 8 for TRUE.
         | 
| 24 | 
            +
             | 
| 25 | 
            +
               PDC_set_title() sets the title of the window in which the curses
         | 
| 26 | 
            +
               program is running. This function may not do anything on some
         | 
| 27 | 
            +
               platforms. (Currently it only works in Win32 and X11.)
         | 
| 28 | 
            +
             | 
| 29 | 
            +
            ### Portability
         | 
| 30 | 
            +
                                         X/Open    BSD    SYS V
         | 
| 31 | 
            +
                PDC_set_blink               -       -       -
         | 
| 32 | 
            +
                PDC_set_title               -       -       -
         | 
| 33 | 
            +
             | 
| 34 | 
            +
            **man-end****************************************************************/
         | 
| 35 | 
            +
             | 
| 36 | 
            +
            int PDC_curs_set(int visibility)
         | 
| 37 | 
            +
            {
         | 
| 38 | 
            +
                PDCREGS regs;
         | 
| 39 | 
            +
                int ret_vis, start, end;
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                PDC_LOG(("PDC_curs_set() - called: visibility=%d\n", visibility));
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                ret_vis = SP->visibility;
         | 
| 44 | 
            +
                SP->visibility = visibility;
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                switch (visibility)
         | 
| 47 | 
            +
                {
         | 
| 48 | 
            +
                    case 0:  /* invisible */
         | 
| 49 | 
            +
                        start = 32;
         | 
| 50 | 
            +
                        end = 0;  /* was 32 */
         | 
| 51 | 
            +
                        break;
         | 
| 52 | 
            +
                    case 2:  /* highly visible */
         | 
| 53 | 
            +
                        start = 0;   /* full-height block */
         | 
| 54 | 
            +
                        end = 7;
         | 
| 55 | 
            +
                        break;
         | 
| 56 | 
            +
                    default:  /* normal visibility */
         | 
| 57 | 
            +
                        start = (SP->orig_cursor >> 8) & 0xff;
         | 
| 58 | 
            +
                        end = SP->orig_cursor & 0xff;
         | 
| 59 | 
            +
                }
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                /* if scrnmode is not set, some BIOSes hang */
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                regs.h.ah = 0x01;
         | 
| 64 | 
            +
                regs.h.al = (unsigned char)pdc_scrnmode; 
         | 
| 65 | 
            +
                regs.h.ch = (unsigned char)start;
         | 
| 66 | 
            +
                regs.h.cl = (unsigned char)end;
         | 
| 67 | 
            +
                PDCINT(0x10, regs);
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                return ret_vis;
         | 
| 70 | 
            +
            }
         | 
| 71 | 
            +
             | 
| 72 | 
            +
            void PDC_set_title(const char *title)
         | 
| 73 | 
            +
            {
         | 
| 74 | 
            +
                PDC_LOG(("PDC_set_title() - called: <%s>\n", title));
         | 
| 75 | 
            +
            }
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            int PDC_set_blink(bool blinkon)
         | 
| 78 | 
            +
            {
         | 
| 79 | 
            +
                PDCREGS regs;
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                switch (pdc_adapter)
         | 
| 82 | 
            +
                {
         | 
| 83 | 
            +
                case _EGACOLOR:
         | 
| 84 | 
            +
                case _EGAMONO:
         | 
| 85 | 
            +
                case _VGACOLOR:
         | 
| 86 | 
            +
                case _VGAMONO:
         | 
| 87 | 
            +
                    regs.W.ax = 0x1003;
         | 
| 88 | 
            +
                    regs.W.bx = blinkon;
         | 
| 89 | 
            +
             | 
| 90 | 
            +
                    PDCINT(0x10, regs);
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                    if (pdc_color_started)
         | 
| 93 | 
            +
                        COLORS = blinkon ? 8 : 16;
         | 
| 94 | 
            +
             | 
| 95 | 
            +
                    break;
         | 
| 96 | 
            +
                default:
         | 
| 97 | 
            +
                    COLORS = 8;
         | 
| 98 | 
            +
                }
         | 
| 99 | 
            +
             | 
| 100 | 
            +
                return (COLORS - (blinkon * 8) != 8) ? OK : ERR;
         | 
| 101 | 
            +
            }
         | 
| @@ -0,0 +1,212 @@ | |
| 1 | 
            +
            /* Public Domain Curses */
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            #include <limits.h>
         | 
| 4 | 
            +
            #include "pdcdos.h"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            void PDC_beep(void)
         | 
| 7 | 
            +
            {
         | 
| 8 | 
            +
                PDCREGS regs;
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                PDC_LOG(("PDC_beep() - called\n"));
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                regs.W.ax = 0x0e07;       /* Write ^G in TTY fashion */
         | 
| 13 | 
            +
                regs.W.bx = 0;
         | 
| 14 | 
            +
                PDCINT(0x10, regs);
         | 
| 15 | 
            +
            }
         | 
| 16 | 
            +
             | 
| 17 | 
            +
            #if UINT_MAX >= 0xfffffffful
         | 
| 18 | 
            +
            # define irq0_ticks()	(getdosmemdword(0x46c))
         | 
| 19 | 
            +
            /* For 16-bit platforms, we expect that the program will need _two_ memory
         | 
| 20 | 
            +
               read instructions to read the tick count.  Between the two instructions,
         | 
| 21 | 
            +
               if we do not turn off interrupts, an IRQ 0 might intervene and update the
         | 
| 22 | 
            +
               tick count with a carry over from the lower half to the upper half ---
         | 
| 23 | 
            +
               and our read count will be bogus.  */
         | 
| 24 | 
            +
            #elif defined __TURBOC__
         | 
| 25 | 
            +
            static unsigned long irq0_ticks(void)
         | 
| 26 | 
            +
            {
         | 
| 27 | 
            +
                unsigned long t;
         | 
| 28 | 
            +
                disable();
         | 
| 29 | 
            +
                t = getdosmemdword(0x46c);
         | 
| 30 | 
            +
                enable();
         | 
| 31 | 
            +
                return t;
         | 
| 32 | 
            +
            }
         | 
| 33 | 
            +
            #elif defined __WATCOMC__
         | 
| 34 | 
            +
            static unsigned long irq0_ticks(void)
         | 
| 35 | 
            +
            {
         | 
| 36 | 
            +
                unsigned long t;
         | 
| 37 | 
            +
                _disable();
         | 
| 38 | 
            +
                t = getdosmemdword(0x46c);
         | 
| 39 | 
            +
                _enable();
         | 
| 40 | 
            +
                return t;
         | 
| 41 | 
            +
            }
         | 
| 42 | 
            +
            #else
         | 
| 43 | 
            +
            # define irq0_ticks()	(getdosmemdword(0x46c))  /* FIXME */
         | 
| 44 | 
            +
            #endif
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            static void do_idle(void)
         | 
| 47 | 
            +
            {
         | 
| 48 | 
            +
                PDCREGS regs;
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                regs.W.ax = 0x1680;
         | 
| 51 | 
            +
                PDCINT(0x2f, regs);
         | 
| 52 | 
            +
                PDCINT(0x28, regs);
         | 
| 53 | 
            +
            }
         | 
| 54 | 
            +
             | 
| 55 | 
            +
            #define MAX_TICK	0x1800b0ul	/* no. of IRQ 0 clock ticks per day;
         | 
| 56 | 
            +
            					   BIOS counter (0:0x46c) will go up
         | 
| 57 | 
            +
            					   to MAX_TICK - 1 before wrapping to
         | 
| 58 | 
            +
            					   0 at midnight */
         | 
| 59 | 
            +
            #define MS_PER_DAY	86400000ul	/* no. of milliseconds in a day */
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            void PDC_napms(int ms)
         | 
| 62 | 
            +
            {
         | 
| 63 | 
            +
                unsigned long goal, start, current;
         | 
| 64 | 
            +
             | 
| 65 | 
            +
                PDC_LOG(("PDC_napms() - called: ms=%d\n", ms));
         | 
| 66 | 
            +
             | 
| 67 | 
            +
            #if INT_MAX > MS_PER_DAY / 2
         | 
| 68 | 
            +
                /* If `int' is 32-bit, we might be asked to "nap" for more than one day,
         | 
| 69 | 
            +
                   in which case the system timer might wrap around at least twice, and
         | 
| 70 | 
            +
                   that will be tricky to handle as is.  Slice the "nap" into half-day
         | 
| 71 | 
            +
                   portions.  */
         | 
| 72 | 
            +
                while (ms > MS_PER_DAY / 2)
         | 
| 73 | 
            +
                {
         | 
| 74 | 
            +
                    PDC_napms (MS_PER_DAY / 2);
         | 
| 75 | 
            +
                    ms -= MS_PER_DAY / 2;
         | 
| 76 | 
            +
                }
         | 
| 77 | 
            +
            #endif
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                if (ms < 0)
         | 
| 80 | 
            +
                    return;
         | 
| 81 | 
            +
             | 
| 82 | 
            +
                /* Scale the millisecond count by MAX_TICK / MS_PER_DAY.  The scaling
         | 
| 83 | 
            +
                   done here is not very precise, but what is more important is
         | 
| 84 | 
            +
                   preventing integer overflow.
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                   The approximation 67 / 3680 can be obtained by considering the
         | 
| 87 | 
            +
                   convergents (mathworld.wolfram.com/Convergent.html) of MAX_TICK /
         | 
| 88 | 
            +
                   MS_PER_DAY 's continued fraction representation.  */
         | 
| 89 | 
            +
            #if MS_PER_DAY / 2 <= ULONG_MAX / 67ul
         | 
| 90 | 
            +
            # define MS_TO_TICKS(x)	((x) * 67ul / 3680ul)
         | 
| 91 | 
            +
            #else
         | 
| 92 | 
            +
            # error "unpossible!"
         | 
| 93 | 
            +
            #endif
         | 
| 94 | 
            +
                goal = MS_TO_TICKS(ms);
         | 
| 95 | 
            +
             | 
| 96 | 
            +
                if (!goal)
         | 
| 97 | 
            +
                    goal++;
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                start = irq0_ticks();
         | 
| 100 | 
            +
                goal += start;
         | 
| 101 | 
            +
             | 
| 102 | 
            +
                if (goal >= MAX_TICK)
         | 
| 103 | 
            +
                {
         | 
| 104 | 
            +
                    /* We expect to cross over midnight!  Wait for the clock tick count
         | 
| 105 | 
            +
                       to wrap around, then wait out the remaining ticks.  */
         | 
| 106 | 
            +
                    goal -= MAX_TICK;
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                    while (irq0_ticks() == start)
         | 
| 109 | 
            +
                        do_idle();
         | 
| 110 | 
            +
             | 
| 111 | 
            +
                    while (irq0_ticks() > start)
         | 
| 112 | 
            +
                        do_idle();
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                    start = 0;
         | 
| 115 | 
            +
                }
         | 
| 116 | 
            +
             | 
| 117 | 
            +
                while (goal > (current = irq0_ticks()))
         | 
| 118 | 
            +
                {
         | 
| 119 | 
            +
                    if (current < start)
         | 
| 120 | 
            +
                    {
         | 
| 121 | 
            +
                        /* If the BIOS time somehow gets reset under us (ugh!), then
         | 
| 122 | 
            +
                           restart (what is left of) the nap with `current' as the new
         | 
| 123 | 
            +
                           starting time.  Remember to adjust the goal time
         | 
| 124 | 
            +
                           accordingly!  */
         | 
| 125 | 
            +
                        goal -= start - current;
         | 
| 126 | 
            +
                        start = current;
         | 
| 127 | 
            +
                    }
         | 
| 128 | 
            +
             | 
| 129 | 
            +
                    do_idle();
         | 
| 130 | 
            +
                }
         | 
| 131 | 
            +
            }
         | 
| 132 | 
            +
             | 
| 133 | 
            +
            const char *PDC_sysname(void)
         | 
| 134 | 
            +
            {
         | 
| 135 | 
            +
                return "DOS";
         | 
| 136 | 
            +
            }
         | 
| 137 | 
            +
             | 
| 138 | 
            +
            PDC_version_info PDC_version = { PDC_PORT_DOS,
         | 
| 139 | 
            +
                      PDC_VER_MAJOR, PDC_VER_MINOR, PDC_VER_CHANGE,
         | 
| 140 | 
            +
                      sizeof( chtype),
         | 
| 141 | 
            +
                           /* note that thus far,  'wide' and 'UTF8' versions exist */
         | 
| 142 | 
            +
                           /* only for SDL2, X11,  Win32,  and Win32a;  elsewhere, */
         | 
| 143 | 
            +
                           /* these will be FALSE */
         | 
| 144 | 
            +
            #ifdef PDC_WIDE
         | 
| 145 | 
            +
                      TRUE,
         | 
| 146 | 
            +
            #else
         | 
| 147 | 
            +
                      FALSE,
         | 
| 148 | 
            +
            #endif
         | 
| 149 | 
            +
            #ifdef PDC_FORCE_UTF8
         | 
| 150 | 
            +
                      TRUE,
         | 
| 151 | 
            +
            #else
         | 
| 152 | 
            +
                      FALSE,
         | 
| 153 | 
            +
            #endif
         | 
| 154 | 
            +
                      };
         | 
| 155 | 
            +
             | 
| 156 | 
            +
            #ifdef __DJGPP__
         | 
| 157 | 
            +
             | 
| 158 | 
            +
            unsigned char getdosmembyte(int offset)
         | 
| 159 | 
            +
            {
         | 
| 160 | 
            +
                unsigned char b;
         | 
| 161 | 
            +
             | 
| 162 | 
            +
                dosmemget(offset, sizeof(unsigned char), &b);
         | 
| 163 | 
            +
                return b;
         | 
| 164 | 
            +
            }
         | 
| 165 | 
            +
             | 
| 166 | 
            +
            unsigned short getdosmemword(int offset)
         | 
| 167 | 
            +
            {
         | 
| 168 | 
            +
                unsigned short w;
         | 
| 169 | 
            +
             | 
| 170 | 
            +
                dosmemget(offset, sizeof(unsigned short), &w);
         | 
| 171 | 
            +
                return w;
         | 
| 172 | 
            +
            }
         | 
| 173 | 
            +
             | 
| 174 | 
            +
            unsigned long getdosmemdword(int offset)
         | 
| 175 | 
            +
            {
         | 
| 176 | 
            +
                unsigned long dw;
         | 
| 177 | 
            +
             | 
| 178 | 
            +
                dosmemget(offset, sizeof(unsigned long), &dw);
         | 
| 179 | 
            +
                return dw;
         | 
| 180 | 
            +
            }
         | 
| 181 | 
            +
             | 
| 182 | 
            +
            void setdosmembyte(int offset, unsigned char b)
         | 
| 183 | 
            +
            {
         | 
| 184 | 
            +
                dosmemput(&b, sizeof(unsigned char), offset);
         | 
| 185 | 
            +
            }
         | 
| 186 | 
            +
             | 
| 187 | 
            +
            void setdosmemword(int offset, unsigned short w)
         | 
| 188 | 
            +
            {
         | 
| 189 | 
            +
                dosmemput(&w, sizeof(unsigned short), offset);
         | 
| 190 | 
            +
            }
         | 
| 191 | 
            +
             | 
| 192 | 
            +
            #endif
         | 
| 193 | 
            +
             | 
| 194 | 
            +
            #if defined(__WATCOMC__) && defined(__386__)
         | 
| 195 | 
            +
             | 
| 196 | 
            +
            void PDC_dpmi_int(int vector, pdc_dpmi_regs *rmregs)
         | 
| 197 | 
            +
            {
         | 
| 198 | 
            +
                union REGPACK regs = {0};
         | 
| 199 | 
            +
             | 
| 200 | 
            +
                rmregs->w.ss = 0;
         | 
| 201 | 
            +
                rmregs->w.sp = 0;
         | 
| 202 | 
            +
                rmregs->w.flags = 0;
         | 
| 203 | 
            +
             | 
| 204 | 
            +
                regs.w.ax = 0x300;
         | 
| 205 | 
            +
                regs.h.bl = vector;
         | 
| 206 | 
            +
                regs.x.edi = FP_OFF(rmregs);
         | 
| 207 | 
            +
                regs.x.es = FP_SEG(rmregs);
         | 
| 208 | 
            +
             | 
| 209 | 
            +
                intr(0x31, ®s);
         | 
| 210 | 
            +
            }
         | 
| 211 | 
            +
             | 
| 212 | 
            +
            #endif
         | 
| @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            # Common elements for most of the DOS, OS/2 and Win32
         | 
| 2 | 
            +
            # makefiles (not Watcom or LCC)
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            PDCURSES_CURSES_H   = $(PDCURSES_SRCDIR)/curses.h
         | 
| 5 | 
            +
            PDCURSES_CURSPRIV_H   = $(PDCURSES_SRCDIR)/curspriv.h
         | 
| 6 | 
            +
            PDCURSES_HEADERS   = $(PDCURSES_CURSES_H) $(PDCURSES_CURSPRIV_H)
         | 
| 7 | 
            +
            PANEL_HEADER      = $(PDCURSES_SRCDIR)/panel.h
         | 
| 8 | 
            +
            TERM_HEADER      = $(PDCURSES_SRCDIR)/term.h
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            srcdir   = $(PDCURSES_SRCDIR)/pdcurses
         | 
| 11 | 
            +
            demodir   = $(PDCURSES_SRCDIR)/demos
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            LIBOBJS = addch.$(O) addchstr.$(O) addstr.$(O) attr.$(O) beep.$(O) \
         | 
| 14 | 
            +
            bkgd.$(O) border.$(O) clear.$(O) color.$(O) delch.$(O) deleteln.$(O) \
         | 
| 15 | 
            +
            deprec.$(O) getch.$(O) getstr.$(O) getyx.$(O) inch.$(O) inchstr.$(O) \
         | 
| 16 | 
            +
            initscr.$(O) inopts.$(O) insch.$(O) insstr.$(O) instr.$(O) kernel.$(O) \
         | 
| 17 | 
            +
            keyname.$(O) mouse.$(O) move.$(O) outopts.$(O) overlay.$(O) pad.$(O) \
         | 
| 18 | 
            +
            panel.$(O) printw.$(O) refresh.$(O) scanw.$(O) scr_dump.$(O) scroll.$(O) \
         | 
| 19 | 
            +
            slk.$(O) termattr.$(O) terminfo.$(O) touch.$(O) util.$(O) window.$(O) \
         | 
| 20 | 
            +
            debug.$(O)
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            PDCOBJS = pdcclip.$(O) pdcdisp.$(O) pdcgetsc.$(O) pdckbd.$(O) pdcscrn.$(O) \
         | 
| 23 | 
            +
            pdcsetsc.$(O) pdcutil.$(O)
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            DEMOS = testcurs.exe ozdemo.exe xmas.exe tuidemo.exe firework.exe \
         | 
| 26 | 
            +
            newtest.exe ptest.exe rain.exe worm.exe
         | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            # Makefile include: build a binary archive with Info-ZIP
         | 
| 2 | 
            +
            # under DOS, OS/2 or Win32
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            dist: $(PDCLIBS)
         | 
| 5 | 
            +
            	echo PDCurses $(VERDOT) for $(PLATFORM1) > file_id.diz
         | 
| 6 | 
            +
            	echo ------------------------------------------ >> file_id.diz
         | 
| 7 | 
            +
            	echo Public Domain Curses library for >> file_id.diz
         | 
| 8 | 
            +
            	echo $(PLATFORM2). >> file_id.diz
         | 
| 9 | 
            +
            	echo Source available in PDCURS$(VER).ZIP >> file_id.diz
         | 
| 10 | 
            +
            	echo Public Domain. >> file_id.diz
         | 
| 11 | 
            +
            	echo $(PDCURSES_SRCDIR)\README.md > flist
         | 
| 12 | 
            +
            	echo $(PDCURSES_SRCDIR)\HISTORY.md >> flist
         | 
| 13 | 
            +
            	echo $(PDCURSES_SRCDIR)\curses.h >> flist
         | 
| 14 | 
            +
            	echo $(PDCURSES_SRCDIR)\panel.h >> flist
         | 
| 15 | 
            +
            	echo $(PDCURSES_SRCDIR)\term.h >> flist
         | 
| 16 | 
            +
            	echo $(LIBCURSES) >> flist
         | 
| 17 | 
            +
            	echo file_id.diz >> flist
         | 
| 18 | 
            +
            	zip -9jX $(ARCNAME) -@ <flist
         | 
| 19 | 
            +
            	del flist
         | 
| 20 | 
            +
            	del file_id.diz
         | 
| @@ -0,0 +1,21 @@ | |
| 1 | 
            +
            PDCurses Documentation
         | 
| 2 | 
            +
            ======================
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Some plain text documents to provide a basic overview of PDCurses and
         | 
| 5 | 
            +
            details for specific platforms, along with a program to combine them
         | 
| 6 | 
            +
            with the "man page" sections from the source code files, into
         | 
| 7 | 
            +
            "PDCurses.md".
         | 
| 8 | 
            +
             | 
| 9 | 
            +
             | 
| 10 | 
            +
            Building
         | 
| 11 | 
            +
            --------
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            - Type "make". ("make clean" to remove the built files.) A Unix-like
         | 
| 14 | 
            +
              environment is required for the Makefile. This is called automatically
         | 
| 15 | 
            +
              when doing a top-level make of the X11 port.
         | 
| 16 | 
            +
             | 
| 17 | 
            +
             | 
| 18 | 
            +
            Distribution Status
         | 
| 19 | 
            +
            -------------------
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            Public Domain, except for manext.c, which is GPL 2+.
         | 
| @@ -0,0 +1,361 @@ | |
| 1 | 
            +
            PDCurses User's Guide
         | 
| 2 | 
            +
            =====================
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Curses Overview
         | 
| 5 | 
            +
            ---------------
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            The X/Open Curses Interface Definition describes a set of C-Language
         | 
| 8 | 
            +
            functions that provide screen-handling and updating, which are
         | 
| 9 | 
            +
            collectively known as the curses library.
         | 
| 10 | 
            +
             | 
| 11 | 
            +
            The curses library permits manipulation of data structures called
         | 
| 12 | 
            +
            windows which may be thought of as two-dimensional arrays of
         | 
| 13 | 
            +
            characters representing all or part of a terminal's screen.  The
         | 
| 14 | 
            +
            windows are manipulated using a procedural interface described
         | 
| 15 | 
            +
            elsewhere.  The curses package maintains a record of what characters
         | 
| 16 | 
            +
            are on the screen.  At the most basic level, manipulation is done with
         | 
| 17 | 
            +
            the routines move() and addch() which are used to "move" the curses
         | 
| 18 | 
            +
            around and add characters to the default window, stdscr, which
         | 
| 19 | 
            +
            represents the whole screen.
         | 
| 20 | 
            +
             | 
| 21 | 
            +
            An application may use these routines to add data to the window in any
         | 
| 22 | 
            +
            convenient order.  Once all data have been added, the routine
         | 
| 23 | 
            +
            refresh() is called.  The package then determines what changes have
         | 
| 24 | 
            +
            been made which affect the screen.  The screen contents are then
         | 
| 25 | 
            +
            changed to reflect those characters now in the window, using a
         | 
| 26 | 
            +
            sequence of operations optimized for the type of terminal in use.
         | 
| 27 | 
            +
             | 
| 28 | 
            +
            At a higher level routines combining the actions of move() and addch()
         | 
| 29 | 
            +
            are defined, as are routines to add whole strings and to perform
         | 
| 30 | 
            +
            format conversions in the manner of printf().
         | 
| 31 | 
            +
             | 
| 32 | 
            +
            Interfaces are also defined to erase the entire window and to specify
         | 
| 33 | 
            +
            the attributes of individual characters in the window.  Attributes
         | 
| 34 | 
            +
            such as inverse video, underline and blink can be used on a
         | 
| 35 | 
            +
            per-character basis.
         | 
| 36 | 
            +
             | 
| 37 | 
            +
            New windows can be created by allowing the application to build
         | 
| 38 | 
            +
            several images of the screen and display the appropriate one very
         | 
| 39 | 
            +
            quickly.  New windows are created using the routine newwin().  For
         | 
| 40 | 
            +
            each routine that manipulates the default window, stdscr, there is a
         | 
| 41 | 
            +
            corresponding routine prefixed with w to manipulate the contents of a
         | 
| 42 | 
            +
            specified window; for example, move() and wmove().  In fact, move(...)
         | 
| 43 | 
            +
            is functionally equivalent to wmove( stdscr, ...).  This is similar to
         | 
| 44 | 
            +
            the interface offered by printf(...) and fprintf(stdout, ...).
         | 
| 45 | 
            +
             | 
| 46 | 
            +
            Windows do not have to correspond to the entire screen.  It is
         | 
| 47 | 
            +
            possible to create smaller windows, and also to indicate that the
         | 
| 48 | 
            +
            window is only partially visible on the screen.  Furthermore, large
         | 
| 49 | 
            +
            windows or pads, which are bigger than the actual screen size, may be
         | 
| 50 | 
            +
            created. 
         | 
| 51 | 
            +
             | 
| 52 | 
            +
            Interfaces are also defined to allow input character manipulation and
         | 
| 53 | 
            +
            to disable and enable many input attributes: character echo, single
         | 
| 54 | 
            +
            character input with or without signal processing (cbreak or raw
         | 
| 55 | 
            +
            modes), carriage returns mapping to newlines, screen scrolling, etc.
         | 
| 56 | 
            +
             | 
| 57 | 
            +
             | 
| 58 | 
            +
            Data Types and the \<curses.h\> Header
         | 
| 59 | 
            +
            --------------------------------------
         | 
| 60 | 
            +
             | 
| 61 | 
            +
            The data types supported by curses are described in this section.
         | 
| 62 | 
            +
             | 
| 63 | 
            +
            As the library supports a procedural interface to the data types, actual
         | 
| 64 | 
            +
            structure contents are not described.  All curses data are manipulated
         | 
| 65 | 
            +
            using the routines provided.
         | 
| 66 | 
            +
             | 
| 67 | 
            +
             | 
| 68 | 
            +
            ### The \<curses.h\> Header
         | 
| 69 | 
            +
             | 
| 70 | 
            +
            The \<curses.h\> header defines various constants and declares the data
         | 
| 71 | 
            +
            types that are available to the application.
         | 
| 72 | 
            +
             | 
| 73 | 
            +
             | 
| 74 | 
            +
            ### Data Types
         | 
| 75 | 
            +
             | 
| 76 | 
            +
            The following data types are declared:
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                WINDOW *  pointer to screen representation
         | 
| 79 | 
            +
                SCREEN *  pointer to terminal descriptor
         | 
| 80 | 
            +
                bool      boolean data type
         | 
| 81 | 
            +
                chtype    representation of a character in a window
         | 
| 82 | 
            +
                cchar_t   the wide-character equivalent of chtype
         | 
| 83 | 
            +
                attr_t    for WA_-style attributes
         | 
| 84 | 
            +
             | 
| 85 | 
            +
            The actual WINDOW and SCREEN objects used to store information are
         | 
| 86 | 
            +
            created by the corresponding routines and a pointer to them is provided.
         | 
| 87 | 
            +
            All manipulation is through that pointer.
         | 
| 88 | 
            +
             | 
| 89 | 
            +
             | 
| 90 | 
            +
            ### Variables
         | 
| 91 | 
            +
             | 
| 92 | 
            +
            The following variables are defined:
         | 
| 93 | 
            +
             | 
| 94 | 
            +
                LINES         number of lines on terminal screen
         | 
| 95 | 
            +
                COLS          number of columns on terminal screen
         | 
| 96 | 
            +
                stdscr        pointer to the default screen window    
         | 
| 97 | 
            +
                curscr        pointer to the current screen image
         | 
| 98 | 
            +
                SP            pointer to the current SCREEN struct
         | 
| 99 | 
            +
                Mouse_status  status of the mouse
         | 
| 100 | 
            +
                COLORS        number of colors available
         | 
| 101 | 
            +
                COLOR_PAIRS   number of color pairs available
         | 
| 102 | 
            +
                TABSIZE       size of one TAB block
         | 
| 103 | 
            +
                acs_map[]     alternate character set map  
         | 
| 104 | 
            +
                ttytype[]     terminal name/description    
         | 
| 105 | 
            +
             | 
| 106 | 
            +
             | 
| 107 | 
            +
            ### Constants
         | 
| 108 | 
            +
             | 
| 109 | 
            +
            The following constants are defined:
         | 
| 110 | 
            +
             | 
| 111 | 
            +
            #### General
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                FALSE         boolean false value
         | 
| 114 | 
            +
                TRUE          boolean true value
         | 
| 115 | 
            +
                NULL          zero pointer value
         | 
| 116 | 
            +
                ERR           value returned on error condition
         | 
| 117 | 
            +
                OK            value returned on successful completion
         | 
| 118 | 
            +
             | 
| 119 | 
            +
            #### Video Attributes
         | 
| 120 | 
            +
             | 
| 121 | 
            +
            Normally, attributes are a property of the character. 
         | 
| 122 | 
            +
             | 
| 123 | 
            +
            For chtype:
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                A_ALTCHARSET  use the alternate character set
         | 
| 126 | 
            +
                A_BLINK       bright background or blinking
         | 
| 127 | 
            +
                A_BOLD        bright foreground or bold
         | 
| 128 | 
            +
                A_DIM         half bright -- no effect in PDCurses
         | 
| 129 | 
            +
                A_INVIS       invisible
         | 
| 130 | 
            +
                A_ITALIC      italic
         | 
| 131 | 
            +
                A_LEFTLINE    line along the left edge
         | 
| 132 | 
            +
                A_PROTECT     protected (?) -- PDCurses renders this as a 
         | 
| 133 | 
            +
                              combination of the *LINE attributes
         | 
| 134 | 
            +
                A_REVERSE     reverse video
         | 
| 135 | 
            +
                A_RIGHTLINE   line along the right edge
         | 
| 136 | 
            +
                A_STANDOUT    terminal's best highlighting mode
         | 
| 137 | 
            +
                A_UNDERLINE   underline
         | 
| 138 | 
            +
             | 
| 139 | 
            +
                A_ATTRIBUTES  bit-mask to extract attributes
         | 
| 140 | 
            +
                A_CHARTEXT    bit-mask to extract a character
         | 
| 141 | 
            +
                A_COLOR       bit-mask to extract a color-pair
         | 
| 142 | 
            +
             | 
| 143 | 
            +
            Not all attributes will work on all terminals. A_RIGHTLINE, A_LEFTLINE
         | 
| 144 | 
            +
            and A_ITALIC are specific to PDCurses. A_INVIS and A_ITALIC are given
         | 
| 145 | 
            +
            the same value in PDCurses.
         | 
| 146 | 
            +
             | 
| 147 | 
            +
            For attr_t:
         | 
| 148 | 
            +
             | 
| 149 | 
            +
                WA_ALTCHARSET same as A_ALTCHARSET
         | 
| 150 | 
            +
                WA_BLINK      same as A_BLINK
         | 
| 151 | 
            +
                WA_BOLD       same as A_BOLD
         | 
| 152 | 
            +
                WA_DIM        same as A_DIM
         | 
| 153 | 
            +
                WA_INVIS      same as A_INVIS
         | 
| 154 | 
            +
                WA_LEFT       same as A_LEFTLINE
         | 
| 155 | 
            +
                WA_PROTECT    same as A_PROTECT
         | 
| 156 | 
            +
                WA_REVERSE    same as A_REVERSE
         | 
| 157 | 
            +
                WA_RIGHT      same as A_RIGHTLINE
         | 
| 158 | 
            +
                WA_STANDOUT   same as A_STANDOUT
         | 
| 159 | 
            +
                WA_UNDERLINE  same as A_UNDERLINE
         | 
| 160 | 
            +
             | 
| 161 | 
            +
            Note that while A_LEFTLINE and A_RIGHTLINE are PDCurses-specific,
         | 
| 162 | 
            +
            WA_LEFT and WA_RIGHT are standard. The following are also defined, for
         | 
| 163 | 
            +
            compatibility, but currently have no effect in PDCurses: WA_HORIZONTAL,
         | 
| 164 | 
            +
            WA_LOW, WA_TOP, WA_VERTICAL.
         | 
| 165 | 
            +
             | 
| 166 | 
            +
            ### The Alternate Character Set
         | 
| 167 | 
            +
             | 
| 168 | 
            +
            For use in chtypes and with related functions. These are a portable way
         | 
| 169 | 
            +
            to represent graphics characters on different terminals.
         | 
| 170 | 
            +
             | 
| 171 | 
            +
            VT100-compatible symbols -- box characters:
         | 
| 172 | 
            +
             | 
| 173 | 
            +
                ACS_ULCORNER  upper left box corner
         | 
| 174 | 
            +
                ACS_LLCORNER  lower left box corner
         | 
| 175 | 
            +
                ACS_URCORNER  upper right box corner
         | 
| 176 | 
            +
                ACS_LRCORNER  lower right box corner
         | 
| 177 | 
            +
                ACS_RTEE      right "T"
         | 
| 178 | 
            +
                ACS_LTEE      left "T"
         | 
| 179 | 
            +
                ACS_BTEE      bottom "T"
         | 
| 180 | 
            +
                ACS_TTEE      top "T"
         | 
| 181 | 
            +
                ACS_HLINE     horizontal line
         | 
| 182 | 
            +
                ACS_VLINE     vertical line
         | 
| 183 | 
            +
                ACS_PLUS      plus sign, cross, or four-corner piece
         | 
| 184 | 
            +
             | 
| 185 | 
            +
            VT100-compatible symbols -- other:
         | 
| 186 | 
            +
             | 
| 187 | 
            +
                ACS_S1        scan line 1
         | 
| 188 | 
            +
                ACS_S9        scan line 9
         | 
| 189 | 
            +
                ACS_DIAMOND   diamond
         | 
| 190 | 
            +
                ACS_CKBOARD   checkerboard -- 50% grey
         | 
| 191 | 
            +
                ACS_DEGREE    degree symbol
         | 
| 192 | 
            +
                ACS_PLMINUS   plus/minus sign
         | 
| 193 | 
            +
                ACS_BULLET    bullet
         | 
| 194 | 
            +
             | 
| 195 | 
            +
            Teletype 5410v1 symbols -- these are defined in SysV curses, but are not
         | 
| 196 | 
            +
            well-supported by most terminals. Stick to VT100 characters for optimum
         | 
| 197 | 
            +
            portability:
         | 
| 198 | 
            +
             | 
| 199 | 
            +
                ACS_LARROW    left arrow
         | 
| 200 | 
            +
                ACS_RARROW    right arrow
         | 
| 201 | 
            +
                ACS_DARROW    down arrow
         | 
| 202 | 
            +
                ACS_UARROW    up arrow
         | 
| 203 | 
            +
                ACS_BOARD     checkerboard -- lighter (less dense) than 
         | 
| 204 | 
            +
                              ACS_CKBOARD
         | 
| 205 | 
            +
                ACS_LANTERN   lantern symbol
         | 
| 206 | 
            +
                ACS_BLOCK     solid block
         | 
| 207 | 
            +
             | 
| 208 | 
            +
            That goes double for these -- undocumented SysV symbols. Don't use them:
         | 
| 209 | 
            +
             | 
| 210 | 
            +
                ACS_S3        scan line 3
         | 
| 211 | 
            +
                ACS_S7        scan line 7
         | 
| 212 | 
            +
                ACS_LEQUAL    less than or equal
         | 
| 213 | 
            +
                ACS_GEQUAL    greater than or equal
         | 
| 214 | 
            +
                ACS_PI        pi
         | 
| 215 | 
            +
                ACS_NEQUAL    not equal
         | 
| 216 | 
            +
                ACS_STERLING  pounds sterling symbol
         | 
| 217 | 
            +
             | 
| 218 | 
            +
            Box character aliases:
         | 
| 219 | 
            +
             | 
| 220 | 
            +
                ACS_BSSB      same as ACS_ULCORNER
         | 
| 221 | 
            +
                ACS_SSBB      same as ACS_LLCORNER
         | 
| 222 | 
            +
                ACS_BBSS      same as ACS_URCORNER
         | 
| 223 | 
            +
                ACS_SBBS      same as ACS_LRCORNER
         | 
| 224 | 
            +
                ACS_SBSS      same as ACS_RTEE
         | 
| 225 | 
            +
                ACS_SSSB      same as ACS_LTEE
         | 
| 226 | 
            +
                ACS_SSBS      same as ACS_BTEE
         | 
| 227 | 
            +
                ACS_BSSS      same as ACS_TTEE
         | 
| 228 | 
            +
                ACS_BSBS      same as ACS_HLINE
         | 
| 229 | 
            +
                ACS_SBSB      same as ACS_VLINE
         | 
| 230 | 
            +
                ACS_SSSS      same as ACS_PLUS
         | 
| 231 | 
            +
             | 
| 232 | 
            +
            For cchar_t and wide-character functions, WACS_ equivalents are also 
         | 
| 233 | 
            +
            defined.
         | 
| 234 | 
            +
             | 
| 235 | 
            +
            ### Colors
         | 
| 236 | 
            +
             | 
| 237 | 
            +
            For use with init_pair(), color_set(), etc.:
         | 
| 238 | 
            +
             | 
| 239 | 
            +
                COLOR_BLACK
         | 
| 240 | 
            +
                COLOR_BLUE
         | 
| 241 | 
            +
                COLOR_GREEN
         | 
| 242 | 
            +
                COLOR_CYAN
         | 
| 243 | 
            +
                COLOR_RED
         | 
| 244 | 
            +
                COLOR_MAGENTA
         | 
| 245 | 
            +
                COLOR_YELLOW
         | 
| 246 | 
            +
                COLOR_WHITE
         | 
| 247 | 
            +
             | 
| 248 | 
            +
            Use these instead of numeric values. The definition of the colors 
         | 
| 249 | 
            +
            depends on the implementation of curses.
         | 
| 250 | 
            +
             | 
| 251 | 
            +
             | 
| 252 | 
            +
            ### Input Values
         | 
| 253 | 
            +
             | 
| 254 | 
            +
            The following constants might be returned by getch() if keypad() has
         | 
| 255 | 
            +
            been enabled.  Note that not all of these may be supported on a
         | 
| 256 | 
            +
            particular terminal:
         | 
| 257 | 
            +
             | 
| 258 | 
            +
                KEY_BREAK     break key
         | 
| 259 | 
            +
                KEY_DOWN      the four arrow keys
         | 
| 260 | 
            +
                KEY_UP
         | 
| 261 | 
            +
                KEY_LEFT
         | 
| 262 | 
            +
                KEY_RIGHT
         | 
| 263 | 
            +
                KEY_HOME      home key (upward+left arrow)
         | 
| 264 | 
            +
                KEY_BACKSPACE backspace
         | 
| 265 | 
            +
                KEY_F0        function keys; space for 64 keys is reserved
         | 
| 266 | 
            +
                KEY_F(n)      (KEY_F0+(n))
         | 
| 267 | 
            +
                KEY_DL        delete line
         | 
| 268 | 
            +
                KEY_IL        insert line
         | 
| 269 | 
            +
                KEY_DC        delete character
         | 
| 270 | 
            +
                KEY_IC        insert character
         | 
| 271 | 
            +
                KEY_EIC       exit insert character mode
         | 
| 272 | 
            +
                KEY_CLEAR     clear screen
         | 
| 273 | 
            +
                KEY_EOS       clear to end of screen
         | 
| 274 | 
            +
                KEY_EOL       clear to end of line
         | 
| 275 | 
            +
                KEY_SF        scroll 1 line forwards
         | 
| 276 | 
            +
                KEY_SR        scroll 1 line backwards (reverse)
         | 
| 277 | 
            +
                KEY_NPAGE     next page
         | 
| 278 | 
            +
                KEY_PPAGE     previous page
         | 
| 279 | 
            +
                KEY_STAB      set tab
         | 
| 280 | 
            +
                KEY_CTAB      clear tab
         | 
| 281 | 
            +
                KEY_CATAB     clear all tabs
         | 
| 282 | 
            +
                KEY_ENTER     enter or send
         | 
| 283 | 
            +
                KEY_SRESET    soft (partial) reset
         | 
| 284 | 
            +
                KEY_RESET     reset or hard reset
         | 
| 285 | 
            +
                KEY_PRINT     print or copy
         | 
| 286 | 
            +
                KEY_LL        home down or bottom (lower left)
         | 
| 287 | 
            +
                KEY_A1        upper left of virtual keypad
         | 
| 288 | 
            +
                KEY_A3        upper right of virtual keypad
         | 
| 289 | 
            +
                KEY_B2        center of virtual keypad
         | 
| 290 | 
            +
                KEY_C1        lower left of virtual keypad
         | 
| 291 | 
            +
                KEY_C3        lower right of virtual keypad
         | 
| 292 | 
            +
             | 
| 293 | 
            +
                KEY_BTAB      Back tab key
         | 
| 294 | 
            +
                KEY_BEG       Beginning key
         | 
| 295 | 
            +
                KEY_CANCEL    Cancel key
         | 
| 296 | 
            +
                KEY_CLOSE     Close key
         | 
| 297 | 
            +
                KEY_COMMAND   Cmd (command) key
         | 
| 298 | 
            +
                KEY_COPY      Copy key
         | 
| 299 | 
            +
                KEY_CREATE    Create key
         | 
| 300 | 
            +
                KEY_END       End key
         | 
| 301 | 
            +
                KEY_EXIT      Exit key
         | 
| 302 | 
            +
                KEY_FIND      Find key
         | 
| 303 | 
            +
                KEY_HELP      Help key
         | 
| 304 | 
            +
                KEY_MARK      Mark key
         | 
| 305 | 
            +
                KEY_MESSAGE   Message key
         | 
| 306 | 
            +
                KEY_MOVE      Move key
         | 
| 307 | 
            +
                KEY_NEXT      Next object key
         | 
| 308 | 
            +
                KEY_OPEN      Open key
         | 
| 309 | 
            +
                KEY_OPTIONS   Options key
         | 
| 310 | 
            +
                KEY_PREVIOUS  Previous object key
         | 
| 311 | 
            +
                KEY_REDO      Redo key
         | 
| 312 | 
            +
                KEY_REFERENCE Reference key
         | 
| 313 | 
            +
                KEY_REFRESH   Refresh key
         | 
| 314 | 
            +
                KEY_REPLACE   Replace key
         | 
| 315 | 
            +
                KEY_RESTART   Restart key
         | 
| 316 | 
            +
                KEY_RESUME    Resume key
         | 
| 317 | 
            +
                KEY_SAVE      Save key
         | 
| 318 | 
            +
                KEY_SBEG      Shifted beginning key
         | 
| 319 | 
            +
                KEY_SCANCEL   Shifted cancel key
         | 
| 320 | 
            +
                KEY_SCOMMAND  Shifted command key
         | 
| 321 | 
            +
                KEY_SCOPY     Shifted copy key
         | 
| 322 | 
            +
                KEY_SCREATE   Shifted create key
         | 
| 323 | 
            +
                KEY_SDC       Shifted delete char key
         | 
| 324 | 
            +
                KEY_SDL       Shifted delete line key
         | 
| 325 | 
            +
                KEY_SELECT    Select key
         | 
| 326 | 
            +
                KEY_SEND      Shifted end key
         | 
| 327 | 
            +
                KEY_SEOL      Shifted clear line key
         | 
| 328 | 
            +
                KEY_SEXIT     Shifted exit key
         | 
| 329 | 
            +
                KEY_SFIND     Shifted find key
         | 
| 330 | 
            +
                KEY_SHELP     Shifted help key
         | 
| 331 | 
            +
                KEY_SHOME     Shifted home key
         | 
| 332 | 
            +
                KEY_SIC       Shifted input key
         | 
| 333 | 
            +
                KEY_SLEFT     Shifted left arrow key
         | 
| 334 | 
            +
                KEY_SMESSAGE  Shifted message key
         | 
| 335 | 
            +
                KEY_SMOVE     Shifted move key
         | 
| 336 | 
            +
                KEY_SNEXT     Shifted next key
         | 
| 337 | 
            +
                KEY_SOPTIONS  Shifted options key
         | 
| 338 | 
            +
                KEY_SPREVIOUS Shifted prev key
         | 
| 339 | 
            +
                KEY_SPRINT    Shifted print key
         | 
| 340 | 
            +
                KEY_SREDO     Shifted redo key
         | 
| 341 | 
            +
                KEY_SREPLACE  Shifted replace key
         | 
| 342 | 
            +
                KEY_SRIGHT    Shifted right arrow
         | 
| 343 | 
            +
                KEY_SRSUME    Shifted resume key
         | 
| 344 | 
            +
                KEY_SSAVE     Shifted save key
         | 
| 345 | 
            +
                KEY_SSUSPEND  Shifted suspend key
         | 
| 346 | 
            +
                KEY_SUNDO     Shifted undo key
         | 
| 347 | 
            +
                KEY_SUSPEND   Suspend key
         | 
| 348 | 
            +
                KEY_UNDO      Undo key
         | 
| 349 | 
            +
             | 
| 350 | 
            +
            The virtual keypad is arranged like this:
         | 
| 351 | 
            +
             | 
| 352 | 
            +
                A1     up     A3
         | 
| 353 | 
            +
                left          B2   right
         | 
| 354 | 
            +
                C1    down    C3
         | 
| 355 | 
            +
             | 
| 356 | 
            +
            This list is incomplete -- see curses.h for the full list, and use the
         | 
| 357 | 
            +
            testcurs demo to see what values are actually returned. The above are
         | 
| 358 | 
            +
            just the keys required by X/Open. In particular, PDCurses defines many
         | 
| 359 | 
            +
            CTL_ and ALT_ combinations; these are not portable.
         | 
| 360 | 
            +
             | 
| 361 | 
            +
            --------------------------------------------------------------------------
         |