diff --git a/usr/share/X11/xkb/symbols/us b/usr/share/X11/xkb/symbols/us index c732de6..0d26ccc 100644 --- a/usr/share/X11/xkb/symbols/us +++ b/usr/share/X11/xkb/symbols/us @@ -10,6 +10,9 @@ xkb_symbols "basic" { name[Group1]= "USA"; + include "us(redirecting)" + include "us(redirected)" + // Alphanumeric section key { [ grave, asciitilde ] }; key { [ 1, exclam ] }; @@ -44,9 +47,6 @@ xkb_symbols "basic" { key { [ f, F ] }; key { [ g, G ] }; key { [ h, H ] }; - key { [ j, J ] }; - key { [ k, K ] }; - key { [ l, L ] }; key { [ semicolon, colon ] }; key { [ apostrophe, quotedbl ] }; @@ -66,6 +66,27 @@ xkb_symbols "basic" { }; partial alphanumeric_keys +xkb_symbols "redirecting" { + key.type = "REDIRECTING"; + key.repeat = yes; + Redirect.clearmods = all; + + key { [ j, J ], + actions = [ NoAction(), NoAction(), Redirect(key=) ] }; + key { [ k, K ], + actions = [ NoAction(), NoAction(), Redirect(key=) ] }; + key { [ l, L ], + actions = [ NoAction(), NoAction(), Redirect(key=) ] }; +}; + +partial alphanumeric_keys +xkb_symbols "redirected" { + key { [ Left ] }; + key { [ Down ] }; + key { [ Right ] }; +}; + +partial alphanumeric_keys xkb_symbols "euro" { name[Group1]= "USA - With EuroSign on 5"; diff --git a/usr/share/X11/xkb/types/complete b/usr/share/X11/xkb/types/complete index 96d4fd5..f7271e1 100644 --- a/usr/share/X11/xkb/types/complete +++ b/usr/share/X11/xkb/types/complete @@ -14,4 +14,24 @@ default xkb_types "complete" { include "level5" include "extra" include "numpad" + include "complete(redirecting)" +}; + +xkb_types "redirecting" { + virtual_modifiers LevelThree; + + type "REDIRECTING" { + modifiers = Shift+Lock+LevelThree+Control; + map[None] = Level1; + map[Shift] = Level2; + map[Control] = Level4; + + map[Lock] = Level2; + map[Lock+Shift] = Level2; + map[Lock+Control] = Level3; + + level_name[Level1] = "Base"; + level_name[Level2] = "Shift"; + level_name[Level3] = "Control"; + }; };