SkillAgentSearch skills...

Navcaps

3D printable keycaps and MX-compatible mounts for directional navigation switches, along with trackpoint extension stems

Install / Use

/learn @wolfwood/Navcaps
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

Trackpoint Stem Extensions, and Navigation Switch Keycaps and MX Switch Mount Adapters

<!-- both 4:5 <img src="images/trackpoint.jpg" width="300"> <img src="images/nav-switch.jpg" width="300"> ![Trackpoint Stem](images/trackpoint.jpg) ![Nav Switch](images/nav-switch.jpg) Trackpoint | Nav :---:| :---: ![Trackpoint Stem](images/trackpoint.jpg) | ![Nav Switch](images/nav-switch.jpg) --> <div style="text-align: center;"> <img src="images/cutaway-platform-tp-stem.jpg" width="400"> <img src="images/nav-switch.jpg" width="400"> </div> <!-- markdown-toc start - Don't edit this section. Run M-x markdown-toc-refresh-toc -->

Table of Contents

<!-- markdown-toc end -->

Trackpoint Stem Extensions

<div style="text-align: center;"> <img src="images/clamp-aio-platform.jpg" width="500"> </div>

The recommended model for modern trackpoint sensors with 2.5 mm x 2.5 mm square stems for "super low profile" or newer rubber caps is trackpoint-lp-clamp-aio-platform. This compact stem fits over the trackpoint stem and then clamps diagonally using two M1.6x8 screws and M1.6 hex nuts (with M1.6x6 it is a bit hard to catch the nut). The hex holes hold the nut in place while tightening. The platform flares out to support the bottom of the rubber dome, which increases responsiveness. The clearance required for the clamp is a cylinder above the trackpoint sensor with 5 mm height and 13 mm diameter.

<div style="text-align: center;"> <img src="images/tp-platform.jpg" width="500"> </div>

You can limit the width of the platform so it fits through your PCB and/or switch plate by changing the value of max_dia in stems/trackpoint-lp-clamp-aio-platform.scad. Or use the non-platform variant trackpoint-lp-clamp-aio for a narrower stem, which can itself be controlled by changing the value of stem_dia. I generally use a 5 mm hole for the stem in my keyboard plate for the default 4 mm stem_dia and 4.9 max_dia. stem_dia needs to have clearance for the stem's movement, along with possible off center or angled mounting. max_dia just needs to fit through.

<div style="text-align: center;"> <img src="images/sk8702-minspace.jpg" width="500"> </div>

For a build with minimum Y spacing between switches, trackpoint-lp-clamp-aio-platform-narrow trades a little rigidity for tight key spacing, allowing 15 mm spacing in Y and 17.6 mm in X. You can achieve 15mm X spacing by offsetting the keycap stems by 1.3 mm on each side. I have used this with a 2.7 mm x 6 mm rectangular hole in my keyboard plate.

For a trackpoint sensor with a round stem, such as on the Sprintek 8707-51, sprintek51-clamp-aio is available.

<div style="text-align: center;"> <img src="images/sk8707-51-old-wide.jpg" width="500"> </div>

If space is not at a premium and you want a firm hold with washers and lock washers, use the non-aio variants, trackpoint-lp-clamp and sprintek51-clamp. Minimum screw length is M1.6x8. I have not found this to be necessary in practice.

If necessary, make sure to tune the vertical_slop so that you can see the trackpoint stem underneath the clamp (i.e. the clamp is not resting flat on the trackpoint sensor, but instead resting on the top of the trackpoint stem and held off the surface of the sensor). This will help prevent force on the top of the extension from levering the trackpoint stem and breaking it off (if this does happen, it is possible to superglue the stem back into place but it should be avoided).

It is important to make sure you have the correct setting for keycap_style as the rubber cap's height is subtracted from effective_height to determine the actual height of the stem generated. If you are having difficulty measuring your keyboard, a 16 mm effective_height is a good starting place for lower profile keyboards, such as those using unsculpted keycaps or choc switches. 20 mm for a high profile keyboard such as those with SA keycaps on MX switches.

