Added new HIDAPI driver files to the Xcode projects
diff --git a/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj b/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj
index a805ca2..9bbdf08 100644
--- a/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj
+++ b/Xcode-iOS/SDL/SDL.xcodeproj/project.pbxproj
@@ -367,6 +367,14 @@
 		A7C19D2A212E552C00DF2152 /* SDL_displayevents.c in Sources */ = {isa = PBXBuildFile; fileRef = A7C19D28212E552B00DF2152 /* SDL_displayevents.c */; };
 		A7C19D2B212E552C00DF2152 /* SDL_displayevents.c in Sources */ = {isa = PBXBuildFile; fileRef = A7C19D28212E552B00DF2152 /* SDL_displayevents.c */; };
 		A7F629241FE06523002F9CC9 /* SDL_uikitmetalview.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D7516F81EE1C28A00820EEA /* SDL_uikitmetalview.m */; };
+		A7FF6B6223AC3BC6005876C6 /* SDL_hidapi_gamecube.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6123AC3BC6005876C6 /* SDL_hidapi_gamecube.c */; };
+		A7FF6B6323AC3BC6005876C6 /* SDL_hidapi_gamecube.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6123AC3BC6005876C6 /* SDL_hidapi_gamecube.c */; };
+		A7FF6B6423AC3BC6005876C6 /* SDL_hidapi_gamecube.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6123AC3BC6005876C6 /* SDL_hidapi_gamecube.c */; };
+		A7FF6B6523AC3BC6005876C6 /* SDL_hidapi_gamecube.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6123AC3BC6005876C6 /* SDL_hidapi_gamecube.c */; };
+		A7FF6B6723AC3BCD005876C6 /* SDL_hidapi_xbox360w.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6623AC3BCD005876C6 /* SDL_hidapi_xbox360w.c */; };
+		A7FF6B6823AC3BCD005876C6 /* SDL_hidapi_xbox360w.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6623AC3BCD005876C6 /* SDL_hidapi_xbox360w.c */; };
+		A7FF6B6923AC3BCD005876C6 /* SDL_hidapi_xbox360w.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6623AC3BCD005876C6 /* SDL_hidapi_xbox360w.c */; };
+		A7FF6B6A23AC3BCD005876C6 /* SDL_hidapi_xbox360w.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6623AC3BCD005876C6 /* SDL_hidapi_xbox360w.c */; };
 		AA0AD06216647BBB00CE5896 /* SDL_gamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = AA0AD06116647BBB00CE5896 /* SDL_gamecontroller.c */; };
 		AA0AD06516647BD400CE5896 /* SDL_gamecontroller.h in Headers */ = {isa = PBXBuildFile; fileRef = AA0AD06416647BD400CE5896 /* SDL_gamecontroller.h */; };
 		AA0F8495178D5F1A00823F9D /* SDL_systls.c in Sources */ = {isa = PBXBuildFile; fileRef = AA0F8494178D5F1A00823F9D /* SDL_systls.c */; };
