No, all features are not exposed by the generic drivers.
And the extra features aren't just "who cares" goofy things.
For instance, my mouse has a wheel which is also the middle button. To press the middle mouse button, you click the wheel as if it were a button.
It also has another little middle button right in line with the wheel. That other button does not generate any scan codes or hid events.
All that button does is toggle the detent on/off for the wheel. It's effects are entirely within the mouse and does not talk to the host. Does not generate any mouse events or xev events or hid or scancodes etc.
The wheel detent toogle thing is, the wheel has some mass to it, and if the detent is off ,then the wheel can be flicked and it will spin freely for some time by inertia. This is great for zipping up or down in a long document.
But it also means that in free-wheeling mode, the wheel is always generating wheel movement events, since it's always moving. If you so much as look at it funny it moves a little, let alone actually intentionally handling and moving the mouse.
So mormally you want the detent mode on so that the wheel does not spin freely.
Having the middle mouse button be the wheel is extremely agrevating to me, because even in detent mode I can't press the middle button without also scrolling the wheel at least a little at the same time, except with annoying great care. It reeeeely screws up cad work.
Luckily, the mouse allows you to swap those two functions around. You can make it so that you click the wheel to toggle the wheel between detent and freewheel, and use the button as the middle mouse button.
Like I said, whichever button is acting as the detent-toggle, that button does not generate HID events. So you can't do this button remapping the normal way like you might swap left & right buttons for instance.
The official Windows software talks to the mouse and reconfigures something inside the mouse, via some special protocol of it's own.
Solaar does the same thing.
That is just one tiny example that isn't "control the rgb lights", there are others.
Actually even controlling the rgb lights is a real issue too.
I also have a keyboard that I wanted because it is mechanical and low profile and TKL layout (ten-key-less, full keyboard and edit/arrow blocks, but just no 10-key to the right of that.), and wireless including bluetooth so I don't need a dongle with my laptop normally, but still able to be used in bios/uefi because it comes with a usb receiver as well as supporting bluetooth.
That thing is pretty good in all those aspects, but it also has ^%$%#%% rgb lights, and the firmware in the keyboard defaults to a continuous disco show of changing colors. It's completely ridiculous.
You need to use the software to shut the damned lights off, or really not merely off but make them function just as normal backlights.
I'm not a gamer and do not want rgb lights, but I do want everything else about that keyboard, so a non-gamer needs an rgb gamer keyboard light control.
It has to do it's thing on every power cycle too. The setting isn't saved in the keyboard, the software has to perform the action over and over, either everytime the pc boots or every time the keyboard loses power or every time the keyboard goes to sleep and wake, I don't remember exactly which. I don't use that keyboard any more. And that api is not exposed through normal HID. The special software has to talk via it's special interface.
Those are goofy "who cares" things, though. Doesn't mean you are wrong to want them, just they are very very niche use cases which almost nobody else is going to want.
Wanting a middle mouse button that can be clicked without scrolling the wheel is not goofy.
It's the most basic function of a button that you can press it, and it alone.
And I don't know how many more times I could have repeated that I wanted the control over a goofy feature only to disable it. The only way to make that into something dismissable is by saying "you should either just enjoy the 24/7 disco light show or use some other keyboard"
Both are ridiculous invalid inconsiderate & ignorant. No one gets to tell anyone else that. It's perfectly reasonable to want a mechanical keyboard, or tenkeyless layout, or bios functionality, or bluetooth, and not rgb multicolor flashing lights. And it's perfectly valid to have landed on some particular model that is available that hits almost all the tickboxes one cares about and just have some particular thing that needs to be changed somehow.
And all this whole thread answering the parent question is just explaining why the software exists and the fact that the normal driver interface does not handle these aspects of driving the hardware.
Why in the world would you even care? What in the world is even the point of hearing that explaination of a simple technical thing, and trying to say "that's why you need it? so you don't need it then"? Like in what way does this affect you even the slightest?
Where does that instinc come from? It sure is common though.
Is that why those mice sell well? Because no one cares about those features? Sure, they might be rarer but not as rare that you think they are just looking at the Amazon top selling charts.
For instance, my mouse has a wheel which is also the middle button. To press the middle mouse button, you click the wheel as if it were a button.
It also has another little middle button right in line with the wheel. That other button does not generate any scan codes or hid events.
All that button does is toggle the detent on/off for the wheel. It's effects are entirely within the mouse and does not talk to the host. Does not generate any mouse events or xev events or hid or scancodes etc.
The wheel detent toogle thing is, the wheel has some mass to it, and if the detent is off ,then the wheel can be flicked and it will spin freely for some time by inertia. This is great for zipping up or down in a long document.
But it also means that in free-wheeling mode, the wheel is always generating wheel movement events, since it's always moving. If you so much as look at it funny it moves a little, let alone actually intentionally handling and moving the mouse.
So mormally you want the detent mode on so that the wheel does not spin freely.
Having the middle mouse button be the wheel is extremely agrevating to me, because even in detent mode I can't press the middle button without also scrolling the wheel at least a little at the same time, except with annoying great care. It reeeeely screws up cad work.
Luckily, the mouse allows you to swap those two functions around. You can make it so that you click the wheel to toggle the wheel between detent and freewheel, and use the button as the middle mouse button.
Like I said, whichever button is acting as the detent-toggle, that button does not generate HID events. So you can't do this button remapping the normal way like you might swap left & right buttons for instance.
The official Windows software talks to the mouse and reconfigures something inside the mouse, via some special protocol of it's own.
Solaar does the same thing.
That is just one tiny example that isn't "control the rgb lights", there are others.
Actually even controlling the rgb lights is a real issue too.
I also have a keyboard that I wanted because it is mechanical and low profile and TKL layout (ten-key-less, full keyboard and edit/arrow blocks, but just no 10-key to the right of that.), and wireless including bluetooth so I don't need a dongle with my laptop normally, but still able to be used in bios/uefi because it comes with a usb receiver as well as supporting bluetooth.
That thing is pretty good in all those aspects, but it also has ^%$%#%% rgb lights, and the firmware in the keyboard defaults to a continuous disco show of changing colors. It's completely ridiculous.
You need to use the software to shut the damned lights off, or really not merely off but make them function just as normal backlights.
I'm not a gamer and do not want rgb lights, but I do want everything else about that keyboard, so a non-gamer needs an rgb gamer keyboard light control.
It has to do it's thing on every power cycle too. The setting isn't saved in the keyboard, the software has to perform the action over and over, either everytime the pc boots or every time the keyboard loses power or every time the keyboard goes to sleep and wake, I don't remember exactly which. I don't use that keyboard any more. And that api is not exposed through normal HID. The special software has to talk via it's special interface.
So that's another example.