#53 Rework input system (again😡)

Open
opened 3 years ago by habeebweeb · 0 comments

I want to give a lot more freedom with inputs like allowing for changing the quick save hotkey (Control + S) to any other input with modifier ex. (Control + Alt + S). The current system only allows for changing the S key and not the modifier.

I also want to improve how inputs are detected. BepInEx's KeyboardShortcut struct is able to check if the hotkey is pushed in a strict manner where the exact key combination must be pushed (Alt + X will trigger but not Alt + Shift + X for example). This behaviour is desireable but KeyboardShortcut requires all modifiers to be held before pushing the main key to trigger the shortcut. This is a problem because MPS does not care about what order keys are pressed and only requires that they're all pressed at the same time.

An example of this is with drag points where you can fluidly switch between different object manipulation modes by changing which modifiers are pushed: Control + Z for vertical translation into Shift + Z for world space y rotation into just Z for X and Z plane translation. All of this is done without releasing Z.

I want to give a lot more freedom with inputs like allowing for changing the quick save hotkey (`Control + S`) to any other input with modifier ex. (`Control + Alt + S`). The current system only allows for changing the `S` key and not the modifier. I also want to improve how inputs are detected. BepInEx's `KeyboardShortcut` struct is able to check if the hotkey is pushed in a strict manner where the exact key combination must be pushed (`Alt + X` will trigger but not `Alt + Shift + X` for example). This behaviour is desireable but `KeyboardShortcut` requires all modifiers to be held before pushing the main key to trigger the shortcut. This is a problem because MPS does not care about what order keys are pressed and only requires that they're all pressed at the same time. An example of this is with drag points where you can fluidly switch between different object manipulation modes by changing which modifiers are pushed: `Control + Z` for vertical translation into `Shift + Z` for world space y rotation into just `Z` for X and Z plane translation. All of this is done without releasing `Z`.
Sign in to join this conversation.
No Milestone
No assignee
1 Participants
Loading...
Cancel
Save
There is no content yet.