Ast/kbm remapper update (#1800)

* Reverted default keyboard camera controls to IJKL and fixed bug where use mouse would always be set as false

* Fixed inverse axis on Right Y axis analog keyboard control

* Fixed newpad unit test, fixed variable typo, and fixed MapAnalog typo in newpad.h

Co-authored-by: animalstyletaco <animalstyletaco95@gmail.com>
This commit is contained in:
animalstyletaco
2022-08-26 08:59:11 -07:00
committed by GitHub
parent 7443520e88
commit f86cc1a31f
4 changed files with 58 additions and 22 deletions
+3 -2
View File
@@ -155,8 +155,9 @@ void LoadPeripheralSettings(const ghc::filesystem::path& filepath) {
g_is_debug_menu_visible_on_startup = configuration["Debug Menu Visibility"].get<bool>();
}
g_settings.pad_mapping_info.use_mouse = configuration.value<bool>("Use Mouse", false);
if (configuration.find("Debug Menu Visibility") != configuration.end()) {
g_settings.pad_mapping_info.use_mouse = configuration["Use Mouse"].get<bool>();
}
int controller_index = 0;
for (const auto& peripheral : configuration["Peripherals"]) {
auto& controller_buttons_json = peripheral["Controller"]["Buttons"];
+21 -19
View File
@@ -213,8 +213,7 @@ void UpdateAxisValue(MappingInfo& mapping_info) {
double input = 0.0f;
if (mapping_info.keyboard_analog_mapping[pad][analog].positive_key > -1 &&
mapping_info.keyboard_analog_mapping[pad][analog].positive_key < glfw::NUM_KEYS) {
if (analog == static_cast<int>(Analog::Left_Y) ||
analog == static_cast<int>(Analog::Right_Y)) {
if (analog == static_cast<int>(Analog::Left_Y)) {
input -=
g_buffered_key_status[mapping_info.keyboard_analog_mapping[pad][analog].positive_key];
} else {
@@ -224,8 +223,7 @@ void UpdateAxisValue(MappingInfo& mapping_info) {
}
if (mapping_info.keyboard_analog_mapping[pad][analog].negative_key > -1 &&
mapping_info.keyboard_analog_mapping[pad][analog].negative_key < glfw::NUM_KEYS) {
if (analog == static_cast<int>(Analog::Left_Y) ||
analog == static_cast<int>(Analog::Right_Y)) {
if (analog == static_cast<int>(Analog::Left_Y)) {
input +=
g_buffered_key_status[mapping_info.keyboard_analog_mapping[pad][analog].negative_key];
} else {
@@ -290,7 +288,10 @@ void MapButton(MappingInfo& mapping, Button button, int pad, int key) {
}
}
void MapAnalog(MappingInfo& mapping, Analog button, int pad, AnalogMappingInfo& analomapping_info) {
void MapAnalog(MappingInfo& mapping,
Analog button,
int pad,
AnalogMappingInfo& analog_mapping_info) {
// check if pad is valid. dont map buttons with invalid pads.
if (CheckPadIdx(pad) == -1) {
return;
@@ -298,9 +299,9 @@ void MapAnalog(MappingInfo& mapping, Analog button, int pad, AnalogMappingInfo&
if (g_gamepads.gamepad_idx[pad] == -1) {
// TODO: Check if other pad is keyboard and if key is already bound
mapping.keyboard_analog_mapping[pad][(int)button] = analomapping_info;
mapping.keyboard_analog_mapping[pad][(int)button] = analog_mapping_info;
} else {
mapping.controller_analog_mapping[pad][(int)button] = analomapping_info;
mapping.controller_analog_mapping[pad][(int)button] = analog_mapping_info;
}
}
@@ -375,22 +376,23 @@ void DefaultMapping(MappingInfo& mapping) {
MapButton(mapping, Button::L3, 0, GLFW_KEY_COMMA);
MapButton(mapping, Button::R3, 0, GLFW_KEY_PERIOD);
AnalogMappingInfo analomapping_info;
AnalogMappingInfo analog_mapping_info;
analomapping_info.positive_key = GLFW_KEY_D;
analomapping_info.negative_key = GLFW_KEY_A;
MapAnalog(mapping, Analog::Left_X, 0, analomapping_info);
analog_mapping_info.positive_key = GLFW_KEY_D;
analog_mapping_info.negative_key = GLFW_KEY_A;
MapAnalog(mapping, Analog::Left_X, 0, analog_mapping_info);
analomapping_info.positive_key = GLFW_KEY_W;
analomapping_info.negative_key = GLFW_KEY_S;
MapAnalog(mapping, Analog::Left_Y, 0, analomapping_info);
analog_mapping_info.positive_key = GLFW_KEY_W;
analog_mapping_info.negative_key = GLFW_KEY_S;
MapAnalog(mapping, Analog::Left_Y, 0, analog_mapping_info);
analomapping_info.mode = AnalogMappingMode::AnalogInput;
analomapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_X_AXIS;
MapAnalog(mapping, Analog::Right_X, 0, analomapping_info);
analog_mapping_info.positive_key = GLFW_KEY_L;
analog_mapping_info.negative_key = GLFW_KEY_J;
MapAnalog(mapping, Analog::Right_X, 0, analog_mapping_info);
analomapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_Y_AXIS;
MapAnalog(mapping, Analog::Right_Y, 0, analomapping_info);
analog_mapping_info.positive_key = GLFW_KEY_I;
analog_mapping_info.negative_key = GLFW_KEY_K;
MapAnalog(mapping, Analog::Right_Y, 0, analog_mapping_info);
const double default_mouse_x_sensitivity = 5.0f;
const double default_mouse_y_sensitivity = 2.0f;
+1 -1
View File
@@ -100,7 +100,7 @@ void DefaultMapping(MappingInfo& mapping);
int IsPressed(MappingInfo& mapping, Button button, int pad);
int GetAnalogValue(MappingInfo& mapping, Analog analog, int pad);
void MapButton(MappingInfo& mapping, Button button, int pad, int key);
void MapAnalog(MappingInfo& mapping, Button button, int pad, AnalogMappingInfo& analogMapping);
void MapAnalog(MappingInfo& mapping, Analog button, int pad, AnalogMappingInfo& analogMapping);
void SetAnalogAxisValue(MappingInfo& mapping, int axis, double value);
void ClearAnalogAxisValue(MappingInfo& mapping, int axis);
+33
View File
@@ -99,6 +99,15 @@ TEST_F(PeripheralTest, SetAnalogAxisValue_NominalAnalogAxisY_SetConvertedValue)
}
TEST_F(PeripheralTest, SetAnalogAxisValue_InputLargerThanMaxValue_SetMaxValue) {
// Arrange
Pad::AnalogMappingInfo analog_mapping_info;
analog_mapping_info.mode = Pad::AnalogMappingMode::AnalogInput;
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_X_AXIS;
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_X, 0, analog_mapping_info);
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_Y_AXIS;
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_Y, 0, analog_mapping_info);
float expected_analog_value = 1;
// Act
@@ -111,6 +120,14 @@ TEST_F(PeripheralTest, SetAnalogAxisValue_InputLargerThanMaxValue_SetMaxValue) {
TEST_F(PeripheralTest, SetAnalogAxisValue_InputSmallerThanMinValue_SetMinValue) {
// Arrange
float expected_analog_value = -1;
Pad::AnalogMappingInfo analog_mapping_info;
analog_mapping_info.mode = Pad::AnalogMappingMode::AnalogInput;
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_X_AXIS;
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_X, 0, analog_mapping_info);
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_Y_AXIS;
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_Y, 0, analog_mapping_info);
// Act
Pad::SetAnalogAxisValue(mapping_info_, static_cast<int>(GlfwKeyCustomAxis::CURSOR_X_AXIS),
@@ -138,6 +155,14 @@ TEST_F(
// Arrange
float expected_x_axis_sensitivity = 1e-4;
mapping_info_.mouse_x_axis_sensitivities[0] = 0;
Pad::AnalogMappingInfo analog_mapping_info;
analog_mapping_info.mode = Pad::AnalogMappingMode::AnalogInput;
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_X_AXIS;
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_X, 0, analog_mapping_info);
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_Y_AXIS;
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_Y, 0, analog_mapping_info);
// Act
Pad::SetAnalogAxisValue(mapping_info_, static_cast<int>(GlfwKeyCustomAxis::CURSOR_X_AXIS), 100);
@@ -151,6 +176,14 @@ TEST_F(
// Arrange
float expected_y_axis_sensitivity = 1e-4;
mapping_info_.mouse_y_axis_sensitivities[0] = 0;
Pad::AnalogMappingInfo analog_mapping_info;
analog_mapping_info.mode = Pad::AnalogMappingMode::AnalogInput;
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_X_AXIS;
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_X, 0, analog_mapping_info);
analog_mapping_info.axis_id = GlfwKeyCustomAxis::CURSOR_Y_AXIS;
Pad::MapAnalog(mapping_info_, Pad::Analog::Right_Y, 0, analog_mapping_info);
// Act
Pad::SetAnalogAxisValue(mapping_info_, static_cast<int>(GlfwKeyCustomAxis::CURSOR_Y_AXIS), 100);