All Projects → AnthonyDiGirolamo → Teensy Thumb Keyboard

AnthonyDiGirolamo / Teensy Thumb Keyboard

Licence: gpl-3.0
Handheld tactile switch keyboard for Teensy 3.2 compatible boards.

Projects that are alternatives of or similar to Teensy Thumb Keyboard

SerialProxy
🖱️⌨️ Arduino Input Proxying for PC (.NET Core)
Stars: ✭ 39 (-36.07%)
Mutual labels:  keyboard, teensy
snackymini-keyboard
Snackymini Keyboard
Stars: ✭ 28 (-54.1%)
Mutual labels:  keyboard, teensy
Kfreestyle2d
Unofficial Kinesis Freestyle 2 Userspace Linux Driver
Stars: ✭ 41 (-32.79%)
Mutual labels:  keyboard
Libcorsairrgb
⌨️ Windows library for controlling lights on Corsair RGB keyboards
Stars: ✭ 52 (-14.75%)
Mutual labels:  keyboard
Commonkeyboard
An elegant Keyboard library for iOS. simple, lightweight and standalone no sub-dependencies required
Stars: ✭ 47 (-22.95%)
Mutual labels:  keyboard
Inputsystem
An efficient and versatile input system for Unity.
Stars: ✭ 1,013 (+1560.66%)
Mutual labels:  keyboard
Keyboardheightprovider
Get android keyboard height using an overlay popup-window
Stars: ✭ 50 (-18.03%)
Mutual labels:  keyboard
Jquery Keyfilter
This plugin filters keyboard input by specified regular expression.
Stars: ✭ 37 (-39.34%)
Mutual labels:  keyboard
Keyboardhidemanager
Codeless manager to hide keyboard by tapping on views for iOS written in Swift
Stars: ✭ 57 (-6.56%)
Mutual labels:  keyboard
Gingham pcb
A 60% throughole keyboard inspired by the Plaid
Stars: ✭ 45 (-26.23%)
Mutual labels:  keyboard
Keyboard Extra
Nice handling for keyboard inputs in Elm
Stars: ✭ 51 (-16.39%)
Mutual labels:  keyboard
Skr
Low level key re-programming
Stars: ✭ 47 (-22.95%)
Mutual labels:  keyboard
Tertiary text
[Pebble] Tertiary text input for the Pebble!
Stars: ✭ 43 (-29.51%)
Mutual labels:  keyboard
Keyboardlayoutguide
⌨️ Manage iOS keyboard with Apple's missing KeyboardLayoutGuide
Stars: ✭ 1,054 (+1627.87%)
Mutual labels:  keyboard
Typist
Swift UIKit keyboard manager for iOS apps.
Stars: ✭ 1,011 (+1557.38%)
Mutual labels:  keyboard
Badusb
Personal implementation of the BadUSB exploit with an Atmel 8-bit AVR ATTiny85 acting as a HID keyboard
Stars: ✭ 53 (-13.11%)
Mutual labels:  keyboard
React Spreadsheet Grid
An Excel-like grid component for React with custom cell editors, performant scroll & resizable columns
Stars: ✭ 996 (+1532.79%)
Mutual labels:  keyboard
Rf1101se Teensy
Driving one of those cheap RF1101SE boards with a Arduino or Teensy
Stars: ✭ 45 (-26.23%)
Mutual labels:  teensy
Atreis
Stars: ✭ 48 (-21.31%)
Mutual labels:  keyboard
Jetchat
 Swift5.0编写的简仿微信聊天应用,完美支持表情键盘、单聊、群聊、本地消息会话缓存。
