-
-
Notifications
You must be signed in to change notification settings - Fork 169
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[6.0 beta] Alt+<key> key is passed through as Meta+Alt+<key> #4066
Comments
We do have code specifically there to silence the spurious key events we get from MS Windows: xpra/xpra/platform/win32/keyboard.py Lines 315 to 327 in 8f72bb1
And for sending the correct key modifier for AltGr events:xpra/xpra/platform/win32/keyboard.py Lines 143 to 157 in 8f72bb1
Can you try running your client with --env=XPRA_EMULATE_ALTGR=0 to see if that makes any difference?
|
Are you sure? |
Yep - the only windows machine in this room are used for games. |
Okay, this is 100% weird. I just tried it without the env var, and I didn't get the meta+alt combo.... so now i'm 100% confused. console
❯ xpra start ssh://mark@oss --start=idea.sh --desktop-scaling=no --speaker=no
2023-12-09 10:24:45,349 Warning: missing audio module
So... that's weird. Maybe stuck meta key? |
I misread:
I have no idea what is going on, sorry. |
No worries - if I can't replicate reliably, I'll close the issue 👍🏻 |
Yeah, I can't replicate this. Closing. Apologies for the noise! |
I MANAGED TO REPLICATE THE ISSUE! 🥳 Same setup as before, just the latest Xpra.
It happens after an automatic reconnect/attach! It's fine one first connection, but if the network drops, it happens. So to replicate:
Or do a manual disconnect and |
@markmandel please include the Ideally also the server's Fixing this is going to be hard. |
Sorry, I'm not quite sure what you mean by this one. But I have the xpra info
If it helps at all, I usually start xpra like so on my client: xpra start ssh://markmandel@dev --start=idea.sh --desktop-scaling=no --speaker=no |
Start your server separately via ssh:
The (huge) log file will show the keyboard mapping step.
Only one copy, so I have nothing to compare it with. My guess is that we're hitting this code path twice: xpra/xpra/x11/server/keyboard_config.py Lines 361 to 364 in 777be6c
The first time works, the second one ends up making a mess. |
I'm having the same issue. If I start the xpra server normally (without If I start the xpra server with I've attached server.log with "-d keyboard" from the first sequence described (start server, connect client, start intellij, Ctrl+Alt+Left works, kill client, reconnect client, Ctrl+Alt+Left doesn't work, restart IntelliJ, Ctrl+Alt+Left works. |
@colincross thank you for doing the legwork for this - it's been on my todo list for weeks, but some family stuff got in the way. |
@colincross / @markmandel please try to see if this is related to
Could be that Thanks for the log, but please try to narrow it down - I don't have the time to parse 16617 lines. |
Here's slightly trimmed diffs of the logs from the first and second connections: @@ -10,8 +9,8 @@
get_keyboard_config(..)=KeyboardConfig(us,us / None / None)
setting key repeat rate from client: 500ms delay / 30ms interval
make_keymask_match: ignored as keynames_for_mod not assigned yet
-set_keymap(KeyboardConfig( / / ), {}, False, False) keyboard_config=KeyboardConfig(us,us / None / None)
-current keyboard id=///f40063fb0f9eba30e43d8aa79e7e0a2d17861664070fd949d685d4db44fffdff, new keyboard id=us,us/None/None/2fb8f478057e2da330c4d29b9ae47046d85d126b7b22e698eae1a7ea2f0ca533
+set_keymap(KeyboardConfig(us,us / None / None), {}, False, False) keyboard_config=KeyboardConfig(us,us / None / None)
+current keyboard id=us,us/None/None/6b67bb6825516e8a633cd7c4634e6a15dc99cdb7fb8ec1445fda277e895f8e75, new keyboard id=us,us/None/None/2fb8f478057e2da330c4d29b9ae47046d85d126b7b22e698eae1a7ea2f0ca533
set_keymap(False) layout='us,us', variant=None, options=None, query-struct={'rules': 'evdev', 'model': 'pc105', 'layout': 'us,us', 'variant': ''}
setting XKB layout group 0
do_set_keymap using xkbmap_query struct=typedict({'rules': 'evdev', 'model': 'pc105', 'layout': 'us,us', 'variant': ''})
@@ -23,9 +22,9 @@
setxkbmap: trying to load rules file b'/usr/share/X11/xkb/rules/evdev'...
setxkbmap: loaded rules from /usr/share/X11/xkb/rules/evdev
XkbRF_GetComponents(<hex>, <hex>, <hex>)=True
-getXkbProperties()={'rules': 'evdev', 'model': 'pc105', 'layout': 'us'}
-setxkbmap: properties={'rules': 'evdev', 'model': 'pc105', 'layout': 'us,us', 'keycodes': 'evdev+aliases(qwerty)', 'symbols': 'pc+us+us:2+inet(evdev)', 'types': 'complete', 'compat': 'complete', 'geometry': 'pc(pc105)'}
-setxkbmap: filtered properties={'rules': 'evdev', 'model': 'pc105', 'layout': 'us,us', 'keycodes': 'evdev+aliases', 'symbols': 'pc+us+us:2+inet', 'types': 'complete', 'compat': 'complete', 'geometry': 'pc'}
+getXkbProperties()={'rules': 'evdev', 'model': 'evdev', 'layout': 'us,us'}
+setxkbmap: properties={'rules': 'evdev', 'model': 'evdev', 'layout': 'us,us', 'keycodes': 'evdev+aliases(qwerty)', 'symbols': 'pc+us+us:2+inet(evdev)', 'types': 'complete', 'compat': 'complete', 'geometry': 'pc(pc105)'}
+setxkbmap: filtered properties={'rules': 'evdev', 'model': 'evdev', 'layout': 'us,us', 'keycodes': 'evdev+aliases', 'symbols': 'pc+us+us:2+inet', 'types': 'complete', 'compat': 'complete', 'geometry': 'pc'}
setxkbmap: XkbGetKeyboardByName returned <hex>
getXkbProperties()={'rules': 'evdev', 'model': "b'`\\xc8P\\x88\\xe1\\x7f'", 'layout': 'us,us'}
X11 keymap property updated: {'rules': 'evdev', 'model': "b'`\\xc8P\\x88\\xe1\\x7f'", 'layout': 'us,us'}
@@ -718,8 +711,8 @@
setxkbmap: properties={'rules': 'evdev', 'model': "b'`\\xc8P\\x88\\xe1\\x7f'", 'layout': 'us,us', 'keycodes': 'evdev+aliases(qwerty)', 'symbols': 'pc+us+us:2+inet(evdev)', 'types': 'complete', 'compat': 'complete', 'geometry': 'pc(pc105)'}
setxkbmap: filtered properties={'rules': 'evdev', 'model': "b'`\\xc8P\\x88\\xe1\\x7f'", 'layout': 'us,us', 'keycodes': 'evdev+aliases', 'symbols': 'pc+us+us:2+inet', 'types': 'complete', 'compat': 'complete', 'geometry': 'pc'}
setxkbmap: XkbGetKeyboardByName returned <hex>
-getXkbProperties()={'rules': 'evdev', 'model': 'evdev', 'layout': 'us,us'}
-X11 keymap property updated: {'rules': 'evdev', 'model': 'evdev', 'layout': 'us,us'}
+getXkbProperties()={'rules': 'evdev', 'model': '\x01', 'layout': 'us,us'}
+X11 keymap property updated: {'rules': 'evdev', 'model': '\x01', 'layout': 'us,us'}
set_keymap: query_struct={'rules': 'evdev', 'model': 'pc105', 'layout': 'us,us', 'variant': ''}
setting XKB layout group 0
set_xmodmap([('clear', 0), ('clear', 1), ('clear', 2), ('clear', 3), ('clear', 4), ('clear', 5), ('clear', 6), ('clear', 7)]) By the time it gets to the Ctrl-Alt-Left keypress everything looks the same except the do_get_keycode (113, Left)=113 (native keymap)
-process_key_action(('key-action', 7, 'Left', True, ('control', 'mod1'), 65361, '', 113, 0)) server keycode=113, group=0
+process_key_action(('key-action', 18, 'Left', True, ('control', 'mod1'), 65361, '', 113, 0)) server keycode=113, group=0
set_keyboard_layout_group(0) config=KeyboardConfig(us,us / None / None), current keyboard group=0
setting XKB layout group 0
filtered_modifiers_set(['control', 'mod1'])={'mod1', 'control'}
is_modifier(113) not found
-handle_key((7, True, 'Left', 65361, 113, ['control', 'mod1'], False, True))
+handle_key((18, True, 'Left', 65361, 113, ['control', 'mod1'], False, True))
handle keycode pressing 113: key 'Left'
fake_key(113, True)
scheduling key repeat timer with delay 500 for Left / 113
-process_key_action(('key-action', 7, 'Left', False, ('control', 'mod1'), 65361, '', 113, 0)) server keycode=113, group=0
+process_key_action(('key-action', 18, 'Left', False, ('control', 'mod1'), 65361, '', 113, 0)) server keycode=113, group=0
set_keyboard_layout_group(0) config=KeyboardConfig(us,us / None / None), current keyboard group=0
setting XKB layout group 0
filtered_modifiers_set(['control', 'mod1'])={'mod1', 'control'}
is_modifier(113) not found
-handle_key((7, False, 'Left', 65361, 113, ['control', 'mod1'], False, True))
+handle_key((18, False, 'Left', 65361, 113, ['control', 'mod1'], False, True))
handle keycode unpressing 113: key 'Left'
fake_key(113, False) |
That bit looks wrong and could be causing problems. Your two clients don't have the same keyboard definition - can you show the keyboard messages of your client?
That's just the window id. |
My "two clients" are two instances of |
Well then, I think we found the bug. Every Please show your |
Describe the bug
When pressing Alt+ on the client app, it is sent through to the client application as Meta+Alt+.
For example - using IntelliJ as my key tracking when using shortcut keys Alt+F12 or Alt+N:
To Reproduce
Steps to reproduce the behavior:
Hit Alt+ on the client.
System Information (please complete the following information):
Additional context
Xpra is awesome 😄
The text was updated successfully, but these errors were encountered: