You are not logged in.

#1 2021-12-08 20:14:25

Specialist
Member
Registered: 2021-12-08
Posts: 17

[SOLVED] KEYMAP=us-altgr-intl breaks Ctrl modifier in TTY

Hi there,

I have set

KEYMAP=us-altgr-intl

in /etc/vconsole.conf as I'd like to be able to type German umlauts on my US layout. This works so far, but unfortunately seems to break the Ctrl modifier on all TTYs, e.g., pressing Ctrl+C or Ctrl+L no longer has any effect on a shell.

Any ideas how to get my desired keyboard layout while not breaking the Ctrl modifier?

Thanks,
Specialist

Last edited by Specialist (2022-01-04 22:36:31)

Offline

#2 2021-12-08 20:54:54

seth
Member
Registered: 2012-09-03
Posts: 51,050

Re: [SOLVED] KEYMAP=us-altgr-intl breaks Ctrl modifier in TTY

That doesn't look like a valid console layout?

find /usr/share/kbd/keymaps  -name 'us*'

If it actually exists, where did you get it?

Online

#3 2021-12-08 21:01:03

Specialist
Member
Registered: 2021-12-08
Posts: 17

Re: [SOLVED] KEYMAP=us-altgr-intl breaks Ctrl modifier in TTY

It does exist:

$ find /usr/share/kbd/keymaps  -name 'us*'

/usr/share/kbd/keymaps/i386/qwerty/us-altgr-intl.map.gz
/usr/share/kbd/keymaps/i386/qwerty/us-acentos.map.gz
/usr/share/kbd/keymaps/i386/qwerty/us.map.gz
/usr/share/kbd/keymaps/i386/qwerty/us1.map.gz

But you may be right. Could be that I installed it years ago when I set up my last laptop... Difficult to tell today, where I got it. I'll see what's wrong about the actual layout.

Offline

#4 2021-12-08 21:09:35

seth
Member
Registered: 2012-09-03
Posts: 51,050

Re: [SOLVED] KEYMAP=us-altgr-intl breaks Ctrl modifier in TTY

It's not in the repos for sure.
I found https://bugzilla.redhat.com/show_bug.cgi?id=1843379 (which is just "installer crashes if I set this invalid layout because it's invalid) but it does or did exist in CentOS, https://centos.pkgs.org/8-stream/centos … h.rpm.html
So it is/was sprobably a fedora thing.

If you need help w/ that map, you'll have to upload it, since we otherwise can't know what it actually is.

Online

#5 2021-12-08 21:23:37

Specialist
Member
Registered: 2021-12-08
Posts: 17

Re: [SOLVED] KEYMAP=us-altgr-intl breaks Ctrl modifier in TTY

It's the layout referenced here: https://www.reddit.com/r/archlinux/comm … t/d3jigz1/

The link is dead, so I am including it inline in this post:

# us-altgr-intl-nodeadkeys.map
# Max Klinger keymap@max-klinger.org

# include the unusual 3 because we need to explicitely set shift+alt-gr
keymaps 0-6,8-9,12

alt_is_meta
include "qwerty-layout"
include "linux-with-alt-and-altgr"
include "compose.latin1"
strings as usual
#               nothing       shift             altgr           shift+altgr       ctrl                  Ctrl+shift
keycode   1 = Caps_Lock
keycode   2 = one              exclam           onesuperior     exclamdown
# dead_doubleacute doesn't seem to work for me
keycode   3 = two              at               twosuperior     dead_doubleacute
keycode   4 = three            numbersign       Meta_three      nul                Escape
keycode   5 = four             dollar           currency        sterling           Control_backslash
keycode   6 = five             percent          euro            dead_cedilla       Control_bracketright
keycode   7 = six              circumflex       dead_circumflex onequarter         Control_asciicircum
# dead_horn doesn't exist, don't know if this is similar
keycode   8 = seven            ampersand        thorn           onehalf            Control_underscore
# dead_ogonek doesn't work right
keycode   9 = eight            asterisk         dead_ogonek     threequarters      Delete
# opening quotation mark missing, dead_breve -> dead_tilde
keycode  10 = nine             parenleft        apostrophe      dead_breve
keycode  11 = zero             parenright       braceright      
keycode  12 = minus            underscore       backslash        Control_underscore Control_underscore
keycode  13 = equal            plus            
keycode  14 = Delete           Delete          
	control	keycode  14 = BackSpace       
