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

bug(android): Special character '<' rendering problem with IPA (SIL) keyboard #9499

Closed
1 of 8 tasks
bharanidharanj opened this issue Aug 21, 2023 · 5 comments · Fixed by #9591
Closed
1 of 8 tasks

Comments

@bharanidharanj
Copy link

Describe the bug

I noticed that the special character "<" is missing in the long press option while using IPA (SIL) keyboard.

Reproduce the bug

  1. Install Keyman 17.0.162-alpha build.
  2. Open Keyman In-App.
  3. Download and Install IPA (SIL) Keyboard.
  4. Switch to IPA (SIL) keyboard in the Keyman App.
  5. Click the Number (123) key.
  6. Long Press "]" key.
  7. From the Longpress options, Select "<" special character.

Here, I noticed that the "<" symbol does not appear on the screen. Other two special characters (>>, }) appear correctly. Seems to be an issue.

I have attached the Screenshot as well as the Video file for reference.

.. special character is missing

splcharmissing.mp4

Expected behavior

Clicking the "<" special character on the longpress option should be correctly and rendered and appear on the text screen.

Related issues

No response

Keyman apps

  • Keyman for Android
  • Keyman for iPhone and iPad
  • Keyman for Linux
  • Keyman for macOS
  • Keyman for Windows
  • Keyman Developer
  • KeymanWeb
  • Other - give details at bottom of form

Keyman version

17.0.162-alpha

Operating system

Android 5.0, 9.0, 12.0

Device

Android 12.0 / API 31 emulator, Redmi Note 8 Pro

Target application

No response

Browser

No response

Keyboard name

IPA (SIL)

Keyboard version

1.8.6

Language name

und-Latn

Additional context

No response

@bharanidharanj bharanidharanj changed the title bug(android): Special character "<" does not appear on the screen while using IPA (SIL) keyboard bug(android): Special character '<' rendering problem with IPA (SIL) keyboard Aug 21, 2023
@jahorton
Copy link
Contributor

I just tried this out in a few other configurations - the bug seems to be Android-specific.

Both stable and alpha of Keyman for iOS output the < just fine, as does the current alpha build of KMW when tested with remote device emulation in Chrome.

@darcywong00 darcywong00 added this to the A17S21 milestone Aug 25, 2023
@darcywong00
Copy link
Contributor

The keyboard source numeric layer has

{
  "text": "<",
  "id": "K_COMMA",
  "layer": "shift"
},

In the Android emulator from the numeric layer, I halted after selecting the subkey and saw

keyId -> "numeric-K_COMMA+shift"

@jahorton - is that correct? Or should the keyID be numeric-K_COMMA+numeric-shift?

@jahorton
Copy link
Contributor

Ah, it's one of those. I didn't realize that - it's probably related to being a subkey using a specific layer modifier. I'd have to double-check to see exactly what it should be, but that's a very notable lead.

@mcdurdin mcdurdin modified the milestones: A17S21, A17S22 Sep 15, 2023
@jahorton
Copy link
Contributor

jahorton commented Sep 18, 2023

After the double-check, it seems that the ID is correct: numeric-K_COMMA+shift.

Cross-reference with

/**
* A keyboard-unique identifier to be used for any display elements representing this key
* in user interfaces and/or on-screen keyboards.
*
* Distinguishes between otherwise-identical keys on different layers of an OSK.
* Includes identifying information about the key's display layer.
*
* Examples, given a 'default' display layer, matching keys to Keyman keyboard language:
*
* ```
* "default-K_Q"
* + [K_Q]
* "default-K_Q+shift"
* + [K_Q SHIFT]
* ```
*
* Useful when only the active keyboard is known about an input event.
*/
@Enumerable
public get elementID(): string {
if(typeof this.id === 'undefined') {
return undefined;
}
return this.displayLayer + '-' + this.coreID;
}

and

/**
* A unique identifier based on both the key ID & the 'desktop layer' to be used for the key.
*
* Allows diambiguation of scenarios where the same key ID is used twice within a layer, but
* with different innate modifiers. (Refer to https://github.com/keymanapp/keyman/issues/4617)
* The 'desktop layer' may be omitted if it matches the key's display layer.
*
* Examples, given a 'default' display layer, matching keys to Keyman keyboard language:
*
* ```
* "K_Q"
* + [K_Q]
* "K_Q+shift"
* + [K_Q SHIFT]
* ```
*
* Useful when the active layer of an input-event is already known.
*/
@Enumerable
public get coreID(): string {
if(typeof this.id === 'undefined') {
return undefined;
}
let baseID = this.id || '';
if(this.displayLayer != this.layer) {
baseID = baseID + '+' + this.layer;
}
return baseID;
}

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

Successfully merging a pull request may close this issue.

4 participants