CHANGES.txt 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283
  1. next
  2. - added PTCKEY_LESS, which represents the <> key (the 102th key on
  3. international PC keyboards)
  4. 0.99.16
  5. - added and implemented SetMousePos in unit ptcmouse
  6. - applied patch by Nicolas QSO <[email protected]> that fixes the handling of
  7. international keyboards in Xvnc sessions.
  8. - added support for macOS via the Cocoa API. Tested in macOS 11.6.1 Big Sur on
  9. a Mac mini with an Apple M1 chip. Supported features:
  10. fixed windowed output
  11. keyboard input
  12. the ptcgraph and ptccrt units also work
  13. Features that are still missing:
  14. mouse input
  15. fullscreen output
  16. resizable windowed output
  17. OpenGL support
  18. returning a mode list
  19. - added support for the F13..F35 function keys (via the newly introduced
  20. PTCKEY_F13..PTCKEY_F35 constants) on platforms that are capable of
  21. recognizing them:
  22. X11 supports F1..F35
  23. Windows supports F1..F24
  24. macOS supports F1..F19 (and some Apple keyboards have them)
  25. 0.99.15
  26. - dead key support under Windows and X11 (via XIM)
  27. - more character scripts (Latin 2, Latin 3, Latin 4, Latin 9, Katakana,
  28. Arabic, Greek with diacritics, Technical, Special, Publishing, APL, Hebrew,
  29. Thai, Currency signs - Korean Won sign and Euro sign) are now recognized and
  30. converted to Unicode in the X11 console. Previously only Latin 1, Greek
  31. without diacritics and Cyrillic were supported, but even they didn't work in
  32. recent ptcpas versions, due to regressions, which are now fixed as well.
  33. - use an alternative method (via GetKeyState) for obtaining the Alt, Shift and
  34. Control key modifier status under Windows; This eliminates a problem, where
  35. the alt key appears "stuck", after alt-tabbing away from the application,
  36. then focusing back to it with a mouse click.
  37. - new key modifiers added for distinguishing between left and right shift,
  38. control and alt, the status of num lock, caps lock and scroll lock and for
  39. distinguishing right keys (e.g. right shift, right alt, right ctrl),
  40. numpad keys and dead keys. All of them are implemented as elements in the
  41. ModifierKeys set, which was added to IPTCKeyEvent. They can be checked,
  42. for example, with:
  43. if pmkNumLockActive in key_event.ModifierKeys then
  44. ...
  45. The following modifiers are available:
  46. pmkAlt, pmkShift, pmkControl, pmkLeftAlt, pmkRightAlt, pmkLeftShift,
  47. pmkRightShift, pmkLeftControl, pmkRightControl, pmkNumLockActive,
  48. pmkNumLockPressed, pmkCapsLockActive, pmkCapsLockPressed,
  49. pmkScrollLockActive, pmkScrollLockPressed, pmkRightKey, pmkNumPadKey,
  50. pmkDeadKey
  51. - there is now a MoveMouseTo method, added to the console. It can be used to
  52. warp the mouse cursor to a different location.
  53. - added support for a relative mouse mode. It supports continuous mouse
  54. motion, not limited within the boundaries of the current window. It is
  55. usually used with an invisible cursor. It is activated with the
  56. 'relative mouse on' console option, and turned off with the option
  57. 'relative mouse off'.
  58. - the number of mouse buttons supported has been increased to 31. There is now
  59. support for a horizontal and a vertical mouse wheel, which are treated as
  60. buttons. Overall, this is the default button arrangement:
  61. PTCMouseButton1 - left mouse button
  62. PTCMouseButton2 - right mouse button
  63. PTCMouseButton3 - middle mouse button
  64. PTCMouseButton4 - mouse wheel rotated forward (scroll up)
  65. PTCMouseButton5 - mouse wheel rotated backward (scroll down)
  66. PTCMouseButton6 - mouse horizontal scroll wheel rotated left
  67. PTCMouseButton7 - mouse horizontal scroll wheel rotated right
  68. PTCMouseButton8 - "back" button ("X button 1")
  69. PTCMouseButton9 - "forward" button ("X button 2")
  70. The remaining mouse buttons are hardware specific and will vary, depending
  71. on the actual mouse (provided it has that many buttons at all).
  72. - ptccrt now supports several keyboard input modes, which can be set by
  73. changing the new global variable KeyMode. The following values are supported:
  74. kmTP7 - behaves like Turbo Pascal 7's CRT unit under DOS. This is the
  75. default value. Previous versions of ptccrt always behaved this
  76. way. Since TP7's CRT unit doesn't support the Enhanced
  77. Keyboard, several keys (e.g. F11 and F12) and key combinations
  78. are intentionally not recognized for compatibility reasons.
  79. kmGO32 - behaves like Free Pascal's CRT unit under DOS (GO32V2). It has
  80. Enhanced Keyboard support.
  81. kmFPWINCRT - behaves like Free Pascal's CRT unit under Windows. Similar to
  82. kmGO32, but emulates several incompatibilities that the
  83. Windows CRT unit has with the GO32V2 CRT unit. Not all of them
  84. are emulated though, since some of them can be considered
  85. bugs.
  86. - ptcgraph now has a global AnsiString variable WindowTitle, which allows you to
  87. set the window title, before calling InitGraph
  88. - ptcgraph was extended to also support resolutions, different than the ones,
  89. defined by VESA. This means that you can now use ptcgraph with resolutions,
  90. higher than 1280x1024 and widescreen (e.g. 16:9 or 16:10) aspect ratios, as
  91. long as they are supported by the display. For this, you need to call
  92. QueryAdapterInfo and walk through the linked list of modes, to choose a
  93. mode, then pass its DriverNumber and ModeNumber to InitGraph. Here's an
  94. example:
  95. uses
  96. ptcgraph, ptccrt;
  97. var
  98. m: PModeInfo;
  99. gd, gm: Integer;
  100. begin
  101. Writeln('List of all modes:');
  102. m := QueryAdapterInfo;
  103. while m <> nil do
  104. begin
  105. Writeln(m^.MaxX+1, ' x ', m^.MaxY+1, ' x ', m^.MaxColor);
  106. m := m^.next;
  107. end;
  108. Writeln('Now let''s find 1920x1080 with 16-bit colour...');
  109. m := QueryAdapterInfo;
  110. while m <> nil do
  111. begin
  112. if (m^.MaxX = (1920-1)) and (m^.MaxY = (1080-1)) and (m^.MaxColor = 65536) then
  113. begin
  114. InitGraph(m^.DriverNumber, m^.ModeNumber, '');
  115. SetColor($FFFF);
  116. OutTextXY(0, 0, 'Hurrah! Full HD 1920x1080 mode is available!');
  117. ReadKey;
  118. CloseGraph;
  119. Halt;
  120. end;
  121. m := m^.next;
  122. end;
  123. Writeln('Mode not found in list!');
  124. end.
  125. 0.99.14.1
  126. - fixed X11 middle and right mouse button mapping. Previously, the right mouse
  127. button and the middle mouse button were swapped, compared to Windows and DOS
  128. and contrary to the documentation.
  129. 0.99.14
  130. - added new unit ptcmouse for use with ptcgraph & ptccrt applications. It is
  131. similar to the winmouse and msmouse units.
  132. - support for resizable windows extended. Your application now receives
  133. a new event IPTCResizeEvent and is allowed to call a new method called
  134. InternalResize, which adjusts the console's width and height according to
  135. the new window size. The previous behaviour where your application's image
  136. is scaled, without it realizing that the resolution is changed still works
  137. if you don't call InternalResize (or when you use ptcgraph for that matter)
  138. - added support for intercepting the windows close events. When using unit ptc
  139. directly, this is enabled by sending the option 'intercept window close' to
  140. the console and then handling the newly introduced IPTCCloseEvent event.
  141. When using ptcgraph and ptccrt, closing the window emulates pressing Ctrl-C,
  142. in other words, your application will receive the #3 key code via ReadKey.
  143. - fixed crash in hermes (the pixel conversion library, used internally by
  144. PTCPas), encountered when converting from indexed 8bpp to 32bpp on amd64,
  145. when the surface width is not multiple of 8
  146. - even more X11 keyboard fixes
  147. - removed the debug log (grlog.txt) written by programs that use ptcgraph
  148. 0.99.13
  149. - added support for OpenGL under X11 and Windows. You can now use PTCPas to
  150. initialize OpenGL and handle events for you in a multiplatform way (similar
  151. to GLUT or SDL). See ptcgl.pp and ptcgl2.pp in the example directory.
  152. - X11 keyboard handling improvements:
  153. - added support for the numpad keys
  154. - typematic repeat (i.e. when you press a key and hold it down) now sends
  155. only repeating key press events, instead of repeating pairs of key
  156. release + key press. This makes it possible to detect auto-repeat and is
  157. also the way that Windows behaves.
  158. 0.99.12
  159. - pressing Alt or F10 under Windows no longer pauses the application.
  160. - API changes:
  161. - PTC classes have been made descendants of TInterfacedObject and are now
  162. accessed via interfaces. This simplifies memory management, because
  163. objects are now reference counted and automatically freed when they are
  164. no longer used. Unfortunately, this breaks existing code. However it's
  165. relatively easy to fix. See the files INTF-CHANGES-0.99.12.txt and
  166. INTF-CHANGES-FAQ-0.99.12.txt for details.
  167. 0.99.11
  168. - added ptcgraph - an implementation of FPC's BGI-compatible graph unit on top
  169. of PTCPas. It should work on all platforms, supported by PTCPas, except for
  170. DOS (because it doesn't have threads)
  171. - VBE console improvements:
  172. - support for double buffering with video page flipping
  173. - console update synchronized with the vertical retrace
  174. - automatic fallback to windowed mode, if initializing LFB fails. This
  175. results in better compatibility with NTVDM and other environments that
  176. would otherwise require adding the 'disable lfb' option to ptcpas.cfg.
  177. - support VBE 3+ separate LFB and Windowed color masks for direct color
  178. modes. This might fix some wrong color bugs in LFB mode on some modern
  179. VBE 3+ video cards.
  180. - fixed a bug in the X11 event handling that caused unnecessary high CPU use
  181. while waiting for an event
  182. 0.99.10
  183. - fpc 2.4.0 support
  184. - Win64 DirectX support
  185. - X11 DGA 2.0 support
  186. - VBE 2+ LFB support. Enabled by default. Offers a great performance
  187. improvement, but may fail on buggy VGA BIOSes or buggy DOS virtual
  188. machines. If it causes problems, it can be disabled by adding
  189. 'disable lfb' to ptcpas.cfg.
  190. - API changes:
  191. - in the hermes unit, THermesHandle was replaced with
  192. THermesConverterHandle, THermesClearerHandle and THermesPaletteHandle,
  193. which should be treated as opaque pointers, not integers. This only
  194. matters if you use unit hermes directly, and not ptc.
  195. - various bugfixes and code cleanup.
  196. 0.99.9
  197. - big endian support.
  198. - Win64 support (GDI only. DirectX not supported yet).
  199. 0.99.8
  200. - added support for Windows CE. Still in alpha stage. Tested on a Motorola
  201. MPx220 smartphone.
  202. - added support for fullscreen X11 using the Xrandr extension (previously
  203. only the XF86VidMode extension was supported). Also fullscreen X11 now works
  204. even when there aren't any mode switching X11 extensions available. A single
  205. fullscreen mode, which has the size of the entire desktop is offered in this
  206. case.
  207. - added a new simple windowed win32 GDI console, which is able to run even
  208. without any version of DirectX installed.
  209. - the X11 console now returns a mode list.
  210. - fixed a bug which caused win32 fixed-size windows to be non-minimizable.
  211. - imported the OpenPTC 1.0.1 DOS VGA fakemode assembly routines - should give
  212. a nice speed boost on ancient 386/486/Pentium machines.
  213. 0.99.7
  214. - A new event system + mouse support. Yes, I know I should have done this
  215. earlier :) Fullscreen X11 with mouse still does not work well, I'm planning
  216. to fix this in the next version.
  217. - API changes:
  218. - TPTCKey class renamed to TPTCKeyEvent
  219. - Removed int32, short16 and char8 types.
  220. Replaced with: Uint64, Uint32, Uint16, Uint8,
  221. Sint64, Sint32, Sint16, Sint8.
  222. - fixed fullscreen palette modes under DirectX (was buggy on modern NVIDIA and
  223. ATI video cards).
  224. - a new example program, demonstrating the mouse support.
  225. Use it as a reference for now, until I update the documentation with the new
  226. event handling stuff (hopefully this will happen in the next release).
  227. - X11 window is not resizable anymore. Maybe some day I'll implement (optional)
  228. stretching as in win32 windowed mode.
  229. - code cleanup. Hid some implementation details from the interface part.
  230. 0.99.6
  231. - Now distributed under the terms of the modified LGPL (used by the FPC RTL).
  232. See the file modified_lgpl.txt distributed with the library for details.
  233. Thanks to Glenn Fiedler (the author of the original OpenPTC C++ code, that
  234. this library is based on) and Christian Nentwich (the author of the original
  235. C code of the Hermes library and the X11 version of OpenPTC) for giving
  236. permission to distribute the code under this license.
  237. - The Free Pascal Development Team intends to distribute this library with the
  238. Free Pascal Compiler and to base the graph unit on it, which is very cool! :)
  239. - fullscreen support in xshm/ximage mode.
  240. - dga support is now disabled by default.
  241. - added workaround for the 'shmat' bug in fpc 2.0.0's rtl on amd64 linux.
  242. - fixed some compilation-related problems with the example programs.
  243. - fpc 2.0.2 - go32v2 compilation fixed. fpc 1.0.10 support dropped completely.
  244. - some other DOS code fixes and cleanups.
  245. - config file name changed to ptcpas.cfg (~/.ptcpas.conf on *NIX)
  246. 0.99.5
  247. - support for fpc 2.0.0. fpc 1.0.10 support dropped, except for DOS.
  248. - support for amd64 (the code is now 64-bit safe, but still little endian-only)
  249. - fix the (sometimes) missing titlebar when using the metacity window manager
  250. 0.99.4
  251. - some X11 fixes (missing cdecl's, wrong alignments, etc.)
  252. - FreeBSD and NetBSD now compile and work (dga and XShm still not tested...)
  253. - improved exception handling in demos and examples
  254. 0.99.3
  255. - support for fpc 1.9.2+ (adapted to use the new unix rtl)
  256. - the dos console uses rdtsc if available for more accurate timing
  257. - some vesa fixes
  258. 0.99.2
  259. - alt, shift, ctrl modifier keys support for X11
  260. - key release support for win32 and X11
  261. - new example (keybrd2) demonstrating the use of key release events
  262. 0.99.1
  263. - first release to sourceforge