keymap-dump: don't indent after xkb_keymap {
authorRan Benita <ran234@gmail.com>
Mon, 25 Feb 2013 10:03:06 +0000 (12:03 +0200)
committerDaniel Stone <daniel@fooishbar.org>
Mon, 18 Mar 2013 22:20:03 +0000 (22:20 +0000)
xkbcomp doesn't indent there, so it's easier to diff.
Also saves some horizontal space which is sorely needed when looking at
these files (especially the xkb_symbols).

Signed-off-by: Ran Benita <ran234@gmail.com>
src/keymap-dump.c
test/data/keymaps/stringcomp.data

index 3b31d6a..380980b 100644 (file)
@@ -131,7 +131,7 @@ write_vmods(struct xkb_keymap *keymap, struct buf *buf)
             continue;
 
         if (num_vmods == 0)
-            write_buf(buf, "\t\tvirtual_modifiers ");
+            write_buf(buf, "\tvirtual_modifiers ");
         else
             write_buf(buf, ",");
         write_buf(buf, "%s", xkb_atom_text(keymap->ctx, mod->name));
@@ -153,31 +153,31 @@ write_keycodes(struct xkb_keymap *keymap, struct buf *buf)
     const struct xkb_led *led;
 
     if (keymap->keycodes_section_name)
-        write_buf(buf, "\txkb_keycodes \"%s\" {\n",
+        write_buf(buf, "xkb_keycodes \"%s\" {\n",
                   keymap->keycodes_section_name);
     else
-        write_buf(buf, "\txkb_keycodes {\n");
+        write_buf(buf, "xkb_keycodes {\n");
 
     xkb_foreach_key(key, keymap) {
         if (key->name == XKB_ATOM_NONE)
             continue;
 
-        write_buf(buf, "\t\t%-20s = %d;\n",
+        write_buf(buf, "\t%-20s = %d;\n",
                   KeyNameText(keymap->ctx, key->name), key->keycode);
     }
 
     darray_enumerate(i, led, keymap->leds)
         if (led->name != XKB_ATOM_NONE)
-            write_buf(buf, "\t\tindicator %d = \"%s\";\n",
+            write_buf(buf, "\tindicator %d = \"%s\";\n",
                       i + 1, xkb_atom_text(keymap->ctx, led->name));
 
 
     darray_foreach(alias, keymap->key_aliases)
-        write_buf(buf, "\t\talias %-14s = %s;\n",
+        write_buf(buf, "\talias %-14s = %s;\n",
                   KeyNameText(keymap->ctx, alias->alias),
                   KeyNameText(keymap->ctx, alias->real));
 
-    write_buf(buf, "\t};\n\n");
+    write_buf(buf, "};\n\n");
     return true;
 }
 
@@ -185,20 +185,20 @@ static bool
 write_types(struct xkb_keymap *keymap, struct buf *buf)
 {
     if (keymap->types_section_name)
-        write_buf(buf, "\txkb_types \"%s\" {\n\n",
+        write_buf(buf, "xkb_types \"%s\" {\n\n",
                   keymap->types_section_name);
     else
-        write_buf(buf, "\txkb_types {\n\n");
+        write_buf(buf, "xkb_types {\n\n");
 
     write_vmods(keymap, buf);
 
     for (unsigned i = 0; i < keymap->num_types; i++) {
         const struct xkb_key_type *type = &keymap->types[i];
 
-        write_buf(buf, "\t\ttype \"%s\" {\n",
+        write_buf(buf, "\ttype \"%s\" {\n",
                   xkb_atom_text(keymap->ctx, type->name));
 
-        write_buf(buf, "\t\t\tmodifiers= %s;\n",
+        write_buf(buf, "\t\tmodifiers= %s;\n",
                   ModMaskText(keymap, type->mods.mods));
 
         for (unsigned j = 0; j < type->num_entries; j++) {
@@ -213,23 +213,23 @@ write_types(struct xkb_keymap *keymap, struct buf *buf)
                 continue;
 
             str = ModMaskText(keymap, entry->mods.mods);
-            write_buf(buf, "\t\t\tmap[%s]= Level%d;\n",
+            write_buf(buf, "\t\tmap[%s]= Level%d;\n",
                       str, entry->level + 1);
 
             if (entry->preserve.mods)
-                write_buf(buf, "\t\t\tpreserve[%s]= %s;\n",
+                write_buf(buf, "\t\tpreserve[%s]= %s;\n",
                           str, ModMaskText(keymap, entry->preserve.mods));
         }
 
         for (xkb_level_index_t n = 0; n < type->num_levels; n++)
             if (type->level_names[n])
-                write_buf(buf, "\t\t\tlevel_name[Level%d]= \"%s\";\n", n + 1,
+                write_buf(buf, "\t\tlevel_name[Level%d]= \"%s\";\n", n + 1,
                           xkb_atom_text(keymap->ctx, type->level_names[n]));
 
-        write_buf(buf, "\t\t};\n");
+        write_buf(buf, "\t};\n");
     }
 
-    write_buf(buf, "\t};\n\n");
+    write_buf(buf, "};\n\n");
     return true;
 }
 
@@ -237,33 +237,33 @@ static bool
 write_led_map(struct xkb_keymap *keymap, struct buf *buf,
               const struct xkb_led *led)
 {
-    write_buf(buf, "\t\tindicator \"%s\" {\n",
+    write_buf(buf, "\tindicator \"%s\" {\n",
               xkb_atom_text(keymap->ctx, led->name));
 
     if (led->which_groups) {
         if (led->which_groups != XKB_STATE_LAYOUT_EFFECTIVE) {
-            write_buf(buf, "\t\t\twhichGroupState= %s;\n",
+            write_buf(buf, "\t\twhichGroupState= %s;\n",
                       LedStateText(keymap->ctx, led->which_groups));
         }
-        write_buf(buf, "\t\t\tgroups= 0x%02x;\n",
+        write_buf(buf, "\t\tgroups= 0x%02x;\n",
                   led->groups);
     }
 
     if (led->which_mods) {
         if (led->which_mods != XKB_STATE_MODS_EFFECTIVE) {
-            write_buf(buf, "\t\t\twhichModState= %s;\n",
+            write_buf(buf, "\t\twhichModState= %s;\n",
                       LedStateText(keymap->ctx, led->which_mods));
         }
-        write_buf(buf, "\t\t\tmodifiers= %s;\n",
+        write_buf(buf, "\t\tmodifiers= %s;\n",
                   ModMaskText(keymap, led->mods.mods));
     }
 
     if (led->ctrls) {
-        write_buf(buf, "\t\t\tcontrols= %s;\n",
+        write_buf(buf, "\t\tcontrols= %s;\n",
                   ControlMaskText(keymap->ctx, led->ctrls));
     }
 
-    write_buf(buf, "\t\t};\n");
+    write_buf(buf, "\t};\n");
     return true;
 }
 
@@ -414,34 +414,34 @@ write_compat(struct xkb_keymap *keymap, struct buf *buf)
     const struct xkb_led *led;
 
     if (keymap->compat_section_name)
-        write_buf(buf, "\txkb_compatibility \"%s\" {\n\n",
+        write_buf(buf, "xkb_compatibility \"%s\" {\n\n",
                   keymap->compat_section_name);
     else
-        write_buf(buf, "\txkb_compatibility {\n\n");
+        write_buf(buf, "xkb_compatibility {\n\n");
 
     write_vmods(keymap, buf);
 
-    write_buf(buf, "\t\tinterpret.useModMapMods= AnyLevel;\n");
-    write_buf(buf, "\t\tinterpret.repeat= False;\n");
+    write_buf(buf, "\tinterpret.useModMapMods= AnyLevel;\n");
+    write_buf(buf, "\tinterpret.repeat= False;\n");
 
     darray_foreach(si, keymap->sym_interprets) {
-        write_buf(buf, "\t\tinterpret %s+%s(%s) {\n",
+        write_buf(buf, "\tinterpret %s+%s(%s) {\n",
                   si->sym ? KeysymText(keymap->ctx, si->sym) : "Any",
                   SIMatchText(si->match),
                   ModMaskText(keymap, si->mods));
 
         if (si->virtual_mod != XKB_MOD_INVALID)
-            write_buf(buf, "\t\t\tvirtualModifier= %s;\n",
+            write_buf(buf, "\t\tvirtualModifier= %s;\n",
                       ModIndexText(keymap, si->virtual_mod));
 
         if (si->level_one_only)
-            write_buf(buf, "\t\t\tuseModMapMods=level1;\n");
+            write_buf(buf, "\t\tuseModMapMods=level1;\n");
 
         if (si->repeat)
-            write_buf(buf, "\t\t\trepeat= True;\n");
+            write_buf(buf, "\t\trepeat= True;\n");
 
-        write_action(keymap, buf, &si->action, "\t\t\taction= ", ";\n");
-        write_buf(buf, "\t\t};\n");
+        write_action(keymap, buf, &si->action, "\t\taction= ", ";\n");
+        write_buf(buf, "\t};\n");
     }
 
     darray_foreach(led, keymap->leds)
@@ -449,7 +449,7 @@ write_compat(struct xkb_keymap *keymap, struct buf *buf)
             led->mods.mods || led->ctrls)
             write_led_map(keymap, buf, led);
 
-    write_buf(buf, "\t};\n\n");
+    write_buf(buf, "};\n\n");
 
     return true;
 }
@@ -495,15 +495,15 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
     xkb_layout_index_t group;
 
     if (keymap->symbols_section_name)
-        write_buf(buf, "\txkb_symbols \"%s\" {\n\n",
+        write_buf(buf, "xkb_symbols \"%s\" {\n\n",
                   keymap->symbols_section_name);
     else
-        write_buf(buf, "\txkb_symbols {\n\n");
+        write_buf(buf, "xkb_symbols {\n\n");
 
     for (group = 0; group < keymap->num_group_names; group++)
         if (keymap->group_names[group])
             write_buf(buf,
-                      "\t\tname[group%d]=\"%s\";\n", group + 1,
+                      "\tname[group%d]=\"%s\";\n", group + 1,
                       xkb_atom_text(keymap->ctx, keymap->group_names[group]));
     if (group > 0)
         write_buf(buf, "\n");
@@ -517,7 +517,7 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
         if (key->num_groups == 0)
             continue;
 
-        write_buf(buf, "\t\tkey %-20s {", KeyNameText(keymap->ctx, key->name));
+        write_buf(buf, "\tkey %-20s {", KeyNameText(keymap->ctx, key->name));
 
         for (group = 0; group < key->num_groups; group++) {
             if (key->groups[group].explicit_type)
@@ -537,37 +537,37 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
                         continue;
 
                     type = key->groups[group].type;
-                    write_buf(buf, "\n\t\t\ttype[group%u]= \"%s\",",
+                    write_buf(buf, "\n\t\ttype[group%u]= \"%s\",",
                               group + 1,
                               xkb_atom_text(keymap->ctx, type->name));
                 }
             }
             else {
                 type = key->groups[0].type;
-                write_buf(buf, "\n\t\t\ttype= \"%s\",",
+                write_buf(buf, "\n\t\ttype= \"%s\",",
                           xkb_atom_text(keymap->ctx, type->name));
             }
         }
 
         if (key->explicit & EXPLICIT_REPEAT) {
             if (key->repeats)
-                write_buf(buf, "\n\t\t\trepeat= Yes,");
+                write_buf(buf, "\n\t\trepeat= Yes,");
             else
-                write_buf(buf, "\n\t\t\trepeat= No,");
+                write_buf(buf, "\n\t\trepeat= No,");
             simple = false;
         }
 
         if (key->vmodmap && (key->explicit & EXPLICIT_VMODMAP))
-            write_buf(buf, "\n\t\t\tvirtualMods= %s,",
+            write_buf(buf, "\n\t\tvirtualMods= %s,",
                       ModMaskText(keymap, key->vmodmap));
 
         switch (key->out_of_range_group_action) {
         case RANGE_SATURATE:
-            write_buf(buf, "\n\t\t\tgroupsClamp,");
+            write_buf(buf, "\n\t\tgroupsClamp,");
             break;
 
         case RANGE_REDIRECT:
-            write_buf(buf, "\n\t\t\tgroupsRedirect= Group%u,",
+            write_buf(buf, "\n\t\tgroupsRedirect= Group%u,",
                       key->out_of_range_group_number + 1);
             break;
 
@@ -592,12 +592,12 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
             for (group = 0; group < key->num_groups; group++) {
                 if (group != 0)
                     write_buf(buf, ",");
-                write_buf(buf, "\n\t\t\tsymbols[Group%u]= [ ", group + 1);
+                write_buf(buf, "\n\t\tsymbols[Group%u]= [ ", group + 1);
                 if (!write_keysyms(keymap, buf, key, group))
                     return false;
                 write_buf(buf, " ]");
                 if (show_actions) {
-                    write_buf(buf, ",\n\t\t\tactions[Group%u]= [ ", group + 1);
+                    write_buf(buf, ",\n\t\tactions[Group%u]= [ ", group + 1);
                     for (level = 0;
                          level < XkbKeyGroupWidth(key, group); level++) {
                         if (level != 0)
@@ -609,7 +609,7 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
                     write_buf(buf, " ]");
                 }
             }
-            write_buf(buf, "\n\t\t};\n");
+            write_buf(buf, "\n\t};\n");
         }
     }
 
@@ -622,12 +622,12 @@ write_symbols(struct xkb_keymap *keymap, struct buf *buf)
 
         darray_enumerate(i, mod, keymap->mods)
             if (key->modmap & (1 << i))
-                write_buf(buf, "\t\tmodifier_map %s { %s };\n",
+                write_buf(buf, "\tmodifier_map %s { %s };\n",
                           xkb_atom_text(keymap->ctx, mod->name),
                           KeyNameText(keymap->ctx, key->name));
     }
 
-    write_buf(buf, "\t};\n\n");
+    write_buf(buf, "};\n\n");
     return true;
 }
 
index fb0c7f2..54e7099 100644 (file)
 xkb_keymap {
-       xkb_keycodes "evdev_aliases(qwerty)" {
-               <ESC>                = 9;
-               <AE01>               = 10;
-               <AE02>               = 11;
-               <AE03>               = 12;
-               <AE04>               = 13;
-               <AE05>               = 14;
-               <AE06>               = 15;
-               <AE07>               = 16;
-               <AE08>               = 17;
-               <AE09>               = 18;
-               <AE10>               = 19;
-               <AE11>               = 20;
-               <AE12>               = 21;
-               <BKSP>               = 22;
-               <TAB>                = 23;
-               <AD01>               = 24;
-               <AD02>               = 25;
-               <AD03>               = 26;
-               <AD04>               = 27;
-               <AD05>               = 28;
-               <AD06>               = 29;
-               <AD07>               = 30;
-               <AD08>               = 31;
-               <AD09>               = 32;
-               <AD10>               = 33;
-               <AD11>               = 34;
-               <AD12>               = 35;
-               <RTRN>               = 36;
-               <LCTL>               = 37;
-               <AC01>               = 38;
-               <AC02>               = 39;
-               <AC03>               = 40;
-               <AC04>               = 41;
-               <AC05>               = 42;
-               <AC06>               = 43;
-               <AC07>               = 44;
-               <AC08>               = 45;
-               <AC09>               = 46;
-               <AC10>               = 47;
-               <AC11>               = 48;
-               <TLDE>               = 49;
-               <LFSH>               = 50;
-               <BKSL>               = 51;
-               <AB01>               = 52;
-               <AB02>               = 53;
-               <AB03>               = 54;
-               <AB04>               = 55;
-               <AB05>               = 56;
-               <AB06>               = 57;
-               <AB07>               = 58;
-               <AB08>               = 59;
-               <AB09>               = 60;
-               <AB10>               = 61;
-               <RTSH>               = 62;
-               <KPMU>               = 63;
-               <LALT>               = 64;
-               <SPCE>               = 65;
-               <CAPS>               = 66;
-               <FK01>               = 67;
-               <FK02>               = 68;
-               <FK03>               = 69;
-               <FK04>               = 70;
-               <FK05>               = 71;
-               <FK06>               = 72;
-               <FK07>               = 73;
-               <FK08>               = 74;
-               <FK09>               = 75;
-               <FK10>               = 76;
-               <NMLK>               = 77;
-               <SCLK>               = 78;
-               <KP7>                = 79;
-               <KP8>                = 80;
-               <KP9>                = 81;
-               <KPSU>               = 82;
-               <KP4>                = 83;
-               <KP5>                = 84;
-               <KP6>                = 85;
-               <KPAD>               = 86;
-               <KP1>                = 87;
-               <KP2>                = 88;
-               <KP3>                = 89;
-               <KP0>                = 90;
-               <KPDL>               = 91;
-               <LVL3>               = 92;
-               <LSGT>               = 94;
-               <FK11>               = 95;
-               <FK12>               = 96;
-               <AB11>               = 97;
-               <KATA>               = 98;
-               <HIRA>               = 99;
-               <HENK>               = 100;
-               <HKTG>               = 101;
-               <MUHE>               = 102;
-               <JPCM>               = 103;
-               <KPEN>               = 104;
-               <RCTL>               = 105;
-               <KPDV>               = 106;
-               <PRSC>               = 107;
-               <RALT>               = 108;
-               <LNFD>               = 109;
-               <HOME>               = 110;
-               <UP>                 = 111;
-               <PGUP>               = 112;
-               <LEFT>               = 113;
-               <RGHT>               = 114;
-               <END>                = 115;
-               <DOWN>               = 116;
-               <PGDN>               = 117;
-               <INS>                = 118;
-               <DELE>               = 119;
-               <I120>               = 120;
-               <MUTE>               = 121;
-               <VOL->               = 122;
-               <VOL+>               = 123;
-               <POWR>               = 124;
-               <KPEQ>               = 125;
-               <I126>               = 126;
-               <PAUS>               = 127;
-               <I128>               = 128;
-               <I129>               = 129;
-               <HNGL>               = 130;
-               <HJCV>               = 131;
-               <AE13>               = 132;
-               <LWIN>               = 133;
-               <RWIN>               = 134;
-               <COMP>               = 135;
-               <STOP>               = 136;
-               <AGAI>               = 137;
-               <PROP>               = 138;
-               <UNDO>               = 139;
-               <FRNT>               = 140;
-               <COPY>               = 141;
-               <OPEN>               = 142;
-               <PAST>               = 143;
-               <FIND>               = 144;
-               <CUT>                = 145;
-               <HELP>               = 146;
-               <I147>               = 147;
-               <I148>               = 148;
-               <I149>               = 149;
-               <I150>               = 150;
-               <I151>               = 151;
-               <I152>               = 152;
-               <I153>               = 153;
-               <I154>               = 154;
-               <I155>               = 155;
-               <I156>               = 156;
-               <I157>               = 157;
-               <I158>               = 158;
-               <I159>               = 159;
-               <I160>               = 160;
-               <I161>               = 161;
-               <I162>               = 162;
-               <I163>               = 163;
-               <I164>               = 164;
-               <I165>               = 165;
-               <I166>               = 166;
-               <I167>               = 167;
-               <I168>               = 168;
-               <I169>               = 169;
-               <I170>               = 170;
-               <I171>               = 171;
-               <I172>               = 172;
-               <I173>               = 173;
-               <I174>               = 174;
-               <I175>               = 175;
-               <I176>               = 176;
-               <I177>               = 177;
-               <I178>               = 178;
-               <I179>               = 179;
-               <I180>               = 180;
-               <I181>               = 181;
-               <I182>               = 182;
-               <I183>               = 183;
-               <I184>               = 184;
-               <I185>               = 185;
-               <I186>               = 186;
-               <I187>               = 187;
-               <I188>               = 188;
-               <I189>               = 189;
-               <I190>               = 190;
-               <FK13>               = 191;
-               <FK14>               = 192;
-               <FK15>               = 193;
-               <FK16>               = 194;
-               <FK17>               = 195;
-               <FK18>               = 196;
-               <FK19>               = 197;
-               <FK20>               = 198;
-               <FK21>               = 199;
-               <FK22>               = 200;
-               <FK23>               = 201;
-               <FK24>               = 202;
-               <MDSW>               = 203;
-               <ALT>                = 204;
-               <META>               = 205;
-               <SUPR>               = 206;
-               <HYPR>               = 207;
-               <I208>               = 208;
-               <I209>               = 209;
-               <I210>               = 210;
-               <I211>               = 211;
-               <I212>               = 212;
-               <I213>               = 213;
-               <I214>               = 214;
-               <I215>               = 215;
-               <I216>               = 216;
-               <I217>               = 217;
-               <I218>               = 218;
-               <I219>               = 219;
-               <I220>               = 220;
-               <I221>               = 221;
-               <I222>               = 222;
-               <I223>               = 223;
-               <I224>               = 224;
-               <I225>               = 225;
-               <I226>               = 226;
-               <I227>               = 227;
-               <I228>               = 228;
-               <I229>               = 229;
-               <I230>               = 230;
-               <I231>               = 231;
-               <I232>               = 232;
-               <I233>               = 233;
-               <I234>               = 234;
-               <I235>               = 235;
-               <I236>               = 236;
-               <I237>               = 237;
-               <I238>               = 238;
-               <I239>               = 239;
-               <I240>               = 240;
-               <I241>               = 241;
-               <I242>               = 242;
-               <I243>               = 243;
-               <I244>               = 244;
-               <I245>               = 245;
-               <I246>               = 246;
-               <I247>               = 247;
-               <I248>               = 248;
-               <I249>               = 249;
-               <I250>               = 250;
-               <I251>               = 251;
-               <I252>               = 252;
-               <I253>               = 253;
-               indicator 1 = "Caps Lock";
-               indicator 2 = "Num Lock";
-               indicator 3 = "Scroll Lock";
-               indicator 4 = "Compose";
-               indicator 5 = "Kana";
-               indicator 6 = "Sleep";
-               indicator 7 = "Suspend";
-               indicator 8 = "Mute";
-               indicator 9 = "Misc";
-               indicator 10 = "Mail";
-               indicator 11 = "Charging";
-               indicator 12 = "Shift Lock";
-               indicator 13 = "Group 2";
-               indicator 14 = "Mouse Keys";
-               alias <AC12>         = <BKSL>;
-               alias <MENU>         = <COMP>;
-               alias <HZTG>         = <TLDE>;
-               alias <LMTA>         = <LWIN>;
-               alias <RMTA>         = <RWIN>;
-               alias <ALGR>         = <RALT>;
-               alias <KPPT>         = <I129>;
-               alias <LatQ>         = <AD01>;
-               alias <LatW>         = <AD02>;
-               alias <LatE>         = <AD03>;
-               alias <LatR>         = <AD04>;
-               alias <LatT>         = <AD05>;
-               alias <LatY>         = <AD06>;
-               alias <LatU>         = <AD07>;
-               alias <LatI>         = <AD08>;
-               alias <LatO>         = <AD09>;
-               alias <LatP>         = <AD10>;
-               alias <LatA>         = <AC01>;
-               alias <LatS>         = <AC02>;
-               alias <LatD>         = <AC03>;
-               alias <LatF>         = <AC04>;
-               alias <LatG>         = <AC05>;
-               alias <LatH>         = <AC06>;
-               alias <LatJ>         = <AC07>;
-               alias <LatK>         = <AC08>;
-               alias <LatL>         = <AC09>;
-               alias <LatZ>         = <AB01>;
-               alias <LatX>         = <AB02>;
-               alias <LatC>         = <AB03>;
-               alias <LatV>         = <AB04>;
-               alias <LatB>         = <AB05>;
-               alias <LatN>         = <AB06>;
-               alias <LatM>         = <AB07>;
-       };
+xkb_keycodes "evdev_aliases(qwerty)" {
+       <ESC>                = 9;
+       <AE01>               = 10;
+       <AE02>               = 11;
+       <AE03>               = 12;
+       <AE04>               = 13;
+       <AE05>               = 14;
+       <AE06>               = 15;
+       <AE07>               = 16;
+       <AE08>               = 17;
+       <AE09>               = 18;
+       <AE10>               = 19;
+       <AE11>               = 20;
+       <AE12>               = 21;
+       <BKSP>               = 22;
+       <TAB>                = 23;
+       <AD01>               = 24;
+       <AD02>               = 25;
+       <AD03>               = 26;
+       <AD04>               = 27;
+       <AD05>               = 28;
+       <AD06>               = 29;
+       <AD07>               = 30;
+       <AD08>               = 31;
+       <AD09>               = 32;
+       <AD10>               = 33;
+       <AD11>               = 34;
+       <AD12>               = 35;
+       <RTRN>               = 36;
+       <LCTL>               = 37;
+       <AC01>               = 38;
+       <AC02>               = 39;
+       <AC03>               = 40;
+       <AC04>               = 41;
+       <AC05>               = 42;
+       <AC06>               = 43;
+       <AC07>               = 44;
+       <AC08>               = 45;
+       <AC09>               = 46;
+       <AC10>               = 47;
+       <AC11>               = 48;
+       <TLDE>               = 49;
+       <LFSH>               = 50;
+       <BKSL>               = 51;
+       <AB01>               = 52;
+       <AB02>               = 53;
+       <AB03>               = 54;
+       <AB04>               = 55;
+       <AB05>               = 56;
+       <AB06>               = 57;
+       <AB07>               = 58;
+       <AB08>               = 59;
+       <AB09>               = 60;
+       <AB10>               = 61;
+       <RTSH>               = 62;
+       <KPMU>               = 63;
+       <LALT>               = 64;
+       <SPCE>               = 65;
+       <CAPS>               = 66;
+       <FK01>               = 67;
+       <FK02>               = 68;
+       <FK03>               = 69;
+       <FK04>               = 70;
+       <FK05>               = 71;
+       <FK06>               = 72;
+       <FK07>               = 73;
+       <FK08>               = 74;
+       <FK09>               = 75;
+       <FK10>               = 76;
+       <NMLK>               = 77;
+       <SCLK>               = 78;
+       <KP7>                = 79;
+       <KP8>                = 80;
+       <KP9>                = 81;
+       <KPSU>               = 82;
+       <KP4>                = 83;
+       <KP5>                = 84;
+       <KP6>                = 85;
+       <KPAD>               = 86;
+       <KP1>                = 87;
+       <KP2>                = 88;
+       <KP3>                = 89;
+       <KP0>                = 90;
+       <KPDL>               = 91;
+       <LVL3>               = 92;
+       <LSGT>               = 94;
+       <FK11>               = 95;
+       <FK12>               = 96;
+       <AB11>               = 97;
+       <KATA>               = 98;
+       <HIRA>               = 99;
+       <HENK>               = 100;
+       <HKTG>               = 101;
+       <MUHE>               = 102;
+       <JPCM>               = 103;
+       <KPEN>               = 104;
+       <RCTL>               = 105;
+       <KPDV>               = 106;
+       <PRSC>               = 107;
+       <RALT>               = 108;
+       <LNFD>               = 109;
+       <HOME>               = 110;
+       <UP>                 = 111;
+       <PGUP>               = 112;
+       <LEFT>               = 113;
+       <RGHT>               = 114;
+       <END>                = 115;
+       <DOWN>               = 116;
+       <PGDN>               = 117;
+       <INS>                = 118;
+       <DELE>               = 119;
+       <I120>               = 120;
+       <MUTE>               = 121;
+       <VOL->               = 122;
+       <VOL+>               = 123;
+       <POWR>               = 124;
+       <KPEQ>               = 125;
+       <I126>               = 126;
+       <PAUS>               = 127;
+       <I128>               = 128;
+       <I129>               = 129;
+       <HNGL>               = 130;
+       <HJCV>               = 131;
+       <AE13>               = 132;
+       <LWIN>               = 133;
+       <RWIN>               = 134;
+       <COMP>               = 135;
+       <STOP>               = 136;
+       <AGAI>               = 137;
+       <PROP>               = 138;
+       <UNDO>               = 139;
+       <FRNT>               = 140;
+       <COPY>               = 141;
+       <OPEN>               = 142;
+       <PAST>               = 143;
+       <FIND>               = 144;
+       <CUT>                = 145;
+       <HELP>               = 146;
+       <I147>               = 147;
+       <I148>               = 148;
+       <I149>               = 149;
+       <I150>               = 150;
+       <I151>               = 151;
+       <I152>               = 152;
+       <I153>               = 153;
+       <I154>               = 154;
+       <I155>               = 155;
+       <I156>               = 156;
+       <I157>               = 157;
+       <I158>               = 158;
+       <I159>               = 159;
+       <I160>               = 160;
+       <I161>               = 161;
+       <I162>               = 162;
+       <I163>               = 163;
+       <I164>               = 164;
+       <I165>               = 165;
+       <I166>               = 166;
+       <I167>               = 167;
+       <I168>               = 168;
+       <I169>               = 169;
+       <I170>               = 170;
+       <I171>               = 171;
+       <I172>               = 172;
+       <I173>               = 173;
+       <I174>               = 174;
+       <I175>               = 175;
+       <I176>               = 176;
+       <I177>               = 177;
+       <I178>               = 178;
+       <I179>               = 179;
+       <I180>               = 180;
+       <I181>               = 181;
+       <I182>               = 182;
+       <I183>               = 183;
+       <I184>               = 184;
+       <I185>               = 185;
+       <I186>               = 186;
+       <I187>               = 187;
+       <I188>               = 188;
+       <I189>               = 189;
+       <I190>               = 190;
+       <FK13>               = 191;
+       <FK14>               = 192;
+       <FK15>               = 193;
+       <FK16>               = 194;
+       <FK17>               = 195;
+       <FK18>               = 196;
+       <FK19>               = 197;
+       <FK20>               = 198;
+       <FK21>               = 199;
+       <FK22>               = 200;
+       <FK23>               = 201;
+       <FK24>               = 202;
+       <MDSW>               = 203;
+       <ALT>                = 204;
+       <META>               = 205;
+       <SUPR>               = 206;
+       <HYPR>               = 207;
+       <I208>               = 208;
+       <I209>               = 209;
+       <I210>               = 210;
+       <I211>               = 211;
+       <I212>               = 212;
+       <I213>               = 213;
+       <I214>               = 214;
+       <I215>               = 215;
+       <I216>               = 216;
+       <I217>               = 217;
+       <I218>               = 218;
+       <I219>               = 219;
+       <I220>               = 220;
+       <I221>               = 221;
+       <I222>               = 222;
+       <I223>               = 223;
+       <I224>               = 224;
+       <I225>               = 225;
+       <I226>               = 226;
+       <I227>               = 227;
+       <I228>               = 228;
+       <I229>               = 229;
+       <I230>               = 230;
+       <I231>               = 231;
+       <I232>               = 232;
+       <I233>               = 233;
+       <I234>               = 234;
+       <I235>               = 235;
+       <I236>               = 236;
+       <I237>               = 237;
+       <I238>               = 238;
+       <I239>               = 239;
+       <I240>               = 240;
+       <I241>               = 241;
+       <I242>               = 242;
+       <I243>               = 243;
+       <I244>               = 244;
+       <I245>               = 245;
+       <I246>               = 246;
+       <I247>               = 247;
+       <I248>               = 248;
+       <I249>               = 249;
+       <I250>               = 250;
+       <I251>               = 251;
+       <I252>               = 252;
+       <I253>               = 253;
+       indicator 1 = "Caps Lock";
+       indicator 2 = "Num Lock";
+       indicator 3 = "Scroll Lock";
+       indicator 4 = "Compose";
+       indicator 5 = "Kana";
+       indicator 6 = "Sleep";
+       indicator 7 = "Suspend";
+       indicator 8 = "Mute";
+       indicator 9 = "Misc";
+       indicator 10 = "Mail";
+       indicator 11 = "Charging";
+       indicator 12 = "Shift Lock";
+       indicator 13 = "Group 2";
+       indicator 14 = "Mouse Keys";
+       alias <AC12>         = <BKSL>;
+       alias <MENU>         = <COMP>;
+       alias <HZTG>         = <TLDE>;
+       alias <LMTA>         = <LWIN>;
+       alias <RMTA>         = <RWIN>;
+       alias <ALGR>         = <RALT>;
+       alias <KPPT>         = <I129>;
+       alias <LatQ>         = <AD01>;
+       alias <LatW>         = <AD02>;
+       alias <LatE>         = <AD03>;
+       alias <LatR>         = <AD04>;
+       alias <LatT>         = <AD05>;
+       alias <LatY>         = <AD06>;
+       alias <LatU>         = <AD07>;
+       alias <LatI>         = <AD08>;
+       alias <LatO>         = <AD09>;
+       alias <LatP>         = <AD10>;
+       alias <LatA>         = <AC01>;
+       alias <LatS>         = <AC02>;
+       alias <LatD>         = <AC03>;
+       alias <LatF>         = <AC04>;
+       alias <LatG>         = <AC05>;
+       alias <LatH>         = <AC06>;
+       alias <LatJ>         = <AC07>;
+       alias <LatK>         = <AC08>;
+       alias <LatL>         = <AC09>;
+       alias <LatZ>         = <AB01>;
+       alias <LatX>         = <AB02>;
+       alias <LatC>         = <AB03>;
+       alias <LatV>         = <AB04>;
+       alias <LatB>         = <AB05>;
+       alias <LatN>         = <AB06>;
+       alias <LatM>         = <AB07>;
+};
 
-       xkb_types "complete" {
+xkb_types "complete" {
 
-               virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;
+       virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;
 
-               type "ONE_LEVEL" {
-                       modifiers= none;
-                       level_name[Level1]= "Any";
-               };
-               type "TWO_LEVEL" {
-                       modifiers= Shift;
-                       map[Shift]= Level2;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-               };
-               type "ALPHABETIC" {
-                       modifiers= Shift+Lock;
-                       map[Shift]= Level2;
-                       map[Lock]= Level2;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Caps";
-               };
-               type "SHIFT+ALT" {
-                       modifiers= Shift+Alt;
-                       map[Shift+Alt]= Level2;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift+Alt";
-               };
-               type "PC_CONTROL_LEVEL2" {
-                       modifiers= Control;
-                       map[Control]= Level2;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Control";
-               };
-               type "PC_LCONTROL_LEVEL2" {
-                       modifiers= LControl;
-                       map[LControl]= Level2;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "LControl";
-               };
-               type "PC_RCONTROL_LEVEL2" {
-                       modifiers= RControl;
-                       map[RControl]= Level2;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "RControl";
-               };
-               type "PC_ALT_LEVEL2" {
-                       modifiers= Alt;
-                       map[Alt]= Level2;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Alt";
-               };
-               type "PC_LALT_LEVEL2" {
-                       modifiers= LAlt;
-                       map[LAlt]= Level2;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "LAlt";
-               };
-               type "PC_RALT_LEVEL2" {
-                       modifiers= RAlt;
-                       map[RAlt]= Level2;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "RAlt";
-               };
-               type "CTRL+ALT" {
-                       modifiers= Shift+Control+Alt+LevelThree;
-                       map[Shift]= Level2;
-                       map[LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       map[Control+Alt]= Level5;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-                       level_name[Level3]= "Alt Base";
-                       level_name[Level4]= "Shift Alt";
-                       level_name[Level5]= "Ctrl+Alt";
-               };
-               type "LOCAL_EIGHT_LEVEL" {
-                       modifiers= Shift+Lock+Control+LevelThree;
-                       map[Shift]= Level2;
-                       map[Lock]= Level2;
-                       map[LevelThree]= Level3;
-                       map[Shift+Lock+LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       map[Lock+LevelThree]= Level4;
-                       map[Control]= Level5;
-                       map[Shift+Lock+Control]= Level5;
-                       map[Shift+Control]= Level6;
-                       map[Lock+Control]= Level6;
-                       map[Control+LevelThree]= Level7;
-                       map[Shift+Lock+Control+LevelThree]= Level7;
-                       map[Shift+Control+LevelThree]= Level8;
-                       map[Lock+Control+LevelThree]= Level8;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-                       level_name[Level3]= "Level3";
-                       level_name[Level4]= "Shift Level3";
-                       level_name[Level5]= "Ctrl";
-                       level_name[Level6]= "Shift Ctrl";
-                       level_name[Level7]= "Level3 Ctrl";
-                       level_name[Level8]= "Shift Level3 Ctrl";
-               };
-               type "THREE_LEVEL" {
-                       modifiers= Shift+LevelThree;
-                       map[Shift]= Level2;
-                       map[LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level3;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-                       level_name[Level3]= "Level3";
-               };
-               type "EIGHT_LEVEL" {
-                       modifiers= Shift+LevelThree+LevelFive;
-                       map[Shift]= Level2;
-                       map[LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       map[LevelFive]= Level5;
-                       map[Shift+LevelFive]= Level6;
-                       map[LevelThree+LevelFive]= Level7;
-                       map[Shift+LevelThree+LevelFive]= Level8;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-                       level_name[Level3]= "Alt Base";
-                       level_name[Level4]= "Shift Alt";
-                       level_name[Level5]= "X";
-                       level_name[Level6]= "X Shift";
-                       level_name[Level7]= "X Alt Base";
-                       level_name[Level8]= "X Shift Alt";
-               };
-               type "EIGHT_LEVEL_ALPHABETIC" {
-                       modifiers= Shift+Lock+LevelThree+LevelFive;
-                       map[Shift]= Level2;
-                       map[Lock]= Level2;
-                       map[LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       map[Lock+LevelThree]= Level4;
-                       map[Shift+Lock+LevelThree]= Level3;
-                       map[LevelFive]= Level5;
-                       map[Shift+LevelFive]= Level6;
-                       map[Lock+LevelFive]= Level6;
-                       map[LevelThree+LevelFive]= Level7;
-                       map[Shift+LevelThree+LevelFive]= Level8;
-                       map[Lock+LevelThree+LevelFive]= Level8;
-                       map[Shift+Lock+LevelThree+LevelFive]= Level7;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-                       level_name[Level3]= "Alt Base";
-                       level_name[Level4]= "Shift Alt";
-                       level_name[Level5]= "X";
-                       level_name[Level6]= "X Shift";
-                       level_name[Level7]= "X Alt Base";
-                       level_name[Level8]= "X Shift Alt";
-               };
-               type "EIGHT_LEVEL_SEMIALPHABETIC" {
-                       modifiers= Shift+Lock+LevelThree+LevelFive;
-                       map[Shift]= Level2;
-                       map[Lock]= Level2;
-                       map[LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       map[Lock+LevelThree]= Level3;
-                       preserve[Lock+LevelThree]= Lock;
-                       map[Shift+Lock+LevelThree]= Level4;
-                       preserve[Shift+Lock+LevelThree]= Lock;
-                       map[LevelFive]= Level5;
-                       map[Shift+LevelFive]= Level6;
-                       map[Lock+LevelFive]= Level6;
-                       preserve[Lock+LevelFive]= Lock;
-                       map[LevelThree+LevelFive]= Level7;
-                       map[Shift+LevelThree+LevelFive]= Level8;
-                       map[Lock+LevelThree+LevelFive]= Level7;
-                       preserve[Lock+LevelThree+LevelFive]= Lock;
-                       map[Shift+Lock+LevelThree+LevelFive]= Level8;
-                       preserve[Shift+Lock+LevelThree+LevelFive]= Lock;
-                       map[Shift+Lock+LevelFive]= Level1;
-                       preserve[Shift+Lock+LevelFive]= Lock;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-                       level_name[Level3]= "Alt Base";
-                       level_name[Level4]= "Shift Alt";
-                       level_name[Level5]= "X";
-                       level_name[Level6]= "X Shift";
-                       level_name[Level7]= "X Alt Base";
-                       level_name[Level8]= "X Shift Alt";
-               };
-               type "FOUR_LEVEL" {
-                       modifiers= Shift+LevelThree;
-                       map[Shift]= Level2;
-                       map[LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-                       level_name[Level3]= "Alt Base";
-                       level_name[Level4]= "Shift Alt";
-               };
-               type "FOUR_LEVEL_ALPHABETIC" {
-                       modifiers= Shift+Lock+LevelThree;
-                       map[Shift]= Level2;
-                       map[Lock]= Level2;
-                       map[LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       map[Lock+LevelThree]= Level4;
-                       map[Shift+Lock+LevelThree]= Level3;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-                       level_name[Level3]= "Alt Base";
-                       level_name[Level4]= "Shift Alt";
-               };
-               type "FOUR_LEVEL_SEMIALPHABETIC" {
-                       modifiers= Shift+Lock+LevelThree;
-                       map[Shift]= Level2;
-                       map[Lock]= Level2;
-                       map[LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       map[Lock+LevelThree]= Level3;
-                       preserve[Lock+LevelThree]= Lock;
-                       map[Shift+Lock+LevelThree]= Level4;
-                       preserve[Shift+Lock+LevelThree]= Lock;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-                       level_name[Level3]= "Alt Base";
-                       level_name[Level4]= "Shift Alt";
-               };
-               type "FOUR_LEVEL_MIXED_KEYPAD" {
-                       modifiers= Shift+NumLock+LevelThree;
-                       map[NumLock]= Level2;
-                       map[Shift]= Level2;
-                       map[LevelThree]= Level3;
-                       map[NumLock+LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       map[Shift+NumLock+LevelThree]= Level4;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Number";
-                       level_name[Level3]= "Alt Base";
-                       level_name[Level4]= "Shift Alt";
-               };
-               type "FOUR_LEVEL_X" {
-                       modifiers= Shift+Control+Alt+LevelThree;
-                       map[LevelThree]= Level2;
-                       map[Shift+LevelThree]= Level3;
-                       map[Control+Alt]= Level4;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Alt Base";
-                       level_name[Level3]= "Shift Alt";
-                       level_name[Level4]= "Ctrl+Alt";
-               };
-               type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
-                       modifiers= Shift+Lock+LevelThree;
-                       map[Shift]= Level2;
-                       map[Lock]= Level4;
-                       preserve[Lock]= Lock;
-                       map[LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       map[Lock+LevelThree]= Level3;
-                       preserve[Lock+LevelThree]= Lock;
-                       map[Shift+Lock+LevelThree]= Level3;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-                       level_name[Level3]= "AltGr Base";
-                       level_name[Level4]= "Shift AltGr";
-               };
-               type "FOUR_LEVEL_PLUS_LOCK" {
-                       modifiers= Shift+Lock+LevelThree;
-                       map[Shift]= Level2;
-                       map[LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       map[Lock]= Level5;
-                       map[Shift+Lock]= Level2;
-                       map[Lock+LevelThree]= Level3;
-                       map[Shift+Lock+LevelThree]= Level4;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Shift";
-                       level_name[Level3]= "Alt Base";
-                       level_name[Level4]= "Shift Alt";
-                       level_name[Level5]= "Lock";
-               };
-               type "KEYPAD" {
-                       modifiers= Shift+NumLock;
-                       map[Shift]= Level2;
-                       map[NumLock]= Level2;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Number";
-               };
-               type "FOUR_LEVEL_KEYPAD" {
-                       modifiers= Shift+NumLock+LevelThree;
-                       map[Shift]= Level2;
-                       map[NumLock]= Level2;
-                       map[LevelThree]= Level3;
-                       map[Shift+LevelThree]= Level4;
-                       map[NumLock+LevelThree]= Level4;
-                       map[Shift+NumLock+LevelThree]= Level3;
-                       level_name[Level1]= "Base";
-                       level_name[Level2]= "Number";
-                       level_name[Level3]= "Alt Base";
-                       level_name[Level4]= "Alt Number";
-               };
+       type "ONE_LEVEL" {
+               modifiers= none;
+               level_name[Level1]= "Any";
+       };
+       type "TWO_LEVEL" {
+               modifiers= Shift;
+               map[Shift]= Level2;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+       };
+       type "ALPHABETIC" {
+               modifiers= Shift+Lock;
+               map[Shift]= Level2;
+               map[Lock]= Level2;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Caps";
+       };
+       type "SHIFT+ALT" {
+               modifiers= Shift+Alt;
+               map[Shift+Alt]= Level2;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift+Alt";
+       };
+       type "PC_CONTROL_LEVEL2" {
+               modifiers= Control;
+               map[Control]= Level2;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Control";
+       };
+       type "PC_LCONTROL_LEVEL2" {
+               modifiers= LControl;
+               map[LControl]= Level2;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "LControl";
+       };
+       type "PC_RCONTROL_LEVEL2" {
+               modifiers= RControl;
+               map[RControl]= Level2;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "RControl";
+       };
+       type "PC_ALT_LEVEL2" {
+               modifiers= Alt;
+               map[Alt]= Level2;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Alt";
+       };
+       type "PC_LALT_LEVEL2" {
+               modifiers= LAlt;
+               map[LAlt]= Level2;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "LAlt";
+       };
+       type "PC_RALT_LEVEL2" {
+               modifiers= RAlt;
+               map[RAlt]= Level2;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "RAlt";
+       };
+       type "CTRL+ALT" {
+               modifiers= Shift+Control+Alt+LevelThree;
+               map[Shift]= Level2;
+               map[LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               map[Control+Alt]= Level5;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+               level_name[Level3]= "Alt Base";
+               level_name[Level4]= "Shift Alt";
+               level_name[Level5]= "Ctrl+Alt";
+       };
+       type "LOCAL_EIGHT_LEVEL" {
+               modifiers= Shift+Lock+Control+LevelThree;
+               map[Shift]= Level2;
+               map[Lock]= Level2;
+               map[LevelThree]= Level3;
+               map[Shift+Lock+LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               map[Lock+LevelThree]= Level4;
+               map[Control]= Level5;
+               map[Shift+Lock+Control]= Level5;
+               map[Shift+Control]= Level6;
+               map[Lock+Control]= Level6;
+               map[Control+LevelThree]= Level7;
+               map[Shift+Lock+Control+LevelThree]= Level7;
+               map[Shift+Control+LevelThree]= Level8;
+               map[Lock+Control+LevelThree]= Level8;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+               level_name[Level3]= "Level3";
+               level_name[Level4]= "Shift Level3";
+               level_name[Level5]= "Ctrl";
+               level_name[Level6]= "Shift Ctrl";
+               level_name[Level7]= "Level3 Ctrl";
+               level_name[Level8]= "Shift Level3 Ctrl";
+       };
+       type "THREE_LEVEL" {
+               modifiers= Shift+LevelThree;
+               map[Shift]= Level2;
+               map[LevelThree]= Level3;
+               map[Shift+LevelThree]= Level3;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+               level_name[Level3]= "Level3";
+       };
+       type "EIGHT_LEVEL" {
+               modifiers= Shift+LevelThree+LevelFive;
+               map[Shift]= Level2;
+               map[LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               map[LevelFive]= Level5;
+               map[Shift+LevelFive]= Level6;
+               map[LevelThree+LevelFive]= Level7;
+               map[Shift+LevelThree+LevelFive]= Level8;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+               level_name[Level3]= "Alt Base";
+               level_name[Level4]= "Shift Alt";
+               level_name[Level5]= "X";
+               level_name[Level6]= "X Shift";
+               level_name[Level7]= "X Alt Base";
+               level_name[Level8]= "X Shift Alt";
+       };
+       type "EIGHT_LEVEL_ALPHABETIC" {
+               modifiers= Shift+Lock+LevelThree+LevelFive;
+               map[Shift]= Level2;
+               map[Lock]= Level2;
+               map[LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               map[Lock+LevelThree]= Level4;
+               map[Shift+Lock+LevelThree]= Level3;
+               map[LevelFive]= Level5;
+               map[Shift+LevelFive]= Level6;
+               map[Lock+LevelFive]= Level6;
+               map[LevelThree+LevelFive]= Level7;
+               map[Shift+LevelThree+LevelFive]= Level8;
+               map[Lock+LevelThree+LevelFive]= Level8;
+               map[Shift+Lock+LevelThree+LevelFive]= Level7;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+               level_name[Level3]= "Alt Base";
+               level_name[Level4]= "Shift Alt";
+               level_name[Level5]= "X";
+               level_name[Level6]= "X Shift";
+               level_name[Level7]= "X Alt Base";
+               level_name[Level8]= "X Shift Alt";
        };
+       type "EIGHT_LEVEL_SEMIALPHABETIC" {
+               modifiers= Shift+Lock+LevelThree+LevelFive;
+               map[Shift]= Level2;
+               map[Lock]= Level2;
+               map[LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               map[Lock+LevelThree]= Level3;
+               preserve[Lock+LevelThree]= Lock;
+               map[Shift+Lock+LevelThree]= Level4;
+               preserve[Shift+Lock+LevelThree]= Lock;
+               map[LevelFive]= Level5;
+               map[Shift+LevelFive]= Level6;
+               map[Lock+LevelFive]= Level6;
+               preserve[Lock+LevelFive]= Lock;
+               map[LevelThree+LevelFive]= Level7;
+               map[Shift+LevelThree+LevelFive]= Level8;
+               map[Lock+LevelThree+LevelFive]= Level7;
+               preserve[Lock+LevelThree+LevelFive]= Lock;
+               map[Shift+Lock+LevelThree+LevelFive]= Level8;
+               preserve[Shift+Lock+LevelThree+LevelFive]= Lock;
+               map[Shift+Lock+LevelFive]= Level1;
+               preserve[Shift+Lock+LevelFive]= Lock;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+               level_name[Level3]= "Alt Base";
+               level_name[Level4]= "Shift Alt";
+               level_name[Level5]= "X";
+               level_name[Level6]= "X Shift";
+               level_name[Level7]= "X Alt Base";
+               level_name[Level8]= "X Shift Alt";
+       };
+       type "FOUR_LEVEL" {
+               modifiers= Shift+LevelThree;
+               map[Shift]= Level2;
+               map[LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+               level_name[Level3]= "Alt Base";
+               level_name[Level4]= "Shift Alt";
+       };
+       type "FOUR_LEVEL_ALPHABETIC" {
+               modifiers= Shift+Lock+LevelThree;
+               map[Shift]= Level2;
+               map[Lock]= Level2;
+               map[LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               map[Lock+LevelThree]= Level4;
+               map[Shift+Lock+LevelThree]= Level3;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+               level_name[Level3]= "Alt Base";
+               level_name[Level4]= "Shift Alt";
+       };
+       type "FOUR_LEVEL_SEMIALPHABETIC" {
+               modifiers= Shift+Lock+LevelThree;
+               map[Shift]= Level2;
+               map[Lock]= Level2;
+               map[LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               map[Lock+LevelThree]= Level3;
+               preserve[Lock+LevelThree]= Lock;
+               map[Shift+Lock+LevelThree]= Level4;
+               preserve[Shift+Lock+LevelThree]= Lock;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+               level_name[Level3]= "Alt Base";
+               level_name[Level4]= "Shift Alt";
+       };
+       type "FOUR_LEVEL_MIXED_KEYPAD" {
+               modifiers= Shift+NumLock+LevelThree;
+               map[NumLock]= Level2;
+               map[Shift]= Level2;
+               map[LevelThree]= Level3;
+               map[NumLock+LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               map[Shift+NumLock+LevelThree]= Level4;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Number";
+               level_name[Level3]= "Alt Base";
+               level_name[Level4]= "Shift Alt";
+       };
+       type "FOUR_LEVEL_X" {
+               modifiers= Shift+Control+Alt+LevelThree;
+               map[LevelThree]= Level2;
+               map[Shift+LevelThree]= Level3;
+               map[Control+Alt]= Level4;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Alt Base";
+               level_name[Level3]= "Shift Alt";
+               level_name[Level4]= "Ctrl+Alt";
+       };
+       type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
+               modifiers= Shift+Lock+LevelThree;
+               map[Shift]= Level2;
+               map[Lock]= Level4;
+               preserve[Lock]= Lock;
+               map[LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               map[Lock+LevelThree]= Level3;
+               preserve[Lock+LevelThree]= Lock;
+               map[Shift+Lock+LevelThree]= Level3;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+               level_name[Level3]= "AltGr Base";
+               level_name[Level4]= "Shift AltGr";
+       };
+       type "FOUR_LEVEL_PLUS_LOCK" {
+               modifiers= Shift+Lock+LevelThree;
+               map[Shift]= Level2;
+               map[LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               map[Lock]= Level5;
+               map[Shift+Lock]= Level2;
+               map[Lock+LevelThree]= Level3;
+               map[Shift+Lock+LevelThree]= Level4;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Shift";
+               level_name[Level3]= "Alt Base";
+               level_name[Level4]= "Shift Alt";
+               level_name[Level5]= "Lock";
+       };
+       type "KEYPAD" {
+               modifiers= Shift+NumLock;
+               map[Shift]= Level2;
+               map[NumLock]= Level2;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Number";
+       };
+       type "FOUR_LEVEL_KEYPAD" {
+               modifiers= Shift+NumLock+LevelThree;
+               map[Shift]= Level2;
+               map[NumLock]= Level2;
+               map[LevelThree]= Level3;
+               map[Shift+LevelThree]= Level4;
+               map[NumLock+LevelThree]= Level4;
+               map[Shift+NumLock+LevelThree]= Level3;
+               level_name[Level1]= "Base";
+               level_name[Level2]= "Number";
+               level_name[Level3]= "Alt Base";
+               level_name[Level4]= "Alt Number";
+       };
+};
 
-       xkb_compatibility "complete_caps(caps_lock)_4_misc(assign_shift_left_action)_4_level5(level5_lock)_4" {
+xkb_compatibility "complete_caps(caps_lock)_4_misc(assign_shift_left_action)_4_level5(level5_lock)_4" {
 
-               virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;
+       virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;
 
-               interpret.useModMapMods= AnyLevel;
-               interpret.repeat= False;
-               interpret ISO_Level2_Latch+Exactly(Shift) {
-                       useModMapMods=level1;
-                       action= LatchMods(modifiers=Shift,clearLocks,latchToLock);
-               };
-               interpret Shift_Lock+AnyOf(Shift+Lock) {
-                       action= LockMods(modifiers=Shift);
-               };
-               interpret Num_Lock+AnyOf(all) {
-                       virtualModifier= NumLock;
-                       action= LockMods(modifiers=NumLock);
-               };
-               interpret ISO_Lock+AnyOf(all) {
-                       action= NoAction();
-               };
-               interpret ISO_Level3_Shift+AnyOf(all) {
-                       virtualModifier= LevelThree;
-                       useModMapMods=level1;
-                       action= SetMods(modifiers=LevelThree,clearLocks);
-               };
-               interpret ISO_Level3_Latch+AnyOf(all) {
-                       virtualModifier= LevelThree;
-                       useModMapMods=level1;
-                       action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
-               };
-               interpret ISO_Level3_Lock+AnyOf(all) {
-                       virtualModifier= LevelThree;
-                       useModMapMods=level1;
-                       action= LockMods(modifiers=LevelThree);
-               };
-               interpret Alt_L+AnyOf(all) {
-                       virtualModifier= Alt;
-                       action= SetMods(modifiers=modMapMods,clearLocks);
-               };
-               interpret Alt_R+AnyOf(all) {
-                       virtualModifier= Alt;
-                       action= SetMods(modifiers=modMapMods,clearLocks);
-               };
-               interpret Meta_L+AnyOf(all) {
-                       virtualModifier= Meta;
-                       action= SetMods(modifiers=modMapMods,clearLocks);
-               };
-               interpret Meta_R+AnyOf(all) {
-                       virtualModifier= Meta;
-                       action= SetMods(modifiers=modMapMods,clearLocks);
-               };
-               interpret Super_L+AnyOf(all) {
-                       virtualModifier= Super;
-                       action= SetMods(modifiers=modMapMods,clearLocks);
-               };
-               interpret Super_R+AnyOf(all) {
-                       virtualModifier= Super;
-                       action= SetMods(modifiers=modMapMods,clearLocks);
-               };
-               interpret Hyper_L+AnyOf(all) {
-                       virtualModifier= Hyper;
-                       action= SetMods(modifiers=modMapMods,clearLocks);
-               };
-               interpret Hyper_R+AnyOf(all) {
-                       virtualModifier= Hyper;
-                       action= SetMods(modifiers=modMapMods,clearLocks);
-               };
-               interpret Scroll_Lock+AnyOf(all) {
-                       virtualModifier= ScrollLock;
-                       action= LockMods(modifiers=modMapMods);
-               };
-               interpret ISO_Level5_Shift+AnyOf(all) {
-                       virtualModifier= LevelFive;
-                       useModMapMods=level1;
-                       action= SetMods(modifiers=LevelFive,clearLocks);
-               };
-               interpret ISO_Level5_Latch+AnyOf(all) {
-                       virtualModifier= LevelFive;
-                       action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
-               };
-               interpret ISO_Level5_Lock+AnyOf(all) {
-                       virtualModifier= LevelFive;
-                       action= LockMods(modifiers=LevelFive);
-               };
-               interpret Mode_switch+AnyOfOrNone(all) {
-                       virtualModifier= AltGr;
-                       useModMapMods=level1;
-                       action= SetGroup(group=+1);
-               };
-               interpret ISO_Level3_Shift+AnyOfOrNone(all) {
-                       action= SetMods(modifiers=LevelThree,clearLocks);
-               };
-               interpret ISO_Level3_Latch+AnyOfOrNone(all) {
-                       action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
-               };
-               interpret ISO_Level3_Lock+AnyOfOrNone(all) {
-                       action= LockMods(modifiers=LevelThree);
-               };
-               interpret ISO_Group_Latch+AnyOfOrNone(all) {
-                       virtualModifier= AltGr;
-                       useModMapMods=level1;
-                       action= LatchGroup(group=2);
-               };
-               interpret ISO_Next_Group+AnyOfOrNone(all) {
-                       virtualModifier= AltGr;
-                       useModMapMods=level1;
-                       action= LockGroup(group=+1);
-               };
-               interpret ISO_Prev_Group+AnyOfOrNone(all) {
-                       virtualModifier= AltGr;
-                       useModMapMods=level1;
-                       action= LockGroup(group=-1);
-               };
-               interpret ISO_First_Group+AnyOfOrNone(all) {
-                       action= LockGroup(group=1);
-               };
-               interpret ISO_Last_Group+AnyOfOrNone(all) {
-                       action= LockGroup(group=2);
-               };
-               interpret KP_1+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=-1,y=+1);
-               };
-               interpret KP_End+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=-1,y=+1);
-               };
-               interpret KP_2+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+0,y=+1);
-               };
-               interpret KP_Down+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+0,y=+1);
-               };
-               interpret KP_3+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+1,y=+1);
-               };
-               interpret KP_Next+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+1,y=+1);
-               };
-               interpret KP_4+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=-1,y=+0);
-               };
-               interpret KP_Left+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=-1,y=+0);
-               };
-               interpret KP_6+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+1,y=+0);
-               };
-               interpret KP_Right+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+1,y=+0);
-               };
-               interpret KP_7+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=-1,y=-1);
-               };
-               interpret KP_Home+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=-1,y=-1);
-               };
-               interpret KP_8+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+0,y=-1);
-               };
-               interpret KP_Up+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+0,y=-1);
-               };
-               interpret KP_9+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+1,y=-1);
-               };
-               interpret KP_Prior+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+1,y=-1);
-               };
-               interpret KP_5+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= PtrBtn(button=default);
-               };
-               interpret KP_Begin+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= PtrBtn(button=default);
-               };
-               interpret KP_F2+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SetPtrDflt(affect=button,button=1);
-               };
-               interpret KP_Divide+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SetPtrDflt(affect=button,button=1);
-               };
-               interpret KP_F3+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SetPtrDflt(affect=button,button=2);
-               };
-               interpret KP_Multiply+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SetPtrDflt(affect=button,button=2);
-               };
-               interpret KP_F4+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SetPtrDflt(affect=button,button=3);
-               };
-               interpret KP_Subtract+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SetPtrDflt(affect=button,button=3);
-               };
-               interpret KP_Separator+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= PtrBtn(button=default,count=2);
-               };
-               interpret KP_Add+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= PtrBtn(button=default,count=2);
-               };
-               interpret KP_0+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= LockPtrBtn(button=default,affect=lock);
-               };
-               interpret KP_Insert+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= LockPtrBtn(button=default,affect=lock);
-               };
-               interpret KP_Decimal+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= LockPtrBtn(button=default,affect=unlock);
-               };
-               interpret KP_Delete+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= LockPtrBtn(button=default,affect=unlock);
-               };
-               interpret F25+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SetPtrDflt(affect=button,button=1);
-               };
-               interpret F26+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SetPtrDflt(affect=button,button=2);
-               };
-               interpret F27+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=-1,y=-1);
-               };
-               interpret F29+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+1,y=-1);
-               };
-               interpret F31+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= PtrBtn(button=default);
-               };
-               interpret F33+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=-1,y=+1);
-               };
-               interpret F35+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= MovePtr(x=+1,y=+1);
-               };
-               interpret Pointer_Button_Dflt+AnyOfOrNone(all) {
-                       action= PtrBtn(button=default);
-               };
-               interpret Pointer_Button1+AnyOfOrNone(all) {
-                       action= PtrBtn(button=1);
-               };
-               interpret Pointer_Button2+AnyOfOrNone(all) {
-                       action= PtrBtn(button=2);
-               };
-               interpret Pointer_Button3+AnyOfOrNone(all) {
-                       action= PtrBtn(button=3);
-               };
-               interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) {
-                       action= PtrBtn(button=default,count=2);
-               };
-               interpret Pointer_DblClick1+AnyOfOrNone(all) {
-                       action= PtrBtn(button=1,count=2);
-               };
-               interpret Pointer_DblClick2+AnyOfOrNone(all) {
-                       action= PtrBtn(button=2,count=2);
-               };
-               interpret Pointer_DblClick3+AnyOfOrNone(all) {
-                       action= PtrBtn(button=3,count=2);
-               };
-               interpret Pointer_Drag_Dflt+AnyOfOrNone(all) {
-                       action= LockPtrBtn(button=default,affect=both);
-               };
-               interpret Pointer_Drag1+AnyOfOrNone(all) {
-                       action= LockPtrBtn(button=1,affect=both);
-               };
-               interpret Pointer_Drag2+AnyOfOrNone(all) {
-                       action= LockPtrBtn(button=2,affect=both);
-               };
-               interpret Pointer_Drag3+AnyOfOrNone(all) {
-                       action= LockPtrBtn(button=3,affect=both);
-               };
-               interpret Pointer_EnableKeys+AnyOfOrNone(all) {
-                       action= LockControls(controls=MouseKeys);
-               };
-               interpret Pointer_Accelerate+AnyOfOrNone(all) {
-                       action= LockControls(controls=MouseKeysAccel);
-               };
-               interpret Pointer_DfltBtnNext+AnyOfOrNone(all) {
-                       action= SetPtrDflt(affect=button,button=+1);
-               };
-               interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) {
-                       action= SetPtrDflt(affect=button,button=-1);
-               };
-               interpret AccessX_Enable+AnyOfOrNone(all) {
-                       action= LockControls(controls=AccessXKeys);
-               };
-               interpret AccessX_Feedback_Enable+AnyOfOrNone(all) {
-                       action= LockControls(controls=AccessXFeedback);
-               };
-               interpret RepeatKeys_Enable+AnyOfOrNone(all) {
-                       action= LockControls(controls=RepeatKeys);
-               };
-               interpret SlowKeys_Enable+AnyOfOrNone(all) {
-                       action= LockControls(controls=SlowKeys);
-               };
-               interpret BounceKeys_Enable+AnyOfOrNone(all) {
-                       action= LockControls(controls=BounceKeys);
-               };
-               interpret StickyKeys_Enable+AnyOfOrNone(all) {
-                       action= LockControls(controls=StickyKeys);
-               };
-               interpret MouseKeys_Enable+AnyOfOrNone(all) {
-                       action= LockControls(controls=MouseKeys);
-               };
-               interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) {
-                       action= LockControls(controls=MouseKeysAccel);
-               };
-               interpret Overlay1_Enable+AnyOfOrNone(all) {
-                       action= LockControls(controls=none);
-               };
-               interpret Overlay2_Enable+AnyOfOrNone(all) {
-                       action= LockControls(controls=none);
-               };
-               interpret AudibleBell_Enable+AnyOfOrNone(all) {
-                       action= LockControls(controls=AudibleBell);
-               };
-               interpret Terminate_Server+AnyOfOrNone(all) {
-                       action= Terminate();
-               };
-               interpret Alt_L+AnyOfOrNone(all) {
-                       action= SetMods(modifiers=Alt,clearLocks);
-               };
-               interpret Alt_R+AnyOfOrNone(all) {
-                       action= SetMods(modifiers=Alt,clearLocks);
-               };
-               interpret Meta_L+AnyOfOrNone(all) {
-                       action= SetMods(modifiers=Meta,clearLocks);
-               };
-               interpret Meta_R+AnyOfOrNone(all) {
-                       action= SetMods(modifiers=Meta,clearLocks);
-               };
-               interpret Super_L+AnyOfOrNone(all) {
-                       action= SetMods(modifiers=Super,clearLocks);
-               };
-               interpret Super_R+AnyOfOrNone(all) {
-                       action= SetMods(modifiers=Super,clearLocks);
-               };
-               interpret Hyper_L+AnyOfOrNone(all) {
-                       action= SetMods(modifiers=Hyper,clearLocks);
-               };
-               interpret Hyper_R+AnyOfOrNone(all) {
-                       action= SetMods(modifiers=Hyper,clearLocks);
-               };
-               interpret Shift_L+AnyOfOrNone(all) {
-                       action= SetMods(modifiers=Shift);
-               };
-               interpret XF86Switch_VT_1+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=1,!same);
-               };
-               interpret XF86Switch_VT_2+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=2,!same);
-               };
-               interpret XF86Switch_VT_3+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=3,!same);
-               };
-               interpret XF86Switch_VT_4+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=4,!same);
-               };
-               interpret XF86Switch_VT_5+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=5,!same);
-               };
-               interpret XF86Switch_VT_6+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=6,!same);
-               };
-               interpret XF86Switch_VT_7+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=7,!same);
-               };
-               interpret XF86Switch_VT_8+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=8,!same);
-               };
-               interpret XF86Switch_VT_9+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=9,!same);
-               };
-               interpret XF86Switch_VT_10+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=10,!same);
-               };
-               interpret XF86Switch_VT_11+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=11,!same);
-               };
-               interpret XF86Switch_VT_12+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= SwitchScreen(screen=12,!same);
-               };
-               interpret XF86LogGrabInfo+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00);
-               };
-               interpret XF86LogWindowTree+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00);
-               };
-               interpret XF86Next_VMode+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
-               };
-               interpret XF86Prev_VMode+AnyOfOrNone(all) {
-                       repeat= True;
-                       action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
-               };
-               interpret ISO_Level5_Shift+AnyOfOrNone(all) {
-                       action= SetMods(modifiers=LevelFive,clearLocks);
-               };
-               interpret ISO_Level5_Latch+AnyOfOrNone(all) {
-                       action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
-               };
-               interpret ISO_Level5_Lock+AnyOfOrNone(all) {
-                       action= LockMods(modifiers=NumLock);
-               };
-               interpret Caps_Lock+AnyOfOrNone(all) {
-                       action= LockMods(modifiers=Lock);
-               };
-               interpret Any+Exactly(Lock) {
-                       action= LockMods(modifiers=Lock);
-               };
-               interpret Any+AnyOf(all) {
-                       action= SetMods(modifiers=modMapMods,clearLocks);
-               };
-               indicator "Caps Lock" {
-                       whichModState= locked;
-                       modifiers= Lock;
-               };
-               indicator "Num Lock" {
-                       whichModState= locked;
-                       modifiers= NumLock;
-               };
-               indicator "Scroll Lock" {
-                       whichModState= locked;
-                       modifiers= ScrollLock;
-               };
-               indicator "Shift Lock" {
-                       whichModState= locked;
-                       modifiers= Shift;
-               };
-               indicator "Group 2" {
-                       groups= 0xfe;
-               };
-               indicator "Mouse Keys" {
-                       controls= MouseKeys;
-               };
+       interpret.useModMapMods= AnyLevel;
+       interpret.repeat= False;
+       interpret ISO_Level2_Latch+Exactly(Shift) {
+               useModMapMods=level1;
+               action= LatchMods(modifiers=Shift,clearLocks,latchToLock);
+       };
+       interpret Shift_Lock+AnyOf(Shift+Lock) {
+               action= LockMods(modifiers=Shift);
+       };
+       interpret Num_Lock+AnyOf(all) {
+               virtualModifier= NumLock;
+               action= LockMods(modifiers=NumLock);
+       };
+       interpret ISO_Lock+AnyOf(all) {
+               action= NoAction();
+       };
+       interpret ISO_Level3_Shift+AnyOf(all) {
+               virtualModifier= LevelThree;
+               useModMapMods=level1;
+               action= SetMods(modifiers=LevelThree,clearLocks);
+       };
+       interpret ISO_Level3_Latch+AnyOf(all) {
+               virtualModifier= LevelThree;
+               useModMapMods=level1;
+               action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
+       };
+       interpret ISO_Level3_Lock+AnyOf(all) {
+               virtualModifier= LevelThree;
+               useModMapMods=level1;
+               action= LockMods(modifiers=LevelThree);
+       };
+       interpret Alt_L+AnyOf(all) {
+               virtualModifier= Alt;
+               action= SetMods(modifiers=modMapMods,clearLocks);
+       };
+       interpret Alt_R+AnyOf(all) {
+               virtualModifier= Alt;
+               action= SetMods(modifiers=modMapMods,clearLocks);
+       };
+       interpret Meta_L+AnyOf(all) {
+               virtualModifier= Meta;
+               action= SetMods(modifiers=modMapMods,clearLocks);
+       };
+       interpret Meta_R+AnyOf(all) {
+               virtualModifier= Meta;
+               action= SetMods(modifiers=modMapMods,clearLocks);
+       };
+       interpret Super_L+AnyOf(all) {
+               virtualModifier= Super;
+               action= SetMods(modifiers=modMapMods,clearLocks);
+       };
+       interpret Super_R+AnyOf(all) {
+               virtualModifier= Super;
+               action= SetMods(modifiers=modMapMods,clearLocks);
+       };
+       interpret Hyper_L+AnyOf(all) {
+               virtualModifier= Hyper;
+               action= SetMods(modifiers=modMapMods,clearLocks);
+       };
+       interpret Hyper_R+AnyOf(all) {
+               virtualModifier= Hyper;
+               action= SetMods(modifiers=modMapMods,clearLocks);
+       };
+       interpret Scroll_Lock+AnyOf(all) {
+               virtualModifier= ScrollLock;
+               action= LockMods(modifiers=modMapMods);
+       };
+       interpret ISO_Level5_Shift+AnyOf(all) {
+               virtualModifier= LevelFive;
+               useModMapMods=level1;
+               action= SetMods(modifiers=LevelFive,clearLocks);
+       };
+       interpret ISO_Level5_Latch+AnyOf(all) {
+               virtualModifier= LevelFive;
+               action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
+       };
+       interpret ISO_Level5_Lock+AnyOf(all) {
+               virtualModifier= LevelFive;
+               action= LockMods(modifiers=LevelFive);
+       };
+       interpret Mode_switch+AnyOfOrNone(all) {
+               virtualModifier= AltGr;
+               useModMapMods=level1;
+               action= SetGroup(group=+1);
+       };
+       interpret ISO_Level3_Shift+AnyOfOrNone(all) {
+               action= SetMods(modifiers=LevelThree,clearLocks);
+       };
+       interpret ISO_Level3_Latch+AnyOfOrNone(all) {
+               action= LatchMods(modifiers=LevelThree,clearLocks,latchToLock);
+       };
+       interpret ISO_Level3_Lock+AnyOfOrNone(all) {
+               action= LockMods(modifiers=LevelThree);
+       };
+       interpret ISO_Group_Latch+AnyOfOrNone(all) {
+               virtualModifier= AltGr;
+               useModMapMods=level1;
+               action= LatchGroup(group=2);
+       };
+       interpret ISO_Next_Group+AnyOfOrNone(all) {
+               virtualModifier= AltGr;
+               useModMapMods=level1;
+               action= LockGroup(group=+1);
+       };
+       interpret ISO_Prev_Group+AnyOfOrNone(all) {
+               virtualModifier= AltGr;
+               useModMapMods=level1;
+               action= LockGroup(group=-1);
+       };
+       interpret ISO_First_Group+AnyOfOrNone(all) {
+               action= LockGroup(group=1);
+       };
+       interpret ISO_Last_Group+AnyOfOrNone(all) {
+               action= LockGroup(group=2);
+       };
+       interpret KP_1+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=-1,y=+1);
+       };
+       interpret KP_End+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=-1,y=+1);
+       };
+       interpret KP_2+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+0,y=+1);
+       };
+       interpret KP_Down+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+0,y=+1);
+       };
+       interpret KP_3+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+1,y=+1);
+       };
+       interpret KP_Next+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+1,y=+1);
+       };
+       interpret KP_4+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=-1,y=+0);
+       };
+       interpret KP_Left+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=-1,y=+0);
+       };
+       interpret KP_6+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+1,y=+0);
+       };
+       interpret KP_Right+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+1,y=+0);
+       };
+       interpret KP_7+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=-1,y=-1);
+       };
+       interpret KP_Home+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=-1,y=-1);
+       };
+       interpret KP_8+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+0,y=-1);
+       };
+       interpret KP_Up+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+0,y=-1);
+       };
+       interpret KP_9+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+1,y=-1);
+       };
+       interpret KP_Prior+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+1,y=-1);
+       };
+       interpret KP_5+AnyOfOrNone(all) {
+               repeat= True;
+               action= PtrBtn(button=default);
+       };
+       interpret KP_Begin+AnyOfOrNone(all) {
+               repeat= True;
+               action= PtrBtn(button=default);
+       };
+       interpret KP_F2+AnyOfOrNone(all) {
+               repeat= True;
+               action= SetPtrDflt(affect=button,button=1);
+       };
+       interpret KP_Divide+AnyOfOrNone(all) {
+               repeat= True;
+               action= SetPtrDflt(affect=button,button=1);
+       };
+       interpret KP_F3+AnyOfOrNone(all) {
+               repeat= True;
+               action= SetPtrDflt(affect=button,button=2);
+       };
+       interpret KP_Multiply+AnyOfOrNone(all) {
+               repeat= True;
+               action= SetPtrDflt(affect=button,button=2);
+       };
+       interpret KP_F4+AnyOfOrNone(all) {
+               repeat= True;
+               action= SetPtrDflt(affect=button,button=3);
+       };
+       interpret KP_Subtract+AnyOfOrNone(all) {
+               repeat= True;
+               action= SetPtrDflt(affect=button,button=3);
+       };
+       interpret KP_Separator+AnyOfOrNone(all) {
+               repeat= True;
+               action= PtrBtn(button=default,count=2);
+       };
+       interpret KP_Add+AnyOfOrNone(all) {
+               repeat= True;
+               action= PtrBtn(button=default,count=2);
+       };
+       interpret KP_0+AnyOfOrNone(all) {
+               repeat= True;
+               action= LockPtrBtn(button=default,affect=lock);
+       };
+       interpret KP_Insert+AnyOfOrNone(all) {
+               repeat= True;
+               action= LockPtrBtn(button=default,affect=lock);
+       };
+       interpret KP_Decimal+AnyOfOrNone(all) {
+               repeat= True;
+               action= LockPtrBtn(button=default,affect=unlock);
+       };
+       interpret KP_Delete+AnyOfOrNone(all) {
+               repeat= True;
+               action= LockPtrBtn(button=default,affect=unlock);
+       };
+       interpret F25+AnyOfOrNone(all) {
+               repeat= True;
+               action= SetPtrDflt(affect=button,button=1);
+       };
+       interpret F26+AnyOfOrNone(all) {
+               repeat= True;
+               action= SetPtrDflt(affect=button,button=2);
+       };
+       interpret F27+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=-1,y=-1);
+       };
+       interpret F29+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+1,y=-1);
+       };
+       interpret F31+AnyOfOrNone(all) {
+               repeat= True;
+               action= PtrBtn(button=default);
+       };
+       interpret F33+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=-1,y=+1);
+       };
+       interpret F35+AnyOfOrNone(all) {
+               repeat= True;
+               action= MovePtr(x=+1,y=+1);
+       };
+       interpret Pointer_Button_Dflt+AnyOfOrNone(all) {
+               action= PtrBtn(button=default);
+       };
+       interpret Pointer_Button1+AnyOfOrNone(all) {
+               action= PtrBtn(button=1);
+       };
+       interpret Pointer_Button2+AnyOfOrNone(all) {
+               action= PtrBtn(button=2);
+       };
+       interpret Pointer_Button3+AnyOfOrNone(all) {
+               action= PtrBtn(button=3);
+       };
+       interpret Pointer_DblClick_Dflt+AnyOfOrNone(all) {
+               action= PtrBtn(button=default,count=2);
+       };
+       interpret Pointer_DblClick1+AnyOfOrNone(all) {
+               action= PtrBtn(button=1,count=2);
+       };
+       interpret Pointer_DblClick2+AnyOfOrNone(all) {
+               action= PtrBtn(button=2,count=2);
+       };
+       interpret Pointer_DblClick3+AnyOfOrNone(all) {
+               action= PtrBtn(button=3,count=2);
+       };
+       interpret Pointer_Drag_Dflt+AnyOfOrNone(all) {
+               action= LockPtrBtn(button=default,affect=both);
+       };
+       interpret Pointer_Drag1+AnyOfOrNone(all) {
+               action= LockPtrBtn(button=1,affect=both);
+       };
+       interpret Pointer_Drag2+AnyOfOrNone(all) {
+               action= LockPtrBtn(button=2,affect=both);
+       };
+       interpret Pointer_Drag3+AnyOfOrNone(all) {
+               action= LockPtrBtn(button=3,affect=both);
+       };
+       interpret Pointer_EnableKeys+AnyOfOrNone(all) {
+               action= LockControls(controls=MouseKeys);
+       };
+       interpret Pointer_Accelerate+AnyOfOrNone(all) {
+               action= LockControls(controls=MouseKeysAccel);
+       };
+       interpret Pointer_DfltBtnNext+AnyOfOrNone(all) {
+               action= SetPtrDflt(affect=button,button=+1);
+       };
+       interpret Pointer_DfltBtnPrev+AnyOfOrNone(all) {
+               action= SetPtrDflt(affect=button,button=-1);
+       };
+       interpret AccessX_Enable+AnyOfOrNone(all) {
+               action= LockControls(controls=AccessXKeys);
+       };
+       interpret AccessX_Feedback_Enable+AnyOfOrNone(all) {
+               action= LockControls(controls=AccessXFeedback);
+       };
+       interpret RepeatKeys_Enable+AnyOfOrNone(all) {
+               action= LockControls(controls=RepeatKeys);
+       };
+       interpret SlowKeys_Enable+AnyOfOrNone(all) {
+               action= LockControls(controls=SlowKeys);
+       };
+       interpret BounceKeys_Enable+AnyOfOrNone(all) {
+               action= LockControls(controls=BounceKeys);
+       };
+       interpret StickyKeys_Enable+AnyOfOrNone(all) {
+               action= LockControls(controls=StickyKeys);
+       };
+       interpret MouseKeys_Enable+AnyOfOrNone(all) {
+               action= LockControls(controls=MouseKeys);
+       };
+       interpret MouseKeys_Accel_Enable+AnyOfOrNone(all) {
+               action= LockControls(controls=MouseKeysAccel);
+       };
+       interpret Overlay1_Enable+AnyOfOrNone(all) {
+               action= LockControls(controls=none);
+       };
+       interpret Overlay2_Enable+AnyOfOrNone(all) {
+               action= LockControls(controls=none);
+       };
+       interpret AudibleBell_Enable+AnyOfOrNone(all) {
+               action= LockControls(controls=AudibleBell);
+       };
+       interpret Terminate_Server+AnyOfOrNone(all) {
+               action= Terminate();
+       };
+       interpret Alt_L+AnyOfOrNone(all) {
+               action= SetMods(modifiers=Alt,clearLocks);
+       };
+       interpret Alt_R+AnyOfOrNone(all) {
+               action= SetMods(modifiers=Alt,clearLocks);
+       };
+       interpret Meta_L+AnyOfOrNone(all) {
+               action= SetMods(modifiers=Meta,clearLocks);
        };
