# xah-fly-keys

> modal and ergonomic keybinding extension for Emacs

**Wikidata**: [Q110026118](https://www.wikidata.org/wiki/Q110026118)  
**Source**: https://4ort.xyz/entity/xah-fly-keys

## Summary
xah-fly-keys is a modal and ergonomic keybinding extension designed for the GNU Emacs text editor. Written in Emacs Lisp by Chinese-American programmer Xah Lee, the software was initially released in 2013 and is distributed for free under the GNU General Public License v3.0. It functions as a minor mode that alters standard Emacs keybindings to improve typing efficiency.

## Key Facts
- **Entity Type:** Modal and ergonomic keybinding extension (Emacs minor mode).
- **Creator:** Xah Lee (Chinese-American computer programmer).
- **Initial Release:** 2013.
- **License:** GNU General Public License, version 3.0.
- **Platform:** GNU Emacs.
- **Programming Language:** Emacs Lisp.
- **Distribution:** Included in NonGNU ELPA (as of April 16, 2022) and Nixpkgs (`emacsPackages.xah-fly-keys`).
- **Versioning:** Uses a rolling release schedule (e.g., version 17.17.20220709145456 released July 9, 2022).
- **Aliases:** `emacs-xah-fly-keys`.

## FAQs
### Q: What is the purpose of xah-fly-keys?
A: xah-fly-keys is a modal and ergonomic keybinding extension for Emacs. It functions as a minor mode intended to optimize user interaction with the editor by changing how commands are mapped to keys.

### Q: Who created and maintains xah-fly-keys?
A: The extension was created by Xah Lee, a Chinese-American computer programmer, in 2013. He continues to maintain the software and holds the copyright.

### Q: How is xah-fly-keys distributed?
A: It is free software licensed under the GNU General Public License v3.0. It is available via its website, GitHub repository, and the NonGNU Emacs Lisp Package Archive (ELPA).

## Why It Matters
xah-fly-keys represents a significant customization within the Emacs ecosystem, addressing the specific need for ergonomic efficiency through modal editing. Unlike standard Emacs, which relies heavily on modifier keys (chords) that can cause strain over time, xah-fly-keys implements a modal system similar to editors like Vi/Vim but with keybindings optimized by Xah Lee for hand ergonomics.

Its inclusion in the NonGNU ELPA repository in April 2022 highlights its established status within the community, ensuring easy installation and updates for users without requiring third-party repository configuration. The project's ongoing development—evidenced by frequent rolling releases throughout 2022—demonstrates active maintenance and refinement. By offering a distinct approach to input that prioritizes physical comfort and efficiency, xah-fly-keys serves as a critical tool for power users seeking to mitigate repetitive strain injuries while maintaining the extensibility of GNU Emacs.

## Notable For
- **Ergonomic Design:** Specifically categorized as an "ergonomic" keybinding extension, distinguishing it from standard modal editing layouts.
- **NonGNU ELPA Inclusion:** Officially distributed via NonGNU ELPA, making it readily accessible to standard Emacs installations since April 2022.
- **Rolling Release Cycle:** Maintains a high-frequency update schedule, with multiple versions released in June and July 2022 alone.
- **Independent Development:** Uniquely developed and maintained solely by Xah Lee since 2013, reflecting a singular, consistent design philosophy.

## Body
### Development and Creator
xah-fly-keys was created by Xah Lee, a Chinese-American computer programmer born in 1968. The project began in 2013. It is written entirely in Emacs Lisp, the dialect of Lisp used in GNU Emacs. The software is classified as free software, allowing users to freely run, study, change, and distribute it.

### Technical Implementation
The extension operates as a "minor mode" within GNU Emacs. It is identified in package managers by the alias `emacs-xah-fly-keys` (used in Guix) and `emacsPackages.xah-fly-keys` (used in Nixpkgs).

**Licensing:**
The software is copyrighted by Xah Lee and licensed under the GNU General Public License, version 3.0.

### Availability and Source Code
xah-fly-keys is distributed through several channels:
- **NonGNU ELPA:** Distributed by NonGNU ELPA starting April 16, 2022.
- **GitHub:** Source code is available at `https://github.com/xahlee/xah-fly-keys`.
- **GNU Savannah:** Mirrored via cgit and Gitweb on GNU Savannah under the Emacs nongnu repository.
- **Official Website:** Documentation and information are hosted at `http://xahlee.info/emacs/misc/xah-fly-keys.html`.

### Version History
The project utilizes a rolling release model with timestamped version numbers. In mid-2022, the project saw frequent updates. Specific versions noted in the development timeline include:
- **17.17.20220709145456:** Released July 9, 2022.
- **17.16.20220708232047:** Released July 8, 2022.
- **17.15.20220705140319:** Released July 5, 2022.
- **17.14.20220624001507:** Released June 24, 2022.
- **17.13.20220615002353:** Released June 15, 2022.

## References

1. GNU Guix
2. [Xah-Fly-Keys version 17.17.20220709145456. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-07/msg00042.html)
3. [Xah-Fly-Keys version 17.16.20220708232047. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-07/msg00037.html)
4. [Xah-Fly-Keys version 17.15.20220705140319. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-07/msg00012.html)
5. [Xah-Fly-Keys version 17.15.20220703230000. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-07/msg00010.html)
6. [Xah-Fly-Keys version 17.15.20220628130211. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-06/msg00046.html)
7. [Xah-Fly-Keys version 17.15.20220627044859. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-06/msg00045.html)
8. [Xah-Fly-Keys version 17.14.20220624001507. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-06/msg00037.html)
9. [Xah-Fly-Keys version 17.14.20220618162127. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-06/msg00033.html)
10. [Xah-Fly-Keys version 17.14.20220618104311. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-06/msg00030.html)
11. [Xah-Fly-Keys version 17.13.20220615002353. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-06/msg00029.html)
12. [Xah-Fly-Keys version 17.13.20220613204648. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-06/msg00025.html)
13. [Xah-Fly-Keys version 17.13.20220526011611. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-05/msg00071.html)
14. [Xah-Fly-Keys version 17.9.20220516184525. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-05/msg00044.html)
15. [Xah-Fly-Keys version 17.7.20220429090059. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-04/msg00066.html)
16. [Xah-Fly-Keys version 17.6.20220426002628. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-04/msg00059.html)
17. [Xah-Fly-Keys version 17.5.20220416101054. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-04/msg00038.html)
18. [Xah-Fly-Keys version 17.5.20220415142016. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-04/msg00036.html)
19. [Xah-Fly-Keys version 17.18.20220804202952. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-08/msg00005.html)
20. [Xah-Fly-Keys version 17.19.20220806194323. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-08/msg00012.html)
21. [Xah-Fly-Keys version 17.19.20220812194903. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-08/msg00025.html)
22. [Xah-Fly-Keys version 17.20.20220819141933. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-08/msg00041.html)
23. [Xah-Fly-Keys version 17.21.20220829140316. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-08/msg00072.html)
24. [Xah-Fly-Keys version 17.22.20220909110152. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-09/msg00028.html)
25. [Xah-Fly-Keys version 17.23.20220910102958. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-09/msg00031.html)
26. [Xah-Fly-Keys version 18.0.20220911124616. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-09/msg00036.html)
27. [Xah-Fly-Keys version 18.0.20220916203045. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-09/msg00045.html)
28. [Xah-Fly-Keys version 18.0.20220918232928. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-09/msg00052.html)
29. [Xah-Fly-Keys version 18.1.20220921110635. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-09/msg00058.html)
30. [Xah-Fly-Keys version 18.2.20221004113716. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00012.html)
31. [Xah-Fly-Keys version 18.3.20221020112604. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00055.html)
32. [Xah-Fly-Keys version 19.1.20221022135313. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00061.html)
33. [Xah-Fly-Keys version 19.2.20221025102337. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00074.html)
34. [Xah-Fly-Keys version 20.0.20221025214709. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00076.html)
35. [Xah-Fly-Keys version 21.0.20221026102048. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00081.html)
36. [Xah-Fly-Keys version 21.1.20221030165154. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00096.html)
37. [Xah-Fly-Keys version 22.0.20221031102959. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-10/msg00098.html)
38. [Xah-Fly-Keys version 22.2.20221121172301. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-11/msg00060.html)
39. [Xah-Fly-Keys version 22.3.20221208105541. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-12/msg00019.html)
40. [Xah-Fly-Keys version 22.3.20221211131110. 2022](https://lists.gnu.org/archive/html/gnu-emacs-sources/2022-12/msg00027.html)
41. [Xah-Fly-Keys version 22.5.20230101184908. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00003.html)
42. [Xah-Fly-Keys version 22.5.20230113094711. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00035.html)
43. [Xah-Fly-Keys version 22.6.20230120120803. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00053.html)
44. [Xah-Fly-Keys version 22.7.20230125182943. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00069.html)
45. [Xah-Fly-Keys version 22.8.20230127142338. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-01/msg00076.html)
46. [Xah-Fly-Keys version 22.9.20230207171612. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-02/msg00022.html)
47. [Xah-Fly-Keys version 22.10.20230227111509. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-02/msg00068.html)
48. [Xah-Fly-Keys version 22.11.20230228121218. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-02/msg00069.html)
49. [Xah-Fly-Keys version 22.12.20230301220803. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-03/msg00003.html)
50. [Xah-Fly-Keys version 22.12.20230305005921. 2023](https://lists.gnu.org/archive/html/gnu-emacs-sources/2023-03/msg00011.html)