chromebook-linux/cros-keyboard-map/keyd/docs/CHANGELOG.md
2025-06-08 19:32:41 -05:00

242 lines
6.7 KiB
Markdown

# v2.5.0
- Allow 64 character layer names
- Introduce a new device id format to distinguish between devices with identical product/vendor id pairs (backward compatible)
- Add KDE/plasma5 support to `keyd-application-mapper`
- Gnome v45/v46 application remapping support
- Increases the maximum number of descriptors to allow for more advanced configs
- Add `setlayout()` to facilitate dynamically set layouts
- `toggle()` now activates the layer on key down instead of key up
- Improve support for exotic keys
- Various minor bug fixes
# v2.4.3
## Summary (non exhaustive)
- Introduces a new layout type
- Improves application based remapping suport for wayland/X
- Adds `swap` support for toggled layers
- Adds support for chording
- Numerous bugfixes and stability improvements
## New Actions:
- togglem (#270)
- clear() (#253)
- overloadt (#309)
- overloadt2
## New Commands:
- listen command (#294, #217)
- reload
- do
- input
## New timeout and modifier knobs:
- disable_modifier_guard (#257)
- oneshot_timeout option
- overload_tap_timeout
- macro_sequence_timeout (#255)
See the manpage for details.
# v2.4.2
- Add include directive to the config syntax
- Ship includable common layouts
- Allow comments in the ids section (#245)
- Create virtual pointer on initialization (#249)
- Misc bug fixes
# v2.4.1
- Route button presses through the virtual keyboard (#162)
- Improve mouse support
- Fix VT repeat bug
- Allow overload to accept an arbitrary action (#199)
- Add support for full key serquences to swap()
- Misc bugfixes
# v2.4.0
- Fix macro timeouts
- Allow timeouts to be used in conjunction with + (#181)
- Add macro2() to allow for per-macro timeout values (#176)
- Add command() to allow for command execution
- Add [global] section
- Improve unicode support
- Add support for older kernels (#163)
- Clear oneshot on click
- Various bugfixes and enhancements
# v2.3.1-rc
- Add unicode support
- Add noop
- Fix keyd-application-mapper hotswapping
# v2.3.0-rc
This is a **major release** which breaks **backward compatibility** with
non trivial configs. It is best to reread the man page. Minimal
breaking changes are expected moving forward.
- Introduce composite layers
- Add timeout()
- Simplify layer model
- Layer entries are now affected by active modifiers (current layer modifiers excepted)
- Eliminate layer types
- Eliminate -d
See [DESIGN.md](DESIGN.md) for a more thorough description of changes.
# v2.2.7-beta
- Fix support for symlinked config files (#148)
- Improve out of the box handling of alt and meta overloading (#128)
- Add unicode support to keyd-application-mapper
- Various bugfixes and stability improvements
# v2.2.5-beta
- Eliminate udev as a dependency
- Permit mapping to modifier key codes (still discouraged)
- Support for nested swapping
- Improve app detection
- Various bug fixes
# v2.2.4-beta
- Add support for application mapping by title
- Fix macro timeouts
- Forbid modifier keycodes as lone right hand values in favour of layers
# v2.2.3-beta
- Enable hot swapping of depressed keybindings via -e
- Improve support for application remapping
# v2.2.2-beta
- Change panic sequence to `backspace+enter+escape` (#94)
- Fix overload+modifer behaviour (#95)
# v2.2.1-beta
- Move application bindings into ~/.config/keyd/app.conf.
- Add -d to keyd-application-mapper.
- Fix broken gnome support.
# v2.2.0-beta
- Add a new IPC mechanism for dynamically altering the keymap (-e).
- Add experimental support for app specific bindings.
# v2.1.0-beta
NOTE: This might break some configs (see below)
- Change default modifier mappings to their full names (i.e `control =
layer(control)` instead of `control = layer(C)` in an unmodified key map)`.
- Modifier names are now syntactic sugar for assigning both associated key
codes. E.G `control` corresponds to both `leftcontrol` and `rightcontrol`
when assigned instead of just the former. (Note: this also means it is no
longer a valid right hand value)
- Fixes v1 overload regression (#74)
# v2.0.1-beta
- Add + syntax to macros to allow for simultaenously held keys.
# v2.0.0-beta
Major version update.
This breaks 1.x configs. The format may ~~change slightly~~ (see [2.3.0-rc](#v230-rc)) before leaving beta,
but once it does should remain backwards compatible for the foreseeable future.
A non exhaustive list of changes can be found below. It is best to forget
everything you know and read man page anew.
- Eliminate layer inheritance in favour of simple types.
(layouts are now defined with `:layout` instead of `:main`)
- Macros are now repeatable.
- Overload now accepts a hold threshold timeout.
- Config files are now vendor/product id oriented.
- SIGUSR1 now triggers a config reload.
- Modifiers are layers by default and can be extended directly.
- Config files now end in `.conf`.
- `layert()` is now `toggle()`.
- All layers are 'modifier layers' (terminological change)
- Eliminate the dedicated modifer layout.
- Modifiers no longer apply to key sequences defined within a layer.
(Layer entries are now always executed verbatim.)
The old behaviour was unintuitive and can be emulated using nested
layers if necessary.
For most old configs transitioning should be a simple matter of changing
the file extension from `.cfg` to `.conf`, replacing `layert` with
`toggle`, changing `:main` to `:layout` and adding
```
[ids]
*
[main]
```
to the top of the file.
More involved configs may need additional changes, but should be possible
to replicate using the new rules. If not, please file an issue on
[github](https://github.com/rvaiya/keyd/issues).
# v1.1.1
- Make layert behaviour more intuitive when combined with oneshot() and layer().
# v1.1.0
- Add layert() to facilitate semipermanent-activation of occluding layers.
- Resolve layer conflicts by picking the one which was most recently activated.
# v1.0.0
Major version update:
- Introduce support for modifier layers.
- Simplify the config format.
- Improve consistency/expected key behaviour.
- Symbols can now be assigned directly place of their names (e.g `&` instead of `S-7`).
- Macro support.
*This breaks existing configs*. Moving forward the config format is expected to
remain backwards compatible.
Main Config Changes:
- Modifiers are now just treated as layers
- The default layer is now called main
- The modifier layout is distinct from the key layout
Config migration map:
```
mods_on_hold(C, esc) = overload(C, esc)
layer_on_hold(layer, esc) = overload(layer, esc)
layer_toggle(layer) = layout(layer)
layer(layer) = layer(layer)
oneshot(mods) = oneshot(mods)
oneshot_layer(layer) = oneshot(layer)
[dvorak:default] = [dvorak:main]
```
See the [manpage](man.md) for details.