Handheld tactile switch keyboard for Teensy 3.2 compatible boards.
- Teensy Thumb Keyboard - PCB only - Tindie product page and ordering
- hackaday.io page - more photos, info and project logs
- thingiverse ‘HyperPixel 4 & Raspberry Pi 3 B+ Handheld’ page
- 60 keys arranged in a 6x10 matrix (uses 16 pins on the microcontroller).
- Silkscreen has a qwerty layout with number keys arranged in a numpad.
- Lead free ENIG-RoHs surface finish with 2oz copper.
- SPI, I2C, and 2 additional GPIOs broken out.
- Each pin along the edge of the Teensy is connected to one extra pin in the prototyping area.
- Beginner friendly through hole soldering.
- Example Arduino sketch firmware provided. Additional details in the Example Firmware Posted project log.
- Layout is completely customizable in the firmware.
- qmk_firmware should also work however, I don’t have an example running yet.
Three possible mounting options
- Teensy on the front, mounted right-side up, with usb port facing north.
- Teensy on the back, mounted upside down, with usb port facing north or south.
- Teensy on the back, mounted upside down, with usb port facing south. Note: Breakout pins will only work as expected with USB facing north.
Parts list for a fully working keyboard
- 1x Teensy 3.2 or Teensy LC. A Butterfly STM32L433 will also work (though not as a USB keyboard).
- 10x 1N4148 Zener Diodes
- 60x Panasonic EVQ-PAC04M Tacticle Switches. These are the quieter and higher quality switches. Some are available at digikey. If you wish to use the 3d printed faceplate the overall switch height must be 4.3mm. These models will also work: EVQ-PAD04M EVQ-PAE04M EVQ-PAG04M. Otherwise any standard 6x6mm momentary switch will work.
- Teensy Thumb Keyboard - PCB only Tindie product page
- Ordering yourself from a PCB manufacturer:
- https://oshpark.com instructions: upload the kicad pcb file file.
- https://jlcpcb.com/quote instructions: upload the gerber.zip file The
settings I’d recommend are:
- Layers: 2
- Thickness: 1
- Surface finish: LeadFree HASL-RoHs or ENIG-RoHs (don’t want lead on a board you may be typing on)
- Copper weight: 2oz (1oz is probably fine though, the heavier weight copper stands up better to repeated solder and desoldering I think)
- Everything else default settings.
- Keyboard Faceplate Fusion 360 Public Link
- Raspberry Pi 3 B+ & HyperPixel4 Handheld Fusion 360 Public Link
- The layout for USB keyboarding is defined in the
usb_key_matrixvariable in LayoutThumbKeyboard.h
- If you don’t need a USB keyboard and are rolling your own hardware project
then you can focus on the layout defined by the
ascii_key_matrixvariable in LayoutThumbKeyboard.h
- There are three layers defined: base, shift, and Fn layers.
- USB can be disabled by commenting out define
- All the keyboardy goodness is handled by the
keyboard_update();function called from inside the standard Arduino
- If you don’t need the keys to behave like a keyboard you can gut most of
that example and just use
key_matrix.update();The KeyboardMatrix class handles reading the button states.
- An alternative firmware option for a pure USB keyboard would be to run the excellent https://github.com/qmk/qmk_firmware.