From your Game Plans,
There is gonna be more than just simple Default bindings ofcourse. Ever thought how Keybinds usually work? Normally there is a Key-Pressed and a Key-Unpressed Event, there is no “Holding Key” Event, the holding needs to be implemented by the Game itself.
So if you want to set Keybinds differently, you could map “Press W” to “Start Walking Forward”, and then map “Press W” to “Stop Walking Forward”, this would result in you starting to walk when you press W once, and then stopping the walking when you press W a second time without you needing to hold W at all.
Or map “Stop Walking Forward” to “S” as well as “Start Walking Backward” to “S”, but without pass through so that “S” is being cought by the “Stop” Keybind before it can reach the “Start Walking Backwards” Keybind, so Priorities and sortable Execution Orders will be a thing too!
But even better, this could be combined with mapping multiple Keybinds to one function, so map “Press and Unpress W” like you normally do to Walking and stop Walking, but then map lets say “Press K” to “Start Walking Forward” too, meaning you can walk with WASD like normal but press K to Autowalk!
Want to get even more advanced and make things even more confusing yet awesome? How about using multiple Keyboards at the same time and change Keybinds per Keyboard! So instead of K you map the Autowalking to W on the second Keyboard! That way its more intuitive for remembering Stuff, even if the second Keyboard might be a bit away!
What is the advantage of this complicated key up/key down/overloading versus a separate bindable action to toggle autowalk? And what is the advantage of overloading keybinds with complicated options versus a macro system?
Heck, if you implement the GUI with some scripting language you can even let players create macros that run scripts. We’re already talking about advanced windows so just let them copy/paste their Python/Lua/whatever into a basic text field to make the macro, then assign the macro a keybind like any other.