<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Rivalcfg</title><link href="https://rivalcfg.flozz.org/" rel="alternate"/><link href="https://rivalcfg.flozz.org/news/feed.atom.xml" rel="self"/><id>https://rivalcfg.flozz.org/</id><updated>2026-03-10T00:00:00+01:00</updated><entry><title>[hotfix] Rivalcfg v4.16.1 released with a fix for the Rival 3 Wireless Gen 2 sensitivity settings</title><link href="https://rivalcfg.flozz.org/news/release_v4.16.1/" rel="alternate"/><published>2026-03-10T00:00:00+01:00</published><updated>2026-03-10T00:00:00+01:00</updated><author><name>Fabien "FLOZz" LOISON</name></author><id>tag:rivalcfg.flozz.org,2026-03-10:/news/release_v4.16.1/</id><summary type="html">&lt;p&gt;A bug in &lt;strong&gt;Rivalcfg v4.16.0&lt;/strong&gt; affects the sensitivity settings of the &lt;strong&gt;SteelSeries Rival 3 Wireless Gen 2&lt;/strong&gt; mouse.&lt;/p&gt;
&lt;p&gt;When fewer than 5 sensitivity presets are configured, Rivalcfg sets an incorrect sensitivity value on the Y axis. For example, if you configure only one preset, the vertical axis sensitivity …&lt;/p&gt;</summary><content type="html">&lt;p&gt;A bug in &lt;strong&gt;Rivalcfg v4.16.0&lt;/strong&gt; affects the sensitivity settings of the &lt;strong&gt;SteelSeries Rival 3 Wireless Gen 2&lt;/strong&gt; mouse.&lt;/p&gt;
&lt;p&gt;When fewer than 5 sensitivity presets are configured, Rivalcfg sets an incorrect sensitivity value on the Y axis. For example, if you configure only one preset, the vertical axis sensitivity is set to 100 DPI, causing the cursor to appear to move almost exclusively horizontally, which effectively makes the device unusable.&lt;/p&gt;
&lt;p&gt;This bug is now &lt;strong&gt;fixed in Rivalcfg v4.16.1&lt;/strong&gt;, released today. If you own a SteelSeries Rival 3 Wireless Gen 2, you are encouraged to update as soon as possible.&lt;/p&gt;
&lt;p&gt;If you were affected by this issue, simply reconfigure the sensitivity settings using this new version of Rivalcfg. Doing so will restore the correct configuration and make the device behave normally again.&lt;/p&gt;
&lt;p&gt;For a more technical description of the problem, please refer to &lt;a class="reference external" href="https://github.com/flozz/rivalcfg/issues/273"&gt;issue #273&lt;/a&gt;.&lt;/p&gt;
&lt;div class="section" id="complete-changelog"&gt;
&lt;h2&gt;Complete Changelog&lt;/h2&gt;
&lt;p&gt;Here is the complete changelog for &lt;strong&gt;Rivalcfg 4.16.1&lt;/strong&gt;:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;fix(device): Fixed Rival 3 Wireless Gen 2 becoming unusable after setting sensitivity (&amp;#64;flozz, #273)&lt;/li&gt;
&lt;li&gt;fix(handler): Fixed &lt;tt class="docutils literal"&gt;multidpi_range_choice_xy&lt;/tt&gt; handler with xxyy mapping using less than &lt;tt class="docutils literal"&gt;max_preset_count&lt;/tt&gt; presets (&amp;#64;flozz, #273)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><category term="release"/></entry><entry><title>New standalone builds for Linux, macOS and Windows</title><link href="https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/" rel="alternate"/><published>2026-02-24T00:00:00+01:00</published><updated>2026-02-24T00:00:00+01:00</updated><author><name>Fabien "FLOZz" LOISON</name></author><id>tag:rivalcfg.flozz.org,2026-02-24:/news/new-standalone-builds-for-linux-macos-and-windows/</id><summary type="html">&lt;p&gt;Hello folks!&lt;/p&gt;
&lt;p&gt;I know it was sometimes difficult to use Rivalcfg because installing it from sources requires using unusual tools for those who are not Python developers (&lt;tt class="docutils literal"&gt;venv&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;pip&lt;/tt&gt;, etc.). It is even worse on Windows where you have to install Python first as it is not part of the …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Hello folks!&lt;/p&gt;
&lt;p&gt;I know it was sometimes difficult to use Rivalcfg because installing it from sources requires using unusual tools for those who are not Python developers (&lt;tt class="docutils literal"&gt;venv&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;pip&lt;/tt&gt;, etc.). It is even worse on Windows where you have to install Python first as it is not part of the system.&lt;/p&gt;
&lt;p&gt;That's why I am glad to announce the brand new &lt;strong&gt;standalone builds of Rivalcfg&lt;/strong&gt; that have been &lt;a class="reference external" href="issue231"&gt;requested one year and a half ago&lt;/a&gt;! Standalone builds are compiled versions of Rivalcfg you can run without installing any dependencies. You only have to download an archive (&lt;tt class="docutils literal"&gt;.tar.gz&lt;/tt&gt; for Linux, &lt;tt class="docutils literal"&gt;.zip&lt;/tt&gt; for Windows) or a disk image (&lt;tt class="docutils literal"&gt;.dmg&lt;/tt&gt;) for macOS and extract the files from it. That's it!&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;img alt="Standalone releases of Rivalcfg for Linux, macOS and Windows" src="https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/images/screenshot_rivalcfg_standalone_releases.png" /&gt;
&lt;p class="caption"&gt;Standalone releases of Rivalcfg for Linux, macOS and Windows&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;For Windows users that may be less used to the command line, I added a help message and a pause in the execution of the program if Rivalcfg is run without arguments, which is the case when you double-click on the executable. This is to avoid having just a &amp;quot;flashing&amp;quot; terminal window that closes immediately, which may be interpreted as &lt;em&gt;&amp;quot;it does not work&amp;quot;&lt;/em&gt;.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/images/screenshot_rivalcfg_standalone_on_windows.png"&gt;
&lt;img alt="Standalone version of Rivalcfg on Windows" src="https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/images/screenshot_rivalcfg_standalone_on_windows.png" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Standalone version of Rivalcfg on Windows&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;I did not want to wait for the next Rivalcfg version to bring the standalone builds to folks who wanted to use them, so I released standalone builds for the last Rivalcfg version (v4.16.0). I flagged them as &amp;quot;experimental&amp;quot; as they are brand new. Do not hesitate to &lt;a class="reference external" href="open_issue"&gt;open an issue on GitHub&lt;/a&gt; if you find a bug.&lt;/p&gt;
&lt;p&gt;Please note that it is known that the &lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;--print-debug&lt;/span&gt;&lt;/tt&gt; option is broken on those builds, and probably on the &amp;quot;regular&amp;quot; v4.16.0 version too, since I removed the dependency on &lt;tt class="docutils literal"&gt;setuptools&lt;/tt&gt;, this will be fixed in the next release.&lt;/p&gt;
&lt;p&gt;On a more technical note, those builds are made with a Python compiler named &lt;a class="reference external" href="https://nuitka.net/"&gt;Nuitka&lt;/a&gt;. The Linux and macOS versions are compiled with Python 3.14, which brings a beautifully colored help output. The Windows version, however, use Python 3.13 as it crashes with Python 3.14 (this Python version is still experimentally supported by Nuitka).&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/rivalcfg_colored_output_rival100.png"&gt;
&lt;img alt="Rivalcfg colored help output (Rival 100)" src="https://rivalcfg.flozz.org/news/new-standalone-builds-for-linux-macos-and-windows/images/rivalcfg_colored_output_rival100.png" style="width: 500px;" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Rivalcfg colored help output (Rival 100)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Along with this new way to distribute Rivalcfg, I added a &amp;quot;&lt;a class="reference external" href="/download.html"&gt;download&lt;/a&gt;&amp;quot; page on the website that references the standalone builds, and I updated the &lt;a class="reference external" href="https://flozz.github.io/rivalcfg/install.html"&gt;install documentation&lt;/a&gt; to make things simpler.&lt;/p&gt;
&lt;p&gt;See you in a month or two for the next Rivalcfg release! 😄️&lt;/p&gt;
</content><category term="announce"/></entry><entry><title>Rivalcfg v4.16.0 released with new supported devices and a lot of improvements!</title><link href="https://rivalcfg.flozz.org/news/release_v4.16.0/" rel="alternate"/><published>2026-02-14T00:00:00+01:00</published><updated>2026-02-14T00:00:00+01:00</updated><author><name>Fabien "FLOZz" LOISON</name></author><id>tag:rivalcfg.flozz.org,2026-02-14:/news/release_v4.16.0/</id><summary type="html">&lt;p&gt;&lt;strong&gt;Rivalcfg v4.16.0&lt;/strong&gt; was released on 2026-02-13. It adds support for &lt;strong&gt;3 new devices&lt;/strong&gt; and &lt;strong&gt;improves the CPI (sensitivity) setting&lt;/strong&gt; for many mice. On the technical side, this version adds official support for Python 3.14 and drops support for Python 3.9. The packaging has also been modernized …&lt;/p&gt;</summary><content type="html">&lt;p&gt;&lt;strong&gt;Rivalcfg v4.16.0&lt;/strong&gt; was released on 2026-02-13. It adds support for &lt;strong&gt;3 new devices&lt;/strong&gt; and &lt;strong&gt;improves the CPI (sensitivity) setting&lt;/strong&gt; for many mice. On the technical side, this version adds official support for Python 3.14 and drops support for Python 3.9. The packaging has also been modernized (the old &lt;tt class="docutils literal"&gt;setup.py&lt;/tt&gt; / &lt;tt class="docutils literal"&gt;setuptools&lt;/tt&gt; combo was replaced by &lt;tt class="docutils literal"&gt;pyproject.toml&lt;/tt&gt; and &lt;tt class="docutils literal"&gt;Flit&lt;/tt&gt;).&lt;/p&gt;
&lt;div class="section" id="three-new-devices-supported"&gt;
&lt;h2&gt;Three new devices supported&lt;/h2&gt;
&lt;p&gt;As mentioned in the introduction, this version brings support for 3 new SteelSeries mice.&lt;/p&gt;
&lt;div class="section" id="aerox-3-wireless-cs2-dragon-lore-edition"&gt;
&lt;h3&gt;Aerox 3 Wireless CS2 Dragon Lore Edition&lt;/h3&gt;
&lt;p&gt;The first one is the &lt;strong&gt;&amp;quot;SteelSeries Wireless Gaming Mouse CS2 Dragon Lore Edition&amp;quot;&lt;/strong&gt;. It is just a &lt;em&gt;skin&lt;/em&gt; of the Aerox 3 Wireless, so it was easy to support. You will find more information about this mouse in the documentation:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://flozz.github.io/rivalcfg/devices/aerox3_wireless.html"&gt;https://flozz.github.io/rivalcfg/devices/aerox3_wireless.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/aerox_3_wireless_cs2_dragon_lore_edition.webp"&gt;
&lt;img alt="SteelSeries Wireless Gaming Mouse CS2 Dragon Lore Edition (Aerox 3 Wireless)" src="https://rivalcfg.flozz.org/news/release_v4.16.0/images/aerox_3_wireless_cs2_dragon_lore_edition.webp" style="width: 300px;" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;SteelSeries Wireless Gaming Mouse CS2 Dragon Lore Edition (Aerox 3 Wireless)&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="rival-3-gen-2"&gt;
&lt;h3&gt;Rival 3 Gen 2&lt;/h3&gt;
&lt;p&gt;The second one is the &lt;strong&gt;Rival 3 Gen 2&lt;/strong&gt;, a new iteration of the Rival 3. The main change is the ability to set different sensitivity values for X and Y axes. This required implementing a new handler to fully support the device. More info in the doc:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://flozz.github.io/rivalcfg/devices/rival3_gen2.html"&gt;https://flozz.github.io/rivalcfg/devices/rival3_gen2.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Also, I would like to thank &lt;a class="reference external" href="https://github.com/orsonteodoro"&gt;Orson Teodoro&lt;/a&gt; who helped support this mouse! 😁️&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/rival3_gen2.webp"&gt;
&lt;img alt="Rival 3 Gen 2, black and white versions" src="https://rivalcfg.flozz.org/news/release_v4.16.0/images/rival3_gen2.webp" style="width: 500px;" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Rival 3 Gen 2, black and white versions&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="rival-3-wireless-gen-2"&gt;
&lt;h3&gt;Rival 3 Wireless Gen 2&lt;/h3&gt;
&lt;p&gt;And the last one is the &lt;strong&gt;Rival 3 Wireless Gen 2&lt;/strong&gt;. Like the wired version, it is just a new iteration of the previous Rival 3 Wireless, with the ability to set different CPI values on X and Y axes.&lt;/p&gt;
&lt;p&gt;Please note that, as for the first version, the support of the Gen 2 is partial. The following features are currently not supported:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Color / illumination,&lt;/li&gt;
&lt;li&gt;Wheel scroll mapping,&lt;/li&gt;
&lt;li&gt;Power settings (high efficiency, smart illumination, sleep timer).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I will work on this later for both Gen 1 and Gen 2 devices. More information in the doc:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://flozz.github.io/rivalcfg/devices/rival3_wireless_gen2.html"&gt;https://flozz.github.io/rivalcfg/devices/rival3_wireless_gen2.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/rival3_wireless_gen2.webp"&gt;
&lt;img alt="Rival 3 Wireless Gen 2, black and white versions" src="https://rivalcfg.flozz.org/news/release_v4.16.0/images/rival3_wireless_gen2.webp" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Rival 3 Wireless Gen 2, black, white, lavender and aqua versions&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="improvement-of-the-cpi-setting"&gt;
&lt;h2&gt;Improvement of the CPI setting&lt;/h2&gt;
&lt;p&gt;To set the mouse sensitivity, Rivalcfg must convert the CPI requested by the user,
(for example, 1800 dpi) to a value understood by the sensor, such as &lt;tt class="docutils literal"&gt;0x14&lt;/tt&gt;.&lt;/p&gt;
&lt;p&gt;Some sensors are linear and are easy to map. For those, we may have &lt;tt class="docutils literal"&gt;[100 dpi = 0x01]&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;[200 dpi = 0x02]&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;[300 dpi = 0x03]&lt;/tt&gt; and so on. However, some other sensors are not linear and use a fixed conversion table that contains unexpected &amp;quot;jumps&amp;quot;. For example, the &lt;em&gt;TrueMove Air&lt;/em&gt; sensor is mapped with &lt;tt class="docutils literal"&gt;[100 dpi = 0x00]&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;[200 dpi = 0x02]&lt;/tt&gt;, &lt;tt class="docutils literal"&gt;[300 dpi = 0x03]&lt;/tt&gt;, etc.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/truemove_air_sensor_non_linear_cpi_values.png"&gt;
&lt;img alt="TrueMove Air sensor is non-linear, so we can see &amp;quot;jumps&amp;quot;" src="https://rivalcfg.flozz.org/news/release_v4.16.0/images/truemove_air_sensor_non_linear_cpi_values.png" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;TrueMove Air sensor is non-linear, so we can see &amp;quot;jumps&amp;quot;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;For non-linear sensors, Rivalcfg used to approximate values using a linear function. This works for most values, but for some of them it does not match the ones of the fixed table. In such cases, the behavior is undefined. It may set a slightly different sensitivity than the requested one, or it may not work at all.&lt;/p&gt;
&lt;p&gt;Anyway, this is now fixed. Rivalcfg v4.16.0 includes value tables for the &lt;em&gt;TrueMove Air&lt;/em&gt;, &lt;em&gt;TrueMove Core&lt;/em&gt; and &lt;em&gt;PMW3326&lt;/em&gt; sensors, so it now perfectly matches the SteelSeries GG Engine behavior.&lt;/p&gt;
&lt;p&gt;Mouse families that now have accurate CPI values are:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;Aerox 3&lt;/li&gt;
&lt;li&gt;Aerox 3 Wireless&lt;/li&gt;
&lt;li&gt;Aerox 5&lt;/li&gt;
&lt;li&gt;Aerox 5 Wireless&lt;/li&gt;
&lt;li&gt;Aerox 9 Wireless&lt;/li&gt;
&lt;li&gt;Prime Wireless&lt;/li&gt;
&lt;li&gt;Rival 106 device&lt;/li&gt;
&lt;li&gt;Rival 110 device&lt;/li&gt;
&lt;li&gt;Rival 3&lt;/li&gt;
&lt;li&gt;Rival 3 Wireless&lt;/li&gt;
&lt;li&gt;Rival 300S device&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="complete-changelog"&gt;
&lt;h2&gt;Complete Changelog&lt;/h2&gt;
&lt;p&gt;Here is the complete changelog for &lt;strong&gt;Rivalcfg 4.16.0&lt;/strong&gt;:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;feat(devices): Added support for the Aerox 3 Wireless CS2 Dragon Lore Edition (1038:187a, 1038:1878) (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;feat(devices): Added support for the Rival 3 Gen 2 (1038:1870) (#249, #257, &amp;#64;flozz, &amp;#64;orsonteodoro)&lt;/li&gt;
&lt;li&gt;feat(devices): Added support for the Rival 3 Wireless Gen 2 (1038:1872) (#258, &amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;feat(handler): Added range_choice handler (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;feat(handler): Added multidpi_range_choice handler (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;feat(handler): Added multidpi_range_choice_xy handler (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;fix(devices): Fixed DPI values for devices using the TrueMove Air sensor (&amp;#64;flozz):&lt;ul&gt;
&lt;li&gt;Aerox 3 Wireless (1038:183A, 1038:187A, 1038:1838, 1038:1878)&lt;/li&gt;
&lt;li&gt;Aerox 5 (1038:1850)&lt;/li&gt;
&lt;li&gt;Aerox 5 Wireless (1038:1854, 1038:185E, 1038:1862, 1038:1852, 1038:185C, 1038:1860)&lt;/li&gt;
&lt;li&gt;Aerox 9 Wireless (1038:185A, 1038:1876, 1038:1858, 1038:1874)&lt;/li&gt;
&lt;li&gt;Prime Wireless (1038:1842, 1038:184A, 1038:1840, 1038:1848)&lt;/li&gt;
&lt;li&gt;Rival 3 Wireless (1038:1830)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;fix(devices): Fixed DPI values for devices using the TrueMove Core sensor (&amp;#64;flozz):&lt;ul&gt;
&lt;li&gt;Aerox 3 (1038:1836)&lt;/li&gt;
&lt;li&gt;Rival 3 (1038:1824, 1038:184C)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;fix(devices): Fixed DPI values for devices using the PixArt PMW3326 sensor (&amp;#64;flozz):&lt;ul&gt;
&lt;li&gt;Rival 106 device (1038:1816)&lt;/li&gt;
&lt;li&gt;Rival 110 device (1038:1729)&lt;/li&gt;
&lt;li&gt;Rival 300S device (1038:1810)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;misc(tests): Added tests for the Aerox 5 device (1038:1850) (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;misc: Modernized packaging setup.py/setuptools -&amp;gt; pyproject.toml/flit (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;misc: Added Python 3.14 support (&amp;#64;flozz)&lt;/li&gt;
&lt;li&gt;misc!: Removed Python 3.9 support (&amp;#64;flozz)&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
</content><category term="release"/></entry><entry><title>10 years of Rivalcfg, new Web site and a logo!</title><link href="https://rivalcfg.flozz.org/news/10-years-of-rivalcfg-new-web-site-and-a-logo/" rel="alternate"/><published>2026-02-13T00:00:00+01:00</published><updated>2026-02-13T00:00:00+01:00</updated><author><name>Fabien "FLOZz" LOISON</name></author><id>tag:rivalcfg.flozz.org,2026-02-13:/news/10-years-of-rivalcfg-new-web-site-and-a-logo/</id><summary type="html">&lt;p&gt;Hello folks!&lt;/p&gt;
&lt;p&gt;This year, &lt;strong&gt;Rivalcfg turns 10 years!&lt;/strong&gt; How time flies!&lt;/p&gt;
&lt;p&gt;It's been 10 years since I started reverse engineering USB devices. When I wrote the first commit of this project on March 28, 2016, I only wanted to be able to change the color of my brand new Rival …&lt;/p&gt;</summary><content type="html">&lt;p&gt;Hello folks!&lt;/p&gt;
&lt;p&gt;This year, &lt;strong&gt;Rivalcfg turns 10 years!&lt;/strong&gt; How time flies!&lt;/p&gt;
&lt;p&gt;It's been 10 years since I started reverse engineering USB devices. When I wrote the first commit of this project on March 28, 2016, I only wanted to be able to change the color of my brand new Rival 100 mouse on Linux. I had no idea that 10 years later I would still be working on this project.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/rivalcfg_1.0.0_and_steelseries_rival_100.jpg"&gt;
&lt;img alt="Photo of my old Rival 100 mouse and screenshot of Rivalcfg 1.0.0 (released on April 5, 2016)" src="https://rivalcfg.flozz.org/news/10-years-of-rivalcfg-new-web-site-and-a-logo/images/rivalcfg_1.0.0_and_steelseries_rival_100.jpg" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Photo of my old Rival 100 mouse and screenshot of Rivalcfg 1.0.0 (released on April 5, 2016)&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Today, Rivalcfg aims to support any SteelSeries gaming mouse. I can currently count &lt;strong&gt;73 devices&lt;/strong&gt; listed by &lt;tt class="docutils literal"&gt;&amp;quot;rivalcfg &lt;span class="pre"&gt;--list&amp;quot;&lt;/span&gt;&lt;/tt&gt;. It sounds like a lot, but be aware that some are counted twice (when they have two different product IDs for wired and wireless modes), and some devices are just &lt;em&gt;skins&lt;/em&gt; of identical mice (for example, the Rival 300 family counts 10 devices, all technically the same).&lt;/p&gt;
&lt;p&gt;If I count &amp;quot;by hand&amp;quot;, I find &lt;strong&gt;24 different families of mice&lt;/strong&gt; 🐭️. That's still a lot for a single maintainer! Anyway, Rivalcfg now supports — or at least partially supports — most SteelSeries mice. Some are still missing, but I am working to fix that. 😉️&lt;/p&gt;
&lt;div class="section" id="a-brand-new-web-site"&gt;
&lt;h2&gt;A brand new Web site&lt;/h2&gt;
&lt;p&gt;After 10 years of existence, it is a shame this project still does not have a Web site, so I made one. Currently, it is mostly a landing page with links to the documentation and GitHub, but I will add more content later.&lt;/p&gt;
&lt;p&gt;I used to post about Rivalcfg on &lt;a class="reference external" href="https://blog.flozz.fr/"&gt;my blog&lt;/a&gt; and on my &lt;a class="reference external" href="https://buymeacoffee.com/flozz/posts"&gt;BuyMeACoffee&lt;/a&gt; page. But the content is mixed with other things and my blog is in French. This Web site will allow me to post some news about the project (mostly release announcements) in one place, and in English, to make it accessible to more people.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="rivalcfg-now-has-a-logo"&gt;
&lt;h2&gt;Rivalcfg now has a Logo&lt;/h2&gt;
&lt;p&gt;This week, I finally drew a logo for Rivalcfg. It represents a mouse with its scroll wheel, forming an &amp;quot;R&amp;quot;, like in Rivalcfg. It is inspired by the SteelSeries one but not too close to it, to avoid any legal issues.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;object data="https://rivalcfg.flozz.org/news/10-years-of-rivalcfg-new-web-site-and-a-logo/images/rivalcfg_logo.svg" type="image/svg+xml"&gt;Rivalcfg logo&lt;/object&gt;
&lt;p class="caption"&gt;Rivalcfg logo&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;The logo is already used on this Web site, and I will add it on GitHub too. It may also be used later for a future GUI.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="future-of-the-project"&gt;
&lt;h2&gt;Future of the project&lt;/h2&gt;
&lt;p&gt;In 2025 I almost not worked on Rivalcfg. That year was a difficult one for me, and I must admit I felt a little fatigue on this project... But I am back!&lt;/p&gt;
&lt;p&gt;A new Rivalcfg version (v4.16.0) will be released very soon. It will add support for latest SteelSeries mice and will improve the CPI (sensitivity) settings of all devices using the &lt;em&gt;TrueMove Core&lt;/em&gt;, &lt;em&gt;TrueMove Air&lt;/em&gt; and &lt;em&gt;PMW3326&lt;/em&gt; sensors.&lt;/p&gt;
&lt;p&gt;After this release, I will have to review a &lt;em&gt;pull request&lt;/em&gt; that adds support for the Rival 5 mouse, which should be released in v4.17.0. Then I will try to work on the ability to send multiple USB packets for a single setting. This will allow to support button bindings on the Aerox 9 and the bindings of the scroll wheel on some other devices.&lt;/p&gt;
&lt;p&gt;In a later futur, I want to work on a graphical user interface (using GTK 4). It would make Rivalcfg simpler to use for less technical folks, especially gamers who are new to Linux.&lt;/p&gt;
&lt;p&gt;Preliminary work for this GUI already started years ago (in the &lt;a class="reference external" href="https://github.com/flozz/rivalcfg/releases/tag/v4.4.0"&gt;v4.4.0&lt;/a&gt;, released at the end of 2021), when I added code to save mouse settings to the computer's disk. This is required to allow Rivalcfg to display the current state of the settings in the GUI as they cannot be retrieved from the device itself.&lt;/p&gt;
&lt;p&gt;Interestingly, I already developed a proof of concept for a GTK 3 GUI during a live coding session on Twitch, but I never had time to go further.&lt;/p&gt;
&lt;div class="figure"&gt;
&lt;a class="reference external image-reference" href="./images/screenshot_poc_gtk3_gui_rivalcfg.png"&gt;
&lt;img alt="Proof of concept of GUI for Rivalcfg" src="https://rivalcfg.flozz.org/news/10-years-of-rivalcfg-new-web-site-and-a-logo/images/screenshot_poc_gtk3_gui_rivalcfg.png" /&gt;
&lt;/a&gt;
&lt;p class="caption"&gt;Proof of concept GTK 3 GUI for Rivalcfg&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div class="section" id="that-s-all-folks"&gt;
&lt;h2&gt;That's all folks&lt;/h2&gt;
&lt;p&gt;That's it for today. I hope you enjoyed the reading and that Rivalcfg is useful to you. To stay informed about Rivalcfg, you can now subscribe to the &lt;a class="reference external" href="https://rivalcfg.flozz.org/news/feed.atom.xml"&gt;Atom feed&lt;/a&gt; of this Web site, join the &lt;a class="reference external" href="https://discord.gg/P77sWhuSs4"&gt;Discord&lt;/a&gt; server, or follow me on &lt;a class="reference external" href="https://mastodon.social/&amp;#64;FLOZz"&gt;Mastodon&lt;/a&gt; and &lt;a class="reference external" href="https://bsky.app/profile/flozz.fr"&gt;Bluesky&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;See you soon for the v4.16.0 release announcement! 😄️&lt;/p&gt;
&lt;/div&gt;
</content><category term="announce"/></entry></feed>