[5.2.0.16] Hardware keyboard: keys 1 2 E S D F B produce no character in Android App Support (correct keycode, no Unicode mapping)

REPRODUCIBILITY: 100%
OS VERSION: 5.2.0.16
HARDWARE: Jolla Phone (2026) (jp2601)
UI LANGUAGE: English (US)
REGRESSION: Not tested on an earlier release

DESCRIPTION:

With an external hardware keyboard, the keys 1, 2, E, S, D, F and B (and their shifted
variants) produce no character at all inside Android AppSupport applications. Every other
key works normally. The same keys work correctly in all native Sailfish applications.

Reproduced over two different transports:
two keyboards over Bluetooth LE and one over USB

The keycode is correct. Observed in a browser inside AppSupport:

  key             code      keyCode
  "a"             KeyA      65        <- works, character produced
  "Unidentified"  KeyE      69        <- no character
  "Unidentified"  KeyS      83        <- no character
  "Unidentified"  KeyD      68        <- no character
  "Unidentified"  KeyF      70        <- no character
  "Unidentified"  Digit1    49        <- no character
  "Unidentified"  Digit2    50        <- no character

code and keyCode are correct for every affected key; only the resolved character is
missing, i.e. the Unicode lookup for those keycodes returns nothing.

PRECONDITIONS:

Any external hardware keyboard (Bluetooth or USB) connected to the device, and any Android AppSupport application with a text input field.

STEPS TO REPRODUCE:

  1. Connect an external keyboard (Bluetooth or USB) and confirm it types correctly in a
    native Sailfish app, e.g. Notes.
  2. Open any Android App Support app with a text field.
  3. Type the full alphabet and the digits 0-9 on the hardware keyboard.

EXPECTED RESULT:

All characters appear, as they do in native applications.

ACTUAL RESULT:

Every character appears except 1, 2, e, s, d, f and b, which produce nothing at all. Their shifted variants are equally dead.

MODIFICATIONS:

  • Developer mode enabled
  • libpebble3d installed. It ships /etc/systemd/system/bluetooth.service.d/50-libpebble3d.conf (sets Environment=TRACING=-E).
  • /etc/systemd/system/bluetooth.service.d/99-uhid-fix.conf added
    (SupplementaryGroups=uhid) as a workaround for a separate bug that otherwise prevents
    Bluetooth LE HID devices from creating an input device at all. Not related to this issue:
    the same behaviour occurs with a USB keyboard, which does not depend on that workaround.
  • Chum, Storeman, but just for user facing applications

ADDITIONAL INFORMATION:

The Keytester HTML file I tried in an Android Browser (Vivaldi): keytester.html · GitHub

4 Likes

Thanks for spotting this. They’re all keys that have KEY_FN variants, and they were getting mixed up in Appsupport 15. Fixed now in devel, and hopefully you’ll get it soon.

11 Likes