docs: def map_single_axis(low, high, dead_zone, hot_zone, value):
      """
      Apply dead and hot zones before mapping a value to a range. The dead and hot zones are both expressed as the
      proportion of the axis range which should be regarded as 0.0 or 1.0 (or -1.0 depending on cardinality) respectively,
      so for example setting dead zone to 0.2 means the first 20% of the range of the axis will be treated as if it's the
      low value, and setting the hot zone to 0.4 means the last 40% of the range will be treated as if it's the high
      value. Note that as with map_into_range, low is not necessarily numerically lower than high, it instead expresses
      a low value signal as opposed to a high value one (which could include a high negative value). Note that bad things
      happen if dead_zone + hot_zone == 1.0, so don't do that. This is used by the map_dual_axis call, but can also be
      used by itself to handle single axes like triggers where the overall range varies from 0.0 to 1.0 rather than -1.0
      to 1.0 as a regular joystick axis would.
  
      :param low:
          The value corresponding to no signal
      :param high:
          The value corresponding to a full signal
      :param dead_zone:
          The proportion of the range of motion away from the no-signal end which should be treated as equivalent to no
          signal and return 0.0
      :param hot_zone:
          The proportion of the range of motion away from the high signal end which should be treated as equivalent to a
          full strength input.
      :param value:
          The raw value to map
      :return:
          The scaled and clipped value, taking into account dead and hot zone boundaries, ranging from 0.0 to either 1.0
          or -1.0 depending on whether low or high are numerically larger (low < high means max value is 1.0, high < low
          means it's -1.0).
      """
      input_range = high - low
      corrected_low = low + input_range * dead_zone
      corrected_high = high - input_range * hot_zone
      return map_into_range(corrected_low, corrected_high, value)