I get it... The problem with that is how do you get that HID data from the arduino into XMB in the first place.
You would probably have to use something like raw/direct input, or write a device driver (that's not going to happen) or I guess take it via a keyboard hook (for keys such as F13-24) That maybe possible...
But if using direct/raw input to read the HID data, maybe it would be easier to use that to read the mouse HID data directly (if only I could find the time to have another look into that, it might be possible with things I have learnt since). Previously the problem I had with raw/direct input is that you can not discard it, so it is useless for remapping the standard 5 buttons that DO work through the mouse hooks, as they could not be blocked that way. But for buttons that do NOT work through the hook, it may be a viable solution.
The other problem with the arduino, is how do you make it generic, to work with multiple mice from different manufacturers which do the HID differently (assuming it is HID in the first place). In my experience different mouse manufacturers do it differently. I can't remember which, but at least one Logitech mouse I have had expose more than one HID device, for example (a classic HID mouse as well as two (I think) other HID devices (keyboards I think). Doing anything in hardware that is generic is going to potentially be a mamough task too (and your still needing the user to buy/build the hardware!)
But its certainly good to have such discussions. It triggers new thoughts and ideas if nothing else. And I'm a little surprised that no one found this topic sooner - whose sole purpose was to get a discussion going, if not specifically in this direction
I have played briefly with arduino twice, first to make a key injector that XMBC can use instead of "sendInput" so it appears the keys are sent from a dedicated hardware keyboard - (it kind'a works but its slow with the most basic hardware I chose, very rough and certainly not production ready!).
And, secondly most recently (last weekend) but not at all for XMBC purposes, I started playing with a new dev board which I aim to use to control my boiler (central heating) which for the last 18 years has been controlled by a C# program running on my server, and when I last replaced my server, I vowed to change it up because it was a nightmare bringing across the old hardware and IO devices into a modern virtual environment! This was all created long before the crazy of cloud based heating control that has been all the rage for the last few years (and its all local thank you very much!).
It is C/C++ based with wrappers to make it a little easier (or in my case, well versed in C/C++, make it a little more to learn lol). It also abstracts stuff quite well - I've not dealt with USB per say, but I have used it as a HID device to send keys, and a serial device to communicate with all over the one USB connection.
My assembler is pretty limited to 6502 - didn't get in to it deeply past that - moved on to Pascal briefly and then C/C++/C# which has served me well!
Its good and often fun to keep learning new (and in some cases old) things,, but also its time consuming and that's a struggle lol.