I've tried this, and the only way I could get it to echo anything, in or out of a vehicle, was to mount it to slot 0 and click :/
datablock shapeBaseImageData(gravityJeepCrouchImage){
shapeFile="base/data/shapes/empty.dts";
mountPoint=3;
stateName[0] = "Ready";
stateTransitionOnTriggerDown[0] = "Crouch";
stateName[1] = "Crouch";
stateTransitionOnTriggerUp[1] = "UnCrouch";
stateScript[1] = "onCrouch";
stateName[2] = "UnCrouch";
stateTransitionOnTriggerDown[2] = "Crouch";
stateScript[2] = "onUnCrouch";
};
function gravityJeepCrouchImage::onCrouch(%this,%obj,%slot){
echo("CROUCH "@%this TAB %obj TAB %slot);
}
function gravityJeepCrouchImage::onUnCrouch(%this,%obj,%slot){
echo("UNCROUCH "@%this TAB %obj TAB %slot);
}