6.7 KiB
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 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 ofcontrol = layer(C)
in an unmodified key map)`. -
Modifier names are now syntactic sugar for assigning both associated key codes. E.G
control
corresponds to bothleftcontrol
andrightcontrol
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) 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 nowtoggle()
. -
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.
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 ofS-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 for details.