curses 1.6.0 → 1.7.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 (935) hide show
  1. checksums.yaml +4 -4
  2. data/.devcontainer/Dockerfile +132 -0
  3. data/.devcontainer/devcontainer.json +58 -0
  4. data/.devcontainer/init-firewall.sh +139 -0
  5. data/.github/workflows/gh-pages.yml +4 -4
  6. data/.github/workflows/macos.yml +5 -2
  7. data/.github/workflows/push_gem.yml +7 -2
  8. data/.github/workflows/ubuntu.yml +5 -2
  9. data/.github/workflows/windows.yml +5 -2
  10. data/.gitmodules +3 -3
  11. data/README.md +2 -2
  12. data/curses.gemspec +1 -1
  13. data/ext/curses/extconf.rb +5 -2
  14. data/lib/curses.rb +1 -1
  15. data/vendor/PDCursesMod/.github/workflows/github_actions_build.yml +42 -0
  16. data/vendor/PDCursesMod/.gitignore +47 -0
  17. data/vendor/PDCursesMod/.travis.yml +308 -0
  18. data/vendor/PDCursesMod/CMakeLists.txt +77 -0
  19. data/vendor/PDCursesMod/README.md +60 -0
  20. data/vendor/PDCursesMod/appveyor.yml +300 -0
  21. data/vendor/PDCursesMod/cmake/README.md +71 -0
  22. data/vendor/PDCursesMod/cmake/build_dependencies.cmake +186 -0
  23. data/vendor/PDCursesMod/cmake/build_options.cmake +29 -0
  24. data/vendor/PDCursesMod/cmake/dll_version.cmake +24 -0
  25. data/vendor/PDCursesMod/cmake/gen_config_header.cmake +40 -0
  26. data/vendor/PDCursesMod/cmake/get_version.cmake +17 -0
  27. data/vendor/PDCursesMod/cmake/project_common.cmake +131 -0
  28. data/vendor/PDCursesMod/cmake/sdl2_ttf/CMakeLists.txt +95 -0
  29. data/vendor/PDCursesMod/cmake/version.in.cmake +61 -0
  30. data/vendor/PDCursesMod/cmake/watcom_open_dos16_toolchain.cmake +90 -0
  31. data/vendor/PDCursesMod/cmake/watcom_open_dos32_toolchain.cmake +89 -0
  32. data/vendor/PDCursesMod/cmake/watcom_open_os2v2_toolchain.cmake +88 -0
  33. data/vendor/PDCursesMod/cmake/watcom_open_win32_toolchain.cmake +12 -0
  34. data/vendor/PDCursesMod/common/acs_defs.h +288 -0
  35. data/vendor/PDCursesMod/common/approx.c +163 -0
  36. data/vendor/PDCursesMod/common/beep.c +70 -0
  37. data/vendor/PDCursesMod/common/blink.c +90 -0
  38. data/vendor/PDCursesMod/common/config_curses.c +134 -0
  39. data/vendor/PDCursesMod/common/dos_key.h +59 -0
  40. data/vendor/PDCursesMod/common/dosutil.c +136 -0
  41. data/vendor/PDCursesMod/common/font437.h +386 -0
  42. data/vendor/PDCursesMod/common/icon32.xpm +42 -0
  43. data/vendor/PDCursesMod/common/icon64.xpm +74 -0
  44. data/vendor/PDCursesMod/common/iconbmp.h +24 -0
  45. data/vendor/PDCursesMod/common/libobjs.mif +32 -0
  46. data/vendor/PDCursesMod/common/mouse.c +293 -0
  47. data/vendor/PDCursesMod/common/pdcclip.c +135 -0
  48. data/vendor/PDCursesMod/common/pdccolor.c +223 -0
  49. data/vendor/PDCursesMod/common/pdccolor.h +17 -0
  50. data/vendor/PDCursesMod/common/pdccolor.txt +81 -0
  51. data/vendor/PDCursesMod/common/pdcurses.rc +35 -0
  52. data/vendor/PDCursesMod/common/psf.c +250 -0
  53. data/vendor/PDCursesMod/common/psf.h +13 -0
  54. data/vendor/PDCursesMod/common/psf_wide.h +584 -0
  55. data/vendor/PDCursesMod/common/watcom.mif +224 -0
  56. data/vendor/PDCursesMod/common/winclip.c +151 -0
  57. data/vendor/PDCursesMod/common/xlates.h +142 -0
  58. data/vendor/PDCursesMod/curses.h +1972 -0
  59. data/vendor/PDCursesMod/curspriv.h +295 -0
  60. data/vendor/PDCursesMod/demos/UTF-8-demo.txt +225 -0
  61. data/vendor/PDCursesMod/demos/calendar.c +278 -0
  62. data/vendor/PDCursesMod/demos/curses.priv.h +37 -0
  63. data/vendor/PDCursesMod/demos/dates.txt +2576 -0
  64. data/vendor/PDCursesMod/demos/firework.c +149 -0
  65. data/vendor/PDCursesMod/demos/init_col.c +152 -0
  66. data/vendor/PDCursesMod/demos/mbrot.c +366 -0
  67. data/vendor/PDCursesMod/demos/nctests.mif +299 -0
  68. data/vendor/PDCursesMod/demos/ncurses_cfg.h +100 -0
  69. data/vendor/PDCursesMod/demos/newtest.c +608 -0
  70. data/vendor/PDCursesMod/demos/ozdemo.c +444 -0
  71. data/vendor/PDCursesMod/demos/picsview.c +516 -0
  72. data/vendor/PDCursesMod/demos/ptest.c +315 -0
  73. data/vendor/PDCursesMod/demos/rain.c +161 -0
  74. data/vendor/PDCursesMod/demos/snprintf.c +30 -0
  75. data/vendor/PDCursesMod/demos/speed.c +124 -0
  76. data/vendor/PDCursesMod/demos/test_pan.c +372 -0
  77. data/vendor/PDCursesMod/demos/testcurs.c +1978 -0
  78. data/vendor/PDCursesMod/demos/tui.c +816 -0
  79. data/vendor/PDCursesMod/demos/tui.h +65 -0
  80. data/vendor/PDCursesMod/demos/tuidemo.c +231 -0
  81. data/vendor/PDCursesMod/demos/version.c +66 -0
  82. data/vendor/PDCursesMod/demos/widetest.c +130 -0
  83. data/vendor/PDCursesMod/demos/worm.c +450 -0
  84. data/vendor/PDCursesMod/demos/xmas.c +955 -0
  85. data/vendor/PDCursesMod/docs/HISTORY.md +3850 -0
  86. data/vendor/PDCursesMod/docs/IMPLEMNT.md +321 -0
  87. data/vendor/PDCursesMod/docs/MANUAL.md +3304 -0
  88. data/vendor/PDCursesMod/docs/README.md +51 -0
  89. data/vendor/PDCursesMod/docs/USERS.md +451 -0
  90. data/vendor/PDCursesMod/docs/manext.awk +15 -0
  91. data/vendor/PDCursesMod/docs/mkman.sh +7 -0
  92. data/vendor/PDCursesMod/dos/CMakeLists.txt +54 -0
  93. data/vendor/PDCursesMod/dos/Makefile +85 -0
  94. data/vendor/PDCursesMod/dos/Makefile.bcc +81 -0
  95. data/vendor/PDCursesMod/dos/Makefile.dmc +315 -0
  96. data/vendor/PDCursesMod/dos/Makefile.wcc +44 -0
  97. data/vendor/PDCursesMod/dos/README.md +49 -0
  98. data/vendor/PDCursesMod/dos/pdcclip.c +1 -0
  99. data/vendor/PDCursesMod/dos/pdcdisp.c +164 -0
  100. data/vendor/PDCursesMod/dos/pdcdos.h +173 -0
  101. data/vendor/PDCursesMod/dos/pdcgetsc.c +81 -0
  102. data/vendor/PDCursesMod/dos/pdckbd.c +428 -0
  103. data/vendor/PDCursesMod/dos/pdcscrn.c +707 -0
  104. data/vendor/PDCursesMod/dos/pdcsetsc.c +120 -0
  105. data/vendor/PDCursesMod/dos/pdcutil.c +11 -0
  106. data/vendor/PDCursesMod/dosvga/CMakeLists.txt +54 -0
  107. data/vendor/PDCursesMod/dosvga/Makefile +109 -0
  108. data/vendor/PDCursesMod/dosvga/Makefile.bcc +82 -0
  109. data/vendor/PDCursesMod/dosvga/Makefile.dmc +318 -0
  110. data/vendor/PDCursesMod/dosvga/Makefile.wcc +40 -0
  111. data/vendor/PDCursesMod/dosvga/README.md +58 -0
  112. data/vendor/PDCursesMod/dosvga/cp437.h +184 -0
  113. data/vendor/PDCursesMod/dosvga/font.h +454 -0
  114. data/vendor/PDCursesMod/dosvga/hexize.c +45 -0
  115. data/vendor/PDCursesMod/dosvga/mk_font.c +35 -0
  116. data/vendor/PDCursesMod/dosvga/pdcclip.c +1 -0
  117. data/vendor/PDCursesMod/dosvga/pdcdisp.c +684 -0
  118. data/vendor/PDCursesMod/dosvga/pdcdos.h +201 -0
  119. data/vendor/PDCursesMod/dosvga/pdcgetsc.c +47 -0
  120. data/vendor/PDCursesMod/dosvga/pdckbd.c +484 -0
  121. data/vendor/PDCursesMod/dosvga/pdcscrn.c +1693 -0
  122. data/vendor/PDCursesMod/dosvga/pdcsetsc.c +79 -0
  123. data/vendor/PDCursesMod/dosvga/pdcutil.c +13 -0
  124. data/vendor/PDCursesMod/dosvga/pdcvesa.h +88 -0
  125. data/vendor/PDCursesMod/fb/Makefile +150 -0
  126. data/vendor/PDCursesMod/fb/README.md +52 -0
  127. data/vendor/PDCursesMod/fb/cursor.c +111 -0
  128. data/vendor/PDCursesMod/fb/drm.c +264 -0
  129. data/vendor/PDCursesMod/fb/pdcclip.c +1 -0
  130. data/vendor/PDCursesMod/fb/pdcdisp.c +521 -0
  131. data/vendor/PDCursesMod/fb/pdcfb.h +11 -0
  132. data/vendor/PDCursesMod/fb/pdcgetsc.c +1 -0
  133. data/vendor/PDCursesMod/fb/pdckbd.c +114 -0
  134. data/vendor/PDCursesMod/fb/pdcmouse.c +185 -0
  135. data/vendor/PDCursesMod/fb/pdcscrn.c +539 -0
  136. data/vendor/PDCursesMod/fb/pdcsetsc.c +3 -0
  137. data/vendor/PDCursesMod/fb/pdcutil.c +5 -0
  138. data/vendor/PDCursesMod/gl/CMakeLists.txt +66 -0
  139. data/vendor/PDCursesMod/gl/Makefile +188 -0
  140. data/vendor/PDCursesMod/gl/Makefile.vc +129 -0
  141. data/vendor/PDCursesMod/gl/README.md +134 -0
  142. data/vendor/PDCursesMod/gl/glfuncs.h +159 -0
  143. data/vendor/PDCursesMod/gl/pdcclip.c +93 -0
  144. data/vendor/PDCursesMod/gl/pdcdisp.c +867 -0
  145. data/vendor/PDCursesMod/gl/pdcgetsc.c +30 -0
  146. data/vendor/PDCursesMod/gl/pdcgl.h +51 -0
  147. data/vendor/PDCursesMod/gl/pdckbd.c +548 -0
  148. data/vendor/PDCursesMod/gl/pdcscrn.c +700 -0
  149. data/vendor/PDCursesMod/gl/pdcsetsc.c +99 -0
  150. data/vendor/PDCursesMod/gl/pdcutil.c +35 -0
  151. data/vendor/PDCursesMod/ncurses/CMakeLists.txt +76 -0
  152. data/vendor/PDCursesMod/ncurses/Makefile +38 -0
  153. data/vendor/PDCursesMod/os2/Makefile +150 -0
  154. data/vendor/PDCursesMod/os2/Makefile.bcc +85 -0
  155. data/vendor/PDCursesMod/os2/Makefile.wcc +26 -0
  156. data/vendor/PDCursesMod/os2/iccos2.lrf +49 -0
  157. data/vendor/PDCursesMod/os2/iccos2.mak +260 -0
  158. data/vendor/PDCursesMod/os2/pdcclip.c +172 -0
  159. data/vendor/PDCursesMod/os2/pdcdisp.c +130 -0
  160. data/vendor/PDCursesMod/os2/pdcgetsc.c +52 -0
  161. data/vendor/PDCursesMod/os2/pdckbd.c +435 -0
  162. data/vendor/PDCursesMod/os2/pdcos2.h +21 -0
  163. data/vendor/PDCursesMod/os2/pdcscrn.c +231 -0
  164. data/vendor/PDCursesMod/os2/pdcsetsc.c +110 -0
  165. data/vendor/PDCursesMod/os2/pdcutil.c +51 -0
  166. data/vendor/PDCursesMod/os2gui/.gitignore +1 -0
  167. data/vendor/PDCursesMod/os2gui/CMakeLists.txt +30 -0
  168. data/vendor/PDCursesMod/os2gui/Makefile +139 -0
  169. data/vendor/PDCursesMod/os2gui/Makefile.wcc +32 -0
  170. data/vendor/PDCursesMod/os2gui/README.md +69 -0
  171. data/vendor/PDCursesMod/os2gui/pdcclip.c +165 -0
  172. data/vendor/PDCursesMod/os2gui/pdcdisp.c +2021 -0
  173. data/vendor/PDCursesMod/os2gui/pdcgetsc.c +26 -0
  174. data/vendor/PDCursesMod/os2gui/pdckbd.c +79 -0
  175. data/vendor/PDCursesMod/os2gui/pdcscrn.c +2433 -0
  176. data/vendor/PDCursesMod/os2gui/pdcsetsc.c +115 -0
  177. data/vendor/PDCursesMod/os2gui/pdcutil.c +42 -0
  178. data/vendor/PDCursesMod/os2gui/pdcwin.h +106 -0
  179. data/vendor/PDCursesMod/os2gui/table.py +112 -0
  180. data/vendor/PDCursesMod/os2gui/unitable.h +3933 -0
  181. data/vendor/PDCursesMod/panel.h +41 -0
  182. data/vendor/PDCursesMod/pdcurses/addch.c +838 -0
  183. data/vendor/PDCursesMod/pdcurses/addchstr.c +232 -0
  184. data/vendor/PDCursesMod/pdcurses/addstr.c +245 -0
  185. data/vendor/PDCursesMod/pdcurses/attr.c +430 -0
  186. data/vendor/PDCursesMod/pdcurses/beep.c +78 -0
  187. data/vendor/PDCursesMod/pdcurses/bkgd.c +233 -0
  188. data/vendor/PDCursesMod/pdcurses/border.c +413 -0
  189. data/vendor/PDCursesMod/pdcurses/clear.c +161 -0
  190. data/vendor/PDCursesMod/pdcurses/color.c +761 -0
  191. data/vendor/PDCursesMod/pdcurses/debug.c +157 -0
  192. data/vendor/PDCursesMod/pdcurses/delch.c +96 -0
  193. data/vendor/PDCursesMod/pdcurses/deleteln.c +149 -0
  194. data/vendor/PDCursesMod/pdcurses/getch.c +871 -0
  195. data/vendor/PDCursesMod/pdcurses/getstr.c +487 -0
  196. data/vendor/PDCursesMod/pdcurses/getyx.c +152 -0
  197. data/vendor/PDCursesMod/pdcurses/inch.c +133 -0
  198. data/vendor/PDCursesMod/pdcurses/inchstr.c +217 -0
  199. data/vendor/PDCursesMod/pdcurses/initscr.c +524 -0
  200. data/vendor/PDCursesMod/pdcurses/inopts.c +490 -0
  201. data/vendor/PDCursesMod/pdcurses/insch.c +273 -0
  202. data/vendor/PDCursesMod/pdcurses/insstr.c +268 -0
  203. data/vendor/PDCursesMod/pdcurses/instr.c +253 -0
  204. data/vendor/PDCursesMod/pdcurses/kernel.c +338 -0
  205. data/vendor/PDCursesMod/pdcurses/keyname.c +149 -0
  206. data/vendor/PDCursesMod/pdcurses/mouse.c +469 -0
  207. data/vendor/PDCursesMod/pdcurses/move.c +84 -0
  208. data/vendor/PDCursesMod/pdcurses/outopts.c +283 -0
  209. data/vendor/PDCursesMod/pdcurses/overlay.c +204 -0
  210. data/vendor/PDCursesMod/pdcurses/pad.c +303 -0
  211. data/vendor/PDCursesMod/pdcurses/pairs.txt +94 -0
  212. data/vendor/PDCursesMod/pdcurses/panel.c +551 -0
  213. data/vendor/PDCursesMod/pdcurses/printw.c +180 -0
  214. data/vendor/PDCursesMod/pdcurses/refresh.c +372 -0
  215. data/vendor/PDCursesMod/pdcurses/scanw.c +582 -0
  216. data/vendor/PDCursesMod/pdcurses/scr_dump.c +311 -0
  217. data/vendor/PDCursesMod/pdcurses/scroll.c +115 -0
  218. data/vendor/PDCursesMod/pdcurses/slk.c +660 -0
  219. data/vendor/PDCursesMod/pdcurses/termattr.c +177 -0
  220. data/vendor/PDCursesMod/pdcurses/terminfo.c +243 -0
  221. data/vendor/PDCursesMod/pdcurses/touch.c +255 -0
  222. data/vendor/PDCursesMod/pdcurses/util.c +502 -0
  223. data/vendor/PDCursesMod/pdcurses/window.c +708 -0
  224. data/vendor/PDCursesMod/plan9/README.md +57 -0
  225. data/vendor/PDCursesMod/plan9/header.patch +11 -0
  226. data/vendor/PDCursesMod/plan9/mkfile +103 -0
  227. data/vendor/PDCursesMod/plan9/mkfile_demo +42 -0
  228. data/vendor/PDCursesMod/plan9/pdcclip.c +1 -0
  229. data/vendor/PDCursesMod/plan9/pdcdisp.c +62 -0
  230. data/vendor/PDCursesMod/plan9/pdcgetsc.c +28 -0
  231. data/vendor/PDCursesMod/plan9/pdckbd.c +53 -0
  232. data/vendor/PDCursesMod/plan9/pdcplan9.h +10 -0
  233. data/vendor/PDCursesMod/plan9/pdcscrn.c +103 -0
  234. data/vendor/PDCursesMod/plan9/pdcsetsc.c +51 -0
  235. data/vendor/PDCursesMod/plan9/pdcutil.c +370 -0
  236. data/vendor/PDCursesMod/psffonts/10x20.psf +0 -0
  237. data/vendor/PDCursesMod/psffonts/18x18.psf +0 -0
  238. data/vendor/PDCursesMod/psffonts/4x6.psf +0 -0
  239. data/vendor/PDCursesMod/psffonts/6x12.psf +0 -0
  240. data/vendor/PDCursesMod/psffonts/8x13.psf +0 -0
  241. data/vendor/PDCursesMod/psffonts/9x15.psf +0 -0
  242. data/vendor/PDCursesMod/psffonts/9x18.psf +0 -0
  243. data/vendor/PDCursesMod/psffonts/README +38 -0
  244. data/vendor/PDCursesMod/psffonts/README.md +14 -0
  245. data/vendor/PDCursesMod/psffonts/bmp2psf2.c +130 -0
  246. data/vendor/PDCursesMod/psffonts/cour11x17.psf +0 -0
  247. data/vendor/PDCursesMod/psffonts/cour20x29.psf +0 -0
  248. data/vendor/PDCursesMod/psffonts/default.psf +0 -0
  249. data/vendor/PDCursesMod/psffonts/dosemu.psf +0 -0
  250. data/vendor/PDCursesMod/psffonts/fntcol16/2_hebrew-14.psf +0 -0
  251. data/vendor/PDCursesMod/psffonts/fntcol16/README +285 -0
  252. data/vendor/PDCursesMod/psffonts/fntcol16/antique-14.psf +0 -0
  253. data/vendor/PDCursesMod/psffonts/fntcol16/apeaus-08.psf +0 -0
  254. data/vendor/PDCursesMod/psffonts/fntcol16/apeaus-14.psf +0 -0
  255. data/vendor/PDCursesMod/psffonts/fntcol16/apeaus-16.psf +0 -0
  256. data/vendor/PDCursesMod/psffonts/fntcol16/apls-08.psf +0 -0
  257. data/vendor/PDCursesMod/psffonts/fntcol16/arabdrft-14.psf +0 -0
  258. data/vendor/PDCursesMod/psffonts/fntcol16/arabic-14.psf +0 -0
  259. data/vendor/PDCursesMod/psffonts/fntcol16/arabkufi-14.psf +0 -0
  260. data/vendor/PDCursesMod/psffonts/fntcol16/arabnaf-14.psf +0 -0
  261. data/vendor/PDCursesMod/psffonts/fntcol16/arbnaskh-14.psf +0 -0
  262. data/vendor/PDCursesMod/psffonts/fntcol16/armenian-08.psf +0 -0
  263. data/vendor/PDCursesMod/psffonts/fntcol16/armenian-14.psf +0 -0
  264. data/vendor/PDCursesMod/psffonts/fntcol16/armenian-16.psf +0 -0
  265. data/vendor/PDCursesMod/psffonts/fntcol16/art-16.psf +0 -0
  266. data/vendor/PDCursesMod/psffonts/fntcol16/ascii-14.psf +0 -0
  267. data/vendor/PDCursesMod/psffonts/fntcol16/backward-14.psf +0 -0
  268. data/vendor/PDCursesMod/psffonts/fntcol16/bdeclo-14.psf +0 -0
  269. data/vendor/PDCursesMod/psffonts/fntcol16/bhexall-14.psf +0 -0
  270. data/vendor/PDCursesMod/psffonts/fntcol16/bhexbox-14.psf +0 -0
  271. data/vendor/PDCursesMod/psffonts/fntcol16/bhexhi-14.psf +0 -0
  272. data/vendor/PDCursesMod/psffonts/fntcol16/bhexlo-14.psf +0 -0
  273. data/vendor/PDCursesMod/psffonts/fntcol16/bigserif-14.psf +0 -0
  274. data/vendor/PDCursesMod/psffonts/fntcol16/bigserif-16.psf +0 -0
  275. data/vendor/PDCursesMod/psffonts/fntcol16/bigsf-14.psf +0 -0
  276. data/vendor/PDCursesMod/psffonts/fntcol16/binaryed-14.psf +0 -0
  277. data/vendor/PDCursesMod/psffonts/fntcol16/blcksnsf-10.psf +0 -0
  278. data/vendor/PDCursesMod/psffonts/fntcol16/block-14.psf +0 -0
  279. data/vendor/PDCursesMod/psffonts/fntcol16/bold-14.psf +0 -0
  280. data/vendor/PDCursesMod/psffonts/fntcol16/boxround-14.psf +0 -0
  281. data/vendor/PDCursesMod/psffonts/fntcol16/boxround-16.psf +0 -0
  282. data/vendor/PDCursesMod/psffonts/fntcol16/broadway-14.psf +0 -0
  283. data/vendor/PDCursesMod/psffonts/fntcol16/bthin-14.psf +0 -0
  284. data/vendor/PDCursesMod/psffonts/fntcol16/bway2-14.psf +0 -0
  285. data/vendor/PDCursesMod/psffonts/fntcol16/cafe-10.psf +0 -0
  286. data/vendor/PDCursesMod/psffonts/fntcol16/cafe-12.psf +0 -0
  287. data/vendor/PDCursesMod/psffonts/fntcol16/cntdown-14.psf +0 -0
  288. data/vendor/PDCursesMod/psffonts/fntcol16/cntdown-16.psf +0 -0
  289. data/vendor/PDCursesMod/psffonts/fntcol16/computer-14.psf +0 -0
  290. data/vendor/PDCursesMod/psffonts/fntcol16/copyleft.txt +209 -0
  291. data/vendor/PDCursesMod/psffonts/fntcol16/courier-14.psf +0 -0
  292. data/vendor/PDCursesMod/psffonts/fntcol16/cp111-08.psf +0 -0
  293. data/vendor/PDCursesMod/psffonts/fntcol16/cp111-14.psf +0 -0
  294. data/vendor/PDCursesMod/psffonts/fntcol16/cp111-16.psf +0 -0
  295. data/vendor/PDCursesMod/psffonts/fntcol16/cp111-19.psf +0 -0
  296. data/vendor/PDCursesMod/psffonts/fntcol16/cp112-08.psf +0 -0
  297. data/vendor/PDCursesMod/psffonts/fntcol16/cp112-14.psf +0 -0
  298. data/vendor/PDCursesMod/psffonts/fntcol16/cp112-16.psf +0 -0
  299. data/vendor/PDCursesMod/psffonts/fntcol16/cp112-19.psf +0 -0
  300. data/vendor/PDCursesMod/psffonts/fntcol16/cp113-08.psf +0 -0
  301. data/vendor/PDCursesMod/psffonts/fntcol16/cp113-14.psf +0 -0
  302. data/vendor/PDCursesMod/psffonts/fntcol16/cp113-16.psf +0 -0
  303. data/vendor/PDCursesMod/psffonts/fntcol16/cp113-19.psf +0 -0
  304. data/vendor/PDCursesMod/psffonts/fntcol16/cp437-08.psf +0 -0
  305. data/vendor/PDCursesMod/psffonts/fntcol16/cp437-14.psf +0 -0
  306. data/vendor/PDCursesMod/psffonts/fntcol16/cp437-16.psf +0 -0
  307. data/vendor/PDCursesMod/psffonts/fntcol16/cp437-19.psf +0 -0
  308. data/vendor/PDCursesMod/psffonts/fntcol16/cp437alt-08.psf +0 -0
  309. data/vendor/PDCursesMod/psffonts/fntcol16/cp437bgr-08.psf +0 -0
  310. data/vendor/PDCursesMod/psffonts/fntcol16/cp850-08.psf +0 -0
  311. data/vendor/PDCursesMod/psffonts/fntcol16/cp850-14.psf +0 -0
  312. data/vendor/PDCursesMod/psffonts/fntcol16/cp850-16.psf +0 -0
  313. data/vendor/PDCursesMod/psffonts/fntcol16/cp850-19.psf +0 -0
  314. data/vendor/PDCursesMod/psffonts/fntcol16/cp851-08.psf +0 -0
  315. data/vendor/PDCursesMod/psffonts/fntcol16/cp851-14.psf +0 -0
  316. data/vendor/PDCursesMod/psffonts/fntcol16/cp851-16.psf +0 -0
  317. data/vendor/PDCursesMod/psffonts/fntcol16/cp851-19.psf +0 -0
  318. data/vendor/PDCursesMod/psffonts/fntcol16/cp852-08.psf +0 -0
  319. data/vendor/PDCursesMod/psffonts/fntcol16/cp852-14.psf +0 -0
  320. data/vendor/PDCursesMod/psffonts/fntcol16/cp852-16.psf +0 -0
  321. data/vendor/PDCursesMod/psffonts/fntcol16/cp852-19.psf +0 -0
  322. data/vendor/PDCursesMod/psffonts/fntcol16/cp853-08.psf +0 -0
  323. data/vendor/PDCursesMod/psffonts/fntcol16/cp853-14.psf +0 -0
  324. data/vendor/PDCursesMod/psffonts/fntcol16/cp853-16.psf +0 -0
  325. data/vendor/PDCursesMod/psffonts/fntcol16/cp853-19.psf +0 -0
  326. data/vendor/PDCursesMod/psffonts/fntcol16/cp860-08.psf +0 -0
  327. data/vendor/PDCursesMod/psffonts/fntcol16/cp860-14.psf +0 -0
  328. data/vendor/PDCursesMod/psffonts/fntcol16/cp860-16.psf +0 -0
  329. data/vendor/PDCursesMod/psffonts/fntcol16/cp860-19.psf +0 -0
  330. data/vendor/PDCursesMod/psffonts/fntcol16/cp861-08.psf +0 -0
  331. data/vendor/PDCursesMod/psffonts/fntcol16/cp861-14.psf +0 -0
  332. data/vendor/PDCursesMod/psffonts/fntcol16/cp861-16.psf +0 -0
  333. data/vendor/PDCursesMod/psffonts/fntcol16/cp861-19.psf +0 -0
  334. data/vendor/PDCursesMod/psffonts/fntcol16/cp862-08.psf +0 -0
  335. data/vendor/PDCursesMod/psffonts/fntcol16/cp862-14.psf +0 -0
  336. data/vendor/PDCursesMod/psffonts/fntcol16/cp862-16.psf +0 -0
  337. data/vendor/PDCursesMod/psffonts/fntcol16/cp863-08.psf +0 -0
  338. data/vendor/PDCursesMod/psffonts/fntcol16/cp863-14.psf +0 -0
  339. data/vendor/PDCursesMod/psffonts/fntcol16/cp863-16.psf +0 -0
  340. data/vendor/PDCursesMod/psffonts/fntcol16/cp863-19.psf +0 -0
  341. data/vendor/PDCursesMod/psffonts/fntcol16/cp864-08.psf +0 -0
  342. data/vendor/PDCursesMod/psffonts/fntcol16/cp864-14.psf +0 -0
  343. data/vendor/PDCursesMod/psffonts/fntcol16/cp864-16.psf +0 -0
  344. data/vendor/PDCursesMod/psffonts/fntcol16/cp865-08.psf +0 -0
  345. data/vendor/PDCursesMod/psffonts/fntcol16/cp865-14.psf +0 -0
  346. data/vendor/PDCursesMod/psffonts/fntcol16/cp865-16.psf +0 -0
  347. data/vendor/PDCursesMod/psffonts/fntcol16/cp865-19.psf +0 -0
  348. data/vendor/PDCursesMod/psffonts/fntcol16/cp866-08.psf +0 -0
  349. data/vendor/PDCursesMod/psffonts/fntcol16/cp866-14.psf +0 -0
  350. data/vendor/PDCursesMod/psffonts/fntcol16/cp866-16.psf +0 -0
  351. data/vendor/PDCursesMod/psffonts/fntcol16/cp880-08.psf +0 -0
  352. data/vendor/PDCursesMod/psffonts/fntcol16/cp880-14.psf +0 -0
  353. data/vendor/PDCursesMod/psffonts/fntcol16/cp880-16.psf +0 -0
  354. data/vendor/PDCursesMod/psffonts/fntcol16/cp881-08.psf +0 -0
  355. data/vendor/PDCursesMod/psffonts/fntcol16/cp881-14.psf +0 -0
  356. data/vendor/PDCursesMod/psffonts/fntcol16/cp881-16.psf +0 -0
  357. data/vendor/PDCursesMod/psffonts/fntcol16/cp882-08.psf +0 -0
  358. data/vendor/PDCursesMod/psffonts/fntcol16/cp882-14.psf +0 -0
  359. data/vendor/PDCursesMod/psffonts/fntcol16/cp882-16.psf +0 -0
  360. data/vendor/PDCursesMod/psffonts/fntcol16/cp883-08.psf +0 -0
  361. data/vendor/PDCursesMod/psffonts/fntcol16/cp883-14.psf +0 -0
  362. data/vendor/PDCursesMod/psffonts/fntcol16/cp883-16.psf +0 -0
  363. data/vendor/PDCursesMod/psffonts/fntcol16/cp884-08.psf +0 -0
  364. data/vendor/PDCursesMod/psffonts/fntcol16/cp884-14.psf +0 -0
  365. data/vendor/PDCursesMod/psffonts/fntcol16/cp884-16.psf +0 -0
  366. data/vendor/PDCursesMod/psffonts/fntcol16/cp885-08.psf +0 -0
  367. data/vendor/PDCursesMod/psffonts/fntcol16/cp885-14.psf +0 -0
  368. data/vendor/PDCursesMod/psffonts/fntcol16/cp885-16.psf +0 -0
  369. data/vendor/PDCursesMod/psffonts/fntcol16/cyril2-14.psf +0 -0
  370. data/vendor/PDCursesMod/psffonts/fntcol16/cyril_b-08.psf +0 -0
  371. data/vendor/PDCursesMod/psffonts/fntcol16/cyrill1-08.psf +0 -0
  372. data/vendor/PDCursesMod/psffonts/fntcol16/cyrill1-14.psf +0 -0
  373. data/vendor/PDCursesMod/psffonts/fntcol16/cyrill1-16.psf +0 -0
  374. data/vendor/PDCursesMod/psffonts/fntcol16/cyrill2-08.psf +0 -0
  375. data/vendor/PDCursesMod/psffonts/fntcol16/cyrill2-14.psf +0 -0
  376. data/vendor/PDCursesMod/psffonts/fntcol16/cyrill2-16.psf +0 -0
  377. data/vendor/PDCursesMod/psffonts/fntcol16/cyrill3-08.psf +0 -0
  378. data/vendor/PDCursesMod/psffonts/fntcol16/cyrill3-14.psf +0 -0
  379. data/vendor/PDCursesMod/psffonts/fntcol16/cyrill3-16.psf +0 -0
  380. data/vendor/PDCursesMod/psffonts/fntcol16/cyrillic-14.psf +0 -0
  381. data/vendor/PDCursesMod/psffonts/fntcol16/decorate-16.psf +0 -0
  382. data/vendor/PDCursesMod/psffonts/fntcol16/draw-14.psf +0 -0
  383. data/vendor/PDCursesMod/psffonts/fntcol16/drawhi-14.psf +0 -0
  384. data/vendor/PDCursesMod/psffonts/fntcol16/europe-14.psf +0 -0
  385. data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-08.psf +0 -0
  386. data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-09.psf +0 -0
  387. data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-10.psf +0 -0
  388. data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-11.psf +0 -0
  389. data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-12.psf +0 -0
  390. data/vendor/PDCursesMod/psffonts/fntcol16/evga-alt-13.psf +0 -0
  391. data/vendor/PDCursesMod/psffonts/fntcol16/farsi-14.psf +0 -0
  392. data/vendor/PDCursesMod/psffonts/fntcol16/finnish-14.psf +0 -0
  393. data/vendor/PDCursesMod/psffonts/fntcol16/fontorig.txt +308 -0
  394. data/vendor/PDCursesMod/psffonts/fntcol16/fractur-14.psf +0 -0
  395. data/vendor/PDCursesMod/psffonts/fntcol16/future-14.psf +0 -0
  396. data/vendor/PDCursesMod/psffonts/fntcol16/gaelic-14.psf +0 -0
  397. data/vendor/PDCursesMod/psffonts/fntcol16/gaelic1-14.psf +0 -0
  398. data/vendor/PDCursesMod/psffonts/fntcol16/georgian-14.psf +0 -0
  399. data/vendor/PDCursesMod/psffonts/fntcol16/grckssrf-08.psf +0 -0
  400. data/vendor/PDCursesMod/psffonts/fntcol16/grckssrf-14.psf +0 -0
  401. data/vendor/PDCursesMod/psffonts/fntcol16/grckssrf-16.psf +0 -0
  402. data/vendor/PDCursesMod/psffonts/fntcol16/greek-06.psf +0 -0
  403. data/vendor/PDCursesMod/psffonts/fntcol16/greek-07.psf +0 -0
  404. data/vendor/PDCursesMod/psffonts/fntcol16/greek-08.psf +0 -0
  405. data/vendor/PDCursesMod/psffonts/fntcol16/greek-14.psf +0 -0
  406. data/vendor/PDCursesMod/psffonts/fntcol16/greek-16.psf +0 -0
  407. data/vendor/PDCursesMod/psffonts/fntcol16/greek1-14.psf +0 -0
  408. data/vendor/PDCursesMod/psffonts/fntcol16/greek2-14.psf +0 -0
  409. data/vendor/PDCursesMod/psffonts/fntcol16/hack4th-16.psf +0 -0
  410. data/vendor/PDCursesMod/psffonts/fntcol16/handugly-16.psf +0 -0
  411. data/vendor/PDCursesMod/psffonts/fntcol16/handwrit-14.psf +0 -0
  412. data/vendor/PDCursesMod/psffonts/fntcol16/handwrit-16.psf +0 -0
  413. data/vendor/PDCursesMod/psffonts/fntcol16/heb-7bit-16.psf +0 -0
  414. data/vendor/PDCursesMod/psffonts/fntcol16/heb-big-14.psf +0 -0
  415. data/vendor/PDCursesMod/psffonts/fntcol16/heb-bold-16.psf +0 -0
  416. data/vendor/PDCursesMod/psffonts/fntcol16/heb-ktab-14.psf +0 -0
  417. data/vendor/PDCursesMod/psffonts/fntcol16/heb-med-14.psf +0 -0
  418. data/vendor/PDCursesMod/psffonts/fntcol16/heb-snsf-14.psf +0 -0
  419. data/vendor/PDCursesMod/psffonts/fntcol16/hebboldk-16.psf +0 -0
  420. data/vendor/PDCursesMod/psffonts/fntcol16/hebclrgf-14.psf +0 -0
  421. data/vendor/PDCursesMod/psffonts/fntcol16/hebktav1-16.psf +0 -0
  422. data/vendor/PDCursesMod/psffonts/fntcol16/hebktav2-16.psf +0 -0
  423. data/vendor/PDCursesMod/psffonts/fntcol16/heblarge-14.psf +0 -0
  424. data/vendor/PDCursesMod/psffonts/fntcol16/heblarge-16.psf +0 -0
  425. data/vendor/PDCursesMod/psffonts/fntcol16/hebrew-14.psf +0 -0
  426. data/vendor/PDCursesMod/psffonts/fntcol16/hebugly-16.psf +0 -0
  427. data/vendor/PDCursesMod/psffonts/fntcol16/hebyogi-16.psf +0 -0
  428. data/vendor/PDCursesMod/psffonts/fntcol16/hercital-08.psf +0 -0
  429. data/vendor/PDCursesMod/psffonts/fntcol16/hercules-08.psf +0 -0
  430. data/vendor/PDCursesMod/psffonts/fntcol16/hercules-10.psf +0 -0
  431. data/vendor/PDCursesMod/psffonts/fntcol16/hercules-14.psf +0 -0
  432. data/vendor/PDCursesMod/psffonts/fntcol16/history.txt +45 -0
  433. data/vendor/PDCursesMod/psffonts/fntcol16/hollow-14.psf +0 -0
  434. data/vendor/PDCursesMod/psffonts/fntcol16/hrkgreek-14.psf +0 -0
  435. data/vendor/PDCursesMod/psffonts/fntcol16/hylas-14.psf +0 -0
  436. data/vendor/PDCursesMod/psffonts/fntcol16/icons-14.psf +0 -0
  437. data/vendor/PDCursesMod/psffonts/fntcol16/inverted-14.psf +0 -0
  438. data/vendor/PDCursesMod/psffonts/fntcol16/iso-14.psf +0 -0
  439. data/vendor/PDCursesMod/psffonts/fntcol16/iso2-14.psf +0 -0
  440. data/vendor/PDCursesMod/psffonts/fntcol16/iso3-14.psf +0 -0
  441. data/vendor/PDCursesMod/psffonts/fntcol16/iso4-14.psf +0 -0
  442. data/vendor/PDCursesMod/psffonts/fntcol16/italics-14.psf +0 -0
  443. data/vendor/PDCursesMod/psffonts/fntcol16/kana-14.psf +0 -0
  444. data/vendor/PDCursesMod/psffonts/fntcol16/kana-16.psf +0 -0
  445. data/vendor/PDCursesMod/psffonts/fntcol16/lb_large-16.psf +0 -0
  446. data/vendor/PDCursesMod/psffonts/fntcol16/lb_misc-14.psf +0 -0
  447. data/vendor/PDCursesMod/psffonts/fntcol16/lb_ocr-14.psf +0 -0
  448. data/vendor/PDCursesMod/psffonts/fntcol16/lb_ocr-16.psf +0 -0
  449. data/vendor/PDCursesMod/psffonts/fntcol16/lbarabic-14.psf +0 -0
  450. data/vendor/PDCursesMod/psffonts/fntcol16/lbitalic-14.psf +0 -0
  451. data/vendor/PDCursesMod/psffonts/fntcol16/lbitalic-16.psf +0 -0
  452. data/vendor/PDCursesMod/psffonts/fntcol16/lbscript-14.psf +0 -0
  453. data/vendor/PDCursesMod/psffonts/fntcol16/lcd-14.psf +0 -0
  454. data/vendor/PDCursesMod/psffonts/fntcol16/mac-08.psf +0 -0
  455. data/vendor/PDCursesMod/psffonts/fntcol16/macntosh-14.psf +0 -0
  456. data/vendor/PDCursesMod/psffonts/fntcol16/macntosh-16.psf +0 -0
  457. data/vendor/PDCursesMod/psffonts/fntcol16/madrid-10.psf +0 -0
  458. data/vendor/PDCursesMod/psffonts/fntcol16/medieval-14.psf +0 -0
  459. data/vendor/PDCursesMod/psffonts/fntcol16/modern-16.psf +0 -0
  460. data/vendor/PDCursesMod/psffonts/fntcol16/norway-14.psf +0 -0
  461. data/vendor/PDCursesMod/psffonts/fntcol16/norway2-14.psf +0 -0
  462. data/vendor/PDCursesMod/psffonts/fntcol16/old-engl-14.psf +0 -0
  463. data/vendor/PDCursesMod/psffonts/fntcol16/old-engl-16.psf +0 -0
  464. data/vendor/PDCursesMod/psffonts/fntcol16/oldeng-14.psf +0 -0
  465. data/vendor/PDCursesMod/psffonts/fntcol16/oldeng-f-16.psf +0 -0
  466. data/vendor/PDCursesMod/psffonts/fntcol16/pc_6-14.psf +0 -0
  467. data/vendor/PDCursesMod/psffonts/fntcol16/pc_7-14.psf +0 -0
  468. data/vendor/PDCursesMod/psffonts/fntcol16/persian-14.psf +0 -0
  469. data/vendor/PDCursesMod/psffonts/fntcol16/persian-16.psf +0 -0
  470. data/vendor/PDCursesMod/psffonts/fntcol16/police-16.psf +0 -0
  471. data/vendor/PDCursesMod/psffonts/fntcol16/polish-14.psf +0 -0
  472. data/vendor/PDCursesMod/psffonts/fntcol16/polish1-14.psf +0 -0
  473. data/vendor/PDCursesMod/psffonts/fntcol16/pp_roman-16.psf +0 -0
  474. data/vendor/PDCursesMod/psffonts/fntcol16/pp_sser-16.psf +0 -0
  475. data/vendor/PDCursesMod/psffonts/fntcol16/readabl7-16.psf +0 -0
  476. data/vendor/PDCursesMod/psffonts/fntcol16/readabl8-16.psf +0 -0
  477. data/vendor/PDCursesMod/psffonts/fntcol16/readable-08.psf +0 -0
  478. data/vendor/PDCursesMod/psffonts/fntcol16/readable-10.psf +0 -0
  479. data/vendor/PDCursesMod/psffonts/fntcol16/reverse-14.psf +0 -0
  480. data/vendor/PDCursesMod/psffonts/fntcol16/rimrock-10.psf +0 -0
  481. data/vendor/PDCursesMod/psffonts/fntcol16/rmrkbold-14.psf +0 -0
  482. data/vendor/PDCursesMod/psffonts/fntcol16/rom8pix-08.psf +0 -0
  483. data/vendor/PDCursesMod/psffonts/fntcol16/roman-14.psf +0 -0
  484. data/vendor/PDCursesMod/psffonts/fntcol16/roman-16.psf +0 -0
  485. data/vendor/PDCursesMod/psffonts/fntcol16/runic-14.psf +0 -0
  486. data/vendor/PDCursesMod/psffonts/fntcol16/russian-08.psf +0 -0
  487. data/vendor/PDCursesMod/psffonts/fntcol16/russian-14.psf +0 -0
  488. data/vendor/PDCursesMod/psffonts/fntcol16/russian-16.psf +0 -0
  489. data/vendor/PDCursesMod/psffonts/fntcol16/russian1-14.psf +0 -0
  490. data/vendor/PDCursesMod/psffonts/fntcol16/sanserif-14.psf +0 -0
  491. data/vendor/PDCursesMod/psffonts/fntcol16/sanserif-16.psf +0 -0
  492. data/vendor/PDCursesMod/psffonts/fntcol16/script-14.psf +0 -0
  493. data/vendor/PDCursesMod/psffonts/fntcol16/scrwl----16.psf +0 -0
  494. data/vendor/PDCursesMod/psffonts/fntcol16/scrwl~~~-16.psf +0 -0
  495. data/vendor/PDCursesMod/psffonts/fntcol16/security-14.psf +0 -0
  496. data/vendor/PDCursesMod/psffonts/fntcol16/side-10.psf +0 -0
  497. data/vendor/PDCursesMod/psffonts/fntcol16/slant-14.psf +0 -0
  498. data/vendor/PDCursesMod/psffonts/fntcol16/smalcaps-14.psf +0 -0
  499. data/vendor/PDCursesMod/psffonts/fntcol16/smcapnum-14.psf +0 -0
  500. data/vendor/PDCursesMod/psffonts/fntcol16/spranto-14.psf +0 -0
  501. data/vendor/PDCursesMod/psffonts/fntcol16/spranto1-16.psf +0 -0
  502. data/vendor/PDCursesMod/psffonts/fntcol16/spranto2-16.psf +0 -0
  503. data/vendor/PDCursesMod/psffonts/fntcol16/square-12.psf +0 -0
  504. data/vendor/PDCursesMod/psffonts/fntcol16/standard-14.psf +0 -0
  505. data/vendor/PDCursesMod/psffonts/fntcol16/standard-16.psf +0 -0
  506. data/vendor/PDCursesMod/psffonts/fntcol16/stretch-14.psf +0 -0
  507. data/vendor/PDCursesMod/psffonts/fntcol16/subsup-16.psf +0 -0
  508. data/vendor/PDCursesMod/psffonts/fntcol16/super-16.psf +0 -0
  509. data/vendor/PDCursesMod/psffonts/fntcol16/swiss-16.psf +0 -0
  510. data/vendor/PDCursesMod/psffonts/fntcol16/swiss-av-16.psf +0 -0
  511. data/vendor/PDCursesMod/psffonts/fntcol16/swissav2-16.psf +0 -0
  512. data/vendor/PDCursesMod/psffonts/fntcol16/swissbox-16.psf +0 -0
  513. data/vendor/PDCursesMod/psffonts/fntcol16/swissbx2-16.psf +0 -0
  514. data/vendor/PDCursesMod/psffonts/fntcol16/tex-math-14.psf +0 -0
  515. data/vendor/PDCursesMod/psffonts/fntcol16/tex-math-16.psf +0 -0
  516. data/vendor/PDCursesMod/psffonts/fntcol16/thai-14.psf +0 -0
  517. data/vendor/PDCursesMod/psffonts/fntcol16/thin_ss-08.psf +0 -0
  518. data/vendor/PDCursesMod/psffonts/fntcol16/thin_ss-14.psf +0 -0
  519. data/vendor/PDCursesMod/psffonts/fntcol16/thin_ss-16.psf +0 -0
  520. data/vendor/PDCursesMod/psffonts/fntcol16/thinasci-07.psf +0 -0
  521. data/vendor/PDCursesMod/psffonts/fntcol16/thincaps-14.psf +0 -0
  522. data/vendor/PDCursesMod/psffonts/fntcol16/thindemo-14.psf +0 -0
  523. data/vendor/PDCursesMod/psffonts/fntcol16/thinscrp-14.psf +0 -0
  524. data/vendor/PDCursesMod/psffonts/fntcol16/turkish-14.psf +0 -0
  525. data/vendor/PDCursesMod/psffonts/fntcol16/urdu-14.psf +0 -0
  526. data/vendor/PDCursesMod/psffonts/fntcol16/vga-rom-08.psf +0 -0
  527. data/vendor/PDCursesMod/psffonts/fntcol16/vga-rom-14.psf +0 -0
  528. data/vendor/PDCursesMod/psffonts/fntcol16/vga-rom-16.psf +0 -0
  529. data/vendor/PDCursesMod/psffonts/fntcol16/voynich-16.psf +0 -0
  530. data/vendor/PDCursesMod/psffonts/fntcol16/wiggly-16.psf +0 -0
  531. data/vendor/PDCursesMod/psffonts/fntcol16/yugosla-14.psf +0 -0
  532. data/vendor/PDCursesMod/psffonts/lc12x20.psf +0 -0
  533. data/vendor/PDCursesMod/psffonts/makefile +2 -0
  534. data/vendor/PDCursesMod/psffonts/mappings/8859-3.TXT +285 -0
  535. data/vendor/PDCursesMod/psffonts/mappings/APL-ISO-IR-68.TXT +273 -0
  536. data/vendor/PDCursesMod/psffonts/mappings/ATARIST.TXT +320 -0
  537. data/vendor/PDCursesMod/psffonts/mappings/CP1006.TXT +302 -0
  538. data/vendor/PDCursesMod/psffonts/mappings/CP1250.TXT +274 -0
  539. data/vendor/PDCursesMod/psffonts/mappings/CP1251.TXT +274 -0
  540. data/vendor/PDCursesMod/psffonts/mappings/CP1252.TXT +274 -0
  541. data/vendor/PDCursesMod/psffonts/mappings/CP1253.TXT +274 -0
  542. data/vendor/PDCursesMod/psffonts/mappings/CP1254.TXT +274 -0
  543. data/vendor/PDCursesMod/psffonts/mappings/CP1255.TXT +274 -0
  544. data/vendor/PDCursesMod/psffonts/mappings/CP1256.TXT +274 -0
  545. data/vendor/PDCursesMod/psffonts/mappings/CP1257.TXT +274 -0
  546. data/vendor/PDCursesMod/psffonts/mappings/CP1258.TXT +274 -0
  547. data/vendor/PDCursesMod/psffonts/mappings/CP424.TXT +304 -0
  548. data/vendor/PDCursesMod/psffonts/mappings/CP437.TXT +274 -0
  549. data/vendor/PDCursesMod/psffonts/mappings/CP737.TXT +274 -0
  550. data/vendor/PDCursesMod/psffonts/mappings/CP775.TXT +275 -0
  551. data/vendor/PDCursesMod/psffonts/mappings/CP850.TXT +274 -0
  552. data/vendor/PDCursesMod/psffonts/mappings/CP851.TXT +276 -0
  553. data/vendor/PDCursesMod/psffonts/mappings/CP852.TXT +274 -0
  554. data/vendor/PDCursesMod/psffonts/mappings/CP855.TXT +275 -0
  555. data/vendor/PDCursesMod/psffonts/mappings/CP856.TXT +303 -0
  556. data/vendor/PDCursesMod/psffonts/mappings/CP857.TXT +275 -0
  557. data/vendor/PDCursesMod/psffonts/mappings/CP860.TXT +275 -0
  558. data/vendor/PDCursesMod/psffonts/mappings/CP861.TXT +275 -0
  559. data/vendor/PDCursesMod/psffonts/mappings/CP862.TXT +275 -0
  560. data/vendor/PDCursesMod/psffonts/mappings/CP863.TXT +275 -0
  561. data/vendor/PDCursesMod/psffonts/mappings/CP864.TXT +275 -0
  562. data/vendor/PDCursesMod/psffonts/mappings/CP865.TXT +275 -0
  563. data/vendor/PDCursesMod/psffonts/mappings/CP866.TXT +275 -0
  564. data/vendor/PDCursesMod/psffonts/mappings/CP869.TXT +275 -0
  565. data/vendor/PDCursesMod/psffonts/mappings/CP874.TXT +274 -0
  566. data/vendor/PDCursesMod/psffonts/mappings/CP932.TXT +7998 -0
  567. data/vendor/PDCursesMod/psffonts/mappings/CP936.TXT +22065 -0
  568. data/vendor/PDCursesMod/psffonts/mappings/CP949.TXT +17322 -0
  569. data/vendor/PDCursesMod/psffonts/mappings/CP950.TXT +13777 -0
  570. data/vendor/PDCursesMod/psffonts/mappings/IBMGRAPH.TXT +99 -0
  571. data/vendor/PDCursesMod/psffonts/mappings/KOI8-R.TXT +294 -0
  572. data/vendor/PDCursesMod/psffonts/mappings/KOI8-U.TXT +301 -0
  573. data/vendor/PDCursesMod/psffonts/mappings/KPS9566.TXT +17166 -0
  574. data/vendor/PDCursesMod/psffonts/mappings/KZ1048.TXT +294 -0
  575. data/vendor/PDCursesMod/psffonts/mappings/ReadMe.txt +20 -0
  576. data/vendor/PDCursesMod/psffonts/mappings/SGML.TXT +1041 -0
  577. data/vendor/PDCursesMod/psffonts/medieval2.psf +0 -0
  578. data/vendor/PDCursesMod/psffonts/vga11x19.psf +0 -0
  579. data/vendor/PDCursesMod/sdl1/Makefile +140 -0
  580. data/vendor/PDCursesMod/sdl1/README.md +200 -0
  581. data/vendor/PDCursesMod/sdl1/pdcclip.c +1 -0
  582. data/vendor/PDCursesMod/sdl1/pdcdisp.c +462 -0
  583. data/vendor/PDCursesMod/sdl1/pdcgetsc.c +30 -0
  584. data/vendor/PDCursesMod/sdl1/pdckbd.c +417 -0
  585. data/vendor/PDCursesMod/sdl1/pdcscrn.c +396 -0
  586. data/vendor/PDCursesMod/sdl1/pdcsdl.h +34 -0
  587. data/vendor/PDCursesMod/sdl1/pdcsetsc.c +99 -0
  588. data/vendor/PDCursesMod/sdl1/pdcutil.c +34 -0
  589. data/vendor/PDCursesMod/sdl1/sdltest.c +79 -0
  590. data/vendor/PDCursesMod/sdl2/CMakeLists.txt +76 -0
  591. data/vendor/PDCursesMod/sdl2/Makefile +207 -0
  592. data/vendor/PDCursesMod/sdl2/Makefile.vc +132 -0
  593. data/vendor/PDCursesMod/sdl2/README.md +215 -0
  594. data/vendor/PDCursesMod/sdl2/pdcclip.c +93 -0
  595. data/vendor/PDCursesMod/sdl2/pdcdisp.c +536 -0
  596. data/vendor/PDCursesMod/sdl2/pdcgetsc.c +30 -0
  597. data/vendor/PDCursesMod/sdl2/pdckbd.c +540 -0
  598. data/vendor/PDCursesMod/sdl2/pdcscrn.c +529 -0
  599. data/vendor/PDCursesMod/sdl2/pdcsdl.h +46 -0
  600. data/vendor/PDCursesMod/sdl2/pdcsetsc.c +99 -0
  601. data/vendor/PDCursesMod/sdl2/pdcutil.c +35 -0
  602. data/vendor/PDCursesMod/sdl2/sdltest.c +91 -0
  603. data/vendor/PDCursesMod/sdl2/versions.mif +2 -0
  604. data/vendor/PDCursesMod/term.h +48 -0
  605. data/vendor/PDCursesMod/tests/README.md +16 -0
  606. data/vendor/PDCursesMod/tests/brk_test.c +42 -0
  607. data/vendor/PDCursesMod/tests/del_test.c +95 -0
  608. data/vendor/PDCursesMod/tests/focus.c +53 -0
  609. data/vendor/PDCursesMod/tests/ins_del.c +108 -0
  610. data/vendor/PDCursesMod/tests/keytest.c +87 -0
  611. data/vendor/PDCursesMod/tests/naptest.c +43 -0
  612. data/vendor/PDCursesMod/tests/opaque.c +42 -0
  613. data/vendor/PDCursesMod/tests/restart.c +60 -0
  614. data/vendor/PDCursesMod/tests/ripoff.c +141 -0
  615. data/vendor/PDCursesMod/tests/show_col.c +55 -0
  616. data/vendor/PDCursesMod/tests/show_uni.c +163 -0
  617. data/vendor/PDCursesMod/tests/vt0.c +472 -0
  618. data/vendor/PDCursesMod/vt/CMakeLists.txt +35 -0
  619. data/vendor/PDCursesMod/vt/Makefile +204 -0
  620. data/vendor/PDCursesMod/vt/Makefile.bcc +101 -0
  621. data/vendor/PDCursesMod/vt/Makefile.dmc +313 -0
  622. data/vendor/PDCursesMod/vt/Makefile.vc +145 -0
  623. data/vendor/PDCursesMod/vt/Makefile.wcc +48 -0
  624. data/vendor/PDCursesMod/vt/README.md +82 -0
  625. data/vendor/PDCursesMod/vt/pdcclip.c +8 -0
  626. data/vendor/PDCursesMod/vt/pdcdisp.c +424 -0
  627. data/vendor/PDCursesMod/vt/pdckbd.c +603 -0
  628. data/vendor/PDCursesMod/vt/pdcscrn.c +492 -0
  629. data/vendor/PDCursesMod/vt/pdcsetsc.c +158 -0
  630. data/vendor/PDCursesMod/vt/pdcutil.c +85 -0
  631. data/vendor/PDCursesMod/vt/pdcvt.h +25 -0
  632. data/vendor/PDCursesMod/wincon/CMakeLists.txt +29 -0
  633. data/vendor/PDCursesMod/wincon/Makefile +190 -0
  634. data/vendor/PDCursesMod/wincon/Makefile.bcc +87 -0
  635. data/vendor/PDCursesMod/wincon/Makefile.dmc +275 -0
  636. data/vendor/PDCursesMod/wincon/Makefile.vc +132 -0
  637. data/vendor/PDCursesMod/wincon/Makefile.wcc +33 -0
  638. data/vendor/PDCursesMod/wincon/README.md +76 -0
  639. data/vendor/PDCursesMod/wincon/pdcclip.c +6 -0
  640. data/vendor/PDCursesMod/wincon/pdcdisp.c +408 -0
  641. data/vendor/PDCursesMod/wincon/pdcgetsc.c +42 -0
  642. data/vendor/PDCursesMod/wincon/pdckbd.c +778 -0
  643. data/vendor/PDCursesMod/wincon/pdcscrn.c +733 -0
  644. data/vendor/PDCursesMod/wincon/pdcsetsc.c +130 -0
  645. data/vendor/PDCursesMod/wincon/pdcutil.c +38 -0
  646. data/vendor/PDCursesMod/wincon/pdcwin.h +35 -0
  647. data/vendor/PDCursesMod/wingui/CMakeLists.txt +30 -0
  648. data/vendor/PDCursesMod/wingui/Makefile +186 -0
  649. data/vendor/PDCursesMod/wingui/Makefile.bcc +80 -0
  650. data/vendor/PDCursesMod/wingui/Makefile.dmc +314 -0
  651. data/vendor/PDCursesMod/wingui/Makefile.vc +144 -0
  652. data/vendor/PDCursesMod/wingui/Makefile.wcc +32 -0
  653. data/vendor/PDCursesMod/wingui/README.md +92 -0
  654. data/vendor/PDCursesMod/wingui/pdcclip.c +6 -0
  655. data/vendor/PDCursesMod/wingui/pdcdisp.c +576 -0
  656. data/vendor/PDCursesMod/wingui/pdckbd.c +89 -0
  657. data/vendor/PDCursesMod/wingui/pdcscrn.c +2235 -0
  658. data/vendor/PDCursesMod/wingui/pdcsetsc.c +124 -0
  659. data/vendor/PDCursesMod/wingui/pdcutil.c +44 -0
  660. data/vendor/PDCursesMod/wingui/pdcwin.h +85 -0
  661. data/vendor/PDCursesMod/x11/Makefile.in +1047 -0
  662. data/vendor/PDCursesMod/x11/README.md +227 -0
  663. data/vendor/PDCursesMod/x11/aclocal.m4 +553 -0
  664. data/vendor/PDCursesMod/x11/config.guess +1774 -0
  665. data/vendor/PDCursesMod/x11/config.h.in +37 -0
  666. data/vendor/PDCursesMod/x11/config.sub +1907 -0
  667. data/vendor/PDCursesMod/x11/configure +5944 -0
  668. data/vendor/PDCursesMod/x11/configure.ac +175 -0
  669. data/vendor/PDCursesMod/x11/pdcclip.c +254 -0
  670. data/vendor/PDCursesMod/x11/pdcdisp.c +418 -0
  671. data/vendor/PDCursesMod/x11/pdcgetsc.c +28 -0
  672. data/vendor/PDCursesMod/x11/pdckbd.c +743 -0
  673. data/vendor/PDCursesMod/x11/pdcscrn.c +848 -0
  674. data/vendor/PDCursesMod/x11/pdcsetsc.c +108 -0
  675. data/vendor/PDCursesMod/x11/pdcutil.c +41 -0
  676. data/vendor/PDCursesMod/x11/pdcx11.h +82 -0
  677. data/vendor/PDCursesMod/x11/sb.c +331 -0
  678. data/vendor/PDCursesMod/x11/scrlbox.c +348 -0
  679. data/vendor/PDCursesMod/x11/scrlbox.h +47 -0
  680. data/vendor/PDCursesMod/x11/xcurses-config.in +81 -0
  681. data/vendor/PDCursesMod/x11new/Makefile +151 -0
  682. data/vendor/PDCursesMod/x11new/README.md +63 -0
  683. data/vendor/PDCursesMod/x11new/pdcclip.c +221 -0
  684. data/vendor/PDCursesMod/x11new/pdcdisp.c +195 -0
  685. data/vendor/PDCursesMod/x11new/pdcgetsc.c +27 -0
  686. data/vendor/PDCursesMod/x11new/pdckbd.c +722 -0
  687. data/vendor/PDCursesMod/x11new/pdcscrn.c +277 -0
  688. data/vendor/PDCursesMod/x11new/pdcsetsc.c +90 -0
  689. data/vendor/PDCursesMod/x11new/pdcutil.c +38 -0
  690. data/vendor/PDCursesMod/x11new/pdcx11.h +16 -0
  691. metadata +692 -246
  692. data/vendor/PDCurses/.gitignore +0 -47
  693. data/vendor/PDCurses/.travis.yml +0 -49
  694. data/vendor/PDCurses/CMakeLists.txt +0 -68
  695. data/vendor/PDCurses/HISTORY.md +0 -2036
  696. data/vendor/PDCurses/IMPLEMNT.md +0 -327
  697. data/vendor/PDCurses/Makefile +0 -27
  698. data/vendor/PDCurses/README.md +0 -77
  699. data/vendor/PDCurses/acs_defs.h +0 -265
  700. data/vendor/PDCurses/appveyor.yml +0 -218
  701. data/vendor/PDCurses/cmake/README.md +0 -71
  702. data/vendor/PDCurses/cmake/build_dependencies.cmake +0 -178
  703. data/vendor/PDCurses/cmake/build_options.cmake +0 -25
  704. data/vendor/PDCurses/cmake/dll_version.cmake +0 -26
  705. data/vendor/PDCurses/cmake/gen_config_header.cmake +0 -43
  706. data/vendor/PDCurses/cmake/get_version.cmake +0 -17
  707. data/vendor/PDCurses/cmake/project_common.cmake +0 -121
  708. data/vendor/PDCurses/cmake/sdl2_ttf/CMakeLists.txt +0 -83
  709. data/vendor/PDCurses/cmake/version.in.cmake +0 -73
  710. data/vendor/PDCurses/cmake/watcom_open_dos16_toolchain.cmake +0 -96
  711. data/vendor/PDCurses/cmake/watcom_open_dos32_toolchain.cmake +0 -106
  712. data/vendor/PDCurses/cmake/watcom_open_os2v2_toolchain.cmake +0 -105
  713. data/vendor/PDCurses/curses.h +0 -1846
  714. data/vendor/PDCurses/curspriv.h +0 -134
  715. data/vendor/PDCurses/demos/firework.c +0 -144
  716. data/vendor/PDCurses/demos/newtest.c +0 -581
  717. data/vendor/PDCurses/demos/ozdemo.c +0 -447
  718. data/vendor/PDCurses/demos/ptest.c +0 -283
  719. data/vendor/PDCurses/demos/rain.c +0 -157
  720. data/vendor/PDCurses/demos/testcurs.c +0 -1607
  721. data/vendor/PDCurses/demos/tui.c +0 -1048
  722. data/vendor/PDCurses/demos/tui.h +0 -65
  723. data/vendor/PDCurses/demos/tuidemo.c +0 -233
  724. data/vendor/PDCurses/demos/version.c +0 -61
  725. data/vendor/PDCurses/demos/worm.c +0 -432
  726. data/vendor/PDCurses/demos/xmas.c +0 -955
  727. data/vendor/PDCurses/dos/CMakeLists.txt +0 -47
  728. data/vendor/PDCurses/dos/Makefile +0 -105
  729. data/vendor/PDCurses/dos/Makefile.bcc +0 -83
  730. data/vendor/PDCurses/dos/Makefile.dmc +0 -257
  731. data/vendor/PDCurses/dos/Makefile.msc +0 -113
  732. data/vendor/PDCurses/dos/Makefile.wcc +0 -107
  733. data/vendor/PDCurses/dos/README.md +0 -51
  734. data/vendor/PDCurses/dos/bccdos.lrf +0 -9
  735. data/vendor/PDCurses/dos/mscdos.lrf +0 -50
  736. data/vendor/PDCurses/dos/pdcclip.c +0 -132
  737. data/vendor/PDCurses/dos/pdcdisp.c +0 -135
  738. data/vendor/PDCurses/dos/pdcdos.h +0 -194
  739. data/vendor/PDCurses/dos/pdcgetsc.c +0 -98
  740. data/vendor/PDCurses/dos/pdckbd.c +0 -513
  741. data/vendor/PDCurses/dos/pdcscrn.c +0 -785
  742. data/vendor/PDCurses/dos/pdcsetsc.c +0 -101
  743. data/vendor/PDCurses/dos/pdcutil.c +0 -212
  744. data/vendor/PDCurses/libobjs.mif +0 -26
  745. data/vendor/PDCurses/makedist.mif +0 -20
  746. data/vendor/PDCurses/man/Makefile +0 -37
  747. data/vendor/PDCurses/man/README.md +0 -21
  748. data/vendor/PDCurses/man/intro.md +0 -361
  749. data/vendor/PDCurses/man/manext.c +0 -119
  750. data/vendor/PDCurses/man/sdl.md +0 -152
  751. data/vendor/PDCurses/man/sdl2.md +0 -58
  752. data/vendor/PDCurses/man/x11.md +0 -407
  753. data/vendor/PDCurses/ncurses/CMakeLists.txt +0 -66
  754. data/vendor/PDCurses/ncurses/makefile +0 -29
  755. data/vendor/PDCurses/os2/Makefile +0 -132
  756. data/vendor/PDCurses/os2/Makefile.bcc +0 -90
  757. data/vendor/PDCurses/os2/Makefile.wcc +0 -43
  758. data/vendor/PDCurses/os2/iccos2.lrf +0 -50
  759. data/vendor/PDCurses/os2/iccos2.mak +0 -256
  760. data/vendor/PDCurses/os2/pdcclip.c +0 -188
  761. data/vendor/PDCurses/os2/pdcdisp.c +0 -93
  762. data/vendor/PDCurses/os2/pdcgetsc.c +0 -89
  763. data/vendor/PDCurses/os2/pdckbd.c +0 -521
  764. data/vendor/PDCurses/os2/pdcos2.h +0 -55
  765. data/vendor/PDCurses/os2/pdcscrn.c +0 -449
  766. data/vendor/PDCurses/os2/pdcsetsc.c +0 -112
  767. data/vendor/PDCurses/os2/pdcutil.c +0 -52
  768. data/vendor/PDCurses/panel.h +0 -56
  769. data/vendor/PDCurses/pdcurses/addch.c +0 -693
  770. data/vendor/PDCurses/pdcurses/addchstr.c +0 -245
  771. data/vendor/PDCurses/pdcurses/addstr.c +0 -240
  772. data/vendor/PDCurses/pdcurses/attr.c +0 -359
  773. data/vendor/PDCurses/pdcurses/beep.c +0 -68
  774. data/vendor/PDCurses/pdcurses/bkgd.c +0 -223
  775. data/vendor/PDCurses/pdcurses/border.c +0 -411
  776. data/vendor/PDCurses/pdcurses/clear.c +0 -159
  777. data/vendor/PDCurses/pdcurses/color.c +0 -298
  778. data/vendor/PDCurses/pdcurses/debug.c +0 -109
  779. data/vendor/PDCurses/pdcurses/delch.c +0 -96
  780. data/vendor/PDCurses/pdcurses/deleteln.c +0 -211
  781. data/vendor/PDCurses/pdcurses/deprec.c +0 -27
  782. data/vendor/PDCurses/pdcurses/getch.c +0 -417
  783. data/vendor/PDCurses/pdcurses/getstr.c +0 -474
  784. data/vendor/PDCurses/pdcurses/getyx.c +0 -139
  785. data/vendor/PDCurses/pdcurses/inch.c +0 -127
  786. data/vendor/PDCurses/pdcurses/inchstr.c +0 -214
  787. data/vendor/PDCurses/pdcurses/initscr.c +0 -367
  788. data/vendor/PDCurses/pdcurses/inopts.c +0 -324
  789. data/vendor/PDCurses/pdcurses/insch.c +0 -271
  790. data/vendor/PDCurses/pdcurses/insstr.c +0 -264
  791. data/vendor/PDCurses/pdcurses/instr.c +0 -246
  792. data/vendor/PDCurses/pdcurses/kernel.c +0 -259
  793. data/vendor/PDCurses/pdcurses/keyname.c +0 -157
  794. data/vendor/PDCurses/pdcurses/mouse.c +0 -438
  795. data/vendor/PDCurses/pdcurses/move.c +0 -57
  796. data/vendor/PDCurses/pdcurses/outopts.c +0 -159
  797. data/vendor/PDCurses/pdcurses/overlay.c +0 -214
  798. data/vendor/PDCurses/pdcurses/pad.c +0 -260
  799. data/vendor/PDCurses/pdcurses/panel.c +0 -633
  800. data/vendor/PDCurses/pdcurses/printw.c +0 -126
  801. data/vendor/PDCurses/pdcurses/refresh.c +0 -279
  802. data/vendor/PDCurses/pdcurses/scanw.c +0 -578
  803. data/vendor/PDCurses/pdcurses/scr_dump.c +0 -213
  804. data/vendor/PDCurses/pdcurses/scroll.c +0 -101
  805. data/vendor/PDCurses/pdcurses/slk.c +0 -591
  806. data/vendor/PDCurses/pdcurses/termattr.c +0 -182
  807. data/vendor/PDCurses/pdcurses/terminfo.c +0 -217
  808. data/vendor/PDCurses/pdcurses/touch.c +0 -163
  809. data/vendor/PDCurses/pdcurses/util.c +0 -312
  810. data/vendor/PDCurses/pdcurses/window.c +0 -569
  811. data/vendor/PDCurses/sdl1/Makefile +0 -129
  812. data/vendor/PDCurses/sdl1/Makefile.mng +0 -110
  813. data/vendor/PDCurses/sdl1/README.md +0 -31
  814. data/vendor/PDCurses/sdl1/deffont.h +0 -385
  815. data/vendor/PDCurses/sdl1/deficon.h +0 -23
  816. data/vendor/PDCurses/sdl1/pdcclip.c +0 -131
  817. data/vendor/PDCurses/sdl1/pdcdisp.c +0 -373
  818. data/vendor/PDCurses/sdl1/pdcgetsc.c +0 -30
  819. data/vendor/PDCurses/sdl1/pdckbd.c +0 -405
  820. data/vendor/PDCurses/sdl1/pdcscrn.c +0 -414
  821. data/vendor/PDCurses/sdl1/pdcsdl.h +0 -31
  822. data/vendor/PDCurses/sdl1/pdcsetsc.c +0 -64
  823. data/vendor/PDCurses/sdl1/pdcutil.c +0 -40
  824. data/vendor/PDCurses/sdl1/sdltest.c +0 -79
  825. data/vendor/PDCurses/sdl2/CMakeLists.txt +0 -76
  826. data/vendor/PDCurses/sdl2/Makefile +0 -135
  827. data/vendor/PDCurses/sdl2/Makefile.vc +0 -164
  828. data/vendor/PDCurses/sdl2/README.md +0 -34
  829. data/vendor/PDCurses/sdl2/deffont.h +0 -385
  830. data/vendor/PDCurses/sdl2/deficon.h +0 -23
  831. data/vendor/PDCurses/sdl2/pdcclip.c +0 -93
  832. data/vendor/PDCurses/sdl2/pdcdisp.c +0 -534
  833. data/vendor/PDCurses/sdl2/pdcgetsc.c +0 -30
  834. data/vendor/PDCurses/sdl2/pdckbd.c +0 -480
  835. data/vendor/PDCurses/sdl2/pdcscrn.c +0 -443
  836. data/vendor/PDCurses/sdl2/pdcsdl.h +0 -33
  837. data/vendor/PDCurses/sdl2/pdcsetsc.c +0 -67
  838. data/vendor/PDCurses/sdl2/pdcutil.c +0 -39
  839. data/vendor/PDCurses/sdl2/sdltest.c +0 -81
  840. data/vendor/PDCurses/term.h +0 -48
  841. data/vendor/PDCurses/version.mif +0 -7
  842. data/vendor/PDCurses/vt/CMakeLists.txt +0 -28
  843. data/vendor/PDCurses/vt/Makefile +0 -135
  844. data/vendor/PDCurses/vt/Makefile.bcc +0 -111
  845. data/vendor/PDCurses/vt/Makefile.dmc +0 -258
  846. data/vendor/PDCurses/vt/Makefile.vc +0 -144
  847. data/vendor/PDCurses/vt/Makefile.wcc +0 -107
  848. data/vendor/PDCurses/vt/README.md +0 -64
  849. data/vendor/PDCurses/vt/pdcclip.c +0 -20
  850. data/vendor/PDCurses/vt/pdcdisp.c +0 -284
  851. data/vendor/PDCurses/vt/pdckbd.c +0 -394
  852. data/vendor/PDCurses/vt/pdcscrn.c +0 -434
  853. data/vendor/PDCurses/vt/pdcsetsc.c +0 -45
  854. data/vendor/PDCurses/vt/pdcutil.c +0 -43
  855. data/vendor/PDCurses/vt/pdcvt.h +0 -16
  856. data/vendor/PDCurses/watcom.mif +0 -68
  857. data/vendor/PDCurses/wincon/CMakeLists.txt +0 -27
  858. data/vendor/PDCurses/wincon/Makefile.bcc +0 -88
  859. data/vendor/PDCurses/wincon/Makefile.dmc +0 -256
  860. data/vendor/PDCurses/wincon/Makefile.lcc +0 -273
  861. data/vendor/PDCurses/wincon/Makefile.mng +0 -176
  862. data/vendor/PDCurses/wincon/Makefile.vc +0 -144
  863. data/vendor/PDCurses/wincon/Makefile.wcc +0 -51
  864. data/vendor/PDCurses/wincon/README.md +0 -85
  865. data/vendor/PDCurses/wincon/pdcclip.c +0 -174
  866. data/vendor/PDCurses/wincon/pdcdisp.c +0 -143
  867. data/vendor/PDCurses/wincon/pdcgetsc.c +0 -55
  868. data/vendor/PDCurses/wincon/pdckbd.c +0 -786
  869. data/vendor/PDCurses/wincon/pdcscrn.c +0 -717
  870. data/vendor/PDCurses/wincon/pdcsetsc.c +0 -91
  871. data/vendor/PDCurses/wincon/pdcurses.ico +0 -0
  872. data/vendor/PDCurses/wincon/pdcurses.rc +0 -28
  873. data/vendor/PDCurses/wincon/pdcutil.c +0 -41
  874. data/vendor/PDCurses/wincon/pdcwin.h +0 -31
  875. data/vendor/PDCurses/wingui/CMakeLists.txt +0 -27
  876. data/vendor/PDCurses/wingui/Makefile.bcc +0 -85
  877. data/vendor/PDCurses/wingui/Makefile.dmc +0 -259
  878. data/vendor/PDCurses/wingui/Makefile.lcc +0 -273
  879. data/vendor/PDCurses/wingui/Makefile.mng +0 -171
  880. data/vendor/PDCurses/wingui/Makefile.vc +0 -144
  881. data/vendor/PDCurses/wingui/Makefile.wcc +0 -51
  882. data/vendor/PDCurses/wingui/README.md +0 -93
  883. data/vendor/PDCurses/wingui/pdcclip.c +0 -174
  884. data/vendor/PDCurses/wingui/pdcdisp.c +0 -718
  885. data/vendor/PDCurses/wingui/pdckbd.c +0 -143
  886. data/vendor/PDCurses/wingui/pdcscrn.c +0 -2797
  887. data/vendor/PDCurses/wingui/pdcsetsc.c +0 -89
  888. data/vendor/PDCurses/wingui/pdcurses.ico +0 -0
  889. data/vendor/PDCurses/wingui/pdcurses.rc +0 -28
  890. data/vendor/PDCurses/wingui/pdcutil.c +0 -61
  891. data/vendor/PDCurses/wingui/pdcwin.h +0 -122
  892. data/vendor/PDCurses/x11/Makefile.in +0 -754
  893. data/vendor/PDCurses/x11/PDCurses.spec +0 -82
  894. data/vendor/PDCurses/x11/README.md +0 -62
  895. data/vendor/PDCurses/x11/ScrollBox.c +0 -319
  896. data/vendor/PDCurses/x11/ScrollBox.h +0 -51
  897. data/vendor/PDCurses/x11/ScrollBoxP.h +0 -70
  898. data/vendor/PDCurses/x11/aclocal.m4 +0 -994
  899. data/vendor/PDCurses/x11/big_icon.xbm +0 -46
  900. data/vendor/PDCurses/x11/compose.h +0 -201
  901. data/vendor/PDCurses/x11/config.guess +0 -1500
  902. data/vendor/PDCurses/x11/config.h.in +0 -100
  903. data/vendor/PDCurses/x11/config.sub +0 -1616
  904. data/vendor/PDCurses/x11/configure +0 -6700
  905. data/vendor/PDCurses/x11/configure.ac +0 -295
  906. data/vendor/PDCurses/x11/debian/changelog +0 -6
  907. data/vendor/PDCurses/x11/debian/compat +0 -1
  908. data/vendor/PDCurses/x11/debian/control +0 -11
  909. data/vendor/PDCurses/x11/debian/copyright +0 -27
  910. data/vendor/PDCurses/x11/debian/rules +0 -98
  911. data/vendor/PDCurses/x11/little_icon.xbm +0 -14
  912. data/vendor/PDCurses/x11/ncurses_cfg.h +0 -45
  913. data/vendor/PDCurses/x11/pdcclip.c +0 -173
  914. data/vendor/PDCurses/x11/pdcdisp.c +0 -85
  915. data/vendor/PDCurses/x11/pdcgetsc.c +0 -28
  916. data/vendor/PDCurses/x11/pdckbd.c +0 -104
  917. data/vendor/PDCurses/x11/pdcscrn.c +0 -258
  918. data/vendor/PDCurses/x11/pdcsetsc.c +0 -95
  919. data/vendor/PDCurses/x11/pdcutil.c +0 -52
  920. data/vendor/PDCurses/x11/pdcx11.c +0 -316
  921. data/vendor/PDCurses/x11/pdcx11.h +0 -191
  922. data/vendor/PDCurses/x11/sb.c +0 -155
  923. data/vendor/PDCurses/x11/x11.c +0 -3686
  924. data/vendor/PDCurses/x11/xcurses-config.in +0 -81
  925. /data/vendor/{PDCurses → PDCursesMod}/cmake/make_uninstall.cmake +0 -0
  926. /data/vendor/{PDCurses → PDCursesMod}/cmake/resource.in.cmake +0 -0
  927. /data/vendor/{PDCurses → PDCursesMod}/cmake/target_arch.cmake +0 -0
  928. /data/vendor/{PDCurses → PDCursesMod}/demos/README.md +0 -0
  929. /data/vendor/{PDCurses → PDCursesMod}/ncurses/README.md +0 -0
  930. /data/vendor/{PDCurses → PDCursesMod}/os2/CMakeLists.txt +0 -0
  931. /data/vendor/{PDCurses → PDCursesMod}/os2/README.md +0 -0
  932. /data/vendor/{PDCurses → PDCursesMod}/pdcurses/README.md +0 -0
  933. /data/vendor/{PDCurses → PDCursesMod}/vt/pdcgetsc.c +0 -0
  934. /data/vendor/{PDCurses → PDCursesMod}/wingui/pdcgetsc.c +0 -0
  935. /data/vendor/{PDCurses → PDCursesMod}/x11/install-sh +0 -0
