<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<oembed><type>rich</type><version>1.0</version><provider_name>phorkie</provider_name><provider_url>https://p.cweiske.de/</provider_url><title>Kinesis Ergo xmodmap replacement in 2026 (Wayland)</title><author_name>Christian Weiske</author_name><cache_age>86400</cache_age><width>900</width><height>900</height><html>&lt;!-- embedding all files of https://p.cweiske.de/975 --&gt;
&lt;link rel="stylesheet" href="https://p.cweiske.de/css/embed.css"/&gt;
&lt;div class="phork" id="975"&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  
&lt;div class="document"&gt;


&lt;div class="section" id="goal"&gt;
&lt;h1&gt;Goal&lt;/h1&gt;
&lt;p&gt;Custom english keyboard layout for the Kinesis Advantage2 that allows easy input of German Umlauts (äöüÄÖÜß) by pressing &amp;quot;right alt + a/o/u/s&amp;quot; or &amp;quot;right alt + shift + a/o/u/s&amp;quot;.&lt;/p&gt;
&lt;p&gt;Layout can be selected in the Gnome shell 48.7 keyboard settings.&lt;/p&gt;
&lt;/div&gt;
&lt;div class="section" id="setup"&gt;
&lt;h1&gt;Setup&lt;/h1&gt;
&lt;pre class="literal-block"&gt;
mkdir -p ~/.config/xkb/rules ~/.config/xkb/symbols
&lt;/pre&gt;
&lt;p&gt;Store the files in those directories:&lt;/p&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config/xkb/rules/evdev&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config/xkb/rules/evdev.xml&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;li&gt;&lt;tt class="docutils literal"&gt;&lt;span class="pre"&gt;~/.config/xkb/symbols/cweiske&lt;/span&gt;&lt;/tt&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;div class="section" id="links"&gt;
&lt;h1&gt;Links&lt;/h1&gt;
&lt;ul class="simple"&gt;
&lt;li&gt;&lt;a class="reference external" href="https://p.cweiske.de/154"&gt;https://p.cweiske.de/154&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://p.cweiske.de/678"&gt;https://p.cweiske.de/678&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://codeaffen.org/2023/09/16/custom-keyboard-layouts-with-xkb/"&gt;https://codeaffen.org/2023/09/16/custom-keyboard-layouts-with-xkb/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="reference external" href="https://lars.ingebrigtsen.no/2024/04/28/the-simplest-thing-in-the-world-modifing-keymaps-in-wayland/"&gt;https://lars.ingebrigtsen.no/2024/04/28/the-simplest-thing-in-the-world-modifing-keymaps-in-wayland/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;

 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/975/rev-raw/4bf268fa895df16fdd1609e6b7841e5071ee5737/README.rst" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/975#README.rst"&gt;README.rst&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  &lt;style type="text/css"&gt;&lt;/style&gt;&lt;div class="code"&gt;&lt;table class="config-xkb-rules-evdev"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td class="ln"&gt;&lt;pre class="de1"&gt;1
