I'll try to dig into it. It's been a while since I did anything to the Linux kernel, but I hopefully can get my way around it well enough to check. The problem is that on Windows only the HID implementation is available, but on Linux the HID implementation requires tweaking udev rules to get access to the /dev/hidrawX device and the LinuxEvent implementation does not. So there would be some benefit in making the two behave consistently rather than just unifying on the HID version. From: James Turner...
I've returned to this after a while and concluded that since other platforms don't support that many buttons in their joystick API, but the HID API is available everywhere, it will be better to use that. … except that at that moment I noticed a discrepancy between the FGLinuxEventInput and FGHIDEventInput implementations. I'll discuss the details elsewhere, but in short both detected the same device and use different event names. I also intend to make a small fix to just eliminate the button aliasing...
I've pushed it here: https://github.com/jan-hudec/flightgear/tree/topics/joystick-2212 I didn't include the tweak to remove libc++ from CMakeLists.txt that I needed to compile with clang on linux (clang on linux uses gnu stdlibc++ for compatiblity with gcc), which I needed because I was getting an ICE from gcc. I have to retest that; it's a separate issue.
I gave it a shot myself over the weekend, because the 48-button Honeycomb Aeronautical Bravo Throttle Quadrant is not usable otherwise. The current code wraps the button around so button 32 registers as 0, 33 as 1 etc., and many of the high buttons on the Throttle Quadrant are switches that report one button in each position, so they make also the low buttons unusable. I went the other way and intentionally broke the interface by replacing the int with a std::vector<bool>. It didn't break all that...
Do you have a branch with the work in progress somewhere, so I or somebody could try to take it further?
Qt 5.4 compatibility for fglaunch
SimGear does not compile with gcc 5 on Linux