
The Controller Settings section has two sets of boxes. The "Normal Action"
section defines the Control Manager Device and Button ID that will be used
when the map is in Normal Mode. The "Shifted Action" defines the Control
Manager Device and Button ID that will be used when the map is Shifted
Mode. Otherwise, the two sections are identical.
Both sections contain two drop-down lists. The DirectX Device box selects
which Control Manager Device that the button will be assigned to. This can
be any CM Device ID or the Mouse. The DirectX Control box selects the button
ID on that Control Manager device which the selected button will control.
You do not need to fill in both sets of boxes. The Normal Action section
sets the default value. If the Shifted Action section is left blank, the
Normal Action will operate when the map is in either Normal or Shifted
mode.
If you want to use a button as a Mouse button, you need to set the
DX Device to Mouse (it's below CM Device 16 in the drop-down list) and
assign the button to Button 1, Button 2, or Button 3. Other buttons
are not recognized by the mouse.
Programmed Mode
If the DirectX Mode checkbox in the Settings Box is unchecked, then the
button will operate in Programmed Mode and will be programmed to send
characters. The Dialog Pane will look like this:

Just as in DirectX Mode, the dialog has sections for both Normal Action and
Shifted Action. Again, if no Shifted Action is programmed, the Normal
Action will be generated whether the map is in Normal Mode or Shifted
Mode.
Each section has two boxes in it, one labeled "Press" and the other
labeled "Release". You enter the characters that you want the controller
to send when the button is pressed and the characters you want it to send
when the button is released respectively. See the section on
Programming Character Macros for information on entering
characters and strings, special characters, etc.
List Mode
There is a second method for programming characters called "List Mode".
Normally a button sends the same characters at press//release every
time, depending of course on the current Mode, Shift state, etc.
List mode allows you to specify a list of Press/Release commands, as
many as 32, for any button. Each time the button is pressed, the next
command in the list will be sent. When the end of the list is reached,
it is started over.
To use the List function, pick a button and uncheck the "DX Mode" box.
You'll see a new checkbox show up between the "DX Mode" and the "Shift"
checkboxes. Check that and the button dialog will change to a two-column
list. It looks like this:

The first 8 entries should be visible with a scroll bar on the right
that lets you scroll down through the other 24. The left column holds the
"Press" command, the right column holds the "Release" command. You just
need to enter the commands as you would into the normal character boxes.
Neither entry is mandatory, you can have a Press without a Release and
vice-versa.
In the above illustration, two "Press" entries ("GearUp" and
"GearDown") have been made. no "Release" entries have been made. As the
button is pressed repeatedly, the Control Manager will send alternating
"GearUp" and "GearDown" command on each button click. "GearUp" and GearDown"
would have to have been defined in an associated CMC file of course, or
they would not be recognized.
The same basic "right-click" mechanisms that works with the normal text
boxes works with the List dialog also. The main difference is that the
right-click will select the cell that will receive the command, something
that wasn't really necessary for the other boxes. The right-click allows
you to insert CMC commands or use the keystroke generator to enter the
commands if you'd rather.
List programming does not recognize the Shift button, you get the same list
whether shift is down or not. It does recognize Mode though, so you can have
different lists on the same button for different modes. If the mode
changes, the list will normally be restarted at the first item in the new
mode. List Mode is like the other CM Mode commands, you only have to program
Mode 1 and it will be used in any of the other three modes that aren't
otherwise programmed. Since the most common use of List Mode includes only
one list, though, the list is not reset unless the Mode change implies a
list change.
For example if you only program a List to Mode 1, letting that
be the default for the other Modes, then a Mode switch will not reset the
list. On the other hand, if you were to program different lists in Mode 1
and Mode 3, you could switch from Mode 1 to Mode 2 without causing the list
to reset, but a switch from Mode 2 to Mode 3 would cause a list change so
the list would be reset. Likewise a switch from Mode 3 to Mode 4 would cause
a reset even though Mode 4 isn't programmed itself since it would be using
the default Mode 1 list.
Using List Mode
List Mode programming can be used in several ways. Probably the most common
is as a toggle. If you've got a function that needs two commands, say
"CanopyOpen" and "CanopyClose" or "GearUp" and "GearDown", and you want to
have one button handle them both, you can just put the two command on the
first two press strings in the list and they'll alternate each time you click
the button, effectively turning the button into a "Toggle".
Lists can also simplify the programming of sequences. Using the
existing SELECT block function for example, you essentially have to use a
different CMS button for each command in the sequence. With the List, the
CMS file can simply pulse a single button and the List will automatically
take care of the sequencing.
Button Dialog Comment Box
At the bottom of the Button Dialog is the Comment Box. This does not affect
map operation, it just provides a place to make a note about what the button
is programmed to do.