+       interpret Meta_R+AnyOfOrNone(all) {
+               action= SetMods(modifiers=Meta,clearLocks);
+       };
+       interpret Super_L+AnyOfOrNone(all) {
+               action= SetMods(modifiers=Super,clearLocks);
+       };
+       interpret Super_R+AnyOfOrNone(all) {
+               action= SetMods(modifiers=Super,clearLocks);
+       };
+       interpret Hyper_L+AnyOfOrNone(all) {
+               action= SetMods(modifiers=Hyper,clearLocks);
+       };
+       interpret Hyper_R+AnyOfOrNone(all) {
+               action= SetMods(modifiers=Hyper,clearLocks);
+       };
+       interpret Shift_L+AnyOfOrNone(all) {
+               action= SetMods(modifiers=Shift);
+       };
+       interpret XF86Switch_VT_1+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=1,!same);
+       };
+       interpret XF86Switch_VT_2+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=2,!same);
+       };
+       interpret XF86Switch_VT_3+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=3,!same);
+       };
+       interpret XF86Switch_VT_4+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=4,!same);
+       };
+       interpret XF86Switch_VT_5+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=5,!same);
+       };
+       interpret XF86Switch_VT_6+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=6,!same);
+       };
+       interpret XF86Switch_VT_7+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=7,!same);
+       };
+       interpret XF86Switch_VT_8+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=8,!same);
+       };
+       interpret XF86Switch_VT_9+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=9,!same);
+       };
+       interpret XF86Switch_VT_10+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=10,!same);
+       };
+       interpret XF86Switch_VT_11+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=11,!same);
+       };
+       interpret XF86Switch_VT_12+AnyOfOrNone(all) {
+               repeat= True;
+               action= SwitchScreen(screen=12,!same);
+       };
+       interpret XF86LogGrabInfo+AnyOfOrNone(all) {
+               repeat= True;
+               action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x47,data[3]=0x72,data[4]=0x62,data[5]=0x73,data[6]=0x00);
+       };
+       interpret XF86LogWindowTree+AnyOfOrNone(all) {
+               repeat= True;
+               action= Private(type=0x86,data[0]=0x50,data[1]=0x72,data[2]=0x57,data[3]=0x69,data[4]=0x6e,data[5]=0x73,data[6]=0x00);
+       };
+       interpret XF86Next_VMode+AnyOfOrNone(all) {
+               repeat= True;
+               action= Private(type=0x86,data[0]=0x2b,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
+       };
+       interpret XF86Prev_VMode+AnyOfOrNone(all) {
+               repeat= True;
+               action= Private(type=0x86,data[0]=0x2d,data[1]=0x56,data[2]=0x4d,data[3]=0x6f,data[4]=0x64,data[5]=0x65,data[6]=0x00);
+       };
+       interpret ISO_Level5_Shift+AnyOfOrNone(all) {
+               action= SetMods(modifiers=LevelFive,clearLocks);
+       };
+       interpret ISO_Level5_Latch+AnyOfOrNone(all) {
+               action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
+       };
+       interpret ISO_Level5_Lock+AnyOfOrNone(all) {
+               action= LockMods(modifiers=NumLock);
+       };
+       interpret Caps_Lock+AnyOfOrNone(all) {
+               action= LockMods(modifiers=Lock);
+       };
+       interpret Any+Exactly(Lock) {
+               action= LockMods(modifiers=Lock);
+       };
+       interpret Any+AnyOf(all) {
+               action= SetMods(modifiers=modMapMods,clearLocks);
+       };
+       indicator "Caps Lock" {
+               whichModState= locked;
+               modifiers= Lock;
+       };
+       indicator "Num Lock" {
+               whichModState= locked;
+               modifiers= NumLock;
+       };
+       indicator "Scroll Lock" {
+               whichModState= locked;
+               modifiers= ScrollLock;
+       };
+       indicator "Shift Lock" {
+               whichModState= locked;
+               modifiers= Shift;
+       };
+       indicator "Group 2" {
+               groups= 0xfe;
+       };
+       indicator "Mouse Keys" {
+               controls= MouseKeys;
+       };
+};
 
