osism / issues

This repository is used for bug reports that are cross-project or not bound to a specific repository (or to an unknown repository).
https://www.osism.tech
1 stars 1 forks source link

spice-html5 proxy keymap issue with international layouts #1039

Open oliver-tenhafen opened 3 months ago

oliver-tenhafen commented 3 months ago

OSISM release version

7.0.2

What's the problem?

When opening a spice console to a nova instance we get errors with german layout keyboards. e.g. a number sign # returns a no map for 163 error. This commit mitigates the issue but is not yet added to nova.

References to existing reports

No response

Severity

medium

Urgency

medium

berendt commented 3 months ago

I think the issue is not related to Nova itself. In Kolla we install the spice-html5 package provided by Ubuntu in the nova-spicehtml5proxy container image:

()[root@e5c6bf4af5bc /]# dpkg -l | grep spice
ii  spice-html5                    0.2.2-0ubuntu3                          all          Spice Web client which runs entirely within a modern browser

Latest spice-html5 release (0.3.0) is a few years old (https://gitlab.freedesktop.org/spice/spice-html5/-/releases). The referenced merged MR is 4 months old:

commit 9c8377f86c3423010e5705861429761074ed63e2
Author: David Edler <david.edler@canonical.com>
Date:   Tue Jan 2 09:59:44 2024 +0100

    fix keyboard mappings for international keyboard layouts

    Key presses by a client with an international keyboard layout will often fail.
    I.e. the key AltGr creates an error message "No mapping for key 255". This key is important to produce the @ symbol i.e. on German language keyboard. The currently used e.keyCode differs by browser vendor and is ambiguous for some keys.
    This change relies instead on the event.code, which is stable for most common keys and more complete.
    I keep the old implementation to rely on e.keyCode as a fallback if the e.code is not available or the mapping for it is missing.

    See merge request spice/spice-html5!14

    Signed-off-by: David Edler <david.edler@canonical.com>
    Acked-by: Frediano Ziglio <freddy77@gmail.com>

Probably we can simple uninstall the spice-html5 package in the nova-spicehtml5proxy container image and use a copy of the files in the spice/spice-html5 repository.

oliver-tenhafen commented 3 months ago

Yes indeed not not a nova issue then. Your suggestion seems a viable workaround.

killermoehre commented 3 months ago

@berendt can you update the package inside the container? Or even switch to git checkout for this? I know the last Spice-HTML upstream release is from 2020, but according to the changelog for Ubuntu 22.04 there are downstream patches.

berendt commented 3 months ago

We have 0.2.2-0ubuntu3 installed. At least 0.2.2-0ubuntu3 does not include the relevant commit. I think it makes most sense to simply use the files from the repository. I will prepare an overlay for the nova-spicehtml5proxy container image.

berendt commented 3 months ago

@oliver-tenhafen @killermoehre PR prepared. When CI is done, I'll merge it. Images will then be available later in the day. You would then have to test this with quay.io/nova/nova-spice5htmlproxy:2023.2 as we use the NoVNC proxy ourselves.

killermoehre commented 3 months ago

@berendt The image should just be chosen when we deploy nova, right? Or do we need to do something special in the configuration to include the image?

berendt commented 3 months ago

You have to add 2 parameters to your environments/kolla/images.yml file:

nova_spicehtml5proxy_image: "quay.io/osism/nova-spicehtml5proxy"
nova_spicehtml5proxy_tag: "2023.2"

Afterwards it should be sufficient to run osism apply -a pull nova -l TESTNODE followed by osism apply -a refresh-containers -l TESTNODE.

berendt commented 3 months ago

Merged. Build is running.

berendt commented 3 months ago

Build failed because of Gitlab maintenance. Hope nightly builds will work again.

Bildschirmfoto 2024-06-03 um 20 59 39
berendt commented 3 months ago

Nightly builds are fine again. Can be tested.

killermoehre commented 2 months ago

The container is broken, trying to start it spews

<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}}}>>>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}}>>{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<}}>>{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<}}>>{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{{<<{<{<{<{<{<{<{<{<{<{<{<}>{<{{<<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{{<<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}}}>>>{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}}}>>>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<}}>>{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}}}>>>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{{<<{<{<{<{<{<{<{<{<{<{<{<{<{<{{<<{<{<}>{<{<{<}}>>{<{<{<{<{<{<{<{<{<{{<<{<{<{<{<{<}>{{<<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{{<<{{<<{<{<{<{{<<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}}>>{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{{<<{<{<{<{<{<{<}>{<{<{<{{<<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<}}>>{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{{<<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<}}>>{<{<{<{<{<{<{<{{<<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}}>>{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<{<}>{{<<{<}>{<{<{{<<}>{{<<{<}>{{<<}>{<{<{<{<{<{<}>{<{<{<{{<<{<{<{{<<{<{<}>{{<<{{<<{<}>{{<<{{<<{<}>{<{<{<{{<<{<{<{<}>{<{<{<}>{<{<}>{<{<}>{{<<{<}>{<}>{<}>{<}>{<}}>>{<{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}}>>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>}>{<{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<}>{<

in the logs