Redox keyboard

The Redox project is an open-source, QMK (Quantum Mechanical Keyboard Firmware) powered, ergonomic split mechanical keyboard.

Similar projects worth following
Humans interfacing with the computer have to deal all with the same ergonomic nightmare: the keyboard. Almost untouched since the typewriters days the keyboard is still here, provoking RSI and hurting our fingers since the early years of computer history. How about something different?

The Redox is a keyboard project designed with ergonomics in mind. It uses Cherry MX style mechanical switches laid out in a 7x5 columnar stagger layout with components that can easily be sourced.

The design was heavily inspired by the Ergodox keyboard, and its main goal is to reduce the size without sacrificing too many keys, hence the name Reduced Ergodox.


The main goal of this kind of boards is to improve ergonomics of the keyboard and achive a healthier way to interface with the computer.

Thumb cluster

One of the first design goal of the keyboard is to make more use of the thumb, hopefully taking away some work from the pinkies. I began taking interest in this kind of design when I started my Software Engineering job as I started to type a lot and my pinkies started to hurt.

The following is the layout I normally use at work. You might notice how I moved some of the keys I usually pressed with my pinkies to the thumb cluster (ctrl, backspace, enter).

This kind of layout also removes some stress on the wirst since you don't need to move your hand as much as on a normal keyboard.

Columnar staggered layout

The keyboard is not arranged into rows like regular keyboards, it uses a columnar arrangement instead. The row staggered layout is a heritage from the old typewriters that needed such an arrangement to prevent the percussors to get stuck. Such a design is not needed anymore and doesn't fit with the human hand conformation.

Split design

The keyboard has 2 halves that you can place as far as you want, this way you can take a more comfortable posture with your wirst and shoulders.

Here's some comparison footage:


The keyboard uses an open-source firmware called QMK (Quantum Mechanical Keyboard Firmware) this allows for a great number of features to be available for the device:

  • Full programmability
  • Double function keys
  • Macros
  • Layers

Take a look here for the complete list of features offered by QMK, these will make you fell like you have more keys than you need.

Improvements over the Ergodox design

As an Ergodox user I couldn't ignore the few flaws of the original design and in a moment of arrogance I tried to fix them, thus the Redox features:

  • Easier to reach thumb cluster.
  • Additional easy-to-reach rotated 1.25u thumb key.
  • Reduced size.
  • Reduced costs (the Redox uses Arduino Pro Micro instead of the Teensy 2.0).
  • Either half can be plugged in to the PC since each half can act as the master.
  • Either half can work as a standalone keyboard to be used as a macropad/gaming keyboard.
  • RGB backlighting support.
  • 3D-printer friendly case
  • Wireless functionality (WIP)


Project details

The Redox rev.1 project consists of a PCBs designed to be used in both halves of the keyboard, a case and an open-source firmware based on the QMK firmware.

The PCB was designed using KiCad, the case was initially developed using Fusion360.

The two halves use two Arduino Pro Micros as microcontrollers connected by a TRRS cable for I2C/serial communication and power. Each half can work indipendently from the other, when used both they need to exchange data to know which key is pressed in the other half of the keyboard.

When used with a WS2812 backlight serial communication must be used since the fourth wire of the TRRS cable is used to drive the LED strip in the slave half.

Key presses are registered using the usual matrix-scanning technique.


