This is a topic we already discussed on both mail list and gerrit, but forums seems to be more popular nowadays so lets talk about it.
Haiku input stack has some points that can be improved and there are some missing essential features (for 2020’s standards). Those are some that comes to my mind now:
- There is no HID Consumer support, basically, media keys, but complex items as volume knobs also fall here.
- There is no multitouch support. This shouldn’t be difficult to add at application level the way Joysticks work now: SDL, Kivy, Qt, etc. App_server gestures is out of this scope.
- There is no way to know what device id/vendor an input device belongs to, even device names are generic: USB Mouse 1
- Imho, we need an easier way for users to at least, blacklist usb/i2c devices. A way to load quirks would be cool too.
- Is i2c/hid working? Code seems to be there but I’ve had no luck with it.
- SPI/hid is already a thing, at least on Apple devices, we have nothing here.
- Bluetooth/hid is not working also. I don’t know what is missing here.
I have submited some patches for some of this points, I have some wip code for others, but in general, all of who are involved here agree that some refactor is needed and patches have to wait once we have a better input architecture.
HID drivers are, imho, a bit outdated. They send rigid structures to user space. This works well for simple devices but fails to accomodate modern complex ones.
A proposal has been made to move HID code from kernel to user land, altough it isn’t a hard task, it would need to rewrite a lot of input server device add-on code. I am researching the possibility of having an hybrid approach so both input models can live together while migration is done, but I haven’t arrived to a solution yet.
So… feedback is welcome. I am not a guru here, I’ve just want my devices to work on haiku and started working on it the best I can.