RX-Modulus (Completely Modular Mouse)

Finally a mouse that can be freely changed, fixed and upgraded suit the user.

Similar projects worth following
Project Story:
The inspiration for the mouse project came about as a direct result of our dissatisfaction with mice presently available on the market. With stale, recycled features that haven't changed in years and shapes that don t really fit all hand sizes, I was left feeling underwhelmed and left many shops empty handed, only to settle on a mouse that felt more like a stepping stone than a forever mouse. This was 3 years ago.

Project Now:
During these 3 years I have been slowly developing this project. I've been though many reviews and start-overs but now I believe I've ended up on the right track. This mouse finally has the capability to be freely changed, fixed and upgraded suit the user. I'm now ready to show this to the great Hackaday community to assistant me in developing this further.

Vote in HACKADAY PRIZE 2020 for RX-Modulus
(Give a LIKE)

Your LIKES will create money for this development ;)


RX-Modulus is an opensource fully modular computer mouse that strives to innovate and empower users and the community to have better than what currently available to purchase. No more do you 'have to get used to' a mouse. RX-modulus allows the user to fully customise their mouse to suit them. The module system allows for different mouse configurations and end user experiences. All modules can be upgraded when required or changed to suit the users budget.

Adjustable Shape:

The RX-modulus allows the mouse to be positioned to suit the users hand in their ideal comfortable position. This system has been built into all modules which enables multiple mouse grip styles to be employed. The panel system is used to define the mouses final shape. The mouse is also compatible with different hand sizes, see the project log: for full details. 

The RX-modulus also allows for mouse grips to be used.

The Panel System: (Developing)

The Panel System is used to define the final shape of the mouse. This system has been developed into all modules and cores. There will be three starter panel sets to choose from (which still need to be designed), additional sets can be printed but my goal is to empower the community to design and share their mouse panel sets which in turn enriches the mouse experience. See the project log for the first draft of the panel system take shape.

Current Modules:

There are currently three modules  in development which are:

  1. Touch-D & Basic Click Variant
    1. Touch-D variant enables custom TFT display interfacing and capacitive positioning to enrich and enhance interfacing capabilities. 
    2. Basic Click variant would be the normal click interface all mouse interfaces have.
  2. SMART Scroll Module
    1. Adjustable scroll feedback.
    2. Replaceable adjustable feedback plate.
    3. Contact less positioning for absolute positioning and  operational longevity. 
  3. Laser/Optical Positioning Sensor
    1. Allows the user to swap and change the sensor whenever required.

All Modules support the 'Side Pack Module System' which allows for additional functionality to be added, like for example internet page back and forward. Please see the project log: for a sneak peak at the Side Module Connection Pack and Side Module Click Pack.

Hardware & Right to Repair:

All the hardware used on the RX-modulus is 100% built from scratch. This is to ensure a high level of reliability and as we are sworn enemies of planned obsolescence and  have designed the hardware to last as long as possible which is good for your pocket and the environment. With us having complete control over the build of the hardware we can ensure that this mouse is the first mouse designed to be repair friendly. All hardware schematics will be released after a complete system and module performance test has been completed.


The software will of course be open-source. There will be a official full release for every element of this project after a complete system and module performance test has been completed. This to ensure that 'you' the user are using tried and tested software.

How does our idea benefit those with cerebral palsy or other physical disabilities?

The target audience for the modular mouse is ‘everyone’. However, the flexibility and modularity that benefits everyday users and even hard core gamers could also be highly beneficial to those with minor disabilities. People with physical disabilities are catered for by the interchangeable modules and shape changing ability of the mouse. Would a different button shape aid easier use? Simply change the button module....

