[Bug] BackSpace & Delete Button providing wrong input in Android VR Keyboard

Hello Support,

I have been working on developing Virtual Reality Keyboard for Google Cardboard. I am facing issues with 2 keys of Keyboard.

  1. Space Key
  2. Delete Key

I am getting wrong inputs from these two keys when I test Keyboard over my Phone. If I check in Unreal Editor, It all works fine. Also for Vive and Oculus it all works fine. But for Android, I am getting wrong inputs.

Here is the video : bkjEfuGSPWk

APK Link for testing: https://drive.google.com/open?id=1gfnB0_40U9B5mEiub8fGdusHN0cyb0Ap

I have tested over Unreal Engine version 4.16, 4.17, and 4.18. I found same issue over all the latest versions of Unreal.

Kindly let us know if there is bug related to same or there is something wrong I might be doing in the project.

Looking forward hearing back !

Thanks & Regards

Hello,

We’ve recently made a switch to a new bug reporting method using a more structured form. Please visit the link below for more details and report the issue using the new Bug Submission Form. Feel free to continue to use this thread for community discussion around the issue.

https://forums.unrealengine.com/unreal-engine/announcements-and-releases/1410408-unreal-engine-bug-submission-form

Thanks

Hello Sean,

I have submitted the Bug to the Unreal Engine Bug Submission Form - Formstack

But I am not able to track, where my Issue is being sent for analysis.

Will I get any email or response back from Epic itself ?

Thanks for sharing the right method to report bug.

Looking forward hearing from your end !

Thanks & Regards,

I want to bump this question up, as I am also experiencing the exact same issue with 4.21.2, and on Oculus Go. Anyone?

Guys you can use LeftChop instead of Backspace!

Hi, you mean this “” ? I still find it is weird to use this to replace the function of Backspace. Is that intentional? Or a bug?

I think it is a bug, and what i meant with my answer is the following:
get the text from the text input, convert text to string, chop the last character from the string using LeftChop, and finally convert the string to text

It’s a bug - Android has a different mapping of special keys to TCHARs, but FSlateEditableTextLayout has hardcoded the Windows values.

See FSlateEditableTextLayout::HandleKeyChar.

I’m doing the following as a workaround, since Epic will probably never fix this.

For space, just send " " as a KeyChar, backspace is “\b”, don’t know about delete etc.

void UVRKeyboardLibrary::PropagateSpecialKeyEvent(FKey InKey)
{
		// Hacky workaround for Backspace on android becoming 'C' (because backspace on Android is 67, which is ANSI value for 'C').
		// And FSlateEditableTextLayout::HandleKeyChar has a hardcoded check for '\b'.
		// On windows, we can also just send \b for backspace and it works fine...
		if (InKey == EKeys::BackSpace)
		{
			KeyboardWidgetInteractor->SendKeyChar("\b");
		}
		else
		{
			KeyboardWidgetInteractor->PressAndReleaseKey(InKey);
		}
}

For anyone trying to fix this in blueprints:

Do a check for Android, add a sequence to Event Begin Play, and do “Get Platform Name” and do Equals Exactly (===) and compare with “Android” and set the bool to “IsAndroid” or similar.

Then in the “Use Modifier Button” function, for SpaceBar and Backspace, drag off of the “Key” input and select the “Select” node, where you can input the “IsAndroid” variable to the Index node. For Space Bar, on false select “Space Bar”, and for true, put “D”. For Backspace, on false, put “Backspace”, and for true, put “1”. For Enter, on false, put Enter, and on true, put “5”.

2 notes:

  1. This is for cross platform games. If you are ONLY using Quest, you can skip all of these steps and just change the keys to 1, D, and 5. as described above.
  2. It is 1, D and 5, due to ANSI TCHARs remapping Android when FSlateEditableTextLayout has hardcoded the Windows values, but I can confirm that it does work!

Unreal 5.0.3

P.S. Thanks ChatGPT!

1 Like