Implementing jump

What you have done (creating different PlayerControllers for Keyboard and other controls) is most likely the only way to achieve it, However I don’t understand why you want to separate those controls while you can handle them in just one Controller with a cleaner interface and without having to switch controllers? (Since to automatically switch controllers, and detect when a device is plugged/unplugged you would have to dig deeper, into the engine codes which is simply too much hassle for handling simple controls)