unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#56782: 29.0.50; xkb layers stopped working
@ 2022-07-26 12:32 Joe Corneli via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-07-27  5:03 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 4+ messages in thread
From: Joe Corneli via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-26 12:32 UTC (permalink / raw)
  To: 56782

[-- Attachment #1: Type: text/plain, Size: 1026 bytes --]

I have modifiers on the number row of my laptop’s keyboard, e.g.,

 key <AE07> {
     type= "FOUR_LEVEL",
     symbols[Group1]= [     Mode_switch,       ampersand,        NoSymbol,        NoSymbol ]
 };
 key <AE08> {
     type= "FOUR_LEVEL",
     symbols[Group1]= [          Meta_R,        asterisk,        NoSymbol,        NoSymbol ]
 };

and so on.

However, Shift+7, Shift+8 (etc.) have stopped working as desired in the
most recent Emacs build, although these bindings still work fine in
alacritty, Firefox, and other X Windows programs.  (In particular, the
binding works as desired in emacs -nw running under Alacritty.)

I’ve attached my full set of bindings here.  You should be able try them
out on a temporary basis via

xkbcomp $DISPLAY xkb.dump
xkbcomp ~/mbp.xkb $DISPLAY > /dev/null 2>&1
xkbcomp ~/xkb.dump $DISPLAY > /dev/null 2>&1

TL;DR: With mbp.xkb bindings in effect, Shift+7 will produce an "&" in
your terminal, but it doesn’t do this on the X Windows version of Emacs.


[-- Attachment #2: mbp.xkb --]
[-- Type: application/octet-stream, Size: 64147 bytes --]

xkb_keymap {
xkb_keycodes "evdev+aliases(qwerty)" {
    minimum = 8;
    maximum = 255;
     <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";
    virtual indicator 12 = "Shift Lock";
    virtual indicator 13 = "Group 2";
    virtual 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" {

    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 "KEYPAD" {
        modifiers= Shift+NumLock;
        map[Shift]= Level2;
        map[NumLock]= Level2;
        level_name[Level1]= "Base";
        level_name[Level2]= "Number";
    };
    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;
        preserve[Shift]= Shift;
        map[LevelThree]= Level3;
        map[Shift+LevelThree]= Level4;
        preserve[Shift+LevelThree]= Shift;
        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+Lock]= Level1;
        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[Shift+Lock+LevelFive]= Level6;
        preserve[Shift+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;
        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[Shift+NumLock]= Level1;
        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 "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" {

    virtual_modifiers NumLock,Alt,LevelThree,LAlt,RAlt,RControl,LControl,ScrollLock,LevelFive,AltGr,Meta,Super,Hyper;

    interpret.useModMapMods= AnyLevel;
    interpret.repeat= False;
    interpret.locking= 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_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;
        useModMapMods=level1;
        action= LatchMods(modifiers=LevelFive,clearLocks,latchToLock);
    };
    interpret ISO_Level5_Lock+AnyOf(all) {
        virtualModifier= LevelFive;
        useModMapMods=level1;
        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=Overlay1);
    };
    interpret Overlay2_Enable+AnyOfOrNone(all) {
        action= LockControls(controls=Overlay2);
    };
    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,clearLocks);
    };
    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=LevelFive);
    };
    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);
    };
    group 2 = AltGr;
    group 3 = AltGr;
    group 4 = AltGr;
    indicator "Caps Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= Lock;
    };
    indicator "Num Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= NumLock;
    };
    indicator "Scroll Lock" {
        whichModState= locked;
        modifiers= ScrollLock;
    };
    indicator "Shift Lock" {
        !allowExplicit;
        whichModState= locked;
        modifiers= Shift;
    };
    indicator "Group 2" {
        !allowExplicit;
        groups= 0xfe;
    };
    indicator "Mouse Keys" {
        indicatorDrivesKeyboard;
        controls= mouseKeys;
    };
};