-       xkb_symbols "pc_us_ru_2_ca(multix)_3_de(neo)_4_inet(evdev)" {
+xkb_symbols "pc_us_ru_2_ca(multix)_3_de(neo)_4_inet(evdev)" {
 
-               name[group1]="English (US)";
-               name[group2]="Russian";
-               name[group3]="Canadian Multilingual";
-               name[group4]="German (Neo 2)";
+       name[group1]="English (US)";
+       name[group2]="Russian";
+       name[group3]="Canadian Multilingual";
+       name[group4]="German (Neo 2)";
 
-               key <ESC>                {      [          Escape ] };
-               key <AE01>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [               1,          exclam ],
-                       symbols[Group2]= [               1,          exclam ],
-                       symbols[Group3]= [               1,          exclam,       plusminus,        NoSymbol,     onesuperior,      exclamdown,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               1,          degree,     onesuperior,    onesubscript,     ordfeminine,        NoSymbol,         notsign,        NoSymbol ]
-               };
-               key <AE02>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [               2,              at ],
-                       symbols[Group2]= [               2,        quotedbl ],
-                       symbols[Group3]= [               2,              at,              at,        NoSymbol,     twosuperior,        NoSymbol,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               2,         section,     twosuperior,    twosubscript,       masculine,        NoSymbol,       logicalor,        NoSymbol ]
-               };
-               key <AE03>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [               3,      numbersign ],
-                       symbols[Group2]= [               3,      numerosign ],
-                       symbols[Group3]= [               3,      numbersign,        sterling,        NoSymbol,   threesuperior,        sterling,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               3,           U2113,   threesuperior,  threesubscript,      numerosign,        NoSymbol,      logicaland,        NoSymbol ]
-               };
-               key <AE04>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [               4,          dollar ],
-                       symbols[Group2]= [               4,       semicolon ],
-                       symbols[Group3]= [               4,          dollar,            cent,        NoSymbol,      onequarter,        currency,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               4,  guillemotright,           U203A,    femalesymbol,        NoSymbol,        NoSymbol,           U22A5,        NoSymbol ]
-               };
-               key <AE05>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [               5,         percent ],
-                       symbols[Group2]= [               5,         percent ],
-                       symbols[Group3]= [               5,         percent,        currency,        NoSymbol,         onehalf,    threeeighths,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               5,   guillemotleft,           U2039,      malesymbol,  periodcentered,        NoSymbol,           U2221,        NoSymbol ]
-               };
-               key <AE06>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [ { H, E, L, L, O },     asciicircum ],
-                       symbols[Group2]= [               6,           colon ],
-                       symbols[Group3]= [               6,        question,         notsign,        NoSymbol,   threequarters,     fiveeighths,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               6,          dollar,            cent,           U26A5,        sterling,        NoSymbol,           U2225,        NoSymbol ]
-               };
-               key <AE07>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [ { Y, E, S, space, T, H, I, S, space, I, S, space, D, O, G },       ampersand ],
-                       symbols[Group2]= [               7,        question ],
-                       symbols[Group3]= [               7,       ampersand,       braceleft,        NoSymbol,        NoSymbol,    seveneighths,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               7,        EuroSign,             yen,           U03F0,        currency,        NoSymbol,      rightarrow,        NoSymbol ]
-               };
-               key <AE08>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [               8,        asterisk ],
-                       symbols[Group2]= [               8,        asterisk ],
-                       symbols[Group3]= [               8,        asterisk,      braceright,        NoSymbol,        NoSymbol,       trademark,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               8, doublelowquotemark, singlelowquotemark,           U27E8,             Tab,    ISO_Left_Tab,           U221E,        NoSymbol ]
-               };
-               key <AE09>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [               9,       parenleft ],
-                       symbols[Group2]= [               9,       parenleft ],
-                       symbols[Group3]= [               9,       parenleft,     bracketleft,        NoSymbol,        NoSymbol,       plusminus,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               9, leftdoublequotemark, leftsinglequotemark,           U27E9,       KP_Divide,       KP_Divide,       variation,        NoSymbol ]
-               };
-               key <AE10>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [               0,      parenright ],
-                       symbols[Group2]= [               0,      parenright ],
-                       symbols[Group3]= [               0,      parenright,    bracketright,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               0, rightdoublequotemark, rightsinglequotemark,   zerosubscript,     KP_Multiply,     KP_Multiply,        emptyset,        NoSymbol ]
-               };
-               key <AE11>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [           minus,      underscore ],
-                       symbols[Group2]= [           minus,      underscore ],
-                       symbols[Group3]= [           minus,      underscore,         onehalf,        NoSymbol,        NoSymbol,    questiondown,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [           minus,          emdash,        NoSymbol,           U2011,     KP_Subtract,     KP_Subtract,          hyphen,        NoSymbol ]
-               };
-               key <AE12>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [           equal,            plus ],
-                       symbols[Group2]= [           equal,            plus ],
-                       symbols[Group3]= [           equal,            plus,         notsign,        NoSymbol,    dead_cedilla,     dead_ogonek,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [      dead_grave,    dead_cedilla,  dead_abovering, dead_abovereversedcomma,  dead_diaeresis,        NoSymbol,     dead_macron,        NoSymbol ]
-               };
-               key <BKSP>               {      [       BackSpace,       BackSpace ] };
-               key <TAB>                {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [             Tab,    ISO_Left_Tab ],
-                       symbols[Group2]= [             Tab,    ISO_Left_Tab ],
-                       symbols[Group3]= [             Tab,    ISO_Left_Tab ],
-                       symbols[Group4]= [             Tab,    ISO_Left_Tab,       Multi_key, ISO_Level5_Lock,        NoSymbol,        NoSymbol,        NoSymbol, ISO_Level5_Lock ]
-               };
-               key <AD01>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               q,               Q ],
-                       symbols[Group2]= [ Cyrillic_shorti, Cyrillic_SHORTI ],
-                       symbols[Group3]= [               q,               Q,        NoSymbol,        NoSymbol,        NoSymbol,     Greek_OMEGA,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               x,               X,        ellipsis,        Greek_xi,           Prior,           Prior,        Greek_XI,        NoSymbol ]
-               };
-               key <AD02>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               w,               W ],
-                       symbols[Group2]= [    Cyrillic_tse,    Cyrillic_TSE ],
-                       symbols[Group3]= [               w,               W,        NoSymbol,        NoSymbol,         lstroke,         Lstroke,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               v,               V,      underscore,        NoSymbol,       BackSpace,       BackSpace,         radical,        NoSymbol ]
-               };
-               key <AD03>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               e,               E ],
-                       symbols[Group2]= [      Cyrillic_u,      Cyrillic_U ],
-                       symbols[Group3]= [               e,               E,        NoSymbol,        NoSymbol,              oe,              OE,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               l,               L,     bracketleft,     Greek_lamda,              Up,              Up,     Greek_LAMDA,        NoSymbol ]
-               };
-               key <AD04>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               r,               R ],
-                       symbols[Group2]= [     Cyrillic_ka,     Cyrillic_KA ],
-                       symbols[Group3]= [               r,               R,        NoSymbol,        NoSymbol,       paragraph,      registered,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               c,               C,    bracketright,       Greek_chi,          Delete,          Delete,           U2102,        NoSymbol ]
-               };
-               key <AD05>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               t,               T ],
-                       symbols[Group2]= [     Cyrillic_ie,     Cyrillic_IE ],
-                       symbols[Group3]= [               t,               T,        NoSymbol,        NoSymbol,          tslash,          Tslash,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               w,               W,     asciicircum,     Greek_omega,            Next,            Next,     Greek_OMEGA,        NoSymbol ]
-               };
-               key <AD06>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               y,               Y ],
-                       symbols[Group2]= [     Cyrillic_en,     Cyrillic_EN ],
-                       symbols[Group3]= [               y,               Y,        NoSymbol,        NoSymbol,       leftarrow,             yen,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               k,               K,          exclam,     Greek_kappa,      exclamdown,        NoSymbol,        multiply,        NoSymbol ]
-               };
-               key <AD07>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               u,               U ],
-                       symbols[Group2]= [    Cyrillic_ghe,    Cyrillic_GHE ],
-                       symbols[Group3]= [               u,               U,        NoSymbol,        NoSymbol,       downarrow,         uparrow,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               h,               H,            less,       Greek_psi,            KP_7,            KP_7,       Greek_PSI,        NoSymbol ]
-               };
-               key <AD08>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               i,               I ],
-                       symbols[Group2]= [    Cyrillic_sha,    Cyrillic_SHA ],
-                       symbols[Group3]= [               i,               I,        NoSymbol,        NoSymbol,      rightarrow,        idotless,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               g,               G,         greater,     Greek_gamma,            KP_8,            KP_8,     Greek_GAMMA,        NoSymbol ]
-               };
-               key <AD09>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               o,               O ],
-                       symbols[Group2]= [  Cyrillic_shcha,  Cyrillic_SHCHA ],
-                       symbols[Group3]= [               o,               O,         section,        NoSymbol,          oslash,          Oslash,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               f,               F,           equal,       Greek_phi,            KP_9,            KP_9,       Greek_PHI,        NoSymbol ]
-               };
-               key <AD10>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               p,               P ],
-                       symbols[Group2]= [     Cyrillic_ze,     Cyrillic_ZE ],
-                       symbols[Group3]= [               p,               P,       paragraph,        NoSymbol,           thorn,           THORN,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               q,               Q,       ampersand,           U03D5,          KP_Add,          KP_Add,           U211A,        NoSymbol ]
-               };
-               key <AD11>               {
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [     bracketleft,       braceleft ],
-                       symbols[Group2]= [     Cyrillic_ha,     Cyrillic_HA ],
-                       symbols[Group3]= [ dead_circumflex,  dead_diaeresis,      dead_grave,        NoSymbol,        NoSymbol,  dead_abovering,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [          ssharp,           U1E9E,           U017F, Greek_finalsmallsigma,           U2212,        NoSymbol,             jot,        NoSymbol ]
-               };
-               key <AD12>               {
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [    bracketright,      braceright ],
-                       symbols[Group2]= [ Cyrillic_hardsign, Cyrillic_HARDSIGN ],
-                       symbols[Group3]= [        ccedilla,        Ccedilla,      asciitilde,        NoSymbol,      dead_tilde,     dead_macron,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [      dead_acute,      dead_tilde,     dead_stroke, dead_abovecomma, dead_doubleacute,        NoSymbol,      dead_breve,        NoSymbol ]
-               };
-               key <RTRN>               {      [          Return ] };
-               key <LCTL>               {      [       Control_L ] };
-               key <AC01>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               a,               A ],
-                       symbols[Group2]= [     Cyrillic_ef,     Cyrillic_EF ],
-                       symbols[Group3]= [               a,               A,        NoSymbol,        NoSymbol,              ae,              AE,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               u,               U,       backslash,        NoSymbol,            Home,            Home,      includedin,        NoSymbol ]
-               };
-               key <AC02>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               s,               S ],
-                       symbols[Group2]= [   Cyrillic_yeru,   Cyrillic_YERU ],
-                       symbols[Group3]= [               s,               S,        NoSymbol,        NoSymbol,          ssharp,         section,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               i,               I,           slash,      Greek_iota,            Left,            Left,        integral,        NoSymbol ]
-               };
-               key <AC03>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               d,               D ],
-                       symbols[Group2]= [     Cyrillic_ve,     Cyrillic_VE ],
-                       symbols[Group3]= [               d,               D,        NoSymbol,        NoSymbol,             eth,             ETH,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               a,               A,       braceleft,     Greek_alpha,            Down,            Down,           U2200,        NoSymbol ]
-               };
-               key <AC04>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               f,               F ],
-                       symbols[Group2]= [      Cyrillic_a,      Cyrillic_A ],
-                       symbols[Group3]= [               f,               F,        NoSymbol,        NoSymbol,        NoSymbol,     ordfeminine,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               e,               E,      braceright,   Greek_epsilon,           Right,           Right,           U2203,        NoSymbol ]
-               };
-               key <AC05>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               g,               G ],
-                       symbols[Group2]= [     Cyrillic_pe,     Cyrillic_PE ],
-                       symbols[Group3]= [               g,               G,        NoSymbol,        NoSymbol,             eng,             ENG,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               o,               O,        asterisk,   Greek_omicron,             End,             End,       elementof,        NoSymbol ]
-               };
-               key <AC06>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               h,               H ],
-                       symbols[Group2]= [     Cyrillic_er,     Cyrillic_ER ],
-                       symbols[Group3]= [               h,               H,        NoSymbol,        NoSymbol,         hstroke,         Hstroke,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               s,               S,        question,     Greek_sigma,    questiondown,        NoSymbol,     Greek_SIGMA,        NoSymbol ]
-               };
-               key <AC07>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               j,               J ],
-                       symbols[Group2]= [      Cyrillic_o,      Cyrillic_O ],
-                       symbols[Group3]= [               j,               J,        NoSymbol,        NoSymbol,           U0133,           U0132,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               n,               N,       parenleft,        Greek_nu,            KP_4,            KP_4,           U2115,        NoSymbol ]
-               };
-               key <AC08>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               k,               K ],
-                       symbols[Group2]= [     Cyrillic_el,     Cyrillic_EL ],
-                       symbols[Group3]= [               k,               K,        NoSymbol,        NoSymbol,             kra,        NoSymbol,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               r,               R,      parenright,       Greek_rho,            KP_5,            KP_5,           U211D,        NoSymbol ]
-               };
-               key <AC09>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               l,               L ],
-                       symbols[Group2]= [     Cyrillic_de,     Cyrillic_DE ],
-                       symbols[Group3]= [               l,               L,        NoSymbol,        NoSymbol,           U0140,           U013F,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               t,               T,           minus,       Greek_tau,            KP_6,            KP_6, partialderivative,        NoSymbol ]
-               };
-               key <AC10>               {
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [       semicolon,           colon ],
-                       symbols[Group2]= [    Cyrillic_zhe,    Cyrillic_ZHE ],
-                       symbols[Group3]= [       semicolon,           colon,          degree,        NoSymbol,      dead_acute, dead_doubleacute,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               d,               D,           colon,     Greek_delta,    KP_Separator,           comma,     Greek_DELTA,        NoSymbol ]
-               };
-               key <AC11>               {
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [      apostrophe,        quotedbl ],
-                       symbols[Group2]= [      Cyrillic_e,      Cyrillic_E ],
-                       symbols[Group3]= [          egrave,          Egrave,       braceleft,        NoSymbol,        NoSymbol,      dead_caron,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               y,               Y,              at,   Greek_upsilon,          period,      KP_Decimal,           nabla,        NoSymbol ]
-               };
-               key <TLDE>               {
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [           grave,      asciitilde ],
-                       symbols[Group2]= [     Cyrillic_io,     Cyrillic_IO ],
-                       symbols[Group3]= [           slash,       backslash,             bar,        NoSymbol,        NoSymbol,          hyphen,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [ dead_circumflex,      dead_caron,           U21BB,           U02DE,   dead_abovedot, Pointer_EnableKeys,   dead_belowdot,        NoSymbol ]
-               };
-               key <LFSH>               {
-                       type[group4]= "TWO_LEVEL",
-                       symbols[Group1]= [         Shift_L ],
-                       symbols[Group2]= [         Shift_L ],
-                       symbols[Group3]= [         Shift_L ],
-                       symbols[Group4]= [         Shift_L,       Caps_Lock ]
-               };
-               key <BKSL>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "ONE_LEVEL",
-                       symbols[Group1]= [       backslash,             bar ],
-                       symbols[Group2]= [       backslash,           slash ],
-                       symbols[Group3]= [          agrave,          Agrave,      braceright,        NoSymbol,        NoSymbol,      dead_breve,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [ ISO_Level3_Shift ]
-               };
-               key <AB01>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               z,               Z ],
-                       symbols[Group2]= [     Cyrillic_ya,     Cyrillic_YA ],
-                       symbols[Group3]= [               z,               Z,   guillemotleft,        NoSymbol ],
-                       symbols[Group4]= [      udiaeresis,      Udiaeresis,      numbersign,        NoSymbol,          Escape,          Escape,           union,        NoSymbol ]
-               };
-               key <AB02>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               x,               X ],
-                       symbols[Group2]= [    Cyrillic_che,    Cyrillic_CHE ],
-                       symbols[Group3]= [               x,               X,  guillemotright,        NoSymbol ],
-                       symbols[Group4]= [      odiaeresis,      Odiaeresis,          dollar,           U03F5,             Tab,             Tab,    intersection,        NoSymbol ]
-               };
-               key <AB03>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               c,               C ],
-                       symbols[Group2]= [     Cyrillic_es,     Cyrillic_ES ],
-                       symbols[Group3]= [               c,               C,        NoSymbol,        NoSymbol,            cent,       copyright,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [      adiaeresis,      Adiaeresis,             bar,       Greek_eta,          Insert,          Insert,           U2135,        NoSymbol ]
-               };
-               key <AB04>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               v,               V ],
-                       symbols[Group2]= [     Cyrillic_em,     Cyrillic_EM ],
-                       symbols[Group3]= [               v,               V,        NoSymbol,        NoSymbol, leftdoublequotemark, leftsinglequotemark,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               p,               P,      asciitilde,        Greek_pi,          Return,          Return,        Greek_PI,        NoSymbol ]
-               };
-               key <AB05>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               b,               B ],
-                       symbols[Group2]= [      Cyrillic_i,      Cyrillic_I ],
-                       symbols[Group3]= [               b,               B,        NoSymbol,        NoSymbol, rightdoublequotemark, rightsinglequotemark,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               z,               Z,           grave,      Greek_zeta,            Undo,            Undo,           U2124,        NoSymbol ]
-               };
-               key <AB06>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               n,               N ],
-                       symbols[Group2]= [     Cyrillic_te,     Cyrillic_TE ],
-                       symbols[Group3]= [               n,               N,        NoSymbol,        NoSymbol,           U0149,           U266A,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               b,               B,            plus,      Greek_beta,           colon,        NoSymbol,           U21D0,        NoSymbol ]
-               };
-               key <AB07>               {
-                       type[group1]= "ALPHABETIC",
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [               m,               M ],
-                       symbols[Group2]= [ Cyrillic_softsign, Cyrillic_SOFTSIGN ],
-                       symbols[Group3]= [               m,               M,              mu,        NoSymbol,              mu,       masculine,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               m,               M,         percent,        Greek_mu,            KP_1,            KP_1,        ifonlyif,        NoSymbol ]
-               };
-               key <AB08>               {
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [           comma,            less ],
-                       symbols[Group2]= [     Cyrillic_be,     Cyrillic_BE ],
-                       symbols[Group3]= [           comma,      apostrophe,            less,        NoSymbol,  Greek_horizbar,        multiply,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [           comma,          endash,        quotedbl,           U03F1,            KP_2,            KP_2,           U21D2,        NoSymbol ]
-               };
-               key <AB09>               {
-                       type[group2]= "ALPHABETIC",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [          period,         greater ],
-                       symbols[Group2]= [     Cyrillic_yu,     Cyrillic_YU ],
-                       symbols[Group3]= [          period,        quotedbl,         greater,        NoSymbol,  periodcentered,        division,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [          period, enfilledcircbullet,      apostrophe,           U03D1,            KP_3,            KP_3,           U21A6,        NoSymbol ]
-               };
-               key <AB10>               {
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       symbols[Group1]= [           slash,        question ],
-                       symbols[Group2]= [          period,           comma ],
-                       symbols[Group3]= [          eacute,          Eacute,      dead_acute,        NoSymbol,        NoSymbol,   dead_abovedot,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [               j,               J,       semicolon,     Greek_theta,       semicolon,        NoSymbol,     Greek_THETA,        NoSymbol ]
-               };
-               key <RTSH>               {
-                       type[group4]= "TWO_LEVEL",
-                       symbols[Group1]= [         Shift_R ],
-                       symbols[Group2]= [         Shift_R ],
-                       symbols[Group3]= [         Shift_R ],
-                       symbols[Group4]= [         Shift_R,       Caps_Lock ]
-               };
-               key <KPMU>               {
-                       type[group1]= "CTRL+ALT",
-                       type[group2]= "CTRL+ALT",
-                       type[group3]= "CTRL+ALT",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [     KP_Multiply,     KP_Multiply,     KP_Multiply,     KP_Multiply,   XF86ClearGrab ],
-                       symbols[Group2]= [     KP_Multiply,     KP_Multiply,     KP_Multiply,     KP_Multiply,   XF86ClearGrab ],
-                       symbols[Group3]= [     KP_Multiply,     KP_Multiply,     KP_Multiply,     KP_Multiply,   XF86ClearGrab ],
-                       symbols[Group4]= [     KP_Multiply,     KP_Multiply,           U2219,           U2299,        multiply,        NoSymbol,           U2297,        NoSymbol ]
-               };
-               key <LALT>               {      [           Alt_L,          Meta_L ] };
-               key <SPCE>               {
-                       type[group3]= "FOUR_LEVEL",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [           space ],
-                       symbols[Group2]= [           space ],
-                       symbols[Group3]= [           space,           space,    nobreakspace,        NoSymbol ],
-                       symbols[Group4]= [           space,           space,           space,    nobreakspace,            KP_0,            KP_0,           U202F,        NoSymbol ]
-               };
-               key <CAPS>               {
-                       type= "ONE_LEVEL",
-                       symbols[Group1]= [       Caps_Lock ],
-                       symbols[Group2]= [       Caps_Lock ],
-                       symbols[Group3]= [       Caps_Lock ],
-                       symbols[Group4]= [ ISO_Level3_Shift ]
-               };
-               key <FK01>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [              F1,              F1,              F1,              F1, XF86Switch_VT_1 ]
-               };
-               key <FK02>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [              F2,              F2,              F2,              F2, XF86Switch_VT_2 ]
-               };
-               key <FK03>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [              F3,              F3,              F3,              F3, XF86Switch_VT_3 ]
-               };
-               key <FK04>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [              F4,              F4,              F4,              F4, XF86Switch_VT_4 ]
-               };
-               key <FK05>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [              F5,              F5,              F5,              F5, XF86Switch_VT_5 ]
-               };
-               key <FK06>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [              F6,              F6,              F6,              F6, XF86Switch_VT_6 ]
-               };
-               key <FK07>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [              F7,              F7,              F7,              F7, XF86Switch_VT_7 ]
-               };
-               key <FK08>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [              F8,              F8,              F8,              F8, XF86Switch_VT_8 ]
-               };
-               key <FK09>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [              F9,              F9,              F9,              F9, XF86Switch_VT_9 ]
-               };
-               key <FK10>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [             F10,             F10,             F10,             F10, XF86Switch_VT_10 ]
-               };
-               key <NMLK>               {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [        Num_Lock ],
-                       symbols[Group2]= [        Num_Lock ],
-                       symbols[Group3]= [        Num_Lock ],
-                       symbols[Group4]= [             Tab,    ISO_Left_Tab,           equal,        approxeq,        notequal, Pointer_EnableKeys,       identical,        NoSymbol ]
-               };
-               key <SCLK>               {      [     Scroll_Lock ] };
-               key <KP7>                {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [         KP_Home,            KP_7 ],
-                       symbols[Group2]= [         KP_Home,            KP_7 ],
-                       symbols[Group3]= [         KP_Home,            KP_7 ],
-                       symbols[Group4]= [            KP_7,           U2714,           U2195,           U226A,         KP_Home,         KP_Home,         upstile,        NoSymbol ]
-               };
-               key <KP8>                {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [           KP_Up,            KP_8 ],
-                       symbols[Group2]= [           KP_Up,            KP_8 ],
-                       symbols[Group3]= [           KP_Up,            KP_8 ],
-                       symbols[Group4]= [            KP_8,           U2718,         uparrow,    intersection,           KP_Up,           KP_Up,           U22C2,        NoSymbol ]
-               };
-               key <KP9>                {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [        KP_Prior,            KP_9 ],
-                       symbols[Group2]= [        KP_Prior,            KP_9 ],
-                       symbols[Group3]= [        KP_Prior,            KP_9 ],
-                       symbols[Group4]= [            KP_9,          dagger,           U20D7,           U226B,        KP_Prior,        KP_Prior,           U2309,        NoSymbol ]
-               };
-               key <KPSU>               {
-                       type[group1]= "CTRL+ALT",
-                       type[group2]= "CTRL+ALT",
-                       type[group3]= "CTRL+ALT",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [     KP_Subtract,     KP_Subtract,     KP_Subtract,     KP_Subtract,  XF86Prev_VMode ],
-                       symbols[Group2]= [     KP_Subtract,     KP_Subtract,     KP_Subtract,     KP_Subtract,  XF86Prev_VMode ],
-                       symbols[Group3]= [     KP_Subtract,     KP_Subtract,     KP_Subtract,     KP_Subtract,  XF86Prev_VMode ],
-                       symbols[Group4]= [     KP_Subtract,     KP_Subtract,           U2212,           U2296,           U2216,        NoSymbol,           U2238,        NoSymbol ]
-               };
-               key <KP4>                {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [         KP_Left,            KP_4 ],
-                       symbols[Group2]= [         KP_Left,            KP_4 ],
-                       symbols[Group3]= [         KP_Left,            KP_4 ],
-                       symbols[Group4]= [            KP_4,            club,       leftarrow,      includedin,         KP_Left,         KP_Left,           U2286,        NoSymbol ]
-               };
-               key <KP5>                {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [        KP_Begin,            KP_5 ],
-                       symbols[Group2]= [        KP_Begin,            KP_5 ],
-                       symbols[Group3]= [        KP_Begin,            KP_5 ],
-                       symbols[Group4]= [            KP_5,        EuroSign,           colon,           U22B6,        KP_Begin,        KP_Begin,           U22B7,        NoSymbol ]
-               };
-               key <KP6>                {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [        KP_Right,            KP_6 ],
-                       symbols[Group2]= [        KP_Right,            KP_6 ],
-                       symbols[Group3]= [        KP_Right,            KP_6 ],
-                       symbols[Group4]= [            KP_6,           U2023,      rightarrow,        includes,        KP_Right,        KP_Right,           U2287,        NoSymbol ]
-               };
-               key <KPAD>               {
-                       type[group1]= "CTRL+ALT",
-                       type[group2]= "CTRL+ALT",
-                       type[group3]= "CTRL+ALT",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [          KP_Add,          KP_Add,          KP_Add,          KP_Add,  XF86Next_VMode ],
-                       symbols[Group2]= [          KP_Add,          KP_Add,          KP_Add,          KP_Add,  XF86Next_VMode ],
-                       symbols[Group3]= [          KP_Add,          KP_Add,          KP_Add,          KP_Add,  XF86Next_VMode ],
-                       symbols[Group4]= [          KP_Add,          KP_Add,       plusminus,           U2295,           U2213,        NoSymbol,           U2214,        NoSymbol ]
-               };
-               key <KP1>                {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [          KP_End,            KP_1 ],
-                       symbols[Group2]= [          KP_End,            KP_1 ],
-                       symbols[Group3]= [          KP_End,            KP_1 ],
-                       symbols[Group4]= [            KP_1,         diamond,           U2194,   lessthanequal,          KP_End,          KP_End,       downstile,        NoSymbol ]
-               };
-               key <KP2>                {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [         KP_Down,            KP_2 ],
-                       symbols[Group2]= [         KP_Down,            KP_2 ],
-                       symbols[Group3]= [         KP_Down,            KP_2 ],
-                       symbols[Group4]= [            KP_2,           heart,       downarrow,           union,         KP_Down,         KP_Down,           U22C3,        NoSymbol ]
-               };
-               key <KP3>                {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [         KP_Next,            KP_3 ],
-                       symbols[Group2]= [         KP_Next,            KP_3 ],
-                       symbols[Group3]= [         KP_Next,            KP_3 ],
-                       symbols[Group4]= [            KP_3,           U2660,           U21CC, greaterthanequal,         KP_Next,         KP_Next,           U230B,        NoSymbol ]
-               };
-               key <KP0>                {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [       KP_Insert,            KP_0 ],
-                       symbols[Group2]= [       KP_Insert,            KP_0 ],
-                       symbols[Group3]= [       KP_Insert,            KP_0 ],
-                       symbols[Group4]= [            KP_0,           U2423,         percent,           U2030,       KP_Insert,       KP_Insert,           U25A1,        NoSymbol ]
-               };
-               key <KPDL>               {
-                       type[group2]= "KEYPAD",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [       KP_Delete,      KP_Decimal ],
-                       symbols[Group2]= [       KP_Delete,    KP_Separator ],
-                       symbols[Group3]= [       KP_Delete,      KP_Decimal ],
-                       symbols[Group4]= [    KP_Separator,          period,           comma,         minutes,       KP_Delete,       KP_Delete,         seconds,        NoSymbol ]
-               };
-               key <LVL3>               {      [ ISO_Level3_Shift ] };
-               key <LSGT>               {
-                       type[group1]= "FOUR_LEVEL",
-                       type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
-                       type[group4]= "ONE_LEVEL",
-                       symbols[Group1]= [            less,         greater,             bar,       brokenbar ],
-                       symbols[Group2]= [           slash,             bar ],
-                       symbols[Group3]= [          ugrave,          Ugrave,          degree,        NoSymbol,        NoSymbol,       brokenbar,        NoSymbol,        NoSymbol ],
-                       symbols[Group4]= [ ISO_Level5_Shift ]
-               };
-               key <FK11>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [             F11,             F11,             F11,             F11, XF86Switch_VT_11 ]
-               };
-               key <FK12>               {
-                       type= "CTRL+ALT",
-                       symbols[Group1]= [             F12,             F12,             F12,             F12, XF86Switch_VT_12 ]
-               };
-               key <KATA>               {      [        Katakana ] };
-               key <HIRA>               {      [        Hiragana ] };
-               key <HENK>               {      [     Henkan_Mode ] };
-               key <HKTG>               {      [ Hiragana_Katakana ] };
-               key <MUHE>               {      [        Muhenkan ] };
-               key <KPEN>               {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [        KP_Enter ],
-                       symbols[Group2]= [        KP_Enter ],
-                       symbols[Group3]= [        KP_Enter ],
-                       symbols[Group4]= [        KP_Enter,        KP_Enter,        KP_Enter,        KP_Enter,        KP_Enter,        KP_Enter,        KP_Enter,        NoSymbol ]
-               };
-               key <RCTL>               {
-                       type= "ONE_LEVEL",
-                       symbols[Group1]= [       Control_R ],
-                       symbols[Group2]= [       Control_R ],
-                       symbols[Group3]= [ ISO_Level5_Shift ]
-               };
-               key <KPDV>               {
-                       type[group1]= "CTRL+ALT",
-                       type[group2]= "CTRL+ALT",
-                       type[group3]= "CTRL+ALT",
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [       KP_Divide,       KP_Divide,       KP_Divide,       KP_Divide,      XF86Ungrab ],
-                       symbols[Group2]= [       KP_Divide,       KP_Divide,       KP_Divide,       KP_Divide,      XF86Ungrab ],
-                       symbols[Group3]= [       KP_Divide,       KP_Divide,       KP_Divide,       KP_Divide,      XF86Ungrab ],
-                       symbols[Group4]= [       KP_Divide,       KP_Divide,        division,           U2300,           U2215,        NoSymbol,           U2223,        NoSymbol ]
-               };
-               key <PRSC>               {
-                       type= "PC_ALT_LEVEL2",
-                       symbols[Group1]= [           Print,         Sys_Req ]
-               };
-               key <RALT>               {
-                       type[group1]= "TWO_LEVEL",
-                       type[group2]= "TWO_LEVEL",
-                       type[group3]= "ONE_LEVEL",
-                       type[group4]= "ONE_LEVEL",
-                       symbols[Group1]= [           Alt_R,          Meta_R ],
-                       symbols[Group2]= [           Alt_R,          Meta_R ],
-                       symbols[Group3]= [ ISO_Level3_Shift ],
-                       symbols[Group4]= [ ISO_Level5_Shift ]
-               };
-               key <LNFD>               {      [        Linefeed ] };
-               key <HOME>               {      [            Home ] };
-               key <UP>                 {      [              Up ] };
-               key <PGUP>               {      [           Prior ] };
-               key <LEFT>               {      [            Left ] };
-               key <RGHT>               {      [           Right ] };
-               key <END>                {      [             End ] };
-               key <DOWN>               {      [            Down ] };
-               key <PGDN>               {      [            Next ] };
-               key <INS>                {      [          Insert ] };
-               key <DELE>               {      [          Delete ] };
-               key <MUTE>               {      [   XF86AudioMute ] };
-               key <VOL->               {      [ XF86AudioLowerVolume ] };
-               key <VOL+>               {      [ XF86AudioRaiseVolume ] };
-               key <POWR>               {      [    XF86PowerOff ] };
-               key <KPEQ>               {
-                       type[group4]= "EIGHT_LEVEL",
-                       symbols[Group1]= [        KP_Equal ],
-                       symbols[Group2]= [        KP_Equal ],
-                       symbols[Group3]= [        KP_Equal ],
-                       symbols[Group4]= [        KP_Equal,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol ]
-               };
-               key <I126>               {      [       plusminus ] };
-               key <PAUS>               {
-                       type= "PC_CONTROL_LEVEL2",
-                       symbols[Group1]= [           Pause,           Break ]
-               };
-               key <I128>               {      [     XF86LaunchA ] };
-               key <I129>               {      [      KP_Decimal,      KP_Decimal ] };
-               key <HNGL>               {      [          Hangul ] };
-               key <HJCV>               {      [    Hangul_Hanja ] };
-               key <LWIN>               {      [         Super_L ] };
-               key <RWIN>               {      [         Super_R ] };
-               key <COMP>               {      [            Menu ] };
-               key <STOP>               {      [          Cancel ] };
-               key <AGAI>               {      [            Redo ] };
-               key <PROP>               {      [        SunProps ] };
-               key <UNDO>               {      [            Undo ] };
-               key <FRNT>               {      [        SunFront ] };
-               key <COPY>               {      [        XF86Copy ] };
-               key <OPEN>               {      [         SunOpen ] };
-               key <PAST>               {      [       XF86Paste ] };
-               key <FIND>               {      [            Find ] };
-               key <CUT>                {      [         XF86Cut ] };
-               key <HELP>               {      [            Help ] };
-               key <I147>               {      [      XF86MenuKB ] };
-               key <I148>               {      [  XF86Calculator ] };
-               key <I150>               {      [       XF86Sleep ] };
-               key <I151>               {      [      XF86WakeUp ] };
-               key <I152>               {      [    XF86Explorer ] };
-               key <I153>               {      [        XF86Send ] };
-               key <I155>               {      [        XF86Xfer ] };
-               key <I156>               {      [     XF86Launch1 ] };
-               key <I157>               {      [     XF86Launch2 ] };
-               key <I158>               {      [         XF86WWW ] };
-               key <I159>               {      [         XF86DOS ] };
-               key <I160>               {      [ XF86ScreenSaver ] };
-               key <I162>               {      [ XF86RotateWindows ] };
-               key <I163>               {      [        XF86Mail ] };
-               key <I164>               {      [   XF86Favorites ] };
-               key <I165>               {      [  XF86MyComputer ] };
-               key <I166>               {      [        XF86Back ] };
-               key <I167>               {      [     XF86Forward ] };
-               key <I169>               {      [       XF86Eject ] };
-               key <I170>               {      [       XF86Eject,       XF86Eject ] };
-               key <I171>               {      [   XF86AudioNext ] };
-               key <I172>               {      [   XF86AudioPlay,  XF86AudioPause ] };
-               key <I173>               {      [   XF86AudioPrev ] };
-               key <I174>               {      [   XF86AudioStop,       XF86Eject ] };
-               key <I175>               {      [ XF86AudioRecord ] };
-               key <I176>               {      [ XF86AudioRewind ] };
-               key <I177>               {      [       XF86Phone ] };
-               key <I179>               {      [       XF86Tools ] };
-               key <I180>               {      [    XF86HomePage ] };
-               key <I181>               {      [      XF86Reload ] };
-               key <I182>               {      [       XF86Close ] };
-               key <I185>               {      [    XF86ScrollUp ] };
-               key <I186>               {      [  XF86ScrollDown ] };
-               key <I187>               {      [       parenleft ] };
-               key <I188>               {      [      parenright ] };
-               key <I189>               {      [         XF86New ] };
-               key <I190>               {      [            Redo ] };
-               key <FK13>               {      [       XF86Tools ] };
-               key <FK14>               {      [     XF86Launch5 ] };
-               key <FK15>               {      [     XF86Launch6 ] };
-               key <FK16>               {      [     XF86Launch7 ] };
-               key <FK17>               {      [     XF86Launch8 ] };
-               key <FK18>               {      [     XF86Launch9 ] };
-               key <FK21>               {      [ XF86TouchpadToggle ] };
-               key <FK22>               {      [  XF86TouchpadOn ] };
-               key <FK23>               {      [ XF86TouchpadOff ] };
-               key <MDSW>               {      [     Mode_switch ] };
-               key <ALT>                {      [        NoSymbol,           Alt_L ] };
-               key <META>               {      [        NoSymbol,          Meta_L ] };
-               key <SUPR>               {      [        NoSymbol,         Super_L ] };
-               key <HYPR>               {      [        NoSymbol,         Hyper_L ] };
-               key <I208>               {      [   XF86AudioPlay ] };
-               key <I209>               {      [  XF86AudioPause ] };
-               key <I210>               {      [     XF86Launch3 ] };
-               key <I211>               {      [     XF86Launch4 ] };
-               key <I212>               {      [     XF86LaunchB ] };
-               key <I213>               {      [     XF86Suspend ] };
-               key <I214>               {      [       XF86Close ] };
-               key <I215>               {      [   XF86AudioPlay ] };
-               key <I216>               {      [ XF86AudioForward ] };
-               key <I218>               {      [           Print ] };
-               key <I220>               {      [      XF86WebCam ] };
-               key <I223>               {      [        XF86Mail ] };
-               key <I224>               {      [   XF86Messenger ] };
-               key <I225>               {      [      XF86Search ] };
-               key <I226>               {      [          XF86Go ] };
-               key <I227>               {      [     XF86Finance ] };
-               key <I228>               {      [        XF86Game ] };
-               key <I229>               {      [        XF86Shop ] };
-               key <I231>               {      [          Cancel ] };
-               key <I232>               {      [ XF86MonBrightnessDown ] };
-               key <I233>               {      [ XF86MonBrightnessUp ] };
-               key <I234>               {      [  XF86AudioMedia ] };
-               key <I235>               {      [     XF86Display ] };
-               key <I236>               {      [ XF86KbdLightOnOff ] };
-               key <I237>               {      [ XF86KbdBrightnessDown ] };
-               key <I238>               {      [ XF86KbdBrightnessUp ] };
-               key <I239>               {      [        XF86Send ] };
-               key <I240>               {      [       XF86Reply ] };
-               key <I241>               {      [ XF86MailForward ] };
-               key <I242>               {      [        XF86Save ] };
-               key <I243>               {      [   XF86Documents ] };
-               key <I244>               {      [     XF86Battery ] };
-               key <I245>               {      [   XF86Bluetooth ] };
-               key <I246>               {      [        XF86WLAN ] };
-               modifier_map Control { <LCTL> };
-               modifier_map Shift { <LFSH> };
-               modifier_map Shift { <RTSH> };
-               modifier_map Mod1 { <LALT> };
-               modifier_map Lock { <CAPS> };
-               modifier_map Mod2 { <NMLK> };
-               modifier_map Mod5 { <LVL3> };
-               modifier_map Mod3 { <RCTL> };
-               modifier_map Mod1 { <RALT> };
-               modifier_map Mod4 { <LWIN> };
-               modifier_map Mod4 { <RWIN> };
-               modifier_map Mod5 { <MDSW> };
-               modifier_map Mod1 { <META> };
-               modifier_map Mod4 { <SUPR> };
-               modifier_map Mod4 { <HYPR> };
+       key <ESC>                {      [          Escape ] };
+       key <AE01>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [               1,          exclam ],
+               symbols[Group2]= [               1,          exclam ],
+               symbols[Group3]= [               1,          exclam,       plusminus,        NoSymbol,     onesuperior,      exclamdown,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               1,          degree,     onesuperior,    onesubscript,     ordfeminine,        NoSymbol,         notsign,        NoSymbol ]
+       };
+       key <AE02>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [               2,              at ],
+               symbols[Group2]= [               2,        quotedbl ],
+               symbols[Group3]= [               2,              at,              at,        NoSymbol,     twosuperior,        NoSymbol,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               2,         section,     twosuperior,    twosubscript,       masculine,        NoSymbol,       logicalor,        NoSymbol ]
+       };
+       key <AE03>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [               3,      numbersign ],
+               symbols[Group2]= [               3,      numerosign ],
+               symbols[Group3]= [               3,      numbersign,        sterling,        NoSymbol,   threesuperior,        sterling,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               3,           U2113,   threesuperior,  threesubscript,      numerosign,        NoSymbol,      logicaland,        NoSymbol ]
+       };
+       key <AE04>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [               4,          dollar ],
+               symbols[Group2]= [               4,       semicolon ],
+               symbols[Group3]= [               4,          dollar,            cent,        NoSymbol,      onequarter,        currency,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               4,  guillemotright,           U203A,    femalesymbol,        NoSymbol,        NoSymbol,           U22A5,        NoSymbol ]
+       };
+       key <AE05>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [               5,         percent ],
+               symbols[Group2]= [               5,         percent ],
+               symbols[Group3]= [               5,         percent,        currency,        NoSymbol,         onehalf,    threeeighths,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               5,   guillemotleft,           U2039,      malesymbol,  periodcentered,        NoSymbol,           U2221,        NoSymbol ]
+       };
+       key <AE06>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [ { H, E, L, L, O },     asciicircum ],
+               symbols[Group2]= [               6,           colon ],
+               symbols[Group3]= [               6,        question,         notsign,        NoSymbol,   threequarters,     fiveeighths,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               6,          dollar,            cent,           U26A5,        sterling,        NoSymbol,           U2225,        NoSymbol ]
+       };
+       key <AE07>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [ { Y, E, S, space, T, H, I, S, space, I, S, space, D, O, G },       ampersand ],
+               symbols[Group2]= [               7,        question ],
+               symbols[Group3]= [               7,       ampersand,       braceleft,        NoSymbol,        NoSymbol,    seveneighths,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               7,        EuroSign,             yen,           U03F0,        currency,        NoSymbol,      rightarrow,        NoSymbol ]
+       };
+       key <AE08>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [               8,        asterisk ],
+               symbols[Group2]= [               8,        asterisk ],
+               symbols[Group3]= [               8,        asterisk,      braceright,        NoSymbol,        NoSymbol,       trademark,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               8, doublelowquotemark, singlelowquotemark,           U27E8,             Tab,    ISO_Left_Tab,           U221E,        NoSymbol ]
+       };
+       key <AE09>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [               9,       parenleft ],
+               symbols[Group2]= [               9,       parenleft ],
+               symbols[Group3]= [               9,       parenleft,     bracketleft,        NoSymbol,        NoSymbol,       plusminus,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               9, leftdoublequotemark, leftsinglequotemark,           U27E9,       KP_Divide,       KP_Divide,       variation,        NoSymbol ]
+       };
+       key <AE10>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [               0,      parenright ],
+               symbols[Group2]= [               0,      parenright ],
+               symbols[Group3]= [               0,      parenright,    bracketright,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               0, rightdoublequotemark, rightsinglequotemark,   zerosubscript,     KP_Multiply,     KP_Multiply,        emptyset,        NoSymbol ]
+       };
+       key <AE11>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [           minus,      underscore ],
+               symbols[Group2]= [           minus,      underscore ],
+               symbols[Group3]= [           minus,      underscore,         onehalf,        NoSymbol,        NoSymbol,    questiondown,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [           minus,          emdash,        NoSymbol,           U2011,     KP_Subtract,     KP_Subtract,          hyphen,        NoSymbol ]
+       };
+       key <AE12>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [           equal,            plus ],
+               symbols[Group2]= [           equal,            plus ],
+               symbols[Group3]= [           equal,            plus,         notsign,        NoSymbol,    dead_cedilla,     dead_ogonek,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [      dead_grave,    dead_cedilla,  dead_abovering, dead_abovereversedcomma,  dead_diaeresis,        NoSymbol,     dead_macron,        NoSymbol ]
+       };
+       key <BKSP>               {      [       BackSpace,       BackSpace ] };
+       key <TAB>                {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [             Tab,    ISO_Left_Tab ],
+               symbols[Group2]= [             Tab,    ISO_Left_Tab ],
+               symbols[Group3]= [             Tab,    ISO_Left_Tab ],
+               symbols[Group4]= [             Tab,    ISO_Left_Tab,       Multi_key, ISO_Level5_Lock,        NoSymbol,        NoSymbol,        NoSymbol, ISO_Level5_Lock ]
+       };
+       key <AD01>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               q,               Q ],
+               symbols[Group2]= [ Cyrillic_shorti, Cyrillic_SHORTI ],
+               symbols[Group3]= [               q,               Q,        NoSymbol,        NoSymbol,        NoSymbol,     Greek_OMEGA,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               x,               X,        ellipsis,        Greek_xi,           Prior,           Prior,        Greek_XI,        NoSymbol ]
+       };
+       key <AD02>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               w,               W ],
+               symbols[Group2]= [    Cyrillic_tse,    Cyrillic_TSE ],
+               symbols[Group3]= [               w,               W,        NoSymbol,        NoSymbol,         lstroke,         Lstroke,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               v,               V,      underscore,        NoSymbol,       BackSpace,       BackSpace,         radical,        NoSymbol ]
+       };
+       key <AD03>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               e,               E ],
+               symbols[Group2]= [      Cyrillic_u,      Cyrillic_U ],
+               symbols[Group3]= [               e,               E,        NoSymbol,        NoSymbol,              oe,              OE,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               l,               L,     bracketleft,     Greek_lamda,              Up,              Up,     Greek_LAMDA,        NoSymbol ]
+       };
+       key <AD04>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               r,               R ],
+               symbols[Group2]= [     Cyrillic_ka,     Cyrillic_KA ],
+               symbols[Group3]= [               r,               R,        NoSymbol,        NoSymbol,       paragraph,      registered,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               c,               C,    bracketright,       Greek_chi,          Delete,          Delete,           U2102,        NoSymbol ]
+       };
+       key <AD05>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               t,               T ],
+               symbols[Group2]= [     Cyrillic_ie,     Cyrillic_IE ],
+               symbols[Group3]= [               t,               T,        NoSymbol,        NoSymbol,          tslash,          Tslash,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               w,               W,     asciicircum,     Greek_omega,            Next,            Next,     Greek_OMEGA,        NoSymbol ]
+       };
+       key <AD06>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               y,               Y ],
+               symbols[Group2]= [     Cyrillic_en,     Cyrillic_EN ],
+               symbols[Group3]= [               y,               Y,        NoSymbol,        NoSymbol,       leftarrow,             yen,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               k,               K,          exclam,     Greek_kappa,      exclamdown,        NoSymbol,        multiply,        NoSymbol ]
+       };
+       key <AD07>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               u,               U ],
+               symbols[Group2]= [    Cyrillic_ghe,    Cyrillic_GHE ],
+               symbols[Group3]= [               u,               U,        NoSymbol,        NoSymbol,       downarrow,         uparrow,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               h,               H,            less,       Greek_psi,            KP_7,            KP_7,       Greek_PSI,        NoSymbol ]
+       };
+       key <AD08>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               i,               I ],
+               symbols[Group2]= [    Cyrillic_sha,    Cyrillic_SHA ],
+               symbols[Group3]= [               i,               I,        NoSymbol,        NoSymbol,      rightarrow,        idotless,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               g,               G,         greater,     Greek_gamma,            KP_8,            KP_8,     Greek_GAMMA,        NoSymbol ]
+       };
+       key <AD09>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               o,               O ],
+               symbols[Group2]= [  Cyrillic_shcha,  Cyrillic_SHCHA ],
+               symbols[Group3]= [               o,               O,         section,        NoSymbol,          oslash,          Oslash,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               f,               F,           equal,       Greek_phi,            KP_9,            KP_9,       Greek_PHI,        NoSymbol ]
+       };
+       key <AD10>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               p,               P ],
+               symbols[Group2]= [     Cyrillic_ze,     Cyrillic_ZE ],
+               symbols[Group3]= [               p,               P,       paragraph,        NoSymbol,           thorn,           THORN,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               q,               Q,       ampersand,           U03D5,          KP_Add,          KP_Add,           U211A,        NoSymbol ]
+       };
+       key <AD11>               {
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [     bracketleft,       braceleft ],
+               symbols[Group2]= [     Cyrillic_ha,     Cyrillic_HA ],
+               symbols[Group3]= [ dead_circumflex,  dead_diaeresis,      dead_grave,        NoSymbol,        NoSymbol,  dead_abovering,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [          ssharp,           U1E9E,           U017F, Greek_finalsmallsigma,           U2212,        NoSymbol,             jot,        NoSymbol ]
+       };
+       key <AD12>               {
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [    bracketright,      braceright ],
+               symbols[Group2]= [ Cyrillic_hardsign, Cyrillic_HARDSIGN ],
+               symbols[Group3]= [        ccedilla,        Ccedilla,      asciitilde,        NoSymbol,      dead_tilde,     dead_macron,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [      dead_acute,      dead_tilde,     dead_stroke, dead_abovecomma, dead_doubleacute,        NoSymbol,      dead_breve,        NoSymbol ]
+       };
+       key <RTRN>               {      [          Return ] };
+       key <LCTL>               {      [       Control_L ] };
+       key <AC01>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               a,               A ],
+               symbols[Group2]= [     Cyrillic_ef,     Cyrillic_EF ],
+               symbols[Group3]= [               a,               A,        NoSymbol,        NoSymbol,              ae,              AE,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               u,               U,       backslash,        NoSymbol,            Home,            Home,      includedin,        NoSymbol ]
+       };
+       key <AC02>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               s,               S ],
+               symbols[Group2]= [   Cyrillic_yeru,   Cyrillic_YERU ],
+               symbols[Group3]= [               s,               S,        NoSymbol,        NoSymbol,          ssharp,         section,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               i,               I,           slash,      Greek_iota,            Left,            Left,        integral,        NoSymbol ]
        };
