Is there a way to disable or overwrite the analog stick and keyboard gui navigation?

They’re proving quite annoying for navigation in my game. Both methods are causing me to have some usability issues with a quick menu UI in my game. In particular the analog sticks.

Aside from outright disabling guiservice’s navigation and writing my own, is there any way to get stop WASD and the analog sticks from switching GuiService.SelectedObject?

1 Like

You can turn off GuiService.GuiNavigationEnabled

I need that on though so I can still use the controller’s dpad for navigation in my quick menu, disabling it won’t do me any good. If it was split into 4 properties it would solve my problem:

guiService.GuiNavigationEnabled = bool --if false the next 3 become redundant, if true navigation across the 3 available methods will be based on the next 3 properties. 

guiService.ThumbstickNavigationEnabled = bool
guiService.DpadNavigationEnabled = bool
guiService.KeyboardNavigationEnabled = bool

It’s not a very good solution but it would give that extra bit of control over gui navigation that I’m needing right now. The only other alternative that I’m away of at this point is to re-write the entire navigation on my own, which I’d like to avoid.

You need the player to control gui navigation and the thumbstick at the same time? Why is the thumbstick controlling navigation a problem?

Well it stems from a different problem. In my game I’m not using the dpad for anything, so I figured I’d use it to open and close my games quick menu. Different buttons hotkeying to different menu options right away. The problem is I can’t listen for the dpad presses with CAS if GuiService has a SelectedObject making it impossible to dpad down to close the menu.

My solution was to make buttons in my menu navigate down to a gui that when selected, closes my quick menu. It works really well as long as I’m not accidentally pressing the S/DownArrow key, or tapping the thumbstick down enough to cause guiservice to navigate downwards. Disabling the keyboard and thumbstick navigation would solve this.

Sure I could just use the B button to close the quick menu, but most games that have menus similar to the one in my game have it open and close on the same button. I’d like to not loose that behavior.

You can listen to input without filtering using UserInputService. UIS will send you a boolean that tells you if the input was processed by a button, CAS, etc. so you can choose if you want to use the input anyway. CAS does not give you this option.

I did not know that, I’d assumed UIS and CAS both had that filtering issues. Thanks!

It would still be nice to be able to disable analog stick or dpad navigation. I don’t need both the thumbstick and dpad to do gui navigation; that’s redundant. I’m using the dpad for other actions, and I don’t want it messing with menu navigation when there’s a menu open.

2 Likes

Something like Dark Souls is a good example of a use case for this. Dark Souls has you control the menu navigation with the dpad, and you can still use the stick to move your character around at the same time - very useful in fast-paced combat situations where you need to switch something out while still continuing to move.

Since we’re revisiting this topic.

It could be my gamepads, but the analog thumbstick gui navigation sensitivity seems very high, causing me to skip over items in a list. Is this just me? It’d be nice to be able to adjust if holding the analog stick will cycle through the list and adjust its sensitivity.

Being able to rebind keys within GuiService would also be a blessing. (Right now you have to hit Enter to “click” on keyboard and mouse)

Is there a way to disable any of these yet?

I am making a game with a main menu, and the joystick gets in the way of some of the buttons.