mirror of
https://github.com/cathery/sys-con.git
synced 2024-09-28 14:40:46 +00:00
Change controller config options
Allow unmapping keys Allow mapping multiple keys to the same button Allow changing the deadzone for each trigger Remove dualshock4 global option from the config files Update config files for new changes
This commit is contained in:
parent
e1b3fcc3b0
commit
fb578f6987
@ -1,7 +1,8 @@
|
|||||||
; Config for the Dualshock 3 controller
|
; Config for the Dualshock 3 controller
|
||||||
left_stick_deadzone = 10 ; from 0 to 100
|
left_stick_deadzone = 10 ; from 0 to 100
|
||||||
right_stick_deadzone = 10 ; from 0 to 100
|
right_stick_deadzone = 10 ; from 0 to 100
|
||||||
trigger_deadzone = 0 ; from 0 to 100
|
left_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
right_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
|
||||||
color_body = 48,71,105
|
color_body = 48,71,105
|
||||||
color_buttons = 22,22,22
|
color_buttons = 22,22,22
|
||||||
@ -13,4 +14,4 @@ color_rightGrip = 22,33,49
|
|||||||
swap_dpad_and_lstick = false ; set this to true to swap the d-pad and left stick
|
swap_dpad_and_lstick = false ; set this to true to swap the d-pad and left stick
|
||||||
|
|
||||||
; For information on input mapping, see "example.ini"
|
; For information on input mapping, see "example.ini"
|
||||||
;key_SYNC = LSTICK_CLICK ; Remove the semicolon at the start to take effect
|
;KEY_CAPTURE = LSTICK_CLICK ; Remove the semicolon at the start to take effect
|
@ -1,7 +1,8 @@
|
|||||||
; Config for the Dualshock 4 controller
|
; Config for the Dualshock 4 controller
|
||||||
left_stick_deadzone = 10 ; from 0 to 100
|
left_stick_deadzone = 10 ; from 0 to 100
|
||||||
right_stick_deadzone = 10 ; from 0 to 100
|
right_stick_deadzone = 10 ; from 0 to 100
|
||||||
trigger_deadzone = 0 ; from 0 to 100
|
left_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
right_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
|
||||||
color_led = 0,0,64 ; from 0 to 255
|
color_led = 0,0,64 ; from 0 to 255
|
||||||
|
|
||||||
@ -15,5 +16,5 @@ color_rightGrip = 33,33,33
|
|||||||
swap_dpad_and_lstick = false ; set this to true to swap the d-pad and left stick
|
swap_dpad_and_lstick = false ; set this to true to swap the d-pad and left stick
|
||||||
|
|
||||||
; For information on input mapping, see "example.ini"
|
; For information on input mapping, see "example.ini"
|
||||||
;key_SYNC = LSTICK_CLICK ; Remove the semicolon at the start to take effect
|
;KEY_CAPTURE = LSTICK_CLICK ; Remove the semicolon at the start to take effect
|
||||||
|
|
||||||
|
@ -1,2 +1 @@
|
|||||||
[global]
|
[global]
|
||||||
use_dualshock_2nd_generation = false
|
|
@ -1,7 +1,8 @@
|
|||||||
; Config for the Xbox 360 and Xbox 360 Wireless type controllers
|
; Config for the Xbox 360 and Xbox 360 Wireless type controllers
|
||||||
left_stick_deadzone = 21 ; from 0 to 100
|
left_stick_deadzone = 21 ; from 0 to 100
|
||||||
right_stick_deadzone = 25 ; from 0 to 100
|
right_stick_deadzone = 25 ; from 0 to 100
|
||||||
trigger_deadzone = 0 ; from 0 to 100
|
left_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
right_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
|
||||||
color_body = 77,77,77
|
color_body = 77,77,77
|
||||||
color_buttons = 69,121,22
|
color_buttons = 69,121,22
|
||||||
@ -13,4 +14,4 @@ color_rightGrip = 100,100,100
|
|||||||
swap_dpad_and_lstick = false ; set this to true to swap the d-pad and left stick
|
swap_dpad_and_lstick = false ; set this to true to swap the d-pad and left stick
|
||||||
|
|
||||||
; For information on input mapping, see "example.ini"
|
; For information on input mapping, see "example.ini"
|
||||||
;key_SYNC = LSTICK_CLICK ; Remove the semicolon at the start to take effect
|
;KEY_CAPTURE = LSTICK_CLICK ; Remove the semicolon at the start to take effect
|
@ -1,7 +1,8 @@
|
|||||||
; Config for the Xbox One type controllers
|
; Config for the Xbox One type controllers
|
||||||
left_stick_deadzone = 10 ; from 0 to 100
|
left_stick_deadzone = 10 ; from 0 to 100
|
||||||
right_stick_deadzone = 17 ; from 0 to 100
|
right_stick_deadzone = 17 ; from 0 to 100
|
||||||
trigger_deadzone = 0 ; from 0 to 100
|
left_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
right_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
|
||||||
color_body = 107,107,107
|
color_body = 107,107,107
|
||||||
color_buttons = 0,0,0
|
color_buttons = 0,0,0
|
||||||
@ -14,5 +15,5 @@ swap_dpad_and_lstick = false ; set this to true to swap the d-pad and left stick
|
|||||||
|
|
||||||
; For information on input mapping, see "example.ini"
|
; For information on input mapping, see "example.ini"
|
||||||
; Remove the semicolons below to take effect
|
; Remove the semicolons below to take effect
|
||||||
;key_FACE_DOWN = FACE_RIGHT
|
;KEY_FACE_DOWN = FACE_RIGHT
|
||||||
;key_FACE_LEFT = FACE_UP
|
;KEY_FACE_LEFT = FACE_UP
|
@ -1,7 +1,8 @@
|
|||||||
; Config for the original XBOX type controllers
|
; Config for the original XBOX type controllers
|
||||||
left_stick_deadzone = 21 ; from 0 to 100
|
left_stick_deadzone = 21 ; from 0 to 100
|
||||||
right_stick_deadzone = 25 ; from 0 to 100
|
right_stick_deadzone = 25 ; from 0 to 100
|
||||||
trigger_deadzone = 0 ; from 0 to 100
|
left_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
right_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
|
||||||
color_body = 77,77,77
|
color_body = 77,77,77
|
||||||
color_buttons = 69,121,22
|
color_buttons = 69,121,22
|
||||||
@ -13,4 +14,4 @@ color_rightGrip = 100,100,100
|
|||||||
swap_dpad_and_lstick = false ; set this to true to swap the d-pad and left stick
|
swap_dpad_and_lstick = false ; set this to true to swap the d-pad and left stick
|
||||||
|
|
||||||
; For information on input mapping, see "example.ini"
|
; For information on input mapping, see "example.ini"
|
||||||
;key_SYNC = GUIDE ; Remove the semicolon at the start to take effect
|
;KEY_CAPTURE = HOME ; Remove the semicolon at the start to take effect
|
@ -5,39 +5,42 @@ right_stick_deadzone = 17 ; from 0 to 100
|
|||||||
|
|
||||||
; trigger_deadzone is the percentage of how hard the trigger should be pressed before it is visible
|
; trigger_deadzone is the percentage of how hard the trigger should be pressed before it is visible
|
||||||
; 0 - always, 100 - not at all
|
; 0 - always, 100 - not at all
|
||||||
trigger_deadzone = 0 ; from 0 to 100
|
left_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
right_trigger_deadzone = 0 ; from 0 to 100
|
||||||
|
|
||||||
; Swap the button inputs for dpad and lstick, so that the dpad will be treated as analog input.
|
; Swap the button inputs for dpad and lstick, so that the dpad will be treated as analog input.
|
||||||
swap_dpad_and_lstick = false ; set this to true to swap the d-pad and left stick
|
swap_dpad_and_lstick = false ; set this to true to swap the d-pad and left stick
|
||||||
|
|
||||||
; to modify the key values, type "key_* = *"
|
; to modify the key values, type "KEY_* = *"
|
||||||
; where * is one of the values from this table
|
; where * is one of the values from this table
|
||||||
; FACE_UP X on joycons
|
; DEFAULT Use the default value (every key is mapped to this by default)
|
||||||
|
; NONE Unmap the button
|
||||||
|
; FACE_UP X on joycons
|
||||||
; FACE_RIGHT A on joycons
|
; FACE_RIGHT A on joycons
|
||||||
; FACE_DOWN B on joycons
|
; FACE_DOWN B on joycons
|
||||||
; FACE_LEFT Y on joycons
|
; FACE_LEFT Y on joycons
|
||||||
; LSTICK_CLICK Left stick press
|
; LSTICK_CLICK Left stick press
|
||||||
; RSTICK_CLICK Right stick press
|
; RSTICK_CLICK Right stick press
|
||||||
; LEFT_BUMPER Left bumper/ L
|
; LEFT_BUMPER Left bumper/ L
|
||||||
; RIGHT_BUMPER Right bumper/ R
|
; RIGHT_BUMPER Right bumper/ R
|
||||||
; LEFT_TRIGGER Left trigger/ ZL
|
; LEFT_TRIGGER Left trigger/ ZL
|
||||||
; RIGHT_TRIGGER Right trigger/ ZR
|
; RIGHT_TRIGGER Right trigger/ ZR
|
||||||
; BACK Minus on joycons
|
; BACK Minus on joycons
|
||||||
; START Plus on joycons
|
; START Plus on joycons
|
||||||
; DPAD_UP D-pad UP
|
; DPAD_UP D-pad UP
|
||||||
; DPAD_RIGHT D-pad RIGHT
|
; DPAD_RIGHT D-pad RIGHT
|
||||||
; DPAD_DOWN D-pad DOWN
|
; DPAD_DOWN D-pad DOWN
|
||||||
; DPAD_LEFT D-pad LEFT
|
; DPAD_LEFT D-pad LEFT
|
||||||
; SYNC Capture on joycons
|
; CAPTURE Capture on joycons, sync on Xbox One, Touchpad press on DS4
|
||||||
; GUIDE Home on joycons
|
; HOME Home on joycons, Xbox button on Xbox, PS button on DS4
|
||||||
; TOUCHPAD Simulate at least one finger on the touch screen (doesn't work?)
|
; TOUCHPAD One finger on the DS4 touchpad (unused)
|
||||||
|
|
||||||
; example: this will swap the X and Y, A and B buttons to match the names on Xbox controllers
|
; example: this will swap the X and Y, A and B buttons to match the names on Xbox controllers
|
||||||
key_FACE_DOWN = FACE_RIGHT
|
KEY_FACE_DOWN = FACE_RIGHT
|
||||||
key_FACE_LEFT = FACE_UP
|
KEY_FACE_LEFT = FACE_UP
|
||||||
|
|
||||||
; example: this will press the Capture button on Left stick press
|
; example: this will press the Capture button on Left stick press
|
||||||
key_LSTICK_CLICK = SYNC
|
KEY_LSTICK_CLICK = CAPTURE
|
||||||
|
|
||||||
; these are RGB color values for the controller icon represented in the controller screens
|
; these are RGB color values for the controller icon represented in the controller screens
|
||||||
color_body = 107,107,107
|
color_body = 107,107,107
|
||||||
|
@ -1,8 +1,14 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
||||||
|
#define MAX_JOYSTICKS 2
|
||||||
|
#define MAX_TRIGGERS 2
|
||||||
|
#define MAX_CONTROLLER_BUTTONS 32
|
||||||
|
|
||||||
enum ControllerButton : uint8_t
|
enum ControllerButton : uint8_t
|
||||||
{
|
{
|
||||||
NOT_SET = 0,
|
DEFAULT = 0,
|
||||||
|
NONE,
|
||||||
FACE_UP,
|
FACE_UP,
|
||||||
FACE_RIGHT,
|
FACE_RIGHT,
|
||||||
FACE_DOWN,
|
FACE_DOWN,
|
||||||
@ -19,10 +25,10 @@ enum ControllerButton : uint8_t
|
|||||||
DPAD_RIGHT,
|
DPAD_RIGHT,
|
||||||
DPAD_DOWN,
|
DPAD_DOWN,
|
||||||
DPAD_LEFT,
|
DPAD_LEFT,
|
||||||
|
CAPTURE,
|
||||||
|
HOME,
|
||||||
SYNC,
|
SYNC,
|
||||||
GUIDE,
|
|
||||||
TOUCHPAD,
|
TOUCHPAD,
|
||||||
NUM_CONTROLLERBUTTONS = TOUCHPAD,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct NormalizedStick
|
struct NormalizedStick
|
||||||
@ -45,14 +51,12 @@ union RGBAColor {
|
|||||||
|
|
||||||
struct ControllerConfig
|
struct ControllerConfig
|
||||||
{
|
{
|
||||||
uint8_t leftStickDeadzonePercent{10};
|
uint8_t stickDeadzonePercent[MAX_JOYSTICKS]{};
|
||||||
uint8_t rightStickDeadzonePercent{10};
|
uint16_t stickRotationDegrees[MAX_JOYSTICKS]{};
|
||||||
uint16_t leftStickRotationDegrees{};
|
uint8_t triggerDeadzonePercent[MAX_TRIGGERS]{};
|
||||||
uint16_t rightStickRotationDegrees{};
|
ControllerButton buttons[MAX_CONTROLLER_BUTTONS]{};
|
||||||
uint8_t triggerDeadzonePercent{};
|
float triggers[MAX_TRIGGERS]{};
|
||||||
ControllerButton buttons[NUM_CONTROLLERBUTTONS]{};
|
NormalizedStick sticks[MAX_JOYSTICKS]{};
|
||||||
float triggers[2]{};
|
|
||||||
NormalizedStick sticks[2]{};
|
|
||||||
bool swapDPADandLSTICK{false};
|
bool swapDPADandLSTICK{false};
|
||||||
RGBAColor bodyColor{107, 107, 107, 255};
|
RGBAColor bodyColor{107, 107, 107, 255};
|
||||||
RGBAColor buttonsColor{0, 0, 0, 255};
|
RGBAColor buttonsColor{0, 0, 0, 255};
|
||||||
|
@ -123,9 +123,9 @@ Result Dualshock3Controller::GetInput()
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
float Dualshock3Controller::NormalizeTrigger(uint8_t value)
|
float Dualshock3Controller::NormalizeTrigger(uint8_t deadzonePercent, uint8_t value)
|
||||||
{
|
{
|
||||||
uint8_t deadzone = (UINT8_MAX * _dualshock3ControllerConfig.triggerDeadzonePercent) / 100;
|
uint8_t deadzone = (UINT8_MAX * deadzonePercent) / 100;
|
||||||
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
||||||
return value < deadzone
|
return value < deadzone
|
||||||
? 0
|
? 0
|
||||||
@ -169,17 +169,17 @@ void Dualshock3Controller::NormalizeAxis(uint8_t x,
|
|||||||
//Pass by value should hopefully be optimized away by RVO
|
//Pass by value should hopefully be optimized away by RVO
|
||||||
NormalizedButtonData Dualshock3Controller::GetNormalizedButtonData()
|
NormalizedButtonData Dualshock3Controller::GetNormalizedButtonData()
|
||||||
{
|
{
|
||||||
NormalizedButtonData normalData;
|
NormalizedButtonData normalData{};
|
||||||
|
|
||||||
normalData.triggers[0] = NormalizeTrigger(m_buttonData.trigger_left_pressure);
|
normalData.triggers[0] = NormalizeTrigger(_dualshock3ControllerConfig.triggerDeadzonePercent[0], m_buttonData.trigger_left_pressure);
|
||||||
normalData.triggers[1] = NormalizeTrigger(m_buttonData.trigger_right_pressure);
|
normalData.triggers[1] = NormalizeTrigger(_dualshock3ControllerConfig.triggerDeadzonePercent[1], m_buttonData.trigger_right_pressure);
|
||||||
|
|
||||||
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _dualshock3ControllerConfig.leftStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _dualshock3ControllerConfig.stickDeadzonePercent[0],
|
||||||
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
||||||
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _dualshock3ControllerConfig.rightStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _dualshock3ControllerConfig.stickDeadzonePercent[1],
|
||||||
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
||||||
|
|
||||||
bool buttons[NUM_CONTROLLERBUTTONS] = {
|
bool buttons[MAX_CONTROLLER_BUTTONS] = {
|
||||||
m_buttonData.triangle,
|
m_buttonData.triangle,
|
||||||
m_buttonData.circle,
|
m_buttonData.circle,
|
||||||
m_buttonData.cross,
|
m_buttonData.cross,
|
||||||
@ -200,10 +200,13 @@ NormalizedButtonData Dualshock3Controller::GetNormalizedButtonData()
|
|||||||
m_buttonData.guide,
|
m_buttonData.guide,
|
||||||
};
|
};
|
||||||
|
|
||||||
for (int i = 0; i != NUM_CONTROLLERBUTTONS; ++i)
|
for (int i = 0; i != MAX_CONTROLLER_BUTTONS; ++i)
|
||||||
{
|
{
|
||||||
ControllerButton button = _dualshock3ControllerConfig.buttons[i];
|
ControllerButton button = _dualshock3ControllerConfig.buttons[i];
|
||||||
normalData.buttons[(button != NOT_SET ? button : i)] = buttons[i];
|
if (button == NONE)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
normalData.buttons[(button != DEFAULT ? button - 2 : i)] += buttons[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return normalData;
|
return normalData;
|
||||||
|
@ -146,7 +146,7 @@ public:
|
|||||||
|
|
||||||
inline const Dualshock3ButtonData &GetButtonData() { return m_buttonData; };
|
inline const Dualshock3ButtonData &GetButtonData() { return m_buttonData; };
|
||||||
|
|
||||||
float NormalizeTrigger(uint8_t value);
|
float NormalizeTrigger(uint8_t deadzonePercent, uint8_t value);
|
||||||
void NormalizeAxis(uint8_t x, uint8_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
void NormalizeAxis(uint8_t x, uint8_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||||
|
|
||||||
Result SendInitBytes();
|
Result SendInitBytes();
|
||||||
|
@ -129,9 +129,9 @@ Result Dualshock4Controller::GetInput()
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
float Dualshock4Controller::NormalizeTrigger(uint8_t value)
|
float Dualshock4Controller::NormalizeTrigger(uint8_t deadzonePercent, uint8_t value)
|
||||||
{
|
{
|
||||||
uint8_t deadzone = (UINT8_MAX * _dualshock4ControllerConfig.triggerDeadzonePercent) / 100;
|
uint8_t deadzone = (UINT8_MAX * deadzonePercent) / 100;
|
||||||
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
||||||
return value < deadzone
|
return value < deadzone
|
||||||
? 0
|
? 0
|
||||||
@ -175,17 +175,17 @@ void Dualshock4Controller::NormalizeAxis(uint8_t x,
|
|||||||
//Pass by value should hopefully be optimized away by RVO
|
//Pass by value should hopefully be optimized away by RVO
|
||||||
NormalizedButtonData Dualshock4Controller::GetNormalizedButtonData()
|
NormalizedButtonData Dualshock4Controller::GetNormalizedButtonData()
|
||||||
{
|
{
|
||||||
NormalizedButtonData normalData;
|
NormalizedButtonData normalData{};
|
||||||
|
|
||||||
normalData.triggers[0] = NormalizeTrigger(m_buttonData.l2_pressure);
|
normalData.triggers[0] = NormalizeTrigger(_dualshock4ControllerConfig.triggerDeadzonePercent[0], m_buttonData.l2_pressure);
|
||||||
normalData.triggers[1] = NormalizeTrigger(m_buttonData.r2_pressure);
|
normalData.triggers[1] = NormalizeTrigger(_dualshock4ControllerConfig.triggerDeadzonePercent[1], m_buttonData.r2_pressure);
|
||||||
|
|
||||||
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _dualshock4ControllerConfig.leftStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _dualshock4ControllerConfig.stickDeadzonePercent[0],
|
||||||
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
||||||
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _dualshock4ControllerConfig.rightStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _dualshock4ControllerConfig.stickDeadzonePercent[1],
|
||||||
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
||||||
|
|
||||||
bool buttons[NUM_CONTROLLERBUTTONS] = {
|
bool buttons[MAX_CONTROLLER_BUTTONS] = {
|
||||||
m_buttonData.triangle,
|
m_buttonData.triangle,
|
||||||
m_buttonData.circle,
|
m_buttonData.circle,
|
||||||
m_buttonData.cross,
|
m_buttonData.cross,
|
||||||
@ -204,13 +204,17 @@ NormalizedButtonData Dualshock4Controller::GetNormalizedButtonData()
|
|||||||
(m_buttonData.dpad == DS4_LEFT) || (m_buttonData.dpad == DS4_UPLEFT) || (m_buttonData.dpad == DS4_DOWNLEFT),
|
(m_buttonData.dpad == DS4_LEFT) || (m_buttonData.dpad == DS4_UPLEFT) || (m_buttonData.dpad == DS4_DOWNLEFT),
|
||||||
m_buttonData.touchpad_press,
|
m_buttonData.touchpad_press,
|
||||||
m_buttonData.psbutton,
|
m_buttonData.psbutton,
|
||||||
|
false,
|
||||||
m_buttonData.touchpad_finger1_unpressed == false,
|
m_buttonData.touchpad_finger1_unpressed == false,
|
||||||
};
|
};
|
||||||
|
|
||||||
for (int i = 0; i != NUM_CONTROLLERBUTTONS; ++i)
|
for (int i = 0; i != MAX_CONTROLLER_BUTTONS; ++i)
|
||||||
{
|
{
|
||||||
ControllerButton button = _dualshock4ControllerConfig.buttons[i];
|
ControllerButton button = _dualshock4ControllerConfig.buttons[i];
|
||||||
normalData.buttons[(button != NOT_SET ? button : i)] = buttons[i];
|
if (button == NONE)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
normalData.buttons[(button != DEFAULT ? button - 2 : i)] += buttons[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return normalData;
|
return normalData;
|
||||||
|
@ -162,7 +162,7 @@ public:
|
|||||||
|
|
||||||
virtual ControllerType GetType() override { return CONTROLLER_DUALSHOCK4; }
|
virtual ControllerType GetType() override { return CONTROLLER_DUALSHOCK4; }
|
||||||
|
|
||||||
float NormalizeTrigger(uint8_t value);
|
float NormalizeTrigger(uint8_t deadzonePercent, uint8_t value);
|
||||||
void NormalizeAxis(uint8_t x, uint8_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
void NormalizeAxis(uint8_t x, uint8_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||||
|
|
||||||
Result SendInitBytes();
|
Result SendInitBytes();
|
||||||
|
@ -122,9 +122,9 @@ Result Xbox360Controller::SendInitBytes()
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
float Xbox360Controller::NormalizeTrigger(uint8_t value)
|
float Xbox360Controller::NormalizeTrigger(uint8_t deadzonePercent, uint8_t value)
|
||||||
{
|
{
|
||||||
uint16_t deadzone = (UINT8_MAX * _xbox360ControllerConfig.triggerDeadzonePercent) / 100;
|
uint16_t deadzone = (UINT8_MAX * deadzonePercent) / 100;
|
||||||
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
||||||
return value < deadzone
|
return value < deadzone
|
||||||
? 0
|
? 0
|
||||||
@ -169,17 +169,17 @@ void Xbox360Controller::NormalizeAxis(int16_t x,
|
|||||||
//Pass by value should hopefully be optimized away by RVO
|
//Pass by value should hopefully be optimized away by RVO
|
||||||
NormalizedButtonData Xbox360Controller::GetNormalizedButtonData()
|
NormalizedButtonData Xbox360Controller::GetNormalizedButtonData()
|
||||||
{
|
{
|
||||||
NormalizedButtonData normalData;
|
NormalizedButtonData normalData{};
|
||||||
|
|
||||||
normalData.triggers[0] = NormalizeTrigger(m_buttonData.trigger_left);
|
normalData.triggers[0] = NormalizeTrigger(_xbox360ControllerConfig.triggerDeadzonePercent[0], m_buttonData.trigger_left);
|
||||||
normalData.triggers[1] = NormalizeTrigger(m_buttonData.trigger_right);
|
normalData.triggers[1] = NormalizeTrigger(_xbox360ControllerConfig.triggerDeadzonePercent[1], m_buttonData.trigger_right);
|
||||||
|
|
||||||
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _xbox360ControllerConfig.leftStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _xbox360ControllerConfig.stickDeadzonePercent[0],
|
||||||
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
||||||
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _xbox360ControllerConfig.rightStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _xbox360ControllerConfig.stickDeadzonePercent[1],
|
||||||
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
||||||
|
|
||||||
bool buttons[NUM_CONTROLLERBUTTONS]{
|
bool buttons[MAX_CONTROLLER_BUTTONS]{
|
||||||
m_buttonData.y,
|
m_buttonData.y,
|
||||||
m_buttonData.b,
|
m_buttonData.b,
|
||||||
m_buttonData.a,
|
m_buttonData.a,
|
||||||
@ -200,10 +200,13 @@ NormalizedButtonData Xbox360Controller::GetNormalizedButtonData()
|
|||||||
m_buttonData.guide,
|
m_buttonData.guide,
|
||||||
};
|
};
|
||||||
|
|
||||||
for (int i = 0; i != NUM_CONTROLLERBUTTONS; ++i)
|
for (int i = 0; i != MAX_CONTROLLER_BUTTONS; ++i)
|
||||||
{
|
{
|
||||||
ControllerButton button = _xbox360ControllerConfig.buttons[i];
|
ControllerButton button = _xbox360ControllerConfig.buttons[i];
|
||||||
normalData.buttons[(button != NOT_SET ? button : i)] = buttons[i];
|
if (button == NONE)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
normalData.buttons[(button != DEFAULT ? button - 2 : i)] += buttons[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return normalData;
|
return normalData;
|
||||||
|
@ -106,7 +106,7 @@ public:
|
|||||||
|
|
||||||
inline const Xbox360ButtonData &GetButtonData() { return m_buttonData; };
|
inline const Xbox360ButtonData &GetButtonData() { return m_buttonData; };
|
||||||
|
|
||||||
float NormalizeTrigger(uint8_t value);
|
float NormalizeTrigger(uint8_t deadzonePercent, uint8_t value);
|
||||||
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||||
|
|
||||||
Result SendInitBytes();
|
Result SendInitBytes();
|
||||||
|
@ -143,9 +143,9 @@ Result Xbox360WirelessController::GetInput()
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
float Xbox360WirelessController::NormalizeTrigger(uint8_t value)
|
float Xbox360WirelessController::NormalizeTrigger(uint8_t deadzonePercent, uint8_t value)
|
||||||
{
|
{
|
||||||
uint16_t deadzone = (UINT8_MAX * _xbox360WControllerConfig.triggerDeadzonePercent) / 100;
|
uint16_t deadzone = (UINT8_MAX * deadzonePercent) / 100;
|
||||||
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
||||||
return value < deadzone
|
return value < deadzone
|
||||||
? 0
|
? 0
|
||||||
@ -190,17 +190,17 @@ void Xbox360WirelessController::NormalizeAxis(int16_t x,
|
|||||||
//Pass by value should hopefully be optimized away by RVO
|
//Pass by value should hopefully be optimized away by RVO
|
||||||
NormalizedButtonData Xbox360WirelessController::GetNormalizedButtonData()
|
NormalizedButtonData Xbox360WirelessController::GetNormalizedButtonData()
|
||||||
{
|
{
|
||||||
NormalizedButtonData normalData;
|
NormalizedButtonData normalData{};
|
||||||
|
|
||||||
normalData.triggers[0] = NormalizeTrigger(m_buttonData.trigger_left);
|
normalData.triggers[0] = NormalizeTrigger(_xbox360WControllerConfig.triggerDeadzonePercent[0], m_buttonData.trigger_left);
|
||||||
normalData.triggers[1] = NormalizeTrigger(m_buttonData.trigger_right);
|
normalData.triggers[1] = NormalizeTrigger(_xbox360WControllerConfig.triggerDeadzonePercent[1], m_buttonData.trigger_right);
|
||||||
|
|
||||||
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _xbox360WControllerConfig.leftStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _xbox360WControllerConfig.stickDeadzonePercent[0],
|
||||||
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
||||||
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _xbox360WControllerConfig.rightStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _xbox360WControllerConfig.stickDeadzonePercent[1],
|
||||||
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
||||||
|
|
||||||
bool buttons[NUM_CONTROLLERBUTTONS]{
|
bool buttons[MAX_CONTROLLER_BUTTONS]{
|
||||||
m_buttonData.y,
|
m_buttonData.y,
|
||||||
m_buttonData.b,
|
m_buttonData.b,
|
||||||
m_buttonData.a,
|
m_buttonData.a,
|
||||||
@ -221,10 +221,13 @@ NormalizedButtonData Xbox360WirelessController::GetNormalizedButtonData()
|
|||||||
m_buttonData.guide,
|
m_buttonData.guide,
|
||||||
};
|
};
|
||||||
|
|
||||||
for (int i = 0; i != NUM_CONTROLLERBUTTONS; ++i)
|
for (int i = 0; i != MAX_CONTROLLER_BUTTONS; ++i)
|
||||||
{
|
{
|
||||||
ControllerButton button = _xbox360WControllerConfig.buttons[i];
|
ControllerButton button = _xbox360WControllerConfig.buttons[i];
|
||||||
normalData.buttons[(button != NOT_SET ? button : i)] = buttons[i];
|
if (button == NONE)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
normalData.buttons[(button != DEFAULT ? button - 2 : i)] += buttons[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return normalData;
|
return normalData;
|
||||||
|
@ -42,7 +42,7 @@ public:
|
|||||||
|
|
||||||
inline const Xbox360ButtonData &GetButtonData() { return m_buttonData; };
|
inline const Xbox360ButtonData &GetButtonData() { return m_buttonData; };
|
||||||
|
|
||||||
float NormalizeTrigger(uint8_t value);
|
float NormalizeTrigger(uint8_t deadzonePercent, uint8_t value);
|
||||||
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||||
|
|
||||||
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||||
|
@ -109,9 +109,9 @@ Result XboxController::GetInput()
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
float XboxController::NormalizeTrigger(uint8_t value)
|
float XboxController::NormalizeTrigger(uint8_t deadzonePercent, uint8_t value)
|
||||||
{
|
{
|
||||||
uint8_t deadzone = (UINT8_MAX * _xboxControllerConfig.triggerDeadzonePercent) / 100;
|
uint8_t deadzone = (UINT8_MAX * deadzonePercent) / 100;
|
||||||
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
||||||
return value < deadzone
|
return value < deadzone
|
||||||
? 0
|
? 0
|
||||||
@ -156,17 +156,17 @@ void XboxController::NormalizeAxis(int16_t x,
|
|||||||
//Pass by value should hopefully be optimized away by RVO
|
//Pass by value should hopefully be optimized away by RVO
|
||||||
NormalizedButtonData XboxController::GetNormalizedButtonData()
|
NormalizedButtonData XboxController::GetNormalizedButtonData()
|
||||||
{
|
{
|
||||||
NormalizedButtonData normalData;
|
NormalizedButtonData normalData{};
|
||||||
|
|
||||||
normalData.triggers[0] = NormalizeTrigger(m_buttonData.trigger_left);
|
normalData.triggers[0] = NormalizeTrigger(_xboxControllerConfig.triggerDeadzonePercent[0], m_buttonData.trigger_left);
|
||||||
normalData.triggers[1] = NormalizeTrigger(m_buttonData.trigger_right);
|
normalData.triggers[1] = NormalizeTrigger(_xboxControllerConfig.triggerDeadzonePercent[1], m_buttonData.trigger_right);
|
||||||
|
|
||||||
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _xboxControllerConfig.leftStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _xboxControllerConfig.stickDeadzonePercent[0],
|
||||||
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
||||||
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _xboxControllerConfig.rightStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _xboxControllerConfig.stickDeadzonePercent[1],
|
||||||
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
||||||
|
|
||||||
bool buttons[NUM_CONTROLLERBUTTONS]{
|
bool buttons[MAX_CONTROLLER_BUTTONS]{
|
||||||
m_buttonData.y != 0,
|
m_buttonData.y != 0,
|
||||||
m_buttonData.b != 0,
|
m_buttonData.b != 0,
|
||||||
m_buttonData.a != 0,
|
m_buttonData.a != 0,
|
||||||
@ -187,10 +187,13 @@ NormalizedButtonData XboxController::GetNormalizedButtonData()
|
|||||||
m_buttonData.black_buttton != 0,
|
m_buttonData.black_buttton != 0,
|
||||||
};
|
};
|
||||||
|
|
||||||
for (int i = 0; i != NUM_CONTROLLERBUTTONS; ++i)
|
for (int i = 0; i != MAX_CONTROLLER_BUTTONS; ++i)
|
||||||
{
|
{
|
||||||
ControllerButton button = _xboxControllerConfig.buttons[i];
|
ControllerButton button = _xboxControllerConfig.buttons[i];
|
||||||
normalData.buttons[(button != NOT_SET ? button : i)] = buttons[i];
|
if (button == NONE)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
normalData.buttons[(button != DEFAULT ? button - 2 : i)] += buttons[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return normalData;
|
return normalData;
|
||||||
|
@ -76,7 +76,7 @@ public:
|
|||||||
|
|
||||||
inline const XboxButtonData &GetButtonData() { return m_buttonData; };
|
inline const XboxButtonData &GetButtonData() { return m_buttonData; };
|
||||||
|
|
||||||
float NormalizeTrigger(uint8_t value);
|
float NormalizeTrigger(uint8_t deadzonePercent, uint8_t value);
|
||||||
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||||
|
|
||||||
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
Result SetRumble(uint8_t strong_magnitude, uint8_t weak_magnitude);
|
||||||
|
@ -206,9 +206,9 @@ Result XboxOneController::SendInitBytes()
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
float XboxOneController::NormalizeTrigger(uint16_t value)
|
float XboxOneController::NormalizeTrigger(uint8_t deadzonePercent, uint16_t value)
|
||||||
{
|
{
|
||||||
uint16_t deadzone = (TRIGGER_MAXVALUE * _xboxoneControllerConfig.triggerDeadzonePercent) / 100;
|
uint16_t deadzone = (TRIGGER_MAXVALUE * deadzonePercent) / 100;
|
||||||
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
//If the given value is below the trigger zone, save the calc and return 0, otherwise adjust the value to the deadzone
|
||||||
return value < deadzone
|
return value < deadzone
|
||||||
? 0
|
? 0
|
||||||
@ -253,17 +253,17 @@ void XboxOneController::NormalizeAxis(int16_t x,
|
|||||||
//Pass by value should hopefully be optimized away by RVO
|
//Pass by value should hopefully be optimized away by RVO
|
||||||
NormalizedButtonData XboxOneController::GetNormalizedButtonData()
|
NormalizedButtonData XboxOneController::GetNormalizedButtonData()
|
||||||
{
|
{
|
||||||
NormalizedButtonData normalData;
|
NormalizedButtonData normalData{};
|
||||||
|
|
||||||
normalData.triggers[0] = NormalizeTrigger(m_buttonData.trigger_left);
|
normalData.triggers[0] = NormalizeTrigger(_xboxoneControllerConfig.triggerDeadzonePercent[0], m_buttonData.trigger_left);
|
||||||
normalData.triggers[1] = NormalizeTrigger(m_buttonData.trigger_right);
|
normalData.triggers[1] = NormalizeTrigger(_xboxoneControllerConfig.triggerDeadzonePercent[1], m_buttonData.trigger_right);
|
||||||
|
|
||||||
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _xboxoneControllerConfig.leftStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_left_x, m_buttonData.stick_left_y, _xboxoneControllerConfig.stickDeadzonePercent[0],
|
||||||
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
&normalData.sticks[0].axis_x, &normalData.sticks[0].axis_y);
|
||||||
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _xboxoneControllerConfig.rightStickDeadzonePercent,
|
NormalizeAxis(m_buttonData.stick_right_x, m_buttonData.stick_right_y, _xboxoneControllerConfig.stickDeadzonePercent[1],
|
||||||
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
&normalData.sticks[1].axis_x, &normalData.sticks[1].axis_y);
|
||||||
|
|
||||||
bool buttons[NUM_CONTROLLERBUTTONS]{
|
bool buttons[MAX_CONTROLLER_BUTTONS]{
|
||||||
m_buttonData.y,
|
m_buttonData.y,
|
||||||
m_buttonData.b,
|
m_buttonData.b,
|
||||||
m_buttonData.a,
|
m_buttonData.a,
|
||||||
@ -284,10 +284,13 @@ NormalizedButtonData XboxOneController::GetNormalizedButtonData()
|
|||||||
m_GuidePressed,
|
m_GuidePressed,
|
||||||
};
|
};
|
||||||
|
|
||||||
for (int i = 0; i != NUM_CONTROLLERBUTTONS; ++i)
|
for (int i = 0; i != MAX_CONTROLLER_BUTTONS; ++i)
|
||||||
{
|
{
|
||||||
ControllerButton button = _xboxoneControllerConfig.buttons[i];
|
ControllerButton button = _xboxoneControllerConfig.buttons[i];
|
||||||
normalData.buttons[(button != NOT_SET ? button : i)] = buttons[i];
|
if (button == NONE)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
normalData.buttons[(button != DEFAULT ? button - 2 : i)] += buttons[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
return normalData;
|
return normalData;
|
||||||
|
@ -99,7 +99,7 @@ public:
|
|||||||
|
|
||||||
inline const XboxOneButtonData &GetButtonData() { return m_buttonData; };
|
inline const XboxOneButtonData &GetButtonData() { return m_buttonData; };
|
||||||
|
|
||||||
float NormalizeTrigger(uint16_t value);
|
float NormalizeTrigger(uint8_t deadzonePercent, uint16_t value);
|
||||||
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
void NormalizeAxis(int16_t x, int16_t y, uint8_t deadzonePercent, float *x_out, float *y_out);
|
||||||
|
|
||||||
Result SendInitBytes();
|
Result SendInitBytes();
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
struct NormalizedButtonData
|
struct NormalizedButtonData
|
||||||
{
|
{
|
||||||
bool buttons[NUM_CONTROLLERBUTTONS];
|
bool buttons[MAX_CONTROLLER_BUTTONS];
|
||||||
float triggers[2];
|
float triggers[2];
|
||||||
NormalizedStick sticks[2];
|
NormalizedStick sticks[2];
|
||||||
};
|
};
|
||||||
|
@ -162,7 +162,6 @@ void SwitchHDLHandler::FillHdlState(const NormalizedButtonData &data)
|
|||||||
|
|
||||||
m_hdlState.buttons |= (data.buttons[16] ? KEY_CAPTURE : 0);
|
m_hdlState.buttons |= (data.buttons[16] ? KEY_CAPTURE : 0);
|
||||||
m_hdlState.buttons |= (data.buttons[17] ? KEY_HOME : 0);
|
m_hdlState.buttons |= (data.buttons[17] ? KEY_HOME : 0);
|
||||||
m_hdlState.buttons |= (data.buttons[18] ? KEY_TOUCH : 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void SwitchHDLHandler::UpdateInput()
|
void SwitchHDLHandler::UpdateInput()
|
||||||
@ -189,7 +188,7 @@ void SwitchHDLHandler::UpdateInput()
|
|||||||
|
|
||||||
void SwitchHDLHandler::UpdateOutput()
|
void SwitchHDLHandler::UpdateOutput()
|
||||||
{
|
{
|
||||||
// Process a single output packet from a buffer
|
// Process a single output packet from a buffer
|
||||||
if (R_SUCCEEDED(GetController()->OutputBuffer()))
|
if (R_SUCCEEDED(GetController()->OutputBuffer()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -26,8 +26,9 @@ namespace syscon::config
|
|||||||
|
|
||||||
bool is_config_changed_check_thread_running = false;
|
bool is_config_changed_check_thread_running = false;
|
||||||
|
|
||||||
constexpr const char *keyNames[NUM_CONTROLLERBUTTONS]
|
constexpr std::array keyNames{
|
||||||
{
|
"DEFAULT",
|
||||||
|
"NONE",
|
||||||
"FACE_UP",
|
"FACE_UP",
|
||||||
"FACE_RIGHT",
|
"FACE_RIGHT",
|
||||||
"FACE_DOWN",
|
"FACE_DOWN",
|
||||||
@ -44,21 +45,22 @@ namespace syscon::config
|
|||||||
"DPAD_RIGHT",
|
"DPAD_RIGHT",
|
||||||
"DPAD_DOWN",
|
"DPAD_DOWN",
|
||||||
"DPAD_LEFT",
|
"DPAD_LEFT",
|
||||||
|
"CAPTURE",
|
||||||
|
"HOME",
|
||||||
"SYNC",
|
"SYNC",
|
||||||
"GUIDE",
|
|
||||||
"TOUCHPAD",
|
"TOUCHPAD",
|
||||||
};
|
};
|
||||||
|
|
||||||
ControllerButton StringToKey(const char *text)
|
ControllerButton StringToKey(const char *text)
|
||||||
{
|
{
|
||||||
for (int i = 0; i != NUM_CONTROLLERBUTTONS; ++i)
|
for (int i = 0; i != keyNames.size(); ++i)
|
||||||
{
|
{
|
||||||
if (strcmp(keyNames[i], text) == 0)
|
if (strcmp(keyNames[i], text) == 0)
|
||||||
{
|
{
|
||||||
return static_cast<ControllerButton>(i);
|
return static_cast<ControllerButton>(i);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return NOT_SET;
|
return NONE;
|
||||||
}
|
}
|
||||||
|
|
||||||
RGBAColor DecodeColorValue(const char *value)
|
RGBAColor DecodeColorValue(const char *value)
|
||||||
@ -82,37 +84,44 @@ namespace syscon::config
|
|||||||
|
|
||||||
int ParseConfigLine(void *dummy, const char *section, const char *name, const char *value)
|
int ParseConfigLine(void *dummy, const char *section, const char *name, const char *value)
|
||||||
{
|
{
|
||||||
if (strncmp(name, "key_", 4) == 0)
|
if (strncmp(name, "KEY_", 4) == 0)
|
||||||
{
|
{
|
||||||
ControllerButton button = StringToKey(name + 4);
|
ControllerButton button = StringToKey(name + 4);
|
||||||
ControllerButton buttonValue = StringToKey(value);
|
ControllerButton buttonValue = StringToKey(value);
|
||||||
tempConfig.buttons[button] = buttonValue;
|
if (button >= 2)
|
||||||
tempConfig.buttons[buttonValue] = button;
|
{
|
||||||
return 1;
|
tempConfig.buttons[button - 2] = buttonValue;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "left_stick_deadzone") == 0)
|
else if (strcmp(name, "left_stick_deadzone") == 0)
|
||||||
{
|
{
|
||||||
tempConfig.leftStickDeadzonePercent = atoi(value);
|
tempConfig.stickDeadzonePercent[0] = atoi(value);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "right_stick_deadzone") == 0)
|
else if (strcmp(name, "right_stick_deadzone") == 0)
|
||||||
{
|
{
|
||||||
tempConfig.rightStickDeadzonePercent = atoi(value);
|
tempConfig.stickDeadzonePercent[1] = atoi(value);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "left_stick_rotation") == 0)
|
else if (strcmp(name, "left_stick_rotation") == 0)
|
||||||
{
|
{
|
||||||
tempConfig.leftStickRotationDegrees = atoi(value);
|
tempConfig.stickRotationDegrees[0] = atoi(value);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "right_stick_rotation") == 0)
|
else if (strcmp(name, "right_stick_rotation") == 0)
|
||||||
{
|
{
|
||||||
tempConfig.rightStickRotationDegrees = atoi(value);
|
tempConfig.stickRotationDegrees[1] = atoi(value);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "trigger_deadzone") == 0)
|
else if (strcmp(name, "left_trigger_deadzone") == 0)
|
||||||
{
|
{
|
||||||
tempConfig.triggerDeadzonePercent = atoi(value);
|
tempConfig.triggerDeadzonePercent[0] = atoi(value);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else if (strcmp(name, "right_trigger_deadzone") == 0)
|
||||||
|
{
|
||||||
|
tempConfig.triggerDeadzonePercent[1] = atoi(value);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (strcmp(name, "swap_dpad_and_lstick") == 0)
|
else if (strcmp(name, "swap_dpad_and_lstick") == 0)
|
||||||
@ -160,10 +169,6 @@ namespace syscon::config
|
|||||||
Result ReadFromConfig(const char *path)
|
Result ReadFromConfig(const char *path)
|
||||||
{
|
{
|
||||||
tempConfig = ControllerConfig{};
|
tempConfig = ControllerConfig{};
|
||||||
for (int i = 0; i != NUM_CONTROLLERBUTTONS; ++i)
|
|
||||||
{
|
|
||||||
tempConfig.buttons[i] = NOT_SET;
|
|
||||||
}
|
|
||||||
return ini_parse(path, ParseConfigLine, NULL);
|
return ini_parse(path, ParseConfigLine, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user