Read more »

  • All About The Testing

    benw07/04/2020 at 14:04 0 comments

    How are the Mechanical aspects tested?

    1) Simulation:

    Each element of the RX-Modulus was first simulated with a force of 49N (5Kg) applied, which is quite a notable weight to apply down using your hand. For example the Adjustable Palm support was tested in its fully extended mode which is its weakest position. All elements and modules are tested in there weakest position. The part was simulated with a material property of ABS plastic which is 98% identical to the resin I'm using for this prototype.

    The testing showed that the part can easily support 49N (5Kg) and with a safety factor of 4.32(min) the part can support be weight of 211.68N (21.6kg) before failing. Now this is virtual so to cover all the bases all parts are then physically tested.

    2) Physical Testing:

    In my eyes Simulation gives me a warm feeling that at-least the part is strong virtually but nothing is better than physically testing a item. There are many ways to test this item but the testing of the Adjustable Palm support was easy all I needed was some scales.

    The results of the test are very promising as the deflecting due to the weight actually acts as a spring which is actually a nice feature this element has. 

    How are the Electronic aspects tested?

    The chart below shows the basic steps we take when developing any electronic element of these project.

    Note: If a issue is found that requires circuit fixes and new PCB's at step 7 we would jump back to step 4. 

    We have a whole suit of tools and equipment to help us test the electronics. For the Touch-D module the most helpful tool is the Digital Discovery (Logic Analyser). This tool would allow us to test all comm busses and ensure that all GPIO are being driven correctly. 

    How will the Firmware be tested?

    The Digital Discovery (Logic Analyser) is also very important when doing the firmware testing. There are two methods of testing that are done these are:

    1) Standalone Testing:

    Standalone testing is done first with the unit, in this case the Touch-D module is driven standalone from the rest of the system. As the analyser and send and receive I2C data. We use the Digital Discovery (Logic Analyser)  to pretend to be the core unit master. This gives us a stable, fast and reliable testing structure.  

    2) Integration Testing:

    After we are happy with the Standalone testing we will then conduct Integration testing. This would be done after the Core Unit has been fully tested, if we were testing a module like the Touch-D. At this stage all performance checks are made and recorded before full release.


    After Hardware and Firmware Testing on electronic elements all the production files will be release to ensure we have stable and known working items. At this stage will be also be creating Fault Analysis Charts to help the user fault find. There will be a basic chart as shown below that only require basic testing and fixes. An Advanced Fault Finding Chart are to be released for people that have technical knowledge and basic electronic tools and wish to fix the boards themselves.  

  • Project Progress & Explanation : Core Unit

    benw06/30/2020 at 19:13 0 comments

    Here is the current progress of the Core Unit for the RX-Modulus Project.

    We will be soon releasing the first batch of PCB's for Core Unit very soon.

    Now it's time to uncover the mystery of whats in the Core Unit. 

    As you can see there is certainly alot going on in this unit. The boards that are worth the biggest mention is the Dev Interface PWA and the High-P Core PWA.

    Dev Interface PWA:

    This assembly of boards is responsible for interfacing with and powering all the modules and Core PWA. The Dev version has been development with robustness and checking features in mind. All module interfaces are Hot-Swap compliant with all the ESD protect one could wish for, so modules can be safety removed at any time and not damaged the system. Safety and Measurement features have been added to monitor system and module voltage and current levels with safety shutdowns if modules fail. The Dev Interface also features a Changeable Core System, where micro-controller cores can be changed and upgraded with minimal hardware change and waste. After the first build a lite version of this board will be developed as a cheaper alternative for people that want the deceased amount of protection at a cheaper price.

    High-P Core PWA: 

    This PWA is the brains of the whole project and is responsible for setting up the mouse to the users configuration, heath monitoring and communication with all connected modules to a host machine via USB-C connection (When using the Adaptive Interface Set the project can be set to interface mode to control other devices via wireless for example). We are currently  developing the High-P Core to be based around a STM32 F4 with extra memory (Could be change to G4) Core. As this board is compatible with the Changeable Core System we have the ability to redesign a more powerful or less powerful/cheaper cores without redesigning the whole mouse. We will soon be developing a special Adaptive Interface Core which features extra connections for sensors and wireless modules which will aid the adaptive interface set for UCPLA.

    Overall Core Unit Features:

    - Powerful STM32 Core

    - Changeable Micro-controller Core

    - Hot Swap Compliant

    - ESD Protection

    - Voltage and Current Levels with safety shutdowns for all modules

    - USB-C connection to host with PD Control.

    - Extra Interfaces can be added for more functionality. 

  • Project Progress: Modules

    benw06/29/2020 at 19:28 0 comments

    Here is the current progress of the modules for the RX-Modulus Project.

    Basic & Touch-D Module:

    Currently testing all the interfaces of this module and have found a few issues and improvements on the core PCB which require a second prototype to be made. 

    SMART Module:

    All interface have been tested and shown to work. Just waiting for the module core to be tested on the second prototype on the Basic & Touch-D Module.

    Laser Positioning Module Set:

    This module has been tested on the very first prototype about 2 years ago. The newer version has been designed to fit the new shape of mouse. This module also features a higher resolution sensor.

    Adaptive Interface Module Set:

    After a successful mentor session with the great people from UCPLA we now know that designing the drafted adaptive module set will greatly help those that the UCPLA support. As way got the go ahead from the UCPLA only last week this module set hasn't matured like the other modules but we can take on board all the lessons learnt from all the other modules currently is the first prototyping loop and aim to achieve 'Right First Time'.  

  • By Popular Demand Size Matters

    benw06/27/2020 at 07:40 0 comments

    As been asked by our great community many questions about this project but the question that comes up the most is the size. So with that said here is the answer.

    Note: As the project can change sizes the current full range is:

    Length: Min 110mm, Max 140mm

    Width: Min 61.4mm, Max 80mm (with larger panel set)

    Height: Min 37mm, Max 55mm (with palm rest at max swing)

    How does the size of the RX-Modulus compare against other mouses: 

    I will have to say a big thank you to Raymond Sam from 'thegamingsetup' for producing this very detailed database of gaming mouse sizes (Updated June 8, 2020). If you wish to view this database the link is here:

    I've added the size range of the RX-Modulus onto the chart.

    As you can see the RX-Modulus size range encompass about 90% of the available mouses on the market, which isn't too bad if you ask me.  

    So what does this mean? 

    Well it would certainly see like the old saying "There’s no perfect mouse for everyone, it depends on a bunch of factors, grip type, play style and hand size" Has been overcome with this project as this mouse successfully adapts to all the factors mention. At this time RX-Modulus is suitable for the full range of hands sizes.

    • Small: Under 16.9cm
    • Medium: 17-19.5cm
    • Large: Over 19.6cm

    As a comparison my hand measures out to 18cm length and 9.5cm width and makes me suitable for medium or large size range of the mouse.

  • Scrolling Progress and Community Startup

    benw06/15/2020 at 14:32 0 comments

    SMART Scroll Module:

    About two updates ago I mentioned that the scroll wheel positioning sensor working great with very impressive accuracy. For that test I was using the Ams development tool which was connected via I2C to the module. This software was a good start but it was time to write some trial Arduino code and grab some useful data. The useful data in this class is Raw Angle (Range 0 -4095) and Angle (0 -360).

    Each bump step on the scroll wheel is spaced at 24 degrees (14 bumps per full rotation on this bump plate) there's about 1 degree of play on the bump plate at the moment. The angle measurements above can be corrected by setting the '0' position but for a simple test I am happy with the results.

    Why use a Contactless Encoder:

    I've actually been asked this a few times and yes there are two simpler ways of doing this: one being optical the other being the standard encoder. I went with the magnetic method as it wears less then standard methods and also allows for greater control of where the scroll steps are. This is especially useful as the bump plates can be replaced with different profiles that might feature less or more scroll step feedback bumps. While the control method used is I2C there are two ways that can be used to find the position of the wheel  one being I2C and the other being Quadrature Encoder Output. There is pro's and con's on both but I've written and tested both methods to increase the ever growing flexibly of this project.  

    Community Startup:

    From today I'm pleased to announce that we have opened a Official Discord Server for RX-Modulus. We hope it will became the start of a larger community to ask questions, quickly interact with the team, help others, share ideas and designs to developed this project further. Of course anyone can still write comments on the Hackaday project page and the project page and logs will keep being updated (I'm still around and online on Hackaday). Just moving some of the specific background project discussions and sharing of ideas and files on Discord as its cleaner and easier to manage. A GitHub server will be made once more firmware has been developed and when I'm happy to release the electronic files and STEP models for the mouse. To start people off designing their panel sets and possible module add-on's. 

    RX-Modulus Official Join

    If the embedded link in the image does not work please use the following link:

  • Little Victories

    benw06/10/2020 at 17:21 1 comment

    Touch-D Module:

    Its all about the small Victories after a long day of work. Today's success is getting the touch screen up and running with some trial Arduino code to read the fingers position on the screen.

    After I stopped my finger from jumping about  the sensor values from both the sensor (via the SiLABS Tool and software) the micro-controller via I2C match up. Over the next couple of days I'll combine the TFT display and the touch screen together for the next stage of testing.

  • Alot of Progress

    benw06/08/2020 at 19:59 1 comment

    First Draft Panel System Shell:

    First a big shout out to gecko242 for helping us develop a draft shell for this project. It's still in it's early days of development but it is looking great. This shell is one shape of many that this mouse can take. It's pretty much limited to your imagination and 3D printer limitations. It will be great to see what panel sets the community will make, Maybe some themed ones? (secretly hoping for a Gundam Theme). Gecko242 has chosen  to use two Touch-D modules and two SMART modules for his ideal mouse setup and started to generate the shape. I'll keep everyone posted on how this panel set develops.

    Touch-D Module:

    The TFT display is working a treat but I'm having some odd issues with the ATSAMD21 core, mainly unresponsive SPI buses but I've found the issue and it was easy to spot with the right equipment. Luckily I had a Adafruit Feather M0 around. This Adafruit board was used to try the TFT before I designed the custom PCB.  The test was to measure both 32.768KHz crystals and compare as this crystal is used for the timing controls (The best place to start when having unresponsive SPI, always check the sources first).

    It's interesting that Touch-D core Crystal waveform is well above 0V, it definitely shouldn't be this high above 0V. I will have to figure out why it is like this. I suspect that it is a home re-flow process issue. So for the time bring I'm using the Adafruit Feather and a FPC interface to develop the code for this module. I'll then modify or redesign the PCB to correct this and any other issues found while debugging the hardware.

    SMART Scroll Module:

    Scroll wheel positioning sensor working great of very impressive accuracy. 

    Once I've figured out the issue with the Touch-D Core I'll be fixing the SMART Scroll Core. So for the time bring I'm using the Adafruit Feather and a FPC interface to develop the code for this module.

  • Update Friday

    benw05/29/2020 at 16:58 0 comments


    ## UPDATES


    Touch-D Module:

    It's the little things that make me happy. For example I always have my fingers crossed when trying to read the device signature for the first time. This time I won and can successfully talk to the ATSAM 32bit micro. Over the weekend I'll start typing out some code to test the module features and get the display running. 

    Scroll Module:

    The parts for the scroll module were successfully printed and the scroll adjust mechanism works like a charm. 

    For those who are wondering, yes that it a custom machined scroll wheel I designed. You wouldn't believe the trouble I was having 3D printing this. Having this machined from stainless looks and functions great and the adds weight of the wheel feels lovely when set to free spin. 

    For those who like abit of machined metal this one is for you:

    Remember to keep liking this project ^^ So I can keep developing this beauty of a device.

  • Touch-D Assembled

    benw05/25/2020 at 13:41 0 comments

    3D Printed Parts:

    It's always great to see the parts printed and ready to be assembled

    With all the electronics and FPC cables in place this module so packed full of features.

    After Assembly I now have an lovely Touch-D module to start coding on.

    Lets Start Coding:

  • Time to Get Printing

    benw05/21/2020 at 19:23 0 comments

    Finally received my FEP Film for the printer. The first item set to be printed is:

    Touch-D Module:

    Fully supported on Chitubox, Time to run the slicer model on Photon File Validator. This program has saved many prints from the bin as you can't always catch all the overhangs when in the slicer. 

    As you can see there is always one or two unsupported parts in the slicer file which you can do the following:

    1. Press the 'Fix' button and fingers crosses it can solve the issue. (this normally solves 80% of issues)
    2. Go back into the slicer on the faulty layer height and add supports or rotate the model.

    Time to fire up the photon and print these bad boys :D

