Thanks for that, but that example wasn't a viable option for us.
But I did find a solution that actually could be included in the PicoXR SDK.
I added a custom UPL.xml and created a keyboard that creates a new VirtualKeyboardInput, assigning it to the input and it carries the following functionality.
<gameActivityClassAdditions>
<insert>
public class HiddenVirtualKeyboardInput extends VirtualKeyboardInput
{
public HiddenVirtualKeyboardInput(Context context, AttributeSet attrs, int defStyle)
{
super(context, attrs, defStyle);
}
public HiddenVirtualKeyboardInput(Context context, AttributeSet attrs)
{
super(context, attrs);
}
public HiddenVirtualKeyboardInput(Context context)
{
super(context);
}
public void setVisibility(int visibility)
{
// 8 is the number for hidden, probably could use View.GONE instead
super.setVisibility(8);
}
}
</insert>
</gameActivityClassAdditions>
<!-- optional additions to GameActivity onCreate in GameActivity.java -->
<gameActivityOnCreateAdditions>
<insert>
newVirtualKeyboardInput = new HiddenVirtualKeyboardInput(this);
newVirtualKeyboardInput.setVisibility(View.GONE);
</insert>
</gameActivityOnCreateAdditions>
Sadly, you cannot just set newVirtualKeyboardInput to null as it'll crash because there is no null checking. There needs to be a better solution built in that resolves this issue in Unreal Engine itself, but this solves the problem quite nicely.