Skip to content

Commit 3a52d34

Browse files
committed
Unset default axis mappings that are analog triggers
Default axis mappings could map controller triggers to functions that require bi-directional axis to work properly
1 parent e257fe4 commit 3a52d34

1 file changed

Lines changed: 12 additions & 5 deletions

File tree

ddio/sdlcontroller.cpp

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -609,6 +609,7 @@ void sdlgameController::set_axis_sensitivity(ct_type axis_type, uint8_t axis, fl
609609
}
610610
}
611611

612+
#include <iostream>
612613
// assigns an individual function
613614
int sdlgameController::assign_function(ct_function *func) {
614615
// for now this is a straight forward translation (that is, no mapping of needs to controller
@@ -627,6 +628,7 @@ int sdlgameController::assign_function(ct_function *func) {
627628
elem.ctl[i] = 0;
628629
break;
629630
case ctAnalogTrigger:
631+
std::cout << "test";
630632
case ctAxis:
631633
elem.ctl[i] = get_axis_controller(func->value[i]);
632634
break;
@@ -985,9 +987,14 @@ int8_t sdlgameController::get_axis_controller(uint8_t axis) {
985987
if (axis == NULL_BINDING)
986988
return NULL_LNXCONTROLLER;
987989

988-
for (int i = 2; i < m_NumControls; i++)
989-
if ((m_ControlList[i].flags & (1 << (axis - 1))) && m_ControlList[i].id != CTID_INVALID)
990+
int axis_mask = (1 << (axis - 1));
991+
992+
for (int i = 2; i < m_NumControls; i++) {
993+
if ((m_ControlList[i].flags & axis_mask) && m_ControlList[i].id != CTID_INVALID &&
994+
!(m_ControlList[i].axis_is_trigger & axis_mask)) {
990995
return i;
996+
}
997+
}
991998

992999
return NULL_LNXCONTROLLER;
9931000
}
@@ -1483,12 +1490,12 @@ int CTLLex(const char *command) {
14831490

14841491
// okay, now search for a '****.ctl' file in the Base_directories
14851492
void sdlgameController::parse_ctl_file(int devnum, const char *ctlname) {
1486-
for (auto base_directories_iterator = Base_directories.rbegin();
1487-
base_directories_iterator != Base_directories.rend();
1493+
for (auto base_directories_iterator = Base_directories.rbegin(); base_directories_iterator != Base_directories.rend();
14881494
++base_directories_iterator) {
14891495
// parse each file until we find a name match, no name match, just return
14901496
ddio_DoForeachFile(
1491-
*base_directories_iterator, std::regex(".*\\.ctl"), [this, &devnum, &ctlname](const std::filesystem::path &path) {
1497+
*base_directories_iterator, std::regex(".*\\.ctl"),
1498+
[this, &devnum, &ctlname](const std::filesystem::path &path) {
14921499
InfFile file;
14931500
bool found_name = false;
14941501

0 commit comments

Comments
 (0)