New features and improvements
-
Indicator fade animation: The indicator fades in and out when it appears or disappears, instead of popping abruptly. Enabled by default with a 100ms duration.
normal-mode.indicator.fade-animation-enabled=true normal-mode.indicator.fade-animation-duration-millis=100
-
Hint fade animation: Hints fade in when they first appear and out when they disappear. Enabled by default with a 100ms duration.
hint-mode.hint.fade-animation-enabled=true hint-mode.hint.fade-animation-duration-millis=100
-
Mutation cascade for indicator and hint styling: When a mutation changes a base font or indicator property, the related properties are automatically updated as well. For example, mutating
hint.font-coloralso mutatesselected-font-color,focused-font-color, and the prefix variants. Mutatingindicator.idle.coloralso mutates themove,wheel, andmouse-pressstates. Properties explicitly set in the configuration are not overwritten. -
Hint grid column count now works correctly with a single row (previously threw an exception in some configurations).
-
UI hint mode now skips thread-shared sibling windows that aren't on a monitor the focused window touches. Owned popups, dropdowns, and dialogs are still included regardless of monitor.
-
--versioncommand line flag: Prints the version and commit id, then exits.> mousemaster.exe --version mousemaster v88 (abc1234) -
The build commit id is now logged at startup, making it easier to identify which build is running.
-
Variable combo preconditions (experimental feature): Variables are boolean flags that persist across mode switches, settable from combos and usable as combo preconditions. This is a step up from key-based mode property mutations (introduced in v87), since a variable stays set until you clear it; surviving key releases.
Variables are set, unset, or cleared with three new properties:
mode.set-variable.iszoom=combo set iszoom when combo matches mode.unset-variable.iszoom=combo unset iszoom when combo matches mode.clear-variables=combo unset all variables
Variables are referenced in combo preconditions with the same
_{}syntax as keys:# Toggle iszoom on/off with z, change zoom percent and hint cell size based on it hint-mode.set-variable.iszoom=_{!iszoom} +z hint-mode.unset-variable.iszoom=_{iszoom} +z hint-mode.zoom.percent=1 | _{iszoom} -> 30 hint-mode.hint.grid-cell-width=10 | _{iszoom} -> 320 hint-mode.hint.grid-cell-height=6 | _{iszoom} -> 180
In the author configuration, variables are now used to model click-after-hint behavior, slow/zoom toggles, and the "no move" toggle, replacing several single-purpose modes that previously existed only to carry a flag.
See documentation: https://github.com/petoncle/mousemaster/blob/main/configuration/combo-reference.md#variables
Installation
- Download mousemaster.exe (a portable executable).
- Download one of the existing configuration files:
- neo-mousekeys-ijkl.properties (recommended): an IJKL configuration (see documentation)
- neo-mousekeys-wasd.properties: a WASD configuration (see documentation)
- warpd.properties: an HKJL configuration (see documentation)
- mouseable.properties: another HKJL configuration (see documentation)
- author.properties: an IJKL configuration designed to control everything with the right hand only (see documentation)
- Place the executable and the configuration file in the same directory.
- Rename the configuration file to mousemaster.properties.
- Run mousemaster.exe: make sure to run it as administrator if you want the mousemaster overlay to be displayed on top of everything else.
- Feel free to open a GitHub Issue or join the Discord if you need help creating your own configuration. If you have ideas for a better configuration that you would like to share, I'd love to hear from you.
- If you enjoy mousemaster, consider making a donation or stop by the Discord to show your support!