Externalize the keybind catalog and preset registry to a shared contract - #8328
Draft
burnhamrobertp wants to merge 57 commits into
Draft
Externalize the keybind catalog and preset registry to a shared contract#8328burnhamrobertp wants to merge 57 commits into
burnhamrobertp wants to merge 57 commits into
Conversation
…ng modal/dropdown
Contributor
Contributor
|
May I suggest also adding the "default" per binding? That way we can offer a "restore to default" function as well per keybind |
Contributor
Author
|
A "Restore to Default" UX is not quite that simple since there are a lot of players who use Legacy still, or one of the 60% layouts; and to those players, "default" might mean something very different. When you install BAR fresh today, we do set Grid as the default keys, but before I go that route I'd want confirmation from @PtaQQ or some other admin that this is an intentional decision made and supported from the top. |
…the keybind editor
… keybind editor
burnhamrobertp
force-pushed
the
feature/shared-keybind-catalog
branch
from
July 27, 2026 21:11
a6bd28d to
37f5a18
Compare
…-editor # Conflicts: # language/en/interface.json
burnhamrobertp
force-pushed
the
feature/shared-keybind-catalog
branch
from
July 29, 2026 00:25
37f5a18 to
79f351b
Compare
burnhamrobertp
force-pushed
the
feature/shared-keybind-catalog
branch
from
August 3, 2026 04:35
79f351b to
59d0159
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Externalizes the in-game keybind editor's data into a shared, cross-surface contract, so Chobby and the new lobby can build their own keybind editing on the same data and rules instead of re-implementing them.
The hard-coded catalog (categories / labels / actions) and the preset registry (which bind file each preset maps to) move out of Lua into JSON under
common/configs-keybind_catalog.jsonandkeybind_presets.json. The game reads them through thin adapters:keybind_catalog.luaandkeyboard_layouts.luabecomeJson.decode(VFS.LoadFile(...))loaders that return the same shapes / same API, so every existing consumer (the editor, Settings > Control, cmd_bar_hotkeys) is unchanged.Alongside the data:
KeybindingFileconfig, and the switch / reset / seed rules each surface implements (game via Spring APIs, a lobby via config + file I/O).Stacked on #8153 (the in-game keybind editor); leaving this in draft until that merges. Until then the diff here also includes #8153's changes - it'll reduce to just the externalization once #8153 lands in master.
Deferred to later iterations (noted in the README): a widget/mod action-declaration API so widgets register their own bindable actions, and command-description tooltips built on the engine's
cmd.*descriptions.Developed with AI assistance (Claude).