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.
Files changed (254) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/push_gem.yml +6 -4
  3. data/README.md +8 -1
  4. data/curses.gemspec +2 -2
  5. data/ext/curses/curses.c +188 -12
  6. data/ext/curses/extconf.rb +3 -2
  7. data/lib/curses.rb +7 -0
  8. data/sample/attr_demo.rb +4 -2
  9. data/sample/screen.rb +9 -0
  10. data/vendor/PDCurses/.gitignore +47 -0
  11. data/vendor/PDCurses/.travis.yml +49 -0
  12. data/vendor/PDCurses/CMakeLists.txt +68 -0
  13. data/vendor/PDCurses/HISTORY.md +2036 -0
  14. data/vendor/PDCurses/IMPLEMNT.md +327 -0
  15. data/vendor/PDCurses/Makefile +27 -0
  16. data/vendor/PDCurses/README.md +77 -0
  17. data/vendor/PDCurses/acs_defs.h +265 -0
  18. data/vendor/PDCurses/appveyor.yml +218 -0
  19. data/vendor/PDCurses/cmake/README.md +71 -0
  20. data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
  21. data/vendor/PDCurses/cmake/build_options.cmake +25 -0
  22. data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
  23. data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
  24. data/vendor/PDCurses/cmake/get_version.cmake +17 -0
  25. data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
  26. data/vendor/PDCurses/cmake/project_common.cmake +121 -0
  27. data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
  28. data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
  29. data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
  30. data/vendor/PDCurses/cmake/version.in.cmake +73 -0
  31. data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
  32. data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
  33. data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
  34. data/vendor/PDCurses/curses.h +1846 -0
  35. data/vendor/PDCurses/curspriv.h +134 -0
  36. data/vendor/PDCurses/demos/README.md +25 -0
  37. data/vendor/PDCurses/demos/firework.c +144 -0
  38. data/vendor/PDCurses/demos/newtest.c +581 -0
  39. data/vendor/PDCurses/demos/ozdemo.c +447 -0
  40. data/vendor/PDCurses/demos/ptest.c +283 -0
  41. data/vendor/PDCurses/demos/rain.c +157 -0
  42. data/vendor/PDCurses/demos/testcurs.c +1607 -0
  43. data/vendor/PDCurses/demos/tui.c +1048 -0
  44. data/vendor/PDCurses/demos/tui.h +65 -0
  45. data/vendor/PDCurses/demos/tuidemo.c +233 -0
  46. data/vendor/PDCurses/demos/version.c +61 -0
  47. data/vendor/PDCurses/demos/worm.c +432 -0
  48. data/vendor/PDCurses/demos/xmas.c +955 -0
  49. data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
  50. data/vendor/PDCurses/dos/Makefile +105 -0
  51. data/vendor/PDCurses/dos/Makefile.bcc +83 -0
  52. data/vendor/PDCurses/dos/Makefile.dmc +257 -0
  53. data/vendor/PDCurses/dos/Makefile.msc +113 -0
  54. data/vendor/PDCurses/dos/Makefile.wcc +107 -0
  55. data/vendor/PDCurses/dos/README.md +51 -0
  56. data/vendor/PDCurses/dos/bccdos.lrf +9 -0
  57. data/vendor/PDCurses/dos/mscdos.lrf +50 -0
  58. data/vendor/PDCurses/dos/pdcclip.c +132 -0
  59. data/vendor/PDCurses/dos/pdcdisp.c +135 -0
  60. data/vendor/PDCurses/dos/pdcdos.h +194 -0
  61. data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
  62. data/vendor/PDCurses/dos/pdckbd.c +513 -0
  63. data/vendor/PDCurses/dos/pdcscrn.c +785 -0
  64. data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
  65. data/vendor/PDCurses/dos/pdcutil.c +212 -0
  66. data/vendor/PDCurses/libobjs.mif +26 -0
  67. data/vendor/PDCurses/makedist.mif +20 -0
  68. data/vendor/PDCurses/man/Makefile +37 -0
  69. data/vendor/PDCurses/man/README.md +21 -0
  70. data/vendor/PDCurses/man/intro.md +361 -0
  71. data/vendor/PDCurses/man/manext.c +119 -0
  72. data/vendor/PDCurses/man/sdl.md +152 -0
  73. data/vendor/PDCurses/man/sdl2.md +58 -0
  74. data/vendor/PDCurses/man/x11.md +407 -0
  75. data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
  76. data/vendor/PDCurses/ncurses/README.md +26 -0
  77. data/vendor/PDCurses/ncurses/makefile +29 -0
  78. data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
  79. data/vendor/PDCurses/os2/Makefile +132 -0
  80. data/vendor/PDCurses/os2/Makefile.bcc +90 -0
  81. data/vendor/PDCurses/os2/Makefile.wcc +43 -0
  82. data/vendor/PDCurses/os2/README.md +43 -0
  83. data/vendor/PDCurses/os2/iccos2.lrf +50 -0
  84. data/vendor/PDCurses/os2/iccos2.mak +256 -0
  85. data/vendor/PDCurses/os2/pdcclip.c +188 -0
  86. data/vendor/PDCurses/os2/pdcdisp.c +93 -0
  87. data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
  88. data/vendor/PDCurses/os2/pdckbd.c +521 -0
  89. data/vendor/PDCurses/os2/pdcos2.h +55 -0
  90. data/vendor/PDCurses/os2/pdcscrn.c +449 -0
  91. data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
  92. data/vendor/PDCurses/os2/pdcutil.c +52 -0
  93. data/vendor/PDCurses/panel.h +56 -0
  94. data/vendor/PDCurses/pdcurses/README.md +25 -0
  95. data/vendor/PDCurses/pdcurses/addch.c +693 -0
  96. data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
  97. data/vendor/PDCurses/pdcurses/addstr.c +240 -0
  98. data/vendor/PDCurses/pdcurses/attr.c +359 -0
  99. data/vendor/PDCurses/pdcurses/beep.c +68 -0
  100. data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
  101. data/vendor/PDCurses/pdcurses/border.c +411 -0
  102. data/vendor/PDCurses/pdcurses/clear.c +159 -0
  103. data/vendor/PDCurses/pdcurses/color.c +298 -0
  104. data/vendor/PDCurses/pdcurses/debug.c +109 -0
  105. data/vendor/PDCurses/pdcurses/delch.c +96 -0
  106. data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
  107. data/vendor/PDCurses/pdcurses/deprec.c +27 -0
  108. data/vendor/PDCurses/pdcurses/getch.c +417 -0
  109. data/vendor/PDCurses/pdcurses/getstr.c +474 -0
  110. data/vendor/PDCurses/pdcurses/getyx.c +139 -0
  111. data/vendor/PDCurses/pdcurses/inch.c +127 -0
  112. data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
  113. data/vendor/PDCurses/pdcurses/initscr.c +367 -0
  114. data/vendor/PDCurses/pdcurses/inopts.c +324 -0
  115. data/vendor/PDCurses/pdcurses/insch.c +271 -0
  116. data/vendor/PDCurses/pdcurses/insstr.c +264 -0
  117. data/vendor/PDCurses/pdcurses/instr.c +246 -0
  118. data/vendor/PDCurses/pdcurses/kernel.c +259 -0
  119. data/vendor/PDCurses/pdcurses/keyname.c +157 -0
  120. data/vendor/PDCurses/pdcurses/mouse.c +438 -0
  121. data/vendor/PDCurses/pdcurses/move.c +57 -0
  122. data/vendor/PDCurses/pdcurses/outopts.c +159 -0
  123. data/vendor/PDCurses/pdcurses/overlay.c +214 -0
  124. data/vendor/PDCurses/pdcurses/pad.c +260 -0
  125. data/vendor/PDCurses/pdcurses/panel.c +633 -0
  126. data/vendor/PDCurses/pdcurses/printw.c +126 -0
  127. data/vendor/PDCurses/pdcurses/refresh.c +279 -0
  128. data/vendor/PDCurses/pdcurses/scanw.c +578 -0
  129. data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
  130. data/vendor/PDCurses/pdcurses/scroll.c +101 -0
  131. data/vendor/PDCurses/pdcurses/slk.c +591 -0
  132. data/vendor/PDCurses/pdcurses/termattr.c +182 -0
  133. data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
  134. data/vendor/PDCurses/pdcurses/touch.c +163 -0
  135. data/vendor/PDCurses/pdcurses/util.c +312 -0
  136. data/vendor/PDCurses/pdcurses/window.c +569 -0
  137. data/vendor/PDCurses/sdl1/Makefile +129 -0
  138. data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
  139. data/vendor/PDCurses/sdl1/README.md +31 -0
  140. data/vendor/PDCurses/sdl1/deffont.h +385 -0
  141. data/vendor/PDCurses/sdl1/deficon.h +23 -0
  142. data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
  143. data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
  144. data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
  145. data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
  146. data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
  147. data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
  148. data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
  149. data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
  150. data/vendor/PDCurses/sdl1/sdltest.c +79 -0
  151. data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
  152. data/vendor/PDCurses/sdl2/Makefile +135 -0
  153. data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
  154. data/vendor/PDCurses/sdl2/README.md +34 -0
  155. data/vendor/PDCurses/sdl2/deffont.h +385 -0
  156. data/vendor/PDCurses/sdl2/deficon.h +23 -0
  157. data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
  158. data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
  159. data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
  160. data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
  161. data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
  162. data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
  163. data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
  164. data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
  165. data/vendor/PDCurses/sdl2/sdltest.c +81 -0
  166. data/vendor/PDCurses/term.h +48 -0
  167. data/vendor/PDCurses/version.mif +7 -0
  168. data/vendor/PDCurses/vt/CMakeLists.txt +28 -0
  169. data/vendor/PDCurses/vt/Makefile +135 -0
  170. data/vendor/PDCurses/vt/Makefile.bcc +111 -0
  171. data/vendor/PDCurses/vt/Makefile.dmc +258 -0
  172. data/vendor/PDCurses/vt/Makefile.vc +144 -0
  173. data/vendor/PDCurses/vt/Makefile.wcc +107 -0
  174. data/vendor/PDCurses/vt/README.md +64 -0
  175. data/vendor/PDCurses/vt/pdcclip.c +20 -0
  176. data/vendor/PDCurses/vt/pdcdisp.c +284 -0
  177. data/vendor/PDCurses/vt/pdcgetsc.c +27 -0
  178. data/vendor/PDCurses/vt/pdckbd.c +394 -0
  179. data/vendor/PDCurses/vt/pdcscrn.c +434 -0
  180. data/vendor/PDCurses/vt/pdcsetsc.c +45 -0
  181. data/vendor/PDCurses/vt/pdcutil.c +43 -0
  182. data/vendor/PDCurses/vt/pdcvt.h +16 -0
  183. data/vendor/PDCurses/watcom.mif +68 -0
  184. data/vendor/PDCurses/wincon/CMakeLists.txt +27 -0
  185. data/vendor/PDCurses/wincon/Makefile.bcc +88 -0
  186. data/vendor/PDCurses/wincon/Makefile.dmc +256 -0
  187. data/vendor/PDCurses/wincon/Makefile.lcc +273 -0
  188. data/vendor/PDCurses/wincon/Makefile.mng +176 -0
  189. data/vendor/PDCurses/wincon/Makefile.vc +144 -0
  190. data/vendor/PDCurses/wincon/Makefile.wcc +51 -0
  191. data/vendor/PDCurses/wincon/README.md +85 -0
  192. data/vendor/PDCurses/wincon/pdcclip.c +174 -0
  193. data/vendor/PDCurses/wincon/pdcdisp.c +143 -0
  194. data/vendor/PDCurses/wincon/pdcgetsc.c +55 -0
  195. data/vendor/PDCurses/wincon/pdckbd.c +786 -0
  196. data/vendor/PDCurses/wincon/pdcscrn.c +717 -0
  197. data/vendor/PDCurses/wincon/pdcsetsc.c +91 -0
  198. data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
  199. data/vendor/PDCurses/wincon/pdcurses.rc +28 -0
  200. data/vendor/PDCurses/wincon/pdcutil.c +41 -0
  201. data/vendor/PDCurses/wincon/pdcwin.h +31 -0
  202. data/vendor/PDCurses/wingui/CMakeLists.txt +27 -0
  203. data/vendor/PDCurses/wingui/Makefile.bcc +85 -0
  204. data/vendor/PDCurses/wingui/Makefile.dmc +259 -0
  205. data/vendor/PDCurses/wingui/Makefile.lcc +273 -0
  206. data/vendor/PDCurses/wingui/Makefile.mng +171 -0
  207. data/vendor/PDCurses/wingui/Makefile.vc +144 -0
  208. data/vendor/PDCurses/wingui/Makefile.wcc +51 -0
  209. data/vendor/PDCurses/wingui/README.md +93 -0
  210. data/vendor/PDCurses/wingui/pdcclip.c +174 -0
  211. data/vendor/PDCurses/wingui/pdcdisp.c +718 -0
  212. data/vendor/PDCurses/wingui/pdcgetsc.c +30 -0
  213. data/vendor/PDCurses/wingui/pdckbd.c +143 -0
  214. data/vendor/PDCurses/wingui/pdcscrn.c +2797 -0
  215. data/vendor/PDCurses/wingui/pdcsetsc.c +89 -0
  216. data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
  217. data/vendor/PDCurses/wingui/pdcurses.rc +28 -0
  218. data/vendor/PDCurses/wingui/pdcutil.c +61 -0
  219. data/vendor/PDCurses/wingui/pdcwin.h +122 -0
  220. data/vendor/PDCurses/x11/Makefile.in +754 -0
  221. data/vendor/PDCurses/x11/PDCurses.spec +82 -0
  222. data/vendor/PDCurses/x11/README.md +62 -0
  223. data/vendor/PDCurses/x11/ScrollBox.c +319 -0
  224. data/vendor/PDCurses/x11/ScrollBox.h +51 -0
  225. data/vendor/PDCurses/x11/ScrollBoxP.h +70 -0
  226. data/vendor/PDCurses/x11/aclocal.m4 +994 -0
  227. data/vendor/PDCurses/x11/big_icon.xbm +46 -0
  228. data/vendor/PDCurses/x11/compose.h +201 -0
  229. data/vendor/PDCurses/x11/config.guess +1500 -0
  230. data/vendor/PDCurses/x11/config.h.in +100 -0
  231. data/vendor/PDCurses/x11/config.sub +1616 -0
  232. data/vendor/PDCurses/x11/configure +6700 -0
  233. data/vendor/PDCurses/x11/configure.ac +295 -0
  234. data/vendor/PDCurses/x11/debian/changelog +6 -0
  235. data/vendor/PDCurses/x11/debian/compat +1 -0
  236. data/vendor/PDCurses/x11/debian/control +11 -0
  237. data/vendor/PDCurses/x11/debian/copyright +27 -0
  238. data/vendor/PDCurses/x11/debian/rules +98 -0
  239. data/vendor/PDCurses/x11/install-sh +253 -0
  240. data/vendor/PDCurses/x11/little_icon.xbm +14 -0
  241. data/vendor/PDCurses/x11/ncurses_cfg.h +45 -0
  242. data/vendor/PDCurses/x11/pdcclip.c +173 -0
  243. data/vendor/PDCurses/x11/pdcdisp.c +85 -0
  244. data/vendor/PDCurses/x11/pdcgetsc.c +28 -0
  245. data/vendor/PDCurses/x11/pdckbd.c +104 -0
  246. data/vendor/PDCurses/x11/pdcscrn.c +258 -0
  247. data/vendor/PDCurses/x11/pdcsetsc.c +95 -0
  248. data/vendor/PDCurses/x11/pdcutil.c +52 -0
  249. data/vendor/PDCurses/x11/pdcx11.c +316 -0
  250. data/vendor/PDCurses/x11/pdcx11.h +191 -0
  251. data/vendor/PDCurses/x11/sb.c +155 -0
  252. data/vendor/PDCurses/x11/x11.c +3686 -0
  253. data/vendor/PDCurses/x11/xcurses-config.in +81 -0
  254. 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