float
InputDevice_XInput::get_axis(int index) const
{
  if (index >= 0 && index < get_axis_count())
    {
      return float(axis[index].pos)/(axis[index].max_value - axis[index].min_value);
    }
  else
    {
      return 0.0f;
    }
}
示例#2
0
std::vector<Joystick::CalibrationData>
Joystick::get_calibration()
{
  std::vector<struct js_corr> corr(get_axis_count());

  if (ioctl(fd, JSIOCGCORR, &*corr.begin()) < 0)
    {
      std::ostringstream str;
      str << filename << ": " << strerror(errno);
      throw std::runtime_error(str.str());
    }
  else
    {
      std::vector<CalibrationData> data;
      std::transform(corr.begin(), corr.end(), std::back_inserter(data), corr2cal);
      return data;
    }
}
示例#3
0
void
Joystick::clear_calibration()
{
  std::vector<CalibrationData> data;
  
  for(int i = 0; i < get_axis_count(); ++i)
    {
      CalibrationData cal;

      cal.calibrate  = false;
      cal.invert     = false;
      cal.center_min = 0;
      cal.center_max = 0;
      cal.range_min  = 0;
      cal.range_max  = 0;
     
      data.push_back(cal);
    }

  set_calibration(data);
}