Gamepad Virtual Cursor for UI is Live! [Opt-in Only]

Done some recent testing with this, here’s some information I gathered:

  1. ScrollingFrames are still incredibly hard to use. I believe they should function similarly to how they do on desktop, where the mouse wheel is used to zoom the camera in and out unless it’s hovering over a scrolling frame, where it will be used to scroll up and down that instead.

  2. Some mouse events are triggered with ButtonR2, some are triggered with ButtonA. I have no idea why, but it was extremely confusing at first and not intuitive at all. One button for as many actions as possible is the best case.

  3. This might not be related to the gamepad mouse, but setting DevComputerMovementMode to KeyboardMouse stops gamepad users from being able to move their character with the default controls.

1 Like

While I personally won’t use this, it’s great to see improvements to Roblox on Xbox! Are there any more improvements planned for Roblox on Xbox in the future, such as private servers, the loads of UX issues and the plentiful of bugs in #bug-reports:xbox-bugs that still have not been fixed?

How did you manage to get this to work? ScrollingFrame don’t work at all for us with this new cursor.

I understand that Roblox is still working on improving it, but you solution would be good enough for us.

We have enabled this on our game Splash

It’s great!

My wish list:

  • Ability to programmatically turn the cursor on and off. On our lobby screen, I’d like to turn on the cursor by default
  • All the features planned: scrolling support, text box support and billboard/surface support (in that order)

I’ve written a module that enables basic gamepad scrolling using the DPad. You can find it as a Gist here.

Copy the code into a ModuleScript in ReplicatedStorage and then activate your ScrollingFrame like so:

local GamepadCursorScrollUtil = require(game.ReplicatedStorage:WaitForChild('GamepadCursorScrollUtil'))

The addGamepadScroll returns a table of callbacks. So if you can manually disconnect them if need be.


Got this weird error (I don’t have Virtual Cursor enabled)

  22:01:14.537  CoreGui.RobloxGui.Modules.VirtualCursor.VirtualCursorMain:99: attempt to index nil with 'GetPropertyChangedSignal'  -  Client - VirtualCursorMain:99
  22:01:14.537  Stack Begin  -  Studio
  22:01:14.537  Script 'CoreGui.RobloxGui.Modules.VirtualCursor.VirtualCursorMain', Line 99  -  CoreScript - VirtualCursorMain:99
  22:01:14.537  Stack End  -  Studio
  22:01:14.537  Failure to Start CoreScript module VirtualCursorMain.
Requested module experienced an error while loading  -  Client - StarterScript:94

Will we have the ability to change the cursor to a custom image in the future?

1 Like

Quick update - we are deep into a solution for scrolling frames. More info coming soon!


Existed to hear, we will enable the feature back when it’s ready for testing or finished at all.

1 Like

I’ve noticed that the scrolling frame now automatically scrolls if the virtual cursor is near the edge of the scrolling frame. It would be great if we had the option to disable this automatic scrolling for certain ScrollingFrames, since it can be sort of annoying in certain cases such as this one:

Image from Gyazo


This is a really nice tool! I have a couple requests for this to be perfect though:

-Ability to activate the cursor on a player. I don’t want the player to be able to bring up the cursor while they’re playing, only when they’re in a menu. Instead of having the player bring it up, it would be great if we could bring the cursor up when needed and put it away when done.

  • Change the cursor icon (or at least make the default icon smaller). It’s a bit large compared to the full size of the screen.
1 Like

Hey! Virtual cursor APIs, like what you’re describing, are currently being worked on. I’ll post an update when they’re released.

As for your second point, at this time there are no plans to be able to customize the cursor.

Feel free to reach out with any other issues you run into when using virtual cursor!


Hi, not sure if this is already a feature but is there a way for me to force the Virtual Cursor on screen rather than relying on the Player to click a button on their gamepad?

I have already hard coded my own Console Support into my game but I need this Virtual Cursor for my Christmas Advent Calendar event. Once they enter the Advent Calendar I want the Cursor to appear on the screen rather than needing to click an additional button once they’ve entered.

I found a property within GamepadService called GamepadCursorEnabled. I tried to use this but I was lacking permission so I am lead to believe that this feature is not yet possible. Thanks!

1 Like

Are there any updates on this? I made a feature request for this a while back, but there has been no word since.

1 Like

Why are all the methods to force enable the gamepad cursor turned off? I see all the necessary API sitting in the core scripts running happily, but I’m not able to access them. Relying on players to understand that they have to hit the Select button is terrible UX, and it’s keeping me from fully committing to this feature.

Hey! Virtual Cursor APIs are just about ready to go! They should be turned on soon, expect to see a new forum announcement when they go live.

Now that’s some freaky timing, thanks for the help!

Yeah maybe we know that on something with think but we will add this some new let me from Roblox I think so

Hey! Just as an update, Virtual Cursor APIs are now live! Check them out here: Gamepad Virtual Cursor: APIs

1 Like

Does the cursor fire MouseButton1Down?

This topic was automatically closed 120 days after the last reply. New replies are no longer allowed.