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";
+ };
};