Contents

Previous

Next

Last

Control Manager Operation

The Control Manager provides all of the basic functions for programming axes and buttons to send characters, control the mouse, etc. that you've come to expect from high-end joystick programming systems.

The Control Manager is unique though in that it allows you to define Control Manager Devices that are based on the controls from several different controllers. This is an absolute necessity with older games which can only respond to a single device, and can be useful in more modern games, too, as it can simplify controller setup.

Additionally, the Control Manager provides a high-level scripting utility, CMS, which can be used to define complex functions that cannot be defined using the standard programming functions.

The combination of the programming functions, the ability to combine axes and buttons to form controllers with virtually any combination of controls, and the ability to use high-level script functions when special functionality is required combine to make the Control Manager the most powerful joystick programming system currently available

Windows and USB Controllers

To get an idea of how the Control Manager system works, it's helpful to have some understanding of how Windows handles USB game controllers. If you've ever used a USB device before, you may have noticed that you actually get two devices when you plug the controller in. One is the USB device itself. The second is usually a "HID-compliant game controller".

The USB device represents the controller hardware itself. When you plug the controllerin, it notifies the system that it has arrived and is a HID joystick. The system responds by creating the "HID-compliant game controller" to represent the controller to Windows. This HID device normally just takes the data provided by the USB device, formats the data to be in the form that Windows expects, and passes it along to Windows. It is this device that you see in the Windows Game Controllers Applet.

The Control Manager Difference

The Control Manager operates in much the same way, and in fact the USB drivers and most of the HID drivers that are involved are actually just the Windows standard drivers. The main difference is that the Control Manager takes over the creation of the HID devices rather than letting Windows create them to match the real controllers, thus giving it control over which devices will be created and how the controls on those devices will relate to the controls on the actual controllers. You can create virtual "joysticks" that Windows can use which are formed from combinations of the buttons and axes available on any of the CH USB devices that the Control Manager has access to. This method allows the virtual devices to appear to be "real" hardware, though, and so compatibility with Windows and virtually all games that support Windows/DirectX is assured.

Mapper Modes

The Control Manager is always in one of three basic operational modes which define how the Control Manager will creates (or will not) these HID devices. The following paragraphs explain the differences between these "Modes".

Direct Mode

This is the default mode, that which is in effect after Windows Startup. In Direct Mode, the Control Manager creates HID devices that match the USB controllers that they represent, essentially just as Windows itself does. In this case, the devices show up under their standard names in the Game Controllers Applet and can be used directly just as if the Control Manager were not present.

To further illustrate, suppose you have a system that uses a FighterStick, a Pro Throttle, and a set of Pro Pedals. Schematically, the system might look something like this:


The blue box in the center represents the Control Manager. Below that are your USB Controllers and above it are their HID counterparts. The Control Manager receives the device-generated data (shown in red) from the USB devices and passes it unmodified to the HID devices that represent them. No programming is active in Direct Mode, the HID devices in Game Controllers simply mirror what the corresponding USB device is doing just as they would using the standard Windows drivers.

Mapped Mode

In "Mapped Mode", the Control Manager collects all the axes and buttons from the USB devices just as it did in Direct Mode. The difference here is that the data is processed according to instructions and assignments defined in a "Map". Axes and buttons can be moved around to form controllers more suitable for the game being played, have characters assigned to them to perform actions that the game does not provide via DirectX, or processed by a script file to create new functions that are not otherwise provided by the Control Manager. It's this modified data that is then used to create the HID devices that are visible to Windows.

In this mode, the Control Manager system looks something like this:


The Map is created in the Control Manager GUI. It defines which buttons and axes on the HID devices correspond to which buttons and axes on the USB devices. In Mapped Mode, there are also a virtual keyboard and mouse device available so that buttons and axes can be set to send characters or generate mouse activity. The device-generated data (indicated in red) is processed as defined by the map. to produce the map-generated data (indicated in green).

The Control Mangaer provides Virtual Keyboard and Mouse devices that can receive map-generated data if necessary. These are used to send whatever keystrokes or mouse commands might be required by the map. These devices will appear in your Device Manager as the "Aux1 Device" and the "Aux2 Device".

These "virtual" HID devices do not have the same names as the USB devices when the Control Manager is in Mapped Mode. Rather, they are referred to as "Control Manager Device 1", "Control Manager Device 2", etc. This is because there is not necessarily a one-to-one relationship between the USB devices and the HID devices, or between the controls on the USB device and those on the HID devices. To illustrate, consider a FighterStick, ProThrottle, and ProPedals that are combined via the map to form a single controller. It makes little sense to try and attach the name of any of the three actual devices to this "virtual" controller so the "Control Manager Device" moniker is used.

It's very important to understand that the Control Manager Device is the "joystick" that Windows will see and deal with when the map is active. It's really no different than any "real" joystick. The buttons and axes on the Control Manager Device look and act exactly like the buttons and axes from a normal joystick. Windows cannot tell the difference. It's this appearance of being real "hardware" that guarantees compatibility of the Control Manager with virtually all games and simulations available today.

In many cases the number of HID devices is not the same as the number of USB devices connected. The most common occurrence is when a "combined" map such as is described above map is generated for a game that only recognizes a single joystick. All of the USB devices will have their axes and buttons mapped into a single HID Control Manager Device. Any axes and buttons that aren't mapped to the single HID device are set to send characters or remain unused. In this case there are less HID devices than real devices.

Less common but still possible is the situation where there are actually more Control Manager Devices than there are USB devices. If you are working with a game or simulation that recognizes a lot of direct inputs, Microsofts Flight Simulator for example, you might end up wanting to generate more buttons than the normal controllers have available. Each Control Manger Device can provide as many as 6 axes (8 with Windows XP) and 32 buttons, not a great many, but there can be as many as 16 Control Manager Devices so in games and simulations that recognize multiple controllers, the actual number of control available is 96 axes (128 with XP) and 512 buttons. This is really independent of the controllers that are actually present so you can, for example, generate as many as 128 buttons and 12 axes with a single FighterStick.

In such situations, you can simply create another HID device (by referencing it in the map) and assign the extra axes and buttons to that device, thus ending up with more controllers showing in the game controllers applet than are actually connected to the computer. The Control Manager creates as many Control Manager Devices as the map makes reference to.

Off Mode

The last mode is "Off Mode", the simplest of all. In this mode the HID devices aren't created at all. The system looks like this:


The Control Manager does not create any HID devices and so the USB devices are essentially turned off as far as Windows can tell. The device-generated data goes no further than the Control Manager itself.

Windows Startup

At Windows startup, the Control Manager defaults to "Direct" mode. Before you can use the map, the Control Manager must be set to Mapped Mode. It's not necessary to actually download the program again. That's still present, it's just turned off. You can start the Control Manager GUI and simply press the "Mapped Mode" button to get it to start running the last map downloaded. There is a small utility, CMStart, that can be run from the Windows "StartUp" menu to automatically start the map when Windows restarts. CMStart is not a resident utility, it simply runs, sends the command to activate the map, and then exits.

Another option is the CM Control Center, a separate utility that ships with the Control Manager. It can be run at StartUp and set to put the Control Manager into any mode that you desire. It also has compile and download capability, a "launcher" that will download the map and then start the game for you, and several other functions that you might find useful. The Control Center is a resident "tool tray" utility. The CM Control Center has it's own Users Guide, you can refer to that for a detailed description of the functions that it provides.