// In this file, we hijack ISO_Lock to be equivalent to a fictional ISO_Level1_Shift that doesn't exist. // I'd like a better solution but am unsure that one exists. xkb_keymap { xkb_keycodes { include "evdev+aliases(qwerty)" }; xkb_types { virtual_modifiers LevelOne, LevelThree; // , LevelFive; type "FOUR_LEVEL" { modifiers = Shift + LevelOne + LevelThree; // + LevelFive; map[None] = Level1; map[Shift] = Level2; level_name[Level1] = "Base"; level_name[Level2] = "Shifted"; map[LevelThree] = Level3; map[Shift+LevelThree] = Level4; level_name[Level3] = "Greek"; level_name[Level4] = "Shifted Greek"; // map[LevelFive] = Level5; // map[Shift+LevelFive] = Level6; // level_name[Level5] = "Hebrew"; // level_name[Level6] = "Shifted Hebrew"; map[LevelThree+LevelOne] = Level1; preserve[LevelThree+LevelOne] = LevelOne; map[Shift+LevelThree+LevelOne] = Level2; preserve[Shift+LevelThree+LevelOne] = LevelOne; // map[LevelFive+LevelOne] = Level1; // preserve[LevelFive+LevelOne] = LevelOne; // map[Shift+LevelFive+LevelOne] = Level2; // preserve[Shift+LevelFive+LevelOne] = LevelOne; }; augment "complete" }; xkb_compat { virtual_modifiers LevelOne, LevelThree; // , LevelFive; interpret ISO_Lock+Any { virtualModifier = LevelOne; action = SetMods(modifiers=modMapMods); }; interpret ISO_Lock { action = SetMods(modifiers=LevelOne); }; indicator "Caps Lock" { whichModState = Locked; modifiers = LevelThree; }; // indicator "Scroll Lock" { // whichModState = Locked; // modifiers = LevelFive; // }; augment "complete" }; xkb_symbols { key.type[group1] = "FOUR_LEVEL"; key {[ grave, asciitilde, grave, asciitilde ]}; // , semicolon, asciitilde ]}; key {[ 1, exclam, 1, exclam ]}; // , 1, exclam ]}; key {[ 2, at, 2, at ]}; // , 2, at ]}; key {[ 3, numbersign, 3, numbersign ]}; // , 3, numbersign ]}; key {[ 4, dollar, 4, dollar ]}; // , 4, dollar ]}; key {[ 5, percent, 5, percent ]}; // , 5, percent ]}; key {[ 6, asciicircum, 6, asciicircum ]}; // , 6, asciicircum ]}; key {[ 7, ampersand, 7, ampersand ]}; // , 7, ampersand ]}; key {[ 8, asterisk, 8, asterisk ]}; // , 8, asterisk ]}; key {[ 9, parenleft, 9, parenleft ]}; // , 9, parenright ]}; key {[ 0, parenright, 0, parenright ]}; // , 0, parenleft ]}; key {[ minus, underscore, minus, underscore ]}; // , minus, underscore ]}; key {[ equal, plus, equal, plus ]}; // , equal, plus ]}; key {[ q, Q, semicolon, colon ]}; // , slash, Q ]}; key {[ w, W, Greek_finalsmallsigma, Greek_SIGMA ]}; // , apostrophe, W ]}; key {[ e, E, Greek_epsilon, Greek_EPSILON ]}; // , hebrew_qoph, E ]}; key {[ r, R, Greek_rho, Greek_RHO ]}; // , hebrew_resh, R ]}; key {[ t, T, Greek_tau, Greek_TAU ]}; // , hebrew_aleph, T ]}; key {[ y, Y, Greek_upsilon, Greek_UPSILON ]}; // , hebrew_tet, Y ]}; key {[ u, U, Greek_theta, Greek_THETA ]}; // , hebrew_waw, U ]}; key {[ i, I, Greek_iota, Greek_IOTA ]}; // , hebrew_finalnun, I ]}; key {[ o, O, Greek_omicron, Greek_OMICRON ]}; // , hebrew_finalmem, O ]}; key {[ p, P, Greek_pi, Greek_PI ]}; // , hebrew_pe, P ]}; key {[ bracketleft, braceleft, bracketleft, braceleft ]}; // , bracketright, braceright ]}; key {[ bracketright, braceright, bracketright, braceright ]}; // , bracketleft, braceleft ]}; key {[ a, A, Greek_alpha, Greek_ALPHA ]}; // , hebrew_shin, A ]}; key {[ s, S, Greek_sigma, Greek_SIGMA ]}; // , hebrew_dalet, S ]}; key {[ d, D, Greek_delta, Greek_DELTA ]}; // , hebrew_gimel, D ]}; key {[ f, F, Greek_phi, Greek_PHI ]}; // , hebrew_kaph, F ]}; key {[ g, G, Greek_gamma, Greek_GAMMA ]}; // , hebrew_ayin, G ]}; key {[ h, H, Greek_eta, Greek_ETA ]}; // , hebrew_yod, H ]}; key {[ j, J, Greek_xi, Greek_XI ]}; // , hebrew_chet, J ]}; key {[ k, K, Greek_kappa, Greek_KAPPA ]}; // , hebrew_lamed, K ]}; key {[ l, L, Greek_lamda, Greek_LAMDA ]}; // , hebrew_finalkaph, L ]}; key {[ semicolon, colon, dead_acute, dead_diaeresis ]}; // , hebrew_finalpe, colon ]}; key {[ apostrophe, quotedbl, apostrophe, quotedbl ]}; // , comma, quotedbl ]}; key {[ backslash, bar, backslash, bar ]}; // , backslash, bar ]}; key {[ z, Z, Greek_zeta, Greek_ZETA ]}; // , hebrew_zain, Z ]}; key {[ x, X, Greek_chi, Greek_CHI ]}; // , hebrew_samech, X ]}; key {[ c, C, Greek_psi, Greek_PSI ]}; // , hebrew_bet, C ]}; key {[ v, V, Greek_omega, Greek_OMEGA ]}; // , hebrew_he, V ]}; key {[ b, B, Greek_beta, Greek_BETA ]}; // , hebrew_nun, B ]}; key {[ n, N, Greek_nu, Greek_NU ]}; // , hebrew_mem, N ]}; key {[ m, M, Greek_mu, Greek_MU ]}; // , hebrew_zade, M ]}; key {[ comma, less, comma, less ]}; // , hebrew_taw, greater ]}; key {[ period, greater, period, greater ]}; // , hebrew_finalzade, less ]}; key {[ slash, question, slash, question ]}; // , period, question ]}; key {[ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Lock, ISO_Lock ]}; // , NoSymbol, NoSymbol ]}; // key {[ ISO_Level5_Shift, ISO_Level5_Shift, NoSymbol, NoSymbol, ISO_Lock, ISO_Lock ]}; key.type[group1] = "ONE_LEVEL"; key {[ ISO_Level3_Lock ]}; // key {[ ISO_Level5_Lock ]}; key {[ Meta_L ]}; key {[ Meta_R ]}; key {[ Hyper_L ]}; key {[ Hyper_R ]}; key {[ Alt_L ]}; key {[ Alt_R ]}; key {[ Multi_key ]}; modifier_map Mod1 { Alt_L, Alt_R }; modifier_map Mod2 { Meta_L, Meta_R }; modifier_map Mod3 { Hyper_L, Hyper_R }; modifier_map Mod4 { Super_L, Super_R }; key.type[group1] = "TWO_LEVEL"; augment "pc" augment "us" augment "inet(evdev)" }; };