@@ -291,6 +291,11 @@ XboxController::XboxController(libusb_device_handle* handle, uint8_t* usb_ports,
291
291
if (vibration_enabled_)
292
292
VibrationEnabled (vibration_enabled_);
293
293
294
+ deadzone_.sThumbL = min (max (GetSettingInt (" DeadzoneLeftStick" , 0 ), 0 ), SHRT_MAX);
295
+ deadzone_.sThumbR = min (max (GetSettingInt (" DeadzoneRightStick" , 0 ), 0 ), SHRT_MAX);
296
+ deadzone_.bLeftTrigger = min (max (GetSettingInt (" DeadzoneLeftTrigger" , 0 ), 0 ), 0xFF );
297
+ deadzone_.bRightTrigger = min (max (GetSettingInt (" DeadzoneRightTrigger" , 0 ), 0 ), 0xFF );
298
+
294
299
usb_product_ = usb_desc_.idProduct ;
295
300
usb_vendor_ = usb_desc_.idVendor ;
296
301
}
@@ -479,6 +484,8 @@ bool XboxController::update()
479
484
deadzone_.sThumbR = min (max (deadzone_.sThumbR +adjustment,0 ), SHRT_MAX);
480
485
}
481
486
487
+ SaveDeadzones ();
488
+
482
489
// wait for button release
483
490
deadzone_.hold = true ;
484
491
}
@@ -498,6 +505,8 @@ bool XboxController::update()
498
505
deadzone_.bRightTrigger = min (max (deadzone_.bRightTrigger +adjustment,0 ), 0xFF );
499
506
}
500
507
508
+ SaveDeadzones ();
509
+
501
510
// wait for button release
502
511
deadzone_.hold = true ;
503
512
}
@@ -556,6 +565,22 @@ void XboxController::VibrationEnabled(bool value)
556
565
SetSetting (" EnableVibration" , value ? " true" : " false" );
557
566
}
558
567
568
+ void XboxController::SaveDeadzones ()
569
+ {
570
+ // WritePrivateProfile can only write strings, bleh
571
+ if (deadzone_.sThumbL )
572
+ SetSetting (" DeadzoneLeftStick" , std::to_string (deadzone_.sThumbL ));
573
+
574
+ if (deadzone_.sThumbR )
575
+ SetSetting (" DeadzoneRightStick" , std::to_string (deadzone_.sThumbR ));
576
+
577
+ if (deadzone_.bLeftTrigger )
578
+ SetSetting (" DeadzoneLeftTrigger" , std::to_string (deadzone_.bLeftTrigger ));
579
+
580
+ if (deadzone_.bRightTrigger )
581
+ SetSetting (" DeadzoneRightTrigger" , std::to_string (deadzone_.bRightTrigger ));
582
+ }
583
+
559
584
int XboxController::GetSettingInt (const std::string& setting, int default_val)
560
585
{
561
586
return GetPrivateProfileIntA (ini_key_.c_str (), setting.c_str (), default_val, ini_path);
0 commit comments