I recently revisited the idea of using a 65% keyboard with the purchase of a Keychon K6. The setback back then that turned me away from this form factor was the lack of dedicated grave-tilde key (`~), and as a programmer and heavy terminal user that was a deal breaker to me. Turns out it is pretty easy to remap it in Linux (Sway/Wayland).

Capslock -> ESC , ESC -> `~
65%/60% keyboards omit the function key row entirely; to retain a dedicated ESC key, lots of them[1] put ESC on the main layer of the original `~ key; one would then type ` and ~ via modifiers (e.g. Fn).
The most commonly suggested solution to resurrect `~ is to map Capslock as ESC, and then map ESC back to its original `~ designation.
Sway: Capslock -> ESC
This is easy and it is alsmost mentioned in every other Sway setup tutorial. In your sway config:
input * {
xkb_options caps:escape
}
Sway: ESC -> `~
Mapping ESC to `~ is slightly trickier as there seems to be no out-of-the-box configurations for this kind of remapping. This can be done however via a custom XKB laytout[2] [3]. We would create a custom laytout that "inherits" a standard layout (US in our case), and add custom key mappings on top.
$ cat ~/.xkb/symbols/65-percent-escape-tilde-grave
default partial alphanumeric_keys
xkb_symbols "basic" {
include "us(basic)"
name[Group1] = "English (US, 65/60% escape grave tilde)";
key <ESC> {[ grave, asciitilde ] };
};
In your Sway config, add:
input 1452:591:Keychron_Keychron_K6 xkb_layout "65-percent-escape-tilde-grave"
Save and reload your Sway config.
ANSI layout specifically? ↩︎