curses 1.2.6 → 1.4.0
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 +28 -0
- data/.gitmodules +1 -1
- data/.travis.yml +6 -3
- data/History.md +40 -0
- data/README.md +4 -1
- data/Rakefile +0 -83
- data/curses.gemspec +2 -3
- data/ext/curses/curses.c +1271 -151
- data/ext/curses/extconf.rb +140 -17
- data/lib/curses.rb +5 -12
- data/sample/form.rb +52 -0
- data/sample/menu.rb +1 -1
- 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 +255 -21
@@ -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
|
+
--------------------------------------------------------------------------
|