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,96 @@
1
+ # This module is shared by multiple languages; use include blocker.
2
+ if(__WINDOWS_OPENWATCOM)
3
+ return()
4
+ endif()
5
+ set(__WINDOWS_OPENWATCOM 1)
6
+
7
+ set(CMAKE_LIBRARY_PATH_FLAG "libpath ")
8
+ set(CMAKE_LINK_LIBRARY_FLAG "library ")
9
+ set(CMAKE_LINK_LIBRARY_FILE_FLAG "library")
10
+
11
+ if(CMAKE_VERBOSE_MAKEFILE)
12
+ set(CMAKE_WCL_QUIET)
13
+ set(CMAKE_WLINK_QUIET)
14
+ set(CMAKE_LIB_QUIET)
15
+ else()
16
+ set(CMAKE_WCL_QUIET "-zq")
17
+ set(CMAKE_WLINK_QUIET "op q")
18
+ set(CMAKE_LIB_QUIET "-q")
19
+ endif()
20
+
21
+ string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ")
22
+
23
+ set(CMAKE_C_COMPILE_OPTIONS_DLL "")
24
+ set(CMAKE_SHARED_LIBRARY_C_FLAGS "")
25
+
26
+ message(STATUS "Configured for 16-bit DOS")
27
+ set(WATCOM_DOS16 TRUE)
28
+ set(WATCOM_DOS32 FALSE)
29
+ set(CMAKE_C_COMPILER "wcc")
30
+ set(SYSTEM_NAME dos)
31
+
32
+ set(CMAKE_ASM_COMPILER "wasm")
33
+
34
+ set(CMAKE_BUILD_TYPE_INIT Debug)
35
+
36
+ string(APPEND CMAKE_C_FLAGS_INIT " -bt=${SYSTEM_NAME}")
37
+
38
+ foreach(type CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE)
39
+ set(CMAKE_C_${type}_USE_WATCOM_QUOTE 1)
40
+ endforeach()
41
+
42
+ set(CMAKE_C_CREATE_IMPORT_LIBRARY
43
+ "wlib -q -n -b <TARGET_IMPLIB> +<TARGET_QUOTED>")
44
+
45
+ set(CMAKE_C_LINK_EXECUTABLE
46
+ "wlink ${CMAKE_START_TEMP_FILE} ${CMAKE_WLINK_QUIET} system ${SYSTEM_NAME} name <TARGET> <LINK_FLAGS> file {<OBJECTS>} <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}")
47
+
48
+ # compile a C file into an object file
49
+ set(CMAKE_C_COMPILE_OBJECT
50
+ "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo=\"<OBJECT>\" \"<SOURCE>\"${CMAKE_END_TEMP_FILE}")
51
+
52
+ # preprocess a C source file
53
+ set(CMAKE_C_CREATE_PREPROCESSED_SOURCE
54
+ "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo=\"<PREPROCESSED_SOURCE>\" -pl \"<SOURCE>\"${CMAKE_END_TEMP_FILE}")
55
+
56
+ string(REPLACE " option implib=<TARGET_IMPLIB>" ""
57
+ CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_LIBRARY}")
58
+
59
+ # create a C shared library
60
+ set(CMAKE_C_CREATE_SHARED_LIBRARY ${CMAKE_CXX_CREATE_SHARED_LIBRARY})
61
+
62
+ # create a C shared module
63
+ set(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_CXX_CREATE_SHARED_MODULE})
64
+
65
+ # create a C static library
66
+ set(CMAKE_C_CREATE_STATIC_LIBRARY "wlib ${CMAKE_LIB_QUIET} -c -n -b <TARGET_QUOTED> <LINK_FLAGS> <OBJECTS> ")
67
+
68
+ if(NOT _CMAKE_WATCOM_VERSION)
69
+ set(_CMAKE_WATCOM_VERSION 1)
70
+ if(CMAKE_C_COMPILER_VERSION)
71
+ set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
72
+ set(_compiler_id ${CMAKE_C_COMPILER_ID})
73
+ endif()
74
+ set(WATCOM16)
75
+ set(WATCOM17)
76
+ set(WATCOM18)
77
+ set(WATCOM19)
78
+ set(WATCOM20)
79
+ if("${_compiler_id}" STREQUAL "OpenWatcom")
80
+ if("${_compiler_version}" VERSION_LESS 1.7)
81
+ set(WATCOM16 1)
82
+ endif()
83
+ if("${_compiler_version}" VERSION_EQUAL 1.7)
84
+ set(WATCOM17 1)
85
+ endif()
86
+ if("${_compiler_version}" VERSION_EQUAL 1.8)
87
+ set(WATCOM18 1)
88
+ endif()
89
+ if("${_compiler_version}" VERSION_EQUAL 1.9)
90
+ set(WATCOM19 1)
91
+ endif()
92
+ if("${_compiler_version}" VERSION_EQUAL 2.0)
93
+ set(WATCOM20 1)
94
+ endif()
95
+ endif()
96
+ endif()
@@ -0,0 +1,106 @@
1
+ # This module is shared by multiple languages; use include blocker.
2
+ if(__WINDOWS_OPENWATCOM)
3
+ return()
4
+ endif()
5
+ set(__WINDOWS_OPENWATCOM 1)
6
+
7
+ set(CMAKE_LIBRARY_PATH_FLAG "libpath ")
8
+ set(CMAKE_LINK_LIBRARY_FLAG "library ")
9
+ set(CMAKE_LINK_LIBRARY_FILE_FLAG "library")
10
+
11
+ if(CMAKE_VERBOSE_MAKEFILE)
12
+ set(CMAKE_WCL_QUIET)
13
+ set(CMAKE_WLINK_QUIET)
14
+ set(CMAKE_LIB_QUIET)
15
+ else()
16
+ set(CMAKE_WCL_QUIET "-zq")
17
+ set(CMAKE_WLINK_QUIET "op q")
18
+ set(CMAKE_LIB_QUIET "-q")
19
+ endif()
20
+
21
+ string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ")
22
+
23
+ set(CMAKE_C_COMPILE_OPTIONS_DLL "")
24
+ set(CMAKE_SHARED_LIBRARY_C_FLAGS "")
25
+
26
+ message(STATUS "Configured for 32-bit DOS")
27
+ set(WATCOM_DOS16 FALSE)
28
+ set(WATCOM_DOS32 TRUE)
29
+ set(CMAKE_C_COMPILER "wcc386")
30
+ set(SYSTEM_NAME dos4g)
31
+
32
+ # detect folder, add lib386 directory
33
+ execute_process(
34
+ COMMAND where ${CMAKE_C_COMPILER}
35
+ OUTPUT_VARIABLE COMPILER_PATH
36
+ OUTPUT_STRIP_TRAILING_WHITESPACE
37
+ )
38
+ get_filename_component(COMPILER_DIR ${COMPILER_PATH} PATH)
39
+ get_filename_component(WATCOM_TOOLCHAIN_DIR "${COMPILER_DIR}/.." ABSOLUTE)
40
+ string(APPEND LINK_LIBRARIES_PATH "${WATCOM_TOOLCHAIN_DIR}/lib386;${WATCOM_TOOLCHAIN_DIR}/lib386/dos")
41
+
42
+ set(CMAKE_ASM_COMPILER "wasm")
43
+
44
+ set(CMAKE_BUILD_TYPE_INIT Debug)
45
+
46
+ string(APPEND CMAKE_C_FLAGS_INIT " -bt=${SYSTEM_NAME}")
47
+
48
+ foreach(type CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE)
49
+ set(CMAKE_C_${type}_USE_WATCOM_QUOTE 1)
50
+ endforeach()
51
+
52
+ set(CMAKE_C_CREATE_IMPORT_LIBRARY
53
+ "wlib -q -n -b <TARGET_IMPLIB> +<TARGET_QUOTED>")
54
+
55
+ set(CMAKE_C_LINK_EXECUTABLE
56
+ "wlink ${CMAKE_START_TEMP_FILE} ${CMAKE_WLINK_QUIET} system ${SYSTEM_NAME} name <TARGET> <LINK_FLAGS> file {<OBJECTS>} <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}")
57
+
58
+ # compile a C file into an object file
59
+ set(CMAKE_C_COMPILE_OBJECT
60
+ "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo=\"<OBJECT>\" \"<SOURCE>\"${CMAKE_END_TEMP_FILE}")
61
+
62
+ # preprocess a C source file
63
+ set(CMAKE_C_CREATE_PREPROCESSED_SOURCE
64
+ "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo=\"<PREPROCESSED_SOURCE>\" -pl \"<SOURCE>\"${CMAKE_END_TEMP_FILE}")
65
+
66
+ string(REPLACE " option implib=<TARGET_IMPLIB>" ""
67
+ CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_LIBRARY}")
68
+
69
+ # create a C shared library
70
+ set(CMAKE_C_CREATE_SHARED_LIBRARY ${CMAKE_CXX_CREATE_SHARED_LIBRARY})
71
+
72
+ # create a C shared module
73
+ set(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_CXX_CREATE_SHARED_MODULE})
74
+
75
+ # create a C static library
76
+ set(CMAKE_C_CREATE_STATIC_LIBRARY "wlib ${CMAKE_LIB_QUIET} -c -n -b <TARGET_QUOTED> <LINK_FLAGS> <OBJECTS> ")
77
+
78
+ if(NOT _CMAKE_WATCOM_VERSION)
79
+ set(_CMAKE_WATCOM_VERSION 1)
80
+ if(CMAKE_C_COMPILER_VERSION)
81
+ set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
82
+ set(_compiler_id ${CMAKE_C_COMPILER_ID})
83
+ endif()
84
+ set(WATCOM16)
85
+ set(WATCOM17)
86
+ set(WATCOM18)
87
+ set(WATCOM19)
88
+ set(WATCOM20)
89
+ if("${_compiler_id}" STREQUAL "OpenWatcom")
90
+ if("${_compiler_version}" VERSION_LESS 1.7)
91
+ set(WATCOM16 1)
92
+ endif()
93
+ if("${_compiler_version}" VERSION_EQUAL 1.7)
94
+ set(WATCOM17 1)
95
+ endif()
96
+ if("${_compiler_version}" VERSION_EQUAL 1.8)
97
+ set(WATCOM18 1)
98
+ endif()
99
+ if("${_compiler_version}" VERSION_EQUAL 1.9)
100
+ set(WATCOM19 1)
101
+ endif()
102
+ if("${_compiler_version}" VERSION_EQUAL 2.0)
103
+ set(WATCOM20 1)
104
+ endif()
105
+ endif()
106
+ endif()
@@ -0,0 +1,105 @@
1
+ # This module is shared by multiple languages; use include blocker.
2
+ if(__WINDOWS_OPENWATCOM)
3
+ return()
4
+ endif()
5
+ set(__WINDOWS_OPENWATCOM 1)
6
+
7
+ set(CMAKE_LIBRARY_PATH_FLAG "libpath ")
8
+ set(CMAKE_LINK_LIBRARY_FLAG "library ")
9
+ set(CMAKE_LINK_LIBRARY_FILE_FLAG "library")
10
+
11
+ if(CMAKE_VERBOSE_MAKEFILE)
12
+ set(CMAKE_WCL_QUIET)
13
+ set(CMAKE_WLINK_QUIET)
14
+ set(CMAKE_LIB_QUIET)
15
+ else()
16
+ set(CMAKE_WCL_QUIET "-zq")
17
+ set(CMAKE_WLINK_QUIET "op q")
18
+ set(CMAKE_LIB_QUIET "-q")
19
+ endif()
20
+
21
+ string(APPEND CMAKE_EXE_LINKER_FLAGS_INIT " ")
22
+
23
+ set(CMAKE_C_COMPILE_OPTIONS_DLL "")
24
+ set(CMAKE_SHARED_LIBRARY_C_FLAGS "")
25
+
26
+ message(STATUS "Configured for OS/2 v2")
27
+ set(WATCOM_OS2V2 TRUE)
28
+ set(CMAKE_C_COMPILER "wcc386")
29
+ set(SYSTEM_NAME os2v2)
30
+
31
+ # detect folder, add lib386 directory
32
+ execute_process(
33
+ COMMAND where ${CMAKE_C_COMPILER}
34
+ OUTPUT_VARIABLE COMPILER_PATH
35
+ OUTPUT_STRIP_TRAILING_WHITESPACE
36
+ )
37
+ get_filename_component(COMPILER_DIR ${COMPILER_PATH} PATH)
38
+ get_filename_component(WATCOM_TOOLCHAIN_DIR "${COMPILER_DIR}/.." ABSOLUTE)
39
+ string(APPEND LINK_LIBRARIES_PATH "${WATCOM_TOOLCHAIN_DIR}/lib386;${WATCOM_TOOLCHAIN_DIR}/lib386/dos")
40
+
41
+ set(CMAKE_ASM_COMPILER "wasm")
42
+
43
+ set(CMAKE_BUILD_TYPE_INIT Debug)
44
+
45
+ string(APPEND CMAKE_C_FLAGS_INIT " -bt=${SYSTEM_NAME}")
46
+
47
+ foreach(type CREATE_SHARED_LIBRARY CREATE_SHARED_MODULE LINK_EXECUTABLE)
48
+ set(CMAKE_C_${type}_USE_WATCOM_QUOTE 1)
49
+ endforeach()
50
+
51
+ set(CMAKE_C_CREATE_IMPORT_LIBRARY
52
+ "wlib -q -n -b <TARGET_IMPLIB> +<TARGET_QUOTED>")
53
+
54
+ set(CMAKE_C_LINK_EXECUTABLE
55
+ "wlink ${CMAKE_START_TEMP_FILE} ${CMAKE_WLINK_QUIET} system ${SYSTEM_NAME} name <TARGET> <LINK_FLAGS> file {<OBJECTS>} <LINK_LIBRARIES> ${CMAKE_END_TEMP_FILE}")
56
+
57
+ # compile a C file into an object file
58
+ set(CMAKE_C_COMPILE_OBJECT
59
+ "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo=\"<OBJECT>\" \"<SOURCE>\"${CMAKE_END_TEMP_FILE}")
60
+
61
+ # preprocess a C source file
62
+ set(CMAKE_C_CREATE_PREPROCESSED_SOURCE
63
+ "<CMAKE_C_COMPILER> ${CMAKE_START_TEMP_FILE} ${CMAKE_WCL_QUIET} -d+ <DEFINES> <INCLUDES> <FLAGS> -fo=\"<PREPROCESSED_SOURCE>\" -pl \"<SOURCE>\"${CMAKE_END_TEMP_FILE}")
64
+
65
+ string(REPLACE " option implib=<TARGET_IMPLIB>" ""
66
+ CMAKE_CXX_CREATE_SHARED_MODULE "${CMAKE_CXX_CREATE_SHARED_LIBRARY}")
67
+
68
+ # create a C shared library
69
+ set(CMAKE_C_CREATE_SHARED_LIBRARY ${CMAKE_CXX_CREATE_SHARED_LIBRARY})
70
+
71
+ # create a C shared module
72
+ set(CMAKE_C_CREATE_SHARED_MODULE ${CMAKE_CXX_CREATE_SHARED_MODULE})
73
+
74
+ # create a C static library
75
+ set(CMAKE_C_CREATE_STATIC_LIBRARY "wlib ${CMAKE_LIB_QUIET} -c -n -b <TARGET_QUOTED> <LINK_FLAGS> <OBJECTS> ")
76
+
77
+ if(NOT _CMAKE_WATCOM_VERSION)
78
+ set(_CMAKE_WATCOM_VERSION 1)
79
+ if(CMAKE_C_COMPILER_VERSION)
80
+ set(_compiler_version ${CMAKE_C_COMPILER_VERSION})
81
+ set(_compiler_id ${CMAKE_C_COMPILER_ID})
82
+ endif()
83
+ set(WATCOM16)
84
+ set(WATCOM17)
85
+ set(WATCOM18)
86
+ set(WATCOM19)
87
+ set(WATCOM20)
88
+ if("${_compiler_id}" STREQUAL "OpenWatcom")
89
+ if("${_compiler_version}" VERSION_LESS 1.7)
90
+ set(WATCOM16 1)
91
+ endif()
92
+ if("${_compiler_version}" VERSION_EQUAL 1.7)
93
+ set(WATCOM17 1)
94
+ endif()
95
+ if("${_compiler_version}" VERSION_EQUAL 1.8)
96
+ set(WATCOM18 1)
97
+ endif()
98
+ if("${_compiler_version}" VERSION_EQUAL 1.9)
99
+ set(WATCOM19 1)
100
+ endif()
101
+ if("${_compiler_version}" VERSION_EQUAL 2.0)
102
+ set(WATCOM20 1)
103
+ endif()
104
+ endif()
105
+ endif()
@@ -0,0 +1,1846 @@
1
+ /* Public Domain Curses */
2
+
3
+ /*----------------------------------------------------------------------*
4
+ * PDCurses *
5
+ *----------------------------------------------------------------------*/
6
+
7
+ #ifndef __PDCURSES__
8
+ #define __PDCURSES__ 1
9
+
10
+ /*man-start**************************************************************
11
+
12
+ PDCurses definitions list: (Only define those needed)
13
+
14
+ XCURSES True if compiling for X11.
15
+ PDC_RGB True if you want to use RGB color definitions
16
+ (Red = 1, Green = 2, Blue = 4) instead of BGR.
17
+ PDC_WIDE True if building wide-character support.
18
+ PDC_DLL_BUILD True if building a Windows DLL.
19
+ PDC_NCMOUSE Use the ncurses mouse API instead
20
+ of PDCurses' traditional mouse API.
21
+
22
+ PDCurses portable platform definitions list:
23
+
24
+ PDC_BUILD Defines API build version.
25
+ PDCURSES Enables access to PDCurses-only routines.
26
+ XOPEN Always true.
27
+ SYSVcurses True if you are compiling for SYSV portability.
28
+ BSDcurses True if you are compiling for BSD portability.
29
+
30
+ **man-end****************************************************************/
31
+
32
+ #define PDCURSES 1 /* PDCurses-only routines */
33
+ #define XOPEN 1 /* X/Open Curses routines */
34
+ #define SYSVcurses 1 /* System V Curses routines */
35
+ #define BSDcurses 1 /* BSD Curses routines */
36
+ #if defined( CHTYPE_32)
37
+ #define CHTYPE_LONG 1 /* chtypes will be 32 bits */
38
+ #elif !defined( CHTYPE_16)
39
+ #define CHTYPE_LONG 2 /* chtypes will be (default) 64 bits */
40
+ #endif
41
+
42
+ /*----------------------------------------------------------------------*/
43
+
44
+ #ifdef NO_STDINT_H
45
+ #define uint64_t unsigned long long
46
+ #define uint32_t unsigned long
47
+ #define uint16_t unsigned short
48
+ #else
49
+ #include <stdint.h>
50
+ #endif
51
+ #include <stdarg.h>
52
+ #include <stddef.h>
53
+ #include <stdio.h> /* Required by X/Open usage below */
54
+
55
+ #ifdef PDC_WIDE
56
+ # include <wchar.h>
57
+ #endif
58
+
59
+ #if defined(__STDC_VERSION__) && __STDC_VERSION >= 199901L && \
60
+ !defined(__bool_true_false_are_defined)
61
+ # include <stdbool.h>
62
+ #endif
63
+
64
+ #ifdef __cplusplus
65
+ extern "C"
66
+ {
67
+ # define bool _bool
68
+ #endif
69
+
70
+ /*----------------------------------------------------------------------
71
+ *
72
+ * Constants and Types
73
+ *
74
+ */
75
+
76
+ #undef FALSE
77
+ #undef TRUE
78
+
79
+ #ifdef __bool_true_false_are_defined
80
+
81
+ # define FALSE false
82
+ # define TRUE true
83
+
84
+ #else
85
+
86
+ typedef unsigned char bool;
87
+
88
+ # define FALSE 0
89
+ # define TRUE 1
90
+
91
+ #endif
92
+
93
+ #undef ERR
94
+ #define ERR (-1)
95
+
96
+ #undef OK
97
+ #define OK 0
98
+
99
+ #ifdef CHTYPE_LONG
100
+ #if(CHTYPE_LONG >= 2) /* "non-standard" 64-bit chtypes */
101
+ typedef uint64_t chtype;
102
+ #else /* "Standard" CHTYPE_LONG case, 32-bit: */
103
+ typedef uint32_t chtype;
104
+ # endif
105
+ #else
106
+ typedef uint16_t chtype; /* 8-bit attr + 8-bit char */
107
+ #endif
108
+
109
+ #ifdef PDC_WIDE
110
+ typedef chtype cchar_t;
111
+ #endif
112
+
113
+ typedef chtype attr_t;
114
+
115
+ /* Version constants, available as of version 4.0 : */
116
+ /* Don't forget to update 'version.mif' if MAJOR/MINOR changes! */
117
+
118
+ #define PDC_VER_MAJOR 4
119
+ #define PDC_VER_MINOR 0
120
+ #define PDC_VER_CHANGE 4
121
+ #define PDC_VER_YEAR 2019
122
+ #define PDC_VER_MONTH 1
123
+ #define PDC_VER_DAY 20
124
+
125
+ #define PDC_BUILD (PDC_VER_MAJOR*1000 + PDC_VER_MINOR *100 + PDC_VER_CHANGE)
126
+
127
+ /* When using PDCurses as a DLL (Windows) or shared library (BSD or *nix),
128
+ it's possible to switch the DLL or shared library. One may therefore want
129
+ to inquire of the DLL/shared library the port, version numbers, and
130
+ chtype_size used, and make sure they're what one was expecting. The
131
+ 'PDC_version' structure lets you do just that. */
132
+
133
+ enum PDC_port
134
+ {
135
+ PDC_PORT_X11 = 0,
136
+ PDC_PORT_WIN32 = 1,
137
+ PDC_PORT_WINGUI = 2,
138
+ PDC_PORT_DOS = 3,
139
+ PDC_PORT_OS2 = 4,
140
+ PDC_PORT_SDL1 = 5,
141
+ PDC_PORT_SDL2 = 6,
142
+ PDC_PORT_VT = 7
143
+ };
144
+
145
+ /* Detailed PDC version information */
146
+ #define PDC_HAS_VERSION_INFO 1
147
+ typedef struct
148
+ {
149
+ const enum PDC_port port;
150
+ const int ver_major;
151
+ const int ver_minor;
152
+ const int ver_change;
153
+ const size_t chtype_size;
154
+ const bool is_wide;
155
+ const bool is_forced_utf8;
156
+ } PDC_version_info;
157
+
158
+ /*----------------------------------------------------------------------
159
+ *
160
+ * Mouse Interface -- SYSVR4, with extensions
161
+ *
162
+ */
163
+
164
+ /* Most flavors of PDCurses support three buttons. WinGUI supports */
165
+ /* these plus two "extended" buttons. But we'll set this macro to */
166
+ /* six, allowing future versions to support up to nine total buttons. */
167
+ /* (The button states are broken up into two arrays to allow for the */
168
+ /* possibility of backward compatibility to DLLs compiled with only */
169
+ /* three mouse buttons.) */
170
+
171
+ #define PDC_MAX_MOUSE_BUTTONS 9
172
+ #define PDC_N_EXTENDED_MOUSE_BUTTONS 6
173
+
174
+ typedef struct
175
+ {
176
+ int x; /* absolute column, 0 based, measured in characters */
177
+ int y; /* absolute row, 0 based, measured in characters */
178
+ short button[3]; /* state of three "normal" buttons */
179
+ int changes; /* flags indicating what has changed with the mouse */
180
+ short xbutton[PDC_N_EXTENDED_MOUSE_BUTTONS]; /* state of ext buttons */
181
+ } MOUSE_STATUS;
182
+
183
+ #define BUTTON_RELEASED 0x0000
184
+ #define BUTTON_PRESSED 0x0001
185
+ #define BUTTON_CLICKED 0x0002
186
+ #define BUTTON_DOUBLE_CLICKED 0x0003
187
+ #define BUTTON_TRIPLE_CLICKED 0x0004
188
+ #define BUTTON_MOVED 0x0005 /* PDCurses */
189
+ #define WHEEL_SCROLLED 0x0006 /* PDCurses */
190
+ #define BUTTON_ACTION_MASK 0x0007 /* PDCurses */
191
+
192
+ #define PDC_BUTTON_SHIFT 0x0008 /* PDCurses */
193
+ #define PDC_BUTTON_CONTROL 0x0010 /* PDCurses */
194
+ #define PDC_BUTTON_ALT 0x0020 /* PDCurses */
195
+ #define BUTTON_MODIFIER_MASK 0x0038 /* PDCurses */
196
+
197
+ #define MOUSE_X_POS (Mouse_status.x)
198
+ #define MOUSE_Y_POS (Mouse_status.y)
199
+
200
+ /*
201
+ * Bits associated with the .changes field:
202
+ * 3 2 1 0
203
+ * 210987654321098765432109876543210
204
+ * 1 <- button 1 has changed 0
205
+ * 10 <- button 2 has changed 1
206
+ * 100 <- button 3 has changed 2
207
+ * 1000 <- mouse has moved 3
208
+ * 10000 <- mouse position report 4
209
+ * 100000 <- mouse wheel up 5
210
+ * 1000000 <- mouse wheel down 6
211
+ * 10000000 <- mouse wheel left 7
212
+ * 100000000 <- mouse wheel right 8
213
+ * 1000000000 <- button 4 has changed 9
214
+ * (NOTE: buttons 6 to 10000000000 <- button 5 has changed 10
215
+ * 9 aren't implemented 100000000000 <- button 6 has changed 11
216
+ * in any flavor of 1000000000000 <- button 7 has changed 12
217
+ * PDCurses yet!) 10000000000000 <- button 8 has changed 13
218
+ * 100000000000000 <- button 9 has changed 14
219
+ */
220
+
221
+ #define PDC_MOUSE_MOVED 0x0008
222
+ #define PDC_MOUSE_POSITION 0x0010
223
+ #define PDC_MOUSE_WHEEL_UP 0x0020
224
+ #define PDC_MOUSE_WHEEL_DOWN 0x0040
225
+ #define PDC_MOUSE_WHEEL_LEFT 0x0080
226
+ #define PDC_MOUSE_WHEEL_RIGHT 0x0100
227
+
228
+ #define A_BUTTON_CHANGED (Mouse_status.changes & 7)
229
+ #define MOUSE_MOVED (Mouse_status.changes & PDC_MOUSE_MOVED)
230
+ #define MOUSE_POS_REPORT (Mouse_status.changes & PDC_MOUSE_POSITION)
231
+ #define BUTTON_CHANGED(x) (Mouse_status.changes & (1 << ((x) - ((x)<4 ? 1 : -5))))
232
+ #define BUTTON_STATUS(x) (Mouse_status.button[(x) - 1])
233
+ #define MOUSE_WHEEL_UP (Mouse_status.changes & PDC_MOUSE_WHEEL_UP)
234
+ #define MOUSE_WHEEL_DOWN (Mouse_status.changes & PDC_MOUSE_WHEEL_DOWN)
235
+ #define MOUSE_WHEEL_LEFT (Mouse_status.changes & PDC_MOUSE_WHEEL_LEFT)
236
+ #define MOUSE_WHEEL_RIGHT (Mouse_status.changes & PDC_MOUSE_WHEEL_RIGHT)
237
+
238
+ /* mouse bit-masks */
239
+
240
+ #define BUTTON1_RELEASED 0x00000001L
241
+ #define BUTTON1_PRESSED 0x00000002L
242
+ #define BUTTON1_CLICKED 0x00000004L
243
+ #define BUTTON1_DOUBLE_CLICKED 0x00000008L
244
+ #define BUTTON1_TRIPLE_CLICKED 0x00000010L
245
+ #define BUTTON1_MOVED 0x00000010L /* PDCurses */
246
+
247
+ #define BUTTON2_RELEASED 0x00000020L
248
+ #define BUTTON2_PRESSED 0x00000040L
249
+ #define BUTTON2_CLICKED 0x00000080L
250
+ #define BUTTON2_DOUBLE_CLICKED 0x00000100L
251
+ #define BUTTON2_TRIPLE_CLICKED 0x00000200L
252
+ #define BUTTON2_MOVED 0x00000200L /* PDCurses */
253
+
254
+ #define BUTTON3_RELEASED 0x00000400L
255
+ #define BUTTON3_PRESSED 0x00000800L
256
+ #define BUTTON3_CLICKED 0x00001000L
257
+ #define BUTTON3_DOUBLE_CLICKED 0x00002000L
258
+ #define BUTTON3_TRIPLE_CLICKED 0x00004000L
259
+ #define BUTTON3_MOVED 0x00004000L /* PDCurses */
260
+
261
+ /* For the ncurses-compatible functions only, BUTTON4_PRESSED and
262
+ BUTTON5_PRESSED are returned for mouse scroll wheel up and down;
263
+ otherwise PDCurses doesn't support buttons 4 and 5... except
264
+ as described above for WinGUI, and perhaps to be extended to
265
+ other PDCurses flavors */
266
+
267
+ #define BUTTON4_RELEASED 0x00008000L
268
+ #define BUTTON4_PRESSED 0x00010000L
269
+ #define BUTTON4_CLICKED 0x00020000L
270
+ #define BUTTON4_DOUBLE_CLICKED 0x00040000L
271
+ #define BUTTON4_TRIPLE_CLICKED 0x00080000L
272
+
273
+ #define BUTTON5_RELEASED 0x00100000L
274
+ #define BUTTON5_PRESSED 0x00200000L
275
+ #define BUTTON5_CLICKED 0x00400000L
276
+ #define BUTTON5_DOUBLE_CLICKED 0x00800000L
277
+ #define BUTTON5_TRIPLE_CLICKED 0x01000000L
278
+
279
+ #define MOUSE_WHEEL_SCROLL 0x02000000L /* PDCurses */
280
+ #define BUTTON_MODIFIER_SHIFT 0x04000000L /* PDCurses */
281
+ #define BUTTON_MODIFIER_CONTROL 0x08000000L /* PDCurses */
282
+ #define BUTTON_MODIFIER_ALT 0x10000000L /* PDCurses */
283
+
284
+ #define ALL_MOUSE_EVENTS 0x1fffffffL
285
+ #define REPORT_MOUSE_POSITION 0x20000000L
286
+
287
+ /* ncurses mouse interface */
288
+
289
+ typedef unsigned long mmask_t;
290
+
291
+ typedef struct
292
+ {
293
+ short id; /* unused, always 0 */
294
+ int x, y, z; /* x, y same as MOUSE_STATUS; z unused */
295
+ mmask_t bstate; /* equivalent to changes + button[], but
296
+ in the same format as used for mousemask() */
297
+ } MEVENT;
298
+
299
+ #if defined(PDC_NCMOUSE) && !defined(NCURSES_MOUSE_VERSION)
300
+ # define NCURSES_MOUSE_VERSION 2
301
+ #endif
302
+
303
+ #ifdef NCURSES_MOUSE_VERSION
304
+ # define BUTTON_SHIFT BUTTON_MODIFIER_SHIFT
305
+ # define BUTTON_CONTROL BUTTON_MODIFIER_CONTROL
306
+ # define BUTTON_CTRL BUTTON_MODIFIER_CONTROL
307
+ # define BUTTON_ALT BUTTON_MODIFIER_ALT
308
+ #else
309
+ # define BUTTON_SHIFT PDC_BUTTON_SHIFT
310
+ # define BUTTON_CONTROL PDC_BUTTON_CONTROL
311
+ # define BUTTON_ALT PDC_BUTTON_ALT
312
+ #endif
313
+
314
+ /*----------------------------------------------------------------------
315
+ *
316
+ * Window and Screen Structures
317
+ *
318
+ */
319
+
320
+ typedef struct _win /* definition of a window */
321
+ {
322
+ int _cury; /* current pseudo-cursor */
323
+ int _curx;
324
+ int _maxy; /* max window coordinates */
325
+ int _maxx;
326
+ int _begy; /* origin on screen */
327
+ int _begx;
328
+ int _flags; /* window properties */
329
+ chtype _attrs; /* standard attributes and colors */
330
+ chtype _bkgd; /* background, normally blank */
331
+ bool _clear; /* causes clear at next refresh */
332
+ bool _leaveit; /* leaves cursor where it is */
333
+ bool _scroll; /* allows window scrolling */
334
+ bool _nodelay; /* input character wait flag */
335
+ bool _immed; /* immediate update flag */
336
+ bool _sync; /* synchronise window ancestors */
337
+ bool _use_keypad; /* flags keypad key mode active */
338
+ chtype **_y; /* pointer to line pointer array */
339
+ int *_firstch; /* first changed character in line */
340
+ int *_lastch; /* last changed character in line */
341
+ int _tmarg; /* top of scrolling region */
342
+ int _bmarg; /* bottom of scrolling region */
343
+ int _delayms; /* milliseconds of delay for getch() */
344
+ int _parx, _pary; /* coords relative to parent (0,0) */
345
+ struct _win *_parent; /* subwin's pointer to parent win */
346
+ } WINDOW;
347
+
348
+ /* Avoid using the SCREEN struct directly -- use the corresponding
349
+ functions if possible. This struct may eventually be made private. */
350
+
351
+ typedef struct
352
+ {
353
+ bool alive; /* if initscr() called, and not endwin() */
354
+ bool autocr; /* if cr -> lf */
355
+ bool cbreak; /* if terminal unbuffered */
356
+ bool echo; /* if terminal echo */
357
+ bool raw_inp; /* raw input mode (v. cooked input) */
358
+ bool raw_out; /* raw output mode (7 v. 8 bits) */
359
+ bool audible; /* FALSE if the bell is visual */
360
+ bool mono; /* TRUE if current screen is mono */
361
+ bool resized; /* TRUE if TERM has been resized */
362
+ bool orig_attr; /* TRUE if we have the original colors */
363
+ short orig_fore; /* original screen foreground color */
364
+ short orig_back; /* original screen foreground color */
365
+ int cursrow; /* position of physical cursor */
366
+ int curscol; /* position of physical cursor */
367
+ int visibility; /* visibility of cursor */
368
+ int orig_cursor; /* original cursor size */
369
+ int lines; /* new value for LINES */
370
+ int cols; /* new value for COLS */
371
+ unsigned long _trap_mbe; /* trap these mouse button events */
372
+ unsigned long _map_mbe_to_key; /* map mouse buttons to slk */
373
+ int mouse_wait; /* time to wait (in ms) for a
374
+ button release after a press, in
375
+ order to count it as a click */
376
+ int slklines; /* lines in use by slk_init() */
377
+ WINDOW *slk_winptr; /* window for slk */
378
+ int linesrippedoff; /* lines ripped off via ripoffline() */
379
+ int linesrippedoffontop; /* lines ripped off on
380
+ top via ripoffline() */
381
+ int delaytenths; /* 1/10ths second to wait block
382
+ getch() for */
383
+ bool _preserve; /* TRUE if screen background
384
+ to be preserved */
385
+ int _restore; /* specifies if screen background
386
+ to be restored, and how */
387
+ bool save_key_modifiers; /* TRUE if each key modifiers saved
388
+ with each key press */
389
+ bool return_key_modifiers; /* TRUE if modifier keys are
390
+ returned as "real" keys */
391
+ bool key_code; /* TRUE if last key is a special key;
392
+ used internally by get_wch() */
393
+ #ifdef XCURSES
394
+ int XcurscrSize; /* size of Xcurscr shared memory block */
395
+ bool sb_on;
396
+ int sb_viewport_y;
397
+ int sb_viewport_x;
398
+ int sb_total_y;
399
+ int sb_total_x;
400
+ int sb_cur_y;
401
+ int sb_cur_x;
402
+ int exit_key;
403
+ #endif
404
+ short line_color; /* color of line attributes - default -1 */
405
+ } SCREEN;
406
+
407
+ /*----------------------------------------------------------------------
408
+ *
409
+ * External Variables
410
+ *
411
+ */
412
+
413
+ #ifdef PDC_DLL_BUILD
414
+ # ifdef CURSES_LIBRARY
415
+ # define PDCEX __declspec(dllexport) extern
416
+ # else
417
+ # define PDCEX __declspec(dllimport)
418
+ # endif
419
+ #else
420
+ # define PDCEX extern
421
+ #endif
422
+
423
+ PDCEX int LINES; /* terminal height */
424
+ PDCEX int COLS; /* terminal width */
425
+ PDCEX WINDOW *stdscr; /* the default screen window */
426
+ PDCEX WINDOW *curscr; /* the current screen image */
427
+ PDCEX SCREEN *SP; /* curses variables */
428
+ PDCEX MOUSE_STATUS Mouse_status;
429
+ PDCEX int COLORS;
430
+ PDCEX int COLOR_PAIRS;
431
+ PDCEX int TABSIZE;
432
+ PDCEX chtype acs_map[]; /* alternate character set map */
433
+ PDCEX char ttytype[]; /* terminal name/description */
434
+ PDCEX PDC_version_info PDC_version;
435
+
436
+ /*man-start**************************************************************
437
+
438
+ Text Attributes
439
+ ===============
440
+
441
+ Originally, PDCurses used a short (16 bits) for its chtype. To include
442
+ color, a number of things had to be sacrificed from the strict Unix and
443
+ System V support. The main problem was fitting all character attributes
444
+ and color into an unsigned char (all 8 bits!).
445
+
446
+ Today, PDCurses by default uses a long (32 bits) for its chtype, as in
447
+ System V. The short chtype is still available, by undefining CHTYPE_LONG
448
+ and rebuilding the library.
449
+
450
+ The following is the structure of a win->_attrs chtype:
451
+
452
+ short form:
453
+
454
+ +-----------------------------------------------+
455
+ |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
456
+ +-----------------------------------------------+
457
+ color number | attrs | character eg 'a'
458
+
459
+ The available non-color attributes are bold, reverse and blink. Others
460
+ have no effect. The high order char is an index into an array of
461
+ physical colors (defined in color.c) -- 32 foreground/background color
462
+ pairs (5 bits) plus 3 bits for other attributes.
463
+
464
+ long form:
465
+
466
+ +--------------------------------------------------------------------+
467
+ |31|30|29|28|27|26|25|24|23|22|21|20|19|18|17|16|15|14|13|..| 2| 1| 0|
468
+ +--------------------------------------------------------------------+
469
+ color number | modifiers | character eg 'a'
470
+
471
+ The available non-color attributes are bold, underline, invisible,
472
+ right-line, left-line, protect, reverse and blink. 256 color pairs (8
473
+ bits), 8 bits for other attributes, and 16 bits for character data.
474
+
475
+ Note that there is now a "super-long" 64-bit form, available by
476
+ defining CHTYPE_LONG to be 2:
477
+
478
+ -------------------------------------------------------------------------------
479
+ |63|62|61|60|59|..|34|33|32|31|30|29|28|..|22|21|20|19|18|17|16|..| 3| 2| 1| 0|
480
+ -------------------------------------------------------------------------------
481
+ color number | modifiers | character eg 'a'
482
+
483
+
484
+ We take five more bits for the character (thus allowing Unicode values
485
+ past 64K; UTF-16 can go up to 0x10ffff, requiring 21 bits total), and
486
+ four more bits for attributes. Three are currently used as A_OVERLINE, A_DIM,
487
+ and A_STRIKEOUT; one more is reserved for future use. 31 bits are then used
488
+ for color. These are usually just treated as the usual palette
489
+ indices, and range from 0 to 255. However, if bit 63 is
490
+ set, the remaining 30 bits are interpreted as foreground RGB (first
491
+ fifteen bits, five bits for each of the three channels) and background RGB
492
+ (same scheme using the remaining 15 bits.)
493
+
494
+ **man-end****************************************************************/
495
+
496
+ /*** Video attribute macros ***/
497
+
498
+ #define A_NORMAL (chtype)0
499
+
500
+ #ifdef CHTYPE_LONG
501
+
502
+ # if(CHTYPE_LONG >= 2) /* 64-bit chtypes */
503
+ # define PDC_CHARTEXT_BITS 21
504
+ # define A_CHARTEXT (chtype)( ((chtype)0x1 << PDC_CHARTEXT_BITS) - 1)
505
+ # define A_ALTCHARSET ((chtype)0x001 << PDC_CHARTEXT_BITS)
506
+ # define A_RIGHTLINE ((chtype)0x002 << PDC_CHARTEXT_BITS)
507
+ # define A_LEFTLINE ((chtype)0x004 << PDC_CHARTEXT_BITS)
508
+ # define A_INVIS ((chtype)0x008 << PDC_CHARTEXT_BITS)
509
+ # define A_UNDERLINE ((chtype)0x010 << PDC_CHARTEXT_BITS)
510
+ # define A_REVERSE ((chtype)0x020 << PDC_CHARTEXT_BITS)
511
+ # define A_BLINK ((chtype)0x040 << PDC_CHARTEXT_BITS)
512
+ # define A_BOLD ((chtype)0x080 << PDC_CHARTEXT_BITS)
513
+ # define A_OVERLINE ((chtype)0x100 << PDC_CHARTEXT_BITS)
514
+ # define A_STRIKEOUT ((chtype)0x200 << PDC_CHARTEXT_BITS)
515
+ # define A_DIM ((chtype)0x400 << PDC_CHARTEXT_BITS)
516
+ #if 0
517
+ /* May come up with a use for this bit */
518
+ /* someday; reserved for the future: */
519
+ # define A_FUTURE_2 ((chtype)0x800 << PDC_CHARTEXT_BITS)
520
+ #endif
521
+ # define PDC_COLOR_SHIFT (PDC_CHARTEXT_BITS + 12)
522
+ # define A_COLOR ((chtype)0x7fffffff << PDC_COLOR_SHIFT)
523
+ # define A_RGB_COLOR ((chtype)0x40000000 << PDC_COLOR_SHIFT)
524
+ # define A_ATTRIBUTES (((chtype)0xfff << PDC_CHARTEXT_BITS) | A_COLOR)
525
+ # define A_RGB( rfore, gfore, bfore, rback, gback, bback) \
526
+ (( (((chtype)(bfore) << 25) \
527
+ | ((chtype)(gfore) << 20) \
528
+ | ((chtype)(rfore) << 15) \
529
+ | ((chtype)(bback) << 10) \
530
+ | ((chtype)(gback) << 5) \
531
+ | ((chtype)(rback) )) << PDC_COLOR_SHIFT) | A_RGB_COLOR)
532
+ # else /* plain ol' 32-bit chtypes */
533
+ # define A_ALTCHARSET (chtype)0x00010000
534
+ # define A_RIGHTLINE (chtype)0x00020000
535
+ # define A_LEFTLINE (chtype)0x00040000
536
+ # define A_INVIS (chtype)0x00080000
537
+ # define A_UNDERLINE (chtype)0x00100000
538
+ # define A_REVERSE (chtype)0x00200000
539
+ # define A_BLINK (chtype)0x00400000
540
+ # define A_BOLD (chtype)0x00800000
541
+ # define A_COLOR (chtype)0xff000000
542
+ # define A_RGB_COLOR A_NORMAL
543
+ #ifdef PDC_WIDE
544
+ # define A_CHARTEXT (chtype)0x0000ffff
545
+ # define A_ATTRIBUTES (chtype)0xffff0000
546
+ # define A_DIM A_NORMAL
547
+ # define A_OVERLINE A_NORMAL
548
+ # define A_STRIKEOUT A_NORMAL
549
+ #else /* with 8-bit chars, we have bits for these attribs : */
550
+ # define A_CHARTEXT (chtype)0x000000ff
551
+ # define A_ATTRIBUTES (chtype)0xffffe000
552
+ # define A_DIM (chtype)0x00008000
553
+ # define A_OVERLINE (chtype)0x00004000
554
+ # define A_STRIKEOUT (chtype)0x00002000
555
+ #endif
556
+ # define PDC_COLOR_SHIFT 24
557
+ #endif
558
+
559
+
560
+ # define A_ITALIC A_INVIS
561
+ # define A_PROTECT (A_UNDERLINE | A_LEFTLINE | A_RIGHTLINE)
562
+
563
+ #else /* 16-bit chtypes */
564
+ # define A_BOLD (chtype)0x0100 /* X/Open */
565
+ # define A_REVERSE (chtype)0x0200 /* X/Open */
566
+ # define A_BLINK (chtype)0x0400 /* X/Open */
567
+
568
+ # define A_ATTRIBUTES (chtype)0xff00 /* X/Open */
569
+ # define A_CHARTEXT (chtype)0x00ff /* X/Open */
570
+ # define A_COLOR (chtype)0xf800 /* System V */
571
+
572
+ # define A_ALTCHARSET A_NORMAL /* X/Open */
573
+ # define A_PROTECT A_NORMAL /* X/Open */
574
+ # define A_UNDERLINE A_NORMAL /* X/Open */
575
+ # define A_OVERLINE A_NORMAL /* X/Open */
576
+ # define A_STRIKEOUT A_NORMAL /* X/Open */
577
+
578
+ # define A_LEFTLINE A_NORMAL
579
+ # define A_RIGHTLINE A_NORMAL
580
+ # define A_ITALIC A_NORMAL
581
+ # define A_INVIS A_NORMAL
582
+ # define A_RGB_COLOR A_NORMAL
583
+ # define A_DIM A_NORMAL
584
+
585
+ # define PDC_COLOR_SHIFT 11
586
+ #endif
587
+
588
+ #define A_STANDOUT (A_REVERSE | A_BOLD) /* X/Open */
589
+
590
+ #define CHR_MSK A_CHARTEXT /* Obsolete */
591
+ #define ATR_MSK A_ATTRIBUTES /* Obsolete */
592
+ #define ATR_NRM A_NORMAL /* Obsolete */
593
+
594
+ /* For use with attr_t -- X/Open says, "these shall be distinct", so
595
+ this is a non-conforming implementation. */
596
+
597
+ #define WA_NORMAL A_NORMAL
598
+
599
+ #define WA_ALTCHARSET A_ALTCHARSET
600
+ #define WA_BLINK A_BLINK
601
+ #define WA_BOLD A_BOLD
602
+ #define WA_DIM A_DIM
603
+ #define WA_INVIS A_INVIS
604
+ #define WA_LEFT A_LEFTLINE
605
+ #define WA_PROTECT A_PROTECT
606
+ #define WA_REVERSE A_REVERSE
607
+ #define WA_RIGHT A_RIGHTLINE
608
+ #define WA_STANDOUT A_STANDOUT
609
+ #define WA_UNDERLINE A_UNDERLINE
610
+
611
+ #define WA_HORIZONTAL A_NORMAL
612
+ #define WA_LOW A_NORMAL
613
+ #define WA_TOP A_NORMAL
614
+ #define WA_VERTICAL A_NORMAL
615
+
616
+ #define WA_ATTRIBUTES A_ATTRIBUTES
617
+
618
+ /*** Alternate character set macros ***/
619
+
620
+ /* 'w' = 32-bit chtype; acs_map[] index | A_ALTCHARSET
621
+ 'n' = 16-bit chtype; it gets the fallback set because no bit is
622
+ available for A_ALTCHARSET */
623
+
624
+ #ifdef CHTYPE_LONG
625
+ # define PDC_ACS(w, n) ((chtype)w | A_ALTCHARSET)
626
+ #else
627
+ # define PDC_ACS(w, n) ((chtype)n)
628
+ #endif
629
+
630
+ /* VT100-compatible symbols -- box chars */
631
+
632
+ #define ACS_LRCORNER PDC_ACS('V', '+')
633
+ #define ACS_URCORNER PDC_ACS('W', '+')
634
+ #define ACS_ULCORNER PDC_ACS('X', '+')
635
+ #define ACS_LLCORNER PDC_ACS('Y', '+')
636
+ #define ACS_PLUS PDC_ACS('Z', '+')
637
+ #define ACS_LTEE PDC_ACS('[', '+')
638
+ #define ACS_RTEE PDC_ACS('\\', '+')
639
+ #define ACS_BTEE PDC_ACS(']', '+')
640
+ #define ACS_TTEE PDC_ACS('^', '+')
641
+ #define ACS_HLINE PDC_ACS('_', '-')
642
+ #define ACS_VLINE PDC_ACS('`', '|')
643
+
644
+ /* PDCurses-only ACS chars. Don't use if ncurses compatibility matters.
645
+ Some won't work in non-wide X11 builds (see 'acs_defs.h' for details). */
646
+
647
+ #define ACS_CENT PDC_ACS('{', 'c')
648
+ #define ACS_YEN PDC_ACS('|', 'y')
649
+ #define ACS_PESETA PDC_ACS('}', 'p')
650
+ #define ACS_HALF PDC_ACS('&', '/')
651
+ #define ACS_QUARTER PDC_ACS('\'', '/')
652
+ #define ACS_LEFT_ANG_QU PDC_ACS(')', '<')
653
+ #define ACS_RIGHT_ANG_QU PDC_ACS('*', '>')
654
+ #define ACS_D_HLINE PDC_ACS('a', '-')
655
+ #define ACS_D_VLINE PDC_ACS('b', '|')
656
+ #define ACS_CLUB PDC_ACS( 11, 'C')
657
+ #define ACS_HEART PDC_ACS( 12, 'H')
658
+ #define ACS_SPADE PDC_ACS( 13, 'S')
659
+ #define ACS_SMILE PDC_ACS( 14, 'O')
660
+ #define ACS_REV_SMILE PDC_ACS( 15, 'O')
661
+ #define ACS_MED_BULLET PDC_ACS( 16, '.')
662
+ #define ACS_WHITE_BULLET PDC_ACS( 17, 'O')
663
+ #define ACS_PILCROW PDC_ACS( 18, 'O')
664
+ #define ACS_SECTION PDC_ACS( 19, 'O')
665
+
666
+ #define ACS_SUP2 PDC_ACS(',', '2')
667
+ #define ACS_ALPHA PDC_ACS('.', 'a')
668
+ #define ACS_BETA PDC_ACS('/', 'b')
669
+ #define ACS_GAMMA PDC_ACS('0', 'y')
670
+ #define ACS_UP_SIGMA PDC_ACS('1', 'S')
671
+ #define ACS_LO_SIGMA PDC_ACS('2', 's')
672
+ #define ACS_MU PDC_ACS('4', 'u')
673
+ #define ACS_TAU PDC_ACS('5', 't')
674
+ #define ACS_UP_PHI PDC_ACS('6', 'F')
675
+ #define ACS_THETA PDC_ACS('7', 't')
676
+ #define ACS_OMEGA PDC_ACS('8', 'w')
677
+ #define ACS_DELTA PDC_ACS('9', 'd')
678
+ #define ACS_INFINITY PDC_ACS('-', 'i')
679
+ #define ACS_LO_PHI PDC_ACS( 22, 'f')
680
+ #define ACS_EPSILON PDC_ACS(':', 'e')
681
+ #define ACS_INTERSECT PDC_ACS('e', 'u')
682
+ #define ACS_TRIPLE_BAR PDC_ACS('f', '=')
683
+ #define ACS_DIVISION PDC_ACS('c', '/')
684
+ #define ACS_APPROX_EQ PDC_ACS('d', '~')
685
+ #define ACS_SM_BULLET PDC_ACS('g', '.')
686
+ #define ACS_SQUARE_ROOT PDC_ACS('i', '!')
687
+ #define ACS_UBLOCK PDC_ACS('p', '^')
688
+ #define ACS_BBLOCK PDC_ACS('q', '_')
689
+ #define ACS_LBLOCK PDC_ACS('r', '<')
690
+ #define ACS_RBLOCK PDC_ACS('s', '>')
691
+
692
+ #define ACS_A_ORDINAL PDC_ACS(20, 'a')
693
+ #define ACS_O_ORDINAL PDC_ACS(21, 'o')
694
+ #define ACS_INV_QUERY PDC_ACS(24, '?')
695
+ #define ACS_REV_NOT PDC_ACS(25, '!')
696
+ #define ACS_NOT PDC_ACS(26, '!')
697
+ #define ACS_INV_BANG PDC_ACS(23, '!')
698
+ #define ACS_UP_INTEGRAL PDC_ACS(27, '|')
699
+ #define ACS_LO_INTEGRAL PDC_ACS(28, '|')
700
+ #define ACS_SUP_N PDC_ACS(29, 'n')
701
+ #define ACS_CENTER_SQU PDC_ACS(30, 'x')
702
+ #define ACS_F_WITH_HOOK PDC_ACS(31, 'f')
703
+
704
+ #define ACS_SD_LRCORNER PDC_ACS(';', '+')
705
+ #define ACS_SD_URCORNER PDC_ACS('<', '+')
706
+ #define ACS_SD_ULCORNER PDC_ACS('=', '+')
707
+ #define ACS_SD_LLCORNER PDC_ACS('>', '+')
708
+ #define ACS_SD_PLUS PDC_ACS('?', '+')
709
+ #define ACS_SD_LTEE PDC_ACS('@', '+')
710
+ #define ACS_SD_RTEE PDC_ACS('A', '+')
711
+ #define ACS_SD_BTEE PDC_ACS('B', '+')
712
+ #define ACS_SD_TTEE PDC_ACS('C', '+')
713
+
714
+ #define ACS_D_LRCORNER PDC_ACS('D', '+')
715
+ #define ACS_D_URCORNER PDC_ACS('E', '+')
716
+ #define ACS_D_ULCORNER PDC_ACS('F', '+')
717
+ #define ACS_D_LLCORNER PDC_ACS('G', '+')
718
+ #define ACS_D_PLUS PDC_ACS('H', '+')
719
+ #define ACS_D_LTEE PDC_ACS('I', '+')
720
+ #define ACS_D_RTEE PDC_ACS('J', '+')
721
+ #define ACS_D_BTEE PDC_ACS('K', '+')
722
+ #define ACS_D_TTEE PDC_ACS('L', '+')
723
+
724
+ #define ACS_DS_LRCORNER PDC_ACS('M', '+')
725
+ #define ACS_DS_URCORNER PDC_ACS('N', '+')
726
+ #define ACS_DS_ULCORNER PDC_ACS('O', '+')
727
+ #define ACS_DS_LLCORNER PDC_ACS('P', '+')
728
+ #define ACS_DS_PLUS PDC_ACS('Q', '+')
729
+ #define ACS_DS_LTEE PDC_ACS('R', '+')
730
+ #define ACS_DS_RTEE PDC_ACS('S', '+')
731
+ #define ACS_DS_BTEE PDC_ACS('T', '+')
732
+ #define ACS_DS_TTEE PDC_ACS('U', '+')
733
+
734
+ /* VT100-compatible symbols -- other */
735
+
736
+ #define ACS_S1 PDC_ACS('l', '-')
737
+ #define ACS_S9 PDC_ACS('o', '_')
738
+ #define ACS_DIAMOND PDC_ACS('j', '+')
739
+ #define ACS_CKBOARD PDC_ACS('k', ':')
740
+ #define ACS_DEGREE PDC_ACS('w', '\'')
741
+ #define ACS_PLMINUS PDC_ACS('x', '#')
742
+ #define ACS_BULLET PDC_ACS('h', 'o')
743
+
744
+ /* Teletype 5410v1 symbols -- these are defined in SysV curses, but
745
+ are not well-supported by most terminals. Stick to VT100 characters
746
+ for optimum portability. */
747
+
748
+ #define ACS_LARROW PDC_ACS('!', '<')
749
+ #define ACS_RARROW PDC_ACS(' ', '>')
750
+ #define ACS_DARROW PDC_ACS('#', 'v')
751
+ #define ACS_UARROW PDC_ACS('"', '^')
752
+ #define ACS_BOARD PDC_ACS('+', '#')
753
+ #define ACS_LTBOARD PDC_ACS('y', '#')
754
+ #define ACS_LANTERN PDC_ACS('z', '*')
755
+ #define ACS_BLOCK PDC_ACS('t', '#')
756
+
757
+ /* That goes double for these -- undocumented SysV symbols. Don't use
758
+ them. */
759
+
760
+ #define ACS_S3 PDC_ACS('m', '-')
761
+ #define ACS_S7 PDC_ACS('n', '-')
762
+ #define ACS_LEQUAL PDC_ACS('u', '<')
763
+ #define ACS_GEQUAL PDC_ACS('v', '>')
764
+ #define ACS_PI PDC_ACS('$', 'n')
765
+ #define ACS_NEQUAL PDC_ACS('%', '+')
766
+ #define ACS_STERLING PDC_ACS('~', 'L')
767
+
768
+ /* Box char aliases */
769
+
770
+ #define ACS_BSSB ACS_ULCORNER
771
+ #define ACS_SSBB ACS_LLCORNER
772
+ #define ACS_BBSS ACS_URCORNER
773
+ #define ACS_SBBS ACS_LRCORNER
774
+ #define ACS_SBSS ACS_RTEE
775
+ #define ACS_SSSB ACS_LTEE
776
+ #define ACS_SSBS ACS_BTEE
777
+ #define ACS_BSSS ACS_TTEE
778
+ #define ACS_BSBS ACS_HLINE
779
+ #define ACS_SBSB ACS_VLINE
780
+ #define ACS_SSSS ACS_PLUS
781
+
782
+ /* cchar_t aliases */
783
+
784
+ #ifdef PDC_WIDE
785
+ # define WACS_LRCORNER (&(acs_map['V']))
786
+ # define WACS_URCORNER (&(acs_map['W']))
787
+ # define WACS_ULCORNER (&(acs_map['X']))
788
+ # define WACS_LLCORNER (&(acs_map['Y']))
789
+ # define WACS_PLUS (&(acs_map['Z']))
790
+ # define WACS_LTEE (&(acs_map['[']))
791
+ # define WACS_RTEE (&(acs_map['\\']))
792
+ # define WACS_BTEE (&(acs_map[']']))
793
+ # define WACS_TTEE (&(acs_map['^']))
794
+ # define WACS_HLINE (&(acs_map['_']))
795
+ # define WACS_VLINE (&(acs_map['`']))
796
+
797
+ # define WACS_CENT (&(acs_map['{']))
798
+ # define WACS_YEN (&(acs_map['|']))
799
+ # define WACS_PESETA (&(acs_map['}']))
800
+ # define WACS_HALF (&(acs_map['&']))
801
+ # define WACS_QUARTER (&(acs_map['\'']))
802
+ # define WACS_LEFT_ANG_QU (&(acs_map[')']))
803
+ # define WACS_RIGHT_ANG_QU (&(acs_map['*']))
804
+ # define WACS_D_HLINE (&(acs_map['a']))
805
+ # define WACS_D_VLINE (&(acs_map['b']))
806
+ # define WACS_CLUB (&(acs_map[ 11]))
807
+ # define WACS_HEART (&(acs_map[ 12]))
808
+ # define WACS_SPADE (&(acs_map[ 13]))
809
+ # define WACS_SMILE (&(acs_map[ 14]))
810
+ # define WACS_REV_SMILE (&(acs_map[ 15]))
811
+ # define WACS_MED_BULLET (&(acs_map[ 16]))
812
+ # define WACS_WHITE_BULLET (&(acs_map[ 17]))
813
+ # define WACS_PILCROW (&(acs_map[ 18]))
814
+ # define WACS_SECTION (&(acs_map[ 19]))
815
+
816
+ # define WACS_SUP2 (&(acs_map[',']))
817
+ # define WACS_ALPHA (&(acs_map['.']))
818
+ # define WACS_BETA (&(acs_map['/']))
819
+ # define WACS_GAMMA (&(acs_map['0']))
820
+ # define WACS_UP_SIGMA (&(acs_map['1']))
821
+ # define WACS_LO_SIGMA (&(acs_map['2']))
822
+ # define WACS_MU (&(acs_map['4']))
823
+ # define WACS_TAU (&(acs_map['5']))
824
+ # define WACS_UP_PHI (&(acs_map['6']))
825
+ # define WACS_THETA (&(acs_map['7']))
826
+ # define WACS_OMEGA (&(acs_map['8']))
827
+ # define WACS_DELTA (&(acs_map['9']))
828
+ # define WACS_INFINITY (&(acs_map['-']))
829
+ # define WACS_LO_PHI (&(acs_map[ 22]))
830
+ # define WACS_EPSILON (&(acs_map[':']))
831
+ # define WACS_INTERSECT (&(acs_map['e']))
832
+ # define WACS_TRIPLE_BAR (&(acs_map['f']))
833
+ # define WACS_DIVISION (&(acs_map['c']))
834
+ # define WACS_APPROX_EQ (&(acs_map['d']))
835
+ # define WACS_SM_BULLET (&(acs_map['g']))
836
+ # define WACS_SQUARE_ROOT (&(acs_map['i']))
837
+ # define WACS_UBLOCK (&(acs_map['p']))
838
+ # define WACS_BBLOCK (&(acs_map['q']))
839
+ # define WACS_LBLOCK (&(acs_map['r']))
840
+ # define WACS_RBLOCK (&(acs_map['s']))
841
+
842
+ # define WACS_A_ORDINAL (&(acs_map[20]))
843
+ # define WACS_O_ORDINAL (&(acs_map[21]))
844
+ # define WACS_INV_QUERY (&(acs_map[24]))
845
+ # define WACS_REV_NOT (&(acs_map[25]))
846
+ # define WACS_NOT (&(acs_map[26]))
847
+ # define WACS_INV_BANG (&(acs_map[23]))
848
+ # define WACS_UP_INTEGRAL (&(acs_map[27]))
849
+ # define WACS_LO_INTEGRAL (&(acs_map[28]))
850
+ # define WACS_SUP_N (&(acs_map[29]))
851
+ # define WACS_CENTER_SQU (&(acs_map[30]))
852
+ # define WACS_F_WITH_HOOK (&(acs_map[31]))
853
+
854
+ # define WACS_SD_LRCORNER (&(acs_map[';']))
855
+ # define WACS_SD_URCORNER (&(acs_map['<']))
856
+ # define WACS_SD_ULCORNER (&(acs_map['=']))
857
+ # define WACS_SD_LLCORNER (&(acs_map['>']))
858
+ # define WACS_SD_PLUS (&(acs_map['?']))
859
+ # define WACS_SD_LTEE (&(acs_map['@']))
860
+ # define WACS_SD_RTEE (&(acs_map['A']))
861
+ # define WACS_SD_BTEE (&(acs_map['B']))
862
+ # define WACS_SD_TTEE (&(acs_map['C']))
863
+
864
+ # define WACS_D_LRCORNER (&(acs_map['D']))
865
+ # define WACS_D_URCORNER (&(acs_map['E']))
866
+ # define WACS_D_ULCORNER (&(acs_map['F']))
867
+ # define WACS_D_LLCORNER (&(acs_map['G']))
868
+ # define WACS_D_PLUS (&(acs_map['H']))
869
+ # define WACS_D_LTEE (&(acs_map['I']))
870
+ # define WACS_D_RTEE (&(acs_map['J']))
871
+ # define WACS_D_BTEE (&(acs_map['K']))
872
+ # define WACS_D_TTEE (&(acs_map['L']))
873
+
874
+ # define WACS_DS_LRCORNER (&(acs_map['M']))
875
+ # define WACS_DS_URCORNER (&(acs_map['N']))
876
+ # define WACS_DS_ULCORNER (&(acs_map['O']))
877
+ # define WACS_DS_LLCORNER (&(acs_map['P']))
878
+ # define WACS_DS_PLUS (&(acs_map['Q']))
879
+ # define WACS_DS_LTEE (&(acs_map['R']))
880
+ # define WACS_DS_RTEE (&(acs_map['S']))
881
+ # define WACS_DS_BTEE (&(acs_map['T']))
882
+ # define WACS_DS_TTEE (&(acs_map['U']))
883
+
884
+ # define WACS_S1 (&(acs_map['l']))
885
+ # define WACS_S9 (&(acs_map['o']))
886
+ # define WACS_DIAMOND (&(acs_map['j']))
887
+ # define WACS_CKBOARD (&(acs_map['k']))
888
+ # define WACS_DEGREE (&(acs_map['w']))
889
+ # define WACS_PLMINUS (&(acs_map['x']))
890
+ # define WACS_BULLET (&(acs_map['h']))
891
+
892
+
893
+ # define WACS_LARROW (&(acs_map['!']))
894
+ # define WACS_RARROW (&(acs_map[' ']))
895
+ # define WACS_DARROW (&(acs_map['#']))
896
+ # define WACS_UARROW (&(acs_map['"']))
897
+ # define WACS_BOARD (&(acs_map['+']))
898
+ # define WACS_LTBOARD (&(acs_map['y']))
899
+ # define WACS_LANTERN (&(acs_map['z']))
900
+ # define WACS_BLOCK (&(acs_map['t']))
901
+
902
+ # define WACS_S3 (&(acs_map['m']))
903
+ # define WACS_S7 (&(acs_map['n']))
904
+ # define WACS_LEQUAL (&(acs_map['u']))
905
+ # define WACS_GEQUAL (&(acs_map['v']))
906
+ # define WACS_PI (&(acs_map['$']))
907
+ # define WACS_NEQUAL (&(acs_map['%']))
908
+ # define WACS_STERLING (&(acs_map['~']))
909
+
910
+ # define WACS_BSSB WACS_ULCORNER
911
+ # define WACS_SSBB WACS_LLCORNER
912
+ # define WACS_BBSS WACS_URCORNER
913
+ # define WACS_SBBS WACS_LRCORNER
914
+ # define WACS_SBSS WACS_RTEE
915
+ # define WACS_SSSB WACS_LTEE
916
+ # define WACS_SSBS WACS_BTEE
917
+ # define WACS_BSSS WACS_TTEE
918
+ # define WACS_BSBS WACS_HLINE
919
+ # define WACS_SBSB WACS_VLINE
920
+ # define WACS_SSSS WACS_PLUS
921
+ #endif
922
+
923
+ /*** Color macros ***/
924
+
925
+ #define COLOR_BLACK 0
926
+
927
+ #ifdef PDC_RGB /* RGB */
928
+ # define COLOR_RED 1
929
+ # define COLOR_GREEN 2
930
+ # define COLOR_BLUE 4
931
+ #else /* BGR */
932
+ # define COLOR_BLUE 1
933
+ # define COLOR_GREEN 2
934
+ # define COLOR_RED 4
935
+ #endif
936
+
937
+ #define COLOR_CYAN (COLOR_BLUE | COLOR_GREEN)
938
+ #define COLOR_MAGENTA (COLOR_RED | COLOR_BLUE)
939
+ #define COLOR_YELLOW (COLOR_RED | COLOR_GREEN)
940
+
941
+ #define COLOR_WHITE 7
942
+
943
+ /*----------------------------------------------------------------------
944
+ *
945
+ * Function and Keypad Key Definitions
946
+ * Many are just for compatibility
947
+ *
948
+ */
949
+
950
+ #ifdef PDC_WIDE
951
+ #define KEY_OFFSET 0xec00
952
+ #else
953
+ #define KEY_OFFSET 0x100
954
+ #endif
955
+
956
+ #define KEY_CODE_YES (KEY_OFFSET + 0x00) /* If get_wch() gives a key code */
957
+
958
+ #define KEY_BREAK (KEY_OFFSET + 0x01) /* Not on PC KBD */
959
+ #define KEY_DOWN (KEY_OFFSET + 0x02) /* Down arrow key */
960
+ #define KEY_UP (KEY_OFFSET + 0x03) /* Up arrow key */
961
+ #define KEY_LEFT (KEY_OFFSET + 0x04) /* Left arrow key */
962
+ #define KEY_RIGHT (KEY_OFFSET + 0x05) /* Right arrow key */
963
+ #define KEY_HOME (KEY_OFFSET + 0x06) /* home key */
964
+ #define KEY_BACKSPACE (KEY_OFFSET + 0x07) /* not on pc */
965
+ #define KEY_F0 (KEY_OFFSET + 0x08) /* function keys; 64 reserved */
966
+
967
+ #define KEY_DL (KEY_OFFSET + 0x48) /* delete line */
968
+ #define KEY_IL (KEY_OFFSET + 0x49) /* insert line */
969
+ #define KEY_DC (KEY_OFFSET + 0x4a) /* delete character */
970
+ #define KEY_IC (KEY_OFFSET + 0x4b) /* insert char or enter ins mode */
971
+ #define KEY_EIC (KEY_OFFSET + 0x4c) /* exit insert char mode */
972
+ #define KEY_CLEAR (KEY_OFFSET + 0x4d) /* clear screen */
973
+ #define KEY_EOS (KEY_OFFSET + 0x4e) /* clear to end of screen */
974
+ #define KEY_EOL (KEY_OFFSET + 0x4f) /* clear to end of line */
975
+ #define KEY_SF (KEY_OFFSET + 0x50) /* scroll 1 line forward */
976
+ #define KEY_SR (KEY_OFFSET + 0x51) /* scroll 1 line back (reverse) */
977
+ #define KEY_NPAGE (KEY_OFFSET + 0x52) /* next page */
978
+ #define KEY_PPAGE (KEY_OFFSET + 0x53) /* previous page */
979
+ #define KEY_STAB (KEY_OFFSET + 0x54) /* set tab */
980
+ #define KEY_CTAB (KEY_OFFSET + 0x55) /* clear tab */
981
+ #define KEY_CATAB (KEY_OFFSET + 0x56) /* clear all tabs */
982
+ #define KEY_ENTER (KEY_OFFSET + 0x57) /* enter or send (unreliable) */
983
+ #define KEY_SRESET (KEY_OFFSET + 0x58) /* soft/reset (partial/unreliable) */
984
+ #define KEY_RESET (KEY_OFFSET + 0x59) /* reset/hard reset (unreliable) */
985
+ #define KEY_PRINT (KEY_OFFSET + 0x5a) /* print/copy */
986
+ #define KEY_LL (KEY_OFFSET + 0x5b) /* home down/bottom (lower left) */
987
+ #define KEY_ABORT (KEY_OFFSET + 0x5c) /* abort/terminate key (any) */
988
+ #define KEY_SHELP (KEY_OFFSET + 0x5d) /* short help */
989
+ #define KEY_LHELP (KEY_OFFSET + 0x5e) /* long help */
990
+ #define KEY_BTAB (KEY_OFFSET + 0x5f) /* Back tab key */
991
+ #define KEY_BEG (KEY_OFFSET + 0x60) /* beg(inning) key */
992
+ #define KEY_CANCEL (KEY_OFFSET + 0x61) /* cancel key */
993
+ #define KEY_CLOSE (KEY_OFFSET + 0x62) /* close key */
994
+ #define KEY_COMMAND (KEY_OFFSET + 0x63) /* cmd (command) key */
995
+ #define KEY_COPY (KEY_OFFSET + 0x64) /* copy key */
996
+ #define KEY_CREATE (KEY_OFFSET + 0x65) /* create key */
997
+ #define KEY_END (KEY_OFFSET + 0x66) /* end key */
998
+ #define KEY_EXIT (KEY_OFFSET + 0x67) /* exit key */
999
+ #define KEY_FIND (KEY_OFFSET + 0x68) /* find key */
1000
+ #define KEY_HELP (KEY_OFFSET + 0x69) /* help key */
1001
+ #define KEY_MARK (KEY_OFFSET + 0x6a) /* mark key */
1002
+ #define KEY_MESSAGE (KEY_OFFSET + 0x6b) /* message key */
1003
+ #define KEY_MOVE (KEY_OFFSET + 0x6c) /* move key */
1004
+ #define KEY_NEXT (KEY_OFFSET + 0x6d) /* next object key */
1005
+ #define KEY_OPEN (KEY_OFFSET + 0x6e) /* open key */
1006
+ #define KEY_OPTIONS (KEY_OFFSET + 0x6f) /* options key */
1007
+ #define KEY_PREVIOUS (KEY_OFFSET + 0x70) /* previous object key */
1008
+ #define KEY_REDO (KEY_OFFSET + 0x71) /* redo key */
1009
+ #define KEY_REFERENCE (KEY_OFFSET + 0x72) /* ref(erence) key */
1010
+ #define KEY_REFRESH (KEY_OFFSET + 0x73) /* refresh key */
1011
+ #define KEY_REPLACE (KEY_OFFSET + 0x74) /* replace key */
1012
+ #define KEY_RESTART (KEY_OFFSET + 0x75) /* restart key */
1013
+ #define KEY_RESUME (KEY_OFFSET + 0x76) /* resume key */
1014
+ #define KEY_SAVE (KEY_OFFSET + 0x77) /* save key */
1015
+ #define KEY_SBEG (KEY_OFFSET + 0x78) /* shifted beginning key */
1016
+ #define KEY_SCANCEL (KEY_OFFSET + 0x79) /* shifted cancel key */
1017
+ #define KEY_SCOMMAND (KEY_OFFSET + 0x7a) /* shifted command key */
1018
+ #define KEY_SCOPY (KEY_OFFSET + 0x7b) /* shifted copy key */
1019
+ #define KEY_SCREATE (KEY_OFFSET + 0x7c) /* shifted create key */
1020
+ #define KEY_SDC (KEY_OFFSET + 0x7d) /* shifted delete char key */
1021
+ #define KEY_SDL (KEY_OFFSET + 0x7e) /* shifted delete line key */
1022
+ #define KEY_SELECT (KEY_OFFSET + 0x7f) /* select key */
1023
+ #define KEY_SEND (KEY_OFFSET + 0x80) /* shifted end key */
1024
+ #define KEY_SEOL (KEY_OFFSET + 0x81) /* shifted clear line key */
1025
+ #define KEY_SEXIT (KEY_OFFSET + 0x82) /* shifted exit key */
1026
+ #define KEY_SFIND (KEY_OFFSET + 0x83) /* shifted find key */
1027
+ #define KEY_SHOME (KEY_OFFSET + 0x84) /* shifted home key */
1028
+ #define KEY_SIC (KEY_OFFSET + 0x85) /* shifted input key */
1029
+
1030
+ #define KEY_SLEFT (KEY_OFFSET + 0x87) /* shifted left arrow key */
1031
+ #define KEY_SMESSAGE (KEY_OFFSET + 0x88) /* shifted message key */
1032
+ #define KEY_SMOVE (KEY_OFFSET + 0x89) /* shifted move key */
1033
+ #define KEY_SNEXT (KEY_OFFSET + 0x8a) /* shifted next key */
1034
+ #define KEY_SOPTIONS (KEY_OFFSET + 0x8b) /* shifted options key */
1035
+ #define KEY_SPREVIOUS (KEY_OFFSET + 0x8c) /* shifted prev key */
1036
+ #define KEY_SPRINT (KEY_OFFSET + 0x8d) /* shifted print key */
1037
+ #define KEY_SREDO (KEY_OFFSET + 0x8e) /* shifted redo key */
1038
+ #define KEY_SREPLACE (KEY_OFFSET + 0x8f) /* shifted replace key */
1039
+ #define KEY_SRIGHT (KEY_OFFSET + 0x90) /* shifted right arrow */
1040
+ #define KEY_SRSUME (KEY_OFFSET + 0x91) /* shifted resume key */
1041
+ #define KEY_SSAVE (KEY_OFFSET + 0x92) /* shifted save key */
1042
+ #define KEY_SSUSPEND (KEY_OFFSET + 0x93) /* shifted suspend key */
1043
+ #define KEY_SUNDO (KEY_OFFSET + 0x94) /* shifted undo key */
1044
+ #define KEY_SUSPEND (KEY_OFFSET + 0x95) /* suspend key */
1045
+ #define KEY_UNDO (KEY_OFFSET + 0x96) /* undo key */
1046
+
1047
+ /* PDCurses-specific key definitions -- PC only */
1048
+
1049
+ #define ALT_0 (KEY_OFFSET + 0x97)
1050
+ #define ALT_1 (KEY_OFFSET + 0x98)
1051
+ #define ALT_2 (KEY_OFFSET + 0x99)
1052
+ #define ALT_3 (KEY_OFFSET + 0x9a)
1053
+ #define ALT_4 (KEY_OFFSET + 0x9b)
1054
+ #define ALT_5 (KEY_OFFSET + 0x9c)
1055
+ #define ALT_6 (KEY_OFFSET + 0x9d)
1056
+ #define ALT_7 (KEY_OFFSET + 0x9e)
1057
+ #define ALT_8 (KEY_OFFSET + 0x9f)
1058
+ #define ALT_9 (KEY_OFFSET + 0xa0)
1059
+ #define ALT_A (KEY_OFFSET + 0xa1)
1060
+ #define ALT_B (KEY_OFFSET + 0xa2)
1061
+ #define ALT_C (KEY_OFFSET + 0xa3)
1062
+ #define ALT_D (KEY_OFFSET + 0xa4)
1063
+ #define ALT_E (KEY_OFFSET + 0xa5)
1064
+ #define ALT_F (KEY_OFFSET + 0xa6)
1065
+ #define ALT_G (KEY_OFFSET + 0xa7)
1066
+ #define ALT_H (KEY_OFFSET + 0xa8)
1067
+ #define ALT_I (KEY_OFFSET + 0xa9)
1068
+ #define ALT_J (KEY_OFFSET + 0xaa)
1069
+ #define ALT_K (KEY_OFFSET + 0xab)
1070
+ #define ALT_L (KEY_OFFSET + 0xac)
1071
+ #define ALT_M (KEY_OFFSET + 0xad)
1072
+ #define ALT_N (KEY_OFFSET + 0xae)
1073
+ #define ALT_O (KEY_OFFSET + 0xaf)
1074
+ #define ALT_P (KEY_OFFSET + 0xb0)
1075
+ #define ALT_Q (KEY_OFFSET + 0xb1)
1076
+ #define ALT_R (KEY_OFFSET + 0xb2)
1077
+ #define ALT_S (KEY_OFFSET + 0xb3)
1078
+ #define ALT_T (KEY_OFFSET + 0xb4)
1079
+ #define ALT_U (KEY_OFFSET + 0xb5)
1080
+ #define ALT_V (KEY_OFFSET + 0xb6)
1081
+ #define ALT_W (KEY_OFFSET + 0xb7)
1082
+ #define ALT_X (KEY_OFFSET + 0xb8)
1083
+ #define ALT_Y (KEY_OFFSET + 0xb9)
1084
+ #define ALT_Z (KEY_OFFSET + 0xba)
1085
+
1086
+ #define CTL_LEFT (KEY_OFFSET + 0xbb) /* Control-Left-Arrow */
1087
+ #define CTL_RIGHT (KEY_OFFSET + 0xbc)
1088
+ #define CTL_PGUP (KEY_OFFSET + 0xbd)
1089
+ #define CTL_PGDN (KEY_OFFSET + 0xbe)
1090
+ #define CTL_HOME (KEY_OFFSET + 0xbf)
1091
+ #define CTL_END (KEY_OFFSET + 0xc0)
1092
+
1093
+ #define KEY_A1 (KEY_OFFSET + 0xc1) /* upper left on Virtual keypad */
1094
+ #define KEY_A2 (KEY_OFFSET + 0xc2) /* upper middle on Virt. keypad */
1095
+ #define KEY_A3 (KEY_OFFSET + 0xc3) /* upper right on Vir. keypad */
1096
+ #define KEY_B1 (KEY_OFFSET + 0xc4) /* middle left on Virt. keypad */
1097
+ #define KEY_B2 (KEY_OFFSET + 0xc5) /* center on Virt. keypad */
1098
+ #define KEY_B3 (KEY_OFFSET + 0xc6) /* middle right on Vir. keypad */
1099
+ #define KEY_C1 (KEY_OFFSET + 0xc7) /* lower left on Virt. keypad */
1100
+ #define KEY_C2 (KEY_OFFSET + 0xc8) /* lower middle on Virt. keypad */
1101
+ #define KEY_C3 (KEY_OFFSET + 0xc9) /* lower right on Vir. keypad */
1102
+
1103
+ #define PADSLASH (KEY_OFFSET + 0xca) /* slash on keypad */
1104
+ #define PADENTER (KEY_OFFSET + 0xcb) /* enter on keypad */
1105
+ #define CTL_PADENTER (KEY_OFFSET + 0xcc) /* ctl-enter on keypad */
1106
+ #define ALT_PADENTER (KEY_OFFSET + 0xcd) /* alt-enter on keypad */
1107
+ #define PADSTOP (KEY_OFFSET + 0xce) /* stop on keypad */
1108
+ #define PADSTAR (KEY_OFFSET + 0xcf) /* star on keypad */
1109
+ #define PADMINUS (KEY_OFFSET + 0xd0) /* minus on keypad */
1110
+ #define PADPLUS (KEY_OFFSET + 0xd1) /* plus on keypad */
1111
+ #define CTL_PADSTOP (KEY_OFFSET + 0xd2) /* ctl-stop on keypad */
1112
+ #define CTL_PADCENTER (KEY_OFFSET + 0xd3) /* ctl-enter on keypad */
1113
+ #define CTL_PADPLUS (KEY_OFFSET + 0xd4) /* ctl-plus on keypad */
1114
+ #define CTL_PADMINUS (KEY_OFFSET + 0xd5) /* ctl-minus on keypad */
1115
+ #define CTL_PADSLASH (KEY_OFFSET + 0xd6) /* ctl-slash on keypad */
1116
+ #define CTL_PADSTAR (KEY_OFFSET + 0xd7) /* ctl-star on keypad */
1117
+ #define ALT_PADPLUS (KEY_OFFSET + 0xd8) /* alt-plus on keypad */
1118
+ #define ALT_PADMINUS (KEY_OFFSET + 0xd9) /* alt-minus on keypad */
1119
+ #define ALT_PADSLASH (KEY_OFFSET + 0xda) /* alt-slash on keypad */
1120
+ #define ALT_PADSTAR (KEY_OFFSET + 0xdb) /* alt-star on keypad */
1121
+ #define ALT_PADSTOP (KEY_OFFSET + 0xdc) /* alt-stop on keypad */
1122
+ #define CTL_INS (KEY_OFFSET + 0xdd) /* ctl-insert */
1123
+ #define ALT_DEL (KEY_OFFSET + 0xde) /* alt-delete */
1124
+ #define ALT_INS (KEY_OFFSET + 0xdf) /* alt-insert */
1125
+ #define CTL_UP (KEY_OFFSET + 0xe0) /* ctl-up arrow */
1126
+ #define CTL_DOWN (KEY_OFFSET + 0xe1) /* ctl-down arrow */
1127
+ #define CTL_TAB (KEY_OFFSET + 0xe2) /* ctl-tab */
1128
+ #define ALT_TAB (KEY_OFFSET + 0xe3)
1129
+ #define ALT_MINUS (KEY_OFFSET + 0xe4)
1130
+ #define ALT_EQUAL (KEY_OFFSET + 0xe5)
1131
+ #define ALT_HOME (KEY_OFFSET + 0xe6)
1132
+ #define ALT_PGUP (KEY_OFFSET + 0xe7)
1133
+ #define ALT_PGDN (KEY_OFFSET + 0xe8)
1134
+ #define ALT_END (KEY_OFFSET + 0xe9)
1135
+ #define ALT_UP (KEY_OFFSET + 0xea) /* alt-up arrow */
1136
+ #define ALT_DOWN (KEY_OFFSET + 0xeb) /* alt-down arrow */
1137
+ #define ALT_RIGHT (KEY_OFFSET + 0xec) /* alt-right arrow */
1138
+ #define ALT_LEFT (KEY_OFFSET + 0xed) /* alt-left arrow */
1139
+ #define ALT_ENTER (KEY_OFFSET + 0xee) /* alt-enter */
1140
+ #define ALT_ESC (KEY_OFFSET + 0xef) /* alt-escape */
1141
+ #define ALT_BQUOTE (KEY_OFFSET + 0xf0) /* alt-back quote */
1142
+ #define ALT_LBRACKET (KEY_OFFSET + 0xf1) /* alt-left bracket */
1143
+ #define ALT_RBRACKET (KEY_OFFSET + 0xf2) /* alt-right bracket */
1144
+ #define ALT_SEMICOLON (KEY_OFFSET + 0xf3) /* alt-semi-colon */
1145
+ #define ALT_FQUOTE (KEY_OFFSET + 0xf4) /* alt-forward quote */
1146
+ #define ALT_COMMA (KEY_OFFSET + 0xf5) /* alt-comma */
1147
+ #define ALT_STOP (KEY_OFFSET + 0xf6) /* alt-stop */
1148
+ #define ALT_FSLASH (KEY_OFFSET + 0xf7) /* alt-forward slash */
1149
+ #define ALT_BKSP (KEY_OFFSET + 0xf8) /* alt-backspace */
1150
+ #define CTL_BKSP (KEY_OFFSET + 0xf9) /* ctl-backspace */
1151
+ #define PAD0 (KEY_OFFSET + 0xfa) /* keypad 0 */
1152
+
1153
+ #define CTL_PAD0 (KEY_OFFSET + 0xfb) /* ctl-keypad 0 */
1154
+ #define CTL_PAD1 (KEY_OFFSET + 0xfc)
1155
+ #define CTL_PAD2 (KEY_OFFSET + 0xfd)
1156
+ #define CTL_PAD3 (KEY_OFFSET + 0xfe)
1157
+ #define CTL_PAD4 (KEY_OFFSET + 0xff)
1158
+ #define CTL_PAD5 (KEY_OFFSET + 0x100)
1159
+ #define CTL_PAD6 (KEY_OFFSET + 0x101)
1160
+ #define CTL_PAD7 (KEY_OFFSET + 0x102)
1161
+ #define CTL_PAD8 (KEY_OFFSET + 0x103)
1162
+ #define CTL_PAD9 (KEY_OFFSET + 0x104)
1163
+
1164
+ #define ALT_PAD0 (KEY_OFFSET + 0x105) /* alt-keypad 0 */
1165
+ #define ALT_PAD1 (KEY_OFFSET + 0x106)
1166
+ #define ALT_PAD2 (KEY_OFFSET + 0x107)
1167
+ #define ALT_PAD3 (KEY_OFFSET + 0x108)
1168
+ #define ALT_PAD4 (KEY_OFFSET + 0x109)
1169
+ #define ALT_PAD5 (KEY_OFFSET + 0x10a)
1170
+ #define ALT_PAD6 (KEY_OFFSET + 0x10b)
1171
+ #define ALT_PAD7 (KEY_OFFSET + 0x10c)
1172
+ #define ALT_PAD8 (KEY_OFFSET + 0x10d)
1173
+ #define ALT_PAD9 (KEY_OFFSET + 0x10e)
1174
+
1175
+ #define CTL_DEL (KEY_OFFSET + 0x10f) /* clt-delete */
1176
+ #define ALT_BSLASH (KEY_OFFSET + 0x110) /* alt-back slash */
1177
+ #define CTL_ENTER (KEY_OFFSET + 0x111) /* ctl-enter */
1178
+
1179
+ #define SHF_PADENTER (KEY_OFFSET + 0x112) /* shift-enter on keypad */
1180
+ #define SHF_PADSLASH (KEY_OFFSET + 0x113) /* shift-slash on keypad */
1181
+ #define SHF_PADSTAR (KEY_OFFSET + 0x114) /* shift-star on keypad */
1182
+ #define SHF_PADPLUS (KEY_OFFSET + 0x115) /* shift-plus on keypad */
1183
+ #define SHF_PADMINUS (KEY_OFFSET + 0x116) /* shift-minus on keypad */
1184
+ #define SHF_UP (KEY_OFFSET + 0x117) /* shift-up on keypad */
1185
+ #define SHF_DOWN (KEY_OFFSET + 0x118) /* shift-down on keypad */
1186
+ #define SHF_IC (KEY_OFFSET + 0x119) /* shift-insert on keypad */
1187
+ #define SHF_DC (KEY_OFFSET + 0x11a) /* shift-delete on keypad */
1188
+
1189
+ #define KEY_MOUSE (KEY_OFFSET + 0x11b) /* "mouse" key */
1190
+ #define KEY_SHIFT_L (KEY_OFFSET + 0x11c) /* Left-shift */
1191
+ #define KEY_SHIFT_R (KEY_OFFSET + 0x11d) /* Right-shift */
1192
+ #define KEY_CONTROL_L (KEY_OFFSET + 0x11e) /* Left-control */
1193
+ #define KEY_CONTROL_R (KEY_OFFSET + 0x11f) /* Right-control */
1194
+ #define KEY_ALT_L (KEY_OFFSET + 0x120) /* Left-alt */
1195
+ #define KEY_ALT_R (KEY_OFFSET + 0x121) /* Right-alt */
1196
+ #define KEY_RESIZE (KEY_OFFSET + 0x122) /* Window resize */
1197
+ #define KEY_SUP (KEY_OFFSET + 0x123) /* Shifted up arrow */
1198
+ #define KEY_SDOWN (KEY_OFFSET + 0x124) /* Shifted down arrow */
1199
+
1200
+ /* The following were added 2011 Sep 14, and are */
1201
+ /* not returned by most flavors of PDCurses: */
1202
+
1203
+ #define CTL_SEMICOLON (KEY_OFFSET + 0x125)
1204
+ #define CTL_EQUAL (KEY_OFFSET + 0x126)
1205
+ #define CTL_COMMA (KEY_OFFSET + 0x127)
1206
+ #define CTL_MINUS (KEY_OFFSET + 0x128)
1207
+ #define CTL_STOP (KEY_OFFSET + 0x129)
1208
+ #define CTL_FSLASH (KEY_OFFSET + 0x12a)
1209
+ #define CTL_BQUOTE (KEY_OFFSET + 0x12b)
1210
+
1211
+ #define KEY_APPS (KEY_OFFSET + 0x12c)
1212
+ #define KEY_SAPPS (KEY_OFFSET + 0x12d)
1213
+ #define CTL_APPS (KEY_OFFSET + 0x12e)
1214
+ #define ALT_APPS (KEY_OFFSET + 0x12f)
1215
+
1216
+ #define KEY_PAUSE (KEY_OFFSET + 0x130)
1217
+ #define KEY_SPAUSE (KEY_OFFSET + 0x131)
1218
+ #define CTL_PAUSE (KEY_OFFSET + 0x132)
1219
+
1220
+ #define KEY_PRINTSCREEN (KEY_OFFSET + 0x133)
1221
+ #define ALT_PRINTSCREEN (KEY_OFFSET + 0x134)
1222
+ #define KEY_SCROLLLOCK (KEY_OFFSET + 0x135)
1223
+ #define ALT_SCROLLLOCK (KEY_OFFSET + 0x136)
1224
+
1225
+ #define CTL_0 (KEY_OFFSET + 0x137)
1226
+ #define CTL_1 (KEY_OFFSET + 0x138)
1227
+ #define CTL_2 (KEY_OFFSET + 0x139)
1228
+ #define CTL_3 (KEY_OFFSET + 0x13a)
1229
+ #define CTL_4 (KEY_OFFSET + 0x13b)
1230
+ #define CTL_5 (KEY_OFFSET + 0x13c)
1231
+ #define CTL_6 (KEY_OFFSET + 0x13d)
1232
+ #define CTL_7 (KEY_OFFSET + 0x13e)
1233
+ #define CTL_8 (KEY_OFFSET + 0x13f)
1234
+ #define CTL_9 (KEY_OFFSET + 0x140)
1235
+
1236
+ #define KEY_BROWSER_BACK (KEY_OFFSET + 0x141)
1237
+ #define KEY_SBROWSER_BACK (KEY_OFFSET + 0x142)
1238
+ #define KEY_CBROWSER_BACK (KEY_OFFSET + 0x143)
1239
+ #define KEY_ABROWSER_BACK (KEY_OFFSET + 0x144)
1240
+ #define KEY_BROWSER_FWD (KEY_OFFSET + 0x145)
1241
+ #define KEY_SBROWSER_FWD (KEY_OFFSET + 0x146)
1242
+ #define KEY_CBROWSER_FWD (KEY_OFFSET + 0x147)
1243
+ #define KEY_ABROWSER_FWD (KEY_OFFSET + 0x148)
1244
+ #define KEY_BROWSER_REF (KEY_OFFSET + 0x149)
1245
+ #define KEY_SBROWSER_REF (KEY_OFFSET + 0x14A)
1246
+ #define KEY_CBROWSER_REF (KEY_OFFSET + 0x14B)
1247
+ #define KEY_ABROWSER_REF (KEY_OFFSET + 0x14C)
1248
+ #define KEY_BROWSER_STOP (KEY_OFFSET + 0x14D)
1249
+ #define KEY_SBROWSER_STOP (KEY_OFFSET + 0x14E)
1250
+ #define KEY_CBROWSER_STOP (KEY_OFFSET + 0x14F)
1251
+ #define KEY_ABROWSER_STOP (KEY_OFFSET + 0x150)
1252
+ #define KEY_SEARCH (KEY_OFFSET + 0x151)
1253
+ #define KEY_SSEARCH (KEY_OFFSET + 0x152)
1254
+ #define KEY_CSEARCH (KEY_OFFSET + 0x153)
1255
+ #define KEY_ASEARCH (KEY_OFFSET + 0x154)
1256
+ #define KEY_FAVORITES (KEY_OFFSET + 0x155)
1257
+ #define KEY_SFAVORITES (KEY_OFFSET + 0x156)
1258
+ #define KEY_CFAVORITES (KEY_OFFSET + 0x157)
1259
+ #define KEY_AFAVORITES (KEY_OFFSET + 0x158)
1260
+ #define KEY_BROWSER_HOME (KEY_OFFSET + 0x159)
1261
+ #define KEY_SBROWSER_HOME (KEY_OFFSET + 0x15A)
1262
+ #define KEY_CBROWSER_HOME (KEY_OFFSET + 0x15B)
1263
+ #define KEY_ABROWSER_HOME (KEY_OFFSET + 0x15C)
1264
+ #define KEY_VOLUME_MUTE (KEY_OFFSET + 0x15D)
1265
+ #define KEY_SVOLUME_MUTE (KEY_OFFSET + 0x15E)
1266
+ #define KEY_CVOLUME_MUTE (KEY_OFFSET + 0x15F)
1267
+ #define KEY_AVOLUME_MUTE (KEY_OFFSET + 0x160)
1268
+ #define KEY_VOLUME_DOWN (KEY_OFFSET + 0x161)
1269
+ #define KEY_SVOLUME_DOWN (KEY_OFFSET + 0x162)
1270
+ #define KEY_CVOLUME_DOWN (KEY_OFFSET + 0x163)
1271
+ #define KEY_AVOLUME_DOWN (KEY_OFFSET + 0x164)
1272
+ #define KEY_VOLUME_UP (KEY_OFFSET + 0x165)
1273
+ #define KEY_SVOLUME_UP (KEY_OFFSET + 0x166)
1274
+ #define KEY_CVOLUME_UP (KEY_OFFSET + 0x167)
1275
+ #define KEY_AVOLUME_UP (KEY_OFFSET + 0x168)
1276
+ #define KEY_NEXT_TRACK (KEY_OFFSET + 0x169)
1277
+ #define KEY_SNEXT_TRACK (KEY_OFFSET + 0x16A)
1278
+ #define KEY_CNEXT_TRACK (KEY_OFFSET + 0x16B)
1279
+ #define KEY_ANEXT_TRACK (KEY_OFFSET + 0x16C)
1280
+ #define KEY_PREV_TRACK (KEY_OFFSET + 0x16D)
1281
+ #define KEY_SPREV_TRACK (KEY_OFFSET + 0x16E)
1282
+ #define KEY_CPREV_TRACK (KEY_OFFSET + 0x16F)
1283
+ #define KEY_APREV_TRACK (KEY_OFFSET + 0x170)
1284
+ #define KEY_MEDIA_STOP (KEY_OFFSET + 0x171)
1285
+ #define KEY_SMEDIA_STOP (KEY_OFFSET + 0x172)
1286
+ #define KEY_CMEDIA_STOP (KEY_OFFSET + 0x173)
1287
+ #define KEY_AMEDIA_STOP (KEY_OFFSET + 0x174)
1288
+ #define KEY_PLAY_PAUSE (KEY_OFFSET + 0x175)
1289
+ #define KEY_SPLAY_PAUSE (KEY_OFFSET + 0x176)
1290
+ #define KEY_CPLAY_PAUSE (KEY_OFFSET + 0x177)
1291
+ #define KEY_APLAY_PAUSE (KEY_OFFSET + 0x178)
1292
+ #define KEY_LAUNCH_MAIL (KEY_OFFSET + 0x179)
1293
+ #define KEY_SLAUNCH_MAIL (KEY_OFFSET + 0x17A)
1294
+ #define KEY_CLAUNCH_MAIL (KEY_OFFSET + 0x17B)
1295
+ #define KEY_ALAUNCH_MAIL (KEY_OFFSET + 0x17C)
1296
+ #define KEY_MEDIA_SELECT (KEY_OFFSET + 0x17D)
1297
+ #define KEY_SMEDIA_SELECT (KEY_OFFSET + 0x17E)
1298
+ #define KEY_CMEDIA_SELECT (KEY_OFFSET + 0x17F)
1299
+ #define KEY_AMEDIA_SELECT (KEY_OFFSET + 0x180)
1300
+ #define KEY_LAUNCH_APP1 (KEY_OFFSET + 0x181)
1301
+ #define KEY_SLAUNCH_APP1 (KEY_OFFSET + 0x182)
1302
+ #define KEY_CLAUNCH_APP1 (KEY_OFFSET + 0x183)
1303
+ #define KEY_ALAUNCH_APP1 (KEY_OFFSET + 0x184)
1304
+ #define KEY_LAUNCH_APP2 (KEY_OFFSET + 0x185)
1305
+ #define KEY_SLAUNCH_APP2 (KEY_OFFSET + 0x186)
1306
+ #define KEY_CLAUNCH_APP2 (KEY_OFFSET + 0x187)
1307
+ #define KEY_ALAUNCH_APP2 (KEY_OFFSET + 0x188)
1308
+
1309
+ #define KEY_MIN KEY_BREAK /* Minimum curses key value */
1310
+ #define KEY_MAX KEY_ALAUNCH_APP2 /* Maximum curses key */
1311
+
1312
+ #define KEY_F(n) (KEY_F0 + (n))
1313
+
1314
+ /*----------------------------------------------------------------------
1315
+ *
1316
+ * PDCurses Function Declarations
1317
+ *
1318
+ */
1319
+
1320
+ /* Standard */
1321
+
1322
+ PDCEX int addch(const chtype);
1323
+ PDCEX int addchnstr(const chtype *, int);
1324
+ PDCEX int addchstr(const chtype *);
1325
+ PDCEX int addnstr(const char *, int);
1326
+ PDCEX int addstr(const char *);
1327
+ PDCEX int attroff(chtype);
1328
+ PDCEX int attron(chtype);
1329
+ PDCEX int attrset(chtype);
1330
+ PDCEX int attr_get(attr_t *, short *, void *);
1331
+ PDCEX int attr_off(attr_t, void *);
1332
+ PDCEX int attr_on(attr_t, void *);
1333
+ PDCEX int attr_set(attr_t, short, void *);
1334
+ PDCEX int baudrate(void);
1335
+ PDCEX int beep(void);
1336
+ PDCEX int bkgd(chtype);
1337
+ PDCEX void bkgdset(chtype);
1338
+ PDCEX int border(chtype, chtype, chtype, chtype,
1339
+ chtype, chtype, chtype, chtype);
1340
+ PDCEX int box(WINDOW *, chtype, chtype);
1341
+ PDCEX bool can_change_color(void);
1342
+ PDCEX int cbreak(void);
1343
+ PDCEX int chgat(int, attr_t, short, const void *);
1344
+ PDCEX int clearok(WINDOW *, bool);
1345
+ PDCEX int clear(void);
1346
+ PDCEX int clrtobot(void);
1347
+ PDCEX int clrtoeol(void);
1348
+ PDCEX int color_content(short, short *, short *, short *);
1349
+ PDCEX int color_set(short, void *);
1350
+ PDCEX int copywin(const WINDOW *, WINDOW *, int, int, int,
1351
+ int, int, int, int);
1352
+ PDCEX int curs_set(int);
1353
+ PDCEX int def_prog_mode(void);
1354
+ PDCEX int def_shell_mode(void);
1355
+ PDCEX int delay_output(int);
1356
+ PDCEX int delch(void);
1357
+ PDCEX int deleteln(void);
1358
+ PDCEX void delscreen(SCREEN *);
1359
+ PDCEX int delwin(WINDOW *);
1360
+ PDCEX WINDOW *derwin(WINDOW *, int, int, int, int);
1361
+ PDCEX int doupdate(void);
1362
+ PDCEX WINDOW *dupwin(WINDOW *);
1363
+ PDCEX int echochar(const chtype);
1364
+ PDCEX int echo(void);
1365
+ PDCEX int endwin(void);
1366
+ PDCEX char erasechar(void);
1367
+ PDCEX int erase(void);
1368
+ PDCEX void filter(void);
1369
+ PDCEX int flash(void);
1370
+ PDCEX int flushinp(void);
1371
+ PDCEX chtype getbkgd(WINDOW *);
1372
+ PDCEX int getnstr(char *, int);
1373
+ PDCEX int getstr(char *);
1374
+ PDCEX WINDOW *getwin(FILE *);
1375
+ PDCEX int halfdelay(int);
1376
+ PDCEX bool has_colors(void);
1377
+ PDCEX bool has_ic(void);
1378
+ PDCEX bool has_il(void);
1379
+ PDCEX int hline(chtype, int);
1380
+ PDCEX void idcok(WINDOW *, bool);
1381
+ PDCEX int idlok(WINDOW *, bool);
1382
+ PDCEX void immedok(WINDOW *, bool);
1383
+ PDCEX int inchnstr(chtype *, int);
1384
+ PDCEX int inchstr(chtype *);
1385
+ PDCEX chtype inch(void);
1386
+ PDCEX int init_color(short, short, short, short);
1387
+ PDCEX int init_pair(short, short, short);
1388
+ PDCEX WINDOW *initscr(void);
1389
+ PDCEX int innstr(char *, int);
1390
+ PDCEX int insch(chtype);
1391
+ PDCEX int insdelln(int);
1392
+ PDCEX int insertln(void);
1393
+ PDCEX int insnstr(const char *, int);
1394
+ PDCEX int insstr(const char *);
1395
+ PDCEX int instr(char *);
1396
+ PDCEX int intrflush(WINDOW *, bool);
1397
+ PDCEX bool isendwin(void);
1398
+ PDCEX bool is_linetouched(WINDOW *, int);
1399
+ PDCEX bool is_wintouched(WINDOW *);
1400
+ PDCEX char *keyname(int);
1401
+ PDCEX int keypad(WINDOW *, bool);
1402
+ PDCEX char killchar(void);
1403
+ PDCEX int leaveok(WINDOW *, bool);
1404
+ PDCEX char *longname(void);
1405
+ PDCEX int meta(WINDOW *, bool);
1406
+ PDCEX int move(int, int);
1407
+ PDCEX int mvaddch(int, int, const chtype);
1408
+ PDCEX int mvaddchnstr(int, int, const chtype *, int);
1409
+ PDCEX int mvaddchstr(int, int, const chtype *);
1410
+ PDCEX int mvaddnstr(int, int, const char *, int);
1411
+ PDCEX int mvaddstr(int, int, const char *);
1412
+ PDCEX int mvchgat(int, int, int, attr_t, short, const void *);
1413
+ PDCEX int mvcur(int, int, int, int);
1414
+ PDCEX int mvdelch(int, int);
1415
+ PDCEX int mvderwin(WINDOW *, int, int);
1416
+ PDCEX int mvgetch(int, int);
1417
+ PDCEX int mvgetnstr(int, int, char *, int);
1418
+ PDCEX int mvgetstr(int, int, char *);
1419
+ PDCEX int mvhline(int, int, chtype, int);
1420
+ PDCEX chtype mvinch(int, int);
1421
+ PDCEX int mvinchnstr(int, int, chtype *, int);
1422
+ PDCEX int mvinchstr(int, int, chtype *);
1423
+ PDCEX int mvinnstr(int, int, char *, int);
1424
+ PDCEX int mvinsch(int, int, chtype);
1425
+ PDCEX int mvinsnstr(int, int, const char *, int);
1426
+ PDCEX int mvinsstr(int, int, const char *);
1427
+ PDCEX int mvinstr(int, int, char *);
1428
+ PDCEX int mvprintw(int, int, const char *, ...);
1429
+ PDCEX int mvscanw(int, int, const char *, ...);
1430
+ PDCEX int mvvline(int, int, chtype, int);
1431
+ PDCEX int mvwaddchnstr(WINDOW *, int, int, const chtype *, int);
1432
+ PDCEX int mvwaddchstr(WINDOW *, int, int, const chtype *);
1433
+ PDCEX int mvwaddch(WINDOW *, int, int, const chtype);
1434
+ PDCEX int mvwaddnstr(WINDOW *, int, int, const char *, int);
1435
+ PDCEX int mvwaddstr(WINDOW *, int, int, const char *);
1436
+ PDCEX int mvwchgat(WINDOW *, int, int, int, attr_t, short, const void *);
1437
+ PDCEX int mvwdelch(WINDOW *, int, int);
1438
+ PDCEX int mvwgetch(WINDOW *, int, int);
1439
+ PDCEX int mvwgetnstr(WINDOW *, int, int, char *, int);
1440
+ PDCEX int mvwgetstr(WINDOW *, int, int, char *);
1441
+ PDCEX int mvwhline(WINDOW *, int, int, chtype, int);
1442
+ PDCEX int mvwinchnstr(WINDOW *, int, int, chtype *, int);
1443
+ PDCEX int mvwinchstr(WINDOW *, int, int, chtype *);
1444
+ PDCEX chtype mvwinch(WINDOW *, int, int);
1445
+ PDCEX int mvwinnstr(WINDOW *, int, int, char *, int);
1446
+ PDCEX int mvwinsch(WINDOW *, int, int, chtype);
1447
+ PDCEX int mvwinsnstr(WINDOW *, int, int, const char *, int);
1448
+ PDCEX int mvwinsstr(WINDOW *, int, int, const char *);
1449
+ PDCEX int mvwinstr(WINDOW *, int, int, char *);
1450
+ PDCEX int mvwin(WINDOW *, int, int);
1451
+ PDCEX int mvwprintw(WINDOW *, int, int, const char *, ...);
1452
+ PDCEX int mvwscanw(WINDOW *, int, int, const char *, ...);
1453
+ PDCEX int mvwvline(WINDOW *, int, int, chtype, int);
1454
+ PDCEX int napms(int);
1455
+ PDCEX WINDOW *newpad(int, int);
1456
+ PDCEX SCREEN *newterm(const char *, FILE *, FILE *);
1457
+ PDCEX WINDOW *newwin(int, int, int, int);
1458
+ PDCEX int nl(void);
1459
+ PDCEX int nocbreak(void);
1460
+ PDCEX int nodelay(WINDOW *, bool);
1461
+ PDCEX int noecho(void);
1462
+ PDCEX int nonl(void);
1463
+ PDCEX void noqiflush(void);
1464
+ PDCEX int noraw(void);
1465
+ PDCEX int notimeout(WINDOW *, bool);
1466
+ PDCEX int overlay(const WINDOW *, WINDOW *);
1467
+ PDCEX int overwrite(const WINDOW *, WINDOW *);
1468
+ PDCEX int pair_content(short, short *, short *);
1469
+ PDCEX int pechochar(WINDOW *, chtype);
1470
+ PDCEX int pnoutrefresh(WINDOW *, int, int, int, int, int, int);
1471
+ PDCEX int prefresh(WINDOW *, int, int, int, int, int, int);
1472
+ PDCEX int printw(const char *, ...);
1473
+ PDCEX int putwin(WINDOW *, FILE *);
1474
+ PDCEX void qiflush(void);
1475
+ PDCEX int raw(void);
1476
+ PDCEX int redrawwin(WINDOW *);
1477
+ PDCEX int refresh(void);
1478
+ PDCEX int reset_prog_mode(void);
1479
+ PDCEX int reset_shell_mode(void);
1480
+ PDCEX int resetty(void);
1481
+ PDCEX int ripoffline(int, int (*)(WINDOW *, int));
1482
+ PDCEX int savetty(void);
1483
+ PDCEX int scanw(const char *, ...);
1484
+ PDCEX int scr_dump(const char *);
1485
+ PDCEX int scr_init(const char *);
1486
+ PDCEX int scr_restore(const char *);
1487
+ PDCEX int scr_set(const char *);
1488
+ PDCEX int scrl(int);
1489
+ PDCEX int scroll(WINDOW *);
1490
+ PDCEX int scrollok(WINDOW *, bool);
1491
+ PDCEX SCREEN *set_term(SCREEN *);
1492
+ PDCEX int setscrreg(int, int);
1493
+ PDCEX int slk_attroff(const chtype);
1494
+ PDCEX int slk_attr_off(const attr_t, void *);
1495
+ PDCEX int slk_attron(const chtype);
1496
+ PDCEX int slk_attr_on(const attr_t, void *);
1497
+ PDCEX int slk_attrset(const chtype);
1498
+ PDCEX int slk_attr_set(const attr_t, short, void *);
1499
+ PDCEX int slk_clear(void);
1500
+ PDCEX int slk_color(short);
1501
+ PDCEX int slk_init(int);
1502
+ PDCEX char *slk_label(int);
1503
+ PDCEX int slk_noutrefresh(void);
1504
+ PDCEX int slk_refresh(void);
1505
+ PDCEX int slk_restore(void);
1506
+ PDCEX int slk_set(int, const char *, int);
1507
+ PDCEX int slk_touch(void);
1508
+ PDCEX int standend(void);
1509
+ PDCEX int standout(void);
1510
+ PDCEX int start_color(void);
1511
+ PDCEX WINDOW *subpad(WINDOW *, int, int, int, int);
1512
+ PDCEX WINDOW *subwin(WINDOW *, int, int, int, int);
1513
+ PDCEX int syncok(WINDOW *, bool);
1514
+ PDCEX chtype termattrs(void);
1515
+ PDCEX attr_t term_attrs(void);
1516
+ PDCEX char *termname(void);
1517
+ PDCEX void timeout(int);
1518
+ PDCEX int touchline(WINDOW *, int, int);
1519
+ PDCEX int touchwin(WINDOW *);
1520
+ PDCEX int typeahead(int);
1521
+ PDCEX int untouchwin(WINDOW *);
1522
+ PDCEX void use_env(bool);
1523
+ PDCEX int vidattr(chtype);
1524
+ PDCEX int vid_attr(attr_t, short, void *);
1525
+ PDCEX int vidputs(chtype, int (*)(int));
1526
+ PDCEX int vid_puts(attr_t, short, void *, int (*)(int));
1527
+ PDCEX int vline(chtype, int);
1528
+ PDCEX int vw_printw(WINDOW *, const char *, va_list);
1529
+ PDCEX int vwprintw(WINDOW *, const char *, va_list);
1530
+ PDCEX int vw_scanw(WINDOW *, const char *, va_list);
1531
+ PDCEX int vwscanw(WINDOW *, const char *, va_list);
1532
+ PDCEX int waddchnstr(WINDOW *, const chtype *, int);
1533
+ PDCEX int waddchstr(WINDOW *, const chtype *);
1534
+ PDCEX int waddch(WINDOW *, const chtype);
1535
+ PDCEX int waddnstr(WINDOW *, const char *, int);
1536
+ PDCEX int waddstr(WINDOW *, const char *);
1537
+ PDCEX int wattroff(WINDOW *, chtype);
1538
+ PDCEX int wattron(WINDOW *, chtype);
1539
+ PDCEX int wattrset(WINDOW *, chtype);
1540
+ PDCEX int wattr_get(WINDOW *, attr_t *, short *, void *);
1541
+ PDCEX int wattr_off(WINDOW *, attr_t, void *);
1542
+ PDCEX int wattr_on(WINDOW *, attr_t, void *);
1543
+ PDCEX int wattr_set(WINDOW *, attr_t, short, void *);
1544
+ PDCEX void wbkgdset(WINDOW *, chtype);
1545
+ PDCEX int wbkgd(WINDOW *, chtype);
1546
+ PDCEX int wborder(WINDOW *, chtype, chtype, chtype, chtype,
1547
+ chtype, chtype, chtype, chtype);
1548
+ PDCEX int wchgat(WINDOW *, int, attr_t, short, const void *);
1549
+ PDCEX int wclear(WINDOW *);
1550
+ PDCEX int wclrtobot(WINDOW *);
1551
+ PDCEX int wclrtoeol(WINDOW *);
1552
+ PDCEX int wcolor_set(WINDOW *, short, void *);
1553
+ PDCEX void wcursyncup(WINDOW *);
1554
+ PDCEX int wdelch(WINDOW *);
1555
+ PDCEX int wdeleteln(WINDOW *);
1556
+ PDCEX int wechochar(WINDOW *, const chtype);
1557
+ PDCEX int werase(WINDOW *);
1558
+ PDCEX int wgetch(WINDOW *);
1559
+ PDCEX int wgetnstr(WINDOW *, char *, int);
1560
+ PDCEX int wgetstr(WINDOW *, char *);
1561
+ PDCEX int whline(WINDOW *, chtype, int);
1562
+ PDCEX int winchnstr(WINDOW *, chtype *, int);
1563
+ PDCEX int winchstr(WINDOW *, chtype *);
1564
+ PDCEX chtype winch(WINDOW *);
1565
+ PDCEX int winnstr(WINDOW *, char *, int);
1566
+ PDCEX int winsch(WINDOW *, chtype);
1567
+ PDCEX int winsdelln(WINDOW *, int);
1568
+ PDCEX int winsertln(WINDOW *);
1569
+ PDCEX int winsnstr(WINDOW *, const char *, int);
1570
+ PDCEX int winsstr(WINDOW *, const char *);
1571
+ PDCEX int winstr(WINDOW *, char *);
1572
+ PDCEX int wmove(WINDOW *, int, int);
1573
+ PDCEX int wnoutrefresh(WINDOW *);
1574
+ PDCEX int wprintw(WINDOW *, const char *, ...);
1575
+ PDCEX int wredrawln(WINDOW *, int, int);
1576
+ PDCEX int wrefresh(WINDOW *);
1577
+ PDCEX int wscanw(WINDOW *, const char *, ...);
1578
+ PDCEX int wscrl(WINDOW *, int);
1579
+ PDCEX int wsetscrreg(WINDOW *, int, int);
1580
+ PDCEX int wstandend(WINDOW *);
1581
+ PDCEX int wstandout(WINDOW *);
1582
+ PDCEX void wsyncdown(WINDOW *);
1583
+ PDCEX void wsyncup(WINDOW *);
1584
+ PDCEX void wtimeout(WINDOW *, int);
1585
+ PDCEX int wtouchln(WINDOW *, int, int, int);
1586
+ PDCEX int wvline(WINDOW *, chtype, int);
1587
+
1588
+ /* Wide-character functions */
1589
+
1590
+ #ifdef PDC_WIDE
1591
+ PDCEX int addnwstr(const wchar_t *, int);
1592
+ PDCEX int addwstr(const wchar_t *);
1593
+ PDCEX int add_wch(const cchar_t *);
1594
+ PDCEX int add_wchnstr(const cchar_t *, int);
1595
+ PDCEX int add_wchstr(const cchar_t *);
1596
+ PDCEX int border_set(const cchar_t *, const cchar_t *, const cchar_t *,
1597
+ const cchar_t *, const cchar_t *, const cchar_t *,
1598
+ const cchar_t *, const cchar_t *);
1599
+ PDCEX int box_set(WINDOW *, const cchar_t *, const cchar_t *);
1600
+ PDCEX int echo_wchar(const cchar_t *);
1601
+ PDCEX int erasewchar(wchar_t *);
1602
+ PDCEX int getbkgrnd(cchar_t *);
1603
+ PDCEX int getcchar(const cchar_t *, wchar_t *, attr_t *, short *, void *);
1604
+ PDCEX int getn_wstr(wint_t *, int);
1605
+ PDCEX int get_wch(wint_t *);
1606
+ PDCEX int get_wstr(wint_t *);
1607
+ PDCEX int hline_set(const cchar_t *, int);
1608
+ PDCEX int innwstr(wchar_t *, int);
1609
+ PDCEX int ins_nwstr(const wchar_t *, int);
1610
+ PDCEX int ins_wch(const cchar_t *);
1611
+ PDCEX int ins_wstr(const wchar_t *);
1612
+ PDCEX int inwstr(wchar_t *);
1613
+ PDCEX int in_wch(cchar_t *);
1614
+ PDCEX int in_wchnstr(cchar_t *, int);
1615
+ PDCEX int in_wchstr(cchar_t *);
1616
+ PDCEX char *key_name(wchar_t);
1617
+ PDCEX int killwchar(wchar_t *);
1618
+ PDCEX int mvaddnwstr(int, int, const wchar_t *, int);
1619
+ PDCEX int mvaddwstr(int, int, const wchar_t *);
1620
+ PDCEX int mvadd_wch(int, int, const cchar_t *);
1621
+ PDCEX int mvadd_wchnstr(int, int, const cchar_t *, int);
1622
+ PDCEX int mvadd_wchstr(int, int, const cchar_t *);
1623
+ PDCEX int mvgetn_wstr(int, int, wint_t *, int);
1624
+ PDCEX int mvget_wch(int, int, wint_t *);
1625
+ PDCEX int mvget_wstr(int, int, wint_t *);
1626
+ PDCEX int mvhline_set(int, int, const cchar_t *, int);
1627
+ PDCEX int mvinnwstr(int, int, wchar_t *, int);
1628
+ PDCEX int mvins_nwstr(int, int, const wchar_t *, int);
1629
+ PDCEX int mvins_wch(int, int, const cchar_t *);
1630
+ PDCEX int mvins_wstr(int, int, const wchar_t *);
1631
+ PDCEX int mvinwstr(int, int, wchar_t *);
1632
+ PDCEX int mvin_wch(int, int, cchar_t *);
1633
+ PDCEX int mvin_wchnstr(int, int, cchar_t *, int);
1634
+ PDCEX int mvin_wchstr(int, int, cchar_t *);
1635
+ PDCEX int mvvline_set(int, int, const cchar_t *, int);
1636
+ PDCEX int mvwaddnwstr(WINDOW *, int, int, const wchar_t *, int);
1637
+ PDCEX int mvwaddwstr(WINDOW *, int, int, const wchar_t *);
1638
+ PDCEX int mvwadd_wch(WINDOW *, int, int, const cchar_t *);
1639
+ PDCEX int mvwadd_wchnstr(WINDOW *, int, int, const cchar_t *, int);
1640
+ PDCEX int mvwadd_wchstr(WINDOW *, int, int, const cchar_t *);
1641
+ PDCEX int mvwgetn_wstr(WINDOW *, int, int, wint_t *, int);
1642
+ PDCEX int mvwget_wch(WINDOW *, int, int, wint_t *);
1643
+ PDCEX int mvwget_wstr(WINDOW *, int, int, wint_t *);
1644
+ PDCEX int mvwhline_set(WINDOW *, int, int, const cchar_t *, int);
1645
+ PDCEX int mvwinnwstr(WINDOW *, int, int, wchar_t *, int);
1646
+ PDCEX int mvwins_nwstr(WINDOW *, int, int, const wchar_t *, int);
1647
+ PDCEX int mvwins_wch(WINDOW *, int, int, const cchar_t *);
1648
+ PDCEX int mvwins_wstr(WINDOW *, int, int, const wchar_t *);
1649
+ PDCEX int mvwin_wch(WINDOW *, int, int, cchar_t *);
1650
+ PDCEX int mvwin_wchnstr(WINDOW *, int, int, cchar_t *, int);
1651
+ PDCEX int mvwin_wchstr(WINDOW *, int, int, cchar_t *);
1652
+ PDCEX int mvwinwstr(WINDOW *, int, int, wchar_t *);
1653
+ PDCEX int mvwvline_set(WINDOW *, int, int, const cchar_t *, int);
1654
+ PDCEX int pecho_wchar(WINDOW *, const cchar_t*);
1655
+ PDCEX int setcchar(cchar_t*, const wchar_t*, const attr_t,
1656
+ short, const void*);
1657
+ PDCEX int slk_wset(int, const wchar_t *, int);
1658
+ PDCEX int unget_wch(const wchar_t);
1659
+ PDCEX int vline_set(const cchar_t *, int);
1660
+ PDCEX int waddnwstr(WINDOW *, const wchar_t *, int);
1661
+ PDCEX int waddwstr(WINDOW *, const wchar_t *);
1662
+ PDCEX int wadd_wch(WINDOW *, const cchar_t *);
1663
+ PDCEX int wadd_wchnstr(WINDOW *, const cchar_t *, int);
1664
+ PDCEX int wadd_wchstr(WINDOW *, const cchar_t *);
1665
+ PDCEX int wbkgrnd(WINDOW *, const cchar_t *);
1666
+ PDCEX void wbkgrndset(WINDOW *, const cchar_t *);
1667
+ PDCEX int wborder_set(WINDOW *, const cchar_t *, const cchar_t *,
1668
+ const cchar_t *, const cchar_t *, const cchar_t *,
1669
+ const cchar_t *, const cchar_t *, const cchar_t *);
1670
+ PDCEX int wecho_wchar(WINDOW *, const cchar_t *);
1671
+ PDCEX int wgetbkgrnd(WINDOW *, cchar_t *);
1672
+ PDCEX int wgetn_wstr(WINDOW *, wint_t *, int);
1673
+ PDCEX int wget_wch(WINDOW *, wint_t *);
1674
+ PDCEX int wget_wstr(WINDOW *, wint_t *);
1675
+ PDCEX int whline_set(WINDOW *, const cchar_t *, int);
1676
+ PDCEX int winnwstr(WINDOW *, wchar_t *, int);
1677
+ PDCEX int wins_nwstr(WINDOW *, const wchar_t *, int);
1678
+ PDCEX int wins_wch(WINDOW *, const cchar_t *);
1679
+ PDCEX int wins_wstr(WINDOW *, const wchar_t *);
1680
+ PDCEX int winwstr(WINDOW *, wchar_t *);
1681
+ PDCEX int win_wch(WINDOW *, cchar_t *);
1682
+ PDCEX int win_wchnstr(WINDOW *, cchar_t *, int);
1683
+ PDCEX int win_wchstr(WINDOW *, cchar_t *);
1684
+ PDCEX wchar_t *wunctrl(cchar_t *);
1685
+ PDCEX int wvline_set(WINDOW *, const cchar_t *, int);
1686
+ #endif
1687
+
1688
+ /* Quasi-standard */
1689
+
1690
+ PDCEX chtype getattrs(WINDOW *);
1691
+ PDCEX int getbegx(WINDOW *);
1692
+ PDCEX int getbegy(WINDOW *);
1693
+ PDCEX int getmaxx(WINDOW *);
1694
+ PDCEX int getmaxy(WINDOW *);
1695
+ PDCEX int getparx(WINDOW *);
1696
+ PDCEX int getpary(WINDOW *);
1697
+ PDCEX int getcurx(WINDOW *);
1698
+ PDCEX int getcury(WINDOW *);
1699
+ PDCEX void traceoff(void);
1700
+ PDCEX void traceon(void);
1701
+ PDCEX char *unctrl(chtype);
1702
+
1703
+ PDCEX int crmode(void);
1704
+ PDCEX int nocrmode(void);
1705
+ PDCEX int draino(int);
1706
+ PDCEX int resetterm(void);
1707
+ PDCEX int fixterm(void);
1708
+ PDCEX int saveterm(void);
1709
+ PDCEX void setsyx(int, int);
1710
+
1711
+ PDCEX int mouse_set(unsigned long);
1712
+ PDCEX int mouse_on(unsigned long);
1713
+ PDCEX int mouse_off(unsigned long);
1714
+ PDCEX int request_mouse_pos(void);
1715
+ PDCEX int map_button(unsigned long);
1716
+ PDCEX void wmouse_position(WINDOW *, int *, int *);
1717
+ PDCEX unsigned long getmouse(void);
1718
+ PDCEX unsigned long getbmap(void);
1719
+
1720
+ /* ncurses */
1721
+
1722
+ PDCEX int assume_default_colors(int, int);
1723
+ PDCEX const char *curses_version(void);
1724
+ PDCEX bool has_key(int);
1725
+ PDCEX int use_default_colors(void);
1726
+ PDCEX int wresize(WINDOW *, int, int);
1727
+
1728
+ PDCEX int mouseinterval(int);
1729
+ PDCEX mmask_t mousemask(mmask_t, mmask_t *);
1730
+ PDCEX bool mouse_trafo(int *, int *, bool);
1731
+ PDCEX int nc_getmouse(MEVENT *);
1732
+ PDCEX int ungetmouse(MEVENT *);
1733
+ PDCEX bool wenclose(const WINDOW *, int, int);
1734
+ PDCEX bool wmouse_trafo(const WINDOW *, int *, int *, bool);
1735
+
1736
+ /* PDCurses */
1737
+
1738
+ PDCEX int addrawch(chtype);
1739
+ PDCEX int insrawch(chtype);
1740
+ PDCEX bool is_termresized(void);
1741
+ PDCEX int mvaddrawch(int, int, chtype);
1742
+ PDCEX int mvdeleteln(int, int);
1743
+ PDCEX int mvinsertln(int, int);
1744
+ PDCEX int mvinsrawch(int, int, chtype);
1745
+ PDCEX int mvwaddrawch(WINDOW *, int, int, chtype);
1746
+ PDCEX int mvwdeleteln(WINDOW *, int, int);
1747
+ PDCEX int mvwinsertln(WINDOW *, int, int);
1748
+ PDCEX int mvwinsrawch(WINDOW *, int, int, chtype);
1749
+ PDCEX int raw_output(bool);
1750
+ PDCEX int resize_term(int, int);
1751
+ PDCEX WINDOW *resize_window(WINDOW *, int, int);
1752
+ PDCEX int waddrawch(WINDOW *, chtype);
1753
+ PDCEX int winsrawch(WINDOW *, chtype);
1754
+ PDCEX char wordchar(void);
1755
+
1756
+ #ifdef PDC_WIDE
1757
+ PDCEX wchar_t *slk_wlabel(int);
1758
+ #endif
1759
+
1760
+ PDCEX void PDC_debug(const char *, ...);
1761
+ PDCEX int PDC_ungetch(int);
1762
+ PDCEX int PDC_set_blink(bool);
1763
+ PDCEX int PDC_set_line_color(short);
1764
+ PDCEX void PDC_set_title(const char *);
1765
+
1766
+ PDCEX int PDC_clearclipboard(void);
1767
+ PDCEX int PDC_freeclipboard(char *);
1768
+ PDCEX int PDC_getclipboard(char **, long *);
1769
+ PDCEX int PDC_setclipboard(const char *, long);
1770
+
1771
+ PDCEX unsigned long PDC_get_input_fd(void);
1772
+ PDCEX unsigned long PDC_get_key_modifiers(void);
1773
+ PDCEX int PDC_return_key_modifiers(bool);
1774
+ PDCEX int PDC_save_key_modifiers(bool);
1775
+ PDCEX void PDC_set_resize_limits( const int new_min_lines,
1776
+ const int new_max_lines,
1777
+ const int new_min_cols,
1778
+ const int new_max_cols);
1779
+
1780
+ #define FUNCTION_KEY_SHUT_DOWN 0
1781
+ #define FUNCTION_KEY_PASTE 1
1782
+ #define FUNCTION_KEY_ENLARGE_FONT 2
1783
+ #define FUNCTION_KEY_SHRINK_FONT 3
1784
+ #define FUNCTION_KEY_CHOOSE_FONT 4
1785
+ #define FUNCTION_KEY_ABORT 5
1786
+ #define PDC_MAX_FUNCTION_KEYS 6
1787
+
1788
+ PDCEX int PDC_set_function_key( const unsigned function,
1789
+ const int new_key);
1790
+
1791
+ PDCEX WINDOW *Xinitscr(int, char **);
1792
+ #ifdef XCURSES
1793
+ PDCEX void XCursesExit(void);
1794
+ PDCEX int sb_init(void);
1795
+ PDCEX int sb_set_horz(int, int, int);
1796
+ PDCEX int sb_set_vert(int, int, int);
1797
+ PDCEX int sb_get_horz(int *, int *, int *);
1798
+ PDCEX int sb_get_vert(int *, int *, int *);
1799
+ PDCEX int sb_refresh(void);
1800
+ #endif
1801
+
1802
+ /*** Functions defined as macros ***/
1803
+
1804
+ /* getch() and ungetch() conflict with some DOS libraries */
1805
+
1806
+ #define getch() wgetch(stdscr)
1807
+ #define ungetch(ch) PDC_ungetch(ch)
1808
+
1809
+ #define COLOR_PAIR(n) (((chtype)(n) << PDC_COLOR_SHIFT) & A_COLOR)
1810
+ #define PAIR_NUMBER(n) ((((n) & A_COLOR) >> PDC_COLOR_SHIFT) & 0xff)
1811
+
1812
+ /* These will _only_ work as macros */
1813
+
1814
+ #define getbegyx(w, y, x) (y = getbegy(w), x = getbegx(w))
1815
+ #define getmaxyx(w, y, x) (y = getmaxy(w), x = getmaxx(w))
1816
+ #define getparyx(w, y, x) (y = getpary(w), x = getparx(w))
1817
+ #define getyx(w, y, x) (y = getcury(w), x = getcurx(w))
1818
+
1819
+ #define getsyx(y, x) { if (curscr->_leaveit) (y)=(x)=-1; \
1820
+ else getyx(curscr,(y),(x)); }
1821
+
1822
+ #ifdef NCURSES_MOUSE_VERSION
1823
+ # define getmouse(x) nc_getmouse(x)
1824
+ #endif
1825
+
1826
+ /* return codes from PDC_getclipboard() and PDC_setclipboard() calls */
1827
+
1828
+ #define PDC_CLIP_SUCCESS 0
1829
+ #define PDC_CLIP_ACCESS_ERROR 1
1830
+ #define PDC_CLIP_EMPTY 2
1831
+ #define PDC_CLIP_MEMORY_ERROR 3
1832
+
1833
+ /* PDCurses key modifier masks */
1834
+
1835
+ #define PDC_KEY_MODIFIER_SHIFT 1
1836
+ #define PDC_KEY_MODIFIER_CONTROL 2
1837
+ #define PDC_KEY_MODIFIER_ALT 4
1838
+ #define PDC_KEY_MODIFIER_NUMLOCK 8
1839
+ #define PDC_KEY_MODIFIER_REPEAT 16
1840
+
1841
+ #ifdef __cplusplus
1842
+ # undef bool
1843
+ }
1844
+ #endif
1845
+
1846
+ #endif /* __PDCURSES__ */