Modular USB Hotkey Controller

Programmable USB controller modules for gaming, CAD modeling, video editing, and more

Similar projects worth following
We are creating programmable USB controller modules for gaming, CAD modeling, or video editing. These modules can be used independently or connected together into a single device. Modules can be customized to trigger various hotkeys, emulate joystick axes, or control the mouse.

Profile Selector

The profile selector module consists of a single rotary encoder, a single button, and a ring of 6 RGB LEDs. When connected to the other modules using I2C, this module is used to select the profile for all the modules. When used on its own, it uses the dial to select between hotkeys which are activated on pressing the dial.

3x3 Keypad

The keypad module is a 9-key programmable keypad. Each key can programmed to activate a hotkey, such as to uploading or verifying a sketch, toggling comments, or various CAD functions.


The dial module consists of four rotary encoders. The dials can be used for a variety of functions, including scrolling, moving the cursor, or emulating a joystick.


The fader module consists of three faders. The faders can be used as joystick axes or for other functions.

  • 8/24 - Profile Selector Module Assembly

    Automata-Development08/27/2018 at 03:24 0 comments

    Today we finished soldering and assembling the profile selector module. Until we get the I2C connectors between modules working, we programmed the dial to select between hotkeys which are activated on pressing the dial.

  • Hotkey Modules Post 8/17

    mx3designs08/27/2018 at 03:08 0 comments

    With 3 of the 4 modules finished (at least the hardware), we got straight into finishing up the last one: the profile selector. This had a low-profile, 3DP’d shroud for the RGB LEDs contained beneath the laser cut wood. Detail of the shroud can be seen below (it, along with the other modules, were designed in Autodesk Fusion 360—it’s great software, if I do say so myself):

    The bottom half of the shroud has semicircular cavities for the LED’s to nest into, slits for the light to escape, and an alignment notch for the rotary encoder. The top half reflects the light from the LEDs out the slits, as well as prevent any bleeding of light from one segment to the other. The LEDs were inserted into the bottom half, and then the cavities were filled with hot glue to diffuse the light. After multiple mistakes (my fault :P ) while aligning and gluing the top half (and subsequent removals with blowtorch-heated X-Acto knives), it went together smoothly. The soldering of the LEDs was a bit difficult considering the sheer amount of connections, but it worked just as we expected.

    We also soldered the faders and assembled the fader module. We programmed each slider to function as a joystick axis.

  • 8/14 - Finishing the Keypad Module

    Cole B08/25/2018 at 15:51 0 comments

    Today we finished wiring and assembling the keypad module.

  • 8/13 - Pogo Connectors and Dial Module

    Seth Altobelli08/19/2018 at 23:14 0 comments

    Today we cut to size and sanded the aluminum strips which go outside the box. We also attempted to assemble the pogo pins in the magnet connectors, but they were too small and they didn’t have enough spring distance. We knew this might be a problem, but we didn’t have time to get better ones, as they would have to come from China. For this reason, we decided to use the modules each with their own individuals USB cables, until we finish our alternate design of the pogo connectors.  We also finished assembly of the dial module.

  • 8/12 - 3D Printing

    Cole B08/15/2018 at 03:13 0 comments

    Today we finalized the magnetic connector design and started printing the module bases.  We also started soldering the keypad module.

  • 8/6 - Milling the Aluminum Cases

    Cole B08/15/2018 at 03:02 1 comment

    Today we went to the ASU machine shop to mill the slots in the aluminum strips and to bend them.  The milling went well and we completed all the strips needed for the modules we are intending to build.  However, when we attempted to bend a test part we found that the required bend radius was larger than expected.  We plan to cut the strips apart and glue the front and sides on separately.

  • 8/3 - Beginning Fabrication

    Automata-Development08/15/2018 at 00:50 0 comments

    Today we began fabricating the aluminum strips for the module bodies. We purchased three 1/8" thick and 3’ long aluminum strips. First, we attached paper templates to the strips and cut them to length. We then attempted to cut the slots by drilling holes at either end of the slot and using a scroll saw to cut out the slot. While this worked, the resulting slot was not as clean as it would be if a milling machine were used. As such we will complete the aluminum strips at a later date when we have access to a milling machine as well as a brake to bend the strips. 

    We also worked on the CAD design for the profile selector module and began working on the electronics for the dials module. We wired 3 dials and programmed the Arduino to track their positions.

  • 7/30 - Initial Module CAD Models

    Cole B08/02/2018 at 20:53 0 comments

    Over the weekend team members worked on creating mock-ups of ideas for the base module design. We decided to connect the modules using a custom built magnetic connector.

    Today we created our final template design. We chose to do a variation on the design with the inset wood top that used an aluminum strip around a plastic body rather than a milled aluminum body. This will make the design much easier to build. We also decided to base the modules on a 3"x3" grid system that will allow for 2 rows of modules.

    Once the template was complete, we began creating models for the individual modules. Each module uses a unique wood top that is laser cut specifically for mounting that module's components. All other parts are identical to the template.

  • 7/26 - Brainstorming

    Automata-Development08/02/2018 at 03:14 0 comments

    Today we brainstormed ideas for the Human Computer Interface Challenge. Our ideas included:

    • Compact handheld motion controller
    • New keyboard design
    • Force feedback glove
    • Full body or finger/hand motion capture
    • EEG
    • Force feedback joystick
    • Projected keyboard/function pad
    • Modular USB hotkey pads
    • Small portable computer with projector

    We decided on the modular USB hotkey pads idea. We will make a variety of different computer input device modules that link together and connect to a computer as one unit. Ideas for modules include a function keypad, sliders, rotary knobs, touchscreen, and a led matrix.

View all 9 project logs

Enjoy this project?



falias4 wrote 09/09/2018 at 00:47 point

In case you don't know: 'Palette gear' is almost the same.. but yours is way more beautiful ;)

I also made a simple prototype a while ago but i struggeled with the usb communication. would be cool if you give some insights on that.

  Are you sure? yes | no

rmd6502 wrote 09/08/2018 at 23:45 point

There is something inherently satisfying about seeing such workmanship. One suggestion, on the side(s) with pogo pins, make the aluminum half the width so everything combines to the same size outline. You could have edge caps for unconnected sides with a chamfer to match the rest of the edges.

  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