So, at the beginning of the year I started doing research - technically, I've been trolling the internet, but research sounds better - to find a viable, or at least theoretical, solution which did not involve programming a driver or XInput to DirectInput wrapper. I was surprised to find that this type of device is not that common. You'd think that a device like this would be ever-more-so common now a days, but that isn't the case.
After much 'research', I found a device dubbed 'Cool! Wireless Bluetooth 3.0 Gamepad with Keyboard' (pictured below) on ebay, so without further research into the Bluetooth technology, I ordered it.
Yes, I do know that the xbox does not support Bluetooth, but I figure I'd give it a try nonetheless, if nothing comes out of it, I can always use it with the Firestick that I bought, configured, used it for a day, put it back into it's box, and never touched again.
So... the day came when the item was delivered, I opened it up, put the batteries, connected a USB dongle to xbox, placed the receiver in, and voila, IT WORKED!!!... Yeah, NO, it didn't! But you knew that, didn't you? Calm down, no one likes a smart-ass...
This is where the real 'research' into the technology began. As it turns out, one of the drawbacks of the Bluetooth is that you need a driver stack for the device to work, even if it's just a keyboard. Apparently, which you probably know smarty pants, computer peripherals use a specification labeled USB HID Class.
However, whilst Bluetooth can use this specification, by default it uses Host Controller Interface (HCI) Architecture.Wikipedia wrote:In computing, the USB human interface device class (USB HID class) is a part of the USB specification for computer peripherals: it specifies a device class (a type of computer hardware) for human interface devices such as keyboards, mice, game controllers and alphanumeric display devices.
Because of this, even standard computers are unable to use Bluetooth devices when, say in the bios, as the computer is unable to communicate with the device and therefore does not detect it. Interestingly enough, this isn't the case with apple computers.developer.bluetooth wrote:The HCI provides a command interface to the baseband controller and link manager, and access to configuration parameters. This interface provides a uniform method of accessing the Bluetooth® baseband capabilities.
After much reading, I found that with CSR based receivers, you can flash out the firmware and use, what they dubbed, HID proxy. In short, it sets the default protocol to HID with basic profiles so that any computer supporting HID can detect and communicate with the device. You can read more about in here. I figure that was too much drama for me, so I didn't push the issue further... until recently, that is...
I came across a device dubbed 'Rii Mini 2.4GHz i8 Wireless Keyboard Mouse,' pictured below. Although I could not find any technical specification about this device, I noticed that it was not Bluetooth, but rather uses the wireless 2.4Ghz technology, which I know the xbox has no issues with given that there are various wireless gamepads using this technology. I felt even more confident when reading that some wireless keyboards using this technology were detected and supported by xbmc. I was fully aware that this did not guarantee the device would work on the xbox, but I ordered it all the same.
Once again, item arrived, charged the - included - rechargeable battery, connected the receiver to the xbox's USB dongle, booted the system, and VIOLA! IT WORKED!!! It really did work this time. Although is not a full gamepad with keyboard, it's close enough and I'm more than happy with this device. It performs very nicely, it's wireless 2.4Ghz as oppose to the RI remote. No more having to move around and point to the xbox if something is in the way. This has been very handy, especially with the new YouTube addon I've created (yes, i haven't publicly released it yet, relax, i will).
Overall, I'm a happy camper, and I share this just in case you use xbmc for your media playing needs, and are in need of compact keyboard. Now I just need to create a custom keymap.xml that makes use of the additional buttons found on this keyboard.