-
Notifications
You must be signed in to change notification settings - Fork 323
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
allow one GPIO pin to trigger 2+ buttons #724
allow one GPIO pin to trigger 2+ buttons #724
Conversation
Is this all ready to review? |
38eafc2
to
10728dd
Compare
10728dd
to
8610486
Compare
33607b1
to
5212bfb
Compare
f6f64f6
to
a2f6705
Compare
Confirmed this is working, going to have some other eyes on the UI as well. |
Thats good! Please ping me if the UI is not good enough for the first iteration, if so i will try to merge the new page with pin mapping page. |
b7bf11b
to
c4a3c78
Compare
Marked this a draft again, since we are saving it for after 0.7.8, and there has been a desire for and already some experimentation around a better UI/UX --- ideally a single page and a fancier selection/modal thing or something. |
82b3e82
to
7a5fd7e
Compare
before it returned just the actions, which was fine, but now we're adding more stuff to the infos, so return the whole struct rather than just the GpioAction within it
this expands GpioMappingInfo to include dpad and button masks and uses those masks when setting up the button maps in Gamepad. this allows for a GPIO pin to trigger any arbitrary set of buttons
commit 16c34b6 Merge: 3b21858 8b915e0 Author: ian <[email protected]> Date: Sat Jun 8 18:14:42 2024 +0200 Merge branch 'main' into one-pin-multiple-buttons-ui-revamp # Conflicts: # proto/config.proto # www/package-lock.json # www/package.json # www/src/Addons/Wii.tsx # www/src/Pages/InputMacroAddonPage.tsx commit 3b21858 Author: ian <[email protected]> Date: Sat May 4 20:59:19 2024 +0200 Simplify type juggling by making separate components for base pin and profiles mappings commit 77c30d6 Author: ian <[email protected]> Date: Sat May 4 18:59:17 2024 +0200 Remove old multi mapping path commit 2f0892f Author: ian <[email protected]> Date: Sat May 4 18:48:01 2024 +0200 Fix merge issue commit 12ed309 Merge: be460f9 22ed9a7 Author: ian <[email protected]> Date: Sat May 4 18:37:50 2024 +0200 Merge branch 'main' into one-pin-multiple-buttons-ui-revamp # Conflicts: # www/package-lock.json # www/src/Locales/en/Index.jsx # www/src/Pages/InputMacroAddonPage.tsx commit be460f9 Author: ian <[email protected]> Date: Sat May 4 18:19:54 2024 +0200 Implement UX for multi selection for base profile and single selection for profiles commit 7dd59ce Author: ian <[email protected]> Date: Fri Apr 26 13:34:20 2024 +0200 Evaluate if css grids is suitable for the pin mapping page, add nav pills for profiles commit 0e120b3 Author: ian <[email protected]> Date: Mon Apr 22 22:38:24 2024 +0200 WIP make pin mappping page handle masks commit 5712845 Author: ian <[email protected]> Date: Mon Apr 22 22:25:40 2024 +0200 Add lodash types commit 9d10afb Author: ian <[email protected]> Date: Thu Apr 18 10:09:36 2024 +0200 Remove multmapping page and start merging it with pinMapping page commit 5f3fa47 Merge: 2e040a4 d384d8e Author: ian <[email protected]> Date: Wed Apr 17 18:08:56 2024 +0200 Merge branch 'main' into one-pin-multiple-buttons-ui-revamp commit 2e040a4 Merge: c4a3c78 7fb30b9 Author: ian <[email protected]> Date: Sun Apr 14 23:43:49 2024 +0200 Merge branch 'main' into one-pin-multiple-buttons-ui-revamp # Conflicts: # proto/enums.proto # www/src/Data/Pins.ts # www/src/Locales/en/PinMapping.jsx # www/src/Pages/InputMacroAddonPage.jsx # www/src/Pages/PinMapping.tsx # www/src/Pages/SettingsPage.jsx commit c4a3c78 Author: Brian S. Stephan <[email protected]> Date: Fri Mar 22 16:53:27 2024 -0500 fix usage of button masks for hotkeys I probably introduced this in a bad rebase commit 580eb5e Author: Brian S. Stephan <[email protected]> Date: Sat Mar 9 15:20:06 2024 -0600 add a disclaimer about multi mapping only working on Profile 1 commit 7aef83e Author: Pelsin <[email protected]> Date: Sat Mar 9 21:16:55 2024 +0100 multi mapping page (#7) * remove double initialization of gamepad GPIOs * have getProfilePinMappings return whole GpioMappingInfos before it returned just the actions, which was fine, but now we're adding more stuff to the infos, so return the whole struct rather than just the GpioAction within it * define a custom button combo to a GPIO pin this expands GpioMappingInfo to include dpad and button masks and uses those masks when setting up the button maps in Gamepad. this allows for a GPIO pin to trigger any arbitrary set of buttons * Add a WIP multi mapping page * have getProfilePinMappings return whole GpioMappingInfos before it returned just the actions, which was fine, but now we're adding more stuff to the infos, so return the whole struct rather than just the GpioAction within it * define a custom button combo to a GPIO pin this expands GpioMappingInfo to include dpad and button masks and uses those masks when setting up the button maps in Gamepad. this allows for a GPIO pin to trigger any arbitrary set of buttons * implement get/setPinMappingsV2 which includes the new masks * Start moving to new payload structure, new endpoint, translation keys * Set action if mask is set * Multi-mapping route added to webconfig, start adding customDpadMask * Revert endpoint test for v2 * fix issue where setPinMappingsV2 was actually ignoring input * Rename BUTTON_MASK -> BUTTON_MASK_OPTIONS to prepare for multi mapping data * Removed some unused imports * Add support for dpad mask * Add text for assigned to multi mapping on pin mapping page * Add support for swapping button labels * Update pins after setting multi pin * Set correct default in multi mapping, disables selection on non selectable actions commit f842e25 Author: Brian S. Stephan <[email protected]> Date: Wed Feb 28 18:28:27 2024 -0600 fix issue where setPinMappingsV2 was actually ignoring input commit a2853d8 Author: Brian S. Stephan <[email protected]> Date: Thu Feb 22 16:28:06 2024 -0600 implement get/setPinMappingsV2 which includes the new masks commit 26bbcbe Author: Brian S. Stephan <[email protected]> Date: Wed Dec 27 00:44:22 2023 -0600 define a custom button combo to a GPIO pin this expands GpioMappingInfo to include dpad and button masks and uses those masks when setting up the button maps in Gamepad. this allows for a GPIO pin to trigger any arbitrary set of buttons commit 55fb9e5 Author: Brian S. Stephan <[email protected]> Date: Wed Dec 27 00:25:10 2023 -0600 have getProfilePinMappings return whole GpioMappingInfos before it returned just the actions, which was fine, but now we're adding more stuff to the infos, so return the whole struct rather than just the GpioAction within it Co-authored-by: ian <[email protected]> Co-authored-by: Pelsin <[email protected]>
e576fdd
to
6a6fa34
Compare
upon conversations with Pelsin, we don't need this distinction anymore (if we ever did), and the React side will be updated to accommodate. the same treatment will be done to get/setProfileOptions, which need to be updated to accept the masks in order to allow the multiselect to work on profiles 2-4
this will allow the webconfig to do multiselect buttons on all the profiles, not just profile 1
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great! New changes we can put into PRs since this PR is already pretty huge
Thanks for this! |
This adds a couple protobuf fields to the
GpioMappingInfo
structure to include dpad and button masks and uses them when setting up theGamepad
object to allow a pin to be the trigger for more than one button. All the cost is at setup time, so this shouldn't have any material effect on gamepad performance.As usual, @Pelsin helped my proto-brain (pun intended) with the UI work. It will need improvement/expansion in the future, but this works for now.