curses 1.2.6 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (253) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/macos.yml +19 -0
  3. data/.github/workflows/ubuntu.yml +26 -0
  4. data/.github/workflows/windows.yml +28 -0
  5. data/.gitmodules +1 -1
  6. data/.travis.yml +6 -3
  7. data/History.md +40 -0
  8. data/README.md +4 -1
  9. data/Rakefile +0 -83
  10. data/curses.gemspec +2 -3
  11. data/ext/curses/curses.c +1271 -151
  12. data/ext/curses/extconf.rb +140 -17
  13. data/lib/curses.rb +5 -12
  14. data/sample/form.rb +52 -0
  15. data/sample/menu.rb +1 -1
  16. data/vendor/PDCurses/.gitignore +47 -0
  17. data/vendor/PDCurses/.travis.yml +49 -0
  18. data/vendor/PDCurses/CMakeLists.txt +68 -0
  19. data/vendor/PDCurses/HISTORY.md +2036 -0
  20. data/vendor/PDCurses/IMPLEMNT.md +327 -0
  21. data/vendor/PDCurses/README.md +77 -0
  22. data/vendor/PDCurses/acs_defs.h +265 -0
  23. data/vendor/PDCurses/appveyor.yml +218 -0
  24. data/vendor/PDCurses/cmake/README.md +71 -0
  25. data/vendor/PDCurses/cmake/build_dependencies.cmake +178 -0
  26. data/vendor/PDCurses/cmake/build_options.cmake +25 -0
  27. data/vendor/PDCurses/cmake/dll_version.cmake +26 -0
  28. data/vendor/PDCurses/cmake/gen_config_header.cmake +43 -0
  29. data/vendor/PDCurses/cmake/get_version.cmake +17 -0
  30. data/vendor/PDCurses/cmake/make_uninstall.cmake +19 -0
  31. data/vendor/PDCurses/cmake/project_common.cmake +121 -0
  32. data/vendor/PDCurses/cmake/resource.in.cmake +52 -0
  33. data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +83 -0
  34. data/vendor/PDCurses/cmake/target_arch.cmake +36 -0
  35. data/vendor/PDCurses/cmake/version.in.cmake +73 -0
  36. data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +96 -0
  37. data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +106 -0
  38. data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +105 -0
  39. data/vendor/PDCurses/curses.h +1846 -0
  40. data/vendor/PDCurses/curspriv.h +134 -0
  41. data/vendor/PDCurses/demos/README.md +25 -0
  42. data/vendor/PDCurses/demos/firework.c +144 -0
  43. data/vendor/PDCurses/demos/newtest.c +581 -0
  44. data/vendor/PDCurses/demos/ozdemo.c +447 -0
  45. data/vendor/PDCurses/demos/ptest.c +283 -0
  46. data/vendor/PDCurses/demos/rain.c +157 -0
  47. data/vendor/PDCurses/demos/testcurs.c +1607 -0
  48. data/vendor/PDCurses/demos/tui.c +1048 -0
  49. data/vendor/PDCurses/demos/tui.h +65 -0
  50. data/vendor/PDCurses/demos/tuidemo.c +233 -0
  51. data/vendor/PDCurses/demos/version.c +61 -0
  52. data/vendor/PDCurses/demos/worm.c +432 -0
  53. data/vendor/PDCurses/demos/xmas.c +955 -0
  54. data/vendor/PDCurses/dos/CMakeLists.txt +47 -0
  55. data/vendor/PDCurses/dos/Makefile.bcc +83 -0
  56. data/vendor/PDCurses/dos/Makefile.dmc +257 -0
  57. data/vendor/PDCurses/dos/Makefile.msc +113 -0
  58. data/vendor/PDCurses/dos/Makefile.wcc +107 -0
  59. data/vendor/PDCurses/dos/README.md +51 -0
  60. data/vendor/PDCurses/dos/bccdos.lrf +9 -0
  61. data/vendor/PDCurses/dos/mscdos.lrf +50 -0
  62. data/vendor/PDCurses/dos/pdcclip.c +132 -0
  63. data/vendor/PDCurses/dos/pdcdisp.c +135 -0
  64. data/vendor/PDCurses/dos/pdcdos.h +194 -0
  65. data/vendor/PDCurses/dos/pdcgetsc.c +98 -0
  66. data/vendor/PDCurses/dos/pdckbd.c +513 -0
  67. data/vendor/PDCurses/dos/pdcscrn.c +785 -0
  68. data/vendor/PDCurses/dos/pdcsetsc.c +101 -0
  69. data/vendor/PDCurses/dos/pdcutil.c +212 -0
  70. data/vendor/PDCurses/libobjs.mif +26 -0
  71. data/vendor/PDCurses/makedist.mif +20 -0
  72. data/vendor/PDCurses/man/README.md +21 -0
  73. data/vendor/PDCurses/man/intro.md +361 -0
  74. data/vendor/PDCurses/man/manext.c +119 -0
  75. data/vendor/PDCurses/man/sdl.md +152 -0
  76. data/vendor/PDCurses/man/sdl2.md +58 -0
  77. data/vendor/PDCurses/man/x11.md +407 -0
  78. data/vendor/PDCurses/ncurses/CMakeLists.txt +66 -0
  79. data/vendor/PDCurses/ncurses/README.md +26 -0
  80. data/vendor/PDCurses/ncurses/makefile +29 -0
  81. data/vendor/PDCurses/os2/CMakeLists.txt +41 -0
  82. data/vendor/PDCurses/os2/Makefile.bcc +90 -0
  83. data/vendor/PDCurses/os2/Makefile.wcc +43 -0
  84. data/vendor/PDCurses/os2/README.md +43 -0
  85. data/vendor/PDCurses/os2/iccos2.lrf +50 -0
  86. data/vendor/PDCurses/os2/iccos2.mak +256 -0
  87. data/vendor/PDCurses/os2/pdcclip.c +188 -0
  88. data/vendor/PDCurses/os2/pdcdisp.c +93 -0
  89. data/vendor/PDCurses/os2/pdcgetsc.c +89 -0
  90. data/vendor/PDCurses/os2/pdckbd.c +521 -0
  91. data/vendor/PDCurses/os2/pdcos2.h +55 -0
  92. data/vendor/PDCurses/os2/pdcscrn.c +449 -0
  93. data/vendor/PDCurses/os2/pdcsetsc.c +112 -0
  94. data/vendor/PDCurses/os2/pdcutil.c +52 -0
  95. data/vendor/PDCurses/panel.h +56 -0
  96. data/vendor/PDCurses/pdcurses/README.md +25 -0
  97. data/vendor/PDCurses/pdcurses/addch.c +693 -0
  98. data/vendor/PDCurses/pdcurses/addchstr.c +245 -0
  99. data/vendor/PDCurses/pdcurses/addstr.c +240 -0
  100. data/vendor/PDCurses/pdcurses/attr.c +359 -0
  101. data/vendor/PDCurses/pdcurses/beep.c +68 -0
  102. data/vendor/PDCurses/pdcurses/bkgd.c +223 -0
  103. data/vendor/PDCurses/pdcurses/border.c +411 -0
  104. data/vendor/PDCurses/pdcurses/clear.c +159 -0
  105. data/vendor/PDCurses/pdcurses/color.c +298 -0
  106. data/vendor/PDCurses/pdcurses/debug.c +109 -0
  107. data/vendor/PDCurses/pdcurses/delch.c +96 -0
  108. data/vendor/PDCurses/pdcurses/deleteln.c +211 -0
  109. data/vendor/PDCurses/pdcurses/deprec.c +27 -0
  110. data/vendor/PDCurses/pdcurses/getch.c +417 -0
  111. data/vendor/PDCurses/pdcurses/getstr.c +474 -0
  112. data/vendor/PDCurses/pdcurses/getyx.c +139 -0
  113. data/vendor/PDCurses/pdcurses/inch.c +127 -0
  114. data/vendor/PDCurses/pdcurses/inchstr.c +214 -0
  115. data/vendor/PDCurses/pdcurses/initscr.c +367 -0
  116. data/vendor/PDCurses/pdcurses/inopts.c +324 -0
  117. data/vendor/PDCurses/pdcurses/insch.c +271 -0
  118. data/vendor/PDCurses/pdcurses/insstr.c +264 -0
  119. data/vendor/PDCurses/pdcurses/instr.c +246 -0
  120. data/vendor/PDCurses/pdcurses/kernel.c +259 -0
  121. data/vendor/PDCurses/pdcurses/keyname.c +157 -0
  122. data/vendor/PDCurses/pdcurses/mouse.c +438 -0
  123. data/vendor/PDCurses/pdcurses/move.c +57 -0
  124. data/vendor/PDCurses/pdcurses/outopts.c +159 -0
  125. data/vendor/PDCurses/pdcurses/overlay.c +214 -0
  126. data/vendor/PDCurses/pdcurses/pad.c +260 -0
  127. data/vendor/PDCurses/pdcurses/panel.c +633 -0
  128. data/vendor/PDCurses/pdcurses/printw.c +126 -0
  129. data/vendor/PDCurses/pdcurses/refresh.c +279 -0
  130. data/vendor/PDCurses/pdcurses/scanw.c +578 -0
  131. data/vendor/PDCurses/pdcurses/scr_dump.c +213 -0
  132. data/vendor/PDCurses/pdcurses/scroll.c +101 -0
  133. data/vendor/PDCurses/pdcurses/slk.c +591 -0
  134. data/vendor/PDCurses/pdcurses/termattr.c +182 -0
  135. data/vendor/PDCurses/pdcurses/terminfo.c +217 -0
  136. data/vendor/PDCurses/pdcurses/touch.c +163 -0
  137. data/vendor/PDCurses/pdcurses/util.c +312 -0
  138. data/vendor/PDCurses/pdcurses/window.c +569 -0
  139. data/vendor/PDCurses/sdl1/Makefile.mng +110 -0
  140. data/vendor/PDCurses/sdl1/README.md +31 -0
  141. data/vendor/PDCurses/sdl1/deffont.h +385 -0
  142. data/vendor/PDCurses/sdl1/deficon.h +23 -0
  143. data/vendor/PDCurses/sdl1/pdcclip.c +131 -0
  144. data/vendor/PDCurses/sdl1/pdcdisp.c +373 -0
  145. data/vendor/PDCurses/sdl1/pdcgetsc.c +30 -0
  146. data/vendor/PDCurses/sdl1/pdckbd.c +405 -0
  147. data/vendor/PDCurses/sdl1/pdcscrn.c +414 -0
  148. data/vendor/PDCurses/sdl1/pdcsdl.h +31 -0
  149. data/vendor/PDCurses/sdl1/pdcsetsc.c +64 -0
  150. data/vendor/PDCurses/sdl1/pdcutil.c +40 -0
  151. data/vendor/PDCurses/sdl1/sdltest.c +79 -0
  152. data/vendor/PDCurses/sdl2/CMakeLists.txt +76 -0
  153. data/vendor/PDCurses/sdl2/Makefile.vc +164 -0
  154. data/vendor/PDCurses/sdl2/README.md +34 -0
  155. data/vendor/PDCurses/sdl2/deffont.h +385 -0
  156. data/vendor/PDCurses/sdl2/deficon.h +23 -0
  157. data/vendor/PDCurses/sdl2/pdcclip.c +93 -0
  158. data/vendor/PDCurses/sdl2/pdcdisp.c +534 -0
  159. data/vendor/PDCurses/sdl2/pdcgetsc.c +30 -0
  160. data/vendor/PDCurses/sdl2/pdckbd.c +480 -0
  161. data/vendor/PDCurses/sdl2/pdcscrn.c +443 -0
  162. data/vendor/PDCurses/sdl2/pdcsdl.h +33 -0
  163. data/vendor/PDCurses/sdl2/pdcsetsc.c +67 -0
  164. data/vendor/PDCurses/sdl2/pdcutil.c +39 -0
  165. data/vendor/PDCurses/sdl2/sdltest.c +81 -0
  166. data/vendor/PDCurses/term.h +48 -0
  167. data/vendor/PDCurses/version.mif +7 -0
  168. data/vendor/PDCurses/vt/CMakeLists.txt +28 -0
  169. data/vendor/PDCurses/vt/Makefile.bcc +111 -0
  170. data/vendor/PDCurses/vt/Makefile.dmc +258 -0
  171. data/vendor/PDCurses/vt/Makefile.vc +144 -0
  172. data/vendor/PDCurses/vt/Makefile.wcc +107 -0
  173. data/vendor/PDCurses/vt/README.md +64 -0
  174. data/vendor/PDCurses/vt/pdcclip.c +20 -0
  175. data/vendor/PDCurses/vt/pdcdisp.c +284 -0
  176. data/vendor/PDCurses/vt/pdcgetsc.c +27 -0
  177. data/vendor/PDCurses/vt/pdckbd.c +394 -0
  178. data/vendor/PDCurses/vt/pdcscrn.c +434 -0
  179. data/vendor/PDCurses/vt/pdcsetsc.c +45 -0
  180. data/vendor/PDCurses/vt/pdcutil.c +43 -0
  181. data/vendor/PDCurses/vt/pdcvt.h +16 -0
  182. data/vendor/PDCurses/watcom.mif +68 -0
  183. data/vendor/PDCurses/wincon/CMakeLists.txt +27 -0
  184. data/vendor/PDCurses/wincon/Makefile.bcc +88 -0
  185. data/vendor/PDCurses/wincon/Makefile.dmc +256 -0
  186. data/vendor/PDCurses/wincon/Makefile.lcc +273 -0
  187. data/vendor/PDCurses/wincon/Makefile.mng +176 -0
  188. data/vendor/PDCurses/wincon/Makefile.vc +144 -0
  189. data/vendor/PDCurses/wincon/Makefile.wcc +51 -0
  190. data/vendor/PDCurses/wincon/README.md +85 -0
  191. data/vendor/PDCurses/wincon/pdcclip.c +174 -0
  192. data/vendor/PDCurses/wincon/pdcdisp.c +143 -0
  193. data/vendor/PDCurses/wincon/pdcgetsc.c +55 -0
  194. data/vendor/PDCurses/wincon/pdckbd.c +786 -0
  195. data/vendor/PDCurses/wincon/pdcscrn.c +717 -0
  196. data/vendor/PDCurses/wincon/pdcsetsc.c +91 -0
  197. data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
  198. data/vendor/PDCurses/wincon/pdcurses.rc +28 -0
  199. data/vendor/PDCurses/wincon/pdcutil.c +41 -0
  200. data/vendor/PDCurses/wincon/pdcwin.h +31 -0
  201. data/vendor/PDCurses/wingui/CMakeLists.txt +27 -0
  202. data/vendor/PDCurses/wingui/Makefile.bcc +85 -0
  203. data/vendor/PDCurses/wingui/Makefile.dmc +259 -0
  204. data/vendor/PDCurses/wingui/Makefile.lcc +273 -0
  205. data/vendor/PDCurses/wingui/Makefile.mng +171 -0
  206. data/vendor/PDCurses/wingui/Makefile.vc +144 -0
  207. data/vendor/PDCurses/wingui/Makefile.wcc +51 -0
  208. data/vendor/PDCurses/wingui/README.md +93 -0
  209. data/vendor/PDCurses/wingui/pdcclip.c +174 -0
  210. data/vendor/PDCurses/wingui/pdcdisp.c +718 -0
  211. data/vendor/PDCurses/wingui/pdcgetsc.c +30 -0
  212. data/vendor/PDCurses/wingui/pdckbd.c +143 -0
  213. data/vendor/PDCurses/wingui/pdcscrn.c +2797 -0
  214. data/vendor/PDCurses/wingui/pdcsetsc.c +89 -0
  215. data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
  216. data/vendor/PDCurses/wingui/pdcurses.rc +28 -0
  217. data/vendor/PDCurses/wingui/pdcutil.c +61 -0
  218. data/vendor/PDCurses/wingui/pdcwin.h +122 -0
  219. data/vendor/PDCurses/x11/Makefile.in +754 -0
  220. data/vendor/PDCurses/x11/PDCurses.spec +82 -0
  221. data/vendor/PDCurses/x11/README.md +62 -0
  222. data/vendor/PDCurses/x11/ScrollBox.c +319 -0
  223. data/vendor/PDCurses/x11/ScrollBox.h +51 -0
  224. data/vendor/PDCurses/x11/ScrollBoxP.h +70 -0
  225. data/vendor/PDCurses/x11/aclocal.m4 +994 -0
  226. data/vendor/PDCurses/x11/big_icon.xbm +46 -0
  227. data/vendor/PDCurses/x11/compose.h +201 -0
  228. data/vendor/PDCurses/x11/config.guess +1500 -0
  229. data/vendor/PDCurses/x11/config.h.in +100 -0
  230. data/vendor/PDCurses/x11/config.sub +1616 -0
  231. data/vendor/PDCurses/x11/configure +6700 -0
  232. data/vendor/PDCurses/x11/configure.ac +295 -0
  233. data/vendor/PDCurses/x11/debian/changelog +6 -0
  234. data/vendor/PDCurses/x11/debian/compat +1 -0
  235. data/vendor/PDCurses/x11/debian/control +11 -0
  236. data/vendor/PDCurses/x11/debian/copyright +27 -0
  237. data/vendor/PDCurses/x11/debian/rules +98 -0
  238. data/vendor/PDCurses/x11/install-sh +253 -0
  239. data/vendor/PDCurses/x11/little_icon.xbm +14 -0
  240. data/vendor/PDCurses/x11/ncurses_cfg.h +45 -0
  241. data/vendor/PDCurses/x11/pdcclip.c +173 -0
  242. data/vendor/PDCurses/x11/pdcdisp.c +85 -0
  243. data/vendor/PDCurses/x11/pdcgetsc.c +28 -0
  244. data/vendor/PDCurses/x11/pdckbd.c +104 -0
  245. data/vendor/PDCurses/x11/pdcscrn.c +258 -0
  246. data/vendor/PDCurses/x11/pdcsetsc.c +95 -0
  247. data/vendor/PDCurses/x11/pdcutil.c +52 -0
  248. data/vendor/PDCurses/x11/pdcx11.c +316 -0
  249. data/vendor/PDCurses/x11/pdcx11.h +191 -0
  250. data/vendor/PDCurses/x11/sb.c +155 -0
  251. data/vendor/PDCurses/x11/x11.c +3686 -0
  252. data/vendor/PDCurses/x11/xcurses-config.in +81 -0
  253. metadata +255 -21
