All notable changes to this project will be documented in this file. I'm trying to keep it up to date, but I'm a lazy bastard - when in doubt - check out the commit log ;-)
Again another preview because I'm pretty busy right now.
- Restructure how the HID communication is abstracted internally. This is useful for consumers when Elgato releases new hardware that can be controlled with the same software. The user of the library can now register new devices with existing "HID drivers" (for example if a Stream Deck MK.3 is released)
KeyBitmap.FromBgr24Array
was moved toKeyBitmap.Create.FromBgr24Array
- More HID Verification Tests
- Tested with real hardware
- Stream Deck XL (FW v1.01.000)
- Stream Deck Mini (FW v2.03.001)
- Stream Deck (FW v1.0.191203)
- Stream Deck MK.2 (FW v1.01.001)
- Saw visual glitches in ImageGlitchTest.Rainbow without throttling
- Added throttling to about 1,5 MB/s
- Example video frame rate looked still ok with throttling
A preview version (v4.0.0-preview) is currently available on nuget. At the moment there isn't a migration guide, but Jon Skeet has a project that show a the changes he had to make: #45 (comment) Alternatively you can also take a look at the changes of the example projects: Changes example projects
- Support for Stream Deck MK.2 (by jdahlblom - #36)
- Remove old cooldown mechanism and replace with a new throttle mechanism that limits the write speed
- Fix a few reported gaps between buttons (again)
- Added HidSharp Source to SteamDeckSharp, because the original HidSharp does not have a strong name we sign it here and ship it with StreamDeckSharp. This is required so we can ship new versions of StreamDeckSharp that reference an already existing version of OpenStreamDeck.SDK
- Improve accuracy of the reported gaps between buttons (is used to draw "fullscreen" for example)
- Added
StreamDeck.CreateDeviceListener()
that allows to keep track of stream decks between reconnects and provides events to react to connection changes.
- Drop .NET 4 support. In theory one could still port back the code to .NET 4 but it's not worth it to still maintain that. netstandard20 is the only target from now on.
- A lot of code cleanup (+ static analyzers to enforce rules)
- Added locks around hidstream access to fix some glitches
- Switch to semantic(-ish) versioning
- Fix alignment issue with keys that weren't 72px but 96px
- Prepare for netstandard2 release
- Switch to HidSharp (because of netstandard support)
- Change the stream deck Xl jpg encoder (the old one was from WPF, which is not supported on netstandard)
- Switch to new csproj format and embedded nuspec
- Remove old build stuff (switched to nuke.build)
- New icon for the nuget package
- Support for Stream Deck Rev2 🎉 (Thanks to patrick-dmxc for reporting that)
- Stream Deck XL now correctly
- reports firmware version
- reports serial number
- shows the logo
- sets the brightness
- It's now possible to open devices without caching (not recommended)
- Lower key cooldown for Mini and XL variant, because they don't suffer from images glitches like the classic stream deck. This improves the framerate for cached handles (try the video example ^^)
IHardware
now has aDeviceName
property- Cleaned up a lot of things
- Support for Stream Deck XL 🎉
- Implement
GridKeyPositionCollection
to make dealing with keyboard layouts simpler - New
IStreamDeckBoard
for easier access toGridKeyPositionCollection
Keys (Use pattern matching onIMacroBoard
to getGridKeyPositionCollection
) - Methods to get serialnumber and firmware version from
IStreamDeckBoard
- Change nuget package to license expression
Elgato Systems released the "Stream Deck Mini" a few weeks ago so I decided to refactor
StreamDeckSharp
and use a more generic approach that makes it possible to implement
many different macro boards (with LCD buttons) - even ones with buttons that are not placed in a grid layout (like keyboards).
Because of this changes I decided to split StreamDeckSharp
into a generic part called OpenMacroBoard.SDK
and the StreamDeck specific part still called StreamDeckSharp
and to change the organization name from OpenStreamDeck
to OpenMacroBoard
to reflect the generic nature.
OpenMacroBoard.VirtualBoard
to allow developing software for macro boards (eg. Stream Deck) without real hardware.- A bunch of unit tests
IKeyBitmapDataAccess
to retrieve raw RGB data from KeyBitmapsIKeyPositionCollection
to allow for complex key layouts.DrawFullScreenExtension
is now part of the library (instead of just an example project)- More unit tests
- Support for different LCD key resolutions
- Interface name
IStreamDeck
toIMacroBoard
- KeyId order for the stream deck changed to be more intuitive (left-to-right and top-to-bottom)
- StreamDeck.EnumerateDevices to discover all connected StreamDeck devices.
- KeyBitmaps now overrides
Equals
,GetHashCode
,==
and!=
and implementsIEquatable<KeyBitmap>
- Renamed many classes
(remove "StreamDeck"-prefix, thats what namespaces are for) - Moved examples to separate repository
- Image glitches
Use the same buffer for hid reports and added a cooldown of 75ms for each key, this should prevent reuse of memory before async (overlapped) write is finished
- Example "DrawFullScreen"
(Shows how to draw a single image that spans over all 15 keys)
You should check out the video demo in the wiki ;-)
- Button Images created with
FromRawBitmap
are now correctly flipped
- HidLibrary optimizations (thanks to Sam Messina)
- Don't copy write buffer.
- Remove EventMonitor
- Add DeviceChangeNotifier (no more polling)
- Number of write threads changed to one.
- Target Framework now .Net 4.0
(XP should in theory be supported now ^^) - Remove async/await methods in HidLibrary to support 4.0
IStreamDeck
no longer supports raw bitmap as argument.
(UseStreamDeckKeyBitmap.FromRawBitmap
) instead- Factory methods for GDI and WPF stuff moved to
StreamDeckKeyBitmap
- Update "Drawing" example to reflect that.
- New extension method for
IStreamDeck
to apply raw bitmap to buttons - HidLibrary forked and included as a submodule
- Changed IStreamDeck to support dis- and reconnects.
Backend doesn't support it now, but the interface is ready :-) - Refactoring HID communication to make
StreamDeckHID
simpler.
- Exception in Dispose
ShowLogo tested if object was disposed after it was marked as such - Timeout for HID write operations, because they keep blocking forever after disconnecting (and reconnecting) the device.
IStreamDeck.ShowLogo()
to show the default stream deck logo- Extention methods for
IStreamDeck
to create button images fromSystem.Drawing
andSystem.Windows
(WPF) elements.
This should make it easier to create button images programmatically (e.g. adding text to a button) - Example "Drawing"
- First alpha release
- HID communication based on HidLibrary
- Examples "Austria" and "Rainbow"