curses 1.3.0 → 1.4.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (256) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +19 -0
  3. data/.github/workflows/ubuntu.yml +26 -0
  4. data/.github/workflows/windows.yml +25 -0
  5. data/History.md +34 -0
  6. data/README.md +14 -46
  7. data/Rakefile +0 -86
  8. data/curses.gemspec +2 -3
  9. data/ext/curses/curses.c +70 -58
  10. data/ext/curses/extconf.rb +134 -21
  11. data/lib/curses.rb +5 -12
  12. data/sample/addch.rb +16 -0
  13. data/sample/attr_demo.rb +32 -0
  14. data/sample/colors.rb +26 -0
  15. data/sample/menu.rb +3 -3
  16. data/sample/mouse_move.rb +75 -0
  17. data/vendor/PDCurses/.gitignore +47 -0
  18. data/vendor/PDCurses/.travis.yml +49 -0
  19. data/vendor/PDCurses/CMakeLists.txt +68 -0
  20. data/vendor/PDCurses/HISTORY.md +2036 -0
  21. data/vendor/PDCurses/IMPLEMNT.md +327 -0
  22. data/vendor/PDCurses/README.md +77 -0
  23. data/vendor/PDCurses/acs_defs.h +265 -0
  24. data/vendor/PDCurses/appveyor.yml +218 -0
  25. data/vendor/PDCurses/cmake/README.md +71 -0
  26. data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
  27. data/vendor/PDCurses/cmake/build_options.cmake +25 -0
  28. data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
  29. data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
  30. data/vendor/PDCurses/cmake/get_version.cmake +17 -0
  31. data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
  32. data/vendor/PDCurses/cmake/project_common.cmake +121 -0
  33. data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
  34. data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
  35. data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
  36. data/vendor/PDCurses/cmake/version.in.cmake +73 -0
  37. data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
  38. data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
  39. data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
  40. data/vendor/PDCurses/curses.h +1846 -0
  41. data/vendor/PDCurses/curspriv.h +134 -0
  42. data/vendor/PDCurses/demos/README.md +25 -0
  43. data/vendor/PDCurses/demos/firework.c +144 -0
  44. data/vendor/PDCurses/demos/newtest.c +581 -0
  45. data/vendor/PDCurses/demos/ozdemo.c +447 -0
  46. data/vendor/PDCurses/demos/ptest.c +283 -0
  47. data/vendor/PDCurses/demos/rain.c +157 -0
  48. data/vendor/PDCurses/demos/testcurs.c +1607 -0
  49. data/vendor/PDCurses/demos/tui.c +1048 -0
  50. data/vendor/PDCurses/demos/tui.h +65 -0
  51. data/vendor/PDCurses/demos/tuidemo.c +233 -0
  52. data/vendor/PDCurses/demos/version.c +61 -0
  53. data/vendor/PDCurses/demos/worm.c +432 -0
  54. data/vendor/PDCurses/demos/xmas.c +955 -0
  55. data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
  56. data/vendor/PDCurses/dos/Makefile.bcc +83 -0
  57. data/vendor/PDCurses/dos/Makefile.dmc +257 -0
  58. data/vendor/PDCurses/dos/Makefile.msc +113 -0
  59. data/vendor/PDCurses/dos/Makefile.wcc +107 -0
  60. data/vendor/PDCurses/dos/README.md +51 -0
  61. data/vendor/PDCurses/dos/bccdos.lrf +9 -0
  62. data/vendor/PDCurses/dos/mscdos.lrf +50 -0
  63. data/vendor/PDCurses/dos/pdcclip.c +132 -0
  64. data/vendor/PDCurses/dos/pdcdisp.c +135 -0
  65. data/vendor/PDCurses/dos/pdcdos.h +194 -0
  66. data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
  67. data/vendor/PDCurses/dos/pdckbd.c +513 -0
  68. data/vendor/PDCurses/dos/pdcscrn.c +785 -0
  69. data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
  70. data/vendor/PDCurses/dos/pdcutil.c +212 -0
  71. data/vendor/PDCurses/libobjs.mif +26 -0
  72. data/vendor/PDCurses/makedist.mif +20 -0
  73. data/vendor/PDCurses/man/README.md +21 -0
  74. data/vendor/PDCurses/man/intro.md +361 -0
  75. data/vendor/PDCurses/man/manext.c +119 -0
  76. data/vendor/PDCurses/man/sdl.md +152 -0
  77. data/vendor/PDCurses/man/sdl2.md +58 -0
  78. data/vendor/PDCurses/man/x11.md +407 -0
  79. data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
  80. data/vendor/PDCurses/ncurses/README.md +26 -0
  81. data/vendor/PDCurses/ncurses/makefile +29 -0
  82. data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
  83. data/vendor/PDCurses/os2/Makefile.bcc +90 -0
  84. data/vendor/PDCurses/os2/Makefile.wcc +43 -0
  85. data/vendor/PDCurses/os2/README.md +43 -0
  86. data/vendor/PDCurses/os2/iccos2.lrf +50 -0
  87. data/vendor/PDCurses/os2/iccos2.mak +256 -0
  88. data/vendor/PDCurses/os2/pdcclip.c +188 -0
  89. data/vendor/PDCurses/os2/pdcdisp.c +93 -0
  90. data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
  91. data/vendor/PDCurses/os2/pdckbd.c +521 -0
  92. data/vendor/PDCurses/os2/pdcos2.h +55 -0
  93. data/vendor/PDCurses/os2/pdcscrn.c +449 -0
  94. data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
  95. data/vendor/PDCurses/os2/pdcutil.c +52 -0
  96. data/vendor/PDCurses/panel.h +56 -0
  97. data/vendor/PDCurses/pdcurses/README.md +25 -0
  98. data/vendor/PDCurses/pdcurses/addch.c +693 -0
  99. data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
  100. data/vendor/PDCurses/pdcurses/addstr.c +240 -0
  101. data/vendor/PDCurses/pdcurses/attr.c +359 -0
  102. data/vendor/PDCurses/pdcurses/beep.c +68 -0
  103. data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
  104. data/vendor/PDCurses/pdcurses/border.c +411 -0
  105. data/vendor/PDCurses/pdcurses/clear.c +159 -0
  106. data/vendor/PDCurses/pdcurses/color.c +298 -0
  107. data/vendor/PDCurses/pdcurses/debug.c +109 -0
  108. data/vendor/PDCurses/pdcurses/delch.c +96 -0
  109. data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
  110. data/vendor/PDCurses/pdcurses/deprec.c +27 -0
  111. data/vendor/PDCurses/pdcurses/getch.c +417 -0
  112. data/vendor/PDCurses/pdcurses/getstr.c +474 -0
  113. data/vendor/PDCurses/pdcurses/getyx.c +139 -0
  114. data/vendor/PDCurses/pdcurses/inch.c +127 -0
  115. data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
  116. data/vendor/PDCurses/pdcurses/initscr.c +367 -0
  117. data/vendor/PDCurses/pdcurses/inopts.c +324 -0
  118. data/vendor/PDCurses/pdcurses/insch.c +271 -0
  119. data/vendor/PDCurses/pdcurses/insstr.c +264 -0
  120. data/vendor/PDCurses/pdcurses/instr.c +246 -0
  121. data/vendor/PDCurses/pdcurses/kernel.c +259 -0
  122. data/vendor/PDCurses/pdcurses/keyname.c +157 -0
  123. data/vendor/PDCurses/pdcurses/mouse.c +438 -0
  124. data/vendor/PDCurses/pdcurses/move.c +57 -0
  125. data/vendor/PDCurses/pdcurses/outopts.c +159 -0
  126. data/vendor/PDCurses/pdcurses/overlay.c +214 -0
  127. data/vendor/PDCurses/pdcurses/pad.c +260 -0
  128. data/vendor/PDCurses/pdcurses/panel.c +633 -0
  129. data/vendor/PDCurses/pdcurses/printw.c +126 -0
  130. data/vendor/PDCurses/pdcurses/refresh.c +279 -0
  131. data/vendor/PDCurses/pdcurses/scanw.c +578 -0
  132. data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
  133. data/vendor/PDCurses/pdcurses/scroll.c +101 -0
  134. data/vendor/PDCurses/pdcurses/slk.c +591 -0
  135. data/vendor/PDCurses/pdcurses/termattr.c +182 -0
  136. data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
  137. data/vendor/PDCurses/pdcurses/touch.c +163 -0
  138. data/vendor/PDCurses/pdcurses/util.c +312 -0
  139. data/vendor/PDCurses/pdcurses/window.c +569 -0
  140. data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
  141. data/vendor/PDCurses/sdl1/README.md +31 -0
  142. data/vendor/PDCurses/sdl1/deffont.h +385 -0
  143. data/vendor/PDCurses/sdl1/deficon.h +23 -0
  144. data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
  145. data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
  146. data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
  147. data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
  148. data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
  149. data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
  150. data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
  151. data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
  152. data/vendor/PDCurses/sdl1/sdltest.c +79 -0
  153. data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
  154. data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
  155. data/vendor/PDCurses/sdl2/README.md +34 -0
  156. data/vendor/PDCurses/sdl2/deffont.h +385 -0
  157. data/vendor/PDCurses/sdl2/deficon.h +23 -0
  158. data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
  159. data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
  160. data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
  161. data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
  162. data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
  163. data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
  164. data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
  165. data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
  166. data/vendor/PDCurses/sdl2/sdltest.c +81 -0
  167. data/vendor/PDCurses/term.h +48 -0
  168. data/vendor/PDCurses/version.mif +7 -0
  169. data/vendor/PDCurses/vt/CMakeLists.txt +28 -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 +258 -24
  255. data/.travis.yml +0 -16
  256. data/appveyor.yml +0 -16
