CCController-linux-win32.cpp 198 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944
  1. /****************************************************************************
  2. Copyright (c) 2014 cocos2d-x.org
  3. Copyright (c) 2014-2017 Chukong Technologies Inc.
  4. Copyright (c) 2017 Wilson E. Alvarez <wilson.e.alvarez1@gmail.com>
  5. http://www.cocos2d-x.org
  6. Permission is hereby granted, free of charge, to any person obtaining a copy
  7. of this software and associated documentation files (the "Software"), to deal
  8. in the Software without restriction, including without limitation the rights
  9. to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
  10. copies of the Software, and to permit persons to whom the Software is
  11. furnished to do so, subject to the following conditions:
  12. The above copyright notice and this permission notice shall be included in
  13. all copies or substantial portions of the Software.
  14. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  15. IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  16. FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
  17. AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  18. LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
  19. OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
  20. THE SOFTWARE.
  21. ****************************************************************************/
  22. #include "base/CCController.h"
  23. #if (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
  24. #include <functional>
  25. #include "base/ccMacros.h"
  26. #include "base/CCDirector.h"
  27. #include "base/CCScheduler.h"
  28. #include "base/CCEventController.h"
  29. #include "glfw3.h"
  30. NS_CC_BEGIN
  31. class CC_DLL ControllerImpl
  32. {
  33. public:
  34. ControllerImpl()
  35. {
  36. //FIXME: Once GLFW 3.3 is bundled with cocos2d-x and no extra
  37. //controllers have been added here, remove all the code here. If
  38. //extra controllers were added, make sure to add them to the SDL
  39. //Controller Database at
  40. //https://github.com/gabomdq/SDL_GameControllerDB which GLFW uses
  41. //for providing the new gamepad API. We are going to map the GLFW
  42. //game pad events to Controller::Key key codes.
  43. // Note: the controllers input profile were taken from the
  44. // RetroArch joypad autoconfig project at:
  45. // https://github.com/libretro/retroarch-joypad-autoconfig/tree/master/udev
  46. // The configuration files were parsed into C++ code with:
  47. // https://github.com/Rubonnek/retroarch-joypad-config-to-cpp-mapper
  48. // which provides the following mapping from the RetroArch
  49. // configuration variables towards the cocos2d::Controller::Key key
  50. // codes. Hardware-wise, the mapping goes from a theoretical SNES
  51. // controller with extra joysticks and shoulder buttons, towards an
  52. // Xbox-like controller which is widely common on mobile phones.
  53. // RetroArch variable -> Cocos2D-X equivalent
  54. // input_a_btn -> Controller::Key::BUTTON_B
  55. // input_b_btn -> Controller::Key::BUTTON_A
  56. // input_down_btn -> Controller::Key::BUTTON_DPAD_DOWN
  57. // input_l2_axis -> Controller::Key::AXIS_LEFT_TRIGGER
  58. // input_l3_btn -> Controller::Key::BUTTON_LEFT_THUMBSTICK
  59. // input_l_btn -> Controller::Key::BUTTON_LEFT_SHOULDER
  60. // input_l_x_minus_axis -> Controller::Key::JOYSTICK_LEFT_X
  61. // input_l_y_minus_axis -> Controller::Key::JOYSTICK_LEFT_Y
  62. // input_left_btn -> Controller::Key::BUTTON_DPAD_LEFT
  63. // input_r2_axis -> Controller::Key::AXIS_RIGHT_TRIGGER
  64. // input_r3_btn -> Controller::Key::BUTTON_RIGHT_THUMBSTICK
  65. // input_r_btn -> Controller::Key::BUTTON_RIGHT_SHOULDER
  66. // input_r_x_minus_axis -> Controller::Key::JOYSTICK_RIGHT_X
  67. // input_r_y_minus_axis -> Controller::Key::JOYSTICK_RIGHT_Y
  68. // input_right_btn -> Controller::Key::BUTTON_DPAD_RIGHT
  69. // input_select_btn -> Controller::Key::BUTTON_SELECT
  70. // input_start_btn -> Controller::Key::BUTTON_START
  71. // input_up_btn -> Controller::Key::BUTTON_DPAD_UP
  72. // input_x_btn -> Controller::Key::BUTTON_Y
  73. // input_y_btn -> Controller::Key::BUTTON_X
  74. // Preliminary support is added for 169 controllers, but on some
  75. // cases the mapping provided might not be correct and has to be
  76. // manually adjusted.
  77. // Create the necessary variables:
  78. std::string deviceName = "2Axes 11Keys Game Pad";
  79. std::unordered_map<int,int> buttonInputMap;
  80. std::unordered_map<int,int> axisInputMap;
  81. // Map the controller inputs to Controller::Key codes
  82. buttonInputMap[2] = Controller::Key::BUTTON_A;
  83. buttonInputMap[3] = Controller::Key::BUTTON_X;
  84. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  85. buttonInputMap[9] = Controller::Key::BUTTON_START;
  86. buttonInputMap[1] = Controller::Key::BUTTON_B;
  87. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  88. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  89. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  90. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  91. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  92. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  93. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  94. // Add the controller profile to the map
  95. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  96. // Prepare variables:
  97. deviceName = "8Bitdo FC30 GamePad";
  98. buttonInputMap.clear();
  99. axisInputMap.clear();
  100. // Map the controller inputs to Controller::Key codes
  101. buttonInputMap[1] = Controller::Key::BUTTON_A;
  102. buttonInputMap[4] = Controller::Key::BUTTON_X;
  103. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  104. buttonInputMap[11] = Controller::Key::BUTTON_START;
  105. buttonInputMap[0] = Controller::Key::BUTTON_B;
  106. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  107. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  108. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  109. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  110. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  111. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  112. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  113. // Add the controller profile to the map
  114. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  115. // Prepare variables:
  116. deviceName = "8Bitdo FC30 II";
  117. buttonInputMap.clear();
  118. axisInputMap.clear();
  119. // Map the controller inputs to Controller::Key codes
  120. buttonInputMap[1] = Controller::Key::BUTTON_A;
  121. buttonInputMap[4] = Controller::Key::BUTTON_X;
  122. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  123. buttonInputMap[11] = Controller::Key::BUTTON_START;
  124. buttonInputMap[0] = Controller::Key::BUTTON_B;
  125. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  126. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  127. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  128. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  129. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  130. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  131. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  132. // Add the controller profile to the map
  133. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  134. // Prepare variables:
  135. deviceName = "8Bitdo FC30 II Joystick";
  136. buttonInputMap.clear();
  137. axisInputMap.clear();
  138. // Map the controller inputs to Controller::Key codes
  139. buttonInputMap[1] = Controller::Key::BUTTON_A;
  140. buttonInputMap[4] = Controller::Key::BUTTON_X;
  141. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  142. buttonInputMap[11] = Controller::Key::BUTTON_START;
  143. buttonInputMap[0] = Controller::Key::BUTTON_B;
  144. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  145. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  146. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  147. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  148. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  149. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  150. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  151. // Add the controller profile to the map
  152. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  153. // Prepare variables:
  154. deviceName = "FC30 FC30 Joystick";
  155. buttonInputMap.clear();
  156. axisInputMap.clear();
  157. // Map the controller inputs to Controller::Key codes
  158. buttonInputMap[1] = Controller::Key::BUTTON_A;
  159. buttonInputMap[4] = Controller::Key::BUTTON_X;
  160. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  161. buttonInputMap[11] = Controller::Key::BUTTON_START;
  162. buttonInputMap[0] = Controller::Key::BUTTON_B;
  163. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  164. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  165. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  166. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  167. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  168. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  169. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  170. // Add the controller profile to the map
  171. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  172. // Prepare variables:
  173. deviceName = "8Bitdo NES30 GamePad";
  174. buttonInputMap.clear();
  175. axisInputMap.clear();
  176. // Map the controller inputs to Controller::Key codes
  177. buttonInputMap[1] = Controller::Key::BUTTON_A;
  178. buttonInputMap[4] = Controller::Key::BUTTON_X;
  179. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  180. buttonInputMap[11] = Controller::Key::BUTTON_START;
  181. buttonInputMap[0] = Controller::Key::BUTTON_B;
  182. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  183. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  184. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  185. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  186. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  187. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  188. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  189. // Add the controller profile to the map
  190. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  191. // Prepare variables:
  192. deviceName = "8Bitdo NES30 GamePad Joystick";
  193. buttonInputMap.clear();
  194. axisInputMap.clear();
  195. // Map the controller inputs to Controller::Key codes
  196. buttonInputMap[1] = Controller::Key::BUTTON_A;
  197. buttonInputMap[4] = Controller::Key::BUTTON_X;
  198. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  199. buttonInputMap[11] = Controller::Key::BUTTON_START;
  200. buttonInputMap[0] = Controller::Key::BUTTON_B;
  201. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  202. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  203. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  204. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  205. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  206. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  207. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  208. // Add the controller profile to the map
  209. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  210. // Prepare variables:
  211. deviceName = "NES30 NES30 Joystick";
  212. buttonInputMap.clear();
  213. axisInputMap.clear();
  214. // Map the controller inputs to Controller::Key codes
  215. buttonInputMap[1] = Controller::Key::BUTTON_A;
  216. buttonInputMap[4] = Controller::Key::BUTTON_X;
  217. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  218. buttonInputMap[11] = Controller::Key::BUTTON_START;
  219. buttonInputMap[0] = Controller::Key::BUTTON_B;
  220. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  221. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  222. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  223. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  224. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  225. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  226. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  227. // Add the controller profile to the map
  228. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  229. // Prepare variables:
  230. deviceName = "8Bitdo SFC30 GamePad";
  231. buttonInputMap.clear();
  232. axisInputMap.clear();
  233. // Map the controller inputs to Controller::Key codes
  234. buttonInputMap[1] = Controller::Key::BUTTON_A;
  235. buttonInputMap[4] = Controller::Key::BUTTON_X;
  236. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  237. buttonInputMap[11] = Controller::Key::BUTTON_START;
  238. buttonInputMap[0] = Controller::Key::BUTTON_B;
  239. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  240. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  241. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  242. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  243. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  244. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  245. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  246. // Add the controller profile to the map
  247. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  248. // Prepare variables:
  249. deviceName = "8Bitdo SFC30 GamePad Joystick";
  250. buttonInputMap.clear();
  251. axisInputMap.clear();
  252. // Map the controller inputs to Controller::Key codes
  253. buttonInputMap[1] = Controller::Key::BUTTON_A;
  254. buttonInputMap[4] = Controller::Key::BUTTON_X;
  255. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  256. buttonInputMap[11] = Controller::Key::BUTTON_START;
  257. buttonInputMap[0] = Controller::Key::BUTTON_B;
  258. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  259. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  260. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  261. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  262. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  263. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  264. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  265. // Add the controller profile to the map
  266. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  267. // Prepare variables:
  268. deviceName = "SFC30 SFC30 Joystick";
  269. buttonInputMap.clear();
  270. axisInputMap.clear();
  271. // Map the controller inputs to Controller::Key codes
  272. buttonInputMap[1] = Controller::Key::BUTTON_A;
  273. buttonInputMap[4] = Controller::Key::BUTTON_X;
  274. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  275. buttonInputMap[11] = Controller::Key::BUTTON_START;
  276. buttonInputMap[0] = Controller::Key::BUTTON_B;
  277. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  278. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  279. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  280. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  281. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  282. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  283. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  284. // Add the controller profile to the map
  285. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  286. // Prepare variables:
  287. deviceName = "8Bitdo SNES30 GamePad";
  288. buttonInputMap.clear();
  289. axisInputMap.clear();
  290. // Map the controller inputs to Controller::Key codes
  291. buttonInputMap[1] = Controller::Key::BUTTON_A;
  292. buttonInputMap[4] = Controller::Key::BUTTON_X;
  293. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  294. buttonInputMap[11] = Controller::Key::BUTTON_START;
  295. buttonInputMap[0] = Controller::Key::BUTTON_B;
  296. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  297. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  298. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  299. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  300. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  301. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  302. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  303. // Add the controller profile to the map
  304. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  305. // Prepare variables:
  306. deviceName = "8Bitdo SNES30 GamePad Joystick";
  307. buttonInputMap.clear();
  308. axisInputMap.clear();
  309. // Map the controller inputs to Controller::Key codes
  310. buttonInputMap[1] = Controller::Key::BUTTON_A;
  311. buttonInputMap[4] = Controller::Key::BUTTON_X;
  312. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  313. buttonInputMap[11] = Controller::Key::BUTTON_START;
  314. buttonInputMap[0] = Controller::Key::BUTTON_B;
  315. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  316. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  317. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  318. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  319. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  320. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  321. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  322. // Add the controller profile to the map
  323. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  324. // Prepare variables:
  325. deviceName = "SNES30 SNES30 Joy ";
  326. buttonInputMap.clear();
  327. axisInputMap.clear();
  328. // Map the controller inputs to Controller::Key codes
  329. buttonInputMap[1] = Controller::Key::BUTTON_A;
  330. buttonInputMap[4] = Controller::Key::BUTTON_X;
  331. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  332. buttonInputMap[11] = Controller::Key::BUTTON_START;
  333. buttonInputMap[0] = Controller::Key::BUTTON_B;
  334. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  335. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  336. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  337. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  338. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  339. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  340. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  341. // Add the controller profile to the map
  342. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  343. // Prepare variables:
  344. deviceName = "8Bitdo Joy";
  345. buttonInputMap.clear();
  346. axisInputMap.clear();
  347. // Map the controller inputs to Controller::Key codes
  348. buttonInputMap[11] = Controller::Key::BUTTON_A;
  349. buttonInputMap[14] = Controller::Key::BUTTON_X;
  350. buttonInputMap[21] = Controller::Key::BUTTON_SELECT;
  351. buttonInputMap[22] = Controller::Key::BUTTON_START;
  352. buttonInputMap[12] = Controller::Key::BUTTON_B;
  353. buttonInputMap[15] = Controller::Key::BUTTON_Y;
  354. buttonInputMap[17] = Controller::Key::BUTTON_LEFT_SHOULDER;
  355. buttonInputMap[18] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  356. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  357. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  358. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  359. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  360. // Add the controller profile to the map
  361. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  362. // Prepare variables:
  363. deviceName = "8Bitdo JoyStick 8Bitdo Joy ";
  364. buttonInputMap.clear();
  365. axisInputMap.clear();
  366. // Map the controller inputs to Controller::Key codes
  367. buttonInputMap[1] = Controller::Key::BUTTON_A;
  368. buttonInputMap[0] = Controller::Key::BUTTON_X;
  369. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  370. buttonInputMap[9] = Controller::Key::BUTTON_START;
  371. buttonInputMap[2] = Controller::Key::BUTTON_B;
  372. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  373. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  374. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  375. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  376. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  377. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  378. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  379. // Add the controller profile to the map
  380. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  381. // Prepare variables:
  382. deviceName = "8Bitdo N64 GamePad";
  383. buttonInputMap.clear();
  384. axisInputMap.clear();
  385. // Map the controller inputs to Controller::Key codes
  386. buttonInputMap[1] = Controller::Key::BUTTON_A;
  387. buttonInputMap[11] = Controller::Key::BUTTON_START;
  388. buttonInputMap[0] = Controller::Key::BUTTON_B;
  389. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  390. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  391. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  392. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  393. // Add the controller profile to the map
  394. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  395. // Prepare variables:
  396. deviceName = "8Bitdo N64 8Bitdo N64 ";
  397. buttonInputMap.clear();
  398. axisInputMap.clear();
  399. // Map the controller inputs to Controller::Key codes
  400. buttonInputMap[1] = Controller::Key::BUTTON_A;
  401. buttonInputMap[11] = Controller::Key::BUTTON_START;
  402. buttonInputMap[0] = Controller::Key::BUTTON_B;
  403. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  404. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  405. axisInputMap[5] = Controller::Key::BUTTON_DPAD_LEFT;
  406. axisInputMap[4] = Controller::Key::BUTTON_DPAD_RIGHT;
  407. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  408. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  409. // Add the controller profile to the map
  410. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  411. // Prepare variables:
  412. deviceName = "8Bitdo FC30 Pro";
  413. buttonInputMap.clear();
  414. axisInputMap.clear();
  415. // Map the controller inputs to Controller::Key codes
  416. buttonInputMap[1] = Controller::Key::BUTTON_A;
  417. buttonInputMap[4] = Controller::Key::BUTTON_X;
  418. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  419. buttonInputMap[11] = Controller::Key::BUTTON_START;
  420. buttonInputMap[0] = Controller::Key::BUTTON_B;
  421. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  422. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  423. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  424. buttonInputMap[13] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  425. buttonInputMap[14] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  426. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  427. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  428. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  429. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  430. // Add the controller profile to the map
  431. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  432. // Prepare variables:
  433. deviceName = "8Bitdo FC30 Pro 8Bitdo FC30 Pro";
  434. buttonInputMap.clear();
  435. axisInputMap.clear();
  436. // Map the controller inputs to Controller::Key codes
  437. buttonInputMap[1] = Controller::Key::BUTTON_A;
  438. buttonInputMap[4] = Controller::Key::BUTTON_X;
  439. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  440. buttonInputMap[11] = Controller::Key::BUTTON_START;
  441. buttonInputMap[0] = Controller::Key::BUTTON_B;
  442. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  443. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  444. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  445. buttonInputMap[13] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  446. buttonInputMap[14] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  447. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  448. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  449. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  450. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  451. axisInputMap[7] = Controller::Key::BUTTON_DPAD_UP;
  452. //axisInputMap[7] = Controller::Key::BUTTON_DPAD_DOWN;
  453. axisInputMap[5] = Controller::Key::BUTTON_DPAD_LEFT;
  454. axisInputMap[4] = Controller::Key::BUTTON_DPAD_RIGHT;
  455. // Add the controller profile to the map
  456. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  457. // Prepare variables:
  458. deviceName = "8Bitdo NES30 Pro";
  459. buttonInputMap.clear();
  460. axisInputMap.clear();
  461. // Map the controller inputs to Controller::Key codes
  462. buttonInputMap[1] = Controller::Key::BUTTON_A;
  463. buttonInputMap[4] = Controller::Key::BUTTON_X;
  464. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  465. buttonInputMap[11] = Controller::Key::BUTTON_START;
  466. buttonInputMap[0] = Controller::Key::BUTTON_B;
  467. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  468. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  469. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  470. buttonInputMap[13] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  471. buttonInputMap[14] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  472. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  473. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  474. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  475. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  476. // Add the controller profile to the map
  477. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  478. // Prepare variables:
  479. deviceName = "8Bitdo NES30 Pro Joystick";
  480. buttonInputMap.clear();
  481. axisInputMap.clear();
  482. // Map the controller inputs to Controller::Key codes
  483. buttonInputMap[1] = Controller::Key::BUTTON_A;
  484. buttonInputMap[4] = Controller::Key::BUTTON_X;
  485. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  486. buttonInputMap[11] = Controller::Key::BUTTON_START;
  487. buttonInputMap[0] = Controller::Key::BUTTON_B;
  488. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  489. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  490. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  491. buttonInputMap[13] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  492. buttonInputMap[14] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  493. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  494. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  495. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  496. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  497. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  498. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  499. // Add the controller profile to the map
  500. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  501. // Prepare variables:
  502. deviceName = "8Bitdo NES30 Pro 8Bitdo NES30 Pro";
  503. buttonInputMap.clear();
  504. axisInputMap.clear();
  505. // Map the controller inputs to Controller::Key codes
  506. buttonInputMap[1] = Controller::Key::BUTTON_A;
  507. buttonInputMap[4] = Controller::Key::BUTTON_X;
  508. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  509. buttonInputMap[11] = Controller::Key::BUTTON_START;
  510. buttonInputMap[0] = Controller::Key::BUTTON_B;
  511. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  512. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  513. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  514. buttonInputMap[13] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  515. buttonInputMap[14] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  516. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  517. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  518. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  519. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  520. axisInputMap[7] = Controller::Key::BUTTON_DPAD_UP;
  521. //axisInputMap[7] = Controller::Key::BUTTON_DPAD_DOWN;
  522. axisInputMap[5] = Controller::Key::BUTTON_DPAD_LEFT;
  523. axisInputMap[4] = Controller::Key::BUTTON_DPAD_RIGHT;
  524. // Add the controller profile to the map
  525. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  526. // Prepare variables:
  527. deviceName = "8Bitdo Zero GamePad";
  528. buttonInputMap.clear();
  529. axisInputMap.clear();
  530. // Map the controller inputs to Controller::Key codes
  531. buttonInputMap[0] = Controller::Key::BUTTON_A;
  532. buttonInputMap[3] = Controller::Key::BUTTON_X;
  533. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  534. buttonInputMap[11] = Controller::Key::BUTTON_START;
  535. buttonInputMap[1] = Controller::Key::BUTTON_B;
  536. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  537. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  538. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  539. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  540. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  541. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  542. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  543. // Add the controller profile to the map
  544. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  545. // Prepare variables:
  546. deviceName = "raphnet.net (S)NES Atari USB";
  547. buttonInputMap.clear();
  548. axisInputMap.clear();
  549. // Map the controller inputs to Controller::Key codes
  550. buttonInputMap[5] = Controller::Key::BUTTON_SELECT;
  551. buttonInputMap[9] = Controller::Key::BUTTON_START;
  552. buttonInputMap[4] = Controller::Key::BUTTON_B;
  553. buttonInputMap[1] = Controller::Key::BUTTON_A;
  554. buttonInputMap[8] = Controller::Key::BUTTON_Y;
  555. buttonInputMap[0] = Controller::Key::BUTTON_X;
  556. buttonInputMap[3] = Controller::Key::BUTTON_LEFT_SHOULDER;
  557. buttonInputMap[2] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  558. // Add the controller profile to the map
  559. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  560. // Prepare variables:
  561. deviceName = "ACRUX QuanBa Arcade JoyStick 1008";
  562. buttonInputMap.clear();
  563. axisInputMap.clear();
  564. // Map the controller inputs to Controller::Key codes
  565. buttonInputMap[1] = Controller::Key::BUTTON_A;
  566. buttonInputMap[2] = Controller::Key::BUTTON_X;
  567. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  568. buttonInputMap[9] = Controller::Key::BUTTON_START;
  569. buttonInputMap[0] = Controller::Key::BUTTON_B;
  570. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  571. buttonInputMap[5] = Controller::Key::BUTTON_LEFT_SHOULDER;
  572. buttonInputMap[4] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  573. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  574. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  575. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  576. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  577. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  578. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  579. // Add the controller profile to the map
  580. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  581. // Prepare variables:
  582. deviceName = "Afterglow controller for PS3";
  583. buttonInputMap.clear();
  584. axisInputMap.clear();
  585. // Map the controller inputs to Controller::Key codes
  586. buttonInputMap[1] = Controller::Key::BUTTON_A;
  587. buttonInputMap[0] = Controller::Key::BUTTON_X;
  588. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  589. buttonInputMap[9] = Controller::Key::BUTTON_START;
  590. buttonInputMap[2] = Controller::Key::BUTTON_B;
  591. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  592. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  593. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  594. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  595. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  596. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  597. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  598. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  599. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  600. // Add the controller profile to the map
  601. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  602. // Prepare variables:
  603. deviceName = "Afterglow Gamepad for Xbox 360";
  604. buttonInputMap.clear();
  605. axisInputMap.clear();
  606. // Map the controller inputs to Controller::Key codes
  607. buttonInputMap[1] = Controller::Key::BUTTON_A;
  608. buttonInputMap[3] = Controller::Key::BUTTON_X;
  609. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  610. buttonInputMap[7] = Controller::Key::BUTTON_START;
  611. buttonInputMap[0] = Controller::Key::BUTTON_B;
  612. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  613. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  614. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  615. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  616. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  617. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  618. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  619. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  620. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  621. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  622. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  623. // Add the controller profile to the map
  624. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  625. // Prepare variables:
  626. deviceName = "BLISS-BOX 4PLAY PORT";
  627. buttonInputMap.clear();
  628. axisInputMap.clear();
  629. // Map the controller inputs to Controller::Key codes
  630. buttonInputMap[5] = Controller::Key::BUTTON_A;
  631. buttonInputMap[4] = Controller::Key::BUTTON_X;
  632. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  633. buttonInputMap[9] = Controller::Key::BUTTON_START;
  634. buttonInputMap[14] = Controller::Key::BUTTON_DPAD_UP;
  635. buttonInputMap[15] = Controller::Key::BUTTON_DPAD_DOWN;
  636. buttonInputMap[16] = Controller::Key::BUTTON_DPAD_LEFT;
  637. buttonInputMap[17] = Controller::Key::BUTTON_DPAD_RIGHT;
  638. buttonInputMap[7] = Controller::Key::BUTTON_B;
  639. buttonInputMap[6] = Controller::Key::BUTTON_Y;
  640. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_SHOULDER;
  641. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  642. buttonInputMap[18] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  643. buttonInputMap[19] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  644. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  645. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  646. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  647. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  648. // Add the controller profile to the map
  649. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  650. // Prepare variables:
  651. deviceName = "ControlBlock Arcade Gamepad";
  652. buttonInputMap.clear();
  653. axisInputMap.clear();
  654. // Map the controller inputs to Controller::Key codes
  655. buttonInputMap[1] = Controller::Key::BUTTON_A;
  656. buttonInputMap[5] = Controller::Key::BUTTON_X;
  657. buttonInputMap[11] = Controller::Key::BUTTON_SELECT;
  658. buttonInputMap[10] = Controller::Key::BUTTON_START;
  659. buttonInputMap[0] = Controller::Key::BUTTON_B;
  660. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  661. buttonInputMap[2] = Controller::Key::BUTTON_LEFT_SHOULDER;
  662. buttonInputMap[3] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  663. buttonInputMap[8] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  664. buttonInputMap[9] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  665. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  666. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  667. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  668. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  669. // Add the controller profile to the map
  670. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  671. // Prepare variables:
  672. deviceName = "ControlBlock SNES Gamepad";
  673. buttonInputMap.clear();
  674. axisInputMap.clear();
  675. // Map the controller inputs to Controller::Key codes
  676. buttonInputMap[1] = Controller::Key::BUTTON_A;
  677. buttonInputMap[3] = Controller::Key::BUTTON_X;
  678. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  679. buttonInputMap[7] = Controller::Key::BUTTON_START;
  680. buttonInputMap[0] = Controller::Key::BUTTON_B;
  681. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  682. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  683. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  684. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  685. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  686. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  687. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  688. // Add the controller profile to the map
  689. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  690. // Prepare variables:
  691. deviceName = "ShanWan USB WirelessGamepad ";
  692. buttonInputMap.clear();
  693. axisInputMap.clear();
  694. // Map the controller inputs to Controller::Key codes
  695. buttonInputMap[2] = Controller::Key::BUTTON_A;
  696. buttonInputMap[3] = Controller::Key::BUTTON_X;
  697. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  698. buttonInputMap[9] = Controller::Key::BUTTON_START;
  699. buttonInputMap[1] = Controller::Key::BUTTON_B;
  700. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  701. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  702. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  703. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  704. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  705. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  706. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  707. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  708. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  709. //axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  710. //axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  711. // Add the controller profile to the map
  712. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  713. // Prepare variables:
  714. deviceName = "DragonRise Inc. Generic USB Joystick ";
  715. buttonInputMap.clear();
  716. axisInputMap.clear();
  717. // Map the controller inputs to Controller::Key codes
  718. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  719. buttonInputMap[1] = Controller::Key::BUTTON_B;
  720. buttonInputMap[2] = Controller::Key::BUTTON_A;
  721. buttonInputMap[3] = Controller::Key::BUTTON_X;
  722. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  723. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  724. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  725. buttonInputMap[9] = Controller::Key::BUTTON_START;
  726. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  727. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  728. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  729. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  730. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  731. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  732. // Add the controller profile to the map
  733. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  734. // Prepare variables:
  735. deviceName = "DragonRise Inc. PC TWIN SHOCK Gamepad";
  736. buttonInputMap.clear();
  737. axisInputMap.clear();
  738. // Map the controller inputs to Controller::Key codes
  739. buttonInputMap[2] = Controller::Key::BUTTON_A;
  740. buttonInputMap[3] = Controller::Key::BUTTON_X;
  741. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  742. buttonInputMap[9] = Controller::Key::BUTTON_START;
  743. buttonInputMap[1] = Controller::Key::BUTTON_B;
  744. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  745. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  746. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  747. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  748. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  749. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  750. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  751. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  752. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  753. //axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  754. //axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  755. // Add the controller profile to the map
  756. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  757. // Prepare variables:
  758. deviceName = "Performance Designed Products EA SPORTS Controller for PS3";
  759. buttonInputMap.clear();
  760. axisInputMap.clear();
  761. // Map the controller inputs to Controller::Key codes
  762. buttonInputMap[1] = Controller::Key::BUTTON_A;
  763. buttonInputMap[0] = Controller::Key::BUTTON_X;
  764. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  765. buttonInputMap[9] = Controller::Key::BUTTON_START;
  766. buttonInputMap[2] = Controller::Key::BUTTON_B;
  767. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  768. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  769. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  770. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  771. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  772. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  773. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  774. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  775. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  776. // Add the controller profile to the map
  777. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  778. // Prepare variables:
  779. deviceName = "USB GAMEPAD 8116";
  780. buttonInputMap.clear();
  781. axisInputMap.clear();
  782. // Map the controller inputs to Controller::Key codes
  783. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  784. buttonInputMap[9] = Controller::Key::BUTTON_START;
  785. buttonInputMap[0] = Controller::Key::BUTTON_B;
  786. buttonInputMap[1] = Controller::Key::BUTTON_A;
  787. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  788. buttonInputMap[3] = Controller::Key::BUTTON_X;
  789. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  790. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  791. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  792. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  793. axisInputMap[4] = Controller::Key::AXIS_LEFT_TRIGGER;
  794. //axisInputMap[4] = Controller::Key::AXIS_RIGHT_TRIGGER;
  795. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  796. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  797. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  798. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  799. // Add the controller profile to the map
  800. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  801. // Prepare variables:
  802. deviceName = "G27 Racing Wheel";
  803. buttonInputMap.clear();
  804. axisInputMap.clear();
  805. // Map the controller inputs to Controller::Key codes
  806. buttonInputMap[11] = Controller::Key::BUTTON_SELECT;
  807. buttonInputMap[8] = Controller::Key::BUTTON_START;
  808. buttonInputMap[2] = Controller::Key::BUTTON_B;
  809. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  810. buttonInputMap[7] = Controller::Key::BUTTON_LEFT_SHOULDER;
  811. buttonInputMap[6] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  812. buttonInputMap[21] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  813. buttonInputMap[19] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  814. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  815. axisInputMap[5] = Controller::Key::JOYSTICK_LEFT_Y;
  816. //axisInputMap[0] = Controller::Key::JOYSTICK_RIGHT_X;
  817. //axisInputMap[5] = Controller::Key::JOYSTICK_RIGHT_Y;
  818. // Add the controller profile to the map
  819. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  820. // Prepare variables:
  821. deviceName = "Gamegirl Controller";
  822. buttonInputMap.clear();
  823. axisInputMap.clear();
  824. // Map the controller inputs to Controller::Key codes
  825. buttonInputMap[0] = Controller::Key::BUTTON_B;
  826. buttonInputMap[1] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  827. buttonInputMap[2] = Controller::Key::BUTTON_LEFT_SHOULDER;
  828. buttonInputMap[3] = Controller::Key::BUTTON_DPAD_UP;
  829. buttonInputMap[4] = Controller::Key::BUTTON_SELECT;
  830. buttonInputMap[5] = Controller::Key::BUTTON_X;
  831. buttonInputMap[6] = Controller::Key::BUTTON_DPAD_DOWN;
  832. buttonInputMap[7] = Controller::Key::BUTTON_Y;
  833. buttonInputMap[8] = Controller::Key::BUTTON_DPAD_RIGHT;
  834. buttonInputMap[9] = Controller::Key::BUTTON_START;
  835. buttonInputMap[10] = Controller::Key::BUTTON_A;
  836. buttonInputMap[11] = Controller::Key::BUTTON_DPAD_LEFT;
  837. // Add the controller profile to the map
  838. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  839. // Prepare variables:
  840. deviceName = "Gamtec.,Ltd SmartJoy PLUS Adapter";
  841. buttonInputMap.clear();
  842. axisInputMap.clear();
  843. // Map the controller inputs to Controller::Key codes
  844. buttonInputMap[2] = Controller::Key::BUTTON_A;
  845. buttonInputMap[3] = Controller::Key::BUTTON_X;
  846. buttonInputMap[9] = Controller::Key::BUTTON_SELECT;
  847. buttonInputMap[8] = Controller::Key::BUTTON_START;
  848. buttonInputMap[1] = Controller::Key::BUTTON_B;
  849. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  850. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  851. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  852. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  853. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  854. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  855. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  856. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  857. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  858. //axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  859. //axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  860. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  861. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  862. // Add the controller profile to the map
  863. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  864. // Prepare variables:
  865. deviceName = "Gasia Co.,Ltd PS(R) Gamepad";
  866. buttonInputMap.clear();
  867. axisInputMap.clear();
  868. // Map the controller inputs to Controller::Key codes
  869. buttonInputMap[14] = Controller::Key::BUTTON_A;
  870. buttonInputMap[15] = Controller::Key::BUTTON_X;
  871. buttonInputMap[0] = Controller::Key::BUTTON_SELECT;
  872. buttonInputMap[3] = Controller::Key::BUTTON_START;
  873. buttonInputMap[4] = Controller::Key::BUTTON_DPAD_UP;
  874. buttonInputMap[6] = Controller::Key::BUTTON_DPAD_DOWN;
  875. buttonInputMap[7] = Controller::Key::BUTTON_DPAD_LEFT;
  876. buttonInputMap[5] = Controller::Key::BUTTON_DPAD_RIGHT;
  877. buttonInputMap[13] = Controller::Key::BUTTON_B;
  878. buttonInputMap[12] = Controller::Key::BUTTON_Y;
  879. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_SHOULDER;
  880. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  881. buttonInputMap[1] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  882. buttonInputMap[2] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  883. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  884. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  885. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  886. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  887. // Add the controller profile to the map
  888. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  889. // Prepare variables:
  890. deviceName = "GEN GAME S3";
  891. buttonInputMap.clear();
  892. axisInputMap.clear();
  893. // Map the controller inputs to Controller::Key codes
  894. buttonInputMap[9] = Controller::Key::BUTTON_A;
  895. buttonInputMap[12] = Controller::Key::BUTTON_X;
  896. buttonInputMap[19] = Controller::Key::BUTTON_SELECT;
  897. buttonInputMap[20] = Controller::Key::BUTTON_START;
  898. buttonInputMap[10] = Controller::Key::BUTTON_B;
  899. buttonInputMap[13] = Controller::Key::BUTTON_Y;
  900. buttonInputMap[15] = Controller::Key::BUTTON_LEFT_SHOULDER;
  901. buttonInputMap[16] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  902. buttonInputMap[22] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  903. buttonInputMap[23] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  904. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  905. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  906. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  907. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  908. // Add the controller profile to the map
  909. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  910. // Prepare variables:
  911. deviceName = "Generic X-Box pad";
  912. buttonInputMap.clear();
  913. axisInputMap.clear();
  914. // Map the controller inputs to Controller::Key codes
  915. buttonInputMap[0] = Controller::Key::BUTTON_A;
  916. buttonInputMap[2] = Controller::Key::BUTTON_X;
  917. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  918. buttonInputMap[7] = Controller::Key::BUTTON_START;
  919. buttonInputMap[1] = Controller::Key::BUTTON_B;
  920. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  921. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  922. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  923. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  924. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  925. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  926. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  927. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  928. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  929. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  930. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  931. // Add the controller profile to the map
  932. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  933. // Prepare variables:
  934. deviceName = "ShanWan Gioteck PS3 Wired Controller";
  935. buttonInputMap.clear();
  936. axisInputMap.clear();
  937. // Map the controller inputs to Controller::Key codes
  938. buttonInputMap[2] = Controller::Key::BUTTON_A;
  939. buttonInputMap[3] = Controller::Key::BUTTON_X;
  940. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  941. buttonInputMap[9] = Controller::Key::BUTTON_START;
  942. buttonInputMap[1] = Controller::Key::BUTTON_B;
  943. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  944. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  945. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  946. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  947. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  948. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  949. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  950. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  951. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  952. // Add the controller profile to the map
  953. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  954. // Prepare variables:
  955. deviceName = "Gravis Destroyer Tiltpad";
  956. buttonInputMap.clear();
  957. axisInputMap.clear();
  958. // Map the controller inputs to Controller::Key codes
  959. buttonInputMap[1] = Controller::Key::BUTTON_A;
  960. buttonInputMap[0] = Controller::Key::BUTTON_X;
  961. buttonInputMap[4] = Controller::Key::BUTTON_SELECT;
  962. buttonInputMap[5] = Controller::Key::BUTTON_START;
  963. buttonInputMap[2] = Controller::Key::BUTTON_B;
  964. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  965. //buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  966. //buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  967. //buttonInputMap[4] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  968. //buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  969. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  970. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  971. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  972. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  973. // Add the controller profile to the map
  974. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  975. // Prepare variables:
  976. deviceName = "GreenAsia Inc. USB Joystick ";
  977. buttonInputMap.clear();
  978. axisInputMap.clear();
  979. // Map the controller inputs to Controller::Key codes
  980. buttonInputMap[2] = Controller::Key::BUTTON_A;
  981. buttonInputMap[3] = Controller::Key::BUTTON_X;
  982. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  983. buttonInputMap[9] = Controller::Key::BUTTON_START;
  984. buttonInputMap[1] = Controller::Key::BUTTON_B;
  985. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  986. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  987. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  988. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  989. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  990. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  991. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  992. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  993. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  994. //axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  995. //axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  996. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  997. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  998. // Add the controller profile to the map
  999. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1000. // Prepare variables:
  1001. deviceName = "GreenAsia Inc. USB Joystick ";
  1002. buttonInputMap.clear();
  1003. axisInputMap.clear();
  1004. // Map the controller inputs to Controller::Key codes
  1005. buttonInputMap[2] = Controller::Key::BUTTON_A;
  1006. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1007. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1008. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1009. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1010. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  1011. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1012. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1013. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1014. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1015. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1016. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1017. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1018. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1019. // Add the controller profile to the map
  1020. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1021. // Prepare variables:
  1022. deviceName = "HJZ Mayflash WiiU Pro Game Controller Adapter";
  1023. buttonInputMap.clear();
  1024. axisInputMap.clear();
  1025. // Map the controller inputs to Controller::Key codes
  1026. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1027. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1028. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1029. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1030. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1031. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1032. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1033. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1034. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1035. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1036. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1037. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1038. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1039. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1040. // Add the controller profile to the map
  1041. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1042. // Prepare variables:
  1043. deviceName = "HORI CO.,LTD. Fighting Commander 4";
  1044. buttonInputMap.clear();
  1045. axisInputMap.clear();
  1046. // Map the controller inputs to Controller::Key codes
  1047. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1048. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1049. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1050. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1051. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1052. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1053. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1054. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1055. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1056. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1057. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1058. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1059. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1060. axisInputMap[5] = Controller::Key::JOYSTICK_RIGHT_Y;
  1061. // Add the controller profile to the map
  1062. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1063. // Prepare variables:
  1064. deviceName = "HORI CO.,LTD. Fighting Commander";
  1065. buttonInputMap.clear();
  1066. axisInputMap.clear();
  1067. // Map the controller inputs to Controller::Key codes
  1068. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1069. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1070. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1071. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1072. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1073. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1074. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1075. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1076. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1077. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1078. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1079. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1080. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1081. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1082. // Add the controller profile to the map
  1083. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1084. // Prepare variables:
  1085. deviceName = "Hori Fighting Stick EX2";
  1086. buttonInputMap.clear();
  1087. axisInputMap.clear();
  1088. // Map the controller inputs to Controller::Key codes
  1089. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1090. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1091. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1092. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1093. buttonInputMap[0] = Controller::Key::BUTTON_B;
  1094. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  1095. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1096. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1097. // Add the controller profile to the map
  1098. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1099. // Prepare variables:
  1100. deviceName = "HORI CO.,LTD. Fighting Stick mini 4";
  1101. buttonInputMap.clear();
  1102. axisInputMap.clear();
  1103. // Map the controller inputs to Controller::Key codes
  1104. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1105. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1106. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1107. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1108. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1109. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1110. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1111. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1112. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1113. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1114. // Add the controller profile to the map
  1115. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1116. // Prepare variables:
  1117. deviceName = "HORIPAD ONE";
  1118. buttonInputMap.clear();
  1119. axisInputMap.clear();
  1120. // Map the controller inputs to Controller::Key codes
  1121. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1122. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1123. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1124. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1125. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1126. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1127. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1128. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1129. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1130. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1131. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1132. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1133. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1134. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1135. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1136. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1137. // Add the controller profile to the map
  1138. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1139. // Prepare variables:
  1140. deviceName = "HORI CO.,LTD PAD A";
  1141. buttonInputMap.clear();
  1142. axisInputMap.clear();
  1143. // Map the controller inputs to Controller::Key codes
  1144. buttonInputMap[2] = Controller::Key::BUTTON_A;
  1145. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1146. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1147. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1148. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1149. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  1150. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1151. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1152. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1153. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1154. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1155. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1156. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1157. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1158. // Add the controller profile to the map
  1159. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1160. // Prepare variables:
  1161. deviceName = "HORI CO.,LTD. REAL ARCADE PRO.3";
  1162. buttonInputMap.clear();
  1163. axisInputMap.clear();
  1164. // Map the controller inputs to Controller::Key codes
  1165. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1166. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1167. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1168. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1169. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1170. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1171. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1172. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1173. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1174. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1175. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  1176. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  1177. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  1178. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  1179. // Add the controller profile to the map
  1180. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1181. // Prepare variables:
  1182. deviceName = "HORI CO.,LTD. Real Arcade Pro.4";
  1183. buttonInputMap.clear();
  1184. axisInputMap.clear();
  1185. // Map the controller inputs to Controller::Key codes
  1186. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1187. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1188. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1189. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1190. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1191. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1192. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1193. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1194. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1195. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1196. // Add the controller profile to the map
  1197. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1198. // Prepare variables:
  1199. deviceName = "BUFFALO BSGP1601 Series ";
  1200. buttonInputMap.clear();
  1201. axisInputMap.clear();
  1202. // Map the controller inputs to Controller::Key codes
  1203. buttonInputMap[5] = Controller::Key::BUTTON_A;
  1204. buttonInputMap[4] = Controller::Key::BUTTON_X;
  1205. buttonInputMap[14] = Controller::Key::BUTTON_SELECT;
  1206. buttonInputMap[15] = Controller::Key::BUTTON_START;
  1207. buttonInputMap[3] = Controller::Key::BUTTON_B;
  1208. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  1209. buttonInputMap[8] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1210. buttonInputMap[9] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1211. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1212. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1213. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1214. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1215. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1216. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1217. // Add the controller profile to the map
  1218. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1219. // Prepare variables:
  1220. deviceName = "USB,2-axis 8-button gamepad";
  1221. buttonInputMap.clear();
  1222. axisInputMap.clear();
  1223. // Map the controller inputs to Controller::Key codes
  1224. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1225. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1226. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1227. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1228. buttonInputMap[0] = Controller::Key::BUTTON_B;
  1229. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  1230. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1231. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1232. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  1233. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  1234. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  1235. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  1236. // Add the controller profile to the map
  1237. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1238. // Prepare variables:
  1239. deviceName = "ION iCade";
  1240. buttonInputMap.clear();
  1241. axisInputMap.clear();
  1242. // Map the controller inputs to Controller::Key codes
  1243. buttonInputMap[9] = Controller::Key::BUTTON_A;
  1244. buttonInputMap[6] = Controller::Key::BUTTON_X;
  1245. buttonInputMap[5] = Controller::Key::BUTTON_SELECT;
  1246. buttonInputMap[4] = Controller::Key::BUTTON_START;
  1247. buttonInputMap[0] = Controller::Key::BUTTON_DPAD_UP;
  1248. buttonInputMap[3] = Controller::Key::BUTTON_DPAD_DOWN;
  1249. buttonInputMap[1] = Controller::Key::BUTTON_DPAD_LEFT;
  1250. buttonInputMap[2] = Controller::Key::BUTTON_DPAD_RIGHT;
  1251. buttonInputMap[8] = Controller::Key::BUTTON_B;
  1252. buttonInputMap[7] = Controller::Key::BUTTON_Y;
  1253. buttonInputMap[11] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1254. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1255. // Add the controller profile to the map
  1256. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1257. // Prepare variables:
  1258. deviceName = "ipega classic gamepad";
  1259. buttonInputMap.clear();
  1260. axisInputMap.clear();
  1261. // Map the controller inputs to Controller::Key codes
  1262. buttonInputMap[19] = Controller::Key::BUTTON_SELECT;
  1263. buttonInputMap[20] = Controller::Key::BUTTON_START;
  1264. buttonInputMap[10] = Controller::Key::BUTTON_B;
  1265. buttonInputMap[13] = Controller::Key::BUTTON_Y;
  1266. buttonInputMap[9] = Controller::Key::BUTTON_A;
  1267. buttonInputMap[12] = Controller::Key::BUTTON_X;
  1268. buttonInputMap[15] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1269. buttonInputMap[16] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1270. buttonInputMap[22] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1271. buttonInputMap[23] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1272. axisInputMap[5] = Controller::Key::AXIS_LEFT_TRIGGER;
  1273. axisInputMap[4] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1274. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1275. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1276. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1277. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1278. // Add the controller profile to the map
  1279. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1280. // Prepare variables:
  1281. deviceName = "Jess Tech Colour Rumble Pad";
  1282. buttonInputMap.clear();
  1283. axisInputMap.clear();
  1284. // Map the controller inputs to Controller::Key codes
  1285. buttonInputMap[2] = Controller::Key::BUTTON_A;
  1286. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1287. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1288. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1289. buttonInputMap[3] = Controller::Key::BUTTON_B;
  1290. buttonInputMap[1] = Controller::Key::BUTTON_Y;
  1291. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1292. buttonInputMap[6] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1293. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1294. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1295. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1296. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1297. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1298. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  1299. // Add the controller profile to the map
  1300. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1301. // Prepare variables:
  1302. deviceName = "Jess Tech Dual Analog Rumble Pad";
  1303. buttonInputMap.clear();
  1304. axisInputMap.clear();
  1305. // Map the controller inputs to Controller::Key codes
  1306. buttonInputMap[2] = Controller::Key::BUTTON_A;
  1307. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1308. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1309. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1310. buttonInputMap[3] = Controller::Key::BUTTON_B;
  1311. buttonInputMap[1] = Controller::Key::BUTTON_Y;
  1312. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1313. buttonInputMap[6] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1314. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1315. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1316. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1317. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1318. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1319. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  1320. // Add the controller profile to the map
  1321. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1322. // Prepare variables:
  1323. deviceName = "kadevice.com KADE - Kick Ass Dynamic Encoder";
  1324. buttonInputMap.clear();
  1325. axisInputMap.clear();
  1326. // Map the controller inputs to Controller::Key codes
  1327. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1328. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1329. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1330. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1331. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1332. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1333. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1334. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1335. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1336. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1337. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1338. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1339. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1340. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1341. // Add the controller profile to the map
  1342. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1343. // Prepare variables:
  1344. deviceName = "Logic3 Controller";
  1345. buttonInputMap.clear();
  1346. axisInputMap.clear();
  1347. // Map the controller inputs to Controller::Key codes
  1348. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1349. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1350. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1351. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1352. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1353. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1354. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1355. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1356. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1357. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1358. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1359. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1360. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1361. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1362. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1363. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1364. // Add the controller profile to the map
  1365. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1366. // Prepare variables:
  1367. deviceName = "Logitech ChillStream PS3/USB Corded Gamepad";
  1368. buttonInputMap.clear();
  1369. axisInputMap.clear();
  1370. // Map the controller inputs to Controller::Key codes
  1371. buttonInputMap[2] = Controller::Key::BUTTON_A;
  1372. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1373. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1374. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1375. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1376. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  1377. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1378. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1379. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1380. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1381. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1382. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1383. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1384. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1385. // Add the controller profile to the map
  1386. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1387. // Prepare variables:
  1388. deviceName = "Logitech Logitech Cordless RumblePad 2";
  1389. buttonInputMap.clear();
  1390. axisInputMap.clear();
  1391. // Map the controller inputs to Controller::Key codes
  1392. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1393. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1394. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1395. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1396. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1397. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1398. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1399. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1400. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1401. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1402. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1403. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1404. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1405. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1406. // Add the controller profile to the map
  1407. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1408. // Prepare variables:
  1409. deviceName = "Logitech Logitech Dual Action";
  1410. buttonInputMap.clear();
  1411. axisInputMap.clear();
  1412. // Map the controller inputs to Controller::Key codes
  1413. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1414. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1415. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1416. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1417. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1418. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1419. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1420. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1421. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1422. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1423. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1424. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1425. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1426. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1427. // Add the controller profile to the map
  1428. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1429. // Prepare variables:
  1430. deviceName = "Logitech Gamepad F310";
  1431. buttonInputMap.clear();
  1432. axisInputMap.clear();
  1433. // Map the controller inputs to Controller::Key codes
  1434. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1435. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1436. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1437. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1438. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1439. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1440. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1441. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1442. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1443. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1444. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1445. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1446. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1447. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1448. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1449. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1450. // Add the controller profile to the map
  1451. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1452. // Prepare variables:
  1453. deviceName = "Logitech Gamepad F510";
  1454. buttonInputMap.clear();
  1455. axisInputMap.clear();
  1456. // Map the controller inputs to Controller::Key codes
  1457. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1458. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1459. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1460. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1461. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1462. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1463. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1464. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1465. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1466. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1467. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1468. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1469. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1470. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1471. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1472. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1473. // Add the controller profile to the map
  1474. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1475. // Prepare variables:
  1476. deviceName = "Logitech Gamepad F710";
  1477. buttonInputMap.clear();
  1478. axisInputMap.clear();
  1479. // Map the controller inputs to Controller::Key codes
  1480. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1481. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1482. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1483. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1484. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1485. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1486. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1487. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1488. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1489. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1490. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1491. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1492. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1493. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1494. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1495. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1496. // Add the controller profile to the map
  1497. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1498. // Prepare variables:
  1499. deviceName = "Logitech Logitech(R) Precision(TM) Gamepad";
  1500. buttonInputMap.clear();
  1501. axisInputMap.clear();
  1502. // Map the controller inputs to Controller::Key codes
  1503. buttonInputMap[2] = Controller::Key::BUTTON_A;
  1504. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1505. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1506. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1507. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1508. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  1509. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1510. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1511. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1512. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1513. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  1514. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  1515. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  1516. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  1517. //axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1518. //axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_Y;
  1519. //axisInputMap[0] = Controller::Key::JOYSTICK_RIGHT_X;
  1520. //axisInputMap[0] = Controller::Key::JOYSTICK_RIGHT_Y;
  1521. // Add the controller profile to the map
  1522. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1523. // Prepare variables:
  1524. deviceName = "Logitech Logitech RumblePad 2 USB";
  1525. buttonInputMap.clear();
  1526. axisInputMap.clear();
  1527. // Map the controller inputs to Controller::Key codes
  1528. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1529. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1530. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1531. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1532. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1533. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1534. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1535. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1536. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1537. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1538. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  1539. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  1540. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  1541. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  1542. axisInputMap[4] = Controller::Key::JOYSTICK_LEFT_X;
  1543. //axisInputMap[4] = Controller::Key::JOYSTICK_LEFT_Y;
  1544. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1545. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1546. // Add the controller profile to the map
  1547. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1548. // Prepare variables:
  1549. deviceName = "Logitech WingMan Action Pad";
  1550. buttonInputMap.clear();
  1551. axisInputMap.clear();
  1552. // Map the controller inputs to Controller::Key codes
  1553. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1554. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1555. buttonInputMap[8] = Controller::Key::BUTTON_START;
  1556. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1557. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  1558. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1559. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1560. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  1561. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  1562. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  1563. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  1564. // Add the controller profile to the map
  1565. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1566. // Prepare variables:
  1567. deviceName = "Mad catz Inc. Mad Catz FightPad PRO PS3";
  1568. buttonInputMap.clear();
  1569. axisInputMap.clear();
  1570. // Map the controller inputs to Controller::Key codes
  1571. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1572. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1573. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1574. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1575. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1576. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1577. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1578. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1579. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1580. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1581. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1582. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1583. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1584. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1585. // Add the controller profile to the map
  1586. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1587. // Prepare variables:
  1588. deviceName = "Mad catz Inc. Mad Catz FightPad PRO PS4";
  1589. buttonInputMap.clear();
  1590. axisInputMap.clear();
  1591. // Map the controller inputs to Controller::Key codes
  1592. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1593. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1594. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1595. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1596. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1597. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1598. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1599. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1600. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1601. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1602. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1603. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1604. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1605. axisInputMap[5] = Controller::Key::JOYSTICK_RIGHT_Y;
  1606. // Add the controller profile to the map
  1607. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1608. // Prepare variables:
  1609. deviceName = "Mad Catz FightStick TE2+ PS3";
  1610. buttonInputMap.clear();
  1611. axisInputMap.clear();
  1612. // Map the controller inputs to Controller::Key codes
  1613. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1614. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1615. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1616. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1617. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1618. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1619. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1620. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1621. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1622. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1623. // Add the controller profile to the map
  1624. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1625. // Prepare variables:
  1626. deviceName = "Mad Catz FightStick TE2+ PS4";
  1627. buttonInputMap.clear();
  1628. axisInputMap.clear();
  1629. // Map the controller inputs to Controller::Key codes
  1630. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1631. buttonInputMap[0] = Controller::Key::BUTTON_X;
  1632. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1633. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1634. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1635. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1636. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1637. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1638. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1639. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1640. // Add the controller profile to the map
  1641. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1642. // Prepare variables:
  1643. deviceName = "Mad Catz Wired Xbox 360 Controller (SFIV)";
  1644. buttonInputMap.clear();
  1645. axisInputMap.clear();
  1646. // Map the controller inputs to Controller::Key codes
  1647. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1648. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1649. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1650. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1651. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1652. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1653. buttonInputMap[5] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1654. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1655. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1656. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1657. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1658. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1659. // Add the controller profile to the map
  1660. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1661. // Prepare variables:
  1662. deviceName = "Mad Catz Xbox 360 Controller";
  1663. buttonInputMap.clear();
  1664. axisInputMap.clear();
  1665. // Map the controller inputs to Controller::Key codes
  1666. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1667. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1668. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1669. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1670. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1671. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1672. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1673. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1674. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1675. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1676. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1677. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1678. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1679. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1680. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1681. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1682. // Add the controller profile to the map
  1683. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1684. // Prepare variables:
  1685. deviceName = " MAYFLASH Arcade Fightstick F300";
  1686. buttonInputMap.clear();
  1687. axisInputMap.clear();
  1688. // Map the controller inputs to Controller::Key codes
  1689. buttonInputMap[1] = Controller::Key::BUTTON_A;
  1690. buttonInputMap[4] = Controller::Key::BUTTON_X;
  1691. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  1692. buttonInputMap[11] = Controller::Key::BUTTON_START;
  1693. buttonInputMap[0] = Controller::Key::BUTTON_B;
  1694. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1695. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1696. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1697. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1698. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1699. // Add the controller profile to the map
  1700. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1701. // Prepare variables:
  1702. deviceName = "MAYFLASH Arcade Fightstick F300";
  1703. buttonInputMap.clear();
  1704. axisInputMap.clear();
  1705. // Map the controller inputs to Controller::Key codes
  1706. buttonInputMap[2] = Controller::Key::BUTTON_A;
  1707. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1708. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1709. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1710. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1711. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  1712. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1713. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1714. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1715. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1716. // Add the controller profile to the map
  1717. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1718. // Prepare variables:
  1719. deviceName = "HuiJia USB GamePad";
  1720. buttonInputMap.clear();
  1721. axisInputMap.clear();
  1722. // Map the controller inputs to Controller::Key codes
  1723. buttonInputMap[2] = Controller::Key::BUTTON_A;
  1724. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1725. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1726. buttonInputMap[12] = Controller::Key::BUTTON_DPAD_UP;
  1727. buttonInputMap[14] = Controller::Key::BUTTON_DPAD_DOWN;
  1728. buttonInputMap[15] = Controller::Key::BUTTON_DPAD_LEFT;
  1729. buttonInputMap[13] = Controller::Key::BUTTON_DPAD_RIGHT;
  1730. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1731. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  1732. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1733. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1734. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1735. axisInputMap[3] = Controller::Key::AXIS_LEFT_TRIGGER;
  1736. axisInputMap[4] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1737. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1738. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1739. axisInputMap[5] = Controller::Key::JOYSTICK_RIGHT_X;
  1740. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  1741. // Add the controller profile to the map
  1742. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1743. // Prepare variables:
  1744. deviceName = "Mega World Thrustmaster dual analog 3.2";
  1745. buttonInputMap.clear();
  1746. axisInputMap.clear();
  1747. // Map the controller inputs to Controller::Key codes
  1748. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1749. buttonInputMap[1] = Controller::Key::BUTTON_X;
  1750. buttonInputMap[11] = Controller::Key::BUTTON_SELECT;
  1751. buttonInputMap[10] = Controller::Key::BUTTON_START;
  1752. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1753. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1754. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1755. buttonInputMap[6] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1756. buttonInputMap[8] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1757. buttonInputMap[9] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1758. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1759. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1760. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  1761. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  1762. // Add the controller profile to the map
  1763. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1764. // Prepare variables:
  1765. deviceName = "Mega World USB 2-Axis 8-Button Gamepad";
  1766. buttonInputMap.clear();
  1767. axisInputMap.clear();
  1768. // Map the controller inputs to Controller::Key codes
  1769. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1770. buttonInputMap[1] = Controller::Key::BUTTON_X;
  1771. buttonInputMap[5] = Controller::Key::BUTTON_SELECT;
  1772. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1773. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1774. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1775. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1776. buttonInputMap[6] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1777. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  1778. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  1779. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  1780. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  1781. // Add the controller profile to the map
  1782. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1783. // Prepare variables:
  1784. deviceName = "Microntek USB Joystick ";
  1785. buttonInputMap.clear();
  1786. axisInputMap.clear();
  1787. // Map the controller inputs to Controller::Key codes
  1788. buttonInputMap[2] = Controller::Key::BUTTON_A;
  1789. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1790. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  1791. buttonInputMap[9] = Controller::Key::BUTTON_START;
  1792. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1793. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  1794. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1795. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1796. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1797. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1798. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  1799. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  1800. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  1801. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  1802. //axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1803. //axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1804. // Add the controller profile to the map
  1805. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1806. // Prepare variables:
  1807. deviceName = "Microsoft SideWinder Dual Strike USB version 1.0";
  1808. buttonInputMap.clear();
  1809. axisInputMap.clear();
  1810. // Map the controller inputs to Controller::Key codes
  1811. buttonInputMap[3] = Controller::Key::BUTTON_A;
  1812. buttonInputMap[1] = Controller::Key::BUTTON_X;
  1813. buttonInputMap[5] = Controller::Key::BUTTON_SELECT;
  1814. buttonInputMap[4] = Controller::Key::BUTTON_START;
  1815. buttonInputMap[2] = Controller::Key::BUTTON_B;
  1816. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  1817. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1818. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1819. // Add the controller profile to the map
  1820. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1821. // Prepare variables:
  1822. deviceName = "Microsoft® Microsoft® SideWinder® Game Pad USB";
  1823. buttonInputMap.clear();
  1824. axisInputMap.clear();
  1825. // Map the controller inputs to Controller::Key codes
  1826. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1827. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1828. buttonInputMap[9] = Controller::Key::BUTTON_SELECT;
  1829. buttonInputMap[8] = Controller::Key::BUTTON_START;
  1830. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1831. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  1832. buttonInputMap[5] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1833. buttonInputMap[2] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1834. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  1835. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  1836. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  1837. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  1838. // Add the controller profile to the map
  1839. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1840. // Prepare variables:
  1841. deviceName = "Microsoft® Microsoft® SideWinder® Plug & Play Game Pad";
  1842. buttonInputMap.clear();
  1843. axisInputMap.clear();
  1844. // Map the controller inputs to Controller::Key codes
  1845. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1846. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1847. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1848. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1849. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1850. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1851. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  1852. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  1853. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  1854. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  1855. // Add the controller profile to the map
  1856. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1857. // Prepare variables:
  1858. deviceName = "Microsoft X-Box 360 pad";
  1859. buttonInputMap.clear();
  1860. axisInputMap.clear();
  1861. // Map the controller inputs to Controller::Key codes
  1862. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1863. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1864. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1865. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1866. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1867. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1868. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1869. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1870. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1871. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1872. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1873. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1874. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1875. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1876. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1877. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1878. // Add the controller profile to the map
  1879. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1880. // Prepare variables:
  1881. deviceName = "Microsoft X-Box One Elite pad";
  1882. buttonInputMap.clear();
  1883. axisInputMap.clear();
  1884. // Map the controller inputs to Controller::Key codes
  1885. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1886. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1887. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1888. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1889. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1890. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1891. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1892. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1893. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1894. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1895. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1896. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1897. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1898. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1899. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1900. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1901. // Add the controller profile to the map
  1902. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1903. // Prepare variables:
  1904. deviceName = "Microsoft X-Box One pad";
  1905. buttonInputMap.clear();
  1906. axisInputMap.clear();
  1907. // Map the controller inputs to Controller::Key codes
  1908. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1909. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1910. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1911. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1912. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1913. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1914. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1915. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1916. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1917. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1918. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1919. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1920. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1921. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1922. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1923. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1924. // Add the controller profile to the map
  1925. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1926. // Prepare variables:
  1927. deviceName = "Microsoft X-Box One pad (Firmware 2015)";
  1928. buttonInputMap.clear();
  1929. axisInputMap.clear();
  1930. // Map the controller inputs to Controller::Key codes
  1931. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1932. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1933. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1934. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1935. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1936. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1937. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1938. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1939. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1940. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1941. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1942. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1943. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1944. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1945. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1946. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1947. // Add the controller profile to the map
  1948. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1949. // Prepare variables:
  1950. deviceName = "Microsoft X-Box One S pad";
  1951. buttonInputMap.clear();
  1952. axisInputMap.clear();
  1953. // Map the controller inputs to Controller::Key codes
  1954. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1955. buttonInputMap[2] = Controller::Key::BUTTON_X;
  1956. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1957. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1958. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1959. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  1960. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1961. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1962. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1963. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1964. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1965. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1966. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1967. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1968. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1969. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1970. // Add the controller profile to the map
  1971. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1972. // Prepare variables:
  1973. deviceName = "Microsoft X-Box pad (Japan)";
  1974. buttonInputMap.clear();
  1975. axisInputMap.clear();
  1976. // Map the controller inputs to Controller::Key codes
  1977. buttonInputMap[0] = Controller::Key::BUTTON_A;
  1978. buttonInputMap[3] = Controller::Key::BUTTON_X;
  1979. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  1980. buttonInputMap[7] = Controller::Key::BUTTON_START;
  1981. buttonInputMap[1] = Controller::Key::BUTTON_B;
  1982. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  1983. buttonInputMap[5] = Controller::Key::BUTTON_LEFT_SHOULDER;
  1984. buttonInputMap[2] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  1985. buttonInputMap[8] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  1986. buttonInputMap[9] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  1987. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  1988. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  1989. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  1990. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  1991. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  1992. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  1993. // Add the controller profile to the map
  1994. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  1995. // Prepare variables:
  1996. deviceName = "Microsoft X-Box pad v1 (US)";
  1997. buttonInputMap.clear();
  1998. axisInputMap.clear();
  1999. // Map the controller inputs to Controller::Key codes
  2000. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2001. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2002. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  2003. buttonInputMap[7] = Controller::Key::BUTTON_START;
  2004. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2005. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  2006. buttonInputMap[5] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2007. buttonInputMap[2] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2008. buttonInputMap[8] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2009. buttonInputMap[9] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2010. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  2011. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  2012. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2013. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2014. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  2015. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  2016. // Add the controller profile to the map
  2017. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2018. // Prepare variables:
  2019. deviceName = "Microsoft X-Box pad v2 (US)";
  2020. buttonInputMap.clear();
  2021. axisInputMap.clear();
  2022. // Map the controller inputs to Controller::Key codes
  2023. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2024. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2025. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  2026. buttonInputMap[7] = Controller::Key::BUTTON_START;
  2027. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2028. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  2029. buttonInputMap[5] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2030. buttonInputMap[2] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2031. buttonInputMap[8] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2032. buttonInputMap[9] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2033. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  2034. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  2035. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2036. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2037. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  2038. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  2039. // Add the controller profile to the map
  2040. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2041. // Prepare variables:
  2042. deviceName = "MOCUTE-032_B43-0F1E";
  2043. buttonInputMap.clear();
  2044. axisInputMap.clear();
  2045. // Map the controller inputs to Controller::Key codes
  2046. buttonInputMap[13] = Controller::Key::BUTTON_A;
  2047. buttonInputMap[15] = Controller::Key::BUTTON_X;
  2048. //buttonInputMap[] = Controller::Key::BUTTON_SELECT;
  2049. buttonInputMap[21] = Controller::Key::BUTTON_START;
  2050. buttonInputMap[12] = Controller::Key::BUTTON_B;
  2051. buttonInputMap[14] = Controller::Key::BUTTON_Y;
  2052. buttonInputMap[19] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2053. buttonInputMap[17] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2054. //buttonInputMap[] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2055. //buttonInputMap[] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2056. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2057. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2058. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2059. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2060. //axisInputMap[] = Controller::Key::JOYSTICK_LEFT_X;
  2061. //axisInputMap[] = Controller::Key::JOYSTICK_LEFT_Y;
  2062. //axisInputMap[] = Controller::Key::JOYSTICK_RIGHT_X;
  2063. //axisInputMap[] = Controller::Key::JOYSTICK_RIGHT_Y;
  2064. // Add the controller profile to the map
  2065. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2066. // Prepare variables:
  2067. deviceName = "MOSIC SPEED-LINK Competition Pro ";
  2068. buttonInputMap.clear();
  2069. axisInputMap.clear();
  2070. // Map the controller inputs to Controller::Key codes
  2071. buttonInputMap[0] = Controller::Key::BUTTON_B;
  2072. buttonInputMap[2] = Controller::Key::BUTTON_A;
  2073. buttonInputMap[1] = Controller::Key::BUTTON_START;
  2074. buttonInputMap[3] = Controller::Key::BUTTON_SELECT;
  2075. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2076. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2077. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2078. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2079. // Add the controller profile to the map
  2080. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2081. // Prepare variables:
  2082. deviceName = "MOSIC USB 2A8K GamePad ";
  2083. buttonInputMap.clear();
  2084. axisInputMap.clear();
  2085. // Map the controller inputs to Controller::Key codes
  2086. buttonInputMap[2] = Controller::Key::BUTTON_A;
  2087. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2088. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  2089. buttonInputMap[7] = Controller::Key::BUTTON_START;
  2090. buttonInputMap[3] = Controller::Key::BUTTON_B;
  2091. buttonInputMap[1] = Controller::Key::BUTTON_Y;
  2092. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2093. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2094. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2095. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2096. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2097. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2098. // Add the controller profile to the map
  2099. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2100. // Prepare variables:
  2101. deviceName = "WiseGroup.,Ltd MP-8800 Quad USB Joypad";
  2102. buttonInputMap.clear();
  2103. axisInputMap.clear();
  2104. // Map the controller inputs to Controller::Key codes
  2105. buttonInputMap[2] = Controller::Key::BUTTON_A;
  2106. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2107. buttonInputMap[9] = Controller::Key::BUTTON_SELECT;
  2108. buttonInputMap[8] = Controller::Key::BUTTON_START;
  2109. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2110. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  2111. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2112. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2113. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2114. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2115. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2116. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2117. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2118. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2119. // Add the controller profile to the map
  2120. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2121. // Prepare variables:
  2122. deviceName = "WiseGroup.,Ltd MP-8866 Dual USB Joypad";
  2123. buttonInputMap.clear();
  2124. axisInputMap.clear();
  2125. // Map the controller inputs to Controller::Key codes
  2126. buttonInputMap[2] = Controller::Key::BUTTON_A;
  2127. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2128. buttonInputMap[9] = Controller::Key::BUTTON_SELECT;
  2129. buttonInputMap[8] = Controller::Key::BUTTON_START;
  2130. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2131. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  2132. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2133. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2134. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2135. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2136. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2137. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2138. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2139. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2140. // Add the controller profile to the map
  2141. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2142. // Prepare variables:
  2143. deviceName = "MY-POWER CO.,LTD. 2In1 USB Joystick";
  2144. buttonInputMap.clear();
  2145. axisInputMap.clear();
  2146. // Map the controller inputs to Controller::Key codes
  2147. buttonInputMap[2] = Controller::Key::BUTTON_A;
  2148. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2149. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2150. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2151. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2152. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  2153. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2154. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2155. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2156. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2157. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2158. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2159. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2160. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2161. // Add the controller profile to the map
  2162. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2163. // Prepare variables:
  2164. deviceName = "Nintendo Clovercon - controller1";
  2165. buttonInputMap.clear();
  2166. axisInputMap.clear();
  2167. // Map the controller inputs to Controller::Key codes
  2168. buttonInputMap[0] = Controller::Key::BUTTON_B;
  2169. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2170. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  2171. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2172. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2173. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2174. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2175. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2176. buttonInputMap[11] = Controller::Key::BUTTON_DPAD_LEFT;
  2177. buttonInputMap[12] = Controller::Key::BUTTON_DPAD_RIGHT;
  2178. buttonInputMap[13] = Controller::Key::BUTTON_DPAD_UP;
  2179. buttonInputMap[14] = Controller::Key::BUTTON_DPAD_DOWN;
  2180. // Add the controller profile to the map
  2181. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2182. // Prepare variables:
  2183. deviceName = "Nintendo Clovercon - controller2";
  2184. buttonInputMap.clear();
  2185. axisInputMap.clear();
  2186. // Map the controller inputs to Controller::Key codes
  2187. buttonInputMap[0] = Controller::Key::BUTTON_B;
  2188. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2189. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  2190. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2191. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2192. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2193. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2194. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2195. buttonInputMap[11] = Controller::Key::BUTTON_DPAD_LEFT;
  2196. buttonInputMap[12] = Controller::Key::BUTTON_DPAD_RIGHT;
  2197. buttonInputMap[13] = Controller::Key::BUTTON_DPAD_UP;
  2198. buttonInputMap[14] = Controller::Key::BUTTON_DPAD_DOWN;
  2199. // Add the controller profile to the map
  2200. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2201. // Prepare variables:
  2202. deviceName = "Nintendo Wii Remote Pro Controller";
  2203. buttonInputMap.clear();
  2204. axisInputMap.clear();
  2205. // Map the controller inputs to Controller::Key codes
  2206. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2207. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2208. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2209. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2210. buttonInputMap[13] = Controller::Key::BUTTON_DPAD_UP;
  2211. buttonInputMap[14] = Controller::Key::BUTTON_DPAD_DOWN;
  2212. buttonInputMap[15] = Controller::Key::BUTTON_DPAD_LEFT;
  2213. buttonInputMap[16] = Controller::Key::BUTTON_DPAD_RIGHT;
  2214. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2215. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  2216. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2217. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2218. buttonInputMap[11] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2219. buttonInputMap[12] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2220. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2221. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2222. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2223. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2224. // Add the controller profile to the map
  2225. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2226. // Prepare variables:
  2227. deviceName = "Nintendo Wii Remote";
  2228. buttonInputMap.clear();
  2229. axisInputMap.clear();
  2230. // Map the controller inputs to Controller::Key codes
  2231. buttonInputMap[4] = Controller::Key::BUTTON_A;
  2232. buttonInputMap[7] = Controller::Key::BUTTON_X;
  2233. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  2234. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2235. buttonInputMap[2] = Controller::Key::BUTTON_DPAD_UP;
  2236. buttonInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2237. buttonInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2238. buttonInputMap[3] = Controller::Key::BUTTON_DPAD_RIGHT;
  2239. buttonInputMap[5] = Controller::Key::BUTTON_B;
  2240. buttonInputMap[6] = Controller::Key::BUTTON_Y;
  2241. // Add the controller profile to the map
  2242. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2243. // Prepare variables:
  2244. deviceName = "Nintendo Wii Remote Classic Controller";
  2245. buttonInputMap.clear();
  2246. axisInputMap.clear();
  2247. // Map the controller inputs to Controller::Key codes
  2248. buttonInputMap[5] = Controller::Key::BUTTON_A;
  2249. buttonInputMap[7] = Controller::Key::BUTTON_X;
  2250. buttonInputMap[14] = Controller::Key::BUTTON_SELECT;
  2251. buttonInputMap[13] = Controller::Key::BUTTON_START;
  2252. buttonInputMap[0] = Controller::Key::BUTTON_DPAD_UP;
  2253. buttonInputMap[3] = Controller::Key::BUTTON_DPAD_DOWN;
  2254. buttonInputMap[1] = Controller::Key::BUTTON_DPAD_LEFT;
  2255. buttonInputMap[2] = Controller::Key::BUTTON_DPAD_RIGHT;
  2256. buttonInputMap[4] = Controller::Key::BUTTON_B;
  2257. buttonInputMap[6] = Controller::Key::BUTTON_Y;
  2258. buttonInputMap[9] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2259. buttonInputMap[8] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2260. // Add the controller profile to the map
  2261. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2262. // Prepare variables:
  2263. deviceName = "NVIDIA Corporation NVIDIA Controller v01.04";
  2264. buttonInputMap.clear();
  2265. axisInputMap.clear();
  2266. // Map the controller inputs to Controller::Key codes
  2267. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2268. buttonInputMap[2] = Controller::Key::BUTTON_X;
  2269. buttonInputMap[6] = Controller::Key::BUTTON_START;
  2270. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2271. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2272. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2273. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2274. buttonInputMap[7] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2275. buttonInputMap[8] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2276. axisInputMap[5] = Controller::Key::AXIS_LEFT_TRIGGER;
  2277. axisInputMap[4] = Controller::Key::AXIS_RIGHT_TRIGGER;
  2278. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2279. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2280. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2281. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2282. // Add the controller profile to the map
  2283. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2284. // Prepare variables:
  2285. deviceName = "NVIDIA Corporation NVIDIA Controller v01.03";
  2286. buttonInputMap.clear();
  2287. axisInputMap.clear();
  2288. // Map the controller inputs to Controller::Key codes
  2289. buttonInputMap[4] = Controller::Key::BUTTON_A;
  2290. buttonInputMap[6] = Controller::Key::BUTTON_X;
  2291. buttonInputMap[3] = Controller::Key::BUTTON_SELECT;
  2292. buttonInputMap[11] = Controller::Key::BUTTON_START;
  2293. buttonInputMap[5] = Controller::Key::BUTTON_B;
  2294. buttonInputMap[7] = Controller::Key::BUTTON_Y;
  2295. buttonInputMap[8] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2296. buttonInputMap[9] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2297. buttonInputMap[12] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2298. buttonInputMap[13] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2299. axisInputMap[5] = Controller::Key::AXIS_LEFT_TRIGGER;
  2300. axisInputMap[4] = Controller::Key::AXIS_RIGHT_TRIGGER;
  2301. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2302. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2303. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2304. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2305. // Add the controller profile to the map
  2306. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2307. // Prepare variables:
  2308. deviceName = "OUYA Game Controller";
  2309. buttonInputMap.clear();
  2310. axisInputMap.clear();
  2311. // Map the controller inputs to Controller::Key codes
  2312. buttonInputMap[3] = Controller::Key::BUTTON_A;
  2313. buttonInputMap[4] = Controller::Key::BUTTON_X;
  2314. buttonInputMap[9] = Controller::Key::BUTTON_SELECT;
  2315. buttonInputMap[10] = Controller::Key::BUTTON_START;
  2316. buttonInputMap[11] = Controller::Key::BUTTON_DPAD_UP;
  2317. buttonInputMap[12] = Controller::Key::BUTTON_DPAD_DOWN;
  2318. buttonInputMap[13] = Controller::Key::BUTTON_DPAD_LEFT;
  2319. buttonInputMap[14] = Controller::Key::BUTTON_DPAD_RIGHT;
  2320. buttonInputMap[6] = Controller::Key::BUTTON_B;
  2321. buttonInputMap[5] = Controller::Key::BUTTON_Y;
  2322. buttonInputMap[7] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2323. buttonInputMap[8] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2324. //buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2325. //buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2326. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2327. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2328. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  2329. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  2330. // Add the controller profile to the map
  2331. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2332. // Prepare variables:
  2333. deviceName = "USB,4-Axis,12-Button with POV";
  2334. buttonInputMap.clear();
  2335. axisInputMap.clear();
  2336. // Map the controller inputs to Controller::Key codes
  2337. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2338. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2339. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2340. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2341. buttonInputMap[2] = Controller::Key::BUTTON_B;
  2342. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2343. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2344. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2345. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2346. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2347. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2348. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2349. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2350. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2351. // Add the controller profile to the map
  2352. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2353. // Prepare variables:
  2354. deviceName = "playsega controller";
  2355. buttonInputMap.clear();
  2356. axisInputMap.clear();
  2357. // Map the controller inputs to Controller::Key codes
  2358. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2359. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2360. buttonInputMap[8] = Controller::Key::BUTTON_START;
  2361. buttonInputMap[2] = Controller::Key::BUTTON_B;
  2362. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  2363. buttonInputMap[3] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2364. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2365. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2366. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2367. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2368. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2369. // Add the controller profile to the map
  2370. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2371. // Prepare variables:
  2372. deviceName = "PLAYSTATION(R)3Conteroller-PANHAI";
  2373. buttonInputMap.clear();
  2374. axisInputMap.clear();
  2375. // Map the controller inputs to Controller::Key codes
  2376. buttonInputMap[14] = Controller::Key::BUTTON_A;
  2377. buttonInputMap[15] = Controller::Key::BUTTON_X;
  2378. buttonInputMap[0] = Controller::Key::BUTTON_SELECT;
  2379. buttonInputMap[3] = Controller::Key::BUTTON_START;
  2380. buttonInputMap[4] = Controller::Key::BUTTON_DPAD_UP;
  2381. buttonInputMap[6] = Controller::Key::BUTTON_DPAD_DOWN;
  2382. buttonInputMap[7] = Controller::Key::BUTTON_DPAD_LEFT;
  2383. buttonInputMap[5] = Controller::Key::BUTTON_DPAD_RIGHT;
  2384. buttonInputMap[13] = Controller::Key::BUTTON_B;
  2385. buttonInputMap[12] = Controller::Key::BUTTON_Y;
  2386. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2387. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2388. buttonInputMap[1] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2389. buttonInputMap[2] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2390. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2391. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2392. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2393. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2394. // Add the controller profile to the map
  2395. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2396. // Prepare variables:
  2397. deviceName = "Pro Controller";
  2398. buttonInputMap.clear();
  2399. axisInputMap.clear();
  2400. // Map the controller inputs to Controller::Key codes
  2401. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2402. buttonInputMap[2] = Controller::Key::BUTTON_X;
  2403. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2404. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2405. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2406. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2407. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2408. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2409. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2410. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2411. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2412. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2413. // Add the controller profile to the map
  2414. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2415. // Prepare variables:
  2416. deviceName = "Qnyx Snes Replica";
  2417. buttonInputMap.clear();
  2418. axisInputMap.clear();
  2419. // Map the controller inputs to Controller::Key codes
  2420. buttonInputMap[2] = Controller::Key::BUTTON_A;
  2421. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2422. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2423. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2424. //buttonInputMap[] = Controller::Key::BUTTON_DPAD_UP;
  2425. //buttonInputMap[] = Controller::Key::BUTTON_DPAD_DOWN;
  2426. //buttonInputMap[] = Controller::Key::BUTTON_DPAD_LEFT;
  2427. //buttonInputMap[] = Controller::Key::BUTTON_DPAD_RIGHT;
  2428. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2429. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  2430. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2431. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2432. //buttonInputMap[] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2433. //buttonInputMap[] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2434. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2435. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2436. //axisInputMap[] = Controller::Key::JOYSTICK_RIGHT_X;
  2437. //axisInputMap[] = Controller::Key::JOYSTICK_RIGHT_Y;
  2438. // Add the controller profile to the map
  2439. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2440. // Prepare variables:
  2441. deviceName = "raphnet.net 4nes4snes";
  2442. buttonInputMap.clear();
  2443. axisInputMap.clear();
  2444. // Map the controller inputs to Controller::Key codes
  2445. buttonInputMap[4] = Controller::Key::BUTTON_START;
  2446. buttonInputMap[5] = Controller::Key::BUTTON_SELECT;
  2447. buttonInputMap[6] = Controller::Key::BUTTON_A;
  2448. buttonInputMap[7] = Controller::Key::BUTTON_B;
  2449. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2450. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2451. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2452. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2453. // Add the controller profile to the map
  2454. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2455. // Prepare variables:
  2456. deviceName = "raphnet.net Saturn_Adapter_2.0";
  2457. buttonInputMap.clear();
  2458. axisInputMap.clear();
  2459. // Map the controller inputs to Controller::Key codes
  2460. buttonInputMap[2] = Controller::Key::BUTTON_A;
  2461. buttonInputMap[1] = Controller::Key::BUTTON_X;
  2462. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2463. buttonInputMap[5] = Controller::Key::BUTTON_B;
  2464. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  2465. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2466. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2467. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2468. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2469. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2470. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2471. // Add the controller profile to the map
  2472. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2473. // Prepare variables:
  2474. deviceName = "Razer Serval";
  2475. buttonInputMap.clear();
  2476. axisInputMap.clear();
  2477. // Map the controller inputs to Controller::Key codes
  2478. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2479. buttonInputMap[2] = Controller::Key::BUTTON_X;
  2480. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  2481. buttonInputMap[7] = Controller::Key::BUTTON_START;
  2482. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2483. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2484. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2485. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2486. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2487. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2488. axisInputMap[5] = Controller::Key::AXIS_LEFT_TRIGGER;
  2489. axisInputMap[4] = Controller::Key::AXIS_RIGHT_TRIGGER;
  2490. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2491. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2492. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2493. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2494. // Add the controller profile to the map
  2495. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2496. // Prepare variables:
  2497. deviceName = "Retrolink Nintento 64 Classic USB";
  2498. buttonInputMap.clear();
  2499. axisInputMap.clear();
  2500. // Map the controller inputs to Controller::Key codes
  2501. buttonInputMap[8] = Controller::Key::BUTTON_A;
  2502. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2503. buttonInputMap[6] = Controller::Key::BUTTON_B;
  2504. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2505. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2506. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2507. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2508. // Add the controller profile to the map
  2509. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2510. // Prepare variables:
  2511. deviceName = "retronicdesign.com Sega Joypad Adapter v3.0";
  2512. buttonInputMap.clear();
  2513. axisInputMap.clear();
  2514. // Map the controller inputs to Controller::Key codes
  2515. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2516. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2517. buttonInputMap[3] = Controller::Key::BUTTON_START;
  2518. buttonInputMap[2] = Controller::Key::BUTTON_B;
  2519. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2520. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2521. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2522. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2523. // Add the controller profile to the map
  2524. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2525. // Prepare variables:
  2526. deviceName = "RetroUSB.com RetroPad";
  2527. buttonInputMap.clear();
  2528. axisInputMap.clear();
  2529. // Map the controller inputs to Controller::Key codes
  2530. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2531. buttonInputMap[2] = Controller::Key::BUTTON_SELECT;
  2532. buttonInputMap[3] = Controller::Key::BUTTON_START;
  2533. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2534. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2535. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2536. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2537. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2538. // Add the controller profile to the map
  2539. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2540. // Prepare variables:
  2541. deviceName = "RetroUSB.com SNES RetroPort";
  2542. buttonInputMap.clear();
  2543. axisInputMap.clear();
  2544. // Map the controller inputs to Controller::Key codes
  2545. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2546. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2547. buttonInputMap[2] = Controller::Key::BUTTON_SELECT;
  2548. buttonInputMap[3] = Controller::Key::BUTTON_START;
  2549. buttonInputMap[5] = Controller::Key::BUTTON_B;
  2550. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  2551. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2552. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2553. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2554. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2555. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2556. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2557. // Add the controller profile to the map
  2558. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2559. // Prepare variables:
  2560. deviceName = "Rock Candy Gamepad for PS3";
  2561. buttonInputMap.clear();
  2562. axisInputMap.clear();
  2563. // Map the controller inputs to Controller::Key codes
  2564. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2565. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2566. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2567. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2568. buttonInputMap[2] = Controller::Key::BUTTON_B;
  2569. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2570. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2571. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2572. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2573. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2574. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2575. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2576. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2577. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2578. // Add the controller profile to the map
  2579. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2580. // Prepare variables:
  2581. deviceName = "Saitek Cyborg Rumble Pad";
  2582. buttonInputMap.clear();
  2583. axisInputMap.clear();
  2584. // Map the controller inputs to Controller::Key codes
  2585. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2586. buttonInputMap[2] = Controller::Key::BUTTON_X;
  2587. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  2588. buttonInputMap[7] = Controller::Key::BUTTON_START;
  2589. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2590. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2591. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2592. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2593. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  2594. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  2595. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2596. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2597. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  2598. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  2599. // Add the controller profile to the map
  2600. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2601. // Prepare variables:
  2602. deviceName = "SAITEK P880";
  2603. buttonInputMap.clear();
  2604. axisInputMap.clear();
  2605. // Map the controller inputs to Controller::Key codes
  2606. buttonInputMap[2] = Controller::Key::BUTTON_A;
  2607. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2608. buttonInputMap[4] = Controller::Key::BUTTON_SELECT;
  2609. buttonInputMap[5] = Controller::Key::BUTTON_START;
  2610. buttonInputMap[3] = Controller::Key::BUTTON_B;
  2611. buttonInputMap[1] = Controller::Key::BUTTON_Y;
  2612. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2613. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2614. buttonInputMap[8] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2615. buttonInputMap[9] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2616. axisInputMap[5] = Controller::Key::BUTTON_DPAD_UP;
  2617. //axisInputMap[5] = Controller::Key::BUTTON_DPAD_DOWN;
  2618. axisInputMap[4] = Controller::Key::BUTTON_DPAD_LEFT;
  2619. //axisInputMap[4] = Controller::Key::BUTTON_DPAD_RIGHT;
  2620. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2621. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2622. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  2623. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  2624. // Add the controller profile to the map
  2625. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2626. // Prepare variables:
  2627. deviceName = "Saitek P990 Dual Analog Pad";
  2628. buttonInputMap.clear();
  2629. axisInputMap.clear();
  2630. // Map the controller inputs to Controller::Key codes
  2631. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2632. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2633. buttonInputMap[9] = Controller::Key::BUTTON_SELECT;
  2634. buttonInputMap[8] = Controller::Key::BUTTON_START;
  2635. buttonInputMap[2] = Controller::Key::BUTTON_B;
  2636. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2637. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2638. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2639. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2640. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2641. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2642. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2643. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2644. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2645. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  2646. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  2647. // Add the controller profile to the map
  2648. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2649. // Prepare variables:
  2650. deviceName = "Saitek PLC Saitek P2600 Rumble Force Pad";
  2651. buttonInputMap.clear();
  2652. axisInputMap.clear();
  2653. // Map the controller inputs to Controller::Key codes
  2654. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2655. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2656. buttonInputMap[9] = Controller::Key::BUTTON_SELECT;
  2657. buttonInputMap[8] = Controller::Key::BUTTON_START;
  2658. buttonInputMap[2] = Controller::Key::BUTTON_B;
  2659. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2660. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2661. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2662. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2663. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2664. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  2665. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  2666. // Add the controller profile to the map
  2667. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2668. // Prepare variables:
  2669. deviceName = "Saitek Saitek X52 Flight Control System";
  2670. buttonInputMap.clear();
  2671. axisInputMap.clear();
  2672. // Map the controller inputs to Controller::Key codes
  2673. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2674. buttonInputMap[2] = Controller::Key::BUTTON_X;
  2675. buttonInputMap[30] = Controller::Key::BUTTON_SELECT;
  2676. buttonInputMap[6] = Controller::Key::BUTTON_START;
  2677. buttonInputMap[0] = Controller::Key::BUTTON_B;
  2678. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2679. buttonInputMap[18] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2680. buttonInputMap[16] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2681. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2682. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2683. axisInputMap[5] = Controller::Key::JOYSTICK_RIGHT_X;
  2684. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  2685. // Add the controller profile to the map
  2686. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2687. // Prepare variables:
  2688. deviceName = "Samsung Game Pad EI-GP20";
  2689. buttonInputMap.clear();
  2690. axisInputMap.clear();
  2691. // Map the controller inputs to Controller::Key codes
  2692. buttonInputMap[11] = Controller::Key::BUTTON_A;
  2693. buttonInputMap[14] = Controller::Key::BUTTON_X;
  2694. buttonInputMap[21] = Controller::Key::BUTTON_SELECT;
  2695. buttonInputMap[22] = Controller::Key::BUTTON_START;
  2696. buttonInputMap[12] = Controller::Key::BUTTON_B;
  2697. buttonInputMap[15] = Controller::Key::BUTTON_Y;
  2698. buttonInputMap[17] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2699. buttonInputMap[18] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2700. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2701. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2702. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2703. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2704. // Add the controller profile to the map
  2705. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2706. // Prepare variables:
  2707. deviceName = "CYPRESS USB Gamepad";
  2708. buttonInputMap.clear();
  2709. axisInputMap.clear();
  2710. // Map the controller inputs to Controller::Key codes
  2711. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2712. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2713. buttonInputMap[8] = Controller::Key::BUTTON_START;
  2714. buttonInputMap[2] = Controller::Key::BUTTON_B;
  2715. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2716. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2717. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2718. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2719. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2720. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2721. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2722. // Add the controller profile to the map
  2723. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2724. // Prepare variables:
  2725. deviceName = "Smartjoy Family Super Smartjoy 2";
  2726. buttonInputMap.clear();
  2727. axisInputMap.clear();
  2728. // Map the controller inputs to Controller::Key codes
  2729. buttonInputMap[2] = Controller::Key::BUTTON_A;
  2730. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2731. buttonInputMap[4] = Controller::Key::BUTTON_SELECT;
  2732. buttonInputMap[5] = Controller::Key::BUTTON_START;
  2733. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2734. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  2735. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2736. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2737. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2738. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2739. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2740. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2741. // Add the controller profile to the map
  2742. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2743. // Prepare variables:
  2744. deviceName = "SNES-to-Gamepad Device";
  2745. buttonInputMap.clear();
  2746. axisInputMap.clear();
  2747. // Map the controller inputs to Controller::Key codes
  2748. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2749. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2750. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  2751. buttonInputMap[7] = Controller::Key::BUTTON_START;
  2752. buttonInputMap[0] = Controller::Key::BUTTON_B;
  2753. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  2754. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2755. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2756. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2757. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2758. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2759. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2760. // Add the controller profile to the map
  2761. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2762. // Prepare variables:
  2763. deviceName = "PLAYSTATION(R)3 Controller";
  2764. buttonInputMap.clear();
  2765. axisInputMap.clear();
  2766. // Map the controller inputs to Controller::Key codes
  2767. buttonInputMap[14] = Controller::Key::BUTTON_A;
  2768. buttonInputMap[15] = Controller::Key::BUTTON_X;
  2769. buttonInputMap[0] = Controller::Key::BUTTON_SELECT;
  2770. buttonInputMap[3] = Controller::Key::BUTTON_START;
  2771. buttonInputMap[4] = Controller::Key::BUTTON_DPAD_UP;
  2772. buttonInputMap[6] = Controller::Key::BUTTON_DPAD_DOWN;
  2773. buttonInputMap[7] = Controller::Key::BUTTON_DPAD_LEFT;
  2774. buttonInputMap[5] = Controller::Key::BUTTON_DPAD_RIGHT;
  2775. buttonInputMap[13] = Controller::Key::BUTTON_B;
  2776. buttonInputMap[12] = Controller::Key::BUTTON_Y;
  2777. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2778. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2779. buttonInputMap[1] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2780. buttonInputMap[2] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2781. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2782. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2783. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2784. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2785. // Add the controller profile to the map
  2786. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2787. // Prepare variables:
  2788. deviceName = "Sony Computer Entertainment Wireless Controller";
  2789. buttonInputMap.clear();
  2790. axisInputMap.clear();
  2791. // Map the controller inputs to Controller::Key codes
  2792. buttonInputMap[14] = Controller::Key::BUTTON_A;
  2793. buttonInputMap[15] = Controller::Key::BUTTON_X;
  2794. buttonInputMap[0] = Controller::Key::BUTTON_SELECT;
  2795. buttonInputMap[3] = Controller::Key::BUTTON_START;
  2796. buttonInputMap[4] = Controller::Key::BUTTON_DPAD_UP;
  2797. buttonInputMap[6] = Controller::Key::BUTTON_DPAD_DOWN;
  2798. buttonInputMap[7] = Controller::Key::BUTTON_DPAD_LEFT;
  2799. buttonInputMap[5] = Controller::Key::BUTTON_DPAD_RIGHT;
  2800. buttonInputMap[13] = Controller::Key::BUTTON_B;
  2801. buttonInputMap[12] = Controller::Key::BUTTON_Y;
  2802. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2803. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2804. buttonInputMap[1] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2805. buttonInputMap[2] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2806. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2807. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2808. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2809. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2810. // Add the controller profile to the map
  2811. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2812. // Prepare variables:
  2813. deviceName = "Sony PLAYSTATION(R)3 Controller";
  2814. buttonInputMap.clear();
  2815. axisInputMap.clear();
  2816. // Map the controller inputs to Controller::Key codes
  2817. buttonInputMap[14] = Controller::Key::BUTTON_A;
  2818. buttonInputMap[15] = Controller::Key::BUTTON_X;
  2819. buttonInputMap[0] = Controller::Key::BUTTON_SELECT;
  2820. buttonInputMap[3] = Controller::Key::BUTTON_START;
  2821. buttonInputMap[4] = Controller::Key::BUTTON_DPAD_UP;
  2822. buttonInputMap[6] = Controller::Key::BUTTON_DPAD_DOWN;
  2823. buttonInputMap[7] = Controller::Key::BUTTON_DPAD_LEFT;
  2824. buttonInputMap[5] = Controller::Key::BUTTON_DPAD_RIGHT;
  2825. buttonInputMap[13] = Controller::Key::BUTTON_B;
  2826. buttonInputMap[12] = Controller::Key::BUTTON_Y;
  2827. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2828. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2829. buttonInputMap[1] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2830. buttonInputMap[2] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2831. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2832. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2833. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2834. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2835. // Add the controller profile to the map
  2836. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2837. // Prepare variables:
  2838. deviceName = "Wireless Controller";
  2839. buttonInputMap.clear();
  2840. axisInputMap.clear();
  2841. // Map the controller inputs to Controller::Key codes
  2842. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2843. buttonInputMap[3] = Controller::Key::BUTTON_X;
  2844. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2845. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2846. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2847. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  2848. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2849. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2850. buttonInputMap[11] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2851. buttonInputMap[12] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2852. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2853. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2854. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  2855. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  2856. // Add the controller profile to the map
  2857. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2858. // Prepare variables:
  2859. deviceName = "Sony Interactive Entertainment Wireless Controller";
  2860. buttonInputMap.clear();
  2861. axisInputMap.clear();
  2862. // Map the controller inputs to Controller::Key codes
  2863. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2864. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2865. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2866. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2867. buttonInputMap[2] = Controller::Key::BUTTON_B;
  2868. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2869. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2870. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2871. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2872. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2873. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2874. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2875. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2876. axisInputMap[5] = Controller::Key::JOYSTICK_RIGHT_Y;
  2877. // Add the controller profile to the map
  2878. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2879. // Prepare variables:
  2880. deviceName = "Steam Controller";
  2881. buttonInputMap.clear();
  2882. axisInputMap.clear();
  2883. // Map the controller inputs to Controller::Key codes
  2884. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2885. buttonInputMap[2] = Controller::Key::BUTTON_X;
  2886. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  2887. buttonInputMap[7] = Controller::Key::BUTTON_START;
  2888. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2889. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2890. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2891. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2892. //buttonInputMap[0] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2893. //buttonInputMap[2] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2894. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2895. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2896. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2897. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2898. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  2899. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  2900. axisInputMap[6] = Controller::Key::JOYSTICK_LEFT_X;
  2901. axisInputMap[7] = Controller::Key::JOYSTICK_LEFT_Y;
  2902. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  2903. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  2904. // Add the controller profile to the map
  2905. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2906. // Prepare variables:
  2907. deviceName = "Street Fighter IV FightPad";
  2908. buttonInputMap.clear();
  2909. axisInputMap.clear();
  2910. // Map the controller inputs to Controller::Key codes
  2911. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2912. buttonInputMap[2] = Controller::Key::BUTTON_X;
  2913. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  2914. buttonInputMap[7] = Controller::Key::BUTTON_START;
  2915. buttonInputMap[1] = Controller::Key::BUTTON_B;
  2916. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2917. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2918. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  2919. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  2920. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  2921. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  2922. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  2923. //axisInputMap[DPad Up] = Controller::Key::BUTTON_DPAD_UP;
  2924. //axisInputMap[DPad Down] = Controller::Key::BUTTON_DPAD_DOWN;
  2925. //axisInputMap[DPad Left] = Controller::Key::BUTTON_DPAD_LEFT;
  2926. //axisInputMap[DPad Right] = Controller::Key::BUTTON_DPAD_RIGHT;
  2927. //axisInputMap[Right Trigger] = Controller::Key::AXIS_RIGHT_TRIGGER;
  2928. // Add the controller profile to the map
  2929. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2930. // Prepare variables:
  2931. deviceName = "Thrustmaster Dual Trigger 3-in-1";
  2932. buttonInputMap.clear();
  2933. axisInputMap.clear();
  2934. // Map the controller inputs to Controller::Key codes
  2935. buttonInputMap[1] = Controller::Key::BUTTON_A;
  2936. buttonInputMap[0] = Controller::Key::BUTTON_X;
  2937. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2938. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2939. buttonInputMap[2] = Controller::Key::BUTTON_B;
  2940. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2941. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2942. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2943. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2944. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2945. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2946. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2947. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2948. axisInputMap[5] = Controller::Key::JOYSTICK_RIGHT_Y;
  2949. // Add the controller profile to the map
  2950. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2951. // Prepare variables:
  2952. deviceName = "THRUSTMASTER FireStorm Dual Analog 2";
  2953. buttonInputMap.clear();
  2954. axisInputMap.clear();
  2955. // Map the controller inputs to Controller::Key codes
  2956. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2957. buttonInputMap[1] = Controller::Key::BUTTON_X;
  2958. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2959. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2960. buttonInputMap[2] = Controller::Key::BUTTON_B;
  2961. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2962. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2963. buttonInputMap[6] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2964. //buttonInputMap[8] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2965. //buttonInputMap[9] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2966. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2967. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2968. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2969. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2970. // Add the controller profile to the map
  2971. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2972. // Prepare variables:
  2973. deviceName = "THRUSTMASTER FireStorm Dual Power 2 ";
  2974. buttonInputMap.clear();
  2975. axisInputMap.clear();
  2976. // Map the controller inputs to Controller::Key codes
  2977. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2978. buttonInputMap[1] = Controller::Key::BUTTON_X;
  2979. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  2980. buttonInputMap[9] = Controller::Key::BUTTON_START;
  2981. buttonInputMap[2] = Controller::Key::BUTTON_B;
  2982. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  2983. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  2984. buttonInputMap[6] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  2985. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  2986. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  2987. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  2988. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  2989. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  2990. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  2991. // Add the controller profile to the map
  2992. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  2993. // Prepare variables:
  2994. deviceName = "Thrustmaster T Mini";
  2995. buttonInputMap.clear();
  2996. axisInputMap.clear();
  2997. // Map the controller inputs to Controller::Key codes
  2998. buttonInputMap[0] = Controller::Key::BUTTON_A;
  2999. buttonInputMap[1] = Controller::Key::BUTTON_X;
  3000. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3001. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3002. buttonInputMap[2] = Controller::Key::BUTTON_B;
  3003. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  3004. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3005. buttonInputMap[6] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3006. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3007. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3008. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3009. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3010. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3011. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  3012. // Add the controller profile to the map
  3013. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3014. // Prepare variables:
  3015. deviceName = "Thrustmaster T Mini Wireless";
  3016. buttonInputMap.clear();
  3017. axisInputMap.clear();
  3018. // Map the controller inputs to Controller::Key codes
  3019. buttonInputMap[1] = Controller::Key::BUTTON_A;
  3020. buttonInputMap[0] = Controller::Key::BUTTON_X;
  3021. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3022. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3023. buttonInputMap[2] = Controller::Key::BUTTON_B;
  3024. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  3025. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3026. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3027. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3028. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3029. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3030. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3031. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3032. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  3033. // Add the controller profile to the map
  3034. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3035. // Prepare variables:
  3036. deviceName = "THRUSTMASTER Top Gun Fox 2 Pro ";
  3037. buttonInputMap.clear();
  3038. axisInputMap.clear();
  3039. // Map the controller inputs to Controller::Key codes
  3040. buttonInputMap[1] = Controller::Key::BUTTON_A;
  3041. buttonInputMap[6] = Controller::Key::BUTTON_X;
  3042. buttonInputMap[0] = Controller::Key::BUTTON_B;
  3043. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  3044. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3045. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3046. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3047. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3048. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3049. // Add the controller profile to the map
  3050. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3051. // Prepare variables:
  3052. deviceName = "PC Game Controller ";
  3053. buttonInputMap.clear();
  3054. axisInputMap.clear();
  3055. // Map the controller inputs to Controller::Key codes
  3056. buttonInputMap[4] = Controller::Key::BUTTON_A;
  3057. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3058. buttonInputMap[5] = Controller::Key::BUTTON_B;
  3059. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3060. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3061. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3062. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3063. // Add the controller profile to the map
  3064. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3065. // Prepare variables:
  3066. deviceName = "TOMMO NEOGEOX Arcade Stick";
  3067. buttonInputMap.clear();
  3068. axisInputMap.clear();
  3069. // Map the controller inputs to Controller::Key codes
  3070. buttonInputMap[0] = Controller::Key::BUTTON_A;
  3071. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3072. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3073. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3074. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3075. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  3076. // Add the controller profile to the map
  3077. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3078. // Prepare variables:
  3079. deviceName = "Toodles 2008 ChImp PC/PS3 Controller";
  3080. buttonInputMap.clear();
  3081. axisInputMap.clear();
  3082. // Map the controller inputs to Controller::Key codes
  3083. buttonInputMap[1] = Controller::Key::BUTTON_A;
  3084. buttonInputMap[0] = Controller::Key::BUTTON_X;
  3085. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3086. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3087. buttonInputMap[2] = Controller::Key::BUTTON_B;
  3088. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  3089. buttonInputMap[5] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3090. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3091. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  3092. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  3093. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  3094. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  3095. // Add the controller profile to the map
  3096. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3097. // Prepare variables:
  3098. deviceName = "Twin USB Joystick";
  3099. buttonInputMap.clear();
  3100. axisInputMap.clear();
  3101. // Map the controller inputs to Controller::Key codes
  3102. buttonInputMap[2] = Controller::Key::BUTTON_A;
  3103. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3104. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3105. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3106. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3107. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  3108. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3109. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3110. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3111. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3112. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  3113. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  3114. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  3115. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  3116. //axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3117. //axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3118. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  3119. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  3120. // Add the controller profile to the map
  3121. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3122. // Prepare variables:
  3123. deviceName = "USB,2-axis 8-button gamepad ";
  3124. buttonInputMap.clear();
  3125. axisInputMap.clear();
  3126. // Map the controller inputs to Controller::Key codes
  3127. buttonInputMap[1] = Controller::Key::BUTTON_A;
  3128. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3129. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  3130. buttonInputMap[7] = Controller::Key::BUTTON_START;
  3131. buttonInputMap[0] = Controller::Key::BUTTON_B;
  3132. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  3133. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3134. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3135. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  3136. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  3137. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  3138. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  3139. // Add the controller profile to the map
  3140. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3141. // Prepare variables:
  3142. deviceName = "USB gamepad ";
  3143. buttonInputMap.clear();
  3144. axisInputMap.clear();
  3145. // Map the controller inputs to Controller::Key codes
  3146. buttonInputMap[2] = Controller::Key::BUTTON_A;
  3147. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3148. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3149. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3150. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3151. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  3152. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3153. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3154. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  3155. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  3156. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  3157. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  3158. // Add the controller profile to the map
  3159. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3160. // Prepare variables:
  3161. deviceName = "USB Gamepad ";
  3162. buttonInputMap.clear();
  3163. axisInputMap.clear();
  3164. // Map the controller inputs to Controller::Key codes
  3165. buttonInputMap[2] = Controller::Key::BUTTON_A;
  3166. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3167. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3168. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3169. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3170. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  3171. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3172. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3173. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  3174. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  3175. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  3176. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  3177. // Add the controller profile to the map
  3178. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3179. // Prepare variables:
  3180. deviceName = "usb gamepad ";
  3181. buttonInputMap.clear();
  3182. axisInputMap.clear();
  3183. // Map the controller inputs to Controller::Key codes
  3184. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3185. buttonInputMap[2] = Controller::Key::BUTTON_A;
  3186. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  3187. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3188. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3189. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3190. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3191. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3192. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  3193. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  3194. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  3195. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  3196. // Add the controller profile to the map
  3197. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3198. // Prepare variables:
  3199. deviceName = "USB Joystick ";
  3200. buttonInputMap.clear();
  3201. axisInputMap.clear();
  3202. // Map the controller inputs to Controller::Key codes
  3203. buttonInputMap[2] = Controller::Key::BUTTON_A;
  3204. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3205. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3206. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3207. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3208. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  3209. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3210. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3211. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3212. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3213. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  3214. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  3215. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  3216. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  3217. //axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3218. //axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3219. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  3220. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  3221. // Add the controller profile to the map
  3222. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3223. // Prepare variables:
  3224. deviceName = "USB Vibration Joystick";
  3225. buttonInputMap.clear();
  3226. axisInputMap.clear();
  3227. // Map the controller inputs to Controller::Key codes
  3228. buttonInputMap[2] = Controller::Key::BUTTON_A;
  3229. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3230. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3231. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3232. buttonInputMap[12] = Controller::Key::BUTTON_DPAD_UP;
  3233. buttonInputMap[14] = Controller::Key::BUTTON_DPAD_DOWN;
  3234. buttonInputMap[15] = Controller::Key::BUTTON_DPAD_LEFT;
  3235. buttonInputMap[13] = Controller::Key::BUTTON_DPAD_RIGHT;
  3236. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3237. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  3238. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3239. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3240. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3241. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3242. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3243. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3244. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  3245. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  3246. // Add the controller profile to the map
  3247. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3248. // Prepare variables:
  3249. deviceName = "Venom Limited PS3/PS4 Arcade Joystick";
  3250. buttonInputMap.clear();
  3251. axisInputMap.clear();
  3252. // Map the controller inputs to Controller::Key codes
  3253. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3254. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3255. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3256. buttonInputMap[2] = Controller::Key::BUTTON_B;
  3257. buttonInputMap[1] = Controller::Key::BUTTON_A;
  3258. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  3259. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3260. buttonInputMap[0] = Controller::Key::BUTTON_X;
  3261. // Add the controller profile to the map
  3262. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3263. // Prepare variables:
  3264. deviceName = "Wii U GameCube Adapter Port 1";
  3265. buttonInputMap.clear();
  3266. axisInputMap.clear();
  3267. // Map the controller inputs to Controller::Key codes
  3268. buttonInputMap[3] = Controller::Key::BUTTON_A;
  3269. buttonInputMap[2] = Controller::Key::BUTTON_X;
  3270. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  3271. buttonInputMap[7] = Controller::Key::BUTTON_START;
  3272. buttonInputMap[8] = Controller::Key::BUTTON_DPAD_UP;
  3273. buttonInputMap[9] = Controller::Key::BUTTON_DPAD_DOWN;
  3274. buttonInputMap[10] = Controller::Key::BUTTON_DPAD_LEFT;
  3275. buttonInputMap[11] = Controller::Key::BUTTON_DPAD_RIGHT;
  3276. buttonInputMap[0] = Controller::Key::BUTTON_B;
  3277. buttonInputMap[1] = Controller::Key::BUTTON_Y;
  3278. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3279. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3280. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  3281. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  3282. // Add the controller profile to the map
  3283. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3284. // Prepare variables:
  3285. deviceName = "WiseGroup.,Ltd SmartJoy Dual PLUS Adapter";
  3286. buttonInputMap.clear();
  3287. axisInputMap.clear();
  3288. // Map the controller inputs to Controller::Key codes
  3289. buttonInputMap[2] = Controller::Key::BUTTON_A;
  3290. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3291. buttonInputMap[9] = Controller::Key::BUTTON_SELECT;
  3292. buttonInputMap[8] = Controller::Key::BUTTON_START;
  3293. buttonInputMap[12] = Controller::Key::BUTTON_DPAD_UP;
  3294. buttonInputMap[14] = Controller::Key::BUTTON_DPAD_DOWN;
  3295. buttonInputMap[15] = Controller::Key::BUTTON_DPAD_LEFT;
  3296. buttonInputMap[13] = Controller::Key::BUTTON_DPAD_RIGHT;
  3297. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3298. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  3299. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3300. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3301. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3302. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3303. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  3304. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  3305. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  3306. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  3307. //axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3308. //axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3309. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3310. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  3311. // Add the controller profile to the map
  3312. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3313. // Prepare variables:
  3314. deviceName = "Xarcade-to-Gamepad Device";
  3315. buttonInputMap.clear();
  3316. axisInputMap.clear();
  3317. // Map the controller inputs to Controller::Key codes
  3318. buttonInputMap[3] = Controller::Key::BUTTON_A;
  3319. buttonInputMap[0] = Controller::Key::BUTTON_X;
  3320. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3321. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3322. buttonInputMap[4] = Controller::Key::BUTTON_B;
  3323. buttonInputMap[1] = Controller::Key::BUTTON_Y;
  3324. buttonInputMap[2] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3325. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3326. axisInputMap[1] = Controller::Key::BUTTON_DPAD_UP;
  3327. //axisInputMap[1] = Controller::Key::BUTTON_DPAD_DOWN;
  3328. axisInputMap[0] = Controller::Key::BUTTON_DPAD_LEFT;
  3329. //axisInputMap[0] = Controller::Key::BUTTON_DPAD_RIGHT;
  3330. // Add the controller profile to the map
  3331. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3332. // Prepare variables:
  3333. deviceName = "Xbox 360 Wireless Receiver";
  3334. buttonInputMap.clear();
  3335. axisInputMap.clear();
  3336. // Map the controller inputs to Controller::Key codes
  3337. buttonInputMap[0] = Controller::Key::BUTTON_A;
  3338. buttonInputMap[2] = Controller::Key::BUTTON_X;
  3339. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  3340. buttonInputMap[7] = Controller::Key::BUTTON_START;
  3341. buttonInputMap[13] = Controller::Key::BUTTON_DPAD_UP;
  3342. buttonInputMap[14] = Controller::Key::BUTTON_DPAD_DOWN;
  3343. buttonInputMap[11] = Controller::Key::BUTTON_DPAD_LEFT;
  3344. buttonInputMap[12] = Controller::Key::BUTTON_DPAD_RIGHT;
  3345. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3346. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  3347. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3348. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3349. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3350. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3351. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  3352. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  3353. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3354. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3355. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  3356. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  3357. // Add the controller profile to the map
  3358. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3359. // Prepare variables:
  3360. deviceName = "Xbox 360 Wireless Receiver (XBOX)";
  3361. buttonInputMap.clear();
  3362. axisInputMap.clear();
  3363. // Map the controller inputs to Controller::Key codes
  3364. buttonInputMap[0] = Controller::Key::BUTTON_A;
  3365. buttonInputMap[2] = Controller::Key::BUTTON_X;
  3366. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  3367. buttonInputMap[7] = Controller::Key::BUTTON_START;
  3368. buttonInputMap[13] = Controller::Key::BUTTON_DPAD_UP;
  3369. buttonInputMap[14] = Controller::Key::BUTTON_DPAD_DOWN;
  3370. buttonInputMap[11] = Controller::Key::BUTTON_DPAD_LEFT;
  3371. buttonInputMap[12] = Controller::Key::BUTTON_DPAD_RIGHT;
  3372. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3373. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  3374. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3375. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3376. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3377. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3378. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  3379. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  3380. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3381. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3382. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  3383. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  3384. // Add the controller profile to the map
  3385. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3386. // Prepare variables:
  3387. deviceName = "Wireless Xbox 360 Controller";
  3388. buttonInputMap.clear();
  3389. axisInputMap.clear();
  3390. // Map the controller inputs to Controller::Key codes
  3391. buttonInputMap[0] = Controller::Key::BUTTON_A;
  3392. buttonInputMap[2] = Controller::Key::BUTTON_X;
  3393. buttonInputMap[6] = Controller::Key::BUTTON_SELECT;
  3394. buttonInputMap[7] = Controller::Key::BUTTON_START;
  3395. buttonInputMap[13] = Controller::Key::BUTTON_DPAD_UP;
  3396. buttonInputMap[14] = Controller::Key::BUTTON_DPAD_DOWN;
  3397. buttonInputMap[11] = Controller::Key::BUTTON_DPAD_LEFT;
  3398. buttonInputMap[12] = Controller::Key::BUTTON_DPAD_RIGHT;
  3399. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3400. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  3401. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3402. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3403. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3404. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3405. axisInputMap[2] = Controller::Key::AXIS_LEFT_TRIGGER;
  3406. axisInputMap[5] = Controller::Key::AXIS_RIGHT_TRIGGER;
  3407. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3408. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3409. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  3410. axisInputMap[4] = Controller::Key::JOYSTICK_RIGHT_Y;
  3411. // Add the controller profile to the map
  3412. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3413. // Prepare variables:
  3414. deviceName = "Xbox Gamepad (userspace driver)";
  3415. buttonInputMap.clear();
  3416. axisInputMap.clear();
  3417. // Map the controller inputs to Controller::Key codes
  3418. buttonInputMap[0] = Controller::Key::BUTTON_A;
  3419. buttonInputMap[2] = Controller::Key::BUTTON_X;
  3420. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3421. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3422. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3423. buttonInputMap[3] = Controller::Key::BUTTON_Y;
  3424. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3425. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3426. buttonInputMap[11] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3427. buttonInputMap[12] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3428. axisInputMap[5] = Controller::Key::BUTTON_DPAD_UP;
  3429. //axisInputMap[5] = Controller::Key::BUTTON_DPAD_DOWN;
  3430. axisInputMap[4] = Controller::Key::BUTTON_DPAD_LEFT;
  3431. //axisInputMap[4] = Controller::Key::BUTTON_DPAD_RIGHT;
  3432. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3433. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3434. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3435. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  3436. // Add the controller profile to the map
  3437. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3438. // Prepare variables:
  3439. deviceName = "SL-6566";
  3440. buttonInputMap.clear();
  3441. axisInputMap.clear();
  3442. // Map the controller inputs to Controller::Key codes
  3443. buttonInputMap[1] = Controller::Key::BUTTON_A;
  3444. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3445. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3446. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3447. buttonInputMap[0] = Controller::Key::BUTTON_B;
  3448. buttonInputMap[2] = Controller::Key::BUTTON_Y;
  3449. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3450. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3451. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3452. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3453. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3454. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3455. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3456. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  3457. // Add the controller profile to the map
  3458. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3459. // Prepare variables:
  3460. deviceName = "Gamesir-G3s";
  3461. buttonInputMap.clear();
  3462. axisInputMap.clear();
  3463. // Map the controller inputs to Controller::Key codes
  3464. buttonInputMap[0] = Controller::Key::BUTTON_A;
  3465. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3466. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  3467. buttonInputMap[11] = Controller::Key::BUTTON_START;
  3468. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3469. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  3470. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3471. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3472. buttonInputMap[13] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3473. buttonInputMap[14] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3474. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3475. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3476. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3477. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  3478. // Add the controller profile to the map
  3479. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3480. // Prepare variables:
  3481. deviceName = "xiaoji Gamesir-G3s 1.02";
  3482. buttonInputMap.clear();
  3483. axisInputMap.clear();
  3484. // Map the controller inputs to Controller::Key codes
  3485. buttonInputMap[0] = Controller::Key::BUTTON_A;
  3486. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3487. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  3488. buttonInputMap[11] = Controller::Key::BUTTON_START;
  3489. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3490. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  3491. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3492. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3493. buttonInputMap[13] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3494. buttonInputMap[14] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3495. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3496. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3497. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3498. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  3499. // Add the controller profile to the map
  3500. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3501. // Prepare variables:
  3502. deviceName = "Gamesir-G3v";
  3503. buttonInputMap.clear();
  3504. axisInputMap.clear();
  3505. // Map the controller inputs to Controller::Key codes
  3506. buttonInputMap[0] = Controller::Key::BUTTON_A;
  3507. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3508. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  3509. buttonInputMap[11] = Controller::Key::BUTTON_START;
  3510. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3511. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  3512. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3513. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3514. buttonInputMap[13] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3515. buttonInputMap[14] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3516. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3517. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3518. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3519. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  3520. // Add the controller profile to the map
  3521. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3522. // Prepare variables:
  3523. deviceName = "xiaoji Gamesir-G3v 1.00";
  3524. buttonInputMap.clear();
  3525. axisInputMap.clear();
  3526. // Map the controller inputs to Controller::Key codes
  3527. buttonInputMap[0] = Controller::Key::BUTTON_A;
  3528. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3529. buttonInputMap[10] = Controller::Key::BUTTON_SELECT;
  3530. buttonInputMap[11] = Controller::Key::BUTTON_START;
  3531. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3532. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  3533. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3534. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3535. buttonInputMap[13] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3536. buttonInputMap[14] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3537. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3538. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3539. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3540. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  3541. // Add the controller profile to the map
  3542. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3543. // Prepare variables:
  3544. deviceName = "小米蓝牙手柄";
  3545. buttonInputMap.clear();
  3546. axisInputMap.clear();
  3547. // Map the controller inputs to Controller::Key codes
  3548. buttonInputMap[4] = Controller::Key::BUTTON_A;
  3549. buttonInputMap[7] = Controller::Key::BUTTON_X;
  3550. buttonInputMap[14] = Controller::Key::BUTTON_SELECT;
  3551. buttonInputMap[15] = Controller::Key::BUTTON_START;
  3552. buttonInputMap[5] = Controller::Key::BUTTON_B;
  3553. buttonInputMap[8] = Controller::Key::BUTTON_Y;
  3554. buttonInputMap[10] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3555. buttonInputMap[11] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3556. buttonInputMap[17] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3557. buttonInputMap[18] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3558. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3559. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3560. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3561. axisInputMap[5] = Controller::Key::JOYSTICK_RIGHT_Y;
  3562. // Add the controller profile to the map
  3563. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3564. // Prepare variables:
  3565. deviceName = "USB Game Device";
  3566. buttonInputMap.clear();
  3567. axisInputMap.clear();
  3568. // Map the controller inputs to Controller::Key codes
  3569. buttonInputMap[2] = Controller::Key::BUTTON_A;
  3570. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3571. buttonInputMap[8] = Controller::Key::BUTTON_SELECT;
  3572. buttonInputMap[9] = Controller::Key::BUTTON_START;
  3573. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3574. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  3575. buttonInputMap[4] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3576. buttonInputMap[5] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3577. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3578. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3579. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  3580. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  3581. // Add the controller profile to the map
  3582. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3583. // Prepare variables:
  3584. deviceName = "Zeemote: SteelSeries FREE";
  3585. buttonInputMap.clear();
  3586. axisInputMap.clear();
  3587. // Map the controller inputs to Controller::Key codes
  3588. buttonInputMap[0] = Controller::Key::BUTTON_A;
  3589. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3590. buttonInputMap[12] = Controller::Key::BUTTON_SELECT;
  3591. buttonInputMap[11] = Controller::Key::BUTTON_START;
  3592. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3593. buttonInputMap[4] = Controller::Key::BUTTON_Y;
  3594. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3595. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3596. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3597. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3598. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_X;
  3599. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_Y;
  3600. // Add the controller profile to the map
  3601. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3602. // Prepare variables:
  3603. deviceName = "Zeroplus PS Vibration Feedback Converter ";
  3604. buttonInputMap.clear();
  3605. axisInputMap.clear();
  3606. // Map the controller inputs to Controller::Key codes
  3607. buttonInputMap[2] = Controller::Key::BUTTON_A;
  3608. buttonInputMap[3] = Controller::Key::BUTTON_X;
  3609. buttonInputMap[11] = Controller::Key::BUTTON_SELECT;
  3610. buttonInputMap[8] = Controller::Key::BUTTON_START;
  3611. buttonInputMap[1] = Controller::Key::BUTTON_B;
  3612. buttonInputMap[0] = Controller::Key::BUTTON_Y;
  3613. buttonInputMap[6] = Controller::Key::BUTTON_LEFT_SHOULDER;
  3614. buttonInputMap[7] = Controller::Key::BUTTON_RIGHT_SHOULDER;
  3615. buttonInputMap[9] = Controller::Key::BUTTON_LEFT_THUMBSTICK;
  3616. buttonInputMap[10] = Controller::Key::BUTTON_RIGHT_THUMBSTICK;
  3617. axisInputMap[0] = Controller::Key::JOYSTICK_LEFT_X;
  3618. axisInputMap[1] = Controller::Key::JOYSTICK_LEFT_Y;
  3619. axisInputMap[3] = Controller::Key::JOYSTICK_RIGHT_X;
  3620. axisInputMap[2] = Controller::Key::JOYSTICK_RIGHT_Y;
  3621. // Add the controller profile to the map
  3622. s_controllerProfiles.insert(std::make_pair(deviceName, std::make_pair(buttonInputMap, axisInputMap)));
  3623. }
  3624. ~ControllerImpl()
  3625. {
  3626. // If there are any controllers connected that were not deleted at the end of execution, delete them.
  3627. // This wil prevent any memory leaks showing up in valgrind
  3628. for ( auto& controller : Controller::s_allController )
  3629. {
  3630. delete controller;
  3631. }
  3632. Controller::s_allController.clear();
  3633. }
  3634. static ControllerImpl* getInstance()
  3635. {
  3636. static ControllerImpl instance;
  3637. return &instance;
  3638. }
  3639. static std::vector<Controller*>::iterator findController(int deviceId)
  3640. {
  3641. // When controllers are disconnected, GLFW cannot provide their names. We only get their deviceId.
  3642. auto iter = std::find_if(Controller::s_allController.begin(), Controller::s_allController.end(),
  3643. [&](Controller* controller)
  3644. {
  3645. return deviceId == controller->_deviceId;
  3646. }
  3647. );
  3648. return iter;
  3649. }
  3650. static void onConnected(const std::string& deviceName, int deviceId)
  3651. {
  3652. // Check whether the controller is already registered
  3653. auto iter = findController(deviceId);
  3654. if (iter != Controller::s_allController.end())
  3655. return;
  3656. // It's a new controller being connected.
  3657. auto controller = new cocos2d::Controller();
  3658. controller->_deviceId = deviceId;
  3659. controller->_deviceName = deviceName;
  3660. Controller::s_allController.push_back(controller);
  3661. // Check if we already have an available input controller profile. If so, attach it it to the controller.
  3662. for (const auto & it : s_controllerProfiles)
  3663. {
  3664. if ( deviceName.compare(it.first) == 0 )
  3665. {
  3666. // Found controller profile. Attach it to the controller:
  3667. CCLOG("ControllerImpl: Found input profile for controller: %s", deviceName.c_str());
  3668. controller->_buttonInputMap = it.second.first;
  3669. controller->_axisInputMap = it.second.second;
  3670. // Show a one-time warning in debug mode for every button that's currently not matched in the input profile.
  3671. // This will let the developers know that the mapping must be included in the constructor of ControllerImpl located above.
  3672. #ifdef COCOS2D_DEBUG
  3673. int count;
  3674. glfwGetJoystickButtons(deviceId, &count);
  3675. for ( int i = 0; i < count; ++i )
  3676. {
  3677. // Check the mapping of each button:
  3678. const auto & it = controller->_buttonInputMap.find(i);
  3679. if ( it == controller->_buttonInputMap.end() )
  3680. {
  3681. CCLOG("ControllerImpl: Could not find a button input mapping for controller \"%s\", and keyCode \"%d\". This keyCode will not match any from Controller::Key", controller->getDeviceName().c_str(), i);
  3682. }
  3683. }
  3684. glfwGetJoystickAxes(deviceId, &count);
  3685. for ( int i = 0; i < count; ++i )
  3686. {
  3687. // Check the mapping of each axis
  3688. const auto & it = controller->_axisInputMap.find(i);
  3689. if ( it == controller->_axisInputMap.end() )
  3690. {
  3691. CCLOG("ControllerImpl: Could not find an axis input mapping for controller \"%s\", and keyCode \"%d\". This keyCode will not match any from Controller::Key", controller->getDeviceName().c_str(), i);
  3692. }
  3693. }
  3694. #endif
  3695. break;
  3696. }
  3697. }
  3698. // Show a warning if the controller input profile is non-existent:
  3699. #ifdef COCOS2D_DEBUG
  3700. if ( controller->_buttonInputMap.empty() )
  3701. {
  3702. CCLOG("ControllerImpl: Could not find a button input map for controller: %s", deviceName.c_str());
  3703. }
  3704. if ( controller->_axisInputMap.empty() )
  3705. {
  3706. CCLOG("ControllerImpl: Could not find an axis input map for controller: %s", deviceName.c_str());
  3707. }
  3708. #endif
  3709. controller->onConnected();
  3710. }
  3711. static void onDisconnected(int deviceId)
  3712. {
  3713. // Check whether the controller is already registered
  3714. auto iter = findController(deviceId);
  3715. if (iter == Controller::s_allController.end())
  3716. {
  3717. CCLOGERROR("ControllerImpl Error: Could not find the controller!");
  3718. return;
  3719. }
  3720. (*iter)->onDisconnected();
  3721. Controller::s_allController.erase(iter);
  3722. }
  3723. static void onButtonEvent(int deviceId, int keyCode, bool isPressed, float value, bool isAnalog)
  3724. {
  3725. auto iter = findController(deviceId);
  3726. if (iter == Controller::s_allController.end())
  3727. {
  3728. CCLOG("ControllerImpl::onButtonEvent: new controller detected. Registering...");
  3729. onConnected(glfwGetJoystickName(deviceId), deviceId);
  3730. iter = findController(deviceId);
  3731. }
  3732. (*iter)->onButtonEvent(keyCode, isPressed, value, isAnalog);
  3733. }
  3734. static void onAxisEvent(int deviceId, int axisCode, float value, bool isAnalog)
  3735. {
  3736. auto iter = findController(deviceId);
  3737. if (iter == Controller::s_allController.end())
  3738. {
  3739. CCLOG("ControllerImpl::onAxisEvent: new controller detected. Registering...");
  3740. onConnected(glfwGetJoystickName(deviceId), deviceId);
  3741. iter = findController(deviceId);
  3742. }
  3743. (*iter)->onAxisEvent(axisCode, value, isAnalog);
  3744. }
  3745. static void handleConnectionsAndDisconnections(int deviceId, int event)
  3746. {
  3747. // glfw supports up to 16 game controllers
  3748. // Handle game controller connections and disconnections
  3749. if ( event == GLFW_CONNECTED )
  3750. {
  3751. onConnected(glfwGetJoystickName(deviceId), deviceId);
  3752. }
  3753. else if ( event == GLFW_DISCONNECTED )
  3754. {
  3755. ControllerImpl::getInstance()->onDisconnected(deviceId);
  3756. }
  3757. #ifdef COCOS2D_DEBUG
  3758. else
  3759. {
  3760. CCLOG("ControllerImpl: Unhandled GLFW joystick event: %d", event);
  3761. }
  3762. #endif
  3763. }
  3764. void update(float /*dt*/)
  3765. {
  3766. for (int deviceId = GLFW_JOYSTICK_1; deviceId <= GLFW_JOYSTICK_LAST; ++deviceId)
  3767. {
  3768. if ( glfwJoystickPresent(deviceId) )
  3769. {
  3770. auto controller = Controller::getControllerByDeviceId(deviceId);
  3771. // Poll game controller button presses
  3772. int count;
  3773. const unsigned char* buttonArray = glfwGetJoystickButtons(deviceId, &count);
  3774. for ( int i = 0; i < count; ++i )
  3775. {
  3776. // Map the button to the Controller:Key keys from the controller profile if it's available:
  3777. int keyCode = i;
  3778. const auto & it = controller->_buttonInputMap.find(keyCode);
  3779. if ( it != controller->_buttonInputMap.end() )
  3780. {
  3781. keyCode = it->second;
  3782. }
  3783. ControllerImpl::onButtonEvent(deviceId, keyCode, buttonArray[i] == GLFW_PRESS, 0, false);
  3784. }
  3785. // Poll game controller joystick axis
  3786. const float * axisArray = glfwGetJoystickAxes(deviceId, &count);
  3787. for ( int i = 0; i < count; ++i )
  3788. {
  3789. // Map the axis to the Controller:Key keys from the controller profile if it's available:
  3790. int keyCode = i;
  3791. const auto & it = controller->_axisInputMap.find(keyCode);
  3792. if ( it != controller->_axisInputMap.end() )
  3793. {
  3794. keyCode = it->second;
  3795. }
  3796. ControllerImpl::onAxisEvent(deviceId, keyCode, axisArray[i], true);
  3797. }
  3798. }
  3799. }
  3800. }
  3801. private:
  3802. //FIXME: Once GLFW 3.3 is bundled with cocos2d-x, remove these
  3803. //controller profiles and all the related code. We will only need to
  3804. //provide a mapping from the GLFW gamepad key codes to the
  3805. //Controller::Key keycodes. So far an std::unordered_map<int,int>
  3806. //should suffice.
  3807. static std::map<std::string, std::pair< std::unordered_map<int, int>, std::unordered_map<int, int> > > s_controllerProfiles;
  3808. };
  3809. std::map<std::string, std::pair< std::unordered_map<int, int>, std::unordered_map<int, int> > > ControllerImpl::s_controllerProfiles;
  3810. void Controller::startDiscoveryController()
  3811. {
  3812. // Check for existing josyticks and register them as cocos2d::Controller:
  3813. for (int deviceId = GLFW_JOYSTICK_1; deviceId <= GLFW_JOYSTICK_LAST; ++deviceId)
  3814. {
  3815. if (glfwJoystickPresent(deviceId))
  3816. {
  3817. int axis_count, button_count;
  3818. glfwGetJoystickAxes(deviceId, &axis_count);
  3819. glfwGetJoystickButtons(deviceId, &button_count);
  3820. const char* name = glfwGetJoystickName(deviceId);
  3821. ControllerImpl::onConnected(name, deviceId);
  3822. }
  3823. }
  3824. // GFLW sends events when a joystick is connected and disconnected only.
  3825. // These events need to be filtered:
  3826. glfwSetJoystickCallback(ControllerImpl::handleConnectionsAndDisconnections);
  3827. // Poll the joystick axis and buttons
  3828. Director::getInstance()->getScheduler()->scheduleUpdate(ControllerImpl::getInstance(), 0, false);
  3829. }
  3830. void Controller::stopDiscoveryController()
  3831. {
  3832. Director::getInstance()->getScheduler()->unscheduleUpdate(ControllerImpl::getInstance());
  3833. glfwSetJoystickCallback(nullptr);
  3834. // Also remove all the connected controllers:
  3835. for ( auto& controller : Controller::s_allController )
  3836. {
  3837. delete controller;
  3838. }
  3839. Controller::s_allController.clear();
  3840. }
  3841. void Controller::registerListeners()
  3842. {
  3843. }
  3844. bool Controller::isConnected() const
  3845. {
  3846. // If there is a controller instance, it means that the controller is connected.
  3847. // If a controller is disconnected, the instance will be destroyed.
  3848. // Thus, always returns true for this method.
  3849. return true;
  3850. }
  3851. Controller::Controller()
  3852. : _controllerTag(TAG_UNSET)
  3853. , _impl(nullptr)
  3854. , _connectEvent(nullptr)
  3855. , _keyEvent(nullptr)
  3856. , _axisEvent(nullptr)
  3857. {
  3858. init();
  3859. }
  3860. Controller::~Controller()
  3861. {
  3862. delete _connectEvent;
  3863. delete _keyEvent;
  3864. delete _axisEvent;
  3865. }
  3866. NS_CC_END
  3867. #endif // #if (CC_TARGET_PLATFORM == CC_PLATFORM_LINUX || CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)