github cymian/mouseless v1.1.0-preview.1

pre-release3 hours ago

This release has important fixes on every platform, adds label mode, custom actions, and a revamped settings window with a dark theme, and translates defaults and presets to non-QWERTY layouts.

Feedback always appreciated! (Mac Windows Linux)

Cheat sheet: To see new features/defaults in action quickly on an existing config, right-click these settings, then Restore default:

  • New features:
    • Keymap > Toggle label mode (beta)
    • Style > Char background color
  • New defaults
    • Style > Font: Jost (default)
    • Behavior > Free mode auto off (seconds): 0 (disabled, was 10)
    • (On Wayland) Behavior > Initial overlay monitor: with_mouse

An upcoming release will streamline this process in-app.

Linux: How to switch from stable to preview Flatpak
flatpak remote-add --user --if-not-exists sonuscape https://dl.sonuscape.net/flatpak/sonuscape.flatpakrepo
flatpak install --user net.sonuscape.mouseless//preview
flatpak make-current --user net.sonuscape.mouseless preview

To go back: flatpak make-current --user net.sonuscape.mouseless stable. 1.0 then shows "Recovered config file with some default values" at each start, since it doesn't know 1.1's subgrid settings.

Enhancements

App window

  • Revamped UI, integrated app window
    • Settings categories now have separate pages
    • App window theme on the General page: system, light, or dark
    • cmd+F / ctrl+F search works across pages
  • Import/Export config now available on Linux and Windows (from kebab menu at bottom of settings window, already present on Mac)

Custom actions

Custom actions allow you to trigger arbitrary settings changes via hotkey.

Currently there are three types:

  • set value: sets the setting to one value
  • cycle value: steps through a list of values; Cycle mode: wrap, reflect, or stop
  • adjust number: creates an increase/decrease pair of actions; when invoked, the value moves by Step and clamps to Min and Max
    • a reset action is also created when Reset value is set

To create a custom action, either:

  • right-click a setting and choose Add custom action

OR

  • click + action at top of the Keymap page in the Custom section and choose a target setting