View all 15 project logs

Enjoy this project?



shellkr wrote 06/30/2020 at 10:23 point

I would recommend you to put the charging port below the scroll module in the front of the mouse. This is how most other do as it makes it possible to both charge and use the mouse at the same time. This is mostly true for a wireless iteration but might be important to consider when making the modules for it.

  Are you sure? yes | no

benw wrote 07/02/2020 at 07:31 point

Hello, Shellkr sorry about the late reply. Very good suggestion ^^ the issue we have is if we add the charge USB at the front centre position the mouses height would increase too much :( At the moment the USB-C connection is on the side of the core unit and uses a right angle USB cable to power the mouse (Can also be the charge port for the wireless version).   

  Are you sure? yes | no

Oleksandr Hubanov wrote 06/07/2020 at 21:21 point

hey, very nice idea, but i have few questions:

- why atmel, not stm32

- why there is so many details, maybe it can be simplified in future?

- what about software for pc, alternative for Razer Synapse for example

- why do u need touch screen? what funcs u want to provide?

- there definitely should be clutch button to drop down/up DPI

- is it gonna be wireless, can we do plug-in wireless?

- is it possible to make rubber surface, maybe with spray paint or something

- as i understood ur planning to use an magnetic absolute encoder for wheel, but that is expensive and overkill, maybe there is simplier solution?

I'm using razer deathadder for last 8yrs i belive, but new ones aren't same surface quality as old ones, no rubber surface anymore, and DPI button only at most expensive model. 

Actually i would like to joint project if its possible, I have expirience in creating absolute encoders, been working while with different image sensors. As well have experience of C# pc apps creating and writing firmware for stm32. As well have strong skills in fusion360

  Are you sure? yes | no

benw wrote 06/08/2020 at 15:30 point

I'm more than happy to answer your questions here are your answers:

- why atmel, not stm32

The modules use the ATSAMD21 as used on the Adafruit feather M0, Just so they make the prototyping  and open source coding easier using the Arduino IDE or Atmel studio. The core processor that controls the whole of the mouse is a STM32 G4 chip as I require the speed and computing power and there is space for one.

- why there is so many details, maybe it can be simplified in future?

Yes I started relatively complex first with all the bell and whistles attached. I will in future make ‘lite’ versions.

- what about software for pc, alternative for Razer Synapse for example

I haven’t had much time to develop this yet but yes there will be software for PC and Mac. I have also toyed with the idea of having a phone app as well.

- why do u need touch screen? what functions u want to provide?

The touch screen modules are completely optional. The actual reason I had the displays was because they already incorp an capacitive sensor which allows for different click outcomes depending on where you click for example. There are quite a few good functions the touch element of the module can provide. In terms of the display it just adds a next level of personalization and can show the touch regions if set.

- there definitely should be clutch button to drop down/up DPI

This can be done in quite a few ways. You could use the touch screen to do this when set up to do this functionality or add a side click module.

- is it gonna be wireless, can we do plug-in wireless?

At the moment it is planned to be wired but it could be made wireless but I’m leaving that for the beta build. I’m currently working on alpha.

- is it possible to make rubber surface, maybe with spray paint or something

100% yes this can be applied to a panel set then fixed onto the mouse. I will hopefully be able to show the first panel set this week.

- as i understood ur planning to use an magnetic absolute encoder for wheel, but that is expensive and overkill, maybe there is simplier solution?

There are two simpler ways of doing this: one being optical the other being the standard encoder. I went with the magnetic method as it wears less then standard methods and also allows for greater control of where the scroll steps are. This is especially useful as the bump plates can be replaced with different profiles that might feature less or more scroll step feedback bumps.

Yes I have been seeing this alot recently where mouse manufactures reduce their quality compared to older models then add small addon like DPI set buttons for the most expensive model. Crazy really. This is way I'm trying very hard to develop this mouse.

As for your kind offer to help just send me a pm and we can discuss further ^^

  Are you sure? yes | no

bacbat wrote 05/22/2020 at 06:07 point

Great Updates! 

I love my 7 mouse, so naturally i cannot wait to get my hands on the RX Modulus ;)