xkb_symbols "pc+gb+inet(evdev)+group(switch)" {

    name[group1]="English (UK)";

    key  <ESC> {         [          Escape ] };
    key <AE01> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               1,          exclam,        NoSymbol,        NoSymbol ]
    };
    key <AE02> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [               Hyper_L,              at,        NoSymbol,        NoSymbol ],
        symbols[Group2]= [ U20AC ]
    };
    key <AE03> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [       Control_L,      numbersign,        NoSymbol,        NoSymbol ],
        symbols[Group2]= [ sterling ]
    };
    key <AE04> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [          Meta_L,          dollar,        NoSymbol,        NoSymbol ]
    };
    key <AE05> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [     Mode_switch,         percent,        NoSymbol,        NoSymbol ]
    };
    key <AE06> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               emdash,     asciicircum,        NoSymbol,        NoSymbol ]
    };
    key <AE07> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [     Mode_switch,       ampersand,        NoSymbol,        NoSymbol ]
    };
    key <AE08> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [          Meta_R,        asterisk,        NoSymbol,        NoSymbol ]
    };
    key <AE09> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [       Control_R,       parenleft,        NoSymbol,        NoSymbol ]
    };
    key <AE10> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [         Hyper_R,      parenright,        NoSymbol,        NoSymbol ]
    };
    key <AE11> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [         Super_R,       braceleft,        guillemotleft,        NoSymbol ],
        symbols[Group2]= [      guillemotleft ]
    };
    key <AE12> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [    bracketright,      braceright,      guillemotright,        NoSymbol ],
        symbols[Group2]= [      guillemotright ]
    };
    key <BKSP> {         [       BackSpace,       BackSpace ] };
    key  <TAB> {         [             Tab,    ISO_Left_Tab ] };
    key <AD01> {
        type[group1]= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [      apostrophe,        quotedbl,      grave,  dead_diaeresis ],
        symbols[Group2]= [      grave ],
        symbols[Group3]= [      grave ]
    };
    key <AD02> {
        type[group1]= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [           comma,            less,        BackSpace,        NoSymbol ],
        symbols[Group2]= [       BackSpace ]
    };
    key <AD03> {
        type[group1]= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [          period,         greater,        Up,        NoSymbol ],
        symbols[Group2]= [              Up ]
    };
    key <AD04> {
        type[group1]= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               p,               P,        Delete,        NoSymbol ],
        symbols[Group2]= [          Delete ]
    };
    key <AD05> {
        type[group1]= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               y,               Y,        dollar,        NoSymbol ],
        symbols[Group2]= [          dollar ]
    };
    key <AD06> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               f,               F,        NoSymbol,        NoSymbol ],
        symbols[Group2]= [          ampersand ]
    };
    key <AD07> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               g,               G,        NoSymbol,        NoSymbol ]
    };
    key <AD08> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               c,               C,        NoSymbol,        NoSymbol ],
        symbols[Group2]= [ U2153 ]
    };
    key <AD09> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               r,               R,        NoSymbol,        NoSymbol ]
    };
    key <AD10> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               l,               L,        U03BB,        NoSymbol ],
		symbols[Group2]= [       U03BB ]
    };
    key <AD11> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [           slash,        question,        asciitilde,        NoSymbol ],
	symbols[Group2]= [asciitilde]
    };
    key <AD12> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [           equal,            plus,        NoSymbol,        NoSymbol ]
    };
    key <RTRN> {         [          Return ] };
    key <LCTL> {         [       NoSymbol ] };
    key <AC01> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               a,               A,        NoSymbol,        NoSymbol ],
	symbols[Group2]= [exclam]
    };
    key <AC02> {
        type[group1]= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               o,               O,        Left,        NoSymbol ],
        symbols[Group2]= [            Left ]
    };
    key <AC03> {
        type[group1]= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               e,               E,        Down,        NoSymbol ],
        symbols[Group2]= [            Down ]
    };
    key <AC04> {
        type[group1]= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               u,               U,        Right,        NoSymbol ],
        symbols[Group2]= [           Right ]
    };
    key <AC05> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               i,               I,        NoSymbol,        NoSymbol ],
	symbols[Group2]= [asterisk]
    };
    key <AC06> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               d,               D,        NoSymbol,        NoSymbol ],
        symbols[Group2]= [ U20AC ]
    };
    key <AC07> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               h,               H,        NoSymbol,        NoSymbol ],
	symbols[Group2]= [numbersign]
    };
    key <AC08> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               t,               T,        NoSymbol,        NoSymbol ],
        symbols[Group2]= [ U00B0 ]
    };
    key <AC09> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               n,               N,        NoSymbol,        NoSymbol ],
        symbols[Group2]= [ U00BD ]
    };
    key <AC10> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               s,               S,        at,        NoSymbol ],
        symbols[Group2]= [ at ]
    };
    key <AC11> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [           minus,      underscore,        emdash,        NoSymbol ]
    };
    key <TLDE> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [           paragraph,      dagger,      NoSymbol, NoSymbol ],
        symbols[Group2]= [           section ]
    };
    key <LFSH> {         [         Shift_L ] };
    key <BKSL> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [       backslash,             bar,        NoSymbol,        NoSymbol ]
    };
    key <AB01> {
        type[group1]= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [       semicolon,           colon,     dead_ogonek, dead_doubleacute ],
        symbols[Group2]= [       bracketleft,           colon ],
        symbols[Group3]= [     dead_ogonek ]
    };
    key <AB02> {
        type[group1]= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               q,               Q,        NoSymbol,        NoSymbol ],
        symbols[Group2]= [       bracketright,           Q ]
    };
    key <AB03> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               j,               J,        NoSymbol,        NoSymbol ],
        symbols[Group2]= [       braceleft,           J ]
    };
    key <AB04> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               k,               K,        NoSymbol,        NoSymbol ],
	symbols[Group2]= [       braceright,           K ]
    };
    key <AB05> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               x,               X,        NoSymbol,        NoSymbol ]
    };
    key <AB06> {
        type= "FOUR_LEVEL_ALPHABETIC",
        symbols[Group1]= [               b,               B,        NoSymbol,        NoSymbol ],
        symbols[Group2]=[U2248]
    };
    key <AB07> {
        type= "FOUR_LEVEL_SEMIALPHABETIC",
        symbols[Group1]= [               m,               M,        mu,        NoSymbol ],
	symbols[Group2]= [       mu ]
    };
    key <AB08> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               w,               W,        NoSymbol,        NoSymbol ]
    };
    key <AB09> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               v,               V,        NoSymbol,        NoSymbol ],
       	symbols[Group2]= [       parenleft]
    };
    key <AB10> {
        type= "FOUR_LEVEL",
        symbols[Group1]= [               z,               Z,        NoSymbol,        NoSymbol ],
       	symbols[Group2]= [       parenright]
    };
    key <RTSH> {         [         Shift_R ] };
    key <KPMU> {
        type[group1]= "CTRL+ALT",
        symbols[Group1]= [     KP_Multiply,     KP_Multiply,     KP_Multiply,     KP_Multiply,   XF86ClearGrab ],
        symbols[Group2]= [     KP_Multiply,     KP_Multiply ]
    };
    key <LALT> {         [           Alt_L,          Meta_L ] };
    key <SPCE> {         [           space ] };
    key <CAPS> {         [       F12, Insert ] };
    key <FK01> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [              1,              F1,              F1, XF86Switch_VT_1,        NoSymbol ],
        symbols[Group2]= [              1,              F1 ]
    };
    key <FK02> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [              2,              F2,              F2, XF86Switch_VT_2,        NoSymbol ],
        symbols[Group2]= [              2,              F2 ]
    };
    key <FK03> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [              3,              F3,              F3, XF86Switch_VT_3,        NoSymbol ],
        symbols[Group2]= [              3,              F3 ]
    };
    key <FK04> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [              4,              F4,              F4, XF86Switch_VT_4,        NoSymbol ],
        symbols[Group2]= [              4,              F4 ]
    };
    key <FK05> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [              5,              F5,              F5, XF86Switch_VT_5,        NoSymbol ],
        symbols[Group2]= [              5,              F5 ]
    };
    key <FK06> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [              6,              F6,              F6, XF86Switch_VT_6,        NoSymbol ],
        symbols[Group2]= [              6,              F6 ]
    };
    key <FK07> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [              7,              F7,              F7, XF86Switch_VT_7,        NoSymbol ],
        symbols[Group2]= [              7,              F7 ]
    };
    key <FK08> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [              8,              F8,              F8, XF86Switch_VT_8,        NoSymbol ],
        symbols[Group2]= [              8,              F8 ]
    };
    key <FK09> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [              9,              F9,              F9, XF86Switch_VT_9,        NoSymbol ],
        symbols[Group2]= [              9,              F9 ]
    };
    key <FK10> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [             0,             F10,             F10, XF86Switch_VT_10,        NoSymbol ],
        symbols[Group2]= [             0,             F10 ]
    };
    key <NMLK> {         [        Num_Lock ] };
    key <SCLK> {         [     Scroll_Lock ] };
    key  <KP7> {         [         KP_Home,            KP_7 ] };
    key  <KP8> {         [           KP_Up,            KP_8 ] };
    key  <KP9> {         [        KP_Prior,            KP_9 ] };
    key <KPSU> {
        type[group1]= "CTRL+ALT",
        symbols[Group1]= [     KP_Subtract,     KP_Subtract,     KP_Subtract,     KP_Subtract,  XF86Prev_VMode ],
        symbols[Group2]= [     KP_Subtract,     KP_Subtract ]
    };
    key  <KP4> {         [         KP_Left,            KP_4 ] };
    key  <KP5> {         [        KP_Begin,            KP_5 ] };
    key  <KP6> {         [        KP_Right,            KP_6 ] };
    key <KPAD> {
        type[group1]= "CTRL+ALT",
        symbols[Group1]= [          KP_Add,          KP_Add,          KP_Add,          KP_Add,  XF86Next_VMode ],
        symbols[Group2]= [          KP_Add,          KP_Add ]
    };
    key  <KP1> {         [          KP_End,            KP_1 ] };
    key  <KP2> {         [         KP_Down,            KP_2 ] };
    key  <KP3> {         [         KP_Next,            KP_3 ] };
    key  <KP0> {         [       KP_Insert,            KP_0 ] };
    key <KPDL> {         [       KP_Delete,      KP_Decimal ] };
    key <LVL3> {
        type= "ONE_LEVEL",
        symbols[Group1]= [ ISO_Level3_Shift ]
    };
    key <LSGT> {
        type[group1]= "FOUR_LEVEL",
        symbols[Group1]= [            section,         paragraph,             dagger,       brokenbar ],
        symbols[Group2]= [            dagger,         U2021 ],
        symbols[Group3]= [             bar ]
    };
    key <FK11> {
        type[group1]= "CTRL+ALT",
        symbols[Group1]= [             F11,             F11,             F11,             F11, XF86Switch_VT_11 ],
        symbols[Group2]= [             F11,             F11 ]
    };
    key <FK12> {
        type[group1]= "CTRL+ALT",
        symbols[Group1]= [             F12,             F12,             F12,             F12, XF86Switch_VT_12 ],
        symbols[Group2]= [             F12,             F12 ]
    };
    key <KATA> {         [        Katakana ] };
    key <HIRA> {         [        Hiragana ] };
    key <HENK> {         [     Henkan_Mode ] };
    key <HKTG> {         [ Hiragana_Katakana ] };
    key <MUHE> {         [        Muhenkan ] };
    key <KPEN> {         [        KP_Enter ] };
    key <RCTL> {         [       Control_R ] };
    key <KPDV> {
        type[group1]= "CTRL+ALT",
        symbols[Group1]= [       KP_Divide,       KP_Divide,       KP_Divide,       KP_Divide,      XF86Ungrab ],
        symbols[Group2]= [       KP_Divide,       KP_Divide ]
    };
    key <PRSC> {
        type= "PC_ALT_LEVEL2",
        symbols[Group1]= [           Print,         Sys_Req ]
    };
    key <RALT> {
        type= "TWO_LEVEL",
        symbols[Group1]= [           Alt_R,          Meta_R ]
    };
    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> {
        symbols[Group1]= [               0,   XF86AudioMute ],
        symbols[Group2]= [        NoSymbol,   XF86AudioMute ]
    };
    key <VOL-> {         [ at, XF86AudioLowerVolume ] };
    key <VOL+> {         [ F2 ] };
    key <POWR> {         [    XF86PowerOff ] };
    key <KPEQ> {         [        KP_Equal ] };
    key <I126> {         [       plusminus ] };
    key <PAUS> {
        type= "PC_CONTROL_LEVEL2",
        symbols[Group1]= [           Pause,           Break ]
    };
    key <I128> {
        symbols[Group1]= [               3,     XF86LaunchA ],
        symbols[Group2]= [        NoSymbol,     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> {         [        XF86Open ] };
    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> {
        symbols[Group1]= [               9,   XF86AudioNext ],
        symbols[Group2]= [        NoSymbol,   XF86AudioNext ]
    };
    key <I172> {
        symbols[Group1]= [               8,   XF86AudioPlay ],
        symbols[Group2]= [  XF86AudioPause,   XF86AudioPlay ],
        symbols[Group3]= [  XF86AudioPause ]
    };
    key <I173> {
        symbols[Group1]= [               7,   XF86AudioPrev ],
        symbols[Group2]= [        NoSymbol,   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 <FK20> {         [ XF86AudioMicMute ] };
    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> {
        symbols[Group1]= [               4,     XF86LaunchB ],
        symbols[Group2]= [        NoSymbol,     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> {
        symbols[Group1]= [               1, XF86MonBrightnessDown ],
        symbols[Group2]= [        NoSymbol, XF86MonBrightnessDown ]
    };
    key <I233> {
        symbols[Group1]= [               2, XF86MonBrightnessUp ],
        symbols[Group2]= [        NoSymbol, XF86MonBrightnessUp ]
    };
    key <I234> {         [  XF86AudioMedia ] };
    key <I235> {         [     XF86Display ] };
    key <I236> {         [ XF86KbdLightOnOff ] };
    key <I237> {
        symbols[Group1]= [               5, XF86KbdBrightnessDown ],
        symbols[Group2]= [        NoSymbol, XF86KbdBrightnessDown ]
    };
    key <I238> {
        symbols[Group1]= [               6, XF86KbdBrightnessUp ],
        symbols[Group2]= [        NoSymbol, 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 { <AE03> };
    modifier_map Mod1 { <AE04> };
    modifier_map Mod2 { <AE05> };
    modifier_map Mod2 { <AE07> };
    modifier_map Mod1 { <AE08> };
    modifier_map Control { <AE09> };
    modifier_map Control { <LCTL> };
    modifier_map Shift { <LFSH> };
    modifier_map Shift { <RTSH> };
    modifier_map Mod1 { <LALT> };
    modifier_map Control { <RCTL> };
    modifier_map Mod1 { <RALT> };
    modifier_map Mod2 { <MDSW> };
    modifier_map Mod1 { <META> };
    modifier_map Mod3 { <AE01> };
    modifier_map Mod3 { <AE11> };
    modifier_map Mod4 { <AE02> };
    modifier_map Mod4 { <AE10> };

}
	;

xkb_geometry "pc(pc104)" {

    width=       470;
    height=      180;

    alias <AC00> = <CAPS>;
    alias <AA00> = <LCTL>;

    baseColor=   "white";
    labelColor=  "black";
    xfont=       "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
    description= "Generic 104";

    shape "NORM" {
        corner= 1,
        { [  18,  18 ] },
        { [   2,   1 ], [  16,  16 ] }
    };
    shape "BKSP" {
        corner= 1,
        { [  38,  18 ] },
        { [   2,   1 ], [  36,  16 ] }
    };
    shape "TABK" {
        corner= 1,
        { [  28,  18 ] },
        { [   2,   1 ], [  26,  16 ] }
    };
    shape "BKSL" {
        corner= 1,
        { [  28,  18 ] },
        { [   2,   1 ], [  26,  16 ] }
    };
    shape "RTRN" {
        corner= 1,
        { [  42,  18 ] },
        { [   2,   1 ], [  40,  16 ] }
    };
    shape "CAPS" {
        corner= 1,
        { [  33,  18 ] },
        { [   2,   1 ], [  31,  16 ] }
    };
    shape "LFSH" {
        corner= 1,
        { [  42,  18 ] },
        { [   2,   1 ], [  40,  16 ] }
    };
    shape "RTSH" {
        corner= 1,
        { [  52,  18 ] },
        { [   2,   1 ], [  50,  16 ] }
    };
    shape "MODK" {
        corner= 1,
        { [  27,  18 ] },
        { [   2,   1 ], [  25,  16 ] }
    };
    shape "SMOD" {
        corner= 1,
        { [  23,  18 ] },
        { [   2,   1 ], [  21,  16 ] }
    };
    shape "SPCE" {
        corner= 1,
        { [ 113,  18 ] },
        { [   2,   1 ], [ 111,  16 ] }
    };
    shape "KP0" {
        corner= 1,
        { [  37,  18 ] },
        { [   2,   1 ], [  35,  16 ] }
    };
    shape "KPAD" {
        corner= 1,
        { [  18,  37 ] },
        { [   2,   1 ], [  16,  35 ] }
    };
    shape "LEDS" { { [  75,  20 ] } };
    shape "LED" { { [   5,   1 ] } };
    section "Function" {
        key.color= "grey20";
        priority=  7;
        top=       22;
        left=      19;
        width=     351;
        height=    19;
        row {
            top=  1;
            left= 1;
            keys {
                {  <ESC>, "NORM",   1 },
                { <FK01>, "NORM",  20, color="white" },
                { <FK02>, "NORM",   1, color="white" },
                { <FK03>, "NORM",   1, color="white" },
                { <FK04>, "NORM",   1, color="white" },
                { <FK05>, "NORM",  11, color="white" },
                { <FK06>, "NORM",   1, color="white" },
                { <FK07>, "NORM",   1, color="white" },
                { <FK08>, "NORM",   1, color="white" },
                { <FK09>, "NORM",  11, color="white" },
                { <FK10>, "NORM",   1, color="white" },
                { <FK11>, "NORM",   1, color="white" },
                { <FK12>, "NORM",   1, color="white" },
                { <PRSC>, "NORM",   8, color="white" },
                { <SCLK>, "NORM",   1, color="white" },
                { <PAUS>, "NORM",   1, color="white" }
            };
        };
    }; // End of "Function" section

    section "Alpha" {
        key.color= "white";
        priority=  8;
        top=       61;
        left=      19;
        width=     287;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                { <TLDE>, "NORM",   1 }, { <AE01>, "NORM",   1 },
                { <AE02>, "NORM",   1 }, { <AE03>, "NORM",   1 },
                { <AE04>, "NORM",   1 }, { <AE05>, "NORM",   1 },
                { <AE06>, "NORM",   1 }, { <AE07>, "NORM",   1 },
                { <AE08>, "NORM",   1 }, { <AE09>, "NORM",   1 },
                { <AE10>, "NORM",   1 }, { <AE11>, "NORM",   1 },
                { <AE12>, "NORM",   1 },
                { <BKSP>, "BKSP",   1, color="grey20" }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                {  <TAB>, "TABK",   1, color="grey20" },
                { <AD01>, "NORM",   1 }, { <AD02>, "NORM",   1 },
                { <AD03>, "NORM",   1 }, { <AD04>, "NORM",   1 },
                { <AD05>, "NORM",   1 }, { <AD06>, "NORM",   1 },
                { <AD07>, "NORM",   1 }, { <AD08>, "NORM",   1 },
                { <AD09>, "NORM",   1 }, { <AD10>, "NORM",   1 },
                { <AD11>, "NORM",   1 }, { <AD12>, "NORM",   1 },
                { <BKSL>, "BKSL",   1 }
            };
        };
        row {
            top=  39;
            left= 1;
            keys {
                { <CAPS>, "CAPS",   1, color="grey20" },
                { <AC01>, "NORM",   1 }, { <AC02>, "NORM",   1 },
                { <AC03>, "NORM",   1 }, { <AC04>, "NORM",   1 },
                { <AC05>, "NORM",   1 }, { <AC06>, "NORM",   1 },
                { <AC07>, "NORM",   1 }, { <AC08>, "NORM",   1 },
                { <AC09>, "NORM",   1 }, { <AC10>, "NORM",   1 },
                { <AC11>, "NORM",   1 },
                { <RTRN>, "RTRN",   1, color="grey20" }
            };
        };
        row {
            top=  58;
            left= 1;
            keys {
                { <LFSH>, "LFSH",   1, color="grey20" },
                { <AB01>, "NORM",   1 }, { <AB02>, "NORM",   1 },
                { <AB03>, "NORM",   1 }, { <AB04>, "NORM",   1 },
                { <AB05>, "NORM",   1 }, { <AB06>, "NORM",   1 },
                { <AB07>, "NORM",   1 }, { <AB08>, "NORM",   1 },
                { <AB09>, "NORM",   1 }, { <AB10>, "NORM",   1 },
                { <RTSH>, "RTSH",   1, color="grey20" }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                { <LCTL>, "MODK",   1, color="grey20" },
                { <LWIN>, "SMOD",   1, color="grey20" },
                { <LALT>, "SMOD",   1, color="grey20" },
                { <SPCE>, "SPCE",   1 },
                { <RALT>, "SMOD",   1, color="grey20" },
                { <RWIN>, "SMOD",   1, color="grey20" },
                { <MENU>, "SMOD",   1, color="grey20" },
                { <RCTL>, "SMOD",   1, color="grey20" }
            };
        };
    }; // End of "Alpha" section

    section "Editing" {
        key.color= "grey20";
        priority=  9;
        top=       61;
        left=      312;
        width=     58;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                {  <INS>, "NORM",   1 }, { <HOME>, "NORM",   1 },
                { <PGUP>, "NORM",   1 }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                { <DELE>, "NORM",   1 }, {  <END>, "NORM",   1 },
                { <PGDN>, "NORM",   1 }
            };
        };
        row {
            top=  58;
            left= 20;
            keys {
                {   <UP>, "NORM",   1 }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                { <LEFT>, "NORM",   1 }, { <DOWN>, "NORM",   1 },
                { <RGHT>, "NORM",   1 }
            };
        };
    }; // End of "Editing" section

    section "Keypad" {
        key.color= "grey20";
        priority=  10;
        top=       61;
        left=      376;
        width=     77;
        height=    95;
        row {
            top=  1;
            left= 1;
            keys {
                { <NMLK>, "NORM",   1 }, { <KPDV>, "NORM",   1 },
                { <KPMU>, "NORM",   1 }, { <KPSU>, "NORM",   1 }
            };
        };
        row {
            top=  20;
            left= 1;
            keys {
                {  <KP7>, "NORM",   1, color="white" },
                {  <KP8>, "NORM",   1, color="white" },
                {  <KP9>, "NORM",   1, color="white" },
                { <KPAD>, "KPAD",   1 }
            };
        };
        row {
            top=  39;
            left= 1;
            keys {
                {  <KP4>, "NORM",   1, color="white" },
                {  <KP5>, "NORM",   1, color="white" },
                {  <KP6>, "NORM",   1, color="white" }
            };
        };
        row {
            top=  58;
            left= 1;
            keys {
                {  <KP1>, "NORM",   1, color="white" },
                {  <KP2>, "NORM",   1, color="white" },
                {  <KP3>, "NORM",   1, color="white" },
                { <KPEN>, "KPAD",   1 }
            };
        };
        row {
            top=  77;
            left= 1;
            keys {
                {  <KP0>, "KP0",   1, color="white" },
                { <KPDL>, "NORM",   1, color="white" }
            };
        };
    }; // End of "Keypad" section

    solid "LedPanel" {
        top=      22;
        left=     377;
        priority= 0;
        color= "grey10";
        shape= "LEDS";
    };
    indicator "Num Lock" {
        top=      37;
        left=     382;
        priority= 1;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    indicator "Caps Lock" {
        top=      37;
        left=     407;
        priority= 2;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    indicator "Scroll Lock" {
        top=      37;
        left=     433;
        priority= 3;
        onColor= "green";
        offColor= "green30";
        shape= "LED";
    };
    text "NumLockLabel" {
        top=      25;
        left=     378;
        priority= 4;
        width=  19.8;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Num\nLock";
    };
    text "CapsLockLabel" {
        top=      25;
        left=     403;
        priority= 5;
        width=  26.4;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Caps\nLock";
    };
    text "ScrollLockLabel" {
        top=      25;
        left=     428;
        priority= 6;
        width=  39.6;
        height=  10;
        XFont= "-*-helvetica-medium-r-normal--*-120-*-*-*-*-iso8859-1";
        text=  "Scroll\nLock";
    };
};

};

[-- Attachment #3: Type: text/plain, Size: 24012 bytes --]






In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.20, cairo version 1.16.0)
 of 2022-07-16 built on Proteus
Repository revision: 9699eaf8af0e9e79e9b4ebd51e23ab81ec90903c
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12013000
System Description: Ubuntu 20.04.4 LTS

Configured features:
CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG LCMS2
LIBSELINUX LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG
SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM
XINPUT2 XPM GTK3 ZLIB

Important settings:
  value of $LANG: en_GB.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: mu4e:main

Minor modes in effect:
  disable-mouse-global-mode: t
  sow-mode: t
  pdf-occur-global-minor-mode: t
  recentf-mode: t
  projectile-mode: t
  helm-cider-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  treemacs-filewatch-mode: t
  treemacs-follow-mode: t
  treemacs-git-mode: t
  treemacs-fringe-indicator-mode: t
  helm-autoresize-mode: t
  helm--remap-mouse-mode: t
  async-bytecomp-package-mode: t
  org-roam-mode: t
  shell-dirtrack-mode: t
  global-command-log-mode: t
  command-log-mode: t
  display-time-mode: t
  feebleline-mode: t
  override-global-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-quote-mode: t
  electric-indent-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  window-divider-mode: t
  buffer-read-only: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  overwrite-mode: overwrite-mode-binary

Load-path shadows:
/home/joe/.emacs.d/elpa/modus-operandi-theme-20201114.729/modus-operandi-theme hides /home/joe/.emacs.d/elpa/modus-themes-20220714.1115/modus-operandi-theme
/home/joe/.emacs.d/elpa/modus-vivendi-theme-0.13.2/modus-vivendi-theme hides /home/joe/.emacs.d/elpa/modus-themes-20220714.1115/modus-vivendi-theme
~/org-mode/lisp/ob-hledger hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-hledger
~/org-mode/lisp/ob-J hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-J
~/org-mode/lisp/ob-abc hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-abc
~/org-mode/lisp/ob-picolisp hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-picolisp
~/org-mode/lisp/ob-io hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-io
~/org-mode/lisp/ob-ledger hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-ledger
~/org-mode/lisp/ob-asymptote hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-asymptote
~/org-mode/lisp/ob-vala hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-vala
~/org-mode/lisp/ob-shen hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-shen
~/org-mode/lisp/ob-ebnf hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-ebnf
~/org-mode/lisp/ob-coq hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-coq
~/org-mode/lisp/ob-mscgen hides /home/joe/.emacs.d/elpa/org-contrib-0.4/ob-mscgen
~/org-ref/org-ref-scifinder hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-scifinder
~/org-ref/org-ref hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref
~/org-ref/org-ref-arxiv hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-arxiv
~/org-ref/org-ref-pgk hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-pgk
~/org-ref/doi-utils hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/doi-utils
~/org-ref/org-ref-bibtex hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-bibtex
~/org-ref/org-ref-core hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-core
~/org-ref/org-ref-sci-id hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-sci-id
~/org-ref/org-ref-scopus hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-scopus
~/org-ref/org-ref-wos hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-wos
~/org-ref/org-ref-ivy hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-ivy
~/org-ref/x2bib hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/x2bib
~/org-ref/org-ref-pubmed hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-pubmed
~/org-ref/org-ref-glossary hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-glossary
~/org-ref/org-ref-worldcat hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-worldcat
~/org-ref/org-ref-pdf hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-pdf
~/org-ref/org-ref-utils hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-utils
~/org-ref/org-ref-latex hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-latex
~/org-ref/org-ref-helm hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-helm
~/org-ref/org-ref-isbn hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-isbn
~/org-ref/nist-webbook hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/nist-webbook
~/org-ref/org-ref-url-utils hides /home/joe/.emacs.d/elpa/org-ref-20220715.1202/org-ref-url-utils
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-dailies hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-dailies
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-protocol hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-protocol
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-capture hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-capture
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-db hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-db
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-compat hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-compat
/home/joe/.emacs.d/lisp/org-roam-v1/org-roam-graph hides /home/joe/.emacs.d/elpa/org-roam-20220621.527/org-roam-graph
/home/joe/.emacs.d/elpa/lispy-20220209.1138/elpa hides /home/joe/.emacs.d/elpa/ivy-20220529.1130/elpa
~/mu/mu4e/mu4e-main hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-main
~/mu/mu4e/org-mu4e hides /usr/local/share/emacs/site-lisp/mu4e/org-mu4e
~/mu/mu4e/mu4e-context hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-context
~/mu/mu4e/mu4e-meta hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-meta
~/mu/mu4e/mu4e-speedbar hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-speedbar
~/mu/mu4e/mu4e-headers hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-headers
~/mu/mu4e/mu4e hides /usr/local/share/emacs/site-lisp/mu4e/mu4e
~/mu/mu4e/mu4e-contrib hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-contrib
~/mu/mu4e/mu4e-view hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-view
~/mu/mu4e/mu4e-org hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-org
~/mu/mu4e/mu4e-compose hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-compose
~/mu/mu4e/mu4e-message hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-message
~/mu/mu4e/mu4e-lists hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-lists
~/mu/mu4e/mu4e-utils hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-utils
~/mu/mu4e/mu4e-icalendar hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-icalendar
~/mu/mu4e/mu4e-mark hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-mark
~/mu/mu4e/mu4e-vars hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-vars
~/mu/mu4e/mu4e-proc hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-proc
~/mu/mu4e/mu4e-actions hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-actions
~/mu/mu4e/mu4e-draft hides /usr/local/share/emacs/site-lisp/mu4e/mu4e-draft
/home/joe/.emacs.d/elpa/transient-20220527.2213/transient hides /home/joe/emacs/lisp/transient
~/org-mode/lisp/org-entities hides /home/joe/emacs/lisp/org/org-entities
~/org-mode/lisp/ox-beamer hides /home/joe/emacs/lisp/org/ox-beamer
~/org-mode/lisp/oc-biblatex hides /home/joe/emacs/lisp/org/oc-biblatex
~/org-mode/lisp/ob-table hides /home/joe/emacs/lisp/org/ob-table
~/org-mode/lisp/oc-natbib hides /home/joe/emacs/lisp/org/oc-natbib
~/org-mode/lisp/ob-python hides /home/joe/emacs/lisp/org/ob-python
~/org-mode/lisp/oc-csl hides /home/joe/emacs/lisp/org/oc-csl
~/org-mode/lisp/ol-doi hides /home/joe/emacs/lisp/org/ol-doi
~/org-mode/lisp/ob-js hides /home/joe/emacs/lisp/org/ob-js
~/org-mode/lisp/ob-ruby hides /home/joe/emacs/lisp/org/ob-ruby
~/org-mode/lisp/org-duration hides /home/joe/emacs/lisp/org/org-duration
~/org-mode/lisp/ob-org hides /home/joe/emacs/lisp/org/ob-org
~/org-mode/lisp/ob-haskell hides /home/joe/emacs/lisp/org/ob-haskell
~/org-mode/lisp/org-version hides /home/joe/emacs/lisp/org/org-version
~/org-mode/lisp/ob-tangle hides /home/joe/emacs/lisp/org/ob-tangle
~/org-mode/lisp/ox-latex hides /home/joe/emacs/lisp/org/ox-latex
~/org-mode/lisp/org-table hides /home/joe/emacs/lisp/org/org-table
~/org-mode/lisp/org-crypt hides /home/joe/emacs/lisp/org/org-crypt
~/org-mode/lisp/org-refile hides /home/joe/emacs/lisp/org/org-refile
~/org-mode/lisp/ob-forth hides /home/joe/emacs/lisp/org/ob-forth
~/org-mode/lisp/ox-odt hides /home/joe/emacs/lisp/org/ox-odt
~/org-mode/lisp/ob-eshell hides /home/joe/emacs/lisp/org/ob-eshell
~/org-mode/lisp/org-pcomplete hides /home/joe/emacs/lisp/org/org-pcomplete
~/org-mode/lisp/ob-maxima hides /home/joe/emacs/lisp/org/ob-maxima
~/org-mode/lisp/org-archive hides /home/joe/emacs/lisp/org/org-archive
~/org-mode/lisp/ox-publish hides /home/joe/emacs/lisp/org/ox-publish
~/org-mode/lisp/org-attach-git hides /home/joe/emacs/lisp/org/org-attach-git
~/org-mode/lisp/org-goto hides /home/joe/emacs/lisp/org/org-goto
~/org-mode/lisp/ob-sqlite hides /home/joe/emacs/lisp/org/ob-sqlite
~/org-mode/lisp/ox-man hides /home/joe/emacs/lisp/org/ox-man
~/org-mode/lisp/ob-fortran hides /home/joe/emacs/lisp/org/ob-fortran
~/org-mode/lisp/org-compat hides /home/joe/emacs/lisp/org/org-compat
~/org-mode/lisp/ol-rmail hides /home/joe/emacs/lisp/org/ol-rmail
~/org-mode/lisp/ol-eshell hides /home/joe/emacs/lisp/org/ol-eshell
~/org-mode/lisp/ob-lob hides /home/joe/emacs/lisp/org/ob-lob
~/org-mode/lisp/org-attach hides /home/joe/emacs/lisp/org/org-attach
~/org-mode/lisp/org-mobile hides /home/joe/emacs/lisp/org/org-mobile
~/org-mode/lisp/ox hides /home/joe/emacs/lisp/org/ox
~/org-mode/lisp/ob-plantuml hides /home/joe/emacs/lisp/org/ob-plantuml
~/org-mode/lisp/ob-makefile hides /home/joe/emacs/lisp/org/ob-makefile
~/org-mode/lisp/ob-ref hides /home/joe/emacs/lisp/org/ob-ref
~/org-mode/lisp/ox-org hides /home/joe/emacs/lisp/org/ox-org
~/org-mode/lisp/ob-lisp hides /home/joe/emacs/lisp/org/ob-lisp
~/org-mode/lisp/ol-mhe hides /home/joe/emacs/lisp/org/ol-mhe
~/org-mode/lisp/ob-octave hides /home/joe/emacs/lisp/org/ob-octave
~/org-mode/lisp/ox-koma-letter hides /home/joe/emacs/lisp/org/ox-koma-letter
~/org-mode/lisp/ox-texinfo hides /home/joe/emacs/lisp/org/ox-texinfo
~/org-mode/lisp/ob-matlab hides /home/joe/emacs/lisp/org/ob-matlab
~/org-mode/lisp/org-tempo hides /home/joe/emacs/lisp/org/org-tempo
~/org-mode/lisp/org-install hides /home/joe/emacs/lisp/org/org-install
~/org-mode/lisp/ob-shell hides /home/joe/emacs/lisp/org/ob-shell
~/org-mode/lisp/ob-C hides /home/joe/emacs/lisp/org/ob-C
~/org-mode/lisp/org-faces hides /home/joe/emacs/lisp/org/org-faces
~/org-mode/lisp/oc-basic hides /home/joe/emacs/lisp/org/oc-basic
~/org-mode/lisp/ol-irc hides /home/joe/emacs/lisp/org/ol-irc
~/org-mode/lisp/ob-lilypond hides /home/joe/emacs/lisp/org/ob-lilypond
~/org-mode/lisp/org-plot hides /home/joe/emacs/lisp/org/org-plot
~/org-mode/lisp/ob-core hides /home/joe/emacs/lisp/org/ob-core
~/org-mode/lisp/org-loaddefs hides /home/joe/emacs/lisp/org/org-loaddefs
~/org-mode/lisp/org-id hides /home/joe/emacs/lisp/org/org-id
~/org-mode/lisp/ob-calc hides /home/joe/emacs/lisp/org/ob-calc
~/org-mode/lisp/org-list hides /home/joe/emacs/lisp/org/org-list
~/org-mode/lisp/ob-sass hides /home/joe/emacs/lisp/org/ob-sass
~/org-mode/lisp/org-colview hides /home/joe/emacs/lisp/org/org-colview
~/org-mode/lisp/ob-exp hides /home/joe/emacs/lisp/org/ob-exp
~/org-mode/lisp/ob-eval hides /home/joe/emacs/lisp/org/ob-eval
~/org-mode/lisp/org-timer hides /home/joe/emacs/lisp/org/org-timer
~/org-mode/lisp/ol-docview hides /home/joe/emacs/lisp/org/ol-docview
~/org-mode/lisp/ol hides /home/joe/emacs/lisp/org/ol
~/org-mode/lisp/ob-perl hides /home/joe/emacs/lisp/org/ob-perl
~/org-mode/lisp/org-habit hides /home/joe/emacs/lisp/org/org-habit
~/org-mode/lisp/ob-comint hides /home/joe/emacs/lisp/org/ob-comint
~/org-mode/lisp/ol-gnus hides /home/joe/emacs/lisp/org/ol-gnus
~/org-mode/lisp/org-mouse hides /home/joe/emacs/lisp/org/org-mouse
~/org-mode/lisp/ob-gnuplot hides /home/joe/emacs/lisp/org/ob-gnuplot
~/org-mode/lisp/org-inlinetask hides /home/joe/emacs/lisp/org/org-inlinetask
~/org-mode/lisp/ox-icalendar hides /home/joe/emacs/lisp/org/ox-icalendar
~/org-mode/lisp/org-src hides /home/joe/emacs/lisp/org/org-src
~/org-mode/lisp/ox-md hides /home/joe/emacs/lisp/org/ox-md
~/org-mode/lisp/org-protocol hides /home/joe/emacs/lisp/org/org-protocol
~/org-mode/lisp/org-keys hides /home/joe/emacs/lisp/org/org-keys
~/org-mode/lisp/org-num hides /home/joe/emacs/lisp/org/org-num
~/org-mode/lisp/ol-w3m hides /home/joe/emacs/lisp/org/ol-w3m
~/org-mode/lisp/ob-ocaml hides /home/joe/emacs/lisp/org/ob-ocaml
~/org-mode/lisp/org-datetree hides /home/joe/emacs/lisp/org/org-datetree
~/org-mode/lisp/ob-ditaa hides /home/joe/emacs/lisp/org/ob-ditaa
~/org-mode/lisp/ox-ascii hides /home/joe/emacs/lisp/org/ox-ascii
~/org-mode/lisp/ob-dot hides /home/joe/emacs/lisp/org/ob-dot
~/org-mode/lisp/org-feed hides /home/joe/emacs/lisp/org/org-feed
~/org-mode/lisp/org hides /home/joe/emacs/lisp/org/org
~/org-mode/lisp/org-footnote hides /home/joe/emacs/lisp/org/org-footnote
~/org-mode/lisp/ob-R hides /home/joe/emacs/lisp/org/ob-R
~/org-mode/lisp/ol-bbdb hides /home/joe/emacs/lisp/org/ol-bbdb
~/org-mode/lisp/org-lint hides /home/joe/emacs/lisp/org/org-lint
~/org-mode/lisp/ob-sql hides /home/joe/emacs/lisp/org/ob-sql
~/org-mode/lisp/org-clock hides /home/joe/emacs/lisp/org/org-clock
~/org-mode/lisp/org-macs hides /home/joe/emacs/lisp/org/org-macs
~/org-mode/lisp/org-element hides /home/joe/emacs/lisp/org/org-element
~/org-mode/lisp/ox-html hides /home/joe/emacs/lisp/org/ox-html
~/org-mode/lisp/ob-latex hides /home/joe/emacs/lisp/org/ob-latex
~/org-mode/lisp/ob-java hides /home/joe/emacs/lisp/org/ob-java
~/org-mode/lisp/ob-scheme hides /home/joe/emacs/lisp/org/ob-scheme
~/org-mode/lisp/ol-info hides /home/joe/emacs/lisp/org/ol-info
~/org-mode/lisp/org-macro hides /home/joe/emacs/lisp/org/org-macro
~/org-mode/lisp/ob-css hides /home/joe/emacs/lisp/org/ob-css
~/org-mode/lisp/ol-eww hides /home/joe/emacs/lisp/org/ol-eww
~/org-mode/lisp/ob-processing hides /home/joe/emacs/lisp/org/ob-processing
~/org-mode/lisp/ob-clojure hides /home/joe/emacs/lisp/org/ob-clojure
~/org-mode/lisp/ob-emacs-lisp hides /home/joe/emacs/lisp/org/ob-emacs-lisp
~/org-mode/lisp/ob-sed hides /home/joe/emacs/lisp/org/ob-sed
~/org-mode/lisp/ob-screen hides /home/joe/emacs/lisp/org/ob-screen
~/org-mode/lisp/ob hides /home/joe/emacs/lisp/org/ob
~/org-mode/lisp/org-agenda hides /home/joe/emacs/lisp/org/org-agenda
~/org-mode/lisp/org-ctags hides /home/joe/emacs/lisp/org/org-ctags
~/org-mode/lisp/ob-lua hides /home/joe/emacs/lisp/org/ob-lua
~/org-mode/lisp/ob-groovy hides /home/joe/emacs/lisp/org/ob-groovy
~/org-mode/lisp/org-capture hides /home/joe/emacs/lisp/org/org-capture
~/org-mode/lisp/org-indent hides /home/joe/emacs/lisp/org/org-indent
~/org-mode/lisp/oc hides /home/joe/emacs/lisp/org/oc
~/org-mode/lisp/ol-bibtex hides /home/joe/emacs/lisp/org/ol-bibtex
~/org-mode/lisp/ob-awk hides /home/joe/emacs/lisp/org/ob-awk

Features:
(shadow cl-print emacsbug misearch multi-isearch image-file
image-converter helm-external cus-start ffap winner tramp-archive
tramp-gvfs zeroconf helm-command helm-elisp helm-eval edebug debug
backtrace helm-info vc-hg vc-git diff-mode vc-bzr vc-src vc-sccs vc-svn
vc-cvs vc-rcs log-view pcvs-util overseer pkg-info epl .emacs linum
disable-mouse scroll-other-window two-column hercules which-key
pdf-occur tablist tablist-filter semantic/wisent/comp semantic/wisent
semantic/wisent/wisent semantic/util-modes semantic/util semantic
semantic/tag semantic/lex semantic/fw mode-local cedet pdf-isearch
pdf-misc pdf-tools pdf-view pdf-cache pdf-info pdf-util pdf-macs
github-issues bash-completion ac-cider ac-capf auto-complete popup
elfeed-show elfeed-search disp-table whitespace elfeed-csv elfeed
elfeed-curl elfeed-log elfeed-db elfeed-lib xml-query recentf crdt forms
forms-mode helm-projectile projectile grep ibuf-ext ibuffer
ibuffer-loaddefs helm-org helm-cider helm-cider-spec helm-cider-repl
helm-cider-cheatsheet helm-cider-util cider-cheatsheet helm-ag helm-fd
helm-mode helm-misc rainbow-delimiters highlight-parentheses cider
tramp-sh cider-debug cider-browse-ns cider-mode cider-find
cider-inspector cider-completion cider-profile cider-eval cider-jar
arc-mode archive-mode cider-repl-history cider-repl cider-resolve
cider-test cider-overlays cider-stacktrace cider-doc cider-browse-spec
cider-clojuredocs cider-eldoc cider-client cider-common cider-connection
cider-util cider-popup sesman-browser nrepl-client queue nrepl-dict
parseedn parseclj-parser parseclj-lex parseclj-alist sesman vc
vc-dispatcher clojure-mode align helm-lsp helm-imenu lsp-treemacs
lsp-treemacs-themes treemacs treemacs-header-line treemacs-compatibility
treemacs-mode treemacs-bookmarks treemacs-interface treemacs-extensions
treemacs-mouse-interface treemacs-tags treemacs-persistence
treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering
treemacs-annotations treemacs-async treemacs-workspaces treemacs-dom
treemacs-visuals treemacs-fringe-indicator treemacs-scope pulse
treemacs-faces treemacs-icons treemacs-themes treemacs-core-utils
pfuture treemacs-logging treemacs-customization treemacs-macros lsp-ui
lsp-ui-flycheck lsp-ui-doc goto-addr lsp-ui-imenu lsp-ui-peek
lsp-ui-sideline flycheck lsp-ui-util face-remap lsp-mode lsp-protocol
yasnippet tree-widget spinner network-stream markdown-mode imenu ht ewoc
geiser-racket geiser-repl geiser-compile geiser-debug transient compat
geiser-capf compile geiser-image geiser-doc geiser-menu geiser-autodoc
geiser-edit etags fileloop xref geiser-completion geiser-eval
geiser-connection tq geiser-syntax scheme geiser-log geiser-popup view
hypothesis request autorevert mu4e mu4e-org mu4e-main mu4e-view
mu4e-headers mu4e-compose mu4e-context mu4e-draft mu4e-actions rfc2368
smtpmail mu4e-mark mu4e-proc mu4e-utils mu4e-lists mu4e-message
flow-fill mule-util mu4e-vars mu4e-meta ox-reveal org-ref
org-ref-helm-bibtex org-ref-helm helm-config org-ref-core warnings
reftex-cite reftex reftex-loaddefs reftex-vars org-ref-glossary
org-ref-bibtex org-ref-citeproc hydra lv doi-utils org-ref-utils
org-ref-pdf htmlize helm-bibtex bibtex-completion biblio biblio-download
biblio-dissemin biblio-ieee biblio-hal biblio-dblp biblio-crossref
biblio-arxiv timezone biblio-doi biblio-core ido hl-line parsebib
helm-files image-dired helm-buffers helm-occur helm-tags helm-locate
helm-grep helm-regexp helm-utils helm-types helm-net helm-help helm
helm-global-bindings helm-core async-bytecomp helm-source
helm-multi-match helm-lib async org-roam-protocol let-alist org-protocol
org-roam org-roam-link org-roam-graph org-roam-doctor org-roam-dailies
org-roam-capture org-roam-db org-capture org-roam-completion
org-roam-buffer inline org-roam-faces org-roam-macs org-roam-compat f
f-shortdoc shortdoc s dash org-id emacsql-sqlite3 emacsql
emacsql-compiler org-habit color org-bullets edmacro org-journal
org-crypt cal-iso org-tree-slide org-timer org-clock toc-org ox-extra
org-tempo tempo ox-odt rng-loc rng-uri rng-parse rng-match rng-dt
rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok nxml-util ox-latex
ox-icalendar org-agenda org-refile ox-html table ox-ascii ox-publish ox
ob-calc calc-store calc-trail calc-ext calc calc-loaddefs rect calc-macs
ob-jupyter jupyter-tramp docker-tramp tramp-cache tramp tramp-loaddefs
trampver tramp-integration cus-edit cus-load files-x tramp-compat
ls-lisp jupyter-server jupyter-server-ioloop jupyter-ioloop-comm
jupyter-ioloop zmq zmq-core jupyter-rest-api url-http url-auth url-gw
nsm pcase jupyter-org-extensions jupyter-org-client jupyter-repl
jupyter-kernel-manager jupyter-channel jupyter-widget-client websocket
bindat simple-httpd jupyter-client jupyter-comm-layer jupyter-messages
hmac-def jupyter-mime jupyter-kernelspec jupyter-env jupyter-base
eieio-base ob-R ob-python python ob-scheme geiser ob-maxima ob-clojure
ob-shell shell org-element avl-tree generator ol-eww eww xdg url-queue
thingatpt mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect
gnus-art mm-uu mml2015 mm-view mml-smime smime gnutls dig gnus-sum shr
pixel-fill kinsoku url-file url-dired svg dom gnus-group gnus-undo
gnus-start gnus-dbus dbus xml gnus-cloud nnimap nnmail mail-source utf7
netrc nnoo gnus-spec gnus-int gnus-range message sendmail yank-media
puny rfc822 mml mml-sec epa epg rfc6068 epg-config mailabbrev gmm-utils
mailheader gnus-win gnus nnheader gnus-util mail-utils range wid-edit
ol-docview doc-view filenotify jka-compr image-mode exif ol-bibtex
ol-bbdb ol-w3m ol-doi org-link-doi ess ess-utils ess-custom project
holidays holiday-loaddefs window-margin command-log-mode cyberpunk-theme
dream-theme ps-print ps-print-loaddefs ps-def lpr time feebleline
bookmark+ bookmark+-key kmacro derived dired-x dired dired-loaddefs
bookmark+-1 bookmark+-bmu bookmark+-lit bookmark text-property-search pp
parse-time quelpa-use-package cl-extra quelpa mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr lisp-mnt use-package use-package-ensure use-package-delight
use-package-diminish use-package-bind-key bind-key use-package-core
finder-inf org ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro
org-footnote org-src ob-comint org-pcomplete pcomplete comint ansi-color
org-list org-faces org-entities noutline outline easy-mmode org-version
ob-emacs-lisp ob-core ob-eval org-table oc-basic bibtex iso8601
time-date ol rx org-keys oc org-compat advice org-macs org-loaddefs
format-spec find-func cal-menu calendar cal-loaddefs geiser-impl
help-fns radix-tree help-mode geiser-custom geiser-base ring
helm-easymenu tex-site info package browse-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie generate-lisp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv
bytecomp byte-compile cconv url-vars cl-loaddefs cl-lib rmc iso-transl
tooltip eldoc paren electric uniquify ediff-hook vc-hooks
lisp-float-type elisp-mode mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode lisp-mode prog-mode register page tab-bar menu-bar
rfn-eshadow isearch easymenu timer select scroll-bar mouse jit-lock
font-lock syntax font-core term/tty-colors frame minibuffer nadvice seq
simple cl-generic indonesian philippine cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese composite emoji-zwj charscript charprop case-table
epa-hook jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button
loaddefs faces cus-face macroexp files window text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
emacs)

Memory information:
((conses 16 1116524 502383)
 (symbols 48 80345 160)
 (strings 32 310690 79879)
 (string-bytes 1 10108717)
 (vectors 16 136997)
 (vector-slots 8 1863807 383107)
 (floats 8 1358 1562)
 (intervals 56 13544 23080)
 (buffers 992 24))

-- 
Dr Joseph A. Corneli (https://github.com/holtzermann17)

HYPERREAL ENTERPRISES LTD is a private company limited by shares, incorporated
25th, June 2019 as Company Number 634284 on the Register of Companies for
Scotland (https://beta.companieshouse.gov.uk/company/SC634284).

^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#56782: 29.0.50; xkb layers stopped working
  2022-07-26 12:32 bug#56782: 29.0.50; xkb layers stopped working Joe Corneli via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-07-27  5:03 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-07-27  7:39   ` Joe Corneli via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 4+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-27  5:03 UTC (permalink / raw)
  To: Joe Corneli; +Cc: 56782

Joe Corneli <joseph.corneli@hyperreal.enterprises> writes:

> I have modifiers on the number row of my laptop’s keyboard, e.g.,
>
>  key <AE07> {
>      type= "FOUR_LEVEL",
>      symbols[Group1]= [     Mode_switch,       ampersand,        NoSymbol,        NoSymbol ]
>  };
>  key <AE08> {
>      type= "FOUR_LEVEL",
>      symbols[Group1]= [          Meta_R,        asterisk,        NoSymbol,        NoSymbol ]
>  };
>
> and so on.
>
> However, Shift+7, Shift+8 (etc.) have stopped working as desired in the
> most recent Emacs build, although these bindings still work fine in
> alacritty, Firefox, and other X Windows programs.  (In particular, the
> binding works as desired in emacs -nw running under Alacritty.)

Should be fixed now.  Thanks.





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#56782: 29.0.50; xkb layers stopped working
  2022-07-27  5:03 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-07-27  7:39   ` Joe Corneli via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-07-27  7:46     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 4+ messages in thread
From: Joe Corneli via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-27  7:39 UTC (permalink / raw)
  To: Po Lu; +Cc: 56782

Fix confirmed, thank you!

commit de863f70aa905d3a7feaedb58b65bd7f9776853b (HEAD -> master, origin/master, origin/HEAD)
Author: Po Lu <luangruo@yahoo.com>

    Remove workaround for some input method problems
    
    * src/xterm.c (handle_one_xevent): Remove modifier key
    workaround for some input method problems, since they cause more
    problems than they fix.  (bug#56782)


Po Lu writes:

> Joe Corneli <joseph.corneli@hyperreal.enterprises> writes:
>
>> I have modifiers on the number row of my laptop’s keyboard, e.g.,
>>
>>  key <AE07> {
>>      type= "FOUR_LEVEL",
>>      symbols[Group1]= [     Mode_switch,       ampersand,        NoSymbol,        NoSymbol ]
>>  };
>>  key <AE08> {
>>      type= "FOUR_LEVEL",
>>      symbols[Group1]= [          Meta_R,        asterisk,        NoSymbol,        NoSymbol ]
>>  };
>>
>> and so on.
>>
>> However, Shift+7, Shift+8 (etc.) have stopped working as desired in the
>> most recent Emacs build, although these bindings still work fine in
>> alacritty, Firefox, and other X Windows programs.  (In particular, the
>> binding works as desired in emacs -nw running under Alacritty.)
>
> Should be fixed now.  Thanks.


-- 
Dr Joseph A. Corneli (https://github.com/holtzermann17)

HYPERREAL ENTERPRISES LTD is a private company limited by shares, incorporated
25th, June 2019 as Company Number 634284 on the Register of Companies for
Scotland (https://beta.companieshouse.gov.uk/company/SC634284).





^ permalink raw reply	[flat|nested] 4+ messages in thread

* bug#56782: 29.0.50; xkb layers stopped working
  2022-07-27  7:39   ` Joe Corneli via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-07-27  7:46     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 4+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-07-27  7:46 UTC (permalink / raw)
  To: Joe Corneli; +Cc: 56782-done

Joe Corneli <joseph.corneli@hyperreal.enterprises> writes:

> Fix confirmed, thank you!

I'm closing this bug then, thanks.





^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2022-07-27  7:46 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-26 12:32 bug#56782: 29.0.50; xkb layers stopped working Joe Corneli via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-27  5:03 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-27  7:39   ` Joe Corneli via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-07-27  7:46     ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).