Skip to content

Add K10 HE battery report over raw HID - #477

Open
OutersGIT wants to merge 1 commit into
Keychron:2025q3from
OutersGIT:k10he-battery-raw-hid
Open

Add K10 HE battery report over raw HID#477
OutersGIT wants to merge 1 commit into
Keychron:2025q3from
OutersGIT:k10he-battery-raw-hid

Conversation

@OutersGIT

Copy link
Copy Markdown

Description

This PR adds a raw HID battery report for the Keychron K10 HE.

It introduces KC_GET_BATTERY = 0xA4, returning battery percentage, voltage, charging state, active transport, and a keyboard model id.

For USB cable mode, the host can request the report directly. For 2.4 GHz mode, the keyboard periodically pushes the report because the dongle does not appear to bridge host-to-keyboard raw HID requests.

Cable mode also keeps polling the battery voltage while USB is connected, so host reads return fresh battery data instead of the last wireless snapshot.

The change is intentionally limited to the K10 HE.

Build tested:

  • make keychron/k10_he/iso:all
  • make keychron/k10_he/ansi:all

Hardware tested:

  • Keychron K10 HE ISO
  • USB cable mode: battery report read by host
  • 2.4 GHz dongle mode: battery report received via keyboard push

Types of Changes

  • Core
  • Bugfix
  • New feature
  • Enhancement/optimization
  • Keyboard (addition or update)
  • Keymap/layout (addition or update)
  • Documentation

Issues Fixed or Closed by This PR

Checklist

  • My code follows the code style of this project: C, Python
  • I have read the PR Checklist document and have made the appropriate changes.
  • My change requires a change to the documentation.
  • I have updated the documentation accordingly.
  • I have read the CONTRIBUTING document.
  • I have added tests to cover my changes.
  • I have tested the changes and verified that they work and don't break anything (as well as I can manage).

@github-actions

Copy link
Copy Markdown

Thank you for your contribution!
This pull request has been automatically marked as stale because it has not had activity in the last 45 days. It will be closed in 30 days if no further activity occurs. Please feel free to give a status update now, or re-open when it's ready.
For maintainers: Please label with bug, awaiting review, breaking_change, in progress, or on hold to prevent the issue from being re-flagged.

@github-actions github-actions Bot added the stale label Jul 30, 2026
@OutersGIT

Copy link
Copy Markdown
Author

Commenting this PR just because it's actually still ready for review - but untouched and unassigned at this moment.

The change is intentionally limited to the K10 HE and has been build-tested with:

  • make keychron/k10_he/iso:all
  • make keychron/k10_he/ansi:all

It has also been hardware-tested on a K10 HE ISO in USB cable mode and 2.4 GHz dongle mode - as pointed out before.

Happy to adjust the implementation if maintainers prefer a different raw HID command layout or a more general model-id scheme for other Keychron wireless boards.

I hope there's no issue with it!

@github-actions github-actions Bot removed the stale label Jul 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant