1default xkb_compatibility "xtest" {
2
3    // Minimal set of symbol interpretations to provide
4    // reasonable behavior for testing.
5    // The X Test Suite assumes that it can set any modifier
6    // by simulating a KeyPress and clear it by simulating a
7    // KeyRelease.  Because of the way that XKB implements
8    // locking/latching modifiers, this approach fails in
9    // some cases (typically the Lock or NumLock modifiers).
10    // These symbol interpretations make all modifier keys
11    // just set the corresponding modifier so that xtest
12    // will see the behavior it expects.
13
14    virtual_modifiers  NumLock;
15
16    interpret.repeat= False;
17    setMods.clearLocks= True;
18    latchMods.clearLocks= True;
19    latchMods.latchToLock= False;
20
21    interpret Shift_Lock+AnyOf(Shift+Lock) {
22	action= SetMods(modifiers=Shift);
23    };
24
25    interpret Num_Lock+Any {
26	virtualModifier= NumLock;
27	action= SetMods(modifiers=NumLock);
28    };
29
30    interpret Mode_switch {
31	action= SetGroup(group=2);
32    };
33
34    interpret Any + Any {
35	action= SetMods(modifiers=modMapMods);
36    };
37
38    group 2 = Mod5;
39    group 3 = Mod5;
40    group 4 = Mod5;
41
42    indicator.allowExplicit= False;
43    indicator "Caps Lock" {
44	modifiers= Lock;
45    };
46    indicator "Num Lock" {
47	modifiers= NumLock;
48    };
49    indicator "Shift Lock" {
50	whichModState= Locked;
51	modifiers= Shift;
52    };
53    indicator.allowExplicit= True;
54};
55