1797b363dSmrgdefault partial xkb_compatibility "misc" {
2154daed1Smrg
3797b363dSmrg    virtual_modifiers  Alt,Meta,Super,Hyper,ScrollLock;
4154daed1Smrg
5797b363dSmrg    // Interpretations for some other useful keys.
6154daed1Smrg
7154daed1Smrg    interpret Terminate_Server {
8797b363dSmrg	action = Terminate();
9154daed1Smrg    };
10154daed1Smrg
11154daed1Smrg    setMods.clearLocks= True;
12154daed1Smrg
1346185892Smrg    // Set the "Alt" virtual modifier.
14154daed1Smrg
15797b363dSmrg    interpret Alt_L+Any {
16154daed1Smrg	virtualModifier= Alt;
17154daed1Smrg	action = SetMods(modifiers=modMapMods);
18154daed1Smrg    };
19154daed1Smrg
20797b363dSmrg    interpret Alt_L {
21154daed1Smrg	action = SetMods(modifiers=Alt);
22154daed1Smrg    };
23154daed1Smrg
24797b363dSmrg    interpret Alt_R+Any {
25154daed1Smrg	virtualModifier= Alt;
26154daed1Smrg	action = SetMods(modifiers=modMapMods);
27154daed1Smrg    };
28154daed1Smrg
29797b363dSmrg    interpret Alt_R {
30154daed1Smrg	action = SetMods(modifiers=Alt);
31154daed1Smrg    };
32154daed1Smrg
3346185892Smrg    // Set the "Meta" virtual modifier.
34154daed1Smrg
35797b363dSmrg    interpret Meta_L+Any {
36154daed1Smrg	virtualModifier= Meta;
37154daed1Smrg	action = SetMods(modifiers=modMapMods);
38154daed1Smrg    };
39154daed1Smrg
40797b363dSmrg    interpret Meta_L {
41154daed1Smrg	action = SetMods(modifiers=Meta);
42154daed1Smrg    };
43154daed1Smrg
44797b363dSmrg    interpret Meta_R+Any {
45154daed1Smrg	virtualModifier= Meta;
46154daed1Smrg	action = SetMods(modifiers=modMapMods);
47154daed1Smrg    };
48154daed1Smrg
49797b363dSmrg    interpret Meta_R {
50154daed1Smrg	action = SetMods(modifiers=Meta);
51154daed1Smrg    };
52154daed1Smrg
5346185892Smrg    // Set the "Super" virtual modifier.
54154daed1Smrg
55797b363dSmrg    interpret Super_L+Any {
56154daed1Smrg	virtualModifier= Super;
57154daed1Smrg	action = SetMods(modifiers=modMapMods);
58154daed1Smrg    };
59154daed1Smrg
60797b363dSmrg    interpret Super_L {
61154daed1Smrg	action = SetMods(modifiers=Super);
62154daed1Smrg    };
63154daed1Smrg
64797b363dSmrg    interpret Super_R+Any {
65154daed1Smrg	virtualModifier= Super;
66154daed1Smrg	action = SetMods(modifiers=modMapMods);
67154daed1Smrg    };
68154daed1Smrg
69797b363dSmrg    interpret Super_R {
70154daed1Smrg	action = SetMods(modifiers=Super);
71154daed1Smrg    };
72154daed1Smrg
7346185892Smrg    // Set the "Hyper" virtual modifier.
74154daed1Smrg
75797b363dSmrg    interpret Hyper_L+Any {
76154daed1Smrg	virtualModifier= Hyper;
77154daed1Smrg	action = SetMods(modifiers=modMapMods);
78154daed1Smrg    };
79154daed1Smrg
80797b363dSmrg    interpret Hyper_L {
81154daed1Smrg	action = SetMods(modifiers=Hyper);
82154daed1Smrg    };
83154daed1Smrg
84797b363dSmrg    interpret Hyper_R+Any {
85154daed1Smrg	virtualModifier= Hyper;
86154daed1Smrg	action = SetMods(modifiers=modMapMods);
87154daed1Smrg    };
88154daed1Smrg
89797b363dSmrg    interpret Hyper_R {
90154daed1Smrg	action = SetMods(modifiers=Hyper);
91154daed1Smrg    };
92154daed1Smrg
93154daed1Smrg    // Sets the "ScrollLock" virtual modifier and
94154daed1Smrg    // makes it actually lock when pressed.  Sets
95154daed1Smrg    // up a map for the scroll lock indicator.
96797b363dSmrg    interpret Scroll_Lock+Any {
97154daed1Smrg	virtualModifier= ScrollLock;
98154daed1Smrg	action = LockMods(modifiers=modMapMods);
99154daed1Smrg    };
100154daed1Smrg
101154daed1Smrg    include "ledscroll"
102797b363dSmrg
103da6c6c0bSmrg    include "misc(assign_shift_left_action)"
104154daed1Smrg};
105c067fea9Sghen
106797b363dSmrgpartial xkb_compatibility "assign_shift_left_action" {
107797b363dSmrg    // Because of the irrevertable modifier mapping in symbols/pc,
108797b363dSmrg    // <LFSH> is getting bound to the Lock modifier when using
109797b363dSmrg    // symbols/shift(both_capslock), creating unwanted behaviour.
110c067fea9Sghen    // This is a quirk, to circumvent the problem.
111c067fea9Sghen    interpret Shift_L {
112797b363dSmrg	action = SetMods(modifiers = Shift);
113c067fea9Sghen    };
114c067fea9Sghen};
115