Qt/Input: add keyboard stick interpolation

This commit is contained in:
Megamouse 2018-12-29 15:56:18 +01:00
parent a77bd41b50
commit 632b0f489c
7 changed files with 338 additions and 84 deletions

View file

@ -478,12 +478,21 @@ void pad_settings_dialog::ReloadButtons()
// Enable Mouse Acceleration
std::vector<std::string> mouse_accel_range_x = m_handler_cfg.mouse_acceleration_x.to_list();
ui->mouse_accel_x->setRange(std::stod(mouse_accel_range_x.front()) / (double)100, std::stod(mouse_accel_range_x.back()) / (double)100);
ui->mouse_accel_x->setValue((double)m_handler_cfg.mouse_acceleration_x / (double)100);
ui->mouse_accel_x->setRange(std::stod(mouse_accel_range_x.front()) / 100.0, std::stod(mouse_accel_range_x.back()) / 100.0);
ui->mouse_accel_x->setValue((double)m_handler_cfg.mouse_acceleration_x / 100.0);
std::vector<std::string> mouse_accel_range_y = m_handler_cfg.mouse_acceleration_y.to_list();
ui->mouse_accel_y->setRange(std::stod(mouse_accel_range_y.front()) / (double)100, std::stod(mouse_accel_range_y.back()) / (double)100);
ui->mouse_accel_y->setValue((double)m_handler_cfg.mouse_acceleration_y / (double)100);
ui->mouse_accel_y->setRange(std::stod(mouse_accel_range_y.front()) / 100.0, std::stod(mouse_accel_range_y.back()) / 100.0);
ui->mouse_accel_y->setValue((double)m_handler_cfg.mouse_acceleration_y / 100.0);
// Enable Stick Lerp Factors
std::vector<std::string> left_stick_lerp_range = m_handler_cfg.l_stick_lerp_factor.to_list();
ui->left_stick_lerp->setRange(std::stod(left_stick_lerp_range.front()) / 100.0, std::stod(left_stick_lerp_range.back()) / 100.0);
ui->left_stick_lerp->setValue((double)m_handler_cfg.l_stick_lerp_factor / 100.0);
std::vector<std::string> right_stick_lerp_range = m_handler_cfg.r_stick_lerp_factor.to_list();
ui->right_stick_lerp->setRange(std::stod(right_stick_lerp_range.front()) / 100.0, std::stod(right_stick_lerp_range.back()) / 100.0);
ui->right_stick_lerp->setValue((double)m_handler_cfg.r_stick_lerp_factor / 100.0);
// Enable Vibration Checkboxes
m_enable_rumble = m_handler->has_rumble();
@ -726,6 +735,9 @@ void pad_settings_dialog::SwitchButtons(bool is_enabled)
ui->gb_vibration->setEnabled(is_enabled && m_enable_rumble);
ui->gb_sticks->setEnabled(is_enabled && m_enable_deadzones);
ui->gb_triggers->setEnabled(is_enabled && m_enable_deadzones);
ui->gb_mouse_accel->setEnabled(is_enabled && m_handler->m_type == pad_handler::keyboard);
ui->gb_mouse_dz->setEnabled(is_enabled && m_handler->m_type == pad_handler::keyboard);
ui->gb_stick_lerp->setEnabled(is_enabled && m_handler->m_type == pad_handler::keyboard);
for (int i = button_ids::id_pad_begin + 1; i < button_ids::id_pad_end; i++)
{
@ -847,7 +859,8 @@ void pad_settings_dialog::ChangeInputType()
const auto device_list = m_handler->ListDevices();
// change our contextual widgets
ui->stackedWidget->setCurrentIndex((m_handler->m_type == pad_handler::keyboard) ? 1 : 0);
ui->left_stack->setCurrentIndex((m_handler->m_type == pad_handler::keyboard) ? 1 : 0);
ui->right_stack->setCurrentIndex((m_handler->m_type == pad_handler::keyboard) ? 1 : 0);
// Refill the device combobox with currently available devices
switch (m_handler->m_type)
@ -1045,6 +1058,8 @@ void pad_settings_dialog::SaveProfile()
m_handler_cfg.mouse_acceleration_y.set(ui->mouse_accel_y->value() * 100);
m_handler_cfg.mouse_deadzone_x.set(ui->mouse_dz_x->value());
m_handler_cfg.mouse_deadzone_y.set(ui->mouse_dz_y->value());
m_handler_cfg.l_stick_lerp_factor.set(ui->left_stick_lerp->value() * 100);
m_handler_cfg.r_stick_lerp_factor.set(ui->right_stick_lerp->value() * 100);
}
m_handler_cfg.save();