@@ -0,0 +1,327 @@
1
+ PDCurses Implementor's Guide
2
+ ============================
3
+
4
+ - Version 1.3 - 20??/??/?? - notes about official ports, new indentation
5
+ style; markdown
6
+ - Version 1.2 - 2007/07/11 - added PDC_init_pair(), PDC_pair_content(),
7
+ version history; removed pdc_atrtab
8
+ - Version 1.1 - 2007/06/06 - minor cosmetic change
9
+ - Version 1.0 - 2007/04/01 - initial revision
10
+
11
+ This document is for those wishing to port PDCurses to a new platform,
12
+ or just wanting to better understand how it works. Nothing here should
13
+ be needed for application programming; for that, refer to PDCurses.md,
14
+ as built in doc/, or distributed as a file separate from this source
15
+ package. This document assumes that you've read the user-level
16
+ documentation and are very familiar with application-level curses
17
+ programming.
18
+
19
+ If you want to submit your port for possible inclusion into the main
20
+ PDCurses distribution, please follow these guidelines:
21
+
22
+ - Don't modify anything in the pdcurses directory or in other port
23
+ directories. Don't modify curses.h or curspriv.h unless absolutely
24
+ necessary. (And prefer modifying curspriv.h over curses.h.)
25
+
26
+ - Use the same indentation style, naming and scope conventions as the
27
+ existing code.
28
+
29
+ - Release all your code to the public domain -- no copyright. Code
30
+ under GPL, BSD, etc. will not be accepted.
31
+
32
+
33
+ Data Structures
34
+ ===============
35
+
36
+ A port of PDCurses must provide acs_map[], a 128-element array of
37
+ chtypes, with values laid out based on the Alternate Character Set of
38
+ the VT100 (see curses.h). PDC_transform_line() must use this table; when
39
+ it encounters a chtype with the A_ALTCHARSET flag set, and an A_CHARTEXT
40
+ value in the range 0-127, it must render it using the A_CHARTEXT portion
41
+ of the corresponding value from this table, instead of the original
42
+ value. Also, values may be read from this table by apps, and passed
43
+ through functions such as waddch(), which does no special processing on
44
+ control characters (0-31 and 127) when the A_ALTCHARSET flag is set.
45
+ Thus, any control characters used in acs_map[] should also have the
46
+ A_ALTCHARSET flag set. Implementations should provide suitable values
47
+ for all the ACS_ macros defined in curses.h; other values in the table
48
+ should be filled with their own indices (e.g., acs_map['E'] == 'E'). The
49
+ table can be either hardwired, or filled by PDC_scr_open(). Existing
50
+ ports define it in pdcdisp.c, but this is not required.
51
+
52
+
53
+ Functions
54
+ =========
55
+
56
+ A port of PDCurses must implement the following functions, with extern
57
+ scope. These functions are traditionally divided into several modules,
58
+ as indicated below; this division is not required (only the functions
59
+ are), but may make it easier to follow for someone familiar with the
60
+ existing ports.
61
+
62
+ Any other functions you create as part of your implementation should
63
+ have static scope, if possible. If they can't be static, they should be
64
+ named with the "PDC_" prefix. This minimizes the risk of collision with
65
+ an application's choices.
66
+
67
+ Current PDCurses style also uses a single leading underscore with the
68
+ name of any static function; and modified BSD/Allman-style indentation,
69
+ approximately equivalent to "indent -kr -nut -bl -bli0", with
70
+ adjustments to keep every line under 80 columns.
71
+
72
+
73
+ pdcdisp.c:
74
+ ----------
75
+
76
+ ### void PDC_gotoyx(int y, int x);
77
+
78
+ Move the physical cursor (as opposed to the logical cursor affected by
79
+ wmove()) to the given location. This is called mainly from doupdate().
80
+ In general, this function need not compare the old location with the new
81
+ one, and should just move the cursor unconditionally.
82
+
83
+ ### void PDC_transform_line(int lineno, int x, int len, const chtype *srcp);
84
+
85
+ The core output routine. It takes len chtype entities from srcp (a
86
+ pointer into curscr) and renders them to the physical screen at line
87
+ lineno, column x. It must also translate characters 0-127 via acs_map[],
88
+ if they're flagged with A_ALTCHARSET in the attribute portion of the
89
+ chtype.
90
+
91
+
92
+ pdcgetsc.c:
93
+ -----------
94
+
95
+ ### int PDC_get_columns(void);
96
+
97
+ Returns the size of the screen in columns. It's used in resize_term() to
98
+ set the new value of COLS. (Some existing implementations also call it
99
+ internally from PDC_scr_open(), but this is not required.)
100
+
101
+ ### int PDC_get_cursor_mode(void);
102
+
103
+ Returns the size/shape of the cursor. The format of the result is
104
+ unspecified, except that it must be returned as an int. This function is
105
+ called from initscr(), and the result is stored in SP->orig_cursor,
106
+ which is used by PDC_curs_set() to determine the size/shape of the
107
+ cursor in normal visibility mode (curs_set(1)).
108
+
109
+ ### int PDC_get_rows(void);
110
+
111
+ Returns the size of the screen in rows. It's used in resize_term() to
112
+ set the new value of LINES. (Some existing implementations also call it
113
+ internally from PDC_scr_open(), but this is not required.)
114
+
115
+
116
+ pdckbd.c:
117
+ ---------
118
+
119
+ ### bool PDC_check_key(void);
120
+
121
+ Keyboard/mouse event check, called from wgetch(). Returns TRUE if
122
+ there's an event ready to process. This function must be non-blocking.
123
+
124
+ ### void PDC_flushinp(void);
125
+
126
+ This is the core of flushinp(). It discards any pending key or mouse
127
+ events, removing them from any internal queue and from the OS queue, if
128
+ applicable.
129
+
130
+ ### int PDC_get_key(void);
131
+
132
+ Get the next available key, or mouse event (indicated by a return of
133
+ KEY_MOUSE), and remove it from the OS' input queue, if applicable. This
134
+ function is called from wgetch(). This function may be blocking, and
135
+ traditionally is; but it need not be. If a valid key or mouse event
136
+ cannot be returned, for any reason, this function returns -1. Valid keys
137
+ are those that fall within the appropriate character set, or are in the
138
+ list of special keys found in curses.h (KEY_MIN through KEY_MAX). When
139
+ returning a special key code, this routine must also set SP->key_code to
140
+ TRUE; otherwise it must set it to FALSE. If SP->return_key_modifiers is
141
+ TRUE, this function may return modifier keys (shift, control, alt),
142
+ pressed alone, as special key codes; if SP->return_key_modifiers is
143
+ FALSE, it must not. If modifier keys are returned, it should only happen
144
+ if no other keys were pressed in the meantime; i.e., the return should
145
+ happen on key up. But if this is not possible, it may return the
146
+ modifier keys on key down (if and only if SP->return_key_modifiers is
147
+ TRUE).
148
+
149
+ ### int PDC_modifiers_set(void);
150
+
151
+ Called from PDC_return_key_modifiers(). If your platform needs to do
152
+ anything in response to a change in SP->return_key_modifiers, do it
153
+ here. Returns OK or ERR, which is passed on by the caller.
154
+
155
+ ### int PDC_mouse_set(void);
156
+
157
+ Called by mouse_set(), mouse_on(), and mouse_off() -- all the functions
158
+ that modify SP->_trap_mbe. If your platform needs to do anything in
159
+ response to a change in SP->_trap_mbe (for example, turning the mouse
160
+ cursor on or off), do it here. Returns OK or ERR, which is passed on by
161
+ the caller.
162
+
163
+ ### void PDC_set_keyboard_binary(bool on);
164
+
165
+ Set keyboard input to "binary" mode. If you need to do something to keep
166
+ the OS from processing ^C, etc. on your platform, do it here. TRUE turns
167
+ the mode on; FALSE reverts it. This function is called from raw() and
168
+ noraw().
169
+
170
+
171
+ pdcscrn.c:
172
+ ----------
173
+
174
+ ### bool PDC_can_change_color(void);
175
+
176
+ Returns TRUE if init_color() and color_content() give meaningful
177
+ results, FALSE otherwise. Called from can_change_color().
178
+
179
+ ### int PDC_color_content(short color, short *red, short *green, short *blue);
180
+
181
+ The core of color_content(). This does all the work of that function,
182
+ except checking for values out of range and null pointers.
183
+
184
+ ### int PDC_init_color(short color, short red, short green, short blue);
185
+
186
+ The core of init_color(). This does all the work of that function,
187
+ except checking for values out of range.
188
+
189
+ ### void PDC_init_pair(short pair, short fg, short bg);
190
+
191
+ The core of init_pair(). This does all the work of that function, except
192
+ checking for values out of range. The values passed to this function
193
+ should be returned by a call to PDC_pair_content() with the same pair
194
+ number. PDC_transform_line() should use the specified colors when
195
+ rendering a chtype with the given pair number.
196
+
197
+ ### int PDC_pair_content(short pair, short *fg, short *bg);
198
+
199
+ The core of pair_content(). This does all the work of that function,
200
+ except checking for values out of range and null pointers.
201
+
202
+ ### void PDC_reset_prog_mode(void);
203
+
204
+ The non-portable functionality of reset_prog_mode() is handled here --
205
+ whatever's not done in _restore_mode(). In current ports: In OS/2, this
206
+ sets the keyboard to binary mode; in Win32, it enables or disables the
207
+ mouse pointer to match the saved mode; in others it does nothing.
208
+
209
+ ### void PDC_reset_shell_mode(void);
210
+
211
+ The same thing, for reset_shell_mode(). In OS/2 and Win32, it restores
212
+ the default console mode; in others it does nothing.
213
+
214
+ ### int PDC_resize_screen(int nlines, int ncols);
215
+
216
+ This does the main work of resize_term(). It may respond to non-zero
217
+ parameters, by setting the screen to the specified size; to zero
218
+ parameters, by setting the screen to a size chosen by the user at
219
+ runtime, in an unspecified way (e.g., by dragging the edges of the
220
+ window); or both. It may also do nothing, if there's no appropriate
221
+ action for the platform.
222
+
223
+ ### void PDC_restore_screen_mode(int i);
224
+
225
+ Called from _restore_mode() in kernel.c, this function does the actual
226
+ mode changing, if applicable. Currently used only in DOS and OS/2.
227
+
228
+ ### void PDC_save_screen_mode(int i);
229
+
230
+ Called from _save_mode() in kernel.c, this function saves the actual
231
+ screen mode, if applicable. Currently used only in DOS and OS/2.
232
+
233
+ ### void PDC_scr_close(void);
234
+
235
+ The platform-specific part of endwin(). It may restore the image of the
236
+ original screen saved by PDC_scr_open(), if the PDC_RESTORE_SCREEN
237
+ environment variable is set; either way, if using an existing terminal,
238
+ this function should restore it to the mode it had at startup, and move
239
+ the cursor to the lower left corner. (The X11 port does nothing.)
240
+
241
+ ### void PDC_scr_free(void);
242
+
243
+ Frees the memory for SP allocated by PDC_scr_open(). Called by
244
+ delscreen().
245
+
246
+ ### int PDC_scr_open(int argc, char **argv);
247
+
248
+ The platform-specific part of initscr(). It's actually called from
249
+ Xinitscr(); the arguments, if present, correspond to those used with
250
+ main(), and may be used to set the title of the terminal window, or for
251
+ other, platform-specific purposes. (The arguments are currently used
252
+ only in X11.) PDC_scr_open() must allocate memory for SP, and must
253
+ initialize acs_map[] (unless it's preset) and several members of SP,
254
+ including lines, cols, mouse_wait, orig_attr (and if orig_attr is TRUE,
255
+ orig_fore and orig_back), mono, _restore and _preserve. (Although SP is
256
+ used the same way in all ports, it's allocated here in order to allow
257
+ the X11 port to map it to a block of shared memory.) If using an
258
+ existing terminal, and the environment variable PDC_RESTORE_SCREEN is
259
+ set, this function may also store the existing screen image for later
260
+ restoration by PDC_scr_close().
261
+
262
+
263
+ pdcsetsc.c:
264
+ -----------
265
+
266
+ ### int PDC_curs_set(int visibility);
267
+
268
+ Called from curs_set(). Changes the appearance of the cursor -- 0 turns
269
+ it off, 1 is normal (the terminal's default, if applicable, as
270
+ determined by SP->orig_cursor), and 2 is high visibility. The exact
271
+ appearance of these modes is not specified.
272
+
273
+
274
+ pdcutil.c:
275
+ ----------
276
+
277
+ ### void PDC_beep(void);
278
+
279
+ Emits a short audible beep. If this is not possible on your platform,
280
+ you must set SP->audible to FALSE during initialization (i.e., from
281
+ PDC_scr_open() -- not here); otherwise, set it to TRUE. This function is
282
+ called from beep().
283
+
284
+ ### void PDC_napms(int ms);
285
+
286
+ This is the core delay routine, called by napms(). It pauses for about
287
+ (the X/Open spec says "at least") ms milliseconds, then returns. High
288
+ degrees of accuracy and precision are not expected (though desirable, if
289
+ you can achieve them). More important is that this function gives back
290
+ the process' time slice to the OS, so that PDCurses idles at low CPU
291
+ usage.
292
+
293
+ ### const char *PDC_sysname(void);
294
+
295
+ Returns a short string describing the platform, such as "DOS" or "X11".
296
+ This is used by longname(). It must be no more than 100 characters; it
297
+ should be much, much shorter (existing platforms use no more than 5).
298
+
299
+
300
+ More functions
301
+ ==============
302
+
303
+ The following functions are implemented in the platform directories, but
304
+ are accessed directly by apps. Refer to the user documentation for their
305
+ descriptions:
306
+
307
+
308
+ pdcclip.c:
309
+ ----------
310
+
311
+ ### int PDC_clearclipboard(void);
312
+ ### int PDC_freeclipboard(char *contents);
313
+ ### int PDC_getclipboard(char **contents, long *length);
314
+ ### int PDC_setclipboard(const char *contents, long length);
315
+
316
+
317
+ pdckbd.c:
318
+ ---------
319
+
320
+ ### unsigned long PDC_get_input_fd(void);
321
+
322
+
323
+ pdcsetsc.c:
324
+ -----------
325
+
326
+ ### int PDC_set_blink(bool blinkon);
327
+ ### void PDC_set_title(const char *title);
@@ -0,0 +1,77 @@
1
+ Welcome to PDCurses!
2
+ ====================
3
+
4
+ Public Domain Curses, aka PDCurses, is an implementation of X/Open
5
+ curses for multiple platforms. Relative to the 'official' PDCurses
6
+ project, this has a variety of improvements, adding a Windows GUI
7
+ and a VT-like console "flavor" of Curses and expanding the
8
+ capabilities of the other flavors (SDL1, SDL2, X11, Win32 console,
9
+ OS/2, and DOS). Some details and screen shots at
10
+
11
+ https://www.projectpluto.com/win32a.htm
12
+
13
+ Much of this was done during a long period in which 'official'
14
+ PDCurses was inactive. It is hoped that the changes in this fork
15
+ can be merged into the 'official' PDCurses, and a pull request has
16
+ been made. But the split is looking increasingly permanent.
17
+
18
+ Legal Stuff
19
+ -----------
20
+
21
+ The core package is in the public domain, but small portions of PDCurses
22
+ are subject to copyright under various licenses. Each directory
23
+ contains a README file, with a section titled "Distribution Status"
24
+ which describes the status of the files in that directory.
25
+
26
+ If you use PDCurses in an application, an acknowledgement would be
27
+ appreciated, but is not mandatory. If you make corrections or
28
+ enhancements to PDCurses, please forward them to the current maintainer
29
+ for the benefit of other users.
30
+
31
+ This software is provided AS IS with NO WARRANTY whatsoever.
32
+
33
+
34
+ Ports
35
+ -----
36
+
37
+ PDCurses has been ported to DOS, OS/2, Win32, X11 and SDL1 and SDL2,
38
+ and this version adds a Windows graphical and VT-like console
39
+ flavor. A directory containing the port-specific source files exists
40
+ for each of these platforms.
41
+
42
+ Build instructions are in the README file for each platform:
43
+
44
+ - [DOS](dos/README.md) for use on DOS
45
+ - [OS/2](os2/README.md) for use on OS/2
46
+ - [SDL 1.x](sdl1/README.md) for use as separate SDL version 1 window
47
+ - [SDL 2.x](sdl2/README.md) for use as separate SDL version 2 window
48
+ - [wincon](wincon/README.md) (formerly win32) for use on Windows Console
49
+ - [WinGUI](wingui/README.md) for use on Windows Graphics Mode
50
+ - [X11](x11/README.md) (also called XCurses) for use as separate X11 window
51
+ - [VT](vt/README.md) for use on terminal
52
+
53
+ Distribution Status
54
+ -------------------
55
+
56
+ All files in this directory except configure, config.guess and
57
+ config.sub are released to the Public Domain. config.guess and
58
+ config.sub are under the GPL; configure is under a free license
59
+ described within it.
60
+
61
+ Build Status
62
+ -------------------
63
+
64
+ PDCurses is automatically build in multiple environments:
65
+
66
+ [![Build status Travis-CI](https://api.travis-ci.com/Bill-Gray/PDCurses.svg?branch=master)](https://travis-ci.com/Bill-Gray/PDCurses)
67
+ , also providing artifacts: [![Build status Appveyor](https://ci.appveyor.com/api/projects/status/github/Bill-Gray/PDCurses?branch=master&svg=true)](https://ci.appveyor.com/project/Bill-Gray/PDCurses)
68
+
69
+
70
+ Maintainer
71
+ ----------
72
+
73
+ William McBrine <wmcbrine@gmail.com> ("official" PDCurses)
74
+
75
+ Bill Gray
76
+ p&#x202e;&ocirc;&#xe7;.&ouml;tulp&#x165;c&eacute;j&ocirc;&#x159;p&#x40;ot&uacute;l&#x202c;m
77
+ (this fork)
@@ -0,0 +1,265 @@
1
+ /* Many of the following #defines are completely unused for the
2
+ nonce. For each character, its code point in code page 437,
3
+ Unicode, and page 8859-1 are given. The first is used for
4
+ non-wide builds in Win32 console, DOS, SDL, and OS/2.
5
+ Unicode is used for all wide builds, and for the non-wide
6
+ build of WinGUI. Code page 8859-1 is used for non-wide X11.
7
+
8
+ All of these characters exist in CP437 and Unicode. Some
9
+ don't exist in 8859-1, in which case the last column is 'TBD'.
10
+ Only 32 are used in ncurses. So caution is advised. */
11
+
12
+ #ifdef USE_ISO8859_CHARSET
13
+ #define CHOOSE( A, B, C) (C)
14
+ #define TBD '!'
15
+ #else
16
+ #define CHOOSE( A, B, C) (USE_UNICODE_ACS_CHARS ? B : A)
17
+ #endif
18
+
19
+ /* Codes found from https://en.wikipedia.org/wiki/Code_page_437 */
20
+
21
+ #define SMILE CHOOSE( 0x01, 0x263a, 'O')
22
+ #define REV_SMILE CHOOSE( 0x02, 0x263b, 'O')
23
+ #define HEART CHOOSE( 0x03, 0x2665, 'H')
24
+ #define DIAMOND CHOOSE( 0x04, 0x2666, 0x01)
25
+ #define CLUB CHOOSE( 0x05, 0x2663, 'C')
26
+ #define SPADE CHOOSE( 0x06, 0x2660, 'S')
27
+ #define MEDIUM_BULLET CHOOSE( 0x07, 0x2022, 0xb7)
28
+ #define REV_BULLET CHOOSE( 0x08, 0x2508, 0xb7)
29
+ #define WHITE_BULLET CHOOSE( 0x09, 0x25cb, 7)
30
+ #define REV_WHITE_BULLET CHOOSE( 0x0a, 0x25D9, 7)
31
+ #define MALE_SYM CHOOSE( 0x0b, 0x2642, 'm')
32
+ #define FEMALE_SYM CHOOSE( 0x0c, 0x2640, 'f')
33
+ #define QTR_NOTE CHOOSE( 0x0d, 0x266a, 0xbc)
34
+ #define EIGHTH_NOTE CHOOSE( 0x0e, 0x266b, 0xbd)
35
+ #define SPLAT CHOOSE( 0x0f, 0xa4 , 0xa4)
36
+ #define RIGHT_TRIANGLE CHOOSE( 0x10, 0x25b6, '>')
37
+ #define LEFT_TRIANGLE CHOOSE( 0x11, 0x25c0, '<')
38
+ #define UP_DOWN_ARROW CHOOSE( 0x12, 0x2195, 0x19)
39
+ #define DBL_BANG CHOOSE( 0x13, 0x203c, '!')
40
+ #define PILCROW CHOOSE( 0x14, 0xb6 , 0xb6)
41
+ #define SECTION_SIGN CHOOSE( 0x15, 0xa7 , 0xa7)
42
+ #define LOW_QTR_BLOCK CHOOSE( 0x16, 0x25b2, '_')
43
+ #define UP_DOWN_ARROW_UNDERSCORED CHOOSE( 0x17, 0x21ab, 0x19)
44
+ #define UP_ARROW CHOOSE( 0x18, 0x2191, '^')
45
+ #define DOWN_ARROW CHOOSE( 0x19, 0x2193, 'v')
46
+ #define RIGHT_ARROW CHOOSE( 0x1a, 0x2192, '>')
47
+ #define LEFT_ARROW CHOOSE( 0x1b, 0x2190, '<')
48
+ #define RIGHT_ANGLE CHOOSE( 0x1c, 0x221f, 0xe)
49
+ #define LEFT_RIGHT_ARROW CHOOSE( 0x1d, 0x2194, '-')
50
+ #define UP_TRIANGLE CHOOSE( 0x1e, 0x25b2, '^')
51
+ #define DOWN_TRIANGLE CHOOSE( 0x1f, 0x25bc, 'v')
52
+
53
+ #define UPPERCASE_C_CEDILLA CHOOSE( 0x80, 0xc7 , 0xc7)
54
+ #define LOWERCASE_U_UMLAUT CHOOSE( 0x81, 0xfc , 0xfc)
55
+ #define LOWERCASE_E_ACUTE CHOOSE( 0x82, 0xe9 , 0xe9)
56
+ #define LOWERCASE_A_CIRCUMFLEX CHOOSE( 0x83, 0xe2 , 0xe2)
57
+ #define LOWERCASE_A_UMLAUT CHOOSE( 0x84, 0xe4 , 0xe4)
58
+ #define LOWERCASE_A_GRAVE CHOOSE( 0x85, 0xe0 , 0xea)
59
+ #define LOWERCASE_A_RING CHOOSE( 0x86, 0xe5 , 0xe5)
60
+ #define LOWERCASE_C_CEDILLA CHOOSE( 0x87, 0xe7 , 0xe7)
61
+ #define LOWERCASE_E_CIRCUMFLEX CHOOSE( 0x88, 0xea , 0xea)
62
+ #define LOWERCASE_E_UMLAUT CHOOSE( 0x89, 0xeb , 0xeb)
63
+ #define LOWERCASE_E_GRAVE CHOOSE( 0x8a, 0xe8 , 0xe8)
64
+ #define LOWERCASE_I_UMLAUT CHOOSE( 0x8b, 0xef , 0xef)
65
+ #define LOWERCASE_I_CIRCUMFLEX CHOOSE( 0x8c, 0xee , 0xee)
66
+ #define LOWERCASE_I_GRAVE CHOOSE( 0x8d, 0xec , 0xce)
67
+ #define UPPERCASE_A_UMLAUT CHOOSE( 0x8e, 0xc4 , 0xc4)
68
+ #define UPPERCASE_A_RING CHOOSE( 0x8f, 0xc5 , 0xc5)
69
+
70
+ #define UPPERCASE_E_ACUTE CHOOSE( 0x90, 0xc9 , 0xc9)
71
+ #define LOWERCASE_AE_LIGATURE CHOOSE( 0x91, 0xe6 , 0xe6)
72
+ #define UPPERCASE_AE_LIGATURE CHOOSE( 0x92, 0xc6 , 0xc6)
73
+ #define LOWERCASE_O_CIRCUMFLEX CHOOSE( 0x93, 0xf4 , 0xf4)
74
+ #define LOWERCASE_O_UMLAUT CHOOSE( 0x94, 0xf6 , 0xf6)
75
+ #define LOWERCASE_O_GRAVE CHOOSE( 0x95, 0xf2 , 0xf2)
76
+ #define LOWERCASE_U_CIRCUMFLEX CHOOSE( 0x96, 0xfb , 0xfb)
77
+ #define LOWERCASE_U_GRAVE CHOOSE( 0x97, 0xf9 , 0xf9)
78
+ #define LOWERCASE_Y_UMLAUT CHOOSE( 0x98, 0xff , 0xff)
79
+ #define UPPERCASE_O_UMLAUT CHOOSE( 0x99, 0xd6 , 0xd6)
80
+ #define UPPERCASE_U_UMLAUT CHOOSE( 0x9a, 0xdc , 0xdc)
81
+ #define CENT_SIGN CHOOSE( 0x9b, 0xa2 , 0xa2)
82
+ #define STERLING_SIGN CHOOSE( 0x9c, 0xa3 , 30)
83
+ #define YEN_SIGN CHOOSE( 0x9d, 0xa5 , 0xa5)
84
+ #define PESETA_SIGN CHOOSE( 0x9e, 0x20a7, TBD)
85
+ #define F_WITH_HOOK CHOOSE( 0x9f, 0x0192, TBD)
86
+
87
+ #define LOWERCASE_A_ACUTE CHOOSE( 0xa0, 0xe1 , 0xe1)
88
+ #define LOWERCASE_I_ACUTE CHOOSE( 0xa1, 0xed , 0xed)
89
+ #define LOWERCASE_O_ACUTE CHOOSE( 0xa2, 0xf3 , 0xf3)
90
+ #define LOWERCASE_U_ACUTE CHOOSE( 0xa3, 0xfa , 0xfa)
91
+ #define LOWERCASE_N_TILDE CHOOSE( 0xa4, 0xf1 , 0xf1)
92
+ #define UPPERCASE_N_TILDE CHOOSE( 0xa5, 0xd1 , 0xd1)
93
+ #define A_ORDINAL CHOOSE( 0xa6, 0xaa , 0xaa)
94
+ #define O_ORDINAL CHOOSE( 0xa7, 0xba , 0xba)
95
+ #define INVERTED_QUESTION_MARK CHOOSE( 0xa8, 0xbf , 0xbf)
96
+ #define REVERSED_NOT_SIGN CHOOSE( 0xa9, 0x2310, TBD)
97
+ #define NOT_SIGN CHOOSE( 0xaa, 0xac , 0xac)
98
+ #define VULGAR_HALF CHOOSE( 0xab, 0xbd , 0xbd)
99
+ #define VULGAR_QUARTER CHOOSE( 0xac, 0xbc , 0xbc)
100
+ #define INVERTED_EXCLAMATION_MARK CHOOSE( 0xad, 0xa1 , 0xa1)
101
+ #define LEFT_ANGLE_QUOTE_MARK CHOOSE( 0xae, 0xab , 0xab)
102
+ #define RIGHT_ANGLE_QUOTE_MARK CHOOSE( 0xaf, 0xbb , 0xbb)
103
+
104
+ #define LIGHT_SHADE CHOOSE( 0xb0, 0x2591, '#' )
105
+ #define MEDIUM_SHADE CHOOSE( 0xb1, 0x2592, 2)
106
+ #define DARK_SHADE CHOOSE( 0xb2, 0x2593, TBD)
107
+ #define BOX_VLINE CHOOSE( 0xb3, 0x2502, 25)
108
+ #define BOX_RTEE CHOOSE( 0xb4, 0x2524, 22)
109
+ #define BOX_SD_RTEE CHOOSE( 0xb5, 0x2561, 22)
110
+ #define BOX_DS_RTEE CHOOSE( 0xb6, 0x2562, 22)
111
+ #define BOX_DS_URCORNER CHOOSE( 0xb7, 0x2556, 12)
112
+ #define BOX_SD_URCORNER CHOOSE( 0xb8, 0x2555, 12)
113
+ #define BOX_D_RTEE CHOOSE( 0xb9, 0x2563, 22)
114
+ #define BOX_D_VLINE CHOOSE( 0xba, 0x2551, 25)
115
+ #define BOX_D_URCORNER CHOOSE( 0xbb, 0x2557, 12)
116
+ #define BOX_D_LRCORNER CHOOSE( 0xbc, 0x255D, 11)
117
+ #define BOX_DS_LRCORNER CHOOSE( 0xbd, 0x255c, 11)
118
+ #define BOX_SD_LRCORNER CHOOSE( 0xbe, 0x255b, 11)
119
+ #define BOX_URCORNER CHOOSE( 0xbf, 0x2510, 12)
120
+
121
+ #define BOX_LLCORNER CHOOSE( 0xc0, 0x2514, 14)
122
+ #define BOX_BTEE CHOOSE( 0xc1, 0x2534, 23)
123
+ #define BOX_TTEE CHOOSE( 0xc2, 0x252c, 24)
124
+ #define BOX_LTEE CHOOSE( 0xc3, 0x251c, 21)
125
+ #define BOX_HLINE CHOOSE( 0xc4, 0x2500, 18)
126
+ #define BOX_PLUS CHOOSE( 0xc5, 0x253c, 15)
127
+ #define BOX_SD_LTEE CHOOSE( 0xc6, 0x255e, 21)
128
+ #define BOX_DS_LTEE CHOOSE( 0xc7, 0x255f, 21)
129
+ #define BOX_D_LLCORNER CHOOSE( 0xc8, 0x255A, 14)
130
+ #define BOX_D_ULCORNER CHOOSE( 0xc9, 0x2554, 13)
131
+ #define BOX_D_BTEE CHOOSE( 0xca, 0x2569, 23)
132
+ #define BOX_D_TTEE CHOOSE( 0xcb, 0x2566, 24)
133
+ #define BOX_D_LTEE CHOOSE( 0xcc, 0x2560, 21)
134
+ #define BOX_D_HLINE CHOOSE( 0xcd, 0x2550, 18)
135
+ #define BOX_D_PLUS CHOOSE( 0xce, 0x256C, 15)
136
+ #define BOX_SD_BTEE CHOOSE( 0xcf, 0x2567, 23)
137
+
138
+ #define BOX_DS_BTEE CHOOSE( 0xd0, 0x2568, 23)
139
+ #define BOX_SD_TTEE CHOOSE( 0xd1, 0x2564, 24)
140
+ #define BOX_DS_TTEE CHOOSE( 0xd2, 0x2565, 24)
141
+ #define BOX_DS_LLCORNER CHOOSE( 0xd3, 0x2559, 14)
142
+ #define BOX_SD_LLCORNER CHOOSE( 0xd4, 0x2558, 14)
143
+ #define BOX_SD_ULCORNER CHOOSE( 0xd5, 0x2552, 13)
144
+ #define BOX_DS_ULCORNER CHOOSE( 0xd6, 0x2553, 13)
145
+ #define BOX_DS_PLUS CHOOSE( 0xd7, 0x256b, 15)
146
+ #define BOX_SD_PLUS CHOOSE( 0xd8, 0x256a, 15)
147
+ #define BOX_LRCORNER CHOOSE( 0xd9, 0x2518, 11)
148
+ #define BOX_ULCORNER CHOOSE( 0xda, 0x250c, 13)
149
+ #define FULL_BLOCK CHOOSE( 0xdb, 0x2588, 0)
150
+ #define LOWER_HALF_BLOCK CHOOSE( 0xdc, 0x2584, TBD)
151
+ #define LEFT_HALF_BLOCK CHOOSE( 0xdd, 0x258c, TBD)
152
+ #define RIGHT_HALF_BLOCK CHOOSE( 0xde, 0x2590, TBD)
153
+ #define UPPER_HALF_BLOCK CHOOSE( 0xdf, 0x2580, TBD)
154
+
155
+ #define ALPHA CHOOSE( 0xe0, 0x03b1, TBD)
156
+ #define BETA CHOOSE( 0xe1, 0x00df, TBD)
157
+ #define GAMMA CHOOSE( 0xe2, 0x0393, TBD)
158
+ #define PI CHOOSE( 0xe3, 0x03c0, 28)
159
+ #define UPPERCASE_SIGMA CHOOSE( 0xe4, 0x03a3, TBD)
160
+ #define LOWERCASE_SIGMA CHOOSE( 0xe5, 0x03c3, TBD)
161
+ #define MU CHOOSE( 0xe6, 0x00b5, 0xb5)
162
+ #define TAU CHOOSE( 0xe7, 0x03c4, TBD)
163
+ #define UPPERCASE_PHI CHOOSE( 0xe8, 0x03a6, TBD)
164
+ #define THETA CHOOSE( 0xe9, 0x0398, TBD)
165
+ #define OMEGA CHOOSE( 0xea, 0x03a9, TBD)
166
+ #define DELTA CHOOSE( 0xeb, 0x03b4, TBD)
167
+ #define INFINITY_SIGN CHOOSE( 0xec, 0x221e, TBD)
168
+ #define LOWERCASE_PHI CHOOSE( 0xed, 0x03c6, TBD)
169
+ #define EPSILON CHOOSE( 0xee, 0x03b5, TBD)
170
+ #define INTERSECTION CHOOSE( 0xef, 0x2229, TBD)
171
+
172
+ #define TRIPLE_BAR CHOOSE( 0xf0, 0x2261, TBD)
173
+ #define PLUS_OR_MINUS CHOOSE( 0xf1, 0x00b1, 8)
174
+ #define GREATER_THAN_OR_EQUAL_TO CHOOSE( 0xf2, 0x2265, 27)
175
+ #define LESSER_THAN_OR_EQUAL_TO CHOOSE( 0xf3, 0x2264, 26)
176
+ #define UPPER_HALF_INTEGRAL_SIGN CHOOSE( 0xf4, 0x2320, TBD)
177
+ #define LOWER_HALF_INTEGRAL_SIGN CHOOSE( 0xf5, 0x2321, TBD)
178
+ #define DIVISION_SIGN CHOOSE( 0xf6, 0x00f7, 0xf7)
179
+ #define APPROXIMATELY_EQUALS_SIGN CHOOSE( 0xf7, 0x2248, TBD)
180
+ #define DEGREE_SIGN CHOOSE( 0xf8, 0x00b0, 0xb0)
181
+ #define LARGE_BULLET CHOOSE( 0xf9, 0x2219, 7)
182
+ #define SMALL_BULLET CHOOSE( 0xfa, 0x00b7, 0xb7)
183
+ #define SQUARE_ROOT CHOOSE( 0xfb, 0x221a, TBD)
184
+ #define SUPERSCRIPT_N CHOOSE( 0xfc, 0x207f, TBD)
185
+ #define SUPERSCRIPT_2 CHOOSE( 0xfd, 0x00b2, 0xb2)
186
+ #define CENTERED_SQUARE CHOOSE( 0xfe, 0x25a0, TBD)
187
+ #define NON_BREAKING_SPACE CHOOSE( 0xff, 0x00a0, TBD)
188
+
189
+
190
+
191
+ /* It says at http://unicode.org/charts/PDF/U2300.pdf */
192
+ /* that '...the scan line numbers here refer to old, */
193
+ /* low-resolution technology for terminals, with only */
194
+ /* nine scan lines per fixed-size character glyph. */
195
+ /* Even-numbered scan lines are unified with box */
196
+ /* drawing graphics." */
197
+ /* The utility of these is questionable; they'd */
198
+ /* work Just Fine in wingdi (_if_ the appropriate */
199
+ /* glyphs are available), but not elsewhere. */
200
+ #define HORIZ_SCAN_LINE_1 CHOOSE( 0x2d, 0x23ba, 16)
201
+ #define HORIZ_SCAN_LINE_3 CHOOSE( 0x2d, 0x23bb, 17)
202
+ #define HORIZ_SCAN_LINE_7 CHOOSE( 0x2d, 0x23bc, 19)
203
+ #define HORIZ_SCAN_LINE_9 CHOOSE( '_', 0x23bd, 20)
204
+
205
+ /* Code page 437 lacks a 'for real' not-equals, so for that, */
206
+ /* we use the double-horizontal single-vertical box drawing : */
207
+ #define NOT_EQUALS_SIGN CHOOSE( 0xd8, 0x2260, 29)
208
+
209
+ # define A(x) ((chtype)x | A_ALTCHARSET)
210
+
211
+ chtype acs_map[128] =
212
+ {
213
+ A(0), A(1), A(2), A(3), A(4), A(5), A(6), A(7), A(8),
214
+ A(9), A(10),
215
+ CLUB, HEART, SPADE, SMILE, REV_SMILE, /* 11 12 13 14 15 */
216
+ MEDIUM_BULLET, WHITE_BULLET, PILCROW, SECTION_SIGN, /* 16 17 18 19 */
217
+ A_ORDINAL, O_ORDINAL, LOWERCASE_PHI, /* 20 21 22 */
218
+ INVERTED_EXCLAMATION_MARK, INVERTED_QUESTION_MARK, /* 23 24 */
219
+ REVERSED_NOT_SIGN, NOT_SIGN, /* 25 26 */
220
+ UPPER_HALF_INTEGRAL_SIGN, LOWER_HALF_INTEGRAL_SIGN, /* 27 28 */
221
+ SUPERSCRIPT_N, CENTERED_SQUARE, F_WITH_HOOK, /* 29 30 31 */
222
+
223
+ RIGHT_ARROW, LEFT_ARROW, UP_ARROW, DOWN_ARROW, /* 32 !"# */
224
+
225
+ PI, NOT_EQUALS_SIGN, VULGAR_HALF, VULGAR_QUARTER, /* $%&' */
226
+ '(',
227
+ LEFT_ANGLE_QUOTE_MARK, RIGHT_ANGLE_QUOTE_MARK, /* )* */
228
+ DARK_SHADE, SUPERSCRIPT_2, INFINITY_SIGN, /* +,- */
229
+ ALPHA, BETA, GAMMA, UPPERCASE_SIGMA, LOWERCASE_SIGMA, /* ./012 */
230
+ '3',
231
+ MU, TAU, UPPERCASE_PHI, THETA, OMEGA, DELTA, EPSILON, /* 456789: */
232
+
233
+ BOX_SD_LRCORNER, BOX_SD_URCORNER, BOX_SD_ULCORNER, /* ;<= */
234
+ BOX_SD_LLCORNER, BOX_SD_PLUS, /* >? */
235
+ BOX_SD_LTEE, BOX_SD_RTEE, BOX_SD_BTEE, BOX_SD_TTEE, /* @ABC */
236
+
237
+ BOX_D_LRCORNER, BOX_D_URCORNER, BOX_D_ULCORNER, /* DEF */
238
+ BOX_D_LLCORNER, BOX_D_PLUS, /* GH */
239
+ BOX_D_LTEE, BOX_D_RTEE, BOX_D_BTEE, BOX_D_TTEE, /* IJKL */
240
+
241
+ BOX_DS_LRCORNER, BOX_DS_URCORNER, BOX_DS_ULCORNER, /* MNO */
242
+ BOX_DS_LLCORNER, BOX_DS_PLUS, /* PQ */
243
+ BOX_DS_LTEE, BOX_DS_RTEE, BOX_DS_BTEE, BOX_DS_TTEE, /* RSTU */
244
+
245
+ BOX_LRCORNER, BOX_URCORNER, BOX_ULCORNER, /* VWX */
246
+ BOX_LLCORNER, BOX_PLUS, /* YZ */
247
+ BOX_LTEE, BOX_RTEE, BOX_BTEE, BOX_TTEE, /* [\]^ */
248
+
249
+ BOX_HLINE, BOX_VLINE, BOX_D_HLINE, BOX_D_VLINE, /* _`ab */
250
+
251
+ DIVISION_SIGN, APPROXIMATELY_EQUALS_SIGN, /* cd */
252
+ INTERSECTION, TRIPLE_BAR, /* ef */
253
+ SMALL_BULLET, LARGE_BULLET, SQUARE_ROOT, /* ghi */
254
+ DIAMOND, MEDIUM_SHADE, /* jk */
255
+ HORIZ_SCAN_LINE_1, HORIZ_SCAN_LINE_3, /* lm */
256
+ HORIZ_SCAN_LINE_7, HORIZ_SCAN_LINE_9, /* no */
257
+ UPPER_HALF_BLOCK, LOWER_HALF_BLOCK, /* pq */
258
+ LEFT_HALF_BLOCK, RIGHT_HALF_BLOCK, FULL_BLOCK, /* rst */
259
+ LESSER_THAN_OR_EQUAL_TO, GREATER_THAN_OR_EQUAL_TO, /* uv */
260
+ DEGREE_SIGN, PLUS_OR_MINUS, LIGHT_SHADE, SPLAT, /* wxyz */
261
+ CENT_SIGN, YEN_SIGN, PESETA_SIGN, STERLING_SIGN, /* {|}~ */
262
+ A(127)
263
+ };
264
+
265
+ # undef A