Changelog
libCEC 8.1.0 is a minor release. Its headline additions are two new language bindings — a cross-platform C# binding and a Node.js binding — modernized Debian packaging, a full set of published API documentation, and a round of key-handling fixes on top of the 8.0.0 held-key work.
📚 New: per-binding API reference is now published at https://pulse-eight.github.io/libcec/ — C/C++ (Doxygen), .NET (DocFX), Node.js (TypeDoc) and Python (Sphinx), each with install and usage guides.
Highlights
- New cross-platform C# binding (
LibCecSharp): a single pure-C# assembly (P/Invoke over the C API, net8.0) replacing the two Windows-only C++/CLI wrappers — now works on Linux, macOS and Raspberry Pi as well as Windows (#721) - New Node.js binding: a native N-API addon over the C API, shipped in the Windows installer and as a
node-libcecDebian package - Published API documentation for all four bindings at https://pulse-eight.github.io/libcec/
- Modernized Debian packaging: the runtime package is renamed
libcec4→libcec8to match the SONAME, plus a newlibcec-dotnetpackage - Key-handling fixes for devices that repeat or press-and-hold their own keys
.NET binding
- changed: replace the Windows-only C++/CLI
LibCecSharp/LibCecSharpCorewrappers with a single cross-platform pure-C#LibCecSharpbinding (P/Invoke over the C API), targeting net8.0 (#721) - changed: port cec-tray to net8.0-windows and drop the .NET Framework build; the installer now checks for and installs the .NET 8 Desktop Runtime
- added:
libcec_get_statsto the C API so the managed binding can expose adapter statistics - changed: build the managed binding and apps via cmake's
ENABLE_DOTNET_LIB/ENABLE_DOTNET_APPSoptions
Node.js binding
- added: a Node.js binding (native N-API addon over the C API) with an
ENABLE_NODE_LIBcmake option - added: the Windows installer ships a prebuilt addon (with a co-located
cec.dll); Debian ships it asnode-libcec
Key handling
- fixed: don't cut long-presses short on devices that release their own keys — once the device is seen to send its own releases, stretch the synthesized release to a stuck-key backstop instead of the 500ms timeout (#704)
- fixed: clear held-button state when a client is unregistered, so a reconnect can't emit a phantom release for a key pressed before the disconnect
- fixed: drop a duplicate key release when the press was collapsed as a double tap (#723)
- fixed: don't synthesize a release for a key the device is repeating, restoring 7.x behaviour for repeating directional keys (#724)
Documentation
- added: per-binding API reference — Doxygen (C/C++), DocFX (.NET), TypeDoc (Node.js) and Sphinx (Python) — with welcome / install / usage pages, published to GitHub Pages at https://pulse-eight.github.io/libcec/
Packaging / build
- changed: rename the
libcec4Debian package tolibcec8to match the library SONAME;libcec8andlibcec8-devsupersede thelibcec4–libcec7names - changed: modernize the Debian packaging — debhelper compat 13, Standards-Version 4.6.2, Rules-Requires-Root, python3/dh-python and libncurses-dev build deps, github Vcs urls, and reproducible-build flags
- added: a
libcec-dotnetDebian package shipping the cross-platform LibCecSharp binding and its NuGet package - added: build the Debian package with the Linux kernel CEC framework, Exynos and AOCEC backends enabled
- fixed: ship the CMake package config, the static library and cecc-client in the Debian packages, and match the flat python3 module layout in python-libcec
- changed: vendor the Windows build-support tree (driver installers,
libusb0.dll, cmake flag overrides) directly into the tree instead of a submodule
Full Changelog: libcec-8.0.0...libcec-8.1.0