Skip to content

Commit

Permalink
don't change the modifiers list if the key we're pressing is going to…
Browse files Browse the repository at this point in the history
… be doing that, also add more debug logging

git-svn-id: https://xpra.org/svn/Xpra/trunk@25606 3bb7dfac-3a0b-4e04-842a-767bc560f471
  • Loading branch information
totaam committed Mar 11, 2020
1 parent fb94a8b commit 045f1a0
Showing 1 changed file with 20 additions and 10 deletions.
30 changes: 20 additions & 10 deletions src/xpra/x11/server_keyboard_config.py
Original file line number Diff line number Diff line change
Expand Up @@ -431,12 +431,14 @@ def do_get_keycode(self, client_keycode, keyname, pressed, modifiers, group):
return -1
if self.xkbmap_raw:
return client_keycode
def klog(msg, *args):
def kmlog(msg, *args):
if keyname in DEBUG_KEYSYMS:
l = log.info
else:
l = log
l("do_get_keycode%s"+msg, (client_keycode, keyname, pressed, modifiers, group), *args)
l(msg, *args)
def klog(msg, *args):
kmlog("do_get_keycode%s"+msg, (client_keycode, keyname, pressed, modifiers, group), *args)
keycode = None
if self.xkbmap_query:
keycode = self.keycode_translation.get((client_keycode, keyname)) or client_keycode
Expand Down Expand Up @@ -478,25 +480,33 @@ def klog(msg, *args):
for level in range(8):
if level not in levels:
levels.append(level)
kmlog("will try levels: %s", levels)
for level in levels:
keycode = self.keycode_translation.get((keyname, level))
if keycode:
klog("=%i (level=%i, shift=%s, mode=%i)", keycode, level, shift, mode)
def toggle_modifier(mod):
keynames = self.keynames_for_mod.get(mod)
if keyname in keynames:
kmlog("not toggling '%s' since '%s' should deal with it", mod, keyname)
#the keycode we're returning is for this modifier,
#assume that this will end up doing what is needed
return
if mod in modifiers:
kmlog("removing '%s' from modifiers", mod)
modifiers.remove(mod)
else:
kmlog("adding '%s' to modifiers", mod)
modifiers.append(mod)
if (level & 1) ^ shift:
#shift state does not match
if "shift" in modifiers:
modifiers.remove("shift")
else:
modifiers.append("shift")
toggle_modifier("shift")
if (level & 2) ^ mode:
#try to set / unset mode:
for mod, keynames in self.keynames_for_mod.items():
if "ISO_Level3_Shift" in keynames or "Mode_switch" in keynames:
#found mode switch modified
if mod in modifiers:
modifiers.remove(mod)
else:
modifiers.append(mod)
toggle_modifier(mod)
break
break
#this should not find anything new?:
Expand Down

0 comments on commit 045f1a0

Please sign in to comment.