Maya Scripts and Hotkeys
This tutorial will teach you how to work with scripts in Maya. It will also show you how to assign script commands to keyboard shortcuts, otherwise known as hotkeys.
When you download a script (from this site, or elsewhere), you should be asked to save the .mel file to a specific location. If for some reason your web browser is just displaying the contents of the script, go to File > Save Page As… (in Firefox), or File > Save As… (in Internet Explorer) and make sure that it saves as a .mel file.
You need to save the script to a folder that Maya automatically checks when it starts. There are a few of these folders that qualify, but you will probably want to save it to your Maya user directory. On Windowsm this defaults to one of two locations:
The “8.5” above corresponds to a Maya version number. Maya will always load the generic script directory (the first path), and the version specific directory (the second path). This was designed so that you put scripts that only work with a certain version of Maya in it’s version specific folder, and scripts that work in all versions, in the general folder. Of course, you probably won’t know what versions of Maya the script is compatible with, but this is rarely an issue (unless you have a really old version of Maya). I’d pick one place and stick to it, so you know where all your scripts are.
If you’re on Linux or a Mac, it may not be so clear where scripts go. On Windows too, it’s possible to change Maya’s default location, so My Documents may not be it. Maya has a command for checking what this directory is:
See the sidebar “Executing Commands” for help on how to run that command.
Once you have the script in the right location, Maya needs to load it into memory. This happens automatically when Maya starts, so if you downloaded the script with Maya open, you need to restart Maya. There’s a quicker way around this though. Run the following two commands:
Rehash looks for new scripts in the script directories. Source loads a specific script into memory, in this case ackPushPull.mel. Once these two commands are executed, you’ve accomplished what restarting Maya would do, and you can now use the scripts.
Every script has a command that needs to be run to do what the script advertises. This command can be wired to a keyboard shortcut, or stored in a toolbar, a menu, or a marking menu. It can also just be typed in into the script editor like the commands above. Let’s start with that to make sure everything is working, and to understand commands better.
The command is almost always the name of the script file without the .mel extension. So with our example script ackPushPull.mel, the command is ackPushPull. It’s worth looking at the script or the script docs to know for sure though. In this case, there’s extra info that goes with the command. Opening up ackPushPull.mel in a text editor, or going to the docs section of the script online, shows us exactly what commands are available under the Syntax section:
So this script has two commands corresponding to the two modes it can run: Push mode, and Pull mode. Technically this second part is called an argument. What’s important to know is that these two lines are two separate commands that will be two different keys, or two different toolbar buttons. Execute the command in the script editor to see that it works:
Remember, this script needs a graph editor open with keys selected to work, otherwise nothing will happen.
Next, I’ll show how to assign a command to a keyboard shortcut – or what Maya calls hotkeys. Keyboard shortcuts are the way in which I use these scripts, and are what they were designed for. The commands can certainly sit on shelves or marking menus if you don’t use them frequently, but I won’t be getting into how to set that up here. Please see the Tool Design Philosophy for more info on what’s important about keyboard shortcuts.
2) Navigate to the “User” category. All hotkeys are placed under a category. It doesn’t matter which category a hotkey is assigned to, but by always using the User category, you can quickly find all the hotkeys that you’ve made.
3) Next, click New in the bottom-right corner. This is where you enter a new command.
4) Give it a name. This has no affect on the command, and merely indicates what will display in the Commands list above. I usually give it the name of the actual command with quotes stripped away and “_script” added to the end (because it won’t let you type the same name as the command).
5) Type the actual command that you found in the Syntax section of the docs. This will be for one hotkey, so only give it one command. If you want a hotkey that does more than one command, you can actually put as many commands as you want in this box. It’s also common practice to paste the entire script from the file into this box instead of keeping the script in separate files. I don’t recommend this though – See the appendix section Why Run Scripts From Files? for a discussion on this matter.
7) The command is now added to the Command list in the User Category. But we’re not done yet, next you have to choose a keyboard shortcut. Look to the Example section of the script docs to see a recommended usage, or even better choose a shortcut that fits well with your configuration. It goes without saying that I’m not recommending X as the shortcut key as seen in the script demo – I only mean to hint at a vast potentiality that only an X could convey.
8) I’m going to go with Alt-* for this example. The Direction will almost always be Press, but use Release if you need a separate script to execute when releasing the key. ackShuttleControl uses this for it’s timeDraggerDeactivate. Clicking Query will tell you if this shortcut has already been assigned. Clicking Find will take you to the conflicting command. Finally, if everything checks out, click Assign to assign the shortcut.
That’s it. You’ve assigned a hotkey. Now pressing Alt-* will execute the Push of ackPushPull. Next, I’d go back to Step 3 and assign Alt-/ to ackPushPull “pull”.