From 90c3687fd507761ae45ef3b0180848187c181ef8 Mon Sep 17 00:00:00 2001 From: Raheman Vaiya Date: Tue, 19 Apr 2022 21:37:16 -0400 Subject: [PATCH] Version bump --- Makefile | 2 +- README.md | 20 ++++++++++---------- data/keyd-application-mapper.1.gz | Bin 1489 -> 1489 bytes data/keyd.1.gz | Bin 5586 -> 5636 bytes docs/CHANGELOG.md | 12 ++++++++++++ docs/keyd.scdoc | 7 +++++-- 6 files changed, 28 insertions(+), 13 deletions(-) diff --git a/Makefile b/Makefile index e5919f6..8a12ffb 100644 --- a/Makefile +++ b/Makefile @@ -2,7 +2,7 @@ DESTDIR= PREFIX=/usr -VERSION=2.3.1-rc +VERSION=2.4.0 COMMIT=$(shell git describe --no-match --always --abbrev=7 --dirty) VKBD=uinput diff --git a/README.md b/README.md index 233c41d..ec4da03 100644 --- a/README.md +++ b/README.md @@ -6,15 +6,11 @@ result often being tethered to a specified environment (X11). keyd attempts to solve this problem by providing a flexible system wide daemon which remaps keys using kernel level input primitives (evdev, uinput). -# UPDATE (v2.3.0-rc) +# UPDATE (v2.4.0 released) -master is currently tracking `v2.3.0-rc`. Things should be reasonably backwards -compatible, but minor changes may be introduced before the final release. If -you are looking for something a bit more stable you may be interested the -[v1](https://github.com/rvaiya/keyd/tree/v1) branch. - -*NOTE: For those migrating their configs from v1, please see the -[changelog](docs/CHANGELOG.md) for a list of changes.* +The config format has undergone several iterations since the first +release, for those migrating their configs from v1, please see the +[changelog](docs/CHANGELOG.md)*. # Goals @@ -36,8 +32,9 @@ Some of the more interesting ones include: - Keyboard specific configuration. - Instantaneous remapping (no more flashing :)). - A client-server model that facilitates scripting and display server agnostic application remapping. (Currently ships with support for X, sway, and gnome). -- System wide config (works in a VT) +- System wide config (works in a VT). - First class support for modifier overloading. +- Unicode support. ### keyd is for people who: @@ -52,7 +49,6 @@ Some of the more interesting ones include: ### What keyd isn't: - - A tool for launching arbitrary system commands as root. - A tool for programming individual key up/down events. # Dependencies @@ -67,6 +63,10 @@ Some of the more interesting ones include: # Installation +*Note:* master serves as the development branch, things may occasionally break +between releases. Releases can be found in the +[stable](https://github.com/rvaiya/keyd/tree/stable) branch. + ## From Source git clone https://github.com/rvaiya/keyd diff --git a/data/keyd-application-mapper.1.gz b/data/keyd-application-mapper.1.gz index 586f887f73e192ff170a82177b4bfd7d767092e6..e663ab247eaaf010a8cec291ce9ddb7c159fb74a 100644 GIT binary patch delta 15 Wcmcb}eUY0@zMF<FOSY)2sk04Fxg) delta 15 Wcmcb}eUY0@zMF%gGI}H1X;uIyvINWk diff --git a/data/keyd.1.gz b/data/keyd.1.gz index 0204a5601c3df34650ba3b674f5439a179d59193..b6ae497e8bf67f46ee281b257d46072765784e1d 100644 GIT binary patch delta 5465 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