@@ -0,0 +1,211 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include <curspriv.h>
4
+
5
+ /*man-start**************************************************************
6
+
7
+ deleteln
8
+ --------
9
+
10
+ ### Synopsis
11
+
12
+ int deleteln(void);
13
+ int wdeleteln(WINDOW *win);
14
+ int insdelln(int n);
15
+ int winsdelln(WINDOW *win, int n);
16
+ int insertln(void);
17
+ int winsertln(WINDOW *win);
18
+
19
+ int mvdeleteln(int y, int x);
20
+ int mvwdeleteln(WINDOW *win, int y, int x);
21
+ int mvinsertln(int y, int x);
22
+ int mvwinsertln(WINDOW *win, int y, int x);
23
+
24
+ ### Description
25
+
26
+ With the deleteln() and wdeleteln() functions, the line under
27
+ the cursor in the window is deleted. All lines below the
28
+ current line are moved up one line. The bottom line of the
29
+ window is cleared. The cursor position does not change.
30
+
31
+ With the insertln() and winsertn() functions, a blank line is
32
+ inserted above the current line and the bottom line is lost.
33
+
34
+ mvdeleteln(), mvwdeleteln(), mvinsertln() and mvwinsertln()
35
+ allow moving the cursor and inserting/deleting in one call.
36
+
37
+ ### Return Value
38
+
39
+ All functions return OK on success and ERR on error.
40
+
41
+ ### Portability
42
+ X/Open BSD SYS V
43
+ deleteln Y Y Y
44
+ wdeleteln Y Y Y
45
+ mvdeleteln - - -
46
+ mvwdeleteln - - -
47
+ insdelln Y - 4.0
48
+ winsdelln Y - 4.0
49
+ insertln Y Y Y
50
+ winsertln Y Y Y
51
+ mvinsertln - - -
52
+ mvwinsertln - - -
53
+
54
+ **man-end****************************************************************/
55
+
56
+ int wdeleteln(WINDOW *win)
57
+ {
58
+ chtype blank, *temp, *ptr;
59
+ int y;
60
+
61
+ PDC_LOG(("wdeleteln() - called\n"));
62
+
63
+ if (!win)
64
+ return ERR;
65
+
66
+ /* wrs (4/10/93) account for window background */
67
+
68
+ blank = win->_bkgd;
69
+
70
+ temp = win->_y[win->_cury];
71
+
72
+ for (y = win->_cury; y < win->_bmarg; y++)
73
+ {
74
+ win->_y[y] = win->_y[y + 1];
75
+ win->_firstch[y] = 0;
76
+ win->_lastch[y] = win->_maxx - 1;
77
+ }
78
+
79
+ for (ptr = temp; (ptr - temp < win->_maxx); ptr++)
80
+ *ptr = blank; /* make a blank line */
81
+
82
+ if (win->_cury <= win->_bmarg)
83
+ {
84
+ win->_firstch[win->_bmarg] = 0;
85
+ win->_lastch[win->_bmarg] = win->_maxx - 1;
86
+ win->_y[win->_bmarg] = temp;
87
+ }
88
+
89
+ return OK;
90
+ }
91
+
92
+ int deleteln(void)
93
+ {
94
+ PDC_LOG(("deleteln() - called\n"));
95
+
96
+ return wdeleteln(stdscr);
97
+ }
98
+
99
+ int mvdeleteln(int y, int x)
100
+ {
101
+ PDC_LOG(("mvdeleteln() - called\n"));
102
+
103
+ if (move(y, x) == ERR)
104
+ return ERR;
105
+
106
+ return wdeleteln(stdscr);
107
+ }
108
+
109
+ int mvwdeleteln(WINDOW *win, int y, int x)
110
+ {
111
+ PDC_LOG(("mvwdeleteln() - called\n"));
112
+
113
+ if (wmove(win, y, x) == ERR)
114
+ return ERR;
115
+
116
+ return wdeleteln(win);
117
+ }
118
+
119
+ int winsdelln(WINDOW *win, int n)
120
+ {
121
+ int i;
122
+
123
+ PDC_LOG(("winsdelln() - called\n"));
124
+
125
+ if (!win)
126
+ return ERR;
127
+
128
+ if (n > 0)
129
+ {
130
+ for (i = 0; i < n; i++)
131
+ if (winsertln(win) == ERR)
132
+ return ERR;
133
+ }
134
+ else if (n < 0)
135
+ {
136
+ n = -n;
137
+ for (i = 0; i < n; i++)
138
+ if (wdeleteln(win) == ERR)
139
+ return ERR;
140
+ }
141
+
142
+ return OK;
143
+ }
144
+
145
+ int insdelln(int n)
146
+ {
147
+ PDC_LOG(("insdelln() - called\n"));
148
+
149
+ return winsdelln(stdscr, n);
150
+ }
151
+
152
+ int winsertln(WINDOW *win)
153
+ {
154
+ chtype blank, *temp, *end;
155
+ int y;
156
+
157
+ PDC_LOG(("winsertln() - called\n"));
158
+
159
+ if (!win)
160
+ return ERR;
161
+
162
+ /* wrs (4/10/93) account for window background */
163
+
164
+ blank = win->_bkgd;
165
+
166
+ temp = win->_y[win->_maxy - 1];
167
+
168
+ for (y = win->_maxy - 1; y > win->_cury; y--)
169
+ {
170
+ win->_y[y] = win->_y[y - 1];
171
+ win->_firstch[y] = 0;
172
+ win->_lastch[y] = win->_maxx - 1;
173
+ }
174
+
175
+ win->_y[win->_cury] = temp;
176
+
177
+ for (end = &temp[win->_maxx - 1]; temp <= end; temp++)
178
+ *temp = blank;
179
+
180
+ win->_firstch[win->_cury] = 0;
181
+ win->_lastch[win->_cury] = win->_maxx - 1;
182
+
183
+ return OK;
184
+ }
185
+
186
+ int insertln(void)
187
+ {
188
+ PDC_LOG(("insertln() - called\n"));
189
+
190
+ return winsertln(stdscr);
191
+ }
192
+
193
+ int mvinsertln(int y, int x)
194
+ {
195
+ PDC_LOG(("mvinsertln() - called\n"));
196
+
197
+ if (move(y, x) == ERR)
198
+ return ERR;
199
+
200
+ return winsertln(stdscr);
201
+ }
202
+
203
+ int mvwinsertln(WINDOW *win, int y, int x)
204
+ {
205
+ PDC_LOG(("mvwinsertln() - called\n"));
206
+
207
+ if (wmove(win, y, x) == ERR)
208
+ return ERR;
209
+
210
+ return winsertln(win);
211
+ }
@@ -0,0 +1,27 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include <curspriv.h>
4
+
5
+ /* Deprecated functions. These should not be used, and will eventually
6
+ be removed. They're here solely for the benefit of applications that
7
+ linked to them in older versions of PDCurses. */
8
+
9
+ bool PDC_check_bios_key(void)
10
+ {
11
+ return PDC_check_key();
12
+ }
13
+
14
+ int PDC_get_bios_key(void)
15
+ {
16
+ return PDC_get_key();
17
+ }
18
+
19
+ bool PDC_get_ctrl_break(void)
20
+ {
21
+ return !SP->raw_inp;
22
+ }
23
+
24
+ int PDC_set_ctrl_break(bool setting)
25
+ {
26
+ return setting ? noraw() : raw();
27
+ }
@@ -0,0 +1,417 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include <curspriv.h>
4
+
5
+ /*man-start**************************************************************
6
+
7
+ getch
8
+ -----
9
+
10
+ ### Synopsis
11
+
12
+ int getch(void);
13
+ int wgetch(WINDOW *win);
14
+ int mvgetch(int y, int x);
15
+ int mvwgetch(WINDOW *win, int y, int x);
16
+ int ungetch(int ch);
17
+ int flushinp(void);
18
+
19
+ int get_wch(wint_t *wch);
20
+ int wget_wch(WINDOW *win, wint_t *wch);
21
+ int mvget_wch(int y, int x, wint_t *wch);
22
+ int mvwget_wch(WINDOW *win, int y, int x, wint_t *wch);
23
+ int unget_wch(const wchar_t wch);
24
+
25
+ unsigned long PDC_get_key_modifiers(void);
26
+ int PDC_save_key_modifiers(bool flag);
27
+ int PDC_return_key_modifiers(bool flag);
28
+
29
+ ### Description
30
+
31
+ With the getch(), wgetch(), mvgetch(), and mvwgetch() functions,
32
+ a character is read from the terminal associated with the window.
33
+ In nodelay mode, if there is no input waiting, the value ERR is
34
+ returned. In delay mode, the program will hang until the system
35
+ passes text through to the program. Depending on the setting of
36
+ cbreak(), this will be after one character or after the first
37
+ newline. Unless noecho() has been set, the character will also
38
+ be echoed into the designated window.
39
+
40
+ If keypad() is TRUE, and a function key is pressed, the token for
41
+ that function key will be returned instead of the raw characters.
42
+ Possible function keys are defined in <curses.h> with integers
43
+ beginning with 0401, whose names begin with KEY_.
44
+
45
+ If nodelay(win, TRUE) has been called on the window and no input
46
+ is waiting, the value ERR is returned.
47
+
48
+ ungetch() places ch back onto the input queue to be returned by
49
+ the next call to wgetch().
50
+
51
+ flushinp() throws away any type-ahead that has been typed by the
52
+ user and has not yet been read by the program.
53
+
54
+ PDC_get_key_modifiers() returns the keyboard modifiers (shift,
55
+ control, alt, numlock) effective at the time of the last getch()
56
+ call, if PDC_save_key_modifiers(TRUE) has been called before the
57
+ getch(). Use the macros PDC_KEY_MODIFIER_* to determine which
58
+ modifier(s) were set. PDC_return_key_modifiers() tells getch()
59
+ to return modifier keys pressed alone as keystrokes (KEY_ALT_L,
60
+ etc.). These may not work on all platforms.
61
+
62
+ NOTE: getch() and ungetch() are implemented as macros, to avoid
63
+ conflict with many DOS compiler's runtime libraries.
64
+
65
+ ### Return Value
66
+
67
+ These functions return ERR or the value of the character, meta
68
+ character or function key token.
69
+
70
+ ### Portability
71
+ X/Open BSD SYS V
72
+ getch Y Y Y
73
+ wgetch Y Y Y
74
+ mvgetch Y Y Y
75
+ mvwgetch Y Y Y
76
+ ungetch Y Y Y
77
+ flushinp Y Y Y
78
+ get_wch Y
79
+ wget_wch Y
80
+ mvget_wch Y
81
+ mvwget_wch Y
82
+ unget_wch Y
83
+ PDC_get_key_modifiers - - -
84
+
85
+ **man-end****************************************************************/
86
+
87
+ #define _INBUFSIZ 512 /* size of terminal input buffer */
88
+ #define NUNGETCH 256 /* max # chars to ungetch() */
89
+
90
+ static int c_pindex = 0; /* putter index */
91
+ static int c_gindex = 1; /* getter index */
92
+ static int c_ungind = 0; /* ungetch() push index */
93
+ static int c_ungch[NUNGETCH]; /* array of ungotten chars */
94
+
95
+ static int _mouse_key(WINDOW *win)
96
+ {
97
+ int i, key = KEY_MOUSE;
98
+ unsigned long mbe = SP->_trap_mbe;
99
+
100
+ /* Filter unwanted mouse events */
101
+
102
+ for (i = 0; i < 3; i++)
103
+ {
104
+ if (pdc_mouse_status.changes & (1 << i))
105
+ {
106
+ int shf = i * 5;
107
+ short button = pdc_mouse_status.button[i] & BUTTON_ACTION_MASK;
108
+
109
+ if ( (!(mbe & (BUTTON1_PRESSED << shf)) &&
110
+ (button == BUTTON_PRESSED))
111
+
112
+ || (!(mbe & (BUTTON1_CLICKED << shf)) &&
113
+ (button == BUTTON_CLICKED))
114
+
115
+ || (!(mbe & (BUTTON1_DOUBLE_CLICKED << shf)) &&
116
+ (button == BUTTON_DOUBLE_CLICKED))
117
+
118
+ /* added triple clicks 2011 jun 4: BJG */
119
+ || (!(mbe & (BUTTON1_TRIPLE_CLICKED << shf)) &&
120
+ (button == BUTTON_TRIPLE_CLICKED))
121
+
122
+ || (!(mbe & (BUTTON1_MOVED << shf)) &&
123
+ (button == BUTTON_MOVED))
124
+
125
+ || (!(mbe & (BUTTON1_RELEASED << shf)) &&
126
+ (button == BUTTON_RELEASED))
127
+ )
128
+ pdc_mouse_status.changes ^= (1 << i);
129
+ }
130
+ }
131
+
132
+ if (pdc_mouse_status.changes & PDC_MOUSE_MOVED)
133
+ {
134
+ if (!(mbe & (BUTTON1_MOVED|BUTTON2_MOVED|BUTTON3_MOVED | REPORT_MOUSE_POSITION)))
135
+ pdc_mouse_status.changes ^= PDC_MOUSE_MOVED;
136
+ }
137
+
138
+ if (pdc_mouse_status.changes &
139
+ (PDC_MOUSE_WHEEL_UP|PDC_MOUSE_WHEEL_DOWN))
140
+ {
141
+ if (!(mbe & MOUSE_WHEEL_SCROLL))
142
+ pdc_mouse_status.changes &=
143
+ ~(PDC_MOUSE_WHEEL_UP|PDC_MOUSE_WHEEL_DOWN);
144
+ }
145
+
146
+ if (!pdc_mouse_status.changes)
147
+ return -1;
148
+
149
+ /* Check for click in slk area */
150
+
151
+ i = PDC_mouse_in_slk(pdc_mouse_status.y, pdc_mouse_status.x);
152
+
153
+ if (i)
154
+ {
155
+ if (pdc_mouse_status.button[0] & (BUTTON_PRESSED|BUTTON_CLICKED))
156
+ key = KEY_F(i);
157
+ else
158
+ key = -1;
159
+ }
160
+
161
+ return key;
162
+ }
163
+
164
+ int wgetch(WINDOW *win)
165
+ {
166
+ static int buffer[_INBUFSIZ]; /* character buffer */
167
+ int key, waitcount;
168
+
169
+ PDC_LOG(("wgetch() - called\n"));
170
+
171
+ if (!win)
172
+ return ERR;
173
+
174
+ waitcount = 0;
175
+
176
+ /* set the number of 1/20th second napms() calls */
177
+
178
+ if (SP->delaytenths)
179
+ waitcount = 2 * SP->delaytenths;
180
+ else
181
+ if (win->_delayms)
182
+ {
183
+ /* Can't really do millisecond intervals, so delay in
184
+ 1/20ths of a second (50ms) */
185
+
186
+ waitcount = win->_delayms / 50;
187
+ if (!waitcount)
188
+ waitcount = 1;
189
+ }
190
+
191
+ /* refresh window when wgetch is called if there have been changes
192
+ to it and it is not a pad */
193
+
194
+ if (!(win->_flags & _PAD) && ((!win->_leaveit &&
195
+ (win->_begx + win->_curx != SP->curscol ||
196
+ win->_begy + win->_cury != SP->cursrow)) || is_wintouched(win)))
197
+ wrefresh(win);
198
+
199
+ /* if ungotten char exists, remove and return it */
200
+
201
+ if (c_ungind)
202
+ return c_ungch[--c_ungind];
203
+
204
+ /* if normal and data in buffer */
205
+
206
+ if ((!SP->raw_inp && !SP->cbreak) && (c_gindex < c_pindex))
207
+ return buffer[c_gindex++];
208
+
209
+ /* prepare to buffer data */
210
+
211
+ c_pindex = 0;
212
+ c_gindex = 0;
213
+
214
+ /* to get here, no keys are buffered. go and get one. */
215
+
216
+ for (;;) /* loop for any buffering */
217
+ {
218
+ /* is there a keystroke ready? */
219
+
220
+ if (!PDC_check_key())
221
+ {
222
+ /* if not, handle timeout() and halfdelay() */
223
+
224
+ if (SP->delaytenths || win->_delayms)
225
+ {
226
+ if (!waitcount)
227
+ return ERR;
228
+
229
+ waitcount--;
230
+ }
231
+ else
232
+ if (win->_nodelay)
233
+ return ERR;
234
+
235
+ napms(50); /* sleep for 1/20th second */
236
+ continue; /* then check again */
237
+ }
238
+
239
+ /* if there is, fetch it */
240
+
241
+ key = PDC_get_key();
242
+
243
+ if (SP->key_code)
244
+ {
245
+ /* filter special keys if not in keypad mode */
246
+
247
+ if (!win->_use_keypad)
248
+ key = -1;
249
+
250
+ /* filter mouse events; translate mouse clicks in the slk
251
+ area to function keys */
252
+
253
+ else if (key == KEY_MOUSE)
254
+ key = _mouse_key(win);
255
+ }
256
+
257
+ /* unwanted key? loop back */
258
+
259
+ if (key == -1)
260
+ continue;
261
+
262
+ /* translate CR */
263
+
264
+ if (key == '\r' && SP->autocr && !SP->raw_inp)
265
+ key = '\n';
266
+
267
+ /* if echo is enabled */
268
+
269
+ if (SP->echo && !SP->key_code)
270
+ {
271
+ waddch(win, key);
272
+ wrefresh(win);
273
+ }
274
+
275
+ /* if no buffering */
276
+
277
+ if (SP->raw_inp || SP->cbreak)
278
+ return key;
279
+
280
+ /* if no overflow, put data in buffer */
281
+
282
+ if (key == '\b')
283
+ {
284
+ if (c_pindex > c_gindex)
285
+ c_pindex--;
286
+ }
287
+ else
288
+ if (c_pindex < _INBUFSIZ - 2)
289
+ buffer[c_pindex++] = key;
290
+
291
+ /* if we got a line */
292
+
293
+ if (key == '\n' || key == '\r')
294
+ return buffer[c_gindex++];
295
+ }
296
+ }
297
+
298
+ int mvgetch(int y, int x)
299
+ {
300
+ PDC_LOG(("mvgetch() - called\n"));
301
+
302
+ if (move(y, x) == ERR)
303
+ return ERR;
304
+
305
+ return wgetch(stdscr);
306
+ }
307
+
308
+ int mvwgetch(WINDOW *win, int y, int x)
309
+ {
310
+ PDC_LOG(("mvwgetch() - called\n"));
311
+
312
+ if (wmove(win, y, x) == ERR)
313
+ return ERR;
314
+
315
+ return wgetch(win);
316
+ }
317
+
318
+ int PDC_ungetch(int ch)
319
+ {
320
+ PDC_LOG(("ungetch() - called\n"));
321
+
322
+ if (c_ungind >= NUNGETCH) /* pushback stack full */
323
+ return ERR;
324
+
325
+ c_ungch[c_ungind++] = ch;
326
+
327
+ return OK;
328
+ }
329
+
330
+ int flushinp(void)
331
+ {
332
+ PDC_LOG(("flushinp() - called\n"));
333
+
334
+ PDC_flushinp();
335
+
336
+ c_gindex = 1; /* set indices to kill buffer */
337
+ c_pindex = 0;
338
+ c_ungind = 0; /* clear c_ungch array */
339
+
340
+ return OK;
341
+ }
342
+
343
+ unsigned long PDC_get_key_modifiers(void)
344
+ {
345
+ PDC_LOG(("PDC_get_key_modifiers() - called\n"));
346
+
347
+ return pdc_key_modifiers;
348
+ }
349
+
350
+ int PDC_save_key_modifiers(bool flag)
351
+ {
352
+ PDC_LOG(("PDC_save_key_modifiers() - called\n"));
353
+
354
+ SP->save_key_modifiers = flag;
355
+ return OK;
356
+ }
357
+
358
+ int PDC_return_key_modifiers(bool flag)
359
+ {
360
+ PDC_LOG(("PDC_return_key_modifiers() - called\n"));
361
+
362
+ SP->return_key_modifiers = flag;
363
+ return PDC_modifiers_set();
364
+ }
365
+
366
+ #ifdef PDC_WIDE
367
+ int wget_wch(WINDOW *win, wint_t *wch)
368
+ {
369
+ int key;
370
+
371
+ PDC_LOG(("wget_wch() - called\n"));
372
+
373
+ if (!wch)
374
+ return ERR;
375
+
376
+ key = wgetch(win);
377
+
378
+ if (key == ERR)
379
+ return ERR;
380
+
381
+ *wch = key;
382
+
383
+ return SP->key_code ? KEY_CODE_YES : OK;
384
+ }
385
+
386
+ int get_wch(wint_t *wch)
387
+ {
388
+ PDC_LOG(("get_wch() - called\n"));
389
+
390
+ return wget_wch(stdscr, wch);
391
+ }
392
+
393
+ int mvget_wch(int y, int x, wint_t *wch)
394
+ {
395
+ PDC_LOG(("mvget_wch() - called\n"));
396
+
397
+ if (move(y, x) == ERR)
398
+ return ERR;
399
+
400
+ return wget_wch(stdscr, wch);
401
+ }
402
+
403
+ int mvwget_wch(WINDOW *win, int y, int x, wint_t *wch)
404
+ {
405
+ PDC_LOG(("mvwget_wch() - called\n"));
406
+
407
+ if (wmove(win, y, x) == ERR)
408
+ return ERR;
409
+
410
+ return wget_wch(win, wch);
411
+ }
412
+
413
+ int unget_wch(const wchar_t wch)
414
+ {
415
+ return PDC_ungetch(wch);
416
+ }
417
+ #endif