@@ -973,6 +981,8 @@
 		A704172D20F7E74800A82227 /* controller_type.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = controller_type.h; sourceTree = "<group>"; };
 		A7C19D27212E552B00DF2152 /* SDL_displayevents_c.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_displayevents_c.h; sourceTree = "<group>"; };
 		A7C19D28212E552B00DF2152 /* SDL_displayevents.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_displayevents.c; sourceTree = "<group>"; };
+		A7FF6B6123AC3BC6005876C6 /* SDL_hidapi_gamecube.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_gamecube.c; sourceTree = "<group>"; };
+		A7FF6B6623AC3BCD005876C6 /* SDL_hidapi_xbox360w.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_xbox360w.c; sourceTree = "<group>"; };
 		AA0AD06116647BBB00CE5896 /* SDL_gamecontroller.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_gamecontroller.c; sourceTree = "<group>"; };
 		AA0AD06416647BD400CE5896 /* SDL_gamecontroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_gamecontroller.h; sourceTree = "<group>"; };
 		AA0F8494178D5F1A00823F9D /* SDL_systls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_systls.c; sourceTree = "<group>"; };
@@ -1467,9 +1477,11 @@
 		F3BDD78A20F51C8D004ECBF3 /* hidapi */ = {
 			isa = PBXGroup;
 			children = (
+				A7FF6B6123AC3BC6005876C6 /* SDL_hidapi_gamecube.c */,
 				F3BDD78E20F51CB8004ECBF3 /* SDL_hidapi_ps4.c */,
 				F3BDD78C20F51CB8004ECBF3 /* SDL_hidapi_switch.c */,
 				F3BDD78B20F51CB8004ECBF3 /* SDL_hidapi_xbox360.c */,
+				A7FF6B6623AC3BCD005876C6 /* SDL_hidapi_xbox360w.c */,
 				F3BDD78D20F51CB8004ECBF3 /* SDL_hidapi_xboxone.c */,
 				F3BDD79020F51CB8004ECBF3 /* SDL_hidapijoystick_c.h */,
 				F3BDD79120F51CB8004ECBF3 /* SDL_hidapijoystick.c */,
@@ -2495,6 +2507,7 @@
 				52ED1E07222889500061FCE0 /* SDL_getenv.c in Sources */,
 				52ED1E08222889500061FCE0 /* SDL_iconv.c in Sources */,
 				52ED1E09222889500061FCE0 /* SDL_malloc.c in Sources */,
+				A7FF6B6323AC3BC6005876C6 /* SDL_hidapi_gamecube.c in Sources */,
 				52ED1E0A222889500061FCE0 /* SDL_hidapi_xbox360.c in Sources */,
 				52ED1E0B222889500061FCE0 /* SDL_qsort.c in Sources */,
 				52ED1E0C222889500061FCE0 /* SDL_hidapi_ps4.c in Sources */,
@@ -2559,6 +2572,7 @@
 				52ED1E47222889500061FCE0 /* SDL_render_gles.c in Sources */,
 				52ED1E48222889500061FCE0 /* SDL_hints.c in Sources */,
 				52ED1E49222889500061FCE0 /* SDL_shape.c in Sources */,
+				A7FF6B6823AC3BCD005876C6 /* SDL_hidapi_xbox360w.c in Sources */,
 				52ED1E4A222889500061FCE0 /* SDL_render_gles2.c in Sources */,
 				52ED1E4B222889500061FCE0 /* SDL_dummysensor.c in Sources */,
 				52ED1E4C222889500061FCE0 /* SDL_shaders_gles2.c in Sources */,
@@ -2624,6 +2638,7 @@
 				F3E3C6F52241389A007D243C /* SDL_getenv.c in Sources */,
 				F3E3C6F62241389A007D243C /* SDL_iconv.c in Sources */,
 				F3E3C6F72241389A007D243C /* SDL_malloc.c in Sources */,
+				A7FF6B6523AC3BC6005876C6 /* SDL_hidapi_gamecube.c in Sources */,
 				F3E3C6F82241389A007D243C /* SDL_hidapi_xbox360.c in Sources */,
 				F3E3C6F92241389A007D243C /* SDL_qsort.c in Sources */,
 				F3E3C6FA2241389A007D243C /* SDL_hidapi_ps4.c in Sources */,
@@ -2688,6 +2703,7 @@
 				F3E3C7362241389A007D243C /* SDL_render_gles.c in Sources */,
 				F3E3C7372241389A007D243C /* SDL_hints.c in Sources */,
 				F3E3C7382241389A007D243C /* SDL_shape.c in Sources */,
+				A7FF6B6A23AC3BCD005876C6 /* SDL_hidapi_xbox360w.c in Sources */,
 				F3E3C7392241389A007D243C /* SDL_render_gles2.c in Sources */,
 				F3E3C73A2241389A007D243C /* SDL_dummysensor.c in Sources */,
 				F3E3C73B2241389A007D243C /* SDL_shaders_gles2.c in Sources */,
@@ -2758,6 +2774,7 @@
 				FAB598521BB5C31600BE72C5 /* SDL_joystick.c in Sources */,
 				FAB598551BB5C31600BE72C5 /* SDL_sysloadso.c in Sources */,
 				AADC5A651FDA10CB00960936 /* SDL_render_metal.m in Sources */,
+				A7FF6B6923AC3BCD005876C6 /* SDL_hidapi_xbox360w.c in Sources */,
 				FAB598561BB5C31600BE72C5 /* SDL_sysloadso.c in Sources */,
 				FAB598571BB5C31600BE72C5 /* SDL_power.c in Sources */,
 				F30D9CA1212CD0990047DF2E /* SDL_sensor.c in Sources */,
@@ -2787,6 +2804,7 @@
 				FAB598781BB5C31600BE72C5 /* SDL_syscond.c in Sources */,
 				F3BDD79D20F51CB8004ECBF3 /* SDL_hidapijoystick.c in Sources */,
 				AADC5A601FDA10A400960936 /* SDL_uikitvulkan.m in Sources */,
+				A7FF6B6423AC3BC6005876C6 /* SDL_hidapi_gamecube.c in Sources */,
 				FAB598791BB5C31600BE72C5 /* SDL_sysmutex.c in Sources */,
 				FAB5987B1BB5C31600BE72C5 /* SDL_syssem.c in Sources */,
 				FAB5987C1BB5C31600BE72C5 /* SDL_systhread.c in Sources */,
@@ -2872,6 +2890,7 @@
 				FD3F4A760DEA620800C5B771 /* SDL_getenv.c in Sources */,
 				FD3F4A770DEA620800C5B771 /* SDL_iconv.c in Sources */,
 				FD3F4A780DEA620800C5B771 /* SDL_malloc.c in Sources */,
+				A7FF6B6223AC3BC6005876C6 /* SDL_hidapi_gamecube.c in Sources */,
 				F3BDD79220F51CB8004ECBF3 /* SDL_hidapi_xbox360.c in Sources */,
 				FD3F4A790DEA620800C5B771 /* SDL_qsort.c in Sources */,
 				F3BDD79820F51CB8004ECBF3 /* SDL_hidapi_ps4.c in Sources */,
@@ -2936,6 +2955,7 @@
 				0442EC5312FE1C28004C9285 /* SDL_render_gles.c in Sources */,
 				0442EC5512FE1C3F004C9285 /* SDL_hints.c in Sources */,
 				AA13B34A1FB8B27800D9FEE6 /* SDL_shape.c in Sources */,
+				A7FF6B6723AC3BCD005876C6 /* SDL_hidapi_xbox360w.c in Sources */,
 				0402A85812FE70C600CECEE3 /* SDL_render_gles2.c in Sources */,
 				F36839CD214790950000F255 /* SDL_dummysensor.c in Sources */,
 				0402A85912FE70C600CECEE3 /* SDL_shaders_gles2.c in Sources */,
diff --git a/Xcode/SDL/SDL.xcodeproj/project.pbxproj b/Xcode/SDL/SDL.xcodeproj/project.pbxproj
index be8c94e..5baf29c 100644
--- a/Xcode/SDL/SDL.xcodeproj/project.pbxproj
+++ b/Xcode/SDL/SDL.xcodeproj/project.pbxproj
@@ -484,6 +484,12 @@
 		A7381E971D8B6A0300B177DD /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A7381E931D8B69C300B177DD /* AudioToolbox.framework */; };
 		A77E6EB4167AB0A90010E40B /* SDL_gamecontroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A77E6EB3167AB0A90010E40B /* SDL_gamecontroller.h */; settings = {ATTRIBUTES = (Public, ); }; };
 		A77E6EB5167AB0A90010E40B /* SDL_gamecontroller.h in Headers */ = {isa = PBXBuildFile; fileRef = A77E6EB3167AB0A90010E40B /* SDL_gamecontroller.h */; settings = {ATTRIBUTES = (Public, ); }; };
