qtubuntu sends wrong text as part of QKeyEvent

Bug #1664610 reported by Albert Astals Cid on 2017-02-14
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Medium
Andreas Pokorny
mir (Ubuntu)
Undecided
Unassigned
qtubuntu (Ubuntu)
Medium
Andreas Pokorny

Bug Description

When using Unity7 or Plasma a key event created by Ctrl+C is
  QKeyEvent(KeyPress, Key_C, ControlModifier, text="\u0003")

But Unity8+ qtubuntu send to the application
  QKeyEvent(KeyPress, Key_C, ControlModifier, text="c")

This is most likely because QMirClientInput::dispatchKeyEvent is using xkb_keysym_to_utf8 to get the text of the event instead of using xkb_state_key_get_utf8

This breaks for example Konsole that expects the correct text to be sent.

Related branches

description: updated

Mir either has to expose the xkb_state (which we currently do not - and might be only on the server) or provide the keysym text directly with the event.

Changed in mir (Ubuntu):
assignee: nobody → Andreas Pokorny (andreas-pokorny)
assignee: Andreas Pokorny (andreas-pokorny) → nobody
status: New → Confirmed
assignee: nobody → Andreas Pokorny (andreas-pokorny)
tags: added: input
Changed in mir (Ubuntu):
assignee: Andreas Pokorny (andreas-pokorny) → nobody

Went for the second approach key entry text is attached to every press and repeat event.

Changed in mir (Ubuntu):
assignee: nobody → Andreas Pokorny (andreas-pokorny)
assignee: Andreas Pokorny (andreas-pokorny) → nobody
assignee: nobody → Andreas Pokorny (andreas-pokorny)
affects: mir (Ubuntu) → mir
Changed in mir:
milestone: none → 1.0.0
Changed in mir:
importance: Undecided → Medium
Changed in qtubuntu (Ubuntu):
importance: Undecided → Medium
assignee: nobody → Andreas Pokorny (andreas-pokorny)
Changed in mir:
status: Confirmed → In Progress
Changed in qtubuntu (Ubuntu):
status: New → In Progress
Mir CI Bot (mir-ci-bot) wrote :

Fix committed into lp:mir at revision None, scheduled for release in mir, milestone 1.0.0

Changed in mir:
status: In Progress → Fix Committed
Daniel d'Andrada (dandrader) wrote :

Alt+Up and Alt+Down to switch between tabs in Kate also doesn't work currently. Could it have the same cause as this Ctrl+C issue?

Albert Astals Cid (aacid) wrote :

Don't think so, Alt+Up/Alt+Down don't have text attached.

Also http://paste.ubuntu.com/24045824/ seems to report the same presses in both unity7 and unity8

Launchpad Janitor (janitor) wrote :
Download full text (8.3 KiB)

This bug was fixed in the package mir - 0.27.0+17.10.20170630-0ubuntu1

---------------
mir (0.27.0+17.10.20170630-0ubuntu1) artful; urgency=medium

  [ Daniel van Vugt ]
  * New upstream release 0.27.0 (https://launchpad.net/mir/+milestone/0.27.0)
    - ABI summary:
      . mirclient ABI unchanged at 9
      . mirserver ABI bumped to 44
      . mircommon ABI unchanged at 7
      . mirplatform ABI bumped to 61
      . mirprotobuf ABI unchanged at 3
      . mirplatformgraphics ABI bumped to 13
      . mirclientplatform ABI unchanged at 5
      . mirinputplatform ABI bumped to 7
      . mircore ABI unchanged at 1
    - Enhancements:
      . Mostly groundwork required to support major enhancements coming in
        future Mir versions.
      . Removed android-input and eliminated the entire "3rd_party/" subtree.
        Now the Mir source tree contains original code only.
      . Added mir_prompt_session_new_fds_for_prompt_providers_sync API.
      . mirout: Added load and save options for keeping display configs
        on disk.
      . mirout: Added "--" support for applying configuration changes under
        Unity8.
      . Fixed failure of DRM hardware cursor {hide(); show(image);}
      . Added server option: "--cursor software" (MIR_SERVER_CURSOR=software)
      . Added letterboxing/black bars support to the GL renderer in preparation
        for generic output cloning.
      . Added client API for getting the logical size of an output.
      . Migrated MirCookie to use SHA-256.
      . Ensure RealKMSOutputConfiguration stays in sync with actual hardware
        state.
      . Added support for drag-and-drop.
      . Lots of other client API enhancements.
      . Minor clean-ups, optimizations and dead code removal.
      . Added support for building on Ubuntu 17.10 artful.
      . Update example code to use undeprecated API.
      . mesa-kms: Support hardware cursors in hybrid setups.
      . Rework and publish the graphics platform APIs
    - Bugs fixed:
      . [enhancement] Make able to get version information from client /
        server APIs (LP: #1195540)
      . Touch screen coordinates don't rotate with the screen (LP: #1349660)
      . Subpixel order not included in Mir display information (LP: #1393578)
      . [enhancement] Missing client API for relative surface movement (e.g.
        dragging client-decorated windows) (LP: #1420334) . Mir does not reset
        key states when paused or resumed (modifiers get stuck after VT
        switching) (LP: #1536279)
      . NBS never uses mc::MultiMonitorMode::single_monitor_fast, even when
        only a single monitor is plugged in (LP: #1561418)
      . Inconsistent behaviour of Num Lock (LP: #1588237)
      . A scaled (not panned or clipped) mirror/clone mode is desired
        (LP: #1639226)
      . Rotating an output left or right without restarting the
        compositor distorts the image (LP: #1643488)
      . support display scaling slider in unity8 (LP: #1645372)
      . [ FAILED ] NestedInputWithMouse.mouse_pointer_coordinates_in_nested_
        server_are_accumulated (LP: #1646375)
      . [ FAILED ] NestedInputWithMouse.mouse_pointer_position_is_in_sync_with_
        ho...

Read more...

Changed in mir (Ubuntu):
status: New → Fix Released
Changed in mir:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers