Shift + Tab yields key === 'Unidentified' on Linux

VERIFIED FIXED in Firefox 52

Status

()

defect
P3
normal
VERIFIED FIXED
3 years ago
2 years ago

People

(Reporter: julienw, Assigned: masayuki)

Tracking

Trunk
mozilla54
All
Linux
Points:
---

Firefox Tracking Flags

(firefox-esr45 wontfix, firefox51 wontfix, firefox52 verified, firefox-esr52 fixed, firefox53 verified, firefox54 verified)

Details

(Whiteboard: [parity-Chrome])

Attachments

(1 attachment)

STR:
1. Go to https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code
2. scroll down to the first example;
3. Press "shift + tab"

Expected:
KeyboardEvent: key='Shift' | code='ShiftLeft'
KeyboardEvent: key='Tab' | code='Tab'

Actual:
KeyboardEvent: key='Shift' | code='ShiftLeft'
KeyboardEvent: key='Unidentified' | code='Tab'


Chrome does it as expected.
Has STR: --- → yes
Works as expected on Windows 8.1, fails in Xubuntu 14.04 VM.
OS: Unspecified → Linux
Summary: Shift + Tab yields key === 'Unidentified' → Shift + Tab yields key === 'Unidentified' on Linux
Masayuki probably knows what's going on here.
Flags: needinfo?(masayuki)
Priority: -- → P3
Oh, this is a simple bug.
Assignee: nobody → masayuki
Status: NEW → ASSIGNED
Component: Event Handling → Widget: Gtk
Flags: needinfo?(masayuki)
Hardware: Unspecified → All
Whiteboard: [parity-Chrome]
Version: unspecified → Trunk
Comment on attachment 8838475 [details]
Bug 1339509 Map ISO_Left_Tab to DOM Tab key

https://reviewboard.mozilla.org/r/113412/#review115342
Attachment #8838475 - Flags: review?(karlt) → review+
Pushed by masayuki@d-toybox.com:
https://hg.mozilla.org/integration/autoland/rev/0ba503d21240
Map ISO_Left_Tab to DOM Tab key r=karlt
https://hg.mozilla.org/mozilla-central/rev/0ba503d21240
Status: ASSIGNED → RESOLVED
Closed: 2 years ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla54
Comment on attachment 8838475 [details]
Bug 1339509 Map ISO_Left_Tab to DOM Tab key

Approval Request Comment
[Feature/Bug causing the regression]: Miss mapping of KeyboardEvent.key value on Linux (Chromium maps the keysym to "Tab" correctly).
[User impact if declined]: Linux users might meet this bug when web page handles Shift+Tab key with KeyboardEvent.key.
[Is this code covered by automated tests?]: No.
[Has the fix been verified in Nightly?]: Yes (confirmed with local build built from m-c).
[Needs manual test from QE? If yes, steps to reproduce]: Can do it easy:
1. Open https://w3c.github.io/uievents/tools/key-event-viewer.html
2. Set focus to the editor.
3. Type Shift+Tab
Then, "Tab" should be displayed at "key" of "UI Events" column.
[List of other uplifts needed for the feature/fix]: No.
[Is the change risky?]: No.
[Why is the change risky/not risky?]: Just adding a mapping from native keysym, GDK_ISO_Left_Tab to "Tab".
[String changes made/needed]: No.
Attachment #8838475 - Flags: approval-mozilla-beta?
Attachment #8838475 - Flags: approval-mozilla-aurora?
Comment on attachment 8838475 [details]
Bug 1339509 Map ISO_Left_Tab to DOM Tab key

add a missing key mapping for gtk, aurora53+, beta52+

Is the lack of automated tests something we should address?
Attachment #8838475 - Flags: approval-mozilla-beta?
Attachment #8838475 - Flags: approval-mozilla-beta+
Attachment #8838475 - Flags: approval-mozilla-aurora?
Attachment #8838475 - Flags: approval-mozilla-aurora+
(In reply to Julien Cristau [:jcristau] from comment #10)
> Is the lack of automated tests something we should address?

Unfortunately, we don't have any API to emulate native keyboard event on Linux (I forgot the bug#). Although, we have it on Windows and macOS. That's the reason why I failed to detect this bug at creating the mapping table.
Reproduced the issue with an affected build (51.0, 20170118123726) using the instructions from Comment 0 on Ubuntu 16.04 x64. The output was:

> KeyboardEvent: key='Shift' | code='ShiftLeft'
> KeyboardEvent: key='Unidentified' | code='Tab'


This is verified fixed on Ubuntu 16.04 x64 using: 

    - 52.0b9-build2 (20170223185858),
    - 53.0a2 (2017-02-24),
    - 54.0a1 (2017-02-24)

with the following output now displayed correcttly across these branches:

> KeyboardEvent: key='Shift' | code='ShiftLeft'
> KeyboardEvent: key='Tab' | code='Tab'
You need to log in before you can comment on or make changes to this bug.