summaryrefslogtreecommitdiff
path: root/common/.keymap.xkb
diff options
context:
space:
mode:
Diffstat (limited to 'common/.keymap.xkb')
-rw-r--r--common/.keymap.xkb137
1 files changed, 137 insertions, 0 deletions
diff --git a/common/.keymap.xkb b/common/.keymap.xkb
new file mode 100644
index 0000000..47fe77b
--- /dev/null
+++ b/common/.keymap.xkb
@@ -0,0 +1,137 @@
+// 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 <TLDE> {[ grave, asciitilde, grave, asciitilde ]}; // , semicolon, asciitilde ]};
+ key <AE01> {[ 1, exclam, 1, exclam ]}; // , 1, exclam ]};
+ key <AE02> {[ 2, at, 2, at ]}; // , 2, at ]};
+ key <AE03> {[ 3, numbersign, 3, numbersign ]}; // , 3, numbersign ]};
+ key <AE04> {[ 4, dollar, 4, dollar ]}; // , 4, dollar ]};
+ key <AE05> {[ 5, percent, 5, percent ]}; // , 5, percent ]};
+ key <AE06> {[ 6, asciicircum, 6, asciicircum ]}; // , 6, asciicircum ]};
+ key <AE07> {[ 7, ampersand, 7, ampersand ]}; // , 7, ampersand ]};
+ key <AE08> {[ 8, asterisk, 8, asterisk ]}; // , 8, asterisk ]};
+ key <AE09> {[ 9, parenleft, 9, parenleft ]}; // , 9, parenright ]};
+ key <AE10> {[ 0, parenright, 0, parenright ]}; // , 0, parenleft ]};
+ key <AE11> {[ minus, underscore, minus, underscore ]}; // , minus, underscore ]};
+ key <AE12> {[ equal, plus, equal, plus ]}; // , equal, plus ]};
+
+ key <AD01> {[ q, Q, semicolon, colon ]}; // , slash, Q ]};
+ key <AD02> {[ w, W, Greek_finalsmallsigma, Greek_SIGMA ]}; // , apostrophe, W ]};
+ key <AD03> {[ e, E, Greek_epsilon, Greek_EPSILON ]}; // , hebrew_qoph, E ]};
+ key <AD04> {[ r, R, Greek_rho, Greek_RHO ]}; // , hebrew_resh, R ]};
+ key <AD05> {[ t, T, Greek_tau, Greek_TAU ]}; // , hebrew_aleph, T ]};
+ key <AD06> {[ y, Y, Greek_upsilon, Greek_UPSILON ]}; // , hebrew_tet, Y ]};
+ key <AD07> {[ u, U, Greek_theta, Greek_THETA ]}; // , hebrew_waw, U ]};
+ key <AD08> {[ i, I, Greek_iota, Greek_IOTA ]}; // , hebrew_finalnun, I ]};
+ key <AD09> {[ o, O, Greek_omicron, Greek_OMICRON ]}; // , hebrew_finalmem, O ]};
+ key <AD10> {[ p, P, Greek_pi, Greek_PI ]}; // , hebrew_pe, P ]};
+ key <AD11> {[ bracketleft, braceleft, bracketleft, braceleft ]}; // , bracketright, braceright ]};
+ key <AD12> {[ bracketright, braceright, bracketright, braceright ]}; // , bracketleft, braceleft ]};
+
+ key <AC01> {[ a, A, Greek_alpha, Greek_ALPHA ]}; // , hebrew_shin, A ]};
+ key <AC02> {[ s, S, Greek_sigma, Greek_SIGMA ]}; // , hebrew_dalet, S ]};
+ key <AC03> {[ d, D, Greek_delta, Greek_DELTA ]}; // , hebrew_gimel, D ]};
+ key <AC04> {[ f, F, Greek_phi, Greek_PHI ]}; // , hebrew_kaph, F ]};
+ key <AC05> {[ g, G, Greek_gamma, Greek_GAMMA ]}; // , hebrew_ayin, G ]};
+ key <AC06> {[ h, H, Greek_eta, Greek_ETA ]}; // , hebrew_yod, H ]};
+ key <AC07> {[ j, J, Greek_xi, Greek_XI ]}; // , hebrew_chet, J ]};
+ key <AC08> {[ k, K, Greek_kappa, Greek_KAPPA ]}; // , hebrew_lamed, K ]};
+ key <AC09> {[ l, L, Greek_lamda, Greek_LAMDA ]}; // , hebrew_finalkaph, L ]};
+ key <AC10> {[ semicolon, colon, dead_acute, dead_diaeresis ]}; // , hebrew_finalpe, colon ]};
+ key <AC11> {[ apostrophe, quotedbl, apostrophe, quotedbl ]}; // , comma, quotedbl ]};
+ key <BKSL> {[ backslash, bar, backslash, bar ]}; // , backslash, bar ]};
+
+ key <AB01> {[ z, Z, Greek_zeta, Greek_ZETA ]}; // , hebrew_zain, Z ]};
+ key <AB02> {[ x, X, Greek_chi, Greek_CHI ]}; // , hebrew_samech, X ]};
+ key <AB03> {[ c, C, Greek_psi, Greek_PSI ]}; // , hebrew_bet, C ]};
+ key <AB04> {[ v, V, Greek_omega, Greek_OMEGA ]}; // , hebrew_he, V ]};
+ key <AB05> {[ b, B, Greek_beta, Greek_BETA ]}; // , hebrew_nun, B ]};
+ key <AB06> {[ n, N, Greek_nu, Greek_NU ]}; // , hebrew_mem, N ]};
+ key <AB07> {[ m, M, Greek_mu, Greek_MU ]}; // , hebrew_zade, M ]};
+ key <AB08> {[ comma, less, comma, less ]}; // , hebrew_taw, greater ]};
+ key <AB09> {[ period, greater, period, greater ]}; // , hebrew_finalzade, less ]};
+ key <AB10> {[ slash, question, slash, question ]}; // , period, question ]};
+
+ key <FK19> {[ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Lock, ISO_Lock ]}; // , NoSymbol, NoSymbol ]};
+ // key <FK17> {[ ISO_Level5_Shift, ISO_Level5_Shift, NoSymbol, NoSymbol, ISO_Lock, ISO_Lock ]};
+
+ key.type[group1] = "ONE_LEVEL";
+ key <FK20> {[ ISO_Level3_Lock ]};
+ // key <FK18> {[ ISO_Level5_Lock ]};
+
+ key <FK21> {[ Meta_L ]};
+ key <FK22> {[ Meta_R ]};
+ key <FK23> {[ Hyper_L ]};
+ key <FK24> {[ Hyper_R ]};
+ key <LALT> {[ Alt_L ]};
+ key <RALT> {[ Alt_R ]};
+
+ key <MENU> {[ 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)"
+ };
+};