xpra icon
Bug tracker and wiki

Opened 5 weeks ago

Last modified 5 weeks ago

#1665 assigned defect

Keyboard mapping: German keyboard special characters wrong (client: Win7, server:CentOS7)

Reported by: Alex Owned by: Antoine Martin
Priority: major Milestone: 2.2
Component: keyboard Version: trunk
Keywords: keyboard kb mapping german AltGr Cc: t.mainka@…

Description

Unfortunately the keyboard mapping doesn't work well for a german
keyboard (CentOS 7 <-> CentOS 7 works well).
I've tried and can confirm his observation using different 2.x.x Clients on Win 7.
Switching the keyboard (in xpra-context-menu) from "auto" to "de" makes no difference.

Example:
The pipe symbol "|" is "AltGR"+"<" on a german keyboard.
In an xpra session you only get "<".
Same for "@" ("AltGr?"+"q") and others.

Server:

  • CentOS 7.4.1708
  • xpra v2.1-r15692 (xpra-2.1-0.20170421r15692.el7_3.x86_64)
  • same with: xpra v2.1.2-r16903 (xpra-2.1.2-1.r16903.el7_4.x86_64)

Client:

  • Win 7 x86_64
  • xpra v2.1.2-r16904
  • Xpra_cmd.exe start ssh:%CENTOS7-SERVER% --start-child="xterm -ls" --debug=keyboard

xev output for local input on server:

    KeyPress event, serial 30, synthetic NO, window 0x4400001,
        root 0x28e, subw 0x0, time 535304170, (389,-605), root:(889,416),
        state 0x10, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
        XKeysymToKeycode returns keycode: 92
        XLookupString gives 0 bytes:
        XmbLookupString gives 0 bytes:
        XFilterEvent returns: False
    
    KeyPress event, serial 33, synthetic NO, window 0x4400001,
        root 0x28e, subw 0x0, time 535304218, (389,-605), root:(889,416),
        state 0x90, keycode 52 (keysym 0xbb, guillemotright), same_screen YES,
        XLookupString gives 2 bytes: (c2 bb) "»"
        XmbLookupString gives 2 bytes: (c2 bb) "»"
        XFilterEvent returns: False
    
    KeyRelease event, serial 33, synthetic NO, window 0x4400001,
        root 0x28e, subw 0x0, time 535304307, (389,-605), root:(889,416),
        state 0x90, keycode 52 (keysym 0xbb, guillemotright), same_screen YES,
        XLookupString gives 2 bytes: (c2 bb) "»"
        XFilterEvent returns: False
    
    KeyRelease event, serial 33, synthetic NO, window 0x4400001,
        root 0x28e, subw 0x0, time 535304530, (389,-605), root:(889,416),
        state 0x90, keycode 108 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
        XKeysymToKeycode returns keycode: 92
        XLookupString gives 0 bytes:
        XFilterEvent returns: False

xev output in xpra session:

    KeyPress event, serial 33, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536295354, (568,425), root:(697,581),
        state 0x10, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
        XLookupString gives 0 bytes:
        XmbLookupString gives 0 bytes:
        XFilterEvent returns: False

    KeyRelease event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536295384, (568,425), root:(697,581),
        state 0x6014, keycode 37 (keysym 0xffe3, Control_L), same_screen YES,
        XLookupString gives 0 bytes:
        XFilterEvent returns: False

    KeyPress event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536295384, (568,425), root:(697,581),
        state 0x6010, keycode 77 (keysym 0xff7f, Num_Lock), same_screen YES,
        XLookupString gives 0 bytes:
        XmbLookupString gives 0 bytes:
        XFilterEvent returns: False

    KeyRelease event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536295384, (568,425), root:(697,581),
        state 0x6010, keycode 77 (keysym 0xff7f, Num_Lock), same_screen YES,
        XLookupString gives 0 bytes:
        XFilterEvent returns: False

    KeyPress event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536295384, (568,425), root:(697,581),
        state 0x6000, keycode 113 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
        XLookupString gives 0 bytes:
        XmbLookupString gives 0 bytes:
        XFilterEvent returns: False

    KeyPress event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536295547, (568,425), root:(697,581),
        state 0x80, keycode 77 (keysym 0xff7f, Num_Lock), same_screen YES,
        XLookupString gives 0 bytes:
        XmbLookupString gives 0 bytes:
        XFilterEvent returns: False

    KeyRelease event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536295547, (568,425), root:(697,581),
        state 0x90, keycode 77 (keysym 0xff7f, Num_Lock), same_screen YES,
        XLookupString gives 0 bytes:
        XFilterEvent returns: False

    KeyPress event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536295547, (568,425), root:(697,581),
        state 0x90, keycode 183 (keysym 0x3c, less), same_screen YES,
        XKeysymToKeycode returns keycode: 94
        XLookupString gives 1 bytes: (3c) "<"
        XmbLookupString gives 1 bytes: (3c) "<"
        XFilterEvent returns: False

    KeyRelease event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536295629, (568,425), root:(697,581),
        state 0x90, keycode 183 (keysym 0x3c, less), same_screen YES,
        XKeysymToKeycode returns keycode: 94
        XLookupString gives 1 bytes: (3c) "<"
        XFilterEvent returns: False

    KeyPress event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536295901, (568,425), root:(697,581),
        state 0x6090, keycode 77 (keysym 0xff7f, Num_Lock), same_screen YES,
        XLookupString gives 0 bytes:
        XmbLookupString gives 0 bytes:
        XFilterEvent returns: False

    KeyRelease event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536295901, (568,425), root:(697,581),
        state 0x6090, keycode 77 (keysym 0xff7f, Num_Lock), same_screen YES,
        XLookupString gives 0 bytes:
        XFilterEvent returns: False

    KeyRelease event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536297311, (568,425), root:(697,581),
        state 0x6080, keycode 113 (keysym 0xfe03, ISO_Level3_Shift), same_screen YES,
        XLookupString gives 0 bytes:
        XFilterEvent returns: False

    KeyPress event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536297312, (568,425), root:(697,581),
        state 0x6000, keycode 77 (keysym 0xff7f, Num_Lock), same_screen YES,
        XLookupString gives 0 bytes:
        XmbLookupString gives 0 bytes:
        XFilterEvent returns: False

    KeyRelease event, serial 36, synthetic NO, window 0xa00001,
        root 0x25d, subw 0x0, time 536297312, (568,425), root:(697,581),
        state 0x6010, keycode 77 (keysym 0xff7f, Num_Lock), same_screen YES,
        XLookupString gives 0 bytes:
        XFilterEvent returns: False

Local xkbmap on server is:

    xkb_keymap {
            xkb_keycodes  { include "evdev+aliases(qwertz)" };
            xkb_types     { include "complete"      };
            xkb_compat    { include "complete"      };
            xkb_symbols   { include "pc+de+inet(evdev)"     };
            xkb_geometry  { include "pc(pc105)"     };
    };
    rules:      evdev
    model:      pc105
    layout:     de

Xpra session xkbmap is:

    xkb_keymap {
    };
    rules:      base
    layout:    de

Logs will be attached.

Attachments (5)

Keyboard_info.exe.txt (243 bytes) - added by Alex 5 weeks ago.
keyboard info on client
Keymap_info.exe.txt (72.1 KB) - added by Alex 5 weeks ago.
keymap info on client
System.txt (9.3 KB) - added by Alex 5 weeks ago.
system info client
Server_Info.txt (110.8 KB) - added by Alex 5 weeks ago.
system info server
xpra_cmd.log (601.9 KB) - added by Alex 5 weeks ago.
"xpra_cmd.exe […] --debug=keyboard" stderr on client

Download all attachments as: .zip

Change History (7)

Changed 5 weeks ago by Alex

Attachment: Keyboard_info.exe.txt added

keyboard info on client

Changed 5 weeks ago by Alex

Attachment: Keymap_info.exe.txt added

keymap info on client

Changed 5 weeks ago by Alex

Attachment: System.txt added

system info client

Changed 5 weeks ago by Alex

Attachment: Server_Info.txt added

system info server

comment:1 Changed 5 weeks ago by Antoine Martin

Status: newassigned

Thanks for the details.

I assume that the keyboard looks like the one in the picture here: https://en.wikipedia.org/wiki/German_keyboard_layout.

We have had problems with AltGr in the past: #62, #602.
Hopefully this is not related to this bug: #1578, or even this one: #1607 as this would require a more fundamental change: #1049.

I'll take a look when I get a chance. This may not make the cut for 2.2

Changed 5 weeks ago by Alex

Attachment: xpra_cmd.log added

"xpra_cmd.exe [...] --debug=keyboard" stderr on client

comment:2 in reply to:  1 Changed 5 weeks ago by Alex

Replying to Antoine Martin:

I assume that the keyboard looks like the one in the picture here: https://en.wikipedia.org/wiki/German_keyboard_layout.

It looks pretty much like that. (At least the pipe and @-sign are in place.)

We have had problems with AltGr in the past: #62, #602.

Now i get where the Level3_shift is coming from ))

Hopefully this is not related to this bug: #1578, or even this one: #1607 as this would require a more fundamental change: #1049.

My understanding of X11-keymap-handling is poor, so please just tell me if you need more info or so.

I'll take a look when I get a chance. This may not make the cut for 2.2

Thanks!)

Note: See TracTickets for help on using tickets.