Skip to content

Latest commit

 

History

History
826 lines (530 loc) · 21.5 KB

CHANGELOG.md

File metadata and controls

826 lines (530 loc) · 21.5 KB

Changelog

All notable changes to this project will be documented in this file. The format is based on Keep a Changelog.

Version 4.9.1 - 2024-11-24

Added

  • Added @done directive to stop parsing configuration.

Fixed

  • Fixed immediately releasing (e.g. A >> B !B).
  • !Any checks previously matched (e.g. A{Any !Any} >> Meta{Any}) (#187).
  • Improved swapping mouse wheel directions (delta of input is used) (#184).
  • Fixed Next key info when key name is unknown.
  • Next key info also shows wheel events.

Version 4.9.0 - 2024-11-15

Added

  • Added builtin macro default (#176).
  • Added macro actual parameter $$ (#176).
  • Added builtin macro apply (#177).
  • Added @macos-iso-keyboard directive.
  • keymapperctl --type expands $(commands) under Windows.

Changed

  • Updated Karabiner VirtualHIDDevice to version 5.0.0 (#178).
  • Looking for config in $XDG_CONFIG_HOME first (#180).
  • Deprecated ; as start of comment.

Fixed

  • Fixed build on MacOS (#179).
  • Improved coexistence with Karabiner-Elements (#172).
  • Fixed invalid index lookup on null object in KWin script.

Version 4.8.2 - 2024-09-02

Added

  • Added logical key Alt.

Changed

  • Allow to override keys with aliases. e.g.
    Alt = AltLeft
    AltGr = AltRight
    

Version 4.8.1 - 2024-09-05

Added

  • Added @forward-modifiers directive (#174).
  • Implemented grab-device directive support on MacOS (#166).

Version 4.8.0 - 2024-09-01

Added

  • Added keymapperctl operations --input and --output for injecting key presses. e.g.:

    keymapperctl --input Shift{A} B C
    

    with --input the mappings are applied as if the sequence came from an input device, with --output the sequence is output as if it was generated by keymapper (#170).

Version 4.7.3 - 2024-08-31

Fixed

  • Fixed mouse wheel breaking ? input expressions.

Version 4.7.2 - 2024-08-24

Added

  • Added WheelLeft and WheelRight for horizontal mouse wheels.

Changed

  • Swapped WheelUp and WheelDown on Windows.

Fixed

  • Fixed leaking of unmapped mouse input on Windows.

Version 4.7.1 - 2024-08-19

Added

  • Added string interpolation, which works in strings, terminal commands and regular expressions. e.g.:

    VAR = "World"
    A >> "Hello ${VAR}"  # $VAR also works
  • Allow to split a line with a \ at the end. e.g.:

    Shift{A} >> \
       Control{B}

Changed

  • Aliases are no longer automatically substituted in terminal commands (use string interpolation).

Fixed

  • Fixed too eager macro evaluation.

Version 4.7.0 - 2024-08-17

Added

  • Allow to define top-level macros:

    macro = $0 >> $1
    macro[A, B]
  • Added builtin macros repeat[EXPR, N], length[STR], add/sub/mul/div/mod/min/max[A, B].

  • Apply further argument list to result of macro. e.g.:

    case1 = $0
    case2 = $0 $0
    switch = case$0
    A >> switch[2][B]  # switch generates case2, which is called with second argument list
  • Implemented @grab-device directive support on Windows.

Fixed

  • @allow-unmapped-commands also ignore mappings of undefined commands. e.g.:

    @allow-unmapped-commands
    command >> A
  • Added KDE6 support to keymapper KWin script.

Version 4.6.0 - 2024-08-07

Added

  • Allow string literals in input expressions. e.g. 'Abc' >> B.
  • Added @allow-unmapped-commands and @enforce-lowercase-commands directives.

Changed

  • Keep key held when pressed immediately after !Any.

Fixed

  • Fixed # and ] in terminal commands and macros.
  • Allow to undo ! in input. e.g. !Shift A Shift{B}
  • Preserving order of hold back output.
  • Fixed MacOS build.

Version 4.5.2 - 2024-07-28

Added

  • Looking for keymapper.conf in an optional keymapper subdirectory.

Fixed

  • @include looking up relative paths next to configuration file.

Version 4.5.1 - 2024-07-28

Added

  • Expanding ~ and variables in @include directive.

Fixed

  • Fixed @grab-device directives.

Version 4.5.0 - 2024-07-27

Added

  • Added @grab-device... directives.
  • Added @include directive.
  • Showing system in "Next Key Info".
  • Allowing hyphens in identifiers.

Changed

  • Grabbing keyboards with mouse axes on Linux.
  • Any no longer matches mouse buttons/wheel.

Version 4.4.5 - 2024-07-18

Fixed

  • Not reevaluating ? inputs when context becomes active (#161).
  • Prevent infinite loop when two ContextActive toggle each other.

Changed

  • No longer setting description of all executables to "Keymapper" on Windows (they were indistinguishable in task manager #161).

Version 4.4.4 - 2024-07-14

Fixed

  • Prevent key state validation from resetting virtual key state on Windows.

Version 4.4.3 - 2024-07-14

Fixed

  • Defined behavior of !Virtual in output to always release (#156).
  • Fixed toggling virtual key set by ContextActive (#156).
  • Fixed string typing occasionally releasing virtual keys (#156).

Version 4.4.2 - 2024-07-09

Fixed

  • Fixed potentially hanging key (#153).
  • Improved not-timeout with modifier. e.g A{B{!500ms}} >> C (#153).
  • Improved nested modifiers e.g. A{B{C} D{E}}.
  • Prevent modifier in group e.g. (A B{C}).

Version 4.4.1 - 2024-07-26

Changed

  • Not always grabbing mice with keyboard keys on Linux (#152).

Version 4.4.0 - 2024-06-10

Added

  • Added multiple stages.
  • Added keymapperctl --type.

Changed

  • Shutdown keymapperd on version mismatch (#149).
  • Prevent not supported virtual keys in ? input expressions.

Fixed

  • Revert swapping mixed up IntlBackslash and Backquote keys on MacOS workaround (#150).
  • Improved !Any in output.

Version 4.3.1 - 2024-05-18

Changed

  • Building Linux packages with libayatana-appindicator3.

Fixed

  • Fixed shutdown when no devices could be grabbed on Linux.

Version 4.3.0 - 2024-05-16

Added

  • Allow input expressions to begin with ? to prevent might match.
  • !Any in output releases all pressed keys.
  • Using libayatana-appindicator instead of libappindicator when available.

Changed

  • Not reconnecting in keymapperctl when --instance is set.

Fixed

  • Improved mouse wheel handling.

Version 4.2.0 - 2024-05-08

Added

  • Added "Next Key Info" tray menu item.
  • Added keymapperctl action --next-key-info.
  • Added device_id context filter.
  • Added mouse wheel keys WheelUp and WheelDown.

Version 4.1.3 - 2024-05-01

Added

  • Added keymapperctl --set-config.
  • Added --no-notify keymapper argument to disable notifications.
  • Creating config file when opened using tray icon on Linux.

Fixed

  • Fixed forwarding on cancelled sequence/group.

Version 4.1.2 - 2024-04-24

Fixed

  • Fixed device filter on MacOS.
  • Fixed forwarding of FN keys on MacOS.
  • Fixed slowly appearing tray icon menu on Linux.

Version 4.1.1 - 2024-04-19

Added

  • Added "Devices" entry to tray icon menu.

Changed

  • Always using Interception when available on Windows.

Fixed

  • Fixed tray icon Linux.

Version 4.1.0 - 2024-04-17

Added

  • Added keymapper tray icon for Linux (#126).

Fixed

  • Further improved selection of key releasing a triggered output (#122).
  • Fixed logical keys in context modifiers (#128).
  • Fixed ContextActive with fallthrough contexts.

Version 4.0.2 - 2024-04-11

Fixed

  • Improved selection of key releasing a triggered output (#122).
  • Improved forwarding of input when a potential match fails.

Version 4.0.1 - 2024-04-09

Fixed

  • Fixed input timeouts on Linux (#91).
  • Fixed ContextActive with output on release (#91).
  • Restored substition of aliases in terminal commands (#91).
  • Fixed error notifications on Linux.

Version 4.0.0 - 2024-03-28

Added

  • Added virtual key ContextActive (#91).
  • Added aliases with parameters (#91).
  • Added keymapperctl application (#105).
  • Added device filter support on Windows using Interception (#107).
  • Allow to invert context filters with !=.
  • Consecutive blocks share mappings (#103).

Changed

  • Ignore aliases defined in contexts of other systems.
  • Completely resetting state of virtual keys when updating the configuration.
  • Setting keymapper process priority to high on Windows
  • Exiting when config is invalid and not reloaded on Windows (#114).
  • Allow to separate context filters with comma.

Fixed

  • Fixed groups with not timeout (#121).
  • Not grabbing gamedevices on Linux (#119).
  • Fixed starting multiple terminal commands at once.

Version 3.5.2 - 2024-01-24

Fixed

  • Fixed device filters when devices are changing (#41).
  • Fixed process starting on Windows (#102).
  • Interpreting escape sequence only in character typing string literals (\n, \r, \t).

Version 3.5.1 - 2024-01-19

Added

  • Added keys Again, Props, Undo, Select, Copy, Open, Paste, Find, Cut, Help, Sleep, WakeUp, Eject, Fn (currently only on Linux #85).

Changed

  • Applying context updates even when a key is hold (#99).

Fixed

  • Improved keymapperd shutdown signal handing (#101)
  • Hold Virtual keys could prevent context updates (#41, #99).

Version 3.5.0 - 2024-01-16

Added

  • Added diacritic support to string typing on Windows.
  • Allow context filters to contain aliases.

Changed

  • Improved bringing spawned applications to front on Windows.

Fixed

  • Prevent second keymapper process from partially connecting on Linux.
  • Prevent alias substitution in strings.

Version 3.4.0 - 2023-12-31

Added

  • Not-key following key in input expression matches when key is released. e.g. A !A >> B

Changed

  • No longer implicitly waiting for key release before timeout. e.g. A !250ms B
  • Prevent input sequences without key down. e.g. !A 500ms

Fixed

  • Restored unintendedly reverted support for Gnome 45.

Version 3.3.0 - 2023-12-18

Added

  • Supporting devices with event IDs higher than 31 on Linux (#89).
  • Added keymapper KWin script.
  • Improved coexistence with Karabiner Elements on MacOS.

Changed

  • Updated Karabiner VirtualHIDDevice to version 3.1.0.

Fixed

  • Swapping mixed up IntlBackslash and Backquote keys on MacOS.
  • Fixed context filter on MacOS.
  • Fixed static build on Windows.

Version 3.2.0 - 2023-12-01

Added

  • Handling keys without scancode on Windows.
  • Added keys LaunchApp2, BrowserHome, LaunchMail, LaunchMediaPlayer.

Changed

  • Grabbing all devices with keys on Linux.

Version 3.1.0 - 2023-11-18

Added

  • Added character output typing.
  • Allow to override Not in output with Down.

Changed

  • Always hiding spawned console applications on Windows (use "start XY" to see it).

Fixed

  • Improved starting of terminal commands on Windows.
  • Fixed executing terminal commands on wlroots based Wayland compositor.

Version 3.0.0 - 2023-10-26

Added

  • Added initial MacOS support.
  • Toggling virtual keys can trigger output.

Changed

  • Simultaneous output on release.

Version 2.7.2 - 2023-10-14

Changed

  • Made Gnome extension compatible with Gnome 45.

Version 2.7.1 - 2023-08-17

Fixed

  • Properly handling inaccessible process path on Linux.

Version 2.7.0 - 2023-08-10

Added

  • Added process path context filter.

Fixed

  • Immediately applying context update on Linux.

Version 2.6.1 - 2023-05-07

Changed

  • Preventing mouse button repeat on Windows.
  • Made mouse button debouncing optional (keymapperd parameter).

Version 2.6.0 - 2023-05-05

Added

  • Allow timeouts in output expressions.
  • Allow scan codes in configuration.
  • Added MetaLeft/MetaRight aliases OSLeft/OSRight.

Version 2.5.0 - 2023-03-09

Added

  • Showing notifications on Linux.

Fixed

  • Fixed hanging keys when using Windows remote desktop.
  • Removed limit of 127 keys per sequence.
  • Enabled visual styles for Windows about dialog.

Version 2.4.1 - 2022-11-27

Fixed

  • Keys triggered by timeout no longer released immediately.

Version 2.4.0 - 2022-11-26

Added

  • Allow to add timeouts to input sequences.
  • Added about dialog on Windows.

Fixed

  • Cancel output-on-release when focus changed on Windows.
  • Fixed releasing focused window detection on Linux.
  • Fixed releasing virtual device on Linux.
  • Fixed displaying version.

Version 2.3.0 - 2022-10-21

Added

  • Allow the device context filter to match multiple devices.

Fixed

  • Grab devices regardless of bus type.
  • Linking filesystem library when building with older gcc/clang

Version 2.2.0 - 2022-09-17

Added

  • Handling wheel/slider functionality of some keyboards (Linux).

Changed

  • Grabbing keyboard/mouse devices despite unhandled axes (Linux).

Version 2.1.5 - 2022-07-29

Added

  • Added command line parameter to hide tray icon (Windows).

Fixed

  • Further improved Pause/NumLock key handling (Windows).

Version 2.1.4 - 2022-06-24

Fixed

  • Improved Pause/NumLock key handling (Windows).

Changed

  • Showing notification when config was updated (Windows).
  • Renamed Break key to Cancel.

Version 2.1.3 - 2022-06-16

Fixed

  • Fixed loading configuration from '$HOME/.config/' (Linux).

Version 2.1.2 - 2022-06-10

Added

  • Added Windows installer.

Version 2.1.1 - 2022-06-06

Added

  • Added tray icon for Windows client.
  • Showing errors in notifications on Windows.

Fixed

  • Fail when config file cannot be read.
  • Fixed output-on-release for terminal commands.
  • Starting terminal commands in foreground.

Version 2.1.0 - 2022-05-23

Added

  • Added mouse button support.
  • Added device context filter (only supported on Linux).

Changed

  • Split Windows version in client/server.
  • Removed Interception mode on Windows.
  • Removed colored error messages.

Version 1.10.0 - 2022-05-03

Added

  • Exiting on special key sequence Shift-Escape-K.
  • Any in output expressions outputs the matched input.
  • Added Break key.

Fixed

  • Improved sending of Ctrl-key sequences on Windows.
  • Restored order of logical key substitution.

Version 1.9.0 - 2022-03-13

Added

  • Added D-Bus context update support.
  • Added gnome-shell extension for updating focused window on Wayland.
  • Added wlroots context update support on Wayland.

Version 1.8.3 - 2022-03-07

Fixed

  • Better handling of unknown version by build script.

Version 1.8.2 - 2022-02-20

Changed

  • Improved Not in output behavior.
  • Statically linking runtime under Windows.

Fixed

  • Fixed right-modifier / mouse drag under Windows.
  • Setting initial context on Windows.

Version 1.8.1 - 2022-01-23

Changed

  • No longer grabbing combined keyboard/mouse devices.
  • CMake defaults to build type "Release".

Version 1.8.0 - 2021-12-20

Added

  • Multiple contexts can be active at once.
  • [default] can be used to return to the default context.
  • Logical keys can be defined.
  • Allow to define common modifiers for context blocks.

Fixed

  • Updating active context on configuration update.
  • AltRight is no longer implicitly forwarded.

Version 1.7.0 - 2021-12-13

Changed

  • Removed implicitly mapping of modifier keys.
  • Matching begin of sequence when might-match failed.
  • Completely releasing sequences and modifier groups.

Added

  • Documented importance of mapping order.

Fixed

  • Made Linux keyboard initialization more robust.

Version 1.6.0 - 2021-08-29

Added

  • Added terminal command output.
  • Allow mapping of sequences in context blocks.
  • Add option to check the validity of the config file, then exit.
  • Added icon and metadata to Windows executable.

Fixed

  • Fixed bug with more than one virtual key in output.
  • Fixed regular expressions containing [ ].

Version 1.5.0 - 2021-05-10

Added

  • Allow to define output on key release.

Fixed

  • Stricter validation of configuration to reduce undefined behavior.

Version 1.4.0 - 2021-03-29

Changed

  • Releasing triggered input in reverse order.

Fixed

  • Prevent hanging key.
  • Validating state on Windows after session change.

Version 1.3.0 - 2021-01-26

Added

  • Optional verbose output.
  • Regular expression support for context definition.

Changed

  • Updating context when window title changes.
  • Applying system context independent of window context.

Version 1.2.0 - 2021-01-22

Added

  • Support of multiple keyboards under Linux.
  • Improved device hot-plugging.
  • Added some missing keys.

Changed

  • Simplified context block definition.
  • Made X11 dependency optional.

Fixed

  • Proper output of Any key.
  • Might match when key is hold.

Version 1.1.5 - 2020-05-09