
This is my first mod, I created this because I couldn't find any other mods which make binding keys easy. But this isn't just for binding keys...

- Ridiculously easy to use! Just activate the mod then just press the key you want to bind. No memorizing key codes or names!
- Bind keys which are already used for something else! Want to put a macro on the number keys or WASD? Using the override function you can use these keys for both their normal function or as macros when you need them.
- Edit keybinds quickly. Change your binds whenever you want. You can even copy and move macros from key to key with drag 'n drop.
- Multiple configurations. Different binds in different servers? No problem! It even switches automatically.
- In-game text editor. Want to make a complex macro? No need to alt-tab to notepad, create and edit text files inside minecraft.
- Lots of easy-to-use parameters. Lists of friends, automatic responses, warp points, towns, you name it.
- Scripting! Build custom auto-announcers, time-delay messages, or create your own auto-walk, toggleable-sneak or sprint keys.
This mod is compatible with most other mods and works well with Single Player Commands. It uses ModLoader for compatibility and does not edit any Notch classes at all.
In essence, this mod modifies the minecraft client to allow you to bind any keyboard key you like to chat commands or simple script functions (like sprinting or opening a gui). Most importantly, it lets you do this without knowing any key codes and has a full, easy-to-use GUI! No more typing obscure commands in order to bind keys. Plus you can edit your binds any time you like and even move and copy them to other keys with just drag-n-drop!
There are also some advanced features like including files and parameters in your macros including a nifty item selection screen, customisable friends list, and lots more. You can also have multiple different configurations and quickly switch between them (for example so that you can have different binds for single player or online).
This mod requires Risugami's ModLoader so make sure you install that first!

- Install ModLoader
- Download the .zip file here (direct link) and save it into your "mods" folder (create the "mods" folder if it does not already exist)
- Run the Minecraft client
- Check the Controls screen in the Minecraft configuration to make sure there are no conflicts with other keys you use. This mod adds pages to the Controls screen for enhanced configuration of any mods which use ModLoader



Expand for more images:

To bind keys:
- In-game, simply press <SNEAK KEY> + APOSTROPHE (change the key in the options if this doesn't work for you) and you will be prompted to press a key.
- Press the key you would like to bind or click it on the on-screen keyboard
- Enter the chat command (including the / at the start), separate multiple commands with pipe "|"
- Press ENTER to save the keybind, press ESC to cancel it. To edit a keybind repeat the same process.

- Include the code $$? anywhere in your macro as many times as you like to be prompted for a parameter when you run the macro, the parameter will be inserted wherever you enter $$?
- Include the code $$f anywhere in your macro to be prompted for a friend name (works the same as a parameter)
- Include the code $$u to prompt for an online user (New in 0.5!)
- Include the code $$[name] to prompt for a named variable! Unlimited variables! (New in 0.5!)
- Include the code $$i to prompt for an item with a scrollable list, or $$i:d to include the damage value for the item (to get coloured wool or different steps)
- Include the code $$<filename.txt> to insert a file (the file must end with .txt and be enclosed in < > as shown. You can include, $$?, $$i, $$f and even other $$<file.txt> in your file.
- Include the code $$! to halt processing of the macro and leave the last command in the chat buffer.
- Include the code $$h to prompt for a "home", this option supports automatically fetching homes from the server
- Include the code $$t to prompt for a "town", this option also supports auto-population
- Include the code $$m to prompt for a text file to include, similar to $$<file.txt> but allows you to choose the file on-the-fly
- Include the code $$0 through $$9 to prompt for a text list, supports unlimited text entries of unlimited length
- Include the code $$w to prompt for a "warp point". This works the same as homes and towns and supports automatic retrieval from the server (New in 0.6!)
- Include the code $$p to prompt for a "place" (a set of coordinates). You can also include $$px, $$py, $$pz and $$pn to insert only the X, Y, Z or NAME parts of the place respectively. (New in 0.6!)

- If the key doesn't have any other function (eg. it is not bound to any other built-in command or function) then just press the key
- If the key is bound to another function (such as the WASD keys or T,I etc) press your <MACRO ACTIVATE> key (as you set in the options) followed by the key.
- Alternatively if the key is bound to a minecraft function press <MACRO OVERRIDE>+<key> (again, you can set this in the Controls screen)
however this will execute the macro and the key's normal function (sorry no way around this without breaking other mods)now fixed.





As of version 0.8.5 language packs are no longer required as the supported languages are directly integrated into the main download and will automatically switch based on the chosen Minecraft language. If you would like to provide a language pack for your language please contact me via PM.
Current language packs in the mod:
- German Language pack by AJFire
- French Language pack by Chokapix
- Polish Language pack by kamild1996
For historic language pack information expand the spoiler:

Here's a short video showing the basics of using this mod:

New features in version 0.8.5:
- Automatic language selection for supported languages: english, french, german, polish
- Fixed some crashes caused by forge and a few other mods
- Added event support, only limited selection of events for now, this is mainly adding scaffholding for features planned for 0.9
- New loop constructs: DO...WHILE and DO...UNTIL
- New script commands VOLUME and MUSIC
- New script action EXEC allows scripts to be spun off, very useful with events: EXEC("script.txt","task_name")
- New player variables: XPOS, ZPOS, ARMOUR, INVSLOT
- "Always override" function now checks for an open GUI screen (oops!)
- DISCONNECT function shouldn't crash game when using other mods
- Refactored script extensions API to be considerably simpler
- It's now possible to use variables inside DO() declarations and SET statements, eg. DO(%#counter%)
- Added LOOK script action to set player's orientation with LOOKS (look smooth) variant for smooth interpolation
- Improved interpolation for FOV, GAMMA, LOOK and LOOKS so that transitions are smoother
- Added the ability to delete configurations
- Added global counters using prefix @#
- Thumbnail manager now has a scroll bar so that all thumbnails can be accessed even at low resolution
- Added RAIN, OXYGEN, ITEM, DURABILITY, SERVER variables
- Fixed macro edit box cursor positioning when using narrow (kerned) fonts
- Added button to access macro config in Controls... screen
- Added new conditional script actions: IFCONTAINS, IFBEGINSWITH, IFENDSWITH, IFMATCHES which can be used in place of the normal IF
- Added "all" option for STOP script action. Specify "all" or "*" to stop all active macros.
New features in version 0.8.2:
- Updated to support Minecraft 1.1
- Items in the items selection list now rendered with shading rather than fullbright
- Fixed a bug with pipe characters inside scripts which cause IF statements with the OR operator "||" to not work properly, fixing this also means you can use | inside ECHO commands to output multiple lines of text with a single ECHO command
- Fixed a small bug when adding new entries to a preset text listbox which meant that the selected item wasn't always remembered
- Added the item-with-damage param $$i:d to the in-game help
New features in version 0.8.1:
- Fixed a bug with parsing script actions which contain parentheses!
New features in version 0.8:
- New JInput subsystem to provide MOUSE3 and MOUSE4 (side buttons) support under Windows
- "Always override" option per-macro
- Improved the "Items" listbox, now icons instead of a long list
- Support for supplying damage values with $$i use $$i:d to insert an item/damagevalue pair
- New quick-access buttons for "Edit File" and "Settings" and also to access the "Bindings" screen from playback mode
- Configuration overlay support, merge configurations for even more advanced config setups. Use the new IMPORT and UNIMPORT script functions
- Improved macro text editor fields, full cursor movement and mouse support
- User Face images in the online user ($$u) list
- Icon manager, take your own custom screenshots in-game for use in the homes, towns and warps lists
- Global flags in scripts. Prefix a flag name with @ to make it accessible to multiple macros.
- Counter variables in scripts. Prefix counter variables with # and use the new INC and DEC script commands to increment and decrement them
- Improved Text Editor GUI: Delete and rename text files in the text editor screen
- IIF conditional echo script command to make toggles and conditional echo commands much more compact
- ELSEIF conditional script construct
- GAMMA and SENSITIVITY script commands to alter brightness and mouse sensitivity respectively
- Ability to include variable values in ECHO and LOG commands, simply surround the variable name with %, for example $${ECHO("Current health = %HEALTH%")}$$
- Added new global variables LIGHT, TEXTUREPACK, SEED, DIMENSION, YPOS
- Added macro invoke-time input variables, retains the state of all keyboard keys at the point the macro is invoked. For example ~CTRL for the state of the Ctrl key when invoking the macro
- Added popup display when switching configs to show the currently selected config and overlay
New features in version 0.7.2:
- Fixed a bug with uppercase conditional statements
- Fixed a bug with having to press a macro twice if it included a parameter
New features in version 0.7:
- Updated for Minecraft 1.0
- Improved override support! Improved compatibility with zombes and other mods which ignore the old override method.
- Support for binding mouse buttons as well as keys
- Alternate display names for warps, homes and towns
- Conditionals in scripts: IF, ELSE, ENDIF as well as flag commands
- New script actions:
- TexturePack - Switch texture packs on-the-fly
Type - Pump keys into the keyboard buffer as if you typed them
Press - Pump a single (non-alphanumeric) key into the keyboard buffer: eg. PRESS(ESCAPE)
PlaceSign - Place a sign from your inventory and automatically set the text!
New in version 0.6
- Key-State Macros: Bind different commands to the key down, key held, and key up events
- Loops! Both infinite and finite loops now supported within scripts
- List and include files now stored in a separate directory /mods/macros/ - Note to previous users, you will need to move your old scripts!!
- New script actions: InventoryDown, InventoryUp, Pick, Slot, Sprint, Unsprint, Log, Stop see readme.txt for details
- Improved existing script actions, see the readme.txt
- Selectively terminate macros - bind to a key or access via GUI
- Lots more options! "Simple" GUI mode and a lot of others
- Per-config home/friend/town/preset lists - have your lists track your server
- Added $$w parameter for warps - with auto-discovery support!
- Added $$p "place" parameter, save your locations for use with /tppos and others
- Configurable "reserved keys", to provide better compatibility with other mods
- Configurable (via config file) options for Online User list - trim characters, include self
- User list ($$u) now sorted alphabetically
- For avanced users, compiler directives to alter macro compilation
- Defaults to enabled in single player
- Improved singleplayer/multiplayer detection code
- Made the Colour Code Helper key configurable
- Fixed a bug with the disconnect script action causing OpenGL weirdness
- Fixed a bug with listboxes activating entries when scrolling with the mouse
New in version 0.5
- Modified controls screen with pages to make binding keys easier
- Added $$u parameter to select from online users
- Added named parameters $[name]
- Added basic scripting support (see the readme.txt for more details)
- Added multiple configurations functionality with per-server auto-switch
- Added global keys which are the same for all configurations
- Text editor now correctly renders more characters and invalid code points are highlighted
- Can now create new text files in the "edit file" window
- Added localisation file macros.lang to support different languages
- Added colour-code helper when editing macros (use the OVERRIDE key to activate)
- Key display glyphs now stored in the config file
New in version 0.4
- On-screen keyboard when binding keys: quickly see which keys are bound as well as being able to move, copy, delete macros quickly and easily.
- Configure the macro activate and macro override keys in the normal Minecraft "Controls" GUI
- Set modifiers on your key binds, require CTRL, ALT and SHIFT or any combination to prevent accidental usage
- Extra parameters: $$h for homes, $$t for towns, $$m for text file list, plus ten configurable parameter lists $$0 through $$9
- Auto-discover functionality for friends, towns and homes (may require some settings tweaking for best results)
- Drag and drop to rearrange friends, towns and homes
- Edit text files within minecraft
- Recursive parsing of files and parameters, put parameters in your parameters!
- Increased macro edit length in the GUI (can now edit macros longer than the screen width)
- Prevent macros from remembering previous parameter values
- Much better 'override' function
- Complete re-vamp and improvement of settings file, format is now much clearer.
New in version 0.3
- Added support for single player
New in version 0.2
- Include files within macros
- Friends list
- Items list
- On-screen help
- $$! terminate macro modifier

- To uninstall the mod, just delete the .zip file from your "mods" folder
- Key binds are saved in a file macros.txt in your minecraft folder, you can save and restore this file if you want to copy your macros to another computer
- This mod shouldn't create conflicts with other mods using modloader, but to be certain it is worth avoiding binding keys used by other mods. If in doubt delete the macros.txt file and ensure other mods run as normal. Also ensure that you install modLoader before installing Improved Chat, as mentioned in the Improved Chat thread.

If you would like to show your support for the mod by including a clickable banner in your sig, click the spoiler next to one of the banners below and copy the code into your forum signature:





Thanks to the MCP team and everyone who's given suggestions and feedback. Special thanks to AJFire for making the original mod logo and providing the german translation. Thanks also to Chokapix for the french translation and kamild1996 for the Polish translation.
Enjoy! Please post feedback, comments, abuse here.

Help

























