Skip to content
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

Properly track keymap when virtual keyboard is in use #1222

Closed
kchibisov opened this issue Nov 10, 2023 · 1 comment · Fixed by #1231
Closed

Properly track keymap when virtual keyboard is in use #1222

kchibisov opened this issue Nov 10, 2023 · 1 comment · Fixed by #1231

Comments

@kchibisov
Copy link
Member

  • Have dedicated input types for both normal input and
    Virtual keyboard. Each type should track its keymap
    and modifiers state separatelly. They should also
    register into some global type that they were
    the last to send keys for the given client.

  • When sending input events for the client,
    smithay should compare old != new source
    and resend keymap with the modifiers being
    active on that keymap, and then forward the
    state.

The tracking should be per-seat, not per-client
since seat can focus only one client at a time
and virtual keyboard just improves on normal
keyboard.

@kchibisov
Copy link
Member Author

And to clarify, that is only when sending input to clients, like you decided to type not on a virtual keyboard but on a regular one, and you don't have IM grab going on. But that could be naturally determined due to a fact that virtual keyboard can't type into grab.

The smithay should also never use keymap from the virtual_keyboard for itself.

chrisduerr added a commit to chrisduerr/smithay that referenced this issue Nov 15, 2023
Smithay's virtual keyboard implementation previously stored a single
keymap on the seat, updating it whenever either the real or virtual
keyboard's keymap was changed. As a result the two keyboards could break
each other by setting an incorrect keymap.

To allow both the seat's real keyboard and the virtual keyboard to
function simultaneously, a separate keymap is stored for each and
whenever an input event related to a keymap is handled, the keymap is
updated.

Closes Smithay#1222.
chrisduerr added a commit to chrisduerr/smithay that referenced this issue Nov 15, 2023
Smithay's virtual keyboard implementation previously stored a single
keymap on the seat, updating it whenever either the real or virtual
keyboard's keymap was changed. As a result the two keyboards could break
each other by setting an incorrect keymap.

To allow both the seat's real keyboard and the virtual keyboard to
function simultaneously, a separate keymap is stored for each and
whenever an input event related to a keymap is handled, the keymap is
updated.

Closes Smithay#1222.
chrisduerr added a commit to chrisduerr/smithay that referenced this issue Nov 16, 2023
Smithay's virtual keyboard implementation previously stored a single
keymap on the seat, updating it whenever either the real or virtual
keyboard's keymap was changed. As a result the two keyboards could break
each other by setting an incorrect keymap.

To allow both the seat's real keyboard and the virtual keyboard to
function simultaneously, a separate keymap is stored for each and
whenever an input event related to a keymap is handled, the keymap is
updated.

Closes Smithay#1222.
chrisduerr added a commit to chrisduerr/smithay that referenced this issue Nov 16, 2023
Smithay's virtual keyboard implementation previously stored a single
keymap on the seat, updating it whenever either the real or virtual
keyboard's keymap was changed. As a result the two keyboards could break
each other by setting an incorrect keymap.

To allow both the seat's real keyboard and the virtual keyboard to
function simultaneously, a separate keymap is stored for each and
whenever an input event related to a keymap is handled, the keymap is
updated.

Closes Smithay#1222.
Drakulix pushed a commit that referenced this issue Nov 20, 2023
Smithay's virtual keyboard implementation previously stored a single
keymap on the seat, updating it whenever either the real or virtual
keyboard's keymap was changed. As a result the two keyboards could break
each other by setting an incorrect keymap.

To allow both the seat's real keyboard and the virtual keyboard to
function simultaneously, a separate keymap is stored for each and
whenever an input event related to a keymap is handled, the keymap is
updated.

Closes #1222.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant