From b5f1d3396de3a996d2e88ae0b83ff36007e97977 Mon Sep 17 00:00:00 2001 From: Philippe Groarke Date: Sat, 20 Jan 2018 14:31:29 -0500 Subject: [PATCH] data : Add mapping guide and SDL 2.0.7 db (for future tests). --- data/SDL_gamecontrollerdb.h | 228 ++++++++++++++++++++++++++++++++++++ data/mapping_guide.png | Bin 0 -> 43697 bytes 2 files changed, 228 insertions(+) create mode 100644 data/SDL_gamecontrollerdb.h create mode 100644 data/mapping_guide.png diff --git a/data/SDL_gamecontrollerdb.h b/data/SDL_gamecontrollerdb.h new file mode 100644 index 0000000..951cd0b --- /dev/null +++ b/data/SDL_gamecontrollerdb.h @@ -0,0 +1,228 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2017 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ +#include "../SDL_internal.h" + + +/* Default mappings we support + + The easiest way to generate a new mapping is to start Steam in Big Picture + mode, configure your joystick and then look in config/config.vdf in your + Steam installation directory for the "SDL_GamepadBind" entry. + + Alternatively, you can use the app located in test/controllermap + */ +static const char *s_ControllerMappings [] = +{ +#if SDL_JOYSTICK_XINPUT + "xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", +#endif +#if SDL_JOYSTICK_DINPUT + "03000000022000000090000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,", + "03000000203800000900000000000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a3,righty:a4,start:b11,x:b4,y:b3,", + "03000000102800000900000000000000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,", + "03000000a00500003232000000000000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,", + "03000000341a00003608000000000000,Afterglow PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "03000000e82000006058000000000000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,", + "03000000260900008888000000000000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a4,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,", + "03000000a306000022f6000000000000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,", + "03000000ffff00000000000000000000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", + "030000000d0f00006e00000000000000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000000d0f00006600000000000000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000000d0f00005f00000000000000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000000d0f00005e00000000000000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000008f0e00001330000000000000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,", + "030000006d04000016c2000000000000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000006d04000018c2000000000000,Logitech F510 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000006d04000019c2000000000000,Logitech F710 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */ + "03000000380700005032000000000000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "03000000380700005082000000000000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000790000004418000000000000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,", + "030000001008000001e5000000000000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,", + "030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", + "03000000362800000100000000000000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:b13,rightx:a3,righty:a4,x:b1,y:b2,", + "03000000888800000803000000000000,PS3 Controller,a:b2,b:b1,back:b8,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b9,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:b7,rightx:a3,righty:a4,start:b11,x:b0,y:b3,", + "030000004c0500006802000000000000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", + "03000000250900000500000000000000,PS3 DualShock,a:b2,b:b1,back:b9,dpdown:h0.8,dpleft:h0.4,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b6,leftstick:b10,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b11,righttrigger:b5,rightx:a2,righty:a3,start:b8,x:b0,y:b3,", + "030000004c050000c405000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000004c050000cc09000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000004c050000a00b000000000000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000790000001100000000000000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,", + "030000006b140000010d000000000000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000a30600000cff000000000000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a2,righty:a3,x:b0,y:b1,", + "03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,", + "03000000172700004431000000000000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a7,rightx:a2,righty:a5,start:b11,x:b3,y:b4,", + "03000000830500006020000000000000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,", +#endif +#if defined(__MACOSX__) + "03000000022000000090000001000000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,", + "03000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,", + "03000000102800000900000000000000,8Bitdo SFC30 GamePad Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,", + "03000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,", + "030000008305000031b0000000000000,Cideko AK08b,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "03000000260900008888000088020000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,", + "03000000a306000022f6000001030000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,", + "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", + "030000000d0f00006e00000000010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000000d0f00006600000000010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000000d0f00005f00000000010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000000d0f00005e00000000010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000008f0e00001330000011010000,HuiJia SNES Controller,a:b4,b:b2,back:b16,dpdown:+a2,dpleft:-a0,dpright:+a0,dpup:-a2,leftshoulder:b12,rightshoulder:b14,start:b18,x:b6,y:b0,", + "030000006d04000016c2000014040000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000006d04000016c2000000030000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000006d04000016c2000000000000,Logitech F310 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */ + "030000006d04000018c2000000000000,Logitech F510 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000006d0400001fc2000000000000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "030000006d04000019c2000000000000,Logitech Wireless Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* This includes F710 in DInput mode and the "Logitech Cordless RumblePad 2", at the very least. */ + "03000000380700005032000000010000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "03000000380700005082000000010000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000790000004418000000010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,", + "030000001008000001e5000006010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,", + "030000007e0500000920000000000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", + "030000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", + "030000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000004c050000a00b000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000321500000010000000010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "0300000032150000030a000000000000,Razer Wildcat,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "03000000790000001100000006010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a4,dpleft:-a3,dpright:+a3,dpup:-a4,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,", + "030000006b140000010d000000010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000003512000021ab000000000000,SFC30 Joystick,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,", + "03000000110100002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,", + "03000000381000002014000001000000,SteelSeries Nimbus,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,x:b2,y:b3,", + "03000000110100001714000000000000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,", + "03000000110100001714000020010000,SteelSeries Stratus XL,a:b0,b:b1,dpdown:b9,dpleft:b11,dpright:b10,dpup:b8,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1~,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3~,start:b12,x:b2,y:b3,", + "030000005e0400008e02000000000000,X360 Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "03000000c6240000045d000000000000,Xbox 360 Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "030000005e040000d102000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "030000005e040000e302000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "030000005e040000dd02000000000000,Xbox One Wired Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "030000005e040000e002000003090000,Xbox Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "030000005e040000ea02000000000000,Xbox Wireless Controller,a:b0,b:b1,back:b9,dpdown:b12,dpleft:b13,dpright:b14,dpup:b11,guide:b10,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,start:b8,x:b2,y:b3,", + "030000005e040000fd02000003090000,Xbox Wireless Controller,a:b0,b:b1,back:b16,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,", + "03000000172700004431000029010000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b15,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,", + "03000000120c0000100e000000010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000830500006020000000010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,", +#endif +#if defined(__LINUX__) + "03000000022000000090000011010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,", + "05000000203800000900000000010000,8Bitdo NES30 Pro,a:b1,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b6,leftstick:b13,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:b9,rightx:a2,righty:a3,start:b11,x:b4,y:b3,", + "05000000102800000900000000010000,8Bitdo SFC30 GamePad,a:b1,b:b0,back:b10,leftshoulder:b6,leftx:a0,lefty:a1,rightshoulder:b7,start:b11,x:b4,y:b3,", + "05000000a00500003232000008010000,8Bitdo Zero GamePad,a:b0,b:b1,back:b10,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b11,x:b3,y:b4,", + "03000000100000008200000011010000,Akishop Customs PS360+ v1.66,a:b1,b:b2,back:b12,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,lefttrigger:b6,rightshoulder:b5,righttrigger:b7,start:b9,x:b0,y:b3,", + "03000000e82000006058000001010000,Cideko AK08b,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b0,", + "03000000260900008888000000010000,Cyber Gadget GameCube Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b6,righttrigger:a5,rightx:a2,righty:a3~,start:b7,x:b2,y:b3,", + "03000000a306000022f6000011010000,Cyborg V.3 Rumble Pad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:-a3,rightx:a2,righty:a4,start:b9,x:b0,y:b3,", + "03000000790000000600000010010000,DragonRise Inc. Generic USB Joystick,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a4,start:b9,x:b3,y:b0,", + "0500000047532047616d657061640000,GameStop Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", + "030000006f0e00000104000000010000,Gamestop Logic3 Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "030000000d0f00006e00000011010000,HORIPAD 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000000d0f00006600000011010000,HORIPAD 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000000d0f00005f00000011010000,Hori Fighting Commander 4 (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000000d0f00005e00000011010000,Hori Fighting Commander 4 (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000008f0e00001330000010010000,HuiJia SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b6,rightshoulder:b7,start:b9,x:b3,y:b0,", + "03000000ba2200002010000001010000,Jess Technology USB Game Controller,a:b2,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a3,righty:a2,start:b9,x:b3,y:b0,", + "030000006d04000019c2000010010000,Logitech Cordless RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000006d04000016c2000011010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000006d04000016c2000010010000,Logitech Dual Action,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000006d0400001dc2000014400000,Logitech F310 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "030000006d0400001ec2000020200000,Logitech F510 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "030000006d04000019c2000011010000,Logitech F710 Gamepad (DInput),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", /* Guide button doesn't seem to be sent in DInput mode. */ + "030000006d0400001fc2000005030000,Logitech F710 Gamepad (XInput),a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "030000006d04000018c2000010010000,Logitech RumblePad 2,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "03000000380700005032000011010000,Mad Catz FightPad PRO (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "03000000380700005082000011010000,Mad Catz FightPad PRO (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000380700008433000011010000,Mad Catz FightStick TE S+ PS3,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "03000000380700008483000011010000,Mad Catz FightStick TE S+ PS4,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000380700003847000090040000,Mad Catz Wired Xbox 360 Controller (SFIV),a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", + "03000000380700008034000011010000,Mad Catz fightstick (PS3),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "03000000380700008084000011010000,Mad Catz fightstick (PS4),a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000380700001888000010010000,MadCatz PC USB Wired Stick 8818,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "03000000790000004418000010010000,Mayflash GameCube Controller,a:b1,b:b2,dpdown:b14,dpleft:b15,dpright:b13,dpup:b12,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:a4,rightx:a5,righty:a2,start:b9,x:b0,y:b3,", + "030000001008000001e5000010010000,NEXT SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b6,start:b9,x:b3,y:b0,", + "03000000550900001072000011010000,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b13,leftshoulder:b4,leftstick:b8,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,", + "050000007e0500000920000001000000,Nintendo Switch Pro Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", + "050000007e0500003003000001000000,Nintendo Wii Remote Pro Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b3,y:b2,", + "030000000d0500000308000010010000,Nostromo n45 Dual Analog Gamepad,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b9,leftshoulder:b4,leftstick:b12,lefttrigger:b5,leftx:a0,lefty:a1,rightshoulder:b6,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b10,x:b2,y:b3,", + "05000000362800000100000002010000,OUYA Game Controller,a:b0,b:b3,dpdown:b9,dpleft:b10,dpright:b11,dpup:b8,guide:b14,leftshoulder:b4,leftstick:b6,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b7,righttrigger:a5,rightx:a3,righty:a4,x:b1,y:b2,", + "030000006f0e00006401000001010000,PDP Battlefield One,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "03000000ff1100004133000010010000,PS2 Controller,a:b2,b:b1,back:b8,leftshoulder:b6,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b5,start:b9,x:b3,y:b0,", + "030000004c0500006802000010010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", + "050000004c0500006802000000010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:a12,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:a13,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", + "030000004c0500006802000011010000,PS3 Controller,a:b14,b:b13,back:b0,dpdown:b6,dpleft:b7,dpright:b5,dpup:b4,guide:b16,leftshoulder:b10,leftstick:b1,lefttrigger:b8,leftx:a0,lefty:a1,rightshoulder:b11,rightstick:b2,righttrigger:b9,rightx:a2,righty:a3,start:b3,x:b15,y:b12,", + "030000004c0500006802000010810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,", + "050000004c0500006802000000810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,", + "030000004c0500006802000011810000,PS3 Controller,a:b0,b:b1,back:b8,dpdown:b14,dpleft:b15,dpright:b16,dpup:b13,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,", + "03000000341a00003608000011010000,PS3 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b0,y:b3,", + "030000004c050000c405000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "050000004c050000c405000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000004c050000cc09000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "050000004c050000cc09000000010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000004c050000a00b000011010000,PS4 Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "030000004c050000c405000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,", + "050000004c050000c405000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,", + "030000004c050000cc09000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,", + "050000004c050000cc09000000810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,", + "030000004c050000a00b000011810000,PS4 Controller,a:b0,b:b1,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b11,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b12,righttrigger:a5,rightx:a3,righty:a4,start:b9,x:b3,y:b2,", + "03000000300f00001211000011010000,QanBa Arcade JoyStick,a:b2,b:b0,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b5,lefttrigger:b4,leftx:a0,lefty:a1,rightshoulder:b7,righttrigger:b6,start:b9,x:b1,y:b3,", + "03000000321500000010000011010000,Razer RAIJU,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000c6240000045d000025010000,Razer Sabertooth,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "03000000321500000009000011010000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,", + "050000003215000000090000163a0000,Razer Serval,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a4,rightx:a2,righty:a3,start:b7,x:b2,y:b3,", + "0300000032150000030a000001010000,Razer Wildcat,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "03000000790000001100000010010000,Retrolink SNES Controller,a:b2,b:b1,back:b8,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b9,x:b3,y:b0,", + "030000006b140000010d000011010000,Revolution Pro Controller,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000a30600000cff000010010000,Saitek P2500 Force Rumble Pad,a:b2,b:b3,back:b11,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:b7,rightx:a3,righty:a2,x:b0,y:b1,", + "03000000a30600000b04000000010000,Saitek P990 Dual Analog Pad,a:b1,b:b2,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a3,righty:a2,start:b8,x:b0,y:b3,", + "03000000de2800000211000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,", + "05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,", + "03000000de2800000112000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,", + "05000000de2800000212000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,", + "03000000de2800004211000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,", + "03000000de280000fc11000001000000,Steam Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "03000000de280000ff11000001000000,Steam Virtual Gamepad,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "xinput,XInput Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b10,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "050000005e040000e002000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,", + "050000005e040000fd02000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,", + "05000000172700004431000029010000,XiaoMi Game Controller,a:b0,b:b1,back:b10,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b20,leftshoulder:b6,leftstick:b13,lefttrigger:a7,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a6,rightx:a2,righty:a5,start:b11,x:b3,y:b4,", + "03000000120c0000100e000011010000,ZEROPLUS P4 Gamepad,a:b1,b:b2,back:b8,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,leftshoulder:b4,leftstick:b10,lefttrigger:a3,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:a4,rightx:a2,righty:a5,start:b9,x:b0,y:b3,", + "03000000830500006020000010010000,iBuffalo SNES Controller,a:b1,b:b0,back:b6,dpdown:+a1,dpleft:-a0,dpright:+a0,dpup:-a1,leftshoulder:b4,rightshoulder:b5,start:b7,x:b3,y:b2,", +#endif +#if defined(__ANDROID__) + "64633436313965656664373634323364,Microsoft X-Box 360 pad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,x:b2,y:b3,", + "4e564944494120436f72706f72617469,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,", + "61363931656135336130663561616264,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,", + "37336435666338653565313731303834,NVIDIA Controller,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b9,leftstick:b7,lefttrigger:a4,leftx:a0,lefty:a1,rightshoulder:b10,rightstick:b8,righttrigger:a5,rightx:a2,righty:a3,start:b6,x:b2,y:b3,", + "35643031303033326130316330353564,PS4 Controller,a:b1,b:b17,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b5,leftshoulder:b3,leftstick:b4,lefttrigger:+a3,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b6,righttrigger:+a4,rightx:a2,righty:a5,start:b16,x:b0,y:b2,", + "05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,", + "34356136633366613530316338376136,Xbox Wireless Controller,a:b0,b:b1,back:b9,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b3,leftstick:b15,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b18,rightstick:b16,righttrigger:a5,rightx:a3,righty:a4,x:b17,y:b2,", +#endif +#if defined(SDL_JOYSTICK_MFI) + "4d466947616d65706164010000000000,MFi Extended Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a5,rightx:a3,righty:a4,start:b6,x:b2,y:b3,", + "4d466947616d65706164020000000000,MFi Gamepad,a:b0,b:b1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,leftshoulder:b4,rightshoulder:b5,start:b6,x:b2,y:b3,", + "05000000de2800000511000001000000,Steam Controller,a:b0,b:b1,back:b6,guide:b8,leftshoulder:b4,leftstick:b9,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,righttrigger:a3,start:b7,x:b2,y:b3,", +#endif +#if defined(SDL_JOYSTICK_EMSCRIPTEN) + "emscripten,Standard Gamepad,a:b0,b:b1,back:b8,dpdown:b13,dpleft:b14,dpright:b15,dpup:b12,guide:b16,leftshoulder:b4,leftstick:b10,lefttrigger:b6,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b11,righttrigger:b7,rightx:a2,righty:a3,start:b9,x:b2,y:b3,", +#endif + NULL +}; + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/data/mapping_guide.png b/data/mapping_guide.png new file mode 100644 index 0000000000000000000000000000000000000000..dfe78ee48740a32d52e1ffd33c5c0c4606cd8e27 GIT binary patch literal 43697 zcmdp-^;cAH^zSENXrw!oMw+1nB$SXYrBh(&kVasb0YoK5a_A5N>24TQKw)U4VFr;# zhEf{t^7CEyKe+dYd!Mz=59h3No@cH1*=O(b?ETtr4fQoCNLfe$004#76E$N10E7Sl zKwZQT000mfNcjf<07khzer)J(toi7!mil8Ei3c(=B9fvK0DwSBV9J<~ni1WgGW0RG zMoho3uq}(}W5={P0d5LuHfT8{^_?cUQ<3dWnoOc;synhFvMM8;V@{<+{dd<-b(Pi1Ame;~ zLl>p&HM3Sv?JGkjgtE)M>UTFCBO4w*T=yT|8H?D<3^9IHp=F`q)Z$3RtxNpsg$8p` zfi0x}bV~0X$Gj1*@1s9oSFS^8CJ1XBoYL`m`a-$FMEeX;wNeypQ2ePOk{ zCtq8Cz2DX?TU}>jaVh*my0ba-@bbat7Uj>%qi30Qjbt`7SgBh=XD*j@qrVx>004l* z_lbo+06<3j?*Ia_bD02uy8taU)u$o3d&|LHY|pN54`)}xOzzQxw20MTl02LY^LcMh zW%%wRF>x_5m$nf#b#GkM8^qmb1gtTXTzV?mq?0;ZJVmnGJg29FVVko4vYlZr!LT6M zX-`4π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%0ABO8}odwtG}7lT7C_xX^N+TAaU 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