From 9f986778bd4393c5a9108426969d45aa7f10f334 Mon Sep 17 00:00:00 2001 From: marha Date: Wed, 19 Oct 2011 10:44:43 +0200 Subject: libX11 libXext libXft mesa libxcb mkfontscale pixman xserver xkeyboard-config git update 19 oct 2011 --- xorg-server/xkeyboard-config/rules/base.xml.in | 4 +- xorg-server/xkeyboard-config/symbols/gb | 2 + .../xkeyboard-config/symbols/macintosh_vndr/apple | 282 ++++++++--------- xorg-server/xkeyboard-config/types/extra | 344 ++++++++++----------- xorg-server/xkeyboard-config/types/numpad | 138 ++++----- 5 files changed, 374 insertions(+), 396 deletions(-) (limited to 'xorg-server/xkeyboard-config') diff --git a/xorg-server/xkeyboard-config/rules/base.xml.in b/xorg-server/xkeyboard-config/rules/base.xml.in index 6814a6b72..5279521a6 100644 --- a/xorg-server/xkeyboard-config/rules/base.xml.in +++ b/xorg-server/xkeyboard-config/rules/base.xml.in @@ -6209,7 +6209,7 @@ + diff --git a/xorg-server/xkeyboard-config/symbols/gb b/xorg-server/xkeyboard-config/symbols/gb index d460d3d61..58e966fc7 100644 --- a/xorg-server/xkeyboard-config/symbols/gb +++ b/xorg-server/xkeyboard-config/symbols/gb @@ -169,10 +169,12 @@ xkb_symbols "mac" { key { [ 2, at, EuroSign ] }; key { [ 3, sterling, numbersign ] }; + key { [ grave, asciitilde ] }; // End alphanumeric section include "level3(ralt_switch)" + include "level3(enter_switch)" }; diff --git a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/apple b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/apple index cbbf110d3..551eabc33 100644 --- a/xorg-server/xkeyboard-config/symbols/macintosh_vndr/apple +++ b/xorg-server/xkeyboard-config/symbols/macintosh_vndr/apple @@ -1,141 +1,141 @@ -// -// Keyboard modification for Apple keyboards -// - -partial default modifier_keys -xkb_symbols "extended" { - - key { [ KP_Equal ] }; - -// The key in the PC's Insert position is sometimes engraved Help (at least -// in Switzerland and Great Britain), with Insert sometimes above. But in the -// US and Canada, it remains Insert. So this should probably be an XkbOption, -// but I have to do more research. -// Perhaps Help should be the primary symbol with Insert in the 1st shift-level -// key { [ Help, Insert ] }; -// The keys next to F12, labeled F13, F14, & F15 generate codes that XFree86 -// claims not to generate. I think they should be equivalent to the PC keys -// Print Screen / SysRq, Scroll Lock, and Pause. Linux kernel bug? -// key { [ F13 ] }; // should be keycode 93 or -// key { [ F13 ] }; // should be keycode 118 -// key { [ F14 ] }; // should be keycode 123 or -// key { [ F14 ] }; // should be keycode 119 -// key { [ F15 ] }; // should be keycode 127 or -// key { [ F15 ] }; // should be keycode 120 -}; - -partial modifier_keys -xkb_symbols "laptop" { - - include "macintosh_vndr/apple(extended)" - - // The real numlock key on the iBook (shared with F5) works internally to - // the keyboard. It illuminates the Num_Lock led and locks the fn-key to - // type only the keypad keys on the letter keys (U=4, I=5, O=6, P=*, etc.). - // The key in the Num_lock position is engraved with Clear. - override key { [ Clear ] }; - // The key engraved Delete sends BKSP. To get Delete, use Shift-Delete - override key { [ BackSpace, Delete ] }; - // These keyboards only generate a when pressing fn+Alt. This makes - // it impossible to get to the third shift level on keys that are on - // the fn-keypad, so use the Enter key (right of ) for Mode_switch, - // and use fn+Enter (Apple's code for Menu) for KP_Enter. - replace key { [ ISO_Level3_Shift ] }; - modifier_map Mod5 { ISO_Level3_Shift }; - // Linux kernel bug with Menu on macs means this doesn't work yet -// replace key { [ KP_Enter ] }; // should be keycode 117 -}; - -partial modifier_keys -xkb_symbols "laptop_bad_switch" { - // Kept for backward compatibility - include "macintosh_vndr/apple(laptop)" -}; - -// Long Aluminium Keyboards -partial function_keys -xkb_symbols "alukbd" { - // The base is a inet PC keyboard - include "pc" - - // Additional Fxx keys - key { [ F13 ] }; - key { [ F14 ] }; - key { [ F15 ] }; - key { [ F16 ] }; - key { [ F17 ] }; - key { [ F18 ] }; - key { [ F19 ] }; - - // On aluminium keyboards, Num_Lock is replace by Clear - replace key { [ XF86Clear ] }; - // CAPS key is always Caps_Lock, even for JIS keyboards - replace key { [ Caps_Lock ] }; - - // F1..F12 are multimedia keys when used with the 'Fn' key - // Make those multimedia actions available via ISO_Level3_Shift too, - // it is useful when the Fn key is remapped to something else (e.g. Insert) - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, XF86KbdBrightnessDown, NoSymbol, XF86_Switch_VT_1 ] - }; - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, XF86KbdBrightnessUp, NoSymbol, XF86_Switch_VT_2 ] - }; - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_3 ] - }; - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_4 ] - }; - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_5 ] - }; - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_6 ] - }; - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, XF86AudioPrev, NoSymbol, XF86_Switch_VT_7 ] - }; - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, XF86AudioPlay, NoSymbol, XF86_Switch_VT_8 ] - }; - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, XF86AudioNext, NoSymbol, XF86_Switch_VT_9 ] - }; - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, XF86AudioMute, NoSymbol, XF86_Switch_VT_10 ] - }; - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, XF86AudioLowerVolume, NoSymbol, XF86_Switch_VT_11 ] - }; - key { - type= "FOUR_LEVEL_X", - symbols[Group1]= [ NoSymbol, XF86AudioRaiseVolume, NoSymbol, XF86_Switch_VT_12 ] - }; -}; - -// Aluminium Keyboard: make F13, F14, F15 PC-ish (Print, Scroll_Lock, Pause) -partial function_keys keypad_keys -xkb_symbols "alupckeys" { - key { - type= "PC_ALT_LEVEL2", - symbols[Group1]= [ Print, Sys_Req ] - }; - key { [ Scroll_Lock ] }; - key { - type= "PC_CONTROL_LEVEL2", - symbols[Group1]= [ Pause, Break ] - }; - override key { [ Num_Lock, Pointer_EnableKeys ] }; -}; +// +// Keyboard modification for Apple keyboards +// + +partial default modifier_keys +xkb_symbols "extended" { + + key { [ KP_Equal ] }; + +// The key in the PC's Insert position is sometimes engraved Help (at least +// in Switzerland and Great Britain), with Insert sometimes above. But in the +// US and Canada, it remains Insert. So this should probably be an XkbOption, +// but I have to do more research. +// Perhaps Help should be the primary symbol with Insert in the 1st shift-level +// key { [ Help, Insert ] }; +// The keys next to F12, labeled F13, F14, & F15 generate codes that XFree86 +// claims not to generate. I think they should be equivalent to the PC keys +// Print Screen / SysRq, Scroll Lock, and Pause. Linux kernel bug? +// key { [ F13 ] }; // should be keycode 93 or +// key { [ F13 ] }; // should be keycode 118 +// key { [ F14 ] }; // should be keycode 123 or +// key { [ F14 ] }; // should be keycode 119 +// key { [ F15 ] }; // should be keycode 127 or +// key { [ F15 ] }; // should be keycode 120 +}; + +partial modifier_keys +xkb_symbols "laptop" { + + include "macintosh_vndr/apple(extended)" + + // The real numlock key on the iBook (shared with F5) works internally to + // the keyboard. It illuminates the Num_Lock led and locks the fn-key to + // type only the keypad keys on the letter keys (U=4, I=5, O=6, P=*, etc.). + // The key in the Num_lock position is engraved with Clear. + override key { [ Clear ] }; + // The key engraved Delete sends BKSP. To get Delete, use Shift-Delete + override key { [ BackSpace, Delete ] }; + // These keyboards only generate a when pressing fn+Alt. This makes + // it impossible to get to the third shift level on keys that are on + // the fn-keypad, so use the Enter key (right of ) for Mode_switch, + // and use fn+Enter (Apple's code for Menu) for KP_Enter. + replace key { [ ISO_Level3_Shift ] }; + modifier_map Mod5 { ISO_Level3_Shift }; + // Linux kernel bug with Menu on macs means this doesn't work yet +// replace key { [ KP_Enter ] }; // should be keycode 117 +}; + +partial modifier_keys +xkb_symbols "laptop_bad_switch" { + // Kept for backward compatibility + include "macintosh_vndr/apple(laptop)" +}; + +// Long Aluminium Keyboards +partial function_keys +xkb_symbols "alukbd" { + // The base is a inet PC keyboard + include "pc" + + // Additional Fxx keys + key { [ F13 ] }; + key { [ F14 ] }; + key { [ F15 ] }; + key { [ F16 ] }; + key { [ F17 ] }; + key { [ F18 ] }; + key { [ F19 ] }; + + // On aluminium keyboards, Num_Lock is replace by Clear + replace key { [ Clear ] }; + // CAPS key is always Caps_Lock, even for JIS keyboards + replace key { [ Caps_Lock ] }; + + // F1..F12 are multimedia keys when used with the 'Fn' key + // Make those multimedia actions available via ISO_Level3_Shift too, + // it is useful when the Fn key is remapped to something else (e.g. Insert) + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86KbdBrightnessDown, NoSymbol, XF86_Switch_VT_1 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86KbdBrightnessUp, NoSymbol, XF86_Switch_VT_2 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_3 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_4 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_5 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, NoSymbol, NoSymbol, XF86_Switch_VT_6 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioPrev, NoSymbol, XF86_Switch_VT_7 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioPlay, NoSymbol, XF86_Switch_VT_8 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioNext, NoSymbol, XF86_Switch_VT_9 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioMute, NoSymbol, XF86_Switch_VT_10 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioLowerVolume, NoSymbol, XF86_Switch_VT_11 ] + }; + key { + type= "FOUR_LEVEL_X", + symbols[Group1]= [ NoSymbol, XF86AudioRaiseVolume, NoSymbol, XF86_Switch_VT_12 ] + }; +}; + +// Aluminium Keyboard: make F13, F14, F15 PC-ish (Print, Scroll_Lock, Pause) +partial function_keys keypad_keys +xkb_symbols "alupckeys" { + key { + type= "PC_ALT_LEVEL2", + symbols[Group1]= [ Print, Sys_Req ] + }; + key { [ Scroll_Lock ] }; + key { + type= "PC_CONTROL_LEVEL2", + symbols[Group1]= [ Pause, Break ] + }; + override key { [ Num_Lock, Pointer_EnableKeys ] }; +}; diff --git a/xorg-server/xkeyboard-config/types/extra b/xorg-server/xkeyboard-config/types/extra index 06b1fec78..465796b53 100644 --- a/xorg-server/xkeyboard-config/types/extra +++ b/xorg-server/xkeyboard-config/types/extra @@ -1,183 +1,161 @@ -partial default xkb_types "default" { - // Definition for a key type used for the czech keymap, for instance. - // Defines style a with four level shift. It is similar to 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"; - }; - - // Another four level keypad variant - // First two levels are controled by NumLock (with active Shift-ing like - // in KEYPAD). LevelThree overrides this mode, with two additional - // Shift-ed levels - // NumLock state is intentionnaly ignored when LevelThree is active - 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 Shift-ed 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"; - }; - -// Special type for keys used in Serbian Latin Unicode map -// 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; etc) - - 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"; - }; - -// type for e.g. german ssharp which is capitalized 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 at the beginning of sentences -// or nouns (nouns have a captial letter at the beginning in german). -// The ssharp key, to the right of the zero key, takes this into -// account and has a questionmark mapped on 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"; - }; -}; - -// This enables the four level shifting also for the keypad, -// but levels 1 and 2, and 3 and 4 are swapped on Mac keypads. -partial xkb_types "mac_keypad" { - virtual_modifiers LevelThree; - - type "FOUR_LEVEL_KEYPAD" { - modifiers = Shift+NumLock+LevelThree; - map[None] = Level2; - map[Shift] = Level1; - map[NumLock] = Level1; - map[Shift+NumLock] = Level2; - map[LevelThree] = Level4; - map[Shift+LevelThree] = Level3; - map[NumLock+LevelThree] = Level3; - map[Shift+NumLock+LevelThree] = Level4; - level_name[Level2] = "Base"; - level_name[Level1] = "Number"; - level_name[Level4] = "Alt Base"; - level_name[Level3] = "Alt Number"; - }; -}; +partial default xkb_types "default" { + // Definition for a key type used for the czech keymap, for instance. + // Defines style a with four level shift. It is similar to 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"; + }; + + // Another four level keypad variant + // First two levels are controled by NumLock (with active Shift-ing like + // in KEYPAD). LevelThree overrides this mode, with two additional + // Shift-ed levels + // NumLock state is intentionnaly ignored when LevelThree is active + 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 Shift-ed 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"; + }; + +// Special type for keys used in Serbian Latin Unicode map +// 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; etc) + + 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"; + }; + +// type for e.g. german ssharp which is capitalized 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 at the beginning of sentences +// or nouns (nouns have a captial letter at the beginning in german). +// The ssharp key, to the right of the zero key, takes this into +// account and has a questionmark mapped on 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"; + }; +}; diff --git a/xorg-server/xkeyboard-config/types/numpad b/xorg-server/xkeyboard-config/types/numpad index 82c22a917..7888d7db1 100644 --- a/xorg-server/xkeyboard-config/types/numpad +++ b/xorg-server/xkeyboard-config/types/numpad @@ -1,71 +1,67 @@ -partial default xkb_types "pc" { - type "KEYPAD" { - modifiers = Shift+NumLock; - map[None] = Level1; - map[Shift] = Level2; - map[NumLock] = Level2; - map[Shift+NumLock] = Level1; - level_name[Level1] = "Base"; - level_name[Level2] = "Number"; - }; - include "extra(keypad)" -}; - -// On Mac keypads, level 1 and 2 are swapped -partial xkb_types "mac" { - type "KEYPAD" { - modifiers = Shift+NumLock; - map[None] = Level2; - map[Shift] = Level1; - map[NumLock] = Level1; - map[Shift+NumLock] = Level2; - level_name[Level2] = "Base"; - level_name[Level1] = "Number"; - }; - include "extra(mac_keypad)" -}; - -partial xkb_types "microsoft" { - type "KEYPAD" { - modifiers = Shift+NumLock; - map[None] = Level1; - preserve[Shift] = Shift; - map[NumLock] = Level2; - level_name[Level1] = "Base"; - level_name[Level2] = "Number"; - }; - include "extra(keypad)" -}; - -// Swiss-German style numeric keypad: Shift and NumLock operates as -// two independent modifiers; however, since we want shift state for -// the cursor keys, only three levels are used from the key mappings. -// Closest type is actually FOUR_LEVEL_X, but most numpad layouts uses -// FOUR_LEVEL_MIXED_KEYPAD so that's the one we are going to override. -partial xkb_types "shift3" { - type "FOUR_LEVEL_MIXED_KEYPAD" { - modifiers = Shift+NumLock+Control+Alt; - - // NumLock Off => navigate using cursor keys - map[None] = Level1; - - // NumLock Off + Shift pressed => select using cursor keys - preserve[Shift] = Shift; - - // NumLock On => decimal digits - map[NumLock] = Level2; - - // NumLock On + Shift pressed => auxiliary symbols, - // e.g. hexadecimal digits - map[Shift+NumLock] = Level3; - - // Ctrl + Alt, regardless of NumLock and Shift => command keys - map[Control+Alt] = Level4; - - // reverse map from levels to modifiers - level_name[Level1] = "Base"; - level_name[Level2] = "NumLock"; - level_name[Level3] = "Shift+NumLock"; - level_name[Level4] = "Ctrl+Alt"; - }; -}; +partial default xkb_types "pc" { + type "KEYPAD" { + modifiers = Shift+NumLock; + map[None] = Level1; + map[Shift] = Level2; + map[NumLock] = Level2; + map[Shift+NumLock] = Level1; + level_name[Level1] = "Base"; + level_name[Level2] = "Number"; + }; + include "extra(keypad)" +}; + +// On Mac keypads, level 1 and 2 are swapped +partial xkb_types "mac" { + type "KEYPAD" { + modifiers = None; + map[None] = Level2; + level_name[Level2] = "Number"; + }; + include "extra(keypad)" +}; + +partial xkb_types "microsoft" { + type "KEYPAD" { + modifiers = Shift+NumLock; + map[None] = Level1; + preserve[Shift] = Shift; + map[NumLock] = Level2; + level_name[Level1] = "Base"; + level_name[Level2] = "Number"; + }; + include "extra(keypad)" +}; + +// Swiss-German style numeric keypad: Shift and NumLock operates as +// two independent modifiers; however, since we want shift state for +// the cursor keys, only three levels are used from the key mappings. +// Closest type is actually FOUR_LEVEL_X, but most numpad layouts uses +// FOUR_LEVEL_MIXED_KEYPAD so that's the one we are going to override. +partial xkb_types "shift3" { + type "FOUR_LEVEL_MIXED_KEYPAD" { + modifiers = Shift+NumLock+Control+Alt; + + // NumLock Off => navigate using cursor keys + map[None] = Level1; + + // NumLock Off + Shift pressed => select using cursor keys + preserve[Shift] = Shift; + + // NumLock On => decimal digits + map[NumLock] = Level2; + + // NumLock On + Shift pressed => auxiliary symbols, + // e.g. hexadecimal digits + map[Shift+NumLock] = Level3; + + // Ctrl + Alt, regardless of NumLock and Shift => command keys + map[Control+Alt] = Level4; + + // reverse map from levels to modifiers + level_name[Level1] = "Base"; + level_name[Level2] = "NumLock"; + level_name[Level3] = "Shift+NumLock"; + level_name[Level4] = "Ctrl+Alt"; + }; +}; -- cgit v1.2.3