Forces the unconditional installation of the keyboard hook.



The keyboard hook monitors keystrokes for the purpose of activating hotstrings and any keyboard hotkeys not supported by RegisterHotkey (which is a function built into the operating system). It also supports a few other features such as the Input command.

AutoHotkey does not install the keyboard and mouse hooks unconditionally because together they consume at least 500 KB of memory. Therefore, the keyboard hook is normally installed only when the script contains one of the following: 1) hotstrings; 2) one or more hotkeys that require the keyboard hook (most do not); 3) SetCaps/Scroll/NumLock AlwaysOn/AlwaysOff; 4) the Input command, for which the hook is installed upon first actual use.

By contrast, the #InstallKeybdHook directive will unconditionally install the keyboard hook, which might be useful to allow KeyHistory to display the last 20 keystrokes (for debugging purposes), or to avoid the need for #HotkeyModifierTimeout.

Keyboard hotkeys which do not require the hook will use the reg method even if the #InstallKeybdHook directive is used. By contrast, applying the #UseHook directive or the $ prefix to a keyboard hotkey forces it to require the hook, which causes the hook to be installed if the hotkey is enabled.

You can determine whether a script is using the hook via the KeyHistory command or menu item. You can determine which hotkeys are using the hook via the ListHotkeys command or menu item.

This directive also makes a script persistent, meaning that ExitApp rather than Exit should be used to terminate it.

Like other directives, #InstallKeybdHook cannot be executed conditionally.

#InstallMouseHook, #UseHook, Hotkey, Input, #Persistent, KeyHistory, Hotstrings, GetKeyState(), KeyWait


Installs the keyboard hook unconditionally.