+		A7FF6B6D23AC3C18005876C6 /* SDL_hidapi_gamecube.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6B23AC3C17005876C6 /* SDL_hidapi_gamecube.c */; };
+		A7FF6B6E23AC3C18005876C6 /* SDL_hidapi_gamecube.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6B23AC3C17005876C6 /* SDL_hidapi_gamecube.c */; };
+		A7FF6B6F23AC3C18005876C6 /* SDL_hidapi_gamecube.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6B23AC3C17005876C6 /* SDL_hidapi_gamecube.c */; };
+		A7FF6B7023AC3C18005876C6 /* SDL_hidapi_xbox360w.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6C23AC3C18005876C6 /* SDL_hidapi_xbox360w.c */; };
+		A7FF6B7123AC3C18005876C6 /* SDL_hidapi_xbox360w.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6C23AC3C18005876C6 /* SDL_hidapi_xbox360w.c */; };
+		A7FF6B7223AC3C18005876C6 /* SDL_hidapi_xbox360w.c in Sources */ = {isa = PBXBuildFile; fileRef = A7FF6B6C23AC3C18005876C6 /* SDL_hidapi_xbox360w.c */; };
 		AA0AD09D16648D1700CE5896 /* SDL_gamecontroller.c in Sources */ = {isa = PBXBuildFile; fileRef = BBFC088A164C6514003E6A99 /* SDL_gamecontroller.c */; };
 		AA0F8491178D5ECC00823F9D /* SDL_systls.c in Sources */ = {isa = PBXBuildFile; fileRef = AA0F8490178D5ECC00823F9D /* SDL_systls.c */; };
 		AA0F8492178D5ECC00823F9D /* SDL_systls.c in Sources */ = {isa = PBXBuildFile; fileRef = AA0F8490178D5ECC00823F9D /* SDL_systls.c */; };
