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)"
};
};
|