Skip to content

Commit c336a7a

Browse files
authored
Merge pull request #1 from rhansen/readme
README.md: Document the purpose of this fork
2 parents 8afb7c0 + d4596fb commit c336a7a

File tree

1 file changed

+41
-20
lines changed

1 file changed

+41
-20
lines changed

README.md

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,52 @@
11
[![Kofi](https://badgen.net/badge/icon/kofi?icon=kofi&label)](https://ko-fi.com/rvaiya)
2-
3-
# Impetus
4-
52
[![Packaging status](https://repology.org/badge/tiny-repos/keyd.svg)](https://repology.org/project/keyd/versions)
63

4+
# keyd (temporary friendly fork)
5+
6+
A key remapping daemon for Linux.
7+
8+
> [!NOTE]
9+
> https://github.com/keyd-project/keyd-fork is a temporary, friendly fork of the
10+
> [original keyd project](https://github.com/rvaiya/keyd). This fork was
11+
> created on 2024-12-06 with the following goals:
12+
>
13+
> * Help reduce the backlog of pull requests in the original project by
14+
> merging them here and creating releases that users can test.
15+
> * Provide a well-maintained distribution tarball to make it easier for
16+
> downstream packagers to maintain keyd packages.
17+
> * Recruit potential maintainers. (If you are interested, please contact
18+
> [@rhansen](https://github.com/rhansen).)
19+
>
20+
> Once the original project acquires a vibrant group of maintainers, this fork
21+
> will be archived. If the original project is abandoned, this fork will be
22+
> made permanent by dropping the `-fork` suffix.
23+
>
24+
> Feel free to open issues or merge requests in this fork.
25+
26+
## Impetus
27+
728
Linux lacks a good key remapping solution. In order to achieve satisfactory
829
results a medley of tools need to be employed (e.g xcape, xmodmap) with the end
930
result often being tethered to a specified environment (X11). keyd attempts to
1031
solve this problem by providing a flexible system wide daemon which remaps keys
1132
using kernel level input primitives (evdev, uinput).
1233

13-
# Note on v2
34+
## Note on v2
1435

1536
The config format has undergone several iterations since the first
1637
release. For those migrating their configs from v1 it is best
1738
to reread the man page.
1839

1940
See also: [changelog](docs/CHANGELOG.md).
2041

21-
# Goals
42+
## Goals
2243

2344
- Speed (a hand tuned input loop written in C that takes <<1ms)
2445
- Simplicity (a [config format](#sample-config) that is intuitive)
2546
- Consistency (modifiers that [play nicely with layers](https://github.com/rvaiya/keyd/blob/6dc2d5c4ea76802fd192b143bdd53b1787fd6deb/docs/keyd.scdoc#L128) by default)
2647
- Modularity (a UNIXy core extensible through the use of an [IPC](https://github.com/rvaiya/keyd/blob/90973686723522c2e44d8e90bb3508a6da625a20/docs/keyd.scdoc#L391) mechanism)
2748

28-
# Features
49+
## Features
2950

3051
keyd has several unique features many of which are traditionally only
3152
found in custom keyboard firmware like [QMK](https://github.com/qmk/qmk_firmware)
@@ -57,30 +78,30 @@ Some of the more interesting ones include:
5778

5879
- A tool for programming individual key up/down events.
5980

60-
# Dependencies
81+
## Dependencies
6182

6283
- Your favourite C compiler
6384
- Linux kernel headers (already present on most systems)
6485

65-
## Optional
86+
### Optional
6687

6788
- python (for application specific remapping)
6889
- python-xlib (only for X support)
6990
- dbus-python (only for KDE support)
7091

71-
# Installation
92+
## Installation
7293

7394
*Note:* master serves as the development branch, things may occasionally break
7495
between releases. Releases are [tagged](https://github.com/rvaiya/keyd/tags), and should be considered stable.
7596

76-
## From Source
97+
### From Source
7798

7899
git clone https://github.com/rvaiya/keyd
79100
cd keyd
80101
make && sudo make install
81102
sudo systemctl enable keyd && sudo systemctl start keyd
82103

83-
# Quickstart
104+
## Quickstart
84105

85106
1. Install and start keyd (e.g `sudo systemctl enable keyd`)
86107

@@ -119,7 +140,7 @@ Some mice (e.g the Logitech MX Master) are capable of emitting keys and
119140
are consequently matched by the wildcard id. It may be necessary to
120141
explicitly blacklist these.
121142

122-
## Application Specific Remapping (experimental)
143+
### Application Specific Remapping (experimental)
123144

124145
- Add yourself to the keyd group:
125146

@@ -148,7 +169,7 @@ display server initialization logic (e.g ~/.xinitrc) unless you are running Gnom
148169

149170
See the man page for more details.
150171

151-
## SBC support
172+
### SBC support
152173

153174
Experimental support for single board computers (SBCs) via usb-gadget
154175
has been added courtesy of Giorgi Chavchanidze.
@@ -201,7 +222,7 @@ archive](https://launchpad.net/~keyd-team/+archive/ubuntu/ppa).
201222
If you wish to help maintain this PPA, please contact
202223
[@rhansen](https://github.com/rhansen).
203224

204-
# Sample Config
225+
## Sample Config
205226

206227
[ids]
207228

@@ -218,7 +239,7 @@ If you wish to help maintain this PPA, please contact
218239
f = /
219240
...
220241

221-
# Recommended config
242+
## Recommended config
222243

223244
Many users will probably not be interested in taking full advantage of keyd.
224245
For those who seek simple quality of life improvements I can recommend the
@@ -245,17 +266,17 @@ control (when held) and remaps all modifiers to 'oneshot' keys. Thus to produce
245266
the letter A you can now simply tap shift and then a instead of having to hold
246267
it. Finally it remaps insert to S-insert (paste on X11).
247268

248-
# FAQS
269+
## FAQS
249270

250-
## What about xmodmap/setxkbmap/*?
271+
### What about xmodmap/setxkbmap/*?
251272

252273
xmodmap and friends are display server level tools with limited functionality.
253274
keyd is a system level solution which implements advanced features like
254275
layering and [oneshot](https://docs.qmk.fm/#/one_shot_keys)
255276
modifiers. While some X tools offer similar functionality I am not aware of
256277
anything that is as flexible as keyd.
257278

258-
## What about [kmonad](https://github.com/kmonad/kmonad)?
279+
### What about [kmonad](https://github.com/kmonad/kmonad)?
259280

260281
keyd was written several years ago to allow me to easily experiment with
261282
different layouts on my growing keyboard collection. At the time kmonad did not
@@ -271,15 +292,15 @@ in Haskell). Having said that, it supplies (in the author's opinion) the
271292
most valuable features in less than 2000 lines of C while providing
272293
a simple language agnostic config format.
273294

274-
## Why doesn't keyd implement feature X?
295+
### Why doesn't keyd implement feature X?
275296

276297
If you feel something is missing or find a bug you are welcome to file an issue
277298
on github. keyd has a minimalist (but sane) design philosophy which
278299
intentionally omits certain features (e.g execing arbitrary executables
279300
as root). Things which already exist in custom keyboard firmware like QMK are
280301
good candidates for inclusion.
281302

282-
# Contributing
303+
## Contributing
283304

284305
See [CONTRIBUTING](CONTRIBUTING.md).
285306
IRC Channel: #keyd on oftc

0 commit comments

Comments
 (0)