<?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>custom xkb layout 2025 debian 13 cinnamon 6.4</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/939 --&gt;
&lt;link rel="stylesheet" href="https://p.cweiske.de/css/embed.css"/&gt;
&lt;div class="phork" id="939"&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="configxkbrulesevdev"&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/939/rev-raw/f4b15e1039f301998e2c93d5ff739eed8e2b24be/.config/xkb/rules/evdev" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/939#.config/xkb/rules/evdev"&gt;.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;cweiske kinesis&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/939/rev-raw/f4b15e1039f301998e2c93d5ff739eed8e2b24be/.config/xkb/rules/evdev.xml" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/939#.config/xkb/rules/evdev.xml"&gt;.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="configxkbsymbolscweiske"&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/939/rev-raw/f4b15e1039f301998e2c93d5ff739eed8e2b24be/.config/xkb/symbols/cweiske" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/939#.config/xkb/symbols/cweiske"&gt;.config/xkb/symbols/cweiske&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
    &lt;div class="phork-file"&gt;
 &lt;div class="phork-content"&gt;
  &lt;div class="code"&gt;&lt;pre class="txt"&gt;https://xkbcommon.org/doc/current/user-configuration.html&#13;
https://xkbcommon.org/doc/current/debugging.html&#13;
https://p.cweiske.de/678&#13;
https://www.mkammerer.de/blog/custom-keyboard-layouts-in-cinnamon/&#13;
https://codeaffen.org/2023/09/16/custom-keyboard-layouts-with-xkb/&#13;
&#13;
áóúé&#13;
Englisch (International, mit AltGr-Akzenttasten)&#13;
/var/lib/dpkg/info/keyboard-configuration.config&#13;
de*variant*us*altgr-intl*English (USA) - Englisch (International, mit AltGr-Akzenttasten)&#13;
&#13;
/usr/share/X11/xkb/symbols/pc&#13;
&#13;
partial alphanumeric_keys modifier_keys&#13;
xkb_symbols &amp;quot;hyper&amp;quot; {&#13;
    name[Group1]= &amp;quot;Hyper (US)&amp;quot;;&#13;
    include &amp;quot;us(basic)&amp;quot;&#13;
    key &amp;lt;PRSC&amp;gt; { [ Hyper_L ] };&#13;
    modifier_map Mod3 { &amp;lt;PRSC&amp;gt; };&#13;
};&#13;
&#13;
&#13;
&#13;
l$ setxkbmap -query&#13;
rules:      evdev&#13;
model:      pc105&#13;
layout:     us&#13;
variant:    altgr-intl&#13;
&#13;
/.config/xkb/symbol/us&#13;
&#13;
partial&#13;
xkb_symbols &amp;quot;pc+us(altgr-intl)+inet(evdev)&amp;quot; {&#13;
    include &amp;quot;pc+us(altgr-intl)+inet(evdev)&amp;quot;&#13;
    &#13;
    key &amp;lt;AD03&amp;gt; {&#13;
        type= &amp;quot;FOUR_LEVEL_ALPHABETIC&amp;quot;,&#13;
        symbols[Group1]= [               e,               E,          EuroSign,          EuroSign ]&#13;
    };&#13;
    key &amp;lt;AC01&amp;gt; {&#13;
        type= &amp;quot;FOUR_LEVEL_ALPHABETIC&amp;quot;,&#13;
        symbols[Group1]= [               a,               A,          ae,          AE ]&#13;
    };&#13;
    key &amp;lt;AD07&amp;gt; {&#13;
        type= &amp;quot;FOUR_LEVEL_ALPHABETIC&amp;quot;,&#13;
        symbols[Group1]= [               u,               U,          ue,          UE ]&#13;
    };&#13;
    key &amp;lt;AD09&amp;gt; {&#13;
        type= &amp;quot;FOUR_LEVEL_ALPHABETIC&amp;quot;,&#13;
        symbols[Group1]= [               o,               O,          oe,          OE ]&#13;
    };&#13;
}&#13;
&#13;
&#13;
&#13;
tail -f ~/.xsession-errors&#13;
xkbcli compile-keymap --include ~/.config/xkb --include-defaults --layout custom|less&#13;
xkbcli list&#13;
&#13;
&#13;
compilation errors:&#13;
&#13;
root@gpc-rom:/home/cweiske/.config/xkb# xkbcli interactive-evdev --include /home/cweiske/.config/xkb --include-defaults --layout &amp;#039;us(cweiske)&amp;#039;&#13;
&#13;
udevadm trigger --subsystem-match=input --action=change&#13;
&#13;
&#13;
emacs /usr/share/X11/xkb/rules/evdev.xml&#13;
root@gpc-rom:/usr/share/X11/xkb/symbols# ln -s /home/cweiske/.config/xkb/symbols/cweiske .&#13;
&#13;
&#13;
&#13;
cweiske@gpc-rom:~$ tail -f ~/.xsession-errors&#13;
Error:            Can&amp;#039;t find file &amp;quot;cweiske&amp;quot; for symbols include&#13;
                  Exiting&#13;
                  Abandoning symbols file &amp;quot;(null)&amp;quot;&#13;
&#13;
(csd-keyboard:447450): csd-keyboard-WARNING **: 13:28:46.817: Could not activate the XKB configuration&#13;
Error:            Can&amp;#039;t find file &amp;quot;cweiske&amp;quot; for symbols include&#13;
                  Exiting&#13;
                  Abandoning symbols file &amp;quot;(null)&amp;quot;&#13;
&#13;
(csd-keyboard:447450): csd-keyboard-WARNING **: 13:29:24.217: Could not activate the XKB configuration&#13;
 &#13;
 -&amp;gt; symlink&lt;/pre&gt;&lt;/div&gt;

 &lt;/div&gt;
 &lt;div class="phork-meta"&gt;
  &lt;a href="https://p.cweiske.de/939/rev-raw/f4b15e1039f301998e2c93d5ff739eed8e2b24be/phork0.txt" style="float: right"&gt;view raw source&lt;/a&gt;
  &lt;a href="https://p.cweiske.de/939#phork0.txt"&gt;phork0.txt&lt;/a&gt;
 &lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
</html></oembed>
