github UltimateHackingKeyboard/firmware v16.2.0
16.2.0

5 hours ago

Device Protocol: 4.17.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 13.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.13.0

General:

  • Fix: UHK 60 I2C scheduling caused various issues with modules and left half during 16.1.0 and 16.1.1.
  • Fix: BLE reliability: always exchange MTU right after the connection is established.
  • Fix: Macro key release detection that caused subtle timing bugs with advanced macros.
  • Use a fixed keymap for the BLE pairing PIN flow.

Macro behaviors:

  • Validate all macros in general context. In 16.1.x, unmapped macros weren't validated. SMARTMACROS:PATCH
  • Lower default ifGesture timeout to 500ms. SMARTMACROS:MINOR
  • Add notify command. SMARTMACROS:MINOR
  • Global doubletap detection:
    • Doubletaps are now detected globally at the beginning of keypress lifecycle. Separate secondaryRole.advanced.doubletapTime has been deprecated. SMARTMACROS:MINOR
    • Macros will now remember and reuse secondary role resolutions for the rest of their runtime, regardless of key events
    • Fix: secondary role could incorrectly trigger doubletaps
    • Fix: macros could incorrectly trigger doubletaps
  • Secondary Role keys (HRM):
    • Added secondaryRole.advanced.timeoutType { active | passive } option to postpone timeout action until release. SMARTMACROS:MINOR
    • Made Trigger by mouse subject to minimum hold time to prevent vibration on key press from triggering secondary role when using a trackball module. SMARTMACROS:PATCH
    • Made Trigger by mouse reliably trigger secondary role immediately. SMARTMACROS:PATCH
    • Fixed a number of edge cases related to safety margin where secondary role keys would not trigger in a timely manner. SMARTMACROS:PATCH

Minor changes and refactors:

  • Improve macro performance: use GNU perfect hashing for main macro switch.
  • Refactor USB logging backend.
  • Refactor event scheduler to use binary heap.
  • Improve status buffer rolling.
  • Fix shell initialization: logging levels and sometimes entire shell initialization would fail due to timing and thread priority issues.
  • Lower some compiled-in logging levels, but set them manually to higher levels by default.
  • Fix setting Zephyr log levels via zephyr log enable inf Bt.

Don't miss a new firmware release

NewReleases is sending notifications on new releases.