Concertina v0.7.0 build guide

This article describes how to produce a working physical copy of the Concertina, a computer keyboard.

A v0.6.0 build guide is available for an older design of the same keyboard.


Prerequisite skills

This guide is finished, but not comprehensive. It is written on the assumption that you already know the following, and have all the necessary tools:

The most difficult part of the soldering is for full-speed USB 2. This is slightly sensitive to an impedance mismatch, but without knowing anything about you, I’m sure you’ll do fine.

Overview of work

  1. Source off-the-shelf parts.
  2. Print the other parts. Covered in this article.
  3. Drill and tap screw holes.
  4. Clean up your prints.
  5. Check the fit.
  6. Do whatever painting and varnishing you want.
  7. Assemble and test the keyboard. Covered in this article.
  8. Finalize key placement, firmware etc.

Bill of materials

Expect to use up the following:

Amount Item Comment
At least 700 g Printer filament This includes:
  • 500-600 g for the case.
  • 50-70 g for the caps.
  • About 150 g for the drawers.
This article shows FDM-printed caps; consider SLA printing for detail.
1 pc. USB 2 B port Straight. Picture here.
1 pc. Pro Micro MCU board (PCBA) Other options are available with minor changes to firmware code and no changes to keyboard shape.
1 pc. Internal USB cable A “pigtail” cable between the USB connector and the MCU. For the Pro Micro, this is about 1 dm of cable with a micro USB connector at one end. Picture here.
1 pc. External USB cable A cable between your computer and the USB B port, typically B-to-A.
64 pcs. 1N4148 diode
64 pcs. ALPS-compatible switch This article shows a mix of Matias Quiet Click and Quiet Linear switches.
12 pcs. Magnet Prefer cylinder magnets of at most 10 mm diameter, at most 2.5 mm height, neodymium or similar. Thinner magnets can be stacked.
56 or 58 pcs. M3 screw, 8 mm total length, countersunk head These are used as follows:
  • 8 attach thumb clusters.
  • 14 attach bookends to the central housing.
  • 10 attach key-cluster subassemblies to the bookends.
  • 18 attach the bottom plate(s) to the rest of the case.
  • 6 go inside the drawers, for magnetization.
  • Optional: 2 attach a brace holding an optional reset button in the right-hand bookend subassembly.
Soldering supplies Wire, solder, flux etc.
26 pcs. (optional) Internal connectors There’s a wide range of options for this, including none. This article uses the pin headers that usually come with a Pro Micro, together with 8 forked extra pins (all pictured here) and 26 M20 housings (24 of which are pictured here).
1 pc. (optional) Reset button Any 6 mm × 6 mm normally-open pushbutton switch. If used, this gets wired between the MCU’s RST and GND. It’s optional because you can short those pins manually for the initial firmware flash and put a soft reset button in your QMK keymap.
1 dm² (optional) Cork mat, 2 mm thick Any sound-dampening lining will do.
4 pcs. (optional) Padded feet High-friction feet for slick desks, e.g. silicone drawer buffers. More 2 mm cork mat will do the trick.
To taste (optional) Weights Anything from gravel and glue to solid gold. This is an alternative or complement to padded feet.

Sourcing the models

A complete Concertina includes printed parts from multiple sources.

All the parts for a Concertina, including keycaps and assortment drawers. Uncleaned and unpainted.

All the printable parts

The following applications produce the printable models you need:

All are free as in freedom and free as in free beer. DMOTE project documentation on GitHub describes how to generate STL files for the case. Here, it’s assumed you have already run make concertina_64key to produce a full set of STL files of the bundled design, without any customization. There are correspondingly simple commands for the other applications, documented in each project.

Please note that photos displayed in this guide do not correspond exactly with version 0.7.0 of the design. They include some prototypes. Differences are not significant to the build process.

Printing the case: Orientation and slicer settings

All the parts for a Concertina case, with grey exteriors cleaned up and sanded down.

Parts for the case only; 590 grams of plastic

Of the files produced by the DMOTE application, the following should not be printed.

Where nothing else is indicated, print one physical instance of each file named below.

The following advice assumes a PLA-like material and adequate cooling on an FDM printer. I recommend gyroid infill of at least 15% for a production print, except where otherwise noted.

Main body


STL from DMOTE v0.7.0, image from Prusa Slicer v2.3.0.

Orientation of a main-body part on the build plate

The main body, mirrored for each side, is designed to print standing on a flange, as shown here.

Local support is recommended for the almost horizontal wall directly above the build plate. No other support should be required, but some materials can require carefully tuned settings to get the overhangs right. This includes low temperature, constant cooling (e.g. fans at 100% above layer 1), thin layers and low nozzle speeds, to build the overhangs correctly.

Thumb cluster


STL from DMOTE v0.7.0, image from Prusa Slicer v2.3.0.

The thumb cluster is designed to sit flat on the reverse side of the flange. Support is required.

In assembly, four screws will connect the main body to the thumb cluster at the flange. If you’re using as little material as possible, target the four screw holes in your slicer and make sure their interior wall thickness is at least 1.5 mm, or else mounting the screws will be difficult. This is especially important if you tweak the settings to tap the holes yourself.

Bottom plate

An FDM printer is not the optimal tool for this part. Consider CNC milling or laser cutting in a stiff and dense material. Regardless of technique, you have two options.

Files, option A (small build volume):

Files, option B (large build volume):

STL from DMOTE v0.7.0, image from Prusa Slicer v2.3.0.

Option A

If you do print it, the conical screw holes should widen from the printer’s build plate. For best results, consider gradual grid infill (rather than gyroid) and apply ironing for a smooth top surface. If you print option B in PLA, be aware that thick walls can cause clogging due to long non-printing travel between screw holes, so prefer adding mass by other means. Use a wide brim on a room-temperature build plate to limit warping.

Central housing


STL from DMOTE v0.7.0, image from Prusa Slicer v2.3.0.

As the name implies, there is only one central housing. It is designed to stand on its short end in printing. Support is not required.

This part includes magnet bosses. I recommend a quick test print of one of the areas examined in detail here, so you can check the fit.



STL from DMOTE v0.7.0, image from Prusa Slicer v2.3.0.

Right-hand bookend pictured

The right-hand bookend accommodates the USB port and MCU. The left-hand bookend does not. Both are designed to print with the same footprint as the rear housing, without support.

To save on filament, you can get away with zero top layers. None of them would be visible from the outside, they don’t do much for stability, and you may get a marginally better fit against the main body without them. However, be aware that a stiff back plate in each bookend can improve the appearance of the final product by minimizing gaps between the bookends and the central housing.


Head-on view of an almost fully assembled Concertina, missing only keycaps, assortment drawers and a bottom plate.

An assembled case without caps or drawers

Here’s a rough order of operations for assembly:

  1. Mount the magnets in the central housing.
  2. Put screws in the drawers themselves and test the fit.
  3. Mount all the switches.
  4. Build bookend subassemblies.
  5. Wire up the key clusters.
  6. Prepare the MCU.
  7. Flash firmware.
  8. If using pin headers: Test matrix hardware with temporary connections to the MCU.
  9. Mount the MCU inside the case.
  10. Optional: Attach weights to the bottom plate in the lowest compartment of the central housing, for stability.
  11. Close up the case.
  12. If not using pin headers: Solder connections to the MCU. Test matrix hardware.
  13. Mount the caps and insert the drawers.


Some 10 mm × 1 mm cylinder magnets being slipped into their pockets in the central housing of a v0.7.0 Concertina. There is no practical need to align the magnetic fields, but a trivial technique for doing so is illustrated here: Move the stack of magnets down each column, slipping off enough to fill each pocket.

Stick the magnets in their pockets. Note the small holes underneath each pocket: These are intended for retrieving each magnet in disassembly.

Bookend subassemblies

The right-hand bookend of a prototype for the v0.7.0 Concertina, with 2 mm cork glued to the inside to dampen sound, a pushbutton braced by three small pieces of plywood, and a USB port soldered to an internal pigtail cable. For a more comprehensive picture of similar lining for sound, see Concertina v0.6.0 cork lining.

A right-hand bookend with reset button

The right-hand bookend needs more work than the left. The sample shown above is complete with all optional steps listed here:

  1. Optional: Line the interior of both bookends for sound.
  2. Not optional: Mount the external USB connector in the right-hand bookend.
  3. Optional: Mount a reset button in the right-hand bookend.

Dampening sound

Like the instrument it’s named for, the body of a Concertina forms an acoustic resonance chamber, albeit a poor one. To keep it mute, you can line the interior.

A composite image of the central housing sub-assembly from both ends, with sheets of 2 mm cork glued to the insides to dampen sound.

Picture shows v0.6.0

If your bottom plate does not provide a lot of friction on your desk, go ahead and line the outside of that too. Soft (unlaminated) cork is good for both purposes.

External USB

Slip the USB B port into the hole in the rear wall of the case.

A composite image of a USB B port mounted in the rear wall of the right-hand-side bookend, from two angles.

Picture shows v0.6.0

Consider using a little dab of water-based glue or paste for a tight fit. Bend the grounding nub around the interior of the port to secure it. Solder your pigtail cable onto the interior pins and its shielding to the nub.

Reset button

If you are building with an optional hardware reset button, it goes in the square hole where the right-hand bookend connects to the central housing.

The right-hand bookend of a v0.7.0 Concertina, seen from the direction of the central housing, with a reset button mounted in place.

Button in subassembly

The button is accessible when the bottom drawer is removed.

The reset button in a complete v0.7.0 Concertina, seen in the wall of the bottom drawer compartment inside the assembled product, with the drawer(s) completely removed.

Button in full assembly

You need to brace the button, holding it in place so it’s stable and reachable. No model for such a brace is supplied by the DMOTE application; build one that fits your button. This could be a trivial printed part. This image shows an alternative made of wood with tapped holes for M3 screws.

Mounting switches

Detail view of switches mounted in the main and thumb clusters of the left-hand parts of a prototype for a Concertina v0.7.0. In this example, I used Matias Quiet Linear (red stem) for the arrow (navigation) clusters and the pinky-finger keys, and Matias Quiet Click (grey stem) for everything else.

Because the main key clusters are vertical, it is important to get a good fit. Compensate for any printer inaccuracies by filing off excess material or adding more thermoplastic (with an oxidized old soldering iron or 3D pen) or glue (e.g. viscous water-based stone glue).

Wiring up the key clusters

For a detailed discussion of this topic from a design perspective, see 3D keyboard wiring. The current article instead describes how to implement the following wiring scheme.

This image is the union of this and this.

Wiring diagram, left-hand side interior; rows in black and red

As a preparatory step, get some tin on the switches’ legs.

Switches mounted in the right-hand-side main body of a Concertina v0.7.0, with legs tinned for wiring.

Right-hand side interior; wiring scheme must be mirrored

Preparing wire for the columns

Cut through just the insulation in three places to make three lengths of insulation that you can pull along each wire for the columns.

A conceptual illustration of how to cut through just the plastic insulation of a piece of wire, separating sections of that insulation at specific lengths without cutting the wire.

Three sections

The following table lists the appropriate lengths of insulation in each section for the wires of each column. Wire colours are those of the diagram above. Do not cut off the wire past the last section.

Wire Length of insulation (mm)
Section 1 Section 2 Section 3
White 19 15 74
Green 21 29 78
Orange 21 20 100
Purple 70 23 20
Yellow 26 23 20
Brown 23 19 41
Grey 21 22 46
Blue 21 22 47

Beyond the last section listed in that table, you need more wire, with insulation, to connect the column to the MCU. The length of this last bit of wire varies. It’s about 50 to 100 mm on the right-hand side depending on the column and where you want the MCU. It’s at least 250 mm more than that on the left-hand side, as shown here.

Bridging the columns, uniting the clusters

I recommend you start with the blue wire on the right-hand side, prepping that and soldering it into place to get the hang of it before doing the next three wires for the bottom four columns.

The first stage of wiring up the right-hand key clusters.

The bottom four columns, right-hand side

Then prepare the next four wires, and start these on the thumb cluster.

The second stage of wiring up the right-hand key clusters.

Starting the top four columns, right-hand side

Complete the columns by joining the main and thumb clusters together. Don’t make it a tight connection. The section lengths given above are such that you can separate the clusters to complete the rows in the next steps, and for subsequent maintenance work.

A stage in wiring up the right-hand key clusters of a Concertina v0.7.0, joining the two clusters where the columns cross them.

Columns united

Bridging the rows with diodes and wire

With columns complete, add diodes to the row legs. I recommend first cutting the bottom (anode) legs of the diodes themselves quite short and tinning them, but keeping the top (cathode) legs intact.

Diodes in place after finishing the columns and before wiring up the rows by connecting the diodes.

Diodes before connecting rows

With diodes in place, start wiring up the rows by just bending the top legs over to touch one another, following the connection diagram.

Diodes bent and soldered to start connecting rows of keys on the right-hand side of a Concertina v0.7.0.

Rows begun

The next step after that is to bridge the cluster gap by adding a piece of wire to each of the three rows that stretch across that gap. The wire, being more flexible than the diodes, again ensures that the clusters can be separated for maintenance. As an alternative to extra wire, add in connectors.

Repeat all that work on the left-hand side.

Fully connected columns and rows of keys on the left-hand side of a Concertina v0.7.0.

Rows complete on the left; clusters bridged in black and red

Beyond the key matrices

