curses 1.4.6 → 1.5.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/push_gem.yml +6 -4
- data/README.md +8 -1
- data/curses.gemspec +2 -2
- data/ext/curses/curses.c +188 -12
- data/ext/curses/extconf.rb +3 -2
- data/lib/curses.rb +7 -0
- data/sample/attr_demo.rb +4 -2
- data/sample/screen.rb +9 -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/Makefile +27 -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 +105 -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/Makefile +37 -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 +132 -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 +129 -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 +135 -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 +135 -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 +249 -8
@@ -0,0 +1,324 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include <curspriv.h>
|
4
|
+
|
5
|
+
/*man-start**************************************************************
|
6
|
+
|
7
|
+
inopts
|
8
|
+
------
|
9
|
+
|
10
|
+
### Synopsis
|
11
|
+
|
12
|
+
int cbreak(void);
|
13
|
+
int nocbreak(void);
|
14
|
+
int echo(void);
|
15
|
+
int noecho(void);
|
16
|
+
int halfdelay(int tenths);
|
17
|
+
int intrflush(WINDOW *win, bool bf);
|
18
|
+
int keypad(WINDOW *win, bool bf);
|
19
|
+
int meta(WINDOW *win, bool bf);
|
20
|
+
int nl(void);
|
21
|
+
int nonl(void);
|
22
|
+
int nodelay(WINDOW *win, bool bf);
|
23
|
+
int notimeout(WINDOW *win, bool bf);
|
24
|
+
int raw(void);
|
25
|
+
int noraw(void);
|
26
|
+
void noqiflush(void);
|
27
|
+
void qiflush(void);
|
28
|
+
void timeout(int delay);
|
29
|
+
void wtimeout(WINDOW *win, int delay);
|
30
|
+
int typeahead(int fildes);
|
31
|
+
|
32
|
+
int crmode(void);
|
33
|
+
int nocrmode(void);
|
34
|
+
|
35
|
+
### Description
|
36
|
+
|
37
|
+
cbreak() and nocbreak() toggle cbreak mode. In cbreak mode,
|
38
|
+
characters typed by the user are made available immediately, and
|
39
|
+
erase/kill character processing is not performed. In nocbreak
|
40
|
+
mode, typed characters are buffered until a newline or carriage
|
41
|
+
return. Interrupt and flow control characters are unaffected by
|
42
|
+
this mode. PDCurses always starts in cbreak mode.
|
43
|
+
|
44
|
+
echo() and noecho() control whether typed characters are echoed
|
45
|
+
by the input routine. Initially, input characters are echoed.
|
46
|
+
Subsequent calls to echo() and noecho() do not flush type-ahead.
|
47
|
+
|
48
|
+
halfdelay() is similar to cbreak(), but allows for a time limit
|
49
|
+
to be specified, in tenths of a second. This causes getch() to
|
50
|
+
block for that period before returning ERR if no key has been
|
51
|
+
received. tenths must be between 1 and 255.
|
52
|
+
|
53
|
+
keypad() controls whether getch() returns function/special keys
|
54
|
+
as single key codes (e.g., the left arrow key as KEY_LEFT). Per
|
55
|
+
X/Open, the default for keypad mode is OFF. You'll probably want
|
56
|
+
it on. With keypad mode off, if a special key is pressed,
|
57
|
+
getch() does nothing or returns ERR.
|
58
|
+
|
59
|
+
nodelay() controls whether wgetch() is a non-blocking call. If
|
60
|
+
the option is enabled, and no input is ready, wgetch() will
|
61
|
+
return ERR. If disabled, wgetch() will hang until input is
|
62
|
+
ready.
|
63
|
+
|
64
|
+
nl() enables the translation of a carriage return into a newline
|
65
|
+
on input. nonl() disables this. Initially, the translation does
|
66
|
+
occur.
|
67
|
+
|
68
|
+
raw() and noraw() toggle raw mode. Raw mode is similar to cbreak
|
69
|
+
mode, in that characters typed are immediately passed through to
|
70
|
+
the user program. The difference is that in raw mode, the INTR,
|
71
|
+
QUIT, SUSP, and STOP characters are passed through without being
|
72
|
+
interpreted, and without generating a signal.
|
73
|
+
|
74
|
+
In PDCurses, the meta() function sets raw mode on or off.
|
75
|
+
|
76
|
+
timeout() and wtimeout() set blocking or non-blocking reads for
|
77
|
+
the specified window. The delay is measured in milliseconds. If
|
78
|
+
it's negative, a blocking read is used; if zero, then non-
|
79
|
+
blocking reads are done -- if no input is waiting, ERR is
|
80
|
+
returned immediately. If the delay is positive, the read blocks
|
81
|
+
for the delay period; if the period expires, ERR is returned.
|
82
|
+
|
83
|
+
intrflush(), notimeout(), noqiflush(), qiflush() and typeahead()
|
84
|
+
do nothing in PDCurses, but are included for compatibility with
|
85
|
+
other curses implementations.
|
86
|
+
|
87
|
+
crmode() and nocrmode() are archaic equivalents to cbreak() and
|
88
|
+
nocbreak(), respectively.
|
89
|
+
|
90
|
+
### Return Value
|
91
|
+
|
92
|
+
All functions return OK on success and ERR on error.
|
93
|
+
|
94
|
+
### Portability
|
95
|
+
X/Open BSD SYS V
|
96
|
+
cbreak Y Y Y
|
97
|
+
nocbreak Y Y Y
|
98
|
+
echo Y Y Y
|
99
|
+
noecho Y Y Y
|
100
|
+
halfdelay Y - Y
|
101
|
+
intrflush Y - Y
|
102
|
+
keypad Y - Y
|
103
|
+
meta Y - Y
|
104
|
+
nl Y Y Y
|
105
|
+
nonl Y Y Y
|
106
|
+
nodelay Y - Y
|
107
|
+
notimeout Y - Y
|
108
|
+
raw Y Y Y
|
109
|
+
noraw Y Y Y
|
110
|
+
noqiflush Y - Y
|
111
|
+
qiflush Y - Y
|
112
|
+
timeout Y - Y
|
113
|
+
wtimeout Y - Y
|
114
|
+
typeahead Y - Y
|
115
|
+
crmode -
|
116
|
+
nocrmode -
|
117
|
+
|
118
|
+
**man-end****************************************************************/
|
119
|
+
|
120
|
+
int cbreak(void)
|
121
|
+
{
|
122
|
+
PDC_LOG(("cbreak() - called\n"));
|
123
|
+
|
124
|
+
SP->cbreak = TRUE;
|
125
|
+
|
126
|
+
return OK;
|
127
|
+
}
|
128
|
+
|
129
|
+
int nocbreak(void)
|
130
|
+
{
|
131
|
+
PDC_LOG(("nocbreak() - called\n"));
|
132
|
+
|
133
|
+
SP->cbreak = FALSE;
|
134
|
+
SP->delaytenths = 0;
|
135
|
+
|
136
|
+
return OK;
|
137
|
+
}
|
138
|
+
|
139
|
+
int echo(void)
|
140
|
+
{
|
141
|
+
PDC_LOG(("echo() - called\n"));
|
142
|
+
|
143
|
+
SP->echo = TRUE;
|
144
|
+
|
145
|
+
return OK;
|
146
|
+
}
|
147
|
+
|
148
|
+
int noecho(void)
|
149
|
+
{
|
150
|
+
PDC_LOG(("noecho() - called\n"));
|
151
|
+
|
152
|
+
SP->echo = FALSE;
|
153
|
+
|
154
|
+
return OK;
|
155
|
+
}
|
156
|
+
|
157
|
+
int halfdelay(int tenths)
|
158
|
+
{
|
159
|
+
PDC_LOG(("halfdelay() - called\n"));
|
160
|
+
|
161
|
+
if (tenths < 1 || tenths > 255)
|
162
|
+
return ERR;
|
163
|
+
|
164
|
+
SP->delaytenths = tenths;
|
165
|
+
|
166
|
+
return OK;
|
167
|
+
}
|
168
|
+
|
169
|
+
int intrflush(WINDOW *win, bool bf)
|
170
|
+
{
|
171
|
+
PDC_LOG(("intrflush() - called\n"));
|
172
|
+
|
173
|
+
return OK;
|
174
|
+
}
|
175
|
+
|
176
|
+
int keypad(WINDOW *win, bool bf)
|
177
|
+
{
|
178
|
+
PDC_LOG(("keypad() - called\n"));
|
179
|
+
|
180
|
+
if (!win)
|
181
|
+
return ERR;
|
182
|
+
|
183
|
+
win->_use_keypad = bf;
|
184
|
+
|
185
|
+
return OK;
|
186
|
+
}
|
187
|
+
|
188
|
+
int meta(WINDOW *win, bool bf)
|
189
|
+
{
|
190
|
+
PDC_LOG(("meta() - called\n"));
|
191
|
+
|
192
|
+
SP->raw_inp = bf;
|
193
|
+
|
194
|
+
return OK;
|
195
|
+
}
|
196
|
+
|
197
|
+
int nl(void)
|
198
|
+
{
|
199
|
+
PDC_LOG(("nl() - called\n"));
|
200
|
+
|
201
|
+
SP->autocr = TRUE;
|
202
|
+
|
203
|
+
return OK;
|
204
|
+
}
|
205
|
+
|
206
|
+
int nonl(void)
|
207
|
+
{
|
208
|
+
PDC_LOG(("nonl() - called\n"));
|
209
|
+
|
210
|
+
SP->autocr = FALSE;
|
211
|
+
|
212
|
+
return OK;
|
213
|
+
}
|
214
|
+
|
215
|
+
int nodelay(WINDOW *win, bool flag)
|
216
|
+
{
|
217
|
+
PDC_LOG(("nodelay() - called\n"));
|
218
|
+
|
219
|
+
if (!win)
|
220
|
+
return ERR;
|
221
|
+
|
222
|
+
win->_nodelay = flag;
|
223
|
+
|
224
|
+
return OK;
|
225
|
+
}
|
226
|
+
|
227
|
+
int notimeout(WINDOW *win, bool flag)
|
228
|
+
{
|
229
|
+
PDC_LOG(("notimeout() - called\n"));
|
230
|
+
|
231
|
+
return OK;
|
232
|
+
}
|
233
|
+
|
234
|
+
int raw(void)
|
235
|
+
{
|
236
|
+
PDC_LOG(("raw() - called\n"));
|
237
|
+
|
238
|
+
PDC_set_keyboard_binary(TRUE);
|
239
|
+
SP->raw_inp = TRUE;
|
240
|
+
|
241
|
+
return OK;
|
242
|
+
}
|
243
|
+
|
244
|
+
int noraw(void)
|
245
|
+
{
|
246
|
+
PDC_LOG(("noraw() - called\n"));
|
247
|
+
|
248
|
+
PDC_set_keyboard_binary(FALSE);
|
249
|
+
SP->raw_inp = FALSE;
|
250
|
+
|
251
|
+
return OK;
|
252
|
+
}
|
253
|
+
|
254
|
+
void noqiflush(void)
|
255
|
+
{
|
256
|
+
PDC_LOG(("noqiflush() - called\n"));
|
257
|
+
}
|
258
|
+
|
259
|
+
void qiflush(void)
|
260
|
+
{
|
261
|
+
PDC_LOG(("qiflush() - called\n"));
|
262
|
+
}
|
263
|
+
|
264
|
+
int typeahead(int fildes)
|
265
|
+
{
|
266
|
+
PDC_LOG(("typeahead() - called\n"));
|
267
|
+
|
268
|
+
return OK;
|
269
|
+
}
|
270
|
+
|
271
|
+
void wtimeout(WINDOW *win, int delay)
|
272
|
+
{
|
273
|
+
PDC_LOG(("wtimeout() - called\n"));
|
274
|
+
|
275
|
+
if (!win)
|
276
|
+
return;
|
277
|
+
|
278
|
+
if (delay < 0)
|
279
|
+
{
|
280
|
+
/* This causes a blocking read on the window, so turn on delay
|
281
|
+
mode */
|
282
|
+
|
283
|
+
win->_nodelay = FALSE;
|
284
|
+
win->_delayms = 0;
|
285
|
+
}
|
286
|
+
else if (!delay)
|
287
|
+
{
|
288
|
+
/* This causes a non-blocking read on the window, so turn off
|
289
|
+
delay mode */
|
290
|
+
|
291
|
+
win->_nodelay = TRUE;
|
292
|
+
win->_delayms = 0;
|
293
|
+
}
|
294
|
+
else
|
295
|
+
{
|
296
|
+
/* This causes the read on the window to delay for the number of
|
297
|
+
milliseconds. Also forces the window into non-blocking read
|
298
|
+
mode */
|
299
|
+
|
300
|
+
/*win->_nodelay = TRUE;*/
|
301
|
+
win->_delayms = delay;
|
302
|
+
}
|
303
|
+
}
|
304
|
+
|
305
|
+
void timeout(int delay)
|
306
|
+
{
|
307
|
+
PDC_LOG(("timeout() - called\n"));
|
308
|
+
|
309
|
+
wtimeout(stdscr, delay);
|
310
|
+
}
|
311
|
+
|
312
|
+
int crmode(void)
|
313
|
+
{
|
314
|
+
PDC_LOG(("crmode() - called\n"));
|
315
|
+
|
316
|
+
return cbreak();
|
317
|
+
}
|
318
|
+
|
319
|
+
int nocrmode(void)
|
320
|
+
{
|
321
|
+
PDC_LOG(("nocrmode() - called\n"));
|
322
|
+
|
323
|
+
return nocbreak();
|
324
|
+
}
|
@@ -0,0 +1,271 @@
|
|
1
|
+
/* Public Domain Curses */
|
2
|
+
|
3
|
+
#include <curspriv.h>
|
4
|
+
|
5
|
+
/*man-start**************************************************************
|
6
|
+
|
7
|
+
insch
|
8
|
+
-----
|
9
|
+
|
10
|
+
### Synopsis
|
11
|
+
|
12
|
+
int insch(chtype ch);
|
13
|
+
int winsch(WINDOW *win, chtype ch);
|
14
|
+
int mvinsch(int y, int x, chtype ch);
|
15
|
+
int mvwinsch(WINDOW *win, int y, int x, chtype ch);
|
16
|
+
|
17
|
+
int insrawch(chtype ch);
|
18
|
+
int winsrawch(WINDOW *win, chtype ch);
|
19
|
+
int mvinsrawch(int y, int x, chtype ch);
|
20
|
+
int mvwinsrawch(WINDOW *win, int y, int x, chtype ch);
|
21
|
+
|
22
|
+
int ins_wch(const cchar_t *wch);
|
23
|
+
int wins_wch(WINDOW *win, const cchar_t *wch);
|
24
|
+
int mvins_wch(int y, int x, const cchar_t *wch);
|
25
|
+
int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch);
|
26
|
+
|
27
|
+
### Description
|
28
|
+
|
29
|
+
The insch() functions insert a chtype into the window at the
|
30
|
+
current or specified cursor position. The cursor is NOT
|
31
|
+
advanced. A newline is equivalent to clrtoeol(); tabs are
|
32
|
+
expanded; other control characters are converted as with
|
33
|
+
unctrl().
|
34
|
+
|
35
|
+
The ins_wch() functions are the wide-character
|
36
|
+
equivalents, taking cchar_t pointers rather than chtypes.
|
37
|
+
|
38
|
+
Video attributes can be combined with a character by ORing
|
39
|
+
them into the parameter. Text, including attributes, can be
|
40
|
+
copied from one place to another using inch() and insch().
|
41
|
+
|
42
|
+
insrawch() etc. are PDCurses-specific wrappers for insch() etc.
|
43
|
+
that disable the translation of control characters.
|
44
|
+
|
45
|
+
### Return Value
|
46
|
+
|
47
|
+
All functions return OK on success and ERR on error.
|
48
|
+
|
49
|
+
### Portability
|
50
|
+
X/Open BSD SYS V
|
51
|
+
insch Y Y Y
|
52
|
+
winsch Y Y Y
|
53
|
+
mvinsch Y Y Y
|
54
|
+
mvwinsch Y Y Y
|
55
|
+
insrawch - - -
|
56
|
+
winsrawch - - -
|
57
|
+
ins_wch Y
|
58
|
+
wins_wch Y
|
59
|
+
mvins_wch Y
|
60
|
+
mvwins_wch Y
|
61
|
+
|
62
|
+
**man-end****************************************************************/
|
63
|
+
|
64
|
+
#include <string.h>
|
65
|
+
|
66
|
+
int winsch(WINDOW *win, chtype ch)
|
67
|
+
{
|
68
|
+
int x, y;
|
69
|
+
chtype attr;
|
70
|
+
bool xlat;
|
71
|
+
|
72
|
+
PDC_LOG(("winsch() - called: win=%p ch=%x (text=%c attr=0x%x)\n",
|
73
|
+
win, ch, ch & A_CHARTEXT, ch & A_ATTRIBUTES));
|
74
|
+
|
75
|
+
if (!win)
|
76
|
+
return ERR;
|
77
|
+
|
78
|
+
x = win->_curx;
|
79
|
+
y = win->_cury;
|
80
|
+
|
81
|
+
if (y > win->_maxy || x > win->_maxx || y < 0 || x < 0)
|
82
|
+
return ERR;
|
83
|
+
|
84
|
+
xlat = !SP->raw_out && !(ch & A_ALTCHARSET);
|
85
|
+
attr = ch & A_ATTRIBUTES;
|
86
|
+
ch &= A_CHARTEXT;
|
87
|
+
|
88
|
+
if (xlat && (ch < ' ' || ch == 0x7f))
|
89
|
+
{
|
90
|
+
int x2;
|
91
|
+
|
92
|
+
switch ((int)ch)
|
93
|
+
{
|
94
|
+
case '\t':
|
95
|
+
for (x2 = ((x / TABSIZE) + 1) * TABSIZE; x < x2; x++)
|
96
|
+
{
|
97
|
+
if (winsch(win, attr | ' ') == ERR)
|
98
|
+
return ERR;
|
99
|
+
}
|
100
|
+
return OK;
|
101
|
+
|
102
|
+
case '\n':
|
103
|
+
wclrtoeol(win);
|
104
|
+
break;
|
105
|
+
|
106
|
+
case 0x7f:
|
107
|
+
if (winsch(win, attr | '?') == ERR)
|
108
|
+
return ERR;
|
109
|
+
|
110
|
+
return winsch(win, attr | '^');
|
111
|
+
|
112
|
+
default:
|
113
|
+
/* handle control chars */
|
114
|
+
|
115
|
+
if (winsch(win, attr | (ch + '@')) == ERR)
|
116
|
+
return ERR;
|
117
|
+
|
118
|
+
return winsch(win, attr | '^');
|
119
|
+
}
|
120
|
+
}
|
121
|
+
else
|
122
|
+
{
|
123
|
+
int maxx;
|
124
|
+
chtype *temp;
|
125
|
+
|
126
|
+
/* If the incoming character doesn't have its own attribute,
|
127
|
+
then use the current attributes for the window. If it has
|
128
|
+
attributes but not a color component, OR the attributes to
|
129
|
+
the current attributes for the window. If it has a color
|
130
|
+
component, use the attributes solely from the incoming
|
131
|
+
character. */
|
132
|
+
|
133
|
+
if (!(attr & A_COLOR))
|
134
|
+
attr |= win->_attrs;
|
135
|
+
|
136
|
+
/* wrs (4/10/93): Apply the same sort of logic for the window
|
137
|
+
background, in that it only takes precedence if other color
|
138
|
+
attributes are not there and that the background character
|
139
|
+
will only print if the printing character is blank. */
|
140
|
+
|
141
|
+
if (!(attr & A_COLOR))
|
142
|
+
attr |= win->_bkgd & A_ATTRIBUTES;
|
143
|
+
else
|
144
|
+
attr |= win->_bkgd & (A_ATTRIBUTES ^ A_COLOR);
|
145
|
+
|
146
|
+
if (ch == ' ')
|
147
|
+
ch = win->_bkgd & A_CHARTEXT;
|
148
|
+
|
149
|
+
/* Add the attribute back into the character. */
|
150
|
+
|
151
|
+
ch |= attr;
|
152
|
+
|
153
|
+
maxx = win->_maxx;
|
154
|
+
temp = &win->_y[y][x];
|
155
|
+
|
156
|
+
memmove(temp + 1, temp, (maxx - x - 1) * sizeof(chtype));
|
157
|
+
|
158
|
+
win->_lastch[y] = maxx - 1;
|
159
|
+
|
160
|
+
if ((win->_firstch[y] == _NO_CHANGE) || (win->_firstch[y] > x))
|
161
|
+
win->_firstch[y] = x;
|
162
|
+
|
163
|
+
*temp = ch;
|
164
|
+
}
|
165
|
+
|
166
|
+
PDC_sync(win);
|
167
|
+
|
168
|
+
return OK;
|
169
|
+
}
|
170
|
+
|
171
|
+
int insch(chtype ch)
|
172
|
+
{
|
173
|
+
PDC_LOG(("insch() - called\n"));
|
174
|
+
|
175
|
+
return winsch(stdscr, ch);
|
176
|
+
}
|
177
|
+
|
178
|
+
int mvinsch(int y, int x, chtype ch)
|
179
|
+
{
|
180
|
+
PDC_LOG(("mvinsch() - called\n"));
|
181
|
+
|
182
|
+
if (move(y, x) == ERR)
|
183
|
+
return ERR;
|
184
|
+
|
185
|
+
return winsch(stdscr, ch);
|
186
|
+
}
|
187
|
+
|
188
|
+
int mvwinsch(WINDOW *win, int y, int x, chtype ch)
|
189
|
+
{
|
190
|
+
PDC_LOG(("mvwinsch() - called\n"));
|
191
|
+
|
192
|
+
if (wmove(win, y, x) == ERR)
|
193
|
+
return ERR;
|
194
|
+
|
195
|
+
return winsch(win, ch);
|
196
|
+
}
|
197
|
+
|
198
|
+
int winsrawch(WINDOW *win, chtype ch)
|
199
|
+
{
|
200
|
+
PDC_LOG(("winsrawch() - called: win=%p ch=%x "
|
201
|
+
"(char=%c attr=0x%x)\n", win, ch,
|
202
|
+
ch & A_CHARTEXT, ch & A_ATTRIBUTES));
|
203
|
+
|
204
|
+
if ((ch & A_CHARTEXT) < ' ' || (ch & A_CHARTEXT) == 0x7f)
|
205
|
+
ch |= A_ALTCHARSET;
|
206
|
+
|
207
|
+
return winsch(win, ch);
|
208
|
+
}
|
209
|
+
|
210
|
+
int insrawch(chtype ch)
|
211
|
+
{
|
212
|
+
PDC_LOG(("insrawch() - called\n"));
|
213
|
+
|
214
|
+
return winsrawch(stdscr, ch);
|
215
|
+
}
|
216
|
+
|
217
|
+
int mvinsrawch(int y, int x, chtype ch)
|
218
|
+
{
|
219
|
+
PDC_LOG(("mvinsrawch() - called\n"));
|
220
|
+
|
221
|
+
if (move(y, x) == ERR)
|
222
|
+
return ERR;
|
223
|
+
|
224
|
+
return winsrawch(stdscr, ch);
|
225
|
+
}
|
226
|
+
|
227
|
+
int mvwinsrawch(WINDOW *win, int y, int x, chtype ch)
|
228
|
+
{
|
229
|
+
PDC_LOG(("mvwinsrawch() - called\n"));
|
230
|
+
|
231
|
+
if (wmove(win, y, x) == ERR)
|
232
|
+
return ERR;
|
233
|
+
|
234
|
+
return winsrawch(win, ch);
|
235
|
+
}
|
236
|
+
|
237
|
+
#ifdef PDC_WIDE
|
238
|
+
int wins_wch(WINDOW *win, const cchar_t *wch)
|
239
|
+
{
|
240
|
+
PDC_LOG(("wins_wch() - called\n"));
|
241
|
+
|
242
|
+
return wch ? winsch(win, *wch) : ERR;
|
243
|
+
}
|
244
|
+
|
245
|
+
int ins_wch(const cchar_t *wch)
|
246
|
+
{
|
247
|
+
PDC_LOG(("ins_wch() - called\n"));
|
248
|
+
|
249
|
+
return wins_wch(stdscr, wch);
|
250
|
+
}
|
251
|
+
|
252
|
+
int mvins_wch(int y, int x, const cchar_t *wch)
|
253
|
+
{
|
254
|
+
PDC_LOG(("mvins_wch() - called\n"));
|
255
|
+
|
256
|
+
if (move(y, x) == ERR)
|
257
|
+
return ERR;
|
258
|
+
|
259
|
+
return wins_wch(stdscr, wch);
|
260
|
+
}
|
261
|
+
|
262
|
+
int mvwins_wch(WINDOW *win, int y, int x, const cchar_t *wch)
|
263
|
+
{
|
264
|
+
PDC_LOG(("mvwins_wch() - called\n"));
|
265
|
+
|
266
|
+
if (wmove(win, y, x) == ERR)
|
267
|
+
return ERR;
|
268
|
+
|
269
|
+
return wins_wch(win, wch);
|
270
|
+
}
|
271
|
+
#endif
|