public inbox for kbd@lists.linux.dev
 help / color / mirror / Atom feed
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


      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