Add wires to the columns on both sides for connecting them to the MCU. On the left-hand side, you need those wires reaching at least 30 cm away from the key-cluster subassembly, so that you can route it all through the loft of the central housing to reach the MCU in the right-hand bookend.

The last stage of wiring up the left-hand key clusters. The two bundles have an appropriate length of about 30 cm away from the subassembly body.

Left-hand side with routable bundles

Put in a couple of the screws connecting the thumb and main clusters on each side, and then bundle up the wires.

Preparing the MCU

If you’re using pin headers, attach them to the MCU, and add connectors to the wires running from the key clusters.

Fully connected columns and rows of keys on the right-hand side of a Concertina v0.7.0, all terminated in crimped M20 connectors for an MCU, for rows (black, red) and columns (other colours of wire). This is a complete key-cluster subassembly, though it still has no caps.

12 connectors ready for the MCU

If your build is more basic, you will have to wait until after all the wires are routed through the central housing before you solder wires directly to the PCBA’s through-holes and test the matrices.


The following table describes Pro Micro I/O pin designations and the use of each pin in the Concertina’s official QMK firmware configuration.

QMK Silk Concertina wire
Left-hand side of PCBA ⮯
D3 TX0 Not used
D2 RX1 Not used
D1 2 Black Row closest to user, left-hand key clusters
D0 3 Red Middle rows
D4 4 Black
C6 5 Red Row furthest from user, left-hand key clusters
D7 6 Black Row closest to user, right-hand key clusters
E6 7 Red Middle rows
B4 8 Black
B5 9 Red Row furthest from user, right-hand key clusters
Right-hand side of PCBA ⮯
F4 A3 White Top (index-finger and thumb) columns (both halves)
F5 A2 Green Middle columns
F6 A1 Orange
F7 A0 Purple
B1 15 Yellow
B3 14 Brown
B2 16 Grey
B6 10 Blue Bottom (pinky-finger) columns (both halves)


The Concertina is primarily a hardware design. You can run whatever firmware you want on it. Fully featured firmware that matches the “official” keycaps is available as part of the QMK project. This comes with a web-based tool for easy reconfiguration: QMK Configurator.

A cropped screenshot from QMK Configurator (API v0.1), showing the base layer (layer 0) of the default keymap for the Concertina (v0.6.0 & v0.7.0) in simulated “GMK Plum” colours.

As noted there, the example assumes a Colemak keyboard layout on the OS side (hence all the CM_* tags), but all the basic stuff should work on a computer expecting QWERTY.

As of version 0.1 of Configurator, the web interface displays parentheses on tapping Ctrl and Alt keys, whereas in the underlying C code, tapping them produces brackets and braces, not parentheses.


If you’re using pin headers for non-permanent connections between the two halves of the keyboard, test hardware before assembly. Otherwise, test after assembly.

Testing the hardware of a Concertina v0.7.0 for functionality before final assembly.

MCU with pin headers, wired up for testing

Connect the MCU to your computer and make sure that all the keys work.

Closing the case

Screw all the subassemblies together.

A stage in the assembly of a Concertina v0.7.0. Here, the left-hand bookend subassembly has been attached to the central housing and the bundled wires coming out of the finished left-hand key-cluster subassembly are being routed through the central housing.

The left-hand side

A stage in the assembly of a Concertina v0.7.0. Here, the right-hand bookend subassembly has been prepared as shown here, then attached to the central housing with screws at the assortment-drawer seam, and then the bundled wires originating in the left-hand side (shown here) have been routed through the left-hand bookend (also attached to the central housing as shown here)), and through the loft of the central housing, to poke into the right-hand bookend.

Bundled wires go through the loft

A stage in the assembly of a Concertina v0.7.0. This stage follows this one and shows two changes from it. Most importantly, the MCU has been connected to the left-hand-side key-cluster subassembly, and to the external USB port, and to the reset button. In addition, the right-hand-side key-cluster subassembly has been lined up for attachment in turn.

The right-hand side with its MCU

Connect all the wires. Close the case, mounting the MCU however you like or letting it hang suspended by the wires.

A stage in the assembly of a Concertina v0.7.0. Apart from driving in the last few screws, this is the final stage in building the keyboard case with all its contents, as distinct from the assortment drawers and keycaps that go in still later.

Final assembly

Drive in all the screws you want on the outside.

From here on out it’s smooth sailing. Put on the caps, fill the drawers, plug in and enjoy your new keyboard.

A more careful build than Concertina #1, on a more recent design, but this unit is a Frankenstein job. Most of the components are actually mixed prototypes. Only the right-hand side of the main body corresponds exactly to what was released as v0.7.0 of the DMOTE application.