Julusian / node-xencelabs-quick-keys

A Node.js library for interfacing with the Xencelabs Quick Keys https://julusian.github.io/node-xencelabs-quick-keys/
https://www.npmjs.com/org/xencelabs-quick-keys
MIT License
33 stars 4 forks source link

Still in active development? #12

Open DrCWO opened 8 months ago

DrCWO commented 8 months ago

Hi Julusian, I wonder if this project is still actively maintained.

I am the guy behind http://diy.rooExtend.com and like to add the quick keys to my set of Roon Extensions that I already offer for other controllers. I like to use your library here and hope this will be OK for you as you offered unter MID license.

Please let me know. Best DrCWO

Julusian commented 8 months ago

Yes, I use this daily through https://github.com/bitfocus/companion-satellite, so it is actively maintained.

There isn't a whole lot to do other than updating dependencies as it works, but if there was a new model or revision of this hardware then I would be seeing what could be done to support it.

Yeah, with the MIT license you can do pretty much anything with this, including using it in a closed source paid product, so go ahead :)

DrCWO commented 8 months ago

Hi Julian, this is really great news for me. Would you please be so kind to mail me personally as I have some more questions regarding the use of your implementation and the device. Please find my e-mail address here: https://rooextend.com/impressum.html Best DrCWO

DrCWO commented 8 months ago

Hi Julian, just found time to enter all my questions here and hope for your reply:

Thanks' for your help Best DrCWO

Julusian commented 8 months ago
  • How far can the controller be taken away from the receiving dongle before loosing connectivity?

I haven't tried pushing it, but it is working for me mostly fine at 5m which includes going through a brick wall. I have had one or two occurrences of it dropping out at that range, but I haven't figured out why it did, that could have been something turned on causing more interference or a range issue

  • Which node release is mandatory for your software?

18.18 or any later version

  • Is there a chance you offer a node package for Raspberry Pi ARMv8 in near future?

It already works on ARM64

  • Did your software use RAW HID? Mine uses it for the SpaceMouse Wireless so would be great to have the same here.

What do you mean?

This library uses https://github.com/node-hid/node-hid to be able to do HID from nodejs. This library will work with either of the libusb or hidraw backends on linux

  • In the node example you use "import". As I'm on native Javascript I still use "require". Can your software also to be used with a "require" statement?

yes that will work

  • Using the device in Windows I can switch between layers for the buttons. Is this a feature of the controller or of the Windows Driver?

That is a feature of the software, you would need to reimplement this yourself

  • Did the buttons inside the wheel and that for switching layers also have a "normal" button-ID

0-7 are the buttons around the screen 8 is the 'layer switch' button 9 is center of the wheel

  • How can I control the color and brightness of the LED surrounding the wheel?
  • How can I customize the sensitivity of the wheel?
  • How can I send Text to the display and how to set the vertical or horizontal setting of the text?
  • How can I adjust the brightness of the display?

Once the manager gives you an class instance for the connected device, you can call various methods to change these properties: https://github.com/Julusian/node-xencelabs-quick-keys/blob/bee7ed8e014f35003325785dfe329a91ef581a8f/packages/core/src/types.ts#L60-L112

Setting text is a bit limiting, each key has a short string that can be shown next to it, and you can show an 'overlay' for a customisable duration with showOverlayText. This is a bit limiting, but its defined by what the hardware lets us do

DrCWO commented 8 months ago

Hi Julian, thanks' for the quick reply. This is absolutely fantastic as it seems that your software is a complete implementation. :-) As I read there is also a sleep timeout that can be set probably for saving energy. Question to this:

Julusian commented 8 months ago

I don't remember how the sleep behaves, I don't use that portion myself

DrCWO commented 5 months ago

And here my solution for using "require" of good old Javascript instead of "import" 👍

const { XencelabsQuickKeysManager} = require('@xencelabs-quick-keys/node');
var XencelabsQuickKeysManagerInstance = new (XencelabsQuickKeysManager);

this will replace the line import { XencelabsQuickKeysManagerInstance } from '@xencelabs-quick-keys/node'

you find in the example here work. With this you can put the example code in a ".js" file and it will work.

DrCWO commented 2 months ago

Hello julian, I finally integrated your library into my rooExtend platform. I will soon offer (Release v3.4.0 from rooExtend) a new Roon extension called rooMax that uses the QuickKeys controller to control the Roon Music Server.

Please watch this Link to see my announcement within the next two weeks.

Thanks' a lot for this valuable library I appreciate it al lot 🥇

Just to let you know I credited you on the Service Page or rooExtend v3.4.0 image

Best DrCWO