Stars: ✭ 61 (+0%)
Mutual labels:  keyboard
  • teensy-thumb-keyboard

    Handheld tactile switch keyboard for Teensy 3.2 compatible boards.

    • [[https://www.tindie.com/products/15575/][Teensy Thumb Keyboard - PCB only]] - Tindie product page and ordering
    • [[https://hackaday.io/project/162281-teensy-thumb-keyboard][hackaday.io page]] - more photos, info and project logs
    • [[https://www.thingiverse.com/thing:3209958][thingiverse 'HyperPixel 4 & Raspberry Pi 3 B+ Handheld' page]]

*** v1.1 Photo [[./images/v1.1_photo1.jpg]]

** Features

  • 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 [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/tree/master/firmware][firmware]] provided. Additional details in the [[https://hackaday.io/project/162281-teensy-thumb-keyboard/log/156138-example-firmware-posted][Example Firmware Posted project log]].
  • Layout is completely customizable in the firmware.
  • [[https://github.com/qmk/qmk_firmware][qmk_firmware]] should also work however, I don't have an example running yet.

Three possible mounting options

  1. Teensy on the front, mounted right-side up, with usb port facing north.
  2. Teensy on the back, mounted upside down, with usb port facing north or south.
  3. 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 [[https://www.pjrc.com/store/teensy32.html][Teensy 3.2]] or [[https://www.pjrc.com/store/teensylc.html][Teensy LC]]. A [[https://www.tindie.com/products/TleraCorp/butterfly-stm32l433-development-board/][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 [[https://www.digikey.com/products/en?keywords=EVQ-PAC04M][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.

** Ordering

  • [[https://www.tindie.com/products/15575/][Teensy Thumb Keyboard - PCB only]] Tindie product page
  • Ordering yourself from a PCB manufacturer:
    • https://oshpark.com instructions: upload the [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/blob/master/hardware/v1.1/teensythumbboard.kicad_pcb][kicad pcb file]] file.
    • https://jlcpcb.com/quote instructions: upload the [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/blob/master/hardware/v1.1/plots/gerbers.zip][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.

** Cases

  • Keyboard Faceplate [[https://a360.co/2QAJ0Qb][Fusion 360 Public Link]]
  • Raspberry Pi 3 B+ & HyperPixel4 Handheld [[https://a360.co/2QzHvla][Fusion 360 Public Link]]

** Firmware

  • The layout for USB keyboarding is defined in the usb_key_matrix variable in [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/blob/master/firmware/LayoutThumbKeyboard.h#L109][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_matrix variable in [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/blob/master/firmware/LayoutThumbKeyboard.h#L74][LayoutThumbKeyboard.h]]

  • There are three layers defined: base, shift, and Fn layers.

  • USB can be disabled by commenting out define USE_TEENSY_USB_KEYBOARD.

  • All the keyboardy goodness is handled by the keyboard_update(); function called from inside the standard Arduino loop().

  • 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.

*** Compiling on Windows machines

1. Using a Teensy 3.2 or Teensy LC follow these directions for downloading
   and installing the teensyduino add-on to the Arduino environment:
   https://www.pjrc.com/teensy/td_download.html

2. Once you have both installed. Launch the Arduino IDE and check what
   version of teensyduino is installed by going to *Help > About
   Arduino*. The about window for me shows *Arduino 1.8.9* in the upper left
   and *Teensyduino 1.46* in the upper right.

3. Download the code archive from:
   https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/archive/master.zip

4. Extract that folder and move the firmware folder to:
   ~C:\Users\anthony\Documents\Arduino\firmware~ Substitute "anthony" with
   your username.

5. Rename the ~firmware~ folder to ~teensy32_thumb_keyboard~

   The full path should be:
   ~C:\Users\anthony\Documents\Arduino\teensy32_thumb_keyboard~

   And these files should exist inside there:

   #+BEGIN_SRC text
     KeyboardMatrix.cpp
     KeyboardMatrix.h
     LayoutAppleM0110a.h
     LayoutCommon.h
     LayoutThumbKeyboard.h
     LinkedList.h
     teensy32_thumb_keyboard.ino
   #+END_SRC

6. Open
   ~C:\Users\anthony\Documents\Arduino\teensy32_thumb_keyboard\teensy32_thumb_keyboard.ino~
   in the arduino IDE.

7. In the *Tools* menu select *USB Type > Serial + Keyboard + Mouse + Joystick*

8. Click the verify or upload buttons in the toolbar. If compilation is
   successful you should see a message like:

   #+BEGIN_SRC text
     Sketch uses 27920 bytes (10%) of program storage space. Maximum is 262144 bytes.
     Global variables use 6680 bytes (10%) of dynamic memory, leaving 58856 bytes for local variables. Maximum is 65536 bytes.
   #+END_SRC

*** Uploading the firmware without compiling

If you don't wish to compile the firmware yourself you can use the
precompiled hex files provided in the [[https://github.com/AnthonyDiGirolamo/teensy-thumb-keyboard/tree/master/firmware-compiled][firmware-compiled]] folder.

To get them loaded on a Teensy 3.2 or LC download and install the
[[https://www.pjrc.com/teensy/loader.html][Teensy Loader Application]] once installed plug in your teensy board and load
the correct firmware file:

- [[https://www.pjrc.com/store/teensy32.html][Teensy 3.2]]: ~teensy32_thumb_keyboard.ino-teensy32.hex~
- [[https://www.pjrc.com/store/teensylc.html][Teensy LC]]: ~teensy32_thumb_keyboard.ino-teensyLC.hex~

** Alternate Versions

  • [[https://github.com/AnthonyDiGirolamo/i2c-thumb-keyboard][i2c-thumb-keyboard]]
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].