// Implementation of the 3l keyboard layout // See https://github.com/jackrosenthal/threelayout for specification default partial alphanumeric_keys modifier_keys xkb_symbols "basic" { name[Group1] = "English (3l)"; key.type[Group1] = "ONE_LEVEL"; key { [ Escape ] }; key { [ Tab ] }; key { [ ISO_Level3_Shift ] }; // Sym Modifier key { [ ISO_Level5_Shift ] }; // Cur/Num Modifier // Top row numbers - not part of spec, but given for convenience key { [ 1 ] }; key { [ 2 ] }; key { [ 3 ] }; key { [ 4 ] }; key { [ 5 ] }; key { [ 6 ] }; key { [ 7 ] }; key { [ 8 ] }; key { [ 9 ] }; key { [ 0 ] }; // Main keys // Order of mods (defined by EIGHT_LEVEL_SEMIALPHABETIC) is: // [ None, Shift, Sym, Shift+Sym, Num, Shift+Num, Sym+Num, Shift+Sym+Num ] key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC"; // Second row key { [ q, Q, quotedbl, Greek_omicron, Prior, Prior, U21CD, Greek_OMICRON ] }; key { [ f, F, underscore, Greek_phi, BackSpace, BackSpace, U21A4, Greek_PHI ] }; key { [ u, U, bracketleft, Greek_upsilon, Up, Up, U2191, Greek_UPSILON ] }; key { [ y, Y, bracketright, Greek_psi, Delete, Delete, U21A6, Greek_PSI ] }; key { [ z, Z, asciicircum, Greek_zeta, Next, Next, U21CF, Greek_ZETA ] }; key { [ x, X, exclam, Greek_xi, NoSymbol, NoSymbol, U2260, Greek_XI ] }; key { [ k, K, less, Greek_kappa, 1, A, U2264, Greek_KAPPA ] }; key { [ c, C, greater, Greek_chi, 2, B, U2265, Greek_CHI ] }; key { [ w, W, equal, Greek_omega, 3, C, U2261, Greek_OMEGA ] }; key { [ b, B, ampersand, Greek_beta, NoSymbol, NoSymbol, U2248, Greek_BETA ] }; // Home row key { [ o, O, slash, Greek_omega, Home, Home, U21D0, Greek_OMEGA ] }; key { [ h, H, minus, Greek_theta, Left, Left, U2190, Greek_THETA ] }; key { [ e, E, braceleft, Greek_epsilon, Down, Down, U2193, Greek_EPSILON ] }; key { [ a, A, braceright, Greek_alpha, Right, Right, U2192, Greek_ALPHA ] }; key { [ i, I, asterisk, Greek_iota, End, End, U21D2, Greek_IOTA ] }; key { [ d, D, question, Greek_delta, period, colon, U2286, Greek_DELTA ] }; key { [ r, R, parenleft, Greek_rho, 4, D, U2227, Greek_RHO ] }; key { [ t, T, parenright, Greek_tau, 5, E, U2228, Greek_TAU ] }; key { [ n, N, apostrophe, Greek_eta, 6, F, U2200, Greek_ETA ] }; key { [ s, S, colon, Greek_sigma, NoSymbol, NoSymbol, U2203, Greek_SIGMA ] }; // Bottom row key { [ comma, comma, numbersign, NoSymbol, slash, NoSymbol, U21AE, NoSymbol ] }; key { [ m, M, dollar, Greek_mu, asterisk, NoSymbol, U2194, Greek_MU ] }; key { [ period, period, bar, NoSymbol, minus, NoSymbol, U21CE, NoSymbol ] }; key { [ j, J, asciitilde, Greek_SIGMA, plus, NoSymbol, U21D4, NoSymbol ] }; key { [ semicolon, semicolon, grave, NoSymbol, comma, NoSymbol, U2282, NoSymbol ] }; key { [ g, G, plus, Greek_gamma, 0, NoSymbol, U2229, Greek_GAMMA ] }; key { [ l, L, percent, Greek_lambda, 7, parenleft, U222A, Greek_LAMBDA ] }; key { [ p, P, backslash, Greek_pi, 8, parenright, U2208, Greek_PI ] }; key { [ v, V, at, Greek_nu, 9, NoSymbol, U2209, Greek_NU ] }; include "level5(modifier_mapping)" }; // Chromebooks typically have the key which is normally in the caps // lock position mapped to keycode 133 (LWIN). For 3l, it is critical // that the key in this positon correspond to tab, so there is a // variant available for chromebook hardware. partial modifier_keys xkb_symbols "cros" { include "3l(basic)" name[Group1] = "English (3l, chromebook)"; key { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Tab ] }; }; // A variant for emacs users, which maps control to caps lock and (re)maps // tab back to tab. partial modifier_keys xkb_symbols "3l-emacs" { include "3l(basic)" name[Group1] = "English (3l, emacs)"; key { [ Tab ] }; key { [ Control_L ] }; modifier_map Control { }; };