Skip to content

Releases: Bill-Gray/PDCursesMod

PDCursesMod 4.5.4 - 2026 January 07

07 Jan 21:44
993542b

Choose a tag to compare

(See docs/HISTORY.md for more details, and/or the Git log for extreme detail.)

Minor new features

  • Framebuffer and DRM ports can show fullwidth characters. bc3b4d8

  • chtypes can be short (16-bit) integers (again). Support for this was dropped in PDCurses 3.7 in late 2018, but this can actually be useful in very memory-restricted environments, such as in DOS. e215a6d

  • For the GL port, the 'resize' mode can be set via the PDC_RESIZE environment variable. b8f8220

  • VT platform can be compiled with djgpp and runs correctly (see issue #340). Parts of the fix by Gisle Vanem. 222b475

  • Blinking and PDC_gotoyx() code is almost identical between the SDLn, x11new, GL, WinGUI, and framebuffer/DRM ports; that code is now in common/blink.c. This allows the cursor to blink in all of those ports and (in some cases) for the caret and hollow-box cursor styles to be supported. f06ab53 f6657a3 fec5d8b 9e3cde7 4c8d3a0 9e3cde7

  • DOSVGA now supports ~16 million (2^24 + 256) colors and 1M (2^20) color pairs, similar to (and using the same underlying code as) WinGUI, SDLs, GL, framebuffer/DRM, and x11new. bd4cc9c

Bug fixes

  • WinGUI : mouse modifiers (Ctr, Alt, Shift) became 'stuck' from the previous keys hit, and were not turned off when the modifier keys in question were released. 9f9819f

  • WinGUI : positions returned for mouse wheel events were wrong. cd8cd7e

  • WinCon : a typo prevented mouse wheel events from working at all. Fix provided by Jordan Hemming. 93dba3a

  • Fullwidth characters are now shown correctly for 32-bit chtypes (if they are supported on that platform in the first place, and the font actually has glyphs for them). 3d6bc63

PDCursesMod 4.5.3 - 2025 Aug 11

11 Aug 01:40
3b88e03

Choose a tag to compare

(See docs/HISTORY.md for more details, and/or the Git log for extreme detail.)

PDCursesMod 4.5.3 - 2025 August 11

Minor new features

Bug fixes

  • stdin/stdout redirection now works on the Windows console platform. Fix
    supplied by Robin Haberkorn. 6855b32 8fbb3a6

  • C23-compliant compilers (and some others) objected to the casting of
    function pointers returned by GetProcAddress(). ce60aa6 7309a03

  • If PDC_NCMOUSE is #defined, the behavior of the mouse routines should
    copy that of ncurses, warts and all. Scroll-up and down are mapped
    to presses on buttons 4 and 5, and tilt-scroll events and "real"
    button 4 and 5 events are ignored. 0de9f72

  • Minor fixes for Digital Mars and OpenWATCOM compilation of WinCon and
    WinGUI. a4c0153 6af9889 6eedea0

  • Fixes for the VT port for DOS. fdd95ca 4e23068 2006f0a
    1994189 bb1f6e4 277765e 6ab0a9b dd7a0a8

PDCursesMod 4.5.2 - 2025 Jun 19

19 Jun 20:28
e9ddc8c

Choose a tag to compare

(See docs/HISTORY.md for more details, and/or the Git log for extreme detail.)

PDCursesMod 4.5.2 - 2025 June 19

Minor new features

  • Framebuffer/DRM shows a mouse cursor now, if built with HAVE_MOUSE=Y.
    It doesn't actually respond to mouse events yet, but that should be
    relatively straightforward. 7578a60

  • x11new and framebuffer/DRM ports cleaned up, READMEs updated, some
    unnecessary code removed. b08805c 6221595 f300bfa bae06a8

  • Fixes for C90 compliance : removed some C++-style // comments, moved
    variables to the top of code blocks, used TRUE/FALSE instead of
    true/false. 8800009 9efd323

  • In x11new, you can hit Ctrl-Minus and Ctrl-Plus to go to the next smaller
    or larger font size, respectively. 43066a8

  • The PDC_KEY_MODIFIER_REPEAT modifier was not applied in SDL1 and x11new,
    and was broken in SDL2. 83fa89c 6bf92e1

  • Changed some documentation to be more markdown-friendly when read into
    MANUAL.md, a la William McBrine's work upstream. 07a5469
    b786e76 1cc01e4 7cc0f0d c58fd92 a06e0be

Bug fixes

  • getch() triggered an assert() if fed a character that expanded to a
    multi-byte string in PDC_FORCE_UTF8 builds (issue #335, reported by
    Robin Haberkorn). 6306ac2

  • WinCon/pdckbd.c contained a poorly-written cast to which the C23 standard
    objects, resulting in warnings/errors when built to that standard
    (issue #333). Fix supplied by Gisle Vanem. 2426dbc

  • The PDC_KEY_MODIFIER_REPEAT modifier was broken in SDL2. 6bf92e1

PDCursesMod 4.5.1 - 2025 May 12

13 May 11:35
ff93967

Choose a tag to compare

(See docs/HISTORY.md for more details, and/or the Git log for extreme detail.)

PDCursesMod 4.5.1 - 2025 May 12

Major new features

  • Added an 'x11new' port : X11 written from scratch to require fewer
    dependencies and to allow a memory-leakage-free build.

Minor new features

  • Framebuffer/DRM : simplified specifying which display to use. If you
    have suitable permissions, Alt-= will cycle through displays.
    db3cbb7

  • testcurs now allows one to specify mouse mask parameters more precisely,
    and/or to set a zero mouse interval (which should result in clicks being
    converted to presses and releases). Also, can test using the ncurses
    mouse interface instead of the 'classic' undocumented SysV mouse interface.
    de6c742 7a520f6 91645ce

  • VT port now works on Haiku. e8f098d

Bug fixes

  • Framebuffer/DRM port cursor didn't rotate when you rotated the screen.
    f3188af

  • When restarting Curses, the foreground/background weren't stored,
    resulting in odd colors (affected all ports). 433dbfb

  • The ncurses forms library does not build correctly for wide characters.
    Until it's fixed, it and the tests relying on it are only built in
    narrow-character (8-bit) mode. 0f31253

  • Fixed possible read-outside-bounds error in UTF8 conversion. 5a61709

  • testcurs called scanw() with a "plain" %s format specifier. The lack of
    a width left it open to buffer overflow if more than 79 bytes were entered.
    8bf383a

  • VT build failed when using GNU make to cross-compile demos and tests for
    Windows using MinGW. d391921

  • Mouse input inconsistently respected mousemask() on most platforms.
    The common logic for combining press/releases into clicks, double- and
    triple-clicks has been abstracted into common/mouse.c, and is now used
    by the WinCon, WinGUI, x11new, and VT platforms (and will probably be
    used eventually by most other platforms). See issue #330. 52d2068
    9e857e7 812bd69 592d27f

PDCursesMod 4.5.0 - 2024 Dec 31

26 Jan 00:19
38c7571

Choose a tag to compare

(See docs/HISTORY.md for more details, and/or the Git log for extreme detail.)

Major new features

  • Added an OS/2 GUI port, provided by chasonr. 23b1fbe 267f92a

  • The ncurses 'menu' library can be compiled and used with PDCursesMod,
    and the ncurses program 'demo_menus' built to test it out. (The
    'forms' library can be built in 8-bit character mode -- it currently
    uses ncurses internals for wide mode -- but doesn't appear to
    actually work yet.) 07bc4ac 1ad9562

Minor new features

  • The DRM and Linux framebuffer port now allows for screen rotation.
    Hit Alt-/ for a 90-degree rotation. This should pave the way for
    support on phones and other rotatable displays (and already helps if
    you have a monitor in portrait mode). 0e41ba5 1b7b432

  • Added is_cbreak(), is_echo(), is_nl(), is_raw() functions to
    access members of the non-opaque SCREEN struct. The first two
    replace PDC_getcbreak() and PDC_getecho(). 98b6969

  • Windows can be created, moved, and resized that go off the right
    and bottom edges of the screen, a la ncurses. (I think this was
    an acknowledgment of the fact that after resizing a screen, windows
    might go over those edges anyway.) Windows still cannot go off the
    left or top edges. bc51d18

  • Added a new 'test' program for the issues mentioned above with
    scrolling and winsertln(), wdeleteln(), winsdelln(). 98c7405

  • Three new small test programs to investigate various aspects of
    how curses works (or doesn't work). 5cef1e3

  • The 'tests' programs can now be built, on some platforms, with
    'make -f Makefile tests'. 200b548 e611673 63138ea
    80fdfe7 218aa8c

  • Switched from defaulting to ncurses-6.4 tests to ncurses-6.5.

  • WinGUI now defaults to resizable windows, similar to SDLn, WinCon,
    and X11. 58807ea

  • winsnstr() handled 513 bytes from the input, instead of the clearly
    intended 513 wchar_ts. This worked, but was an unnecessarily low
    limitation. It is now fixed, and the function can now handle
    arbitrarily long strings via recursion. Added some code to test this
    in 'show_col.c'. 3f8dfa9 18ef78d

  • PDC_wcwidth( ) updated from Unicode 14.0.0 to 16.0.0 93e32ef a5f13c2

Bug fixes

  • In rare cases, blinking on the framebuffer port could be disabled
    due to an integer rollover. eaee2a6

  • In WinGUI, we could potentially read memory out of bounds. From
    slipher. 70d2724

  • In WinGUI, theoretically 'monospaced' fonts were not necessarily
    monospaced. Reverted to drawing each character separately. b99fed1

  • In WinGUI, when redrawing a string of characters, the preceding and
    subsequent glyphs were also redrawn. This was apparently needed at
    one time to avoid stray pixels, but appears to be unnecessary now.
    8466f73

  • In WinGUI and WinCon, PDC_clearclipboard() would fail if the clipboard
    was not open. From Mark Hessling. a071130

  • If napms() was called with a negative value, it would lock. 65dfa7e

  • Framebuffer/DRM port didn't redraw upon changing fonts if the new font
    was the same size as the old one. c714cd9

  • wsetscrreg() required the cursor for the window to be positioned
    between the 'top' and 'bottom' of the new scroll region. 5a0d5be

  • wdeleteln() would delete the line currently under the cursor, then
    bring up lines down to the end of the current scroll region, inserting
    a blank line there. It really should delete all the way to the bottom
    of the window. See also wmcbrine/PDCurses/issues/165. b02f94f

  • The 'picsview' demo had a possible buffer overrun error. Reported and
    fix proposed by Michael Knap. fcd2dd0

  • Plan9 port ran into a compile error due to different timekeeping
    functions. Also was missing a few demos and term.h. 1e8472c

  • Removed an assert() in mvwin() when the window was moved outside the
    screen area. Some programs (including 'test_pan') assume they can try
    moving a window, then check the return value to see if it was actually
    on screen. c801354

  • PDC_set_box_type() has been removed, because it's an unneeded redundancy.
    You can get double-lined or thick-lined boxes, and/or rounded corners,
    via the standard Curses wborder_set() function, and it'll work with
    ncurses and other libraries. 'test_pan' revised to provide an example
    of how that's done. f8d87ed549 099fa28

  • printw() overflowed a buffer when asked to output more than 512 bytes.
    ddf80d0

  • napms() rounded up to the nearest clock tick on DOS and DOSVGA; it now
    rounds to the nearest clock tick (with at least one tick being used).
    Modified the documentation to reflect this. 785113f

  • PDC_wcstombs() could overflow a buffer in the UTF8 decoding. 7d704dd

  • DOS and DOSVGA builds failed on Digital Mars. Several small fixes were
    required. 981893b d22725b 32f2266 fd1ddf8

  • Fixes for Borland Turbo C compilation. a59f452 26128c2
    d6b7e99

  • panel_hidden() is now portable, returning TRUE (1) and FALSE (0) instead
    of OK (0) and ERR (-1) This may break existing applications, so you possibly
    want to check for the PDCursesMod build (PDC_BUILD < 4500). Or see
    demos/testpan.c for a solution portable to ncurses and PDCurses.

PDCursesMod 4.4.0 - 2023 Nov 30

01 Dec 19:17
02a61c1

Choose a tag to compare

(See docs/HISTORY.md for more details, and/or the Git log for extreme detail.)

Note that because of SCREEN and WINDOW now being opaque, the WA_ flags and some A_ flags changing, and KEY_MAX being redefined, this is not binary compatible with 4.3.x. However, you'll get a link error if you get versions mixed up, so this shouldn't cause any real trouble.

Major new features

  • The SCREEN and WINDOW structures are now opaque. 1167188 3259719

  • The WA_ flags are now distinct, in builds with 64-bit chtypes and attr_ts (the default). This led to considerable documentation changes and an attempt to make the distinction between WA_ macros (for use with wattr_t) and A_ macros (for use with chtype) clearer. Most implementations of curses have wattr_t == chtype, including PDCurses* and ncurses, but you can't really rely on it. 78658c9

  • The FILE arguments passed to newterm() are now actually used on the VT platform. Changes by Pavel Stehule. 9c16db9

Minor new features

  • SDL1, SDL2, and GL support double and triple mouse clicks. Change provided by Lyle Tafoya.
    a4e563d

  • 'panels' library almost completely rewritten. The new version is better at figuring out what parts need to be updated, and is generally easier to understand. 8830b71.

  • Added some small test programs for very specific feature/bug tests. e6a5ede

Bug fixes

  • WinGUI keyboard responsiveness could be poor if it wasn't getting enough CPU share. 087c20c

  • Numeric keypad presses were duplicated on SDL2 and GL for Windows. 7c26ec9

  • The SDL2 makefile had a recursive definition of CC and PREFIX. ac96c55

PDCursesMod 4.3.7

17 Jun 23:33
8ef616a

Choose a tag to compare

PDCursesMod 4.3.7 - 2023 June 17

(See docs/HISTORY.md for more details, and/or the Git log for extreme detail.)

Major new features

  • SDL2 GL port, from Julius Ikkala. This is (on most systems) faster than the "traditional" SDL2 port. Many commits, starting at 4678131.

Minor new features

  • Support on Windows for Unicode input in the SMP (codepoints above 0xFFFF, for instance emojis.) 2050706 75b62ea

  • WinCon: supports full unicode output including SMP. 3ec63c9 7089b2e fac87bd

  • WinCon, WinGUI can be cross-compiled for Windows on Arm. 158e8ae

  • 'newtest': extended the SLK testing. 'newtest' and 'testcurs' now use wget_wch( ) in wide builds, so the actual character is shown on input tests (instead of the multibyte stream). 'testcurs' gradient example (showing colors beyond 256 palette entries) is a little more logically set out. c744e3e 7089b57

  • WinCon can support a 'default' (transparent) background. 81cbefb

  • 'curspriv.h' modified to allow C++ compilation. 52a2fdf

  • Clarified compatibility for ACS_ and WACS_ box characters, and added many missing aliases. From a suggestion by Simon Sobisch. e8f7b33

  • Fixed warnings with OpenWATCOM. We now compile with -we ("treat warnings as errors"). f27369e abbd8f5 89e3426

  • If you try to compile the DOS version with WIDE=Y, you get an error message explaining that wide characters don't work on that platform. d07b884

  • Now using ncurses-6.4 tests instead of 6.3.

Bug fixes

  • WinCon: Key modifiers were incorrectly cleared without a key event. 9229f08

  • VT: Ctrl-Alt-letter input was off by one. Hit, say, Ctrl-Alt-T, and you'd get Ctrl-Alt-U. 6556858

  • Fixed some casting issues with GetProcAddress( ) in Windows and a deprecation warning with MinGW, with considerable help from Arnold Trembley and Chuck Haatvedt. Further work may be required (it works, but pedantic compilation can get you warnings). bbae4bb 28cbcfc

  • CMake's list of demos is now up to date for DOS, DOSVGA, WinCon, WinGUI. Others to follow. 4f3dc96

  • Pasting text from the clipboard was done with a buffer lacking room for a null terminator, resulting in a memory overwrite. Reported by nhmall (issue #295). 0a4e1e9

  • realloc( ptr, 0); was assumed to free ptr and return NULL. This is usually true, but isn't guaranteed and isn't true on FreeBSD, and caused an assert to be triggered in endwin(). abbb6de

  • 'terminfo' functions were not included in the DOSVGA builds, nor in WinCon when using the Microsoft VC makefile. Also, the WinCon Digital Mars makefile was broken. c51efbb

  • 'picsview' and 'mbrot' demos now work correctly with ncurses. Some unnecessary distinctions between PDCurses* and ncurses were removed. 8972791

PDCursesMod 4.3.6

12 Apr 13:42
b9d7b07

Choose a tag to compare

PDCursesMod 4.3.6 - 2023 April 12

(See docs/HISTORY.md for more details, and/or the Git log for extreme detail.)

  • SDL2 can now show Unicode past 0xffff (Supplemental Multilingual Planes). 602bc38
  • VT port supports output redirection. a6618d9 6925d0f 65939aa
  • WinGUI support DPI awareness, for better font display on high-res screens. 012e3d9

Bug fixes

  • Partial fix so that getch( ) will return byte codes, expanding characters beyond 256 into multi-byte strings. bd50b2b
  • Scrolling a window could result in a crash when the window was freed. 72521a1
  • Decoding UTF8 was broken for SMP. ad7cd29
  • Text selection & copying could cause memory corruption with 4 byte UTF-8
    codepoints when WIDE=Y. bff53ab
  • Lots of small bug fixes and improvements... again, see docs/HISTORY.md and/or the git log for more details.

PDCursesMod 4.3.5

29 Nov 03:06
d3f6fe6

Choose a tag to compare

(See docs/HISTORY.md for more details, and/or the Git log for extreme detail.)

  • WinGUI is again single-threaded, resulting in considerably simpler code and fixing some resizing issues. See pull request #240. 6962ab6
  • Framebuffer port can now use either the (deprecated) Linux framebuffer system or the DRM (Direct Rendering Manager) system. DRM is not supported on some older systems and the Linux framebuffer is not supported on newer ones. DRM also can be used with *BSD; the Linux framebuffer really is a Linux-only solution. e9bc09c
  • delwin() now returns ERR if you attempt to delete a window with active subwindows, or a window that wasn't allocated by PDCursesMod or which has already been freed. c643c0d 3b14813
  • delscreen() deletes all windows associated with a SCREEN. 26e473c
  • Added ncurses extensions for opaque WINDOW structs, from Markus Uhlin. 7bb822b 22fecc1
  • PDC_free_memory_allocations() (see below) was unnecessary; if we follow the specifications for delscreen(), as we now do, all that memory gets freed in the natural course of things. 0223039 60138ca
  • Both SDLs could have problems in finding fonts on some Linuxes. Fixes from Mark Hessling. 1e4bcc9 9cf041e
  • getch() and wget_wch() could return erroneous values in WinCon for values greater than 127. e54d03f e86d9c3
  • Lots of small bug fixes and improvements... again, see docs/HISTORY.md for more details.

PDCurses 4.3.4

29 Jul 22:20
3cc99c1

Choose a tag to compare

(See docs/HISTORY.md for more details, and/or the Git log for extreme detail.)

  • Files created by getwin() and putwin() should now be usable between future versions of PDCursesMod, across most OSes and compilers, and (with limitations) even between wide/narrow and 32-bit/64-bit chtype builds.
  • endwin() was not signal-safe. (Memory was freed and buffered file output was done; both are signal-unsafe.) See 'upstream' issue wmcbrine/PDCurses#134 for details.
  • We now use wcwidth(), instead of our own internal version, on Linux. This avoids some redundancy and may enable better results in non-Unicode environments, if any.
  • Also updated our PDC_wcwidth() from Unicode 5.0 to Unicode 14.0.0.
  • WinGUI could block if there was no key delay.
  • Alternative character set glyphs were sometimes shown when they ought not to be, or vice versa.
  • You can free all remaining internal memory with the new PDC_free_memory_allocations() function. This is not strictly necessary, since all memory is freed on exit anyway. But it can help when using Valgrind or similar memory diagnostic tools; you can eliminate any possible PDCursesMod leaks.
  • Lots of small bug fixes and improvements... again, see docs/HISTORY.md for more details.