default partial xkb_types "default" {

    
    

    virtual_modifiers  Alt, LevelThree, LevelFive, NumLock;

    type "FOUR_LEVEL" {
	modifiers = Shift + LevelThree;
	map[None] = Level1;
	map[Shift] = Level2;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	level_name[Level1] = "Base";
	level_name[Level2] = "Shift";
	level_name[Level3] = "AltGr";
	level_name[Level4] = "Shift AltGr";
    };

    type "FOUR_LEVEL_ALPHABETIC" {
	modifiers = Shift + Lock + LevelThree;
	map[None] = Level1;
	map[Shift] = Level2;
	map[Lock] = Level2;
	map[Shift+Lock] = Level1;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	map[Lock+LevelThree] = Level4;
	map[Shift+Lock+LevelThree] = Level3;
	level_name[Level1] = "Base";
	level_name[Level2] = "Shift";
	level_name[Level3] = "AltGr";
	level_name[Level4] = "Shift AltGr";
    };

    type "FOUR_LEVEL_SEMIALPHABETIC" {
	modifiers = Shift + Lock + LevelThree;
	map[None] = Level1;
	map[Shift] = Level2;
	map[Lock] = Level2;
	map[Shift+Lock] = Level1;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	map[Lock+LevelThree] = Level3;
	map[Shift+Lock+LevelThree] = Level4;
	preserve[Lock+LevelThree] = Lock;
	preserve[Shift+Lock+LevelThree] = Lock;
	level_name[Level1] = "Base";
	level_name[Level2] = "Shift";
	level_name[Level3] = "AltGr";
	level_name[Level4] = "Shift AltGr";
    };

    
    type "FOUR_LEVEL_KEYPAD" {
	modifiers = Shift + NumLock + LevelThree;
	map     [None] = Level1;
	map     [Shift] = Level1;
	preserve[Shift] = Shift;
	map     [NumLock] = Level2;
	map     [LevelThree] = Level3;
	map     [Shift+NumLock] = Level2;
	preserve[Shift+NumLock] = Shift;
	map     [Shift+LevelThree] = Level4;
	map     [NumLock+LevelThree] = Level3;
	map     [Shift+NumLock+LevelThree] = Level4;
	level_name[Level1] = "Base";
	level_name[Level2] = "NumLock";
	level_name[Level3] = "AltGr";
	level_name[Level4] = "Shift AltGr";
    };

    
    type "FOUR_LEVEL_MIXED_KEYPAD" {
	modifiers = Shift + NumLock + LevelThree;
	map     [None] = Level1;
	map     [Shift] = Level1;
	preserve[Shift] = Shift;
	map     [NumLock] = Level2;
	map     [LevelThree] = Level3;
	map     [Shift+NumLock] = Level2;
	preserve[Shift+NumLock] = Shift;
	map     [Shift+LevelThree] = Level4;
	map     [NumLock+LevelThree] = Level3;
	map     [Shift+NumLock+LevelThree] = Level4;
	level_name[Level1] = "Base";
	level_name[Level2] = "NumLock";
	level_name[Level3] = "AltGr";
	level_name[Level4] = "Shift AltGr";
    };

    
    
    
    
    
    type "FOUR_LEVEL_LOCKABLE_LEVEL2" {
	modifiers = Shift + LevelThree + LevelFive;
	map[None] = Level1;
	map[Shift] = Level2;
	map[LevelFive] = Level2;
	map[Shift+LevelFive] = Level1;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	map[LevelFive+LevelThree] = Level3;
	map[Shift+LevelFive+LevelThree] = Level4;
	level_name[Level1] = "Base";
	level_name[Level2] = "Digit";
	level_name[Level3] = "AltGr";
	level_name[Level4] = "Shift AltGr";
    };

    
    type "FOUR_LEVEL_X" {
	modifiers = Shift + LevelThree + Control + Alt;
	map     [None] = Level1;
	map     [Shift] = Level1;
	preserve[Shift] = Shift;
	map     [LevelThree] = Level2;
	map     [Control] = Level1;
	preserve[Control] = Control;
	map     [Alt] = Level1;
	preserve[Alt] = Alt;

	map     [Shift+LevelThree] = Level3;
	map     [Shift+Control] = Level1;
	preserve[Shift+Control] = Shift+Control;
	map     [Shift+Alt] = Level1;
	preserve[Shift+Alt] = Shift+Alt;
	map     [LevelThree+Control] = Level2;
	preserve[LevelThree+Control] = Control;
	map     [LevelThree+Alt] = Level2;
	preserve[LevelThree+Alt] = Alt;
	map     [Control+Alt] = Level4;

	map     [Shift+LevelThree+Control] = Level3;
	preserve[Shift+LevelThree+Control] = Control;
	map     [Shift+LevelThree+Alt] = Level3;
	preserve[Shift+LevelThree+Alt] = Alt;
	map     [Shift+Control+Alt] = Level4;
	preserve[Shift+Control+Alt] = Shift;
	map     [LevelThree+Control+Alt] = Level2;
	preserve[LevelThree+Control+Alt] = Control+Alt;

	map     [Shift+LevelThree+Control+Alt] = Level3;
	preserve[Shift+LevelThree+Control+Alt] = Control+Alt;

	level_name[Level1] = "Base";
	level_name[Level2] = "AltGr";
	level_name[Level3] = "Shift AltGr";
	level_name[Level4] = "Ctrl+Alt";
    };

    
    
    
    
    type "SEPARATE_CAPS_AND_SHIFT_ALPHABETIC" {
	modifiers = Shift + Lock + LevelThree;
	map[None] = Level1;
	map[Shift] = Level2;
	map[Lock] = Level4;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	map[Lock+LevelThree] = Level3;
	map[Shift+Lock+LevelThree] = Level3;
	preserve[Lock] = Lock;
	preserve[Lock+LevelThree] = Lock;
	level_name[Level1] = "Base";
	level_name[Level2] = "Shift";
	level_name[Level3] = "AltGr";
	level_name[Level4] = "Caps / Shift AltGr";
    };

    
    
    
    type "FOUR_LEVEL_PLUS_LOCK" {
	modifiers = Shift + Lock + LevelThree;
	map[None] = Level1;
	map[Shift] = Level2;
	map[LevelThree] = Level3;
	map[Shift+LevelThree] = Level4;
	map[Lock] = Level5;
	map[Shift+Lock] = Level2;
	map[Lock+LevelThree] = Level3;
	map[Shift+Lock+LevelThree] = Level4;
	level_name[Level1] = "Base";
	level_name[Level2] = "Shift";
	level_name[Level3] = "AltGr";
	level_name[Level4] = "Shift AltGr";
	level_name[Level5] = "Lock";
    };
};
