The Adafruit BLE HID library for CircuitPython makes it easy to send keyboard commands and keystrokes wirelessly over Bluetooth LE to mobile devices and BLE equipped computers!

This means you can use buttons or switches to remotely send any keystroke, including key modifiers such as 'shift' and 'control', and even words or sentences.

To build the BLE keyswitch, we'll use the Feather nRF52840, five wired push-button breakouts, and a screw terminal block breakout FeatherWing.

The push-button breakouts used in this project have built-in pull-up resistors. If you do not use these breakouts, you'll need to uncomment statements in the code to turn on internal pull-ups for the buttons.

These button break-out boards are very convenient -- of course you can use any momentary switch you like. Also, these are designed to be snapped off into separate buttons, and even have mounting holes for attachment, but I decided to keep them connected for this project.

Plug the STEMMA wire connectors into each board, and then screw the white wires into these pins 5, 6, 9, 10 & 11 on the Feather terminal breakout board (or on a breadboard or directly to the Feather, if that's how you roll).

The button breakout boards each have a ground wire that needs to be tied to the Feather ground. I chose to do so with Wago connectors as shown here, with a sixth length of wire running back to the Feather.

I did the same with the red V+ wires, although this is totally optional. This allows you to use the built in pull-up resistors on the board.

Lastly, plug the Feather onto the terminal breakout FeatherWing.

One possible use for such a keypad is to replicate this "keyset" idea as explored in this article.

A “keyset.” Courtesy of SRI International and the Doug Engelbart Institute from

Next, we'll put CircuitPython on the Feather nRF52840, as well as libraries and code.

This guide was first published on Jan 22, 2020. It was last updated on May 18, 2024.

This page (BLE Keyboard Buttons) was last updated on Mar 08, 2024.

Text editor powered by tinymce.