All Versions
Latest Version
Avg Release Cycle
256 days
Latest Release
1641 days ago

Changelog History

  • v3.9 Changes

    September 04, 2019

    768 colors, single-process X11, copy-and-paste for all, and more.

    🆕 New features

    Single-process, single-thread version of the X11 port. Much, much
    ✅ faster than the two-process version. Needs more testing. This version
    🌐 omits translations.

    A common copy-and-paste system for all platforms, based on the
    PDC_*clipboard() functions. (This is the first time copy-and-paste is
    available for the SDL ports, and it replaces the old X11-specific
    C&P.) Press and hold button 1 while selecting; paste with button 2.
    ➕ Add Shift if mouse events are activated in curses. You can also paste
    via Shift-Ctrl-V, and copy with Shift-Ctrl-C (although selecting
    already sets the buffer). Note that paste is implemented via
    ungetch(), and is currently limited to 256 characters at a time. (You
    can get more via PDC_getclipboard().) With some ports (e.g. Wincon),
    the existing terminal C&P mechanism may override PDCurses'. DOS and
    SDL1 can only C&P within the same app.

    A new maximum of 768 colors, for Wincon, SDL and X11. COLOR_PAIRS is
    still limited to 256. The idea is that each pair can have a unique
    foreground and background, without having to redefine any of the first
    256 (predefined) colors. Colors 256-767 have no initial definitions,
    and are intended to be set via init_color(). An example has been added
    ✅ to testcurs (loosely based on part of newtest, by Bill Gray).

    Wincon now allows redefinition of all 768 colors, and allows it even
    under ConEmu.

    👀 True italics for ConEmu. (It seems it should also support true bold,
    but I couldn't make that work.)

    ➕ Added new functions from ncurses and/or NetBSD: has_mouse(),
    is_keypad(), is_leaveok(), is_pad(), set_tabsize(), touchoverlap(),
    👀 underscore(), underend(), wunderscore(), and wunderend(). See the man
    pages for descriptions. Partly due to Karthik Kumar Viswanathan, and
    suggestions of Simon Sobisch.

    🐛 Bug fixes and such

    Check for standard C++ (>= 98), where native bool should exist, and use
    that; otherwise (pre-/non-standard C++) fall back to the old behavior.
    Satisfies clang, hopefully doesn't mess anything else up.

    Recent versions of clang throw an error over "-install_name".

    Most curses functions assumed a valid SP (i.e. that initscr() had
    already been called). Now, instead, they return ERR or other
    appropriate values. Suggestion of S.S.

    💾 Deprecated PDC_save_key_modifiers() -- there's no benefit to NOT
    saving them.

    ⚡️ Hold back screen updates due to palette changes until paused; always
    ⚡️ do this update now (previously only in X11 and SDL, seems necessary in
    🏁 Windows 10 1903).

    🏁 SDL2 windows were freezing on moving to another screen (reported by
    Mark Hessling). Still issues with moving between screens of different

    Find the X libraries in some additional locations. After M.H.

    0️⃣ Converted default X11 icons to XPM, fixing their non-display in Ubuntu.

    🚚 Made XIM standard, removed "classic" X11 compose system.

    🏗 Made wide-character build the default for X11 (--disable-widec for

    Smoother resizing in X11, when not in scrollbar mode.

    ⬇️ Dropped X11 options "borderWidth" (broken since at least 2.7) and
    "cursorColor" (now set automatically for contrast).

    ⏪ Correctly restore Insert mode and QuickEdit mode in Wincon's
    PDC_reset_shell_mode(). Patch by "vyv03354".

    ➕ Add a WINDRES variable to wincon/Makefile for the sake of cross-
    compilers. Patch by Marc-Andre Lureau.

    🚚 Suppress cursor movement during color tests in testcurs.

    ➕ Added UTF-8-demo.txt for tuidemo to browse (by default, only in forced
    UTF-8 mode). File by Markus Kuhn.

    🚚 Moved the doc files from "man" to "docs" -- the docs/man thing was too
    🌐 confusing. Streamlined the web page into two files.

    Rewrote the "Portability" sections of the man pages to reflect current
    ncurses and NetBSD. The old charts weren't very accurate.

    ⏱ Document resolution of timeout() and napms(). Suggested by S.S.

    Rewrote manext (again) in Awk.

    🔄 Changed most dates to ISO format.

    👀 See the git log for more details.

  • v3.7 Changes

    January 01, 2019

    🆕 New features

    Avoid conflict with ncurses by having apps define PDC_NCMOUSE before
    💅 including curses.h to invoke the ncurses-style mouse interface,
    instead of NCURSES_MOUSE_VERSION. (The old way will also still work.)
    👀 After Simon Sobisch (see PR #33).

    In SDL, the box-drawing and block ACS characters are now rendered in a
    font-independent way, to ensure their correct alignment across cells.
    Underlining is now handled in a similar way.

    TTF fonts in SDL are now rendered in Blended mode instead of Solid.
    Partly after Joachim de Groot.

    🆕 New default fonts and font sizes for SDL/TTF.

    🏗 SDL2 now builds under MSVC. Partly due to Alexandru Afrasinei.

    📚 Documentation re-org -- more Markdown internal links; moved to man/
    📄 dir (the doc/ dir name was too similar to docs/, which is needed for
    GitHub Pages hosting); concatenated man page document now made
    🏗 permanent, under the name; new man build utils; merged and into their respective READMEs; changed some
    redundant and unclear comments.

    Directory re-org -- in addition to the above, created common/, to
    unclutter the root, and eliminate a few more redundant files from
    platform directories. (We already had "pdcurses", but that's for the
    portable core; "common" is for files that are more platform-specific,
    though shared by more than one platform.)

    🚚 Broke out the redundant ACS tables and moved them to common/.

    PDcurses' "bool" type is now based on stdbool.h, when available. There
    should be no conflicts when including stdbool.h either before or after

    0️⃣ The demos are no longer built by default, since they add a lot of time
    🏗 to the build, and often aren't wanted. But you can still build them via
    "make demos" (tweak as needed).

    👉 Makefile tweaks for cross-compiling by Simon Sobisch.

    🐛 Bug fixes and such

    👌 Improved Windows console resizing, when reducing the vertical size.
    👀 After Ulf Magnusson. (See GitHub issue #26.)

    Bring back ifdef'd CONSOLE_SCREEN_BUFFER_INFOEX, for the benefit of
    older compile environments. (Not automatic -- must specify INFOEX=N on
    💻 the command line.) After Simon Sobisch.

    Replaced COMMON_LVB_* with numbers to appease some old compilers.
    After Simon Sobisch.

    KEY_RESIZE should be key_code = TRUE. Reported by Ulf Magnusson.

    🛠 SDL2 resize fixes to prevent crashes, by Tim Hentenarr.

    🛠 SDL2 fixes for handling of SDL_TEXTINPUT, keys with modifiers, and
    modifier keystrokes, by Tim Hentenarr.

    🛠 Fixed cursor rendering in SDL/TTF.

    🍎 SDL1 support is now dropped for Windows and macOS, and deprecated for
    🐧 Linux. Use SDL2. The SDL1 port is likely to be dropped in the future.

    The setsyx() function is now void, after ncurses, and simplified.

    ⚠ Warning fixes by Patrick Georgi and Stefan Reinauer.

    X11 used SP->resized in a non-boolean way, so it's now a short.

    👀 Under some conditions (see issue #47), the X11 port could "free" colors
    that it hadn't allocated. Reported by rin-kinokocan.

    🆕 New scroller for ozdemo -- no memory allocation, less copying -- to
    resolve issue #46.

    Various minor Makefile tweaks.

    🚚 Eliminated term.h and terminfo.c, and moved mvcur() to move.c. These
    stub functions, done on request (with others then requesting that I
    take them away -- can't win), were a misguided attempt to facilitate
    using PDCurses with certain non-C languages -- which, apparently, they
    didn't end up actually doing. They're also, regrettably, specified as
    part of the X/Open curses standard, even though they in effect
    describe an entirely different interface layer (one on which
    traditional curses, but not PDCurses, is built).

    ⬇️ Dropped support for short (16-bit) chtypes.

    🚚 Finally removed deprec.c, as it promised.

    ⬇️ Dropped the XOPEN, SYSVcurses and BSDcurses defines from curses.h, as
    well as NULL (which is defined in stdio.h, included). TRUE, FALSE, ERR
    and OK are now defined unconditionally.

    🚚 Moved hosting to GitHub -- as a result, the site is now
    📄 part of the repo, in the docs/ directory. (Also, it has SSL again.)

    👀 See the git log for more details.

  • v3.6 Changes

    April 11, 2018

    Tidying up some loose ends from 3.5, and trying to bring all platforms
    up to the same level, as much as possible.

    🆕 New features

    🏁 256 colors for the Windows console -- under Windows 10 or ConEmu,
    only. This version doesn't allow init_color() or color_content() for
    🏁 colors 16-255, just uses Windows' predefined palette (which matches
    0️⃣ xterm-256color, like the default colors in X11 and SDL).

    🏁 Real blinking for the Windows console (all), and for OS/2 -- done in
    🏁 software, like the Windows version -- replacing the erraticly working
    Vio-based version (which didn't work at all in my OS/2 4.5 VM). OS/2
    now always has 16 colors, and bright backgrounds can combine with

    🏁 In DOS, OS/2 and Windows, attribute behavior now more closely matches
    👀 that of the more "advanced" ports (X11 and SDL) -- see the Attribute
    ✅ test in testcurs.

    All of the A_* and WA_* attributes from X/Open are now defined in
    curses.h, although some are no-ops, pending the availablity of more
    attribute bits. A_INVIS is now a no-op on all platforms, instead of
    overloading A_ITALIC, and so is A_PROTECT. A_LEFT and A_RIGHT are now
    synonyms for PDCurses' old *LINE attributes.

    🐛 Bug fixes and such

    🏗 For the X11 port, "make install" and the dynamic library build were
    🔧 broken, since the configure move. Fixes partly after Mark Hessling.

    📇 Renamed "win32" to the more accurate/descriptive "wincon" (i.e.
    🏁 WINdows CONsole). Makefiles for all platforms renamed to remove the
    👍 redundant platform names, and to allow better sorting.

    In SDL2, apps that didn't explicitly handle resizing locked up. Now,
    they can continue running, at their old size. (To Do: xmas is still a
    basket case.)

    ➕ Added "/MACHINE:$(PLATFORM)" to wincon/ -- Thomas Dickey
    🏗 says this is needed to build 64-bit with Visual Studio Express 2012.
    ⚠ With 2017, it suppresses a warning.

    ⚠ Suppressed "Possibly incorrect assignment" warnings with BCC, which
    also results in more readable code.

    ✏️ Cleaned up obsolete comments, dead code, unneeded includes, typos, and
    📚 outdated documentation.

    ⬇️ Dropped support for EMXVIDEO.

    ⬇️ Dropped color remapping for OS/2 (broken).

    ⬇️ Dropped X11 DLL support for Cygwin (broken).

    ✅ Rearranged extended color display in testcurs.

    ✅ In ptest, handle resizing, and check for screens too small to run in.

    Allow KEY_* codes (including KEY_RESIZE) to exit firework, as other
    keys do.

    🏁 Slightly faster Windows compilation (most noticeable in Watcom).

    👀 See the git log for more details.