ControllerMate has two distinct methods for programming: using Building Blocks and using Driver Configurations.
Building blocks are used to trigger activity on ControllerMate's internal keyboard, mouse, and MIDI source. Blocks that respond to controls on physical devices can be linked to blocks that trigger output through the internal devices. Additional blocks can be added to perform more complex functions. Building blocks are created by dragging them from the Palette window onto a page in the Editor window.
Driver configurations are used to modify the behavior of devices that use ControllerMate's keyboard and mouse driver. Controls on these devices can be modified to behave like different controls on the same device, or to have no behavior at all. Controls that have no behavior will not be seen by most other applications, but can be used with ControllerMate's building blocks. A driver configuration for a mouse can include a custom acceleration curve.