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.
public class HiddenVirtualKeyboardInput extends VirtualKeyboardInput
public HiddenVirtualKeyboardInput(Context context, AttributeSet attrs, int defStyle)
super(context, attrs, defStyle);
public HiddenVirtualKeyboardInput(Context context, AttributeSet attrs)
public HiddenVirtualKeyboardInput(Context context)
public void setVisibility(int visibility)
// 8 is the number for hidden, probably could use View.GONE instead
<!-- optional additions to GameActivity onCreate in GameActivity.java -->
newVirtualKeyboardInput = new HiddenVirtualKeyboardInput(this);
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.