Releases: UltimateHackingKeyboard/firmware
10.6.0
Device Protocol: 4.10.0 | Module Protocol: 4.3.0 | User Config: 6.0.0 | Hardware Config: 1.0.0 | Smart Macros: 2.3.0
- Set trackpoint drift reset period to 1s, resulting in quicker auto-recovery.
- Don't change the test keymap when it's active upon module reconnection.
10.5.0
Device Protocol: 4.10.0 | Module Protocol: 4.3.0 | User Config: 6.0.0 | Hardware Config: 1.0.0 | Smart Macros: 2.3.0
- Automatically recover from trackpoint drifts after a couple of seconds. This initial implementation may use some fine-tuning, so we welcome feedback.
- Fix
final {
command.SMARTMACROS:PATCH
- Fix
ifDoubletap
command to not miss doubletap if another macro fit in between the two activations.SMARTMACROS:PATCH
- Add
ifModuleConnected
condition.SMARTMACROS:MINOR
- Return deprecation errors for removed functionality.
SMARTMACROS:PATCH
- Make the smart macro documentation insert
invertScrollDirectionY
instead ofinvertScrollDirection
.
10.4.0
Device Protocol: 4.10.0 | Module Protocol: 4.3.0 | User Config: 6.0.0 | Hardware Config: 1.0.0 | Smart Macros: 2.2.0
- Implement touchpad hold continuation timeout via
set module.touchpad.holdContinuationTimeout <0-65535>
(milliseconds). If non-zero, the touchpad module allows the release of finger for the specified amount of time during drag-and-drop without the left click getting released.SMARTMACROS:MINOR
- Blink adaptive mode (triangle) LED display icon when recording runtime macros.
SMARTMACROS:PATCH
- Fix
repeatFor
-related macro validation error.SMARTMACROS:PATCH
- Fix
"$($keyId.*)"
parsing.SMARTMACROS:PATCH
- Clear sticky modifiers when navigation mode is active.
- Improve macro guide documentation and add examples.
10.3.1
10.3.0
Device Protocol: 4.10.0 | Module Protocol: 4.3.0 | User Config: 6.0.0 | Hardware Config: 1.0.0 | Smart Macros: 2.1.0
- Implement macro scopes via curly brackets.
SMARTMACROS:MINOR
- Implement
while
macro command.SMARTMACROS:MINOR
- Implement
else
macro condition.SMARTMACROS:MINOR
- Implement
exit
macro command.SMARTMACROS:MINOR
- Implement
oneShot
macro command timeout.SMARTMACROS:MINOR
- Report macro line position in errors.
SMARTMACROS:MINOR
- Don't throw "unprocessed input" macro error as consequence of another error.
SMARTMACROS:PATCH
- Fix redundant "unprocessed input" warning after
if BOOLEAN
condition.SMARTMACROS:PATCH
- Fix
oneShot
macro command timeout in combination with commands that sleep until release.SMARTMACROS:PATCH
10.2.0
Device Protocol: 4.10.0 | Module Protocol: 4.3.0 | User Config: 6.0.0 | Hardware Config: 1.0.0 | Smart Macros: 2.0.0
- Introduce named, dynamically typed variables via the
setVar
command and$
syntax. For example:setVar myDelay 50
andset doubletapDelay $myDelay
- Introduce expression parser that allows in-line arithmetics, including
+
,-
,*
,/
,%
,min(...)
,max(...)
and boolean conditions, including<
,<=
,>
,>=
,==
,!=
,!
,&&
,||
. For example:ifShift set leds.brightness ($leds.brightness * 1.5 + 0.01)
andifNotShift set leds.brightness ($leds.brightness / 1.5)
- Introduce
if (EXPRESSION)
command. For example:if ($a < 2 || $a > 4) tapKey a
- Introduce string parser. Strings must be enclosed in double or single quotes. Double-quote strings support variable expansion and
\
escapes. For example:write "Current keystrokeDelay is $keystrokeDelay. One plus one is $(1 + 1).\n"
andwrite 'This is literal "$" character. And here you have an apostrophe '"'"'.'
- Introduce key id parser. As a result,
ifGesture
,ifShortcut
, and some other commands now accept key id abbreviations. For example:ifShortcut a b holdLayer fn
- Make
setLedTxt
accept numeric expressions. For example:setLedTxt 500 $keystrokeDelay
- Configuration values now can be retrieved using the
$<name>
syntax, just as variables. For example:set leds.brightness ($leds.brightness * 1.5 + 0.01)
- Deprecated
#
,%
, and@
syntaxes. - Deprecated registers, including the
ifRegEq
,ifNotRegEq
,ifRegGt
,ifRegLt
,setReg
,addReg
,subReg
,mulReg
commands. - Deprecate
#
comments in favor of the//
comment syntax. - Deprecated
writeExpr
andsetStatusPart
commands. - Implement
set autoShiftDelay <time in ms (NUMBER)>
. If nonzero, the autoshift feature is turned on. This adds shift to a scancode when the key is held for at leastautoShiftDelay
ms. For example, tapping 'a' results in 'a', pressing 'a' for a little bit longer results in 'A'.SMARTMACROS:MINOR
- Limit
set
command values, preventing invalid values.SMARTMACROS:PATCH
- Expose the status buffer via the UsbCommand_GetVariable:UsbVariable_StatusBuffer USB command.
DEVICEPROTOCOL:MINOR
- Unify layer switching implementations, so macro commands behave like native layer switcher actions.
SMARTMACROS:PATCH
- Expose the current keymap via the GetDeviceState USB command.
- Fix some initialization-related bugs.
DEVICEPROTOCOL:MINOR
- Implement firmware MD5 checksums to make firmware udpates faster and more reliable.
DEVICEPROTOCOL:MINOR
MODULEPROTOCOL:MINOR
- Add
untoggleLayer
alias for theunToggleLayer
macro command. - Switch error logs to line numbers and fix trailing newlines.
SMARTMACROS:PATCH
- Validate all macros when the configuration is updated.
SMARTMACROS:PATCH
- Always update LEDs according to
leds.fadeTimeout
.SMARTMACROS:PATCH
- Alternate between segment display texts when there is more than one thing to show, such as ERR, WRN, or the name of the current keymap.
- Fix the behavior of the advanced secondary role strategy when rolling over multiple secondary role keys. Latter keys tended to produce false secondary role.
10.1.0
Device Protocol: 4.9.0 | Module Protocol: 4.2.0 | User Config: 6.0.0 | Hardware Config: 1.0.0 | Smart Macros: 1.4.0
- Fix
oneShot
macro command for the proper composition of modifiers.SMARTMACROS:PATCH
- Fix
ifPrimary
andifSecondary
macro commands, which were not functional after reconnection onto the default secondary role mechanism.SMARTMACROS:PATCH
- Fix the navigation mode of modifier layers to always correspond to the base layer.
- Make non-keypress actions in modifier layers not receive the relevant modifier.
- Add
overlayKeymap
,overlayLayer
, andreplaceLayer
macro commands.SMARTMACROS:MINOR
- Add
module.MODULEID.{invertScrollDirectionX,invertScrollDirectionY}
macro variables. Usemodule.MODULEID.invertScrollDirectionY
instead of the now deprecatedmodule.MODULEID.invertScrollDirection
.SMARTMACROS:MINOR
- Add
$onCapsLockStateChange
,$onNumLockStateChange
, and$onScrollLockStateChange
macro events. Scroll Lock only works as expected on Windows.SMARTMACROS:MINOR
- Add
ifCapsLockOn
,ifNotCapsLockOn
,ifScrollLockOn
,ifNotScrollLockOn
,ifNumLockOn
,ifNotNumLockOn
conditional macro commands. Scroll Lock only works as expected on Windows.SMARTMACROS:MINOR
- Add
set backlight.keyRgb.LAYERID.KEYID
macro command.SMARTMACROS:MINOR
- Add Artificial delay between touchpad presses and releases, fixing doubletap-to-select-word for systems that ignore sub-20ms mouse button releases.
- Any module pointer action now triggers secondary roles.
- Make module states not oscillate temporarily upon module attachment/detachment.
10.0.0
Device Protocol: 4.9.0 | Module Protocol: 4.2.0 | User Config: 6.0.0 | Hardware Config: 1.0.0 | Smart Macros: 1.3.0
- Add backlighting mode, per-key RGB values, functional backlighting color values, and LED fade timeout to the user configuration.
USERCONFIG:MAJOR
- Add
oneShot
smart macro command.SMARTMACROS:MINOR
- Add advanced secondary role resolution strategy via
secondaryRole.*
smart macro variables.SMARTMACROS:MINOR
- Fix simple secondary role resolution when chording swaps releases.
- Fix macro-activated sticky modifiers.
Smart macro migration guide:
ifPrimary
andifSecondary
commands have been connected to thesimple
secondary role resolution strategy. Please migrateifPrimary
toifPrimary advancedStrategy
andifSecondary
toifSecondary advancedStrategy
in your macro commands.resolveSecondary
is kept for backward compatibility without changes. We strongly advise to avoid it.
9.3.0
Device Protocol: 4.9.0 | Module Protocol: 4.2.0 | User Config: 5.1.0 | Hardware Config: 1.0.0 | Smart Macros: 1.2.0
- Send empty report after every write command, fixing the bug that resulted in 'onewo' when encountering consecutive 'one', 'two' write commands.
SMARTMACROS:PATCH
- Disallow navigation modes in modifier layers.
SMARTMACROS:MINOR
- Switch leds.fadeTimeout value from minutes to seconds.
SMARTMACROS:MINOR
- Add onLayerChange and onKeymapLayerChange macro events.
SMARTMACROS:MINOR
- Add prepend activateKeyPostponed option.
SMARTMACROS:MINOR