default alphanumeric_keys modifier_keys
xkb_symbols "basic" {
	name[1] = "Multiple actions";

	virtual_modifiers Alt, Super, LevelThree;

	// Multiple keysyms but no actions: OK
	key <LCTL> {
		symbols[1] = [ { Control_L,                  ISO_Group_Shift    } ]
	};
	// Multiple actions but no keysyms: OK, but will use NoSymbol
	key <RCTL> {
		actions[1] = [ { SetMods(modifiers=Control), SetGroup(group=+1) } ]
	};
	// Multiple keysyms and matching actions
	key <LVL3> {
		virtualModifiers = LevelThree,
		symbols[1] = [ { ISO_Level3_Shift,              ISO_Group_Shift    } ],
		actions[1] = [ { SetMods(modifiers=LevelThree), SetGroup(group=+1) } ]
	};
	// Multiple actions and matching keysyms
	key <MDSW> {
		virtualModifiers = LevelThree,
		actions[1] = [ { SetMods(modifiers=LevelThree), SetGroup(group=+1) } ],
		symbols[1] = [ { ISO_Level3_Shift,              ISO_Group_Shift    } ]
	};

	// Different actions and keysyms count
	key <LALT> {
		symbols[1] = [   Alt_L                                        ],
		actions[1] = [ { SetMods(modifiers=Alt), SetGroup(group=+1) } ]
	};
	key <RALT> {
		symbols[1] = [ { Alt_R,                  ISO_Group_Shift    } ],
		actions[1] = [   SetMods(modifiers=Alt)                       ]
	};
	key <LWIN> {
		symbols[1] = [ { Super_L,                  ISO_Group_Shift                } ],
		actions[1] = [ { SetMods(modifiers=Super), SetGroup(group=+1), NoAction() } ]
	};
	key <RWIN> {
		symbols[1] = [ { Super_R,                  ISO_Group_Shift   , NoSymbol } ],
		actions[1] = [ { SetMods(modifiers=Super), SetGroup(group=+1)           } ]
	};

	// Incompatible categories
	key <AB11> {
		symbols[1] = [ { Control_L,                  Shift_L                  } ]
	};
	modifier_map Control { <AB11> };
	key <AE13> {
		symbols[1] = [ { Control_L,                  Shift_L                  } ],
		actions[1] = [ { SetMods(modifiers=Control), SetMods(modifiers=Shift) } ]
	};

	// Various overrides, different keysyms, no explicit actions
	key <AB01> { [ x                              ] };
	key <AB01> { [ { Control_L, ISO_Group_Shift } ] };

	key <AB02> { [ { Control_L, ISO_Group_Shift } ] };
	key <AB02> { [ x                              ] };

	// Various overrides, no keysyms, explicit actions
	key <AB03> { actions[1] = [   SetMods(modifiers=LevelThree)                       ] };
	key <AB03> { actions[1] = [ { SetMods(modifiers=LevelThree), SetGroup(group=+1) } ] };

	key <AB04> { actions[1] = [ { SetMods(modifiers=LevelThree), SetGroup(group=+1) } ] };
	key <AB04> { actions[1] = [   SetMods(modifiers=LevelThree)                       ] };

	// Various overrides, different keysyms & actions
	key <AB05> {
		virtualModifiers = LevelThree,
		symbols[1] = [ Control_L                  ],
		actions[1] = [ SetMods(modifiers=Control) ]
	};
	key <AB05> {
		symbols[1] = [ { ISO_Level3_Shift,              ISO_Group_Shift    } ],
		actions[1] = [ { SetMods(modifiers=LevelThree), SetGroup(group=+1) } ]
	};

	key <AB06> {
		virtualModifiers = LevelThree,
		symbols[1] = [ { ISO_Level3_Shift,              ISO_Group_Shift    } ],
		actions[1] = [ { SetMods(modifiers=LevelThree), SetGroup(group=+1) } ]
	};
	key <AB06> {
		symbols[1] = [ Control_L                  ],
		actions[1] = [ SetMods(modifiers=Control) ]
	};

	// Various overrides, same keysyms but different actions
	key <AB07> {
		virtualModifiers = LevelThree,
		symbols[1] = [ { ISO_Level3_Shift,           ISO_Group_Shift               } ],
		actions[1] = [ { SetMods(modifiers=Control), Private(type=254, data="foo") } ]
	};
	key <AB07> {
		symbols[1] = [ { ISO_Level3_Shift,              ISO_Group_Shift    } ],
		actions[1] = [ { SetMods(modifiers=LevelThree), SetGroup(group=+1) } ]
	};

	// Mix various number of keysyms/actions
	key <AC01> {
		symbols[1] = [ ISO_Level3_Shift             , { ISO_Level3_Shift,              ISO_Group_Shift    } ]
	};
	key <AC02> {
		actions[1] = [ SetMods(modifiers=LevelThree), { SetMods(modifiers=LevelThree), SetGroup(group=+1) } ]
	};
	key <AC03> {
		symbols[1] = [ ISO_Level3_Shift             , { ISO_Level3_Shift,              ISO_Group_Shift    } ],
		actions[1] = [ SetMods(modifiers=LevelThree), { SetMods(modifiers=LevelThree), SetGroup(group=+1) } ]
	};
	key <AC04> {
		symbols[1] = [ { ISO_Level3_Shift,              ISO_Group_Shift    }, ISO_Level3_Shift              ]
	};
	key <AC05> {
		actions[1] = [ { SetMods(modifiers=LevelThree), SetGroup(group=+1) }, SetMods(modifiers=LevelThree) ]
	};
	key <AC06> {
		symbols[1] = [ { ISO_Level3_Shift,              ISO_Group_Shift    }, ISO_Level3_Shift              ],
		actions[1] = [ { SetMods(modifiers=LevelThree), SetGroup(group=+1) }, SetMods(modifiers=LevelThree) ]
	};
	key <AC07> {
		symbols[1] = [ ISO_Level3_Shift             , { ISO_Level3_Shift,              ISO_Group_Shift    }, { ISO_Level3_Shift,              ISO_Group_Shift    } ]
	};
	key <AC08> {
		actions[1] = [ SetMods(modifiers=LevelThree), { SetMods(modifiers=LevelThree), SetGroup(group=+1) }, { SetMods(modifiers=LevelThree), SetGroup(group=+1) } ]
	};
	key <AC09> {
		symbols[1] = [ ISO_Level3_Shift             , { ISO_Level3_Shift,              ISO_Group_Shift    }, { ISO_Level3_Shift,              ISO_Group_Shift    } ],
		actions[1] = [ SetMods(modifiers=LevelThree), { SetMods(modifiers=LevelThree), SetGroup(group=+1) }, { SetMods(modifiers=LevelThree), SetGroup(group=+1) } ]
	};

	// Using modifier_map (may trigger multiple interprets)
	key <AD01> { symbols[1] = [ { a, b } ] };
	modifier_map Shift { <AD01> };

	// Our only alphanum key ✨
	key <AE02> { [	  2,	at		] };
};
