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
ifGesturetimeout to 500ms.SMARTMACROS:MINOR - Add
notifycommand.SMARTMACROS:MINOR - Global doubletap detection:
- Doubletaps are now detected globally at the beginning of keypress lifecycle. Separate
secondaryRole.advanced.doubletapTimehas 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
- Doubletaps are now detected globally at the beginning of keypress lifecycle. Separate
- 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
- Added
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.