keycap_style | Height ---|--- trackpoint-lp | 5 mm trackpoint-slp | 4 mm trackpoint-3_5 | 3.5 mm trackpoint-3 | 3 mm

See Also

Discontinued

The trackpoint-lp-square stem extension is a suspended effort, as I had difficulty obtaining a press-fit that will not rock on at least one axis. I stopped working on it as I found, at least with the Sprintek trackpoint modules, removing a press-fit stem extension can rip the trackpoint stem off of the sensor, so proceed at your own risk! If you do suffer this fate, you can try supergluing the stem back on. If you are committed to this path, your best bet is probably using series.scad to print a variety of sizes at once and possibly tweaking the corner cutouts if you see rounding of the corners that interferes with insertion (or if the corner cutouts are too large and you get rounding of the sides of the hole).

Navigation Switch Keycaps and MX Adapters

The project has functional MX adapters and stems that fit the SKQU and SKRH nav switches described below, and 'keycaps' for using a trackpoint rubber cap.

There are also a variety of purely 3D-printed keycaps, in a variety of shapes: cup, saddle, bar, banana (maybe I should have called it macaroni?), dome and cup with a 'chin' which is meant to be used at an angle with the chin providing extra material to press down/towards the user. Right now I think the trackpoint is the most comfortable; everything else should be considered a work in progress, but the dome (basically a less-good trackpoint) and banana show the most promise. Sheet versions of the cup and saddle are thinner and less likely to bump into adjacent keys, but the plain versions are cool too.

The RKJXS adapter (and stem) exist but are not quite useable in current form. The adapter in particular is challenging because the switch is very large and the adapter walls become very narrow, to the point that the slicer ignores them.

Usage

First, edit settings.scad to select a stem_model and keycap_style from among those available in stems/ and keycaps/ respectively. Edit others settings as appropriate, the main one of interest is effective_height; measuring the height of adjacent keys from the switch plate will provide a good starting place. All distances are in millimeters.

Next, run make update. This is necessary anytime you edit stem_model or keycap_style because openscad only allows string literals in imports, so we import a symlink, maintained by make, that points to the appropiate files. You will also need to manually initiate a preview or render once in any running openscad window as it doesn't watch the symlinks for changes.

You can then open the the stem in openscad to look at the result, or openscad final.scad to see the high quality render (may take several minutes to complete if using an old version of OpenSCAD). If you are happy with the result you can use export, or run make to generate an .stl for slicing.

For nav switches, run make adapter to get the MX switch socket adapter for the switch matching stem model.

Printer Settings

Trackpoint Stem Extensions

With Prusament PLA and a Prusa MK4S I have made very rigid and accurate parts, which are more than sufficient for the task.

I would avoid using PLA Silk or TPU, but I have had successful prints with other rigid materials that are not typically suited to fine details, like PC-CF. Very little material is used (~1 g) so it's worth using a quality filament brand.

Standard 0.2 mm layer height with a 0.4 mm nozzle works great. Use 4 perimeters and rectilinear infill (or honestly you can set infill to 0%). No support is needed, but it can be used e.g. when printing the stem extension at the same time as a keyboard.

Always print at least two extensions, or something else taller than the extension. Lone trackpoint stem extensions may get melty and deformed toward the top, printing several at once will cause the hot end to move far enough away for each layer to cool before the next.

Old Advice for Nav Caps

  • print keycaps at a 45 degree angle for a nicer surface against your finger (this may make the stem fit against the switch worse)

  • print "external perimeters first" to get better dimensional accuracy for both keycap stems and MX adapters

  • disable supports for bridging, so that the hole for the switch stem isn't plugged by support material

  • you might get a better fit against the switch printing upside down (no elephant foot on the first few layers making things too tight)

  • don't decrease layer height expecting prints to better fit the switch stem; X-Y acc

View on GitHub
GitHub Stars74
CategoryDevelopment
Updated11d ago
Forks3

Languages

OpenSCAD

Security Score

100/100

Audited on Mar 17, 2026

No findings