mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-06 11:10:48 +02:00
284 lines
14 KiB
Plaintext
284 lines
14 KiB
Plaintext
next
|
|
- added PTCKEY_LESS, which represents the <> key (the 102th key on
|
|
international PC keyboards)
|
|
|
|
0.99.16
|
|
- added and implemented SetMousePos in unit ptcmouse
|
|
- applied patch by Nicolas QSO <nicolas@qso.com.ar> that fixes the handling of
|
|
international keyboards in Xvnc sessions.
|
|
- added support for macOS via the Cocoa API. Tested in macOS 11.6.1 Big Sur on
|
|
a Mac mini with an Apple M1 chip. Supported features:
|
|
fixed windowed output
|
|
keyboard input
|
|
the ptcgraph and ptccrt units also work
|
|
Features that are still missing:
|
|
mouse input
|
|
fullscreen output
|
|
resizable windowed output
|
|
OpenGL support
|
|
returning a mode list
|
|
- added support for the F13..F35 function keys (via the newly introduced
|
|
PTCKEY_F13..PTCKEY_F35 constants) on platforms that are capable of
|
|
recognizing them:
|
|
X11 supports F1..F35
|
|
Windows supports F1..F24
|
|
macOS supports F1..F19 (and some Apple keyboards have them)
|
|
|
|
0.99.15
|
|
- dead key support under Windows and X11 (via XIM)
|
|
- more character scripts (Latin 2, Latin 3, Latin 4, Latin 9, Katakana,
|
|
Arabic, Greek with diacritics, Technical, Special, Publishing, APL, Hebrew,
|
|
Thai, Currency signs - Korean Won sign and Euro sign) are now recognized and
|
|
converted to Unicode in the X11 console. Previously only Latin 1, Greek
|
|
without diacritics and Cyrillic were supported, but even they didn't work in
|
|
recent ptcpas versions, due to regressions, which are now fixed as well.
|
|
- use an alternative method (via GetKeyState) for obtaining the Alt, Shift and
|
|
Control key modifier status under Windows; This eliminates a problem, where
|
|
the alt key appears "stuck", after alt-tabbing away from the application,
|
|
then focusing back to it with a mouse click.
|
|
- new key modifiers added for distinguishing between left and right shift,
|
|
control and alt, the status of num lock, caps lock and scroll lock and for
|
|
distinguishing right keys (e.g. right shift, right alt, right ctrl),
|
|
numpad keys and dead keys. All of them are implemented as elements in the
|
|
ModifierKeys set, which was added to IPTCKeyEvent. They can be checked,
|
|
for example, with:
|
|
if pmkNumLockActive in key_event.ModifierKeys then
|
|
...
|
|
The following modifiers are available:
|
|
pmkAlt, pmkShift, pmkControl, pmkLeftAlt, pmkRightAlt, pmkLeftShift,
|
|
pmkRightShift, pmkLeftControl, pmkRightControl, pmkNumLockActive,
|
|
pmkNumLockPressed, pmkCapsLockActive, pmkCapsLockPressed,
|
|
pmkScrollLockActive, pmkScrollLockPressed, pmkRightKey, pmkNumPadKey,
|
|
pmkDeadKey
|
|
- there is now a MoveMouseTo method, added to the console. It can be used to
|
|
warp the mouse cursor to a different location.
|
|
- added support for a relative mouse mode. It supports continuous mouse
|
|
motion, not limited within the boundaries of the current window. It is
|
|
usually used with an invisible cursor. It is activated with the
|
|
'relative mouse on' console option, and turned off with the option
|
|
'relative mouse off'.
|
|
- the number of mouse buttons supported has been increased to 31. There is now
|
|
support for a horizontal and a vertical mouse wheel, which are treated as
|
|
buttons. Overall, this is the default button arrangement:
|
|
PTCMouseButton1 - left mouse button
|
|
PTCMouseButton2 - right mouse button
|
|
PTCMouseButton3 - middle mouse button
|
|
PTCMouseButton4 - mouse wheel rotated forward (scroll up)
|
|
PTCMouseButton5 - mouse wheel rotated backward (scroll down)
|
|
PTCMouseButton6 - mouse horizontal scroll wheel rotated left
|
|
PTCMouseButton7 - mouse horizontal scroll wheel rotated right
|
|
PTCMouseButton8 - "back" button ("X button 1")
|
|
PTCMouseButton9 - "forward" button ("X button 2")
|
|
The remaining mouse buttons are hardware specific and will vary, depending
|
|
on the actual mouse (provided it has that many buttons at all).
|
|
- ptccrt now supports several keyboard input modes, which can be set by
|
|
changing the new global variable KeyMode. The following values are supported:
|
|
kmTP7 - behaves like Turbo Pascal 7's CRT unit under DOS. This is the
|
|
default value. Previous versions of ptccrt always behaved this
|
|
way. Since TP7's CRT unit doesn't support the Enhanced
|
|
Keyboard, several keys (e.g. F11 and F12) and key combinations
|
|
are intentionally not recognized for compatibility reasons.
|
|
kmGO32 - behaves like Free Pascal's CRT unit under DOS (GO32V2). It has
|
|
Enhanced Keyboard support.
|
|
kmFPWINCRT - behaves like Free Pascal's CRT unit under Windows. Similar to
|
|
kmGO32, but emulates several incompatibilities that the
|
|
Windows CRT unit has with the GO32V2 CRT unit. Not all of them
|
|
are emulated though, since some of them can be considered
|
|
bugs.
|
|
- ptcgraph now has a global AnsiString variable WindowTitle, which allows you to
|
|
set the window title, before calling InitGraph
|
|
- ptcgraph was extended to also support resolutions, different than the ones,
|
|
defined by VESA. This means that you can now use ptcgraph with resolutions,
|
|
higher than 1280x1024 and widescreen (e.g. 16:9 or 16:10) aspect ratios, as
|
|
long as they are supported by the display. For this, you need to call
|
|
QueryAdapterInfo and walk through the linked list of modes, to choose a
|
|
mode, then pass its DriverNumber and ModeNumber to InitGraph. Here's an
|
|
example:
|
|
|
|
uses
|
|
ptcgraph, ptccrt;
|
|
var
|
|
m: PModeInfo;
|
|
gd, gm: Integer;
|
|
begin
|
|
Writeln('List of all modes:');
|
|
m := QueryAdapterInfo;
|
|
while m <> nil do
|
|
begin
|
|
Writeln(m^.MaxX+1, ' x ', m^.MaxY+1, ' x ', m^.MaxColor);
|
|
m := m^.next;
|
|
end;
|
|
|
|
Writeln('Now let''s find 1920x1080 with 16-bit colour...');
|
|
m := QueryAdapterInfo;
|
|
while m <> nil do
|
|
begin
|
|
if (m^.MaxX = (1920-1)) and (m^.MaxY = (1080-1)) and (m^.MaxColor = 65536) then
|
|
begin
|
|
InitGraph(m^.DriverNumber, m^.ModeNumber, '');
|
|
SetColor($FFFF);
|
|
OutTextXY(0, 0, 'Hurrah! Full HD 1920x1080 mode is available!');
|
|
ReadKey;
|
|
CloseGraph;
|
|
Halt;
|
|
end;
|
|
m := m^.next;
|
|
end;
|
|
|
|
Writeln('Mode not found in list!');
|
|
end.
|
|
|
|
0.99.14.1
|
|
- fixed X11 middle and right mouse button mapping. Previously, the right mouse
|
|
button and the middle mouse button were swapped, compared to Windows and DOS
|
|
and contrary to the documentation.
|
|
|
|
0.99.14
|
|
- added new unit ptcmouse for use with ptcgraph & ptccrt applications. It is
|
|
similar to the winmouse and msmouse units.
|
|
- support for resizable windows extended. Your application now receives
|
|
a new event IPTCResizeEvent and is allowed to call a new method called
|
|
InternalResize, which adjusts the console's width and height according to
|
|
the new window size. The previous behaviour where your application's image
|
|
is scaled, without it realizing that the resolution is changed still works
|
|
if you don't call InternalResize (or when you use ptcgraph for that matter)
|
|
- added support for intercepting the windows close events. When using unit ptc
|
|
directly, this is enabled by sending the option 'intercept window close' to
|
|
the console and then handling the newly introduced IPTCCloseEvent event.
|
|
When using ptcgraph and ptccrt, closing the window emulates pressing Ctrl-C,
|
|
in other words, your application will receive the #3 key code via ReadKey.
|
|
- fixed crash in hermes (the pixel conversion library, used internally by
|
|
PTCPas), encountered when converting from indexed 8bpp to 32bpp on amd64,
|
|
when the surface width is not multiple of 8
|
|
- even more X11 keyboard fixes
|
|
- removed the debug log (grlog.txt) written by programs that use ptcgraph
|
|
|
|
0.99.13
|
|
- added support for OpenGL under X11 and Windows. You can now use PTCPas to
|
|
initialize OpenGL and handle events for you in a multiplatform way (similar
|
|
to GLUT or SDL). See ptcgl.pp and ptcgl2.pp in the example directory.
|
|
- X11 keyboard handling improvements:
|
|
- added support for the numpad keys
|
|
- typematic repeat (i.e. when you press a key and hold it down) now sends
|
|
only repeating key press events, instead of repeating pairs of key
|
|
release + key press. This makes it possible to detect auto-repeat and is
|
|
also the way that Windows behaves.
|
|
|
|
0.99.12
|
|
- pressing Alt or F10 under Windows no longer pauses the application.
|
|
- API changes:
|
|
- PTC classes have been made descendants of TInterfacedObject and are now
|
|
accessed via interfaces. This simplifies memory management, because
|
|
objects are now reference counted and automatically freed when they are
|
|
no longer used. Unfortunately, this breaks existing code. However it's
|
|
relatively easy to fix. See the files INTF-CHANGES-0.99.12.txt and
|
|
INTF-CHANGES-FAQ-0.99.12.txt for details.
|
|
|
|
0.99.11
|
|
- added ptcgraph - an implementation of FPC's BGI-compatible graph unit on top
|
|
of PTCPas. It should work on all platforms, supported by PTCPas, except for
|
|
DOS (because it doesn't have threads)
|
|
- VBE console improvements:
|
|
- support for double buffering with video page flipping
|
|
- console update synchronized with the vertical retrace
|
|
- automatic fallback to windowed mode, if initializing LFB fails. This
|
|
results in better compatibility with NTVDM and other environments that
|
|
would otherwise require adding the 'disable lfb' option to ptcpas.cfg.
|
|
- support VBE 3+ separate LFB and Windowed color masks for direct color
|
|
modes. This might fix some wrong color bugs in LFB mode on some modern
|
|
VBE 3+ video cards.
|
|
- fixed a bug in the X11 event handling that caused unnecessary high CPU use
|
|
while waiting for an event
|
|
|
|
0.99.10
|
|
- fpc 2.4.0 support
|
|
- Win64 DirectX support
|
|
- X11 DGA 2.0 support
|
|
- VBE 2+ LFB support. Enabled by default. Offers a great performance
|
|
improvement, but may fail on buggy VGA BIOSes or buggy DOS virtual
|
|
machines. If it causes problems, it can be disabled by adding
|
|
'disable lfb' to ptcpas.cfg.
|
|
- API changes:
|
|
- in the hermes unit, THermesHandle was replaced with
|
|
THermesConverterHandle, THermesClearerHandle and THermesPaletteHandle,
|
|
which should be treated as opaque pointers, not integers. This only
|
|
matters if you use unit hermes directly, and not ptc.
|
|
- various bugfixes and code cleanup.
|
|
|
|
0.99.9
|
|
- big endian support.
|
|
- Win64 support (GDI only. DirectX not supported yet).
|
|
|
|
0.99.8
|
|
- added support for Windows CE. Still in alpha stage. Tested on a Motorola
|
|
MPx220 smartphone.
|
|
- added support for fullscreen X11 using the Xrandr extension (previously
|
|
only the XF86VidMode extension was supported). Also fullscreen X11 now works
|
|
even when there aren't any mode switching X11 extensions available. A single
|
|
fullscreen mode, which has the size of the entire desktop is offered in this
|
|
case.
|
|
- added a new simple windowed win32 GDI console, which is able to run even
|
|
without any version of DirectX installed.
|
|
- the X11 console now returns a mode list.
|
|
- fixed a bug which caused win32 fixed-size windows to be non-minimizable.
|
|
- imported the OpenPTC 1.0.1 DOS VGA fakemode assembly routines - should give
|
|
a nice speed boost on ancient 386/486/Pentium machines.
|
|
|
|
0.99.7
|
|
- A new event system + mouse support. Yes, I know I should have done this
|
|
earlier :) Fullscreen X11 with mouse still does not work well, I'm planning
|
|
to fix this in the next version.
|
|
- API changes:
|
|
- TPTCKey class renamed to TPTCKeyEvent
|
|
- Removed int32, short16 and char8 types.
|
|
Replaced with: Uint64, Uint32, Uint16, Uint8,
|
|
Sint64, Sint32, Sint16, Sint8.
|
|
- fixed fullscreen palette modes under DirectX (was buggy on modern NVIDIA and
|
|
ATI video cards).
|
|
- a new example program, demonstrating the mouse support.
|
|
Use it as a reference for now, until I update the documentation with the new
|
|
event handling stuff (hopefully this will happen in the next release).
|
|
- X11 window is not resizable anymore. Maybe some day I'll implement (optional)
|
|
stretching as in win32 windowed mode.
|
|
- code cleanup. Hid some implementation details from the interface part.
|
|
|
|
0.99.6
|
|
- Now distributed under the terms of the modified LGPL (used by the FPC RTL).
|
|
See the file modified_lgpl.txt distributed with the library for details.
|
|
Thanks to Glenn Fiedler (the author of the original OpenPTC C++ code, that
|
|
this library is based on) and Christian Nentwich (the author of the original
|
|
C code of the Hermes library and the X11 version of OpenPTC) for giving
|
|
permission to distribute the code under this license.
|
|
- The Free Pascal Development Team intends to distribute this library with the
|
|
Free Pascal Compiler and to base the graph unit on it, which is very cool! :)
|
|
- fullscreen support in xshm/ximage mode.
|
|
- dga support is now disabled by default.
|
|
- added workaround for the 'shmat' bug in fpc 2.0.0's rtl on amd64 linux.
|
|
- fixed some compilation-related problems with the example programs.
|
|
- fpc 2.0.2 - go32v2 compilation fixed. fpc 1.0.10 support dropped completely.
|
|
- some other DOS code fixes and cleanups.
|
|
- config file name changed to ptcpas.cfg (~/.ptcpas.conf on *NIX)
|
|
|
|
0.99.5
|
|
- support for fpc 2.0.0. fpc 1.0.10 support dropped, except for DOS.
|
|
- support for amd64 (the code is now 64-bit safe, but still little endian-only)
|
|
- fix the (sometimes) missing titlebar when using the metacity window manager
|
|
|
|
0.99.4
|
|
- some X11 fixes (missing cdecl's, wrong alignments, etc.)
|
|
- FreeBSD and NetBSD now compile and work (dga and XShm still not tested...)
|
|
- improved exception handling in demos and examples
|
|
|
|
0.99.3
|
|
- support for fpc 1.9.2+ (adapted to use the new unix rtl)
|
|
- the dos console uses rdtsc if available for more accurate timing
|
|
- some vesa fixes
|
|
|
|
0.99.2
|
|
- alt, shift, ctrl modifier keys support for X11
|
|
- key release support for win32 and X11
|
|
- new example (keybrd2) demonstrating the use of key release events
|
|
|
|
0.99.1
|
|
- first release to sourceforge
|