Skip to content

Commit 8cd2440

Browse files
committed
Merge pull request #1 from rhansen/readme
README.md: Document the purpose of this fork
2 parents 26527fa + f250876 commit 8cd2440

File tree

1 file changed

+33
-30
lines changed

1 file changed

+33
-30
lines changed

README.md

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

3-
# Impetus
4+
# keyd
45

5-
[![Packaging status](https://repology.org/badge/tiny-repos/keyd.svg)](https://repology.org/project/keyd/versions)
6+
A key remapping daemon for Linux.
7+
8+
## Impetus
69

710
Linux lacks a good key remapping solution. In order to achieve satisfactory
811
results a medley of tools need to be employed (e.g xcape, xmodmap) with the end
912
result often being tethered to a specified environment (X11). keyd attempts to
1013
solve this problem by providing a flexible system wide daemon which remaps keys
1114
using kernel level input primitives (evdev, uinput).
1215

13-
# Note on v2
16+
## Note on v2
1417

1518
The config format has undergone several iterations since the first
1619
release. For those migrating their configs from v1 it is best
1720
to reread the man page.
1821

1922
See also: [changelog](docs/CHANGELOG.md).
2023

21-
# Goals
24+
## Goals
2225

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

28-
# Features
31+
## Features
2932

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

5861
- A tool for programming individual key up/down events.
5962

60-
# Dependencies
63+
## Dependencies
6164

62-
## Required Build Dependencies
65+
### Required Build Dependencies
6366

6467
* Your favourite C11 compiler
6568
* POSIX-compatible `make` (e.g., [GNU
@@ -68,13 +71,13 @@ Some of the more interesting ones include:
6871
* [Python](https://www.python.org/) 3.8 or newer
6972
* [scdoc](https://git.sr.ht/~sircmpwn/scdoc)
7073

71-
## Optional Build Dependencies
74+
### Optional Build Dependencies
7275

7376
* [bash](https://www.gnu.org/software/bash/) (for the `usb-gadget` virtual
7477
keyboard driver)
7578
* [systemd](https://systemd.io/) (for system services)
7679

77-
## Optional Runtime Dependencies
80+
### Optional Runtime Dependencies
7881

7982
* [bash](https://www.gnu.org/software/bash/) (for the `usb-gadget` virtual
8083
keyboard driver)
@@ -84,23 +87,23 @@ Some of the more interesting ones include:
8487
* [dbus-python](https://pypi.org/project/dbus-python/) (only for KDE support)
8588
* [systemd](https://systemd.io/) (for system services)
8689

87-
# Installation
90+
## Installation
8891

89-
## From a Pre-Built Package
92+
### From a Pre-Built Package
9093

9194
Binary packages for some distributions exist. These are kindly maintained by
9295
community members; the keyd developers do not take responsibility for them. If
9396
you wish to add yours below, please open a PR.
9497

95-
### Alpine Linux
98+
#### Alpine Linux
9699

97100
[keyd](https://pkgs.alpinelinux.org/packages?name=keyd) package maintained by [@jirutka](https://github.com/jirutka).
98101

99-
### Arch
102+
#### Arch
100103

101104
[Arch Linux](https://archlinux.org/packages/extra/x86_64/keyd/) package maintained by Arch packagers.
102105

103-
### Debian
106+
#### Debian
104107

105108
Experimental `keyd` and `keyd-application-mapper` packages can be found in the
106109
CI build artifacts of the [work-in-progress Debian package
@@ -114,17 +117,17 @@ sponsor its upload is encouraged to contact
114117
[@rhansen](https://github.com/rhansen) (also see the [Debian ITP
115118
bug](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1060023)).
116119

117-
### Fedora
120+
#### Fedora
118121

119122
[COPR](https://copr.fedorainfracloud.org/coprs/alternateved/keyd/) package maintained by [@alternateved](https://github.com/alternateved).
120123

121-
### openSUSE
124+
#### openSUSE
122125

123126
[opensuse](https://software.opensuse.org//download.html?project=hardware&package=keyd) package maintained by [@bubbleguuum](https://github.com/bubbleguuum).
124127

125128
Easy install with `sudo zypper in keyd`.
126129

127-
### Ubuntu
130+
#### Ubuntu
128131

129132
Experimental `keyd` and `keyd-application-mapper` packages can be found in the
130133
[`ppa:keyd-team/ppa`
@@ -133,7 +136,7 @@ archive](https://launchpad.net/~keyd-team/+archive/ubuntu/ppa).
133136
If you wish to help maintain this PPA, please contact
134137
[@rhansen](https://github.com/rhansen).
135138

136-
## From Source
139+
### From Source
137140

138141
> [!NOTE]
139142
> The default branch (`master`) is the development branch; it contains the
@@ -142,7 +145,7 @@ If you wish to help maintain this PPA, please contact
142145
> announced on the [releases page](https://github.com/rvaiya/keyd/releases);
143146
> these versions are known to work.
144147
145-
### From a Source Code Distribution Tarball
148+
#### From a Source Code Distribution Tarball
146149

147150
1. Download the desired tarball:
148151
* Releases can be found on the [releases
@@ -172,7 +175,7 @@ If you wish to help maintain this PPA, please contact
172175
sudo make install
173176
```
174177

175-
### From Git
178+
#### From Git
176179

177180
1. Install [Git](https://git-scm.com/), [GNU
178181
Autoconf](https://www.gnu.org/software/autoconf/), and [GNU
@@ -200,7 +203,7 @@ If you wish to help maintain this PPA, please contact
200203
5. Follow steps 3 and later from [installation from a source code distribution
201204
tarball](#from-a-source-code-distribution-tarball).
202205

203-
# Quickstart
206+
## Quickstart
204207

205208
1. Install and start keyd (e.g `sudo systemctl enable keyd --now`)
206209

@@ -239,7 +242,7 @@ Some mice (e.g the Logitech MX Master) are capable of emitting keys and
239242
are consequently matched by the wildcard id. It may be necessary to
240243
explicitly blacklist these.
241244

242-
## Application Specific Remapping (experimental)
245+
### Application Specific Remapping (experimental)
243246

244247
- Add yourself to the keyd group:
245248

@@ -268,14 +271,14 @@ display server initialization logic (e.g ~/.xinitrc) unless you are running Gnom
268271

269272
See the man page for more details.
270273

271-
## SBC support
274+
### SBC support
272275

273276
Experimental support for single board computers (SBCs) via usb-gadget
274277
has been added courtesy of Giorgi Chavchanidze.
275278

276279
See [usb-gadget.md](src/vkbd/usb-gadget.md) for details.
277280

278-
# Sample Config
281+
## Sample Config
279282

280283
[ids]
281284

@@ -292,7 +295,7 @@ See [usb-gadget.md](src/vkbd/usb-gadget.md) for details.
292295
f = /
293296
...
294297

295-
# Recommended config
298+
## Recommended config
296299

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

322-
# FAQS
325+
## FAQS
323326

324-
## What about xmodmap/setxkbmap/*?
327+
### What about xmodmap/setxkbmap/*?
325328

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

332-
## What about [kmonad](https://github.com/kmonad/kmonad)?
335+
### What about [kmonad](https://github.com/kmonad/kmonad)?
333336

334337
keyd was written several years ago to allow me to easily experiment with
335338
different layouts on my growing keyboard collection. At the time kmonad did not
@@ -345,15 +348,15 @@ in Haskell). Having said that, it supplies (in the author's opinion) the
345348
most valuable features in less than 2000 lines of C while providing
346349
a simple language agnostic config format.
347350
348-
## Why doesn't keyd implement feature X?
351+
### Why doesn't keyd implement feature X?
349352

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

356-
# Contributing
359+
## Contributing
357360

358361
See [CONTRIBUTING](CONTRIBUTING.md).
359362
IRC Channel: #keyd on oftc

0 commit comments

Comments
 (0)