diff --git a/CHANGELOG.md b/CHANGELOG.md index 6a5c695..eb793fa 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,88 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). +## [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 @@ -532,6 +614,15 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ## [Version 1.1.5] - 2020-05-09 +[version 4.6.0]: https://github.com/houmain/keymapper/compare/4.5.2...4.6.0 +[version 4.5.2]: https://github.com/houmain/keymapper/compare/4.5.1...4.5.2 +[version 4.5.1]: https://github.com/houmain/keymapper/compare/4.5.0...4.5.1 +[version 4.5.0]: https://github.com/houmain/keymapper/compare/4.4.5...4.5.0 +[version 4.4.5]: https://github.com/houmain/keymapper/compare/4.4.4...4.4.5 +[version 4.4.4]: https://github.com/houmain/keymapper/compare/4.4.3...4.4.4 +[version 4.4.3]: https://github.com/houmain/keymapper/compare/4.4.2...4.4.3 +[version 4.4.2]: https://github.com/houmain/keymapper/compare/4.4.1...4.4.2 +[version 4.4.1]: https://github.com/houmain/keymapper/compare/4.4.0...4.4.1 [version 4.4.0]: https://github.com/houmain/keymapper/compare/4.3.1...4.4.0 [version 4.3.1]: https://github.com/houmain/keymapper/compare/4.3.0...4.3.1 [version 4.3.0]: https://github.com/houmain/keymapper/compare/4.2.0...4.3.0 diff --git a/README.md b/README.md index 71e7829..057b87d 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ A cross-platform context-aware key remapper. It allows to: * Manage all your keyboard shortcuts in a single configuration file. * Change shortcuts for similar actions in different applications at once. * Share configuration files between multiple systems (GNU/Linux, Windows, MacOS). -* Specify the output as [characters](#character-typing) instead of the keys required to type them. +* Specify input and output as [characters](#character-typing) instead of the keys required to type them. * Bind keyboard shortcuts to [launch applications](#application-launching). * Control the state from external applications using [keymapperctl](#keymapperctl). * Use [mouse buttons and wheel](#key-names) in your mappings. @@ -53,7 +53,7 @@ The command line argument `-u` causes the configuration to be automatically relo The keys are named after their scan codes and are not affected by the present keyboard layout. The names have been chosen to match on what the [web browsers](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code/code_values) have agreed upon, so this [handy website](http://keycode.info/) can be used to get a key's name. -For convenience the letter and digits keys are also named `A` to `Z` and `0` to `9`. The logical keys `Shift`, `Control` and `Meta` (a.k.a Windows-key) are also defined (each matches the left and right modifier keys). There are also [virtual keys](#virtual-keys) for state switching, an [Any key](#any-key) and a [No key](#no-key). +For convenience the letter and digits keys are also named `A` to `Z` and `0` to `9`. The logical keys `Shift`, `Control` and `Meta` (a.k.a. Windows- or Option-key) are also defined (each matches the left and right modifier keys). There are also [virtual keys](#virtual-keys) for state switching, an [Any key](#any-key) and a [No key](#no-key). The mouse buttons are named `ButtonLeft`, `ButtonRight`, `ButtonMiddle`, `ButtonBack` and `ButtonForward`, the wheel is named `WheelUp` and `WheelDown`. @@ -70,6 +70,7 @@ Input expressions consist of one or more key names separated by spaces or parent * `A{B}` means that a key has to be held while another is pressed. * `!A` means that a key must not be pressed. * Groups and modifiers can also be nested like `A{B{C}}` or `(A B){C}`. + * `"..."` string literals match when the enclosed [characters are typed](#character-typing). * With an initial `?` the mapping gets skipped as long as it only partially matches. ### Output expressions @@ -81,7 +82,7 @@ The output expression format is analogous to the input expression format: * `A{B}` means that a key is held while another is pressed. * `!A` means that the (potentially pressed) key should be released before the rest of the expression is applied. This also works for virtual keys. * `^` splits the output in two parts, one which is applied when the input key is pressed and one when the [key is released](#output-on-key-release). - * Strings enclosed in single or double quotes specify [characters to type](#character-typing). + * `"..."` string literals allow to specify [characters to type](#character-typing). * `$()` can be used for [launching applications](#application-launching). * An empty expression can be used to suppress any output. @@ -275,6 +276,12 @@ AltRight{A} >> '@' Meta{A} K >> "Kind regards,\nDouglas Quaid" ``` +They can also be used in input expressions to match when the character are typed. e.g.: + +```bash +? 'Abc' >> Backspace Backspace "Matched!" +``` + :warning: The keyboard layout is evaluated when the configuration is loaded, switching is not yet supported. ### Key aliases