Skip to content

Instantly share code, notes, and snippets.

@bnordgren
Created September 21, 2024 19:28
Show Gist options
  • Save bnordgren/5eca31ba17b1496908245ea212904d40 to your computer and use it in GitHub Desktop.
Save bnordgren/5eca31ba17b1496908245ea212904d40 to your computer and use it in GitHub Desktop.
Linux (Fedora/GNOME) Shavian Keyboard Setup

Summary

This document illustrates how to set up a Shavian keyboard on a Linux system without installing any new software, integrating it with the desktop environment. This will probably work on any modern linux variant, however it was developed and tested on Fedora Silverblue 40 with a GNOME desktop. This process involves user configuration rather than system wide configuration.

The keyboard implemented has a layout identical to the Shaw Imperial keyboard listed on https://shavian.info/keyboards/.

Process

  1. mkdir -p $HOME/.config/xkb/{rules,symbols}
  2. Put the file named shavian in the $HOME/.config/xkb/symbols directory
  3. Put the file named evdev.xml in the $HOME/.config/xkb/rules directory
  4. Open the activity bar and search for "keyboard" (this opens the settings dialog and chooses "Keyboard")
  5. Click on "Add Input Source..."
  6. Click on the three vertical dots at the bottom (for more choices)
  7. In the search box type Shaw and click on "Other"
  8. Click on "Shaw Imperial".

You should now see two input sources in the list. Close your windows and log out/log back in.

When you log in again, there should be a selector in the upper right hand corner next to the network/sound/power icons. Use the dropdown under the selector to pick which keyboard layout you would like to use.

In the Settings -> Keyboard window, you have the opportunity to select whether the entire system switches to the selected mapping, or whether each window can individually be associated with its own keyboard mapping.

Verify

From the Settings -> Keyboard window, if you click the three vertical dots next to the Shaw Imperial input source, you will be offered the option to "View Keyboard Layout". This will open a window that will show you which keys are mapped to which symbols. You can click on the SHIFT key (in the layout window) to see what symbols are mapped to the capital keys.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xkbConfigRegistry SYSTEM "xkb.dtd">
<xkbConfigRegistry version="1.1">
<layoutList>
<layout>
<configItem>
<name>shavian</name>
<shortDescription>shavian</shortDescription>
<description>Shaw Imperial</description>
</configItem>
</layout>
</layoutList>
</xkbConfigRegistry>
default partial alphanumeric_keys
xkb_symbols "basic" {
include "us(basic)"
name[Group1]= "Shaw Imperial";
key <TLDE> {[ U00B7, grave]}; // NAMER DOT
key <AE01> {[ U10476, 1]}; // SHAVIAN LETTER OIL
key <AE02> {[ U1046C, 2]}; // SHAVIAN LETTER OUT
key <AE03> {[ U1046B, 3]}; // SHAVIAN LETTER WOOL
key <AE04> {[ U1045C, 4]}; // SHAVIAN LETTER GAG
key <AE05> {[ U10456, 5]}; // SHAVIAN LETTER SURE
key <AE06> {[ U10457, 6]}; // SHAVIAN LETTER CHURCH
key <AE07> {[ U10459, 7]}; // SHAVIAN LETTER HUNG
key <AE08> {[ U10458, 8]}; // SHAVIAN LETTER YEA
key <AE09> {[ U10461, 9]}; // SHAVIAN LETTER JUDGE
key <AE10> {[ U10454, 0]}; // SHAVIAN LETTER THIGH
key <AD01> {[ U1046D, U10478]}; // SHAVIAN LETTER AH <SHIFT> SHAVIAN LETTER ARE
key <AD02> {[ U10477, U10479]}; // SHAVIAN LETTER AWE <SHIFT> SHAVIAN LETTER OR
key <AD03> {[ U10475, U1047F]}; // SHAVIAN LETTER OOZE <SHIFT> SHAVIAN LETTER YEW
key <AD04> {[ U10471, U1047A]}; // SHAVIAN LETTER AGE <SHIFT> SHAVIAN LETTER AIR
key <AD05> {[ U10473, U1047B]}; // SHAVIAN LETTER UP <SHIFT> SHAVIAN LETTER ERR
key <AD06> {[ U10453, yen]}; // SHAVIAN LETTER FEE
key <AD07> {[ U1045E, EuroSign]}; // SHAVIAN LETTER THEY
key <AD08> {[ U10464, question]}; // SHAVIAN LETTER LOLL
key <AD09> {[ U10465, degree]}; // SHAVIAN LETTER MIME
key <AD10> {[ U10452, percent]}; // SHAVIAN LETTER KICK
key <AD11> {[ U10462, semicolon]}; // SHAVIAN LETTER WOE
key <AD12> {[ U10463, apostrophe]}; // SHAVIAN LETTER HA-HA
key <AC01> {[ U1046A, at]}; // SHAVIAN LETTER ON
key <AC02> {[ U10468, asterisk]}; // SHAVIAN LETTER ASH
key <AC03> {[ U10466, dollar]}; // SHAVIAN LETTER IF
key <AC04> {[ U10469, U1047C]}; // SHAVIAN LETTER ADO <SHIFT> SHAVIAN LETTER ARRAY
key <AC05> {[ U10467, U00A3]}; // SHAVIAN LETTER EGG <SHIFT> Great Britain Pound
key <AC06> {[ U10450, numbersign]}; // SHAVIAN LETTER PEEP
key <AC07> {[ U1046F, ellipsis]}; // SHAVIAN LETTER NUN
key <AC08> {[ U10451, guillemotleft]}; // SHAVIAN LETTER TOT
key <AC09> {[ U1046E, guillemotright]}; // SHAVIAN LETTER ROAR
key <AC10> {[ U10455, colon]}; // SHAVIAN LETTER SO
key <AC11> {[ U1045B, quotedbl]}; // SHAVIAN LETTER DEAD
key <BKSL> {[ U10460, backslash]}; // SHAVIAN LETTER MEASURE
key <AB01> {[ U1047E, U1047D]}; // SHAVIAN LETTER IAN <SHIFT> SHAVIAN LETTER EAR
key <AB02> {[ U10472, exclam]}; // SHAVIAN LETTER ICE
key <AB03> {[ U10474, asciicircum]}; // SHAVIAN LETTER OAK
key <AB04> {[ U10470, parenleft]}; // SHAVIAN LETTER EAT
key <AB05> {[ U1045A, parenright]}; // SHAVIAN LETTER BIB
key <AB06> {[ U1045D, endash]}; // SHAVIAN LETTER VOW
key <AB07> {[ U1045F, emdash]}; // SHAVIAN LETTER ZOO
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment