-
-
Notifications
You must be signed in to change notification settings - Fork 66
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add Sensei Ten support (1038:1832) #94
Conversation
Hello, thank you for your interest in this project. I will first try to answer your question in this comment and then, in an other comment, I will try to guide you to reverse engineer the mouse to have a proper support of it 😁️
Yes, "sensitivity" preset is the CPI preset. It seems you are right, I see five CPI presets in the default configuration of the mouse (extracted from the Windows SSE3 database): {
// ...
"raw_cpi": {"level1": 400, "level2": 800, "level3": 1200, "level4": 2400, "level5": 3200},
// ...
} I suppose you can switch CPI preset using the button under the wheel, but you have no way to know which preset you are currenlty using. To test this feature, set all five preset to the lowest sensitivity, then move your mouse to "feel" the speed of the pointer. Then you can try to set all five preset to the higher value and move the mouse to see if something changed.
That's strange, I find two led configuration in the default config: {
// ...
"logo_lighting": {
// ...
},
// ...
"wheel_lighting": {
// ...
},
// ...
}
The format of the packet sent to the Sensei Ten to configure RGB LEDs is probably different from the one of the Sensei 310 (the color packets on recent SteelSeries mice are similar but not exactly identical).
You are not obligated to reinstall the software after each change, you should be able to run your dev version using the following command (from the root dir of the project):
|
Reverse engineering a mouse (if you want to try, no obligation)The best way to add support of the mouse is to play with the SteelSeries Engine 3 (SSE3) on Windows while capturing the packet between the mouse and the computer. We can then analyze the packets to understand how to configure the mouse. Don't be afraid, it is easier than it seems. 😉️ For the "packet capturing" part, I wrote an article. It is in French, but Google translate can help: https://blog.flozz.fr/2016/03/27/steelseries-rival-100-reverse-engineering-dun-peripherique-usb/ Do not hesitate if you have question or if you need help with the capture of the packets. Then, change one setting a time in the SSE3 to see what is sent to the mouse. You can post here the captured packet along with the setting you changed (and the value you set). You can take this post as an example: #82 (comment) The best thing to do is to start with a simple value like the CPI:
this should be sufficient to understand how to configure all CPI preset :) EDIT: I am available on Gitter (→ https://gitter.im/rivalcfg/Lobby) if you want to chat about that. I am also available on Twitter (DM → https://twitter.com/flogisoft) |
for reference, I put here the default config of the Sensei Ten extracted from the SSE3 database: {
"batch_resolution" : {"enable_mask": 31, "active_level": 1,
"resolution_1" : 8,
"resolution_2" : 16,
"resolution_3" : 24,
"resolution_4" : 48,
"resolution_5" : 64},
"raw_cpi": {"level1": 400, "level2": 800, "level3": 1200, "level4": 2400, "level5": 3200},
"polling_rate": {"level": 1},
"exact_accel": {"level": 0},
"exact_aim": {"level": 0},
"free_move": {"level": 0},
"button_mappings": {
"buttons": [
{"function": 1, "key_codes": [0, 0, 0, 0]},
{"function": 2, "key_codes": [0, 0, 0, 0]},
{"function": 3, "key_codes": [0, 0, 0, 0]},
{"function": 4, "key_codes": [0, 0, 0, 0]},
{"function": 5, "key_codes": [0, 0, 0, 0]},
{"function": 81, "key_codes": [78, 0, 0, 0]},
{"function": 81, "key_codes": [75, 0, 0, 0]},
{"function": 48, "key_codes": [0, 0, 0, 0]}
],
"no_live_deploy": 1
},
"wheel_mappings": {
"wheels": [
{"function": 49, "key_codes": [0, 0, 0, 0]},
{"function": 50, "key_codes": [0, 0, 0, 0]}
],
"no_live_deploy": 1
},
"logo_lighting":{
"type": 1,
"has_direction": 0,
"direction_type": 0,
"direction_inverted": 0,
"focal_x": 0,
"focal_y": 0,
"speed": 1000,
"scale": 1,
"num_colors": 3,
"colors": [
{ "r":255, "g":0, "b":0 },
{ "r":0, "g":255, "b":0 },
{ "r":0, "g":0, "b":255 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 }
],
"positions": [
{ "pos": 0 },
{ "pos": 33 },
{ "pos": 66 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 }
],
"initial_color": { "r":255, "g":0, "b":0 },
"react_color": { "r":0, "g":0, "b":0, "time": 0 },
"trigger_mask": 7,
"settings_mask": 0
},
"wheel_lighting":{
"type": 1,
"has_direction": 0,
"direction_type": 0,
"direction_inverted": 0,
"focal_x": 0,
"focal_y": 0,
"speed": 1000,
"scale": 1,
"num_colors": 3,
"colors": [
{ "r":255, "g":0, "b":0 },
{ "r":0, "g":255, "b":0 },
{ "r":0, "g":0, "b":255 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 },
{ "r":0, "g":0, "b":0 }
],
"positions": [
{ "pos": 0 },
{ "pos": 33 },
{ "pos": 66 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 },
{ "pos": 0 }
],
"initial_color": { "r":255, "g":0, "b":0 },
"react_color": { "r":0, "g":0, "b":0, "time": 0 },
"trigger_mask": 7,
"settings_mask": 0
},
"logo_element": {
"pos": {
"x": 0,
"y": 0
},
"effect_index": 0
},
"wheel_element": {
"pos": {
"x": 0,
"y": 0
},
"effect_index": 1
}
} |
Hey @flozz, how did you extract that file? Is this the |
@FFY00 no, I was not able to understand how to use .edevice files yet... There is a SQLite database that is built when installing SSE3, it contains the list of all devices with their default config. :) |
Released in rivalcfg v3.12.0. Thank you :D |
I bought this mouse earlier this evening, and had of course not considered that sitting down with something like this was necessary. Thanks for providing such a great piece of software!
I duplicated the configurations used for the recently released Sensei 310 and updated the sensitivity settings to match the Sensei Ten.
Thoughts:
--wheel-color
command ultimately does nothing. The color of both leds are updated by the--logo-color
command.led_id
property is ignored by the software. Changing it, or even removing it completely does not prevent the software from updating the mouse color. Updating the LED indexes to[0,1]
in thergbuniversal_format
object did not matter.Questions:
rivalcfg
python package to make sure that my configuration changes were updated. Is there a quicker way to do this?Device specifications:
https://steelseries.com/gaming-mice/sensei-ten#specs