cancel
Showing results for 
Search instead for 
Did you mean: 

System keyboard not opening every time in Meta quest 3 device

VishalFuturristic
Honored Guest

Hello, I want to use system keyboard to type in unity text mesh pro input field. when i clicked in input field some time  it open native keyboard and sometime not (I am using meta quest 3). Is it know bug to meta quest 3 ? In Oculus quest 2 it working fine. I have enabled required system keyboard and set target device to Quest 3 also in OVRManager script.

I have also checked my AndroidManifest file and found there is entry of 

<uses-feature android:name="oculus.software.overlay_keyboard" android:required="false" />

My Unity ver is 2022.3.19f1.

So what is the problem? Its very frustrating to continue click on input field then some times it only.

 

1 ACCEPTED SOLUTION

Accepted Solutions

jtriveri
Adventurer

I'm running into this issue too. I haven't found a proper solution in the several days I've spent trying to fix it.

This is my jank fix - attach this script to all your text fields (I use TMP input fields). It reopens the keyboard if it doesn't appear properly. Please don't mark this as the solution though as this is a horrible workaround

 

 

 

using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using TMPro;
using UnityEngine;

public class OculusSystemKeyboardJankFix : MonoBehaviour
{
	private TMP_InputField field;

	private void Awake()
	{
		field = GetComponent<TMP_InputField>();

		field.onSelect.AddListener(s => ShowKeyboardDelay());
	}

	private async void ShowKeyboardDelay()
	{
		await Task.Delay(500);

		if (!TouchScreenKeyboard.visible)
		{
			field.ActivateInputField();
			TouchScreenKeyboard.Open(field.text, TouchScreenKeyboardType.ASCIICapable);
		}
	}
}

 

 

 

View solution in original post

16 REPLIES 16

VishalFuturristic
Honored Guest

Can any one pls help me here !

eli.788101
Explorer

I think it could be related to device settings or configurations. you should make sure that your Unity project is properly configured for the Meta Quest 3 and include any necessary plugins or SDK updates.

VishalFuturristic
Honored Guest

Hello, thanks for your reply. I have checked all the necessary setting for meta quest 3. Point is that when i clicked multiple times inside input field system keyboard open sometimes on quest 3. But on quest 2 by one click keyboard opens. Is there unity ver problem may be for quest 3 ?

jtriveri
Adventurer

I'm running into this issue too. I haven't found a proper solution in the several days I've spent trying to fix it.

This is my jank fix - attach this script to all your text fields (I use TMP input fields). It reopens the keyboard if it doesn't appear properly. Please don't mark this as the solution though as this is a horrible workaround

 

 

 

using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using TMPro;
using UnityEngine;

public class OculusSystemKeyboardJankFix : MonoBehaviour
{
	private TMP_InputField field;

	private void Awake()
	{
		field = GetComponent<TMP_InputField>();

		field.onSelect.AddListener(s => ShowKeyboardDelay());
	}

	private async void ShowKeyboardDelay()
	{
		await Task.Delay(500);

		if (!TouchScreenKeyboard.visible)
		{
			field.ActivateInputField();
			TouchScreenKeyboard.Open(field.text, TouchScreenKeyboardType.ASCIICapable);
		}
	}
}

 

 

 

Anton111111
Expert Protege

Oh i have same issue in Quest2 (don't test on Q3). It can doesn't show at all or can show but don't change input when typing and some times it works good. 

i've tried same solution in my project and it doesn't fix issue. It sometimes works and sometimes doesn't 

Thanks @jtriveri. It worked.

@jtriveri, Do you have idea why with your solution if field reopened after delay it has "normal" background instead of "selected"?

jtriveri
Adventurer

Are you talking about the appearance of the text field? You might be able to select the text field in the same lines where I open the keyboard.

EventSystem.current.SetSelectedGameObject(field.gameObject);