Wooden Keycaps

In this guide you'll learn how to CNC mill keycaps for mechanical key switches.

This part require a custom fixture in order to machine the internal and exterior geometry of the keycap.

You'll need to use Fusion 360 to customize the tool paths and stock for your desktop CNC machine.

Tools & Materials

Bantam Tools Library for Fusion 360

Download the tool library from Bantam Tools for Fusion 360.

Reference the documentation on Bantam Tools website for instructions on how to install the library into Fusion 360.

CAD Files

Use the link below to download the CAD files. The Fusion 360 file is included as well as a STEP file and STLs of each part. Use the F360 file and follow along with the guide.

The keycap features a DSA profile with symmetrical sides and features a concave top surface. The dimensions of the keycap are designed to fit with Kailh box switches and Cherry MX compatible switches.

  • Body Size: 18.5mm x 18.5mm x 8mm
  • Stem Height: 5mm
  • Wall Thickness: 2mm

Sketch Dimensions

The keycap was created using a few sketches. The keycap is extruded using the rectangle from the cap top base sketch with a 22 degree tapered angle at 8mm tall. The revolve feature was used with the revolve tip sketch to create the concave on the top of the keycap. 1mm fillets were applied to the edges to round them out. The internal cutout was created with a 5mm extrude using the base sketch with a 22 degree tapered angle. The stem was created with another extrude using the smaller rectangle in the base sketch. The cross was created using the cross sketch with an extrude.

Sketch Profiles

The base sketch features several rectangle profiles for creating the holding fixture and the keycap. This was set up so the keycap is centered with the fixture. Sketch dimensions show the various sizes of the profiles. Modify the dimension if you'd like to create a bigger or smaller holding fixture. 

User Parameters

Variables were used in sketch dimensions to make adjustments easier. The capOuter parameter defines the width and height of the bottom keycap model. The capSpacing parameter is used to define the spacing between the rectangular pattern. The capInner is used to create the internal square of the keycap. The holderPad parameter is used to create an additional gap along the edge of the holding fixture. The capSize parameter is used to define the width and height of the top keycap model.

Material Type

Pick your desired material by considering the various types of wood. In this project, hardwoods such as cherry, walnut, maple and purple heart were machined using with the same feeds and speeds with great success and repeatability.

Material Size

When determining material size, it's good to consider the CNC machines spoil board. It's good practice to cut your stock down so it's slightly smaller than the maximum build volume.

  • Workable Build: 139mm x 114mm
  • Stock Size: 126mm x 101mm x 13mm
  • 3x4 Keycap Holding Fixture: 120mm x 91mm x 10mm

Facing Material

Measure the thickness of your stock to determine how much material will need to be removed. If the stock is not even, it's good practice to surface both sides of the stock. 

Facing Operations

Consider using a Face operation to get your stock to the desired thickness. A facing operation removes all material from the top of stock to top of model. This produces a quick part facing to prepare raw stock for machining. 

Sketch & Model Stock

In the design workspace, create a sketch and use the 2-point rectangle to draw out a shape. While drawing, enter the height and width values to specify the size of the rectangle. Use the tab key to switch between the two dimension text inputs. Click finish sketch when finished.

Click on the rectangle to highlight the profile and use Extrude (hotkey E) then enter the thickness of the stock.

Face Settings

In the manufacturing workspace, Press the S hotkey to summon the shortcuts menu. Type "Face" and press return to select.

Under the Tool section, click on the Select button and choose your desired tool. Here we're using a 1/8in flat end mill.

Under Feed & Speed, reference the surface speed, cutting feed rate, and plunge feed rate values. 

Select the Heights icon in the tabs menu and reference the Bottom Height values.

Select the Passes icon in the tabs menu and click the checkbox to enable Multiple Depths. Reference the values under the Maximum Stepdown.

Click OK to append and save settings.

Simulate

Use the shortcuts menu (hotkey "S") and type "simulate" then press return to select. Click the "Play" icon to run the simulation. The tool will animate and go through the operation. If it looks good to you, click the "Close" button.

Post Process

Right-click on the Face operation in the Browser panel and select Post Process. Under the Post section, click the dropdown and choose Bantam Tools. Under the Name/number section, type a desired file name for the Gcode file (i.e 1-8-facing). Click on the folder icon under the Output Folder section and navigate to a desired folder for saving the GCode file. Click the POST button to save and close the window.

