I’ve done quite a bit of this.
I’ve been using an OSC controller on my iPad (touch OSC) which i’ve been handling with a python script - the script sends data over TCP to unreal and triggers events / sends data etc.
You could skip the python step by using the OSC plugin for UE
OSC is a great all purpose interface for devices - as well as my iPad I was also using a Novation Launchpad as a control device.