Hi
Am 22.10.24 um 11:47 schrieb Pavel Machek:
Hi!
Sorry for taking a bit long to respond.
This "illumination" subsystem would (from my perspective) act like some sort of LED subsystem
for devices with a high count of LEDs, like some RGB keyboards.
This would allow us too:
- provide an abstract interface for userspace applications like OpenRGB
- provide an generic LED subsystem emulation on top of the illumination device (optional)
- support future RGB controllers in a generic way
Advanced features like RGB effects, etc can be added later should the need arise.
I would suggest that we model it after the HID LampArray interface:
- interface for querying:
- number of LEDs
- supported colors, etc of those LEDs
- position of those LEDs if available
- kind (keyboard, ...)
- latency, etc
- interface for setting multiple LEDs at once
- interface for setting a range of LEDs at once
How are LEDs ordered? I don't believe range makes much sense.
For LampArray the spec suggests (but not requires) "row wise" starting in the
upper left, however the spec does not specify how to handle with double row keys
like iso-enter or half-key-downward offset arrow keys like they exist on some
notebooks.
I do not know if mixing sysfs (for controller attributes like number of LEDs, etc) and IOCTL
(for setting/getting LED colors) is a good idea, any thoughts?
I wonder what the advantage of this approach is over simply using HID LampArray
(emulation), openRGB is already going to support HID LampArray and since Microsoft
is pushing this we will likely see it getting used more and more.
There's nothing simple about "HID LampArray". Specification is long
ang ugly... and we don't want to be stuck with with OpenRGB (links to QT!).
It is the only vendor agnostic approach to complex userspace lighting control
atm. And what's the problem with QT?
Using HID LampArray also has the advantage that work has landed and is landing
to allow safely handing over raw HID access to userspace programs or even
individual graphical apps with the option to revoke that access when it is
no longer desired for the app to have access.
HID raw is not suitable kernel interface.
Personally I really like the idea to just emulate a HID LampArray device
for this instead or rolling our own API. I believe there need to be
strong arguments to go with some alternative NIH API and I have not
heard such arguments yet.
If you don't want "some alternative API", we already have perfectly
working API for 2D arrays of LEDs. I believe I mentioned it before
:-). Senzrohssre.
Pavel