First of all, there does exist various community efforts for using the Elgato Stream Deck under Linux, the USB protocol has been reverse engineered and it is quite simple to get key presses. There are various userland libraries and some UI applications. They are mostly written in Python or some other obscure language like Go.
The obvious, and most Linux way in my opinion, would be a kernel input driver, as then it could work with just about any application. I actually find it strange that nobody has done one yet as it looks relatively easy. I've done some tiny driver coding from time to time so I might even do it one day. But for now, userland.
I've done a proof-of-concept cli app, using libusb hidapi/evdev, in C obviously, that can change the button images (from jpg files, keep it simple), change brightness and inject button presses into the system using the uinput device. It still needs a bit of work before public publishing but should be available on github soon.