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; } }
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; } }
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); }