default partial alphanumeric_keys modifier_keys xkb_symbols "basic" { name[Group1]= "English (hypermode)"; //add new modifiers for hyperlayer and numlayer modifier_map Mod3 { Hyper_L, Hyper_R }; key { [ NoSymbol, Hyper_L ] }; modifier_map Mod3 { }; modifier_map Mod5 { ISO_Level3_Shift }; key { [ ISO_Level3_Shift ] }; key { [ Mode_switch ] }; modifier_map Mod5 { , }; // std us keys key { [ grave, asciitilde ] }; key { type="SHIFT_HYPER", [ 1, exclam, F1 ] }; key { type="SHIFT_HYPER", [ 2, at, F2 ] }; key { type="SHIFT_HYPER", [ 3, numbersign, F3 ] }; key { type="SHIFT_HYPER", [ 4, dollar, F4 ] }; key { type="SHIFT_HYPER", [ 5, percent, F5 ] }; key { type="SHIFT_HYPER", [ 6, asciicircum, F6 ] }; key { type="SHIFT_HYPER", [ 7, ampersand, F7 ] }; key { type="SHIFT_HYPER", [ 8, asterisk, F8 ] }; key { type="SHIFT_HYPER", [ 9, parenleft, F9 ] }; key { type="SHIFT_HYPER", [ 0, parenright, F10 ] }; key { type="SHIFT_HYPER", [ minus, underscore, F11 ] }; key { type="SHIFT_HYPER", [ equal, plus, F12 ] }; key { [ q, Q ] }; key { type="SHIFT_HYPER", [ w, W, Insert ] }; key { type="SHIFT_HYPER", [ e, E, Home ] }; key { type="SHIFT_HYPER", [ r, R, Prior ] }; key { [ t, T ] }; key { [ y, Y ] }; key { type="SHIFT_ALTGR", [ u, U, 7 ] }; key { type="SHIFT_ALTGR", [ i, I, 8 ] }; key { type="SHIFT_ALTGR", [ o, O, 9 ] }; key { type="SHIFT_ALTGR", [ p, P, asciicircum ] }; key { [ bracketleft, braceleft ] }; key { [ bracketright, braceright ] }; key { [ a, A ] }; key { type="SHIFT_HYPER", [ s, S, Delete ] }; key { type="SHIFT_HYPER", [ d, D, End ] }; key { type="SHIFT_HYPER", [ f, F, Next ] }; key { [ g, G ] }; key { type="SHIFT_HYPER_ALTGR", [ h, H, Left, asterisk ] }; key { type="SHIFT_HYPER_ALTGR", [ j, J, Down, 4 ] }; key { type="SHIFT_HYPER_ALTGR", [ k, K, Up, 5 ] }; key { type="SHIFT_HYPER_ALTGR", [ l, L, Right, 6 ] }; key { type="SHIFT_ALTGR", [ semicolon, colon, plus ] }; key { type="SHIFT_ALTGR", [ apostrophe, quotedbl, equal ] }; key { [ z, Z ] }; key { [ x, X ] }; key { [ c, C ] }; key { [ v, V ] }; key { [ b, B ] }; key { type="SHIFT_ALTGR", [ n, N, slash ] }; key { type="SHIFT_ALTGR", [ m, M, 1 ] }; key { type="SHIFT_ALTGR", [ comma, less, 2 ] }; key { type="SHIFT_ALTGR", [ period, greater, 3 ] }; key { type="SHIFT_ALTGR", [ slash, question, minus ] }; // override modifiers key { [ Control_L ] }; key { [ Hyper_L ] }; key { [ Caps_Lock ] }; key { [ Control_R ] }; key { [ Super_L, Super_L ] }; key { [ Super_R, Super_R ] }; key { [ Alt_R, Meta_R ] }; key { [ ISO_Level3_Shift ] }; // right alt is special because it is the decimal point in the numlayer // ...and yes, "group1" is necessary here because of the way the us layout // defines right alt (maybe we call it alt-right???) key { type[Group1]="SHIFT_ALTGR", [ Hyper_R, Hyper_R, period ] }; // reassign xcape keys to unused keycodes (I249-I254) key { [ Return ] }; // key { [ Escape ] }; key { [ Tab, ISO_Left_Tab ] }; key { [ backslash, bar ] }; // space is weird becuase we also make it function as a 0 in the numlayer key { type="SHIFT_ALTGR", [ space, space, 0 ] }; };