1.0.0
Compatibility
Required content
Changes
Changelog
Quacky's Better Keybinds — Version 1.0.0
Release Date: June 3, 2026
Overview
Quacky's Better Keybinds lets you rebind any action in the game to any key, mouse button, or combo. Multiple binds per action, optional order-sensitive combos, and smart conflict resolution. In-game ModMenu UI. Client-side only.
Features
Binding
- Bind Anything — every action in the Controls menu is bindable, vanilla and modded
- Multiple Binds — assign as many separate combos to one action as you want
- Combos — chain keyboard keys and mouse buttons (
Shift + Left Click,Ctrl + Alt + P) - Mouse Support — all 8 mouse buttons including side buttons (
MOUSE4–MOUSE8) - Order-Sensitive Option — per bind, require the exact press order or allow any order
- Smart Conflict Resolution — most specific combo wins (
Shift + ClickbeatsClick) - Edge Detection — actions fire on press, held state tracked per combo
Capture
- Multi-Key Capture — press your whole combo; it records every key in order
- Auto-Finalize — capture locks in 3 seconds after the last key, no confirm needed
- Cancel — press
ESCmid-capture to discard - Live Feedback — countdown timer and the running combo shown while recording
Action List
- Live From Game — actions read straight from the game's KeyMapping registry
- Search — filter the full action list by name or id
- Categories — actions carry their in-game category label
Management
- Bind List — every saved bind shown in one scrollable panel
- One-Click Remove — red X on each row deletes that bind
- Persistence — all binds auto-save to JSON on every change and on close
User Interface
- ModMenu Integration — entire GUI in-game, no manual config files
- Scrollable Panels — action list and bind list scroll independently
- Order Toggle — one button flips order sensitivity for the next bind
Technical Highlights
Performance
- Zero-Allocation Polling — input state reuses collections each tick
- Screen Guard — bind processing skips entirely while any screen is open
- Direct KeyMapping Drive — no event spoofing; sets the real mapping state
Architecture
Input System
InputManager— polls GLFW for 70+ keys and 8 mouse buttons each tickInputState— current/previous frame tracking for edge detection- Press-order tracking — held keys recorded in press order for order-sensitive binds
Binding System
BindTrigger— immutable combo, ordered or unordered, with match logicActionBinding— one action to many triggers, most-specific matchBindingManager— per-tick resolve and driveConflictResolver— specificity-based winner selection
Action System
ActionRegistry— built fromMinecraft.options.keyMappings, refreshed on GUI openActionDefinition— id, display name, category, target KeyMapping
Trigger Mechanism
KeyMapping.setDownheld while the combo is held (continuous actions)clickCountbumped viaKeyMappingAccessormixin on the press edge (discrete actions)
Mixin Injection Points
KeyMappingAccessor— exposes privateclickCountfor discrete-action simulation
Compatibility
| Minecraft | 1.21.11 (exact; API drift) |
| Loaders | Fabric 0.19.2+ required |
| Dependencies | Fabric API, ModMenu (no optional mods) |
| Launchers | Lunar Client, Modrinth App, Feather, vanilla Fabric |
| Conflicts | None — drives the game's real KeyMappings, so modded actions bind too |
File Structure
config/
└── quackys-better-keybinds.json # action id -> list of triggers (keys + ordered flag)
Installation
- Install Fabric Loader ≥ 0.19.2 for MC 1.21.11
- Add to
mods/:- Fabric API
0.141.4+1.21.11or newer - ModMenu
17.0.0or newer quackys-better-keybinds-1.0.0.jar
- Fabric API
- Launch game via Fabric
Usage
- Open Mod Menu → Quacky's Better Keybinds
- Search and select an action
- Click Set Keys, press your combo (auto-finalizes after 3s)
- Toggle Order for press-order sensitivity
- Save Bind to add it; red X to remove
- Close screen to persist
Known Limitations
- Binds do not fire while a screen or menu is open, so they cannot operate GUIs
- Actions with no registered KeyMapping cannot be bound (nothing to drive)
License
MIT. Quack responsibly.
Author
DeQuackDealer
Build Info
| JAR | 35 KB |
| Gradle | 9.4.0 |
| Loom | 1.16.2 |
| Java | 21 |
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:soF9eVP0"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:J4Kl3Aag:soF9eVP0"
}

