AutoHotkey is a free and open-source custom scripting language for Microsoft Windows, initially aimed at providing easy keyboard shortcuts or hotkeys, fast macro-creation and software automation that allows users of most levels of computer skill to automate repetitive tasks in any Windows application. User interfaces can easily be extended or modified by AutoHotkey (for example, overriding the default Windows control key commands with their Emacs equivalents). The AutoHotkey installation includes its own extensive help file, and web-based documentation is also available.
AutoHotkey scripts can be used to launch programs, open documents, and emulate keystrokes or mouse clicks and movements. AutoHotkey scripts can also assign, retrieve, and manipulate variables, run loops and manipulate windows, , and . These commands can be triggered by a hotkey, such as a script that would open an internet browser whenever the user presses on the keyboard. Keyboard keys can also be remapped or disabled, such that pressing , for example, might result in the active window receiving an em dash or nothing at all. AutoHotkey also allows for "hotstrings" that will automatically replace certain text as it is typed, such as assigning the string "btw" to produce the text "by the way" when typed, or the text "%o" to produce "percentage of". Further, scripts can be initiated automatically at computer startup and need not interact with the keyboard at all, perhaps performing file manipulation at a set interval.
More complex tasks can be achieved with custom data entry forms (GUI windows), working with the system registry, or using the Windows API by calling functions from DLLs. The scripts can be compiled into an executable file that can be run on other computers that do not have AutoHotkey installed. The source code is in C++ and can be compiled with Visual Studio Express.
Memory access through pointers is allowed just as in C.
Some uses for AutoHotkey:
Remapping the keyboard, such as from QWERTY to Dvorak or other alternative keyboard layouts.