Setup Stock for Holder

In the design workspace, isolate the Holder component using the eye icon to hide the other components. 

In the manufacture workspace, create a new Setup using the icons in the top menu or the shortcuts menu.

Select the dot on the top surface of the lower left corner of the stock preview. In the Stock tab, reference the values in the Stock Offset sections.

Adaptive Clearing 

In the manufacture workspace, click on the Adaptive Clearing icon in the top 3D menu or use the shortcuts menu.

Click on the Select button in the tool section and choose the 1/8in flat end mill.

Under the Feed & Speed section, reference the values.

Click on the Geometry tab and select Bounding Box under the Machining Boundary in the Geometry section. Select Tool Outside boundary under the Tool Containment section.

Click on the Passes tab and change the Maximum Roughing Step Down. Click the checkbox to disable the Stock To Leave section.

2D Contour

Click on the 2D contour icon in the top menu or the shortcuts menu.

Click on the select button in the tool section and choose the 1/8in flat end mill.

Under the feed & speed section, reference the values.

Click on the Geometry tab and click on the bottom edge of the holder. This should highlight the edge blue.

Click on the Heights tab and choose "Selection" under the Top Height section. Then, click on the top surface of the holder to highlight it blue.

Click on the Passes tab and click to enable the Multiple Depths. Change the Maximum Roughing Step Down to the values in the screenshot. Make sure Stock To Leave is disabled.

 

2D Pocket

Click on the 2D pocket icon in the top menu or use the shortcuts menu.

Click on the section button the tool section and choose the 1/32in flat end mill.

Under the feed & speed section, use the same values as the 1/8in flat end mill.

Click on the Geometry tab and click on top surface of the four holes in the model.

Click on the Passes tab and click to enable the Multiple Depths. Change the maximum roughing step down to the values in the screenshot. Make sure Stock To Leave is disabled.

Simulate and Post Process

Reference the previous CAM setup to simulate the operations. If everything looks good, proceed to Post Process the GCode files. You have the option to select multiple operations in the Browser. For example, the Adaptive Clearing and 2D Contour operations use the same tool so this could be posted as a single GCode file.

Stock Setup for Bottom Keycaps

In the design workspace, isolate the caps bottom component using the eye icon to hide the other components.

In the manufacture workspace, create a new Setup using the icons in the top menu or the shortcuts menu.

Orbit around the model of the bottom keycap so the internal geometry is facing up right. Select the dot on the top surface in the lower left corner of the model. Click on the colored arrows to reposition the X,Y and Z axis so they match up with the screenshot. In the Stock tab, reference the values in the Stock Offset sections.

Adaptive Clearing

In the manufacture workspace, click on the Adaptive Clearing icon in the top 3D menu or use the shortcuts menu.

Click on the Select button in the tool section and choose the 1/16in flat end mill.

Under the Feed & Speed section, use the same values as the 1/8in flat end mill.

Click on the Geometry tab and select Bounding Box under the Machining Boundary in the Geometry section. Select Tool Outside boundary under the Tool Containment section.

Click on the Passes tab and change the Maximum Roughing Step Down. Click the checkbox to disable the Stock To Leave section.

 

2D Pocket

Click on the 2D pocket icon in the top menu or use the shortcuts menu.

Click on the section button the tool section and choose the 1/32in flat end mill.

Under the feed & speed section, use the same values as the 1/8in flat end mill.

Click on the Geometry tab and click on bottom surface of the cross in center the model.

Click on the Passes tab and click to enable the Multiple Depths. Change the maximum roughing step down to the values in the screenshot. Make sure Stock To Leave is disabled.

2D Contour

Click on the 2D contour icon in the top menu or the shortcuts menu.

Click on the select button in the tool section and choose the 1/8in flat end mill.

Under the feed & speed section, reference the values.

Click on the Geometry tab and click on the bottom edge of the keycap model. This should highlight the edge blue.

Click on the Passes tab and click to enable the Multiple Depths. Change the Maximum Roughing Step Down to the values in the screenshot. Make sure Stock To Leave is disabled.

Pattern Tool Path Operations

With the tool paths now set up, you can use the pattern feature in the Manufacturing workspace to duplicate the operations.

New Pattern Set Up

