159 lines
5.3 KiB
Plaintext
159 lines
5.3 KiB
Plaintext
default partial xkb_types "default" {
|
|
|
|
// Defines a type with a four-level shift, similar to the three-level
|
|
// type used for iso9995, but it lets the Shift key behave "normally".
|
|
|
|
virtual_modifiers LevelThree;
|
|
|
|
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] = "Alt Base";
|
|
level_name[Level4] = "Shift Alt";
|
|
};
|
|
|
|
type "FOUR_LEVEL_ALPHABETIC" {
|
|
modifiers = Shift+Lock+LevelThree;
|
|
map[None] = Level1;
|
|
map[Shift] = Level2;
|
|
map[Lock] = Level2;
|
|
map[LevelThree] = Level3;
|
|
map[Shift+LevelThree] = Level4;
|
|
map[Lock+LevelThree] = Level4;
|
|
map[Lock+Shift+LevelThree] = Level3;
|
|
level_name[Level1] = "Base";
|
|
level_name[Level2] = "Shift";
|
|
level_name[Level3] = "Alt Base";
|
|
level_name[Level4] = "Shift Alt";
|
|
};
|
|
|
|
type "FOUR_LEVEL_SEMIALPHABETIC" {
|
|
modifiers = Shift+Lock+LevelThree;
|
|
map[None] = Level1;
|
|
map[Shift] = Level2;
|
|
map[Lock] = Level2;
|
|
map[LevelThree] = Level3;
|
|
map[Shift+LevelThree] = Level4;
|
|
map[Lock+LevelThree] = Level3;
|
|
map[Lock+Shift+LevelThree] = Level4;
|
|
preserve[Lock+LevelThree] = Lock;
|
|
preserve[Lock+Shift+LevelThree] = Lock;
|
|
level_name[Level1] = "Base";
|
|
level_name[Level2] = "Shift";
|
|
level_name[Level3] = "Alt Base";
|
|
level_name[Level4] = "Shift Alt";
|
|
};
|
|
|
|
// A four-level keypad variant. The first two levels are controlled by
|
|
// NumLock (with active shifting like in KEYPAD). LevelThree overrides
|
|
// this mode, with two additional shifted levels.
|
|
type "FOUR_LEVEL_MIXED_KEYPAD" {
|
|
modifiers = Shift+NumLock+LevelThree;
|
|
map[None] = Level1;
|
|
map[Shift+NumLock] = Level1;
|
|
map[NumLock] = Level2;
|
|
map[Shift] = Level2;
|
|
map[LevelThree] = Level3;
|
|
map[NumLock+LevelThree] = Level3;
|
|
map[Shift+LevelThree] = Level4;
|
|
map[Shift+NumLock+LevelThree] = Level4;
|
|
level_name[Level1] = "Base";
|
|
level_name[Level2] = "Number";
|
|
level_name[Level3] = "Alt Base";
|
|
level_name[Level4] = "Shift Alt";
|
|
};
|
|
|
|
// Base level, two shifted LevelThree levels, one Ctrl+Alt command level.
|
|
type "FOUR_LEVEL_X" {
|
|
modifiers = Shift+LevelThree+Control+Alt;
|
|
map[None] = Level1;
|
|
map[LevelThree] = Level2;
|
|
map[Shift+LevelThree] = Level3;
|
|
map[Control+Alt] = Level4;
|
|
level_name[Level1] = "Base";
|
|
level_name[Level2] = "Alt Base";
|
|
level_name[Level3] = "Shift Alt";
|
|
level_name[Level4] = "Ctrl+Alt";
|
|
};
|
|
|
|
// A special type for keys used in the Serbian Latin Unicode keymap.
|
|
// It makes it possible to use all three forms of latin letters
|
|
// present in Unicode that are made up of two separate letters
|
|
// (forms like LJ, Lj, and lj; NJ, Nj, and nj; etcetera).
|
|
|
|
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[Lock+Shift+LevelThree] = Level3;
|
|
preserve[Lock]= Lock;
|
|
preserve[Lock+LevelThree]= Lock;
|
|
level_name[Level1] = "Base";
|
|
level_name[Level2] = "Shift";
|
|
level_name[Level3] = "AltGr Base";
|
|
level_name[Level4] = "Shift AltGr";
|
|
};
|
|
|
|
// A key type for the German ssharp (for example), which is capitalized as SS.
|
|
// CHARACTERISTICS:
|
|
// It is FOUR_LEVEL with the exception that the fifth level is mapped to the
|
|
// Lock modifier. If other modifiers are used, the Lock state is ignored.
|
|
// DETAILS ABOUT GERMAN:
|
|
// The capital form of ssharp (called sharp s) only exists for completely
|
|
// capitalized text, not for words at the beginning of sentences nor for
|
|
// nouns (nouns in German normally start with a captial letter).
|
|
// The ssharp key, to the right of the zero key, takes this into account
|
|
// and has a questionmark mapped to Shift-ssharp since normally no capital
|
|
// version is needed.
|
|
// When typing with active CapsLock, this key type is needed to
|
|
// output two capital letters S because this is the only German key
|
|
// whose capital letter is not the same as the one typed with Shift.
|
|
|
|
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[Lock+Shift] = Level2;
|
|
map[Lock+LevelThree] = Level3;
|
|
map[Lock+Shift+LevelThree] = Level4;
|
|
level_name[Level1] = "Base";
|
|
level_name[Level2] = "Shift";
|
|
level_name[Level3] = "Alt Base";
|
|
level_name[Level4] = "Shift Alt";
|
|
level_name[Level5] = "Lock";
|
|
};
|
|
};
|
|
|
|
// This enables the four-level shifting also for the keypad.
|
|
partial xkb_types "keypad" {
|
|
virtual_modifiers LevelThree;
|
|
|
|
type "FOUR_LEVEL_KEYPAD" {
|
|
modifiers = Shift+NumLock+LevelThree;
|
|
map[None] = Level1;
|
|
map[Shift] = Level2;
|
|
map[NumLock] = Level2;
|
|
map[Shift+NumLock] = Level1;
|
|
map[LevelThree] = Level3;
|
|
map[Shift+LevelThree] = Level4;
|
|
map[NumLock+LevelThree] = Level4;
|
|
map[Shift+NumLock+LevelThree] = Level3;
|
|
level_name[Level1] = "Base";
|
|
level_name[Level2] = "Number";
|
|
level_name[Level3] = "Alt Base";
|
|
level_name[Level4] = "Alt Number";
|
|
};
|
|
};
|