Hi!
I'm currently trying to get the Microsoft Sidewinder X4 working in Linux. So, I came across libg15. G11 / G15 and X4 are really similar to each other, including 18 programmable keys (S1-S6 x 3), 3 banks and a record key. However, the X4 doesn't send out any scancodes, afaik the G15 doesn't too (is that right?). The problems seem to be the same, so I thought about modifying the code, so it fits the Sidewinder X4. Even after some hours of research (in libg15, g15daemon, g15macro), I wasn't able to find out where the USB Raw Data got translated into scan codes or keycodes.
Here are my findings so far about the Sidewinder X4:
Microsoft Sidewinder X4:
______________________
VID: 045e
PID: 0768
REV: 0150
Devices:
________________________________________________________
1. VID_045e&PID_0768&REV0150 # USB Composite Device
2. VID_045e&PID_0768&REV0150&MI_00 # Keyboard / HID
3. VID_045e&PID_0768&REV0150&MI_01 # Consumer Control Device (S1 - S6, Record, Bank Switch, Play/Pause, Backward, Forward, Mute, Volume Down, Volume Up)
Key Raw Code
________________________________________________________________
S1 - 08 01 00 00 00 08 00 00 00 00 # 5 byte return?
S2 - 08 02 00 00 00 08 00 00 00 00
S3 - 08 04 00 00 00 08 00 00 00 00
S4 - 08 08 00 00 00 08 00 00 00 00
S5 - 08 10 00 00 00 08 00 00 00 00
S6 - 08 20 00 00 00 08 00 00 00 00
Bank Switch - 01 00 00 00 00 00 14 00 01 00 00 00 00 00 00 00
Record - 01 00 00 00 00 00 11 00 01 00 00 00 00 00 00 00
Play/Pause - 01 cd 00 00 00 00 00 00 01 00 00 00 00 00 00 00
Backward - 01 b6 00 00 00 00 00 00 01 00 00 00 00 00 00 00
Forward - 01 b5 00 00 00 00 00 00 01 00 00 00 00 00 00 00
Mute - 01 e2 00 00 00 00 00 00 01 00 00 00 00 00 00 00
Volume Down - 01 ea 00 00 00 00 00 00 01 00 00 00 00 00 00 00
Volume Up - 01 e9 00 00 00 00 00 00 01 00 00 00 00 00 00 00
Status
_______________________________
Bank 1: 07 04
Bank 2: 07 09
Bank 3: 07 11
Auto: 07 0A
Record B1: 07 64
Record B1 (blink): 07 44
Record B2: 07 69
Record B2 (blink): 07 49
Record B3: 07 71
Record B3 (blink): 07 51
The "bank-switching" (like M1-M3) is a simple procedure:
1. You press "Bank Switch" - keyboard sends "01 00 00 00 00 00 14 00" # 8 bytes
2. "Get Status" request
3. Return actual status (e.g. 07 04, Bank 1)
4. Send 07 09, so keyboard switches to Bank 2
5. Keyboard sends / receives (?) "01 00 00 00 00 00 00 00"
You can get the full log here: http://www.mediafire.com/?nio1kizdss9cccu.
So, is there someone who can give me any advice?
Thank you for your time,
Tolga Cakir
Hmm.... Would it help, if I
Hmm.... Would it help, if I open up the keyboard to look, which chips are used (and if they're similar to chips used by Logitech)? Or is there any other help, that I can provide? The Sidewinder X4 seems to be almost the same keyboard as the Logitechs, that's why I got some hope to get the X4 working just with little effort.
Support & Donation
Unfortunately, I don't really have the time to dive into hacking this low level at the moment. However, I just snagged a Sidewinder X4 and adore the thing -- i'd be more than happy to donate half the difference between it and a G15 (which is a fair chunk of change!) if we could get some progress going to enable the extra-function keys on it. I have a feeling there are at least a few other people who feel the same. If at all possible, please do look into it, and i'd be more than happy to beta test if necessary!