Rivalcfg est un petit utilitaire en ligne de commande ainsi qu’une bibliothèque Python permettant de configurer les souris gaming de la marque SteelSeries sous GNU/Linux, mais aussi sous Windows, macOS, etc.
La version 4.0 venant tout juste de sortir, c’est l’occasion d’en parler un peu et de faire le point sur le projet.
Comment tout ceci a‑t‑il commencé ?
Ce projet a commencé début 2016, lorsque ma souris de l’époque est tombée en panne. Je l’ai remplacée par une Rival 100 de chez SteelSeries : une souris avec un design assez sobre, une sensibilité paramétrable, et… des LED RGB… Problème : le fabricant ne fournit aucun outil de configuration pour GNU/Linux. Il me fallait donc soit configurer la souris depuis une machine sous Windows, soit développer moi‑même un outil pour le faire sous GNU/Linux. J’ai bien sûr choisi la seconde option.
Je me suis donc lancé dans la rétro‑ingénierie du mulot, et c’est ainsi qu’est née la première version de Rivalcfg. Cette version ne gérait que la Rival 100 et ne fonctionnait que sous GNU/Linux. Très rapidement, j’ai retravaillé le code du logiciel pour qu’il puisse prendre en charge plusieurs souris. Moins de deux semaines après la première version, sortait Rivalcfg v2.0, qui gérait alors la Rival 100 et la Rival originale.
Puis, au fil du temps, quelques modèles supplémentaires ont été pris en charge, jusqu’à la sortie de Rivalcfg v3.0 en 2018. Il s’agit d’une réécriture presque complète du logiciel pour en améliorer l’architecture et ainsi en simplifier la maintenance. Cette version a aussi été l’occasion d’utiliser la bibliothèque HIDAPI pour communiquer avec les souris (au lieu d’utiliser directement udev), ce qui a permis une plus grande fiabilité et la prise en charge d’autres systèmes d’exploitation.
Une douzaine de versions vont se succéder dans la branche 3.x, chacune gérant toujours plus de souris.
Rivalcfg v4.0
Rivalcfg v4.0 est encore une fois une quasi‑réécriture du logiciel, prenant en compte tout ce qui a été appris lors du développement de la branche 3.x.
Par exemple, SteelSeries a tendance à sortir pas mal de souris identiques dont seul le design change. Dans cette quatrième version, les souris ont donc été regroupées en famille afin de simplifier la gestion des périphériques techniquement identiques.
Cette version apporte ainsi la prise en charge de nouveaux modèles, comme la Rival 3, mais ajoute aussi celle de nombreuses variantes de souris qui étaient déjà gérées, par exemple les Rival 300 Fallout 4 Edition et Rival 300 Evil Geniuses Edition, qui sont des variantes de la Rival 300 (nouveau nom commercial de la Rival originale). Au final, une quarantaine de souris sont actuellement gérées par Rivalcfg (sur un peu moins de soixante‑dix modèles existants), ce qui est déjà pas mal !
Le projet dispose à présent d’une documentation détaillée, aussi bien des API Python que des spécificités de configuration de chaque souris (il fallait auparavant se contenter du fichier README présent sur le dépôt GitHub).
La liste des nouveautés est encore longue, je vous laisse donc lire le journal des modifications si vous souhaitez en apprendre davantage !
Et après ?
Il y a encore beaucoup à faire. Déjà, il y a pas mal de petites choses qui étaient à l’origine prévues pour cette version, mais que j’ai décidé de reporter à plus tard. Ça faisait en effet plus de deux mois que je repoussais la sortie du logiciel parce qu’il manquait toujours quelque chose et ça risquait d’entamer ma motivation à force de ne plus en voir le bout.
Ensuite, tant qu’il y aura des contributeurs pour m’aider, je continuerai à prendre en charge de nouvelles souris. Les contributions sont essentielles à l’évolution de ce projet : je ne peux pas acheter tous les modèles de souris qui sortent, j’ai donc besoin d’aide pour effectuer le travail de rétro‑ingénierie des modèles que je ne possède pas.
Enfin, même si ce n’est pas pour tout de suite, je commence à réfléchir à la création d’une interface graphique pour rendre la configuration des souris plus simple… Mais ça prendra un peu de temps. :)
J’espère que ce logiciel pourra vous être utile si vous disposez de matériel SteelSeries. Et quoi qu’il en soit, n’hésitez pas à contribuer !
Dernière minute !
Avant‑hier, j’ai posté un message poli sur leur Reddit pour demander de l’aide. Ils m’ont répondu et m’ont fourni quelques infos qui m’ont permis d’ajouter une nouvelle souris (la Rival 300S, qui sera dans la prochaine version). Ils ne peuvent pas libérer les spécifications de leur matériel pour des raisons de politique interne, mais ne voient aucun problème à la rétro‑ingénierie de leur matériel. Ils vont donc m’envoyer des souris pour que je puisse en améliorer la prise en charge. L’ouverture des spécifications est régulièrement discutée chez eux, souvent à cause de Rivalcfg.
Savoir que SteelSeries n’est pas hostile ni indifférent au projet me redonne un bon coup de motivation.
Aller plus loin
- Page du projet sur GitHub (226 clics)
- Documentation officielle (60 clics)
- Canal de discussion de Rivalcfg sur Gitter (17 clics)
- Histoire du projet sur le blog de son développeur (69 clics)
# Merci !
Posté par barmic 🦦 . Évalué à 7.
J'ai une SteelSeries 100 moi aussi et au branchement j'avais état déçu d'avoir une couleur différente de celle du rétro éclairage de mon clavier… Je suis tombé sur ton logiciel qui a superbement fonctionné.
Je vais essayer celui-là. Encore merci :)
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Merci !
Posté par FLOZz (site web personnel) . Évalué à 5.
Je suis content que Rivalcfg te soit utile ! Ça fait plaisir d'avoir d'autres retours que des rapports de bug des fois :D
[^] # Re: Merci !
Posté par phraide . Évalué à 1.
Merci, j'ai pu remettre le mode breath da ma vaillante Sensei Diablo III … ce mode lui va tellement mieux :p tu aurais un fix pour le clic gauche qui clic pas ou double-clic? ( je blague…)
[^] # Re: Merci !
Posté par FLOZz (site web personnel) . Évalué à 4.
Je ne peux pas réparer ton bouton, mais au moins, grâce au mode breath elle peut à présent être recyclée en guirlande de Noël ! ;)
[^] # Re: Merci !
Posté par Johann Ollivier-Lapeyre (site web personnel) . Évalué à 2.
Un contacteur se change facilement pour qui possède un fer a souder et quelques dizaines de centimes. Je l'ai fait sur une Logitech que j'avais failli changer par dépit (ce qui aurait été une ânerie)
# Des questions...
Posté par Pierre Jarillon (site web personnel) . Évalué à 10.
N'étant pas un "gamer" je ne saisis pas pourquoi les souris standard ne conviennent pas. Qu'est-ce que ces souris ont de plus ?
Vu que SteelSeries est une société danoise, est-ce qu'il ne serait pas bon de les contacter pour leur proposer Rivalcfg ?
Enfin, étant un défenseur de l'interopérabilité, je pense qu'il serait bon d'exiger que les spécifications d'interface soient disponibles. À quand une loi européenne à ce sujet ?
[^] # Re: Des questions...
Posté par FLOZz (site web personnel) . Évalué à 10.
J'apprécie le fait de pouvoir régler la sensibilité de ma souris, c'est l'un des principaux intérêts pour moi. Après je ne crache pas sur les LED de couleurs qui permettent une touche de personnalisation (même si c'est clairement inutile ;)).
Certains des modèles de chez SteelSeries permettent de mapper (matériellement) des boutons de la souris sur des touches de claviers. C'est une fonctionnalité qui m'intéresse de plus en plus : j'aimerais bien pouvoir configurer des raccourcis sur certains boutons pour accélérer mon travail quand je suis sur des logiciels comme Inkscape ou Gimp (pouvoir changer d'outil en utilisant les boutons de la souris).
C'est effectivement une société danoise à l'origine. Ils ont racheté Ideazone (une société américaine) il y a quelques années, et je pense que leur équipe technique est essentiellement aux US aujourd'hui.
Quoi qu'il en soit, j'ai posté lundi un message sur leur Reddit, et ils m'ont répondu (j'avais auparavant essayé de les contacter via Twitter sans grand succès). J'ai donc pu discuter avec eux, ils m'ont fournit quelques infos qui m'ont déjà permis d'ajouter une nouvelle souris (la Rival 300S, qui sera du coup dispo dans la v4.1 d'ici quelques temps).
Ils ne peuvent pas libérer les specs de leur matériel pour des raisons politiques interne (visiblement c'est un sujet qui revient sur le tapis régulièrement, et souvent à cause de Rivalcfg :D), mais par contre ils ne voient aucun problème à ce que je fasse le reverse engineering de leur matériel. Ils vont donc m'envoyer des souris pour que je puisse en améliorer le support (j'ai même déjà reçu le tracking du colis, ils ont fait super vite !).
J'avoue que de savoir que SteelSeries n'est pas hostile, ni indifférent au projet me redonne un bon coup de motivation. Et puis avoir un coup de main du fabricant va énormément aider ! :D
[^] # Re: Des questions...
Posté par barmic 🦦 . Évalué à 5.
Super nouvelle ! Tu aurais pu en parler dans la dépêche :-)
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Des questions...
Posté par FLOZz (site web personnel) . Évalué à 4.
La dépêche était déjà en modération quand j'ai pu discuter avec eux, c'est pour ça que je n'en parle pas :)
[^] # Re: Des questions...
Posté par ZeroHeure . Évalué à 10. Dernière modification le 26 août 2020 à 15:51.
C'est ajouté :-)
Félicitations pour l'à-propos et la courtoisie de ton message à Steel Séries. Beaucoup de gens ne se rendent pas compte à quel point l'amabilité ouvre des portes.
"La liberté est à l'homme ce que les ailes sont à l'oiseau" Jean-Pierre Rosnay
[^] # Re: Des questions...
Posté par FLOZz (site web personnel) . Évalué à 3.
Ahah, merci ! :D
[^] # Re: Des questions...
Posté par ǝpɐןƃu∀ nǝıɥʇʇɐW-ǝɹɹǝıԀ (site web personnel) . Évalué à 10.
C'est ça que je ne comprends pas. Peut-être parce que je n'ai jamais développé de driver, ou fait de reverse engineering. Mais pourquoi diable veulent-ils tant que leurs clients trouvent seuls des infos qui sont disponibles chez eux ? Quel bénéfice en attendent-ils ? Et dans la mesure où il semble possible de trouver seul les infos, en quoi ne pas les donner protègerait un quelconque secret ?
Voilà qui paraît fort mystérieux.
« IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace
[^] # Re: Des questions...
Posté par FLOZz (site web personnel) . Évalué à 10.
J'ai l'impression que les techs seraient pour ouvrir les specs, mais c'est tout en haut de la hiérarchie que ça refuse. Il n'y a rien de particulier à comprendre je pense, c'est juste politique. Qui sait, peut être que ça changera un jour :)
[^] # Re: Des questions...
Posté par Francois Revol (site web personnel) . Évalué à 10.
C'est juste politique oui, et ça gonfle.
Je considère que les specs sont le manuel utilisateur du matériel, et quand j'achète quelque chose je dois savoir comment l'utiliser.
Je considère que les specs sont des "caractéristiques essentielles" du produit au sens du code de la consommation, et doivent donc être publiques.
Autant c'est amusant 5min le RE comme challenge intellectuel, autant c'est une perte de temps quand on a autre chose à faire. Je vais finir par leur facturer le temps perdu à RE les machins que j'achète pour juste pouvoir les utiliser…
Y a 20 ans quasiment tous les appareils électroniques avait un manuel, avec les schémas complets. La TV de mes parents avait un A1 replié 4 ou 5 fois au fond du manuel avec tous les schémas.
[^] # Re: Des questions...
Posté par FLOZz (site web personnel) . Évalué à 2.
Ah ça… le monde à bien changé depuis… :(
[^] # Re: Des questions...
Posté par Francois Revol (site web personnel) . Évalué à 4.
Hmm, en fait plutôt 40 ans, le temps passe. Mais bon.
[^] # Re: Des questions...
Posté par BAud (site web personnel) . Évalué à 5.
moui, pour le minitel, j'avais été agréablement surpris (vers ~1984) quand j'avais demandé à l'agence France Telecom s'il y avait de la doc' et qu'on m'a sorti des documents sur papier glacés, avec les blueprint à la fin, le tout gratuitement (il y avait toute la table de transcodage des caractères spéciaux et ce qui permettait de piloter le minitel à partir de mon Apple IIe :p)
Pour le sagem fast 800 — 20 ans plus tard — la doc' était un peu plus succincte et cryptique par endroits…
[^] # Re: Des questions...
Posté par jseb . Évalué à 9. Dernière modification le 27 août 2020 à 10:17.
Tu avais effectivement le schéma electrique, mais rien de secret. Uniquement des informations qu'un electronicien patient pouvait retrouver en observant les composants et les liaisons.
Par contre, tu n'avais pas le fonctionnement d'une éventuelle puce propriétaire.
Il y a près de 40 ans, tu avais déjà des extensions pour ordinateur personnel dont les références des ASIC étaient grattées (oui, physiquement) pour que ce soit illisible. Par exemple, les cartouches «action replays» sur les commodore (il y en eut bien d'autres).
Et pas grand chose n'était documenté en dehors des composants très grand public (l'émulation parfaite du VDP des MSX s'est fait à la sonde logique, depuis le temps, les specs ne sont jamais sorties).
Discussions en français sur la création de jeux videos : IRC libera / #gamedev-fr
[^] # Re: Des questions...
Posté par ǝpɐןƃu∀ nǝıɥʇʇɐW-ǝɹɹǝıԀ (site web personnel) . Évalué à 8.
Effectivement, ça s’est fait progressivement. Quelques personnes sans foi ni loi trouvent des conneries nuisibles pour la communauté mais profitables ; les autres ne n’ont pas réagi assez violemment contre ces hérésies ; et progressivement c’est devenu la norme même dans des cas où il n’y a aucun intérêt à procéder ainsi, comme ici pour programmer les boutons de sa souris.
Le même processus s’est produit pour la spéculation : dans la Grèce antique Aristote rapporte qu’on pouvait la punir d’ostracisme ; au moyen-âge beaucoup de pays y associaient la peine de mort ; puis s’est devenu un jeu de la haute société ; ça a fini par être officiellement autorisé un peu partout au XIXe ; et désormais c’est l’alpha et l’oméga de la politique.
« IRAFURORBREVISESTANIMUMREGEQUINISIPARETIMPERAT » — Odes — Horace
[^] # Re: Des questions...
Posté par Tonton Th (Mastodon) . Évalué à 2. Dernière modification le 28 août 2020 à 01:16.
Et si tu avais une petite
[url]
qui raconte cette histoire, je pense que les galloprovincialis seraient ravies de la lire.[^] # Re: Des questions...
Posté par jseb . Évalué à 5.
En me creusant la tête, j'ai fini par retrouver où j'avais là ça.
Il s'agit du VDP du MSX-2, et non pas du MSX comme je le croyais dans mes souvenirs.
C'est un travail de l'équipe OpenMSX, qui produit un émulateur de très grande qualité (un vrai délice pour programmer depuis un émulateur).
Le but était de reproduire les bugs du VDP 9938, qui fonctionnait trop bien en émulation :)
http://map.grauw.nl/articles/vdp-vram-timing/vdp-timing.html
Discussions en français sur la création de jeux videos : IRC libera / #gamedev-fr
[^] # Re: Des questions...
Posté par Sufflope (site web personnel) . Évalué à 1.
Bah
ça permet de faire plus de ventes à pas cher
[^] # Re: Des questions...
Posté par FLOZz (site web personnel) . Évalué à 3.
Je ne suis pas tout à fait d'accord pour le coup, la formulation de votre message laisse sous-entendre une volonté de tromperie, je ne pense pas que ce soit le cas pour ma part. La plupart des modèles techniquement identiques sont parfaitement identifiables.
Il s'agit le plus souvent d'édition spéciale d'un modèle existant. Par exemple la Sensei TEN et la Sensei TEN CS:GO Neon Rider Editon. Elles sont identiques techniquement, mais la seconde a un imprimé différent. Ici je pense que le lien de parenté est assez clair pour tout consommateur, et je ne vois pas où est le problème de proposer des couleurs ou des motifs différents.
Pour ce qui est de Rivalcfg, la seule difficulté avec ces éditions spéciales était d'obtenir le
productID
de tous les modèles (étant donné qu'il est différent pour chaque édition spéciale). Ce problème est heureusement résolu grâce à la base de donnée qui a été constituée.[^] # Re: Des questions...
Posté par barmic 🦦 . Évalué à 6.
Moi c'est par récupération que je l'ai. Mais globalement les souris pour les jeux ont quelques caractéristiques :
Bien sûr pour chaque trucs, tu va avoir des outrances : des dpi debilement élevés, des fréquences de polling qui n'ont plus de sens, etc
La gestion des led n'est que de la cosmétique, mais ça peut plaire.
Certaines permettent de personnaliser la forme et le poids de sa souris. Ça me paraît gadget.
https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll
[^] # Re: Des questions...
Posté par Nibel . Évalué à 8.
Le poids n'aura pas d'intérêt pour tous mais c'est une question d'affinité.
La forme par contre permet de changer la prise en main et à un vrai intérêt selon notre tenue de souris. Parfois ça va même plus loin et ça change le nombre d'entrées sur le châssis, ce qui permet d'utiliser un nombre d'entrées cohérents avec le jeu joué (on préférera un nombre limité d'entrées sur les FPS tandis qu'on aura tendance à en privilégier un maximum pour un MMO par exemple).
Dans les faits, la majorité des souris standards suffisent pour jouer. Comme n'importe quel vélo standard suffit pour rouler mais un cycliste aguerri préférera préparer son vélo avec par exemple, des freins à disques…
Les bons modèles de souris orientés jeux, en plus de la liste qu'a donné barmic ont des capteurs ultra-précis permettant de parfaitement reproduire le mouvement à l'écran sans approximation, ont une glisse "presque sans frottement" et bien souvent bien plus d'entrées qu'une souris standard. C'est vraiment pour ce dernier point que je m'oriente vers des souris "gaming". J'ai besoin d'au moins 5 entrées supplémentaires par rapport à une souris standard "3 boutons".
La majeure partie des morts l'était déjà de son vivant et le jour venu, ils n'ont pas senti la différence.
# Souris multi-bouton et presse papier
Posté par Joalland . Évalué à 3.
Est-ce qu'il existe des solutions pour avoir un historique du presse papier et de pouvoir appeler des éléments précis de cet historique en les mappant sur différents boutons de la souris ?
Par exemple dans mon historique de presse papier j'ai :
fraise - pomme - poire : j'appuie sur le 4ième bouton de la souris et j'appelle le deuxième élément de la liste (pomme).
Je copie colle un autre mot et mon historique devient
banane - fraise - pomme - pore : j'appuie sur le 5ième bouton de la souris et j'appelle le troisième élément de la liste (encore pomme).
[^] # Re: Souris multi-bouton et presse papier
Posté par FLOZz (site web personnel) . Évalué à 4.
Je sais qu'il existe des outils comme GPaste qui permettent de gérer un historique des éléments copiés dans le presse papier.
Je pense qu'avec une souris capable d'envoyer des appuies de touche de clavier (comme c'est le cas sur des modèles comme les Rival 3, 300, 310, 500, 600, 650, 700, 710, les Sensei RAW, TEN? et 310) ça doit être faisable de mapper un bouton sur un raccourci clavier permettant de coller un élément particulier de cet historique :)
# Merci
Posté par Nibel . Évalué à 5.
Ca fait quelques temps que j'utilise ton outil d'abord pour ma Sensei CoD Black Ops II Edition puis ma Sensei 310 aujourd'hui.
Ca tourne au poil. L'existence de ton soft a été décisif dans mon choix de racheter du matériel SteelSeries. Tu peux aller leur demander une pièce !
C'est encourageant une réaction aussi positive de l'entreprise.
La majeure partie des morts l'était déjà de son vivant et le jour venu, ils n'ont pas senti la différence.
[^] # Re: Merci
Posté par FLOZz (site web personnel) . Évalué à 4.
Merci pour ce retour !
Ça tombe bien, je viens justement de recevoir une Sensei 310, je vais pouvoir m'assurer que tout fonctionne bien, et implémenter le mapping des boutons pour ce modèle ! :D
Oui, carrément !
# Mise à jour
Posté par FLOZz (site web personnel) . Évalué à 5.
Suite à ma discussion avec SteelSeries, j'ai mis à jour l'article sur mon blog avec quelques détails supplémentaires :
https://blog.flozz.fr/2020/08/24/rivalcfg-comment-jai-cree-un-peu-par-hasard-cet-outil-de-configuration-pour-les-souris-steelseries/#quelques-nouvelles-suite-a-une-discussion-avec-steelseries
:)
# Piper
Posté par Foutaises . Évalué à 3.
Personnellement, je me sers de Piper pour configurer ma souris Logitech G520 Proteus Spectrum, et j'en suis très content. Il semblerait qu'il prenne aussi en charge les souris SteelSeries.
Pour mon clavier Corsair, j'utilise ckb-next, dont je suis également très content.
Je n'ai pas encore regardé s'il était possible d'adapter le rétroéclairage à l'application utilisée (comme le fait par exemple Aurora sous Windows/Mac), ni s'il y avait moyen de synchroniser dynamiquement les éclairages RGB clavier/souris (voire tour, mais perso point de RGB ni de LED dans cette dernière), pour quelques usages potentiellement intéressants mais aussi purement esthétiques.
[^] # Re: Piper
Posté par FLOZz (site web personnel) . Évalué à 3. Dernière modification le 08 septembre 2020 à 09:57.
Piper est l'interface graphique du projet libratbag. Il supporte de nombreuses souris Logitech et effectivement 7 souris SteelSeries. Il suffit de regarder les fichiers présents dans le dépôt pour en avoir la liste :
Cependant, libratbag/Piper ne supporte pas toutes les fonctionnalités disponibles sur certains des modèles SteelSeries (en regardant le code source, le mapping des boutons me semble limité par exemple).
# Et les souris Logitech ?
Posté par xavier philippon . Évalué à 1.
N'existe-t-il rien pour configurer les souris et clavier sans fil Logitech sous Linux ?
[^] # Re: Et les souris Logitech ?
Posté par Donk . Évalué à 2.
https://pwr-solaar.github.io/Solaar/
[^] # Re: Et les souris Logitech ?
Posté par FLOZz (site web personnel) . Évalué à 1.
Pour les souris Logitech, il y a libratbag / Piper :
:)
[^] # Re: Et les souris Logitech ?
Posté par xavier philippon . Évalué à 1.
Merci.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.