Since each operation requires a different tool, each operation will need to be a separate pattern.

Right-click on the first operation (1/16in Adaptive Clearing) and select Add to New Pattern from the menu.

Under Direction 1, click the Edge button and select one of the edges in the model that is in the desired axis.

Under Spacing for Direction 1, type in 28.5mm.

Under Number of instances 1, type in 4.

Press OK button to accept and save.

Repeat this process for the 2D Pocket and 2D contour.

Simulate and Post Process

Reference the previous CAM setup to simulate the operations. If everything looks good, proceed to Post Process the GCode files. You have the option to select multiple operations in the Browser. For example, the Adaptive Clearing and 2D Contour operations use the same tool so this could be posted as a single GCode file.

Stock Setup for Top Keycaps

In the design workspace, isolate the caps top component using the eye icon to hide the other components.

In the manufacture workspace, create a new Setup using the icons in the top menu or the shortcuts menu.

Select the dot on the top surface in the lower left corner of the stock preview. In the Stock tab, select Fixed Size Box under the Mode section. Reference the values for the Width(X), Depth(Y), Height(Z) and set the model positions to Center.

Adaptive Clearing

In the manufacture workspace, click on the Adaptive Clearing icon in the top 3D menu or use the shortcuts menu.

Click on the Select button in the tool section and choose the 1/16in flat end mill.

Under the Feed & Speed section, use the same values as the 1/8in flat end mill.

Click on the Passes tab and change the Maximum Roughing Step Down. Click the checkbox to disable the Stock To Leave section.

New Pattern Set Up

Only a single operation is used for the Top of the keycap so you may use a single pattern for the Adaptive Clearing operation.

Right-click on the 1/16in Adaptive Clearing in the browser and select Add to New Pattern from the menu.

Under Direction 1, click the Edge button and select one of the edges in the model that is in the desired axis.

Under Spacing for Direction 1, type in 28.5mm.

Under Number of instances 1, type in 4.

Press OK button to accept and save.

Simulate and Post Process

Reference the previous CAM setup to simulate the operations. If everything looks good, proceed to Post Process the GCode files. You have the option to select multiple operations in the Browser. For example, the Adaptive Clearing and 2D Contour operations use the same tool so this could be posted as a single GCode file.

Install and Probe Tool

In the Bantam Tools software, click on the JOG icon. In the Jog Milling Bed dialog window, click on Install Tool. 

Walk through the tool installation process. Use the 1/8in flat end mill. This tool will be used for facing our stock.

Optionally use a fan bit to blow away any sawdust during the milling operations.

Add Nitto Tape

To secure the stock to the spoil board of the CNC, apply strips of NITTO tape to one of the surfaces. Ensure the surface is clean of any dust or debris. Try to cover most of the surface and avoid overlapping the tape.

Secure Stock to Spoil Board

Place the stock over the spoil board with the lower left corner lined up. With the stock lined up, firmly apply pressure to secure the stock to the spoil board.

Jog Controls

If you find it difficult to get your hands in the machine, use the Jog controls to move the spoil board. In the Bantam Tools software, click on the JOG icon. Under Spindle Control, switch from STEP to JOG. Use the X and Y buttons to move the bed. Use the Z buttons to move the spindle up or down. Click and hold to make continuous movements.

Set Up GCODE in Bantam Tools Software

In the Bantam Tools Software, click on the Initial Setup tab. Click on the blue button, OPEN FILE. Browse and select the Gcode file for facing the material.

Under the milling tools section, click on the dropdown menu and select the 1/8" Flat End Mill from the list.

Material Setup

Click on the Material Setup tab. Under the Material Size section, enter your stocks dimensions in the X,Y and Z input fields.

Under Material Placement, update the Material Offset Z to 0.2mm (This is the thickness of the Nitto tape).

Face Material

Double check all of the settings are updated. Click on the Summary Run Job tab. Under the Gcode file section, click on the Mill Single File button.

Watch the CNC machine carefully and check periodically to make sure everything runs as expected.

 

Vacuum Saw Dust

Once the facing operation is complete, remove the windows and vacuum up all of saw dust and debris. Use the Jog controls to get to all of the nooks and crannies. 

Remove Stock from Bed

Apply alcohol to the spoil board using a squeeze bottle. Allow the alcohol to soak into the wood and tape for a half of a minute. Use a palette knife or spatula to get under the stock. Gently pray the stock off of the spoil board.

Peel and remove the tape from the surface of the stock. Use paper towels to clean up the spoil board.

Face Other Side

With the first side now faced, it's time to do the other side!

In the Bantam Tool software, update the material size. Under Z, subtract 1.5mm from your stocks thickness. In this case, the stock was 13mm. The new thickness is now 11.5mm (13 - 1.5).

Follow and repeat the process to face the other side of the stock.

 

Finish Facing

Once the second side has been faced, update your material size once more. The stock should now be 10mm. Leave the stock secured to the spoil board.

The next set of Gcode files will create the 1x4 fixture for holding the keycaps. 

Leave the stock secured to the spoil board! Ensure the material thickness is updated to 10mm. Proceed to the next page when ready.

GCode Files for Fixture

In the Bantam Tools software, remove the facing gcode. Click the three dots icon in the blue bar of the GCode file. Click Remove to delete.

Click Open File and choose the GCode file for the 1x4 holder with the 1/8in flat end mill. Under the milling tools section, choose the 1/8in flat end mill from the list.

Click Open file again and choose the GCode file for the 1x4 holder with the 1/32 flat end mill. Under the milling tools section, choose the 1/32in flat end mill from the list.

 

Mill Fixture – 1/8in

In the Bantam Tools software, click on summary run job. Under the 1/8in GCode file, click Mill Single File when ready.

With the stock still secured to the spoil board and the 1/8in already installed, proceed to mill the 1/8in GCode file.

When complete, use the vacuum to clean up the saw dust and debris. DO NOT remove the stock yet. Proceed to install the 1/32in flat end mill.

Install and Probe 1/32in Flat End Mill

In the Bantam Tools software, click on the JOG icon. In the JOG dialog window, click Install Tool.

Wipe away any dust from the available space on the spoil board.

Install the 1/32in flat end mill and walk through the installation process.

Mill Fixture – 1/32in

In the Bantam Tools software, click on summary run job. Under the 1/32in GCode file, click Mill Single File when ready.

When complete, use the vacuum to clean up any saw dust and debris.

Remove and Sand Fixture

Use alcohol and a palette knife to remove the fixture from the spoil board.

Allow the alcohol to soak into the bottom of the fixture.

Use the Jog controls to move the spoil board and spindle out of the way so you can get a better handle on the material.

The surfaces of the fixture might be rough and will need to be sanded down. Use 220 grit sand paper to smooth out the surfaces in the fixture.

The screenshots in this section are of an early prototype of the fixture. This prototype used a 3x4 layout. The 1x4 fixture requires less material and results in faster machining time.

Stock for Keycaps

Get stock prepped and ready for milling. Take a moment to measure and check if the surface needs to be faced on both sides.

Depending on the size of the stock, you may want to create a new GCode file for facing your material in Fusion 360. Reference the Stock CAM setup page.

To make 4x keycaps, our stock was cut to these dimensions:

127mm x 49mm x 13mm

The stock material will need resurfaced to be 8mm thick in order to properly mill the bottom and top keycaps.

Face Stock for Keycaps

Proceed to face the stock material for the keycaps using the 1/8in flat end mill. Reference the previous pages if you need.

This stock material was even on both sides. Only the top surface of the stock will need to be faced.

Remember to vacuum up any saw dust and debris after every job.

Stock Setup for Keycaps

In the Bantam Tools software, update the stock dimensions in the Material Setup tab under the Material Size section. Note, the material thickness is set to 8mm because the facing operation has already been completed. Double check the material offset Z is set to 0.2mm (The thickness of the nitto tape).

Add GCode Files for Bottom Keycaps

In the Bantam Tools software, click on the Initial Setup tab. Click the Open File button to browse and locate the three GCode files for milling the bottom keycaps.

Under Milling Tools, use the dropdown menu to select and choose the corresponding tool for each GCode file.

The bottom keycap GCode files will use the following tools.

  • 1/8in Flat End Mill – 2D Contours
  • 1/16in Flat End Mill – Adaptive Clearing
  • 1/32in Flat End Mill – 2D Pockets

Milled Bottom Keycaps

Proceed to mill the three GCode files.

Start with the 1/16in flat end mill to do the adaptive clearing.

Proceed to mill the 2D pockets using the 1/32in flat end mill.

Complete the job with the 1/8in flat end mill to do the 2D contours.

Remove Keycaps

Vacuum any saw dust and debris from the spoil board and build area.

Use alcohol to remove the keycaps from the spoil board.

Peel away the nitto tape from the keycaps and spoil board.

 

Sand Keycaps

The keycaps may have burrs along the edges. Use 220 grit sand paper to smooth out any rough edges.

Test Fit Keycaps on Fixture

Place the keycaps onto the fixture to test fit the tolerances.

The keycaps should easily press fit onto the fixture.

Test fit each of the keycaps.

Remove all of the keycaps when ready to mill the top side of the keycaps.

Install 1/8in Probe

When installing the PCB bracket, use the 1/8in probe.

In the Bantam Tools Software, click on the Jog icon. In the Tool Install dialog, select the 1/8in Diameter Probe from the list.

If you don't have a 1/8in probe, you can use the 1/8in flat end mill. Install the 1/8in flat end mill upside down so the blunt flat tip touches the bed.

Locate PCB Bracket

In the Bantam Tools software, click on the Initial Setup tab. Under the Brackets and Accessories section, click on the LOCATE button under the PCB Bracket title.

Read and follow the Locate Bracket dialog.

Remove any material from the spoil board. Wipe the surface down with a paper towel and alcohol.

Proceed to install the PCB bracket onto the spoil board.

Install PCB Bracket

The PCB bracket for the Bantam Tools PCB milling machine uses 3x M3 screws to secure it to the spoil board.

Place the PCB bracket over the spoil board and line up the mounting holes. Use an M3 wrench to fasten and secure the bracket to the spoil board.

When installation is complete, proceed to click the NEXT button in the Locate Bracket dialog window.

Probe Bracket

The spindle will lower and probe the various edges of the PCB bracket with the 1/8in probe.

Secure Fixture to Spoil Board

Use double-sided nitto tape to secure the fixture to the spoil board.

Use several strips of tape to cover the bottom surface of the fixture.

Place the fixture onto the spoil board with the lower left corner lined up with the PCB bracket.

Firmly apply pressure to secure the fixture to the spoil board.

Install Tape on Fixture

Lay down two strips of double-sided NITTO tape on the top surface of fixture. Reference the image for best placement.

This tape is necessary for securing the bottom keycaps to the fixture. Without the tape, the keycaps will lift during the top side milling process.

Install Keycaps

Place the bottom keycaps onto the fixture.

Firmly apply pressure to each of the keycaps to secure them to the fixture.

Install 1/16in Tool

In the Bantam Tools software, Click on the JOG icon. In the Jog Milling Bed dialog window, click on the Install Tool button.

Get the 1/16in flat end mill tool ready to install.

This will be used to mill all of the tops of the keycaps. 

Setup GCode for Top Keycaps

In the Bantam Tools software, click on the Initial Setup icon.

Click the OPEN button and select the GCode file for the top keycaps.

Under the GCode file section, click on the dropdown menu and select the 1/16in flat end mill from list.

Material Offset

Click on the Material Setup icon. Under the material placement section, update the Z input under the Material Offset Z section. Enter 5.4mm into the text box.

Ensure the Align To Spoil Board section is set the LEFT.

Mill Top Keycaps

When ready, click on the Summary Run Job icon. Under the top keycap GCode file, click the Mill Single File button.

 

Remove Top Keycaps

Apply alcohol to the top surface of the tape.

Allow the alcohol to soak into the tape to soften up the adhesive.

Use a palette knife or spatula to remove the keycaps from the fixture.

Gently slide the palette knife or spatula underneath the keycaps.

Take care and be cautious when removing keycaps from the fixture. Be careful not to break the keycaps when removing from the fixture.

Test Keycaps with Switches

Use 220 grit sand paper to remove any excess and smooth out the bottom surface of the keycaps.

Test fit the keycaps by press fitting them onto a Kailh Box mechanical key switch.

Finish Keycaps

Optionally use a finish or stain to the finish your keycaps.

Congrats! You have successfully milled Keycaps out of wood.

Now you can install them onto your favorite keyboard or macropad.

This guide was first published on Aug 30, 2021. It was last updated on Aug 30, 2021.