First, set the SuperwallOption isGameControllerEnabled to true:

Swift
let options = SuperwallOptions()
options.isGameControllerEnabled = true
Superwall.configure(apiKey: "MY_API_KEY", options: options);

For iOS, forward events to your paywall by calling gamepadValueChanged(gamepad:element:) from your own gamepad’s valueChanged handler. In Android, forward motion and key events using dispatchKeyEvent and dispatchMotionEvent:

Swift
controller.extendedGamepad?.valueChangedHandler = { gamepad, element in
  // send values to Superwall
  Superwall.shared.gamepadValueChanged(gamepad: gamepad, element: element)

  // ... rest of your code
}