The hat index passed to the application should be zero-based with no holes
diff --git a/src/joystick/linux/SDL_sysjoystick.c b/src/joystick/linux/SDL_sysjoystick.c
index a30fe27..043d220 100644
--- a/src/joystick/linux/SDL_sysjoystick.c
+++ b/src/joystick/linux/SDL_sysjoystick.c
@@ -773,9 +773,8 @@
     }
     if (value != the_hat->axis[axis]) {
         the_hat->axis[axis] = value;
-        SDL_PrivateJoystickHat(stick, hat,
-                               position_map[the_hat->
-                                            axis[1]][the_hat->axis[0]]);
+        SDL_PrivateJoystickHat(stick, stick->hwdata->hats_indices[hat],
+                               position_map[the_hat->axis[1]][the_hat->axis[0]]);
     }
 }