- JavaScript 59.7%
- Shell 33.1%
- Makefile 3.9%
- CSS 3.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo | ||
| docs | ||
| lang | ||
| scripts | ||
| styles | ||
| tools | ||
| .gitignore | ||
| CHANGELOG.md | ||
| CLAUDE.md | ||
| Makefile | ||
| module.json | ||
| README.md | ||
Keybind Hints
A Foundry VTT v14 module that shows the current keybinding next to UI elements, e.g. hovering the chat tab shows Chat Messages [Shift+C].
Keys are read live from game.keybindings, so bindings you change in Configure Controls show up immediately, including those of systems and modules.
Features
- Tooltip hints: Foundry's own tooltip gets the key(s) appended. Elements that have a binding but no tooltip get one.
- Hold
H: shows a key badge on every visible element that has a binding (rebindable under Configure Controls > Keybind Hints). - Custom hints: link any element to any action by clicking it. Module settings > Manage Hints > Pick Element, or bind the "Assign Keybind Hint to Element" key. You can also hide a wrong hint ("No hint").
How an element gets its hint
Checked in this order. Only actions that currently have a binding are shown.
- Your own mappings (CSS selector to action, stored per user)
- Built-in mappings for core and dnd5e (
scripts/builtins.mjs): hotbar slots, target / ruler / unconstrained movement tools, chat tab, your character in the player list and actor directory, compendium browser, sheet mode toggle - Name matching: an element's tooltip or label is compared with the actions' localized names ("Toggle" / "Open" / "Show" prefixes are ignored)
Built-ins and name matching can each be turned off in the module settings.
Install
In Foundry: Add-on Modules > Install Module, paste this manifest URL:
https://git.nrdblg.de/g33z/foundryvtt-keybinds/releases/download/latest/module.json
Support
If you'd consider supporting me, I would be very grateful. Thank you very much!
Development
make # list targets
make link # symlink this folder into Foundry's modules folder (FOUNDRY_DATA=... to override)
make check # syntax-check scripts, validate JSON and translations
make build # build dist/module.zip + dist/module.json locally
make foundry-dry-run # check the foundryvtt.com release for the current version (asks for the token)
make foundry-publish # publish the current version on foundryvtt.com by hand, if CI's step failed
Releases: add your changes under ## [Unreleased] in CHANGELOG.md, then
make release 0.2.0 # promotes the changelog, bumps module.json, commits and tags locally
git push origin main
git push origin v0.2.0 # the tag triggers the release: Forgejo release + foundryvtt.com
The release workflow publishes each version on foundryvtt.com via the
Package Release API. It needs the package's
release token (on the package's edit page on foundryvtt.com) as the repository secret
FOUNDRY_RELEASE_TOKEN (Settings > Actions > Secrets). The token is never stored in
the repository; without the secret, that step is skipped.
Console helpers
const api = game.modules.get("show-keybinds").api;
api.explain(document.querySelector('[data-tool="ruler"]')); // which action, and why
api.openManager();
api.assignFromPick();
