esphome / esphome/feature-requests

Add support for BLE HID keyboard

Open
#1,450 4 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

component: ble_client
Dominant language
No language data
Stars
450
Forks
29
PR merge metrics
No merged PRs in 30d

Description

**Describe the problem you have/What new integration you would like**

Implement a BLE HID Keyboard to send keystrokes to connected tablets or smartphones.

**Please describe your use case for this integration and alternatives you've tried:**

Use-case: Wall-mounted iPad which is used as a smart home (status) display which is supposed to be woken up by sending for example ESC key to wake it up from sleep. OR: control the global screenbrightness by sending keystrokes via BLE HID keyboard.
All this is not really possible from an app itself as iOS does not support this easily.

I have already done this with my quick and dirty Arduino sketch using an ESP32 and my iPad. It is working as expected, but I would like to see this in ESPHome too.

**Additional context**

Basically most of this code could be used: https://github.com/olegos76/nimble_kbdhid_example
It also works with the older ESP-IDF 3.3.4.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reviewing the linked nimble_kbdhid_example and the existing Arduino sketch described in the issue, including its ESP-IDF 3.3.4 compatibility. Determine where ESPHome handles ESP32 Bluetooth integrations. Done means a configured BLE HID keyboard can send keystrokes such as ESC to connected tablets or smartphones.

Written by the indexing model from the issue text.

Assessment

Tech stack
arduino
Domain
embedded-iot
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
28/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.