Other fields:

  • When: determines in what context an action can be invoked; global, overlay, free_mode, label_mode, or no_mode
  • Message: the toast message shown when it runs — off, default (the setting's name and new value), or custom text

Label mode (beta)

Places a label on each clickable element in the frontmost app. Type the label to click the element.

Available on: Mac, Windows, X11, and GNOME on Wayland -- more Wayland environments will be worked on very soon

  • On GNOME: log out and back in once after installing, so the Mouseless GNOME Shell extension loads

Actions: toggle label mode, enter label mode, and exit label mode

  • toggle label mode defaults to shift+CommandLeft tap on Mac, shift+AltLeft tap on Windows, and shift+ctrl tap on Linux
  • Deep links: toggle-label-mode, enter-label-mode, and exit-label-mode
  • existing hold for and cycle commands pick the mouse action, button, and click count, as they do with the grid
    • Note: dragging is not yet implemented
  • an unbound ctrl, alt, or cmd/win held while typing a label is applied to the click, e.g. to open a link in a new tab
    • shift is currently ignored (will change in future release)

Settings

  • Behavior > Labels > Label characters
  • Style > Label alignment: start, center, or end

Usage notes / known issues:

  • Windows: in Chromium and Electron apps, the first show may label only the app header; show labels again for the rest
  • Linux
    • the first use turns on AT-SPI accessibility (IsEnabled), which Chromium, Electron, and Firefox apps need to expose their elements
    • to improve responsiveness, buttons, toggle buttons, and links in GTK 4 apps are clicked with the cursor, which moves onto them, rather than pressed through accessibility
    • X11: GTK 4 apps get no labels
    • in Chromium and Electron apps, labels sit a little right of and below their elements
    • in some apps running under XWayland, labels can appear well away from their elements

Grid, overlay, and toast

  • Toast window now appears on the screen with the mouse (in free mode) or overlay (#318)
  • Added Char background feature for enhanced contrast / legibility
  • Added Reverse level 2 keys on right half feature, for left/right-hand symmetry in certain configurations

Input

  • Windows and Wayland: Alt tap and Win/Super tap commands no longer trigger native behavior (app menu, start menu or desktop overview) (#598)
    • Mouseless 'masks' the tap by injecting an intervening keypress
      • The Alt/Win tap mask key setting determines which key gets injected; default is auto (an unused virtual keycode on Windows, F24 on Linux)
    • The Send 'Escape' after global 'Alt tap' command is now deprecated and removed from Linux; on Windows, it applies only when the mask key is unassigned

Diagnostics

  • Debug logging now shows when Mouseless triggers mouse button up/down events (does not log the events' screen position)

Keyboard layouts

Note, Windows and X11 existing users: if Keyboard layout under Behavior > Keyboard is blank, keys work as in 1.0 until you click Update beside it, then Save; the translation, layout switching, warning, and Shift entries below apply after that

  • New installs now read your layout on first start, as macOS and Wayland already did
  • Default grid keys, default keybindings, and built-in presets are now translated to your selected keyboard layout when they are loaded, so intended key positions are preserved, e.g. WASD becomes ZQSD on AZERTY (#578, #267)
    • Translation also occurs when you click the Update layout button. You can always click the 'restore saved settings' button at the bottom of the window if you don't like the result.
    • You can disable translation by unchecking Translate defaults/presets to layout in Behavior > Keyboard; then QWERTY versions will always load
  • Windows: switching your system layout no longer moves cells to other keys, e.g. German's Z cell stays on its key after switching to US (#521, #108)
  • A warning now appears under Level N keys, Subgrid keys, and Label characters when your layout can't type one of the keys
  • The grid now distinguishes non-alpha shifted characters, e.g. so / and ? can both be assigned at the same level (#554)
    • If only one is present, it will be matched regardless of whether shift is held
    • Letters are unaffected: A is inaccessible if a is at the same level
  • Linux: dead keys now work as grid keys and hotkeys, as their own character, e.g. ^ on German and ' on US International
    • A config from 1.0 needs you to click the Update button first
  • X11: with two layouts configured, keys are now read in the active one; before, the first was always used, e.g. EurKEY's ' read as German's ä (#467)
  • Linux: fixed a crash reading the keyboard layout without an X display, e.g. a Wayland session without XWayland

Fixes

Free mode and drag

  • Fixed hold for drag sending mousedown events when continuing a drag via holding, which kept the next drag from starting in Firefox
  • Fixed free mode timing out while hold for free mode was held, which let keys pressed afterward reach the app with the hold key's modifier
  • Fixed free mode toast disappearing when overlay hidden (Windows and Linux, #600)
  • Fixed a scroll key (wheel up, wheel down, etc.) ignoring its next press after hold for free mode was released before it

Overlay and grid

  • Fixed direct mouse-button commands (right click, back mouse button, forward mouse button) firing instead of selecting a grid cell when their key is also a grid label (#617)
  • Fixed subgrid nudge keys doing nothing while a hold for key bound to a modifier was held, e.g. hold for drag (#603)
  • Fixed the overlay getting stuck on when opened through a deep link while Mouseless is disabled (#584)
    • Deep links that would show the overlay or enter free mode are now ignored while Mouseless is disabled
  • Subgrid nudge: eliminated lag when nudges entered rapidly

Config, license, and updates

  • Fixed license check retry logic when the network isn't ready at login (#597)
  • The settings UI now reports when it can't write the config or presets to disk, naming the target file and the reason, with a button that copies the details (#599)
    • Your unsaved changes are kept instead of cleared, and the editor says up front when the config file isn't writable
  • Config and presets files are now written atomically, so a save interrupted by a full disk or a disconnected drive leaves the previous file rather than an empty one
  • A config or presets file that can't be loaded is now kept as config.yaml.invalid.bak or presets.yaml.invalid.bak before Mouseless falls back to defaults, so a later save no longer replaces it
  • Fixed config files that can't be written during a version migration being reported as a config that failed to load
  • Fixed a config with an invalid keyboard_layout falling back to entire default config; only that entry is reset now
  • You can now change license key from the tools menu (useful e.g. for upgrading from subscription to lifetime)

macOS

Startup, updates, and config

  • Fixed startup issues causing keyboard to be unresponsive when launched at system start
    • Fixed missing secure input icon, made startup failure handling more graceful/robust (#589, #632)
  • Fixed issue where update checker wouldn't retry after network not initially available
  • Closing the welcome window before you start a trial or activate now quits Mouseless, instead of leaving it running with no way to reopen it

Overlay and toast

  • Fixed the overlay sometimes accepting no cell selections until Mouseless was restarted (#472)
  • Toast window and free mode indicator now show over a fullscreen app

Input, free mode, and drag

  • Fixed the first modifier tap after some shortcuts being ignored, e.g. a cmd tap to show the overlay after cmd+shift+] in Firefox
    • A workaround for extra modifier events sent by Karabiner-Elements now applies only to keys that come through Karabiner, and only to a tap within 700ms of a shortcut Karabiner handled itself
  • Fixed free mode sometimes staying on after hold for free mode was released, until the key was pressed again; it now turns off within about 4 seconds
  • Fixed cases where modifier-bound actions switched to non-modifier-bound actions while held (e.g. shift+ArrowUp running ArrowUp's action after a moment) (#628)
  • Fixed pressing the A grid key twice to double-click also typing "a"
  • Fixed drops sometimes failing with "Move system cursor with virtual" on
  • Fixed issue where system cursor errantly moved and clamped at edges in pointer-locked situations
  • Free mode movement now works in situations where an app only reads unaccelerated event attributes (e.g. some games; pointer lock demo above is one example)

Windows

  • Mouseless now explains when the WebView2 runtime is missing, rather than failing with an unhandled exception
  • A Fixed Version WebView2 runtime placed in a WebView2Runtime folder beside mouseless.exe is now picked up, so a machine with no internet access can run without the Evergreen runtime
  • Fixed text copied by Mouseless (version info, diagnostics, error details) starting with an invisible character
  • Fixed the settings window opening without keyboard focus from a hotkey or deep link

Linux

Input

  • Wayland: fixed a hold for action's modifier reaching the app while held
  • Fixed keys typed on the overlay reaching the app when Move system cursor with virtual and Free mode after move are both on
  • Wayland: Fixed exit free mode hotkey leaking through to underlying app (#624)
  • Wayland: Fixed pointer events from combined keyboard+pointer devices being swallowed (#627)
  • X11: Fixed incorrect mappings for media and numpad keys
  • Wayland: when Excluded input devices matches every keyboard, an alert now says so and Mouseless keeps running, picking the keyboard up once its entry is removed; before, it showed "No Keyboards Found" and quit
  • --list-input-devices now shows what each device can do (keyboard, pointer, wheel, etc.)
  • Wayland: Fixed Mouseless intermittently dropping a keyboard and no longer responding to it
  • Wayland: Fixed Clear keyboard state not releasing a stuck drag, e.g. one left by a key release missed during an app switch or sleep/wake

Overlay monitor and toast

  • Wayland: with_mouse now works for Initial overlay monitor
    • On niri it follows keyboard focus
  • GNOME: the toast now follows the active workspace (#606)
  • Fixed the toast sometimes appearing under the overlay
  • The cairo overlay (the default on NVIDIA) draws the bundled fonts (Jost, Jost Italic, and QuicheSans) in the system's sans font

Settings window

  • Fixed blank Settings pages on affected NVIDIA Flatpak installations (#635)
    • If you previously set use_dmabuf: false in debug_options, remove that override to use this fix

Don't miss a new mouseless release

NewReleases is sending notifications on new releases.