I wasn't registered yet when I tried to send the previous email and I did resend it after registration I forgot to add the attachment.
Here it is.
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 <TLDE> { [ grave, asciitilde ] }; key <AE01> { [ 1, exclam ] }; @@ -44,9 +47,6 @@ xkb_symbols "basic" { key <AC04> { [ f, F ] }; key <AC05> { [ g, G ] }; key <AC06> { [ h, H ] }; - key <AC07> { [ j, J ] }; - key <AC08> { [ k, K ] }; - key <AC09> { [ l, L ] }; key <AC10> { [ semicolon, colon ] }; key <AC11> { [ 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 <AC07> { [ j, J ], + actions = [ NoAction(), NoAction(), Redirect(key=<I155>) ] }; + key <AC08> { [ k, K ], + actions = [ NoAction(), NoAction(), Redirect(key=<I156>) ] }; + key <AC09> { [ l, L ], + actions = [ NoAction(), NoAction(), Redirect(key=<I157>) ] }; +}; + +partial alphanumeric_keys +xkb_symbols "redirected" { + key <I155> { [ Left ] }; + key <I156> { [ Down ] }; + key <I157> { [ 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"; + }; };