@@ -1166,6 +1172,8 @@
 		A7381E931D8B69C300B177DD /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
 		A7381E951D8B69D600B177DD /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
 		A77E6EB3167AB0A90010E40B /* SDL_gamecontroller.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_gamecontroller.h; sourceTree = "<group>"; };
+		A7FF6B6B23AC3C17005876C6 /* SDL_hidapi_gamecube.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_gamecube.c; sourceTree = "<group>"; };
+		A7FF6B6C23AC3C18005876C6 /* SDL_hidapi_xbox360w.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_hidapi_xbox360w.c; sourceTree = "<group>"; };
 		AA0F8490178D5ECC00823F9D /* SDL_systls.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_systls.c; sourceTree = "<group>"; };
 		AA628AC8159367B7005138DD /* SDL_rotate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SDL_rotate.c; sourceTree = "<group>"; };
 		AA628AC9159367B7005138DD /* SDL_rotate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SDL_rotate.h; sourceTree = "<group>"; };
@@ -1937,9 +1945,11 @@
 		A704170C20F09AA600A82227 /* hidapi */ = {
 			isa = PBXGroup;
 			children = (
+				A7FF6B6B23AC3C17005876C6 /* SDL_hidapi_gamecube.c */,
 				A704171120F09AC900A82227 /* SDL_hidapi_ps4.c */,
 				A704170F20F09AC800A82227 /* SDL_hidapi_switch.c */,
 				A704171320F09AC900A82227 /* SDL_hidapi_xbox360.c */,
+				A7FF6B6C23AC3C18005876C6 /* SDL_hidapi_xbox360w.c */,
 				A704171220F09AC900A82227 /* SDL_hidapi_xboxone.c */,
 				A704170E20F09AC800A82227 /* SDL_hidapijoystick_c.h */,
 				A704170D20F09AC800A82227 /* SDL_hidapijoystick.c */,
@@ -2692,6 +2702,7 @@
 				56115BBB1DF72C6D00F47E1E /* SDL_dataqueue.c in Sources */,
 				04BD000812E6671800899322 /* SDL_diskaudio.c in Sources */,
 				04BD001012E6671800899322 /* SDL_dummyaudio.c in Sources */,
+				A7FF6B6D23AC3C18005876C6 /* SDL_hidapi_gamecube.c in Sources */,
 				04BD002612E6671800899322 /* SDL_audio.c in Sources */,
 				04BD002812E6671800899322 /* SDL_audiocvt.c in Sources */,
 				04BD002912E6671800899322 /* SDL_audiodev.c in Sources */,
@@ -2704,6 +2715,7 @@
 				A704172620F09AC900A82227 /* SDL_hidapi_xbox360.c in Sources */,
 				04BD004C12E6671800899322 /* SDL_gesture.c in Sources */,
 				04BD004E12E6671800899322 /* SDL_keyboard.c in Sources */,
+				A7FF6B7023AC3C18005876C6 /* SDL_hidapi_xbox360w.c in Sources */,
 				04BD005012E6671800899322 /* SDL_mouse.c in Sources */,
 				04BD005212E6671800899322 /* SDL_quit.c in Sources */,
 				04BD005412E6671800899322 /* SDL_touch.c in Sources */,
@@ -2831,6 +2843,7 @@
 				4D1664561EDD61DA003DE88E /* SDL_vulkan_utils.c in Sources */,
 				04BD021712E6671800899322 /* SDL_atomic.c in Sources */,
 				04BD021812E6671800899322 /* SDL_spinlock.c in Sources */,
+				A7FF6B6E23AC3C18005876C6 /* SDL_hidapi_gamecube.c in Sources */,
 				56F9D55C1DF73B6B00C15B5D /* SDL_dataqueue.c in Sources */,
 				04BD022412E6671800899322 /* SDL_diskaudio.c in Sources */,
 				04BD022C12E6671800899322 /* SDL_dummyaudio.c in Sources */,
@@ -2843,6 +2856,7 @@
 				A704172720F09AC900A82227 /* SDL_hidapi_xbox360.c in Sources */,
 				04BD025C12E6671800899322 /* SDL_cpuinfo.c in Sources */,
 				04BD026312E6671800899322 /* SDL_clipboardevents.c in Sources */,
+				A7FF6B7123AC3C18005876C6 /* SDL_hidapi_xbox360w.c in Sources */,
 				04BD026512E6671800899322 /* SDL_events.c in Sources */,
 				5C2EF6FB1FC9EE64003F5197 /* SDL_egl.c in Sources */,
 				AA41F88014B8F1F500993C4F /* SDL_dropevents.c in Sources */,
@@ -2970,6 +2984,7 @@
 				4D1664591EDD621B003DE88E /* SDL_vulkan_utils.c in Sources */,
 				DB313FFE17554B71006C0E22 /* SDL_atomic.c in Sources */,
 				DB313FFF17554B71006C0E22 /* SDL_spinlock.c in Sources */,
+				A7FF6B6F23AC3C18005876C6 /* SDL_hidapi_gamecube.c in Sources */,
 				56F9D55D1DF73B6C00C15B5D /* SDL_dataqueue.c in Sources */,
 				DB31400017554B71006C0E22 /* SDL_diskaudio.c in Sources */,
 				DB31400117554B71006C0E22 /* SDL_dummyaudio.c in Sources */,
@@ -2982,6 +2997,7 @@
 				A704172820F09AC900A82227 /* SDL_hidapi_xbox360.c in Sources */,
 				DB31400917554B71006C0E22 /* SDL_cpuinfo.c in Sources */,
 				DB31400A17554B71006C0E22 /* SDL_clipboardevents.c in Sources */,
+				A7FF6B7223AC3C18005876C6 /* SDL_hidapi_xbox360w.c in Sources */,
 				DB31400B17554B71006C0E22 /* SDL_events.c in Sources */,
 				5C2EF6FE1FC9EE65003F5197 /* SDL_egl.c in Sources */,
 				DB31400C17554B71006C0E22 /* SDL_dropevents.c in Sources */,
diff --git a/src/joystick/darwin/SDL_sysjoystick.c b/src/joystick/darwin/SDL_sysjoystick.c
index f3a48a5..9208127 100644
--- a/src/joystick/darwin/SDL_sysjoystick.c
+++ b/src/joystick/darwin/SDL_sysjoystick.c
@@ -458,7 +458,7 @@
         if ((!refCF) || (!CFStringGetCString(refCF, product_string, sizeof(product_string), kCFStringEncodingUTF8))) {
             SDL_strlcpy(product_string, "Unidentified joystick", sizeof(product_string));
         }
-        for (i = SDL_strlen(manufacturer_string) - 1; i > 0; --i) {
+        for (i = (int)SDL_strlen(manufacturer_string) - 1; i > 0; --i) {
             if (SDL_isspace(manufacturer_string[i])) {
                 manufacturer_string[i] = '\0';
             } else {
diff --git a/src/video/cocoa/SDL_cocoakeyboard.m b/src/video/cocoa/SDL_cocoakeyboard.m
index 574536b..6c24a60 100644
--- a/src/video/cocoa/SDL_cocoakeyboard.m
+++ b/src/video/cocoa/SDL_cocoakeyboard.m
@@ -473,7 +473,7 @@
     SDL_SetScancodeName(SDL_SCANCODE_RALT, "Right Option");
     SDL_SetScancodeName(SDL_SCANCODE_RGUI, "Right Command");
 
-    data->modifierFlags = [NSEvent modifierFlags];
+    data->modifierFlags = (unsigned int)[NSEvent modifierFlags];
     SDL_ToggleModState(KMOD_CAPS, (data->modifierFlags & NSEventModifierFlagCapsLock) != 0);
 }
 
@@ -590,7 +590,7 @@
         break;
     case NSEventTypeFlagsChanged:
         /* FIXME CW 2007-08-14: check if this whole mess that takes up half of this file is really necessary */
-        HandleModifiers(_this, scancode, [event modifierFlags]);
+        HandleModifiers(_this, scancode, (unsigned int)[event modifierFlags]);
         break;
     default: /* just to avoid compiler warnings */
         break;