* [PATCH v2] Add Backtab keysym and update keymaps to use it for Shift+Tab
@ 2026-02-17 17:28 Nicolas Pitre
2026-02-20 13:02 ` Alexey Gladkov
0 siblings, 1 reply; 2+ messages in thread
From: Nicolas Pitre @ 2026-02-17 17:28 UTC (permalink / raw)
To: Alexey Gladkov; +Cc: kbd
Add a new Backtab keysym (KT_FN index 30) that produces the standard
backtab escape sequence \e[Z. This replaces F246 which was unused.
Update all keymaps to use Backtab for Shift+Tab instead of Meta_Tab.
In most cases the Meta_Tab binding already existed for Alt+Tab; where
it was missing, it has been added.
This change affects keymaps across all architectures: i386, amiga,
atari, mac, sun, and pine.
Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
diff --git a/data/keymaps/amiga/amiga-de.map b/data/keymaps/amiga/amiga-de.map
index d9b62e0..f1b18a4 100644
--- a/data/keymaps/amiga/amiga-de.map
+++ b/data/keymaps/amiga/amiga-de.map
@@ -212,7 +212,7 @@ keycode 64 = space space
control keycode 64 = nul
alt keycode 64 = Meta_space
keycode 65 = BackSpace
-keycode 66 = Tab Meta_Tab
+keycode 66 = Tab Backtab
alt keycode 66 = Meta_Tab
keycode 67 = Return
keycode 68 = Return
diff --git a/data/keymaps/amiga/amiga-us.map b/data/keymaps/amiga/amiga-us.map
index 8fb5da4..ac0c5d2 100644
--- a/data/keymaps/amiga/amiga-us.map
+++ b/data/keymaps/amiga/amiga-us.map
@@ -159,7 +159,7 @@ keycode 64 = space space
control keycode 64 = nul
alt keycode 64 = Meta_space
keycode 65 = Delete Delete Delete Delete Delete Meta_Delete Delete
-keycode 66 = Tab Meta_Tab
+keycode 66 = Tab Backtab
alt keycode 66 = Meta_Tab
keycode 67 = KP_Enter
keycode 68 = Return
diff --git a/data/keymaps/atari/atari-se.map b/data/keymaps/atari/atari-se.map
index 110a7fe..345d5bf 100644
--- a/data/keymaps/atari/atari-se.map
+++ b/data/keymaps/atari/atari-se.map
@@ -67,7 +67,7 @@ keycode 13 = eacute Eacute
alt keycode 13 = Meta_equal
shift alt keycode 13 = Meta_plus
keycode 14 = Delete Delete Delete Delete Delete Delete Delete Delete Meta_Delete Meta_Delete Delete Delete Meta_Delete Meta_Delete Delete Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
shift alt keycode 15 = Meta_Tab
keycode 16 = +q +Q
diff --git a/data/keymaps/atari/atari-uk-falcon.map b/data/keymaps/atari/atari-uk-falcon.map
index 8d1242e..cecc97e 100644
--- a/data/keymaps/atari/atari-uk-falcon.map
+++ b/data/keymaps/atari/atari-uk-falcon.map
@@ -60,7 +60,7 @@ keycode 13 = equal plus
alt keycode 13 = Meta_equal
shift alt keycode 13 = Meta_plus
keycode 14 = BackSpace BackSpace BackSpace BackSpace BackSpace BackSpace BackSpace BackSpace Meta_BackSpace Meta_BackSpace BackSpace BackSpace Meta_BackSpace Meta_BackSpace BackSpace BackSpace
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
shift alt keycode 15 = Meta_Tab
keycode 16 = +q +Q
diff --git a/data/keymaps/atari/atari-us.map b/data/keymaps/atari/atari-us.map
index aea6a2b..a725c12 100644
--- a/data/keymaps/atari/atari-us.map
+++ b/data/keymaps/atari/atari-us.map
@@ -60,7 +60,7 @@ keycode 14 = BackSpace BackSpace
shift alt keycode 14 = Meta_BackSpace
control alt keycode 14 = Meta_BackSpace
shift control alt keycode 14 = Meta_BackSpace
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
shift alt keycode 15 = Meta_Tab
keycode 16 = +q +Q +q Control_q
diff --git a/data/keymaps/i386/azerty/azerty.map b/data/keymaps/i386/azerty/azerty.map
index f38fa62..91fcd1b 100644
--- a/data/keymaps/i386/azerty/azerty.map
+++ b/data/keymaps/i386/azerty/azerty.map
@@ -32,7 +32,8 @@ keycode 13 = minus underscore backslash
control keycode 13 = Control_underscore
control shift keycode 13 = Control_underscore
keycode 14 = Delete Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = dead_circumflex dead_diaeresis bracketleft
control keycode 26 = Escape
alt keycode 26 = bracketleft
diff --git a/data/keymaps/i386/azerty/be-latin1.map b/data/keymaps/i386/azerty/be-latin1.map
index b573944..aad78b5 100644
--- a/data/keymaps/i386/azerty/be-latin1.map
+++ b/data/keymaps/i386/azerty/be-latin1.map
@@ -39,7 +39,8 @@ keycode 12 = parenright degree
keycode 13 = minus underscore
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = dead_circumflex dead_diaeresis bracketleft
control keycode 26 = Escape
alt keycode 26 = Meta_bracketleft
diff --git a/data/keymaps/i386/azerty/fr-latin1.map b/data/keymaps/i386/azerty/fr-latin1.map
index d9cbbdb..48ec303 100644
--- a/data/keymaps/i386/azerty/fr-latin1.map
+++ b/data/keymaps/i386/azerty/fr-latin1.map
@@ -39,7 +39,7 @@ keycode 13 = equal plus braceright
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 = dead_circumflex dead_diaeresis
control keycode 26 = Escape
diff --git a/data/keymaps/i386/azerty/fr-latin9.map b/data/keymaps/i386/azerty/fr-latin9.map
index 4d0309d..06f3ecc 100644
--- a/data/keymaps/i386/azerty/fr-latin9.map
+++ b/data/keymaps/i386/azerty/fr-latin9.map
@@ -169,7 +169,7 @@ keycode 14 = Delete BackSpace
altgr control keycode 14 = KeyboardSignal
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
control keycode 15 = Meta_Tab
alt keycode 15 = Last_Console
diff --git a/data/keymaps/i386/azerty/fr-pc.map b/data/keymaps/i386/azerty/fr-pc.map
index 365699c..ccaf15a 100644
--- a/data/keymaps/i386/azerty/fr-pc.map
+++ b/data/keymaps/i386/azerty/fr-pc.map
@@ -44,7 +44,7 @@ keycode 13 = equal plus braceright
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 = dead_circumflex dead_diaeresis
control keycode 26 = Escape
diff --git a/data/keymaps/i386/azerty/fr.map b/data/keymaps/i386/azerty/fr.map
index 209d6b3..5b636fe 100644
--- a/data/keymaps/i386/azerty/fr.map
+++ b/data/keymaps/i386/azerty/fr.map
@@ -39,7 +39,7 @@ keycode 13 = equal plus braceright
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 = asciicircum less
control keycode 26 = Escape
diff --git a/data/keymaps/i386/azerty/wangbe2.map b/data/keymaps/i386/azerty/wangbe2.map
index 2562c36..6e398ca 100644
--- a/data/keymaps/i386/azerty/wangbe2.map
+++ b/data/keymaps/i386/azerty/wangbe2.map
@@ -81,7 +81,7 @@ keycode 13 = minus underscore backslash \
Meta_minus Meta_underscore Meta_backslash
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 = dead_circumflex dead_diaeresis bracketleft Escape
Control AltGr keycode 26 = Escape
diff --git a/data/keymaps/i386/carpalx/carpalx.map b/data/keymaps/i386/carpalx/carpalx.map
index 9f502c0..1dd9a69 100644
--- a/data/keymaps/i386/carpalx/carpalx.map
+++ b/data/keymaps/i386/carpalx/carpalx.map
@@ -24,7 +24,8 @@ keycode 12 = minus underscore backslash Control_undersc
keycode 13 = equal plus
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 16 = q
keycode 17 = g
keycode 18 = m
diff --git a/data/keymaps/i386/dvorak/dvorak-la.map b/data/keymaps/i386/dvorak/dvorak-la.map
index ec23b5a..91f3910 100644
--- a/data/keymaps/i386/dvorak/dvorak-la.map
+++ b/data/keymaps/i386/dvorak/dvorak-la.map
@@ -28,7 +28,8 @@ keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 16 = period colon
keycode 17 = comma semicolon
keycode 18 = +ntilde +Ntilde
diff --git a/data/keymaps/i386/dvorak/dvorak-no.map b/data/keymaps/i386/dvorak/dvorak-no.map
index ff11870..107e4da 100644
--- a/data/keymaps/i386/dvorak/dvorak-no.map
+++ b/data/keymaps/i386/dvorak/dvorak-no.map
@@ -54,7 +54,8 @@ strings as usual
keycode 14 = Delete
alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 16 = +aring +Aring
keycode 17 = comma semicolon
keycode 18 = period colon
diff --git a/data/keymaps/i386/dvorak/dvorak-ru.map b/data/keymaps/i386/dvorak/dvorak-ru.map
index 17cdf6a..8693f50 100644
--- a/data/keymaps/i386/dvorak/dvorak-ru.map
+++ b/data/keymaps/i386/dvorak/dvorak-ru.map
@@ -67,7 +67,8 @@ keycode 13 = bracketright braceright equal plus
# altgr control keycode 13 = Control_plus
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
altgr shift keycode 15 = Meta_Tab
keycode 16 = apostrophe quotedbl
control keycode 16 = Control_g
diff --git a/data/keymaps/i386/dvorak/dvorak-uk.map b/data/keymaps/i386/dvorak/dvorak-uk.map
index e4ff189..ed262ee 100644
--- a/data/keymaps/i386/dvorak/dvorak-uk.map
+++ b/data/keymaps/i386/dvorak/dvorak-uk.map
@@ -26,7 +26,8 @@ keycode 13 = bracketright braceright asciitilde Control_bracketr
keycode 14 = Delete
control keycode 14 = Control_underscore
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 16 = apostrophe at
control keycode 16 = Control_g
shift control keycode 16 = nul
diff --git a/data/keymaps/i386/dvorak/dvorak-ukp.map b/data/keymaps/i386/dvorak/dvorak-ukp.map
index d29fb3e..147f889 100644
--- a/data/keymaps/i386/dvorak/dvorak-ukp.map
+++ b/data/keymaps/i386/dvorak/dvorak-ukp.map
@@ -26,7 +26,8 @@ keycode 13 = equal plus
keycode 14 = Delete
control keycode 14 = Control_underscore
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 16 = slash question
control keycode 16 = Delete
keycode 17 = comma less
diff --git a/data/keymaps/i386/dvorak/dvorak.map b/data/keymaps/i386/dvorak/dvorak.map
index 396db6d..22d31f8 100644
--- a/data/keymaps/i386/dvorak/dvorak.map
+++ b/data/keymaps/i386/dvorak/dvorak.map
@@ -22,7 +22,8 @@ keycode 12 = bracketleft braceleft
keycode 13 = bracketright braceright asciitilde Control_bracketright
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 16 = apostrophe quotedbl
control keycode 16 = Control_g
keycode 17 = comma less
diff --git a/data/keymaps/i386/fgGIod/tr_f-latin5.map b/data/keymaps/i386/fgGIod/tr_f-latin5.map
index 6be4105..016baf2 100644
--- a/data/keymaps/i386/fgGIod/tr_f-latin5.map
+++ b/data/keymaps/i386/fgGIod/tr_f-latin5.map
@@ -53,7 +53,7 @@ keycode 13 = minus underscore
alt keycode 13 = Meta_equal
keycode 14 = BackSpace Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 16 = +f +F +q +Q
keycode 17 = +g +G +w +W
diff --git a/data/keymaps/i386/fgGIod/trf.map b/data/keymaps/i386/fgGIod/trf.map
index 5ff8e80..0fbdf96 100644
--- a/data/keymaps/i386/fgGIod/trf.map
+++ b/data/keymaps/i386/fgGIod/trf.map
@@ -48,7 +48,7 @@ keycode 13 = q
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 16 = f
keycode 17 = g
diff --git a/data/keymaps/i386/hcesar/hcesar.map b/data/keymaps/i386/hcesar/hcesar.map
index 439bb33..9e8125c 100644
--- a/data/keymaps/i386/hcesar/hcesar.map
+++ b/data/keymaps/i386/hcesar/hcesar.map
@@ -38,7 +38,8 @@ keycode 13 = guillemotleft guillemotright
alt keycode 13 = Meta_equal
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 16 = minus underscore
keycode 17 = h
keycode 18 = c
diff --git a/data/keymaps/i386/include/linux-keys-bare.inc b/data/keymaps/i386/include/linux-keys-bare.inc
index 64a4ee9..30379aa 100644
--- a/data/keymaps/i386/include/linux-keys-bare.inc
+++ b/data/keymaps/i386/include/linux-keys-bare.inc
@@ -88,6 +88,13 @@ control alt keycode 68 = Console_10
control alt keycode 87 = Console_11
control alt keycode 88 = Console_12
+#
+# Tab and Backtab
+#
+keycode 15 = Tab
+shift keycode 15 = Backtab
+alt keycode 15 = Meta_Tab
+
#
# Keypad keys
#
diff --git a/data/keymaps/i386/neo/adnw.map b/data/keymaps/i386/neo/adnw.map
index 80a1c27..2b40971 100644
--- a/data/keymaps/i386/neo/adnw.map
+++ b/data/keymaps/i386/neo/adnw.map
@@ -22,8 +22,8 @@ alt_is_meta
shiftr alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shiftl keycode 15 = Meta_Tab
- shiftr keycode 15 = Meta_Tab
+ shiftl keycode 15 = Backtab
+ shiftr keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 28 = Return
diff --git a/data/keymaps/i386/neo/bone.map b/data/keymaps/i386/neo/bone.map
index 7abab02..eeffbf3 100644
--- a/data/keymaps/i386/neo/bone.map
+++ b/data/keymaps/i386/neo/bone.map
@@ -25,8 +25,8 @@ alt_is_meta
shiftr alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shiftl keycode 15 = Meta_Tab
- shiftr keycode 15 = Meta_Tab
+ shiftl keycode 15 = Backtab
+ shiftr keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 28 = Return
diff --git a/data/keymaps/i386/neo/koy.map b/data/keymaps/i386/neo/koy.map
index 27db41e..229c529 100644
--- a/data/keymaps/i386/neo/koy.map
+++ b/data/keymaps/i386/neo/koy.map
@@ -22,8 +22,8 @@ alt_is_meta
shiftr alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shiftl keycode 15 = Meta_Tab
- shiftr keycode 15 = Meta_Tab
+ shiftl keycode 15 = Backtab
+ shiftr keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 28 = Return
diff --git a/data/keymaps/i386/neo/neo.map b/data/keymaps/i386/neo/neo.map
index c42568b..e855954 100644
--- a/data/keymaps/i386/neo/neo.map
+++ b/data/keymaps/i386/neo/neo.map
@@ -41,8 +41,8 @@ strings as usual
shiftr alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shiftl keycode 15 = Meta_Tab
- shiftr keycode 15 = Meta_Tab
+ shiftl keycode 15 = Backtab
+ shiftr keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 28 = Return
diff --git a/data/keymaps/i386/neo/neoqwertz.map b/data/keymaps/i386/neo/neoqwertz.map
index 7f84ba3..85ed5e3 100644
--- a/data/keymaps/i386/neo/neoqwertz.map
+++ b/data/keymaps/i386/neo/neoqwertz.map
@@ -25,8 +25,8 @@ alt_is_meta
shiftr alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shiftl keycode 15 = Meta_Tab
- shiftr keycode 15 = Meta_Tab
+ shiftl keycode 15 = Backtab
+ shiftr keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 28 = Return
diff --git a/data/keymaps/i386/qwerty/bg-cp1251.map b/data/keymaps/i386/qwerty/bg-cp1251.map
index 0f13ba2..14f154f 100644
--- a/data/keymaps/i386/qwerty/bg-cp1251.map
+++ b/data/keymaps/i386/qwerty/bg-cp1251.map
@@ -53,7 +53,7 @@ keycode 14 = Delete Delete Delete Delete
altgr control keycode 14 = BackSpace
altgr alt keycode 14 = Meta_Delete
keycode 15 = Tab Tab Tab Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
alt keycode 15 = Meta_Tab
altgr alt keycode 15 = Meta_Tab
keycode 16 = q Q +255 +223 \
diff --git a/data/keymaps/i386/qwerty/bg_bds-cp1251.map b/data/keymaps/i386/qwerty/bg_bds-cp1251.map
index 343441a..1bd7188 100644
--- a/data/keymaps/i386/qwerty/bg_bds-cp1251.map
+++ b/data/keymaps/i386/qwerty/bg_bds-cp1251.map
@@ -88,7 +88,7 @@ keycode 14 = Delete
altgr control keycode 14 = BackSpace
shift altgr control keycode 14 = BackSpace
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 16 = +q
shift keycode 16 = +Q
diff --git a/data/keymaps/i386/qwerty/br-abnt.map b/data/keymaps/i386/qwerty/br-abnt.map
index 6477869..f9aae9a 100644
--- a/data/keymaps/i386/qwerty/br-abnt.map
+++ b/data/keymaps/i386/qwerty/br-abnt.map
@@ -43,7 +43,7 @@ keycode 13 = equal plus
keycode 14 = Delete Delete
control keycode 14 = BackSpace
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 16 = q
keycode 17 = w
diff --git a/data/keymaps/i386/qwerty/br-abnt2.map b/data/keymaps/i386/qwerty/br-abnt2.map
index 48eae1d..3f46259 100644
--- a/data/keymaps/i386/qwerty/br-abnt2.map
+++ b/data/keymaps/i386/qwerty/br-abnt2.map
@@ -39,7 +39,8 @@ keycode 13 = equal plus section
keycode 14 = Delete
control keycode 14 = BackSpace
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = dead_acute dead_grave
control keycode 26 = Escape
keycode 27 = bracketleft braceleft ordfeminine
diff --git a/data/keymaps/i386/qwerty/br-latin1-abnt2.map b/data/keymaps/i386/qwerty/br-latin1-abnt2.map
index 7b29274..b03605f 100644
--- a/data/keymaps/i386/qwerty/br-latin1-abnt2.map
+++ b/data/keymaps/i386/qwerty/br-latin1-abnt2.map
@@ -39,7 +39,8 @@ keycode 12 = minus underscore backslash Control_underscore Control_underscore
keycode 13 = equal plus section
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = dead_acute dead_grave
control keycode 26 = Escape
keycode 27 = bracketleft braceleft ordfeminine
diff --git a/data/keymaps/i386/qwerty/br-latin1-us.map b/data/keymaps/i386/qwerty/br-latin1-us.map
index 74d2aba..e577cf2 100644
--- a/data/keymaps/i386/qwerty/br-latin1-us.map
+++ b/data/keymaps/i386/qwerty/br-latin1-us.map
@@ -36,7 +36,8 @@ keycode 12 = minus underscore backslash Control_underscore Control_underscore
keycode 13 = equal plus section
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = bracketleft braceleft
control keycode 26 = Escape
keycode 27 = bracketright braceright asciitilde Control_bracketright
diff --git a/data/keymaps/i386/qwerty/by.map b/data/keymaps/i386/qwerty/by.map
index 15d44f4..4054bf4 100644
--- a/data/keymaps/i386/qwerty/by.map
+++ b/data/keymaps/i386/qwerty/by.map
@@ -92,7 +92,7 @@ keycode 14 = Delete Delete Delete \
Meta_Delete Meta_Delete Meta_Delete \
Delete Delete Delete \
Meta_Delete Meta_Delete Meta_Delete
-keycode 15 = Tab Meta_Tab Tab \
+keycode 15 = Tab Backtab Tab \
Meta_Tab Meta_Tab Meta_Tab \
Tab Tab Tab \
Meta_Tab Meta_Tab Meta_Tab \
diff --git a/data/keymaps/i386/qwerty/cf.map b/data/keymaps/i386/qwerty/cf.map
index 8f720f9..e747e10 100644
--- a/data/keymaps/i386/qwerty/cf.map
+++ b/data/keymaps/i386/qwerty/cf.map
@@ -58,7 +58,7 @@ keycode 13 = equal plus threequarters
keycode 14 = Delete Delete
control keycode 14 = BackSpace
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 = dead_circumflex dead_circumflex bracketleft
control keycode 26 = Escape
diff --git a/data/keymaps/i386/qwerty/cz-cp1250.map b/data/keymaps/i386/qwerty/cz-cp1250.map
index c281b95..64ba141 100644
--- a/data/keymaps/i386/qwerty/cz-cp1250.map
+++ b/data/keymaps/i386/qwerty/cz-cp1250.map
@@ -30,7 +30,7 @@ keycode 11 = zero parenright eacute zero VoidSymbol VoidSymbol VoidSymbol VoidS
keycode 12 = minus underscore equal percent Control_underscore Control_underscore Control_underscore Control_underscore Meta_minus Meta_minus Meta_minus Meta_minus
keycode 13 = equal plus dead_acute dead_circumflex VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_equal Meta_equal Meta_equal Meta_equal
keycode 14 = Delete Delete Delete Delete VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Delete Meta_Delete Meta_Delete Meta_Delete
-keycode 15 = Tab Meta_Tab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
+keycode 15 = Tab Backtab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
keycode 16 = q
keycode 17 = w
keycode 18 = e
diff --git a/data/keymaps/i386/qwerty/cz-lat2-prog.map b/data/keymaps/i386/qwerty/cz-lat2-prog.map
index 78b1d20..2ecdd4f 100644
--- a/data/keymaps/i386/qwerty/cz-lat2-prog.map
+++ b/data/keymaps/i386/qwerty/cz-lat2-prog.map
@@ -35,7 +35,7 @@ keycode 11 = zero parenright eacute zero VoidSymbol VoidSymbol VoidSymbol VoidS
keycode 12 = minus underscore minus underscore Control_underscore Control_underscore Control_underscore Control_underscore Meta_minus Meta_minus Meta_minus Meta_minus
keycode 13 = equal plus dead_acute dead_circumflex VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_equal Meta_equal Meta_equal Meta_equal
keycode 14 = Delete Delete Delete Delete VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Delete Meta_Delete Meta_Delete Meta_Delete
-keycode 15 = Tab Meta_Tab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
+keycode 15 = Tab Backtab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
keycode 16 = q
keycode 17 = w
keycode 18 = e
diff --git a/data/keymaps/i386/qwerty/cz-lat2.map b/data/keymaps/i386/qwerty/cz-lat2.map
index aa927fe..37b7b57 100644
--- a/data/keymaps/i386/qwerty/cz-lat2.map
+++ b/data/keymaps/i386/qwerty/cz-lat2.map
@@ -32,7 +32,7 @@ keycode 11 = zero parenright eacute zero VoidSymbol VoidSymbol VoidSymbol VoidS
keycode 12 = minus underscore equal percent Control_underscore Control_underscore Control_underscore Control_underscore Meta_minus Meta_minus Meta_minus Meta_minus
keycode 13 = equal plus dead_acute dead_circumflex VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_equal Meta_equal Meta_equal Meta_equal
keycode 14 = Delete Delete Delete Delete VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Delete Meta_Delete Meta_Delete Meta_Delete
-keycode 15 = Tab Meta_Tab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
+keycode 15 = Tab Backtab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
keycode 16 = q
keycode 17 = w
keycode 18 = e
diff --git a/data/keymaps/i386/qwerty/cz.map b/data/keymaps/i386/qwerty/cz.map
index cc02b12..df61a3c 100644
--- a/data/keymaps/i386/qwerty/cz.map
+++ b/data/keymaps/i386/qwerty/cz.map
@@ -326,7 +326,7 @@ keycode 14 = Delete Delete VoidSymbol VoidSymbol VoidSymbol \
Meta_Delete VoidSymbol VoidSymbol VoidSymbol \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
VoidSymbol VoidSymbol VoidSymbol
-keycode 15 = Tab Meta_Tab VoidSymbol VoidSymbol VoidSymbol \
+keycode 15 = Tab Backtab VoidSymbol VoidSymbol VoidSymbol \
VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
diff --git a/data/keymaps/i386/qwerty/defkeymap.map b/data/keymaps/i386/qwerty/defkeymap.map
index d54df9b..a1f3a6d 100644
--- a/data/keymaps/i386/qwerty/defkeymap.map
+++ b/data/keymaps/i386/qwerty/defkeymap.map
@@ -44,7 +44,7 @@ keycode 13 = equal plus
keycode 14 = Delete Delete
control keycode 14 = BackSpace
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 16 = q
keycode 17 = w
diff --git a/data/keymaps/i386/qwerty/defkeymap_V1.0.map b/data/keymaps/i386/qwerty/defkeymap_V1.0.map
index 29e6a4b..7892262 100644
--- a/data/keymaps/i386/qwerty/defkeymap_V1.0.map
+++ b/data/keymaps/i386/qwerty/defkeymap_V1.0.map
@@ -37,7 +37,7 @@ keycode 13 = equal plus
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 16 = q
keycode 17 = w
diff --git a/data/keymaps/i386/qwerty/dk-latin1.map b/data/keymaps/i386/qwerty/dk-latin1.map
index 1c32086..6fffef6 100644
--- a/data/keymaps/i386/qwerty/dk-latin1.map
+++ b/data/keymaps/i386/qwerty/dk-latin1.map
@@ -45,7 +45,7 @@ keycode 13 = dead_acute dead_grave bar
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 = +aring +Aring
control keycode 26 = Escape
diff --git a/data/keymaps/i386/qwerty/dk.map b/data/keymaps/i386/qwerty/dk.map
index 01a40d8..b8910a7 100644
--- a/data/keymaps/i386/qwerty/dk.map
+++ b/data/keymaps/i386/qwerty/dk.map
@@ -45,7 +45,7 @@ keycode 13 = acute grave bar
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 = +aring +Aring
control keycode 26 = Escape
diff --git a/data/keymaps/i386/qwerty/emacs.map b/data/keymaps/i386/qwerty/emacs.map
index c04a7bf..19d6a59 100644
--- a/data/keymaps/i386/qwerty/emacs.map
+++ b/data/keymaps/i386/qwerty/emacs.map
@@ -42,7 +42,8 @@ keycode 12 = minus underscore backslash Control_undersc
keycode 13 = equal plus
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = bracketleft braceleft
control keycode 26 = Escape
keycode 27 = bracketright braceright
diff --git a/data/keymaps/i386/qwerty/emacs2.map b/data/keymaps/i386/qwerty/emacs2.map
index f17fea2..3a5a7f1 100644
--- a/data/keymaps/i386/qwerty/emacs2.map
+++ b/data/keymaps/i386/qwerty/emacs2.map
@@ -31,7 +31,8 @@ keycode 12 = minus underscore backslash Control_undersc
keycode 13 = equal plus
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = bracketleft braceleft
control keycode 26 = Escape
keycode 27 = bracketright braceright
diff --git a/data/keymaps/i386/qwerty/es-cp850.map b/data/keymaps/i386/qwerty/es-cp850.map
index 5764220..5065fc6 100644
--- a/data/keymaps/i386/qwerty/es-cp850.map
+++ b/data/keymaps/i386/qwerty/es-cp850.map
@@ -34,7 +34,8 @@ keycode 13 = 0255 0250 asciitilde
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete Delete Control_underscore Delete Meta_Delete Delete Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = dead_grave dead_circumflex bracketleft Escape VoidSymbol Meta_bracketleft
keycode 27 = plus asterisk bracketright Control_bracketright VoidSymbol Meta_bracketright
keycode 28 = Return
diff --git a/data/keymaps/i386/qwerty/es.map b/data/keymaps/i386/qwerty/es.map
index c6e79d6..ba0eaeb 100644
--- a/data/keymaps/i386/qwerty/es.map
+++ b/data/keymaps/i386/qwerty/es.map
@@ -50,7 +50,7 @@ keycode 14 = Delete
control keycode 14 = Control_underscore
alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
alt keycode 15 = Meta_Tab
!keycode 26 = dead_grave asciicircum bracketleft
keycode 26 = dead_grave dead_circumflex bracketleft
diff --git a/data/keymaps/i386/qwerty/et.map b/data/keymaps/i386/qwerty/et.map
index 4c9bbcb..ea58efa 100644
--- a/data/keymaps/i386/qwerty/et.map
+++ b/data/keymaps/i386/qwerty/et.map
@@ -36,7 +36,8 @@ keycode 12 = plus question backslash backslash \
keycode 13 = dead_acute dead_grave dead_acute dead_grave
keycode 14 = Delete Delete
control keycode 14 = BackSpace
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
+ alt keycode 15 = Meta_Tab
keycode 18 = +e +E euro euro Control_e Control_e
keycode 26 = +udiaeresis +Udiaeresis +udiaeresis +Udiaeresis Escape
keycode 27 = +otilde +Otilde section section Control_bracketright
diff --git a/data/keymaps/i386/qwerty/fi.map b/data/keymaps/i386/qwerty/fi.map
index e1325cf..2f23925 100644
--- a/data/keymaps/i386/qwerty/fi.map
+++ b/data/keymaps/i386/qwerty/fi.map
@@ -87,7 +87,8 @@ keycode 13 = dead_acute dead_grave dead_cedilla
altgr shift keycode 13 = dead_kogonek
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = +aring +Aring U+0153
control keycode 26 = Escape
alt keycode 26 = Meta_bracketleft
diff --git a/data/keymaps/i386/qwerty/gr-pc.map b/data/keymaps/i386/qwerty/gr-pc.map
index 5d26658..5cce811 100644
--- a/data/keymaps/i386/qwerty/gr-pc.map
+++ b/data/keymaps/i386/qwerty/gr-pc.map
@@ -96,7 +96,7 @@ keycode 14 = Delete Delete
altgr keycode 14 = Delete
shift altgr keycode 14 = Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
altgr keycode 15 = Tab
shift altgr keycode 15 = Tab
alt keycode 15 = Meta_Tab
diff --git a/data/keymaps/i386/qwerty/gr.map b/data/keymaps/i386/qwerty/gr.map
index e3748a7..ada841b 100644
--- a/data/keymaps/i386/qwerty/gr.map
+++ b/data/keymaps/i386/qwerty/gr.map
@@ -77,7 +77,7 @@ keycode 13 = equal plus
keycode 14 = Delete Delete
control keycode 14 = BackSpace
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 16 = q
keycode 17 = w
diff --git a/data/keymaps/i386/qwerty/ie.map b/data/keymaps/i386/qwerty/ie.map
index 46eb71f..e89fed1 100644
--- a/data/keymaps/i386/qwerty/ie.map
+++ b/data/keymaps/i386/qwerty/ie.map
@@ -68,7 +68,8 @@ shift control keycode 3 = nul
control keycode 14 = Control_underscore
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 18 = +e
shift keycode 18 = +E
diff --git a/data/keymaps/i386/qwerty/il-heb.map b/data/keymaps/i386/qwerty/il-heb.map
index 31b2663..1b1de3f 100644
--- a/data/keymaps/i386/qwerty/il-heb.map
+++ b/data/keymaps/i386/qwerty/il-heb.map
@@ -37,7 +37,7 @@ keycode 13 = equal plus equal plus
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab Tab Tab
+keycode 15 = Tab Backtab Tab Tab
alt keycode 15 = Meta_Tab
keycode 16 = +q +Q slash slash Control_q Control_q Control_q Control_q
keycode 17 = +w +W apostrophe apostrophe Control_w Control_w Control_w Control_w
diff --git a/data/keymaps/i386/qwerty/il-phonetic.map b/data/keymaps/i386/qwerty/il-phonetic.map
index ee65ec4..4645d0c 100644
--- a/data/keymaps/i386/qwerty/il-phonetic.map
+++ b/data/keymaps/i386/qwerty/il-phonetic.map
@@ -36,7 +36,7 @@ keycode 13 = equal plus doubleunderscore doubleunderscor
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 16 = +q +Q qof qof Control_q
keycode 17 = +w +W vav vav Control_w
diff --git a/data/keymaps/i386/qwerty/is-latin1.map b/data/keymaps/i386/qwerty/is-latin1.map
index bd674c6..aee12ba 100644
--- a/data/keymaps/i386/qwerty/is-latin1.map
+++ b/data/keymaps/i386/qwerty/is-latin1.map
@@ -45,7 +45,7 @@ keycode 12 = +odiaeresis +Odiaeresis backslash
keycode 13 = minus underscore hyphen
keycode 14 = Delete Delete Meta_Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 16 = +q +Q at
control keycode 16 = Control_q
diff --git a/data/keymaps/i386/qwerty/it2.map b/data/keymaps/i386/qwerty/it2.map
index 5663126..65d59f7 100644
--- a/data/keymaps/i386/qwerty/it2.map
+++ b/data/keymaps/i386/qwerty/it2.map
@@ -85,7 +85,7 @@ keycode 13 = igrave asciicircum
alt shift keycode 13 = Meta_asciicircum
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 16 = q Q
control keycode 16 = Control_q
diff --git a/data/keymaps/i386/qwerty/jp106.map b/data/keymaps/i386/qwerty/jp106.map
index 7b8610b..d64eb14 100644
--- a/data/keymaps/i386/qwerty/jp106.map
+++ b/data/keymaps/i386/qwerty/jp106.map
@@ -32,7 +32,8 @@ keycode 13 = asciicircum asciitilde
keycode 14 = Delete
control keycode 14 = BackSpace
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = at grave
control keycode 26 = nul
keycode 27 = bracketleft braceleft
diff --git a/data/keymaps/i386/qwerty/la-latin1.map b/data/keymaps/i386/qwerty/la-latin1.map
index fd4043d..8b14aef 100644
--- a/data/keymaps/i386/qwerty/la-latin1.map
+++ b/data/keymaps/i386/qwerty/la-latin1.map
@@ -28,7 +28,8 @@ keycode 14 = Delete
control keycode 14 = BackSpace
alt keycode 14 = Meta_BackSpace
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = dead_acute dead_diaeresis
keycode 27 = plus asterisk asciitilde
keycode 28 = Return
diff --git a/data/keymaps/i386/qwerty/lt.baltic.map b/data/keymaps/i386/qwerty/lt.baltic.map
index 39c9371..4ea0bfb 100644
--- a/data/keymaps/i386/qwerty/lt.baltic.map
+++ b/data/keymaps/i386/qwerty/lt.baltic.map
@@ -38,7 +38,8 @@ keycode 11 = zero parenright parenright nul
keycode 12 = minus underscore underscore nul nul nul minus
keycode 13 = +0xFE +0xDE plus nul nul nul equal
keycode 14 = Delete Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
+ alt keycode 15 = Meta_Tab
keycode 16 = q
keycode 17 = w
keycode 18 = e
diff --git a/data/keymaps/i386/qwerty/lv.map b/data/keymaps/i386/qwerty/lv.map
index 3e4a91f..84e99f9 100644
--- a/data/keymaps/i386/qwerty/lv.map
+++ b/data/keymaps/i386/qwerty/lv.map
@@ -23,7 +23,8 @@ keycode 11 = zero parenright braceright U+00B0
keycode 12 = minus underscore backslash U+00BF Control_underscore Control_underscore
keycode 13 = equal plus U+2013 U+2014
keycode 14 = Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = bracketleft braceleft guillemotleft U+201C Escape
keycode 27 = bracketright braceright guillemotright U+201D Control_bracketright
keycode 28 = Return Return Return Return Return Return Return Meta_Control_m
diff --git a/data/keymaps/i386/qwerty/mac-no.map b/data/keymaps/i386/qwerty/mac-no.map
index f8ad5d8..0309c51 100644
--- a/data/keymaps/i386/qwerty/mac-no.map
+++ b/data/keymaps/i386/qwerty/mac-no.map
@@ -43,7 +43,8 @@ keycode 13 = acute grave
keycode 14 = Delete VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_BackSpace
# Q row
-keycode 15 = Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab
+keycode 15 = Tab Backtab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab
+ alt keycode 15 = Meta_Tab
keycode 16 = q Q degree VoidSymbol Control_q Control_q Meta_q Meta_Q Meta_Control_q
keycode 17 = w W VoidSymbol VoidSymbol Control_w Control_w Meta_w Meta_W Meta_Control_w
keycode 18 = e E eacute Eacute Control_e Control_e Meta_e Meta_E Meta_Control_e
diff --git a/data/keymaps/i386/qwerty/mk0.map b/data/keymaps/i386/qwerty/mk0.map
index 7517f46..030209a 100644
--- a/data/keymaps/i386/qwerty/mk0.map
+++ b/data/keymaps/i386/qwerty/mk0.map
@@ -53,7 +53,8 @@ keycode 12 = minus underscore minus underscore Control_underscore Control_under
keycode 13 = equal plus equal plus
keycode 14 = Delete Delete Delete Delete BackSpace
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 16 = +q +Q U+0459 U+0409 Control_q Control_q Control_q Control_q
keycode 17 = +w +W U+045a U+040a Control_w Control_w Control_w Control_w
keycode 18 = +e +E U+0435 U+0415 Control_e Control_e Control_e Control_e
diff --git a/data/keymaps/i386/qwerty/nl.map b/data/keymaps/i386/qwerty/nl.map
index 199e44e..79958ea 100644
--- a/data/keymaps/i386/qwerty/nl.map
+++ b/data/keymaps/i386/qwerty/nl.map
@@ -50,7 +50,8 @@ keycode 13 = degree asciitilde dead_cedilla
keycode 14 = Delete
control keycode 14 = BackSpace
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = dead_diaeresis dead_circumflex circumflex
control keycode 26 = Escape
keycode 27 = asterisk bar
diff --git a/data/keymaps/i386/qwerty/nl2.map b/data/keymaps/i386/qwerty/nl2.map
index a731a6a..a478aba 100644
--- a/data/keymaps/i386/qwerty/nl2.map
+++ b/data/keymaps/i386/qwerty/nl2.map
@@ -38,7 +38,8 @@ keycode 12 = slash question backslash Control_underscore
keycode 13 = degree asciitilde dead_cedilla
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 18 = e E euro
keycode 19 = r R paragraph
keycode 26 = dead_diaeresis dead_circumflex
diff --git a/data/keymaps/i386/qwerty/no.map b/data/keymaps/i386/qwerty/no.map
index b118bc2..40d83ad 100644
--- a/data/keymaps/i386/qwerty/no.map
+++ b/data/keymaps/i386/qwerty/no.map
@@ -41,7 +41,7 @@ keycode 13 = backslash grave apostrophe
keycode 14 = Delete
alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 26 = aring Aring braceright bracketright
control keycode 26 = Control_bracketright
diff --git a/data/keymaps/i386/qwerty/pl.map b/data/keymaps/i386/qwerty/pl.map
index fe585a4..c398c0d 100644
--- a/data/keymaps/i386/qwerty/pl.map
+++ b/data/keymaps/i386/qwerty/pl.map
@@ -49,7 +49,7 @@ keycode 13 = equal plus
keycode 14 = Delete
alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 16 = q
keycode 17 = w
diff --git a/data/keymaps/i386/qwerty/pl2.map b/data/keymaps/i386/qwerty/pl2.map
index bbb50fd..bf2bd28 100644
--- a/data/keymaps/i386/qwerty/pl2.map
+++ b/data/keymaps/i386/qwerty/pl2.map
@@ -61,7 +61,7 @@ keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
alt shift keycode 14 = Meta_Delete
control keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
alt shift keycode 15 = Meta_Tab
AltGr keycode 15 = Meta_Tab
diff --git a/data/keymaps/i386/qwerty/pt-latin1.map b/data/keymaps/i386/qwerty/pt-latin1.map
index 5c5f476..800ede7 100644
--- a/data/keymaps/i386/qwerty/pt-latin1.map
+++ b/data/keymaps/i386/qwerty/pt-latin1.map
@@ -39,7 +39,8 @@ keycode 13 = guillemotleft guillemotright
alt keycode 13 = Meta_equal
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = plus asterisk dead_diaeresis
control keycode 26 = Escape
alt keycode 26 = Meta_bracketleft
diff --git a/data/keymaps/i386/qwerty/pt-latin9.map b/data/keymaps/i386/qwerty/pt-latin9.map
index f353d42..9032610 100644
--- a/data/keymaps/i386/qwerty/pt-latin9.map
+++ b/data/keymaps/i386/qwerty/pt-latin9.map
@@ -35,7 +35,8 @@ keycode 13 = guillemotleft guillemotright
alt keycode 13 = Meta_equal
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 18 = e E euro cent
keycode 26 = plus asterisk dead_diaeresis
control keycode 26 = Escape
diff --git a/data/keymaps/i386/qwerty/ro_win.map b/data/keymaps/i386/qwerty/ro_win.map
index eef1463..6981abd 100644
--- a/data/keymaps/i386/qwerty/ro_win.map
+++ b/data/keymaps/i386/qwerty/ro_win.map
@@ -26,7 +26,8 @@ keycode 11 = zero parenright braceright parenright
keycode 12 = minus underscore backslash backslash Control_underscore Control_underscore
keycode 13 = equal plus
keycode 14 = Delete Delete Delete
-keycode 15 = Tab Meta_Tab Tab
+keycode 15 = Tab Backtab Tab
+ alt keycode 15 = Meta_Tab
keycode 26 = bracketleft braceleft
control keycode 26 = Escape
keycode 27 = bracketright braceright asciitilde asciitilde Control_bracketright
diff --git a/data/keymaps/i386/qwerty/sk-prog-qwerty.map b/data/keymaps/i386/qwerty/sk-prog-qwerty.map
index 828cb38..cc2f845 100644
--- a/data/keymaps/i386/qwerty/sk-prog-qwerty.map
+++ b/data/keymaps/i386/qwerty/sk-prog-qwerty.map
@@ -40,7 +40,7 @@ keycode 11 = zero parenright eacute zero VoidSymbol VoidSymbol VoidSymbol VoidS
keycode 12 = minus underscore minus underscore Control_underscore Control_underscore Control_underscore Control_underscore Meta_minus Meta_minus Meta_minus Meta_minus
keycode 13 = equal plus dead_acute dead_circumflex VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_equal Meta_equal Meta_equal Meta_equal
keycode 14 = Delete Delete Delete Delete VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Delete Meta_Delete Meta_Delete Meta_Delete
-keycode 15 = Tab Meta_Tab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
+keycode 15 = Tab Backtab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
keycode 26 = bracketleft braceleft bracketleft braceleft Escape VoidSymbol Escape VoidSymbol Meta_bracketleft Meta_bracketleft Meta_bracketleft Meta_bracketleft
keycode 27 = bracketright braceright bracketright braceright Control_bracketright VoidSymbol Control_bracketright VoidSymbol Meta_bracketright Meta_bracketright Meta_bracketright Meta_bracketright
keycode 28 = Return
diff --git a/data/keymaps/i386/qwerty/sk-qwerty.map b/data/keymaps/i386/qwerty/sk-qwerty.map
index db1e2de..0d51eb0 100644
--- a/data/keymaps/i386/qwerty/sk-qwerty.map
+++ b/data/keymaps/i386/qwerty/sk-qwerty.map
@@ -43,8 +43,6 @@ keycode 11 = zero parenright eacute zero
keycode 12 = minus underscore equal percent
keycode 13 = equal plus dead_acute dead_circumflex
keycode 14 = Delete
-keycode 15 = Tab
- shift keycode 15 = Meta_Tab
keycode 26 = bracketleft braceleft uacute slash Escape
keycode 27 = bracketright braceright adiaeresis parenleft Control_bracketright
keycode 28 = Return
diff --git a/data/keymaps/i386/qwerty/sv-latin1.map b/data/keymaps/i386/qwerty/sv-latin1.map
index ccfb11e..1856c66 100644
--- a/data/keymaps/i386/qwerty/sv-latin1.map
+++ b/data/keymaps/i386/qwerty/sv-latin1.map
@@ -53,7 +53,7 @@ keycode 13 = dead_acute dead_grave
keycode 14 = Delete
alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 26 = +aring +Aring
control keycode 26 = Escape
diff --git a/data/keymaps/i386/qwerty/tr_q-latin5.map b/data/keymaps/i386/qwerty/tr_q-latin5.map
index 0ef8ecb..4431bc2 100644
--- a/data/keymaps/i386/qwerty/tr_q-latin5.map
+++ b/data/keymaps/i386/qwerty/tr_q-latin5.map
@@ -51,7 +51,7 @@ keycode 13 = minus underscore
alt keycode 13 = Meta_equal
keycode 14 = BackSpace Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 16 = q
keycode 17 = w
diff --git a/data/keymaps/i386/qwerty/tralt.map b/data/keymaps/i386/qwerty/tralt.map
index ab0e274..bcd3510 100644
--- a/data/keymaps/i386/qwerty/tralt.map
+++ b/data/keymaps/i386/qwerty/tralt.map
@@ -49,7 +49,7 @@ keycode 13 = equal plus
keycode 14 = Delete
alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 16 = q
keycode 17 = w
diff --git a/data/keymaps/i386/qwerty/trq.map b/data/keymaps/i386/qwerty/trq.map
index 36e2d28..3374448 100644
--- a/data/keymaps/i386/qwerty/trq.map
+++ b/data/keymaps/i386/qwerty/trq.map
@@ -59,7 +59,7 @@ keycode 13 = minus underscore bar
keycode 14 = Delete
alt keycode 14 = Meta_Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
alt keycode 15 = Meta_Tab
keycode 16 = q
altgr keycode 16 = at
diff --git a/data/keymaps/i386/qwerty/ua-utf-ws.map b/data/keymaps/i386/qwerty/ua-utf-ws.map
index 1783a3d..a622ec6 100644
--- a/data/keymaps/i386/qwerty/ua-utf-ws.map
+++ b/data/keymaps/i386/qwerty/ua-utf-ws.map
@@ -281,7 +281,7 @@ keycode 14 = BackSpace Delete
shift control ctrll ctrlr keycode 14 = BackSpace
alt ctrll ctrlr keycode 14 = Meta_Delete
shift alt ctrll ctrlr keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
ctrlr keycode 15 = Tab
shift ctrlr keycode 15 = Tab
diff --git a/data/keymaps/i386/qwerty/ua-utf.map b/data/keymaps/i386/qwerty/ua-utf.map
index 3d9ce43..3dc7df8 100644
--- a/data/keymaps/i386/qwerty/ua-utf.map
+++ b/data/keymaps/i386/qwerty/ua-utf.map
@@ -271,7 +271,7 @@ keycode 14 = BackSpace Delete
shift control ctrll ctrlr keycode 14 = BackSpace
alt ctrll ctrlr keycode 14 = Meta_Delete
shift alt ctrll ctrlr keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
ctrlr keycode 15 = Tab
shift ctrlr keycode 15 = Tab
diff --git a/data/keymaps/i386/qwerty/ua-ws.map b/data/keymaps/i386/qwerty/ua-ws.map
index 86df969..6a57d94 100644
--- a/data/keymaps/i386/qwerty/ua-ws.map
+++ b/data/keymaps/i386/qwerty/ua-ws.map
@@ -281,7 +281,7 @@ keycode 14 = BackSpace Delete
shift control ctrll ctrlr keycode 14 = BackSpace
alt ctrll ctrlr keycode 14 = Meta_Delete
shift alt ctrll ctrlr keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
ctrlr keycode 15 = Tab
shift ctrlr keycode 15 = Tab
diff --git a/data/keymaps/i386/qwerty/ua.map b/data/keymaps/i386/qwerty/ua.map
index bb57d2a..d5d2560 100644
--- a/data/keymaps/i386/qwerty/ua.map
+++ b/data/keymaps/i386/qwerty/ua.map
@@ -270,7 +270,7 @@ keycode 14 = BackSpace Delete
shift control ctrll ctrlr keycode 14 = BackSpace
alt ctrll ctrlr keycode 14 = Meta_Delete
shift alt ctrll ctrlr keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
ctrlr keycode 15 = Tab
shift ctrlr keycode 15 = Tab
diff --git a/data/keymaps/i386/qwerty/uk.map b/data/keymaps/i386/qwerty/uk.map
index af347af..89240f2 100644
--- a/data/keymaps/i386/qwerty/uk.map
+++ b/data/keymaps/i386/qwerty/uk.map
@@ -31,7 +31,8 @@ keycode 13 = equal plus
keycode 14 = Delete
control keycode 14 = Control_underscore
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = bracketleft braceleft
control keycode 26 = Escape
keycode 27 = bracketright braceright asciitilde Control_bracketright
diff --git a/data/keymaps/i386/qwerty/us-acentos.map b/data/keymaps/i386/qwerty/us-acentos.map
index 1fd1f5c..5429c52 100644
--- a/data/keymaps/i386/qwerty/us-acentos.map
+++ b/data/keymaps/i386/qwerty/us-acentos.map
@@ -44,7 +44,7 @@ keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
keycode 15 = Tab Tab
alt keycode 15 = Meta_Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
keycode 16 = q
keycode 17 = w
keycode 18 = e
diff --git a/data/keymaps/i386/qwerty/us.map b/data/keymaps/i386/qwerty/us.map
index 2164aeb..67b35f2 100644
--- a/data/keymaps/i386/qwerty/us.map
+++ b/data/keymaps/i386/qwerty/us.map
@@ -25,7 +25,8 @@ keycode 12 = minus underscore backslash Control_undersc
keycode 13 = equal plus
keycode 14 = Delete
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = bracketleft braceleft
control keycode 26 = Escape
keycode 27 = bracketright braceright asciitilde Control_bracketright
diff --git a/data/keymaps/i386/qwertz/cz-us-qwertz.map b/data/keymaps/i386/qwertz/cz-us-qwertz.map
index 64a1bfc..798322b 100644
--- a/data/keymaps/i386/qwertz/cz-us-qwertz.map
+++ b/data/keymaps/i386/qwertz/cz-us-qwertz.map
@@ -29,7 +29,7 @@ keycode 11 = eacute zero zero parenright VoidSymbol VoidSymbol VoidSymbol VoidS
keycode 12 = equal percent minus underscore Control_underscore Control_underscore Control_underscore Control_underscore Meta_minus Meta_minus Meta_minus Meta_minus
keycode 13 = dead_acute dead_circumflex equal plus VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_equal Meta_equal Meta_equal Meta_equal
keycode 14 = Delete Delete Delete Delete VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Delete Meta_Delete Meta_Delete Meta_Delete
-keycode 15 = Tab Meta_Tab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
+keycode 15 = Tab Backtab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
keycode 16 = q
keycode 17 = w
keycode 18 = e
diff --git a/data/keymaps/i386/qwertz/cz.map b/data/keymaps/i386/qwertz/cz.map
index 85c1d61..2689d70 100644
--- a/data/keymaps/i386/qwertz/cz.map
+++ b/data/keymaps/i386/qwertz/cz.map
@@ -323,7 +323,7 @@ keycode 14 = Delete Delete VoidSymbol VoidSymbol VoidSymbol \
Meta_Delete VoidSymbol VoidSymbol VoidSymbol \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
VoidSymbol VoidSymbol VoidSymbol
-keycode 15 = Tab Meta_Tab VoidSymbol VoidSymbol VoidSymbol \
+keycode 15 = Tab Backtab VoidSymbol VoidSymbol VoidSymbol \
VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
VoidSymbol VoidSymbol VoidSymbol VoidSymbol VoidSymbol \
diff --git a/data/keymaps/i386/qwertz/de-latin1.map b/data/keymaps/i386/qwertz/de-latin1.map
index cb63d52..97c3d25 100644
--- a/data/keymaps/i386/qwertz/de-latin1.map
+++ b/data/keymaps/i386/qwertz/de-latin1.map
@@ -35,7 +35,8 @@ keycode 13 = dead_acute dead_grave
shift alt keycode 13 = Meta_grave
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = +udiaeresis +Udiaeresis
keycode 27 = plus asterisk dead_tilde
keycode 28 = Return
diff --git a/data/keymaps/i386/qwertz/de.map b/data/keymaps/i386/qwertz/de.map
index 11440b7..2a1e7b5 100644
--- a/data/keymaps/i386/qwertz/de.map
+++ b/data/keymaps/i386/qwertz/de.map
@@ -33,7 +33,8 @@ keycode 12 = backslash question
keycode 13 = apostrophe grave
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
+ alt keycode 15 = Meta_Tab
keycode 26 = at backslash
keycode 27 = plus asterisk asciitilde
keycode 28 = Return
diff --git a/data/keymaps/i386/qwertz/fr_CH-latin1.map b/data/keymaps/i386/qwertz/fr_CH-latin1.map
index 667464e..785f2d3 100644
--- a/data/keymaps/i386/qwertz/fr_CH-latin1.map
+++ b/data/keymaps/i386/qwertz/fr_CH-latin1.map
@@ -41,7 +41,7 @@ keycode 13 = dead_circumflex dead_grave dead_tilde
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 = egrave udiaeresis bracketleft
control keycode 26 = Escape
diff --git a/data/keymaps/i386/qwertz/fr_CH.map b/data/keymaps/i386/qwertz/fr_CH.map
index fca4984..df519c1 100644
--- a/data/keymaps/i386/qwertz/fr_CH.map
+++ b/data/keymaps/i386/qwertz/fr_CH.map
@@ -41,7 +41,7 @@ keycode 13 = asciicircum grave asciitilde
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 =
altgr keycode 26 = bracketleft
diff --git a/data/keymaps/i386/qwertz/sg-latin1-lk450.map b/data/keymaps/i386/qwertz/sg-latin1-lk450.map
index aaee821..7b18dd2 100644
--- a/data/keymaps/i386/qwertz/sg-latin1-lk450.map
+++ b/data/keymaps/i386/qwertz/sg-latin1-lk450.map
@@ -40,7 +40,7 @@ keycode 13 = dead_circumflex dead_grave dead_tilde
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 = udiaeresis egrave bracketleft
control keycode 26 = Escape
diff --git a/data/keymaps/i386/qwertz/sg-latin1.map b/data/keymaps/i386/qwertz/sg-latin1.map
index 19771b5..1279d44 100644
--- a/data/keymaps/i386/qwertz/sg-latin1.map
+++ b/data/keymaps/i386/qwertz/sg-latin1.map
@@ -39,7 +39,7 @@ keycode 13 = dead_circumflex dead_grave dead_tilde
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 = udiaeresis egrave bracketleft
control keycode 26 = Escape
diff --git a/data/keymaps/i386/qwertz/sg.map b/data/keymaps/i386/qwertz/sg.map
index 3dc5c86..75a4b26 100644
--- a/data/keymaps/i386/qwertz/sg.map
+++ b/data/keymaps/i386/qwertz/sg.map
@@ -40,7 +40,7 @@ keycode 13 = asciicircum grave asciitilde
alt keycode 13 = Meta_equal
keycode 14 = Delete Delete
alt keycode 14 = Meta_Delete
-keycode 15 = Tab Meta_Tab
+keycode 15 = Tab Backtab
alt keycode 15 = Meta_Tab
keycode 26 =
altgr keycode 26 = bracketleft
diff --git a/data/keymaps/i386/qwertz/sk-prog-qwertz.map b/data/keymaps/i386/qwertz/sk-prog-qwertz.map
index 7ee1a5c..a81ff96 100644
--- a/data/keymaps/i386/qwertz/sk-prog-qwertz.map
+++ b/data/keymaps/i386/qwertz/sk-prog-qwertz.map
@@ -40,7 +40,7 @@ keycode 11 = zero parenright eacute zero VoidSymbol VoidSymbol VoidSymbol VoidS
keycode 12 = minus underscore minus underscore Control_underscore Control_underscore Control_underscore Control_underscore Meta_minus Meta_minus Meta_minus Meta_minus
keycode 13 = equal plus dead_acute dead_circumflex VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_equal Meta_equal Meta_equal Meta_equal
keycode 14 = Delete Delete Delete Delete VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Delete Meta_Delete Meta_Delete Meta_Delete
-keycode 15 = Tab Meta_Tab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
+keycode 15 = Tab Backtab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
keycode 26 = bracketleft braceleft bracketleft braceleft Escape VoidSymbol Escape VoidSymbol Meta_bracketleft Meta_bracketleft Meta_bracketleft Meta_bracketleft
keycode 27 = bracketright braceright bracketright braceright Control_bracketright VoidSymbol Control_bracketright VoidSymbol Meta_bracketright Meta_bracketright Meta_bracketright Meta_bracketright
keycode 28 = Return
diff --git a/data/keymaps/i386/qwertz/sk-qwertz.map b/data/keymaps/i386/qwertz/sk-qwertz.map
index fc1218d..4376a4c 100644
--- a/data/keymaps/i386/qwertz/sk-qwertz.map
+++ b/data/keymaps/i386/qwertz/sk-qwertz.map
@@ -41,7 +41,7 @@ keycode 11 = zero parenright eacute zero VoidSymbol VoidSymbol VoidSymbol VoidS
keycode 12 = minus underscore equal percent Control_underscore Control_underscore Control_underscore Control_underscore Meta_minus Meta_minus Meta_minus Meta_minus
keycode 13 = equal plus dead_acute dead_circumflex VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_equal Meta_equal Meta_equal Meta_equal
keycode 14 = Delete Delete Delete Delete VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Delete Meta_Delete Meta_Delete Meta_Delete
-keycode 15 = Tab Meta_Tab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
+keycode 15 = Tab Backtab Tab Tab VoidSymbol VoidSymbol VoidSymbol VoidSymbol Meta_Tab Meta_Tab Meta_Tab Meta_Tab
keycode 26 = bracketleft braceleft uacute slash Escape VoidSymbol Escape VoidSymbol Meta_bracketleft Meta_bracketleft Meta_bracketleft Meta_bracketleft
keycode 27 = bracketright braceright adiaeresis parenleft Control_bracketright VoidSymbol Control_bracketright VoidSymbol Meta_bracketright Meta_bracketright Meta_bracketright Meta_bracketright
keycode 28 = Return
diff --git a/data/keymaps/mac/all/mac-fr.map b/data/keymaps/mac/all/mac-fr.map
index 9896aa6..a300cf1 100644
--- a/data/keymaps/mac/all/mac-fr.map
+++ b/data/keymaps/mac/all/mac-fr.map
@@ -170,7 +170,7 @@ keycode 14 = Delete BackSpace
altgr control keycode 14 = KeyboardSignal
keycode 15 = Tab
- shift keycode 15 = Meta_Tab
+ shift keycode 15 = Backtab
control keycode 15 = Meta_Tab
alt keycode 15 = Last_Console
diff --git a/data/keymaps/mac/include/mac-linux-keys-bare.inc b/data/keymaps/mac/include/mac-linux-keys-bare.inc
index 40a81f5..75d3353 100644
--- a/data/keymaps/mac/include/mac-linux-keys-bare.inc
+++ b/data/keymaps/mac/include/mac-linux-keys-bare.inc
@@ -166,7 +166,7 @@ keycode 113 = Pause # Break/Pause
keycode 36 = Return
alt keycode 36 = Meta_Control_m
keycode 48 = Tab
- shift keycode 48 = Meta_Tab
+ shift keycode 48 = Backtab
alt keycode 48 = Meta_Tab
keycode 49 = space space space nul
keycode 51 = Delete Remove
diff --git a/data/keymaps/pine/en.map b/data/keymaps/pine/en.map
index 36b7de2..c1f50be 100644
--- a/data/keymaps/pine/en.map
+++ b/data/keymaps/pine/en.map
@@ -34,7 +34,8 @@ keycode 11 = zero parenright plus nul nul Meta_zero
keycode 14 = BackSpace
# Second Row
-keycode 15 = Tab nul nul nul nul nul Meta_Tab
+keycode 15 = Tab Backtab nul nul nul nul Meta_Tab
+alt keycode 15 = Meta_Tab
keycode 16 = q Q nul Control_q
keycode 17 = w W nul Control_w
keycode 18 = e E nul Control_e
diff --git a/data/keymaps/sun/sunt4-es.map b/data/keymaps/sun/sunt4-es.map
index a270126..4242b60 100644
--- a/data/keymaps/sun/sunt4-es.map
+++ b/data/keymaps/sun/sunt4-es.map
@@ -137,7 +137,7 @@ keycode 50 = KP_Period
control alt keycode 50 = Boot
keycode 51 =
keycode 52 = Find
-keycode 53 = Tab Meta_Tab
+keycode 53 = Tab Backtab
alt keycode 53 = Meta_Tab
keycode 54 = q
keycode 55 = w
diff --git a/data/keymaps/sun/sunt4-fi-latin1.map b/data/keymaps/sun/sunt4-fi-latin1.map
index 7f01fd5..0e5319b 100644
--- a/data/keymaps/sun/sunt4-fi-latin1.map
+++ b/data/keymaps/sun/sunt4-fi-latin1.map
@@ -131,7 +131,7 @@ keycode 50 = KP_Period
control alt keycode 50 = Boot
keycode 51 =
keycode 52 =
-keycode 53 = Tab Meta_Tab
+keycode 53 = Tab Backtab
alt keycode 53 = Meta_Tab
keycode 54 = q
keycode 55 = w
diff --git a/data/keymaps/sun/sunt4-no-latin1.map b/data/keymaps/sun/sunt4-no-latin1.map
index a61225c..cfa7424 100644
--- a/data/keymaps/sun/sunt4-no-latin1.map
+++ b/data/keymaps/sun/sunt4-no-latin1.map
@@ -134,7 +134,7 @@ keycode 50 = KP_Period
control alt keycode 50 = Boot
keycode 51 =
keycode 52 = Find
-keycode 53 = Tab Meta_Tab
+keycode 53 = Tab Backtab
alt keycode 53 = Meta_Tab
keycode 54 = q
keycode 55 = w
diff --git a/data/keymaps/sun/sunt5-de-latin1.map b/data/keymaps/sun/sunt5-de-latin1.map
index c14d6d3..a4844a2 100644
--- a/data/keymaps/sun/sunt5-de-latin1.map
+++ b/data/keymaps/sun/sunt5-de-latin1.map
@@ -131,7 +131,7 @@ keycode 50 = KP_Period
control alt keycode 50 = Boot
keycode 51 =
keycode 52 = Find
-keycode 53 = Tab Meta_Tab
+keycode 53 = Tab Backtab
alt keycode 53 = Meta_Tab
keycode 54 = +q +Q at
keycode 55 = w
diff --git a/data/keymaps/sun/sunt5-es.map b/data/keymaps/sun/sunt5-es.map
index 727d9e8..66aa362 100644
--- a/data/keymaps/sun/sunt5-es.map
+++ b/data/keymaps/sun/sunt5-es.map
@@ -143,7 +143,7 @@ keycode 50 = KP_Period
control alt keycode 50 = Boot
keycode 51 =
keycode 52 = Find
-keycode 53 = Tab Meta_Tab
+keycode 53 = Tab Backtab
alt keycode 53 = Meta_Tab
keycode 54 = q
keycode 55 = w
diff --git a/data/keymaps/sun/sunt5-fi-latin1.map b/data/keymaps/sun/sunt5-fi-latin1.map
index 0d0fb9e..242a636 100644
--- a/data/keymaps/sun/sunt5-fi-latin1.map
+++ b/data/keymaps/sun/sunt5-fi-latin1.map
@@ -134,7 +134,7 @@ keycode 50 = KP_Period
control alt keycode 50 = Boot
keycode 51 =
keycode 52 = Find
-keycode 53 = Tab Meta_Tab
+keycode 53 = Tab Backtab
alt keycode 53 = Meta_Tab
keycode 54 = q
keycode 55 = w
diff --git a/data/keymaps/sun/sunt5-ru.map b/data/keymaps/sun/sunt5-ru.map
index d299a72..2543841 100644
--- a/data/keymaps/sun/sunt5-ru.map
+++ b/data/keymaps/sun/sunt5-ru.map
@@ -181,7 +181,7 @@ keycode 50 = KP_Period
altgr control alt keycode 50 = Boot
keycode 51 =
keycode 52 = Find
-keycode 53 = Tab Meta_Tab
+keycode 53 = Tab Backtab
alt keycode 53 = Meta_Tab
altgr alt keycode 53 = Meta_Tab
keycode 54 = q
diff --git a/data/keymaps/sun/sunt5-uk.map b/data/keymaps/sun/sunt5-uk.map
index 7c3cc44..db189eb 100644
--- a/data/keymaps/sun/sunt5-uk.map
+++ b/data/keymaps/sun/sunt5-uk.map
@@ -54,7 +54,7 @@ keycode 41 = equal plus
keycode 43 = Delete Delete
control keycode 43 = Control_underscore
alt keycode 43 = Meta_Delete
-keycode 53 = Tab Meta_Tab
+keycode 53 = Tab Backtab
alt keycode 53 = Meta_Tab
keycode 54 = q
keycode 55 = w
diff --git a/src/libkeymap/parser.y b/src/libkeymap/parser.y
index 2cd509f..fcb8c9b 100644
--- a/src/libkeymap/parser.y
+++ b/src/libkeymap/parser.y
@@ -79,7 +79,7 @@ static int
strings_as_usual(struct lk_ctx *ctx)
{
/*
- * 26 strings, mostly inspired by the VT100 family
+ * 27 strings, mostly inspired by the VT100 family
*/
const char *stringvalues[] = {
/* F1 .. F20 */
@@ -90,8 +90,8 @@ strings_as_usual(struct lk_ctx *ctx)
"\033[31~", "\033[32~", "\033[33~", "\033[34~",
/* Find, Insert, Remove, Select, Prior */
"\033[1~", "\033[2~", "\033[3~", "\033[4~", "\033[5~",
- /* Next, Macro, Help, Do, Pause */
- "\033[6~", NULL, NULL, NULL, NULL
+ /* Next, Macro, Help, Do, Pause, Backtab */
+ "\033[6~", NULL, NULL, NULL, NULL, "\033[Z"
};
unsigned char i;
diff --git a/src/libkeymap/syms.ktyp.h b/src/libkeymap/syms.ktyp.h
index 82c87a6..cd0404c 100644
--- a/src/libkeymap/syms.ktyp.h
+++ b/src/libkeymap/syms.ktyp.h
@@ -278,6 +278,7 @@ static const char *const fn_syms[] = {
"Help",
"Do",
"Pause",
+ "Backtab",
"F21", "F22", "F23", "F24", "F25",
"F26", "F27", "F28", "F29", "F30",
"F31", "F32", "F33", "F34", "F35",
@@ -323,7 +324,7 @@ static const char *const fn_syms[] = {
"F231", "F232", "F233", "F234", "F235",
"F236", "F237", "F238", "F239", "F240",
"F241", "F242", "F243", "F244", "F245",
- "F246" /* there are 10 keys named Insert etc., total 256 */
+ /* 11 keys named Find through Backtab, total 256 */
};
/*
^ permalink raw reply related [flat|nested] 2+ messages in thread* Re: [PATCH v2] Add Backtab keysym and update keymaps to use it for Shift+Tab
2026-02-17 17:28 [PATCH v2] Add Backtab keysym and update keymaps to use it for Shift+Tab Nicolas Pitre
@ 2026-02-20 13:02 ` Alexey Gladkov
0 siblings, 0 replies; 2+ messages in thread
From: Alexey Gladkov @ 2026-02-20 13:02 UTC (permalink / raw)
To: Nicolas Pitre; +Cc: kbd
On Tue, Feb 17, 2026 at 12:28:35PM -0500, Nicolas Pitre wrote:
> Add a new Backtab keysym (KT_FN index 30) that produces the standard
> backtab escape sequence \e[Z. This replaces F246 which was unused.
>
> Update all keymaps to use Backtab for Shift+Tab instead of Meta_Tab.
> In most cases the Meta_Tab binding already existed for Alt+Tab; where
> it was missing, it has been added.
>
> This change affects keymaps across all architectures: i386, amiga,
> atari, mac, sun, and pine.
>
> Signed-off-by: Nicolas Pitre <nico@fluxnic.net>
Sorry for the delay. This change is user visible and my tests broke.
> diff --git a/src/libkeymap/parser.y b/src/libkeymap/parser.y
> index 2cd509f..fcb8c9b 100644
> --- a/src/libkeymap/parser.y
> +++ b/src/libkeymap/parser.y
> @@ -79,7 +79,7 @@ static int
> strings_as_usual(struct lk_ctx *ctx)
> {
> /*
> - * 26 strings, mostly inspired by the VT100 family
> + * 27 strings, mostly inspired by the VT100 family
> */
> const char *stringvalues[] = {
> /* F1 .. F20 */
> @@ -90,8 +90,8 @@ strings_as_usual(struct lk_ctx *ctx)
> "\033[31~", "\033[32~", "\033[33~", "\033[34~",
> /* Find, Insert, Remove, Select, Prior */
> "\033[1~", "\033[2~", "\033[3~", "\033[4~", "\033[5~",
> - /* Next, Macro, Help, Do, Pause */
> - "\033[6~", NULL, NULL, NULL, NULL
> + /* Next, Macro, Help, Do, Pause, Backtab */
> + "\033[6~", NULL, NULL, NULL, NULL, "\033[Z"
> };
> unsigned char i;
>
> diff --git a/src/libkeymap/syms.ktyp.h b/src/libkeymap/syms.ktyp.h
> index 82c87a6..cd0404c 100644
> --- a/src/libkeymap/syms.ktyp.h
> +++ b/src/libkeymap/syms.ktyp.h
> @@ -278,6 +278,7 @@ static const char *const fn_syms[] = {
> "Help",
> "Do",
> "Pause",
> + "Backtab",
> "F21", "F22", "F23", "F24", "F25",
> "F26", "F27", "F28", "F29", "F30",
> "F31", "F32", "F33", "F34", "F35",
I noticed that this change complicates the use of the uapi kernel. You
added a value in the middle and shifted the other values. So K_F21 became
"Backtab", and K_F22 in kbd is named "F21", and so on.
This will confuse users.
ioctl(<fd>, KDSKBSENT, {kb_func=KVAL(K_PGUP), kb_string="\33[5~"}) = 0
ioctl(<fd>, KDSKBSENT, {kb_func=KVAL(K_PGDN), kb_string="\33[6~"}) = 0
ioctl(<fd>, KDSKBSENT, {kb_func=KVAL(K_F21), kb_string="\33[Z"}) = 0
$ grep -A1 -B1 -w K_F21 include/uapi/linux/keyboard.h
#define K_PAUSE K(KT_FN,29)
#define K_F21 K(KT_FN,30)
#define K_F22 K(KT_FN,31)
> @@ -323,7 +324,7 @@ static const char *const fn_syms[] = {
> "F231", "F232", "F233", "F234", "F235",
> "F236", "F237", "F238", "F239", "F240",
> "F241", "F242", "F243", "F244", "F245",
> - "F246" /* there are 10 keys named Insert etc., total 256 */
> + /* 11 keys named Find through Backtab, total 256 */
> };
>
> /*
>
--
Rgrds, legion
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2026-02-20 13:02 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-17 17:28 [PATCH v2] Add Backtab keysym and update keymaps to use it for Shift+Tab Nicolas Pitre
2026-02-20 13:02 ` Alexey Gladkov
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox