1.2.0
Compatibility
Changes
Changelog
Quacky's Better Keybinds — Version 1.2.0
Type: Feature release
Overview
Binds can now send chat messages and commands, run chains of actions with tick delays between them, repeat while held, and warn you when keys are already taken. Every control in the config screen has a tooltip.
New Features
Chat & command binds
Pick Send Chat Message / Command (pinned to the top of the action list), type the text in the message box, Set Keys, Save.
- Plain text is sent as chat; a leading
/runs it as a command - Sent lines go into chat history, so up-arrow in chat recalls them
- Works in every game mode; never fires while a menu, chat or container is open
- Each message is its own action, so it gets combos, groups, enable toggles and conflict resolution like any other bind
Repeat mode
Per bind: Once (one activation per press) or Repeat (keep firing while held).
- Delay unit: ms, ticks or s — click the unit button to cycle
- Applies to chat binds and normal actions alike (each repeat is one discrete click, so Drop, Hotbar, Use etc. all repeat)
- Repeats run on the client tick, so the floor is one tick (50 ms); faster delays fire every tick
- Saving the same keys on the same action again updates its repeat settings
Action sequences (chains)
Bind one combo to a chain of actions with tick delays between them — e.g. Ctrl + Mouse 5 → hotbar 7, +1 tick hotbar 9, +0 attack. Or a single delayed step: Ctrl + Mouse 5 → +1 tick hotbar 9.
- Pick Action Sequence (chain) (top of the action list) to open the sequence editor
- Each step = an action + how many ticks to wait after the previous step (after the key press for the first step);
0= same tick - Any action works as a step, including chat messages and commands; each step taps the action once
- Reorder (
^/v), remove (X) or click a step to load it back into the editor; up to 32 steps, 1200 ticks per wait - Click a sequence bind in Your keybinds to edit its steps in place — keys, group and repeat settings are kept
- Timing is tick-exact and matches a vanilla press: a
+0step lands on the same tick as the press,+1on the next - Steps that land on the same tick run in the game's own order (hotbar before attack/use), so hotbar 9, +0 attack hits with slot 9
- Once started, a chain finishes even if you let go; opening a screen cancels it
- Works with repeat mode: a held repeating sequence restarts every delay
Duplicate key detection
- When you capture keys, the status line warns if they already trigger another bind
- Single-key binds are also checked against vanilla controls bound to that key (skipped while Override is ON, since the vanilla action is muted anyway)
- Binds in the list that share keys are shown in orange; hover to see what else they trigger
Tooltips
Every button and field has help text on hover, as do the action list, group chips and each cell of the bind list.
Other changes
- Status line moved next to Select action: so it no longer draws over the Save Bind button; long messages are truncated with the full text in a tooltip
- Set Keys / Save Bind now say why nothing happened (no action picked, no keys captured, empty message)
Compatibility
| Minecraft | 1.21.11 |
| Loaders | Fabric 0.19.2+ |
| Dependencies | Fabric API, ModMenu |
| Config | 1.0.0 / 1.1.0 configs load as-is; new fields default to Once |
License
MIT. Quack responsibly.
Author
DeQuackDealer
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:J4Kl3Aag:8zLwxMBC"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:J4Kl3Aag:8zLwxMBC"
}

