Microsoft IntelliType Macros

By Xah Lee. Date: . Last updated: .

IntelliType has a keyboard macro feature. It lets you define keys to type a sequence of key combinations. However, the interface is not much documented in the Help file, and for some key combination it's not possible to program it correctly using the interface.

IntelliType Macro Interface
The Interface of IntelliType's Macro Editor

Macro Data Are XML Files

When you create a macro, the data is stored at for example: C:/Users/xah/Documents/Microsoft Hardware/Macros. Take a look of that folder. (if the folder doesn't exist, then create a macro first.) The folder contains files for macros you've created. If you have macros for specific applications (as done thru the interface menu named 〖Custom Key Settings〗 and 〖Automatic Program Settings〗), a new folder is created for that application.

Interface Mirrors XML Macro Files

For example, here's my current directory tree of that folder:

C:/Users/xah/Documents/Microsoft Hardware/Macros
  show hide volumn.mhm
  show hide wireframe.mhm

The file names show up in the IntelliType interface as the macro names under the “Available Macros” box on the left. The “Emerald” folder holds macros for when i'm in the “Emerald” application. (Emerald is a viewer for Second Life.)

Each file is a XML file. When you use the IntelliType interface to create a macro, a xml file is automatically created for you. Once you created a macro thru the interface, you can edit the xml file to fine tune it. You can also just create a new xml file and it'll show up in IntelliType. When you relaunch IntelliType, the macro interface will show macros based on files in this folder.

Macro Keycode Meaning

For example, the following is the content of my macro “show hide volumn”, which is equivalent to pressing 【Ctrl+Alt+⇧ Shift+9】.

<?xml version="1.0" encoding="UTF-8"?><Macro>
  <KeyBoardEvent Down="true">29</KeyBoardEvent>
  <KeyBoardEvent Down="true">42</KeyBoardEvent>
  <KeyBoardEvent Down="true">56</KeyBoardEvent>
  <KeyBoardEvent Down="true">10</KeyBoardEvent>
  <KeyBoardEvent Down="false">10</KeyBoardEvent>
  <KeyBoardEvent Down="false">42</KeyBoardEvent>
  <KeyBoardEvent Down="false">29</KeyBoardEvent>
  <KeyBoardEvent Down="false">56</KeyBoardEvent>

Each number is a key code. The text Down="true" means that key is pressed. Down="false" means that key is released. The line <DelayEvent>10</DelayEvent> means put a delay of 10 micro seconds.

You can find out key's code by using the interface to record keys and look at your xml file. Here's some code of the keys: