// Meta is mapped to second level of Alt.
partial modifier_keys
xkb_symbols "meta_alt" {
    key <LALT> {[  Alt_L,  Meta_L  ]};
    key <RALT> {[  Alt_R,  Meta_R  ], type[group1] = "TWO_LEVEL" };
    modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
};

// Alt is mapped to the Super and the usual Alt.
partial modifier_keys
xkb_symbols "alt_win" {
    key <LWIN> {[  Alt_L  ]};
    key <RWIN> {[  Alt_R  ]};
    modifier_map Mod1 { <LWIN>, <RWIN> };
};

// Ctrl is mapped to the Super and the usual Ctrl keys.
partial modifier_keys
xkb_symbols "ctrl_win" {
    key <LWIN> {[  Control_L  ]};
    key <RWIN> {[  Control_R  ]};
    modifier_map Control { <LWIN>, <RWIN> };
};

// Ctrl is mapped to the Right Super and the usual Ctrl key.
partial modifier_keys
xkb_symbols "ctrl_rwin" {
    key <RWIN> {[  Control_R  ]};
    modifier_map Control { <RWIN> };
};

// Ctrl is mapped to the Alt, Alt to the Super, and Win to the Ctrl keys.
partial modifier_keys
xkb_symbols "ctrl_alt_win" {
    key <LALT> {[  Control_L,  Control_L  ]};
    key <RALT> {[  Control_R,  Control_R  ], type[group1] = "TWO_LEVEL" };
    key <LWIN> {[  Alt_L,  Meta_L  ]};
    key <RWIN> {[  Alt_R,  Meta_R  ]};
    key <LCTL> {[  Super_L  ]};
    key <RCTL> {[  Super_R  ]};
    modifier_map Control { <RALT>, <LALT> };
    modifier_map Mod1 { <LWIN>, <RWIN> };
    modifier_map Mod4 { <LCTL>, <RCTL> };
};

// Meta is mapped to the Super keys.
partial modifier_keys
xkb_symbols "meta_win" {
    key <LALT> {[  Alt_L,  Alt_L  ]};
    key <RALT> {[  Alt_R,  Alt_R  ], type[group1] = "TWO_LEVEL" };
    key <LWIN> {[  Meta_L  ]};
    key <RWIN> {[  Meta_R  ]};
    modifier_map Mod1 { Alt_L, Alt_R };
    modifier_map Mod4 { <META>, Meta_L, Meta_R };
};

// Meta is mapped to the left Super key.
partial modifier_keys
xkb_symbols "left_meta_win" {
    key <LALT> {[  Alt_L,  Alt_L  ]};
    key <LWIN> {[  Meta_L  ]};
    modifier_map Mod1 { Alt_L };
    modifier_map Mod4 { <META>, Meta_L };
};

// Hyper is mapped to the Super keys.
partial modifier_keys
xkb_symbols "hyper_win" {
    key <LWIN> {[  Hyper_L  ]};
    key <RWIN> {[  Hyper_R  ]};
    modifier_map Mod4 { Hyper_L, Hyper_R };
};

// Menu is mapped to the Menu key.
partial modifier_keys
xkb_symbols "menu" {
    key <MENU> {[  Menu  ]};
};

// Super is mapped to the Menu key.
partial modifier_keys
xkb_symbols "menu_win" {
    key <MENU> {[  Super_R  ]};
};

// Make the right Super key an additional Alt,
// and the Menu key an additional Super.
partial modifier_keys
xkb_symbols "alt_super_win" {
    key <LALT> {[  Alt_L,  Meta_L  ]};
    key <RWIN> {[  Alt_R,  Meta_R  ]};
    key <LWIN> {[  Super_L ]};
    key <MENU> {[  Super_R  ]};
    modifier_map Mod1 { Alt_L, Alt_R, Meta_L, Meta_R };
    modifier_map Mod4 { Super_L, Super_R };
};

// Swap the left Alt and Super.
partial modifier_keys
xkb_symbols "swap_lalt_lwin" {
    key <LALT> {[  Super_L  ], type[group1] = "ONE_LEVEL" };
    key <LWIN> {[  Alt_L,  Meta_L  ]};
};

// Swap the right Alt and Super.
hidden partial modifier_keys
xkb_symbols "swap_ralt_rwin" {
    key <RALT> {[  Super_R  ], type[group1] = "ONE_LEVEL" };
    key <RWIN> {[  Alt_R,  Meta_R  ]};
};

// Swap Alt and Super.
partial modifier_keys
xkb_symbols "swap_alt_win" {
    include "altwin(swap_lalt_lwin)"
    include "altwin(swap_ralt_rwin)"
};

// Super is mapped to the PrtSc key (and the usual Win key).
partial modifier_keys
xkb_symbols "prtsc_rwin" {
    replace key <PRSC> {[  Super_R,  Super_R  ]};
    modifier_map Mod4 { <PRSC>, <RWIN> };
};
