dinput.h 219 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446
  1. /****************************************************************************
  2. *
  3. * Copyright (C) 1996-2002 Microsoft Corporation. All Rights Reserved.
  4. *
  5. * File: dinput.h
  6. * Content: DirectInput include file
  7. *
  8. ****************************************************************************/
  9. #ifndef __DINPUT_INCLUDED__
  10. #define __DINPUT_INCLUDED__
  11. #include <winapifamily.h>
  12. #ifndef DIJ_RINGZERO
  13. #ifdef _WIN32
  14. #define COM_NO_WINDOWS_H
  15. #include <objbase.h>
  16. #endif
  17. #endif /* DIJ_RINGZERO */
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21. #pragma region Desktop Family
  22. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  23. /*
  24. * To build applications for older versions of DirectInput
  25. *
  26. * #define DIRECTINPUT_VERSION [ 0x0300 | 0x0500 | 0x0700 ]
  27. *
  28. * before #include <dinput.h>. By default, #include <dinput.h>
  29. * will produce a DirectX 8-compatible header file.
  30. *
  31. */
  32. #define DIRECTINPUT_HEADER_VERSION 0x0800
  33. #ifndef DIRECTINPUT_VERSION
  34. #define DIRECTINPUT_VERSION DIRECTINPUT_HEADER_VERSION
  35. #pragma message(__FILE__ ": DIRECTINPUT_VERSION undefined. Defaulting to version 0x0800")
  36. #endif
  37. #ifndef DIJ_RINGZERO
  38. /****************************************************************************
  39. *
  40. * Class IDs
  41. *
  42. ****************************************************************************/
  43. DEFINE_GUID(CLSID_DirectInput, 0x25E609E0,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  44. DEFINE_GUID(CLSID_DirectInputDevice, 0x25E609E1,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  45. DEFINE_GUID(CLSID_DirectInput8, 0x25E609E4,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  46. DEFINE_GUID(CLSID_DirectInputDevice8,0x25E609E5,0xB259,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  47. /****************************************************************************
  48. *
  49. * Interfaces
  50. *
  51. ****************************************************************************/
  52. DEFINE_GUID(IID_IDirectInputA, 0x89521360,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  53. DEFINE_GUID(IID_IDirectInputW, 0x89521361,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  54. DEFINE_GUID(IID_IDirectInput2A, 0x5944E662,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  55. DEFINE_GUID(IID_IDirectInput2W, 0x5944E663,0xAA8A,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  56. DEFINE_GUID(IID_IDirectInput7A, 0x9A4CB684,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
  57. DEFINE_GUID(IID_IDirectInput7W, 0x9A4CB685,0x236D,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
  58. DEFINE_GUID(IID_IDirectInput8A, 0xBF798030,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00);
  59. DEFINE_GUID(IID_IDirectInput8W, 0xBF798031,0x483A,0x4DA2,0xAA,0x99,0x5D,0x64,0xED,0x36,0x97,0x00);
  60. DEFINE_GUID(IID_IDirectInputDeviceA, 0x5944E680,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  61. DEFINE_GUID(IID_IDirectInputDeviceW, 0x5944E681,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  62. DEFINE_GUID(IID_IDirectInputDevice2A,0x5944E682,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  63. DEFINE_GUID(IID_IDirectInputDevice2W,0x5944E683,0xC92E,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  64. DEFINE_GUID(IID_IDirectInputDevice7A,0x57D7C6BC,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
  65. DEFINE_GUID(IID_IDirectInputDevice7W,0x57D7C6BD,0x2356,0x11D3,0x8E,0x9D,0x00,0xC0,0x4F,0x68,0x44,0xAE);
  66. DEFINE_GUID(IID_IDirectInputDevice8A,0x54D41080,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);
  67. DEFINE_GUID(IID_IDirectInputDevice8W,0x54D41081,0xDC15,0x4833,0xA4,0x1B,0x74,0x8F,0x73,0xA3,0x81,0x79);
  68. DEFINE_GUID(IID_IDirectInputEffect, 0xE7E1F7C0,0x88D2,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  69. /****************************************************************************
  70. *
  71. * Predefined object types
  72. *
  73. ****************************************************************************/
  74. DEFINE_GUID(GUID_XAxis, 0xA36D02E0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  75. DEFINE_GUID(GUID_YAxis, 0xA36D02E1,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  76. DEFINE_GUID(GUID_ZAxis, 0xA36D02E2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  77. DEFINE_GUID(GUID_RxAxis, 0xA36D02F4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  78. DEFINE_GUID(GUID_RyAxis, 0xA36D02F5,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  79. DEFINE_GUID(GUID_RzAxis, 0xA36D02E3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  80. DEFINE_GUID(GUID_Slider, 0xA36D02E4,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  81. DEFINE_GUID(GUID_Button, 0xA36D02F0,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  82. DEFINE_GUID(GUID_Key, 0x55728220,0xD33C,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  83. DEFINE_GUID(GUID_POV, 0xA36D02F2,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  84. DEFINE_GUID(GUID_Unknown, 0xA36D02F3,0xC9F3,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  85. /****************************************************************************
  86. *
  87. * Predefined product GUIDs
  88. *
  89. ****************************************************************************/
  90. DEFINE_GUID(GUID_SysMouse, 0x6F1D2B60,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  91. DEFINE_GUID(GUID_SysKeyboard,0x6F1D2B61,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  92. DEFINE_GUID(GUID_Joystick ,0x6F1D2B70,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  93. DEFINE_GUID(GUID_SysMouseEm, 0x6F1D2B80,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  94. DEFINE_GUID(GUID_SysMouseEm2,0x6F1D2B81,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  95. DEFINE_GUID(GUID_SysKeyboardEm, 0x6F1D2B82,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  96. DEFINE_GUID(GUID_SysKeyboardEm2,0x6F1D2B83,0xD5A0,0x11CF,0xBF,0xC7,0x44,0x45,0x53,0x54,0x00,0x00);
  97. /****************************************************************************
  98. *
  99. * Predefined force feedback effects
  100. *
  101. ****************************************************************************/
  102. DEFINE_GUID(GUID_ConstantForce, 0x13541C20,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  103. DEFINE_GUID(GUID_RampForce, 0x13541C21,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  104. DEFINE_GUID(GUID_Square, 0x13541C22,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  105. DEFINE_GUID(GUID_Sine, 0x13541C23,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  106. DEFINE_GUID(GUID_Triangle, 0x13541C24,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  107. DEFINE_GUID(GUID_SawtoothUp, 0x13541C25,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  108. DEFINE_GUID(GUID_SawtoothDown, 0x13541C26,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  109. DEFINE_GUID(GUID_Spring, 0x13541C27,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  110. DEFINE_GUID(GUID_Damper, 0x13541C28,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  111. DEFINE_GUID(GUID_Inertia, 0x13541C29,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  112. DEFINE_GUID(GUID_Friction, 0x13541C2A,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  113. DEFINE_GUID(GUID_CustomForce, 0x13541C2B,0x8E33,0x11D0,0x9A,0xD0,0x00,0xA0,0xC9,0xA0,0x6E,0x35);
  114. #endif /* DIJ_RINGZERO */
  115. /****************************************************************************
  116. *
  117. * Interfaces and Structures...
  118. *
  119. ****************************************************************************/
  120. #if(DIRECTINPUT_VERSION >= 0x0500)
  121. /****************************************************************************
  122. *
  123. * IDirectInputEffect
  124. *
  125. ****************************************************************************/
  126. #define DIEFT_ALL 0x00000000
  127. #define DIEFT_CONSTANTFORCE 0x00000001
  128. #define DIEFT_RAMPFORCE 0x00000002
  129. #define DIEFT_PERIODIC 0x00000003
  130. #define DIEFT_CONDITION 0x00000004
  131. #define DIEFT_CUSTOMFORCE 0x00000005
  132. #define DIEFT_HARDWARE 0x000000FF
  133. #define DIEFT_FFATTACK 0x00000200
  134. #define DIEFT_FFFADE 0x00000400
  135. #define DIEFT_SATURATION 0x00000800
  136. #define DIEFT_POSNEGCOEFFICIENTS 0x00001000
  137. #define DIEFT_POSNEGSATURATION 0x00002000
  138. #define DIEFT_DEADBAND 0x00004000
  139. #define DIEFT_STARTDELAY 0x00008000
  140. #define DIEFT_GETTYPE(n) LOBYTE(n)
  141. #define DI_DEGREES 100
  142. #define DI_FFNOMINALMAX 10000
  143. #define DI_SECONDS 1000000
  144. typedef struct DICONSTANTFORCE {
  145. LONG lMagnitude;
  146. } DICONSTANTFORCE, *LPDICONSTANTFORCE;
  147. typedef const DICONSTANTFORCE *LPCDICONSTANTFORCE;
  148. typedef struct DIRAMPFORCE {
  149. LONG lStart;
  150. LONG lEnd;
  151. } DIRAMPFORCE, *LPDIRAMPFORCE;
  152. typedef const DIRAMPFORCE *LPCDIRAMPFORCE;
  153. typedef struct DIPERIODIC {
  154. DWORD dwMagnitude;
  155. LONG lOffset;
  156. DWORD dwPhase;
  157. DWORD dwPeriod;
  158. } DIPERIODIC, *LPDIPERIODIC;
  159. typedef const DIPERIODIC *LPCDIPERIODIC;
  160. typedef struct DICONDITION {
  161. LONG lOffset;
  162. LONG lPositiveCoefficient;
  163. LONG lNegativeCoefficient;
  164. DWORD dwPositiveSaturation;
  165. DWORD dwNegativeSaturation;
  166. LONG lDeadBand;
  167. } DICONDITION, *LPDICONDITION;
  168. typedef const DICONDITION *LPCDICONDITION;
  169. typedef struct DICUSTOMFORCE {
  170. DWORD cChannels;
  171. DWORD dwSamplePeriod;
  172. DWORD cSamples;
  173. LPLONG rglForceData;
  174. } DICUSTOMFORCE, *LPDICUSTOMFORCE;
  175. typedef const DICUSTOMFORCE *LPCDICUSTOMFORCE;
  176. typedef struct DIENVELOPE {
  177. DWORD dwSize; /* sizeof(DIENVELOPE) */
  178. DWORD dwAttackLevel;
  179. DWORD dwAttackTime; /* Microseconds */
  180. DWORD dwFadeLevel;
  181. DWORD dwFadeTime; /* Microseconds */
  182. } DIENVELOPE, *LPDIENVELOPE;
  183. typedef const DIENVELOPE *LPCDIENVELOPE;
  184. /* This structure is defined for DirectX 5.0 compatibility */
  185. typedef struct DIEFFECT_DX5 {
  186. DWORD dwSize; /* sizeof(DIEFFECT_DX5) */
  187. DWORD dwFlags; /* DIEFF_* */
  188. DWORD dwDuration; /* Microseconds */
  189. DWORD dwSamplePeriod; /* Microseconds */
  190. DWORD dwGain;
  191. DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */
  192. DWORD dwTriggerRepeatInterval; /* Microseconds */
  193. DWORD cAxes; /* Number of axes */
  194. LPDWORD rgdwAxes; /* Array of axes */
  195. LPLONG rglDirection; /* Array of directions */
  196. LPDIENVELOPE lpEnvelope; /* Optional */
  197. DWORD cbTypeSpecificParams; /* Size of params */
  198. LPVOID lpvTypeSpecificParams; /* Pointer to params */
  199. } DIEFFECT_DX5, *LPDIEFFECT_DX5;
  200. typedef const DIEFFECT_DX5 *LPCDIEFFECT_DX5;
  201. typedef struct DIEFFECT {
  202. DWORD dwSize; /* sizeof(DIEFFECT) */
  203. DWORD dwFlags; /* DIEFF_* */
  204. DWORD dwDuration; /* Microseconds */
  205. DWORD dwSamplePeriod; /* Microseconds */
  206. DWORD dwGain;
  207. DWORD dwTriggerButton; /* or DIEB_NOTRIGGER */
  208. DWORD dwTriggerRepeatInterval; /* Microseconds */
  209. DWORD cAxes; /* Number of axes */
  210. LPDWORD rgdwAxes; /* Array of axes */
  211. LPLONG rglDirection; /* Array of directions */
  212. LPDIENVELOPE lpEnvelope; /* Optional */
  213. DWORD cbTypeSpecificParams; /* Size of params */
  214. LPVOID lpvTypeSpecificParams; /* Pointer to params */
  215. #if(DIRECTINPUT_VERSION >= 0x0600)
  216. DWORD dwStartDelay; /* Microseconds */
  217. #endif /* DIRECTINPUT_VERSION >= 0x0600 */
  218. } DIEFFECT, *LPDIEFFECT;
  219. typedef DIEFFECT DIEFFECT_DX6;
  220. typedef LPDIEFFECT LPDIEFFECT_DX6;
  221. typedef const DIEFFECT *LPCDIEFFECT;
  222. #if(DIRECTINPUT_VERSION >= 0x0700)
  223. #ifndef DIJ_RINGZERO
  224. typedef struct DIFILEEFFECT{
  225. DWORD dwSize;
  226. GUID GuidEffect;
  227. LPCDIEFFECT lpDiEffect;
  228. CHAR szFriendlyName[MAX_PATH];
  229. }DIFILEEFFECT, *LPDIFILEEFFECT;
  230. typedef const DIFILEEFFECT *LPCDIFILEEFFECT;
  231. typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSINFILECALLBACK)(LPCDIFILEEFFECT , LPVOID);
  232. #endif /* DIJ_RINGZERO */
  233. #endif /* DIRECTINPUT_VERSION >= 0x0700 */
  234. #define DIEFF_OBJECTIDS 0x00000001
  235. #define DIEFF_OBJECTOFFSETS 0x00000002
  236. #define DIEFF_CARTESIAN 0x00000010
  237. #define DIEFF_POLAR 0x00000020
  238. #define DIEFF_SPHERICAL 0x00000040
  239. #define DIEP_DURATION 0x00000001
  240. #define DIEP_SAMPLEPERIOD 0x00000002
  241. #define DIEP_GAIN 0x00000004
  242. #define DIEP_TRIGGERBUTTON 0x00000008
  243. #define DIEP_TRIGGERREPEATINTERVAL 0x00000010
  244. #define DIEP_AXES 0x00000020
  245. #define DIEP_DIRECTION 0x00000040
  246. #define DIEP_ENVELOPE 0x00000080
  247. #define DIEP_TYPESPECIFICPARAMS 0x00000100
  248. #if(DIRECTINPUT_VERSION >= 0x0600)
  249. #define DIEP_STARTDELAY 0x00000200
  250. #define DIEP_ALLPARAMS_DX5 0x000001FF
  251. #define DIEP_ALLPARAMS 0x000003FF
  252. #else /* DIRECTINPUT_VERSION < 0x0600 */
  253. #define DIEP_ALLPARAMS 0x000001FF
  254. #endif /* DIRECTINPUT_VERSION < 0x0600 */
  255. #define DIEP_START 0x20000000
  256. #define DIEP_NORESTART 0x40000000
  257. #define DIEP_NODOWNLOAD 0x80000000
  258. #define DIEB_NOTRIGGER 0xFFFFFFFF
  259. #define DIES_SOLO 0x00000001
  260. #define DIES_NODOWNLOAD 0x80000000
  261. #define DIEGES_PLAYING 0x00000001
  262. #define DIEGES_EMULATED 0x00000002
  263. typedef struct DIEFFESCAPE {
  264. DWORD dwSize;
  265. DWORD dwCommand;
  266. LPVOID lpvInBuffer;
  267. DWORD cbInBuffer;
  268. LPVOID lpvOutBuffer;
  269. DWORD cbOutBuffer;
  270. } DIEFFESCAPE, *LPDIEFFESCAPE;
  271. #ifndef DIJ_RINGZERO
  272. #undef INTERFACE
  273. #define INTERFACE IDirectInputEffect
  274. DECLARE_INTERFACE_(IDirectInputEffect, IUnknown)
  275. {
  276. /*** IUnknown methods ***/
  277. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  278. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  279. STDMETHOD_(ULONG,Release)(THIS) PURE;
  280. /*** IDirectInputEffect methods ***/
  281. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
  282. STDMETHOD(GetEffectGuid)(THIS_ LPGUID) PURE;
  283. STDMETHOD(GetParameters)(THIS_ LPDIEFFECT,DWORD) PURE;
  284. STDMETHOD(SetParameters)(THIS_ LPCDIEFFECT,DWORD) PURE;
  285. STDMETHOD(Start)(THIS_ DWORD,DWORD) PURE;
  286. STDMETHOD(Stop)(THIS) PURE;
  287. STDMETHOD(GetEffectStatus)(THIS_ LPDWORD) PURE;
  288. STDMETHOD(Download)(THIS) PURE;
  289. STDMETHOD(Unload)(THIS) PURE;
  290. STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
  291. };
  292. typedef struct IDirectInputEffect *LPDIRECTINPUTEFFECT;
  293. #if !defined(__cplusplus) || defined(CINTERFACE)
  294. #define IDirectInputEffect_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  295. #define IDirectInputEffect_AddRef(p) (p)->lpVtbl->AddRef(p)
  296. #define IDirectInputEffect_Release(p) (p)->lpVtbl->Release(p)
  297. #define IDirectInputEffect_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
  298. #define IDirectInputEffect_GetEffectGuid(p,a) (p)->lpVtbl->GetEffectGuid(p,a)
  299. #define IDirectInputEffect_GetParameters(p,a,b) (p)->lpVtbl->GetParameters(p,a,b)
  300. #define IDirectInputEffect_SetParameters(p,a,b) (p)->lpVtbl->SetParameters(p,a,b)
  301. #define IDirectInputEffect_Start(p,a,b) (p)->lpVtbl->Start(p,a,b)
  302. #define IDirectInputEffect_Stop(p) (p)->lpVtbl->Stop(p)
  303. #define IDirectInputEffect_GetEffectStatus(p,a) (p)->lpVtbl->GetEffectStatus(p,a)
  304. #define IDirectInputEffect_Download(p) (p)->lpVtbl->Download(p)
  305. #define IDirectInputEffect_Unload(p) (p)->lpVtbl->Unload(p)
  306. #define IDirectInputEffect_Escape(p,a) (p)->lpVtbl->Escape(p,a)
  307. #else
  308. #define IDirectInputEffect_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  309. #define IDirectInputEffect_AddRef(p) (p)->AddRef()
  310. #define IDirectInputEffect_Release(p) (p)->Release()
  311. #define IDirectInputEffect_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
  312. #define IDirectInputEffect_GetEffectGuid(p,a) (p)->GetEffectGuid(a)
  313. #define IDirectInputEffect_GetParameters(p,a,b) (p)->GetParameters(a,b)
  314. #define IDirectInputEffect_SetParameters(p,a,b) (p)->SetParameters(a,b)
  315. #define IDirectInputEffect_Start(p,a,b) (p)->Start(a,b)
  316. #define IDirectInputEffect_Stop(p) (p)->Stop()
  317. #define IDirectInputEffect_GetEffectStatus(p,a) (p)->GetEffectStatus(a)
  318. #define IDirectInputEffect_Download(p) (p)->Download()
  319. #define IDirectInputEffect_Unload(p) (p)->Unload()
  320. #define IDirectInputEffect_Escape(p,a) (p)->Escape(a)
  321. #endif
  322. #endif /* DIJ_RINGZERO */
  323. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  324. /****************************************************************************
  325. *
  326. * IDirectInputDevice
  327. *
  328. ****************************************************************************/
  329. #if DIRECTINPUT_VERSION <= 0x700
  330. #define DIDEVTYPE_DEVICE 1
  331. #define DIDEVTYPE_MOUSE 2
  332. #define DIDEVTYPE_KEYBOARD 3
  333. #define DIDEVTYPE_JOYSTICK 4
  334. #else
  335. #define DI8DEVCLASS_ALL 0
  336. #define DI8DEVCLASS_DEVICE 1
  337. #define DI8DEVCLASS_POINTER 2
  338. #define DI8DEVCLASS_KEYBOARD 3
  339. #define DI8DEVCLASS_GAMECTRL 4
  340. #define DI8DEVTYPE_DEVICE 0x11
  341. #define DI8DEVTYPE_MOUSE 0x12
  342. #define DI8DEVTYPE_KEYBOARD 0x13
  343. #define DI8DEVTYPE_JOYSTICK 0x14
  344. #define DI8DEVTYPE_GAMEPAD 0x15
  345. #define DI8DEVTYPE_DRIVING 0x16
  346. #define DI8DEVTYPE_FLIGHT 0x17
  347. #define DI8DEVTYPE_1STPERSON 0x18
  348. #define DI8DEVTYPE_DEVICECTRL 0x19
  349. #define DI8DEVTYPE_SCREENPOINTER 0x1A
  350. #define DI8DEVTYPE_REMOTE 0x1B
  351. #define DI8DEVTYPE_SUPPLEMENTAL 0x1C
  352. #endif /* DIRECTINPUT_VERSION <= 0x700 */
  353. #define DIDEVTYPE_HID 0x00010000
  354. #if DIRECTINPUT_VERSION <= 0x700
  355. #define DIDEVTYPEMOUSE_UNKNOWN 1
  356. #define DIDEVTYPEMOUSE_TRADITIONAL 2
  357. #define DIDEVTYPEMOUSE_FINGERSTICK 3
  358. #define DIDEVTYPEMOUSE_TOUCHPAD 4
  359. #define DIDEVTYPEMOUSE_TRACKBALL 5
  360. #define DIDEVTYPEKEYBOARD_UNKNOWN 0
  361. #define DIDEVTYPEKEYBOARD_PCXT 1
  362. #define DIDEVTYPEKEYBOARD_OLIVETTI 2
  363. #define DIDEVTYPEKEYBOARD_PCAT 3
  364. #define DIDEVTYPEKEYBOARD_PCENH 4
  365. #define DIDEVTYPEKEYBOARD_NOKIA1050 5
  366. #define DIDEVTYPEKEYBOARD_NOKIA9140 6
  367. #define DIDEVTYPEKEYBOARD_NEC98 7
  368. #define DIDEVTYPEKEYBOARD_NEC98LAPTOP 8
  369. #define DIDEVTYPEKEYBOARD_NEC98106 9
  370. #define DIDEVTYPEKEYBOARD_JAPAN106 10
  371. #define DIDEVTYPEKEYBOARD_JAPANAX 11
  372. #define DIDEVTYPEKEYBOARD_J3100 12
  373. #define DIDEVTYPEJOYSTICK_UNKNOWN 1
  374. #define DIDEVTYPEJOYSTICK_TRADITIONAL 2
  375. #define DIDEVTYPEJOYSTICK_FLIGHTSTICK 3
  376. #define DIDEVTYPEJOYSTICK_GAMEPAD 4
  377. #define DIDEVTYPEJOYSTICK_RUDDER 5
  378. #define DIDEVTYPEJOYSTICK_WHEEL 6
  379. #define DIDEVTYPEJOYSTICK_HEADTRACKER 7
  380. #else
  381. #define DI8DEVTYPEMOUSE_UNKNOWN 1
  382. #define DI8DEVTYPEMOUSE_TRADITIONAL 2
  383. #define DI8DEVTYPEMOUSE_FINGERSTICK 3
  384. #define DI8DEVTYPEMOUSE_TOUCHPAD 4
  385. #define DI8DEVTYPEMOUSE_TRACKBALL 5
  386. #define DI8DEVTYPEMOUSE_ABSOLUTE 6
  387. #define DI8DEVTYPEKEYBOARD_UNKNOWN 0
  388. #define DI8DEVTYPEKEYBOARD_PCXT 1
  389. #define DI8DEVTYPEKEYBOARD_OLIVETTI 2
  390. #define DI8DEVTYPEKEYBOARD_PCAT 3
  391. #define DI8DEVTYPEKEYBOARD_PCENH 4
  392. #define DI8DEVTYPEKEYBOARD_NOKIA1050 5
  393. #define DI8DEVTYPEKEYBOARD_NOKIA9140 6
  394. #define DI8DEVTYPEKEYBOARD_NEC98 7
  395. #define DI8DEVTYPEKEYBOARD_NEC98LAPTOP 8
  396. #define DI8DEVTYPEKEYBOARD_NEC98106 9
  397. #define DI8DEVTYPEKEYBOARD_JAPAN106 10
  398. #define DI8DEVTYPEKEYBOARD_JAPANAX 11
  399. #define DI8DEVTYPEKEYBOARD_J3100 12
  400. #define DI8DEVTYPE_LIMITEDGAMESUBTYPE 1
  401. #define DI8DEVTYPEJOYSTICK_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
  402. #define DI8DEVTYPEJOYSTICK_STANDARD 2
  403. #define DI8DEVTYPEGAMEPAD_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
  404. #define DI8DEVTYPEGAMEPAD_STANDARD 2
  405. #define DI8DEVTYPEGAMEPAD_TILT 3
  406. #define DI8DEVTYPEDRIVING_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
  407. #define DI8DEVTYPEDRIVING_COMBINEDPEDALS 2
  408. #define DI8DEVTYPEDRIVING_DUALPEDALS 3
  409. #define DI8DEVTYPEDRIVING_THREEPEDALS 4
  410. #define DI8DEVTYPEDRIVING_HANDHELD 5
  411. #define DI8DEVTYPEFLIGHT_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
  412. #define DI8DEVTYPEFLIGHT_STICK 2
  413. #define DI8DEVTYPEFLIGHT_YOKE 3
  414. #define DI8DEVTYPEFLIGHT_RC 4
  415. #define DI8DEVTYPE1STPERSON_LIMITED DI8DEVTYPE_LIMITEDGAMESUBTYPE
  416. #define DI8DEVTYPE1STPERSON_UNKNOWN 2
  417. #define DI8DEVTYPE1STPERSON_SIXDOF 3
  418. #define DI8DEVTYPE1STPERSON_SHOOTER 4
  419. #define DI8DEVTYPESCREENPTR_UNKNOWN 2
  420. #define DI8DEVTYPESCREENPTR_LIGHTGUN 3
  421. #define DI8DEVTYPESCREENPTR_LIGHTPEN 4
  422. #define DI8DEVTYPESCREENPTR_TOUCH 5
  423. #define DI8DEVTYPEREMOTE_UNKNOWN 2
  424. #define DI8DEVTYPEDEVICECTRL_UNKNOWN 2
  425. #define DI8DEVTYPEDEVICECTRL_COMMSSELECTION 3
  426. #define DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED 4
  427. #define DI8DEVTYPESUPPLEMENTAL_UNKNOWN 2
  428. #define DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER 3
  429. #define DI8DEVTYPESUPPLEMENTAL_HEADTRACKER 4
  430. #define DI8DEVTYPESUPPLEMENTAL_HANDTRACKER 5
  431. #define DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE 6
  432. #define DI8DEVTYPESUPPLEMENTAL_SHIFTER 7
  433. #define DI8DEVTYPESUPPLEMENTAL_THROTTLE 8
  434. #define DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE 9
  435. #define DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS 10
  436. #define DI8DEVTYPESUPPLEMENTAL_DUALPEDALS 11
  437. #define DI8DEVTYPESUPPLEMENTAL_THREEPEDALS 12
  438. #define DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS 13
  439. #endif /* DIRECTINPUT_VERSION <= 0x700 */
  440. #define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType)
  441. #define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType)
  442. #if(DIRECTINPUT_VERSION >= 0x0500)
  443. /* This structure is defined for DirectX 3.0 compatibility */
  444. typedef struct DIDEVCAPS_DX3 {
  445. DWORD dwSize;
  446. DWORD dwFlags;
  447. DWORD dwDevType;
  448. DWORD dwAxes;
  449. DWORD dwButtons;
  450. DWORD dwPOVs;
  451. } DIDEVCAPS_DX3, *LPDIDEVCAPS_DX3;
  452. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  453. typedef struct DIDEVCAPS {
  454. DWORD dwSize;
  455. DWORD dwFlags;
  456. DWORD dwDevType;
  457. DWORD dwAxes;
  458. DWORD dwButtons;
  459. DWORD dwPOVs;
  460. #if(DIRECTINPUT_VERSION >= 0x0500)
  461. DWORD dwFFSamplePeriod;
  462. DWORD dwFFMinTimeResolution;
  463. DWORD dwFirmwareRevision;
  464. DWORD dwHardwareRevision;
  465. DWORD dwFFDriverVersion;
  466. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  467. } DIDEVCAPS, *LPDIDEVCAPS;
  468. #define DIDC_ATTACHED 0x00000001
  469. #define DIDC_POLLEDDEVICE 0x00000002
  470. #define DIDC_EMULATED 0x00000004
  471. #define DIDC_POLLEDDATAFORMAT 0x00000008
  472. #if(DIRECTINPUT_VERSION >= 0x0500)
  473. #define DIDC_FORCEFEEDBACK 0x00000100
  474. #define DIDC_FFATTACK 0x00000200
  475. #define DIDC_FFFADE 0x00000400
  476. #define DIDC_SATURATION 0x00000800
  477. #define DIDC_POSNEGCOEFFICIENTS 0x00001000
  478. #define DIDC_POSNEGSATURATION 0x00002000
  479. #define DIDC_DEADBAND 0x00004000
  480. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  481. #define DIDC_STARTDELAY 0x00008000
  482. #if(DIRECTINPUT_VERSION >= 0x050a)
  483. #define DIDC_ALIAS 0x00010000
  484. #define DIDC_PHANTOM 0x00020000
  485. #endif /* DIRECTINPUT_VERSION >= 0x050a */
  486. #if(DIRECTINPUT_VERSION >= 0x0800)
  487. #define DIDC_HIDDEN 0x00040000
  488. #endif /* DIRECTINPUT_VERSION >= 0x0800 */
  489. #define DIDFT_ALL 0x00000000
  490. #define DIDFT_RELAXIS 0x00000001
  491. #define DIDFT_ABSAXIS 0x00000002
  492. #define DIDFT_AXIS 0x00000003
  493. #define DIDFT_PSHBUTTON 0x00000004
  494. #define DIDFT_TGLBUTTON 0x00000008
  495. #define DIDFT_BUTTON 0x0000000C
  496. #define DIDFT_POV 0x00000010
  497. #define DIDFT_COLLECTION 0x00000040
  498. #define DIDFT_NODATA 0x00000080
  499. #define DIDFT_ANYINSTANCE 0x00FFFF00
  500. #define DIDFT_INSTANCEMASK DIDFT_ANYINSTANCE
  501. #define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8)
  502. #define DIDFT_GETTYPE(n) LOBYTE(n)
  503. #define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8)
  504. #define DIDFT_FFACTUATOR 0x01000000
  505. #define DIDFT_FFEFFECTTRIGGER 0x02000000
  506. #if(DIRECTINPUT_VERSION >= 0x050a)
  507. #define DIDFT_OUTPUT 0x10000000
  508. #define DIDFT_VENDORDEFINED 0x04000000
  509. #define DIDFT_ALIAS 0x08000000
  510. #endif /* DIRECTINPUT_VERSION >= 0x050a */
  511. #define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8)
  512. #define DIDFT_NOCOLLECTION 0x00FFFF00
  513. #ifndef DIJ_RINGZERO
  514. typedef struct _DIOBJECTDATAFORMAT {
  515. const GUID *pguid;
  516. DWORD dwOfs;
  517. DWORD dwType;
  518. DWORD dwFlags;
  519. } DIOBJECTDATAFORMAT, *LPDIOBJECTDATAFORMAT;
  520. typedef const DIOBJECTDATAFORMAT *LPCDIOBJECTDATAFORMAT;
  521. typedef struct _DIDATAFORMAT {
  522. DWORD dwSize;
  523. DWORD dwObjSize;
  524. DWORD dwFlags;
  525. DWORD dwDataSize;
  526. DWORD dwNumObjs;
  527. LPDIOBJECTDATAFORMAT rgodf;
  528. } DIDATAFORMAT, *LPDIDATAFORMAT;
  529. typedef const DIDATAFORMAT *LPCDIDATAFORMAT;
  530. #define DIDF_ABSAXIS 0x00000001
  531. #define DIDF_RELAXIS 0x00000002
  532. #ifdef __cplusplus
  533. extern "C" {
  534. #endif
  535. extern const DIDATAFORMAT c_dfDIMouse;
  536. #if(DIRECTINPUT_VERSION >= 0x0700)
  537. extern const DIDATAFORMAT c_dfDIMouse2;
  538. #endif /* DIRECTINPUT_VERSION >= 0x0700 */
  539. extern const DIDATAFORMAT c_dfDIKeyboard;
  540. #if(DIRECTINPUT_VERSION >= 0x0500)
  541. extern const DIDATAFORMAT c_dfDIJoystick;
  542. extern const DIDATAFORMAT c_dfDIJoystick2;
  543. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  544. #ifdef __cplusplus
  545. };
  546. #endif
  547. #if DIRECTINPUT_VERSION > 0x0700
  548. #pragma warning(push)
  549. #pragma warning(disable:4201) // Nameless union / struct when compiled for C.
  550. typedef struct _DIACTIONA {
  551. UINT_PTR uAppData;
  552. DWORD dwSemantic;
  553. OPTIONAL DWORD dwFlags;
  554. OPTIONAL union {
  555. LPCSTR lptszActionName;
  556. UINT uResIdString;
  557. };
  558. OPTIONAL GUID guidInstance;
  559. OPTIONAL DWORD dwObjID;
  560. OPTIONAL DWORD dwHow;
  561. } DIACTIONA, *LPDIACTIONA ;
  562. typedef struct _DIACTIONW {
  563. UINT_PTR uAppData;
  564. DWORD dwSemantic;
  565. OPTIONAL DWORD dwFlags;
  566. OPTIONAL union {
  567. LPCWSTR lptszActionName;
  568. UINT uResIdString;
  569. };
  570. OPTIONAL GUID guidInstance;
  571. OPTIONAL DWORD dwObjID;
  572. OPTIONAL DWORD dwHow;
  573. } DIACTIONW, *LPDIACTIONW ;
  574. #ifdef UNICODE
  575. typedef DIACTIONW DIACTION;
  576. typedef LPDIACTIONW LPDIACTION;
  577. #else
  578. typedef DIACTIONA DIACTION;
  579. typedef LPDIACTIONA LPDIACTION;
  580. #endif // UNICODE
  581. typedef const DIACTIONA *LPCDIACTIONA;
  582. typedef const DIACTIONW *LPCDIACTIONW;
  583. #ifdef UNICODE
  584. typedef DIACTIONW DIACTION;
  585. typedef LPCDIACTIONW LPCDIACTION;
  586. #else
  587. typedef DIACTIONA DIACTION;
  588. typedef LPCDIACTIONA LPCDIACTION;
  589. #endif // UNICODE
  590. typedef const DIACTION *LPCDIACTION;
  591. #pragma warning(pop)
  592. #define DIA_FORCEFEEDBACK 0x00000001
  593. #define DIA_APPMAPPED 0x00000002
  594. #define DIA_APPNOMAP 0x00000004
  595. #define DIA_NORANGE 0x00000008
  596. #define DIA_APPFIXED 0x00000010
  597. #define DIAH_UNMAPPED 0x00000000
  598. #define DIAH_USERCONFIG 0x00000001
  599. #define DIAH_APPREQUESTED 0x00000002
  600. #define DIAH_HWAPP 0x00000004
  601. #define DIAH_HWDEFAULT 0x00000008
  602. #define DIAH_DEFAULT 0x00000020
  603. #define DIAH_ERROR 0x80000000
  604. typedef struct _DIACTIONFORMATA {
  605. DWORD dwSize;
  606. DWORD dwActionSize;
  607. DWORD dwDataSize;
  608. DWORD dwNumActions;
  609. LPDIACTIONA rgoAction;
  610. GUID guidActionMap;
  611. DWORD dwGenre;
  612. DWORD dwBufferSize;
  613. OPTIONAL LONG lAxisMin;
  614. OPTIONAL LONG lAxisMax;
  615. OPTIONAL HINSTANCE hInstString;
  616. FILETIME ftTimeStamp;
  617. DWORD dwCRC;
  618. CHAR tszActionMap[MAX_PATH];
  619. } DIACTIONFORMATA, *LPDIACTIONFORMATA;
  620. typedef struct _DIACTIONFORMATW {
  621. DWORD dwSize;
  622. DWORD dwActionSize;
  623. DWORD dwDataSize;
  624. DWORD dwNumActions;
  625. LPDIACTIONW rgoAction;
  626. GUID guidActionMap;
  627. DWORD dwGenre;
  628. DWORD dwBufferSize;
  629. OPTIONAL LONG lAxisMin;
  630. OPTIONAL LONG lAxisMax;
  631. OPTIONAL HINSTANCE hInstString;
  632. FILETIME ftTimeStamp;
  633. DWORD dwCRC;
  634. WCHAR tszActionMap[MAX_PATH];
  635. } DIACTIONFORMATW, *LPDIACTIONFORMATW;
  636. #ifdef UNICODE
  637. typedef DIACTIONFORMATW DIACTIONFORMAT;
  638. typedef LPDIACTIONFORMATW LPDIACTIONFORMAT;
  639. #else
  640. typedef DIACTIONFORMATA DIACTIONFORMAT;
  641. typedef LPDIACTIONFORMATA LPDIACTIONFORMAT;
  642. #endif // UNICODE
  643. typedef const DIACTIONFORMATA *LPCDIACTIONFORMATA;
  644. typedef const DIACTIONFORMATW *LPCDIACTIONFORMATW;
  645. #ifdef UNICODE
  646. typedef DIACTIONFORMATW DIACTIONFORMAT;
  647. typedef LPCDIACTIONFORMATW LPCDIACTIONFORMAT;
  648. #else
  649. typedef DIACTIONFORMATA DIACTIONFORMAT;
  650. typedef LPCDIACTIONFORMATA LPCDIACTIONFORMAT;
  651. #endif // UNICODE
  652. typedef const DIACTIONFORMAT *LPCDIACTIONFORMAT;
  653. #define DIAFTS_NEWDEVICELOW 0xFFFFFFFF
  654. #define DIAFTS_NEWDEVICEHIGH 0xFFFFFFFF
  655. #define DIAFTS_UNUSEDDEVICELOW 0x00000000
  656. #define DIAFTS_UNUSEDDEVICEHIGH 0x00000000
  657. #define DIDBAM_DEFAULT 0x00000000
  658. #define DIDBAM_PRESERVE 0x00000001
  659. #define DIDBAM_INITIALIZE 0x00000002
  660. #define DIDBAM_HWDEFAULTS 0x00000004
  661. #define DIDSAM_DEFAULT 0x00000000
  662. #define DIDSAM_NOUSER 0x00000001
  663. #define DIDSAM_FORCESAVE 0x00000002
  664. #define DICD_DEFAULT 0x00000000
  665. #define DICD_EDIT 0x00000001
  666. /*
  667. * The following definition is normally defined in d3dtypes.h
  668. */
  669. #ifndef D3DCOLOR_DEFINED
  670. typedef DWORD D3DCOLOR;
  671. #define D3DCOLOR_DEFINED
  672. #endif
  673. typedef struct _DICOLORSET{
  674. DWORD dwSize;
  675. D3DCOLOR cTextFore;
  676. D3DCOLOR cTextHighlight;
  677. D3DCOLOR cCalloutLine;
  678. D3DCOLOR cCalloutHighlight;
  679. D3DCOLOR cBorder;
  680. D3DCOLOR cControlFill;
  681. D3DCOLOR cHighlightFill;
  682. D3DCOLOR cAreaFill;
  683. } DICOLORSET, *LPDICOLORSET;
  684. typedef const DICOLORSET *LPCDICOLORSET;
  685. typedef struct _DICONFIGUREDEVICESPARAMSA{
  686. DWORD dwSize;
  687. DWORD dwcUsers;
  688. LPSTR lptszUserNames;
  689. DWORD dwcFormats;
  690. LPDIACTIONFORMATA lprgFormats;
  691. HWND hwnd;
  692. DICOLORSET dics;
  693. IUnknown FAR * lpUnkDDSTarget;
  694. } DICONFIGUREDEVICESPARAMSA, *LPDICONFIGUREDEVICESPARAMSA;
  695. typedef struct _DICONFIGUREDEVICESPARAMSW{
  696. DWORD dwSize;
  697. DWORD dwcUsers;
  698. LPWSTR lptszUserNames;
  699. DWORD dwcFormats;
  700. LPDIACTIONFORMATW lprgFormats;
  701. HWND hwnd;
  702. DICOLORSET dics;
  703. IUnknown FAR * lpUnkDDSTarget;
  704. } DICONFIGUREDEVICESPARAMSW, *LPDICONFIGUREDEVICESPARAMSW;
  705. #ifdef UNICODE
  706. typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS;
  707. typedef LPDICONFIGUREDEVICESPARAMSW LPDICONFIGUREDEVICESPARAMS;
  708. #else
  709. typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS;
  710. typedef LPDICONFIGUREDEVICESPARAMSA LPDICONFIGUREDEVICESPARAMS;
  711. #endif // UNICODE
  712. typedef const DICONFIGUREDEVICESPARAMSA *LPCDICONFIGUREDEVICESPARAMSA;
  713. typedef const DICONFIGUREDEVICESPARAMSW *LPCDICONFIGUREDEVICESPARAMSW;
  714. #ifdef UNICODE
  715. typedef DICONFIGUREDEVICESPARAMSW DICONFIGUREDEVICESPARAMS;
  716. typedef LPCDICONFIGUREDEVICESPARAMSW LPCDICONFIGUREDEVICESPARAMS;
  717. #else
  718. typedef DICONFIGUREDEVICESPARAMSA DICONFIGUREDEVICESPARAMS;
  719. typedef LPCDICONFIGUREDEVICESPARAMSA LPCDICONFIGUREDEVICESPARAMS;
  720. #endif // UNICODE
  721. typedef const DICONFIGUREDEVICESPARAMS *LPCDICONFIGUREDEVICESPARAMS;
  722. #define DIDIFT_CONFIGURATION 0x00000001
  723. #define DIDIFT_OVERLAY 0x00000002
  724. #define DIDAL_CENTERED 0x00000000
  725. #define DIDAL_LEFTALIGNED 0x00000001
  726. #define DIDAL_RIGHTALIGNED 0x00000002
  727. #define DIDAL_MIDDLE 0x00000000
  728. #define DIDAL_TOPALIGNED 0x00000004
  729. #define DIDAL_BOTTOMALIGNED 0x00000008
  730. typedef struct _DIDEVICEIMAGEINFOA {
  731. CHAR tszImagePath[MAX_PATH];
  732. DWORD dwFlags;
  733. // These are valid if DIDIFT_OVERLAY is present in dwFlags.
  734. DWORD dwViewID;
  735. RECT rcOverlay;
  736. DWORD dwObjID;
  737. DWORD dwcValidPts;
  738. POINT rgptCalloutLine[5];
  739. RECT rcCalloutRect;
  740. DWORD dwTextAlign;
  741. } DIDEVICEIMAGEINFOA, *LPDIDEVICEIMAGEINFOA;
  742. typedef struct _DIDEVICEIMAGEINFOW {
  743. WCHAR tszImagePath[MAX_PATH];
  744. DWORD dwFlags;
  745. // These are valid if DIDIFT_OVERLAY is present in dwFlags.
  746. DWORD dwViewID;
  747. RECT rcOverlay;
  748. DWORD dwObjID;
  749. DWORD dwcValidPts;
  750. POINT rgptCalloutLine[5];
  751. RECT rcCalloutRect;
  752. DWORD dwTextAlign;
  753. } DIDEVICEIMAGEINFOW, *LPDIDEVICEIMAGEINFOW;
  754. #ifdef UNICODE
  755. typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO;
  756. typedef LPDIDEVICEIMAGEINFOW LPDIDEVICEIMAGEINFO;
  757. #else
  758. typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO;
  759. typedef LPDIDEVICEIMAGEINFOA LPDIDEVICEIMAGEINFO;
  760. #endif // UNICODE
  761. typedef const DIDEVICEIMAGEINFOA *LPCDIDEVICEIMAGEINFOA;
  762. typedef const DIDEVICEIMAGEINFOW *LPCDIDEVICEIMAGEINFOW;
  763. #ifdef UNICODE
  764. typedef DIDEVICEIMAGEINFOW DIDEVICEIMAGEINFO;
  765. typedef LPCDIDEVICEIMAGEINFOW LPCDIDEVICEIMAGEINFO;
  766. #else
  767. typedef DIDEVICEIMAGEINFOA DIDEVICEIMAGEINFO;
  768. typedef LPCDIDEVICEIMAGEINFOA LPCDIDEVICEIMAGEINFO;
  769. #endif // UNICODE
  770. typedef const DIDEVICEIMAGEINFO *LPCDIDEVICEIMAGEINFO;
  771. typedef struct _DIDEVICEIMAGEINFOHEADERA {
  772. DWORD dwSize;
  773. DWORD dwSizeImageInfo;
  774. DWORD dwcViews;
  775. DWORD dwcButtons;
  776. DWORD dwcAxes;
  777. DWORD dwcPOVs;
  778. DWORD dwBufferSize;
  779. DWORD dwBufferUsed;
  780. LPDIDEVICEIMAGEINFOA lprgImageInfoArray;
  781. } DIDEVICEIMAGEINFOHEADERA, *LPDIDEVICEIMAGEINFOHEADERA;
  782. typedef struct _DIDEVICEIMAGEINFOHEADERW {
  783. DWORD dwSize;
  784. DWORD dwSizeImageInfo;
  785. DWORD dwcViews;
  786. DWORD dwcButtons;
  787. DWORD dwcAxes;
  788. DWORD dwcPOVs;
  789. DWORD dwBufferSize;
  790. DWORD dwBufferUsed;
  791. LPDIDEVICEIMAGEINFOW lprgImageInfoArray;
  792. } DIDEVICEIMAGEINFOHEADERW, *LPDIDEVICEIMAGEINFOHEADERW;
  793. #ifdef UNICODE
  794. typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER;
  795. typedef LPDIDEVICEIMAGEINFOHEADERW LPDIDEVICEIMAGEINFOHEADER;
  796. #else
  797. typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER;
  798. typedef LPDIDEVICEIMAGEINFOHEADERA LPDIDEVICEIMAGEINFOHEADER;
  799. #endif // UNICODE
  800. typedef const DIDEVICEIMAGEINFOHEADERA *LPCDIDEVICEIMAGEINFOHEADERA;
  801. typedef const DIDEVICEIMAGEINFOHEADERW *LPCDIDEVICEIMAGEINFOHEADERW;
  802. #ifdef UNICODE
  803. typedef DIDEVICEIMAGEINFOHEADERW DIDEVICEIMAGEINFOHEADER;
  804. typedef LPCDIDEVICEIMAGEINFOHEADERW LPCDIDEVICEIMAGEINFOHEADER;
  805. #else
  806. typedef DIDEVICEIMAGEINFOHEADERA DIDEVICEIMAGEINFOHEADER;
  807. typedef LPCDIDEVICEIMAGEINFOHEADERA LPCDIDEVICEIMAGEINFOHEADER;
  808. #endif // UNICODE
  809. typedef const DIDEVICEIMAGEINFOHEADER *LPCDIDEVICEIMAGEINFOHEADER;
  810. #endif /* DIRECTINPUT_VERSION > 0x0700 */
  811. #if(DIRECTINPUT_VERSION >= 0x0500)
  812. /* These structures are defined for DirectX 3.0 compatibility */
  813. typedef struct DIDEVICEOBJECTINSTANCE_DX3A {
  814. DWORD dwSize;
  815. GUID guidType;
  816. DWORD dwOfs;
  817. DWORD dwType;
  818. DWORD dwFlags;
  819. CHAR tszName[MAX_PATH];
  820. } DIDEVICEOBJECTINSTANCE_DX3A, *LPDIDEVICEOBJECTINSTANCE_DX3A;
  821. typedef struct DIDEVICEOBJECTINSTANCE_DX3W {
  822. DWORD dwSize;
  823. GUID guidType;
  824. DWORD dwOfs;
  825. DWORD dwType;
  826. DWORD dwFlags;
  827. WCHAR tszName[MAX_PATH];
  828. } DIDEVICEOBJECTINSTANCE_DX3W, *LPDIDEVICEOBJECTINSTANCE_DX3W;
  829. #ifdef UNICODE
  830. typedef DIDEVICEOBJECTINSTANCE_DX3W DIDEVICEOBJECTINSTANCE_DX3;
  831. typedef LPDIDEVICEOBJECTINSTANCE_DX3W LPDIDEVICEOBJECTINSTANCE_DX3;
  832. #else
  833. typedef DIDEVICEOBJECTINSTANCE_DX3A DIDEVICEOBJECTINSTANCE_DX3;
  834. typedef LPDIDEVICEOBJECTINSTANCE_DX3A LPDIDEVICEOBJECTINSTANCE_DX3;
  835. #endif // UNICODE
  836. typedef const DIDEVICEOBJECTINSTANCE_DX3A *LPCDIDEVICEOBJECTINSTANCE_DX3A;
  837. typedef const DIDEVICEOBJECTINSTANCE_DX3W *LPCDIDEVICEOBJECTINSTANCE_DX3W;
  838. typedef const DIDEVICEOBJECTINSTANCE_DX3 *LPCDIDEVICEOBJECTINSTANCE_DX3;
  839. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  840. typedef struct DIDEVICEOBJECTINSTANCEA {
  841. DWORD dwSize;
  842. GUID guidType;
  843. DWORD dwOfs;
  844. DWORD dwType;
  845. DWORD dwFlags;
  846. CHAR tszName[MAX_PATH];
  847. #if(DIRECTINPUT_VERSION >= 0x0500)
  848. DWORD dwFFMaxForce;
  849. DWORD dwFFForceResolution;
  850. WORD wCollectionNumber;
  851. WORD wDesignatorIndex;
  852. WORD wUsagePage;
  853. WORD wUsage;
  854. DWORD dwDimension;
  855. WORD wExponent;
  856. WORD wReportId;
  857. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  858. } DIDEVICEOBJECTINSTANCEA, *LPDIDEVICEOBJECTINSTANCEA;
  859. typedef struct DIDEVICEOBJECTINSTANCEW {
  860. DWORD dwSize;
  861. GUID guidType;
  862. DWORD dwOfs;
  863. DWORD dwType;
  864. DWORD dwFlags;
  865. WCHAR tszName[MAX_PATH];
  866. #if(DIRECTINPUT_VERSION >= 0x0500)
  867. DWORD dwFFMaxForce;
  868. DWORD dwFFForceResolution;
  869. WORD wCollectionNumber;
  870. WORD wDesignatorIndex;
  871. WORD wUsagePage;
  872. WORD wUsage;
  873. DWORD dwDimension;
  874. WORD wExponent;
  875. WORD wReportId;
  876. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  877. } DIDEVICEOBJECTINSTANCEW, *LPDIDEVICEOBJECTINSTANCEW;
  878. #ifdef UNICODE
  879. typedef DIDEVICEOBJECTINSTANCEW DIDEVICEOBJECTINSTANCE;
  880. typedef LPDIDEVICEOBJECTINSTANCEW LPDIDEVICEOBJECTINSTANCE;
  881. #else
  882. typedef DIDEVICEOBJECTINSTANCEA DIDEVICEOBJECTINSTANCE;
  883. typedef LPDIDEVICEOBJECTINSTANCEA LPDIDEVICEOBJECTINSTANCE;
  884. #endif // UNICODE
  885. typedef const DIDEVICEOBJECTINSTANCEA *LPCDIDEVICEOBJECTINSTANCEA;
  886. typedef const DIDEVICEOBJECTINSTANCEW *LPCDIDEVICEOBJECTINSTANCEW;
  887. typedef const DIDEVICEOBJECTINSTANCE *LPCDIDEVICEOBJECTINSTANCE;
  888. typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKA)(LPCDIDEVICEOBJECTINSTANCEA, LPVOID);
  889. typedef BOOL (FAR PASCAL * LPDIENUMDEVICEOBJECTSCALLBACKW)(LPCDIDEVICEOBJECTINSTANCEW, LPVOID);
  890. #ifdef UNICODE
  891. #define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKW
  892. #else
  893. #define LPDIENUMDEVICEOBJECTSCALLBACK LPDIENUMDEVICEOBJECTSCALLBACKA
  894. #endif // !UNICODE
  895. #if(DIRECTINPUT_VERSION >= 0x0500)
  896. #define DIDOI_FFACTUATOR 0x00000001
  897. #define DIDOI_FFEFFECTTRIGGER 0x00000002
  898. #define DIDOI_POLLED 0x00008000
  899. #define DIDOI_ASPECTPOSITION 0x00000100
  900. #define DIDOI_ASPECTVELOCITY 0x00000200
  901. #define DIDOI_ASPECTACCEL 0x00000300
  902. #define DIDOI_ASPECTFORCE 0x00000400
  903. #define DIDOI_ASPECTMASK 0x00000F00
  904. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  905. #if(DIRECTINPUT_VERSION >= 0x050a)
  906. #define DIDOI_GUIDISUSAGE 0x00010000
  907. #endif /* DIRECTINPUT_VERSION >= 0x050a */
  908. typedef struct DIPROPHEADER {
  909. DWORD dwSize;
  910. DWORD dwHeaderSize;
  911. DWORD dwObj;
  912. DWORD dwHow;
  913. } DIPROPHEADER, *LPDIPROPHEADER;
  914. typedef const DIPROPHEADER *LPCDIPROPHEADER;
  915. #define DIPH_DEVICE 0
  916. #define DIPH_BYOFFSET 1
  917. #define DIPH_BYID 2
  918. #if(DIRECTINPUT_VERSION >= 0x050a)
  919. #define DIPH_BYUSAGE 3
  920. #endif /* DIRECTINPUT_VERSION >= 0x050a */
  921. #if(DIRECTINPUT_VERSION >= 0x050a)
  922. #define DIMAKEUSAGEDWORD(UsagePage, Usage) \
  923. (DWORD)MAKELONG(Usage, UsagePage)
  924. #endif /* DIRECTINPUT_VERSION >= 0x050a */
  925. typedef struct DIPROPDWORD {
  926. DIPROPHEADER diph;
  927. DWORD dwData;
  928. } DIPROPDWORD, *LPDIPROPDWORD;
  929. typedef const DIPROPDWORD *LPCDIPROPDWORD;
  930. #if(DIRECTINPUT_VERSION >= 0x0800)
  931. typedef struct DIPROPPOINTER {
  932. DIPROPHEADER diph;
  933. UINT_PTR uData;
  934. } DIPROPPOINTER, *LPDIPROPPOINTER;
  935. typedef const DIPROPPOINTER *LPCDIPROPPOINTER;
  936. #endif /* DIRECTINPUT_VERSION >= 0x0800 */
  937. typedef struct DIPROPRANGE {
  938. DIPROPHEADER diph;
  939. LONG lMin;
  940. LONG lMax;
  941. } DIPROPRANGE, *LPDIPROPRANGE;
  942. typedef const DIPROPRANGE *LPCDIPROPRANGE;
  943. #define DIPROPRANGE_NOMIN ((LONG)0x80000000)
  944. #define DIPROPRANGE_NOMAX ((LONG)0x7FFFFFFF)
  945. #if(DIRECTINPUT_VERSION >= 0x050a)
  946. typedef struct DIPROPCAL {
  947. DIPROPHEADER diph;
  948. LONG lMin;
  949. LONG lCenter;
  950. LONG lMax;
  951. } DIPROPCAL, *LPDIPROPCAL;
  952. typedef const DIPROPCAL *LPCDIPROPCAL;
  953. typedef struct DIPROPCALPOV {
  954. DIPROPHEADER diph;
  955. LONG lMin[5];
  956. LONG lMax[5];
  957. } DIPROPCALPOV, *LPDIPROPCALPOV;
  958. typedef const DIPROPCALPOV *LPCDIPROPCALPOV;
  959. typedef struct DIPROPGUIDANDPATH {
  960. DIPROPHEADER diph;
  961. GUID guidClass;
  962. WCHAR wszPath[MAX_PATH];
  963. } DIPROPGUIDANDPATH, *LPDIPROPGUIDANDPATH;
  964. typedef const DIPROPGUIDANDPATH *LPCDIPROPGUIDANDPATH;
  965. typedef struct DIPROPSTRING {
  966. DIPROPHEADER diph;
  967. WCHAR wsz[MAX_PATH];
  968. } DIPROPSTRING, *LPDIPROPSTRING;
  969. typedef const DIPROPSTRING *LPCDIPROPSTRING;
  970. #endif /* DIRECTINPUT_VERSION >= 0x050a */
  971. #if(DIRECTINPUT_VERSION >= 0x0800)
  972. #define MAXCPOINTSNUM 8
  973. typedef struct _CPOINT
  974. {
  975. LONG lP; // raw value
  976. DWORD dwLog; // logical_value / max_logical_value * 10000
  977. } CPOINT, *PCPOINT;
  978. typedef struct DIPROPCPOINTS {
  979. DIPROPHEADER diph;
  980. DWORD dwCPointsNum;
  981. CPOINT cp[MAXCPOINTSNUM];
  982. } DIPROPCPOINTS, *LPDIPROPCPOINTS;
  983. typedef const DIPROPCPOINTS *LPCDIPROPCPOINTS;
  984. #endif /* DIRECTINPUT_VERSION >= 0x0800 */
  985. #ifdef __cplusplus
  986. #define MAKEDIPROP(prop) (*(const GUID *)(prop))
  987. #else
  988. #define MAKEDIPROP(prop) ((REFGUID)(prop))
  989. #endif
  990. #define DIPROP_BUFFERSIZE MAKEDIPROP(1)
  991. #define DIPROP_AXISMODE MAKEDIPROP(2)
  992. #define DIPROPAXISMODE_ABS 0
  993. #define DIPROPAXISMODE_REL 1
  994. #define DIPROP_GRANULARITY MAKEDIPROP(3)
  995. #define DIPROP_RANGE MAKEDIPROP(4)
  996. #define DIPROP_DEADZONE MAKEDIPROP(5)
  997. #define DIPROP_SATURATION MAKEDIPROP(6)
  998. #define DIPROP_FFGAIN MAKEDIPROP(7)
  999. #define DIPROP_FFLOAD MAKEDIPROP(8)
  1000. #define DIPROP_AUTOCENTER MAKEDIPROP(9)
  1001. #define DIPROPAUTOCENTER_OFF 0
  1002. #define DIPROPAUTOCENTER_ON 1
  1003. #define DIPROP_CALIBRATIONMODE MAKEDIPROP(10)
  1004. #define DIPROPCALIBRATIONMODE_COOKED 0
  1005. #define DIPROPCALIBRATIONMODE_RAW 1
  1006. #if(DIRECTINPUT_VERSION >= 0x050a)
  1007. #define DIPROP_CALIBRATION MAKEDIPROP(11)
  1008. #define DIPROP_GUIDANDPATH MAKEDIPROP(12)
  1009. #define DIPROP_INSTANCENAME MAKEDIPROP(13)
  1010. #define DIPROP_PRODUCTNAME MAKEDIPROP(14)
  1011. #endif /* DIRECTINPUT_VERSION >= 0x050a */
  1012. #if(DIRECTINPUT_VERSION >= 0x05b2)
  1013. #define DIPROP_JOYSTICKID MAKEDIPROP(15)
  1014. #define DIPROP_GETPORTDISPLAYNAME MAKEDIPROP(16)
  1015. #endif /* DIRECTINPUT_VERSION >= 0x05b2 */
  1016. #if(DIRECTINPUT_VERSION >= 0x0700)
  1017. #define DIPROP_PHYSICALRANGE MAKEDIPROP(18)
  1018. #define DIPROP_LOGICALRANGE MAKEDIPROP(19)
  1019. #endif /* DIRECTINPUT_VERSION >= 0x0700 */
  1020. #if(DIRECTINPUT_VERSION >= 0x0800)
  1021. #define DIPROP_KEYNAME MAKEDIPROP(20)
  1022. #define DIPROP_CPOINTS MAKEDIPROP(21)
  1023. #define DIPROP_APPDATA MAKEDIPROP(22)
  1024. #define DIPROP_SCANCODE MAKEDIPROP(23)
  1025. #define DIPROP_VIDPID MAKEDIPROP(24)
  1026. #define DIPROP_USERNAME MAKEDIPROP(25)
  1027. #define DIPROP_TYPENAME MAKEDIPROP(26)
  1028. #endif /* DIRECTINPUT_VERSION >= 0x0800 */
  1029. typedef struct DIDEVICEOBJECTDATA_DX3 {
  1030. DWORD dwOfs;
  1031. DWORD dwData;
  1032. DWORD dwTimeStamp;
  1033. DWORD dwSequence;
  1034. } DIDEVICEOBJECTDATA_DX3, *LPDIDEVICEOBJECTDATA_DX3;
  1035. typedef const DIDEVICEOBJECTDATA_DX3 *LPCDIDEVICEOBJECTDATA_DX;
  1036. typedef struct DIDEVICEOBJECTDATA {
  1037. DWORD dwOfs;
  1038. DWORD dwData;
  1039. DWORD dwTimeStamp;
  1040. DWORD dwSequence;
  1041. #if(DIRECTINPUT_VERSION >= 0x0800)
  1042. UINT_PTR uAppData;
  1043. #endif /* DIRECTINPUT_VERSION >= 0x0800 */
  1044. } DIDEVICEOBJECTDATA, *LPDIDEVICEOBJECTDATA;
  1045. typedef const DIDEVICEOBJECTDATA *LPCDIDEVICEOBJECTDATA;
  1046. #define DIGDD_PEEK 0x00000001
  1047. #define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \
  1048. ((int)((dwSequence1) - (dwSequence2)) cmp 0)
  1049. #define DISCL_EXCLUSIVE 0x00000001
  1050. #define DISCL_NONEXCLUSIVE 0x00000002
  1051. #define DISCL_FOREGROUND 0x00000004
  1052. #define DISCL_BACKGROUND 0x00000008
  1053. #define DISCL_NOWINKEY 0x00000010
  1054. #if(DIRECTINPUT_VERSION >= 0x0500)
  1055. /* These structures are defined for DirectX 3.0 compatibility */
  1056. typedef struct DIDEVICEINSTANCE_DX3A {
  1057. DWORD dwSize;
  1058. GUID guidInstance;
  1059. GUID guidProduct;
  1060. DWORD dwDevType;
  1061. CHAR tszInstanceName[MAX_PATH];
  1062. CHAR tszProductName[MAX_PATH];
  1063. } DIDEVICEINSTANCE_DX3A, *LPDIDEVICEINSTANCE_DX3A;
  1064. typedef struct DIDEVICEINSTANCE_DX3W {
  1065. DWORD dwSize;
  1066. GUID guidInstance;
  1067. GUID guidProduct;
  1068. DWORD dwDevType;
  1069. WCHAR tszInstanceName[MAX_PATH];
  1070. WCHAR tszProductName[MAX_PATH];
  1071. } DIDEVICEINSTANCE_DX3W, *LPDIDEVICEINSTANCE_DX3W;
  1072. #ifdef UNICODE
  1073. typedef DIDEVICEINSTANCE_DX3W DIDEVICEINSTANCE_DX3;
  1074. typedef LPDIDEVICEINSTANCE_DX3W LPDIDEVICEINSTANCE_DX3;
  1075. #else
  1076. typedef DIDEVICEINSTANCE_DX3A DIDEVICEINSTANCE_DX3;
  1077. typedef LPDIDEVICEINSTANCE_DX3A LPDIDEVICEINSTANCE_DX3;
  1078. #endif // UNICODE
  1079. typedef const DIDEVICEINSTANCE_DX3A *LPCDIDEVICEINSTANCE_DX3A;
  1080. typedef const DIDEVICEINSTANCE_DX3W *LPCDIDEVICEINSTANCE_DX3W;
  1081. typedef const DIDEVICEINSTANCE_DX3 *LPCDIDEVICEINSTANCE_DX3;
  1082. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  1083. typedef struct DIDEVICEINSTANCEA {
  1084. DWORD dwSize;
  1085. GUID guidInstance;
  1086. GUID guidProduct;
  1087. DWORD dwDevType;
  1088. CHAR tszInstanceName[MAX_PATH];
  1089. CHAR tszProductName[MAX_PATH];
  1090. #if(DIRECTINPUT_VERSION >= 0x0500)
  1091. GUID guidFFDriver;
  1092. WORD wUsagePage;
  1093. WORD wUsage;
  1094. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  1095. } DIDEVICEINSTANCEA, *LPDIDEVICEINSTANCEA;
  1096. typedef struct DIDEVICEINSTANCEW {
  1097. DWORD dwSize;
  1098. GUID guidInstance;
  1099. GUID guidProduct;
  1100. DWORD dwDevType;
  1101. WCHAR tszInstanceName[MAX_PATH];
  1102. WCHAR tszProductName[MAX_PATH];
  1103. #if(DIRECTINPUT_VERSION >= 0x0500)
  1104. GUID guidFFDriver;
  1105. WORD wUsagePage;
  1106. WORD wUsage;
  1107. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  1108. } DIDEVICEINSTANCEW, *LPDIDEVICEINSTANCEW;
  1109. #ifdef UNICODE
  1110. typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE;
  1111. typedef LPDIDEVICEINSTANCEW LPDIDEVICEINSTANCE;
  1112. #else
  1113. typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE;
  1114. typedef LPDIDEVICEINSTANCEA LPDIDEVICEINSTANCE;
  1115. #endif // UNICODE
  1116. typedef const DIDEVICEINSTANCEA *LPCDIDEVICEINSTANCEA;
  1117. typedef const DIDEVICEINSTANCEW *LPCDIDEVICEINSTANCEW;
  1118. #ifdef UNICODE
  1119. typedef DIDEVICEINSTANCEW DIDEVICEINSTANCE;
  1120. typedef LPCDIDEVICEINSTANCEW LPCDIDEVICEINSTANCE;
  1121. #else
  1122. typedef DIDEVICEINSTANCEA DIDEVICEINSTANCE;
  1123. typedef LPCDIDEVICEINSTANCEA LPCDIDEVICEINSTANCE;
  1124. #endif // UNICODE
  1125. typedef const DIDEVICEINSTANCE *LPCDIDEVICEINSTANCE;
  1126. #undef INTERFACE
  1127. #define INTERFACE IDirectInputDeviceW
  1128. DECLARE_INTERFACE_(IDirectInputDeviceW, IUnknown)
  1129. {
  1130. /*** IUnknown methods ***/
  1131. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  1132. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1133. STDMETHOD_(ULONG,Release)(THIS) PURE;
  1134. /*** IDirectInputDeviceW methods ***/
  1135. STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
  1136. STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
  1137. STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
  1138. STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
  1139. STDMETHOD(Acquire)(THIS) PURE;
  1140. STDMETHOD(Unacquire)(THIS) PURE;
  1141. STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
  1142. STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1143. STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
  1144. STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
  1145. STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
  1146. STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
  1147. STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
  1148. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  1149. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
  1150. };
  1151. typedef struct IDirectInputDeviceW *LPDIRECTINPUTDEVICEW;
  1152. #undef INTERFACE
  1153. #define INTERFACE IDirectInputDeviceA
  1154. DECLARE_INTERFACE_(IDirectInputDeviceA, IUnknown)
  1155. {
  1156. /*** IUnknown methods ***/
  1157. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  1158. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1159. STDMETHOD_(ULONG,Release)(THIS) PURE;
  1160. /*** IDirectInputDeviceA methods ***/
  1161. STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
  1162. STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
  1163. STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
  1164. STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
  1165. STDMETHOD(Acquire)(THIS) PURE;
  1166. STDMETHOD(Unacquire)(THIS) PURE;
  1167. STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
  1168. STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1169. STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
  1170. STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
  1171. STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
  1172. STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
  1173. STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
  1174. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  1175. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
  1176. };
  1177. typedef struct IDirectInputDeviceA *LPDIRECTINPUTDEVICEA;
  1178. #ifdef UNICODE
  1179. #define IID_IDirectInputDevice IID_IDirectInputDeviceW
  1180. #define IDirectInputDevice IDirectInputDeviceW
  1181. #define IDirectInputDeviceVtbl IDirectInputDeviceWVtbl
  1182. #else
  1183. #define IID_IDirectInputDevice IID_IDirectInputDeviceA
  1184. #define IDirectInputDevice IDirectInputDeviceA
  1185. #define IDirectInputDeviceVtbl IDirectInputDeviceAVtbl
  1186. #endif
  1187. typedef struct IDirectInputDevice *LPDIRECTINPUTDEVICE;
  1188. #if !defined(__cplusplus) || defined(CINTERFACE)
  1189. #define IDirectInputDevice_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  1190. #define IDirectInputDevice_AddRef(p) (p)->lpVtbl->AddRef(p)
  1191. #define IDirectInputDevice_Release(p) (p)->lpVtbl->Release(p)
  1192. #define IDirectInputDevice_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
  1193. #define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
  1194. #define IDirectInputDevice_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
  1195. #define IDirectInputDevice_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
  1196. #define IDirectInputDevice_Acquire(p) (p)->lpVtbl->Acquire(p)
  1197. #define IDirectInputDevice_Unacquire(p) (p)->lpVtbl->Unacquire(p)
  1198. #define IDirectInputDevice_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
  1199. #define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
  1200. #define IDirectInputDevice_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
  1201. #define IDirectInputDevice_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
  1202. #define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
  1203. #define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
  1204. #define IDirectInputDevice_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
  1205. #define IDirectInputDevice_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
  1206. #define IDirectInputDevice_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
  1207. #else
  1208. #define IDirectInputDevice_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  1209. #define IDirectInputDevice_AddRef(p) (p)->AddRef()
  1210. #define IDirectInputDevice_Release(p) (p)->Release()
  1211. #define IDirectInputDevice_GetCapabilities(p,a) (p)->GetCapabilities(a)
  1212. #define IDirectInputDevice_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
  1213. #define IDirectInputDevice_GetProperty(p,a,b) (p)->GetProperty(a,b)
  1214. #define IDirectInputDevice_SetProperty(p,a,b) (p)->SetProperty(a,b)
  1215. #define IDirectInputDevice_Acquire(p) (p)->Acquire()
  1216. #define IDirectInputDevice_Unacquire(p) (p)->Unacquire()
  1217. #define IDirectInputDevice_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
  1218. #define IDirectInputDevice_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
  1219. #define IDirectInputDevice_SetDataFormat(p,a) (p)->SetDataFormat(a)
  1220. #define IDirectInputDevice_SetEventNotification(p,a) (p)->SetEventNotification(a)
  1221. #define IDirectInputDevice_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
  1222. #define IDirectInputDevice_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
  1223. #define IDirectInputDevice_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
  1224. #define IDirectInputDevice_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
  1225. #define IDirectInputDevice_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
  1226. #endif
  1227. #endif /* DIJ_RINGZERO */
  1228. #if(DIRECTINPUT_VERSION >= 0x0500)
  1229. #define DISFFC_RESET 0x00000001
  1230. #define DISFFC_STOPALL 0x00000002
  1231. #define DISFFC_PAUSE 0x00000004
  1232. #define DISFFC_CONTINUE 0x00000008
  1233. #define DISFFC_SETACTUATORSON 0x00000010
  1234. #define DISFFC_SETACTUATORSOFF 0x00000020
  1235. #define DIGFFS_EMPTY 0x00000001
  1236. #define DIGFFS_STOPPED 0x00000002
  1237. #define DIGFFS_PAUSED 0x00000004
  1238. #define DIGFFS_ACTUATORSON 0x00000010
  1239. #define DIGFFS_ACTUATORSOFF 0x00000020
  1240. #define DIGFFS_POWERON 0x00000040
  1241. #define DIGFFS_POWEROFF 0x00000080
  1242. #define DIGFFS_SAFETYSWITCHON 0x00000100
  1243. #define DIGFFS_SAFETYSWITCHOFF 0x00000200
  1244. #define DIGFFS_USERFFSWITCHON 0x00000400
  1245. #define DIGFFS_USERFFSWITCHOFF 0x00000800
  1246. #define DIGFFS_DEVICELOST 0x80000000
  1247. #ifndef DIJ_RINGZERO
  1248. typedef struct DIEFFECTINFOA {
  1249. DWORD dwSize;
  1250. GUID guid;
  1251. DWORD dwEffType;
  1252. DWORD dwStaticParams;
  1253. DWORD dwDynamicParams;
  1254. CHAR tszName[MAX_PATH];
  1255. } DIEFFECTINFOA, *LPDIEFFECTINFOA;
  1256. typedef struct DIEFFECTINFOW {
  1257. DWORD dwSize;
  1258. GUID guid;
  1259. DWORD dwEffType;
  1260. DWORD dwStaticParams;
  1261. DWORD dwDynamicParams;
  1262. WCHAR tszName[MAX_PATH];
  1263. } DIEFFECTINFOW, *LPDIEFFECTINFOW;
  1264. #ifdef UNICODE
  1265. typedef DIEFFECTINFOW DIEFFECTINFO;
  1266. typedef LPDIEFFECTINFOW LPDIEFFECTINFO;
  1267. #else
  1268. typedef DIEFFECTINFOA DIEFFECTINFO;
  1269. typedef LPDIEFFECTINFOA LPDIEFFECTINFO;
  1270. #endif // UNICODE
  1271. typedef const DIEFFECTINFOA *LPCDIEFFECTINFOA;
  1272. typedef const DIEFFECTINFOW *LPCDIEFFECTINFOW;
  1273. typedef const DIEFFECTINFO *LPCDIEFFECTINFO;
  1274. #define DISDD_CONTINUE 0x00000001
  1275. typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKA)(LPCDIEFFECTINFOA, LPVOID);
  1276. typedef BOOL (FAR PASCAL * LPDIENUMEFFECTSCALLBACKW)(LPCDIEFFECTINFOW, LPVOID);
  1277. #ifdef UNICODE
  1278. #define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKW
  1279. #else
  1280. #define LPDIENUMEFFECTSCALLBACK LPDIENUMEFFECTSCALLBACKA
  1281. #endif // !UNICODE
  1282. typedef BOOL (FAR PASCAL * LPDIENUMCREATEDEFFECTOBJECTSCALLBACK)(LPDIRECTINPUTEFFECT, LPVOID);
  1283. #undef INTERFACE
  1284. #define INTERFACE IDirectInputDevice2W
  1285. DECLARE_INTERFACE_(IDirectInputDevice2W, IDirectInputDeviceW)
  1286. {
  1287. /*** IUnknown methods ***/
  1288. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  1289. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1290. STDMETHOD_(ULONG,Release)(THIS) PURE;
  1291. /*** IDirectInputDeviceW methods ***/
  1292. STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
  1293. STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
  1294. STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
  1295. STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
  1296. STDMETHOD(Acquire)(THIS) PURE;
  1297. STDMETHOD(Unacquire)(THIS) PURE;
  1298. STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
  1299. STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1300. STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
  1301. STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
  1302. STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
  1303. STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
  1304. STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
  1305. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  1306. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
  1307. /*** IDirectInputDevice2W methods ***/
  1308. STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
  1309. STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE;
  1310. STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE;
  1311. STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
  1312. STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
  1313. STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
  1314. STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
  1315. STDMETHOD(Poll)(THIS) PURE;
  1316. STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1317. };
  1318. typedef struct IDirectInputDevice2W *LPDIRECTINPUTDEVICE2W;
  1319. #undef INTERFACE
  1320. #define INTERFACE IDirectInputDevice2A
  1321. DECLARE_INTERFACE_(IDirectInputDevice2A, IDirectInputDeviceA)
  1322. {
  1323. /*** IUnknown methods ***/
  1324. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  1325. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1326. STDMETHOD_(ULONG,Release)(THIS) PURE;
  1327. /*** IDirectInputDeviceA methods ***/
  1328. STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
  1329. STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
  1330. STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
  1331. STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
  1332. STDMETHOD(Acquire)(THIS) PURE;
  1333. STDMETHOD(Unacquire)(THIS) PURE;
  1334. STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
  1335. STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1336. STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
  1337. STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
  1338. STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
  1339. STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
  1340. STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
  1341. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  1342. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
  1343. /*** IDirectInputDevice2A methods ***/
  1344. STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
  1345. STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE;
  1346. STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE;
  1347. STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
  1348. STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
  1349. STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
  1350. STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
  1351. STDMETHOD(Poll)(THIS) PURE;
  1352. STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1353. };
  1354. typedef struct IDirectInputDevice2A *LPDIRECTINPUTDEVICE2A;
  1355. #ifdef UNICODE
  1356. #define IID_IDirectInputDevice2 IID_IDirectInputDevice2W
  1357. #define IDirectInputDevice2 IDirectInputDevice2W
  1358. #define IDirectInputDevice2Vtbl IDirectInputDevice2WVtbl
  1359. #else
  1360. #define IID_IDirectInputDevice2 IID_IDirectInputDevice2A
  1361. #define IDirectInputDevice2 IDirectInputDevice2A
  1362. #define IDirectInputDevice2Vtbl IDirectInputDevice2AVtbl
  1363. #endif
  1364. typedef struct IDirectInputDevice2 *LPDIRECTINPUTDEVICE2;
  1365. #if !defined(__cplusplus) || defined(CINTERFACE)
  1366. #define IDirectInputDevice2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  1367. #define IDirectInputDevice2_AddRef(p) (p)->lpVtbl->AddRef(p)
  1368. #define IDirectInputDevice2_Release(p) (p)->lpVtbl->Release(p)
  1369. #define IDirectInputDevice2_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
  1370. #define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
  1371. #define IDirectInputDevice2_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
  1372. #define IDirectInputDevice2_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
  1373. #define IDirectInputDevice2_Acquire(p) (p)->lpVtbl->Acquire(p)
  1374. #define IDirectInputDevice2_Unacquire(p) (p)->lpVtbl->Unacquire(p)
  1375. #define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
  1376. #define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
  1377. #define IDirectInputDevice2_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
  1378. #define IDirectInputDevice2_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
  1379. #define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
  1380. #define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
  1381. #define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
  1382. #define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
  1383. #define IDirectInputDevice2_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
  1384. #define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)
  1385. #define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)
  1386. #define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)
  1387. #define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)
  1388. #define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
  1389. #define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
  1390. #define IDirectInputDevice2_Escape(p,a) (p)->lpVtbl->Escape(p,a)
  1391. #define IDirectInputDevice2_Poll(p) (p)->lpVtbl->Poll(p)
  1392. #define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
  1393. #else
  1394. #define IDirectInputDevice2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  1395. #define IDirectInputDevice2_AddRef(p) (p)->AddRef()
  1396. #define IDirectInputDevice2_Release(p) (p)->Release()
  1397. #define IDirectInputDevice2_GetCapabilities(p,a) (p)->GetCapabilities(a)
  1398. #define IDirectInputDevice2_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
  1399. #define IDirectInputDevice2_GetProperty(p,a,b) (p)->GetProperty(a,b)
  1400. #define IDirectInputDevice2_SetProperty(p,a,b) (p)->SetProperty(a,b)
  1401. #define IDirectInputDevice2_Acquire(p) (p)->Acquire()
  1402. #define IDirectInputDevice2_Unacquire(p) (p)->Unacquire()
  1403. #define IDirectInputDevice2_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
  1404. #define IDirectInputDevice2_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
  1405. #define IDirectInputDevice2_SetDataFormat(p,a) (p)->SetDataFormat(a)
  1406. #define IDirectInputDevice2_SetEventNotification(p,a) (p)->SetEventNotification(a)
  1407. #define IDirectInputDevice2_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
  1408. #define IDirectInputDevice2_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
  1409. #define IDirectInputDevice2_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
  1410. #define IDirectInputDevice2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
  1411. #define IDirectInputDevice2_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
  1412. #define IDirectInputDevice2_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)
  1413. #define IDirectInputDevice2_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)
  1414. #define IDirectInputDevice2_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)
  1415. #define IDirectInputDevice2_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)
  1416. #define IDirectInputDevice2_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)
  1417. #define IDirectInputDevice2_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
  1418. #define IDirectInputDevice2_Escape(p,a) (p)->Escape(a)
  1419. #define IDirectInputDevice2_Poll(p) (p)->Poll()
  1420. #define IDirectInputDevice2_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)
  1421. #endif
  1422. #endif /* DIJ_RINGZERO */
  1423. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  1424. #if(DIRECTINPUT_VERSION >= 0x0700)
  1425. #define DIFEF_DEFAULT 0x00000000
  1426. #define DIFEF_INCLUDENONSTANDARD 0x00000001
  1427. #define DIFEF_MODIFYIFNEEDED 0x00000010
  1428. #ifndef DIJ_RINGZERO
  1429. #undef INTERFACE
  1430. #define INTERFACE IDirectInputDevice7W
  1431. DECLARE_INTERFACE_(IDirectInputDevice7W, IDirectInputDevice2W)
  1432. {
  1433. /*** IUnknown methods ***/
  1434. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  1435. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1436. STDMETHOD_(ULONG,Release)(THIS) PURE;
  1437. /*** IDirectInputDevice2W methods ***/
  1438. STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
  1439. STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
  1440. STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
  1441. STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
  1442. STDMETHOD(Acquire)(THIS) PURE;
  1443. STDMETHOD(Unacquire)(THIS) PURE;
  1444. STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
  1445. STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1446. STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
  1447. STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
  1448. STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
  1449. STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
  1450. STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
  1451. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  1452. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
  1453. STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
  1454. STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE;
  1455. STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE;
  1456. STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
  1457. STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
  1458. STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
  1459. STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
  1460. STDMETHOD(Poll)(THIS) PURE;
  1461. STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1462. /*** IDirectInputDevice7W methods ***/
  1463. STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE;
  1464. STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE;
  1465. };
  1466. typedef struct IDirectInputDevice7W *LPDIRECTINPUTDEVICE7W;
  1467. #undef INTERFACE
  1468. #define INTERFACE IDirectInputDevice7A
  1469. DECLARE_INTERFACE_(IDirectInputDevice7A, IDirectInputDevice2A)
  1470. {
  1471. /*** IUnknown methods ***/
  1472. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  1473. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1474. STDMETHOD_(ULONG,Release)(THIS) PURE;
  1475. /*** IDirectInputDevice2A methods ***/
  1476. STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
  1477. STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
  1478. STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
  1479. STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
  1480. STDMETHOD(Acquire)(THIS) PURE;
  1481. STDMETHOD(Unacquire)(THIS) PURE;
  1482. STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
  1483. STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1484. STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
  1485. STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
  1486. STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
  1487. STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
  1488. STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
  1489. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  1490. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
  1491. STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
  1492. STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE;
  1493. STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE;
  1494. STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
  1495. STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
  1496. STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
  1497. STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
  1498. STDMETHOD(Poll)(THIS) PURE;
  1499. STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1500. /*** IDirectInputDevice7A methods ***/
  1501. STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE;
  1502. STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE;
  1503. };
  1504. typedef struct IDirectInputDevice7A *LPDIRECTINPUTDEVICE7A;
  1505. #ifdef UNICODE
  1506. #define IID_IDirectInputDevice7 IID_IDirectInputDevice7W
  1507. #define IDirectInputDevice7 IDirectInputDevice7W
  1508. #define IDirectInputDevice7Vtbl IDirectInputDevice7WVtbl
  1509. #else
  1510. #define IID_IDirectInputDevice7 IID_IDirectInputDevice7A
  1511. #define IDirectInputDevice7 IDirectInputDevice7A
  1512. #define IDirectInputDevice7Vtbl IDirectInputDevice7AVtbl
  1513. #endif
  1514. typedef struct IDirectInputDevice7 *LPDIRECTINPUTDEVICE7;
  1515. #if !defined(__cplusplus) || defined(CINTERFACE)
  1516. #define IDirectInputDevice7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  1517. #define IDirectInputDevice7_AddRef(p) (p)->lpVtbl->AddRef(p)
  1518. #define IDirectInputDevice7_Release(p) (p)->lpVtbl->Release(p)
  1519. #define IDirectInputDevice7_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
  1520. #define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
  1521. #define IDirectInputDevice7_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
  1522. #define IDirectInputDevice7_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
  1523. #define IDirectInputDevice7_Acquire(p) (p)->lpVtbl->Acquire(p)
  1524. #define IDirectInputDevice7_Unacquire(p) (p)->lpVtbl->Unacquire(p)
  1525. #define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
  1526. #define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
  1527. #define IDirectInputDevice7_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
  1528. #define IDirectInputDevice7_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
  1529. #define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
  1530. #define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
  1531. #define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
  1532. #define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
  1533. #define IDirectInputDevice7_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
  1534. #define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)
  1535. #define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)
  1536. #define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)
  1537. #define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)
  1538. #define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
  1539. #define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
  1540. #define IDirectInputDevice7_Escape(p,a) (p)->lpVtbl->Escape(p,a)
  1541. #define IDirectInputDevice7_Poll(p) (p)->lpVtbl->Poll(p)
  1542. #define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
  1543. #define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d)
  1544. #define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d)
  1545. #else
  1546. #define IDirectInputDevice7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  1547. #define IDirectInputDevice7_AddRef(p) (p)->AddRef()
  1548. #define IDirectInputDevice7_Release(p) (p)->Release()
  1549. #define IDirectInputDevice7_GetCapabilities(p,a) (p)->GetCapabilities(a)
  1550. #define IDirectInputDevice7_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
  1551. #define IDirectInputDevice7_GetProperty(p,a,b) (p)->GetProperty(a,b)
  1552. #define IDirectInputDevice7_SetProperty(p,a,b) (p)->SetProperty(a,b)
  1553. #define IDirectInputDevice7_Acquire(p) (p)->Acquire()
  1554. #define IDirectInputDevice7_Unacquire(p) (p)->Unacquire()
  1555. #define IDirectInputDevice7_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
  1556. #define IDirectInputDevice7_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
  1557. #define IDirectInputDevice7_SetDataFormat(p,a) (p)->SetDataFormat(a)
  1558. #define IDirectInputDevice7_SetEventNotification(p,a) (p)->SetEventNotification(a)
  1559. #define IDirectInputDevice7_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
  1560. #define IDirectInputDevice7_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
  1561. #define IDirectInputDevice7_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
  1562. #define IDirectInputDevice7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
  1563. #define IDirectInputDevice7_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
  1564. #define IDirectInputDevice7_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)
  1565. #define IDirectInputDevice7_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)
  1566. #define IDirectInputDevice7_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)
  1567. #define IDirectInputDevice7_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)
  1568. #define IDirectInputDevice7_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)
  1569. #define IDirectInputDevice7_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
  1570. #define IDirectInputDevice7_Escape(p,a) (p)->Escape(a)
  1571. #define IDirectInputDevice7_Poll(p) (p)->Poll()
  1572. #define IDirectInputDevice7_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)
  1573. #define IDirectInputDevice7_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d)
  1574. #define IDirectInputDevice7_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d)
  1575. #endif
  1576. #endif /* DIJ_RINGZERO */
  1577. #endif /* DIRECTINPUT_VERSION >= 0x0700 */
  1578. #if(DIRECTINPUT_VERSION >= 0x0800)
  1579. #ifndef DIJ_RINGZERO
  1580. #undef INTERFACE
  1581. #define INTERFACE IDirectInputDevice8W
  1582. DECLARE_INTERFACE_(IDirectInputDevice8W, IUnknown)
  1583. {
  1584. /*** IUnknown methods ***/
  1585. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  1586. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1587. STDMETHOD_(ULONG,Release)(THIS) PURE;
  1588. /*** IDirectInputDevice8W methods ***/
  1589. STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
  1590. STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKW,LPVOID,DWORD) PURE;
  1591. STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
  1592. STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
  1593. STDMETHOD(Acquire)(THIS) PURE;
  1594. STDMETHOD(Unacquire)(THIS) PURE;
  1595. STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
  1596. STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1597. STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
  1598. STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
  1599. STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
  1600. STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEW,DWORD,DWORD) PURE;
  1601. STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEW) PURE;
  1602. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  1603. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
  1604. STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
  1605. STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKW,LPVOID,DWORD) PURE;
  1606. STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOW,REFGUID) PURE;
  1607. STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
  1608. STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
  1609. STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
  1610. STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
  1611. STDMETHOD(Poll)(THIS) PURE;
  1612. STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1613. STDMETHOD(EnumEffectsInFile)(THIS_ LPCWSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE;
  1614. STDMETHOD(WriteEffectToFile)(THIS_ LPCWSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE;
  1615. STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE;
  1616. STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATW,LPCWSTR,DWORD) PURE;
  1617. STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERW) PURE;
  1618. };
  1619. typedef struct IDirectInputDevice8W *LPDIRECTINPUTDEVICE8W;
  1620. #undef INTERFACE
  1621. #define INTERFACE IDirectInputDevice8A
  1622. DECLARE_INTERFACE_(IDirectInputDevice8A, IUnknown)
  1623. {
  1624. /*** IUnknown methods ***/
  1625. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  1626. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  1627. STDMETHOD_(ULONG,Release)(THIS) PURE;
  1628. /*** IDirectInputDevice8A methods ***/
  1629. STDMETHOD(GetCapabilities)(THIS_ LPDIDEVCAPS) PURE;
  1630. STDMETHOD(EnumObjects)(THIS_ LPDIENUMDEVICEOBJECTSCALLBACKA,LPVOID,DWORD) PURE;
  1631. STDMETHOD(GetProperty)(THIS_ REFGUID,LPDIPROPHEADER) PURE;
  1632. STDMETHOD(SetProperty)(THIS_ REFGUID,LPCDIPROPHEADER) PURE;
  1633. STDMETHOD(Acquire)(THIS) PURE;
  1634. STDMETHOD(Unacquire)(THIS) PURE;
  1635. STDMETHOD(GetDeviceState)(THIS_ DWORD,LPVOID) PURE;
  1636. STDMETHOD(GetDeviceData)(THIS_ DWORD,LPDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1637. STDMETHOD(SetDataFormat)(THIS_ LPCDIDATAFORMAT) PURE;
  1638. STDMETHOD(SetEventNotification)(THIS_ HANDLE) PURE;
  1639. STDMETHOD(SetCooperativeLevel)(THIS_ HWND,DWORD) PURE;
  1640. STDMETHOD(GetObjectInfo)(THIS_ LPDIDEVICEOBJECTINSTANCEA,DWORD,DWORD) PURE;
  1641. STDMETHOD(GetDeviceInfo)(THIS_ LPDIDEVICEINSTANCEA) PURE;
  1642. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  1643. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD,REFGUID) PURE;
  1644. STDMETHOD(CreateEffect)(THIS_ REFGUID,LPCDIEFFECT,LPDIRECTINPUTEFFECT *,LPUNKNOWN) PURE;
  1645. STDMETHOD(EnumEffects)(THIS_ LPDIENUMEFFECTSCALLBACKA,LPVOID,DWORD) PURE;
  1646. STDMETHOD(GetEffectInfo)(THIS_ LPDIEFFECTINFOA,REFGUID) PURE;
  1647. STDMETHOD(GetForceFeedbackState)(THIS_ LPDWORD) PURE;
  1648. STDMETHOD(SendForceFeedbackCommand)(THIS_ DWORD) PURE;
  1649. STDMETHOD(EnumCreatedEffectObjects)(THIS_ LPDIENUMCREATEDEFFECTOBJECTSCALLBACK,LPVOID,DWORD) PURE;
  1650. STDMETHOD(Escape)(THIS_ LPDIEFFESCAPE) PURE;
  1651. STDMETHOD(Poll)(THIS) PURE;
  1652. STDMETHOD(SendDeviceData)(THIS_ DWORD,LPCDIDEVICEOBJECTDATA,LPDWORD,DWORD) PURE;
  1653. STDMETHOD(EnumEffectsInFile)(THIS_ LPCSTR,LPDIENUMEFFECTSINFILECALLBACK,LPVOID,DWORD) PURE;
  1654. STDMETHOD(WriteEffectToFile)(THIS_ LPCSTR,DWORD,LPDIFILEEFFECT,DWORD) PURE;
  1655. STDMETHOD(BuildActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE;
  1656. STDMETHOD(SetActionMap)(THIS_ LPDIACTIONFORMATA,LPCSTR,DWORD) PURE;
  1657. STDMETHOD(GetImageInfo)(THIS_ LPDIDEVICEIMAGEINFOHEADERA) PURE;
  1658. };
  1659. typedef struct IDirectInputDevice8A *LPDIRECTINPUTDEVICE8A;
  1660. #ifdef UNICODE
  1661. #define IID_IDirectInputDevice8 IID_IDirectInputDevice8W
  1662. #define IDirectInputDevice8 IDirectInputDevice8W
  1663. #define IDirectInputDevice8Vtbl IDirectInputDevice8WVtbl
  1664. #else
  1665. #define IID_IDirectInputDevice8 IID_IDirectInputDevice8A
  1666. #define IDirectInputDevice8 IDirectInputDevice8A
  1667. #define IDirectInputDevice8Vtbl IDirectInputDevice8AVtbl
  1668. #endif
  1669. typedef struct IDirectInputDevice8 *LPDIRECTINPUTDEVICE8;
  1670. #if !defined(__cplusplus) || defined(CINTERFACE)
  1671. #define IDirectInputDevice8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  1672. #define IDirectInputDevice8_AddRef(p) (p)->lpVtbl->AddRef(p)
  1673. #define IDirectInputDevice8_Release(p) (p)->lpVtbl->Release(p)
  1674. #define IDirectInputDevice8_GetCapabilities(p,a) (p)->lpVtbl->GetCapabilities(p,a)
  1675. #define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->lpVtbl->EnumObjects(p,a,b,c)
  1676. #define IDirectInputDevice8_GetProperty(p,a,b) (p)->lpVtbl->GetProperty(p,a,b)
  1677. #define IDirectInputDevice8_SetProperty(p,a,b) (p)->lpVtbl->SetProperty(p,a,b)
  1678. #define IDirectInputDevice8_Acquire(p) (p)->lpVtbl->Acquire(p)
  1679. #define IDirectInputDevice8_Unacquire(p) (p)->lpVtbl->Unacquire(p)
  1680. #define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->lpVtbl->GetDeviceState(p,a,b)
  1681. #define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->lpVtbl->GetDeviceData(p,a,b,c,d)
  1682. #define IDirectInputDevice8_SetDataFormat(p,a) (p)->lpVtbl->SetDataFormat(p,a)
  1683. #define IDirectInputDevice8_SetEventNotification(p,a) (p)->lpVtbl->SetEventNotification(p,a)
  1684. #define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->lpVtbl->SetCooperativeLevel(p,a,b)
  1685. #define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->lpVtbl->GetObjectInfo(p,a,b,c)
  1686. #define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->lpVtbl->GetDeviceInfo(p,a)
  1687. #define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
  1688. #define IDirectInputDevice8_Initialize(p,a,b,c) (p)->lpVtbl->Initialize(p,a,b,c)
  1689. #define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->lpVtbl->CreateEffect(p,a,b,c,d)
  1690. #define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->lpVtbl->EnumEffects(p,a,b,c)
  1691. #define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->lpVtbl->GetEffectInfo(p,a,b)
  1692. #define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->lpVtbl->GetForceFeedbackState(p,a)
  1693. #define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->lpVtbl->SendForceFeedbackCommand(p,a)
  1694. #define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->lpVtbl->EnumCreatedEffectObjects(p,a,b,c)
  1695. #define IDirectInputDevice8_Escape(p,a) (p)->lpVtbl->Escape(p,a)
  1696. #define IDirectInputDevice8_Poll(p) (p)->lpVtbl->Poll(p)
  1697. #define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->lpVtbl->SendDeviceData(p,a,b,c,d)
  1698. #define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->lpVtbl->EnumEffectsInFile(p,a,b,c,d)
  1699. #define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->lpVtbl->WriteEffectToFile(p,a,b,c,d)
  1700. #define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->lpVtbl->BuildActionMap(p,a,b,c)
  1701. #define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->lpVtbl->SetActionMap(p,a,b,c)
  1702. #define IDirectInputDevice8_GetImageInfo(p,a) (p)->lpVtbl->GetImageInfo(p,a)
  1703. #else
  1704. #define IDirectInputDevice8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  1705. #define IDirectInputDevice8_AddRef(p) (p)->AddRef()
  1706. #define IDirectInputDevice8_Release(p) (p)->Release()
  1707. #define IDirectInputDevice8_GetCapabilities(p,a) (p)->GetCapabilities(a)
  1708. #define IDirectInputDevice8_EnumObjects(p,a,b,c) (p)->EnumObjects(a,b,c)
  1709. #define IDirectInputDevice8_GetProperty(p,a,b) (p)->GetProperty(a,b)
  1710. #define IDirectInputDevice8_SetProperty(p,a,b) (p)->SetProperty(a,b)
  1711. #define IDirectInputDevice8_Acquire(p) (p)->Acquire()
  1712. #define IDirectInputDevice8_Unacquire(p) (p)->Unacquire()
  1713. #define IDirectInputDevice8_GetDeviceState(p,a,b) (p)->GetDeviceState(a,b)
  1714. #define IDirectInputDevice8_GetDeviceData(p,a,b,c,d) (p)->GetDeviceData(a,b,c,d)
  1715. #define IDirectInputDevice8_SetDataFormat(p,a) (p)->SetDataFormat(a)
  1716. #define IDirectInputDevice8_SetEventNotification(p,a) (p)->SetEventNotification(a)
  1717. #define IDirectInputDevice8_SetCooperativeLevel(p,a,b) (p)->SetCooperativeLevel(a,b)
  1718. #define IDirectInputDevice8_GetObjectInfo(p,a,b,c) (p)->GetObjectInfo(a,b,c)
  1719. #define IDirectInputDevice8_GetDeviceInfo(p,a) (p)->GetDeviceInfo(a)
  1720. #define IDirectInputDevice8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
  1721. #define IDirectInputDevice8_Initialize(p,a,b,c) (p)->Initialize(a,b,c)
  1722. #define IDirectInputDevice8_CreateEffect(p,a,b,c,d) (p)->CreateEffect(a,b,c,d)
  1723. #define IDirectInputDevice8_EnumEffects(p,a,b,c) (p)->EnumEffects(a,b,c)
  1724. #define IDirectInputDevice8_GetEffectInfo(p,a,b) (p)->GetEffectInfo(a,b)
  1725. #define IDirectInputDevice8_GetForceFeedbackState(p,a) (p)->GetForceFeedbackState(a)
  1726. #define IDirectInputDevice8_SendForceFeedbackCommand(p,a) (p)->SendForceFeedbackCommand(a)
  1727. #define IDirectInputDevice8_EnumCreatedEffectObjects(p,a,b,c) (p)->EnumCreatedEffectObjects(a,b,c)
  1728. #define IDirectInputDevice8_Escape(p,a) (p)->Escape(a)
  1729. #define IDirectInputDevice8_Poll(p) (p)->Poll()
  1730. #define IDirectInputDevice8_SendDeviceData(p,a,b,c,d) (p)->SendDeviceData(a,b,c,d)
  1731. #define IDirectInputDevice8_EnumEffectsInFile(p,a,b,c,d) (p)->EnumEffectsInFile(a,b,c,d)
  1732. #define IDirectInputDevice8_WriteEffectToFile(p,a,b,c,d) (p)->WriteEffectToFile(a,b,c,d)
  1733. #define IDirectInputDevice8_BuildActionMap(p,a,b,c) (p)->BuildActionMap(a,b,c)
  1734. #define IDirectInputDevice8_SetActionMap(p,a,b,c) (p)->SetActionMap(a,b,c)
  1735. #define IDirectInputDevice8_GetImageInfo(p,a) (p)->GetImageInfo(a)
  1736. #endif
  1737. #endif /* DIJ_RINGZERO */
  1738. #endif /* DIRECTINPUT_VERSION >= 0x0800 */
  1739. /****************************************************************************
  1740. *
  1741. * Mouse
  1742. *
  1743. ****************************************************************************/
  1744. #ifndef DIJ_RINGZERO
  1745. typedef struct _DIMOUSESTATE {
  1746. LONG lX;
  1747. LONG lY;
  1748. LONG lZ;
  1749. BYTE rgbButtons[4];
  1750. } DIMOUSESTATE, *LPDIMOUSESTATE;
  1751. #if DIRECTINPUT_VERSION >= 0x0700
  1752. typedef struct _DIMOUSESTATE2 {
  1753. LONG lX;
  1754. LONG lY;
  1755. LONG lZ;
  1756. BYTE rgbButtons[8];
  1757. } DIMOUSESTATE2, *LPDIMOUSESTATE2;
  1758. #endif
  1759. #define DIMOFS_X FIELD_OFFSET(DIMOUSESTATE, lX)
  1760. #define DIMOFS_Y FIELD_OFFSET(DIMOUSESTATE, lY)
  1761. #define DIMOFS_Z FIELD_OFFSET(DIMOUSESTATE, lZ)
  1762. #define DIMOFS_BUTTON0 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0)
  1763. #define DIMOFS_BUTTON1 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1)
  1764. #define DIMOFS_BUTTON2 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2)
  1765. #define DIMOFS_BUTTON3 (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3)
  1766. #if (DIRECTINPUT_VERSION >= 0x0700)
  1767. #define DIMOFS_BUTTON4 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4)
  1768. #define DIMOFS_BUTTON5 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5)
  1769. #define DIMOFS_BUTTON6 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6)
  1770. #define DIMOFS_BUTTON7 (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7)
  1771. #endif
  1772. #endif /* DIJ_RINGZERO */
  1773. /****************************************************************************
  1774. *
  1775. * Keyboard
  1776. *
  1777. ****************************************************************************/
  1778. #ifndef DIJ_RINGZERO
  1779. /****************************************************************************
  1780. *
  1781. * DirectInput keyboard scan codes
  1782. *
  1783. ****************************************************************************/
  1784. //
  1785. // Copyright (C) Microsoft. All rights reserved.
  1786. //
  1787. #define DIK_ESCAPE 0x01
  1788. #define DIK_1 0x02
  1789. #define DIK_2 0x03
  1790. #define DIK_3 0x04
  1791. #define DIK_4 0x05
  1792. #define DIK_5 0x06
  1793. #define DIK_6 0x07
  1794. #define DIK_7 0x08
  1795. #define DIK_8 0x09
  1796. #define DIK_9 0x0A
  1797. #define DIK_0 0x0B
  1798. #define DIK_MINUS 0x0C /* - on main keyboard */
  1799. #define DIK_EQUALS 0x0D
  1800. #define DIK_BACK 0x0E /* backspace */
  1801. #define DIK_TAB 0x0F
  1802. #define DIK_Q 0x10
  1803. #define DIK_W 0x11
  1804. #define DIK_E 0x12
  1805. #define DIK_R 0x13
  1806. #define DIK_T 0x14
  1807. #define DIK_Y 0x15
  1808. #define DIK_U 0x16
  1809. #define DIK_I 0x17
  1810. #define DIK_O 0x18
  1811. #define DIK_P 0x19
  1812. #define DIK_LBRACKET 0x1A
  1813. #define DIK_RBRACKET 0x1B
  1814. #define DIK_RETURN 0x1C /* Enter on main keyboard */
  1815. #define DIK_LCONTROL 0x1D
  1816. #define DIK_A 0x1E
  1817. #define DIK_S 0x1F
  1818. #define DIK_D 0x20
  1819. #define DIK_F 0x21
  1820. #define DIK_G 0x22
  1821. #define DIK_H 0x23
  1822. #define DIK_J 0x24
  1823. #define DIK_K 0x25
  1824. #define DIK_L 0x26
  1825. #define DIK_SEMICOLON 0x27
  1826. #define DIK_APOSTROPHE 0x28
  1827. #define DIK_GRAVE 0x29 /* accent grave */
  1828. #define DIK_LSHIFT 0x2A
  1829. #define DIK_BACKSLASH 0x2B
  1830. #define DIK_Z 0x2C
  1831. #define DIK_X 0x2D
  1832. #define DIK_C 0x2E
  1833. #define DIK_V 0x2F
  1834. #define DIK_B 0x30
  1835. #define DIK_N 0x31
  1836. #define DIK_M 0x32
  1837. #define DIK_COMMA 0x33
  1838. #define DIK_PERIOD 0x34 /* . on main keyboard */
  1839. #define DIK_SLASH 0x35 /* / on main keyboard */
  1840. #define DIK_RSHIFT 0x36
  1841. #define DIK_MULTIPLY 0x37 /* * on numeric keypad */
  1842. #define DIK_LMENU 0x38 /* left Alt */
  1843. #define DIK_SPACE 0x39
  1844. #define DIK_CAPITAL 0x3A
  1845. #define DIK_F1 0x3B
  1846. #define DIK_F2 0x3C
  1847. #define DIK_F3 0x3D
  1848. #define DIK_F4 0x3E
  1849. #define DIK_F5 0x3F
  1850. #define DIK_F6 0x40
  1851. #define DIK_F7 0x41
  1852. #define DIK_F8 0x42
  1853. #define DIK_F9 0x43
  1854. #define DIK_F10 0x44
  1855. #define DIK_NUMLOCK 0x45
  1856. #define DIK_SCROLL 0x46 /* Scroll Lock */
  1857. #define DIK_NUMPAD7 0x47
  1858. #define DIK_NUMPAD8 0x48
  1859. #define DIK_NUMPAD9 0x49
  1860. #define DIK_SUBTRACT 0x4A /* - on numeric keypad */
  1861. #define DIK_NUMPAD4 0x4B
  1862. #define DIK_NUMPAD5 0x4C
  1863. #define DIK_NUMPAD6 0x4D
  1864. #define DIK_ADD 0x4E /* + on numeric keypad */
  1865. #define DIK_NUMPAD1 0x4F
  1866. #define DIK_NUMPAD2 0x50
  1867. #define DIK_NUMPAD3 0x51
  1868. #define DIK_NUMPAD0 0x52
  1869. #define DIK_DECIMAL 0x53 /* . on numeric keypad */
  1870. #define DIK_OEM_102 0x56 /* <> or \| on RT 102-key keyboard (Non-U.S.) */
  1871. #define DIK_F11 0x57
  1872. #define DIK_F12 0x58
  1873. #define DIK_F13 0x64 /* (NEC PC98) */
  1874. #define DIK_F14 0x65 /* (NEC PC98) */
  1875. #define DIK_F15 0x66 /* (NEC PC98) */
  1876. #define DIK_KANA 0x70 /* (Japanese keyboard) */
  1877. #define DIK_ABNT_C1 0x73 /* /? on Brazilian keyboard */
  1878. #define DIK_CONVERT 0x79 /* (Japanese keyboard) */
  1879. #define DIK_NOCONVERT 0x7B /* (Japanese keyboard) */
  1880. #define DIK_YEN 0x7D /* (Japanese keyboard) */
  1881. #define DIK_ABNT_C2 0x7E /* Numpad . on Brazilian keyboard */
  1882. #define DIK_NUMPADEQUALS 0x8D /* = on numeric keypad (NEC PC98) */
  1883. #define DIK_PREVTRACK 0x90 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */
  1884. #define DIK_AT 0x91 /* (NEC PC98) */
  1885. #define DIK_COLON 0x92 /* (NEC PC98) */
  1886. #define DIK_UNDERLINE 0x93 /* (NEC PC98) */
  1887. #define DIK_KANJI 0x94 /* (Japanese keyboard) */
  1888. #define DIK_STOP 0x95 /* (NEC PC98) */
  1889. #define DIK_AX 0x96 /* (Japan AX) */
  1890. #define DIK_UNLABELED 0x97 /* (J3100) */
  1891. #define DIK_NEXTTRACK 0x99 /* Next Track */
  1892. #define DIK_NUMPADENTER 0x9C /* Enter on numeric keypad */
  1893. #define DIK_RCONTROL 0x9D
  1894. #define DIK_MUTE 0xA0 /* Mute */
  1895. #define DIK_CALCULATOR 0xA1 /* Calculator */
  1896. #define DIK_PLAYPAUSE 0xA2 /* Play / Pause */
  1897. #define DIK_MEDIASTOP 0xA4 /* Media Stop */
  1898. #define DIK_VOLUMEDOWN 0xAE /* Volume - */
  1899. #define DIK_VOLUMEUP 0xB0 /* Volume + */
  1900. #define DIK_WEBHOME 0xB2 /* Web home */
  1901. #define DIK_NUMPADCOMMA 0xB3 /* , on numeric keypad (NEC PC98) */
  1902. #define DIK_DIVIDE 0xB5 /* / on numeric keypad */
  1903. #define DIK_SYSRQ 0xB7
  1904. #define DIK_RMENU 0xB8 /* right Alt */
  1905. #define DIK_PAUSE 0xC5 /* Pause */
  1906. #define DIK_HOME 0xC7 /* Home on arrow keypad */
  1907. #define DIK_UP 0xC8 /* UpArrow on arrow keypad */
  1908. #define DIK_PRIOR 0xC9 /* PgUp on arrow keypad */
  1909. #define DIK_LEFT 0xCB /* LeftArrow on arrow keypad */
  1910. #define DIK_RIGHT 0xCD /* RightArrow on arrow keypad */
  1911. #define DIK_END 0xCF /* End on arrow keypad */
  1912. #define DIK_DOWN 0xD0 /* DownArrow on arrow keypad */
  1913. #define DIK_NEXT 0xD1 /* PgDn on arrow keypad */
  1914. #define DIK_INSERT 0xD2 /* Insert on arrow keypad */
  1915. #define DIK_DELETE 0xD3 /* Delete on arrow keypad */
  1916. #define DIK_LWIN 0xDB /* Left Windows key */
  1917. #define DIK_RWIN 0xDC /* Right Windows key */
  1918. #define DIK_APPS 0xDD /* AppMenu key */
  1919. #define DIK_POWER 0xDE /* System Power */
  1920. #define DIK_SLEEP 0xDF /* System Sleep */
  1921. #define DIK_WAKE 0xE3 /* System Wake */
  1922. #define DIK_WEBSEARCH 0xE5 /* Web Search */
  1923. #define DIK_WEBFAVORITES 0xE6 /* Web Favorites */
  1924. #define DIK_WEBREFRESH 0xE7 /* Web Refresh */
  1925. #define DIK_WEBSTOP 0xE8 /* Web Stop */
  1926. #define DIK_WEBFORWARD 0xE9 /* Web Forward */
  1927. #define DIK_WEBBACK 0xEA /* Web Back */
  1928. #define DIK_MYCOMPUTER 0xEB /* My Computer */
  1929. #define DIK_MAIL 0xEC /* Mail */
  1930. #define DIK_MEDIASELECT 0xED /* Media Select */
  1931. /*
  1932. * Alternate names for keys, to facilitate transition from DOS.
  1933. */
  1934. #define DIK_BACKSPACE DIK_BACK /* backspace */
  1935. #define DIK_NUMPADSTAR DIK_MULTIPLY /* * on numeric keypad */
  1936. #define DIK_LALT DIK_LMENU /* left Alt */
  1937. #define DIK_CAPSLOCK DIK_CAPITAL /* CapsLock */
  1938. #define DIK_NUMPADMINUS DIK_SUBTRACT /* - on numeric keypad */
  1939. #define DIK_NUMPADPLUS DIK_ADD /* + on numeric keypad */
  1940. #define DIK_NUMPADPERIOD DIK_DECIMAL /* . on numeric keypad */
  1941. #define DIK_NUMPADSLASH DIK_DIVIDE /* / on numeric keypad */
  1942. #define DIK_RALT DIK_RMENU /* right Alt */
  1943. #define DIK_UPARROW DIK_UP /* UpArrow on arrow keypad */
  1944. #define DIK_PGUP DIK_PRIOR /* PgUp on arrow keypad */
  1945. #define DIK_LEFTARROW DIK_LEFT /* LeftArrow on arrow keypad */
  1946. #define DIK_RIGHTARROW DIK_RIGHT /* RightArrow on arrow keypad */
  1947. #define DIK_DOWNARROW DIK_DOWN /* DownArrow on arrow keypad */
  1948. #define DIK_PGDN DIK_NEXT /* PgDn on arrow keypad */
  1949. /*
  1950. * Alternate names for keys originally not used on US keyboards.
  1951. */
  1952. #define DIK_CIRCUMFLEX DIK_PREVTRACK /* Japanese keyboard */
  1953. #endif /* DIJ_RINGZERO */
  1954. /****************************************************************************
  1955. *
  1956. * Joystick
  1957. *
  1958. ****************************************************************************/
  1959. #ifndef DIJ_RINGZERO
  1960. typedef struct DIJOYSTATE {
  1961. LONG lX; /* x-axis position */
  1962. LONG lY; /* y-axis position */
  1963. LONG lZ; /* z-axis position */
  1964. LONG lRx; /* x-axis rotation */
  1965. LONG lRy; /* y-axis rotation */
  1966. LONG lRz; /* z-axis rotation */
  1967. LONG rglSlider[2]; /* extra axes positions */
  1968. DWORD rgdwPOV[4]; /* POV directions */
  1969. BYTE rgbButtons[32]; /* 32 buttons */
  1970. } DIJOYSTATE, *LPDIJOYSTATE;
  1971. typedef struct DIJOYSTATE2 {
  1972. LONG lX; /* x-axis position */
  1973. LONG lY; /* y-axis position */
  1974. LONG lZ; /* z-axis position */
  1975. LONG lRx; /* x-axis rotation */
  1976. LONG lRy; /* y-axis rotation */
  1977. LONG lRz; /* z-axis rotation */
  1978. LONG rglSlider[2]; /* extra axes positions */
  1979. DWORD rgdwPOV[4]; /* POV directions */
  1980. BYTE rgbButtons[128]; /* 128 buttons */
  1981. LONG lVX; /* x-axis velocity */
  1982. LONG lVY; /* y-axis velocity */
  1983. LONG lVZ; /* z-axis velocity */
  1984. LONG lVRx; /* x-axis angular velocity */
  1985. LONG lVRy; /* y-axis angular velocity */
  1986. LONG lVRz; /* z-axis angular velocity */
  1987. LONG rglVSlider[2]; /* extra axes velocities */
  1988. LONG lAX; /* x-axis acceleration */
  1989. LONG lAY; /* y-axis acceleration */
  1990. LONG lAZ; /* z-axis acceleration */
  1991. LONG lARx; /* x-axis angular acceleration */
  1992. LONG lARy; /* y-axis angular acceleration */
  1993. LONG lARz; /* z-axis angular acceleration */
  1994. LONG rglASlider[2]; /* extra axes accelerations */
  1995. LONG lFX; /* x-axis force */
  1996. LONG lFY; /* y-axis force */
  1997. LONG lFZ; /* z-axis force */
  1998. LONG lFRx; /* x-axis torque */
  1999. LONG lFRy; /* y-axis torque */
  2000. LONG lFRz; /* z-axis torque */
  2001. LONG rglFSlider[2]; /* extra axes forces */
  2002. } DIJOYSTATE2, *LPDIJOYSTATE2;
  2003. #define DIJOFS_X FIELD_OFFSET(DIJOYSTATE, lX)
  2004. #define DIJOFS_Y FIELD_OFFSET(DIJOYSTATE, lY)
  2005. #define DIJOFS_Z FIELD_OFFSET(DIJOYSTATE, lZ)
  2006. #define DIJOFS_RX FIELD_OFFSET(DIJOYSTATE, lRx)
  2007. #define DIJOFS_RY FIELD_OFFSET(DIJOYSTATE, lRy)
  2008. #define DIJOFS_RZ FIELD_OFFSET(DIJOYSTATE, lRz)
  2009. #define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \
  2010. (n) * sizeof(LONG))
  2011. #define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \
  2012. (n) * sizeof(DWORD))
  2013. #define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))
  2014. #define DIJOFS_BUTTON0 DIJOFS_BUTTON(0)
  2015. #define DIJOFS_BUTTON1 DIJOFS_BUTTON(1)
  2016. #define DIJOFS_BUTTON2 DIJOFS_BUTTON(2)
  2017. #define DIJOFS_BUTTON3 DIJOFS_BUTTON(3)
  2018. #define DIJOFS_BUTTON4 DIJOFS_BUTTON(4)
  2019. #define DIJOFS_BUTTON5 DIJOFS_BUTTON(5)
  2020. #define DIJOFS_BUTTON6 DIJOFS_BUTTON(6)
  2021. #define DIJOFS_BUTTON7 DIJOFS_BUTTON(7)
  2022. #define DIJOFS_BUTTON8 DIJOFS_BUTTON(8)
  2023. #define DIJOFS_BUTTON9 DIJOFS_BUTTON(9)
  2024. #define DIJOFS_BUTTON10 DIJOFS_BUTTON(10)
  2025. #define DIJOFS_BUTTON11 DIJOFS_BUTTON(11)
  2026. #define DIJOFS_BUTTON12 DIJOFS_BUTTON(12)
  2027. #define DIJOFS_BUTTON13 DIJOFS_BUTTON(13)
  2028. #define DIJOFS_BUTTON14 DIJOFS_BUTTON(14)
  2029. #define DIJOFS_BUTTON15 DIJOFS_BUTTON(15)
  2030. #define DIJOFS_BUTTON16 DIJOFS_BUTTON(16)
  2031. #define DIJOFS_BUTTON17 DIJOFS_BUTTON(17)
  2032. #define DIJOFS_BUTTON18 DIJOFS_BUTTON(18)
  2033. #define DIJOFS_BUTTON19 DIJOFS_BUTTON(19)
  2034. #define DIJOFS_BUTTON20 DIJOFS_BUTTON(20)
  2035. #define DIJOFS_BUTTON21 DIJOFS_BUTTON(21)
  2036. #define DIJOFS_BUTTON22 DIJOFS_BUTTON(22)
  2037. #define DIJOFS_BUTTON23 DIJOFS_BUTTON(23)
  2038. #define DIJOFS_BUTTON24 DIJOFS_BUTTON(24)
  2039. #define DIJOFS_BUTTON25 DIJOFS_BUTTON(25)
  2040. #define DIJOFS_BUTTON26 DIJOFS_BUTTON(26)
  2041. #define DIJOFS_BUTTON27 DIJOFS_BUTTON(27)
  2042. #define DIJOFS_BUTTON28 DIJOFS_BUTTON(28)
  2043. #define DIJOFS_BUTTON29 DIJOFS_BUTTON(29)
  2044. #define DIJOFS_BUTTON30 DIJOFS_BUTTON(30)
  2045. #define DIJOFS_BUTTON31 DIJOFS_BUTTON(31)
  2046. #endif /* DIJ_RINGZERO */
  2047. /****************************************************************************
  2048. *
  2049. * IDirectInput
  2050. *
  2051. ****************************************************************************/
  2052. #ifndef DIJ_RINGZERO
  2053. #define DIENUM_STOP 0
  2054. #define DIENUM_CONTINUE 1
  2055. typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKA)(LPCDIDEVICEINSTANCEA, LPVOID);
  2056. typedef BOOL (FAR PASCAL * LPDIENUMDEVICESCALLBACKW)(LPCDIDEVICEINSTANCEW, LPVOID);
  2057. #ifdef UNICODE
  2058. #define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKW
  2059. #else
  2060. #define LPDIENUMDEVICESCALLBACK LPDIENUMDEVICESCALLBACKA
  2061. #endif // !UNICODE
  2062. typedef BOOL (FAR PASCAL * LPDICONFIGUREDEVICESCALLBACK)(IUnknown FAR *, LPVOID);
  2063. #define DIEDFL_ALLDEVICES 0x00000000
  2064. #define DIEDFL_ATTACHEDONLY 0x00000001
  2065. #if(DIRECTINPUT_VERSION >= 0x0500)
  2066. #define DIEDFL_FORCEFEEDBACK 0x00000100
  2067. #endif /* DIRECTINPUT_VERSION >= 0x0500 */
  2068. #if(DIRECTINPUT_VERSION >= 0x050a)
  2069. #define DIEDFL_INCLUDEALIASES 0x00010000
  2070. #define DIEDFL_INCLUDEPHANTOMS 0x00020000
  2071. #endif /* DIRECTINPUT_VERSION >= 0x050a */
  2072. #if(DIRECTINPUT_VERSION >= 0x0800)
  2073. #define DIEDFL_INCLUDEHIDDEN 0x00040000
  2074. #endif /* DIRECTINPUT_VERSION >= 0x0800 */
  2075. #if(DIRECTINPUT_VERSION >= 0x0800)
  2076. typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBA)(LPCDIDEVICEINSTANCEA, LPDIRECTINPUTDEVICE8A, DWORD, DWORD, LPVOID);
  2077. typedef BOOL (FAR PASCAL * LPDIENUMDEVICESBYSEMANTICSCBW)(LPCDIDEVICEINSTANCEW, LPDIRECTINPUTDEVICE8W, DWORD, DWORD, LPVOID);
  2078. #ifdef UNICODE
  2079. #define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBW
  2080. #else
  2081. #define LPDIENUMDEVICESBYSEMANTICSCB LPDIENUMDEVICESBYSEMANTICSCBA
  2082. #endif // !UNICODE
  2083. #endif /* DIRECTINPUT_VERSION >= 0x0800 */
  2084. #if(DIRECTINPUT_VERSION >= 0x0800)
  2085. #define DIEDBS_MAPPEDPRI1 0x00000001
  2086. #define DIEDBS_MAPPEDPRI2 0x00000002
  2087. #define DIEDBS_RECENTDEVICE 0x00000010
  2088. #define DIEDBS_NEWDEVICE 0x00000020
  2089. #endif /* DIRECTINPUT_VERSION >= 0x0800 */
  2090. #if(DIRECTINPUT_VERSION >= 0x0800)
  2091. #define DIEDBSFL_ATTACHEDONLY 0x00000000
  2092. #define DIEDBSFL_THISUSER 0x00000010
  2093. #define DIEDBSFL_FORCEFEEDBACK DIEDFL_FORCEFEEDBACK
  2094. #define DIEDBSFL_AVAILABLEDEVICES 0x00001000
  2095. #define DIEDBSFL_MULTIMICEKEYBOARDS 0x00002000
  2096. #define DIEDBSFL_NONGAMINGDEVICES 0x00004000
  2097. #define DIEDBSFL_VALID 0x00007110
  2098. #endif /* DIRECTINPUT_VERSION >= 0x0800 */
  2099. #undef INTERFACE
  2100. #define INTERFACE IDirectInputW
  2101. DECLARE_INTERFACE_(IDirectInputW, IUnknown)
  2102. {
  2103. /*** IUnknown methods ***/
  2104. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  2105. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  2106. STDMETHOD_(ULONG,Release)(THIS) PURE;
  2107. /*** IDirectInputW methods ***/
  2108. STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
  2109. STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
  2110. STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
  2111. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  2112. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
  2113. };
  2114. typedef struct IDirectInputW *LPDIRECTINPUTW;
  2115. #undef INTERFACE
  2116. #define INTERFACE IDirectInputA
  2117. DECLARE_INTERFACE_(IDirectInputA, IUnknown)
  2118. {
  2119. /*** IUnknown methods ***/
  2120. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  2121. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  2122. STDMETHOD_(ULONG,Release)(THIS) PURE;
  2123. /*** IDirectInputA methods ***/
  2124. STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
  2125. STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
  2126. STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
  2127. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  2128. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
  2129. };
  2130. typedef struct IDirectInputA *LPDIRECTINPUTA;
  2131. #ifdef UNICODE
  2132. #define IID_IDirectInput IID_IDirectInputW
  2133. #define IDirectInput IDirectInputW
  2134. #define IDirectInputVtbl IDirectInputWVtbl
  2135. #else
  2136. #define IID_IDirectInput IID_IDirectInputA
  2137. #define IDirectInput IDirectInputA
  2138. #define IDirectInputVtbl IDirectInputAVtbl
  2139. #endif
  2140. typedef struct IDirectInput *LPDIRECTINPUT;
  2141. #if !defined(__cplusplus) || defined(CINTERFACE)
  2142. #define IDirectInput_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  2143. #define IDirectInput_AddRef(p) (p)->lpVtbl->AddRef(p)
  2144. #define IDirectInput_Release(p) (p)->lpVtbl->Release(p)
  2145. #define IDirectInput_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
  2146. #define IDirectInput_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
  2147. #define IDirectInput_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
  2148. #define IDirectInput_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
  2149. #define IDirectInput_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
  2150. #else
  2151. #define IDirectInput_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  2152. #define IDirectInput_AddRef(p) (p)->AddRef()
  2153. #define IDirectInput_Release(p) (p)->Release()
  2154. #define IDirectInput_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
  2155. #define IDirectInput_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
  2156. #define IDirectInput_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
  2157. #define IDirectInput_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
  2158. #define IDirectInput_Initialize(p,a,b) (p)->Initialize(a,b)
  2159. #endif
  2160. #undef INTERFACE
  2161. #define INTERFACE IDirectInput2W
  2162. DECLARE_INTERFACE_(IDirectInput2W, IDirectInputW)
  2163. {
  2164. /*** IUnknown methods ***/
  2165. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  2166. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  2167. STDMETHOD_(ULONG,Release)(THIS) PURE;
  2168. /*** IDirectInputW methods ***/
  2169. STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
  2170. STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
  2171. STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
  2172. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  2173. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
  2174. /*** IDirectInput2W methods ***/
  2175. STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE;
  2176. };
  2177. typedef struct IDirectInput2W *LPDIRECTINPUT2W;
  2178. #undef INTERFACE
  2179. #define INTERFACE IDirectInput2A
  2180. DECLARE_INTERFACE_(IDirectInput2A, IDirectInputA)
  2181. {
  2182. /*** IUnknown methods ***/
  2183. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  2184. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  2185. STDMETHOD_(ULONG,Release)(THIS) PURE;
  2186. /*** IDirectInputA methods ***/
  2187. STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
  2188. STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
  2189. STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
  2190. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  2191. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
  2192. /*** IDirectInput2A methods ***/
  2193. STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE;
  2194. };
  2195. typedef struct IDirectInput2A *LPDIRECTINPUT2A;
  2196. #ifdef UNICODE
  2197. #define IID_IDirectInput2 IID_IDirectInput2W
  2198. #define IDirectInput2 IDirectInput2W
  2199. #define IDirectInput2Vtbl IDirectInput2WVtbl
  2200. #else
  2201. #define IID_IDirectInput2 IID_IDirectInput2A
  2202. #define IDirectInput2 IDirectInput2A
  2203. #define IDirectInput2Vtbl IDirectInput2AVtbl
  2204. #endif
  2205. typedef struct IDirectInput2 *LPDIRECTINPUT2;
  2206. #if !defined(__cplusplus) || defined(CINTERFACE)
  2207. #define IDirectInput2_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  2208. #define IDirectInput2_AddRef(p) (p)->lpVtbl->AddRef(p)
  2209. #define IDirectInput2_Release(p) (p)->lpVtbl->Release(p)
  2210. #define IDirectInput2_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
  2211. #define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
  2212. #define IDirectInput2_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
  2213. #define IDirectInput2_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
  2214. #define IDirectInput2_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
  2215. #define IDirectInput2_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)
  2216. #else
  2217. #define IDirectInput2_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  2218. #define IDirectInput2_AddRef(p) (p)->AddRef()
  2219. #define IDirectInput2_Release(p) (p)->Release()
  2220. #define IDirectInput2_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
  2221. #define IDirectInput2_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
  2222. #define IDirectInput2_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
  2223. #define IDirectInput2_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
  2224. #define IDirectInput2_Initialize(p,a,b) (p)->Initialize(a,b)
  2225. #define IDirectInput2_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)
  2226. #endif
  2227. #undef INTERFACE
  2228. #define INTERFACE IDirectInput7W
  2229. DECLARE_INTERFACE_(IDirectInput7W, IDirectInput2W)
  2230. {
  2231. /*** IUnknown methods ***/
  2232. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  2233. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  2234. STDMETHOD_(ULONG,Release)(THIS) PURE;
  2235. /*** IDirectInput2W methods ***/
  2236. STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEW *,LPUNKNOWN) PURE;
  2237. STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
  2238. STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
  2239. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  2240. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
  2241. STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE;
  2242. /*** IDirectInput7W methods ***/
  2243. STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE;
  2244. };
  2245. typedef struct IDirectInput7W *LPDIRECTINPUT7W;
  2246. #undef INTERFACE
  2247. #define INTERFACE IDirectInput7A
  2248. DECLARE_INTERFACE_(IDirectInput7A, IDirectInput2A)
  2249. {
  2250. /*** IUnknown methods ***/
  2251. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  2252. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  2253. STDMETHOD_(ULONG,Release)(THIS) PURE;
  2254. /*** IDirectInput2A methods ***/
  2255. STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICEA *,LPUNKNOWN) PURE;
  2256. STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
  2257. STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
  2258. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  2259. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
  2260. STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE;
  2261. /*** IDirectInput7A methods ***/
  2262. STDMETHOD(CreateDeviceEx)(THIS_ REFGUID,REFIID,LPVOID *,LPUNKNOWN) PURE;
  2263. };
  2264. typedef struct IDirectInput7A *LPDIRECTINPUT7A;
  2265. #ifdef UNICODE
  2266. #define IID_IDirectInput7 IID_IDirectInput7W
  2267. #define IDirectInput7 IDirectInput7W
  2268. #define IDirectInput7Vtbl IDirectInput7WVtbl
  2269. #else
  2270. #define IID_IDirectInput7 IID_IDirectInput7A
  2271. #define IDirectInput7 IDirectInput7A
  2272. #define IDirectInput7Vtbl IDirectInput7AVtbl
  2273. #endif
  2274. typedef struct IDirectInput7 *LPDIRECTINPUT7;
  2275. #if !defined(__cplusplus) || defined(CINTERFACE)
  2276. #define IDirectInput7_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  2277. #define IDirectInput7_AddRef(p) (p)->lpVtbl->AddRef(p)
  2278. #define IDirectInput7_Release(p) (p)->lpVtbl->Release(p)
  2279. #define IDirectInput7_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
  2280. #define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
  2281. #define IDirectInput7_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
  2282. #define IDirectInput7_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
  2283. #define IDirectInput7_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
  2284. #define IDirectInput7_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)
  2285. #define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->lpVtbl->CreateDeviceEx(p,a,b,c,d)
  2286. #else
  2287. #define IDirectInput7_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  2288. #define IDirectInput7_AddRef(p) (p)->AddRef()
  2289. #define IDirectInput7_Release(p) (p)->Release()
  2290. #define IDirectInput7_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
  2291. #define IDirectInput7_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
  2292. #define IDirectInput7_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
  2293. #define IDirectInput7_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
  2294. #define IDirectInput7_Initialize(p,a,b) (p)->Initialize(a,b)
  2295. #define IDirectInput7_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)
  2296. #define IDirectInput7_CreateDeviceEx(p,a,b,c,d) (p)->CreateDeviceEx(a,b,c,d)
  2297. #endif
  2298. #if(DIRECTINPUT_VERSION >= 0x0800)
  2299. #undef INTERFACE
  2300. #define INTERFACE IDirectInput8W
  2301. DECLARE_INTERFACE_(IDirectInput8W, IUnknown)
  2302. {
  2303. /*** IUnknown methods ***/
  2304. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  2305. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  2306. STDMETHOD_(ULONG,Release)(THIS) PURE;
  2307. /*** IDirectInput8W methods ***/
  2308. STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8W *,LPUNKNOWN) PURE;
  2309. STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKW,LPVOID,DWORD) PURE;
  2310. STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
  2311. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  2312. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
  2313. STDMETHOD(FindDevice)(THIS_ REFGUID,LPCWSTR,LPGUID) PURE;
  2314. STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCWSTR,LPDIACTIONFORMATW,LPDIENUMDEVICESBYSEMANTICSCBW,LPVOID,DWORD) PURE;
  2315. STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSW,DWORD,LPVOID) PURE;
  2316. };
  2317. typedef struct IDirectInput8W *LPDIRECTINPUT8W;
  2318. #undef INTERFACE
  2319. #define INTERFACE IDirectInput8A
  2320. DECLARE_INTERFACE_(IDirectInput8A, IUnknown)
  2321. {
  2322. /*** IUnknown methods ***/
  2323. STDMETHOD(QueryInterface)(THIS_ REFIID riid, LPVOID * ppvObj) PURE;
  2324. STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  2325. STDMETHOD_(ULONG,Release)(THIS) PURE;
  2326. /*** IDirectInput8A methods ***/
  2327. STDMETHOD(CreateDevice)(THIS_ REFGUID,LPDIRECTINPUTDEVICE8A *,LPUNKNOWN) PURE;
  2328. STDMETHOD(EnumDevices)(THIS_ DWORD,LPDIENUMDEVICESCALLBACKA,LPVOID,DWORD) PURE;
  2329. STDMETHOD(GetDeviceStatus)(THIS_ REFGUID) PURE;
  2330. STDMETHOD(RunControlPanel)(THIS_ HWND,DWORD) PURE;
  2331. STDMETHOD(Initialize)(THIS_ HINSTANCE,DWORD) PURE;
  2332. STDMETHOD(FindDevice)(THIS_ REFGUID,LPCSTR,LPGUID) PURE;
  2333. STDMETHOD(EnumDevicesBySemantics)(THIS_ LPCSTR,LPDIACTIONFORMATA,LPDIENUMDEVICESBYSEMANTICSCBA,LPVOID,DWORD) PURE;
  2334. STDMETHOD(ConfigureDevices)(THIS_ LPDICONFIGUREDEVICESCALLBACK,LPDICONFIGUREDEVICESPARAMSA,DWORD,LPVOID) PURE;
  2335. };
  2336. typedef struct IDirectInput8A *LPDIRECTINPUT8A;
  2337. #ifdef UNICODE
  2338. #define IID_IDirectInput8 IID_IDirectInput8W
  2339. #define IDirectInput8 IDirectInput8W
  2340. #define IDirectInput8Vtbl IDirectInput8WVtbl
  2341. #else
  2342. #define IID_IDirectInput8 IID_IDirectInput8A
  2343. #define IDirectInput8 IDirectInput8A
  2344. #define IDirectInput8Vtbl IDirectInput8AVtbl
  2345. #endif
  2346. typedef struct IDirectInput8 *LPDIRECTINPUT8;
  2347. #if !defined(__cplusplus) || defined(CINTERFACE)
  2348. #define IDirectInput8_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
  2349. #define IDirectInput8_AddRef(p) (p)->lpVtbl->AddRef(p)
  2350. #define IDirectInput8_Release(p) (p)->lpVtbl->Release(p)
  2351. #define IDirectInput8_CreateDevice(p,a,b,c) (p)->lpVtbl->CreateDevice(p,a,b,c)
  2352. #define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->lpVtbl->EnumDevices(p,a,b,c,d)
  2353. #define IDirectInput8_GetDeviceStatus(p,a) (p)->lpVtbl->GetDeviceStatus(p,a)
  2354. #define IDirectInput8_RunControlPanel(p,a,b) (p)->lpVtbl->RunControlPanel(p,a,b)
  2355. #define IDirectInput8_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
  2356. #define IDirectInput8_FindDevice(p,a,b,c) (p)->lpVtbl->FindDevice(p,a,b,c)
  2357. #define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->lpVtbl->EnumDevicesBySemantics(p,a,b,c,d,e)
  2358. #define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->lpVtbl->ConfigureDevices(p,a,b,c,d)
  2359. #else
  2360. #define IDirectInput8_QueryInterface(p,a,b) (p)->QueryInterface(a,b)
  2361. #define IDirectInput8_AddRef(p) (p)->AddRef()
  2362. #define IDirectInput8_Release(p) (p)->Release()
  2363. #define IDirectInput8_CreateDevice(p,a,b,c) (p)->CreateDevice(a,b,c)
  2364. #define IDirectInput8_EnumDevices(p,a,b,c,d) (p)->EnumDevices(a,b,c,d)
  2365. #define IDirectInput8_GetDeviceStatus(p,a) (p)->GetDeviceStatus(a)
  2366. #define IDirectInput8_RunControlPanel(p,a,b) (p)->RunControlPanel(a,b)
  2367. #define IDirectInput8_Initialize(p,a,b) (p)->Initialize(a,b)
  2368. #define IDirectInput8_FindDevice(p,a,b,c) (p)->FindDevice(a,b,c)
  2369. #define IDirectInput8_EnumDevicesBySemantics(p,a,b,c,d,e) (p)->EnumDevicesBySemantics(a,b,c,d,e)
  2370. #define IDirectInput8_ConfigureDevices(p,a,b,c,d) (p)->ConfigureDevices(a,b,c,d)
  2371. #endif
  2372. #endif /* DIRECTINPUT_VERSION >= 0x0800 */
  2373. #if DIRECTINPUT_VERSION > 0x0700
  2374. extern HRESULT WINAPI DirectInput8Create(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter);
  2375. #else
  2376. extern HRESULT WINAPI DirectInputCreateA(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTA *ppDI, LPUNKNOWN punkOuter);
  2377. extern HRESULT WINAPI DirectInputCreateW(HINSTANCE hinst, DWORD dwVersion, LPDIRECTINPUTW *ppDI, LPUNKNOWN punkOuter);
  2378. #ifdef UNICODE
  2379. #define DirectInputCreate DirectInputCreateW
  2380. #else
  2381. #define DirectInputCreate DirectInputCreateA
  2382. #endif // !UNICODE
  2383. extern HRESULT WINAPI DirectInputCreateEx(HINSTANCE hinst, DWORD dwVersion, REFIID riidltf, LPVOID *ppvOut, LPUNKNOWN punkOuter);
  2384. #endif /* DIRECTINPUT_VERSION > 0x700 */
  2385. #endif /* DIJ_RINGZERO */
  2386. /****************************************************************************
  2387. *
  2388. * Return Codes
  2389. *
  2390. ****************************************************************************/
  2391. /*
  2392. * The operation completed successfully.
  2393. */
  2394. #define DI_OK S_OK
  2395. /*
  2396. * The device exists but is not currently attached.
  2397. */
  2398. #define DI_NOTATTACHED S_FALSE
  2399. /*
  2400. * The device buffer overflowed. Some input was lost.
  2401. */
  2402. #define DI_BUFFEROVERFLOW S_FALSE
  2403. /*
  2404. * The change in device properties had no effect.
  2405. */
  2406. #define DI_PROPNOEFFECT S_FALSE
  2407. /*
  2408. * The operation had no effect.
  2409. */
  2410. #define DI_NOEFFECT S_FALSE
  2411. /*
  2412. * The device is a polled device. As a result, device buffering
  2413. * will not collect any data and event notifications will not be
  2414. * signalled until GetDeviceState is called.
  2415. */
  2416. #define DI_POLLEDDEVICE ((HRESULT)0x00000002L)
  2417. /*
  2418. * The parameters of the effect were successfully updated by
  2419. * IDirectInputEffect::SetParameters, but the effect was not
  2420. * downloaded because the device is not exclusively acquired
  2421. * or because the DIEP_NODOWNLOAD flag was passed.
  2422. */
  2423. #define DI_DOWNLOADSKIPPED ((HRESULT)0x00000003L)
  2424. /*
  2425. * The parameters of the effect were successfully updated by
  2426. * IDirectInputEffect::SetParameters, but in order to change
  2427. * the parameters, the effect needed to be restarted.
  2428. */
  2429. #define DI_EFFECTRESTARTED ((HRESULT)0x00000004L)
  2430. /*
  2431. * The parameters of the effect were successfully updated by
  2432. * IDirectInputEffect::SetParameters, but some of them were
  2433. * beyond the capabilities of the device and were truncated.
  2434. */
  2435. #define DI_TRUNCATED ((HRESULT)0x00000008L)
  2436. /*
  2437. * The settings have been successfully applied but could not be
  2438. * persisted.
  2439. */
  2440. #define DI_SETTINGSNOTSAVED ((HRESULT)0x0000000BL)
  2441. /*
  2442. * Equal to DI_EFFECTRESTARTED | DI_TRUNCATED.
  2443. */
  2444. #define DI_TRUNCATEDANDRESTARTED ((HRESULT)0x0000000CL)
  2445. /*
  2446. * A SUCCESS code indicating that settings cannot be modified.
  2447. */
  2448. #define DI_WRITEPROTECT ((HRESULT)0x00000013L)
  2449. /*
  2450. * The application requires a newer version of DirectInput.
  2451. */
  2452. #define DIERR_OLDDIRECTINPUTVERSION \
  2453. MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_OLD_WIN_VERSION)
  2454. /*
  2455. * The application was written for an unsupported prerelease version
  2456. * of DirectInput.
  2457. */
  2458. #define DIERR_BETADIRECTINPUTVERSION \
  2459. MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_RMODE_APP)
  2460. /*
  2461. * The object could not be created due to an incompatible driver version
  2462. * or mismatched or incomplete driver components.
  2463. */
  2464. #define DIERR_BADDRIVERVER \
  2465. MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BAD_DRIVER_LEVEL)
  2466. /*
  2467. * The device or device instance or effect is not registered with DirectInput.
  2468. */
  2469. #define DIERR_DEVICENOTREG REGDB_E_CLASSNOTREG
  2470. /*
  2471. * The requested object does not exist.
  2472. */
  2473. #define DIERR_NOTFOUND \
  2474. MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
  2475. /*
  2476. * The requested object does not exist.
  2477. */
  2478. #define DIERR_OBJECTNOTFOUND \
  2479. MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_FILE_NOT_FOUND)
  2480. /*
  2481. * An invalid parameter was passed to the returning function,
  2482. * or the object was not in a state that admitted the function
  2483. * to be called.
  2484. */
  2485. #define DIERR_INVALIDPARAM E_INVALIDARG
  2486. /*
  2487. * The specified interface is not supported by the object
  2488. */
  2489. #define DIERR_NOINTERFACE E_NOINTERFACE
  2490. /*
  2491. * An undetermined error occured inside the DInput subsystem
  2492. */
  2493. #define DIERR_GENERIC E_FAIL
  2494. /*
  2495. * The DInput subsystem couldn't allocate sufficient memory to complete the
  2496. * caller's request.
  2497. */
  2498. #define DIERR_OUTOFMEMORY E_OUTOFMEMORY
  2499. /*
  2500. * The function called is not supported at this time
  2501. */
  2502. #define DIERR_UNSUPPORTED E_NOTIMPL
  2503. /*
  2504. * This object has not been initialized
  2505. */
  2506. #define DIERR_NOTINITIALIZED \
  2507. MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_NOT_READY)
  2508. /*
  2509. * This object is already initialized
  2510. */
  2511. #define DIERR_ALREADYINITIALIZED \
  2512. MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_ALREADY_INITIALIZED)
  2513. /*
  2514. * This object does not support aggregation
  2515. */
  2516. #define DIERR_NOAGGREGATION CLASS_E_NOAGGREGATION
  2517. /*
  2518. * Another app has a higher priority level, preventing this call from
  2519. * succeeding.
  2520. */
  2521. #define DIERR_OTHERAPPHASPRIO E_ACCESSDENIED
  2522. /*
  2523. * Access to the device has been lost. It must be re-acquired.
  2524. */
  2525. #define DIERR_INPUTLOST \
  2526. MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_READ_FAULT)
  2527. /*
  2528. * The operation cannot be performed while the device is acquired.
  2529. */
  2530. #define DIERR_ACQUIRED \
  2531. MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_BUSY)
  2532. /*
  2533. * The operation cannot be performed unless the device is acquired.
  2534. */
  2535. #define DIERR_NOTACQUIRED \
  2536. MAKE_HRESULT(SEVERITY_ERROR, FACILITY_WIN32, ERROR_INVALID_ACCESS)
  2537. /*
  2538. * The specified property cannot be changed.
  2539. */
  2540. #define DIERR_READONLY E_ACCESSDENIED
  2541. /*
  2542. * The device already has an event notification associated with it.
  2543. */
  2544. #define DIERR_HANDLEEXISTS E_ACCESSDENIED
  2545. /*
  2546. * Data is not yet available.
  2547. */
  2548. #ifndef E_PENDING
  2549. #define E_PENDING 0x8000000AL
  2550. #endif
  2551. /*
  2552. * Unable to IDirectInputJoyConfig_Acquire because the user
  2553. * does not have sufficient privileges to change the joystick
  2554. * configuration.
  2555. */
  2556. #define DIERR_INSUFFICIENTPRIVS 0x80040200L
  2557. /*
  2558. * The device is full.
  2559. */
  2560. #define DIERR_DEVICEFULL 0x80040201L
  2561. /*
  2562. * Not all the requested information fit into the buffer.
  2563. */
  2564. #define DIERR_MOREDATA 0x80040202L
  2565. /*
  2566. * The effect is not downloaded.
  2567. */
  2568. #define DIERR_NOTDOWNLOADED 0x80040203L
  2569. /*
  2570. * The device cannot be reinitialized because there are still effects
  2571. * attached to it.
  2572. */
  2573. #define DIERR_HASEFFECTS 0x80040204L
  2574. /*
  2575. * The operation cannot be performed unless the device is acquired
  2576. * in DISCL_EXCLUSIVE mode.
  2577. */
  2578. #define DIERR_NOTEXCLUSIVEACQUIRED 0x80040205L
  2579. /*
  2580. * The effect could not be downloaded because essential information
  2581. * is missing. For example, no axes have been associated with the
  2582. * effect, or no type-specific information has been created.
  2583. */
  2584. #define DIERR_INCOMPLETEEFFECT 0x80040206L
  2585. /*
  2586. * Attempted to read buffered device data from a device that is
  2587. * not buffered.
  2588. */
  2589. #define DIERR_NOTBUFFERED 0x80040207L
  2590. /*
  2591. * An attempt was made to modify parameters of an effect while it is
  2592. * playing. Not all hardware devices support altering the parameters
  2593. * of an effect while it is playing.
  2594. */
  2595. #define DIERR_EFFECTPLAYING 0x80040208L
  2596. /*
  2597. * The operation could not be completed because the device is not
  2598. * plugged in.
  2599. */
  2600. #define DIERR_UNPLUGGED 0x80040209L
  2601. /*
  2602. * SendDeviceData failed because more information was requested
  2603. * to be sent than can be sent to the device. Some devices have
  2604. * restrictions on how much data can be sent to them. (For example,
  2605. * there might be a limit on the number of buttons that can be
  2606. * pressed at once.)
  2607. */
  2608. #define DIERR_REPORTFULL 0x8004020AL
  2609. /*
  2610. * A mapper file function failed because reading or writing the user or IHV
  2611. * settings file failed.
  2612. */
  2613. #define DIERR_MAPFILEFAIL 0x8004020BL
  2614. //
  2615. // Copyright (C) Microsoft. All rights reserved.
  2616. //
  2617. //
  2618. // Copyright (C) Microsoft. All rights reserved.
  2619. //
  2620. /*--- DINPUT Mapper Definitions: New for Dx8 ---*/
  2621. /*--- Keyboard
  2622. Physical Keyboard Device ---*/
  2623. //
  2624. // Copyright (C) Microsoft. All rights reserved.
  2625. //
  2626. #define DIKEYBOARD_ESCAPE 0x81000401
  2627. #define DIKEYBOARD_1 0x81000402
  2628. #define DIKEYBOARD_2 0x81000403
  2629. #define DIKEYBOARD_3 0x81000404
  2630. #define DIKEYBOARD_4 0x81000405
  2631. #define DIKEYBOARD_5 0x81000406
  2632. #define DIKEYBOARD_6 0x81000407
  2633. #define DIKEYBOARD_7 0x81000408
  2634. #define DIKEYBOARD_8 0x81000409
  2635. #define DIKEYBOARD_9 0x8100040A
  2636. #define DIKEYBOARD_0 0x8100040B
  2637. #define DIKEYBOARD_MINUS 0x8100040C /* - on main keyboard */
  2638. #define DIKEYBOARD_EQUALS 0x8100040D
  2639. #define DIKEYBOARD_BACK 0x8100040E /* backspace */
  2640. #define DIKEYBOARD_TAB 0x8100040F
  2641. #define DIKEYBOARD_Q 0x81000410
  2642. #define DIKEYBOARD_W 0x81000411
  2643. #define DIKEYBOARD_E 0x81000412
  2644. #define DIKEYBOARD_R 0x81000413
  2645. #define DIKEYBOARD_T 0x81000414
  2646. #define DIKEYBOARD_Y 0x81000415
  2647. #define DIKEYBOARD_U 0x81000416
  2648. #define DIKEYBOARD_I 0x81000417
  2649. #define DIKEYBOARD_O 0x81000418
  2650. #define DIKEYBOARD_P 0x81000419
  2651. #define DIKEYBOARD_LBRACKET 0x8100041A
  2652. #define DIKEYBOARD_RBRACKET 0x8100041B
  2653. #define DIKEYBOARD_RETURN 0x8100041C /* Enter on main keyboard */
  2654. #define DIKEYBOARD_LCONTROL 0x8100041D
  2655. #define DIKEYBOARD_A 0x8100041E
  2656. #define DIKEYBOARD_S 0x8100041F
  2657. #define DIKEYBOARD_D 0x81000420
  2658. #define DIKEYBOARD_F 0x81000421
  2659. #define DIKEYBOARD_G 0x81000422
  2660. #define DIKEYBOARD_H 0x81000423
  2661. #define DIKEYBOARD_J 0x81000424
  2662. #define DIKEYBOARD_K 0x81000425
  2663. #define DIKEYBOARD_L 0x81000426
  2664. #define DIKEYBOARD_SEMICOLON 0x81000427
  2665. #define DIKEYBOARD_APOSTROPHE 0x81000428
  2666. #define DIKEYBOARD_GRAVE 0x81000429 /* accent grave */
  2667. #define DIKEYBOARD_LSHIFT 0x8100042A
  2668. #define DIKEYBOARD_BACKSLASH 0x8100042B
  2669. #define DIKEYBOARD_Z 0x8100042C
  2670. #define DIKEYBOARD_X 0x8100042D
  2671. #define DIKEYBOARD_C 0x8100042E
  2672. #define DIKEYBOARD_V 0x8100042F
  2673. #define DIKEYBOARD_B 0x81000430
  2674. #define DIKEYBOARD_N 0x81000431
  2675. #define DIKEYBOARD_M 0x81000432
  2676. #define DIKEYBOARD_COMMA 0x81000433
  2677. #define DIKEYBOARD_PERIOD 0x81000434 /* . on main keyboard */
  2678. #define DIKEYBOARD_SLASH 0x81000435 /* / on main keyboard */
  2679. #define DIKEYBOARD_RSHIFT 0x81000436
  2680. #define DIKEYBOARD_MULTIPLY 0x81000437 /* * on numeric keypad */
  2681. #define DIKEYBOARD_LMENU 0x81000438 /* left Alt */
  2682. #define DIKEYBOARD_SPACE 0x81000439
  2683. #define DIKEYBOARD_CAPITAL 0x8100043A
  2684. #define DIKEYBOARD_F1 0x8100043B
  2685. #define DIKEYBOARD_F2 0x8100043C
  2686. #define DIKEYBOARD_F3 0x8100043D
  2687. #define DIKEYBOARD_F4 0x8100043E
  2688. #define DIKEYBOARD_F5 0x8100043F
  2689. #define DIKEYBOARD_F6 0x81000440
  2690. #define DIKEYBOARD_F7 0x81000441
  2691. #define DIKEYBOARD_F8 0x81000442
  2692. #define DIKEYBOARD_F9 0x81000443
  2693. #define DIKEYBOARD_F10 0x81000444
  2694. #define DIKEYBOARD_NUMLOCK 0x81000445
  2695. #define DIKEYBOARD_SCROLL 0x81000446 /* Scroll Lock */
  2696. #define DIKEYBOARD_NUMPAD7 0x81000447
  2697. #define DIKEYBOARD_NUMPAD8 0x81000448
  2698. #define DIKEYBOARD_NUMPAD9 0x81000449
  2699. #define DIKEYBOARD_SUBTRACT 0x8100044A /* - on numeric keypad */
  2700. #define DIKEYBOARD_NUMPAD4 0x8100044B
  2701. #define DIKEYBOARD_NUMPAD5 0x8100044C
  2702. #define DIKEYBOARD_NUMPAD6 0x8100044D
  2703. #define DIKEYBOARD_ADD 0x8100044E /* + on numeric keypad */
  2704. #define DIKEYBOARD_NUMPAD1 0x8100044F
  2705. #define DIKEYBOARD_NUMPAD2 0x81000450
  2706. #define DIKEYBOARD_NUMPAD3 0x81000451
  2707. #define DIKEYBOARD_NUMPAD0 0x81000452
  2708. #define DIKEYBOARD_DECIMAL 0x81000453 /* . on numeric keypad */
  2709. #define DIKEYBOARD_OEM_102 0x81000456 /* <> or \| on RT 102-key keyboard (Non-U.S.) */
  2710. #define DIKEYBOARD_F11 0x81000457
  2711. #define DIKEYBOARD_F12 0x81000458
  2712. #define DIKEYBOARD_F13 0x81000464 /* (NEC PC98) */
  2713. #define DIKEYBOARD_F14 0x81000465 /* (NEC PC98) */
  2714. #define DIKEYBOARD_F15 0x81000466 /* (NEC PC98) */
  2715. #define DIKEYBOARD_KANA 0x81000470 /* (Japanese keyboard) */
  2716. #define DIKEYBOARD_ABNT_C1 0x81000473 /* /? on Brazilian keyboard */
  2717. #define DIKEYBOARD_CONVERT 0x81000479 /* (Japanese keyboard) */
  2718. #define DIKEYBOARD_NOCONVERT 0x8100047B /* (Japanese keyboard) */
  2719. #define DIKEYBOARD_YEN 0x8100047D /* (Japanese keyboard) */
  2720. #define DIKEYBOARD_ABNT_C2 0x8100047E /* Numpad . on Brazilian keyboard */
  2721. #define DIKEYBOARD_NUMPADEQUALS 0x8100048D /* = on numeric keypad (NEC PC98) */
  2722. #define DIKEYBOARD_PREVTRACK 0x81000490 /* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) */
  2723. #define DIKEYBOARD_AT 0x81000491 /* (NEC PC98) */
  2724. #define DIKEYBOARD_COLON 0x81000492 /* (NEC PC98) */
  2725. #define DIKEYBOARD_UNDERLINE 0x81000493 /* (NEC PC98) */
  2726. #define DIKEYBOARD_KANJI 0x81000494 /* (Japanese keyboard) */
  2727. #define DIKEYBOARD_STOP 0x81000495 /* (NEC PC98) */
  2728. #define DIKEYBOARD_AX 0x81000496 /* (Japan AX) */
  2729. #define DIKEYBOARD_UNLABELED 0x81000497 /* (J3100) */
  2730. #define DIKEYBOARD_NEXTTRACK 0x81000499 /* Next Track */
  2731. #define DIKEYBOARD_NUMPADENTER 0x8100049C /* Enter on numeric keypad */
  2732. #define DIKEYBOARD_RCONTROL 0x8100049D
  2733. #define DIKEYBOARD_MUTE 0x810004A0 /* Mute */
  2734. #define DIKEYBOARD_CALCULATOR 0x810004A1 /* Calculator */
  2735. #define DIKEYBOARD_PLAYPAUSE 0x810004A2 /* Play / Pause */
  2736. #define DIKEYBOARD_MEDIASTOP 0x810004A4 /* Media Stop */
  2737. #define DIKEYBOARD_VOLUMEDOWN 0x810004AE /* Volume - */
  2738. #define DIKEYBOARD_VOLUMEUP 0x810004B0 /* Volume + */
  2739. #define DIKEYBOARD_WEBHOME 0x810004B2 /* Web home */
  2740. #define DIKEYBOARD_NUMPADCOMMA 0x810004B3 /* , on numeric keypad (NEC PC98) */
  2741. #define DIKEYBOARD_DIVIDE 0x810004B5 /* / on numeric keypad */
  2742. #define DIKEYBOARD_SYSRQ 0x810004B7
  2743. #define DIKEYBOARD_RMENU 0x810004B8 /* right Alt */
  2744. #define DIKEYBOARD_PAUSE 0x810004C5 /* Pause */
  2745. #define DIKEYBOARD_HOME 0x810004C7 /* Home on arrow keypad */
  2746. #define DIKEYBOARD_UP 0x810004C8 /* UpArrow on arrow keypad */
  2747. #define DIKEYBOARD_PRIOR 0x810004C9 /* PgUp on arrow keypad */
  2748. #define DIKEYBOARD_LEFT 0x810004CB /* LeftArrow on arrow keypad */
  2749. #define DIKEYBOARD_RIGHT 0x810004CD /* RightArrow on arrow keypad */
  2750. #define DIKEYBOARD_END 0x810004CF /* End on arrow keypad */
  2751. #define DIKEYBOARD_DOWN 0x810004D0 /* DownArrow on arrow keypad */
  2752. #define DIKEYBOARD_NEXT 0x810004D1 /* PgDn on arrow keypad */
  2753. #define DIKEYBOARD_INSERT 0x810004D2 /* Insert on arrow keypad */
  2754. #define DIKEYBOARD_DELETE 0x810004D3 /* Delete on arrow keypad */
  2755. #define DIKEYBOARD_LWIN 0x810004DB /* Left Windows key */
  2756. #define DIKEYBOARD_RWIN 0x810004DC /* Right Windows key */
  2757. #define DIKEYBOARD_APPS 0x810004DD /* AppMenu key */
  2758. #define DIKEYBOARD_POWER 0x810004DE /* System Power */
  2759. #define DIKEYBOARD_SLEEP 0x810004DF /* System Sleep */
  2760. #define DIKEYBOARD_WAKE 0x810004E3 /* System Wake */
  2761. #define DIKEYBOARD_WEBSEARCH 0x810004E5 /* Web Search */
  2762. #define DIKEYBOARD_WEBFAVORITES 0x810004E6 /* Web Favorites */
  2763. #define DIKEYBOARD_WEBREFRESH 0x810004E7 /* Web Refresh */
  2764. #define DIKEYBOARD_WEBSTOP 0x810004E8 /* Web Stop */
  2765. #define DIKEYBOARD_WEBFORWARD 0x810004E9 /* Web Forward */
  2766. #define DIKEYBOARD_WEBBACK 0x810004EA /* Web Back */
  2767. #define DIKEYBOARD_MYCOMPUTER 0x810004EB /* My Computer */
  2768. #define DIKEYBOARD_MAIL 0x810004EC /* Mail */
  2769. #define DIKEYBOARD_MEDIASELECT 0x810004ED /* Media Select */
  2770. /*--- MOUSE
  2771. Physical Mouse Device ---*/
  2772. #define DIMOUSE_XAXISAB (0x82000200 |DIMOFS_X ) /* X Axis-absolute: Some mice natively report absolute coordinates */
  2773. #define DIMOUSE_YAXISAB (0x82000200 |DIMOFS_Y ) /* Y Axis-absolute: Some mice natively report absolute coordinates */
  2774. #define DIMOUSE_XAXIS (0x82000300 |DIMOFS_X ) /* X Axis */
  2775. #define DIMOUSE_YAXIS (0x82000300 |DIMOFS_Y ) /* Y Axis */
  2776. #define DIMOUSE_WHEEL (0x82000300 |DIMOFS_Z ) /* Z Axis */
  2777. #define DIMOUSE_BUTTON0 (0x82000400 |DIMOFS_BUTTON0) /* Button 0 */
  2778. #define DIMOUSE_BUTTON1 (0x82000400 |DIMOFS_BUTTON1) /* Button 1 */
  2779. #define DIMOUSE_BUTTON2 (0x82000400 |DIMOFS_BUTTON2) /* Button 2 */
  2780. #define DIMOUSE_BUTTON3 (0x82000400 |DIMOFS_BUTTON3) /* Button 3 */
  2781. #define DIMOUSE_BUTTON4 (0x82000400 |DIMOFS_BUTTON4) /* Button 4 */
  2782. #define DIMOUSE_BUTTON5 (0x82000400 |DIMOFS_BUTTON5) /* Button 5 */
  2783. #define DIMOUSE_BUTTON6 (0x82000400 |DIMOFS_BUTTON6) /* Button 6 */
  2784. #define DIMOUSE_BUTTON7 (0x82000400 |DIMOFS_BUTTON7) /* Button 7 */
  2785. /*--- VOICE
  2786. Physical Dplay Voice Device ---*/
  2787. #define DIVOICE_CHANNEL1 0x83000401
  2788. #define DIVOICE_CHANNEL2 0x83000402
  2789. #define DIVOICE_CHANNEL3 0x83000403
  2790. #define DIVOICE_CHANNEL4 0x83000404
  2791. #define DIVOICE_CHANNEL5 0x83000405
  2792. #define DIVOICE_CHANNEL6 0x83000406
  2793. #define DIVOICE_CHANNEL7 0x83000407
  2794. #define DIVOICE_CHANNEL8 0x83000408
  2795. #define DIVOICE_TEAM 0x83000409
  2796. #define DIVOICE_ALL 0x8300040A
  2797. #define DIVOICE_RECORDMUTE 0x8300040B
  2798. #define DIVOICE_PLAYBACKMUTE 0x8300040C
  2799. #define DIVOICE_TRANSMIT 0x8300040D
  2800. #define DIVOICE_VOICECOMMAND 0x83000410
  2801. /*--- Driving Simulator - Racing
  2802. Vehicle control is primary objective ---*/
  2803. #define DIVIRTUAL_DRIVING_RACE 0x01000000
  2804. #define DIAXIS_DRIVINGR_STEER 0x01008A01 /* Steering */
  2805. #define DIAXIS_DRIVINGR_ACCELERATE 0x01039202 /* Accelerate */
  2806. #define DIAXIS_DRIVINGR_BRAKE 0x01041203 /* Brake-Axis */
  2807. #define DIBUTTON_DRIVINGR_SHIFTUP 0x01000C01 /* Shift to next higher gear */
  2808. #define DIBUTTON_DRIVINGR_SHIFTDOWN 0x01000C02 /* Shift to next lower gear */
  2809. #define DIBUTTON_DRIVINGR_VIEW 0x01001C03 /* Cycle through view options */
  2810. #define DIBUTTON_DRIVINGR_MENU 0x010004FD /* Show menu options */
  2811. /*--- Priority 2 controls ---*/
  2812. #define DIAXIS_DRIVINGR_ACCEL_AND_BRAKE 0x01014A04 /* Some devices combine accelerate and brake in a single axis */
  2813. #define DIHATSWITCH_DRIVINGR_GLANCE 0x01004601 /* Look around */
  2814. #define DIBUTTON_DRIVINGR_BRAKE 0x01004C04 /* Brake-button */
  2815. #define DIBUTTON_DRIVINGR_DASHBOARD 0x01004405 /* Select next dashboard option */
  2816. #define DIBUTTON_DRIVINGR_AIDS 0x01004406 /* Driver correction aids */
  2817. #define DIBUTTON_DRIVINGR_MAP 0x01004407 /* Display Driving Map */
  2818. #define DIBUTTON_DRIVINGR_BOOST 0x01004408 /* Turbo Boost */
  2819. #define DIBUTTON_DRIVINGR_PIT 0x01004409 /* Pit stop notification */
  2820. #define DIBUTTON_DRIVINGR_ACCELERATE_LINK 0x0103D4E0 /* Fallback Accelerate button */
  2821. #define DIBUTTON_DRIVINGR_STEER_LEFT_LINK 0x0100CCE4 /* Fallback Steer Left button */
  2822. #define DIBUTTON_DRIVINGR_STEER_RIGHT_LINK 0x0100CCEC /* Fallback Steer Right button */
  2823. #define DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK 0x0107C4E4 /* Fallback Glance Left button */
  2824. #define DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK 0x0107C4EC /* Fallback Glance Right button */
  2825. #define DIBUTTON_DRIVINGR_DEVICE 0x010044FE /* Show input device and controls */
  2826. #define DIBUTTON_DRIVINGR_PAUSE 0x010044FC /* Start / Pause / Restart game */
  2827. /*--- Driving Simulator - Combat
  2828. Combat from within a vehicle is primary objective ---*/
  2829. #define DIVIRTUAL_DRIVING_COMBAT 0x02000000
  2830. #define DIAXIS_DRIVINGC_STEER 0x02008A01 /* Steering */
  2831. #define DIAXIS_DRIVINGC_ACCELERATE 0x02039202 /* Accelerate */
  2832. #define DIAXIS_DRIVINGC_BRAKE 0x02041203 /* Brake-axis */
  2833. #define DIBUTTON_DRIVINGC_FIRE 0x02000C01 /* Fire */
  2834. #define DIBUTTON_DRIVINGC_WEAPONS 0x02000C02 /* Select next weapon */
  2835. #define DIBUTTON_DRIVINGC_TARGET 0x02000C03 /* Select next available target */
  2836. #define DIBUTTON_DRIVINGC_MENU 0x020004FD /* Show menu options */
  2837. /*--- Priority 2 controls ---*/
  2838. #define DIAXIS_DRIVINGC_ACCEL_AND_BRAKE 0x02014A04 /* Some devices combine accelerate and brake in a single axis */
  2839. #define DIHATSWITCH_DRIVINGC_GLANCE 0x02004601 /* Look around */
  2840. #define DIBUTTON_DRIVINGC_SHIFTUP 0x02004C04 /* Shift to next higher gear */
  2841. #define DIBUTTON_DRIVINGC_SHIFTDOWN 0x02004C05 /* Shift to next lower gear */
  2842. #define DIBUTTON_DRIVINGC_DASHBOARD 0x02004406 /* Select next dashboard option */
  2843. #define DIBUTTON_DRIVINGC_AIDS 0x02004407 /* Driver correction aids */
  2844. #define DIBUTTON_DRIVINGC_BRAKE 0x02004C08 /* Brake-button */
  2845. #define DIBUTTON_DRIVINGC_FIRESECONDARY 0x02004C09 /* Alternative fire button */
  2846. #define DIBUTTON_DRIVINGC_ACCELERATE_LINK 0x0203D4E0 /* Fallback Accelerate button */
  2847. #define DIBUTTON_DRIVINGC_STEER_LEFT_LINK 0x0200CCE4 /* Fallback Steer Left button */
  2848. #define DIBUTTON_DRIVINGC_STEER_RIGHT_LINK 0x0200CCEC /* Fallback Steer Right button */
  2849. #define DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK 0x0207C4E4 /* Fallback Glance Left button */
  2850. #define DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK 0x0207C4EC /* Fallback Glance Right button */
  2851. #define DIBUTTON_DRIVINGC_DEVICE 0x020044FE /* Show input device and controls */
  2852. #define DIBUTTON_DRIVINGC_PAUSE 0x020044FC /* Start / Pause / Restart game */
  2853. /*--- Driving Simulator - Tank
  2854. Combat from withing a tank is primary objective ---*/
  2855. #define DIVIRTUAL_DRIVING_TANK 0x03000000
  2856. #define DIAXIS_DRIVINGT_STEER 0x03008A01 /* Turn tank left / right */
  2857. #define DIAXIS_DRIVINGT_BARREL 0x03010202 /* Raise / lower barrel */
  2858. #define DIAXIS_DRIVINGT_ACCELERATE 0x03039203 /* Accelerate */
  2859. #define DIAXIS_DRIVINGT_ROTATE 0x03020204 /* Turn barrel left / right */
  2860. #define DIBUTTON_DRIVINGT_FIRE 0x03000C01 /* Fire */
  2861. #define DIBUTTON_DRIVINGT_WEAPONS 0x03000C02 /* Select next weapon */
  2862. #define DIBUTTON_DRIVINGT_TARGET 0x03000C03 /* Selects next available target */
  2863. #define DIBUTTON_DRIVINGT_MENU 0x030004FD /* Show menu options */
  2864. /*--- Priority 2 controls ---*/
  2865. #define DIHATSWITCH_DRIVINGT_GLANCE 0x03004601 /* Look around */
  2866. #define DIAXIS_DRIVINGT_BRAKE 0x03045205 /* Brake-axis */
  2867. #define DIAXIS_DRIVINGT_ACCEL_AND_BRAKE 0x03014A06 /* Some devices combine accelerate and brake in a single axis */
  2868. #define DIBUTTON_DRIVINGT_VIEW 0x03005C04 /* Cycle through view options */
  2869. #define DIBUTTON_DRIVINGT_DASHBOARD 0x03005C05 /* Select next dashboard option */
  2870. #define DIBUTTON_DRIVINGT_BRAKE 0x03004C06 /* Brake-button */
  2871. #define DIBUTTON_DRIVINGT_FIRESECONDARY 0x03004C07 /* Alternative fire button */
  2872. #define DIBUTTON_DRIVINGT_ACCELERATE_LINK 0x0303D4E0 /* Fallback Accelerate button */
  2873. #define DIBUTTON_DRIVINGT_STEER_LEFT_LINK 0x0300CCE4 /* Fallback Steer Left button */
  2874. #define DIBUTTON_DRIVINGT_STEER_RIGHT_LINK 0x0300CCEC /* Fallback Steer Right button */
  2875. #define DIBUTTON_DRIVINGT_BARREL_UP_LINK 0x030144E0 /* Fallback Barrel up button */
  2876. #define DIBUTTON_DRIVINGT_BARREL_DOWN_LINK 0x030144E8 /* Fallback Barrel down button */
  2877. #define DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK 0x030244E4 /* Fallback Rotate left button */
  2878. #define DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK 0x030244EC /* Fallback Rotate right button */
  2879. #define DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK 0x0307C4E4 /* Fallback Glance Left button */
  2880. #define DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK 0x0307C4EC /* Fallback Glance Right button */
  2881. #define DIBUTTON_DRIVINGT_DEVICE 0x030044FE /* Show input device and controls */
  2882. #define DIBUTTON_DRIVINGT_PAUSE 0x030044FC /* Start / Pause / Restart game */
  2883. /*--- Flight Simulator - Civilian
  2884. Plane control is the primary objective ---*/
  2885. #define DIVIRTUAL_FLYING_CIVILIAN 0x04000000
  2886. #define DIAXIS_FLYINGC_BANK 0x04008A01 /* Roll ship left / right */
  2887. #define DIAXIS_FLYINGC_PITCH 0x04010A02 /* Nose up / down */
  2888. #define DIAXIS_FLYINGC_THROTTLE 0x04039203 /* Throttle */
  2889. #define DIBUTTON_FLYINGC_VIEW 0x04002401 /* Cycle through view options */
  2890. #define DIBUTTON_FLYINGC_DISPLAY 0x04002402 /* Select next dashboard / heads up display option */
  2891. #define DIBUTTON_FLYINGC_GEAR 0x04002C03 /* Gear up / down */
  2892. #define DIBUTTON_FLYINGC_MENU 0x040004FD /* Show menu options */
  2893. /*--- Priority 2 controls ---*/
  2894. #define DIHATSWITCH_FLYINGC_GLANCE 0x04004601 /* Look around */
  2895. #define DIAXIS_FLYINGC_BRAKE 0x04046A04 /* Apply Brake */
  2896. #define DIAXIS_FLYINGC_RUDDER 0x04025205 /* Yaw ship left/right */
  2897. #define DIAXIS_FLYINGC_FLAPS 0x04055A06 /* Flaps */
  2898. #define DIBUTTON_FLYINGC_FLAPSUP 0x04006404 /* Increment stepping up until fully retracted */
  2899. #define DIBUTTON_FLYINGC_FLAPSDOWN 0x04006405 /* Decrement stepping down until fully extended */
  2900. #define DIBUTTON_FLYINGC_BRAKE_LINK 0x04046CE0 /* Fallback brake button */
  2901. #define DIBUTTON_FLYINGC_FASTER_LINK 0x0403D4E0 /* Fallback throttle up button */
  2902. #define DIBUTTON_FLYINGC_SLOWER_LINK 0x0403D4E8 /* Fallback throttle down button */
  2903. #define DIBUTTON_FLYINGC_GLANCE_LEFT_LINK 0x0407C4E4 /* Fallback Glance Left button */
  2904. #define DIBUTTON_FLYINGC_GLANCE_RIGHT_LINK 0x0407C4EC /* Fallback Glance Right button */
  2905. #define DIBUTTON_FLYINGC_GLANCE_UP_LINK 0x0407C4E0 /* Fallback Glance Up button */
  2906. #define DIBUTTON_FLYINGC_GLANCE_DOWN_LINK 0x0407C4E8 /* Fallback Glance Down button */
  2907. #define DIBUTTON_FLYINGC_DEVICE 0x040044FE /* Show input device and controls */
  2908. #define DIBUTTON_FLYINGC_PAUSE 0x040044FC /* Start / Pause / Restart game */
  2909. /*--- Flight Simulator - Military
  2910. Aerial combat is the primary objective ---*/
  2911. #define DIVIRTUAL_FLYING_MILITARY 0x05000000
  2912. #define DIAXIS_FLYINGM_BANK 0x05008A01 /* Bank - Roll ship left / right */
  2913. #define DIAXIS_FLYINGM_PITCH 0x05010A02 /* Pitch - Nose up / down */
  2914. #define DIAXIS_FLYINGM_THROTTLE 0x05039203 /* Throttle - faster / slower */
  2915. #define DIBUTTON_FLYINGM_FIRE 0x05000C01 /* Fire */
  2916. #define DIBUTTON_FLYINGM_WEAPONS 0x05000C02 /* Select next weapon */
  2917. #define DIBUTTON_FLYINGM_TARGET 0x05000C03 /* Selects next available target */
  2918. #define DIBUTTON_FLYINGM_MENU 0x050004FD /* Show menu options */
  2919. /*--- Priority 2 controls ---*/
  2920. #define DIHATSWITCH_FLYINGM_GLANCE 0x05004601 /* Look around */
  2921. #define DIBUTTON_FLYINGM_COUNTER 0x05005C04 /* Activate counter measures */
  2922. #define DIAXIS_FLYINGM_RUDDER 0x05024A04 /* Rudder - Yaw ship left/right */
  2923. #define DIAXIS_FLYINGM_BRAKE 0x05046205 /* Brake-axis */
  2924. #define DIBUTTON_FLYINGM_VIEW 0x05006405 /* Cycle through view options */
  2925. #define DIBUTTON_FLYINGM_DISPLAY 0x05006406 /* Select next dashboard option */
  2926. #define DIAXIS_FLYINGM_FLAPS 0x05055206 /* Flaps */
  2927. #define DIBUTTON_FLYINGM_FLAPSUP 0x05005407 /* Increment stepping up until fully retracted */
  2928. #define DIBUTTON_FLYINGM_FLAPSDOWN 0x05005408 /* Decrement stepping down until fully extended */
  2929. #define DIBUTTON_FLYINGM_FIRESECONDARY 0x05004C09 /* Alternative fire button */
  2930. #define DIBUTTON_FLYINGM_GEAR 0x0500640A /* Gear up / down */
  2931. #define DIBUTTON_FLYINGM_BRAKE_LINK 0x050464E0 /* Fallback brake button */
  2932. #define DIBUTTON_FLYINGM_FASTER_LINK 0x0503D4E0 /* Fallback throttle up button */
  2933. #define DIBUTTON_FLYINGM_SLOWER_LINK 0x0503D4E8 /* Fallback throttle down button */
  2934. #define DIBUTTON_FLYINGM_GLANCE_LEFT_LINK 0x0507C4E4 /* Fallback Glance Left button */
  2935. #define DIBUTTON_FLYINGM_GLANCE_RIGHT_LINK 0x0507C4EC /* Fallback Glance Right button */
  2936. #define DIBUTTON_FLYINGM_GLANCE_UP_LINK 0x0507C4E0 /* Fallback Glance Up button */
  2937. #define DIBUTTON_FLYINGM_GLANCE_DOWN_LINK 0x0507C4E8 /* Fallback Glance Down button */
  2938. #define DIBUTTON_FLYINGM_DEVICE 0x050044FE /* Show input device and controls */
  2939. #define DIBUTTON_FLYINGM_PAUSE 0x050044FC /* Start / Pause / Restart game */
  2940. /*--- Flight Simulator - Combat Helicopter
  2941. Combat from helicopter is primary objective ---*/
  2942. #define DIVIRTUAL_FLYING_HELICOPTER 0x06000000
  2943. #define DIAXIS_FLYINGH_BANK 0x06008A01 /* Bank - Roll ship left / right */
  2944. #define DIAXIS_FLYINGH_PITCH 0x06010A02 /* Pitch - Nose up / down */
  2945. #define DIAXIS_FLYINGH_COLLECTIVE 0x06018A03 /* Collective - Blade pitch/power */
  2946. #define DIBUTTON_FLYINGH_FIRE 0x06001401 /* Fire */
  2947. #define DIBUTTON_FLYINGH_WEAPONS 0x06001402 /* Select next weapon */
  2948. #define DIBUTTON_FLYINGH_TARGET 0x06001403 /* Selects next available target */
  2949. #define DIBUTTON_FLYINGH_MENU 0x060004FD /* Show menu options */
  2950. /*--- Priority 2 controls ---*/
  2951. #define DIHATSWITCH_FLYINGH_GLANCE 0x06004601 /* Look around */
  2952. #define DIAXIS_FLYINGH_TORQUE 0x06025A04 /* Torque - Rotate ship around left / right axis */
  2953. #define DIAXIS_FLYINGH_THROTTLE 0x0603DA05 /* Throttle */
  2954. #define DIBUTTON_FLYINGH_COUNTER 0x06005404 /* Activate counter measures */
  2955. #define DIBUTTON_FLYINGH_VIEW 0x06006405 /* Cycle through view options */
  2956. #define DIBUTTON_FLYINGH_GEAR 0x06006406 /* Gear up / down */
  2957. #define DIBUTTON_FLYINGH_FIRESECONDARY 0x06004C07 /* Alternative fire button */
  2958. #define DIBUTTON_FLYINGH_FASTER_LINK 0x0603DCE0 /* Fallback throttle up button */
  2959. #define DIBUTTON_FLYINGH_SLOWER_LINK 0x0603DCE8 /* Fallback throttle down button */
  2960. #define DIBUTTON_FLYINGH_GLANCE_LEFT_LINK 0x0607C4E4 /* Fallback Glance Left button */
  2961. #define DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK 0x0607C4EC /* Fallback Glance Right button */
  2962. #define DIBUTTON_FLYINGH_GLANCE_UP_LINK 0x0607C4E0 /* Fallback Glance Up button */
  2963. #define DIBUTTON_FLYINGH_GLANCE_DOWN_LINK 0x0607C4E8 /* Fallback Glance Down button */
  2964. #define DIBUTTON_FLYINGH_DEVICE 0x060044FE /* Show input device and controls */
  2965. #define DIBUTTON_FLYINGH_PAUSE 0x060044FC /* Start / Pause / Restart game */
  2966. /*--- Space Simulator - Combat
  2967. Space Simulator with weapons ---*/
  2968. #define DIVIRTUAL_SPACESIM 0x07000000
  2969. #define DIAXIS_SPACESIM_LATERAL 0x07008201 /* Move ship left / right */
  2970. #define DIAXIS_SPACESIM_MOVE 0x07010202 /* Move ship forward/backward */
  2971. #define DIAXIS_SPACESIM_THROTTLE 0x07038203 /* Throttle - Engine speed */
  2972. #define DIBUTTON_SPACESIM_FIRE 0x07000401 /* Fire */
  2973. #define DIBUTTON_SPACESIM_WEAPONS 0x07000402 /* Select next weapon */
  2974. #define DIBUTTON_SPACESIM_TARGET 0x07000403 /* Selects next available target */
  2975. #define DIBUTTON_SPACESIM_MENU 0x070004FD /* Show menu options */
  2976. /*--- Priority 2 controls ---*/
  2977. #define DIHATSWITCH_SPACESIM_GLANCE 0x07004601 /* Look around */
  2978. #define DIAXIS_SPACESIM_CLIMB 0x0701C204 /* Climb - Pitch ship up/down */
  2979. #define DIAXIS_SPACESIM_ROTATE 0x07024205 /* Rotate - Turn ship left/right */
  2980. #define DIBUTTON_SPACESIM_VIEW 0x07004404 /* Cycle through view options */
  2981. #define DIBUTTON_SPACESIM_DISPLAY 0x07004405 /* Select next dashboard / heads up display option */
  2982. #define DIBUTTON_SPACESIM_RAISE 0x07004406 /* Raise ship while maintaining current pitch */
  2983. #define DIBUTTON_SPACESIM_LOWER 0x07004407 /* Lower ship while maintaining current pitch */
  2984. #define DIBUTTON_SPACESIM_GEAR 0x07004408 /* Gear up / down */
  2985. #define DIBUTTON_SPACESIM_FIRESECONDARY 0x07004409 /* Alternative fire button */
  2986. #define DIBUTTON_SPACESIM_LEFT_LINK 0x0700C4E4 /* Fallback move left button */
  2987. #define DIBUTTON_SPACESIM_RIGHT_LINK 0x0700C4EC /* Fallback move right button */
  2988. #define DIBUTTON_SPACESIM_FORWARD_LINK 0x070144E0 /* Fallback move forward button */
  2989. #define DIBUTTON_SPACESIM_BACKWARD_LINK 0x070144E8 /* Fallback move backwards button */
  2990. #define DIBUTTON_SPACESIM_FASTER_LINK 0x0703C4E0 /* Fallback throttle up button */
  2991. #define DIBUTTON_SPACESIM_SLOWER_LINK 0x0703C4E8 /* Fallback throttle down button */
  2992. #define DIBUTTON_SPACESIM_TURN_LEFT_LINK 0x070244E4 /* Fallback turn left button */
  2993. #define DIBUTTON_SPACESIM_TURN_RIGHT_LINK 0x070244EC /* Fallback turn right button */
  2994. #define DIBUTTON_SPACESIM_GLANCE_LEFT_LINK 0x0707C4E4 /* Fallback Glance Left button */
  2995. #define DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK 0x0707C4EC /* Fallback Glance Right button */
  2996. #define DIBUTTON_SPACESIM_GLANCE_UP_LINK 0x0707C4E0 /* Fallback Glance Up button */
  2997. #define DIBUTTON_SPACESIM_GLANCE_DOWN_LINK 0x0707C4E8 /* Fallback Glance Down button */
  2998. #define DIBUTTON_SPACESIM_DEVICE 0x070044FE /* Show input device and controls */
  2999. #define DIBUTTON_SPACESIM_PAUSE 0x070044FC /* Start / Pause / Restart game */
  3000. /*--- Fighting - First Person
  3001. Hand to Hand combat is primary objective ---*/
  3002. #define DIVIRTUAL_FIGHTING_HAND2HAND 0x08000000
  3003. #define DIAXIS_FIGHTINGH_LATERAL 0x08008201 /* Sidestep left/right */
  3004. #define DIAXIS_FIGHTINGH_MOVE 0x08010202 /* Move forward/backward */
  3005. #define DIBUTTON_FIGHTINGH_PUNCH 0x08000401 /* Punch */
  3006. #define DIBUTTON_FIGHTINGH_KICK 0x08000402 /* Kick */
  3007. #define DIBUTTON_FIGHTINGH_BLOCK 0x08000403 /* Block */
  3008. #define DIBUTTON_FIGHTINGH_CROUCH 0x08000404 /* Crouch */
  3009. #define DIBUTTON_FIGHTINGH_JUMP 0x08000405 /* Jump */
  3010. #define DIBUTTON_FIGHTINGH_SPECIAL1 0x08000406 /* Apply first special move */
  3011. #define DIBUTTON_FIGHTINGH_SPECIAL2 0x08000407 /* Apply second special move */
  3012. #define DIBUTTON_FIGHTINGH_MENU 0x080004FD /* Show menu options */
  3013. /*--- Priority 2 controls ---*/
  3014. #define DIBUTTON_FIGHTINGH_SELECT 0x08004408 /* Select special move */
  3015. #define DIHATSWITCH_FIGHTINGH_SLIDE 0x08004601 /* Look around */
  3016. #define DIBUTTON_FIGHTINGH_DISPLAY 0x08004409 /* Shows next on-screen display option */
  3017. #define DIAXIS_FIGHTINGH_ROTATE 0x08024203 /* Rotate - Turn body left/right */
  3018. #define DIBUTTON_FIGHTINGH_DODGE 0x0800440A /* Dodge */
  3019. #define DIBUTTON_FIGHTINGH_LEFT_LINK 0x0800C4E4 /* Fallback left sidestep button */
  3020. #define DIBUTTON_FIGHTINGH_RIGHT_LINK 0x0800C4EC /* Fallback right sidestep button */
  3021. #define DIBUTTON_FIGHTINGH_FORWARD_LINK 0x080144E0 /* Fallback forward button */
  3022. #define DIBUTTON_FIGHTINGH_BACKWARD_LINK 0x080144E8 /* Fallback backward button */
  3023. #define DIBUTTON_FIGHTINGH_DEVICE 0x080044FE /* Show input device and controls */
  3024. #define DIBUTTON_FIGHTINGH_PAUSE 0x080044FC /* Start / Pause / Restart game */
  3025. /*--- Fighting - First Person Shooting
  3026. Navigation and combat are primary objectives ---*/
  3027. #define DIVIRTUAL_FIGHTING_FPS 0x09000000
  3028. #define DIAXIS_FPS_ROTATE 0x09008201 /* Rotate character left/right */
  3029. #define DIAXIS_FPS_MOVE 0x09010202 /* Move forward/backward */
  3030. #define DIBUTTON_FPS_FIRE 0x09000401 /* Fire */
  3031. #define DIBUTTON_FPS_WEAPONS 0x09000402 /* Select next weapon */
  3032. #define DIBUTTON_FPS_APPLY 0x09000403 /* Use item */
  3033. #define DIBUTTON_FPS_SELECT 0x09000404 /* Select next inventory item */
  3034. #define DIBUTTON_FPS_CROUCH 0x09000405 /* Crouch/ climb down/ swim down */
  3035. #define DIBUTTON_FPS_JUMP 0x09000406 /* Jump/ climb up/ swim up */
  3036. #define DIAXIS_FPS_LOOKUPDOWN 0x09018203 /* Look up / down */
  3037. #define DIBUTTON_FPS_STRAFE 0x09000407 /* Enable strafing while active */
  3038. #define DIBUTTON_FPS_MENU 0x090004FD /* Show menu options */
  3039. /*--- Priority 2 controls ---*/
  3040. #define DIHATSWITCH_FPS_GLANCE 0x09004601 /* Look around */
  3041. #define DIBUTTON_FPS_DISPLAY 0x09004408 /* Shows next on-screen display option/ map */
  3042. #define DIAXIS_FPS_SIDESTEP 0x09024204 /* Sidestep */
  3043. #define DIBUTTON_FPS_DODGE 0x09004409 /* Dodge */
  3044. #define DIBUTTON_FPS_GLANCEL 0x0900440A /* Glance Left */
  3045. #define DIBUTTON_FPS_GLANCER 0x0900440B /* Glance Right */
  3046. #define DIBUTTON_FPS_FIRESECONDARY 0x0900440C /* Alternative fire button */
  3047. #define DIBUTTON_FPS_ROTATE_LEFT_LINK 0x0900C4E4 /* Fallback rotate left button */
  3048. #define DIBUTTON_FPS_ROTATE_RIGHT_LINK 0x0900C4EC /* Fallback rotate right button */
  3049. #define DIBUTTON_FPS_FORWARD_LINK 0x090144E0 /* Fallback forward button */
  3050. #define DIBUTTON_FPS_BACKWARD_LINK 0x090144E8 /* Fallback backward button */
  3051. #define DIBUTTON_FPS_GLANCE_UP_LINK 0x0901C4E0 /* Fallback look up button */
  3052. #define DIBUTTON_FPS_GLANCE_DOWN_LINK 0x0901C4E8 /* Fallback look down button */
  3053. #define DIBUTTON_FPS_STEP_LEFT_LINK 0x090244E4 /* Fallback step left button */
  3054. #define DIBUTTON_FPS_STEP_RIGHT_LINK 0x090244EC /* Fallback step right button */
  3055. #define DIBUTTON_FPS_DEVICE 0x090044FE /* Show input device and controls */
  3056. #define DIBUTTON_FPS_PAUSE 0x090044FC /* Start / Pause / Restart game */
  3057. /*--- Fighting - Third Person action
  3058. Perspective of camera is behind the main character ---*/
  3059. #define DIVIRTUAL_FIGHTING_THIRDPERSON 0x0A000000
  3060. #define DIAXIS_TPS_TURN 0x0A020201 /* Turn left/right */
  3061. #define DIAXIS_TPS_MOVE 0x0A010202 /* Move forward/backward */
  3062. #define DIBUTTON_TPS_RUN 0x0A000401 /* Run or walk toggle switch */
  3063. #define DIBUTTON_TPS_ACTION 0x0A000402 /* Action Button */
  3064. #define DIBUTTON_TPS_SELECT 0x0A000403 /* Select next weapon */
  3065. #define DIBUTTON_TPS_USE 0x0A000404 /* Use inventory item currently selected */
  3066. #define DIBUTTON_TPS_JUMP 0x0A000405 /* Character Jumps */
  3067. #define DIBUTTON_TPS_MENU 0x0A0004FD /* Show menu options */
  3068. /*--- Priority 2 controls ---*/
  3069. #define DIHATSWITCH_TPS_GLANCE 0x0A004601 /* Look around */
  3070. #define DIBUTTON_TPS_VIEW 0x0A004406 /* Select camera view */
  3071. #define DIBUTTON_TPS_STEPLEFT 0x0A004407 /* Character takes a left step */
  3072. #define DIBUTTON_TPS_STEPRIGHT 0x0A004408 /* Character takes a right step */
  3073. #define DIAXIS_TPS_STEP 0x0A00C203 /* Character steps left/right */
  3074. #define DIBUTTON_TPS_DODGE 0x0A004409 /* Character dodges or ducks */
  3075. #define DIBUTTON_TPS_INVENTORY 0x0A00440A /* Cycle through inventory */
  3076. #define DIBUTTON_TPS_TURN_LEFT_LINK 0x0A0244E4 /* Fallback turn left button */
  3077. #define DIBUTTON_TPS_TURN_RIGHT_LINK 0x0A0244EC /* Fallback turn right button */
  3078. #define DIBUTTON_TPS_FORWARD_LINK 0x0A0144E0 /* Fallback forward button */
  3079. #define DIBUTTON_TPS_BACKWARD_LINK 0x0A0144E8 /* Fallback backward button */
  3080. #define DIBUTTON_TPS_GLANCE_UP_LINK 0x0A07C4E0 /* Fallback look up button */
  3081. #define DIBUTTON_TPS_GLANCE_DOWN_LINK 0x0A07C4E8 /* Fallback look down button */
  3082. #define DIBUTTON_TPS_GLANCE_LEFT_LINK 0x0A07C4E4 /* Fallback glance up button */
  3083. #define DIBUTTON_TPS_GLANCE_RIGHT_LINK 0x0A07C4EC /* Fallback glance right button */
  3084. #define DIBUTTON_TPS_DEVICE 0x0A0044FE /* Show input device and controls */
  3085. #define DIBUTTON_TPS_PAUSE 0x0A0044FC /* Start / Pause / Restart game */
  3086. /*--- Strategy - Role Playing
  3087. Navigation and problem solving are primary actions ---*/
  3088. #define DIVIRTUAL_STRATEGY_ROLEPLAYING 0x0B000000
  3089. #define DIAXIS_STRATEGYR_LATERAL 0x0B008201 /* sidestep - left/right */
  3090. #define DIAXIS_STRATEGYR_MOVE 0x0B010202 /* move forward/backward */
  3091. #define DIBUTTON_STRATEGYR_GET 0x0B000401 /* Acquire item */
  3092. #define DIBUTTON_STRATEGYR_APPLY 0x0B000402 /* Use selected item */
  3093. #define DIBUTTON_STRATEGYR_SELECT 0x0B000403 /* Select nextitem */
  3094. #define DIBUTTON_STRATEGYR_ATTACK 0x0B000404 /* Attack */
  3095. #define DIBUTTON_STRATEGYR_CAST 0x0B000405 /* Cast Spell */
  3096. #define DIBUTTON_STRATEGYR_CROUCH 0x0B000406 /* Crouch */
  3097. #define DIBUTTON_STRATEGYR_JUMP 0x0B000407 /* Jump */
  3098. #define DIBUTTON_STRATEGYR_MENU 0x0B0004FD /* Show menu options */
  3099. /*--- Priority 2 controls ---*/
  3100. #define DIHATSWITCH_STRATEGYR_GLANCE 0x0B004601 /* Look around */
  3101. #define DIBUTTON_STRATEGYR_MAP 0x0B004408 /* Cycle through map options */
  3102. #define DIBUTTON_STRATEGYR_DISPLAY 0x0B004409 /* Shows next on-screen display option */
  3103. #define DIAXIS_STRATEGYR_ROTATE 0x0B024203 /* Turn body left/right */
  3104. #define DIBUTTON_STRATEGYR_LEFT_LINK 0x0B00C4E4 /* Fallback sidestep left button */
  3105. #define DIBUTTON_STRATEGYR_RIGHT_LINK 0x0B00C4EC /* Fallback sidestep right button */
  3106. #define DIBUTTON_STRATEGYR_FORWARD_LINK 0x0B0144E0 /* Fallback move forward button */
  3107. #define DIBUTTON_STRATEGYR_BACK_LINK 0x0B0144E8 /* Fallback move backward button */
  3108. #define DIBUTTON_STRATEGYR_ROTATE_LEFT_LINK 0x0B0244E4 /* Fallback turn body left button */
  3109. #define DIBUTTON_STRATEGYR_ROTATE_RIGHT_LINK 0x0B0244EC /* Fallback turn body right button */
  3110. #define DIBUTTON_STRATEGYR_DEVICE 0x0B0044FE /* Show input device and controls */
  3111. #define DIBUTTON_STRATEGYR_PAUSE 0x0B0044FC /* Start / Pause / Restart game */
  3112. /*--- Strategy - Turn based
  3113. Navigation and problem solving are primary actions ---*/
  3114. #define DIVIRTUAL_STRATEGY_TURN 0x0C000000
  3115. #define DIAXIS_STRATEGYT_LATERAL 0x0C008201 /* Sidestep left/right */
  3116. #define DIAXIS_STRATEGYT_MOVE 0x0C010202 /* Move forward/backwards */
  3117. #define DIBUTTON_STRATEGYT_SELECT 0x0C000401 /* Select unit or object */
  3118. #define DIBUTTON_STRATEGYT_INSTRUCT 0x0C000402 /* Cycle through instructions */
  3119. #define DIBUTTON_STRATEGYT_APPLY 0x0C000403 /* Apply selected instruction */
  3120. #define DIBUTTON_STRATEGYT_TEAM 0x0C000404 /* Select next team / cycle through all */
  3121. #define DIBUTTON_STRATEGYT_TURN 0x0C000405 /* Indicate turn over */
  3122. #define DIBUTTON_STRATEGYT_MENU 0x0C0004FD /* Show menu options */
  3123. /*--- Priority 2 controls ---*/
  3124. #define DIBUTTON_STRATEGYT_ZOOM 0x0C004406 /* Zoom - in / out */
  3125. #define DIBUTTON_STRATEGYT_MAP 0x0C004407 /* cycle through map options */
  3126. #define DIBUTTON_STRATEGYT_DISPLAY 0x0C004408 /* shows next on-screen display options */
  3127. #define DIBUTTON_STRATEGYT_LEFT_LINK 0x0C00C4E4 /* Fallback sidestep left button */
  3128. #define DIBUTTON_STRATEGYT_RIGHT_LINK 0x0C00C4EC /* Fallback sidestep right button */
  3129. #define DIBUTTON_STRATEGYT_FORWARD_LINK 0x0C0144E0 /* Fallback move forward button */
  3130. #define DIBUTTON_STRATEGYT_BACK_LINK 0x0C0144E8 /* Fallback move back button */
  3131. #define DIBUTTON_STRATEGYT_DEVICE 0x0C0044FE /* Show input device and controls */
  3132. #define DIBUTTON_STRATEGYT_PAUSE 0x0C0044FC /* Start / Pause / Restart game */
  3133. /*--- Sports - Hunting
  3134. Hunting ---*/
  3135. #define DIVIRTUAL_SPORTS_HUNTING 0x0D000000
  3136. #define DIAXIS_HUNTING_LATERAL 0x0D008201 /* sidestep left/right */
  3137. #define DIAXIS_HUNTING_MOVE 0x0D010202 /* move forward/backwards */
  3138. #define DIBUTTON_HUNTING_FIRE 0x0D000401 /* Fire selected weapon */
  3139. #define DIBUTTON_HUNTING_AIM 0x0D000402 /* Select aim/move */
  3140. #define DIBUTTON_HUNTING_WEAPON 0x0D000403 /* Select next weapon */
  3141. #define DIBUTTON_HUNTING_BINOCULAR 0x0D000404 /* Look through Binoculars */
  3142. #define DIBUTTON_HUNTING_CALL 0x0D000405 /* Make animal call */
  3143. #define DIBUTTON_HUNTING_MAP 0x0D000406 /* View Map */
  3144. #define DIBUTTON_HUNTING_SPECIAL 0x0D000407 /* Special game operation */
  3145. #define DIBUTTON_HUNTING_MENU 0x0D0004FD /* Show menu options */
  3146. /*--- Priority 2 controls ---*/
  3147. #define DIHATSWITCH_HUNTING_GLANCE 0x0D004601 /* Look around */
  3148. #define DIBUTTON_HUNTING_DISPLAY 0x0D004408 /* show next on-screen display option */
  3149. #define DIAXIS_HUNTING_ROTATE 0x0D024203 /* Turn body left/right */
  3150. #define DIBUTTON_HUNTING_CROUCH 0x0D004409 /* Crouch/ Climb / Swim down */
  3151. #define DIBUTTON_HUNTING_JUMP 0x0D00440A /* Jump/ Climb up / Swim up */
  3152. #define DIBUTTON_HUNTING_FIRESECONDARY 0x0D00440B /* Alternative fire button */
  3153. #define DIBUTTON_HUNTING_LEFT_LINK 0x0D00C4E4 /* Fallback sidestep left button */
  3154. #define DIBUTTON_HUNTING_RIGHT_LINK 0x0D00C4EC /* Fallback sidestep right button */
  3155. #define DIBUTTON_HUNTING_FORWARD_LINK 0x0D0144E0 /* Fallback move forward button */
  3156. #define DIBUTTON_HUNTING_BACK_LINK 0x0D0144E8 /* Fallback move back button */
  3157. #define DIBUTTON_HUNTING_ROTATE_LEFT_LINK 0x0D0244E4 /* Fallback turn body left button */
  3158. #define DIBUTTON_HUNTING_ROTATE_RIGHT_LINK 0x0D0244EC /* Fallback turn body right button */
  3159. #define DIBUTTON_HUNTING_DEVICE 0x0D0044FE /* Show input device and controls */
  3160. #define DIBUTTON_HUNTING_PAUSE 0x0D0044FC /* Start / Pause / Restart game */
  3161. /*--- Sports - Fishing
  3162. Catching Fish is primary objective ---*/
  3163. #define DIVIRTUAL_SPORTS_FISHING 0x0E000000
  3164. #define DIAXIS_FISHING_LATERAL 0x0E008201 /* sidestep left/right */
  3165. #define DIAXIS_FISHING_MOVE 0x0E010202 /* move forward/backwards */
  3166. #define DIBUTTON_FISHING_CAST 0x0E000401 /* Cast line */
  3167. #define DIBUTTON_FISHING_TYPE 0x0E000402 /* Select cast type */
  3168. #define DIBUTTON_FISHING_BINOCULAR 0x0E000403 /* Look through Binocular */
  3169. #define DIBUTTON_FISHING_BAIT 0x0E000404 /* Select type of Bait */
  3170. #define DIBUTTON_FISHING_MAP 0x0E000405 /* View Map */
  3171. #define DIBUTTON_FISHING_MENU 0x0E0004FD /* Show menu options */
  3172. /*--- Priority 2 controls ---*/
  3173. #define DIHATSWITCH_FISHING_GLANCE 0x0E004601 /* Look around */
  3174. #define DIBUTTON_FISHING_DISPLAY 0x0E004406 /* Show next on-screen display option */
  3175. #define DIAXIS_FISHING_ROTATE 0x0E024203 /* Turn character left / right */
  3176. #define DIBUTTON_FISHING_CROUCH 0x0E004407 /* Crouch/ Climb / Swim down */
  3177. #define DIBUTTON_FISHING_JUMP 0x0E004408 /* Jump/ Climb up / Swim up */
  3178. #define DIBUTTON_FISHING_LEFT_LINK 0x0E00C4E4 /* Fallback sidestep left button */
  3179. #define DIBUTTON_FISHING_RIGHT_LINK 0x0E00C4EC /* Fallback sidestep right button */
  3180. #define DIBUTTON_FISHING_FORWARD_LINK 0x0E0144E0 /* Fallback move forward button */
  3181. #define DIBUTTON_FISHING_BACK_LINK 0x0E0144E8 /* Fallback move back button */
  3182. #define DIBUTTON_FISHING_ROTATE_LEFT_LINK 0x0E0244E4 /* Fallback turn body left button */
  3183. #define DIBUTTON_FISHING_ROTATE_RIGHT_LINK 0x0E0244EC /* Fallback turn body right button */
  3184. #define DIBUTTON_FISHING_DEVICE 0x0E0044FE /* Show input device and controls */
  3185. #define DIBUTTON_FISHING_PAUSE 0x0E0044FC /* Start / Pause / Restart game */
  3186. /*--- Sports - Baseball - Batting
  3187. Batter control is primary objective ---*/
  3188. #define DIVIRTUAL_SPORTS_BASEBALL_BAT 0x0F000000
  3189. #define DIAXIS_BASEBALLB_LATERAL 0x0F008201 /* Aim left / right */
  3190. #define DIAXIS_BASEBALLB_MOVE 0x0F010202 /* Aim up / down */
  3191. #define DIBUTTON_BASEBALLB_SELECT 0x0F000401 /* cycle through swing options */
  3192. #define DIBUTTON_BASEBALLB_NORMAL 0x0F000402 /* normal swing */
  3193. #define DIBUTTON_BASEBALLB_POWER 0x0F000403 /* swing for the fence */
  3194. #define DIBUTTON_BASEBALLB_BUNT 0x0F000404 /* bunt */
  3195. #define DIBUTTON_BASEBALLB_STEAL 0x0F000405 /* Base runner attempts to steal a base */
  3196. #define DIBUTTON_BASEBALLB_BURST 0x0F000406 /* Base runner invokes burst of speed */
  3197. #define DIBUTTON_BASEBALLB_SLIDE 0x0F000407 /* Base runner slides into base */
  3198. #define DIBUTTON_BASEBALLB_CONTACT 0x0F000408 /* Contact swing */
  3199. #define DIBUTTON_BASEBALLB_MENU 0x0F0004FD /* Show menu options */
  3200. /*--- Priority 2 controls ---*/
  3201. #define DIBUTTON_BASEBALLB_NOSTEAL 0x0F004409 /* Base runner goes back to a base */
  3202. #define DIBUTTON_BASEBALLB_BOX 0x0F00440A /* Enter or exit batting box */
  3203. #define DIBUTTON_BASEBALLB_LEFT_LINK 0x0F00C4E4 /* Fallback sidestep left button */
  3204. #define DIBUTTON_BASEBALLB_RIGHT_LINK 0x0F00C4EC /* Fallback sidestep right button */
  3205. #define DIBUTTON_BASEBALLB_FORWARD_LINK 0x0F0144E0 /* Fallback move forward button */
  3206. #define DIBUTTON_BASEBALLB_BACK_LINK 0x0F0144E8 /* Fallback move back button */
  3207. #define DIBUTTON_BASEBALLB_DEVICE 0x0F0044FE /* Show input device and controls */
  3208. #define DIBUTTON_BASEBALLB_PAUSE 0x0F0044FC /* Start / Pause / Restart game */
  3209. /*--- Sports - Baseball - Pitching
  3210. Pitcher control is primary objective ---*/
  3211. #define DIVIRTUAL_SPORTS_BASEBALL_PITCH 0x10000000
  3212. #define DIAXIS_BASEBALLP_LATERAL 0x10008201 /* Aim left / right */
  3213. #define DIAXIS_BASEBALLP_MOVE 0x10010202 /* Aim up / down */
  3214. #define DIBUTTON_BASEBALLP_SELECT 0x10000401 /* cycle through pitch selections */
  3215. #define DIBUTTON_BASEBALLP_PITCH 0x10000402 /* throw pitch */
  3216. #define DIBUTTON_BASEBALLP_BASE 0x10000403 /* select base to throw to */
  3217. #define DIBUTTON_BASEBALLP_THROW 0x10000404 /* throw to base */
  3218. #define DIBUTTON_BASEBALLP_FAKE 0x10000405 /* Fake a throw to a base */
  3219. #define DIBUTTON_BASEBALLP_MENU 0x100004FD /* Show menu options */
  3220. /*--- Priority 2 controls ---*/
  3221. #define DIBUTTON_BASEBALLP_WALK 0x10004406 /* Throw intentional walk / pitch out */
  3222. #define DIBUTTON_BASEBALLP_LOOK 0x10004407 /* Look at runners on bases */
  3223. #define DIBUTTON_BASEBALLP_LEFT_LINK 0x1000C4E4 /* Fallback sidestep left button */
  3224. #define DIBUTTON_BASEBALLP_RIGHT_LINK 0x1000C4EC /* Fallback sidestep right button */
  3225. #define DIBUTTON_BASEBALLP_FORWARD_LINK 0x100144E0 /* Fallback move forward button */
  3226. #define DIBUTTON_BASEBALLP_BACK_LINK 0x100144E8 /* Fallback move back button */
  3227. #define DIBUTTON_BASEBALLP_DEVICE 0x100044FE /* Show input device and controls */
  3228. #define DIBUTTON_BASEBALLP_PAUSE 0x100044FC /* Start / Pause / Restart game */
  3229. /*--- Sports - Baseball - Fielding
  3230. Fielder control is primary objective ---*/
  3231. #define DIVIRTUAL_SPORTS_BASEBALL_FIELD 0x11000000
  3232. #define DIAXIS_BASEBALLF_LATERAL 0x11008201 /* Aim left / right */
  3233. #define DIAXIS_BASEBALLF_MOVE 0x11010202 /* Aim up / down */
  3234. #define DIBUTTON_BASEBALLF_NEAREST 0x11000401 /* Switch to fielder nearest to the ball */
  3235. #define DIBUTTON_BASEBALLF_THROW1 0x11000402 /* Make conservative throw */
  3236. #define DIBUTTON_BASEBALLF_THROW2 0x11000403 /* Make aggressive throw */
  3237. #define DIBUTTON_BASEBALLF_BURST 0x11000404 /* Invoke burst of speed */
  3238. #define DIBUTTON_BASEBALLF_JUMP 0x11000405 /* Jump to catch ball */
  3239. #define DIBUTTON_BASEBALLF_DIVE 0x11000406 /* Dive to catch ball */
  3240. #define DIBUTTON_BASEBALLF_MENU 0x110004FD /* Show menu options */
  3241. /*--- Priority 2 controls ---*/
  3242. #define DIBUTTON_BASEBALLF_SHIFTIN 0x11004407 /* Shift the infield positioning */
  3243. #define DIBUTTON_BASEBALLF_SHIFTOUT 0x11004408 /* Shift the outfield positioning */
  3244. #define DIBUTTON_BASEBALLF_AIM_LEFT_LINK 0x1100C4E4 /* Fallback aim left button */
  3245. #define DIBUTTON_BASEBALLF_AIM_RIGHT_LINK 0x1100C4EC /* Fallback aim right button */
  3246. #define DIBUTTON_BASEBALLF_FORWARD_LINK 0x110144E0 /* Fallback move forward button */
  3247. #define DIBUTTON_BASEBALLF_BACK_LINK 0x110144E8 /* Fallback move back button */
  3248. #define DIBUTTON_BASEBALLF_DEVICE 0x110044FE /* Show input device and controls */
  3249. #define DIBUTTON_BASEBALLF_PAUSE 0x110044FC /* Start / Pause / Restart game */
  3250. /*--- Sports - Basketball - Offense
  3251. Offense ---*/
  3252. #define DIVIRTUAL_SPORTS_BASKETBALL_OFFENSE 0x12000000
  3253. #define DIAXIS_BBALLO_LATERAL 0x12008201 /* left / right */
  3254. #define DIAXIS_BBALLO_MOVE 0x12010202 /* up / down */
  3255. #define DIBUTTON_BBALLO_SHOOT 0x12000401 /* shoot basket */
  3256. #define DIBUTTON_BBALLO_DUNK 0x12000402 /* dunk basket */
  3257. #define DIBUTTON_BBALLO_PASS 0x12000403 /* throw pass */
  3258. #define DIBUTTON_BBALLO_FAKE 0x12000404 /* fake shot or pass */
  3259. #define DIBUTTON_BBALLO_SPECIAL 0x12000405 /* apply special move */
  3260. #define DIBUTTON_BBALLO_PLAYER 0x12000406 /* select next player */
  3261. #define DIBUTTON_BBALLO_BURST 0x12000407 /* invoke burst */
  3262. #define DIBUTTON_BBALLO_CALL 0x12000408 /* call for ball / pass to me */
  3263. #define DIBUTTON_BBALLO_MENU 0x120004FD /* Show menu options */
  3264. /*--- Priority 2 controls ---*/
  3265. #define DIHATSWITCH_BBALLO_GLANCE 0x12004601 /* scroll view */
  3266. #define DIBUTTON_BBALLO_SCREEN 0x12004409 /* Call for screen */
  3267. #define DIBUTTON_BBALLO_PLAY 0x1200440A /* Call for specific offensive play */
  3268. #define DIBUTTON_BBALLO_JAB 0x1200440B /* Initiate fake drive to basket */
  3269. #define DIBUTTON_BBALLO_POST 0x1200440C /* Perform post move */
  3270. #define DIBUTTON_BBALLO_TIMEOUT 0x1200440D /* Time Out */
  3271. #define DIBUTTON_BBALLO_SUBSTITUTE 0x1200440E /* substitute one player for another */
  3272. #define DIBUTTON_BBALLO_LEFT_LINK 0x1200C4E4 /* Fallback sidestep left button */
  3273. #define DIBUTTON_BBALLO_RIGHT_LINK 0x1200C4EC /* Fallback sidestep right button */
  3274. #define DIBUTTON_BBALLO_FORWARD_LINK 0x120144E0 /* Fallback move forward button */
  3275. #define DIBUTTON_BBALLO_BACK_LINK 0x120144E8 /* Fallback move back button */
  3276. #define DIBUTTON_BBALLO_DEVICE 0x120044FE /* Show input device and controls */
  3277. #define DIBUTTON_BBALLO_PAUSE 0x120044FC /* Start / Pause / Restart game */
  3278. /*--- Sports - Basketball - Defense
  3279. Defense ---*/
  3280. #define DIVIRTUAL_SPORTS_BASKETBALL_DEFENSE 0x13000000
  3281. #define DIAXIS_BBALLD_LATERAL 0x13008201 /* left / right */
  3282. #define DIAXIS_BBALLD_MOVE 0x13010202 /* up / down */
  3283. #define DIBUTTON_BBALLD_JUMP 0x13000401 /* jump to block shot */
  3284. #define DIBUTTON_BBALLD_STEAL 0x13000402 /* attempt to steal ball */
  3285. #define DIBUTTON_BBALLD_FAKE 0x13000403 /* fake block or steal */
  3286. #define DIBUTTON_BBALLD_SPECIAL 0x13000404 /* apply special move */
  3287. #define DIBUTTON_BBALLD_PLAYER 0x13000405 /* select next player */
  3288. #define DIBUTTON_BBALLD_BURST 0x13000406 /* invoke burst */
  3289. #define DIBUTTON_BBALLD_PLAY 0x13000407 /* call for specific defensive play */
  3290. #define DIBUTTON_BBALLD_MENU 0x130004FD /* Show menu options */
  3291. /*--- Priority 2 controls ---*/
  3292. #define DIHATSWITCH_BBALLD_GLANCE 0x13004601 /* scroll view */
  3293. #define DIBUTTON_BBALLD_TIMEOUT 0x13004408 /* Time Out */
  3294. #define DIBUTTON_BBALLD_SUBSTITUTE 0x13004409 /* substitute one player for another */
  3295. #define DIBUTTON_BBALLD_LEFT_LINK 0x1300C4E4 /* Fallback sidestep left button */
  3296. #define DIBUTTON_BBALLD_RIGHT_LINK 0x1300C4EC /* Fallback sidestep right button */
  3297. #define DIBUTTON_BBALLD_FORWARD_LINK 0x130144E0 /* Fallback move forward button */
  3298. #define DIBUTTON_BBALLD_BACK_LINK 0x130144E8 /* Fallback move back button */
  3299. #define DIBUTTON_BBALLD_DEVICE 0x130044FE /* Show input device and controls */
  3300. #define DIBUTTON_BBALLD_PAUSE 0x130044FC /* Start / Pause / Restart game */
  3301. /*--- Sports - Football - Play
  3302. Play selection ---*/
  3303. #define DIVIRTUAL_SPORTS_FOOTBALL_FIELD 0x14000000
  3304. #define DIBUTTON_FOOTBALLP_PLAY 0x14000401 /* cycle through available plays */
  3305. #define DIBUTTON_FOOTBALLP_SELECT 0x14000402 /* select play */
  3306. #define DIBUTTON_FOOTBALLP_HELP 0x14000403 /* Bring up pop-up help */
  3307. #define DIBUTTON_FOOTBALLP_MENU 0x140004FD /* Show menu options */
  3308. /*--- Priority 2 controls ---*/
  3309. #define DIBUTTON_FOOTBALLP_DEVICE 0x140044FE /* Show input device and controls */
  3310. #define DIBUTTON_FOOTBALLP_PAUSE 0x140044FC /* Start / Pause / Restart game */
  3311. /*--- Sports - Football - QB
  3312. Offense: Quarterback / Kicker ---*/
  3313. #define DIVIRTUAL_SPORTS_FOOTBALL_QBCK 0x15000000
  3314. #define DIAXIS_FOOTBALLQ_LATERAL 0x15008201 /* Move / Aim: left / right */
  3315. #define DIAXIS_FOOTBALLQ_MOVE 0x15010202 /* Move / Aim: up / down */
  3316. #define DIBUTTON_FOOTBALLQ_SELECT 0x15000401 /* Select */
  3317. #define DIBUTTON_FOOTBALLQ_SNAP 0x15000402 /* snap ball - start play */
  3318. #define DIBUTTON_FOOTBALLQ_JUMP 0x15000403 /* jump over defender */
  3319. #define DIBUTTON_FOOTBALLQ_SLIDE 0x15000404 /* Dive/Slide */
  3320. #define DIBUTTON_FOOTBALLQ_PASS 0x15000405 /* throws pass to receiver */
  3321. #define DIBUTTON_FOOTBALLQ_FAKE 0x15000406 /* pump fake pass or fake kick */
  3322. #define DIBUTTON_FOOTBALLQ_MENU 0x150004FD /* Show menu options */
  3323. /*--- Priority 2 controls ---*/
  3324. #define DIBUTTON_FOOTBALLQ_FAKESNAP 0x15004407 /* Fake snap */
  3325. #define DIBUTTON_FOOTBALLQ_MOTION 0x15004408 /* Send receivers in motion */
  3326. #define DIBUTTON_FOOTBALLQ_AUDIBLE 0x15004409 /* Change offensive play at line of scrimmage */
  3327. #define DIBUTTON_FOOTBALLQ_LEFT_LINK 0x1500C4E4 /* Fallback sidestep left button */
  3328. #define DIBUTTON_FOOTBALLQ_RIGHT_LINK 0x1500C4EC /* Fallback sidestep right button */
  3329. #define DIBUTTON_FOOTBALLQ_FORWARD_LINK 0x150144E0 /* Fallback move forward button */
  3330. #define DIBUTTON_FOOTBALLQ_BACK_LINK 0x150144E8 /* Fallback move back button */
  3331. #define DIBUTTON_FOOTBALLQ_DEVICE 0x150044FE /* Show input device and controls */
  3332. #define DIBUTTON_FOOTBALLQ_PAUSE 0x150044FC /* Start / Pause / Restart game */
  3333. /*--- Sports - Football - Offense
  3334. Offense - Runner ---*/
  3335. #define DIVIRTUAL_SPORTS_FOOTBALL_OFFENSE 0x16000000
  3336. #define DIAXIS_FOOTBALLO_LATERAL 0x16008201 /* Move / Aim: left / right */
  3337. #define DIAXIS_FOOTBALLO_MOVE 0x16010202 /* Move / Aim: up / down */
  3338. #define DIBUTTON_FOOTBALLO_JUMP 0x16000401 /* jump or hurdle over defender */
  3339. #define DIBUTTON_FOOTBALLO_LEFTARM 0x16000402 /* holds out left arm */
  3340. #define DIBUTTON_FOOTBALLO_RIGHTARM 0x16000403 /* holds out right arm */
  3341. #define DIBUTTON_FOOTBALLO_THROW 0x16000404 /* throw pass or lateral ball to another runner */
  3342. #define DIBUTTON_FOOTBALLO_SPIN 0x16000405 /* Spin to avoid defenders */
  3343. #define DIBUTTON_FOOTBALLO_MENU 0x160004FD /* Show menu options */
  3344. /*--- Priority 2 controls ---*/
  3345. #define DIBUTTON_FOOTBALLO_JUKE 0x16004406 /* Use special move to avoid defenders */
  3346. #define DIBUTTON_FOOTBALLO_SHOULDER 0x16004407 /* Lower shoulder to run over defenders */
  3347. #define DIBUTTON_FOOTBALLO_TURBO 0x16004408 /* Speed burst past defenders */
  3348. #define DIBUTTON_FOOTBALLO_DIVE 0x16004409 /* Dive over defenders */
  3349. #define DIBUTTON_FOOTBALLO_ZOOM 0x1600440A /* Zoom view in / out */
  3350. #define DIBUTTON_FOOTBALLO_SUBSTITUTE 0x1600440B /* substitute one player for another */
  3351. #define DIBUTTON_FOOTBALLO_LEFT_LINK 0x1600C4E4 /* Fallback sidestep left button */
  3352. #define DIBUTTON_FOOTBALLO_RIGHT_LINK 0x1600C4EC /* Fallback sidestep right button */
  3353. #define DIBUTTON_FOOTBALLO_FORWARD_LINK 0x160144E0 /* Fallback move forward button */
  3354. #define DIBUTTON_FOOTBALLO_BACK_LINK 0x160144E8 /* Fallback move back button */
  3355. #define DIBUTTON_FOOTBALLO_DEVICE 0x160044FE /* Show input device and controls */
  3356. #define DIBUTTON_FOOTBALLO_PAUSE 0x160044FC /* Start / Pause / Restart game */
  3357. /*--- Sports - Football - Defense
  3358. Defense ---*/
  3359. #define DIVIRTUAL_SPORTS_FOOTBALL_DEFENSE 0x17000000
  3360. #define DIAXIS_FOOTBALLD_LATERAL 0x17008201 /* Move / Aim: left / right */
  3361. #define DIAXIS_FOOTBALLD_MOVE 0x17010202 /* Move / Aim: up / down */
  3362. #define DIBUTTON_FOOTBALLD_PLAY 0x17000401 /* cycle through available plays */
  3363. #define DIBUTTON_FOOTBALLD_SELECT 0x17000402 /* select player closest to the ball */
  3364. #define DIBUTTON_FOOTBALLD_JUMP 0x17000403 /* jump to intercept or block */
  3365. #define DIBUTTON_FOOTBALLD_TACKLE 0x17000404 /* tackler runner */
  3366. #define DIBUTTON_FOOTBALLD_FAKE 0x17000405 /* hold down to fake tackle or intercept */
  3367. #define DIBUTTON_FOOTBALLD_SUPERTACKLE 0x17000406 /* Initiate special tackle */
  3368. #define DIBUTTON_FOOTBALLD_MENU 0x170004FD /* Show menu options */
  3369. /*--- Priority 2 controls ---*/
  3370. #define DIBUTTON_FOOTBALLD_SPIN 0x17004407 /* Spin to beat offensive line */
  3371. #define DIBUTTON_FOOTBALLD_SWIM 0x17004408 /* Swim to beat the offensive line */
  3372. #define DIBUTTON_FOOTBALLD_BULLRUSH 0x17004409 /* Bull rush the offensive line */
  3373. #define DIBUTTON_FOOTBALLD_RIP 0x1700440A /* Rip the offensive line */
  3374. #define DIBUTTON_FOOTBALLD_AUDIBLE 0x1700440B /* Change defensive play at the line of scrimmage */
  3375. #define DIBUTTON_FOOTBALLD_ZOOM 0x1700440C /* Zoom view in / out */
  3376. #define DIBUTTON_FOOTBALLD_SUBSTITUTE 0x1700440D /* substitute one player for another */
  3377. #define DIBUTTON_FOOTBALLD_LEFT_LINK 0x1700C4E4 /* Fallback sidestep left button */
  3378. #define DIBUTTON_FOOTBALLD_RIGHT_LINK 0x1700C4EC /* Fallback sidestep right button */
  3379. #define DIBUTTON_FOOTBALLD_FORWARD_LINK 0x170144E0 /* Fallback move forward button */
  3380. #define DIBUTTON_FOOTBALLD_BACK_LINK 0x170144E8 /* Fallback move back button */
  3381. #define DIBUTTON_FOOTBALLD_DEVICE 0x170044FE /* Show input device and controls */
  3382. #define DIBUTTON_FOOTBALLD_PAUSE 0x170044FC /* Start / Pause / Restart game */
  3383. /*--- Sports - Golf
  3384. ---*/
  3385. #define DIVIRTUAL_SPORTS_GOLF 0x18000000
  3386. #define DIAXIS_GOLF_LATERAL 0x18008201 /* Move / Aim: left / right */
  3387. #define DIAXIS_GOLF_MOVE 0x18010202 /* Move / Aim: up / down */
  3388. #define DIBUTTON_GOLF_SWING 0x18000401 /* swing club */
  3389. #define DIBUTTON_GOLF_SELECT 0x18000402 /* cycle between: club / swing strength / ball arc / ball spin */
  3390. #define DIBUTTON_GOLF_UP 0x18000403 /* increase selection */
  3391. #define DIBUTTON_GOLF_DOWN 0x18000404 /* decrease selection */
  3392. #define DIBUTTON_GOLF_TERRAIN 0x18000405 /* shows terrain detail */
  3393. #define DIBUTTON_GOLF_FLYBY 0x18000406 /* view the hole via a flyby */
  3394. #define DIBUTTON_GOLF_MENU 0x180004FD /* Show menu options */
  3395. /*--- Priority 2 controls ---*/
  3396. #define DIHATSWITCH_GOLF_SCROLL 0x18004601 /* scroll view */
  3397. #define DIBUTTON_GOLF_ZOOM 0x18004407 /* Zoom view in / out */
  3398. #define DIBUTTON_GOLF_TIMEOUT 0x18004408 /* Call for time out */
  3399. #define DIBUTTON_GOLF_SUBSTITUTE 0x18004409 /* substitute one player for another */
  3400. #define DIBUTTON_GOLF_LEFT_LINK 0x1800C4E4 /* Fallback sidestep left button */
  3401. #define DIBUTTON_GOLF_RIGHT_LINK 0x1800C4EC /* Fallback sidestep right button */
  3402. #define DIBUTTON_GOLF_FORWARD_LINK 0x180144E0 /* Fallback move forward button */
  3403. #define DIBUTTON_GOLF_BACK_LINK 0x180144E8 /* Fallback move back button */
  3404. #define DIBUTTON_GOLF_DEVICE 0x180044FE /* Show input device and controls */
  3405. #define DIBUTTON_GOLF_PAUSE 0x180044FC /* Start / Pause / Restart game */
  3406. /*--- Sports - Hockey - Offense
  3407. Offense ---*/
  3408. #define DIVIRTUAL_SPORTS_HOCKEY_OFFENSE 0x19000000
  3409. #define DIAXIS_HOCKEYO_LATERAL 0x19008201 /* Move / Aim: left / right */
  3410. #define DIAXIS_HOCKEYO_MOVE 0x19010202 /* Move / Aim: up / down */
  3411. #define DIBUTTON_HOCKEYO_SHOOT 0x19000401 /* Shoot */
  3412. #define DIBUTTON_HOCKEYO_PASS 0x19000402 /* pass the puck */
  3413. #define DIBUTTON_HOCKEYO_BURST 0x19000403 /* invoke speed burst */
  3414. #define DIBUTTON_HOCKEYO_SPECIAL 0x19000404 /* invoke special move */
  3415. #define DIBUTTON_HOCKEYO_FAKE 0x19000405 /* hold down to fake pass or kick */
  3416. #define DIBUTTON_HOCKEYO_MENU 0x190004FD /* Show menu options */
  3417. /*--- Priority 2 controls ---*/
  3418. #define DIHATSWITCH_HOCKEYO_SCROLL 0x19004601 /* scroll view */
  3419. #define DIBUTTON_HOCKEYO_ZOOM 0x19004406 /* Zoom view in / out */
  3420. #define DIBUTTON_HOCKEYO_STRATEGY 0x19004407 /* Invoke coaching menu for strategy help */
  3421. #define DIBUTTON_HOCKEYO_TIMEOUT 0x19004408 /* Call for time out */
  3422. #define DIBUTTON_HOCKEYO_SUBSTITUTE 0x19004409 /* substitute one player for another */
  3423. #define DIBUTTON_HOCKEYO_LEFT_LINK 0x1900C4E4 /* Fallback sidestep left button */
  3424. #define DIBUTTON_HOCKEYO_RIGHT_LINK 0x1900C4EC /* Fallback sidestep right button */
  3425. #define DIBUTTON_HOCKEYO_FORWARD_LINK 0x190144E0 /* Fallback move forward button */
  3426. #define DIBUTTON_HOCKEYO_BACK_LINK 0x190144E8 /* Fallback move back button */
  3427. #define DIBUTTON_HOCKEYO_DEVICE 0x190044FE /* Show input device and controls */
  3428. #define DIBUTTON_HOCKEYO_PAUSE 0x190044FC /* Start / Pause / Restart game */
  3429. /*--- Sports - Hockey - Defense
  3430. Defense ---*/
  3431. #define DIVIRTUAL_SPORTS_HOCKEY_DEFENSE 0x1A000000
  3432. #define DIAXIS_HOCKEYD_LATERAL 0x1A008201 /* Move / Aim: left / right */
  3433. #define DIAXIS_HOCKEYD_MOVE 0x1A010202 /* Move / Aim: up / down */
  3434. #define DIBUTTON_HOCKEYD_PLAYER 0x1A000401 /* control player closest to the puck */
  3435. #define DIBUTTON_HOCKEYD_STEAL 0x1A000402 /* attempt steal */
  3436. #define DIBUTTON_HOCKEYD_BURST 0x1A000403 /* speed burst or body check */
  3437. #define DIBUTTON_HOCKEYD_BLOCK 0x1A000404 /* block puck */
  3438. #define DIBUTTON_HOCKEYD_FAKE 0x1A000405 /* hold down to fake tackle or intercept */
  3439. #define DIBUTTON_HOCKEYD_MENU 0x1A0004FD /* Show menu options */
  3440. /*--- Priority 2 controls ---*/
  3441. #define DIHATSWITCH_HOCKEYD_SCROLL 0x1A004601 /* scroll view */
  3442. #define DIBUTTON_HOCKEYD_ZOOM 0x1A004406 /* Zoom view in / out */
  3443. #define DIBUTTON_HOCKEYD_STRATEGY 0x1A004407 /* Invoke coaching menu for strategy help */
  3444. #define DIBUTTON_HOCKEYD_TIMEOUT 0x1A004408 /* Call for time out */
  3445. #define DIBUTTON_HOCKEYD_SUBSTITUTE 0x1A004409 /* substitute one player for another */
  3446. #define DIBUTTON_HOCKEYD_LEFT_LINK 0x1A00C4E4 /* Fallback sidestep left button */
  3447. #define DIBUTTON_HOCKEYD_RIGHT_LINK 0x1A00C4EC /* Fallback sidestep right button */
  3448. #define DIBUTTON_HOCKEYD_FORWARD_LINK 0x1A0144E0 /* Fallback move forward button */
  3449. #define DIBUTTON_HOCKEYD_BACK_LINK 0x1A0144E8 /* Fallback move back button */
  3450. #define DIBUTTON_HOCKEYD_DEVICE 0x1A0044FE /* Show input device and controls */
  3451. #define DIBUTTON_HOCKEYD_PAUSE 0x1A0044FC /* Start / Pause / Restart game */
  3452. /*--- Sports - Hockey - Goalie
  3453. Goal tending ---*/
  3454. #define DIVIRTUAL_SPORTS_HOCKEY_GOALIE 0x1B000000
  3455. #define DIAXIS_HOCKEYG_LATERAL 0x1B008201 /* Move / Aim: left / right */
  3456. #define DIAXIS_HOCKEYG_MOVE 0x1B010202 /* Move / Aim: up / down */
  3457. #define DIBUTTON_HOCKEYG_PASS 0x1B000401 /* pass puck */
  3458. #define DIBUTTON_HOCKEYG_POKE 0x1B000402 /* poke / check / hack */
  3459. #define DIBUTTON_HOCKEYG_STEAL 0x1B000403 /* attempt steal */
  3460. #define DIBUTTON_HOCKEYG_BLOCK 0x1B000404 /* block puck */
  3461. #define DIBUTTON_HOCKEYG_MENU 0x1B0004FD /* Show menu options */
  3462. /*--- Priority 2 controls ---*/
  3463. #define DIHATSWITCH_HOCKEYG_SCROLL 0x1B004601 /* scroll view */
  3464. #define DIBUTTON_HOCKEYG_ZOOM 0x1B004405 /* Zoom view in / out */
  3465. #define DIBUTTON_HOCKEYG_STRATEGY 0x1B004406 /* Invoke coaching menu for strategy help */
  3466. #define DIBUTTON_HOCKEYG_TIMEOUT 0x1B004407 /* Call for time out */
  3467. #define DIBUTTON_HOCKEYG_SUBSTITUTE 0x1B004408 /* substitute one player for another */
  3468. #define DIBUTTON_HOCKEYG_LEFT_LINK 0x1B00C4E4 /* Fallback sidestep left button */
  3469. #define DIBUTTON_HOCKEYG_RIGHT_LINK 0x1B00C4EC /* Fallback sidestep right button */
  3470. #define DIBUTTON_HOCKEYG_FORWARD_LINK 0x1B0144E0 /* Fallback move forward button */
  3471. #define DIBUTTON_HOCKEYG_BACK_LINK 0x1B0144E8 /* Fallback move back button */
  3472. #define DIBUTTON_HOCKEYG_DEVICE 0x1B0044FE /* Show input device and controls */
  3473. #define DIBUTTON_HOCKEYG_PAUSE 0x1B0044FC /* Start / Pause / Restart game */
  3474. /*--- Sports - Mountain Biking
  3475. ---*/
  3476. #define DIVIRTUAL_SPORTS_BIKING_MOUNTAIN 0x1C000000
  3477. #define DIAXIS_BIKINGM_TURN 0x1C008201 /* left / right */
  3478. #define DIAXIS_BIKINGM_PEDAL 0x1C010202 /* Pedal faster / slower / brake */
  3479. #define DIBUTTON_BIKINGM_JUMP 0x1C000401 /* jump over obstacle */
  3480. #define DIBUTTON_BIKINGM_CAMERA 0x1C000402 /* switch camera view */
  3481. #define DIBUTTON_BIKINGM_SPECIAL1 0x1C000403 /* perform first special move */
  3482. #define DIBUTTON_BIKINGM_SELECT 0x1C000404 /* Select */
  3483. #define DIBUTTON_BIKINGM_SPECIAL2 0x1C000405 /* perform second special move */
  3484. #define DIBUTTON_BIKINGM_MENU 0x1C0004FD /* Show menu options */
  3485. /*--- Priority 2 controls ---*/
  3486. #define DIHATSWITCH_BIKINGM_SCROLL 0x1C004601 /* scroll view */
  3487. #define DIBUTTON_BIKINGM_ZOOM 0x1C004406 /* Zoom view in / out */
  3488. #define DIAXIS_BIKINGM_BRAKE 0x1C044203 /* Brake axis */
  3489. #define DIBUTTON_BIKINGM_LEFT_LINK 0x1C00C4E4 /* Fallback turn left button */
  3490. #define DIBUTTON_BIKINGM_RIGHT_LINK 0x1C00C4EC /* Fallback turn right button */
  3491. #define DIBUTTON_BIKINGM_FASTER_LINK 0x1C0144E0 /* Fallback pedal faster button */
  3492. #define DIBUTTON_BIKINGM_SLOWER_LINK 0x1C0144E8 /* Fallback pedal slower button */
  3493. #define DIBUTTON_BIKINGM_BRAKE_BUTTON_LINK 0x1C0444E8 /* Fallback brake button */
  3494. #define DIBUTTON_BIKINGM_DEVICE 0x1C0044FE /* Show input device and controls */
  3495. #define DIBUTTON_BIKINGM_PAUSE 0x1C0044FC /* Start / Pause / Restart game */
  3496. /*--- Sports: Skiing / Snowboarding / Skateboarding
  3497. ---*/
  3498. #define DIVIRTUAL_SPORTS_SKIING 0x1D000000
  3499. #define DIAXIS_SKIING_TURN 0x1D008201 /* left / right */
  3500. #define DIAXIS_SKIING_SPEED 0x1D010202 /* faster / slower */
  3501. #define DIBUTTON_SKIING_JUMP 0x1D000401 /* Jump */
  3502. #define DIBUTTON_SKIING_CROUCH 0x1D000402 /* crouch down */
  3503. #define DIBUTTON_SKIING_CAMERA 0x1D000403 /* switch camera view */
  3504. #define DIBUTTON_SKIING_SPECIAL1 0x1D000404 /* perform first special move */
  3505. #define DIBUTTON_SKIING_SELECT 0x1D000405 /* Select */
  3506. #define DIBUTTON_SKIING_SPECIAL2 0x1D000406 /* perform second special move */
  3507. #define DIBUTTON_SKIING_MENU 0x1D0004FD /* Show menu options */
  3508. /*--- Priority 2 controls ---*/
  3509. #define DIHATSWITCH_SKIING_GLANCE 0x1D004601 /* scroll view */
  3510. #define DIBUTTON_SKIING_ZOOM 0x1D004407 /* Zoom view in / out */
  3511. #define DIBUTTON_SKIING_LEFT_LINK 0x1D00C4E4 /* Fallback turn left button */
  3512. #define DIBUTTON_SKIING_RIGHT_LINK 0x1D00C4EC /* Fallback turn right button */
  3513. #define DIBUTTON_SKIING_FASTER_LINK 0x1D0144E0 /* Fallback increase speed button */
  3514. #define DIBUTTON_SKIING_SLOWER_LINK 0x1D0144E8 /* Fallback decrease speed button */
  3515. #define DIBUTTON_SKIING_DEVICE 0x1D0044FE /* Show input device and controls */
  3516. #define DIBUTTON_SKIING_PAUSE 0x1D0044FC /* Start / Pause / Restart game */
  3517. /*--- Sports - Soccer - Offense
  3518. Offense ---*/
  3519. #define DIVIRTUAL_SPORTS_SOCCER_OFFENSE 0x1E000000
  3520. #define DIAXIS_SOCCERO_LATERAL 0x1E008201 /* Move / Aim: left / right */
  3521. #define DIAXIS_SOCCERO_MOVE 0x1E010202 /* Move / Aim: up / down */
  3522. #define DIAXIS_SOCCERO_BEND 0x1E018203 /* Bend to soccer shot/pass */
  3523. #define DIBUTTON_SOCCERO_SHOOT 0x1E000401 /* Shoot the ball */
  3524. #define DIBUTTON_SOCCERO_PASS 0x1E000402 /* Pass */
  3525. #define DIBUTTON_SOCCERO_FAKE 0x1E000403 /* Fake */
  3526. #define DIBUTTON_SOCCERO_PLAYER 0x1E000404 /* Select next player */
  3527. #define DIBUTTON_SOCCERO_SPECIAL1 0x1E000405 /* Apply special move */
  3528. #define DIBUTTON_SOCCERO_SELECT 0x1E000406 /* Select special move */
  3529. #define DIBUTTON_SOCCERO_MENU 0x1E0004FD /* Show menu options */
  3530. /*--- Priority 2 controls ---*/
  3531. #define DIHATSWITCH_SOCCERO_GLANCE 0x1E004601 /* scroll view */
  3532. #define DIBUTTON_SOCCERO_SUBSTITUTE 0x1E004407 /* Substitute one player for another */
  3533. #define DIBUTTON_SOCCERO_SHOOTLOW 0x1E004408 /* Shoot the ball low */
  3534. #define DIBUTTON_SOCCERO_SHOOTHIGH 0x1E004409 /* Shoot the ball high */
  3535. #define DIBUTTON_SOCCERO_PASSTHRU 0x1E00440A /* Make a thru pass */
  3536. #define DIBUTTON_SOCCERO_SPRINT 0x1E00440B /* Sprint / turbo boost */
  3537. #define DIBUTTON_SOCCERO_CONTROL 0x1E00440C /* Obtain control of the ball */
  3538. #define DIBUTTON_SOCCERO_HEAD 0x1E00440D /* Attempt to head the ball */
  3539. #define DIBUTTON_SOCCERO_LEFT_LINK 0x1E00C4E4 /* Fallback sidestep left button */
  3540. #define DIBUTTON_SOCCERO_RIGHT_LINK 0x1E00C4EC /* Fallback sidestep right button */
  3541. #define DIBUTTON_SOCCERO_FORWARD_LINK 0x1E0144E0 /* Fallback move forward button */
  3542. #define DIBUTTON_SOCCERO_BACK_LINK 0x1E0144E8 /* Fallback move back button */
  3543. #define DIBUTTON_SOCCERO_DEVICE 0x1E0044FE /* Show input device and controls */
  3544. #define DIBUTTON_SOCCERO_PAUSE 0x1E0044FC /* Start / Pause / Restart game */
  3545. /*--- Sports - Soccer - Defense
  3546. Defense ---*/
  3547. #define DIVIRTUAL_SPORTS_SOCCER_DEFENSE 0x1F000000
  3548. #define DIAXIS_SOCCERD_LATERAL 0x1F008201 /* Move / Aim: left / right */
  3549. #define DIAXIS_SOCCERD_MOVE 0x1F010202 /* Move / Aim: up / down */
  3550. #define DIBUTTON_SOCCERD_BLOCK 0x1F000401 /* Attempt to block shot */
  3551. #define DIBUTTON_SOCCERD_STEAL 0x1F000402 /* Attempt to steal ball */
  3552. #define DIBUTTON_SOCCERD_FAKE 0x1F000403 /* Fake a block or a steal */
  3553. #define DIBUTTON_SOCCERD_PLAYER 0x1F000404 /* Select next player */
  3554. #define DIBUTTON_SOCCERD_SPECIAL 0x1F000405 /* Apply special move */
  3555. #define DIBUTTON_SOCCERD_SELECT 0x1F000406 /* Select special move */
  3556. #define DIBUTTON_SOCCERD_SLIDE 0x1F000407 /* Attempt a slide tackle */
  3557. #define DIBUTTON_SOCCERD_MENU 0x1F0004FD /* Show menu options */
  3558. /*--- Priority 2 controls ---*/
  3559. #define DIHATSWITCH_SOCCERD_GLANCE 0x1F004601 /* scroll view */
  3560. #define DIBUTTON_SOCCERD_FOUL 0x1F004408 /* Initiate a foul / hard-foul */
  3561. #define DIBUTTON_SOCCERD_HEAD 0x1F004409 /* Attempt a Header */
  3562. #define DIBUTTON_SOCCERD_CLEAR 0x1F00440A /* Attempt to clear the ball down the field */
  3563. #define DIBUTTON_SOCCERD_GOALIECHARGE 0x1F00440B /* Make the goalie charge out of the box */
  3564. #define DIBUTTON_SOCCERD_SUBSTITUTE 0x1F00440C /* Substitute one player for another */
  3565. #define DIBUTTON_SOCCERD_LEFT_LINK 0x1F00C4E4 /* Fallback sidestep left button */
  3566. #define DIBUTTON_SOCCERD_RIGHT_LINK 0x1F00C4EC /* Fallback sidestep right button */
  3567. #define DIBUTTON_SOCCERD_FORWARD_LINK 0x1F0144E0 /* Fallback move forward button */
  3568. #define DIBUTTON_SOCCERD_BACK_LINK 0x1F0144E8 /* Fallback move back button */
  3569. #define DIBUTTON_SOCCERD_DEVICE 0x1F0044FE /* Show input device and controls */
  3570. #define DIBUTTON_SOCCERD_PAUSE 0x1F0044FC /* Start / Pause / Restart game */
  3571. /*--- Sports - Racquet
  3572. Tennis - Table-Tennis - Squash ---*/
  3573. #define DIVIRTUAL_SPORTS_RACQUET 0x20000000
  3574. #define DIAXIS_RACQUET_LATERAL 0x20008201 /* Move / Aim: left / right */
  3575. #define DIAXIS_RACQUET_MOVE 0x20010202 /* Move / Aim: up / down */
  3576. #define DIBUTTON_RACQUET_SWING 0x20000401 /* Swing racquet */
  3577. #define DIBUTTON_RACQUET_BACKSWING 0x20000402 /* Swing backhand */
  3578. #define DIBUTTON_RACQUET_SMASH 0x20000403 /* Smash shot */
  3579. #define DIBUTTON_RACQUET_SPECIAL 0x20000404 /* Special shot */
  3580. #define DIBUTTON_RACQUET_SELECT 0x20000405 /* Select special shot */
  3581. #define DIBUTTON_RACQUET_MENU 0x200004FD /* Show menu options */
  3582. /*--- Priority 2 controls ---*/
  3583. #define DIHATSWITCH_RACQUET_GLANCE 0x20004601 /* scroll view */
  3584. #define DIBUTTON_RACQUET_TIMEOUT 0x20004406 /* Call for time out */
  3585. #define DIBUTTON_RACQUET_SUBSTITUTE 0x20004407 /* Substitute one player for another */
  3586. #define DIBUTTON_RACQUET_LEFT_LINK 0x2000C4E4 /* Fallback sidestep left button */
  3587. #define DIBUTTON_RACQUET_RIGHT_LINK 0x2000C4EC /* Fallback sidestep right button */
  3588. #define DIBUTTON_RACQUET_FORWARD_LINK 0x200144E0 /* Fallback move forward button */
  3589. #define DIBUTTON_RACQUET_BACK_LINK 0x200144E8 /* Fallback move back button */
  3590. #define DIBUTTON_RACQUET_DEVICE 0x200044FE /* Show input device and controls */
  3591. #define DIBUTTON_RACQUET_PAUSE 0x200044FC /* Start / Pause / Restart game */
  3592. /*--- Arcade- 2D
  3593. Side to Side movement ---*/
  3594. #define DIVIRTUAL_ARCADE_SIDE2SIDE 0x21000000
  3595. #define DIAXIS_ARCADES_LATERAL 0x21008201 /* left / right */
  3596. #define DIAXIS_ARCADES_MOVE 0x21010202 /* up / down */
  3597. #define DIBUTTON_ARCADES_THROW 0x21000401 /* throw object */
  3598. #define DIBUTTON_ARCADES_CARRY 0x21000402 /* carry object */
  3599. #define DIBUTTON_ARCADES_ATTACK 0x21000403 /* attack */
  3600. #define DIBUTTON_ARCADES_SPECIAL 0x21000404 /* apply special move */
  3601. #define DIBUTTON_ARCADES_SELECT 0x21000405 /* select special move */
  3602. #define DIBUTTON_ARCADES_MENU 0x210004FD /* Show menu options */
  3603. /*--- Priority 2 controls ---*/
  3604. #define DIHATSWITCH_ARCADES_VIEW 0x21004601 /* scroll view left / right / up / down */
  3605. #define DIBUTTON_ARCADES_LEFT_LINK 0x2100C4E4 /* Fallback sidestep left button */
  3606. #define DIBUTTON_ARCADES_RIGHT_LINK 0x2100C4EC /* Fallback sidestep right button */
  3607. #define DIBUTTON_ARCADES_FORWARD_LINK 0x210144E0 /* Fallback move forward button */
  3608. #define DIBUTTON_ARCADES_BACK_LINK 0x210144E8 /* Fallback move back button */
  3609. #define DIBUTTON_ARCADES_VIEW_UP_LINK 0x2107C4E0 /* Fallback scroll view up button */
  3610. #define DIBUTTON_ARCADES_VIEW_DOWN_LINK 0x2107C4E8 /* Fallback scroll view down button */
  3611. #define DIBUTTON_ARCADES_VIEW_LEFT_LINK 0x2107C4E4 /* Fallback scroll view left button */
  3612. #define DIBUTTON_ARCADES_VIEW_RIGHT_LINK 0x2107C4EC /* Fallback scroll view right button */
  3613. #define DIBUTTON_ARCADES_DEVICE 0x210044FE /* Show input device and controls */
  3614. #define DIBUTTON_ARCADES_PAUSE 0x210044FC /* Start / Pause / Restart game */
  3615. /*--- Arcade - Platform Game
  3616. Character moves around on screen ---*/
  3617. #define DIVIRTUAL_ARCADE_PLATFORM 0x22000000
  3618. #define DIAXIS_ARCADEP_LATERAL 0x22008201 /* Left / right */
  3619. #define DIAXIS_ARCADEP_MOVE 0x22010202 /* Up / down */
  3620. #define DIBUTTON_ARCADEP_JUMP 0x22000401 /* Jump */
  3621. #define DIBUTTON_ARCADEP_FIRE 0x22000402 /* Fire */
  3622. #define DIBUTTON_ARCADEP_CROUCH 0x22000403 /* Crouch */
  3623. #define DIBUTTON_ARCADEP_SPECIAL 0x22000404 /* Apply special move */
  3624. #define DIBUTTON_ARCADEP_SELECT 0x22000405 /* Select special move */
  3625. #define DIBUTTON_ARCADEP_MENU 0x220004FD /* Show menu options */
  3626. /*--- Priority 2 controls ---*/
  3627. #define DIHATSWITCH_ARCADEP_VIEW 0x22004601 /* Scroll view */
  3628. #define DIBUTTON_ARCADEP_FIRESECONDARY 0x22004406 /* Alternative fire button */
  3629. #define DIBUTTON_ARCADEP_LEFT_LINK 0x2200C4E4 /* Fallback sidestep left button */
  3630. #define DIBUTTON_ARCADEP_RIGHT_LINK 0x2200C4EC /* Fallback sidestep right button */
  3631. #define DIBUTTON_ARCADEP_FORWARD_LINK 0x220144E0 /* Fallback move forward button */
  3632. #define DIBUTTON_ARCADEP_BACK_LINK 0x220144E8 /* Fallback move back button */
  3633. #define DIBUTTON_ARCADEP_VIEW_UP_LINK 0x2207C4E0 /* Fallback scroll view up button */
  3634. #define DIBUTTON_ARCADEP_VIEW_DOWN_LINK 0x2207C4E8 /* Fallback scroll view down button */
  3635. #define DIBUTTON_ARCADEP_VIEW_LEFT_LINK 0x2207C4E4 /* Fallback scroll view left button */
  3636. #define DIBUTTON_ARCADEP_VIEW_RIGHT_LINK 0x2207C4EC /* Fallback scroll view right button */
  3637. #define DIBUTTON_ARCADEP_DEVICE 0x220044FE /* Show input device and controls */
  3638. #define DIBUTTON_ARCADEP_PAUSE 0x220044FC /* Start / Pause / Restart game */
  3639. /*--- CAD - 2D Object Control
  3640. Controls to select and move objects in 2D ---*/
  3641. #define DIVIRTUAL_CAD_2DCONTROL 0x23000000
  3642. #define DIAXIS_2DCONTROL_LATERAL 0x23008201 /* Move view left / right */
  3643. #define DIAXIS_2DCONTROL_MOVE 0x23010202 /* Move view up / down */
  3644. #define DIAXIS_2DCONTROL_INOUT 0x23018203 /* Zoom - in / out */
  3645. #define DIBUTTON_2DCONTROL_SELECT 0x23000401 /* Select Object */
  3646. #define DIBUTTON_2DCONTROL_SPECIAL1 0x23000402 /* Do first special operation */
  3647. #define DIBUTTON_2DCONTROL_SPECIAL 0x23000403 /* Select special operation */
  3648. #define DIBUTTON_2DCONTROL_SPECIAL2 0x23000404 /* Do second special operation */
  3649. #define DIBUTTON_2DCONTROL_MENU 0x230004FD /* Show menu options */
  3650. /*--- Priority 2 controls ---*/
  3651. #define DIHATSWITCH_2DCONTROL_HATSWITCH 0x23004601 /* Hat switch */
  3652. #define DIAXIS_2DCONTROL_ROTATEZ 0x23024204 /* Rotate view clockwise / counterclockwise */
  3653. #define DIBUTTON_2DCONTROL_DISPLAY 0x23004405 /* Shows next on-screen display options */
  3654. #define DIBUTTON_2DCONTROL_DEVICE 0x230044FE /* Show input device and controls */
  3655. #define DIBUTTON_2DCONTROL_PAUSE 0x230044FC /* Start / Pause / Restart game */
  3656. /*--- CAD - 3D object control
  3657. Controls to select and move objects within a 3D environment ---*/
  3658. #define DIVIRTUAL_CAD_3DCONTROL 0x24000000
  3659. #define DIAXIS_3DCONTROL_LATERAL 0x24008201 /* Move view left / right */
  3660. #define DIAXIS_3DCONTROL_MOVE 0x24010202 /* Move view up / down */
  3661. #define DIAXIS_3DCONTROL_INOUT 0x24018203 /* Zoom - in / out */
  3662. #define DIBUTTON_3DCONTROL_SELECT 0x24000401 /* Select Object */
  3663. #define DIBUTTON_3DCONTROL_SPECIAL1 0x24000402 /* Do first special operation */
  3664. #define DIBUTTON_3DCONTROL_SPECIAL 0x24000403 /* Select special operation */
  3665. #define DIBUTTON_3DCONTROL_SPECIAL2 0x24000404 /* Do second special operation */
  3666. #define DIBUTTON_3DCONTROL_MENU 0x240004FD /* Show menu options */
  3667. /*--- Priority 2 controls ---*/
  3668. #define DIHATSWITCH_3DCONTROL_HATSWITCH 0x24004601 /* Hat switch */
  3669. #define DIAXIS_3DCONTROL_ROTATEX 0x24034204 /* Rotate view forward or up / backward or down */
  3670. #define DIAXIS_3DCONTROL_ROTATEY 0x2402C205 /* Rotate view clockwise / counterclockwise */
  3671. #define DIAXIS_3DCONTROL_ROTATEZ 0x24024206 /* Rotate view left / right */
  3672. #define DIBUTTON_3DCONTROL_DISPLAY 0x24004405 /* Show next on-screen display options */
  3673. #define DIBUTTON_3DCONTROL_DEVICE 0x240044FE /* Show input device and controls */
  3674. #define DIBUTTON_3DCONTROL_PAUSE 0x240044FC /* Start / Pause / Restart game */
  3675. /*--- CAD - 3D Navigation - Fly through
  3676. Controls for 3D modeling ---*/
  3677. #define DIVIRTUAL_CAD_FLYBY 0x25000000
  3678. #define DIAXIS_CADF_LATERAL 0x25008201 /* move view left / right */
  3679. #define DIAXIS_CADF_MOVE 0x25010202 /* move view up / down */
  3680. #define DIAXIS_CADF_INOUT 0x25018203 /* in / out */
  3681. #define DIBUTTON_CADF_SELECT 0x25000401 /* Select Object */
  3682. #define DIBUTTON_CADF_SPECIAL1 0x25000402 /* do first special operation */
  3683. #define DIBUTTON_CADF_SPECIAL 0x25000403 /* Select special operation */
  3684. #define DIBUTTON_CADF_SPECIAL2 0x25000404 /* do second special operation */
  3685. #define DIBUTTON_CADF_MENU 0x250004FD /* Show menu options */
  3686. /*--- Priority 2 controls ---*/
  3687. #define DIHATSWITCH_CADF_HATSWITCH 0x25004601 /* Hat switch */
  3688. #define DIAXIS_CADF_ROTATEX 0x25034204 /* Rotate view forward or up / backward or down */
  3689. #define DIAXIS_CADF_ROTATEY 0x2502C205 /* Rotate view clockwise / counterclockwise */
  3690. #define DIAXIS_CADF_ROTATEZ 0x25024206 /* Rotate view left / right */
  3691. #define DIBUTTON_CADF_DISPLAY 0x25004405 /* shows next on-screen display options */
  3692. #define DIBUTTON_CADF_DEVICE 0x250044FE /* Show input device and controls */
  3693. #define DIBUTTON_CADF_PAUSE 0x250044FC /* Start / Pause / Restart game */
  3694. /*--- CAD - 3D Model Control
  3695. Controls for 3D modeling ---*/
  3696. #define DIVIRTUAL_CAD_MODEL 0x26000000
  3697. #define DIAXIS_CADM_LATERAL 0x26008201 /* move view left / right */
  3698. #define DIAXIS_CADM_MOVE 0x26010202 /* move view up / down */
  3699. #define DIAXIS_CADM_INOUT 0x26018203 /* in / out */
  3700. #define DIBUTTON_CADM_SELECT 0x26000401 /* Select Object */
  3701. #define DIBUTTON_CADM_SPECIAL1 0x26000402 /* do first special operation */
  3702. #define DIBUTTON_CADM_SPECIAL 0x26000403 /* Select special operation */
  3703. #define DIBUTTON_CADM_SPECIAL2 0x26000404 /* do second special operation */
  3704. #define DIBUTTON_CADM_MENU 0x260004FD /* Show menu options */
  3705. /*--- Priority 2 controls ---*/
  3706. #define DIHATSWITCH_CADM_HATSWITCH 0x26004601 /* Hat switch */
  3707. #define DIAXIS_CADM_ROTATEX 0x26034204 /* Rotate view forward or up / backward or down */
  3708. #define DIAXIS_CADM_ROTATEY 0x2602C205 /* Rotate view clockwise / counterclockwise */
  3709. #define DIAXIS_CADM_ROTATEZ 0x26024206 /* Rotate view left / right */
  3710. #define DIBUTTON_CADM_DISPLAY 0x26004405 /* shows next on-screen display options */
  3711. #define DIBUTTON_CADM_DEVICE 0x260044FE /* Show input device and controls */
  3712. #define DIBUTTON_CADM_PAUSE 0x260044FC /* Start / Pause / Restart game */
  3713. /*--- Control - Media Equipment
  3714. Remote ---*/
  3715. #define DIVIRTUAL_REMOTE_CONTROL 0x27000000
  3716. #define DIAXIS_REMOTE_SLIDER 0x27050201 /* Slider for adjustment: volume / color / bass / etc */
  3717. #define DIBUTTON_REMOTE_MUTE 0x27000401 /* Set volume on current device to zero */
  3718. #define DIBUTTON_REMOTE_SELECT 0x27000402 /* Next/previous: channel/ track / chapter / picture / station */
  3719. #define DIBUTTON_REMOTE_PLAY 0x27002403 /* Start or pause entertainment on current device */
  3720. #define DIBUTTON_REMOTE_CUE 0x27002404 /* Move through current media */
  3721. #define DIBUTTON_REMOTE_REVIEW 0x27002405 /* Move through current media */
  3722. #define DIBUTTON_REMOTE_CHANGE 0x27002406 /* Select next device */
  3723. #define DIBUTTON_REMOTE_RECORD 0x27002407 /* Start recording the current media */
  3724. #define DIBUTTON_REMOTE_MENU 0x270004FD /* Show menu options */
  3725. /*--- Priority 2 controls ---*/
  3726. #define DIAXIS_REMOTE_SLIDER2 0x27054202 /* Slider for adjustment: volume */
  3727. #define DIBUTTON_REMOTE_TV 0x27005C08 /* Select TV */
  3728. #define DIBUTTON_REMOTE_CABLE 0x27005C09 /* Select cable box */
  3729. #define DIBUTTON_REMOTE_CD 0x27005C0A /* Select CD player */
  3730. #define DIBUTTON_REMOTE_VCR 0x27005C0B /* Select VCR */
  3731. #define DIBUTTON_REMOTE_TUNER 0x27005C0C /* Select tuner */
  3732. #define DIBUTTON_REMOTE_DVD 0x27005C0D /* Select DVD player */
  3733. #define DIBUTTON_REMOTE_ADJUST 0x27005C0E /* Enter device adjustment menu */
  3734. #define DIBUTTON_REMOTE_DIGIT0 0x2700540F /* Digit 0 */
  3735. #define DIBUTTON_REMOTE_DIGIT1 0x27005410 /* Digit 1 */
  3736. #define DIBUTTON_REMOTE_DIGIT2 0x27005411 /* Digit 2 */
  3737. #define DIBUTTON_REMOTE_DIGIT3 0x27005412 /* Digit 3 */
  3738. #define DIBUTTON_REMOTE_DIGIT4 0x27005413 /* Digit 4 */
  3739. #define DIBUTTON_REMOTE_DIGIT5 0x27005414 /* Digit 5 */
  3740. #define DIBUTTON_REMOTE_DIGIT6 0x27005415 /* Digit 6 */
  3741. #define DIBUTTON_REMOTE_DIGIT7 0x27005416 /* Digit 7 */
  3742. #define DIBUTTON_REMOTE_DIGIT8 0x27005417 /* Digit 8 */
  3743. #define DIBUTTON_REMOTE_DIGIT9 0x27005418 /* Digit 9 */
  3744. #define DIBUTTON_REMOTE_DEVICE 0x270044FE /* Show input device and controls */
  3745. #define DIBUTTON_REMOTE_PAUSE 0x270044FC /* Start / Pause / Restart game */
  3746. /*--- Control- Web
  3747. Help or Browser ---*/
  3748. #define DIVIRTUAL_BROWSER_CONTROL 0x28000000
  3749. #define DIAXIS_BROWSER_LATERAL 0x28008201 /* Move on screen pointer */
  3750. #define DIAXIS_BROWSER_MOVE 0x28010202 /* Move on screen pointer */
  3751. #define DIBUTTON_BROWSER_SELECT 0x28000401 /* Select current item */
  3752. #define DIAXIS_BROWSER_VIEW 0x28018203 /* Move view up/down */
  3753. #define DIBUTTON_BROWSER_REFRESH 0x28000402 /* Refresh */
  3754. #define DIBUTTON_BROWSER_MENU 0x280004FD /* Show menu options */
  3755. /*--- Priority 2 controls ---*/
  3756. #define DIBUTTON_BROWSER_SEARCH 0x28004403 /* Use search tool */
  3757. #define DIBUTTON_BROWSER_STOP 0x28004404 /* Cease current update */
  3758. #define DIBUTTON_BROWSER_HOME 0x28004405 /* Go directly to "home" location */
  3759. #define DIBUTTON_BROWSER_FAVORITES 0x28004406 /* Mark current site as favorite */
  3760. #define DIBUTTON_BROWSER_NEXT 0x28004407 /* Select Next page */
  3761. #define DIBUTTON_BROWSER_PREVIOUS 0x28004408 /* Select Previous page */
  3762. #define DIBUTTON_BROWSER_HISTORY 0x28004409 /* Show/Hide History */
  3763. #define DIBUTTON_BROWSER_PRINT 0x2800440A /* Print current page */
  3764. #define DIBUTTON_BROWSER_DEVICE 0x280044FE /* Show input device and controls */
  3765. #define DIBUTTON_BROWSER_PAUSE 0x280044FC /* Start / Pause / Restart game */
  3766. /*--- Driving Simulator - Giant Walking Robot
  3767. Walking tank with weapons ---*/
  3768. #define DIVIRTUAL_DRIVING_MECHA 0x29000000
  3769. #define DIAXIS_MECHA_STEER 0x29008201 /* Turns mecha left/right */
  3770. #define DIAXIS_MECHA_TORSO 0x29010202 /* Tilts torso forward/backward */
  3771. #define DIAXIS_MECHA_ROTATE 0x29020203 /* Turns torso left/right */
  3772. #define DIAXIS_MECHA_THROTTLE 0x29038204 /* Engine Speed */
  3773. #define DIBUTTON_MECHA_FIRE 0x29000401 /* Fire */
  3774. #define DIBUTTON_MECHA_WEAPONS 0x29000402 /* Select next weapon group */
  3775. #define DIBUTTON_MECHA_TARGET 0x29000403 /* Select closest enemy available target */
  3776. #define DIBUTTON_MECHA_REVERSE 0x29000404 /* Toggles throttle in/out of reverse */
  3777. #define DIBUTTON_MECHA_ZOOM 0x29000405 /* Zoom in/out targeting reticule */
  3778. #define DIBUTTON_MECHA_JUMP 0x29000406 /* Fires jump jets */
  3779. #define DIBUTTON_MECHA_MENU 0x290004FD /* Show menu options */
  3780. /*--- Priority 2 controls ---*/
  3781. #define DIBUTTON_MECHA_CENTER 0x29004407 /* Center torso to legs */
  3782. #define DIHATSWITCH_MECHA_GLANCE 0x29004601 /* Look around */
  3783. #define DIBUTTON_MECHA_VIEW 0x29004408 /* Cycle through view options */
  3784. #define DIBUTTON_MECHA_FIRESECONDARY 0x29004409 /* Alternative fire button */
  3785. #define DIBUTTON_MECHA_LEFT_LINK 0x2900C4E4 /* Fallback steer left button */
  3786. #define DIBUTTON_MECHA_RIGHT_LINK 0x2900C4EC /* Fallback steer right button */
  3787. #define DIBUTTON_MECHA_FORWARD_LINK 0x290144E0 /* Fallback tilt torso forward button */
  3788. #define DIBUTTON_MECHA_BACK_LINK 0x290144E8 /* Fallback tilt toroso backward button */
  3789. #define DIBUTTON_MECHA_ROTATE_LEFT_LINK 0x290244E4 /* Fallback rotate toroso right button */
  3790. #define DIBUTTON_MECHA_ROTATE_RIGHT_LINK 0x290244EC /* Fallback rotate torso left button */
  3791. #define DIBUTTON_MECHA_FASTER_LINK 0x2903C4E0 /* Fallback increase engine speed */
  3792. #define DIBUTTON_MECHA_SLOWER_LINK 0x2903C4E8 /* Fallback decrease engine speed */
  3793. #define DIBUTTON_MECHA_DEVICE 0x290044FE /* Show input device and controls */
  3794. #define DIBUTTON_MECHA_PAUSE 0x290044FC /* Start / Pause / Restart game */
  3795. /*
  3796. * "ANY" semantics can be used as a last resort to get mappings for actions
  3797. * that match nothing in the chosen virtual genre. These semantics will be
  3798. * mapped at a lower priority that virtual genre semantics. Also, hardware
  3799. * vendors will not be able to provide sensible mappings for these unless
  3800. * they provide application specific mappings.
  3801. */
  3802. #define DIAXIS_ANY_X_1 0xFF00C201
  3803. #define DIAXIS_ANY_X_2 0xFF00C202
  3804. #define DIAXIS_ANY_Y_1 0xFF014201
  3805. #define DIAXIS_ANY_Y_2 0xFF014202
  3806. #define DIAXIS_ANY_Z_1 0xFF01C201
  3807. #define DIAXIS_ANY_Z_2 0xFF01C202
  3808. #define DIAXIS_ANY_R_1 0xFF024201
  3809. #define DIAXIS_ANY_R_2 0xFF024202
  3810. #define DIAXIS_ANY_U_1 0xFF02C201
  3811. #define DIAXIS_ANY_U_2 0xFF02C202
  3812. #define DIAXIS_ANY_V_1 0xFF034201
  3813. #define DIAXIS_ANY_V_2 0xFF034202
  3814. #define DIAXIS_ANY_A_1 0xFF03C201
  3815. #define DIAXIS_ANY_A_2 0xFF03C202
  3816. #define DIAXIS_ANY_B_1 0xFF044201
  3817. #define DIAXIS_ANY_B_2 0xFF044202
  3818. #define DIAXIS_ANY_C_1 0xFF04C201
  3819. #define DIAXIS_ANY_C_2 0xFF04C202
  3820. #define DIAXIS_ANY_S_1 0xFF054201
  3821. #define DIAXIS_ANY_S_2 0xFF054202
  3822. #define DIAXIS_ANY_1 0xFF004201
  3823. #define DIAXIS_ANY_2 0xFF004202
  3824. #define DIAXIS_ANY_3 0xFF004203
  3825. #define DIAXIS_ANY_4 0xFF004204
  3826. #define DIPOV_ANY_1 0xFF004601
  3827. #define DIPOV_ANY_2 0xFF004602
  3828. #define DIPOV_ANY_3 0xFF004603
  3829. #define DIPOV_ANY_4 0xFF004604
  3830. #define DIBUTTON_ANY(instance) ( 0xFF004400 | instance )
  3831. #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
  3832. #pragma endregion
  3833. #ifdef __cplusplus
  3834. };
  3835. #endif
  3836. #endif /* __DINPUT_INCLUDED__ */
  3837. /****************************************************************************
  3838. *
  3839. * Definitions for non-IDirectInput (VJoyD) features defined more recently
  3840. * than the current sdk files
  3841. *
  3842. ****************************************************************************/
  3843. #ifdef _INC_MMSYSTEM
  3844. #ifndef MMNOJOY
  3845. #ifndef __VJOYDX_INCLUDED__
  3846. #define __VJOYDX_INCLUDED__
  3847. #ifdef __cplusplus
  3848. extern "C" {
  3849. #endif
  3850. #pragma region Desktop Family
  3851. #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
  3852. /*
  3853. * Flag to indicate that the dwReserved2 field of the JOYINFOEX structure
  3854. * contains mini-driver specific data to be passed by VJoyD to the mini-
  3855. * driver instead of doing a poll.
  3856. */
  3857. #define JOY_PASSDRIVERDATA 0x10000000l
  3858. /*
  3859. * Informs the joystick driver that the configuration has been changed
  3860. * and should be reloaded from the registery.
  3861. * dwFlags is reserved and should be set to zero
  3862. */
  3863. WINMMAPI MMRESULT WINAPI joyConfigChanged( DWORD dwFlags );
  3864. #ifndef DIJ_RINGZERO
  3865. /*
  3866. * Invoke the joystick control panel directly, using the passed window handle
  3867. * as the parent of the dialog. This API is only supported for compatibility
  3868. * purposes; new applications should use the RunControlPanel method of a
  3869. * device interface for a game controller.
  3870. * The API is called by using the function pointer returned by
  3871. * GetProcAddress( hCPL, TEXT("ShowJoyCPL") ) where hCPL is a HMODULE returned
  3872. * by LoadLibrary( TEXT("joy.cpl") ). The typedef is provided to allow
  3873. * declaration and casting of an appropriately typed variable.
  3874. */
  3875. void WINAPI ShowJoyCPL( HWND hWnd );
  3876. typedef void (WINAPI* LPFNSHOWJOYCPL)( HWND hWnd );
  3877. #endif
  3878. /*
  3879. * Hardware Setting indicating that the device is a headtracker
  3880. */
  3881. #define JOY_HWS_ISHEADTRACKER 0x02000000l
  3882. /*
  3883. * Hardware Setting indicating that the VxD is used to replace
  3884. * the standard analog polling
  3885. */
  3886. #define JOY_HWS_ISGAMEPORTDRIVER 0x04000000l
  3887. /*
  3888. * Hardware Setting indicating that the driver needs a standard
  3889. * gameport in order to communicate with the device.
  3890. */
  3891. #define JOY_HWS_ISANALOGPORTDRIVER 0x08000000l
  3892. /*
  3893. * Hardware Setting indicating that VJoyD should not load this
  3894. * driver, it will be loaded externally and will register with
  3895. * VJoyD of it's own accord.
  3896. */
  3897. #define JOY_HWS_AUTOLOAD 0x10000000l
  3898. /*
  3899. * Hardware Setting indicating that the driver acquires any
  3900. * resources needed without needing a devnode through VJoyD.
  3901. */
  3902. #define JOY_HWS_NODEVNODE 0x20000000l
  3903. /*
  3904. * Hardware Setting indicating that the device is a gameport bus
  3905. */
  3906. #define JOY_HWS_ISGAMEPORTBUS 0x80000000l
  3907. #define JOY_HWS_GAMEPORTBUSBUSY 0x00000001l
  3908. /*
  3909. * Usage Setting indicating that the settings are volatile and
  3910. * should be removed if still present on a reboot.
  3911. */
  3912. #define JOY_US_VOLATILE 0x00000008L
  3913. #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */
  3914. #pragma endregion
  3915. #ifdef __cplusplus
  3916. };
  3917. #endif
  3918. #endif /* __VJOYDX_INCLUDED__ */
  3919. #endif /* not MMNOJOY */
  3920. #endif /* _INC_MMSYSTEM */
  3921. /****************************************************************************
  3922. *
  3923. * Definitions for non-IDirectInput (VJoyD) features defined more recently
  3924. * than the current ddk files
  3925. *
  3926. ****************************************************************************/
  3927. #ifndef DIJ_RINGZERO
  3928. #ifdef _INC_MMDDK
  3929. #ifndef MMNOJOYDEV
  3930. #ifndef __VJOYDXD_INCLUDED__
  3931. #define __VJOYDXD_INCLUDED__
  3932. /*
  3933. * Poll type in which the do_other field of the JOYOEMPOLLDATA
  3934. * structure contains mini-driver specific data passed from an app.
  3935. */
  3936. #define JOY_OEMPOLL_PASSDRIVERDATA 7
  3937. #endif /* __VJOYDXD_INCLUDED__ */
  3938. #endif /* not MMNOJOYDEV */
  3939. #endif /* _INC_MMDDK */
  3940. #endif /* DIJ_RINGZERO */