qtubuntu sends wrong text as part of QKeyEvent

Bug #1664610 reported by Albert Astals Cid
8
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Mir
Fix Released
Medium
Andreas Pokorny
mir (Ubuntu)
Fix Released
Undecided
Unassigned
qtubuntu (Ubuntu)
In Progress
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.

Tags: input

Related branches

description: updated
Revision history for this message
Andreas Pokorny (andreas-pokorny) wrote :

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
Revision history for this message
Andreas Pokorny (andreas-pokorny) wrote :

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
Revision history for this message
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
Revision history for this message
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?

Revision history for this message
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

Revision history for this message
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  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.