keycode  15 = Tab              Tab             
	alt	keycode  15 = Meta_Tab        
	shift	keycode  15 = Meta_Tab
keycode  16 = q                Q                adiaeresis       Adiaeresis
keycode  17 = w                W                aring            Aring
keycode  18 = e                E                eacute           Eacute
keycode  19 = r                R                ediaeresis       Ediaeresis
keycode  20 = t                T                thorn            THORN
keycode  21 = y                Y                udiaeresis       Udiaeresis
keycode  22 = u                U                uacute           Uacute 
keycode  23 = i                I                iacute           Iacute
keycode  24 = o                O                oacute           Oacute
keycode  25 = p                P                odiaeresis       Odiaeresis
# leftdoublequotemark doesn't seem to exist
keycode  26 = bracketleft      braceleft        guillemotleft    
  control keycode 26 =  Escape          
	alt	keycode  26 = Meta_bracketleft
	shift	alt	keycode  26 = Meta_braceleft  
# neither does rightdoublequotemark
keycode  27 = bracketright     braceright       guillemotright   
	alt	keycode  27 = Meta_bracketright
	shift	alt	keycode  27 = Meta_braceright 
keycode  28 = Return          
	alt	keycode  28 = Meta_Control_m  
keycode  29 = Control         
keycode  30 = a               A                aacute              Aacute
keycode  31 = s               S                ssharp              section
keycode  32 = d               D                   eth                  ETH
keycode  33 = f               F                     f                    F
keycode  34 = g               G                     g                    G
keycode  35 = h               H                     h                    H
keycode  36 = j               J            idiaeresis           Idiaeresis
keycode  37 = k               K                    oe                   OE
keycode  38 = l               L                oslash             Ooblique                          
keycode  39 = semicolon      colon          paragraph             degree 
	alt	keycode  39 = Meta_semicolon  
keycode  40 = dead_acute       dead_diaeresis apostrophe    quotedbl
	control	keycode  40 = Control_g       
	alt	keycode  40 = Meta_apostrophe 
keycode  41 = dead_grave            dead_tilde      
	control	keycode  41 = nul             
	alt	keycode  41 = Meta_grave      
keycode  42 = Shift           
keycode  43 = backslash        bar      notsign       brokenbar
	control	keycode  43 = Control_backslash
	alt	keycode  43 = Meta_backslash  
	shift	alt	keycode  43 = Meta_bar        
keycode  44 = z              Z            ae               AE 
keycode  45 = x              X            oe              OE
keycode  46 = c              C     copyright             cent 
keycode  47 = v              V     registered               registered  
keycode  48 = b              B             b                B 
keycode  49 = n              N        ntilde           Ntilde
keycode  50 = m              M            mu               mu 
keycode  51 = comma            less       ccedilla        Ccedilla
	alt	keycode  51 = Meta_comma      
	shift	alt	keycode  51 = Meta_less       
# dead_abovedot doesn't exist -> period
keycode  52 = period           greater   period dead_caron 
	control	keycode  52 = Compose         
	alt	keycode  52 = Meta_period     
	shift	alt	keycode  52 = Meta_greater    
#dead_hook doesn't exist
keycode  53 = slash            question   questiondown  
	control	keycode  53 = Delete          
	alt	keycode  53 = Meta_slash      
keycode  54 = Shift           
keycode  55 = KP_Multiply     
keycode  56 = Alt             
keycode  57 = space            space           
	control	keycode  57 = nul             
	alt	keycode  57 = Meta_space      
keycode  58 = Caps_Lock       
keycode  59 = F1               F11              Console_13       F1              
	alt	keycode  59 = Console_1       
	control	alt	keycode  59 = Console_1       
keycode  60 = F2               F12              Console_14       F2              
	alt	keycode  60 = Console_2       
	control	alt	keycode  60 = Console_2       
keycode  61 = F3               F13              Console_15       F3              
	alt	keycode  61 = Console_3       
	control	alt	keycode  61 = Console_3       
keycode  62 = F4               F14              Console_16       F4              
	alt	keycode  62 = Console_4       
	control	alt	keycode  62 = Console_4       
keycode  63 = F5               F15              Console_17       F5              
	alt	keycode  63 = Console_5       
	control	alt	keycode  63 = Console_5       
keycode  64 = F6               F16              Console_18       F6              
	alt	keycode  64 = Console_6       
	control	alt	keycode  64 = Console_6       
keycode  65 = F7               F17              Console_19       F7              
	alt	keycode  65 = Console_7       
	control	alt	keycode  65 = Console_7       
keycode  66 = F8               F18              Console_20       F8              
	alt	keycode  66 = Console_8       
	control	alt	keycode  66 = Console_8       
keycode  67 = F9               F19              Console_21       F9              
	alt	keycode  67 = Console_9       
	control	alt	keycode  67 = Console_9       
keycode  68 = F10              F20              Console_22       F10             
	alt	keycode  68 = Console_10      
	control	alt	keycode  68 = Console_10      
keycode  69 = Num_Lock        
keycode  70 = Scroll_Lock      Show_Memory      Show_Registers   Show_State      
	alt	keycode  70 = Scroll_Lock     
keycode  71 = KP_7            
	alt	keycode  71 = Ascii_7         
keycode  72 = KP_8            
	alt	keycode  72 = Ascii_8         
keycode  73 = KP_9            
	alt	keycode  73 = Ascii_9         
keycode  74 = KP_Subtract     
keycode  75 = KP_4            
	alt	keycode  75 = Ascii_4         
keycode  76 = KP_5            
	alt	keycode  76 = Ascii_5         
keycode  77 = KP_6            
	alt	keycode  77 = Ascii_6         
keycode  78 = KP_Add          
keycode  79 = KP_1            
	alt	keycode  79 = Ascii_1         
keycode  80 = KP_2            
	alt	keycode  80 = Ascii_2         
keycode  81 = KP_3            
	alt	keycode  81 = Ascii_3         
keycode  82 = KP_0            
	alt	keycode  82 = Ascii_0         
keycode  83 = KP_Period       
	altgr	control	keycode  83 = Boot            
	control	alt	keycode  83 = Boot            
keycode  84 = Last_Console    
keycode  85 =
keycode  86 = less             greater          bar             
	alt	keycode  86 = Meta_less       
keycode  87 = F11              F11              Console_23       F11             
	alt	keycode  87 = Console_11      
	control	alt	keycode  87 = Console_11      
keycode  88 = F12              F12              Console_24       F12             
	alt	keycode  88 = Console_12      
	control	alt	keycode  88 = Console_12      
keycode  89 =
keycode  90 =
keycode  91 =
keycode  92 =
keycode  93 =
keycode  94 =
keycode  95 =
keycode  96 = KP_Enter        
keycode  97 = Control         
keycode  98 = KP_Divide       
keycode  99 = VoidSymbol
	control	keycode  99 = Control_backslash
	alt	keycode  99 = Control_backslash
keycode 100 = AltGr           
keycode 101 = Break           
keycode 102 = Find            
keycode 103 = Up              
keycode 104 = Prior           
	shift	keycode 104 = Scroll_Backward 
keycode 105 = Left            
	alt	keycode 105 = Decr_Console    
keycode 106 = Right           
	alt	keycode 106 = Incr_Console    
keycode 107 = Select          
keycode 108 = Down            
keycode 109 = Next            
	shift	keycode 109 = Scroll_Forward  
keycode 110 = Insert          
keycode 111 = Remove          
	altgr	control	keycode 111 = Boot            
	control	alt	keycode 111 = Boot            
keycode 112 = Macro           
	altgr	control	keycode 112 = VoidSymbol      
	shift	alt	keycode 112 = VoidSymbol      
keycode 113 = F13             
	altgr	control	keycode 113 = VoidSymbol      
	shift	alt	keycode 113 = VoidSymbol      
keycode 114 = F14             
	altgr	control	keycode 114 = VoidSymbol      
	shift	alt	keycode 114 = VoidSymbol      
keycode 115 = Help            
	altgr	control	keycode 115 = VoidSymbol      
	shift	alt	keycode 115 = VoidSymbol      
keycode 116 = Do              
	altgr	control	keycode 116 = VoidSymbol      
	shift	alt	keycode 116 = VoidSymbol      
keycode 117 = F17             
	altgr	control	keycode 117 = VoidSymbol      
	shift	alt	keycode 117 = VoidSymbol      
keycode 118 = KP_MinPlus      
	altgr	control	keycode 118 = VoidSymbol      
	shift	alt	keycode 118 = VoidSymbol      
keycode 119 = Pause           
	altgr	control	keycode 119 = VoidSymbol      
	shift	alt	keycode 119 = VoidSymbol      
keycode 120 =
keycode 121 =
keycode 122 =
keycode 123 =
keycode 124 =
keycode 125 =
keycode 126 =
keycode 127 =

Offline

#6 2021-12-08 21:36:37

seth
Member
Registered: 2012-09-03
Posts: 51,050

Re: [SOLVED] KEYMAP=us-altgr-intl breaks Ctrl modifier in TTY

Is this verbatim or a flawed copy out of the pager?
There're some stray linebreaks…

Online

#7 2021-12-08 21:41:58

Specialist
Member
Registered: 2021-12-08
Posts: 17

Re: [SOLVED] KEYMAP=us-altgr-intl breaks Ctrl modifier in TTY

It's a zcat right to the clipboard. I just uploaded the original file: http://ix.io/3HqG

Last edited by Specialist (2021-12-08 21:50:05)

Offline

#8 2022-01-01 06:29:39

adigitoleo
Member
From: Australia
Registered: 2020-08-02
Posts: 47

Re: [SOLVED] KEYMAP=us-altgr-intl breaks Ctrl modifier in TTY

Note that if what you want is a us international layout without dead keys, there is also a "altgr-intl" variant of the packaged xkb "us" layout, which does not suffer from this issue:

%zsh> xkbcli list|grep altgr-intl -B 1 -A 4
- layout: us
  variant: altgr-intl
  brief: ''
  description: English (intl., with AltGr dead keys)
  iso639: [eng, fra, deu]
  iso3166: []

The altgr key (right alt) is used to access non-ascii characters, see the link for a layout map:

https://www.twam.info/wp-content/upload … tional.png

However, the umlaut characters can also be accessed via AltGr + " followed by a, u, etc.
Accented cahracters: AltGr + ' (apostrophe) followed by e, a, etc.
And so forth, essentially the dead keys from "alt-intl" are still there as an option, but they are only activated when AltGr is pressed. This makes it less annoying to type the normal apostrophe, quotes, etc.

Not a direct solution, but it's what I've just started to use after digging around for it.

Last edited by adigitoleo (2022-01-01 06:35:41)

Offline

#9 2022-01-01 08:46:20

seth
Member
Registered: 2012-09-03
Posts: 51,050

Re: [SOLVED] KEYMAP=us-altgr-intl breaks Ctrl modifier in TTY

He wants that for the console.

@Specialist, sorry - this one fell off the wagon.

The reason is that the layout defines a non-simple setup for keycode 46 ("c"), so you must add the behavior for the control sequence explicitly:

…
keycode  46 = c              C     copyright             cent
        control keycode 46 = Control_c # <================== this line
keycode  47 = v              V     registered               registered 

It's the last paragrap in https://man.archlinux.org/man/keymaps.5 … EFINITIONS
You'll ave to do that for all complex definitions (ie. likley at least also ctrl+d)

Online

#10 2022-01-04 22:36:03

Specialist
Member
Registered: 2021-12-08
Posts: 17

Re: [SOLVED] KEYMAP=us-altgr-intl breaks Ctrl modifier in TTY

seth wrote:

The reason is that the layout defines a non-simple setup for keycode 46 ("c"), so you must add the behavior for the control sequence explicitly: [...]

You'll ave to do that for all complex definitions (ie. likley at least also ctrl+d)

Excellent, works like a charm. Thanks for your help! When I find some time I'll try to publish this as an AUR...

Offline

Board footer

Powered by FluxBB