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.
Files changed (253) 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 +28 -0
  5. data/.gitmodules +1 -1
  6. data/.travis.yml +6 -3
  7. data/History.md +40 -0
  8. data/README.md +4 -1
  9. data/Rakefile +0 -83
  10. data/curses.gemspec +2 -3
  11. data/ext/curses/curses.c +1271 -151
  12. data/ext/curses/extconf.rb +140 -17
  13. data/lib/curses.rb +5 -12
  14. data/sample/form.rb +52 -0
  15. data/sample/menu.rb +1 -1
  16. data/vendor/PDCurses/.gitignore +47 -0
  17. data/vendor/PDCurses/.travis.yml +49 -0
  18. data/vendor/PDCurses/CMakeLists.txt +68 -0
  19. data/vendor/PDCurses/HISTORY.md +2036 -0
  20. data/vendor/PDCurses/IMPLEMNT.md +327 -0
  21. data/vendor/PDCurses/README.md +77 -0
  22. data/vendor/PDCurses/acs_defs.h +265 -0
  23. data/vendor/PDCurses/appveyor.yml +218 -0
  24. data/vendor/PDCurses/cmake/README.md +71 -0
  25. data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
  26. data/vendor/PDCurses/cmake/build_options.cmake +25 -0
  27. data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
  28. data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
  29. data/vendor/PDCurses/cmake/get_version.cmake +17 -0
  30. data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
  31. data/vendor/PDCurses/cmake/project_common.cmake +121 -0
  32. data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
  33. data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
  34. data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
  35. data/vendor/PDCurses/cmake/version.in.cmake +73 -0
  36. data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
  37. data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
  38. data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
  39. data/vendor/PDCurses/curses.h +1846 -0
  40. data/vendor/PDCurses/curspriv.h +134 -0
  41. data/vendor/PDCurses/demos/README.md +25 -0
  42. data/vendor/PDCurses/demos/firework.c +144 -0
  43. data/vendor/PDCurses/demos/newtest.c +581 -0
  44. data/vendor/PDCurses/demos/ozdemo.c +447 -0
  45. data/vendor/PDCurses/demos/ptest.c +283 -0
  46. data/vendor/PDCurses/demos/rain.c +157 -0
  47. data/vendor/PDCurses/demos/testcurs.c +1607 -0
  48. data/vendor/PDCurses/demos/tui.c +1048 -0
  49. data/vendor/PDCurses/demos/tui.h +65 -0
  50. data/vendor/PDCurses/demos/tuidemo.c +233 -0
  51. data/vendor/PDCurses/demos/version.c +61 -0
  52. data/vendor/PDCurses/demos/worm.c +432 -0
  53. data/vendor/PDCurses/demos/xmas.c +955 -0
  54. data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
  55. data/vendor/PDCurses/dos/Makefile.bcc +83 -0
  56. data/vendor/PDCurses/dos/Makefile.dmc +257 -0
  57. data/vendor/PDCurses/dos/Makefile.msc +113 -0
  58. data/vendor/PDCurses/dos/Makefile.wcc +107 -0
  59. data/vendor/PDCurses/dos/README.md +51 -0
  60. data/vendor/PDCurses/dos/bccdos.lrf +9 -0
  61. data/vendor/PDCurses/dos/mscdos.lrf +50 -0
  62. data/vendor/PDCurses/dos/pdcclip.c +132 -0
  63. data/vendor/PDCurses/dos/pdcdisp.c +135 -0
  64. data/vendor/PDCurses/dos/pdcdos.h +194 -0
  65. data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
  66. data/vendor/PDCurses/dos/pdckbd.c +513 -0
  67. data/vendor/PDCurses/dos/pdcscrn.c +785 -0
  68. data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
  69. data/vendor/PDCurses/dos/pdcutil.c +212 -0
  70. data/vendor/PDCurses/libobjs.mif +26 -0
  71. data/vendor/PDCurses/makedist.mif +20 -0
  72. data/vendor/PDCurses/man/README.md +21 -0
  73. data/vendor/PDCurses/man/intro.md +361 -0
  74. data/vendor/PDCurses/man/manext.c +119 -0
  75. data/vendor/PDCurses/man/sdl.md +152 -0
  76. data/vendor/PDCurses/man/sdl2.md +58 -0
  77. data/vendor/PDCurses/man/x11.md +407 -0
  78. data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
  79. data/vendor/PDCurses/ncurses/README.md +26 -0
  80. data/vendor/PDCurses/ncurses/makefile +29 -0
  81. data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
  82. data/vendor/PDCurses/os2/Makefile.bcc +90 -0
  83. data/vendor/PDCurses/os2/Makefile.wcc +43 -0
  84. data/vendor/PDCurses/os2/README.md +43 -0
  85. data/vendor/PDCurses/os2/iccos2.lrf +50 -0
  86. data/vendor/PDCurses/os2/iccos2.mak +256 -0
  87. data/vendor/PDCurses/os2/pdcclip.c +188 -0
  88. data/vendor/PDCurses/os2/pdcdisp.c +93 -0
  89. data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
  90. data/vendor/PDCurses/os2/pdckbd.c +521 -0
  91. data/vendor/PDCurses/os2/pdcos2.h +55 -0
  92. data/vendor/PDCurses/os2/pdcscrn.c +449 -0
  93. data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
  94. data/vendor/PDCurses/os2/pdcutil.c +52 -0
  95. data/vendor/PDCurses/panel.h +56 -0
  96. data/vendor/PDCurses/pdcurses/README.md +25 -0
  97. data/vendor/PDCurses/pdcurses/addch.c +693 -0
  98. data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
  99. data/vendor/PDCurses/pdcurses/addstr.c +240 -0
  100. data/vendor/PDCurses/pdcurses/attr.c +359 -0
  101. data/vendor/PDCurses/pdcurses/beep.c +68 -0
  102. data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
  103. data/vendor/PDCurses/pdcurses/border.c +411 -0
  104. data/vendor/PDCurses/pdcurses/clear.c +159 -0
  105. data/vendor/PDCurses/pdcurses/color.c +298 -0
  106. data/vendor/PDCurses/pdcurses/debug.c +109 -0
  107. data/vendor/PDCurses/pdcurses/delch.c +96 -0
  108. data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
  109. data/vendor/PDCurses/pdcurses/deprec.c +27 -0
  110. data/vendor/PDCurses/pdcurses/getch.c +417 -0
  111. data/vendor/PDCurses/pdcurses/getstr.c +474 -0
  112. data/vendor/PDCurses/pdcurses/getyx.c +139 -0
  113. data/vendor/PDCurses/pdcurses/inch.c +127 -0
  114. data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
  115. data/vendor/PDCurses/pdcurses/initscr.c +367 -0
  116. data/vendor/PDCurses/pdcurses/inopts.c +324 -0
  117. data/vendor/PDCurses/pdcurses/insch.c +271 -0
  118. data/vendor/PDCurses/pdcurses/insstr.c +264 -0
  119. data/vendor/PDCurses/pdcurses/instr.c +246 -0
  120. data/vendor/PDCurses/pdcurses/kernel.c +259 -0
  121. data/vendor/PDCurses/pdcurses/keyname.c +157 -0
  122. data/vendor/PDCurses/pdcurses/mouse.c +438 -0
  123. data/vendor/PDCurses/pdcurses/move.c +57 -0
  124. data/vendor/PDCurses/pdcurses/outopts.c +159 -0
  125. data/vendor/PDCurses/pdcurses/overlay.c +214 -0
  126. data/vendor/PDCurses/pdcurses/pad.c +260 -0
  127. data/vendor/PDCurses/pdcurses/panel.c +633 -0
  128. data/vendor/PDCurses/pdcurses/printw.c +126 -0
  129. data/vendor/PDCurses/pdcurses/refresh.c +279 -0
  130. data/vendor/PDCurses/pdcurses/scanw.c +578 -0
  131. data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
  132. data/vendor/PDCurses/pdcurses/scroll.c +101 -0
  133. data/vendor/PDCurses/pdcurses/slk.c +591 -0
  134. data/vendor/PDCurses/pdcurses/termattr.c +182 -0
  135. data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
  136. data/vendor/PDCurses/pdcurses/touch.c +163 -0
  137. data/vendor/PDCurses/pdcurses/util.c +312 -0
  138. data/vendor/PDCurses/pdcurses/window.c +569 -0
  139. data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
  140. data/vendor/PDCurses/sdl1/README.md +31 -0
  141. data/vendor/PDCurses/sdl1/deffont.h +385 -0
  142. data/vendor/PDCurses/sdl1/deficon.h +23 -0
  143. data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
  144. data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
  145. data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
  146. data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
  147. data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
  148. data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
  149. data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
  150. data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
  151. data/vendor/PDCurses/sdl1/sdltest.c +79 -0
  152. data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -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.bcc +111 -0
  170. data/vendor/PDCurses/vt/Makefile.dmc +258 -0
  171. data/vendor/PDCurses/vt/Makefile.vc +144 -0
  172. data/vendor/PDCurses/vt/Makefile.wcc +107 -0
  173. data/vendor/PDCurses/vt/README.md +64 -0
  174. data/vendor/PDCurses/vt/pdcclip.c +20 -0
  175. data/vendor/PDCurses/vt/pdcdisp.c +284 -0
  176. data/vendor/PDCurses/vt/pdcgetsc.c +27 -0
  177. data/vendor/PDCurses/vt/pdckbd.c +394 -0
  178. data/vendor/PDCurses/vt/pdcscrn.c +434 -0
  179. data/vendor/PDCurses/vt/pdcsetsc.c +45 -0
  180. data/vendor/PDCurses/vt/pdcutil.c +43 -0
  181. data/vendor/PDCurses/vt/pdcvt.h +16 -0
  182. data/vendor/PDCurses/watcom.mif +68 -0
  183. data/vendor/PDCurses/wincon/CMakeLists.txt +27 -0
  184. data/vendor/PDCurses/wincon/Makefile.bcc +88 -0
  185. data/vendor/PDCurses/wincon/Makefile.dmc +256 -0
  186. data/vendor/PDCurses/wincon/Makefile.lcc +273 -0
  187. data/vendor/PDCurses/wincon/Makefile.mng +176 -0
  188. data/vendor/PDCurses/wincon/Makefile.vc +144 -0
  189. data/vendor/PDCurses/wincon/Makefile.wcc +51 -0
  190. data/vendor/PDCurses/wincon/README.md +85 -0
  191. data/vendor/PDCurses/wincon/pdcclip.c +174 -0
  192. data/vendor/PDCurses/wincon/pdcdisp.c +143 -0
  193. data/vendor/PDCurses/wincon/pdcgetsc.c +55 -0
  194. data/vendor/PDCurses/wincon/pdckbd.c +786 -0
  195. data/vendor/PDCurses/wincon/pdcscrn.c +717 -0
  196. data/vendor/PDCurses/wincon/pdcsetsc.c +91 -0
  197. data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
  198. data/vendor/PDCurses/wincon/pdcurses.rc +28 -0
  199. data/vendor/PDCurses/wincon/pdcutil.c +41 -0
  200. data/vendor/PDCurses/wincon/pdcwin.h +31 -0
  201. data/vendor/PDCurses/wingui/CMakeLists.txt +27 -0
  202. data/vendor/PDCurses/wingui/Makefile.bcc +85 -0
  203. data/vendor/PDCurses/wingui/Makefile.dmc +259 -0
  204. data/vendor/PDCurses/wingui/Makefile.lcc +273 -0
  205. data/vendor/PDCurses/wingui/Makefile.mng +171 -0
  206. data/vendor/PDCurses/wingui/Makefile.vc +144 -0
  207. data/vendor/PDCurses/wingui/Makefile.wcc +51 -0
  208. data/vendor/PDCurses/wingui/README.md +93 -0
  209. data/vendor/PDCurses/wingui/pdcclip.c +174 -0
  210. data/vendor/PDCurses/wingui/pdcdisp.c +718 -0
  211. data/vendor/PDCurses/wingui/pdcgetsc.c +30 -0
  212. data/vendor/PDCurses/wingui/pdckbd.c +143 -0
  213. data/vendor/PDCurses/wingui/pdcscrn.c +2797 -0
  214. data/vendor/PDCurses/wingui/pdcsetsc.c +89 -0
  215. data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
  216. data/vendor/PDCurses/wingui/pdcurses.rc +28 -0
  217. data/vendor/PDCurses/wingui/pdcutil.c +61 -0
  218. data/vendor/PDCurses/wingui/pdcwin.h +122 -0
  219. data/vendor/PDCurses/x11/Makefile.in +754 -0
  220. data/vendor/PDCurses/x11/PDCurses.spec +82 -0
  221. data/vendor/PDCurses/x11/README.md +62 -0
  222. data/vendor/PDCurses/x11/ScrollBox.c +319 -0
  223. data/vendor/PDCurses/x11/ScrollBox.h +51 -0
  224. data/vendor/PDCurses/x11/ScrollBoxP.h +70 -0
  225. data/vendor/PDCurses/x11/aclocal.m4 +994 -0
  226. data/vendor/PDCurses/x11/big_icon.xbm +46 -0
  227. data/vendor/PDCurses/x11/compose.h +201 -0
  228. data/vendor/PDCurses/x11/config.guess +1500 -0
  229. data/vendor/PDCurses/x11/config.h.in +100 -0
  230. data/vendor/PDCurses/x11/config.sub +1616 -0
  231. data/vendor/PDCurses/x11/configure +6700 -0
  232. data/vendor/PDCurses/x11/configure.ac +295 -0
  233. data/vendor/PDCurses/x11/debian/changelog +6 -0
  234. data/vendor/PDCurses/x11/debian/compat +1 -0
  235. data/vendor/PDCurses/x11/debian/control +11 -0
  236. data/vendor/PDCurses/x11/debian/copyright +27 -0
  237. data/vendor/PDCurses/x11/debian/rules +98 -0
  238. data/vendor/PDCurses/x11/install-sh +253 -0
  239. data/vendor/PDCurses/x11/little_icon.xbm +14 -0
  240. data/vendor/PDCurses/x11/ncurses_cfg.h +45 -0
  241. data/vendor/PDCurses/x11/pdcclip.c +173 -0
  242. data/vendor/PDCurses/x11/pdcdisp.c +85 -0
  243. data/vendor/PDCurses/x11/pdcgetsc.c +28 -0
  244. data/vendor/PDCurses/x11/pdckbd.c +104 -0
  245. data/vendor/PDCurses/x11/pdcscrn.c +258 -0
  246. data/vendor/PDCurses/x11/pdcsetsc.c +95 -0
  247. data/vendor/PDCurses/x11/pdcutil.c +52 -0
  248. data/vendor/PDCurses/x11/pdcx11.c +316 -0
  249. data/vendor/PDCurses/x11/pdcx11.h +191 -0
  250. data/vendor/PDCurses/x11/sb.c +155 -0
  251. data/vendor/PDCurses/x11/x11.c +3686 -0
  252. data/vendor/PDCurses/x11/xcurses-config.in +81 -0
  253. metadata +255 -21
@@ -0,0 +1,14 @@
1
+ #define little_icon_width 32
2
+ #define little_icon_height 32
3
+ static unsigned char little_icon_bits[] = {
4
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
5
+ 0x00, 0xfc, 0x30, 0x00, 0x00, 0xfc, 0x31, 0x00, 0x00, 0x8c, 0x33, 0x00,
6
+ 0x00, 0x0c, 0x33, 0x00, 0x00, 0x0c, 0x33, 0x00, 0x00, 0x8c, 0x33, 0x00,
7
+ 0x00, 0xcc, 0x39, 0x00, 0x00, 0xec, 0x3c, 0x00, 0x00, 0x7c, 0x3e, 0x00,
8
+ 0x00, 0x3c, 0x37, 0x00, 0x00, 0x9c, 0x33, 0x00, 0x00, 0xcc, 0x31, 0x00,
9
+ 0x00, 0xcc, 0x30, 0x00, 0x00, 0xcc, 0x30, 0x00, 0x00, 0xcc, 0x31, 0x00,
10
+ 0x00, 0x8c, 0x3f, 0x00, 0x00, 0x0c, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00,
11
+ 0x00, 0x00, 0x00, 0x00, 0x4c, 0x2a, 0xc6, 0x18, 0x52, 0x5a, 0x29, 0x25,
12
+ 0x42, 0x0a, 0x21, 0x05, 0x42, 0x0a, 0xe6, 0x18, 0x42, 0x0a, 0x28, 0x20,
13
+ 0x52, 0x0a, 0x29, 0x25, 0x8c, 0x09, 0xc6, 0x18, 0x00, 0x00, 0x00, 0x00,
14
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
@@ -0,0 +1,45 @@
1
+ /* This file is only used with the ncurses test programs.
2
+ *
3
+ * Have ncurses-5.6 unpacked in your $(HOME) (you don't need to build
4
+ * it), or edit ncurses_testdir appropriately in the Makefile. Configure
5
+ * and build PDCurses for X11. (Sorry, other ports won't work yet.)
6
+ * Change to this directory, and:
7
+ *
8
+ * "make ncurses_tests" to start.
9
+ * "make ncurses_clean" when you're done.
10
+ *
11
+ * Builds: bs gdc hanoi knight tclock ncurses
12
+ */
13
+
14
+ #define NCURSES_MOUSE_VERSION 2
15
+
16
+ #include "../config.h"
17
+ #include <curses.h>
18
+
19
+ #define ExitProgram exit
20
+
21
+ #define HAVE_CURSES_VERSION 1
22
+ #define HAVE_GETBEGX 1
23
+ #define HAVE_GETCURX 1
24
+ #define HAVE_GETMAXX 1
25
+ #define HAVE_GETNSTR 1
26
+ #define HAVE_GETTIMEOFDAY 1
27
+ #define HAVE_GETWIN 1
28
+ #define HAVE_LIBPANEL 1
29
+ #define HAVE_LOCALE_H 1
30
+ #define HAVE_NAPMS 1
31
+ #define HAVE_PANEL_H 1
32
+ #define HAVE_PUTWIN 1
33
+ #define HAVE_SLK_COLOR 1
34
+ #define HAVE_SLK_INIT 1
35
+ #define HAVE_WRESIZE 1
36
+
37
+ #ifdef PDC_WIDE
38
+ # define USE_WIDEC_SUPPORT 1
39
+ #endif
40
+
41
+ /* Fool ncurses.c so it gives us all the tests, and doesn't redefine
42
+ ACS_ chars
43
+ */
44
+
45
+ #define NCURSES_VERSION PDCURSES
@@ -0,0 +1,173 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include "pdcx11.h"
4
+
5
+ #include <stdlib.h>
6
+
7
+ /*man-start**************************************************************
8
+
9
+ clipboard
10
+ ---------
11
+
12
+ ### Synopsis
13
+
14
+ int PDC_getclipboard(char **contents, long *length);
15
+ int PDC_setclipboard(const char *contents, long length);
16
+ int PDC_freeclipboard(char *contents);
17
+ int PDC_clearclipboard(void);
18
+
19
+ ### Description
20
+
21
+ PDC_getclipboard() gets the textual contents of the system's
22
+ clipboard. This function returns the contents of the clipboard
23
+ in the contents argument. It is the responsibilitiy of the
24
+ caller to free the memory returned, via PDC_freeclipboard().
25
+ The length of the clipboard contents is returned in the length
26
+ argument.
27
+
28
+ PDC_setclipboard copies the supplied text into the system's
29
+ clipboard, emptying the clipboard prior to the copy.
30
+
31
+ PDC_clearclipboard() clears the internal clipboard.
32
+
33
+ ### Return Values
34
+
35
+ indicator of success/failure of call.
36
+ PDC_CLIP_SUCCESS the call was successful
37
+ PDC_CLIP_MEMORY_ERROR unable to allocate sufficient memory for
38
+ the clipboard contents
39
+ PDC_CLIP_EMPTY the clipboard contains no text
40
+ PDC_CLIP_ACCESS_ERROR no clipboard support
41
+
42
+ ### Portability
43
+ X/Open BSD SYS V
44
+ PDC_getclipboard - - -
45
+ PDC_setclipboard - - -
46
+ PDC_freeclipboard - - -
47
+ PDC_clearclipboard - - -
48
+
49
+ **man-end****************************************************************/
50
+
51
+ int PDC_getclipboard(char **contents, long *length)
52
+ {
53
+ #ifdef PDC_WIDE
54
+ wchar_t *wcontents;
55
+ #endif
56
+ int result = 0;
57
+ int len;
58
+
59
+ PDC_LOG(("PDC_getclipboard() - called\n"));
60
+
61
+ XCursesInstructAndWait(CURSES_GET_SELECTION);
62
+
63
+ if (XC_read_socket(xc_display_sock, &result, sizeof(int)) < 0)
64
+ XCursesExitCursesProcess(5, "exiting from PDC_getclipboard");
65
+
66
+ if (result == PDC_CLIP_SUCCESS)
67
+ {
68
+ if (XC_read_socket(xc_display_sock, &len, sizeof(int)) < 0)
69
+ XCursesExitCursesProcess(5, "exiting from PDC_getclipboard");
70
+ #ifdef PDC_WIDE
71
+ wcontents = malloc((len + 1) * sizeof(wchar_t));
72
+ *contents = malloc(len * 3 + 1);
73
+
74
+ if (!wcontents || !*contents)
75
+ #else
76
+ *contents = malloc(len + 1);
77
+
78
+ if (!*contents)
79
+ #endif
80
+ XCursesExitCursesProcess(6, "exiting from PDC_getclipboard - "
81
+ "synchronization error");
82
+
83
+ if (len)
84
+ {
85
+ if (XC_read_socket(xc_display_sock,
86
+ #ifdef PDC_WIDE
87
+ wcontents, len * sizeof(wchar_t)) < 0)
88
+ #else
89
+ *contents, len) < 0)
90
+ #endif
91
+ XCursesExitCursesProcess(5, "exiting from PDC_getclipboard");
92
+ }
93
+
94
+ #ifdef PDC_WIDE
95
+ wcontents[len] = 0;
96
+ len = PDC_wcstombs(*contents, wcontents, len * 3);
97
+ free(wcontents);
98
+ #endif
99
+ (*contents)[len] = '\0';
100
+ *length = len;
101
+ }
102
+
103
+ return result;
104
+ }
105
+
106
+ int PDC_setclipboard(const char *contents, long length)
107
+ {
108
+ #ifdef PDC_WIDE
109
+ wchar_t *wcontents;
110
+ #endif
111
+ int rc;
112
+
113
+ PDC_LOG(("PDC_setclipboard() - called\n"));
114
+
115
+ #ifdef PDC_WIDE
116
+ wcontents = malloc((length + 1) * sizeof(wchar_t));
117
+ if (!wcontents)
118
+ return PDC_CLIP_MEMORY_ERROR;
119
+
120
+ length = PDC_mbstowcs(wcontents, contents, length);
121
+ #endif
122
+ XCursesInstruct(CURSES_SET_SELECTION);
123
+
124
+ /* Write, then wait for X to do its stuff; expect return code. */
125
+
126
+ if (XC_write_socket(xc_display_sock, &length, sizeof(long)) >= 0)
127
+ {
128
+ if (XC_write_socket(xc_display_sock,
129
+ #ifdef PDC_WIDE
130
+ wcontents, length * sizeof(wchar_t)) >= 0)
131
+ {
132
+ free(wcontents);
133
+ #else
134
+ contents, length) >= 0)
135
+ {
136
+ #endif
137
+ if (XC_read_socket(xc_display_sock, &rc, sizeof(int)) >= 0)
138
+ return rc;
139
+ }
140
+ }
141
+
142
+ XCursesExitCursesProcess(5, "exiting from PDC_setclipboard");
143
+
144
+ return PDC_CLIP_ACCESS_ERROR; /* not reached */
145
+ }
146
+
147
+ int PDC_freeclipboard(char *contents)
148
+ {
149
+ PDC_LOG(("PDC_freeclipboard() - called\n"));
150
+
151
+ free(contents);
152
+ return PDC_CLIP_SUCCESS;
153
+ }
154
+
155
+ int PDC_clearclipboard(void)
156
+ {
157
+ int rc;
158
+ long len = 0;
159
+
160
+ PDC_LOG(("PDC_clearclipboard() - called\n"));
161
+
162
+ XCursesInstruct(CURSES_CLEAR_SELECTION);
163
+
164
+ /* Write, then wait for X to do its stuff; expect return code. */
165
+
166
+ if (XC_write_socket(xc_display_sock, &len, sizeof(long)) >= 0)
167
+ if (XC_read_socket(xc_display_sock, &rc, sizeof(int)) >= 0)
168
+ return rc;
169
+
170
+ XCursesExitCursesProcess(5, "exiting from PDC_clearclipboard");
171
+
172
+ return PDC_CLIP_ACCESS_ERROR; /* not reached */
173
+ }
@@ -0,0 +1,85 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include "pdcx11.h"
4
+
5
+ #include <string.h>
6
+
7
+ #ifdef CHTYPE_LONG
8
+
9
+ #ifdef PDC_WIDE
10
+ #define USE_UNICODE_ACS_CHARS 1
11
+ #else
12
+ #define USE_ISO8859_CHARSET
13
+ #endif
14
+
15
+ #include "acs_defs.h"
16
+
17
+ #endif
18
+
19
+ int PDC_display_cursor(int oldrow, int oldcol, int newrow, int newcol,
20
+ int visibility)
21
+ {
22
+ char buf[30];
23
+ int idx, pos;
24
+
25
+ PDC_LOG(("%s:PDC_display_cursor() - called: NEW row %d col %d, vis %d\n",
26
+ XCLOGMSG, newrow, newcol, visibility));
27
+
28
+ if (visibility == -1)
29
+ {
30
+ /* Only send the CURSES_DISPLAY_CURSOR message, no data */
31
+
32
+ idx = CURSES_DISPLAY_CURSOR;
33
+ memcpy(buf, &idx, sizeof(int));
34
+ idx = sizeof(int);
35
+ }
36
+ else
37
+ {
38
+ idx = CURSES_CURSOR;
39
+ memcpy(buf, &idx, sizeof(int));
40
+
41
+ idx = sizeof(int);
42
+ pos = oldrow + (oldcol << 8);
43
+ memcpy(buf + idx, &pos, sizeof(int));
44
+
45
+ idx += sizeof(int);
46
+ pos = newrow + (newcol << 8);
47
+ memcpy(buf + idx, &pos, sizeof(int));
48
+
49
+ idx += sizeof(int);
50
+ }
51
+
52
+ if (XC_write_socket(xc_display_sock, buf, idx) < 0)
53
+ XCursesExitCursesProcess(1, "exiting from PDC_display_cursor");
54
+
55
+ return OK;
56
+ }
57
+
58
+ /* position hardware cursor at (y, x) */
59
+
60
+ void PDC_gotoyx(int row, int col)
61
+ {
62
+ PDC_LOG(("PDC_gotoyx() - called: row %d col %d\n", row, col));
63
+
64
+ PDC_display_cursor(SP->cursrow, SP->curscol, row, col, SP->visibility);
65
+ }
66
+
67
+ /* update the given physical line to look like the corresponding line in
68
+ curscr */
69
+
70
+ void PDC_transform_line(int lineno, int x, int len, const chtype *srcp)
71
+ {
72
+ PDC_LOG(("PDC_transform_line() - called: line %d\n", lineno));
73
+
74
+ XC_get_line_lock(lineno);
75
+
76
+ memcpy(Xcurscr + XCURSCR_Y_OFF(lineno) + (x * sizeof(chtype)), srcp,
77
+ len * sizeof(chtype));
78
+
79
+ *(Xcurscr + XCURSCR_START_OFF + lineno) = x;
80
+ *(Xcurscr + XCURSCR_LENGTH_OFF + lineno) = len;
81
+
82
+ XC_release_line_lock(lineno);
83
+
84
+ XCursesInstructAndWait(CURSES_REFRESH);
85
+ }
@@ -0,0 +1,28 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include "pdcx11.h"
4
+
5
+ /* return width of screen/viewport */
6
+
7
+ int PDC_get_columns(void)
8
+ {
9
+ PDC_LOG(("PDC_get_columns() - called\n"));
10
+
11
+ return XCursesCOLS;
12
+ }
13
+
14
+ /* get the cursor size/shape */
15
+
16
+ int PDC_get_cursor_mode(void)
17
+ {
18
+ return 0;
19
+ }
20
+
21
+ /* return number of screen rows */
22
+
23
+ int PDC_get_rows(void)
24
+ {
25
+ PDC_LOG(("PDC_get_rows() - called\n"));
26
+
27
+ return XCursesLINES;
28
+ }
@@ -0,0 +1,104 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include "pdcx11.h"
4
+
5
+ /*man-start**************************************************************
6
+
7
+ pdckbd
8
+ ------
9
+
10
+ ### Synopsis
11
+
12
+ unsigned long PDC_get_input_fd(void);
13
+
14
+ ### Description
15
+
16
+ PDC_get_input_fd() returns the file descriptor that PDCurses
17
+ reads its input from. It can be used for select().
18
+
19
+ ### Portability
20
+ X/Open BSD SYS V
21
+ PDC_get_input_fd - - -
22
+
23
+ **man-end****************************************************************/
24
+
25
+ /* check if a key or mouse event is waiting */
26
+
27
+ bool PDC_check_key(void)
28
+ {
29
+ struct timeval socket_timeout = {0};
30
+ int s;
31
+
32
+ /* Is something ready to be read on the socket ? Must be a key. */
33
+
34
+ FD_ZERO(&xc_readfds);
35
+ FD_SET(xc_key_sock, &xc_readfds);
36
+
37
+ if ((s = select(FD_SETSIZE, (FD_SET_CAST)&xc_readfds, NULL,
38
+ NULL, &socket_timeout)) < 0)
39
+ XCursesExitCursesProcess(3, "child - exiting from "
40
+ "PDC_check_key select failed");
41
+
42
+ PDC_LOG(("%s:PDC_check_key() - returning %s\n", XCLOGMSG,
43
+ s ? "TRUE" : "FALSE"));
44
+
45
+ return !!s;
46
+ }
47
+
48
+ /* return the next available key or mouse event */
49
+
50
+ int PDC_get_key(void)
51
+ {
52
+ unsigned long newkey = 0;
53
+ int key = 0;
54
+
55
+ if (XC_read_socket(xc_key_sock, &newkey, sizeof(unsigned long)) < 0)
56
+ XCursesExitCursesProcess(2, "exiting from PDC_get_key");
57
+
58
+ pdc_key_modifiers = (newkey >> 24) & 0xFF;
59
+ key = (int)(newkey & 0x00FFFFFF);
60
+
61
+ if (key == KEY_MOUSE && SP->key_code)
62
+ {
63
+ if (XC_read_socket(xc_key_sock, &pdc_mouse_status,
64
+ sizeof(MOUSE_STATUS)) < 0)
65
+ XCursesExitCursesProcess(2, "exiting from PDC_get_key");
66
+ }
67
+
68
+ PDC_LOG(("%s:PDC_get_key() - key %d returned\n", XCLOGMSG, key));
69
+
70
+ return key;
71
+ }
72
+
73
+ unsigned long PDC_get_input_fd(void)
74
+ {
75
+ PDC_LOG(("PDC_get_input_fd() - called\n"));
76
+
77
+ return xc_key_sock;
78
+ }
79
+
80
+ void PDC_set_keyboard_binary(bool on)
81
+ {
82
+ PDC_LOG(("PDC_set_keyboard_binary() - called\n"));
83
+ }
84
+
85
+ /* discard any pending keyboard or mouse input -- this is the core
86
+ routine for flushinp() */
87
+
88
+ void PDC_flushinp(void)
89
+ {
90
+ PDC_LOG(("PDC_flushinp() - called\n"));
91
+
92
+ while (PDC_check_key())
93
+ PDC_get_key();
94
+ }
95
+
96
+ int PDC_mouse_set(void)
97
+ {
98
+ return OK;
99
+ }
100
+
101
+ int PDC_modifiers_set(void)
102
+ {
103
+ return OK;
104
+ }