2
3
4
5
6
&lt;/pre&gt;&lt;/td&gt;&lt;td class="de1"&gt;&lt;pre class="de1"&gt;// Mandatory to extend the&#13;
! include %S/evdev&#13;
&amp;#160;
! option &amp;#160; &amp;#160; = symbols&#13;
&amp;#160; cweiske:kinesis = +cweiske(kinesis)&#13;
&amp;#160;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/975/rev-raw/4bf268fa895df16fdd1609e6b7841e5071ee5737/home-.config-xkb-rules-evdev" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/975#home-.config-xkb-rules-evdev"&gt;home-.config-xkb-rules-evdev&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  &lt;style type="text/css"&gt;/**
 * GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2014 Benny Baumann
 * (http://qbnz.com/highlighter/ and http://geshi.org/)
 */
.xml .de1, .xml .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}
.xml  {font-family:monospace;}
.xml .imp {font-weight: bold; color: red;}
.xml li, .xml .li1 {color: #DDD;}
.xml .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.xml .es0 {color: #000099; font-weight: bold;}
.xml .br0 {color: #66cc66;}
.xml .sy0 {color: #66cc66;}
.xml .st0 {color: #ff0000;}
.xml .sc-1 {color: #808080; font-style: italic;}
.xml .sc0 {color: #00bbdd;}
.xml .sc1 {color: #ddbb00;}
.xml .sc2 {color: #339933;}
.xml .sc3 {color: #009900;}
.xml .re0 {color: #000066;}
.xml .re1 {color: #000000; font-weight: bold;}
.xml .re2 {color: #000000; font-weight: bold;}
.xml span.xtra { display:block; }
&lt;/style&gt;&lt;div class="code"&gt;&lt;table class="xml"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td class="ln"&gt;&lt;pre class="de1"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
&lt;/pre&gt;&lt;/td&gt;&lt;td class="de1"&gt;&lt;pre class="de1"&gt;&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;?xml&lt;/span&gt; &lt;span class="re0"&gt;version&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;1.0&amp;quot;&lt;/span&gt; &lt;span class="re0"&gt;encoding&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;UTF-8&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;?&amp;gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc0"&gt;&amp;lt;!DOCTYPE xkbConfigRegistry SYSTEM &amp;quot;xkb.dtd&amp;quot;&amp;gt;&lt;/span&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;xkbConfigRegistry&lt;/span&gt; &lt;span class="re0"&gt;version&lt;/span&gt;=&lt;span class="st0"&gt;&amp;quot;1.1&amp;quot;&lt;/span&gt;&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;layoutList&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;layout&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;configItem&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;name&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;cweiske&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/name&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;shortDescription&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;en&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/shortDescription&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;description&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;cweiske + English intl., with AltGr dead keys&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/description&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;countryList&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;iso3166Id&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;US&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/iso3166Id&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;iso3166Id&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;DE&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/iso3166Id&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/countryList&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;languageList&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;iso639Id&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;eng&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/iso639Id&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;iso639Id&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;deu&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/iso639Id&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/languageList&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/configItem&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/layout&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160; &lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/layoutList&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&lt;span class="sc3"&gt;&lt;span class="re1"&gt;&amp;lt;/xkbConfigRegistry&lt;span class="re2"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;
&amp;#160;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/975/rev-raw/4bf268fa895df16fdd1609e6b7841e5071ee5737/home-.config-xkb-rules-evdev.xml" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/975#home-.config-xkb-rules-evdev.xml"&gt;home-.config-xkb-rules-evdev.xml&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  &lt;style type="text/css"&gt;&lt;/style&gt;&lt;div class="code"&gt;&lt;table class="config-xkb-symbols-cweiske"&gt;&lt;tbody&gt;&lt;tr class="li1"&gt;&lt;td class="ln"&gt;&lt;pre class="de1"&gt;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
&lt;/pre&gt;&lt;/td&gt;&lt;td class="de1"&gt;&lt;pre class="de1"&gt;partial alphanumeric_keys&#13;
xkb_symbols &amp;quot;kinesis&amp;quot; {&#13;
&amp;#160; &amp;#160; include &amp;quot;pc+us(altgr-intl)+inet(evdev)&amp;quot;&#13;
&amp;#160; &amp;#160; name[Group1] = &amp;quot;cweiske (English intl., with AltGr dead keys)&amp;quot;;&#13;
&amp;#160;
&amp;#160; &amp;#160; key &amp;lt;AC01&amp;gt; {&#13;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; type= &amp;quot;FOUR_LEVEL_ALPHABETIC&amp;quot;,&#13;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; symbols[Group1]= [ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; a, &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; A, &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;adiaeresis, &amp;#160;Adiaeresis ]&#13;
&amp;#160; &amp;#160; };&#13;
&amp;#160; &amp;#160; key &amp;lt;AD03&amp;gt; {&#13;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; type= &amp;quot;FOUR_LEVEL_ALPHABETIC&amp;quot;,&#13;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; symbols[Group1]= [ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; e, &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; E, &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;EuroSign, &amp;#160; &amp;#160;EuroSign ]&#13;
&amp;#160; &amp;#160; };&#13;
&amp;#160; &amp;#160; key &amp;lt;AD07&amp;gt; {&#13;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; type= &amp;quot;FOUR_LEVEL_ALPHABETIC&amp;quot;,&#13;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; symbols[Group1]= [ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; u, &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; U, &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;udiaeresis, &amp;#160;Udiaeresis ]&#13;
&amp;#160; &amp;#160; };&#13;
&amp;#160; &amp;#160; key &amp;lt;AD09&amp;gt; {&#13;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; type= &amp;quot;FOUR_LEVEL_ALPHABETIC&amp;quot;,&#13;
&amp;#160; &amp;#160; &amp;#160; &amp;#160; symbols[Group1]= [ &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; o, &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160; O, &amp;#160; &amp;#160; &amp;#160; &amp;#160; &amp;#160;odiaeresis, &amp;#160;Odiaeresis ]&#13;
&amp;#160; &amp;#160; };&#13;
};&#13;
&amp;#160;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/975/rev-raw/4bf268fa895df16fdd1609e6b7841e5071ee5737/home-.config-xkb-symbols-cweiske" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/975#home-.config-xkb-symbols-cweiske"&gt;home-.config-xkb-symbols-cweiske&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</html></oembed>
