Quick answer: Add VirtualMouseInput on a UI cursor. Map StickAction to OnScreenStick. EventSystem uses InputSystemUIInputModule.

Console-style UI on mobile. Touch joystick should move a cursor over buttons. Cursor stays put.

The Fix

UI hierarchy:
  Canvas
    + VirtualMouseInput (component)
      Cursor:           CursorImage (RectTransform)
      Cursor Speed:     800
      Stick Action:     "UI/MoveCursor"
      Left Button Action: "UI/Select"

  + OnScreenStick (binds Stick to Move action)
  + OnScreenButton (binds Select)

VirtualMouseInput synthesizes a Mouse device. Bound stick drives cursor position; bound button drives clicks. Standard EventSystem dispatches to UI.

Verifying

Touch stick moves cursor over button. Touch button activates Select. UI responds.

“Virtual cursor. Stick + button. UI clicks.”

Related Issues

For Input rebind cancel, see rebind. For control scheme, see scheme.

Virtual mouse. UI clicks.