{"type":"rich","version":"1.0","provider_name":"phorkie","provider_url":"https:\/\/p.cweiske.de\/","title":"xmodmap replacement in 2020","author_name":"Christian Weiske","cache_age":86400,"width":900,"height":900,"html":"<!-- embedding all files of https:\/\/p.cweiske.de\/678 -->\n<link rel=\"stylesheet\" href=\"https:\/\/p.cweiske.de\/css\/embed.css\"\/>\n<div class=\"phork\" id=\"678\">\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  \n<div class=\"document\">\n\n\n<p>XKB seems the way to go<\/p>\n<ul class=\"simple\">\n<li>convert xmodmap to xkb: <a class=\"reference external\" href=\"https:\/\/lists.debian.org\/debian-x\/2012\/09\/msg00274.html\">https:\/\/lists.debian.org\/debian-x\/2012\/09\/msg00274.html<\/a><\/li>\n<li>gnome 3 (shell) does not load xmodmap anymore: <a class=\"reference external\" href=\"https:\/\/bugzilla.redhat.com\/show_bug.cgi?id=873656\">https:\/\/bugzilla.redhat.com\/show_bug.cgi?id=873656<\/a><\/li>\n<li><a class=\"reference external\" href=\"https:\/\/medium.com\/&#64;damko\/a-simple-humble-but-comprehensive-guide-to-xkb-for-linux-6f1ad5e13450\">https:\/\/medium.com\/&#64;damko\/a-simple-humble-but-comprehensive-guide-to-xkb-for-linux-6f1ad5e13450<\/a><\/li>\n<li><a class=\"reference external\" href=\"https:\/\/michal.kosmulski.org\/computing\/articles\/custom-keyboard-layouts-xkb.html\">https:\/\/michal.kosmulski.org\/computing\/articles\/custom-keyboard-layouts-xkb.html<\/a><\/li>\n<\/ul>\n<hr class=\"docutils\" \/>\n<div class=\"section\" id=\"manual-mapping\">\n<h1>Manual mapping<\/h1>\n<p>Replacement for xmodmap-based mapping of my Kinesis Ergo (see <a class=\"reference external\" href=\"http:\/\/p.cweiske.de\/154\">http:\/\/p.cweiske.de\/154<\/a>)<\/p>\n<p>I had to switch to PC mode (pgrm+F6)<\/p>\n<p>Helpful were:<\/p>\n<ul class=\"simple\">\n<li><a class=\"reference external\" href=\"https:\/\/www.charvolant.org\/doug\/xkb\/html\/node5.html\">https:\/\/www.charvolant.org\/doug\/xkb\/html\/node5.html<\/a><\/li>\n<li><a class=\"reference external\" href=\"https:\/\/hack.org\/~mc\/writings\/xkb.html\">https:\/\/hack.org\/~mc\/writings\/xkb.html<\/a><\/li>\n<\/ul>\n<p>Howto add some german keys like \u00e4\u00f6\u00fc\u00c4\u00d6\u00dc\u00df\u20ac in the US keyboard layout:<\/p>\n<ol class=\"arabic\">\n<li><p class=\"first\">save current keyboard layout into file:<\/p>\n<pre class=\"literal-block\">\nxkbcomp -xkb :0 original-layout.xkb\n<\/pre>\n<\/li>\n<li><p class=\"first\">copy file, apply the changes from my xkb file into it<\/p>\n<\/li>\n<li><p class=\"first\">load:<\/p>\n<pre class=\"literal-block\">\nxkbcomp ~\/.config\/xkb-keyboard\/cweiske-kinesis-full.xkb $DISPLAY\n<\/pre>\n<\/li>\n<\/ol>\n<p>Key tester:<\/p>\n<p><tt class=\"docutils literal\">evtest<\/tt> (root)\nkinesis listed 3 times; 2nd is keyboard:<\/p>\n<pre class=\"literal-block\">\n\/dev\/input\/event21:   Kinesis Advantage2 Keyboard\n\/dev\/input\/event22:   Kinesis Advantage2 Keyboard\n\/dev\/input\/event23:   Kinesis Advantage2 Keyboard\n<\/pre>\n<\/div>\n<\/div>\n\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/678\/rev-raw\/d527720b3af96c4ce21ad339bb3897386ebf894a\/README.rst\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/678#README.rst\">README.rst<\/a>\n <\/div>\n<\/div>\n    <div class=\"phork-file\">\n <div class=\"phork-content\">\n  <style type=\"text\/css\"><\/style><div class=\"code\"><table class=\"xkb\"><tbody><tr class=\"li1\"><td class=\"ln\"><pre class=\"de1\">1\n2\n3\n4\n5\n6\n7\n8\n9\n10\n11\n12\n13\n14\n15\n16\n17\n18\n19\n20\n21\n22\n23\n24\n25\n26\n27\n28\n29\n30\n31\n32\n33\n34\n35\n36\n37\n38\n39\n40\n41\n42\n43\n44\n45\n46\n47\n48\n49\n50\n51\n52\n53\n54\n55\n56\n57\n58\n59\n60\n61\n<\/pre><\/td><td class=\"de1\"><pre class=\"de1\">partial\nxkb_types &quot;complete&quot; {\n&#160; &#160; type &quot;FOUR_LEVEL_RALT&quot; {\n&#160; &#160; &#160; &#160; modifiers= Shift+LevelThree;\n&#160; &#160; &#160; &#160; map[Shift]= Level2;\n&#160; &#160; &#160; &#160; map[LevelThree]= Level3;\n&#160; &#160; &#160; &#160; map[Shift+LevelThree]= Level4;\n&#160; &#160; &#160; &#160; level_name[Level1]= &quot;Base&quot;;\n&#160; &#160; &#160; &#160; level_name[Level2]= &quot;Shift&quot;;\n&#160; &#160; &#160; &#160; level_name[Level3]= &quot;Level3&quot;;\n&#160; &#160; &#160; &#160; level_name[Level4]= &quot;Shift Level3&quot;;\n&#160; &#160; };\n};\n&#160;\npartial\nxkb_symbols &quot;pc+de(nodeadkeys)+us:2+de:3+inet(evdev)&quot; {\n&#160; &#160; include &quot;pc+de(nodeadkeys)+us:2+de:3+inet(evdev)&quot;\n&#160;\n&#160; &#160; key &lt;AC01&gt; {\n&#160; &#160; &#160; &#160; type[group1]= &quot;FOUR_LEVEL_ALPHABETIC&quot;,\n&#160; &#160; &#160; &#160; type[group2]= &quot;FOUR_LEVEL_RALT&quot;,\n&#160; &#160; &#160; &#160; type[group3]= &quot;FOUR_LEVEL_ALPHABETIC&quot;,\n&#160; &#160; &#160; &#160; symbols[Group1]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; a, &#160; &#160; &#160; &#160; &#160; &#160; &#160; A, &#160; &#160; &#160; &#160; &#160; &#160; &#160;ae, &#160; &#160; &#160; &#160; &#160; &#160; &#160;AE ],\n&#160; &#160; &#160; &#160; symbols[Group2]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; a, &#160; &#160; &#160; &#160; &#160; &#160; &#160; A, &#160; &#160; &#160;adiaeresis, &#160; &#160; &#160;Adiaeresis ],\n&#160; &#160; &#160; &#160; symbols[Group3]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; a, &#160; &#160; &#160; &#160; &#160; &#160; &#160; A, &#160; &#160; &#160; &#160; &#160; &#160; &#160;ae, &#160; &#160; &#160; &#160; &#160; &#160; &#160;AE ]\n&#160; &#160; };\n&#160; &#160; key &lt;AC02&gt; {\n&#160; &#160; &#160; &#160; type[group1]= &quot;FOUR_LEVEL_SEMIALPHABETIC&quot;,\n&#160; &#160; &#160; &#160; type[group2]= &quot;FOUR_LEVEL_RALT&quot;,\n&#160; &#160; &#160; &#160; type[group3]= &quot;FOUR_LEVEL_SEMIALPHABETIC&quot;,\n&#160; &#160; &#160; &#160; symbols[Group1]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; s, &#160; &#160; &#160; &#160; &#160; &#160; &#160; S, &#160; &#160; &#160; &#160; &#160; U017F, &#160; &#160; &#160; &#160; &#160; U1E9E ],\n&#160; &#160; &#160; &#160; symbols[Group2]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; s, &#160; &#160; &#160; &#160; &#160; &#160; &#160; S, &#160; &#160; &#160; &#160; &#160;ssharp, &#160; &#160; &#160; &#160; &#160;ssharp ],\n&#160; &#160; &#160; &#160; symbols[Group3]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; s, &#160; &#160; &#160; &#160; &#160; &#160; &#160; S, &#160; &#160; &#160; &#160; &#160; U017F, &#160; &#160; &#160; &#160; &#160; U1E9E ]\n&#160; &#160; };\n&#160;\n&#160; &#160; key &lt;AD03&gt; {\n&#160; &#160; &#160; &#160; type[group1]= &quot;FOUR_LEVEL_SEMIALPHABETIC&quot;,\n&#160; &#160; &#160; &#160; type[group2]= &quot;FOUR_LEVEL_RALT&quot;,\n&#160; &#160; &#160; &#160; type[group3]= &quot;FOUR_LEVEL_SEMIALPHABETIC&quot;,\n&#160; &#160; &#160; &#160; symbols[Group1]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; e, &#160; &#160; &#160; &#160; &#160; &#160; &#160; E, &#160; &#160; &#160; &#160;EuroSign, &#160; &#160; &#160; &#160;EuroSign ],\n&#160; &#160; &#160; &#160; symbols[Group2]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; e, &#160; &#160; &#160; &#160; &#160; &#160; &#160; E, &#160; &#160; &#160; &#160;EuroSign, &#160; &#160; &#160; &#160;EuroSign ],\n&#160; &#160; &#160; &#160; symbols[Group3]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; e, &#160; &#160; &#160; &#160; &#160; &#160; &#160; E, &#160; &#160; &#160; &#160;EuroSign, &#160; &#160; &#160; &#160;EuroSign ]\n&#160; &#160; };\n&#160; &#160; key &lt;AD07&gt; {\n&#160; &#160; &#160; &#160; type[group1]= &quot;FOUR_LEVEL_SEMIALPHABETIC&quot;,\n&#160; &#160; &#160; &#160; type[group2]= &quot;FOUR_LEVEL_RALT&quot;,\n&#160; &#160; &#160; &#160; type[group3]= &quot;FOUR_LEVEL_SEMIALPHABETIC&quot;,\n&#160; &#160; &#160; &#160; symbols[Group1]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; u, &#160; &#160; &#160; &#160; &#160; &#160; &#160; U, &#160; &#160; &#160; downarrow, &#160; &#160; &#160; &#160; uparrow ],\n&#160; &#160; &#160; &#160; symbols[Group2]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; u, &#160; &#160; &#160; &#160; &#160; &#160; &#160; U, &#160; &#160; &#160;udiaeresis, &#160; &#160; &#160;Udiaeresis ],\n&#160; &#160; &#160; &#160; symbols[Group3]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; u, &#160; &#160; &#160; &#160; &#160; &#160; &#160; U, &#160; &#160; &#160; downarrow, &#160; &#160; &#160; &#160; uparrow ]\n&#160; &#160; };\n&#160; &#160; key &lt;AD09&gt; {\n&#160; &#160; &#160; &#160; type[group1]= &quot;FOUR_LEVEL_ALPHABETIC&quot;,\n&#160; &#160; &#160; &#160; type[group2]= &quot;FOUR_LEVEL_RALT&quot;,\n&#160; &#160; &#160; &#160; type[group3]= &quot;FOUR_LEVEL_ALPHABETIC&quot;,\n&#160; &#160; &#160; &#160; symbols[Group1]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; o, &#160; &#160; &#160; &#160; &#160; &#160; &#160; O, &#160; &#160; &#160; &#160; &#160;oslash, &#160; &#160; &#160; &#160; &#160;Oslash ],\n&#160; &#160; &#160; &#160; symbols[Group2]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; o, &#160; &#160; &#160; &#160; &#160; &#160; &#160; O, &#160; &#160; &#160;odiaeresis, &#160; &#160; &#160;Odiaeresis ],\n&#160; &#160; &#160; &#160; symbols[Group3]= [ &#160; &#160; &#160; &#160; &#160; &#160; &#160; o, &#160; &#160; &#160; &#160; &#160; &#160; &#160; O, &#160; &#160; &#160; &#160; &#160;oslash, &#160; &#160; &#160; &#160; &#160;Oslash ]\n&#160; &#160; };\n};\n&#160;<\/pre><\/td><\/tr><\/tbody><\/table><\/div>\n <\/div>\n <div class=\"phork-meta\">\n  <a href=\"https:\/\/p.cweiske.de\/678\/rev-raw\/d527720b3af96c4ce21ad339bb3897386ebf894a\/cweiske-kinesis.xkb\" style=\"float: right\">view raw source<\/a>\n  <a href=\"https:\/\/p.cweiske.de\/678#cweiske-kinesis.xkb\">cweiske-kinesis.xkb<\/a>\n <\/div>\n<\/div>\n<\/div>\n"}
