Someone might remember some time ago my battles with a keyboard I bought about one year ago, a Logitech LX700, that has a lot of extra keys that I liked to bind to different meaning for easy access to functions and stuff.
In the first place I had to edit xorg 6.8’s evdev driver to have it working, because almost all the extra keys were sent with high byte values, over 255. I also had to use my own custom xkbdata ebuild as I needed to change the keycodes for almost everything.
With the new Xorg 7.1 I had an hard time as the evdev driver was almost completely rewritten, so I gave it a try “vanilla” (almost vanilla at the end, I had to add a patch to avoid the Xorg server to segfault). The good news is that it seems finally to work (almost entirely, I lost the multimedia keys that are the only keys sent on the second event interface).
Now I actually have one “normal” keyboard and a 99 buttons mouse. This is not that perfect actually, as I can’t bind shortcuts in KDE to buttons, so I have either to hack at KDE to allow that, or I’ll have to find how to configure evdev to get me the keys as keys (and then write a map for this keyboard, hopefully sending it upstream this time).
Right now I tried binding the close button with xbindkeys and xvkbd as suggested by a blog post by Juergen Kreileder (and partially by RockMan of KMobileTools – who instead told me to use xsendkeys but that does not seem to work), but this method does not scale well enough for me, at least I have some problems due to the lag of executing the external command every time. I could probably spend some time creating a mouse button -> keysym wrapper, but at this point after finally getting rid of the hacks I would prefer finding a proper solution, either by changing KDE or by configuring the evdev properly.
Kudos to the Xorg developers, a big “Thank you” for the people maintaining the evdev driver, that is becoming better release after release!