// ENGRAMMER BEGIN ////////////////////////////////////////
//
// Engrammer - Arno's Engram 2.0 https://engram.dev variant
//             with standard shifted pairs, for programmers
//
//	`~ 1! 2@ 3# 4$  5%  6^  7& 8* 9( 0) [{ ]}
//	   bB yY oO uU  '"  ;:  lL dD wW vV zZ =+ \|
//	   cC iI eE aA  ,<  .>  hH tT sS nN qQ
//	   gG xX jJ kK  -_  /?  rR mM fF pP
//
xkb_keymap {
        xkb_keycodes  { include "evdev+aliases(qwerty)" };
        xkb_types     { include "complete"      };
        xkb_compat    { include "complete"      };
        xkb_geometry  { include "pc(pc105)"     };

	xkb_symbols "engrammer" {
    		name[group1]="Arnos Engram (Engrammer)";

		key <TLDE> { [        grave,  asciitilde ] }; // `~
		key <AE01> { [            1,      exclam ] }; // 1!
		key <AE02> { [            2,          at ] }; // 2@
		key <AE03> { [            3,  numbersign ] }; // 3#
		key <AE04> { [            4,      dollar ] }; // 4$
		key <AE05> { [            5,     percent ] }; // 5%
		key <AE06> { [            6,  asciicircum] }; // 6^
		key <AE07> { [            7,   ampersand ] }; // 7&
		key <AE08> { [            8,    asterisk ] }; // 8*
		key <AE09> { [            9,   parenleft ] }; // 9(
		key <AE10> { [            0,  parenright ] }; // 0)
		key <AE11> { [  bracketleft,   braceleft ] }; // [{
		key <AE12> { [ bracketright,  braceright ] }; // ]}
	
		key <AD01> { [            b,           B ] }; // bB
		key <AD02> { [            y,           Y ] }; // yY
		key <AD03> { [            o,           O ] }; // oO
		key <AD04> { [            u,           U ] }; // uU
		key <AD05> { [   apostrophe,    quotedbl ] }; // '"
		key <AD06> { [    semicolon,       colon ] }; // ;:
		key <AD07> { [            l,           L ] }; // lL
		key <AD08> { [            d,           D ] }; // dD
		key <AD09> { [            w,           W ] }; // wW
		key <AD10> { [            v,           V ] }; // vV
		key <AD11> { [            z,           Z ] }; // zZ
		key <AD12> { [        equal,        plus ] }; // =+
		key <BKSL> { [    backslash,         bar ] }; // \|
	
		key <AC01> { [            c,           C ] }; // cC
		key <AC02> { [            i,           I ] }; // iI
		key <AC03> { [            e,           E ] }; // eE
		key <AC04> { [            a,           A ] }; // aA
		key <AC05> { [        comma,        less ] }; // ,<
		key <AC06> { [       period,     greater ] }; // .>
		key <AC07> { [            h,           H ] }; // hH
		key <AC08> { [            t,           T ] }; // tT
		key <AC09> { [            s,           S ] }; // sS
		key <AC10> { [            n,           N ] }; // nN
		key <AC11> { [            q,           Q ] }; // qQ
	
		key <AB01> { [            g,           G ] }; // gG
		key <AB02> { [            x,           X ] }; // xX
		key <AB03> { [            j,           J ] }; // jJ
		key <AB04> { [            k,           K ] }; // kK
		key <AB05> { [        minus,  underscore ] }; // -_
		key <AB06> { [        slash,    question ] }; // /?
		key <AB07> { [            r,           R ] }; // rR
		key <AB08> { [            m,           M ] }; // mM
		key <AB09> { [            f,           F ] }; // fF
		key <AB10> { [            p,           P ] }; // pP



		// Boilerplate
    		key  <ESC> {         [          Escape ] };
    		key <BKSP> {         [       BackSpace,       BackSpace ] };
    		key  <TAB> {         [             Tab,    ISO_Left_Tab ] };
    		key <RTRN> {         [          Return ] };
    		key <LCTL> {         [       Control_L ] };
    		key <LFSH> {         [         Shift_L ] };
    		key <RTSH> {         [         Shift_R ] };
    		key <KPMU> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [     KP_Multiply,     KP_Multiply,     KP_Multiply,     KP_Multiply,   XF86ClearGrab ]
    		};


    		key <LALT> {         [           Alt_L ] };
    		key <SPCE> {         [           space ] };
    		key <CAPS> {         [       Caps_Lock ] };
    		key <FK01> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [              F1,              F1,              F1,              F1, XF86Switch_VT_1 ]
    		};
    		key <FK02> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [              F2,              F2,              F2,              F2, XF86Switch_VT_2 ]
    		};
    		key <FK03> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [              F3,              F3,              F3,              F3, XF86Switch_VT_3 ]
    		};
    		key <FK04> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [              F4,              F4,              F4,              F4, XF86Switch_VT_4 ]
    		};
    		key <FK05> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [              F5,              F5,              F5,              F5, XF86Switch_VT_5 ]
    		};
    		key <FK06> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [              F6,              F6,              F6,              F6, XF86Switch_VT_6 ]
    		};
    		key <FK07> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [              F7,              F7,              F7,              F7, XF86Switch_VT_7 ]
    		};
    		key <FK08> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [              F8,              F8,              F8,              F8, XF86Switch_VT_8 ]
    		};
    		key <FK09> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [              F9,              F9,              F9,              F9, XF86Switch_VT_9 ]
    		};
    		key <FK10> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [             F10,             F10,             F10,             F10, XF86Switch_VT_10 ]
    		};
    		key <NMLK> {         [        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= "CTRL+ALT",
    		    symbols[Group1]= [     KP_Subtract,     KP_Subtract,     KP_Subtract,     KP_Subtract,  XF86Prev_VMode ]
    		};
    		key  <KP4> {         [         KP_Left,            KP_4 ] };
    		key  <KP5> {         [        KP_Begin,            KP_5 ] };
    		key  <KP6> {         [        KP_Right,            KP_6 ] };
    		key <KPAD> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [          KP_Add,          KP_Add,          KP_Add,          KP_Add,  XF86Next_VMode ]
    		};
    		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> {         [ ISO_Level3_Shift ] };
    		key <ZEHA> {         [ XF86TouchpadToggle ] };
    		key <LSGT> {
    		    type= "FOUR_LEVEL",
    		    symbols[Group1]= [       backslash,             bar,             bar,       brokenbar ]
    		};
    		key <FK11> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [             F11,             F11,             F11,             F11, XF86Switch_VT_11 ]
    		};
    		key <FK12> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [             F12,             F12,             F12,             F12, XF86Switch_VT_12 ]
    		};
    		key <KATA> {         [        Katakana ] };
    		key <HIRA> {         [        Hiragana ] };
    		key <HENK> {         [     Henkan_Mode ] };
    		key <HKTG> {         [ Hiragana_Katakana ] };
    		key <MUHE> {         [        Muhenkan ] };
    		key <KPEN> {         [        KP_Enter ] };
    		key <RCTL> {         [       Control_R ] };
    		key <KPDV> {
    		    type= "CTRL+ALT",
    		    symbols[Group1]= [       KP_Divide,       KP_Divide,       KP_Divide,       KP_Divide,      XF86Ungrab ]
    		};
    		key <PRSC> {
    		    type= "PC_ALT_LEVEL2",
    		    symbols[Group1]= [           Print,         Sys_Req ]
    		};
    		key <RALT> {
    		    type= "ONE_LEVEL",
    		    symbols[Group1]= [ ISO_Level3_Shift ]
    		};
    		key <LNFD> {         [        Linefeed ] };
    		key <HOME> {         [            Home ] };
    		key   <UP> {         [              Up ] };
    		key <PGUP> {         [           Prior ] };
    		key <LEFT> {         [            Left ] };
    		key <RGHT> {         [           Right ] };
    		key  <END> {         [             End ] };
    		key <DOWN> {         [            Down ] };
    		key <PGDN> {         [            Next ] };
    		key  <INS> {         [          Insert ] };
    		key <DELE> {         [          Delete ] };
    		key <MUTE> {         [   XF86AudioMute ] };
    		key <VOL-> {         [ XF86AudioLowerVolume ] };
    		key <VOL+> {         [ XF86AudioRaiseVolume ] };
    		key <POWR> {         [    XF86PowerOff ] };
    		key <KPEQ> {         [        KP_Equal ] };
    		key <I126> {         [       plusminus ] };
    		key <PAUS> {
    		    type= "PC_CONTROL_LEVEL2",
    		    symbols[Group1]= [           Pause,           Break ]
    		};
    		key <I128> {         [     XF86LaunchA ] };
    		key <I129> {         [      KP_Decimal,      KP_Decimal ] };
    		key <HNGL> {         [          Hangul ] };
    		key <HJCV> {         [    Hangul_Hanja ] };
    		key <LWIN> {         [         Super_L ] };
    		key <RWIN> {         [         Super_R ] };
    		key <COMP> {         [            Menu ] };
    		key <STOP> {         [          Cancel ] };
    		key <AGAI> {         [            Redo ] };
    		key <PROP> {         [        SunProps ] };
    		key <UNDO> {         [            Undo ] };
    		key <FRNT> {         [        SunFront ] };
    		key <COPY> {         [        XF86Copy ] };
    		key <OPEN> {         [        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 <I161> {         [ XF86RotateWindows ] };
    		key <I162> {         [    XF86TaskPane ] };
    		key <I163> {         [        XF86Mail ] };
    		key <I164> {         [   XF86Favorites ] };
    		key <I165> {         [  XF86MyComputer ] };
    		key <I166> {         [        XF86Back ] };
    		key <I167> {         [     XF86Forward ] };
    		key <I169> {         [       XF86Eject ] };
    		key <I170> {         [       XF86Eject ] };
    		key <I171> {         [   XF86AudioNext ] };
    		key <I172> {         [   XF86AudioPlay,  XF86AudioPause ] };
    		key <I173> {         [   XF86AudioPrev ] };
    		key <I174> {         [   XF86AudioStop,       XF86Eject ] };
    		key <I175> {         [ XF86AudioRecord ] };
    		key <I176> {         [ XF86AudioRewind ] };
    		key <I177> {         [       XF86Phone ] };
    		key <I179> {         [       XF86Tools ] };
    		key <I180> {         [    XF86HomePage ] };
    		key <I181> {         [      XF86Reload ] };
    		key <I182> {         [       XF86Close ] };
    		key <I185> {         [    XF86ScrollUp ] };
    		key <I186> {         [  XF86ScrollDown ] };
    		key <I187> {         [       parenleft ] };
    		key <I188> {         [      parenright ] };
    		key <I189> {         [         XF86New ] };
    		key <I190> {         [            Redo ] };
    		key <FK13> {         [       XF86Tools ] };
    		key <FK14> {         [     XF86Launch5 ] };
    		key <FK15> {         [     XF86Launch6 ] };
    		key <FK16> {         [     XF86Launch7 ] };
    		key <FK17> {         [     XF86Launch8 ] };
    		key <FK18> {         [     XF86Launch9 ] };
    		key <FK20> {         [ XF86AudioMicMute ] };
    		key <FK21> {         [ XF86TouchpadToggle ] };
    		key <FK22> {         [  XF86TouchpadOn ] };
    		key <FK23> {
    		    type= "PC_SHIFT_SUPER_LEVEL2",
    		    symbols[Group1]= [ XF86TouchpadOff,   XF86Assistant ]
    		};
    		key <LVL5> {         [ ISO_Level5_Shift ] };
    		key  <ALT> {         [        NoSymbol,           Alt_L ] };
    		key <META> {         [        NoSymbol,          Meta_L ] };
    		key <SUPR> {         [        NoSymbol,         Super_L ] };
    		key <HYPR> {         [        NoSymbol,         Hyper_L ] };
    		key <I208> {         [   XF86AudioPlay ] };
    		key <I209> {         [  XF86AudioPause ] };
    		key <I210> {         [     XF86Launch3 ] };
    		key <I211> {         [     XF86Launch4 ] };
    		key <I212> {         [     XF86LaunchB ] };
    		key <I213> {         [     XF86Suspend ] };
    		key <I214> {         [       XF86Close ] };
    		key <I215> {         [   XF86AudioPlay ] };
    		key <I216> {         [ XF86AudioForward ] };
    		key <I218> {         [           Print ] };
    		key <I220> {         [      XF86WebCam ] };
    		key <I221> {         [ XF86AudioPreset ] };
    		key <I223> {         [        XF86Mail ] };
    		key <I224> {         [   XF86Messenger ] };
    		key <I225> {         [      XF86Search ] };
    		key <I226> {         [          XF86Go ] };
    		key <I227> {         [     XF86Finance ] };
    		key <I228> {         [        XF86Game ] };
    		key <I229> {         [        XF86Shop ] };
    		key <I231> {         [          Cancel ] };
    		key <I232> {         [ XF86MonBrightnessDown ] };
    		key <I233> {         [ XF86MonBrightnessUp ] };
    		key <I234> {         [  XF86AudioMedia ] };
    		key <I235> {         [     XF86Display ] };
    		key <I236> {         [ XF86KbdLightOnOff ] };
    		key <I237> {         [ XF86KbdBrightnessDown ] };
    		key <I238> {         [ XF86KbdBrightnessUp ] };
    		key <I239> {         [        XF86Send ] };
    		key <I240> {         [       XF86Reply ] };
    		key <I241> {         [ XF86MailForward ] };
    		key <I242> {         [        XF86Save ] };
    		key <I243> {         [   XF86Documents ] };
    		key <I244> {         [     XF86Battery ] };
    		key <I245> {         [   XF86Bluetooth ] };
    		key <I246> {         [        XF86WLAN ] };
    		key <I247> {         [         XF86UWB ] };
    		key <I249> {         [  XF86Next_VMode ] };
    		key <I250> {         [  XF86Prev_VMode ] };
    		key <I251> {         [ XF86MonBrightnessCycle ] };
    		key <I252> {         [ XF86BrightnessAuto ] };
    		key <I253> {         [  XF86DisplayOff ] };
    		key <I254> {         [        XF86WWAN ] };
    		key <I255> {         [      XF86RFKill ] };
    		modifier_map Control { <LCTL> };
    		modifier_map Shift { <LFSH> };
    		modifier_map Shift { <RTSH> };
    		modifier_map Mod1 { <LALT> };
    		modifier_map Lock { <CAPS> };
    		modifier_map Mod2 { <NMLK> };
    		modifier_map Mod5 { <LVL3> };
    		modifier_map Control { <RCTL> };
    		modifier_map Mod4 { <LWIN> };
    		modifier_map Mod4 { <RWIN> };
    		modifier_map Mod3 { <LVL5> };
    		modifier_map Mod1 { <ALT> };
    		modifier_map Mod1 { <META> };
    		modifier_map Mod4 { <SUPR> };
	};
};
// ENGRAMMER END //////////////////////////////////////////
