Skip to content

I0x0I/DIY-A-BLE-Keyboard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DIY A BLE Keyboard

Introduction

This is a simple open source BLE keyboard firmware for the nRF51 bluetooth chip.

How to use

  • Follow the tutorials to set up development environment and test the chip.
  • Download the nRF51 SDK and the S110 SoftDevice . In this case the nRF51 SDK v9.0 and a 51822 module with S110 v8 are used.
  • Find the ble_app_hids_keyboard floder in the SDK, put the .c files in this project in the root directory and the .h files in the config floder
  • If you want to use the nRF51 chip as both a keyboard controller and a BLE controller, you need to connect the keyboard matrix to it. After doing that, set variables of your keyboard in keyboard_map.h and compile the project. After flashing, you should be able to find a Nrodic Keyboard device and that is your BLE keyboard. The lookup matrix uses HID key code defined in USB HID Usage Codes or USB HID to PS/2 Scan Code Translation Table
  • If you only want to use the nRF51 chip as a BLE controller, beside setting the variables, you would need to write some code for the nRF51 to communicate with the keyboard controller, examples can be find in the SDK and more detail information is in here

How does it work

These codes originated from the hid_keyboard example and the cherry example, a timer is setted to scan the keyboard every 25ms. If there are key presses, it will create a report packet in HID keyboard format and send it to the host, when all keys are released, a packet filled with 0 will be sent. If a key is hold, no packet will be sent until it's release, the host can recongnize that the key is holding as it does not recive a released packet (full 0). Doing so is also power saving as there's no need to send packet continously when keys are holded, know more about the HID keyboard packet format in Device Class Definition for Human Interface Devices (HID) and HID Usage Table. Codes on the battery service has been removed and the whole frame work has been simplified.

Future work

  • Add support to the sleep mode
  • Add support to touchpad

About

A guide on how to build a BLE keyboard

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages