Enhanced X11 Keyboard

Well, after living with the default keyboard mapping for Genera under X-Windows, I decided to make an optimized one for an 87-key ANSI layout. The design goals were:

  • Utilize all the 16 top row keys efficiently, with most common functions in logical places
  • Utilize the 6-key quadrant for other common functions
  • Leave the arrow keys for cursor motion (because even though I have been using Emacs for at least 26 years I like my arrow keys)

Some of the important things that these led me to were:

  • The esc key is now Genera SELECT, as that is one of the most commonly used key somewhat analoguous to Command-TAB in macOS.
  • The line key is nice to have available for use in Zmacs to start a new line and auto-indent, so put that somewhere reasonably close. In fact, I thought about putting it where the backslash
  • Genera Backspace is not very useful (equivalent to c-B) so it gets demoted to a middle area and could even be entirely removed

Some of the challenges were:

  • Modifier keys in the bottom and second to bottom row are too few. I put the most common ones on the left side (CONTROL, SUPER, META) and the less common ones on the right side along with the two more common ones (META, CONTROL, SYMBOL, HYPER). Just in case someone doesn't have a Menu/Application key, I also mapped SYMBOL to F5, but didn't put a keycap on it. I had an "extra key" and wasn't sure what to put there, and this seemed the most useful thing.
    • The SYMBOL key (Menu/Application key) probably needs to be marked as a modifier in Xquartz. Right now it autorepeats, which is very annoying. I haven't tried fixing the problem though, since the key is so rarely used. (Mostly for ≣ and ⇄ (or is it ⇆).)
  • SUSPEND, RESUME, ABORT seem like they might be more safely put in F13, F14, and F15 to prevent accidental keypresses. On the other hand, they're used so often during software development that they're easier to reach in the middle. So, they went into the middle and the shape keys into the upper right.
  • CAPS LOCK and MODE LOCK don't seem to do much useful at all. Indeed, on my Mac I generally map CAPS LOCK to "noop" wasting a completely useful key. The Symbolics 3600 keyboard puts a backspace there. I tried that, but the big problem is that Xquartz or macOS always captures the CAPS LOCK to toggle caps lock, regardless of how you map the key in Xquartz or Genera.
    • One solution would be to remap the CAPS LOCK key to something else like F16 using something like Karabiner or System Preferences. The former works great but has to be installed everywhere. The latter only lets you map it to pre-existing modifiers. If it were mapped to CONTROL (or whatever), then we could put a HYPER on the left. But, HYPER just isn't used much, so... Whatever.
  • LOCAL seems to serve no purpose on MacIvory or on X11, so it's omitted. Same with REPEAT, although it is an interesting key for people without auto-repeat.
  • COMPLETE is used frequently, but so is CLEAR INPUT (at least by me), so I wasn't sure which one belonged in the easily reached F12.
  • HELP is also used frequently. It was a challenge to decide if it should stay in the F12 spot or in the (previously) Mac standard spot.
  • GitHub doesn't work well with the character encoding of Genera. It considers those .lisp files with Genera characters (like ≣ and ⇄) to be binary and won't show them in listings.
    • I should really write an iconv plugin that will translate Unicode formats to the Genera format.
    • Another minor detail is that many Mac fonts seem to show the ≣ character with four horizontal lines instead of three. There are also two similar Unicode code points for this sort of a character. (≡ and ≣)

So, with all that said, let me share the layout: (Keyboard-Layout-Editor link)

Xquartz-87-enhanced KLE

Additionally, I made a WASD Keyboards custom layout file (which the original is an Inkscape SVG file, sources located here):

Finally, of course, there is xquartz-87-enh.lisp
in my GitHub Genera X11 Repository. The X11 Repo README.md file has installation instructions.

When I get the custom keyboard from WASD, I'll post pictures here.

I welcome thoughts and feedback on this layout.

Genera View

Here is how this keyboard looks in Genera.

:xquartz-87-enh X Mapping :xquartz-87-enh Layout 1 :xquartz-87-enh Layout 2 :xquartz-87-enh Keyboard Control

Next Steps

I'm going to try to make a version of this layout for these keyboards that I also regularly use:

  • MacBook Air/Pro laptop keyboard
  • Microsoft Sculpt keyboard

I also have a USB Sun Type 3 keyboard that I may try to create an X mapping for, and a Sparcstation 20 with a Sun Type 5 keyboard. Finally, I may try to make a similar mapping for Linux.

Douglas Fields

Writing LISP and Haskell since 1990