Overview
Sn0w’s keybind system allows you to bind modules to keyboard keys and mouse buttons for quick toggling. Keybinds are managed through the ClickGUI and stored in configuration files.Keybind Architecture
The keybind system consists of several components:Bind Class
Each module has aBind object that stores:
- key: Integer key code (GLFW key code)
- isMouse: Boolean flag indicating if it’s a mouse button
Module Integration
All modules implement theIBindable interface:
Binding Keys in ClickGUI
Keyboard Keys
- Open ClickGUI (default: Right Shift)
- Navigate to the module you want to bind
- Click on the bind button/field
- Press the desired keyboard key
- The keybind is immediately saved
Mouse Buttons
Mouse button binds cannot be set through the GUI. They must be configured in the config file.
Unbinding Modules
To remove a keybind:- Navigate to the module in ClickGUI
- Right-click the bind button
- The bind is cleared (set to
-1)
Right-clicking is the standard way to unbind modules in Sn0w.
Mouse Button Binds
Mouse buttons must be configured directly in config files using theMOUSE_ prefix.
Format
Mouse Button Numbers
| Button | Code | Description |
|---|---|---|
| Left Click | MOUSE_0 | Primary mouse button |
| Right Click | MOUSE_1 | Secondary mouse button |
| Middle Click | MOUSE_2 | Mouse wheel button |
| Side Button 1 | MOUSE_3 | Mouse side button (back) |
| Side Button 2 | MOUSE_4 | Mouse side button (forward) |
Example Configuration
How to Set Mouse Binds
- Close Minecraft
- Open your config file in
Minecraft/Sn0w/configs/ - Find the module you want to bind
- Change the
bindvalue toMOUSE_X(replace X with button number) - Save the file
- Launch Minecraft
- Load the config with
.config load <name>
You do it in your config.yml, i.e.,MOUSE_4
See Module.java:226
Keybind Storage Format
In Memory
- Keyboard keys: Stored as integer GLFW key codes
- Mouse buttons: Stored as integers with
isMouse = true
In Config Files
Keyboard Keys
Mouse Buttons
Serialization Code
FromModule.java, the save/load process:
Bind Manager
TheBindManager handles all keybind events:
Keyboard Events
- Only triggers when no GUI is open
- Checks for
GLFW_PRESSaction (key down) - Calls
onKey()on matching module
Mouse Events
- Only processes
CLICKtype events - Iterates through all modules
- Toggles module if mouse button matches
Common Key Codes
GLFW key codes for common keys:| Key | Code | Key | Code |
|---|---|---|---|
| A-Z | 65-90 | 0-9 | 48-57 |
| F1-F12 | 290-301 | Space | 32 |
| Enter | 257 | Shift | 340 |
| Ctrl | 341 | Alt | 342 |
| Tab | 258 | Caps Lock | 280 |
Example Binds from Config
Bind Priority
Keyboard Binds
- Only trigger when no GUI screen is open
- Checked every frame on key press
- Multiple modules can share the same bind (all will toggle)
Mouse Binds
- Always active (even with GUI open)
- Processed on mouse click events
- Can interfere with GUI interactions if using common buttons
Best Practices
Choosing Keybinds
- Accessibility: Use keys near WASD for frequently used modules
- Avoid conflicts: Don’t bind to keys used for movement or vanilla functions
- Categorize: Group related modules on nearby keys
- Mouse buttons: Reserve for toggle-intensive modules (AutoCrystal, etc.)
Recommended Binds
Combat Modules:- AutoCrystal:
X,C, orMOUSE_4 - KillAura:
RorMOUSE_3 - AutoTrap:
NorY
- Scaffold:
VorG - Flight:
ForH - Speed:
B
- FreeCam:
F4 - HudEditor:
F5
Troubleshooting
Bind Not Working
Check:- Verify the module is not disabled
- Ensure no GUI is open (for keyboard binds)
- Check if another program is intercepting the key
- Verify the bind code is correct in config file
Mouse Bind Not Triggering
Solutions:- Verify
MOUSE_prefix is in the config file - Check the button number matches your mouse
- Ensure the config was loaded after editing
- Restart the client if hotloading fails
Multiple Modules Toggle Together
Cause: Multiple modules share the same keybind Solution:- Check your config for duplicate binds
- Unbind unwanted modules (right-click in GUI)
- Assign unique keys to each module
Bind Resets After Restart
Solutions:- Save your config:
.config save <name> - Ensure the client shuts down properly (don’t force close)
- Check file permissions on the Sn0w folder
See Also
- Configuration Overview - Config system basics
- Config Files - File format details
- FAQ - Common questions about binds