summaryrefslogtreecommitdiff
path: root/symbols
diff options
context:
space:
mode:
authorStephan Hilb <stephan@ecshi.net>2012-12-02 16:52:54 +0100
committerSergey V. Udaltsov <svu@gnome.org>2012-12-02 19:25:50 +0000
commit05dcc6db64cd7425aea6d22efd6a3ecf34dbddd2 (patch)
tree5b1f5a8f4540e262885d761fd89c86e852427bef /symbols
parent0be23e0774bebdaa9766ddd7a1f3cf088d079bf0 (diff)
downloadxkeyboard-config-05dcc6db64cd7425aea6d22efd6a3ecf34dbddd2.tar.gz
Always use fake keycode bindings for level3 and level5
With this patch the real modifiers get bound to a virtual modifier only through fake keycodes, which accounts for both the case where a key gets bound to a different modifier by the first layout (and thus the second layout loses its modifier behaviour) and the case where two virtual modifiers would get bound to the same keycode. see bug report #50935
Diffstat (limited to 'symbols')
-rw-r--r--symbols/level342
-rw-r--r--symbols/level526
2 files changed, 45 insertions, 23 deletions
diff --git a/symbols/level3 b/symbols/level3
index 9d49555..8bf83bb 100644
--- a/symbols/level3
+++ b/symbols/level3
@@ -2,6 +2,19 @@
// the third shift level can be reached
//
+// Ensure a mapping to a real modifier for LevelThree
+partial modifier_keys
+xkb_symbols "modifier_mapping" {
+ key.type[Group1] = "ONE_LEVEL";
+
+ replace key <LVL3> {
+ vmods = LevelThree,
+ symbols[Group1] = [ ISO_Level3_Shift ],
+ actions[Group1] = [ SetMods(modifiers=LevelThree) ]
+ };
+ modifier_map Mod5 { <LVL3> };
+};
+
// the default behavior is for the right Alt key (AltGr) to generate the
// third engraved symbol
default partial modifier_keys
@@ -10,7 +23,7 @@ xkb_symbols "ralt_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
// Right Alt key never chooses 3rd level.
@@ -38,6 +51,7 @@ xkb_symbols "ralt_switch_multikey" {
type[Group1]="TWO_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift, Multi_key ]
};
+ include "level3(modifier_mapping)"
};
// special case or right Alt switch - for use with grp:alts_toggle
@@ -55,7 +69,7 @@ xkb_symbols "ralt_switch_for_alts_toggle" {
symbols[Group1] = [ ISO_Level3_Shift, ISO_Next_Group ],
virtualMods= AltGr
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
// using the level(alt_switch) map, either Alt key temporarily chooses
@@ -72,7 +86,7 @@ xkb_symbols "lalt_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
- modifier_map Mod5 { <LALT> };
+ include "level3(modifier_mapping)"
};
// using the level(switch) map, the right Control key temporarily
@@ -83,7 +97,7 @@ xkb_symbols "switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
// using the level(menu_switch) map, the Menu key temporarily
@@ -94,7 +108,7 @@ xkb_symbols "menu_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
// using the level3(win_switch) map, the either Windows' logo key
@@ -113,7 +127,7 @@ xkb_symbols "lwin_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
// using the level(rwin_switch) map, the right Windows' logo key
@@ -126,7 +140,7 @@ xkb_symbols "rwin_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
// using the level3(enter_switch) map, the Enter key on the keypad
@@ -138,7 +152,7 @@ xkb_symbols "enter_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
partial modifier_keys
@@ -147,7 +161,7 @@ xkb_symbols "caps_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
partial modifier_keys
@@ -156,7 +170,7 @@ xkb_symbols "bksl_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
partial modifier_keys
@@ -165,7 +179,7 @@ xkb_symbols "lsgt_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
partial modifier_keys
@@ -174,7 +188,7 @@ xkb_symbols "caps_switch_latch" {
type[Group1]="THREE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
partial modifier_keys
@@ -183,7 +197,7 @@ xkb_symbols "bksl_switch_latch" {
type[Group1]="THREE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
partial modifier_keys
@@ -192,5 +206,5 @@ xkb_symbols "lsgt_switch_latch" {
type[Group1]="THREE_LEVEL",
symbols[Group1] = [ ISO_Level3_Shift, ISO_Level3_Shift, ISO_Level3_Latch ]
};
- modifier_map Mod5 { ISO_Level3_Shift };
+ include "level3(modifier_mapping)"
};
diff --git a/symbols/level5 b/symbols/level5
index ce219b5..f5ecb62 100644
--- a/symbols/level5
+++ b/symbols/level5
@@ -2,6 +2,19 @@
// the third shift level can be reached
//
+// Ensure a mapping to a real modifier for LevelFive
+partial modifier_keys
+xkb_symbols "modifier_mapping" {
+ key.type[Group1] = "ONE_LEVEL";
+
+ replace key <MDSW> {
+ vmods = LevelFive,
+ symbols[Group1] = [ ISO_Level5_Shift ],
+ actions[Group1] = [ SetMods(modifiers=LevelFive) ]
+ };
+ modifier_map Mod3 { <MDSW> };
+};
+
// using the level(switch) map, the right Control key temporarily
// chooses the fifth shift level (until it is released).
partial modifier_keys
@@ -10,7 +23,7 @@ xkb_symbols "rctrl_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
- modifier_map Mod3 { ISO_Level5_Shift };
+ include "level5(modifier_mapping)"
};
partial modifier_keys
@@ -19,7 +32,7 @@ xkb_symbols "lsgt_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
- modifier_map Mod3 { ISO_Level5_Shift };
+ include "level5(modifier_mapping)"
};
partial modifier_keys
@@ -28,7 +41,7 @@ xkb_symbols "ralt_switch" {
type[Group1]="ONE_LEVEL",
symbols[Group1] = [ ISO_Level5_Shift ]
};
- modifier_map Mod3 { ISO_Level5_Shift };
+ include "level5(modifier_mapping)"
};
@@ -43,12 +56,7 @@ xkb_symbols "lock" {
// See also: compat/level5(level5_lock)
key.type[Group1] = "ONE_LEVEL";
- replace key <MDSW> {
- vmods = LevelFive,
- symbols[Group1] = [ ISO_Level5_Shift ],
- actions[Group1] = [ SetMods(modifiers=LevelFive) ]
- };
- modifier_map Mod3 { <MDSW> };
+ include "level5(modifier_mapping)"
replace key <HYPR> {
vmods = NumLock,