summaryrefslogtreecommitdiff
path: root/common/.keymap.xkb
blob: 47fe77bbfbcfb5db33f2e5970360fd76488611c9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
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)"
    };
};