Skip to content

Commit 02382ed

Browse files
connorjclarkSiegeLord
authored andcommitted
Take into account min/max range when getting hat offset
1 parent 75d0b67 commit 02382ed

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

src/macosx/hidjoy.m

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -493,14 +493,19 @@ static void value_callback(
493493
}
494494

495495
int int_value = IOHIDValueGetIntegerValue(value);
496+
int min = joy->min[joy->dpad_stick][1];
497+
int max = joy->max[joy->dpad_stick][1];
496498

497499
if (joy->dpad == elem){
498-
if (joy->min[joy->dpad_stick][1] > int_value || joy->max[joy->dpad_stick][1] < int_value) {
500+
if (int_value >= min && int_value <= max) {
501+
int index = int_value - min;
502+
if (index < MAX_HAT_DIRECTIONS) {
503+
osx_joy_generate_axis_event(joy, joy->dpad_stick, joy->dpad_axis_vert, (float)hat_mapping[index].axisV);
504+
osx_joy_generate_axis_event(joy, joy->dpad_stick, joy->dpad_axis_horiz, (float)hat_mapping[index].axisH);
505+
}
506+
} else {
499507
osx_joy_generate_axis_event(joy, joy->dpad_stick, joy->dpad_axis_vert, 0);
500508
osx_joy_generate_axis_event(joy, joy->dpad_stick, joy->dpad_axis_horiz, 0);
501-
} else if (int_value > 0 && int_value <= MAX_HAT_DIRECTIONS) {
502-
osx_joy_generate_axis_event(joy, joy->dpad_stick, joy->dpad_axis_vert, (float)hat_mapping[int_value-1].axisV);
503-
osx_joy_generate_axis_event(joy, joy->dpad_stick, joy->dpad_axis_horiz, (float)hat_mapping[int_value-1].axisH);
504509
}
505510
goto done;
506511
}

0 commit comments

Comments
 (0)