1default partial xkb_compatibility "misc" {
2
3    virtual_modifiers  Alt,Meta,Super,Hyper,ScrollLock;
4
5    // Interpretations for some other useful keys.
6
7    interpret Terminate_Server {
8	action = Terminate();
9    };
10
11    setMods.clearLocks= True;
12
13    // Set the "Alt" virtual modifier.
14
15    interpret Alt_L+Any {
16	virtualModifier= Alt;
17	action = SetMods(modifiers=modMapMods);
18    };
19
20    interpret Alt_L {
21	action = SetMods(modifiers=Alt);
22    };
23
24    interpret Alt_R+Any {
25	virtualModifier= Alt;
26	action = SetMods(modifiers=modMapMods);
27    };
28
29    interpret Alt_R {
30	action = SetMods(modifiers=Alt);
31    };
32
33    // Set the "Meta" virtual modifier.
34
35    interpret Meta_L+Any {
36	virtualModifier= Meta;
37	action = SetMods(modifiers=modMapMods);
38    };
39
40    interpret Meta_L {
41	action = SetMods(modifiers=Meta);
42    };
43
44    interpret Meta_R+Any {
45	virtualModifier= Meta;
46	action = SetMods(modifiers=modMapMods);
47    };
48
49    interpret Meta_R {
50	action = SetMods(modifiers=Meta);
51    };
52
53    // Set the "Super" virtual modifier.
54
55    interpret Super_L+Any {
56	virtualModifier= Super;
57	action = SetMods(modifiers=modMapMods);
58    };
59
60    interpret Super_L {
61	action = SetMods(modifiers=Super);
62    };
63
64    interpret Super_R+Any {
65	virtualModifier= Super;
66	action = SetMods(modifiers=modMapMods);
67    };
68
69    interpret Super_R {
70	action = SetMods(modifiers=Super);
71    };
72
73    // Set the "Hyper" virtual modifier.
74
75    interpret Hyper_L+Any {
76	virtualModifier= Hyper;
77	action = SetMods(modifiers=modMapMods);
78    };
79
80    interpret Hyper_L {
81	action = SetMods(modifiers=Hyper);
82    };
83
84    interpret Hyper_R+Any {
85	virtualModifier= Hyper;
86	action = SetMods(modifiers=modMapMods);
87    };
88
89    interpret Hyper_R {
90	action = SetMods(modifiers=Hyper);
91    };
92
93    // Sets the "ScrollLock" virtual modifier and
94    // makes it actually lock when pressed.  Sets
95    // up a map for the scroll lock indicator.
96    interpret Scroll_Lock+Any {
97	virtualModifier= ScrollLock;
98	action = LockMods(modifiers=modMapMods);
99    };
100
101    include "ledscroll"
102
103    include "misc(assign_shift_left_action)"
104};
105
106partial xkb_compatibility "assign_shift_left_action" {
107    // Because of the irrevertable modifier mapping in symbols/pc,
108    // <LFSH> is getting bound to the Lock modifier when using
109    // symbols/shift(both_capslock), creating unwanted behaviour.
110    // This is a quirk, to circumvent the problem.
111    interpret Shift_L {
112	action = SetMods(modifiers = Shift);
113    };
114};
115