(Date: 22 March 2025)
I explain how to implement key layout ideas from the Space Cadet. I configure shift as parens, and change caps lock to a dual use key for backspace and control.
It is useful to be able to refine the keyboard configuration. In particular it is part of using Emacs to spend time defining key bindings relevant to your workflow.
Refining the keyboard key functionality is also effective at a lower level, more fundamental. The advent of sophisticed keyboard software configuration allows possibility for emulating additional physical keys, and indeed introduces multi-use functionality for keys. This is a continuation of a previous article, we covered the basics of kmonad, a keyboard utility. See kmonad. See also kanata, another software program also inspired by the QMK Firmware.
This allows us to examine various keyboards and patterns. The Space Cadet keyboard is a useful reference point for inspiration, as it was built in part with Emacs in mind, for Lisp programmers.
As an example reference, see the articles which Xah Lee has written up with some detail with screenshots on these Lisp keyboards, including in order, the SAIL keyboard, the Knight keyboard, and the Space Cadet keyboard
Here I consider implementing 2 ideas.
The first one is the idea to have ’Backspace‘ on the left of the keyboard, to the left of the key A, where Caps Lock is, almost symmetrical to the Return or Enter key. This makes sense in terms of ease of typing, being more accessible. This left backspace was called ‘BS’ on the SAIL keyboard, and ‘Rubout’ by the MIT community, on the Knight and Space cadet keyboards.
The other idea is to have lower case parens, clearly useful in Lisp. This was the case on the SAIL keyboard, situated to the right of the key P. It was apparently not on the Knight keyboard, but it was reintroduced when designing the Space cadet.
See Space Cadet designer John Kulp’s notes on space cadet design.
(3) The LISP community has been asking for years for lower case parens.
RUBOUT and RETURN are placed as on the current keyboard (I particularly like the placement of RUBOUT).
This keyboard design is going to be poured in concrete in about 2 hours, so get your comments in...
[This file was written by JLK with input from several people, most notably, BEE]
kmonad has the tap-hold functionality, so you can configure the left shift key to act as left paren when tapped, and the shift modifier when held:
The kmonad syntax is:
(defalias shift-l-paren (tap-hold-next-release 150 \( lsft) shift-r-paren (tap-hold-next-release 150 \) rsft))
The position of the Control key is a crucial choice for an Emacs user. A popular choice is to remap the Capslock key to a Control key. We can combine the two ideas. Using kmonad, you can configure the Capslock key so that it acts as Backspace on a tap, and if held, as a Control key (which is a popular choice in any event):
(defalias my-caps (tap-hold-next-release 150 bspc lctl))
We’ve covered two concrete useful cases of keyboard configuration useful for Emacs, which should be of interest to Lisp programmers. There are other effective settings which I will explain in another article.