Skip to content

Releases: UltimateHackingKeyboard/firmware

17.0.0

29 Apr 16:34
353b7c3

Choose a tag to compare

17.0.0 Pre-release
Pre-release

Device Protocol: 4.18.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 14.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.13.2

  • Move new Typing Behavior configurations into the native UserConfig section. USERCONFIG:MAJOR
  • Schedule usb report dispatch - lowers bluetooth latency.
  • Implement module-flashing for uhk80. (Agent support is yet needed.) DEVICEPROTOCOL:MINOR
  • Don't report battery levels over bluetooth when the keyboard is sleeping. It tends to wake up MacOs hosts.
  • Fix module unbricking procedure for modules listening on the default address. (Agent support is yet needed.)
  • Fix sticky key integration with macros - macros would break sticky key sequences by a brief release before first macro command is executed. SMARTMACROS:PATCH
  • Fix stuck layer hold when replaceLayer is triggered from macro after layer release. SMARTMACROS:PATCH

16.3.0

14 Apr 14:46

Choose a tag to compare

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

Features:

  • Second tap on a host switch action cancels it.

Fixes and maintenance:

  • Refactor: port uhk60 onto c2usb in order to increase codebase maintainability.
  • Refactor: rewrite usb stack integration.
  • Fix: rework usb-report send failure handling.
  • Fix: increase bluetooth reliability - bluetooth hid interfaces should no longer stop functioning randomly.
  • Fix: implement workaround for slow scrolling on microsoft hosts.
  • Fix: preprocess input during usb report send retries.
  • Fix: don't accumulate mouse coordinates during usb report send retries to prevent cursor jumps.

16.2.1

09 Apr 12:57

Choose a tag to compare

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

General:

  • Implement new zephyr backends for shell and logging.
  • Refactor doubletap handling.

Macro fixes:

  • Fix backlight update after overlayLayer, overlayKeymap, replaceLayer, replaceKeymap commands. SMARTMACROS:PATCH
  • Fix macro crashes (main thread stack overflows) on too deeply nested expressions. SMARTMACROS:PATCH
  • Fix a 16.2.0 macro parser benevolence: e.g., parser wouldn't accept if( due to missing space. SMARTMACROS:PATCH
  • Fix some key release scenarios in postponed nested local scopes. SMARTMACROS:PATCH

16.2.0

18 Feb 11:16

Choose a tag to compare

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.

16.1.1

22 Jan 19:01

Choose a tag to compare

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

  • Fix: fix Bluetooth issues caused by returning bad disconnect reasons: failing OOB pairing, connected but otherwise unhandled connections.
  • Fix: when the same dongle is switched to multiple times, it now remains green instead of turning blue.
  • Fix: exempt pairing scenarios from exponential advertising delay backoff.
  • Fix: adjust the advertising exponential backoff.
  • Fix: make sure that the dongle doesn't cause the pairing screen to pop up.
  • Make it possible to gather logs from a disconnected UHK:
    • zephyr uhk logs 1 now allows turning on the log buffer from a macro.
    • zephyr uhk snaplog allows dumping the log into the status buffer and later retrieval from Agent.
    • when logging is enabled via the logs variable, logs are also shown on the OLED display.

16.1.0

16 Jan 12:30

Choose a tag to compare

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

  • Fix: make Bluetooth no longer reconnect during pairing.
  • Fix: when using overlayLayer, the first empty action after any nonempty action would be overwritten. (In a sequence of at least two empty actions.) SMARTMACROS:PATCH
  • Fix: restart advertising when switch host selection ceases to be relevant.
  • Fix: change Bluetooth disconnect reasons.
  • Wake shortly when a key is tapped in light sleep mode.
  • Log remote wakeup error codes onto the OLED display.
  • Refactor UART and implement UART module support. (This should have no impacts.)
  • Make the UHK Bluetooth functionality not rely on Agent:
    • Assign newly paired Bluetooth connections into regular host slots.
    • Don't unpair unknown devices upon config saves.
    • Show Bluetooth relevant events on the OLED screen. ("Pairing...", "Slot freed", "Slot unassigned"...)
    • If native switch host action is held for 3 seconds, unpair the connection and free its slot for other devices.
    • Add the unpairHost macro command. SMARTMACROS:MINOR
    • For unpairHost and switchHost, allow numeric slot ids. SMARTMACROS:MINOR
  • Macro string support:
    • Add STRING variable type and comparison operators. SMARTMACROS:MINOR
    • Add $uhk.name virtual variable. SMARTMACROS:MINOR
  • Macro templates:
    • Distinguish &macroArg.1 and $macroArg.1 expansions SMARTMACROS:MINOR
    • Validate all macros in the context of their binding sites. SMARTMACROS:PATCH
  • Bluetooth behavior:
    • Reset host selection after 15 seconds if not successful.
    • Implement exponential backoff for Bluetooth when hosts try to connect aggresively.
  • Homerow mods (HRM) changes: Added a number of options to secondary role keys, mainly focused on adding options to reduce false positive activations of the secondary roles, making them more viable for HRM usage:
    • Added secondaryRole.advanced.acceptTriggersFromSameHalf option and its inline ignoreTriggersFromSameHalf | acceptTriggersFromSameHalf overrides to allow Secondary Role Keys to ignore triggers from their own keyboard half. This reduces false secondary triggers on key rolls as well as allows multi-mod combos at all when using Trigger on press. SMARTMACROS:MINOR
    • Added a secondaryRole.advanced.minimumHoldTime <ms, 0-255 (INT)> option. This is the minimum hold time of a key that is required to trigger its secondary role. SMARTMACROS:MINOR
    • Added a secondaryRole.advanced.timeoutAction none setting. SMARTMACROS:MINOR
    • Moved the Double tap primary activation to timeout to allow the secondary role key to be used for its primary role and then secondary role in quick succession SMARTMACROS:PATCH
    • Refactor secondaryRole.advanced.triggerByPress and triggerByRelease to secondaryRole.advanced.triggeringEvent { press | release | none } SMARTMACROS:MINOR

16.0.0

24 Dec 21:32

Choose a tag to compare

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

New Features:

  • Implement macro templates. USERCONFIG:MINOR
    • Macros can now be parameterized via $macroArg.0.
    • Reimplement argument handling in config parser. Change key counting logic compared to original macro template implementation.
    • Refactor macro validation to evaluate on per-key basis, including template expansion.
    • Refactor error reporting to report the template expansion stack.
    • Implement altCodeOf, uCodeOf, decCodeOf and hexCodeOf template expansions that can be used for generic unicode sequences. E.g., tapKeySeq altCodeOf(😊). SMARTMACROS:MINOR
  • Add UserConfig version fields to track failed migrations. USERCONFIG: MAJOR

Fixes, maintenance:

  • Eliminate minute delay of the OLED charging indicator, e.g., when rapidly reconnecting USB power.
  • Prevent large jumps of the battery capacity detection algorithm.
  • Change behavior regarding UHK 60 reset button "crashes":
    • Revert 15.3.1 changes and let the keyboard reboot silently.
    • Implement GPIO leakage test. (Please join #1380 if you are affected.)

Misc:

  • Refactor PS/2 trackpoint driver.
  • Improve debug mode icons.

15.3.1

16 Nov 19:18

Choose a tag to compare

Device Protocol: 4.17.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 12.0.1 | Hardware Config: 1.0.0 | Smart Macros: 3.10.0

  • Detect spurious reset button activations with UHK 60 and fix the consequent false crash log activations.

15.3.0

04 Nov 13:12

Choose a tag to compare

Device Protocol: 4.17.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 12.0.1 | Hardware Config: 1.0.0 | Smart Macros: 3.10.0

Bug fixes:

  • Fix secondary role unblock mouse bug.
  • Fix UHK 60 backlight sleep mode when connected to an USB HID-disabled power source. Implement UHK 60 USB-report-send fail timeout, at 128ms.
  • Fix stuck layer when switching keymaps. (When a held switch is not mapped in the new keymap while switching keymap.)
  • Fix UHK 60 lock/unlock blinking when waking it up with the S+F and J+L keys together.
  • Fix macro freezes when ifShortcut or ifPrimary was used with braces. SMARTMACROS:PATCH

New features:

  • Add runtime macro recording indicator for the UHK 80.
  • Add preliminary support for macro templates. (Key labels, parametrizable macros, Alt code expansion. Needs Agent support.) USERCONFIG:MINOR
  • Add set simulateLowResScrolling BOOL macro command for compatibility with some applications. SMARTMACROS:MINOR
  • Increase effective length of runtime macros by employing better serialization strategy, to 512 keystrokes per runtime macro, and 1024 total.
  • Extend UHK 60 crash logging.

Power improvements:

  • Make the key cluster module shut down the LED controller when not in use.
  • Make the UHK 80 shut down the LED controllers when not in use.

Misc:

  • Implement dynamic pin control for UART.

15.2.0

22 Sep 22:07

Choose a tag to compare

Device Protocol: 4.17.0 | Module Protocol: 4.3.0 | Dongle Protocol: 1.0.2 | User Config: 12.0.0 | Hardware Config: 1.0.0 | Smart Macros: 3.9.0

  • Fix BLE pairing with Linux.
  • Always switch to newly paired BLE connections.
  • Suppress S, F and J, L scancodes for some time after sleep mode unlock.
  • Log suspicious conditions and crashes only when the devMode macro variable is enabled. SMARTMACROS:MINOR
  • Add the replaceKeymap command, and the current KEYID alias. SMARTMACROS:MINOR
  • Fix the setLedTxt dry run mode, which occasionally acted as a delay. SMARTMACROS:PATCH
  • Make while macro command yield after every iteration. SMARTMACROS:PATCH
  • Fix scope state reset and some control flow scenarios. SMARTMACROS:PATCH
  • Add a device protocol variable to disable firmware checksum check during firmware updates. DEVICEPROTOCOL:MINOR
  • Add command to read OLED content. DEVICEPROTOCOL:MINOR