+       key <AC03>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               d,               D ],
+               symbols[Group2]= [     Cyrillic_ve,     Cyrillic_VE ],
+               symbols[Group3]= [               d,               D,        NoSymbol,        NoSymbol,             eth,             ETH,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               a,               A,       braceleft,     Greek_alpha,            Down,            Down,           U2200,        NoSymbol ]
+       };
+       key <AC04>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               f,               F ],
+               symbols[Group2]= [      Cyrillic_a,      Cyrillic_A ],
+               symbols[Group3]= [               f,               F,        NoSymbol,        NoSymbol,        NoSymbol,     ordfeminine,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               e,               E,      braceright,   Greek_epsilon,           Right,           Right,           U2203,        NoSymbol ]
+       };
+       key <AC05>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               g,               G ],
+               symbols[Group2]= [     Cyrillic_pe,     Cyrillic_PE ],
+               symbols[Group3]= [               g,               G,        NoSymbol,        NoSymbol,             eng,             ENG,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               o,               O,        asterisk,   Greek_omicron,             End,             End,       elementof,        NoSymbol ]
+       };
+       key <AC06>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               h,               H ],
+               symbols[Group2]= [     Cyrillic_er,     Cyrillic_ER ],
+               symbols[Group3]= [               h,               H,        NoSymbol,        NoSymbol,         hstroke,         Hstroke,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               s,               S,        question,     Greek_sigma,    questiondown,        NoSymbol,     Greek_SIGMA,        NoSymbol ]
+       };
+       key <AC07>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               j,               J ],
+               symbols[Group2]= [      Cyrillic_o,      Cyrillic_O ],
+               symbols[Group3]= [               j,               J,        NoSymbol,        NoSymbol,           U0133,           U0132,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               n,               N,       parenleft,        Greek_nu,            KP_4,            KP_4,           U2115,        NoSymbol ]
+       };
+       key <AC08>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               k,               K ],
+               symbols[Group2]= [     Cyrillic_el,     Cyrillic_EL ],
+               symbols[Group3]= [               k,               K,        NoSymbol,        NoSymbol,             kra,        NoSymbol,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               r,               R,      parenright,       Greek_rho,            KP_5,            KP_5,           U211D,        NoSymbol ]
+       };
+       key <AC09>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               l,               L ],
+               symbols[Group2]= [     Cyrillic_de,     Cyrillic_DE ],
+               symbols[Group3]= [               l,               L,        NoSymbol,        NoSymbol,           U0140,           U013F,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               t,               T,           minus,       Greek_tau,            KP_6,            KP_6, partialderivative,        NoSymbol ]
+       };
+       key <AC10>               {
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [       semicolon,           colon ],
+               symbols[Group2]= [    Cyrillic_zhe,    Cyrillic_ZHE ],
+               symbols[Group3]= [       semicolon,           colon,          degree,        NoSymbol,      dead_acute, dead_doubleacute,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               d,               D,           colon,     Greek_delta,    KP_Separator,           comma,     Greek_DELTA,        NoSymbol ]
+       };
+       key <AC11>               {
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [      apostrophe,        quotedbl ],
+               symbols[Group2]= [      Cyrillic_e,      Cyrillic_E ],
+               symbols[Group3]= [          egrave,          Egrave,       braceleft,        NoSymbol,        NoSymbol,      dead_caron,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               y,               Y,              at,   Greek_upsilon,          period,      KP_Decimal,           nabla,        NoSymbol ]
+       };
+       key <TLDE>               {
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [           grave,      asciitilde ],
+               symbols[Group2]= [     Cyrillic_io,     Cyrillic_IO ],
+               symbols[Group3]= [           slash,       backslash,             bar,        NoSymbol,        NoSymbol,          hyphen,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [ dead_circumflex,      dead_caron,           U21BB,           U02DE,   dead_abovedot, Pointer_EnableKeys,   dead_belowdot,        NoSymbol ]
+       };
+       key <LFSH>               {
+               type[group4]= "TWO_LEVEL",
+               symbols[Group1]= [         Shift_L ],
+               symbols[Group2]= [         Shift_L ],
+               symbols[Group3]= [         Shift_L ],
+               symbols[Group4]= [         Shift_L,       Caps_Lock ]
+       };
+       key <BKSL>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "ONE_LEVEL",
+               symbols[Group1]= [       backslash,             bar ],
+               symbols[Group2]= [       backslash,           slash ],
+               symbols[Group3]= [          agrave,          Agrave,      braceright,        NoSymbol,        NoSymbol,      dead_breve,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [ ISO_Level3_Shift ]
+       };
+       key <AB01>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               z,               Z ],
+               symbols[Group2]= [     Cyrillic_ya,     Cyrillic_YA ],
+               symbols[Group3]= [               z,               Z,   guillemotleft,        NoSymbol ],
+               symbols[Group4]= [      udiaeresis,      Udiaeresis,      numbersign,        NoSymbol,          Escape,          Escape,           union,        NoSymbol ]
+       };
+       key <AB02>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "FOUR_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               x,               X ],
+               symbols[Group2]= [    Cyrillic_che,    Cyrillic_CHE ],
+               symbols[Group3]= [               x,               X,  guillemotright,        NoSymbol ],
+               symbols[Group4]= [      odiaeresis,      Odiaeresis,          dollar,           U03F5,             Tab,             Tab,    intersection,        NoSymbol ]
+       };
+       key <AB03>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               c,               C ],
+               symbols[Group2]= [     Cyrillic_es,     Cyrillic_ES ],
+               symbols[Group3]= [               c,               C,        NoSymbol,        NoSymbol,            cent,       copyright,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [      adiaeresis,      Adiaeresis,             bar,       Greek_eta,          Insert,          Insert,           U2135,        NoSymbol ]
+       };
+       key <AB04>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               v,               V ],
+               symbols[Group2]= [     Cyrillic_em,     Cyrillic_EM ],
+               symbols[Group3]= [               v,               V,        NoSymbol,        NoSymbol, leftdoublequotemark, leftsinglequotemark,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               p,               P,      asciitilde,        Greek_pi,          Return,          Return,        Greek_PI,        NoSymbol ]
+       };
+       key <AB05>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               b,               B ],
+               symbols[Group2]= [      Cyrillic_i,      Cyrillic_I ],
+               symbols[Group3]= [               b,               B,        NoSymbol,        NoSymbol, rightdoublequotemark, rightsinglequotemark,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               z,               Z,           grave,      Greek_zeta,            Undo,            Undo,           U2124,        NoSymbol ]
+       };
+       key <AB06>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               n,               N ],
+               symbols[Group2]= [     Cyrillic_te,     Cyrillic_TE ],
+               symbols[Group3]= [               n,               N,        NoSymbol,        NoSymbol,           U0149,           U266A,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               b,               B,            plus,      Greek_beta,           colon,        NoSymbol,           U21D0,        NoSymbol ]
+       };
+       key <AB07>               {
+               type[group1]= "ALPHABETIC",
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [               m,               M ],
+               symbols[Group2]= [ Cyrillic_softsign, Cyrillic_SOFTSIGN ],
+               symbols[Group3]= [               m,               M,              mu,        NoSymbol,              mu,       masculine,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               m,               M,         percent,        Greek_mu,            KP_1,            KP_1,        ifonlyif,        NoSymbol ]
+       };
+       key <AB08>               {
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [           comma,            less ],
+               symbols[Group2]= [     Cyrillic_be,     Cyrillic_BE ],
+               symbols[Group3]= [           comma,      apostrophe,            less,        NoSymbol,  Greek_horizbar,        multiply,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [           comma,          endash,        quotedbl,           U03F1,            KP_2,            KP_2,           U21D2,        NoSymbol ]
+       };
+       key <AB09>               {
+               type[group2]= "ALPHABETIC",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [          period,         greater ],
+               symbols[Group2]= [     Cyrillic_yu,     Cyrillic_YU ],
+               symbols[Group3]= [          period,        quotedbl,         greater,        NoSymbol,  periodcentered,        division,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [          period, enfilledcircbullet,      apostrophe,           U03D1,            KP_3,            KP_3,           U21A6,        NoSymbol ]
+       };
+       key <AB10>               {
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               symbols[Group1]= [           slash,        question ],
+               symbols[Group2]= [          period,           comma ],
+               symbols[Group3]= [          eacute,          Eacute,      dead_acute,        NoSymbol,        NoSymbol,   dead_abovedot,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [               j,               J,       semicolon,     Greek_theta,       semicolon,        NoSymbol,     Greek_THETA,        NoSymbol ]
+       };
+       key <RTSH>               {
+               type[group4]= "TWO_LEVEL",
+               symbols[Group1]= [         Shift_R ],
+               symbols[Group2]= [         Shift_R ],
+               symbols[Group3]= [         Shift_R ],
+               symbols[Group4]= [         Shift_R,       Caps_Lock ]
+       };
+       key <KPMU>               {
+               type[group1]= "CTRL+ALT",
+               type[group2]= "CTRL+ALT",
+               type[group3]= "CTRL+ALT",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [     KP_Multiply,     KP_Multiply,     KP_Multiply,     KP_Multiply,   XF86ClearGrab ],
+               symbols[Group2]= [     KP_Multiply,     KP_Multiply,     KP_Multiply,     KP_Multiply,   XF86ClearGrab ],
+               symbols[Group3]= [     KP_Multiply,     KP_Multiply,     KP_Multiply,     KP_Multiply,   XF86ClearGrab ],
+               symbols[Group4]= [     KP_Multiply,     KP_Multiply,           U2219,           U2299,        multiply,        NoSymbol,           U2297,        NoSymbol ]
+       };
+       key <LALT>               {      [           Alt_L,          Meta_L ] };
+       key <SPCE>               {
+               type[group3]= "FOUR_LEVEL",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [           space ],
+               symbols[Group2]= [           space ],
+               symbols[Group3]= [           space,           space,    nobreakspace,        NoSymbol ],
+               symbols[Group4]= [           space,           space,           space,    nobreakspace,            KP_0,            KP_0,           U202F,        NoSymbol ]
+       };
+       key <CAPS>               {
+               type= "ONE_LEVEL",
+               symbols[Group1]= [       Caps_Lock ],
+               symbols[Group2]= [       Caps_Lock ],
+               symbols[Group3]= [       Caps_Lock ],
+               symbols[Group4]= [ ISO_Level3_Shift ]
+       };
+       key <FK01>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [              F1,              F1,              F1,              F1, XF86Switch_VT_1 ]
+       };
+       key <FK02>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [              F2,              F2,              F2,              F2, XF86Switch_VT_2 ]
+       };
+       key <FK03>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [              F3,              F3,              F3,              F3, XF86Switch_VT_3 ]
+       };
+       key <FK04>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [              F4,              F4,              F4,              F4, XF86Switch_VT_4 ]
+       };
+       key <FK05>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [              F5,              F5,              F5,              F5, XF86Switch_VT_5 ]
+       };
+       key <FK06>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [              F6,              F6,              F6,              F6, XF86Switch_VT_6 ]
+       };
+       key <FK07>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [              F7,              F7,              F7,              F7, XF86Switch_VT_7 ]
+       };
+       key <FK08>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [              F8,              F8,              F8,              F8, XF86Switch_VT_8 ]
+       };
+       key <FK09>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [              F9,              F9,              F9,              F9, XF86Switch_VT_9 ]
+       };
+       key <FK10>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [             F10,             F10,             F10,             F10, XF86Switch_VT_10 ]
+       };
+       key <NMLK>               {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [        Num_Lock ],
+               symbols[Group2]= [        Num_Lock ],
+               symbols[Group3]= [        Num_Lock ],
+               symbols[Group4]= [             Tab,    ISO_Left_Tab,           equal,        approxeq,        notequal, Pointer_EnableKeys,       identical,        NoSymbol ]
+       };
+       key <SCLK>               {      [     Scroll_Lock ] };
+       key <KP7>                {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [         KP_Home,            KP_7 ],
+               symbols[Group2]= [         KP_Home,            KP_7 ],
+               symbols[Group3]= [         KP_Home,            KP_7 ],
+               symbols[Group4]= [            KP_7,           U2714,           U2195,           U226A,         KP_Home,         KP_Home,         upstile,        NoSymbol ]
+       };
+       key <KP8>                {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [           KP_Up,            KP_8 ],
+               symbols[Group2]= [           KP_Up,            KP_8 ],
+               symbols[Group3]= [           KP_Up,            KP_8 ],
+               symbols[Group4]= [            KP_8,           U2718,         uparrow,    intersection,           KP_Up,           KP_Up,           U22C2,        NoSymbol ]
+       };
+       key <KP9>                {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [        KP_Prior,            KP_9 ],
+               symbols[Group2]= [        KP_Prior,            KP_9 ],
+               symbols[Group3]= [        KP_Prior,            KP_9 ],
+               symbols[Group4]= [            KP_9,          dagger,           U20D7,           U226B,        KP_Prior,        KP_Prior,           U2309,        NoSymbol ]
+       };
+       key <KPSU>               {
+               type[group1]= "CTRL+ALT",
+               type[group2]= "CTRL+ALT",
+               type[group3]= "CTRL+ALT",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [     KP_Subtract,     KP_Subtract,     KP_Subtract,     KP_Subtract,  XF86Prev_VMode ],
+               symbols[Group2]= [     KP_Subtract,     KP_Subtract,     KP_Subtract,     KP_Subtract,  XF86Prev_VMode ],
+               symbols[Group3]= [     KP_Subtract,     KP_Subtract,     KP_Subtract,     KP_Subtract,  XF86Prev_VMode ],
+               symbols[Group4]= [     KP_Subtract,     KP_Subtract,           U2212,           U2296,           U2216,        NoSymbol,           U2238,        NoSymbol ]
+       };
+       key <KP4>                {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [         KP_Left,            KP_4 ],
+               symbols[Group2]= [         KP_Left,            KP_4 ],
+               symbols[Group3]= [         KP_Left,            KP_4 ],
+               symbols[Group4]= [            KP_4,            club,       leftarrow,      includedin,         KP_Left,         KP_Left,           U2286,        NoSymbol ]
+       };
+       key <KP5>                {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [        KP_Begin,            KP_5 ],
+               symbols[Group2]= [        KP_Begin,            KP_5 ],
+               symbols[Group3]= [        KP_Begin,            KP_5 ],
+               symbols[Group4]= [            KP_5,        EuroSign,           colon,           U22B6,        KP_Begin,        KP_Begin,           U22B7,        NoSymbol ]
+       };
+       key <KP6>                {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [        KP_Right,            KP_6 ],
+               symbols[Group2]= [        KP_Right,            KP_6 ],
+               symbols[Group3]= [        KP_Right,            KP_6 ],
+               symbols[Group4]= [            KP_6,           U2023,      rightarrow,        includes,        KP_Right,        KP_Right,           U2287,        NoSymbol ]
+       };
+       key <KPAD>               {
+               type[group1]= "CTRL+ALT",
+               type[group2]= "CTRL+ALT",
+               type[group3]= "CTRL+ALT",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [          KP_Add,          KP_Add,          KP_Add,          KP_Add,  XF86Next_VMode ],
+               symbols[Group2]= [          KP_Add,          KP_Add,          KP_Add,          KP_Add,  XF86Next_VMode ],
+               symbols[Group3]= [          KP_Add,          KP_Add,          KP_Add,          KP_Add,  XF86Next_VMode ],
+               symbols[Group4]= [          KP_Add,          KP_Add,       plusminus,           U2295,           U2213,        NoSymbol,           U2214,        NoSymbol ]
+       };
+       key <KP1>                {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [          KP_End,            KP_1 ],
+               symbols[Group2]= [          KP_End,            KP_1 ],
+               symbols[Group3]= [          KP_End,            KP_1 ],
+               symbols[Group4]= [            KP_1,         diamond,           U2194,   lessthanequal,          KP_End,          KP_End,       downstile,        NoSymbol ]
+       };
+       key <KP2>                {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [         KP_Down,            KP_2 ],
+               symbols[Group2]= [         KP_Down,            KP_2 ],
+               symbols[Group3]= [         KP_Down,            KP_2 ],
+               symbols[Group4]= [            KP_2,           heart,       downarrow,           union,         KP_Down,         KP_Down,           U22C3,        NoSymbol ]
+       };
+       key <KP3>                {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [         KP_Next,            KP_3 ],
+               symbols[Group2]= [         KP_Next,            KP_3 ],
+               symbols[Group3]= [         KP_Next,            KP_3 ],
+               symbols[Group4]= [            KP_3,           U2660,           U21CC, greaterthanequal,         KP_Next,         KP_Next,           U230B,        NoSymbol ]
+       };
+       key <KP0>                {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [       KP_Insert,            KP_0 ],
+               symbols[Group2]= [       KP_Insert,            KP_0 ],
+               symbols[Group3]= [       KP_Insert,            KP_0 ],
+               symbols[Group4]= [            KP_0,           U2423,         percent,           U2030,       KP_Insert,       KP_Insert,           U25A1,        NoSymbol ]
+       };
+       key <KPDL>               {
+               type[group2]= "KEYPAD",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [       KP_Delete,      KP_Decimal ],
+               symbols[Group2]= [       KP_Delete,    KP_Separator ],
+               symbols[Group3]= [       KP_Delete,      KP_Decimal ],
+               symbols[Group4]= [    KP_Separator,          period,           comma,         minutes,       KP_Delete,       KP_Delete,         seconds,        NoSymbol ]
+       };
+       key <LVL3>               {      [ ISO_Level3_Shift ] };
+       key <LSGT>               {
+               type[group1]= "FOUR_LEVEL",
+               type[group3]= "EIGHT_LEVEL_SEMIALPHABETIC",
+               type[group4]= "ONE_LEVEL",
+               symbols[Group1]= [            less,         greater,             bar,       brokenbar ],
+               symbols[Group2]= [           slash,             bar ],
+               symbols[Group3]= [          ugrave,          Ugrave,          degree,        NoSymbol,        NoSymbol,       brokenbar,        NoSymbol,        NoSymbol ],
+               symbols[Group4]= [ ISO_Level5_Shift ]
+       };
+       key <FK11>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [             F11,             F11,             F11,             F11, XF86Switch_VT_11 ]
+       };
+       key <FK12>               {
+               type= "CTRL+ALT",
+               symbols[Group1]= [             F12,             F12,             F12,             F12, XF86Switch_VT_12 ]
+       };
+       key <KATA>               {      [        Katakana ] };
+       key <HIRA>               {      [        Hiragana ] };
+       key <HENK>               {      [     Henkan_Mode ] };
+       key <HKTG>               {      [ Hiragana_Katakana ] };
+       key <MUHE>               {      [        Muhenkan ] };
+       key <KPEN>               {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [        KP_Enter ],
+               symbols[Group2]= [        KP_Enter ],
+               symbols[Group3]= [        KP_Enter ],
+               symbols[Group4]= [        KP_Enter,        KP_Enter,        KP_Enter,        KP_Enter,        KP_Enter,        KP_Enter,        KP_Enter,        NoSymbol ]
+       };
+       key <RCTL>               {
+               type= "ONE_LEVEL",
+               symbols[Group1]= [       Control_R ],
+               symbols[Group2]= [       Control_R ],
+               symbols[Group3]= [ ISO_Level5_Shift ]
+       };
+       key <KPDV>               {
+               type[group1]= "CTRL+ALT",
+               type[group2]= "CTRL+ALT",
+               type[group3]= "CTRL+ALT",
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [       KP_Divide,       KP_Divide,       KP_Divide,       KP_Divide,      XF86Ungrab ],
+               symbols[Group2]= [       KP_Divide,       KP_Divide,       KP_Divide,       KP_Divide,      XF86Ungrab ],
+               symbols[Group3]= [       KP_Divide,       KP_Divide,       KP_Divide,       KP_Divide,      XF86Ungrab ],
+               symbols[Group4]= [       KP_Divide,       KP_Divide,        division,           U2300,           U2215,        NoSymbol,           U2223,        NoSymbol ]
+       };
+       key <PRSC>               {
+               type= "PC_ALT_LEVEL2",
+               symbols[Group1]= [           Print,         Sys_Req ]
+       };
+       key <RALT>               {
+               type[group1]= "TWO_LEVEL",
+               type[group2]= "TWO_LEVEL",
+               type[group3]= "ONE_LEVEL",
+               type[group4]= "ONE_LEVEL",
+               symbols[Group1]= [           Alt_R,          Meta_R ],
+               symbols[Group2]= [           Alt_R,          Meta_R ],
+               symbols[Group3]= [ ISO_Level3_Shift ],
+               symbols[Group4]= [ ISO_Level5_Shift ]
+       };
+       key <LNFD>               {      [        Linefeed ] };
+       key <HOME>               {      [            Home ] };
+       key <UP>                 {      [              Up ] };
+       key <PGUP>               {      [           Prior ] };
+       key <LEFT>               {      [            Left ] };
+       key <RGHT>               {      [           Right ] };
+       key <END>                {      [             End ] };
+       key <DOWN>               {      [            Down ] };
+       key <PGDN>               {      [            Next ] };
+       key <INS>                {      [          Insert ] };
+       key <DELE>               {      [          Delete ] };
+       key <MUTE>               {      [   XF86AudioMute ] };
+       key <VOL->               {      [ XF86AudioLowerVolume ] };
+       key <VOL+>               {      [ XF86AudioRaiseVolume ] };
+       key <POWR>               {      [    XF86PowerOff ] };
+       key <KPEQ>               {
+               type[group4]= "EIGHT_LEVEL",
+               symbols[Group1]= [        KP_Equal ],
+               symbols[Group2]= [        KP_Equal ],
+               symbols[Group3]= [        KP_Equal ],
+               symbols[Group4]= [        KP_Equal,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol,        NoSymbol ]
+       };
+       key <I126>               {      [       plusminus ] };
+       key <PAUS>               {
+               type= "PC_CONTROL_LEVEL2",
+               symbols[Group1]= [           Pause,           Break ]
+       };
+       key <I128>               {      [     XF86LaunchA ] };
+       key <I129>               {      [      KP_Decimal,      KP_Decimal ] };
+       key <HNGL>               {      [          Hangul ] };
+       key <HJCV>               {      [    Hangul_Hanja ] };
+       key <LWIN>               {      [         Super_L ] };
+       key <RWIN>               {      [         Super_R ] };
+       key <COMP>               {      [            Menu ] };
+       key <STOP>               {      [          Cancel ] };
+       key <AGAI>               {      [            Redo ] };
+       key <PROP>               {      [        SunProps ] };
+       key <UNDO>               {      [            Undo ] };
+       key <FRNT>               {      [        SunFront ] };
+       key <COPY>               {      [        XF86Copy ] };
+       key <OPEN>               {      [         SunOpen ] };
+       key <PAST>               {      [       XF86Paste ] };
+       key <FIND>               {      [            Find ] };
+       key <CUT>                {      [         XF86Cut ] };
+       key <HELP>               {      [            Help ] };
+       key <I147>               {      [      XF86MenuKB ] };
+       key <I148>               {      [  XF86Calculator ] };
+       key <I150>               {      [       XF86Sleep ] };
+       key <I151>               {      [      XF86WakeUp ] };
+       key <I152>               {      [    XF86Explorer ] };
+       key <I153>               {      [        XF86Send ] };
+       key <I155>               {      [        XF86Xfer ] };
+       key <I156>               {      [     XF86Launch1 ] };
+       key <I157>               {      [     XF86Launch2 ] };
+       key <I158>               {      [         XF86WWW ] };
+       key <I159>               {      [         XF86DOS ] };
+       key <I160>               {      [ XF86ScreenSaver ] };
+       key <I162>               {      [ XF86RotateWindows ] };
+       key <I163>               {      [        XF86Mail ] };
+       key <I164>               {      [   XF86Favorites ] };
+       key <I165>               {      [  XF86MyComputer ] };
+       key <I166>               {      [        XF86Back ] };
+       key <I167>               {      [     XF86Forward ] };
+       key <I169>               {      [       XF86Eject ] };
+       key <I170>               {      [       XF86Eject,       XF86Eject ] };
+       key <I171>               {      [   XF86AudioNext ] };
+       key <I172>               {      [   XF86AudioPlay,  XF86AudioPause ] };
+       key <I173>               {      [   XF86AudioPrev ] };
+       key <I174>               {      [   XF86AudioStop,       XF86Eject ] };
+       key <I175>               {      [ XF86AudioRecord ] };
+       key <I176>               {      [ XF86AudioRewind ] };
+       key <I177>               {      [       XF86Phone ] };
+       key <I179>               {      [       XF86Tools ] };
+       key <I180>               {      [    XF86HomePage ] };
+       key <I181>               {      [      XF86Reload ] };
+       key <I182>               {      [       XF86Close ] };
+       key <I185>               {      [    XF86ScrollUp ] };
+       key <I186>               {      [  XF86ScrollDown ] };
+       key <I187>               {      [       parenleft ] };
+       key <I188>               {      [      parenright ] };
+       key <I189>               {      [         XF86New ] };
+       key <I190>               {      [            Redo ] };
+       key <FK13>               {      [       XF86Tools ] };
+       key <FK14>               {      [     XF86Launch5 ] };
+       key <FK15>               {      [     XF86Launch6 ] };
+       key <FK16>               {      [     XF86Launch7 ] };
+       key <FK17>               {      [     XF86Launch8 ] };
+       key <FK18>               {      [     XF86Launch9 ] };
+       key <FK21>               {      [ XF86TouchpadToggle ] };
+       key <FK22>               {      [  XF86TouchpadOn ] };
+       key <FK23>               {      [ XF86TouchpadOff ] };
+       key <MDSW>               {      [     Mode_switch ] };
+       key <ALT>                {      [        NoSymbol,           Alt_L ] };
+       key <META>               {      [        NoSymbol,          Meta_L ] };
+       key <SUPR>               {      [        NoSymbol,         Super_L ] };
+       key <HYPR>               {      [        NoSymbol,         Hyper_L ] };
+       key <I208>               {      [   XF86AudioPlay ] };
+       key <I209>               {      [  XF86AudioPause ] };
+       key <I210>               {      [     XF86Launch3 ] };
+       key <I211>               {      [     XF86Launch4 ] };
+       key <I212>               {      [     XF86LaunchB ] };
+       key <I213>               {      [     XF86Suspend ] };
+       key <I214>               {      [       XF86Close ] };
+       key <I215>               {      [   XF86AudioPlay ] };
+       key <I216>               {      [ XF86AudioForward ] };
+       key <I218>               {      [           Print ] };
+       key <I220>               {      [      XF86WebCam ] };
+       key <I223>               {      [        XF86Mail ] };
+       key <I224>               {      [   XF86Messenger ] };
+       key <I225>               {      [      XF86Search ] };
+       key <I226>               {      [          XF86Go ] };
+       key <I227>               {      [     XF86Finance ] };
+       key <I228>               {      [        XF86Game ] };
+       key <I229>               {      [        XF86Shop ] };
+       key <I231>               {      [          Cancel ] };
+       key <I232>               {      [ XF86MonBrightnessDown ] };
+       key <I233>               {      [ XF86MonBrightnessUp ] };
+       key <I234>               {      [  XF86AudioMedia ] };
+       key <I235>               {      [     XF86Display ] };
+       key <I236>               {      [ XF86KbdLightOnOff ] };
+       key <I237>               {      [ XF86KbdBrightnessDown ] };
+       key <I238>               {      [ XF86KbdBrightnessUp ] };
+       key <I239>               {      [        XF86Send ] };
+       key <I240>               {      [       XF86Reply ] };
+       key <I241>               {      [ XF86MailForward ] };
+       key <I242>               {      [        XF86Save ] };
+       key <I243>               {      [   XF86Documents ] };
+       key <I244>               {      [     XF86Battery ] };
+       key <I245>               {      [   XF86Bluetooth ] };
+       key <I246>               {      [        XF86WLAN ] };
+       modifier_map Control { <LCTL> };
+       modifier_map Shift { <LFSH> };
+       modifier_map Shift { <RTSH> };
+       modifier_map Mod1 { <LALT> };
+       modifier_map Lock { <CAPS> };
+       modifier_map Mod2 { <NMLK> };
+       modifier_map Mod5 { <LVL3> };
+       modifier_map Mod3 { <RCTL> };
+       modifier_map Mod1 { <RALT> };
+       modifier_map Mod4 { <LWIN> };
+       modifier_map Mod4 { <RWIN> };
+       modifier_map Mod5 { <MDSW> };
+       modifier_map Mod1 { <META> };
+       modifier_map Mod4 { <SUPR> };
+       modifier_map Mod4 { <HYPR> };
+};
 
 };