@@ -0,0 +1,2433 @@
1
+ /* Public Domain Curses */
2
+
3
+ #include "pdcwin.h"
4
+ #include <assert.h>
5
+ #include <ctype.h>
6
+ #include <stdlib.h>
7
+ #include <string.h>
8
+ #include "../common/pdccolor.h"
9
+
10
+ static int min_lines = 25, max_lines = 25;
11
+ static int min_cols = 80, max_cols = 80;
12
+
13
+ static int set_default_sizes_from_registry( const int n_cols, const int n_rows,
14
+ const int xloc, const int yloc);
15
+
16
+ /* We have a 'base' standard palette of 256 colors, plus a true-color
17
+ cube of 16 million colors. */
18
+
19
+ #define N_COLORS 256 + 256 * 256 * 256;
20
+
21
+ /* If PDC_MAX_MOUSE_BUTTONS is undefined, it means the user hasn't */
22
+ /* gotten a current 'curses.h' in which five-button mice are supported. */
23
+ /* To handle this gracefully, we'll just fall back to three buttons. */
24
+
25
+ #ifndef PDC_MAX_MOUSE_BUTTONS
26
+ #define PDC_MAX_MOUSE_BUTTONS 3
27
+ #endif
28
+
29
+ #define WHEEL_EVENT PDC_MAX_MOUSE_BUTTONS
30
+
31
+ /* RR: Removed statis on next line */
32
+ bool PDC_bDone = FALSE;
33
+
34
+ static int debug_printf( const char *format, ...)
35
+ {
36
+ static bool debugging = TRUE;
37
+
38
+ if( debugging)
39
+ {
40
+ const char *output_filename = getenv( "PDC_DEBUG");
41
+
42
+ if( !output_filename)
43
+ debugging = FALSE; /* don't bother trying again */
44
+ else
45
+ {
46
+ FILE *ofile = fopen( output_filename, "a");
47
+
48
+ if( ofile)
49
+ {
50
+ va_list argptr;
51
+ va_start( argptr, format);
52
+ vfprintf( ofile, format, argptr);
53
+ va_end( argptr);
54
+ fclose( ofile);
55
+ }
56
+ else
57
+ {
58
+ printf( "Opening '%s' failed\n", output_filename);
59
+ exit( 1);
60
+ }
61
+ }
62
+ }
63
+ return( 0);
64
+ }
65
+
66
+ static HAB PDC_hab;
67
+ static HMQ PDC_hmq;
68
+ HWND PDC_hWnd;
69
+ static int PDC_argc = 0;
70
+ static char **PDC_argv = NULL;
71
+
72
+ static void final_cleanup( void)
73
+ {
74
+ debug_printf( "final_cleanup: SP = %p\n", SP);
75
+ if (SP)
76
+ {
77
+ SWP swp;
78
+
79
+ WinQueryWindowPos( PDC_hWnd, &swp);
80
+ set_default_sizes_from_registry( SP->cols, SP->lines, swp.x, swp.y);
81
+ }
82
+ #if 0 //RLC
83
+ PDC_LOG(( "final_cleanup: freeing fonts\n"));
84
+ PDC_transform_line( 0, 0, 0, NULL); /* free any fonts */
85
+ if( originally_focussed_window)
86
+ SetForegroundWindow( originally_focussed_window);
87
+ #endif //RLC
88
+ if( PDC_argc)
89
+ {
90
+ int i;
91
+
92
+ for( i = 0; i < PDC_argc; i++)
93
+ free( PDC_argv[i]);
94
+ free( PDC_argv);
95
+ PDC_argc = 0;
96
+ PDC_argv = NULL;
97
+ }
98
+ #if 0 //RLC
99
+ #ifdef USING_COMBINING_CHARACTER_SCHEME
100
+ PDC_expand_combined_characters( 0, NULL); /* free internal buffer */
101
+ #endif
102
+ #endif //RLC
103
+ debug_printf( "reset foreground window\n");
104
+ }
105
+
106
+ void PDC_scr_close(void)
107
+ {
108
+ PDC_LOG(("PDC_scr_close() - called\n"));
109
+ final_cleanup( );
110
+ PDC_bDone = TRUE;
111
+ }
112
+
113
+ /* NOTE that PDC_scr_free( ) is called only from delscreen( ), */
114
+ /* which is rarely called. It appears that most programs simply */
115
+ /* rely on the memory getting freed when the program terminates. */
116
+
117
+ void PDC_scr_free(void)
118
+ {
119
+ PDC_free_palette( );
120
+ #ifdef USING_COMBINING_CHARACTER_SCHEME
121
+ PDC_expand_combined_characters( 0, NULL); /* free internal buffer */
122
+ #endif
123
+ WinDestroyWindow( PDC_hWnd);
124
+ WinDestroyMsgQueue( PDC_hmq);
125
+ WinTerminate( PDC_hab);
126
+ PDC_hWnd = NULLHANDLE;
127
+ PDC_hmq = NULLHANDLE;
128
+ PDC_hab = NULLHANDLE;
129
+ ttytype[1] = 0;
130
+ }
131
+
132
+ int PDC_n_rows, PDC_n_cols;
133
+ int PDC_cxChar, PDC_cyChar, PDC_key_queue_low = 0, PDC_key_queue_high = 0;
134
+ int PDC_key_queue[KEY_QUEUE_SIZE];
135
+
136
+ /* If the following is true, you can enter Unicode values by hitting */
137
+ /* Alt and holding it down while typing the value of the character on */
138
+ /* the numeric keypad (for decimal entry); _or_ you can hit Alt-Padplus */
139
+ /* and then enter a hex value, while holding down the Alt key. In */
140
+ /* either case, when you release the Alt key, the Unicode character */
141
+ /* is added to the queue. For hex entry, 0-9 can come either from */
142
+ /* the numeric keypad or the "usual" keyboard. */
143
+ bool PDC_allow_numpad_unicode = TRUE;
144
+ static int numpad_unicode_value = 0;
145
+
146
+ static BOOL minimized = FALSE;
147
+
148
+ static void add_key_to_queue( const int new_key)
149
+ {
150
+ const int new_idx = ((PDC_key_queue_high + 1) % KEY_QUEUE_SIZE);
151
+ /* This is usually 10, but is set to 16 if the user */
152
+ /* hits ALT_PADPLUS and is about to enter a hex value: */
153
+ static int unicode_radix = 10;
154
+
155
+ if( PDC_allow_numpad_unicode)
156
+ {
157
+ int digit = -1;
158
+
159
+ if( new_key >= ALT_PAD0 && new_key <= ALT_PAD9)
160
+ digit = new_key - ALT_PAD0;
161
+ /* In hex Unicode entry, you can enter digits on both */
162
+ /* the numeric and "standard" keyboards : */
163
+ if( unicode_radix == 16 && new_key >= ALT_0 && new_key <= ALT_9)
164
+ digit = new_key - ALT_0;
165
+ if( unicode_radix == 16 && new_key >= ALT_A && new_key <= ALT_F)
166
+ digit = new_key - ALT_A + 10;
167
+ if( digit >= 0)
168
+ {
169
+ numpad_unicode_value = numpad_unicode_value * unicode_radix + digit;
170
+ if (numpad_unicode_value > MAX_UNICODE - 1)
171
+ numpad_unicode_value = MAX_UNICODE - 1;
172
+ return;
173
+ }
174
+ if( new_key == ALT_PADPLUS)
175
+ { /* signal to begin hex Unicode entry */
176
+ unicode_radix = 16;
177
+ return;
178
+ }
179
+ }
180
+ unicode_radix = 10;
181
+ if( new_key && new_key == PDC_get_function_key( FUNCTION_KEY_ABORT))
182
+ {
183
+ exit( -1);
184
+ }
185
+ else if( new_key && new_key == PDC_get_function_key( FUNCTION_KEY_ENLARGE_FONT))
186
+ {
187
+ PDC_font_size += 2;
188
+ if (PDC_font_size > 40)
189
+ PDC_font_size = 40;
190
+ PDC_set_font_box(PDC_hWnd);
191
+ }
192
+ else if( new_key && new_key == PDC_get_function_key( FUNCTION_KEY_SHRINK_FONT))
193
+ {
194
+ PDC_font_size -= 2;
195
+ if (PDC_font_size < 2)
196
+ PDC_font_size = 2;
197
+ PDC_set_font_box(PDC_hWnd);
198
+ }
199
+ else if( new_key && new_key == PDC_get_function_key( FUNCTION_KEY_CHOOSE_FONT))
200
+ {
201
+ if( PDC_choose_a_new_font(PDC_font_name, &PDC_font_size))
202
+ PDC_set_font_box(PDC_hWnd);
203
+ }
204
+ else if( new_idx != PDC_key_queue_low)
205
+ {
206
+ PDC_key_queue[PDC_key_queue_high] = new_key;
207
+ PDC_key_queue_high = new_idx;
208
+ }
209
+ }
210
+
211
+ /************************************************************************
212
+ * Table for key code translation of function keys in keypad mode *
213
+ * These values are for strict IBM keyboard compatibles only *
214
+ ************************************************************************/
215
+
216
+ typedef struct
217
+ {
218
+ unsigned short normal;
219
+ unsigned short shift;
220
+ unsigned short control;
221
+ unsigned short alt;
222
+ unsigned short flags;
223
+ } KPTAB;
224
+
225
+ enum kptab_flags
226
+ {
227
+ KP_NUMLOCK = 0x1, /* NumLock inverts shift */
228
+ KP_SHIFT = 0x2 /* Key is a shift key */
229
+ };
230
+
231
+ /* Index by virtual key */
232
+ static const KPTAB kptab[] =
233
+ {
234
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0 */
235
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 1 VK_BUTTON1 */
236
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 2 VK_BUTTON2 */
237
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 3 VK_BUTTON3 */
238
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 4 VK_BREAK */
239
+ {0x08, 0x08, 0x7F, ALT_BKSP, 0 }, /* 5 VK_BACKSPACE */
240
+ {0x09, KEY_BTAB, CTL_TAB, ALT_TAB, 0 }, /* 6 VK_TAB */
241
+ {0x09, KEY_BTAB, CTL_TAB, ALT_TAB, 0 }, /* 7 VK_BACKTAB */
242
+ {0x0D, 0x0D, CTL_ENTER, ALT_ENTER, 0 }, /* 8 VK_NEWLINE */
243
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 9 VK_SHIFT HANDLED SEPARATELY */
244
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 10 VK_CONTROL HANDLED SEPARATELY */
245
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 11 VK_ALT */
246
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 12 VK_ALTGRAF */
247
+ {KEY_PAUSE, KEY_PAUSE, KEY_PAUSE, 0xFFFF, 0 }, /* 13 VK_PAUSE */
248
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 14 VK_CAPSLOCK */
249
+ {0x1B, 0x1B, 0x1B, ALT_ESC, 0 }, /* 15 VK_ESCAPE */
250
+ {' ', ' ', ' ', ' ', 0 }, /* 16 VK_SPACE */
251
+ {KEY_PPAGE, KEY_SPREVIOUS, CTL_PGUP, ALT_PGUP, 0 }, /* 17 VK_PAGEUP */
252
+ {KEY_NPAGE, KEY_SNEXT, CTL_PGDN, ALT_PGDN, 0 }, /* 18 VK_PAGEDOWN */
253
+ {KEY_END, KEY_SEND, CTL_END, ALT_END, 0 }, /* 19 VK_END */
254
+ {KEY_HOME, KEY_SHOME, CTL_HOME, ALT_HOME, 0 }, /* 20 VK_HOME */
255
+ {KEY_LEFT, KEY_SLEFT, CTL_LEFT, ALT_LEFT, 0 }, /* 21 VK_LEFT */
256
+ {KEY_UP, KEY_SUP, CTL_UP, ALT_UP, 0 }, /* 22 VK_UP */
257
+ {KEY_RIGHT, KEY_SRIGHT, CTL_RIGHT, ALT_RIGHT, 0 }, /* 23 VK_RIGHT */
258
+ {KEY_DOWN, KEY_SDOWN, CTL_DOWN, ALT_DOWN, 0 }, /* 24 VK_DOWN */
259
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 25 VK_PRINTSCRN */
260
+ {KEY_IC, KEY_SIC, CTL_INS, ALT_INS, 0 }, /* 26 VK_INSERT */
261
+ {KEY_DC, KEY_SDC, CTL_DEL, ALT_DEL, 0 }, /* 27 VK_DELETE */
262
+ {KEY_SCROLLLOCK, 0xFFFF, 0xFFFF, KEY_SCROLLLOCK, 0 }, /* 28 VK_SCRLLOCK */
263
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 29 VK_NUMLOCK */
264
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_PADENTER, 0 }, /* 30 VK_ENTER */
265
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 31 VK_SYSRQ */
266
+ {KEY_F(1), KEY_F(13), KEY_F(25), KEY_F(37), 0 }, /* 32 VK_F1 */
267
+ {KEY_F(2), KEY_F(14), KEY_F(26), KEY_F(38), 0 }, /* 33 VK_F2 */
268
+ {KEY_F(3), KEY_F(15), KEY_F(27), KEY_F(39), 0 }, /* 34 VK_F3 */
269
+ {KEY_F(4), KEY_F(16), KEY_F(28), KEY_F(40), 0 }, /* 35 VK_F4 */
270
+ {KEY_F(5), KEY_F(17), KEY_F(29), KEY_F(41), 0 }, /* 36 VK_F5 */
271
+ {KEY_F(6), KEY_F(18), KEY_F(30), KEY_F(42), 0 }, /* 37 VK_F6 */
272
+ {KEY_F(7), KEY_F(19), KEY_F(31), KEY_F(43), 0 }, /* 38 VK_F7 */
273
+ {KEY_F(8), KEY_F(20), KEY_F(32), KEY_F(44), 0 }, /* 39 VK_F8 */
274
+ {KEY_F(9), KEY_F(21), KEY_F(33), KEY_F(45), 0 }, /* 40 VK_F9 */
275
+ {KEY_F(10), KEY_F(22), KEY_F(34), KEY_F(46), 0 }, /* 41 VK_F10 */
276
+ {KEY_F(11), KEY_F(23), KEY_F(35), KEY_F(47), 0 }, /* 42 VK_F11 */
277
+ {KEY_F(12), KEY_F(24), KEY_F(36), KEY_F(48), 0 }, /* 43 VK_F12 */
278
+ };
279
+ /* End of kptab[] */
280
+
281
+ /* Index by scan code */
282
+ static const KPTAB scan_kptab[] =
283
+ {
284
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x00 */
285
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_ESC, 0 }, /* 0x01 ESC */
286
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_1, 0 }, /* 0x02 '1' */
287
+ {0xFFFF, 0xFFFF, 0x00, ALT_2, 0 }, /* 0x03 '2' */
288
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_3, 0 }, /* 0x04 '3' */
289
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_4, 0 }, /* 0x05 '4' */
290
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_5, 0 }, /* 0x06 '5' */
291
+ {0xFFFF, 0xFFFF, 0x1E, ALT_6, 0 }, /* 0x07 '6' */
292
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_7, 0 }, /* 0x08 '7' */
293
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_8, 0 }, /* 0x09 '8' */
294
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_9, 0 }, /* 0x0A '9' */
295
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_0, 0 }, /* 0x0B '0' */
296
+ {0xFFFF, 0xFFFF, 0x1F, ALT_MINUS, 0 }, /* 0x0C '-' */
297
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_EQUAL, 0 }, /* 0x0D '=' */
298
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x0E Backspace */
299
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x0F Tab */
300
+ {0xFFFF, 0xFFFF, 0x11, ALT_Q, 0 }, /* 0x10 'q' */
301
+ {0xFFFF, 0xFFFF, 0x17, ALT_W, 0 }, /* 0x11 'w' */
302
+ {0xFFFF, 0xFFFF, 0x05, ALT_E, 0 }, /* 0x12 'e' */
303
+ {0xFFFF, 0xFFFF, 0x12, ALT_R, 0 }, /* 0x13 'r' */
304
+ {0xFFFF, 0xFFFF, 0x14, ALT_T, 0 }, /* 0x14 't' */
305
+ {0xFFFF, 0xFFFF, 0x19, ALT_Y, 0 }, /* 0x15 'y' */
306
+ {0xFFFF, 0xFFFF, 0x15, ALT_U, 0 }, /* 0x16 'u' */
307
+ {0xFFFF, 0xFFFF, 0x09, ALT_I, 0 }, /* 0x17 'i' */
308
+ {0xFFFF, 0xFFFF, 0x0F, ALT_O, 0 }, /* 0x18 'o' */
309
+ {0xFFFF, 0xFFFF, 0x10, ALT_P, 0 }, /* 0x19 'p' */
310
+ {0xFFFF, 0xFFFF, 0x1B, ALT_LBRACKET, 0 }, /* 0x1A '[' */
311
+ {0xFFFF, 0xFFFF, 0x1D, ALT_RBRACKET, 0 }, /* 0x1B ']' */
312
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_ENTER, 0 }, /* 0x1C Enter */
313
+ {KEY_CONTROL_L, KEY_CONTROL_L, KEY_CONTROL_L, KEY_CONTROL_L, KP_SHIFT }, /* 0x1D Left Ctrl */
314
+ {0xFFFF, 0xFFFF, 0x01, ALT_A, 0 }, /* 0x1E 'a' */
315
+ {0xFFFF, 0xFFFF, 0x13, ALT_S, 0 }, /* 0x1F 's' */
316
+ {0xFFFF, 0xFFFF, 0x04, ALT_D, 0 }, /* 0x20 'd' */
317
+ {0xFFFF, 0xFFFF, 0x06, ALT_F, 0 }, /* 0x21 'f' */
318
+ {0xFFFF, 0xFFFF, 0x07, ALT_G, 0 }, /* 0x22 'g' */
319
+ {0xFFFF, 0xFFFF, 0x08, ALT_H, 0 }, /* 0x23 'h' */
320
+ {0xFFFF, 0xFFFF, 0x0A, ALT_J, 0 }, /* 0x24 'j' */
321
+ {0xFFFF, 0xFFFF, 0x0B, ALT_K, 0 }, /* 0x25 'k' */
322
+ {0xFFFF, 0xFFFF, 0x0C, ALT_L, 0 }, /* 0x26 'l' */
323
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_SEMICOLON, 0 }, /* 0x27 ';' */
324
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_FQUOTE, 0 }, /* 0x28 "'" */
325
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_BQUOTE, 0 }, /* 0x29 '`' */
326
+ {KEY_SHIFT_L, KEY_SHIFT_L, KEY_SHIFT_L, KEY_SHIFT_L, KP_SHIFT }, /* 0x2A Left Shift */
327
+ {0xFFFF, 0xFFFF, 0x1C, ALT_BSLASH, 0 }, /* 0x2B '\' */
328
+ {0xFFFF, 0xFFFF, 0x1A, ALT_Z, 0 }, /* 0x2C 'z' */
329
+ {0xFFFF, 0xFFFF, 0x18, ALT_X, 0 }, /* 0x2D 'x' */
330
+ {0xFFFF, 0xFFFF, 0x03, ALT_C, 0 }, /* 0x2E 'c' */
331
+ {0xFFFF, 0xFFFF, 0x16, ALT_V, 0 }, /* 0x2F 'v' */
332
+ {0xFFFF, 0xFFFF, 0x02, ALT_B, 0 }, /* 0x30 'b' */
333
+ {0xFFFF, 0xFFFF, 0x0E, ALT_N, 0 }, /* 0x31 'n' */
334
+ {0xFFFF, 0xFFFF, 0x0D, ALT_M, 0 }, /* 0x32 'm' */
335
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_COMMA, 0 }, /* 0x33 ',' */
336
+ {0xFFFF, 0xFFFF, 0xFFFF, ALT_STOP, 0 }, /* 0x34 '.' */
337
+ {0xFFFF, 0xFFFF, 0x7F, ALT_FSLASH, 0 }, /* 0x35 '/' */
338
+ {KEY_SHIFT_R, KEY_SHIFT_R, KEY_SHIFT_R, KEY_SHIFT_R, KP_SHIFT }, /* 0x36 Right Shift */
339
+ {PADSTAR, SHF_PADSTAR, CTL_PADSTAR, ALT_PADSTAR, 0 }, /* 0x37 Pad '*' */
340
+ {KEY_ALT_L, KEY_ALT_L, KEY_ALT_L, KEY_ALT_L, KP_SHIFT }, /* 0x38 Left Alt */
341
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x39 ' ' */
342
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x3A Caps Lock */
343
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x3B F1 */
344
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x3C F2 */
345
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x3D F3 */
346
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x3E F4 */
347
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x3F F5 */
348
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x40 F6 */
349
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x41 F7 */
350
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x42 F8 */
351
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x43 F9 */
352
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x44 F10 */
353
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x45 Num Lock */
354
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x46 Scroll Lock */
355
+ {KEY_A1, '7', CTL_PAD7, ALT_PAD7, KP_NUMLOCK }, /* 0x47 Pad '7' */
356
+ {KEY_A2, '8', CTL_PAD8, ALT_PAD8, KP_NUMLOCK }, /* 0x48 Pad '8' */
357
+ {KEY_A3, '9', CTL_PAD9, ALT_PAD9, KP_NUMLOCK }, /* 0x49 Pad '9' */
358
+ {PADMINUS, SHF_PADMINUS, CTL_PADMINUS, ALT_PADMINUS, 0 }, /* 0x4A Pad '-' */
359
+ {KEY_B1, '4', CTL_PAD4, ALT_PAD4, KP_NUMLOCK }, /* 0x4B Pad '4' */
360
+ {KEY_B2, '5', CTL_PAD5, ALT_PAD5, KP_NUMLOCK }, /* 0x4C Pad '5' */
361
+ {KEY_B3, '6', CTL_PAD6, ALT_PAD6, KP_NUMLOCK }, /* 0x4D Pad '6' */
362
+ {PADPLUS, SHF_PADPLUS, CTL_PADPLUS, ALT_PADPLUS, 0 }, /* 0x4E Pad '+' */
363
+ {KEY_C1, '1', CTL_PAD1, ALT_PAD1, KP_NUMLOCK }, /* 0x4F Pad '1' */
364
+ {KEY_C2, '2', CTL_PAD2, ALT_PAD2, KP_NUMLOCK }, /* 0x50 Pad '2' */
365
+ {KEY_C3, '3', CTL_PAD3, ALT_PAD3, KP_NUMLOCK }, /* 0x51 Pad '3' */
366
+ {PAD0, '0', CTL_PAD0, ALT_PAD0, KP_NUMLOCK }, /* 0x52 Pad '0' */
367
+ {PADSTOP, '.', CTL_PADSTOP, ALT_PADSTOP, 0 }, /* 0x53 Pad '.' */
368
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x54 */
369
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x55 */
370
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x56 */
371
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x57 F11 */
372
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x58 F12 */
373
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x59 */
374
+ {PADENTER, SHF_PADENTER, CTL_PADENTER, ALT_PADENTER, 0 }, /* 0x5A Pad Enter */
375
+ {KEY_CONTROL_R, KEY_CONTROL_R, KEY_CONTROL_R, KEY_CONTROL_R, KP_SHIFT }, /* 0x5B Right Ctrl */
376
+ {PADSLASH, SHF_PADSLASH, CTL_PADSLASH, ALT_PADSLASH, 0 }, /* 0x5C Pad '/' */
377
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x5D Print Screen */
378
+ {KEY_ALT_R, KEY_ALT_R, KEY_ALT_R, KEY_ALT_R, KP_SHIFT }, /* 0x5E Right Alt */
379
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x5F Pause/Break */
380
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x60 Home */
381
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x61 Up */
382
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x62 Pg Up */
383
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x63 Left */
384
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x64 Right */
385
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x65 End */
386
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x66 Down */
387
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x67 Pg Dn */
388
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x68 Insert */
389
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x69 Delete */
390
+ {KEY_BROWSER_BACK, KEY_BROWSER_BACK, KEY_BROWSER_BACK, KEY_BROWSER_BACK, 0 }, /* 0x6A Browser Back */
391
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x6B My Computer */
392
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x6C */
393
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x6D Media Folder */
394
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x6E */
395
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x6F */
396
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x70 */
397
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x71 */
398
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x72 */
399
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x73 */
400
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x74 */
401
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x75 */
402
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x76 */
403
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x77 */
404
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x78 */
405
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x79 */
406
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x7A */
407
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x7B */
408
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x7C Menu */
409
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x7D */
410
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x7E Left Meta */
411
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x7F Right Meta */
412
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x80 */
413
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x81 */
414
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x82 */
415
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x83 */
416
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x84 */
417
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x85 */
418
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x86 */
419
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x87 */
420
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x88 */
421
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x89 */
422
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x8A */
423
+ {KEY_SEARCH, KEY_SEARCH, KEY_SEARCH, KEY_SEARCH, 0 }, /* 0x8B Browser Search */
424
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x8C */
425
+ {KEY_BROWSER_REF, KEY_BROWSER_REF, KEY_BROWSER_REF, KEY_BROWSER_REF, 0 }, /* 0x8D Browser Reload */
426
+ {KEY_BROWSER_STOP, KEY_BROWSER_STOP, KEY_BROWSER_STOP, KEY_BROWSER_STOP, 0 }, /* 0x8E Browser Stop */
427
+ {KEY_BROWSER_FWD, KEY_BROWSER_FWD, KEY_BROWSER_FWD, KEY_BROWSER_FWD, 0 }, /* 0x8F Browser Forward */
428
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x90 */
429
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x91 */
430
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x92 */
431
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x93 */
432
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x94 */
433
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x95 */
434
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x96 */
435
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x97 */
436
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x98 */
437
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x99 */
438
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x9A */
439
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x9B */
440
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x9C */
441
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x9D */
442
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x9E */
443
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0x9F */
444
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xA0 */
445
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xA1 */
446
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xA2 */
447
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xA3 */
448
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xA4 */
449
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xA5 */
450
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xA6 */
451
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xA7 */
452
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xA8 */
453
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xA9 */
454
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xAA */
455
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xAB */
456
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xAC */
457
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xAD */
458
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xAE */
459
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xAF */
460
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xB0 */
461
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xB1 */
462
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xB2 */
463
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xB3 */
464
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xB4 */
465
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xB5 */
466
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xB6 */
467
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xB7 */
468
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xB8 */
469
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xB9 */
470
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xBA */
471
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xBB */
472
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xBC */
473
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xBD */
474
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xBE */
475
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xBF */
476
+ {KEY_PREV_TRACK, KEY_PREV_TRACK, KEY_PREV_TRACK, KEY_PREV_TRACK, 0 }, /* 0xC0 Media Back */
477
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xC1 */
478
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xC2 */
479
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xC3 */
480
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xC4 */
481
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xC5 */
482
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xC6 */
483
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xC7 */
484
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xC8 */
485
+ {KEY_NEXT_TRACK, KEY_NEXT_TRACK, KEY_NEXT_TRACK, KEY_NEXT_TRACK, 0 }, /* 0xC9 Media Forward */
486
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xCA */
487
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xCB */
488
+ {KEY_VOLUME_DOWN, KEY_VOLUME_DOWN, KEY_VOLUME_DOWN, KEY_VOLUME_DOWN, 0 }, /* 0xCC Volume Down */
489
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xCD */
490
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xCE */
491
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xCF */
492
+ {KEY_VOLUME_MUTE, KEY_VOLUME_MUTE, KEY_VOLUME_MUTE, KEY_VOLUME_MUTE, 0 }, /* 0xD0 Mute */
493
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xD1 Calculator */
494
+ {KEY_PLAY_PAUSE, KEY_PLAY_PAUSE, KEY_PLAY_PAUSE, KEY_PLAY_PAUSE, 0 }, /* 0xD2 Media Play */
495
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xD3 */
496
+ {KEY_MEDIA_STOP, KEY_MEDIA_STOP, KEY_MEDIA_STOP, KEY_MEDIA_STOP, 0 }, /* 0xD4 Media Stop */
497
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xD5 */
498
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xD6 */
499
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xD7 */
500
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xD8 */
501
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xD9 */
502
+ {KEY_BROWSER_HOME, KEY_BROWSER_HOME, KEY_BROWSER_HOME, KEY_BROWSER_HOME, 0 }, /* 0xDA Browser Home */
503
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xDB */
504
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xDC */
505
+ {0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0 }, /* 0xDD */
506
+ {KEY_VOLUME_UP, KEY_VOLUME_UP, KEY_VOLUME_UP, KEY_VOLUME_UP, 0 }, /* 0xDE Volume Up */
507
+ };
508
+ /* End of scan_kptab[] */
509
+
510
+ #ifdef PDC_WIDE
511
+ /* Tables of conversion tables for incoming characters */
512
+
513
+ static const unsigned short cp437_tbl[] = {
514
+ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
515
+ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
516
+ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
517
+ 0x00FF, 0x00D6, 0x00DC, 0x00A2, 0x00A3, 0x00A5, 0x20A7, 0x0192,
518
+ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
519
+ 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
520
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
521
+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
522
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
523
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
524
+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
525
+ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
526
+ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x03BC, 0x03C4,
527
+ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229,
528
+ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
529
+ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
530
+ };
531
+
532
+ /* Code page 813 encodes the older version of ISO 8859-7, lacking the drachma sign
533
+ (0x20AF) and the ypogegrammeni (0x037A), but adds the euro sign (0x20AC).
534
+ This table encodes the new version of ISO 8859-7. */
535
+ static const unsigned short cp813_tbl[] = {
536
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
537
+ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
538
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
539
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
540
+ 0x00A0, 0x2018, 0x2019, 0x00A3, 0x20AC, 0x20AF, 0x00A6, 0x00A7,
541
+ 0x00A8, 0x00A9, 0x037A, 0x00AB, 0x00AC, 0x00AD, 0xFFFD, 0x2015,
542
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x0385, 0x0386, 0x0387,
543
+ 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F,
544
+ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
545
+ 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
546
+ 0x03A0, 0x03A1, 0xFFFD, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
547
+ 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF,
548
+ 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
549
+ 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
550
+ 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
551
+ 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0xFFFD
552
+ };
553
+
554
+ /* Code page 819 == ISO 8859-1 (Latin-1) */
555
+ static const unsigned short cp819_tbl[] = {
556
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
557
+ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
558
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
559
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
560
+ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
561
+ 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
562
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
563
+ 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
564
+ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
565
+ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
566
+ 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
567
+ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
568
+ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
569
+ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
570
+ 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
571
+ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF
572
+ };
573
+
574
+ /* The OS/2 version of code page 850 differs from the one published by the Unicode
575
+ Consortium in that it has the euro sign (0x20AC) instead of the dotless lowercase I
576
+ (0x0131) */
577
+ static const unsigned short cp850_tbl[] = {
578
+ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
579
+ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
580
+ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
581
+ 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192,
582
+ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
583
+ 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
584
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0,
585
+ 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510,
586
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3,
587
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
588
+ 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x20AC, 0x00CD, 0x00CE,
589
+ 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580,
590
+ 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE,
591
+ 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x00B4,
592
+ 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8,
593
+ 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
594
+ };
595
+
596
+ /* The OS/2 version of code page 852 differs from the one published by the Unicode
597
+ Consortium in that it has the euro sign (0x20AC) instead of the not sign (0x00AC) */
598
+ static const unsigned short cp852_tbl[] = {
599
+ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x016F, 0x0107, 0x00E7,
600
+ 0x0142, 0x00EB, 0x0150, 0x0151, 0x00EE, 0x0179, 0x00C4, 0x0106,
601
+ 0x00C9, 0x0139, 0x013A, 0x00F4, 0x00F6, 0x013D, 0x013E, 0x015A,
602
+ 0x015B, 0x00D6, 0x00DC, 0x0164, 0x0165, 0x0141, 0x00D7, 0x010D,
603
+ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x0104, 0x0105, 0x017D, 0x017E,
604
+ 0x0118, 0x0119, 0x20AC, 0x017A, 0x010C, 0x015F, 0x00AB, 0x00BB,
605
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x011A,
606
+ 0x015E, 0x2563, 0x2551, 0x2557, 0x255D, 0x017B, 0x017C, 0x2510,
607
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x0102, 0x0103,
608
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
609
+ 0x0111, 0x0110, 0x010E, 0x00CB, 0x010F, 0x0147, 0x00CD, 0x00CE,
610
+ 0x011B, 0x2518, 0x250C, 0x2588, 0x2584, 0x0162, 0x016E, 0x2580,
611
+ 0x00D3, 0x00DF, 0x00D4, 0x0143, 0x0144, 0x0148, 0x0160, 0x0161,
612
+ 0x0154, 0x00DA, 0x0155, 0x0170, 0x00FD, 0x00DD, 0x0163, 0x00B4,
613
+ 0x00AD, 0x02DD, 0x02DB, 0x02C7, 0x02D8, 0x00A7, 0x00F7, 0x00B8,
614
+ 0x00B0, 0x00A8, 0x02D9, 0x0171, 0x0158, 0x0159, 0x25A0, 0x00A0
615
+ };
616
+
617
+ static const unsigned short cp855_tbl[] = {
618
+ 0x0452, 0x0402, 0x0453, 0x0403, 0x0451, 0x0401, 0x0454, 0x0404,
619
+ 0x0455, 0x0405, 0x0456, 0x0406, 0x0457, 0x0407, 0x0458, 0x0408,
620
+ 0x0459, 0x0409, 0x045A, 0x040A, 0x045B, 0x040B, 0x045C, 0x040C,
621
+ 0x045E, 0x040E, 0x045F, 0x040F, 0x044E, 0x042E, 0x044A, 0x042A,
622
+ 0x0430, 0x0410, 0x0431, 0x0411, 0x0446, 0x0426, 0x0434, 0x0414,
623
+ 0x0435, 0x0415, 0x0444, 0x0424, 0x0433, 0x0413, 0x00AB, 0x00BB,
624
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x0445, 0x0425, 0x0438,
625
+ 0x0418, 0x2563, 0x2551, 0x2557, 0x255D, 0x0439, 0x0419, 0x2510,
626
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x043A, 0x041A,
627
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
628
+ 0x043B, 0x041B, 0x043C, 0x041C, 0x043D, 0x041D, 0x043E, 0x041E,
629
+ 0x043F, 0x2518, 0x250C, 0x2588, 0x2584, 0x041F, 0x044F, 0x2580,
630
+ 0x042F, 0x0440, 0x0420, 0x0441, 0x0421, 0x0442, 0x0422, 0x0443,
631
+ 0x0423, 0x0436, 0x0416, 0x0432, 0x0412, 0x044C, 0x042C, 0x2116,
632
+ 0x00AD, 0x044B, 0x042B, 0x0437, 0x0417, 0x0448, 0x0428, 0x044D,
633
+ 0x042D, 0x0449, 0x0429, 0x0447, 0x0427, 0x00A7, 0x25A0, 0x00A0
634
+ };
635
+
636
+ static const unsigned short cp856_tbl[] = {
637
+ 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
638
+ 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
639
+ 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
640
+ 0x05E8, 0x05E9, 0x05EA, 0xFFFD, 0x00A3, 0xFFFD, 0x00D7, 0x20AA,
641
+ 0x200E, 0x200F, 0x202A, 0x202B, 0x202D, 0x202E, 0x202C, 0xFFFD,
642
+ 0xFFFD, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
643
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0xFFFD, 0xFFFD, 0xFFFD,
644
+ 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510,
645
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0xFFFD, 0xFFFD,
646
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
647
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
648
+ 0xFFFD, 0xFFFD, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x2580,
649
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x00B5, 0xFFFD,
650
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x203E, 0x00B4,
651
+ 0x00AD, 0x00B1, 0x2017, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8,
652
+ 0x00B0, 0x00A8, 0x2022, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
653
+ };
654
+
655
+ /* The OS/2 version of code page 857 differs from the one published by the Unicode
656
+ Consortium in that it has the euro sign (0x20AC) in a previously undefined position */
657
+ static const unsigned short cp857_tbl[] = {
658
+ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
659
+ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x0131, 0x00C4, 0x00C5,
660
+ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
661
+ 0x0130, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x015E, 0x015F,
662
+ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x011E, 0x011F,
663
+ 0x00BF, 0x00AE, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
664
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0,
665
+ 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510,
666
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3,
667
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
668
+ 0x00BA, 0x00AA, 0x00CA, 0x00CB, 0x00C8, 0x20AC, 0x00CD, 0x00CE,
669
+ 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x00A6, 0x00CC, 0x2580,
670
+ 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0xFFFD,
671
+ 0x00D7, 0x00DA, 0x00DB, 0x00D9, 0x00EC, 0x00FF, 0x00AF, 0x00B4,
672
+ 0x00AD, 0x00B1, 0xFFFD, 0x00BE, 0x00B6, 0x00A7, 0x00F7, 0x00B8,
673
+ 0x00B0, 0x00A8, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
674
+ };
675
+
676
+ /* Code page 859 is a modified form of 850, with the euro sign as in the OS/2 version of
677
+ 850 and with the following substitutions:
678
+ 850: 859:
679
+ 0xAB 0x00BD 0x0153
680
+ 0xAC 0x00BC 0x0152
681
+ 0xDD 0x00A6 0x0160
682
+ 0xEF 0x00B4 0x017D
683
+ 0xF2 0x2017 undefined
684
+ 0xF3 0x00BE 0x0178
685
+ 0xF7 0x00B8 0x017E
686
+ 0xF9 0x00A8 0x0161 */
687
+ static const unsigned short cp859_tbl[] = {
688
+ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
689
+ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
690
+ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
691
+ 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x00D7, 0x0192,
692
+ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
693
+ 0x00BF, 0x00AE, 0x00AC, 0x0153, 0x0152, 0x00A1, 0x00AB, 0x00BB,
694
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x00C1, 0x00C2, 0x00C0,
695
+ 0x00A9, 0x2563, 0x2551, 0x2557, 0x255D, 0x00A2, 0x00A5, 0x2510,
696
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x00E3, 0x00C3,
697
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x00A4,
698
+ 0x00F0, 0x00D0, 0x00CA, 0x00CB, 0x00C8, 0x20AC, 0x00CD, 0x00CE,
699
+ 0x00CF, 0x2518, 0x250C, 0x2588, 0x2584, 0x0160, 0x00CC, 0x2580,
700
+ 0x00D3, 0x00DF, 0x00D4, 0x00D2, 0x00F5, 0x00D5, 0x00B5, 0x00FE,
701
+ 0x00DE, 0x00DA, 0x00DB, 0x00D9, 0x00FD, 0x00DD, 0x00AF, 0x017D,
702
+ 0x00AD, 0x00B1, 0xFFFD, 0x0178, 0x00B6, 0x00A7, 0x00F7, 0x017E,
703
+ 0x00B0, 0x0161, 0x00B7, 0x00B9, 0x00B3, 0x00B2, 0x25A0, 0x00A0
704
+ };
705
+
706
+ static const unsigned short cp860_tbl[] = {
707
+ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E3, 0x00E0, 0x00C1, 0x00E7,
708
+ 0x00EA, 0x00CA, 0x00E8, 0x00CD, 0x00D4, 0x00EC, 0x00C3, 0x00C2,
709
+ 0x00C9, 0x00C0, 0x00C8, 0x00F4, 0x00F5, 0x00F2, 0x00DA, 0x00F9,
710
+ 0x00CC, 0x00D5, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x20A7, 0x00D3,
711
+ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
712
+ 0x00BF, 0x00D2, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
713
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
714
+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
715
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
716
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
717
+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
718
+ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
719
+ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x03BC, 0x03C4,
720
+ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229,
721
+ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
722
+ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
723
+ };
724
+
725
+ static const unsigned short cp861_tbl[] = {
726
+ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
727
+ 0x00EA, 0x00EB, 0x00E8, 0x00D0, 0x00F0, 0x00DE, 0x00C4, 0x00C5,
728
+ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00FE, 0x00FB, 0x00DD,
729
+ 0x00FD, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192,
730
+ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00C1, 0x00CD, 0x00D3, 0x00DA,
731
+ 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00BB,
732
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
733
+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
734
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
735
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
736
+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
737
+ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
738
+ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4,
739
+ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229,
740
+ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
741
+ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
742
+ };
743
+
744
+ /* The OS/2 version of code page 862 differs from that published by the Unicode
745
+ Consortium in these positions:
746
+ Unicode OS/2
747
+ 0x9E 0x20A7 undefined
748
+ 0x9F 0x0192 0x20AA
749
+ 0xA0 0x00E1 0x200E
750
+ 0xA1 0x00ED 0x200F
751
+ 0xA2 0x00F3 0x202A
752
+ 0xA3 0x00FA 0x202B
753
+ 0xA4 0x00F1 0x202D
754
+ 0xA5 0x00D1 0x202E
755
+ 0xA6 0x00AA 0x202C
756
+ 0xA7 0x00BA undefined
757
+ 0xA8 0x00BF undefined
758
+ 0xAD 0x00A1 0x20AC
759
+ 0xE6 0x00B5 0x03BC */
760
+ static const unsigned short cp862_tbl[] = {
761
+ 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
762
+ 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
763
+ 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
764
+ 0x05E8, 0x05E9, 0x05EA, 0x00A2, 0x00A3, 0x00A5, 0xFFFD, 0x20AA,
765
+ 0x200E, 0x200F, 0x202A, 0x202B, 0x202D, 0x202E, 0x202C, 0xFFFD,
766
+ 0xFFFD, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x20AC, 0x00AB, 0x00BB,
767
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
768
+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
769
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
770
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
771
+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
772
+ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
773
+ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x03BC, 0x03C4,
774
+ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229,
775
+ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
776
+ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
777
+ };
778
+
779
+ static const unsigned short cp863_tbl[] = {
780
+ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00C2, 0x00E0, 0x00B6, 0x00E7,
781
+ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x2017, 0x00C0, 0x00A7,
782
+ 0x00C9, 0x00C8, 0x00CA, 0x00F4, 0x00CB, 0x00CF, 0x00FB, 0x00F9,
783
+ 0x00A4, 0x00D4, 0x00DC, 0x00A2, 0x00A3, 0x00D9, 0x00DB, 0x0192,
784
+ 0x00A6, 0x00B4, 0x00F3, 0x00FA, 0x00A8, 0x00B8, 0x00B3, 0x00AF,
785
+ 0x00CE, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00BE, 0x00AB, 0x00BB,
786
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
787
+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
788
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
789
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
790
+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
791
+ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
792
+ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x03BC, 0x03C4,
793
+ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229,
794
+ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
795
+ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
796
+ };
797
+
798
+ /* The OS/2 version of code page 864 differs from that published by the Unicode
799
+ Consortium in these positions:
800
+ Unicode OS/2
801
+ 0x9F undefined 0x200B
802
+ 0xA7 undefined 0x20AC
803
+ 0xD7 0xFEC1 0xFEC3
804
+ 0xD8 0xFEC5 0xFEC7
805
+ 0xF1 0x0651 0xFE7C */
806
+ static const unsigned short cp864_tbl[] = {
807
+ 0x00B0, 0x00B7, 0x2219, 0x221A, 0x2592, 0x2500, 0x2502, 0x253C,
808
+ 0x2524, 0x252C, 0x251C, 0x2534, 0x2510, 0x250C, 0x2514, 0x2518,
809
+ 0x03B2, 0x221E, 0x03C6, 0x00B1, 0x00BD, 0x00BC, 0x2248, 0x00AB,
810
+ 0x00BB, 0xFEF7, 0xFEF8, 0xFFFD, 0xFFFD, 0xFEFB, 0xFEFC, 0x200B,
811
+ 0x00A0, 0x00AD, 0xFE82, 0x00A3, 0x00A4, 0xFE84, 0xFFFD, 0x20AC,
812
+ 0xFE8E, 0xFE8F, 0xFE95, 0xFE99, 0x060C, 0xFE9D, 0xFEA1, 0xFEA5,
813
+ 0x0660, 0x0661, 0x0662, 0x0663, 0x0664, 0x0665, 0x0666, 0x0667,
814
+ 0x0668, 0x0669, 0xFED1, 0x061B, 0xFEB1, 0xFEB5, 0xFEB9, 0x061F,
815
+ 0x00A2, 0xFE80, 0xFE81, 0xFE83, 0xFE85, 0xFECA, 0xFE8B, 0xFE8D,
816
+ 0xFE91, 0xFE93, 0xFE97, 0xFE9B, 0xFE9F, 0xFEA3, 0xFEA7, 0xFEA9,
817
+ 0xFEAB, 0xFEAD, 0xFEAF, 0xFEB3, 0xFEB7, 0xFEBB, 0xFEBF, 0xFEC3,
818
+ 0xFEC7, 0xFECB, 0xFECF, 0x00A6, 0x00AC, 0x00F7, 0x00D7, 0xFEC9,
819
+ 0x0640, 0xFED3, 0xFED7, 0xFEDB, 0xFEDF, 0xFEE3, 0xFEE7, 0xFEEB,
820
+ 0xFEED, 0xFEEF, 0xFEF3, 0xFEBD, 0xFECC, 0xFECE, 0xFECD, 0xFEE1,
821
+ 0xFE7D, 0xFE7C, 0xFEE5, 0xFEE9, 0xFEEC, 0xFEF0, 0xFEF2, 0xFED0,
822
+ 0xFED5, 0xFEF5, 0xFEF6, 0xFEDD, 0xFED9, 0xFEF1, 0x25A0, 0xFFFD
823
+ };
824
+
825
+ static const unsigned short cp865_tbl[] = {
826
+ 0x00C7, 0x00FC, 0x00E9, 0x00E2, 0x00E4, 0x00E0, 0x00E5, 0x00E7,
827
+ 0x00EA, 0x00EB, 0x00E8, 0x00EF, 0x00EE, 0x00EC, 0x00C4, 0x00C5,
828
+ 0x00C9, 0x00E6, 0x00C6, 0x00F4, 0x00F6, 0x00F2, 0x00FB, 0x00F9,
829
+ 0x00FF, 0x00D6, 0x00DC, 0x00F8, 0x00A3, 0x00D8, 0x20A7, 0x0192,
830
+ 0x00E1, 0x00ED, 0x00F3, 0x00FA, 0x00F1, 0x00D1, 0x00AA, 0x00BA,
831
+ 0x00BF, 0x2310, 0x00AC, 0x00BD, 0x00BC, 0x00A1, 0x00AB, 0x00A4,
832
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
833
+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
834
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
835
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
836
+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
837
+ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
838
+ 0x03B1, 0x00DF, 0x0393, 0x03C0, 0x03A3, 0x03C3, 0x00B5, 0x03C4,
839
+ 0x03A6, 0x0398, 0x03A9, 0x03B4, 0x221E, 0x03C6, 0x03B5, 0x2229,
840
+ 0x2261, 0x00B1, 0x2265, 0x2264, 0x2320, 0x2321, 0x00F7, 0x2248,
841
+ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x207F, 0x00B2, 0x25A0, 0x00A0
842
+ };
843
+
844
+ static const unsigned short cp866_tbl[] = {
845
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
846
+ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
847
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
848
+ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
849
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
850
+ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
851
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
852
+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
853
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
854
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
855
+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
856
+ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
857
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
858
+ 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
859
+ 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E,
860
+ 0x00B0, 0x2219, 0x00B7, 0x221A, 0x2116, 0x00A4, 0x25A0, 0x00A0
861
+ };
862
+
863
+ /* The OS/2 version of code page 864 differs from that published by the Unicode
864
+ Consortium in these positions:
865
+ Unicode OS/2
866
+ 0xA7 undefined 0x20AC
867
+ 0xA8 0x00B7 0x0387 */
868
+ static const unsigned short cp869_tbl[] = {
869
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0x0386, 0x20AC,
870
+ 0x0387, 0x00AC, 0x00A6, 0x2018, 0x2019, 0x0388, 0x2015, 0x0389,
871
+ 0x038A, 0x03AA, 0x038C, 0xFFFD, 0xFFFD, 0x038E, 0x03AB, 0x00A9,
872
+ 0x038F, 0x00B2, 0x00B3, 0x03AC, 0x00A3, 0x03AD, 0x03AE, 0x03AF,
873
+ 0x03CA, 0x0390, 0x03CC, 0x03CD, 0x0391, 0x0392, 0x0393, 0x0394,
874
+ 0x0395, 0x0396, 0x0397, 0x00BD, 0x0398, 0x0399, 0x00AB, 0x00BB,
875
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x039A, 0x039B, 0x039C,
876
+ 0x039D, 0x2563, 0x2551, 0x2557, 0x255D, 0x039E, 0x039F, 0x2510,
877
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x03A0, 0x03A1,
878
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x03A3,
879
+ 0x03A4, 0x03A5, 0x03A6, 0x03A7, 0x03A8, 0x03A9, 0x03B1, 0x03B2,
880
+ 0x03B3, 0x2518, 0x250C, 0x2588, 0x2584, 0x03B4, 0x03B5, 0x2580,
881
+ 0x03B6, 0x03B7, 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD,
882
+ 0x03BE, 0x03BF, 0x03C0, 0x03C1, 0x03C3, 0x03C2, 0x03C4, 0x0384,
883
+ 0x00AD, 0x00B1, 0x03C5, 0x03C6, 0x03C7, 0x00A7, 0x03C8, 0x0385,
884
+ 0x00B0, 0x00A8, 0x03C9, 0x03CB, 0x03B0, 0x03CE, 0x25A0, 0x00A0
885
+ };
886
+
887
+ /* Code page 874 == almost ISO 8859-11 (Thai); check this one out */
888
+ /* IBM's documents give position 0xDF as U+20AC, but tests show no euro sign when this
889
+ code page is configured. The correct mapping is unknown. */
890
+ static const unsigned short cp874_tbl[] = {
891
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
892
+ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
893
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
894
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
895
+ 0x0E48, 0x0E01, 0x0E02, 0x0E03, 0x0E04, 0x0E05, 0x0E06, 0x0E07,
896
+ 0x0E08, 0x0E09, 0x0E0A, 0x0E0B, 0x0E0C, 0x0E0D, 0x0E0E, 0x0E0F,
897
+ 0x0E10, 0x0E11, 0x0E12, 0x0E13, 0x0E14, 0x0E15, 0x0E16, 0x0E17,
898
+ 0x0E18, 0x0E19, 0x0E1A, 0x0E1B, 0x0E1C, 0x0E1D, 0x0E1E, 0x0E1F,
899
+ 0x0E20, 0x0E21, 0x0E22, 0x0E23, 0x0E24, 0x0E25, 0x0E26, 0x0E27,
900
+ 0x0E28, 0x0E29, 0x0E2A, 0x0E2B, 0x0E2C, 0x0E2D, 0x0E2E, 0x0E2F,
901
+ 0x0E30, 0x0E31, 0x0E32, 0x0E33, 0x0E34, 0x0E35, 0x0E36, 0x0E37,
902
+ 0x0E38, 0x0E39, 0x0E3A, 0x0E49, 0x0E4A, 0x0E4B, 0x20AC, 0x0E3F,
903
+ 0x0E40, 0x0E41, 0x0E42, 0x0E43, 0x0E44, 0x0E45, 0x0E46, 0x0E47,
904
+ 0x0E48, 0x0E49, 0x0E4A, 0x0E4B, 0x0E4C, 0x0E4D, 0x0E4E, 0x0E4F,
905
+ 0x0E50, 0x0E51, 0x0E52, 0x0E53, 0x0E54, 0x0E55, 0x0E56, 0x0E57,
906
+ 0x0E58, 0x0E59, 0x0E5A, 0x0E5B, 0x00A2, 0x00AC, 0x00A6, 0x00A0
907
+ };
908
+
909
+ /* Code page 878 == KOI8-R */
910
+ static const unsigned short cp878_tbl[] = {
911
+ 0x2500, 0x2502, 0x250C, 0x2510, 0x2514, 0x2518, 0x251C, 0x2524,
912
+ 0x252C, 0x2534, 0x253C, 0x2580, 0x2584, 0x2588, 0x258C, 0x2590,
913
+ 0x2591, 0x2592, 0x2593, 0x2320, 0x25A0, 0x2219, 0x221A, 0x2248,
914
+ 0x2264, 0x2265, 0x00A0, 0x2321, 0x00B0, 0x00B2, 0x00B7, 0x00F7,
915
+ 0x2550, 0x2551, 0x2552, 0x0451, 0x2553, 0x2554, 0x2555, 0x2556,
916
+ 0x2557, 0x2558, 0x2559, 0x255A, 0x255B, 0x255C, 0x255D, 0x255E,
917
+ 0x255F, 0x2560, 0x2561, 0x0401, 0x2562, 0x2563, 0x2564, 0x2565,
918
+ 0x2566, 0x2567, 0x2568, 0x2569, 0x256A, 0x256B, 0x256C, 0x00A9,
919
+ 0x044E, 0x0430, 0x0431, 0x0446, 0x0434, 0x0435, 0x0444, 0x0433,
920
+ 0x0445, 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E,
921
+ 0x043F, 0x044F, 0x0440, 0x0441, 0x0442, 0x0443, 0x0436, 0x0432,
922
+ 0x044C, 0x044B, 0x0437, 0x0448, 0x044D, 0x0449, 0x0447, 0x044A,
923
+ 0x042E, 0x0410, 0x0411, 0x0426, 0x0414, 0x0415, 0x0424, 0x0413,
924
+ 0x0425, 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E,
925
+ 0x041F, 0x042F, 0x0420, 0x0421, 0x0422, 0x0423, 0x0416, 0x0412,
926
+ 0x042C, 0x042B, 0x0417, 0x0428, 0x042D, 0x0429, 0x0427, 0x042A
927
+ };
928
+
929
+ /* Code page 912 == ISO 8859-2 (Latin-2) */
930
+ static const unsigned short cp912_tbl[] = {
931
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
932
+ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
933
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
934
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
935
+ 0x00A0, 0x0104, 0x02D8, 0x0141, 0x00A4, 0x013D, 0x015A, 0x00A7,
936
+ 0x00A8, 0x0160, 0x015E, 0x0164, 0x0179, 0x00AD, 0x017D, 0x017B,
937
+ 0x00B0, 0x0105, 0x02DB, 0x0142, 0x00B4, 0x013E, 0x015B, 0x02C7,
938
+ 0x00B8, 0x0161, 0x015F, 0x0165, 0x017A, 0x02DD, 0x017E, 0x017C,
939
+ 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7,
940
+ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E,
941
+ 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7,
942
+ 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF,
943
+ 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7,
944
+ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
945
+ 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7,
946
+ 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9
947
+ };
948
+
949
+ /* Code page 915 == ISO 8859-5 (Cyrillic) */
950
+ static const unsigned short cp915_tbl[] = {
951
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
952
+ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
953
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
954
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
955
+ 0x00A0, 0x0401, 0x0402, 0x0403, 0x0404, 0x0405, 0x0406, 0x0407,
956
+ 0x0408, 0x0409, 0x040A, 0x040B, 0x040C, 0x00AD, 0x040E, 0x040F,
957
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
958
+ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
959
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
960
+ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
961
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
962
+ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
963
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
964
+ 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
965
+ 0x2116, 0x0451, 0x0452, 0x0453, 0x0454, 0x0455, 0x0456, 0x0457,
966
+ 0x0458, 0x0459, 0x045A, 0x045B, 0x045C, 0x00A7, 0x045E, 0x045F
967
+ };
968
+
969
+ /* Code page 921 == ISO 8859-13 (Latin-7) */
970
+ static const unsigned short cp921_tbl[] = {
971
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
972
+ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
973
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
974
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
975
+ 0x00A0, 0x201D, 0x00A2, 0x00A3, 0x00A4, 0x201E, 0x00A6, 0x00A7,
976
+ 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6,
977
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x201C, 0x00B5, 0x00B6, 0x00B7,
978
+ 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6,
979
+ 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112,
980
+ 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B,
981
+ 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7,
982
+ 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF,
983
+ 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113,
984
+ 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C,
985
+ 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7,
986
+ 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0x2019
987
+ };
988
+
989
+ /* Code page 922 == a modified ISO 8859-1 */
990
+ static const unsigned short cp922_tbl[] = {
991
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
992
+ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
993
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
994
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
995
+ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
996
+ 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
997
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
998
+ 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
999
+ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
1000
+ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
1001
+ 0x0160, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
1002
+ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x017D, 0x00DF,
1003
+ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
1004
+ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
1005
+ 0x0161, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
1006
+ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x017E, 0x00FF
1007
+ };
1008
+
1009
+ /* Code page 923 == ISO 8859-15 (Latin-9) */
1010
+ static const unsigned short cp923_tbl[] = {
1011
+ 0x0080, 0x0081, 0x0082, 0x0083, 0x0084, 0x0085, 0x0086, 0x0087,
1012
+ 0x0088, 0x0089, 0x008A, 0x008B, 0x008C, 0x008D, 0x008E, 0x008F,
1013
+ 0x0090, 0x0091, 0x0092, 0x0093, 0x0094, 0x0095, 0x0096, 0x0097,
1014
+ 0x0098, 0x0099, 0x009A, 0x009B, 0x009C, 0x009D, 0x009E, 0x009F,
1015
+ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x20AC, 0x00A5, 0x0160, 0x00A7,
1016
+ 0x0161, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
1017
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x017D, 0x00B5, 0x00B6, 0x00B7,
1018
+ 0x017E, 0x00B9, 0x00BA, 0x00BB, 0x0152, 0x0153, 0x0178, 0x00BF,
1019
+ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
1020
+ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
1021
+ 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
1022
+ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
1023
+ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
1024
+ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
1025
+ 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
1026
+ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF
1027
+ };
1028
+
1029
+ static const unsigned short cp1125_tbl[] = {
1030
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
1031
+ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
1032
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
1033
+ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
1034
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
1035
+ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
1036
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
1037
+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
1038
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
1039
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
1040
+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
1041
+ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
1042
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
1043
+ 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
1044
+ 0x0401, 0x0451, 0x0490, 0x0491, 0x0404, 0x0454, 0x0406, 0x0456,
1045
+ 0x0407, 0x0457, 0x00F7, 0x00B1, 0x2116, 0x00A4, 0x25A0, 0x00A0
1046
+ };
1047
+
1048
+ static const unsigned short cp1131_tbl[] = {
1049
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
1050
+ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
1051
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
1052
+ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
1053
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
1054
+ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
1055
+ 0x2591, 0x2592, 0x2593, 0x2502, 0x2524, 0x2561, 0x2562, 0x2556,
1056
+ 0x2555, 0x2563, 0x2551, 0x2557, 0x255D, 0x255C, 0x255B, 0x2510,
1057
+ 0x2514, 0x2534, 0x252C, 0x251C, 0x2500, 0x253C, 0x255E, 0x255F,
1058
+ 0x255A, 0x2554, 0x2569, 0x2566, 0x2560, 0x2550, 0x256C, 0x2567,
1059
+ 0x2568, 0x2564, 0x2565, 0x2559, 0x2558, 0x2552, 0x2553, 0x256B,
1060
+ 0x256A, 0x2518, 0x250C, 0x2588, 0x2584, 0x258C, 0x2590, 0x2580,
1061
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
1062
+ 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F,
1063
+ 0x0401, 0x0451, 0x0404, 0x0454, 0x0407, 0x0457, 0x040E, 0x045E,
1064
+ 0x0406, 0x0456, 0x00B7, 0x00A4, 0x0490, 0x0491, 0x2219, 0x00A0
1065
+ };
1066
+
1067
+ static const unsigned short cp1250_tbl[] = {
1068
+ 0x20AC, 0xFFFD, 0x201A, 0xFFFD, 0x201E, 0x2026, 0x2020, 0x2021,
1069
+ 0xFFFD, 0x2030, 0x0160, 0x2039, 0x015A, 0x0164, 0x017D, 0x0179,
1070
+ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
1071
+ 0xFFFD, 0x2122, 0x0161, 0x203A, 0x015B, 0x0165, 0x017E, 0x017A,
1072
+ 0x00A0, 0x02C7, 0x02D8, 0x0141, 0x00A4, 0x0104, 0x00A6, 0x00A7,
1073
+ 0x00A8, 0x00A9, 0x015E, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x017B,
1074
+ 0x00B0, 0x00B1, 0x02DB, 0x0142, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
1075
+ 0x00B8, 0x0105, 0x015F, 0x00BB, 0x013D, 0x02DD, 0x013E, 0x017C,
1076
+ 0x0154, 0x00C1, 0x00C2, 0x0102, 0x00C4, 0x0139, 0x0106, 0x00C7,
1077
+ 0x010C, 0x00C9, 0x0118, 0x00CB, 0x011A, 0x00CD, 0x00CE, 0x010E,
1078
+ 0x0110, 0x0143, 0x0147, 0x00D3, 0x00D4, 0x0150, 0x00D6, 0x00D7,
1079
+ 0x0158, 0x016E, 0x00DA, 0x0170, 0x00DC, 0x00DD, 0x0162, 0x00DF,
1080
+ 0x0155, 0x00E1, 0x00E2, 0x0103, 0x00E4, 0x013A, 0x0107, 0x00E7,
1081
+ 0x010D, 0x00E9, 0x0119, 0x00EB, 0x011B, 0x00ED, 0x00EE, 0x010F,
1082
+ 0x0111, 0x0144, 0x0148, 0x00F3, 0x00F4, 0x0151, 0x00F6, 0x00F7,
1083
+ 0x0159, 0x016F, 0x00FA, 0x0171, 0x00FC, 0x00FD, 0x0163, 0x02D9
1084
+ };
1085
+
1086
+ static const unsigned short cp1251_tbl[] = {
1087
+ 0x0402, 0x0403, 0x201A, 0x0453, 0x201E, 0x2026, 0x2020, 0x2021,
1088
+ 0x20AC, 0x2030, 0x0409, 0x2039, 0x040A, 0x040C, 0x040B, 0x040F,
1089
+ 0x0452, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
1090
+ 0xFFFD, 0x2122, 0x0459, 0x203A, 0x045A, 0x045C, 0x045B, 0x045F,
1091
+ 0x00A0, 0x040E, 0x045E, 0x0408, 0x00A4, 0x0490, 0x00A6, 0x00A7,
1092
+ 0x0401, 0x00A9, 0x0404, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x0407,
1093
+ 0x00B0, 0x00B1, 0x0406, 0x0456, 0x0491, 0x00B5, 0x00B6, 0x00B7,
1094
+ 0x0451, 0x2116, 0x0454, 0x00BB, 0x0458, 0x0405, 0x0455, 0x0457,
1095
+ 0x0410, 0x0411, 0x0412, 0x0413, 0x0414, 0x0415, 0x0416, 0x0417,
1096
+ 0x0418, 0x0419, 0x041A, 0x041B, 0x041C, 0x041D, 0x041E, 0x041F,
1097
+ 0x0420, 0x0421, 0x0422, 0x0423, 0x0424, 0x0425, 0x0426, 0x0427,
1098
+ 0x0428, 0x0429, 0x042A, 0x042B, 0x042C, 0x042D, 0x042E, 0x042F,
1099
+ 0x0430, 0x0431, 0x0432, 0x0433, 0x0434, 0x0435, 0x0436, 0x0437,
1100
+ 0x0438, 0x0439, 0x043A, 0x043B, 0x043C, 0x043D, 0x043E, 0x043F,
1101
+ 0x0440, 0x0441, 0x0442, 0x0443, 0x0444, 0x0445, 0x0446, 0x0447,
1102
+ 0x0448, 0x0449, 0x044A, 0x044B, 0x044C, 0x044D, 0x044E, 0x044F
1103
+ };
1104
+
1105
+ static const unsigned short cp1252_tbl[] = {
1106
+ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
1107
+ 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFD, 0x017D, 0xFFFD,
1108
+ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
1109
+ 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFD, 0x017E, 0x0178,
1110
+ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
1111
+ 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
1112
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
1113
+ 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
1114
+ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
1115
+ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
1116
+ 0x00D0, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
1117
+ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x00DD, 0x00DE, 0x00DF,
1118
+ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
1119
+ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
1120
+ 0x00F0, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
1121
+ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x00FD, 0x00FE, 0x00FF
1122
+ };
1123
+
1124
+ static const unsigned short cp1253_tbl[] = {
1125
+ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
1126
+ 0xFFFD, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
1127
+ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
1128
+ 0xFFFD, 0x2122, 0xFFFD, 0x203A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
1129
+ 0x00A0, 0x0385, 0x0386, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
1130
+ 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x2015,
1131
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x0384, 0x00B5, 0x00B6, 0x00B7,
1132
+ 0x0388, 0x0389, 0x038A, 0x00BB, 0x038C, 0x00BD, 0x038E, 0x038F,
1133
+ 0x0390, 0x0391, 0x0392, 0x0393, 0x0394, 0x0395, 0x0396, 0x0397,
1134
+ 0x0398, 0x0399, 0x039A, 0x039B, 0x039C, 0x039D, 0x039E, 0x039F,
1135
+ 0x03A0, 0x03A1, 0xFFFD, 0x03A3, 0x03A4, 0x03A5, 0x03A6, 0x03A7,
1136
+ 0x03A8, 0x03A9, 0x03AA, 0x03AB, 0x03AC, 0x03AD, 0x03AE, 0x03AF,
1137
+ 0x03B0, 0x03B1, 0x03B2, 0x03B3, 0x03B4, 0x03B5, 0x03B6, 0x03B7,
1138
+ 0x03B8, 0x03B9, 0x03BA, 0x03BB, 0x03BC, 0x03BD, 0x03BE, 0x03BF,
1139
+ 0x03C0, 0x03C1, 0x03C2, 0x03C3, 0x03C4, 0x03C5, 0x03C6, 0x03C7,
1140
+ 0x03C8, 0x03C9, 0x03CA, 0x03CB, 0x03CC, 0x03CD, 0x03CE, 0xFFFD
1141
+ };
1142
+
1143
+ static const unsigned short cp1254_tbl[] = {
1144
+ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
1145
+ 0x02C6, 0x2030, 0x0160, 0x2039, 0x0152, 0xFFFD, 0xFFFD, 0xFFFD,
1146
+ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
1147
+ 0x02DC, 0x2122, 0x0161, 0x203A, 0x0153, 0xFFFD, 0xFFFD, 0x0178,
1148
+ 0x00A0, 0x00A1, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
1149
+ 0x00A8, 0x00A9, 0x00AA, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
1150
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
1151
+ 0x00B8, 0x00B9, 0x00BA, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00BF,
1152
+ 0x00C0, 0x00C1, 0x00C2, 0x00C3, 0x00C4, 0x00C5, 0x00C6, 0x00C7,
1153
+ 0x00C8, 0x00C9, 0x00CA, 0x00CB, 0x00CC, 0x00CD, 0x00CE, 0x00CF,
1154
+ 0x011E, 0x00D1, 0x00D2, 0x00D3, 0x00D4, 0x00D5, 0x00D6, 0x00D7,
1155
+ 0x00D8, 0x00D9, 0x00DA, 0x00DB, 0x00DC, 0x0130, 0x015E, 0x00DF,
1156
+ 0x00E0, 0x00E1, 0x00E2, 0x00E3, 0x00E4, 0x00E5, 0x00E6, 0x00E7,
1157
+ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x00EC, 0x00ED, 0x00EE, 0x00EF,
1158
+ 0x011F, 0x00F1, 0x00F2, 0x00F3, 0x00F4, 0x00F5, 0x00F6, 0x00F7,
1159
+ 0x00F8, 0x00F9, 0x00FA, 0x00FB, 0x00FC, 0x0131, 0x015F, 0x00FF
1160
+ };
1161
+
1162
+ static const unsigned short cp1255_tbl[] = {
1163
+ 0x20AC, 0xFFFD, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
1164
+ 0x02C6, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
1165
+ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
1166
+ 0x02DC, 0x2122, 0xFFFD, 0x203A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
1167
+ 0x00A0, 0xFFFD, 0x00A2, 0x00A3, 0x20AA, 0x00A5, 0x00A6, 0x00A7,
1168
+ 0x00A8, 0x00A9, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
1169
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
1170
+ 0xFFFD, 0x00B9, 0xFFFD, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0xFFFD,
1171
+ 0x05B0, 0x05B1, 0x05B2, 0x05B3, 0x05B4, 0x05B5, 0x05B6, 0x05B7,
1172
+ 0x05B8, 0x05B9, 0xFFFD, 0x05BB, 0x05BC, 0x05BD, 0x05BE, 0x05BF,
1173
+ 0x05C0, 0x05C1, 0x05C2, 0x05C3, 0x05F0, 0x05F1, 0x05F2, 0xFFFD,
1174
+ 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
1175
+ 0x05D0, 0x05D1, 0x05D2, 0x05D3, 0x05D4, 0x05D5, 0x05D6, 0x05D7,
1176
+ 0x05D8, 0x05D9, 0x05DA, 0x05DB, 0x05DC, 0x05DD, 0x05DE, 0x05DF,
1177
+ 0x05E0, 0x05E1, 0x05E2, 0x05E3, 0x05E4, 0x05E5, 0x05E6, 0x05E7,
1178
+ 0x05E8, 0x05E9, 0x05EA, 0xFFFD, 0xFFFD, 0x200E, 0x200F, 0xFFFD
1179
+ };
1180
+
1181
+ static const unsigned short cp1256_tbl[] = {
1182
+ 0x20AC, 0x067E, 0x201A, 0x0192, 0x201E, 0x2026, 0x2020, 0x2021,
1183
+ 0x02C6, 0x2030, 0xFFFD, 0x2039, 0x0152, 0x0686, 0x0698, 0xFFFD,
1184
+ 0x06AF, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
1185
+ 0xFFFD, 0x2122, 0xFFFD, 0x203A, 0x0153, 0x200C, 0x200D, 0xFFFD,
1186
+ 0x00A0, 0x060C, 0x00A2, 0x00A3, 0x00A4, 0x00A5, 0x00A6, 0x00A7,
1187
+ 0x00A8, 0x00A9, 0xFFFD, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00AF,
1188
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0x00B4, 0x00B5, 0x00B6, 0x00B7,
1189
+ 0x00B8, 0x00B9, 0x061B, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x061F,
1190
+ 0xFFFD, 0x0621, 0x0622, 0x0623, 0x0624, 0x0625, 0x0626, 0x0627,
1191
+ 0x0628, 0x0629, 0x062A, 0x062B, 0x062C, 0x062D, 0x062E, 0x062F,
1192
+ 0x0630, 0x0631, 0x0632, 0x0633, 0x0634, 0x0635, 0x0636, 0x00D7,
1193
+ 0x0637, 0x0638, 0x0639, 0x063A, 0x0640, 0x0641, 0x0642, 0x0643,
1194
+ 0x00E0, 0x0644, 0x00E2, 0x0645, 0x0646, 0x0647, 0x0648, 0x00E7,
1195
+ 0x00E8, 0x00E9, 0x00EA, 0x00EB, 0x0649, 0x064A, 0x00EE, 0x00EF,
1196
+ 0x064B, 0x064C, 0x064D, 0x064E, 0x00F4, 0x064F, 0x0650, 0x00F7,
1197
+ 0x0651, 0x00F9, 0x0652, 0x00FB, 0x00FC, 0x200E, 0x200F, 0xFFFD
1198
+ };
1199
+
1200
+ static const unsigned short cp1257_tbl[] = {
1201
+ 0x20AC, 0xFFFD, 0x201A, 0xFFFD, 0x201E, 0x2026, 0x2020, 0x2021,
1202
+ 0xFFFD, 0x2030, 0xFFFD, 0x2039, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
1203
+ 0xFFFD, 0x2018, 0x2019, 0x201C, 0x201D, 0x2022, 0x2013, 0x2014,
1204
+ 0xFFFD, 0x2122, 0xFFFD, 0x203A, 0xFFFD, 0xFFFD, 0xFFFD, 0xFFFD,
1205
+ 0x00A0, 0xFFFD, 0x00A2, 0x00A3, 0x00A4, 0xFFFD, 0x00A6, 0x00A7,
1206
+ 0x00D8, 0x00A9, 0x0156, 0x00AB, 0x00AC, 0x00AD, 0x00AE, 0x00C6,
1207
+ 0x00B0, 0x00B1, 0x00B2, 0x00B3, 0xFFFD, 0x00B5, 0x00B6, 0x00B7,
1208
+ 0x00F8, 0x00B9, 0x0157, 0x00BB, 0x00BC, 0x00BD, 0x00BE, 0x00E6,
1209
+ 0x0104, 0x012E, 0x0100, 0x0106, 0x00C4, 0x00C5, 0x0118, 0x0112,
1210
+ 0x010C, 0x00C9, 0x0179, 0x0116, 0x0122, 0x0136, 0x012A, 0x013B,
1211
+ 0x0160, 0x0143, 0x0145, 0x00D3, 0x014C, 0x00D5, 0x00D6, 0x00D7,
1212
+ 0x0172, 0x0141, 0x015A, 0x016A, 0x00DC, 0x017B, 0x017D, 0x00DF,
1213
+ 0x0105, 0x012F, 0x0101, 0x0107, 0x00E4, 0x00E5, 0x0119, 0x0113,
1214
+ 0x010D, 0x00E9, 0x017A, 0x0117, 0x0123, 0x0137, 0x012B, 0x013C,
1215
+ 0x0161, 0x0144, 0x0146, 0x00F3, 0x014D, 0x00F5, 0x00F6, 0x00F7,
1216
+ 0x0173, 0x0142, 0x015B, 0x016B, 0x00FC, 0x017C, 0x017E, 0xFFFD
1217
+ };
1218
+
1219
+ static const unsigned short cp1275_tbl[] = {
1220
+ 0x00C4, 0x00C5, 0x00C7, 0x00C9, 0x00D1, 0x00D6, 0x00DC, 0x00E1,
1221
+ 0x00E0, 0x00E2, 0x00E4, 0x00E3, 0x00E5, 0x00E7, 0x00E9, 0x00E8,
1222
+ 0x00EA, 0x00EB, 0x00ED, 0x00EC, 0x00EE, 0x00EF, 0x00F1, 0x00F3,
1223
+ 0x00F2, 0x00F4, 0x00F6, 0x00F5, 0x00FA, 0x00F9, 0x00FB, 0x00FC,
1224
+ 0x2020, 0x00B0, 0x00A2, 0x00A3, 0x00A7, 0x2022, 0x00B6, 0x00DF,
1225
+ 0x00AE, 0x00A9, 0x2122, 0x00B4, 0x00A8, 0x2260, 0x00C6, 0x00D8,
1226
+ 0x221E, 0x00B1, 0x2264, 0x2265, 0x00A5, 0x00B5, 0x2202, 0x2211,
1227
+ 0x220F, 0x03C0, 0x222B, 0x00AA, 0x00BA, 0x2126, 0x00E6, 0x00F8,
1228
+ 0x00BF, 0x00A1, 0x00AC, 0x221A, 0x0192, 0x2248, 0x2206, 0x00AB,
1229
+ 0x00BB, 0x2026, 0x00A0, 0x00C0, 0x00C3, 0x00D5, 0x0152, 0x0153,
1230
+ 0x2013, 0x2014, 0x201C, 0x201D, 0x2018, 0x2019, 0x00F7, 0x25CA,
1231
+ 0x00FF, 0x0178, 0x2044, 0x00A4, 0x2039, 0x203A, 0xFB01, 0xFB02,
1232
+ 0x2021, 0x00B7, 0x201A, 0x201E, 0x2030, 0x00C2, 0x00CA, 0x00C1,
1233
+ 0x00CB, 0x00C8, 0x00CD, 0x00CE, 0x00CF, 0x00CC, 0x00D3, 0x00D4,
1234
+ 0xFFFD, 0x00D2, 0x00DA, 0x00DB, 0x00D9, 0x0131, 0x02C6, 0x02DC,
1235
+ 0x00AF, 0x02D8, 0x02D9, 0x02DA, 0x00B8, 0x02DD, 0x02DB, 0x02C7
1236
+ };
1237
+
1238
+ struct KbdUnicode {
1239
+ unsigned code_page;
1240
+ unsigned short const *map;
1241
+ };
1242
+
1243
+ static const struct KbdUnicode kbd_unicode_tables[] = {
1244
+ { 437, cp437_tbl },
1245
+ { 813, cp813_tbl },
1246
+ { 819, cp819_tbl },
1247
+ { 850, cp850_tbl },
1248
+ { 852, cp852_tbl },
1249
+ { 855, cp855_tbl },
1250
+ { 856, cp856_tbl },
1251
+ { 857, cp857_tbl },
1252
+ { 859, cp859_tbl },
1253
+ { 860, cp860_tbl },
1254
+ { 861, cp861_tbl },
1255
+ { 862, cp862_tbl },
1256
+ { 863, cp863_tbl },
1257
+ { 864, cp864_tbl },
1258
+ { 865, cp865_tbl },
1259
+ { 866, cp866_tbl },
1260
+ { 869, cp869_tbl },
1261
+ { 874, cp874_tbl },
1262
+ { 878, cp878_tbl },
1263
+ { 912, cp912_tbl },
1264
+ { 915, cp915_tbl },
1265
+ { 921, cp921_tbl },
1266
+ { 922, cp922_tbl },
1267
+ { 923, cp923_tbl },
1268
+ { 1004, cp1252_tbl }, /* 1004 and 1252 are the same code page */
1269
+ { 1125, cp1125_tbl },
1270
+ { 1131, cp1131_tbl },
1271
+ { 1250, cp1250_tbl },
1272
+ { 1251, cp1251_tbl },
1273
+ { 1252, cp1252_tbl },
1274
+ { 1253, cp1253_tbl },
1275
+ { 1254, cp1254_tbl },
1276
+ { 1255, cp1255_tbl },
1277
+ { 1256, cp1256_tbl },
1278
+ { 1257, cp1257_tbl },
1279
+ { 1275, cp1275_tbl }
1280
+ };
1281
+
1282
+ static unsigned short const *kbd_unicode;
1283
+ #endif
1284
+
1285
+ /* Mouse handling is done as follows. Windows (*) gives us a
1286
+ sequence of "raw" mouse events, which are :
1287
+
1288
+ button pressed
1289
+ button released
1290
+ wheel up/down/left/right
1291
+ mouse moved
1292
+
1293
+ We need to provide a sequence of "combined" mouse events,
1294
+ in which presses and releases get combined into clicks,
1295
+ double-clicks, and triple-clicks if the "raw" events are within
1296
+ SP->mouse_wait milliseconds of each other and the mouse doesn't
1297
+ move in between. add_mouse( ) takes the "raw" events and figures
1298
+ out what "combined" events should be emitted.
1299
+
1300
+ If the raw event is a press or release, we also set a timer to
1301
+ trigger in SP->mouse_wait milliseconds. When that timer event is
1302
+ triggered, it calls add_mouse( -1, -1, -1, -1), meaning "synthesize
1303
+ all events and pass them to add_mouse_event_to_queue( )". Basically, if
1304
+ we hit the timeout _or_ the mouse is moved, we can send combined events
1305
+ to add_mouse_event_to_queue( ). A corresponding KEY_MOUSE event will
1306
+ be added to the key queue.
1307
+
1308
+ A mouse move is simply ignored if it's within the current
1309
+ character cell. (Note that ncurses does provide 'mouse move' events
1310
+ even if the mouse has only moved within the character cell.)
1311
+
1312
+ Also, a note about wheel handling. Pre-Vista, you could just say
1313
+ "the wheel went up" or "the wheel went down". Vista introduced the possibility
1314
+ that the mouse motion could be a smoothly varying quantity. So on each
1315
+ mouse move, we add in the amount moved, then check to see if that's
1316
+ enough to trigger a wheel up/down event (or possibly several). The idea
1317
+ is that whereas before, each movement would be 120 units (the default),
1318
+ you might now get a series of 40-unit moves and should emit a wheel up/down
1319
+ event on every third move.
1320
+
1321
+ (*) This is not necessarily Windows-specific. The same logic should
1322
+ apply in any system where a timer can be set. Or a "timer" could be
1323
+ synthesized by storing the time of the last mouse event, comparing
1324
+ it to the current time, and saying that if SP->mouse_wait milliseconds
1325
+ have elapsed, it's time to call add_mouse( -1, -1, -1, -1) to force
1326
+ all mouse events to be output. */
1327
+
1328
+ #define TIMER_ID_FOR_BLINKING 0x2000
1329
+ #define TIMER_ID_FOR_MOUSE 0x2001
1330
+
1331
+ #define WM_CHOOSE_FONT (WM_USER + 6)
1332
+
1333
+ static int add_resize_key = 1;
1334
+ static int resize_limits_set = 0;
1335
+
1336
+ /* This flavor of Curses tries to store the window and font sizes on an
1337
+ app-by-app basis. To do this, it uses the above get_app_name( ) function, then
1338
+ sets or gets a corresponding value from an OS/2 profile. The benefit should be
1339
+ that one can have one screen size/font for, say, Testcurs, while having
1340
+ different settings for, say, Firework or Rain or one's own programs. */
1341
+
1342
+ static void get_app_name(char *name, size_t name_len)
1343
+ {
1344
+ PTIB tib;
1345
+ PPIB pib;
1346
+ const char *bname;
1347
+ const char *ext;
1348
+ size_t len;
1349
+ size_t i;
1350
+
1351
+ if (name_len == 0)
1352
+ return;
1353
+
1354
+ DosGetInfoBlocks(&tib, &pib);
1355
+
1356
+ /* Start of base name */
1357
+ if (pib->pib_pchcmd == NULL)
1358
+ {
1359
+ bname = "pdcurses";
1360
+ }
1361
+ else
1362
+ {
1363
+ bname = strrchr(pib->pib_pchcmd, '\\');
1364
+ if (bname == NULL)
1365
+ bname = pib->pib_pchcmd;
1366
+ else
1367
+ ++bname;
1368
+ }
1369
+
1370
+ /* Remove extension if present */
1371
+ ext = strrchr(bname, '.');
1372
+ if (ext == NULL)
1373
+ len = strlen(bname);
1374
+ else
1375
+ len = (size_t)(ext - bname);
1376
+
1377
+ /* Copy to caller-supplied array */
1378
+ snprintf(name, name_len, "%.*s", (int)len, bname);
1379
+ /* Convert to lowercase */
1380
+ for (i = 0; name[i] != '\0'; ++i)
1381
+ name[i] = tolower(name[i]);
1382
+ }
1383
+
1384
+ /* Font name and size as read from the registry */
1385
+ static char prf_font_name[FACESIZE] = "";
1386
+ static int prf_font_size = 0;
1387
+
1388
+ static int set_default_sizes_from_registry( const int n_cols, const int n_rows,
1389
+ const int xloc, const int yloc)
1390
+ {
1391
+ char buff[1024];
1392
+ char app_name[FILENAME_MAX];
1393
+ BOOL rc;
1394
+ const char *pdc_font = getenv("PDC_FONT");
1395
+ const char *pdc_font_size = getenv("PDC_FONT_SIZE");
1396
+ const char *save_font_name;
1397
+ int save_font_size;
1398
+
1399
+ /* If the font has been set through PDC_FONT, keep the setting, if any,
1400
+ in the registry */
1401
+ if (pdc_font == NULL)
1402
+ save_font_name = PDC_font_name;
1403
+ else
1404
+ save_font_name = prf_font_name;
1405
+ if (save_font_name[0] == '\0')
1406
+ save_font_name = "Courier";
1407
+
1408
+ if (pdc_font_size == NULL && (pdc_font == NULL || strchr(pdc_font, ':') == NULL))
1409
+ save_font_size = PDC_font_size;
1410
+ else
1411
+ save_font_size = prf_font_size;
1412
+ if (save_font_size < 2)
1413
+ save_font_size = 12;
1414
+
1415
+ snprintf( buff, sizeof(buff), "%dx%d,%d,%d,%d,%d;%d,%d,%d,%d:%s",
1416
+ n_cols, n_rows, save_font_size,
1417
+ xloc, yloc, /*menu_shown*/ 0,
1418
+ min_lines, max_lines,
1419
+ min_cols, max_cols,
1420
+ save_font_name);
1421
+
1422
+ get_app_name( app_name, sizeof(app_name));
1423
+ rc = PrfWriteProfileString(HINI_PROFILE, (PSZ)"PDCurses", (PSZ)app_name, (PSZ)buff);
1424
+
1425
+ debug_printf( "Size: %d %d; %d\n", n_cols, n_rows, rc);
1426
+ return rc;
1427
+ }
1428
+
1429
+ static int get_default_sizes_from_registry( int *n_cols, int *n_rows,
1430
+ int *xloc, int *yloc)
1431
+ {
1432
+ char buff[1024];
1433
+ char app_name[FILENAME_MAX];
1434
+ ULONG rc;
1435
+
1436
+ get_app_name(app_name, sizeof(app_name));
1437
+ rc = PrfQueryProfileString(HINI_PROFILE, (PSZ)"PDCurses", (PSZ)app_name, (PSZ)"",
1438
+ buff, sizeof(buff));
1439
+
1440
+ if (rc != 0)
1441
+ {
1442
+ int x = n_cols ? *n_cols : -1, y = n_rows ? *n_rows : -1;
1443
+ int bytes_read = 0;
1444
+ const char *pdc_font = getenv("PDC_FONT");
1445
+ const char *pdc_font_size = getenv("PDC_FONT_SIZE");
1446
+
1447
+ sscanf( buff, "%dx%d,%d,%d,%d,%*d;%d,%d,%d,%d:%n",
1448
+ &x, &y, &prf_font_size,
1449
+ xloc, yloc, /*&menu_shown,*/
1450
+ &min_lines, &max_lines,
1451
+ &min_cols, &max_cols,
1452
+ &bytes_read);
1453
+ /* Set the font name if it is present and if PDC_FONT not set */
1454
+ if( bytes_read > 0 && buff[bytes_read - 1] == ':')
1455
+ snprintf(prf_font_name, sizeof(prf_font_name), "%s",
1456
+ buff + bytes_read);
1457
+ if( n_cols != NULL)
1458
+ *n_cols = x;
1459
+ if( n_rows != NULL)
1460
+ *n_rows = y;
1461
+
1462
+ if (pdc_font == NULL)
1463
+ strcpy(PDC_font_name, prf_font_name);
1464
+ if (pdc_font_size == NULL && (pdc_font == NULL || strchr(pdc_font, ':') == NULL))
1465
+ PDC_font_size = prf_font_size;
1466
+ }
1467
+ if( rc == 0)
1468
+ debug_printf( "get_default_sizes_from_registry error: %d\n",
1469
+ WinGetLastError(PDC_hab));
1470
+ return rc != 0;
1471
+ }
1472
+
1473
+ /*man-start**************************************************************
1474
+
1475
+ Resize limits
1476
+ -------------
1477
+
1478
+ ### Synopsis
1479
+
1480
+ void PDC_set_resize_limits( const int new_min_lines,
1481
+ const int new_max_lines,
1482
+ const int new_min_cols,
1483
+ const int new_max_cols);
1484
+
1485
+ ### Description
1486
+
1487
+ For platforms supporting resizable windows (SDLx, WinGUI, X11). Some
1488
+ programs may be unprepared for a resize event; for these, calling
1489
+ this function with the max and min limits equal ensures that no
1490
+ user resizing can be done. Other programs may require at least a
1491
+ certain number, and/or no more than a certain number, of columns
1492
+ and/or lines.
1493
+
1494
+ ### Portability
1495
+
1496
+ PDCurses-only function.
1497
+
1498
+ **man-end****************************************************************/
1499
+
1500
+ void PDC_set_resize_limits( const int new_min_lines, const int new_max_lines,
1501
+ const int new_min_cols, const int new_max_cols)
1502
+ {
1503
+ min_lines = max( new_min_lines, 2);
1504
+ max_lines = max( new_max_lines, min_lines);
1505
+ min_cols = max( new_min_cols, 2);
1506
+ max_cols = max( new_max_cols, min_cols);
1507
+ resize_limits_set = 1;
1508
+ }
1509
+
1510
+ typedef void(*resize_callback_fnptr)(void);
1511
+ static resize_callback_fnptr resize_callback = NULL;
1512
+ void PDC_set_window_resized_callback(resize_callback_fnptr callback) {
1513
+ resize_callback = callback;
1514
+ }
1515
+
1516
+ static void HandleSize( HWND hwnd, int n_xpixels, int n_ypixels)
1517
+ {
1518
+ unsigned new_n_rows, new_n_cols;
1519
+ BOOL first_time;
1520
+
1521
+ first_time = (PDC_cxChar == 0 || PDC_cyChar == 0);
1522
+ if (first_time)
1523
+ PDC_set_font_box(hwnd); /* avoid division by zero */
1524
+
1525
+ /* If window has been minimized, don't mess with the size */
1526
+ if (minimized)
1527
+ return;
1528
+
1529
+ new_n_rows = n_ypixels / PDC_cyChar;
1530
+ new_n_cols = n_xpixels / PDC_cxChar;
1531
+ debug_printf( "Size was %d x %d; will be %d x %d\n",
1532
+ PDC_n_rows, PDC_n_cols, new_n_rows, new_n_cols);
1533
+ SP->resized = FALSE;
1534
+
1535
+ /* If the window will have a different number of rows */
1536
+ /* or columns, we put KEY_RESIZE in the key queue. */
1537
+ /* We don't do this if */
1538
+ /* the resizing is the result of the window being */
1539
+ /* initialized, or as a result of PDC_resize_screen */
1540
+ /* being called. In the latter case, the user */
1541
+ /* presumably already knows the screen's been resized. */
1542
+ if( PDC_n_rows != (int)new_n_rows || PDC_n_cols != (int)new_n_cols)
1543
+ {
1544
+ PDC_n_cols = new_n_cols;
1545
+ PDC_n_rows = new_n_rows;
1546
+ if( !first_time && add_resize_key)
1547
+ {
1548
+ /* don't add a key when the window is initialized */
1549
+ add_key_to_queue( KEY_RESIZE);
1550
+ SP->resized = TRUE;
1551
+ if (resize_callback) {
1552
+ resize_callback();
1553
+ }
1554
+ }
1555
+ }
1556
+
1557
+ add_resize_key = 1;
1558
+ }
1559
+
1560
+ static void
1561
+ HandlePaint(const HWND hwnd)
1562
+ {
1563
+ RECTL update_rect;
1564
+ HPS hps = WinBeginPaint(hwnd, NULLHANDLE, &update_rect);
1565
+ int i;
1566
+ int num_cols = PDC_n_cols;
1567
+ int num_rows = PDC_n_rows;
1568
+ int row_min, row_max;
1569
+ int col_min, col_max;
1570
+
1571
+ if (num_cols > COLS)
1572
+ num_cols = COLS;
1573
+ if (num_rows > SP->lines)
1574
+ num_rows = SP->lines;
1575
+
1576
+ GpiCreateLogColorTable(hps, 0, LCOLF_RGB, 0, 0, NULL);
1577
+ WinFillRect(hps, &update_rect, GpiQueryColorIndex(hps, 0, 0x00000000));
1578
+
1579
+ PDC_setup_font(hps);
1580
+
1581
+ PDC_pixel_to_screen(update_rect.xLeft, update_rect.yTop, &col_min, &row_min);
1582
+ PDC_pixel_to_screen(update_rect.xRight, update_rect.yBottom, &col_max, &row_max);
1583
+ if (col_min < 0)
1584
+ col_min = 0;
1585
+ if (row_min < 0)
1586
+ row_min = 0;
1587
+ if (col_max > num_cols - 1)
1588
+ col_max = num_cols - 1;
1589
+ if (row_max > num_rows - 1)
1590
+ row_max = num_rows - 1;
1591
+
1592
+ for (i = row_min; i <= row_max; i++)
1593
+ {
1594
+ if (i < SP->lines && curscr->_y[i])
1595
+ PDC_transform_line_sliced( i, col_min, col_max - col_min + 1, curscr->_y[i] + col_min);
1596
+ }
1597
+
1598
+ WinEndPaint(hps);
1599
+ }
1600
+
1601
+ static void HandleTimer( void )
1602
+ {
1603
+ int i; /* see WndProc() notes */
1604
+
1605
+ SP->blink_state ^= 1;
1606
+ for( i = 0; i < SP->lines; i++)
1607
+ {
1608
+ if( curscr->_y[i])
1609
+ {
1610
+ int j = 0;
1611
+ chtype *line = curscr->_y[i];
1612
+
1613
+ /* skip over starting text that isn't blinking: */
1614
+ while( j < SP->cols)
1615
+ {
1616
+ int k;
1617
+
1618
+ while( j < SP->cols && !(line[j] & A_BLINK))
1619
+ j++;
1620
+ k = j;
1621
+ while( j < SP->cols && (line[j] & A_BLINK))
1622
+ j++;
1623
+ if( k != j)
1624
+ PDC_transform_line_sliced( i, k, j - k, line + k);
1625
+ }
1626
+ }
1627
+ }
1628
+ if( PDC_CURSOR_IS_BLINKING && SP->cursrow < SP->lines && SP->curscol < COLS)
1629
+ PDC_transform_line_sliced( SP->cursrow, SP->curscol, 1,
1630
+ curscr->_y[SP->cursrow] + SP->curscol);
1631
+ }
1632
+
1633
+ typedef struct
1634
+ {
1635
+ int x, y;
1636
+ int button, action;
1637
+ int button_flags; /* Alt, shift, ctrl */
1638
+ } PDC_mouse_event;
1639
+
1640
+ /* As "combined" mouse events (i.e., clicks and double- and triple-clicks
1641
+ along with the usual mouse moves, button presses and releases, and wheel
1642
+ movements) occur, we add them to a queue. They are removed for each
1643
+ KEY_MOUSE event from getch( ), and SP->mouse_status is set to reflect
1644
+ what the mouse was doing at that event.
1645
+
1646
+ Seven queued mouse events is possibly overkill. */
1647
+
1648
+ #define MAX_MOUSE_QUEUE 7
1649
+
1650
+ static PDC_mouse_event mouse_queue[MAX_MOUSE_QUEUE];
1651
+ static int n_mouse_queue = 0;
1652
+
1653
+ int PDC_get_mouse_event_from_queue( void)
1654
+ {
1655
+ size_t i;
1656
+
1657
+ if( !n_mouse_queue)
1658
+ return( -1);
1659
+ memset(&SP->mouse_status, 0, sizeof(MOUSE_STATUS));
1660
+ if( mouse_queue->action == BUTTON_MOVED)
1661
+ {
1662
+ if( mouse_queue->button < 0)
1663
+ SP->mouse_status.changes = PDC_MOUSE_MOVED;
1664
+ else
1665
+ {
1666
+ SP->mouse_status.changes = PDC_MOUSE_MOVED | (1 << mouse_queue->button);
1667
+ SP->mouse_status.button[mouse_queue->button] = BUTTON_MOVED;
1668
+ }
1669
+ }
1670
+ else
1671
+ {
1672
+ if( mouse_queue->button < PDC_MAX_MOUSE_BUTTONS)
1673
+ {
1674
+ SP->mouse_status.button[mouse_queue->button] = (short)mouse_queue->action;
1675
+ if( mouse_queue->button < 3)
1676
+ SP->mouse_status.changes = (1 << mouse_queue->button);
1677
+ else
1678
+ SP->mouse_status.changes = (0x40 << mouse_queue->button);
1679
+ }
1680
+ else if( mouse_queue->button == WHEEL_EVENT)
1681
+ SP->mouse_status.changes |= mouse_queue->action;
1682
+ }
1683
+ SP->mouse_status.x = mouse_queue->x;
1684
+ SP->mouse_status.y = mouse_queue->y;
1685
+ for (i = 0; i < PDC_MAX_MOUSE_BUTTONS; i++)
1686
+ SP->mouse_status.button[i] |= mouse_queue->button_flags;
1687
+ n_mouse_queue--;
1688
+ memmove( mouse_queue, mouse_queue + 1, n_mouse_queue * sizeof( PDC_mouse_event));
1689
+ return( 0);
1690
+ }
1691
+
1692
+ static void add_mouse_event_to_queue( const int button, const int action,
1693
+ const int x, const int y)
1694
+ {
1695
+ if( x < PDC_n_cols && y < PDC_n_rows && n_mouse_queue < MAX_MOUSE_QUEUE)
1696
+ {
1697
+ int button_flags = 0;
1698
+
1699
+ mouse_queue[n_mouse_queue].button = button;
1700
+ mouse_queue[n_mouse_queue].action = action;
1701
+ mouse_queue[n_mouse_queue].x = x;
1702
+ mouse_queue[n_mouse_queue].y = y;
1703
+ if( WinGetKeyState( HWND_DESKTOP, VK_MENU) & 0x8000)
1704
+ button_flags |= PDC_BUTTON_ALT;
1705
+
1706
+ if( WinGetKeyState( HWND_DESKTOP, VK_SHIFT) & 0x8000)
1707
+ button_flags |= PDC_BUTTON_SHIFT;
1708
+
1709
+ if( WinGetKeyState( HWND_DESKTOP, VK_CTRL) & 0x8000)
1710
+ button_flags |= PDC_BUTTON_CONTROL;
1711
+ mouse_queue[n_mouse_queue].button_flags = button_flags;
1712
+ n_mouse_queue++;
1713
+ add_key_to_queue( KEY_MOUSE);
1714
+ }
1715
+ }
1716
+
1717
+ /* 'button_count' is zero if a button hasn't been pressed; one if it
1718
+ has been; two if pressed/released (clicked); three if clicked and
1719
+ pressed again... all the way up to six if it's been triple-clicked. */
1720
+
1721
+ static int add_mouse( int button, const int action, const int x, const int y)
1722
+ {
1723
+ bool flush_events_to_queue = (button == -1 || action == BUTTON_MOVED);
1724
+ static int mouse_state = 0, button_count[PDC_MAX_MOUSE_BUTTONS];
1725
+ static int prev_x, prev_y = -1;
1726
+ const bool actually_moved = (x != prev_x || y != prev_y);
1727
+ size_t i;
1728
+
1729
+ if( action == BUTTON_RELEASED)
1730
+ {
1731
+ mouse_state &= ~(1 << button);
1732
+ if( !button_count[button - 1]) /* a release with no matching press */
1733
+ {
1734
+ add_mouse_event_to_queue( button - 1, BUTTON_RELEASED, x, y);
1735
+ return( 0);
1736
+ }
1737
+ else if( button_count[button - 1] & 1)
1738
+ {
1739
+ button_count[button - 1]++;
1740
+ if( button_count[button - 1] == 6) /* triple-click completed */
1741
+ flush_events_to_queue = TRUE;
1742
+ }
1743
+ }
1744
+ else if( action == BUTTON_PRESSED && !(button_count[button - 1] & 1))
1745
+ {
1746
+ mouse_state |= (1 << button);
1747
+ button_count[button - 1]++;
1748
+ }
1749
+ if( button >= 0)
1750
+ {
1751
+ prev_x = x;
1752
+ prev_y = y;
1753
+ }
1754
+ if( action == BUTTON_MOVED)
1755
+ {
1756
+ if( !actually_moved) /* have to move to a new character cell, */
1757
+ return( -1); /* not just a new pixel */
1758
+ button = -1; /* assume no buttons down */
1759
+ for( i = 0; i < PDC_MAX_MOUSE_BUTTONS; i++)
1760
+ if( (mouse_state >> i) & 1)
1761
+ button = (int)i;
1762
+ if( button == -1 && !(SP->_trap_mbe & REPORT_MOUSE_POSITION))
1763
+ return( -1);
1764
+ }
1765
+
1766
+ if( flush_events_to_queue)
1767
+ for( i = 0; i < PDC_MAX_MOUSE_BUTTONS; i++)
1768
+ if( button_count[i])
1769
+ {
1770
+ const int events[4] = { 0, BUTTON_CLICKED,
1771
+ BUTTON_DOUBLE_CLICKED, BUTTON_TRIPLE_CLICKED };
1772
+
1773
+ assert( button_count[i] > 0 && button_count[i] < 7);
1774
+ if( button_count[i] >= 2)
1775
+ add_mouse_event_to_queue( (int)i, events[button_count[i] / 2], prev_x, prev_y);
1776
+ if( button_count[i] & 1)
1777
+ add_mouse_event_to_queue( (int)i, BUTTON_PRESSED, prev_x, prev_y);
1778
+ button_count[i] = 0;
1779
+ }
1780
+ if( action == BUTTON_MOVED)
1781
+ add_mouse_event_to_queue( button - 1, action, x, y);
1782
+ debug_printf( "Button %d, act %d\n", button, action);
1783
+ return( 0);
1784
+ }
1785
+
1786
+ /* Note that there are two types of WM_TIMER timer messages. One type
1787
+ indicates that SP->mouse_wait milliseconds have elapsed since a mouse
1788
+ button was pressed; that's handled as described in the above notes.
1789
+ The other type, issued every half second, indicates that blinking
1790
+ should take place. For these, HandleTimer() is called (see above).
1791
+
1792
+ On WM_PAINT, we determine what parts of 'curscr' would be covered by
1793
+ the update rectangle, and run those through PDC_transform_line. */
1794
+
1795
+ static void HandleChar(const MPARAM wParam, const MPARAM lParam);
1796
+
1797
+ static MRESULT EXPENTRY WndProc (const HWND hwnd,
1798
+ const ULONG message,
1799
+ const MPARAM wParam,
1800
+ const MPARAM lParam)
1801
+ {
1802
+ int button = 0, action = 0;
1803
+ MRESULT rc = 0;
1804
+
1805
+ #if 1
1806
+ if (message != WM_TIMER)
1807
+ debug_printf("message=%08lX wParam=%p lParam=%p\n", message, wParam,lParam);
1808
+ #endif
1809
+ switch (message)
1810
+ {
1811
+ case WM_CREATE:
1812
+ {
1813
+ HWND frame = WinQueryWindow(hwnd, QW_PARENT);
1814
+ HWND menu = WinWindowFromID(frame, FID_SYSMENU);
1815
+ MENUITEM item;
1816
+ MRESULT mr;
1817
+ SHORT id;
1818
+
1819
+ /* Amend the system menu */
1820
+ mr = WinSendMsg(menu, MM_ITEMIDFROMPOSITION, MPFROMSHORT(0), NULL);
1821
+ id = SHORT1FROMMR(mr);
1822
+ memset(&item, 0, sizeof(item));
1823
+ WinSendMsg(menu, MM_QUERYITEM, MPFROM2SHORT(id, FALSE), &item);
1824
+ menu = item.hwndSubMenu;
1825
+ memset(&item, 0, sizeof(item));
1826
+ item.iPosition = MIT_END;
1827
+ item.afStyle = MIS_SEPARATOR;
1828
+ item.afAttribute = 0;
1829
+ item.id = 0;
1830
+ WinSendMsg(menu, MM_INSERTITEM, &item, "");
1831
+ memset(&item, 0, sizeof(item));
1832
+ item.iPosition = MIT_END;
1833
+ item.afStyle = MIS_TEXT;
1834
+ item.afAttribute = 0;
1835
+ item.id = WM_CHOOSE_FONT;
1836
+ WinSendMsg(menu, MM_INSERTITEM, &item, "Choose Font");
1837
+
1838
+ WinStartTimer(PDC_hab, hwnd, TIMER_ID_FOR_BLINKING, 500);
1839
+ }
1840
+ break;
1841
+
1842
+ case WM_MINMAXFRAME:
1843
+ {
1844
+ PSWP swp = wParam;
1845
+ debug_printf( "Flags = %04X\n", swp->fl);
1846
+ minimized = (swp->fl & SWP_MINIMIZE) != 0;
1847
+ }
1848
+ break;
1849
+
1850
+ case WM_SIZE:
1851
+ {
1852
+ SHORT cx = SHORT1FROMMP(lParam);
1853
+ SHORT cy = SHORT2FROMMP(lParam);
1854
+
1855
+ debug_printf("Size: recv x = %d y = %d\n",
1856
+ SHORT1FROMMP(lParam), SHORT2FROMMP(lParam));
1857
+ HandleSize( hwnd, cx, cy);
1858
+ }
1859
+ break;
1860
+
1861
+ case WM_CLOSE:
1862
+ if( !PDC_get_function_key( FUNCTION_KEY_SHUT_DOWN))
1863
+ {
1864
+ final_cleanup( );
1865
+ /*PDC_bDone = TRUE;*/
1866
+ exit( 0);
1867
+ }
1868
+ else
1869
+ add_key_to_queue( PDC_get_function_key( FUNCTION_KEY_SHUT_DOWN));
1870
+ return 0;
1871
+
1872
+ case WM_COMMAND:
1873
+ case WM_SYSCOMMAND:
1874
+ switch (SHORT1FROMMP(wParam))
1875
+ {
1876
+ case WM_CHOOSE_FONT:
1877
+ if( PDC_choose_a_new_font(PDC_font_name, &PDC_font_size))
1878
+ PDC_set_font_box(hwnd);
1879
+ break;
1880
+
1881
+ default:
1882
+ return WinDefWindowProc( hwnd, message, wParam, lParam);
1883
+ }
1884
+ break;
1885
+
1886
+ case WM_MOUSEMOVE:
1887
+ {
1888
+ int mouse_x, mouse_y;
1889
+ PDC_pixel_to_screen(SHORT1FROMMP(wParam), SHORT2FROMMP(wParam),
1890
+ &mouse_x, &mouse_y);
1891
+
1892
+ add_mouse( 0, BUTTON_MOVED, mouse_x, mouse_y);
1893
+ }
1894
+ return 0;
1895
+
1896
+ case WM_BUTTON1DOWN:
1897
+ WinSetActiveWindow(HWND_DESKTOP, hwnd);
1898
+ button = 1;
1899
+ action = BUTTON_PRESSED;
1900
+ break;
1901
+
1902
+ case WM_BUTTON1UP:
1903
+ button = 1;
1904
+ action = BUTTON_RELEASED;
1905
+ break;
1906
+
1907
+ case WM_BUTTON3DOWN:
1908
+ WinSetActiveWindow(HWND_DESKTOP, hwnd);
1909
+ button = 3;
1910
+ action = BUTTON_PRESSED;
1911
+ break;
1912
+
1913
+ case WM_BUTTON3UP:
1914
+ button = 3;
1915
+ action = BUTTON_RELEASED;
1916
+ break;
1917
+
1918
+ case WM_BUTTON2DOWN:
1919
+ WinSetActiveWindow(HWND_DESKTOP, hwnd);
1920
+ button = 2;
1921
+ action = BUTTON_PRESSED;
1922
+ break;
1923
+
1924
+ case WM_BUTTON2UP:
1925
+ button = 2;
1926
+ action = BUTTON_RELEASED;
1927
+ break;
1928
+
1929
+ case WM_PAINT:
1930
+ HandlePaint(hwnd);
1931
+ break;
1932
+
1933
+ case WM_CHAR:
1934
+ HandleChar(wParam, lParam);
1935
+ break;
1936
+
1937
+ case WM_TRANSLATEACCEL:
1938
+ /* Translate no accelerators, but pass all function keys unaltered */
1939
+ break;
1940
+
1941
+ case WM_TIMER:
1942
+ switch (SHORT1FROMMP(wParam))
1943
+ {
1944
+ case TIMER_ID_FOR_MOUSE:
1945
+ WinStopTimer(PDC_hab, hwnd, TIMER_ID_FOR_MOUSE);
1946
+ add_mouse( -1, -1, -1, -1);
1947
+ break;
1948
+
1949
+ case TIMER_ID_FOR_BLINKING:
1950
+ if( SP && curscr && curscr->_y)
1951
+ {
1952
+ /* blink the blinking text */
1953
+ HandleTimer();
1954
+ }
1955
+ break;
1956
+
1957
+ default:
1958
+ return WinDefWindowProc( hwnd, message, wParam, lParam);
1959
+ }
1960
+ break;
1961
+
1962
+ default:
1963
+ return WinDefWindowProc( hwnd, message, wParam, lParam);
1964
+ }
1965
+
1966
+ if (button != 0)
1967
+ {
1968
+ int col, row;
1969
+ PDC_pixel_to_screen(SHORT1FROMMP(wParam), SHORT2FROMMP(wParam),
1970
+ &col, &row);
1971
+ add_mouse(button, action, col, row);
1972
+ if (action == BUTTON_PRESSED)
1973
+ WinSetCapture(HWND_DESKTOP, hwnd);
1974
+ else
1975
+ WinSetCapture(HWND_DESKTOP, NULLHANDLE);
1976
+ WinStartTimer(PDC_hab, hwnd, TIMER_ID_FOR_MOUSE, SP->mouse_wait);
1977
+ }
1978
+ return rc;
1979
+ }
1980
+
1981
+ static void HandleChar(const MPARAM wParam, const MPARAM lParam)
1982
+ {
1983
+ USHORT fsflags = SHORT1FROMMP(wParam);
1984
+ UCHAR ucrepeat = CHAR3FROMMP(wParam);
1985
+ UCHAR ucscancode = CHAR4FROMMP(wParam);
1986
+ ULONG usch = SHORT1FROMMP(lParam);
1987
+ USHORT usvk = SHORT2FROMMP(lParam);
1988
+ const BOOL shift_pressed = (fsflags & KC_SHIFT) != 0;
1989
+ const BOOL ctrl_pressed = (fsflags & KC_CTRL) != 0;
1990
+ const BOOL alt_pressed = (fsflags & KC_ALT) != 0;
1991
+ const BOOL num_lock = WinGetKeyState( HWND_DESKTOP, VK_NUMLOCK) & 1;
1992
+
1993
+ #if 0
1994
+ printf("fsflags = 0x%04X ucrepeat = %u ucscancode = %u usch = 0x%04X usvk = 0x%04X\n",
1995
+ fsflags, ucrepeat, ucscancode, usch, usvk); fflush(stdout);
1996
+ #endif
1997
+
1998
+ SP->key_modifiers = 0;
1999
+ /* Save the key modifiers if required. Do this first to allow to
2000
+ detect e.g. a pressed CTRL key after a hit of NUMLOCK. */
2001
+
2002
+ if( alt_pressed)
2003
+ SP->key_modifiers |= PDC_KEY_MODIFIER_ALT;
2004
+
2005
+ if( shift_pressed)
2006
+ SP->key_modifiers |= PDC_KEY_MODIFIER_SHIFT;
2007
+
2008
+ if( ctrl_pressed)
2009
+ SP->key_modifiers |= PDC_KEY_MODIFIER_CONTROL;
2010
+
2011
+ if( num_lock)
2012
+ SP->key_modifiers |= PDC_KEY_MODIFIER_NUMLOCK;
2013
+
2014
+ if( ucrepeat > 0)
2015
+ SP->key_modifiers |= PDC_KEY_MODIFIER_REPEAT;
2016
+
2017
+ if ((fsflags & (KC_SCANCODE | KC_KEYUP | KC_LONEKEY)) == (KC_SCANCODE | KC_KEYUP) &&
2018
+ (ucscancode == 0x38 || ucscancode == 0x5E) &&
2019
+ numpad_unicode_value != 0)
2020
+ {
2021
+ /* Alt keys */
2022
+ /* Place on queue but not if it would match a Curses special key */
2023
+ if (numpad_unicode_value < KEY_MIN || KEY_MAX <= numpad_unicode_value)
2024
+ add_key_to_queue(numpad_unicode_value);
2025
+ numpad_unicode_value = 0;
2026
+ return;
2027
+ }
2028
+
2029
+ /* Keys that are indexed by scan code */
2030
+ if ((fsflags & (KC_SCANCODE | KC_KEYUP)) == KC_SCANCODE &&
2031
+ ucscancode < sizeof(scan_kptab)/sizeof(scan_kptab[0]))
2032
+ {
2033
+ const KPTAB *kptr = &scan_kptab[ucscancode];
2034
+ /* If KP_NUMLOCK, num lock inverts shift */
2035
+ BOOL shift_inv = num_lock && (kptr->flags & KP_NUMLOCK);
2036
+ unsigned key;
2037
+
2038
+ if( alt_pressed)
2039
+ key = kptr->alt;
2040
+ else if( ctrl_pressed)
2041
+ key = kptr->control;
2042
+ else if( shift_pressed ^ shift_inv)
2043
+ key = kptr->shift;
2044
+ else
2045
+ key = kptr->normal;
2046
+ if (key != 0xFFFF && !(kptr->flags & KP_SHIFT))
2047
+ {
2048
+ /* CTRL-x and ALT-x should follow the letter on French AZERTY and
2049
+ German QWERTZ layouts. Although KC_CHAR is not set, we must
2050
+ rely on usch to detect such layouts. */
2051
+ if (1 <= key && key <= 26)
2052
+ {
2053
+ if (('A' <= usch && usch <= 'Z') || ('a' <= usch && usch <= 'z'))
2054
+ key = usch & 0x1F;
2055
+ }
2056
+ else if (ALT_A <= key && key <= ALT_Z)
2057
+ {
2058
+ if ('A' <= usch && usch <= 'Z')
2059
+ key = ALT_A - 'A' + usch;
2060
+ else if ('a' <= usch && usch <= 'z')
2061
+ key = ALT_A - 'a' + usch;
2062
+ }
2063
+ add_key_to_queue(key);
2064
+ return;
2065
+ }
2066
+ }
2067
+
2068
+ /* Shift keys taken as single keys */
2069
+ if ((fsflags & (KC_SCANCODE | KC_KEYUP | KC_LONEKEY)) == (KC_SCANCODE | KC_KEYUP | KC_LONEKEY) &&
2070
+ ucscancode < sizeof(scan_kptab)/sizeof(scan_kptab[0]))
2071
+ {
2072
+ const KPTAB *kptr = &scan_kptab[ucscancode];
2073
+ if (kptr->flags & KP_SHIFT)
2074
+ {
2075
+ add_key_to_queue(kptr->normal);
2076
+ return;
2077
+ }
2078
+ }
2079
+
2080
+ if ((fsflags & (KC_VIRTUALKEY | KC_KEYUP)) == KC_VIRTUALKEY &&
2081
+ usvk < sizeof(kptab)/sizeof(kptab[0]))
2082
+ {
2083
+ const KPTAB *kptr = &kptab[usvk];
2084
+ unsigned key;
2085
+
2086
+ if( alt_pressed)
2087
+ key = kptr->alt;
2088
+ else if( ctrl_pressed)
2089
+ key = kptr->control;
2090
+ else if( shift_pressed)
2091
+ key = kptr->shift;
2092
+ else
2093
+ key = kptr->normal;
2094
+ if (key != 0xFFFF)
2095
+ {
2096
+ add_key_to_queue(key);
2097
+ return;
2098
+ }
2099
+ }
2100
+
2101
+ if ((fsflags & (KC_CHAR | KC_KEYUP)) == KC_CHAR)
2102
+ {
2103
+ #ifdef PDC_WIDE
2104
+ /* WinSetCp(hmq, 1200) doesn't work, and neither does translation to code
2105
+ page 1200.
2106
+ Unicode translation is handled as follows:
2107
+ * If a table according to kbd_unicode_tables is known, use it
2108
+ * Otherwise, translate to code page 1004; that way, at least up to U+00FF
2109
+ always works. */
2110
+ if (0x80 <= usch && usch <= 0xFF)
2111
+ {
2112
+ if (kbd_unicode != NULL)
2113
+ usch = kbd_unicode[usch - 0x80];
2114
+ else
2115
+ usch = WinCpTranslateChar(PDC_hab, WinQueryCp(PDC_hmq), usch, 1004);
2116
+ }
2117
+ #endif
2118
+ add_key_to_queue(usch);
2119
+ return;
2120
+ }
2121
+ }
2122
+
2123
+ /* By default, the user cannot resize the window. This is because
2124
+ many apps don't handle KEY_RESIZE, and one can get odd behavior
2125
+ in such cases. There are two ways around this. If you call
2126
+ PDC_set_resize_limits( ) before initwin( ), telling WinGUI exactly how
2127
+ large/small the window can be, the window will be user-resizable. Or
2128
+ you can set ttytype[0...3] to contain the resize limits. A call such as
2129
+
2130
+ PDC_set_resize_limits( 42, 42, 135, 135);
2131
+
2132
+ will result in the window being fixed at 42 lines by 135 columns.
2133
+
2134
+ PDC_set_resize_limits( 20, 50, 70, 200);
2135
+
2136
+ will mean the window can have 20 to 50 lines and 70 to 200 columns.
2137
+ The user will be able to resize the window freely within those limits.
2138
+ See 'newtest.c' (in the 'demos' folder) for an example. */
2139
+
2140
+ static int set_up_window( void)
2141
+ {
2142
+ const int ID_MAIN = 1;
2143
+ ULONG window_style;
2144
+ BOOL rval;
2145
+ char WindowTitle[FILENAME_MAX];
2146
+ int n_default_columns = 80;
2147
+ int n_default_rows = 25;
2148
+ int xloc = -9999, yloc = -9999;
2149
+
2150
+ PDC_hab = WinInitialize(0);
2151
+ PDC_hmq = WinCreateMsgQueue(PDC_hab, 0);
2152
+ if (PDC_hmq == NULLHANDLE)
2153
+ {
2154
+ const ULONG last_error = WinGetLastError( PDC_hab);
2155
+
2156
+ debug_printf( "WinCreateMsgQueue failed: GetLastError = %lx\n", last_error);
2157
+ goto error;
2158
+ }
2159
+
2160
+ #ifdef PDC_WIDE
2161
+ {
2162
+ /* Select a map to convert incoming key presses to Unicode */
2163
+ ULONG code_page = WinQueryCp(PDC_hmq);
2164
+ unsigned i;
2165
+ kbd_unicode = NULL;
2166
+ for (i = 0; i < sizeof(kbd_unicode_tables)/sizeof(kbd_unicode_tables[0]); ++i)
2167
+ {
2168
+ if (kbd_unicode_tables[i].code_page == code_page)
2169
+ {
2170
+ kbd_unicode = kbd_unicode_tables[i].map;
2171
+ break;
2172
+ }
2173
+ }
2174
+ }
2175
+ #endif
2176
+
2177
+ rval = WinRegisterClass(PDC_hab, (PCSZ)"PDCurses.main", WndProc, CS_SIZEREDRAW, 0L);
2178
+ if( !rval)
2179
+ {
2180
+ const ULONG last_error = WinGetLastError( PDC_hab);
2181
+
2182
+ debug_printf( "WinRegisterClass failed: GetLastError = %lx\n", last_error);
2183
+ goto error;
2184
+ }
2185
+
2186
+ get_app_name(WindowTitle, sizeof(WindowTitle));
2187
+
2188
+ /* fixed-size window: looks "normal", but w/o a maximize box */
2189
+ window_style = FCF_TITLEBAR | FCF_SYSMENU | FCF_MINBUTTON | FCF_TASKLIST
2190
+ | FCF_SHELLPOSITION;
2191
+ if( min_lines != max_lines || min_cols != max_cols)
2192
+ window_style |= FCF_MAXBUTTON | FCF_SIZEBORDER;
2193
+
2194
+ get_default_sizes_from_registry( &n_default_columns, &n_default_rows,
2195
+ &xloc, &yloc);
2196
+
2197
+ PDC_hWnd = WinCreateStdWindow(HWND_DESKTOP, WS_VISIBLE, &window_style,
2198
+ (PCSZ)"PDCurses.main", (PCSZ)WindowTitle, 0L, 0, ID_MAIN, NULL);
2199
+ if (PDC_hWnd == NULLHANDLE)
2200
+ {
2201
+ const ULONG last_error = WinGetLastError( PDC_hab);
2202
+
2203
+ debug_printf( "WinCreateStdWindow failed; GetLastError = %lx\n", last_error);
2204
+ goto error;
2205
+ }
2206
+ PDC_resize_screen(n_default_rows, n_default_columns);
2207
+ if (xloc > -9999 && yloc > -9999)
2208
+ WinSetWindowPos(PDC_hWnd, NULLHANDLE, xloc, yloc, 0, 0, SWP_MOVE);
2209
+
2210
+ return 0;
2211
+
2212
+ error:
2213
+ WinDestroyWindow( PDC_hWnd);
2214
+ WinDestroyMsgQueue( PDC_hmq);
2215
+ WinTerminate( PDC_hab);
2216
+ PDC_hWnd = NULLHANDLE;
2217
+ PDC_hmq = NULLHANDLE;
2218
+ PDC_hab = NULLHANDLE;
2219
+ return( -1);
2220
+ }
2221
+
2222
+ /* open the physical screen -- allocate SP, miscellaneous intialization,
2223
+ and may save the existing screen for later restoration.
2224
+
2225
+ Deciding on a for-real maximum screen size has proven difficult.
2226
+ But there is really no particularly good reason to set such a maximum.
2227
+ If one does, you get some tricky issues: suppose the user drags the
2228
+ window to create a screen larger than MAX_LINES or MAX_COLUMNS? My
2229
+ hope is to evade that problem by just setting those constants to be...
2230
+ well... unrealistically large. */
2231
+
2232
+ #define MAX_LINES 50000
2233
+ #define MAX_COLUMNS 50000
2234
+
2235
+ int PDC_scr_open(void)
2236
+ {
2237
+ PDC_LOG(("PDC_scr_open() - called\n"));
2238
+
2239
+ COLORS = N_COLORS; /* should give this a try and see if it works! */
2240
+ if (!SP || PDC_init_palette( ))
2241
+ return ERR;
2242
+
2243
+ debug_printf( "colors alloc\n");
2244
+ PDC_bDone = FALSE;
2245
+ SP->mouse_wait = PDC_CLICK_PERIOD;
2246
+ SP->visibility = 0; /* no cursor, by default */
2247
+ SP->curscol = SP->cursrow = 0;
2248
+ SP->audible = TRUE;
2249
+ SP->mono = FALSE;
2250
+ SP->termattrs = A_COLOR | WA_ITALIC | WA_UNDERLINE | WA_LEFT | WA_RIGHT |
2251
+ WA_REVERSE | WA_STRIKEOUT | WA_TOP | WA_BLINK | WA_DIM | WA_BOLD;
2252
+
2253
+ if( set_up_window( ))
2254
+ {
2255
+ fprintf( stderr, "set_up_window failed\n");
2256
+ return ERR;
2257
+ }
2258
+ debug_printf( "Back from set_up_window\n");
2259
+ while( !PDC_get_rows( )) { /* wait for screen to be drawn and */
2260
+ QMSG qmsg; /* actual size to be determined */
2261
+ if (WinPeekMsg( PDC_hab, &qmsg, NULLHANDLE, 0, 0, PM_REMOVE)) {
2262
+ WinDispatchMsg(PDC_hab, &qmsg);
2263
+ }
2264
+ }
2265
+
2266
+ debug_printf( "Back from PDC_get_rows\n");
2267
+ SP->lines = PDC_get_rows();
2268
+ SP->cols = PDC_get_columns();
2269
+
2270
+ if (SP->lines < 2 || SP->lines > MAX_LINES
2271
+ || SP->cols < 2 || SP->cols > MAX_COLUMNS)
2272
+ {
2273
+ fprintf(stderr, "LINES value must be >= 2 and <= %d: got %d\n",
2274
+ MAX_LINES, SP->lines);
2275
+ fprintf(stderr, "COLS value must be >= 2 and <= %d: got %d\n",
2276
+ MAX_COLUMNS, SP->cols);
2277
+
2278
+ return ERR;
2279
+ }
2280
+
2281
+ /* PDC_reset_prog_mode(); doesn't do anything anyway */
2282
+ PDC_set_function_key( FUNCTION_KEY_COPY, 0);
2283
+ debug_printf( "...we're done\n");
2284
+ return OK;
2285
+ }
2286
+
2287
+ /* the core of resize_term() */
2288
+
2289
+ int PDC_resize_screen(int nlines, int ncols)
2290
+ {
2291
+ if( !PDC_hWnd) /* window hasn't been created yet; we're */
2292
+ { /* specifying its size before doing so */
2293
+ PDC_n_rows = nlines;
2294
+ PDC_n_cols = ncols;
2295
+ return OK;
2296
+ }
2297
+ SP->resized = FALSE;
2298
+ debug_printf( "Incoming: %d %d\n", nlines, ncols);
2299
+ if( nlines >= 2 && ncols >= 2 && PDC_cxChar && PDC_cyChar && PDC_hWnd)
2300
+ {
2301
+ RECTL rect, new_rect;
2302
+
2303
+ /* Get the current window extent */
2304
+ WinQueryWindowRect(PDC_hWnd, &rect);
2305
+
2306
+ /* Get the new window extent */
2307
+ new_rect.xLeft = 0;
2308
+ new_rect.xRight = ncols * PDC_cxChar;
2309
+ new_rect.yBottom = 0;
2310
+ new_rect.yTop = nlines * PDC_cyChar;
2311
+ WinCalcFrameRect(PDC_hWnd, &new_rect, FALSE);
2312
+
2313
+ /* Resize the window */
2314
+ if (rect.xRight - rect.xLeft != new_rect.xRight - new_rect.xLeft
2315
+ || rect.yTop - rect.yBottom != new_rect.yTop - new_rect.yBottom)
2316
+ {
2317
+ RECTL dtop_rect;
2318
+ int xsize = new_rect.xRight - new_rect.xLeft;
2319
+ int ysize = new_rect.yTop - new_rect.yBottom;
2320
+ int xpos, ypos;
2321
+
2322
+ add_resize_key = 0;
2323
+
2324
+ /* Center on the desktop, but do not place the top higher than
2325
+ the top of the desktop */
2326
+ WinQueryWindowRect(HWND_DESKTOP, &dtop_rect);
2327
+ dtop_rect.xRight -= dtop_rect.xLeft;
2328
+ dtop_rect.yTop -= dtop_rect.yBottom;
2329
+ xpos = (dtop_rect.xRight - xsize) / 2;
2330
+ if (ysize > dtop_rect.yTop)
2331
+ ypos = dtop_rect.yTop - ysize;
2332
+ else
2333
+ ypos = (dtop_rect.yTop - ysize) / 2;
2334
+
2335
+ WinSetWindowPos(PDC_hWnd, NULLHANDLE,
2336
+ xpos, ypos, xsize, ysize,
2337
+ SWP_MOVE | SWP_SIZE | SWP_SHOW);
2338
+ }
2339
+ }
2340
+ return OK;
2341
+ }
2342
+
2343
+ void PDC_reset_prog_mode(void)
2344
+ {
2345
+ PDC_LOG(("PDC_reset_prog_mode() - called.\n"));
2346
+ #ifdef NOT_CURRENTLY_IN_USE
2347
+ if( PDC_bDone == FALSE && PDC_hWnd)
2348
+ {
2349
+ PDC_bDone = TRUE;
2350
+ WinSetActiveWindow( HWND_DESKTOP, PDC_hWnd);
2351
+ }
2352
+ #endif
2353
+ }
2354
+
2355
+ void PDC_reset_shell_mode(void)
2356
+ {
2357
+ }
2358
+
2359
+ void PDC_restore_screen_mode(int i)
2360
+ {
2361
+ INTENTIONALLY_UNUSED_PARAMETER( i);
2362
+ }
2363
+
2364
+ void PDC_save_screen_mode(int i)
2365
+ {
2366
+ INTENTIONALLY_UNUSED_PARAMETER( i);
2367
+ }
2368
+
2369
+ bool PDC_can_change_color(void)
2370
+ {
2371
+ return TRUE;
2372
+ }
2373
+
2374
+ int PDC_color_content( int color, int *red, int *green, int *blue)
2375
+ {
2376
+ LONG col = PDC_get_palette_entry( color);
2377
+
2378
+ *red = DIVROUND(((col >> 0) & 0xFF) * 1000, 255);
2379
+ *green = DIVROUND(((col >> 8) & 0xFF) * 1000, 255);
2380
+ *blue = DIVROUND(((col >> 16) & 0xFF) * 1000, 255);
2381
+
2382
+ return OK;
2383
+ }
2384
+
2385
+ int PDC_init_color( int color, int red, int green, int blue)
2386
+ {
2387
+ const LONG new_rgb = (DIVROUND(red * 255, 1000) << 0)
2388
+ | (DIVROUND(green * 255, 1000) << 8)
2389
+ | (DIVROUND(blue * 255, 1000) << 16);
2390
+
2391
+ PDC_set_palette_entry( color, new_rgb);
2392
+ return OK;
2393
+ }
2394
+
2395
+ /* Convert screen to pixel coordinates */
2396
+ void PDC_screen_to_pixel(int sx, int sy, RECTL *rect)
2397
+ {
2398
+ RECTL client_rect;
2399
+
2400
+ /* Determine origin of client rectangle */
2401
+ WinQueryWindowRect( PDC_hWnd, &client_rect);
2402
+ WinCalcFrameRect( PDC_hWnd, &client_rect, TRUE);
2403
+
2404
+ /* Determine extent of character cell */
2405
+ rect->xLeft = client_rect.xLeft + sx * PDC_cxChar;
2406
+ rect->yBottom = client_rect.yBottom + (PDC_n_rows - 1 - sy) * PDC_cyChar;
2407
+ rect->xRight = rect->xLeft + PDC_cxChar;
2408
+ rect->yTop = rect->yBottom + PDC_cyChar;
2409
+ }
2410
+
2411
+ /* Convert pixel to screen coordinates */
2412
+ void PDC_pixel_to_screen(int px, int py, int *sx, int *sy)
2413
+ {
2414
+ RECTL client_rect;
2415
+
2416
+ /* Determine origin of client rectangle */
2417
+ WinQueryWindowRect( PDC_hWnd, &client_rect);
2418
+ WinCalcFrameRect( PDC_hWnd, &client_rect, TRUE);
2419
+
2420
+ /* Determine coordinates of character cell */
2421
+ *sx = (px - client_rect.xLeft) / PDC_cxChar;
2422
+ *sy = PDC_n_rows - 1 - (py - client_rect.yBottom) / PDC_cyChar;
2423
+
2424
+ /* Keep screen coordinates in bounds */
2425
+ if (*sx < 0)
2426
+ *sx = 0;
2427
+ if (*sx >= PDC_n_cols)
2428
+ *sx = PDC_n_cols - 1;
2429
+ if (*sy < 0)
2430
+ *sy = 0;
2431
+ if (*sy >= PDC_n_rows)
2432
+ *sy = PDC_n_rows - 1;
2433
+ }