And thanks for the tip with Photon File Validator, this looks very usefull.

Keep up the amazing work!

  Are you sure? yes | no

benw wrote 05/22/2020 at 07:14 point

Thank you for your kind comment. It's funny I actually started this project 3 years ago when my beloved RAT mouse died and Madcatz weren't trading. No problem on the Photon File Validator ^^ it ready is a useful tool when using a resin printer. I'll of course keep up the hard work so you can one day enjoy our mouse. I'm hoping the Hackaday contest will help us greatly and gives me a chance to help others back :D

  Are you sure? yes | no

chris.paglinco wrote 05/03/2020 at 00:33 point

Hi there, 

Based on how this mouse looks, in the design, is it ambidextrous? i love the idea but if it's right-handed it doesn't suit this user. Based on how I see the renderings, I'm not sure I see it being "neutral-handed" or customized to be specifically left-handed. 

I'm probably not seeing it in the proper way though. Could you let me know if it is handed and if so, what hand?

  Are you sure? yes | no

benw wrote 05/03/2020 at 18:56 point

Hello. The first prototype is designed to be right handed. While I do love the idea of the mouse being ambidextrous sadly there isn't enough room to design this in. But there will of course be an Left hand version as I wouldn't want to split the market. The Left hand version will come after I work out the bugs with the right hand version.

  Are you sure? yes | no

benw wrote 05/03/2020 at 19:09 point

I should add that it's only the Core Unit that is right handed. All modules are designed ambidextrous.

  Are you sure? yes | no

chris.paglinco wrote 05/04/2020 at 13:35 point

Thanks for the reply. I understand now what you mean, in that the "Core Unit" is right-handed in this case. But that a left-handed version will be developed and available. 

In terms of handedness, I don't mind having (at least at first) a specific hand for the core unit. Right-handed should come first as that's the largest userbase. Left, second and ambidextrous would be third. 


  Are you sure? yes | no

sunny wrote 04/30/2020 at 07:39 point

How to send a picture to your?

  Are you sure? yes | no

benw wrote 04/30/2020 at 07:43 point

That's Easy :) just click my name and then press 'Send a Private Message'

  Are you sure? yes | no

sunny wrote 04/29/2020 at 13:22 point

Great idea. I bought a lot of mouse, but they can't adapt to my hand very well. They are too small or have other defects. Because of the hard work, I got tenosynovitis in my right hand, so I had to learn to operate the mouse with my left hand. My biggest demand for the mouse should be that there are security ring fingers and small fingers on the mouse. I don't understand the touch buttons. What's the benefit of this design? I have some welding skills, as well as some fusion 360 skills, and I would like to make some contributions to this project.

  Are you sure? yes | no

benw wrote 04/29/2020 at 18:02 point

Hello, Sunny. Thank you for the comment. Sorry to hear that you got tenosynovitis on your hand. Hopefully having a well fitting mouse could get you back working with your right hand again. Certainly interested in your suggestion would you be able to draw alittle picture of the security ring fingers and small fingers you would like to see. Hearing these comments are great to improve the project. 

As for the touch buttons.  The benefit is the additional input options it can achieve, here is a short and sweet list of what the touch system can do difference to the standard click version:

1) Allows for multiple outputs per switch depending on where you click, for example if you were playing a FPS game you can set the area 0 to 50 as Primary Weapon and 51 to 100 as Melee. Moving from area to area with swap weapons and pressing down we preform the normal click action of shoot or attack. This can also be doing for functions where one area could be copy and another area for paste. To be honest you can do alot.

2) The module can become an touch sensor/scroll, if you wish to use it.

To be honest I'm still thinking of applications and I have along list of uses :D 

3) The display was a extra as it included the capacitive sensor. I did design and prototype three capacitive sensors but I was hard to make them to fit the module finger area. I grew to like the displays as it will allow for some lovely customisation :D

It's very nice of you to offer some of your time to contribute to this project, having some more fusion 360 help would be great. PM me and we can discuss this further.

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates