XIVDeck
XIVDeck copied to clipboard
Loupedeck Support
The Loupedeck has come up a couple times, especially now that Razer is releasing a Stream Deck competitor. This Issue exists to track Loupedeck development progress (if any), plus any notes about support.
If you are here because you want Loupedeck support, it's probably not going to happen for a while. Until I get my hands on some actual hardware or Loupedeck gives me a software simulator option, I'm unable to make any meaningful work on a plugin for the platform. I do want to support the Loupedeck officially at some point, but it's just a question of time and hardware (and their SDK being decent to work with).
SDK Documentation: https://github.com/Loupedeck/LoupedeckPluginSdk4/wiki
Hello @KazWolfe, I just released the first version of my implementation for a LoupeDeck plugin! You can find it here: https://github.com/bendobos/LoupeXIVDeck.
It supports the same commands as your Stream Deck plugin and even allows controlling volume channels using the rotary encoders by using https://github.com/karashiiro/SoundSetter.
@bendobos Hiya, this looks awesome! Unfortunately I don't have one to test it out still, but everything looks pretty cool. Did you have any notable issues with getting the API working for your use case?
If you're okay with it, can I list your Loupedeck plugin in my project's README? Similarly, if you want to request any sort of API tweak to make your use case work better, feel free to ask. I can't guarantee I'll add any specific thing, but I definitely do want to make the API more consumable/useful.
Hi! There were no real issues in using the API, except maybe the lack of documentation 😎. But reverse-engineering your Vue app was simple enough.
Please, go ahead and link to my repo in your README 🙂.
Concerning API changes, I can think of three things:
- Something to get around sending the Stream Deck plug-in version number. As it is now, I‘d have to keep up with your releases to avoid error messages in-game concerning version numbers of an unrelated plugin.
- With the rotary encoders, the LoupeDeck is perfect for adjusting sliders. It‘d be really cool to adjust sliders in the settings (i.e. audio volume), including getting the current value to display on the LoupeDeck. I haven‘t yet worked with Dalamud, so I have no idea if something like that is possible.
- Would something like
GetHotbars
, that returns all assigned hotbar slots with icons, be possible? I think it would be great Usability to avoid having to find out IDs manually.
If you happen to have more ideas for the rotary encoder, let me know. I was thinking that it could maybe be fun to cycle saved Gearsets using them 🙂.
Something to get around sending the Stream Deck plug-in version number. As it is now, I‘d have to keep up with your releases to avoid error messages in-game concerning version numbers of an unrelated plugin.
Yeah, I saw that in your code. There are a few ways to deal with this:
- Set your version to
0.2.9999
or something. I should just check whether the reported version number is less than the current Dalamud version, so this'll remain fine. Bonus points here is I'll generally aim to push breaking updates in minor versions - e.g. you'll be able to expect some breakage in plugin version 0.3. - Set your
mode
toDeveloper
or just leave it null. I think you might even be able to pass in something likeLoupeXIVDeckPlugin
without any particular issue.
The version check code is available here if you want to take a look. I've been looking at splitting out the Stream Deck Plugin from the Dalamud plugin as well (see Issue #30 for this one), which would facilitate a rewrite of version checking and all in general, at which point I'll probably revisit this in more depth. It shouldn't be too hard to have the client plug-in send a "hey, please update me" message if it detects an update independently.
With the rotary encoders, the LoupeDeck is perfect for adjusting sliders. It‘d be really cool to adjust sliders in the settings (i.e. audio volume), including getting the current value to display on the LoupeDeck. I haven‘t yet worked with Dalamud, so I have no idea if something like that is possible.
I've been meaning to add some sort of "state request" system for a while - I can look at adding slider state and a few other things somewhere for a mid-future rewrite. Probably won't happen for a while, but it definitely can be done.
Would something like GetHotbars, that returns all assigned hotbar slots with icons, be possible? I think it would be great Usability to avoid having to find out IDs manually.
I can look into dumping the entire hotbar cache, sure. Such a function would return icon IDs but not the icon itself though, purely for performance-related reasons. The design of this was for the Stream Deck to only request what it needed (again due to performance), so I'm curious as to what you'd want to pull the entire hotbar struct for.
Closing in favor of #36, as Elgato has deigned to annoy me with their own hardware I need to support, that will include much of the same things.
For anyone who does want to use a Loupedeck, I would strongly recommend using @bendobos' plugin for the platform, as it, well, exists and seems to be pretty well done.
@bendobos - please expect a 0.3.0 API bump at some point in the future; you may track progress via this milestone and the above-referenced Issue. I hope that a fair number of your requests will be naturally resolved as a side effect of that API bump. If you're on Discord, please also feel free to shoot me a friend request at @KazWolfe#2896
if you'd prefer a more real-time line of communication. Thank you again for your work on the Loupedeck side!