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.