keepassxreboot / keepassxc

KeePassXC is a cross-platform community-driven port of the Windows application “Keepass Password Safe”.
https://keepassxc.org/
Other
20.74k stars 1.43k forks source link

Auto-Type Problems with AltGr libvirt/virt-manger/spicy #10510

Open memoryoverride opened 5 months ago

memoryoverride commented 5 months ago

Overview

A username / password that contains a char which requires pressing the AltGr key results in just the usual char without the modifier, but instead the print key is being used. This only occurs when using autotype into a virtual machine (virt-manger / libvirt / spicy) the behaviour is independent of the guest OS. The problem does not occur in web browsers, terminal sessions etc.

Steps to Reproduce

  1. use the autotype function (i.e. right clink "Perform Auto-Type") to enter a username (or password) into the last active window

Expected Behaviour

A password like "abc@123|" should be put into a login form inside a virtual machine.

Actual Behavior

The password entered will be "abcq123<" (in the de keyboard layout the @ sign is on the q key and the | is on the < key); however in guest OS the snip tool will be activated as if I had pressed the Print key.

Context

I'm quite confident that this is not related to #324 as they keyboard layout is not the problem, the mapping of the keys is consistent (no mix-up of chars)

$> setxkbmap -print -verbose 10

Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     de
options:    grp:alt_space_toggle,terminate:ctrl_alt_bksp
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwertz)
types:      complete
compat:     complete
symbols:    pc+de+inet(evdev)+group(alt_space_toggle)+terminate(ctrl_alt_bksp)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwertz)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+de+inet(evdev)+group(alt_space_toggle)+terminate(ctrl_alt_bksp)"    };
    xkb_geometry  { include "pc(pc105)" };
};

as suggested #324 i added

setxkbmap -option terminate:ctrl_alt_bksp
setxkbmap de -option grp:alt_space_toggle

but there is no difference in the behaviour.

NOTE: KeePassXC - Version 2.7.4 Revision: 63b2394

Qt 5.15.8 Debugging mode is disabled.

Operating system: Debian GNU/Linux 12 (bookworm) CPU architecture: x86_64 Kernel: linux 6.1.0-18-amd64

Enabled extensions:

Cryptographic libraries:

Operating System: Debian GNU/Linux 12 (bookworm) Desktop Env: i3 Windowing System: X11

droidmonkey commented 5 months ago

Are there two different keyboard layouts between Host and Guest OS?

What happens when you manually type out what you describe?

memoryoverride commented 5 months ago

both host and guest OS have the same keyboard layout, manually typing the same thing (in the libvirt window) does not result in the same issue;

however as suggested in #324 I tried to reproduce the issue with xdotool xdotool search --name 'win11' | xargs xdotool windowfocus && xdotool type 'abc@123|' which also results in the same issue (i.e abcq123<);

using linux vm (e.g. debian) as guest results in abc123 (ie. @ and | are missing); screenshot tool starts (flameshot in this case). in tty1 it obviously is abcq123< (obviously no screenshot tool will start ;)) for documentation purposes the debug info from the virtual machine (X11).

$> setxkbmap -print -verbose 10
Setting verbose level to 10
locale is C
Trying to load rules file ./rules/evdev...
Trying to load rules file /usr/share/X11/xkb/rules/evdev...
Success.
Applied rules from evdev:
rules:      evdev
model:      pc105
layout:     de
variant:    nodeadkeys
Trying to build keymap using the following components:
keycodes:   evdev+aliases(qwertz)
types:      complete
compat:     complete
symbols:    pc+de(nodeadkeys)+inet(evdev)
geometry:   pc(pc105)
xkb_keymap {
    xkb_keycodes  { include "evdev+aliases(qwertz)" };
    xkb_types     { include "complete"  };
    xkb_compat    { include "complete"  };
    xkb_symbols   { include "pc+de(nodeadkeys)+inet(evdev)" };
    xkb_geometry  { include "pc(pc105)" };