From: Alexey Gladkov <legion@kernel.org>
To: Nicolas Pitre <nico@fluxnic.net>
Cc: kbd@lists.linux.dev
Subject: Re: [PATCH v3] Add Backtab keysym and update keymaps to use it for Shift+Tab
Date: Mon, 23 Feb 2026 10:10:43 +0100 [thread overview]
Message-ID: <aZwZk8Tue1dOiL1I@example.org> (raw)
In-Reply-To: <33ro63rs-47r6-166q-8966-40r1or94484s@syhkavp.arg>
On Fri, Feb 20, 2026 at 05:07:56PM -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 <npitre@baylibre.com>
Applied. Thanks!
Plus, I added the alias F246 for Backtab.
> ---
> >From v2:
>
> Moved Backtab to index 255 — the last slot in the KT_FN table, which has
> no kernel UAPI name (the kernel only goes up to K_F245 = K(KT_FN, 254)).
>
> 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..0602cd8 100644
> --- a/src/libkeymap/parser.y
> +++ b/src/libkeymap/parser.y
> @@ -106,6 +106,23 @@ strings_as_usual(struct lk_ctx *ctx)
> return -1;
> }
> }
> +
> + /*
> + * Backtab (Shift+Tab) is assigned to KT_FN index 255, the last
> + * available slot with no kernel UAPI name (K_F245 = KT_FN index 254
> + * is the last kernel-defined entry). It cannot be added to the array
> + * above without displacing the existing named entries F21..F245.
> + */
> + {
> + struct kbsentry ke;
> +
> + ke.kb_func = 255; /* Backtab, see syms.ktyp.h */
> + strlcpy((char *)ke.kb_string, "\033[Z", sizeof(ke.kb_string));
> +
> + if (lk_add_func(ctx, &ke) == -1)
> + return -1;
> + }
> +
> return 0;
> }
>
> diff --git a/src/libkeymap/syms.ktyp.h b/src/libkeymap/syms.ktyp.h
> index 82c87a6..504d67e 100644
> --- a/src/libkeymap/syms.ktyp.h
> +++ b/src/libkeymap/syms.ktyp.h
> @@ -323,7 +323,14 @@ 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 */
> + /*
> + * The kernel UAPI defines KT_FN keys F1..F20 (indices 0..19),
> + * then Find/Insert/Remove/Select/Prior/Next/Macro/Help/Do/Pause
> + * (indices 20..29), then F21..F245 (indices 30..254).
> + * Index 255 is the last available slot with no kernel UAPI name,
> + * so Backtab is placed here to avoid shifting any existing indices.
> + */
> + "Backtab" /* there are 11 keys named Find etc., total 256 */
> };
>
> /*
--
Rgrds, legion
prev parent reply other threads:[~2026-02-23 9:10 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-02-20 22:07 [PATCH v3] Add Backtab keysym and update keymaps to use it for Shift+Tab Nicolas Pitre
2026-02-23 9:10 ` Alexey Gladkov [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=aZwZk8Tue1dOiL1I@example.org \
--to=legion@kernel.org \
--cc=kbd@lists.linux.dev \
--cc=nico@fluxnic.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox