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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.