The Redox rev.1 is perfectly functional and working (I am actually typing...

Read more »

Redox pcb gerber files

Zip Archive - 290.31 kB - 08/23/2018 at 16:31


Kicad project files

Zip Archive - 160.30 kB - 08/23/2018 at 16:31


Kicad footprints used in the Redox pcb

Zip Archive - 34.91 kB - 08/23/2018 at 16:31



Default pre-built firmware

x-hex - 63.85 kB - 08/21/2018 at 11:47



PCB schematic

Adobe Portable Document Format - 85.50 kB - 08/21/2018 at 11:47


View all 11 files

  • 2 × Arduino Pro Micro Microcontroller
  • 70 × CherryMX compatible switches
  • 14 × WS2812/WS2812B led (optional)
  • 70 × 1N4148 diodes
  • 2 × PJ-320A 4 poles 3.5 mm TRRS connectors

View all 11 components

  • Redox codename Ultron pt.7

    Mattia Dal Ben2 days ago 0 comments

    "Look ma, no wires!"

    The battery holders finally arrived. I couldn't resist and soldered them right away.

    Some solder is needed on the ground pad to contact properly with the battery.

    Finally complete!

    Just a quick check to see if everything works:

    And now we wait for the case and the final assembly!

  • Redox codename Ultron pt.6

    Mattia Dal Ben7 days ago 2 comments

    Components finally! (Well... at least some of them)

    Yesterday I received the MCUs and some other parts for the keyboard. I'm still missing the CR2032 holders and the case. I hope they'll arrive soon...

    Anyways here's some pics:

    1N4148 diodes installed.

    Angled programming header for the MCU.

    And now for the tricky part: the YJ-14015. I choose these because they are cheap and have a smaller footprint than the Core51822B but looking at them I was worried I couldn't solder them. Solder paste to the rescue!

    This is the most difficult component I have ever tried to solder but with the solder paste it was a breeze. I put some masking tape on the MCU to keep it in place, then I added the paste. A quick pass with the soldering iron and the job was done. I did a few touch-ups with the tip of the iron here and there just to be sure.

    Not bad.

    It's testing time!

    Since I don't have the battery holders yet I improvised using the ST-Link programmer as a power source. After uploading the firmware...

    I checked and all keys are registering. Excellent!

    Now I need to wait for the last pieces of the puzzle and the keyboard is finished. Soon I'll update the Redox project repository with all the instructions and components needed for the project.

    Stay tuned!

  • Redox codename Ultron pt.5

    Mattia Dal Ben09/03/2018 at 20:14 0 comments

    PCBs are finally here!

    I spotted a few things I need to improve but everything looks good. I only need to wait for the components to arrive... 

  • Redox codename Ultron pt.4

    Mattia Dal Ben08/26/2018 at 10:06 2 comments

    PCB ordered!

    I'm a little anxious about the nrf51822 module footprint and the battery holder but what is done is done. I used the YJ-14015 module (which is a Core51822 clone) because is smaller than the Core51822(b) and it's a tight fit, but I couldn't find a datasheet online nor some machanical drawing to validate the footprint I have... we'll see.

    Here's some pics of the board and schematics.

  • Redox codename Ultron pt.3

    Mattia Dal Ben08/25/2018 at 08:21 0 comments

    Firmware's done!

    Finally finished working on the firmware.

    • Nordic MCU's firmware sources and precompiled binaries can be found here.
    • Pro Micro firmware (QMK based) sources can be found here.

    Here's some footage:

    On the right you can see the receiver that's plugged in to the computer. It uses a Pro Micro to run the QMK firmware which interrogates through UART the Core51822 for the state of the matrix. The Core51822 module communicates over Gazell protocol to the left and right hands of the keyboard. These two scan the matrix for keypresses and send keypresses data to the receiver.

    I'm using the tweezers to short-circuit the switch pads to simulate a keypress.

    Now is time for some sweet sweet PCB design...

  • Redox codename Ultron pt.2

    Mattia Dal Ben08/22/2018 at 19:41 0 comments


    Today I finally received the jumper cables. I hacked through the Mitosis and Interphase source code and came up with a sort-of-working firmware to test everything. 

    After a few minor initial problem (might have set the wrong addresses) I made it work.

    I programmed and then wired the Core51822 module to the keyboard matrix, it successfully scans the matrix and sends data to the receiver.

    Here's some footage of the keyboard working.

    I plan to write a proper firmware in the following days, design the PCB and manufacture it. I'm really looking forward to it!

  • Redox Ultronizer

    Mattia Dal Ben08/21/2018 at 10:03 0 comments

    Since I got bored waiting for the adapter cables to arrive I started designing an adapter board for the Core51822(b) module to Arduino Pro Micro footprint.

    Its main goal is to replicate what I achived using the perfboard using a proper PCB. I then realized that, with some adjusting, it might be used to give wireless functionalities to most of the open-source split keyboard I know of ( Iris, Zen, Let's split, etc.).

    As usual here comes some PCB eye-candy:

    I had some problems making this a double-side PCB but I am sufficiently confident it should work. Obviously the CR2032 receptacle needs to be mounted on the top and the Core51822 on the bottom of the board. Also some electrical tape might be needed to prevent shorts on the Core51822 pads for when the battery will be in place.

    The main switch should be easily reachable since it is placed where the USB port should be.

    After some more work (mainly to make it more general-purpose) I'll manufacture these and see if this fits my needs.

  • Redox codename Ultron pt.1

    Mattia Dal Ben08/20/2018 at 20:57 0 comments

    "There are no strings on me..."

    It's now almost a year that I'm working on and off on the Redox project, however I keep asking myself: "How can I improve this design further?". 

    "Wireless" is the answer.

    In the last few months I began researching how to make a split QMK-compatible keyboard wireless and the only answer was the Core51822(b) module (see the Mitosis for further details. On a side note: that keyboard is awesome!). Needless to say I ordered a few immediately and began experimenting.


    I began by replicating the receiver module using the available schematics from the Mitosis project.

    I used a breadboard compatible version of the AMS1117 3.3 voltage regulator to power the Core51822 and for the remaining parts I used through-hole components I had laying around. I then realized the main drawback of using the Core51822: those damn 2.0mm pitch headers. I got a little creative with the hand soldering but for the keyboard matrix wiring I'll use some 2.0mm pitch to 2.54mm pitch jumpers I found on Amazon.

    I then tested that everything was working with the usual led blink. To get to this point I used this excellent guide for the NRF51822. 

    Now it was time to wire the keyboard.


    Since this is just a proof-of-concept I wanted to recycle my testing board before designing a new PCB from the ground up. 

    I then decided to create a sort of adapter for the Arduino Pro Micro to something that can be wired to the Core51822. I came up with the following:

    I have a pin header row that fits inside the Pro Micro footprint, those pin are then wired to another row of pin headers that will be connected to the Core51822. I used a CR2032 to power the module.

    I am now waiting for the jumper cable to arrive to finally get writing some code. Once I get everything to work I'll begin designing the new PCB... my main goal is to make them compatible with the existing cases but I think this will not be an easy task.

  • Redox rev.1

    Mattia Dal Ben08/20/2018 at 20:00 0 comments

    After finishing my handwire I began using my keyboard at work. I started loving it so much that I decided I wanted it to become a real thing, not only a handwired prototype, hence the Redox rev.1.

    I used KiCad and this awesome guide to get things started. Since I didn't know if I could trust my skills and footprints I designed and manufactured a test PCB.

    Needless to say it all worked out perfectly. I then extended what I already built and created the rev.1 PCB.

    Then it was time for the hard part of the project: case design. My first idea went really bad: i wanted to replicate the handwired design but I couldn't get the angles just right and it looked horrible.

    Also you may notice that my 3D printer had some problems in the final layers of the print.

    I then decided to change the design of the case and adopt curved lines all over the place. This was the design I adopted in the final version.

    At this point I realized I needed a way to recycle my failed prints...

    Final assembly.

    Instructions can be found here. Case files are available on thingiverse.


    • 70x: Cherry MX compatible switches
    • 2x: Redox PCBs
    • 2x: Redox cases
    • 70x: 1N4148 diodes
    • 2x: PJ-320A 4 poles 3.5mm TRRS connectors
    • 2x: 4.7kOhm resistors
    • 2x: Through hole momentary switch
    • 2x: Arduino pro micro
    • 1x: TRRS cable
    • 1x: USB micro cable
    • 70x: Cherry MX compatible keycaps
      • 10x (8x for 1u Layout): 1.25u keycaps
      • 6x: 1.5u keycaps
      • 54x (56x for 1u Layout): 1u keycaps
    • 14x WS2812/WS2812B leds

    This time around I added LED backlight because I felt so.

    At this point I should probably mention that I like purple...

    After publishing some pictures of the PCB on instagram I was contacted by Falbatech and now the Redox is a product available on his store. 

    Redox rev1.0:

  • Redox handwire

    Mattia Dal Ben08/20/2018 at 18:55 0 comments

    This was the first prototype for the Redox project. At the time I wanted only to test the ergonomics of the idea so I opted for a handwire.

    Materials used:

    • 70x: Cherry switches
    • 70x: Diodes (I used 1N4148)
    • 70x: Cherry compatible keycaps
      • 10x (8x for 1u Layout): 1.25u keycaps
      • 6x: 1.5u keycaps
      • 54x (56x for 1u Layout): 1u keycaps
    • 14x: M3 8mm screws
    • 2x: 4 poles 3.5 mm panel mount plugs
    • 2x: Arduino pro micros (Atmega32u4)
    • 2x: USB micro male to female cable/adapter
    • 2x: 3D printed cases


    I started with the plate design. I 3D printed it and built my first mock-up. This was just for testing tolerances and checking that everything was fine (and cool looking).

    Then it was time to some proper planning for the handwiring. I started with a schematic then moved with the wiring planning on paper (it was easier this way).

    Finally I started soldering. My technique involves stripping the single-core wires so that the inner core is exposed at the height of the switch pin. Then I use the rigidity of the wire to make it stick to the pins alterinating the side which makes contact with the pin.

    The it was a simple matter of patience and time...

    For wiring the controller I used some old IDE cables I had laying around. This helped a lot in cleaning the overall wiring mess.

    Programming time. I based my keymap off of the Viterbi keyboard since it has the same number of keys. This way I sped up the testing phase.

    I then added some LED backlighting for good measure because why not.

    Finally I printed the bottom half of the case and finished the prototype.

    Since its publishing the Redox handwire gained a lot of attention and inspired some great designs:

    • Tilted Redox case: tilted case for the Redox prototype by jschloer.
    • couscous-kbd: Redox-inspired parametric OpenSCAD keyboard design.
    • Redox tenting kit: modified base to support tenting, mini-USB for the interconnect, and a hole for microswitch for reset needed when uploading new firmware by Lenbok.
    • Iris-inspired Redox case: a case inspired both by the Redox rev1.0 and the Iris designed with OpenSCAD by Lenbok.

View all 10 project logs

  • 1
    Redox rev.1 assembly instructions

    The assembly instructions are available here.

View all instructions

Enjoy this project?



David S wrote 09/08/2018 at 21:29 point

When you think the wireless PCB is ready for others to test/ try, let me know! I'd love to put one together.

  Are you sure? yes | no

Mattia Dal Ben wrote 09/09/2018 at 07:11 point

As soon as I'll receive the components and test everything I'll post about it. Keep an eye on the Github repository, I'll post some more detailed assembly instructions there.

  Are you sure? yes | no

Gravis wrote 09/03/2018 at 20:36 point

You should change the name because it's already been used:

  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