[SOLVED] Trying to acess the onboard memory of a gaming mouse
Linux - HardwareThis forum is for Hardware issues.
Having trouble installing a piece of hardware? Want to know if that peripheral is compatible with Linux?
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Introduction to Linux - A Hands on Guide
This guide was created as an overview of the Linux Operating System, geared toward new users as an exploration tour and getting started guide, with exercises at the end of each chapter.
For more advanced trainees it can be a desktop reference, and a collection of the base knowledge needed to proceed with system and network administration. This book contains many real life examples derived from the author's experience as a Linux system and network administrator, trainer and consultant. They hope these examples will help you to get a better understanding of the Linux system and that you feel encouraged to try out things on your own.
Click Here to receive this Complete Guide absolutely free.
Great Gibbo - compliments! And with just those few lines of code!
Such a program will for sure be very useful - not only to the persons that own that specific mouse. Will start looking myself now at that libusb.
So, here is finally the utility I was working on to make my throttle work with X-Plane in Linux.
It basically monitors whichever USB-device you have connected to your PC (and which you want to monitor) and translates any button press or release events on that device into key events (which you have to define/map).
You can define that whenever you press your second button on your joystick it generates on the currently focused window the keyboard press event "X", that for the same still on the second button it generates the key press events "xyZ" on the focused window, and so on for any other buttons of any other devices. I'm having problems explaining this but in the end using it is extremely simple... .
Not sure if it's useful nor where to go from here (with this base it might be quite easy to do something more complex than to just target a mapping to key events) - will wait to see if I get any feedback and/or if more than a couple of users per year access the page.
Sorry for the delay - had some trouble at work and some parts of the code were a bit tricky for me.
I can now change any of the keybinds to any of the standard ones in the Windows Steel Series Utility and can see how to do everything else I was looking for.
I'll throw up a link to the basic Python 3 Script that saves keybinds if anyone wanted a look,
Thanks a gazillion for that, I actually went ahead and bought the mouse because of this thread and that it was on special offer, you have probably figured it out yourself, but just in case you didn't I have mapped some buttons using your brilliant script:
#Button ? ? ? ? ? ? K7 k K11 j K10 i K12 h K14 e K13 z K4 q K5 e K6 g ??
# 0 1v 2v 3v 4v 5v 6 8 7 7 8 6 9 5 10 3 11 0 12 1 13 2 14 4
data_a = b'\x0e\x00\x4b\x00\x03\x01\x00\x00\x00\x00\x02\x00\x00\x00\x00\x03\x00\x00\x00\x00\x04\x00\x00\x00\x00\x05\x00\x00\x00\x00\x10\x00\x08\x00\x01\x10\x00\x07\x00\x01\x10\x00\x06\x00\x01\x10\x00\x05\x00\x01\x10\x00\x03\x00\x01\x10\x00\x00\x00\x01\x10\x00\x01\x00\x01\x10\x00\x02\x00\x01\x10\x00\x04\x00\x01'
#Special Key Table String
# 0 1 2 3 4 5 6 7 8
data_b = b'\x1d\x14\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f\x10\x11'
# z q e f g h i j k
K# is the button number used in the original software, I can run it in Wine and export profiles,but I can't store them on the mouse, and if I select the tools menu it crashes.
But I have used the above settings for gaming, and it works like a charm.
If you have some other goodies, it would be much appreciated, I would love to be able to do more, I am stuck on defaults except for the changes made with your script, the dpi setting is very low, and although the orange glow is nice it would be cool to be able to do some customizations.
I was thinking of contacting Steelseries because they write: "we would happily assist any community-driven efforts to develop an open-source solution for Linux. If you are aware of such efforts or would like to contribute, then please file a supp", so we shouldn't need to reverse engineer it.
I didn't see this thread before; I got a WoW: Cataclysm mouse recently and was saddened that it didn't work. I wrote my own piece of software that can load button -> keyboard macro combinations (although I havn't tested it very much)
The basic problem is that a usb mouse can't (according to the USB HID standard) have more than the standard buttons. The WoW: Cataclysm mouse gets around this by pretending to be a usb keyboard & mouse combo - so as has been discovered here the important thing is loading the key mapping to the onboard memory.
I reverse-engineered the macro code. The mouse gets sent two packets (my program sends them via libusb) - one to load up a list of keyboard macros and one to map keys to macros. I think my rogram works better than echoing data to the mouse blindly as my program can take a configuration file.
If you can compile C code you should be able to make it work. If anyone gets stuck and has questions I'll try and help. Having unresponsive buttons really irritated me.
I have downloaded your program but I haven't tried it yet, but if it can do macros that is awesome.
Do you by any chance have anything for changing DPI and light effect? I don't have easy access to a Windows system, so I'm kind of stuck with my current settings.
Thank you for sharing. :-)
I had a stab at the LED stuff; the official drivers had options for Pulse and Brightness that ... didn't seem to do anything. Who knows what the go is with that? LED colour wasn't there this morning but it is there now and updated into the github repository (and setting the RGB colours to 0-0-0 will disable the LED altogether). Getting CPI working didn't come together that smoothly but it'll probably be there this week. Just keep an eye on the repo.
Thanks again, I really look forward to try it out, I'll grab the newer version and keep an eye out for updates. I like how you made it so root isn't needed to update. This mouse is really awesome for RPG games when it can be configured properly.
I tried the program and it works fine with the buttons and I can change the color too, but when I restart the computer the colors revert to their previous setting but the buttons keep the new configuration.
PS how do I configure the buttons for special keys? I had for instance button 13 set to escape, although I was thinking of changing it.
Alright, I made another attempt at a few more features and they seem to work:
* Sensitivity can be changed
* You can now send arbitrary key-codes into the mouse
Bear in mind that I don't have any hints from SteelSeries at the moment even though I want this mouse to be an option for linux users (because it really is a nice mouse). With that, I'm not going to try and debug why your mouse is changing colour on startup unless I notice it happening on my end. There is a lot of channel noise over the usb line that I don't understand that might have toggled something important (wireshark can sniff usb traffic! who would have guessed). You could run the script every time the computer starts.
I'm also not going to research what the specific keycodes are (although I know that a starts at 4 and that control, alt, shift, etc live at near 0xe0 (hex, 224 in decimal). If you figure out a list I'll throw it in the readme or the example config file for anyone else who stumbles past.