Joystick Config 101 - This will cover assigning very basic flight controls and weapons to a joystick, specifically for Aero and VTOLs - though the same commands apply to mech movement. (many thanks to Spartacus for the quote):
This particular section covers your actionmaps.xml folder located in c:/documents/my games/crysis/profiles/<profile name>/ folder.
Sections
=============
debug
default
helicopter (Aerospace/VTOL)
landvehicle
multiplayer
player
seavehicle
singleplayer
vehicle
vtol
Under each section I see various actions, with names that are pretty straightforward: moveleft, moveright, moveforward, moveback, etc. I also see multiple different parameters for those named actions, such as:
OnPress="1"
onPress="1" onRelease="1"
onPress="1" onRelease="1" retriggerable="1"
always="1"
onPress="1" onRelease="1" onHold="1"
onPress="1" consoleCmd="1"
onHold="1"
Under each named action, there are one or more keys. It seems the xi_ set is for the X-box
controller, the maxis_ is for mouse, and there are multiple for the joystick:
<key name="joyaxis_x"/>
<key name="joyaxis_y"/>
<key name="invjoyaxis_y"/>
<key name="joyaxis_z"/>
<key name="joyrot_z"/>
<key name="joybut_1"/>
<key name="joybut_2"/>
<key name="joybut_3"/>
etc
So all of that seems very straightforward. I've gotten the following to work:
<key name="joyaxis_y"/> pitch down
<key name="invjoyaxis_y"/> pitch up
This is the lever in back of the Evo used to change rate of speed:
<key name="joyaxis_z"/> accelerate
<key name="invjoyaxis_z"/> reverse (or vice versa, I can't recall for sure)
This is twisting the JS:
<key name="joyrot_z"/> torso twist
When looking at a function you'll see something like this:
<action name="Fire_Group1" onPress="1">
<key name="1"/>
</action>
It's simple - Action name is just that. The action name. It comes with a modifier - in this case, the "onPress" command, which means that it activates the function when you press the button (rocket science!). The key name is the key assignment. The last line indicates the end of the programming for that action.
So for setting up VTOLs and Aero, you want to look primarily at the helicopter and vehicle sections of your actionmaps (ignore VTOL - it does not apply to the mod). First, the helicopter section. This one is easy (my actionmap - note bold sections):
<actionmap name="helicopter" version="19">
<action name="v_brake" onPress="1" onRelease="1">
<key name="x"/>
</action>
<action name="v_boost" onPress="1" onRelease="1" retriggerable="1">
<key name="lshift"/>
<key name="xi_shoulderl"/>
</action>
<action name="v_rotateyaw">
<key name="joyaxis_x"/>
</action>
<action name="v_rotatepitch">
<key name="maxis_y"/>
<key name="joyaxis_y"/>
</action>
<action name="v_moveup" onPress="1" onRelease="1" retriggerable="1">
<key name="w"/>
</action>
<action name="v_movedown" onPress="1" onRelease="1" retriggerable="1">
<key name="s"/>
</action>
<action name="v_rotatedir">
<key name="maxis_x"/>
</action>
<action name="v_rollleft" onPress="1" onRelease="1" onHold="1">
<key name="a"/>
</action>
<action name="v_rollright" onPress="1" onRelease="1" onHold="1">
<key name="d"/>
</action>
<action name="v_pitchup" onPress="1" onRelease="1">
<key name="r"/>
</action>
<action name="v_pitchdown" onPress="1" onRelease="1">
<key name="c"/>
</action>
</actionmap>
For my helicopter actionmaps, I added yaw controls, and enabled the joystick for pitch controls using the joyaxis_x and joyaxis_y commands:
<action name="v_rotateyaw">
<key name="joyaxis_x"/>
</action>
<action name="v_rotatepitch">
<key name="maxis_y"/>
<key name="joyaxis_y"/>
</action>
Once this is in, you're good to go with flight controls. No changes need be made in options. If your joystick is connected, you can use it's X and Y functions to fly.
Now you'll need to be able to fire weapons.
NOTE: You'll need to know what numbers are programmed into each buttons (The trigger is usually joybut_1, and likewise, all other buttons have number assignments, though each joystick varies). To confirm what they each are, Joystick.exe is located within your Beta folders. That will give you all the info you need.
FOLLOW UP NOTE: Joystick.exe may label your first button as 00. In this case, that button should be considered 1, and not 0 when inserting it into the action map. (IE - my trigger is button 00 on my Saitek Cyborg X, but when I write in the code, it is labeled "joybut_1", and the following buttons would each be moved up a number).
Here's a portion of the group fire section of my actionmaps:
<action name="Fire_Group1" onPress="1">
<key name="1"/>
<key name="joybut_1"/>
</action>
<action name="Fire_Group2" onPress="1">
<key name="joybut_3"/>
<key name="mouse2"/>
</action>
<action name="Fire_Group3" onPress="1">
<key name="joybut_5"/>
<key name="mouse3"/>
</action>
It's simple. You assign a button using the <key name="joybut_#"/> command to a function. Here's the tricky part. Note that this particular actionmap sample includes the "onPress" command, but not the "onRelease". This means you'll have to find the opposite function with the "onRelease" command (in this case, the "Stop_Fire_Group") and apply the same buttons to the same groups, otherwise you'll constantly fire the triggered weapon group:
<action name="Stop_Fire_Group3" onRelease="1">
<key name="joybut_5"/>
<key name="mouse3"/>
</action>
<action name="Stop_Fire_Group2" onRelease="1">
<key name="joybut_3"/>
<key name="mouse2"/>
</action>
<action name="Stop_Fire_Group1" onRelease="1">
<key name="1"/>
<key name="joybut_1"/>
</action>
NOTE: Only two keys can be assigned to any one function. Don't apply any more then that or the function will not work.
And that is it. That is all the more complex it gets. A great way to go about learning more would be to take a look at the provided example actionmaps in your mod folder. They're set up to specific joysticks, so they won't necessarily work for everyone, but simple adjustments can be made to create a more appropriate control scheme for each individual.
This is a very basic setup guide and I'm admittedly pretty tired (thus making me prone to incoherent writing), so please feel free to field any questions. Some of us have become quite experienced in trying to figure this out

EDIT: In some cases, joystick sensitivity needs to be adjusted in your c:/crysis/mods/mwll/games/config/ folder. Aruin (who coded in joystick functions) describes these values below:
If you have problems that your joytick only acts like keys, maybe the attenuators are wrong for your joystick, not every joystick reports in the same way to the directx input. Try to adjust this file, you will find in for example:
D:\Crysis\Mods\mwll\Game\Config
Open this with an editor, it should look like this:
joystick = 1
x_axis_att = 7.5 <= for x_axis the higher the faster the movement to x.
y_axis_att = 7.5 <= for y_axis the higher the faster the movement to x.
z_axis_att = 10 <= for z_axis the higher the faster the movement to x.
x_rot_att = 1 <= same for rotational axis
y_rot_att = 1
z_rot_att = 1
x_axis_off = 150 <= offset, blind area, normaly full left is reported with -1000, +1000 for full right, but around zero most joysticks are flickering between -100 and 100
y_axis_off = 150
z_axis_off = 150
x_rot_off = 150
y_rot_off = 150
z_rot_off = 150
slider_1_att = 1
slider_2_att = 1
slider_1_off = 100
slider_2_off = 100
To see what axis is doing what use the joystick.exe program in the mwll directory it shows you the output to the directx input by your joystick or gamepad.
At the Moment i write a configuration program, but this is not as simple because i have to use 3 different writing languages to get it full compatible with different directx and windowsversions. So give me a little time.....