Skip to content

Conversation

@BorisTestov
Copy link

Description

Comprehensive library for hall effect keyboard configuration and calibration.

Features:

  • Per-key actuation points
  • Per-key rapid trigger
  • SOCD modes
  • Snap click
  • Toggle mode
  • Game controller mapping
  • Dynamic keystrokes
  • HE profile switching
  • Calibration

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

@BorisTestov
Copy link
Author

@lokher Hi, can you please review? I believe this may be useful to others

@gibs2193
Copy link

gibs2193 commented Nov 17, 2025

@BorisTestov Your utilities file inspired me to build a custom HID file for the analog functions. They work in parallel with VIA, and I use a python script to set everything up from terminal. Also added a few more functions that I thought might be useful.

https://github.com/gibs2193/qmk_firmware/blob/10bit_mod/keyboards/lemokey/common/analog_hid.c
https://github.com/gibs2193/qmk_firmware/blob/10bit_mod/keyboards/lemokey/common/analog_hid.h
https://github.com/gibs2193/qmk_firmware/blob/10bit_mod/keyboards/lemokey/p1_he/lmk.py

I patched lemokey_raw_hid.c so I can add a custom prefix for all my commands:
https://github.com/gibs2193/qmk_firmware/blob/10bit_mod/keyboards/lemokey/common/lemokey_raw_hid.c

The only "downside" is that the HID file is adapted for my build, I changed to 10bit resolution so actuation points are 0-1023 now, instead of 0-40, including curve points.

@BorisTestov
Copy link
Author

@gibs2193
Wow, that's so impressive! This is really useful, because in my keymap I can only debug through HID due to not having enough USB endpoints. Each time I have to write a custom HID listener, which is very inconvenient. It'll be much easier to adapt and reuse your code locally instead. I hope @lokher will be able to merge you PR soon.

@gibs2193
Copy link

I was able to have both qmk debug and joystick on, but not with XINPUT. In my case moving XINPUT to 10 bit resolution was simpler after doing the joystick input, so never needed to have both debug and XINPUT on at the same time.

@DarkRoku12
Copy link

Can mod-tap/tap dance be implemented?

@BorisTestov
Copy link
Author

@DarkRoku12 Sorry, can you elaborate? tap dance and mod tap are already part of qmk and is available for keychron keyboards. I personally use tap dance in my keymap

Example usage:

// Tapdance enum
enum {
    TD_ESC_CAPS = 0,  // Tap once for ESC, twice for CAPS LOCK
};

// Tapdance actions array
tap_dance_action_t tap_dance_actions[] = {
    [TD_ESC_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_ESC, KC_CAPS),
};

// Inside your keymap
// TD - tapdance, LCTL_T - modtap shortcut, Left Control when held, kc when tapped
[LAYER_1] = LAYOUT_ansi_68(
TD(TD_ESC_CAPS), LCTL_T(KC_CAPS), ...
)

Fot tapdance, you also need to enable TAP_DANCE_ENABLE = yes in rules.mk, as described here

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.

3 participants