public static float remapAxisRange(JoystickAxis axis, float currentValue) {
        String joyName = axis.getJoystick().getName();
        Map<String, AxisData> map;
        float[] range = axisRangeMappings.get(axis);
        if (range == null) {
            map = getAxisMappings(joyName, false);
            if (map != null && map.containsKey(axis.getName())) {
                range = map.get(axis.getName()).range;
                axisRangeMappings.put(axis, range);
            } else {
                // Try the normalized name
                joyName = getNormalizedName(joyName);
                if (joyName != null) {
                    map = getAxisMappings(joyName, false);
                    if (map != null && map.containsKey(axis.getName())) {
                        range = map.get(axis.getName()).range;
                        axisRangeMappings.put(axis, range);
                    }
                }
            }
        }
        if (range == null) {
            axisRangeMappings.put(axis, new float[0]);
            return currentValue;
        }

        /*
         * If we have an array of size 0, that means we have acknowledged this axis (so we don't
         * need to go searching for it every tick), but that there is no remapping.
         */
        if (range.length == 0) {
            return currentValue;
        }

        return (currentValue + range[1] + range[0]) * ((range[1] - range[0]) / 2);
    }
This method will take a "raw" axis value from the system and rescale it based on what the remapper has specified. For example, if the remapper specified an axis to be scaled to [0.0,1.0], then a raw value of -0.5 would be converted to 0.25.

@param axis         - The axis to remap.
@param currentValue - The raw value the system is outputting, on a scale of -1.0 to 1.0.
@return The new value that will be provided to listeners, on a scale specified by the remappings file.
jme3-core/src/main/java/com/jme3/input/JoystickCompatibilityMappings.java