All of lore.kernel.org
 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 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.