DirectInput.pas 312 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525
  1. {******************************************************************************}
  2. {* *}
  3. {* Copyright (C) Microsoft Corporation. All Rights Reserved. *}
  4. {* *}
  5. {* Files: dinput.h *}
  6. {* Content: DirectInput include file *}
  7. {* *}
  8. {* DirectX 9.0 Delphi adaptation by Alexey Barkovoy *}
  9. {* E-Mail: clootie@reactor.ru *}
  10. {* *}
  11. {* Modified: 26-Jan-2003 *}
  12. {* *}
  13. {* Compatible with : *}
  14. {* DirectX 7.0 Object Pascal adaptation by *}
  15. {* Erik Unger, e-Mail: DelphiDirectX@next-reality.com *}
  16. {* *}
  17. {* Latest version can be downloaded from: *}
  18. {* http://clootie.narod.ru/delphi *}
  19. {* *}
  20. {******************************************************************************}
  21. { }
  22. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  23. { }
  24. { The contents of this file are used with permission, subject to the Mozilla }
  25. { Public License Version 1.1 (the "License"); you may not use this file except }
  26. { in compliance with the License. You may obtain a copy of the License at }
  27. { http://www.mozilla.org/MPL/MPL-1.1.html }
  28. { }
  29. { Software distributed under the License is distributed on an "AS IS" basis, }
  30. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  31. { the specific language governing rights and limitations under the License. }
  32. { }
  33. { Alternatively, the contents of this file may be used under the terms of the }
  34. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  35. { provisions of the LGPL License are applicable instead of those above. }
  36. { If you wish to allow use of your version of this file only under the terms }
  37. { of the LGPL License and not to allow others to use your version of this file }
  38. { under the MPL, indicate your decision by deleting the provisions above and }
  39. { replace them with the notice and other provisions required by the LGPL }
  40. { License. If you do not delete the provisions above, a recipient may use }
  41. { your version of this file under either the MPL or the LGPL License. }
  42. { }
  43. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  44. { }
  45. {******************************************************************************}
  46. // Original source contained in "DirectInput.par"
  47. ///////////////////////////////////////////////////////////////////////////////
  48. // Notes:
  49. //----------------------------------------------------------------------------
  50. // Possible input defines for this file, mapped to original C values:
  51. // DIRECTINPUT_VERSION_8 : DIRECTINPUT_VERSION = 0x0800,
  52. // DIRECTINPUT_VERSION_7 : DIRECTINPUT_VERSION = 0x0700,
  53. // DIRECTINPUT_VERSION_5b : DIRECTINPUT_VERSION = 0x05b2,
  54. // - in this translation we don't support DirectInput 5.0a (0x050a) version
  55. // - just straight 5.0b (0x05b2) one.
  56. // DIRECTINPUT_VERSION_5 : DIRECTINPUT_VERSION = 0x0500,
  57. // DIRECTINPUT_VERSION_3 : DIRECTINPUT_VERSION = 0x0300,
  58. //
  59. // By default DIRECTINPUT_VERSION_8 (DIRECTINPUT_VERSION = 0x0800) is assumed
  60. //
  61. // Also you can use generic DIRECTXx defines, so:
  62. // DIRECTX9 equal to DIRECTINPUT_VERSION_8;
  63. // DIRECTX8 equal to DIRECTINPUT_VERSION_8;
  64. // DIRECTX7 equal to DIRECTINPUT_VERSION_7;
  65. // DIRECTX6 equal to DIRECTINPUT_VERSION_5;
  66. // DIRECTX5 equal to DIRECTINPUT_VERSION_5;
  67. // DIRECTX3 equal to DIRECTINPUT_VERSION_3
  68. ///////////////////////////////////////////////////////////////////////////////
  69. unit DirectInput;
  70. interface
  71. uses
  72. Windows, MMSystem, DXTypes;
  73. {$I DirectX.inc}
  74. ////////////////////////////////////////////////////////////////////////
  75. // Global level dynamic loading support
  76. {$IFDEF DYNAMIC_LINK_ALL}
  77. {$DEFINE DIRECTINPUT_DYNAMIC_LINK}
  78. {$ENDIF}
  79. {$IFDEF DYNAMIC_LINK_EXPLICIT_ALL}
  80. {$DEFINE DIRECTINPUT_DYNAMIC_LINK_EXPLICIT}
  81. {$ENDIF}
  82. // Remove "dots" below to force some kind of dynamic linking
  83. {.$DEFINE DIRECTINPUT_DYNAMIC_LINK}
  84. {.$DEFINE DIRECTINPUT_DYNAMIC_LINK_EXPLICIT}
  85. ////////////////////////////////////////////////////////////////////////
  86. // Assume for what DirectInput version we will compile headers
  87. {$IFDEF DIRECTX9}
  88. {$DEFINE DIRECTINPUT_VERSION_8}
  89. {$ENDIF}
  90. {$IFDEF DIRECTX8}
  91. {$DEFINE DIRECTINPUT_VERSION_8}
  92. {$ENDIF}
  93. {$IFDEF DIRECTX7}
  94. {$DEFINE DIRECTINPUT_VERSION_7}
  95. {$ENDIF}
  96. {$IFDEF DIRECTX6}
  97. {$DEFINE DIRECTINPUT_VERSION_5}
  98. {$ENDIF}
  99. {$IFDEF DIRECTX5}
  100. {$DEFINE DIRECTINPUT_VERSION_5}
  101. {$ENDIF}
  102. {$IFDEF DIRECTX3}
  103. {$DEFINE DIRECTINPUT_VERSION_3}
  104. {$ENDIF}
  105. {$IFNDEF DIRECTINPUT_VERSION_8}
  106. {$IFNDEF DIRECTINPUT_VERSION_7}
  107. {$IFNDEF DIRECTINPUT_VERSION_5b}
  108. {$IFNDEF DIRECTINPUT_VERSION_5}
  109. {$IFNDEF DIRECTINPUT_VERSION_3}
  110. // Compiling for DirectInput8 by default
  111. {$DEFINE DIRECTINPUT_VERSION_8}
  112. {$ENDIF}
  113. {$ENDIF}
  114. {$ENDIF}
  115. {$ENDIF}
  116. {$ENDIF}
  117. ////////////////////////////////////////////////////////////////////////
  118. // Define DirectInputVerrsion constant
  119. const
  120. {$IFDEF DIRECTINPUT_VERSION_8}
  121. DIRECTINPUT_VERSION = $0800;
  122. {$ELSE}{$IFDEF DIRECTINPUT_VERSION_7}
  123. DIRECTINPUT_VERSION = $0700;
  124. {$ELSE}{$IFDEF DIRECTINPUT_VERSION_5b}
  125. DIRECTINPUT_VERSION = $05b2;
  126. {$ELSE}{$IFDEF DIRECTINPUT_VERSION_5}
  127. DIRECTINPUT_VERSION = $0500;
  128. {$ELSE}{$IFDEF DIRECTINPUT_VERSION_3}
  129. DIRECTINPUT_VERSION = $0300;
  130. {$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}{$ENDIF}
  131. {$EXTERNALSYM DIRECTINPUT_VERSION}
  132. ////////////////////////////////////////////////////////////////////////
  133. // Emit conditionals to C++Builder compiler
  134. {$IFDEF DIRECTINPUT_VERSION_3}
  135. {$HPPEMIT '#define DIRECTINPUT_VERSION 0x0300'}
  136. {$ENDIF}
  137. {$IFDEF DIRECTINPUT_VERSION_5}
  138. {$HPPEMIT '#define DIRECTINPUT_VERSION 0x0500'}
  139. {$ENDIF}
  140. {$IFDEF DIRECTINPUT_VERSION_5b}
  141. {$HPPEMIT '#define DIRECTINPUT_VERSION 0x05b2'}
  142. {$ENDIF}
  143. {$IFDEF DIRECTINPUT_VERSION_7}
  144. {$HPPEMIT '#define DIRECTINPUT_VERSION 0x0700'}
  145. {$ENDIF}
  146. {$IFDEF DIRECTINPUT_VERSION_8}
  147. {$HPPEMIT '#define DIRECTINPUT_VERSION 0x0800'}
  148. {$ENDIF}
  149. (*$NOINCLUDE DXTypes*)
  150. (*$HPPEMIT '#include "dinput.h"' *)
  151. (*$HPPEMIT '' *)
  152. ////////////////////////////////////////////////////////////////////////
  153. // Define symbols for '<=' comparision
  154. {$IFDEF DIRECTINPUT_VERSION_8}
  155. {$DEFINE DIRECTINPUT_VERSION_7}
  156. {$ENDIF}
  157. {$IFDEF DIRECTINPUT_VERSION_7}
  158. {$DEFINE DIRECTINPUT_VERSION_5b}
  159. {$ENDIF}
  160. {$IFDEF DIRECTINPUT_VERSION_5b}
  161. {$DEFINE DIRECTINPUT_VERSION_5}
  162. {$ENDIF}
  163. {$IFDEF DIRECTINPUT_VERSION_5}
  164. {$DEFINE DIRECTINPUT_VERSION_3}
  165. {$ENDIF}
  166. (****************************************************************************
  167. *
  168. * Copyright (C) 1996-2000 Microsoft Corporation. All Rights Reserved.
  169. *
  170. * File: dinput.h
  171. * Content: DirectInput include file
  172. *
  173. ****************************************************************************)
  174. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputEffect);'}
  175. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDeviceA);'}
  176. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDeviceW);'}
  177. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputA);'}
  178. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputW);'}
  179. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput2A);'}
  180. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput2W);'}
  181. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput7A);'}
  182. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput7W);'}
  183. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput8A);'}
  184. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInput8W);'}
  185. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDeviceA);'}
  186. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDeviceW);'}
  187. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice2A);'}
  188. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice2W);'}
  189. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice7A);'}
  190. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice7W);'}
  191. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice8A);'}
  192. {$HPPEMIT 'DECLARE_DINTERFACE_TYPE(IDirectInputDevice8W);'}
  193. {$HPPEMIT '#ifdef UNICODE'}
  194. {$HPPEMIT 'typedef _di_IDirectInputW _di_IDirectInput;'}
  195. {$HPPEMIT 'typedef _di_IDirectInput2W _di_IDirectInput2;'}
  196. {$HPPEMIT 'typedef _di_IDirectInput7W _di_IDirectInput7;'}
  197. {$HPPEMIT 'typedef _di_IDirectInput8W _di_IDirectInput8;'}
  198. {$HPPEMIT 'typedef _di_IDirectInputDeviceW _di_IDirectInputDevice;'}
  199. {$HPPEMIT 'typedef _di_IDirectInputDevice2W _di_IDirectInputDevice2;'}
  200. {$HPPEMIT 'typedef _di_IDirectInputDevice7W _di_IDirectInputDevice7;'}
  201. {$HPPEMIT 'typedef _di_IDirectInputDevice8W _di_IDirectInputDevice8;'}
  202. {$HPPEMIT '#else'}
  203. {$HPPEMIT 'typedef _di_IDirectInputA _di_IDirectInput;'}
  204. {$HPPEMIT 'typedef _di_IDirectInput2A _di_IDirectInput2;'}
  205. {$HPPEMIT 'typedef _di_IDirectInput7A _di_IDirectInput7;'}
  206. {$HPPEMIT 'typedef _di_IDirectInput8A _di_IDirectInput8;'}
  207. {$HPPEMIT 'typedef _di_IDirectInputDeviceA _di_IDirectInputDevice;'}
  208. {$HPPEMIT 'typedef _di_IDirectInputDevice2A _di_IDirectInputDevice2;'}
  209. {$HPPEMIT 'typedef _di_IDirectInputDevice7A _di_IDirectInputDevice7;'}
  210. {$HPPEMIT 'typedef _di_IDirectInputDevice8A _di_IDirectInputDevice8;'}
  211. {$HPPEMIT '#endif'}
  212. (****************************************************************************
  213. *
  214. * Class IDs
  215. *
  216. ****************************************************************************)
  217. const
  218. CLSID_DirectInput : TGUID = '{25E609E0-B259-11CF-BFC7-444553540000}';
  219. {$EXTERNALSYM CLSID_DirectInput}
  220. CLSID_DirectInputDevice : TGUID = '{25E609E1-B259-11CF-BFC7-444553540000}';
  221. {$EXTERNALSYM CLSID_DirectInputDevice}
  222. CLSID_DirectInput8 : TGUID = '{25E609E4-B259-11CF-BFC7-444553540000}';
  223. {$EXTERNALSYM CLSID_DirectInput8}
  224. CLSID_DirectInputDevice8 : TGUID = '{25E609E5-B259-11CF-BFC7-444553540000}';
  225. {$EXTERNALSYM CLSID_DirectInputDevice8}
  226. (****************************************************************************
  227. *
  228. * Interfaces
  229. *
  230. ****************************************************************************)
  231. const
  232. IID_IDirectInputA : TGUID = '{89521360-AA8A-11CF-BFC7-444553540000}';
  233. {$EXTERNALSYM IID_IDirectInputA}
  234. IID_IDirectInputW : TGUID = '{89521361-AA8A-11CF-BFC7-444553540000}';
  235. {$EXTERNALSYM IID_IDirectInputW}
  236. IID_IDirectInput2A : TGUID = '{5944E662-AA8A-11CF-BFC7-444553540000}';
  237. {$EXTERNALSYM IID_IDirectInput2A}
  238. IID_IDirectInput2W : TGUID = '{5944E663-AA8A-11CF-BFC7-444553540000}';
  239. {$EXTERNALSYM IID_IDirectInput2W}
  240. IID_IDirectInput7A : TGUID = '{9A4CB684-236D-11D3-8E9D-00C04F6844AE}';
  241. {$EXTERNALSYM IID_IDirectInput7A}
  242. IID_IDirectInput7W : TGUID = '{9A4CB685-236D-11D3-8E9D-00C04F6844AE}';
  243. {$EXTERNALSYM IID_IDirectInput7W}
  244. IID_IDirectInput8A : TGUID = '{BF798030-483A-4DA2-AA99-5D64ED369700}';
  245. {$EXTERNALSYM IID_IDirectInput8A}
  246. IID_IDirectInput8W : TGUID = '{BF798031-483A-4DA2-AA99-5D64ED369700}';
  247. {$EXTERNALSYM IID_IDirectInput8W}
  248. IID_IDirectInputDeviceA : TGUID = '{5944E680-C92E-11CF-BFC7-444553540000}';
  249. {$EXTERNALSYM IID_IDirectInputDeviceA}
  250. IID_IDirectInputDeviceW : TGUID = '{5944E681-C92E-11CF-BFC7-444553540000}';
  251. {$EXTERNALSYM IID_IDirectInputDeviceW}
  252. IID_IDirectInputDevice2A : TGUID = '{5944E682-C92E-11CF-BFC7-444553540000}';
  253. {$EXTERNALSYM IID_IDirectInputDevice2A}
  254. IID_IDirectInputDevice2W : TGUID = '{5944E683-C92E-11CF-BFC7-444553540000}';
  255. {$EXTERNALSYM IID_IDirectInputDevice2W}
  256. IID_IDirectInputDevice7A : TGUID = '{57D7C6BC-2356-11D3-8E9D-00C04F6844AE}';
  257. {$EXTERNALSYM IID_IDirectInputDevice7A}
  258. IID_IDirectInputDevice7W : TGUID = '{57D7C6BD-2356-11D3-8E9D-00C04F6844AE}';
  259. {$EXTERNALSYM IID_IDirectInputDevice7W}
  260. IID_IDirectInputDevice8A : TGUID = '{54D41080-DC15-4833-A41B-748F73A38179}';
  261. {$EXTERNALSYM IID_IDirectInputDevice8A}
  262. IID_IDirectInputDevice8W : TGUID = '{54D41081-DC15-4833-A41B-748F73A38179}';
  263. {$EXTERNALSYM IID_IDirectInputDevice8W}
  264. IID_IDirectInputEffect : TGUID = '{E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35}';
  265. {$EXTERNALSYM IID_IDirectInputEffect}
  266. // String constants for Interface IDs
  267. SID_IDirectInputA = '{89521360-AA8A-11CF-BFC7-444553540000}';
  268. SID_IDirectInputW = '{89521361-AA8A-11CF-BFC7-444553540000}';
  269. SID_IDirectInput2A = '{5944E662-AA8A-11CF-BFC7-444553540000}';
  270. SID_IDirectInput2W = '{5944E663-AA8A-11CF-BFC7-444553540000}';
  271. SID_IDirectInput7A = '{9A4CB684-236D-11D3-8E9D-00C04F6844AE}';
  272. SID_IDirectInput7W = '{9A4CB685-236D-11D3-8E9D-00C04F6844AE}';
  273. SID_IDirectInput8A = '{BF798030-483A-4DA2-AA99-5D64ED369700}';
  274. SID_IDirectInput8W = '{BF798031-483A-4DA2-AA99-5D64ED369700}';
  275. SID_IDirectInputDeviceA = '{5944E680-C92E-11CF-BFC7-444553540000}';
  276. SID_IDirectInputDeviceW = '{5944E681-C92E-11CF-BFC7-444553540000}';
  277. SID_IDirectInputDevice2A = '{5944E682-C92E-11CF-BFC7-444553540000}';
  278. SID_IDirectInputDevice2W = '{5944E683-C92E-11CF-BFC7-444553540000}';
  279. SID_IDirectInputDevice7A = '{57D7C6BC-2356-11D3-8E9D-00C04F6844AE}';
  280. SID_IDirectInputDevice7W = '{57D7C6BD-2356-11D3-8E9D-00C04F6844AE}';
  281. SID_IDirectInputDevice8A = '{54D41080-DC15-4833-A41B-748F73A38179}';
  282. SID_IDirectInputDevice8W = '{54D41081-DC15-4833-A41B-748F73A38179}';
  283. SID_IDirectInputEffect = '{E7E1F7C0-88D2-11D0-9AD0-00A0C9A06E35}';
  284. (****************************************************************************
  285. *
  286. * Predefined object types
  287. *
  288. ****************************************************************************)
  289. const
  290. GUID_XAxis : TGUID = '{A36D02E0-C9F3-11CF-BFC7-444553540000}';
  291. {$EXTERNALSYM GUID_XAxis}
  292. GUID_YAxis : TGUID = '{A36D02E1-C9F3-11CF-BFC7-444553540000}';
  293. {$EXTERNALSYM GUID_YAxis}
  294. GUID_ZAxis : TGUID = '{A36D02E2-C9F3-11CF-BFC7-444553540000}';
  295. {$EXTERNALSYM GUID_ZAxis}
  296. GUID_RxAxis : TGUID = '{A36D02F4-C9F3-11CF-BFC7-444553540000}';
  297. {$EXTERNALSYM GUID_RxAxis}
  298. GUID_RyAxis : TGUID = '{A36D02F5-C9F3-11CF-BFC7-444553540000}';
  299. {$EXTERNALSYM GUID_RyAxis}
  300. GUID_RzAxis : TGUID = '{A36D02E3-C9F3-11CF-BFC7-444553540000}';
  301. {$EXTERNALSYM GUID_RzAxis}
  302. GUID_Slider : TGUID = '{A36D02E4-C9F3-11CF-BFC7-444553540000}';
  303. {$EXTERNALSYM GUID_Slider}
  304. GUID_Button : TGUID = '{A36D02F0-C9F3-11CF-BFC7-444553540000}';
  305. {$EXTERNALSYM GUID_Button}
  306. GUID_Key : TGUID = '{55728220-D33C-11CF-BFC7-444553540000}';
  307. {$EXTERNALSYM GUID_Key}
  308. GUID_POV : TGUID = '{A36D02F2-C9F3-11CF-BFC7-444553540000}';
  309. {$EXTERNALSYM GUID_POV}
  310. GUID_Unknown : TGUID = '{A36D02F3-C9F3-11CF-BFC7-444553540000}';
  311. {$EXTERNALSYM GUID_Unknown}
  312. (****************************************************************************
  313. *
  314. * Predefined product GUIDs
  315. *
  316. ****************************************************************************)
  317. const
  318. GUID_SysMouse : TGUID = '{6F1D2B60-D5A0-11CF-BFC7-444553540000}';
  319. {$EXTERNALSYM GUID_SysMouse}
  320. GUID_SysKeyboard : TGUID = '{6F1D2B61-D5A0-11CF-BFC7-444553540000}';
  321. {$EXTERNALSYM GUID_SysKeyboard}
  322. GUID_Joystick : TGUID = '{6F1D2B70-D5A0-11CF-BFC7-444553540000}';
  323. {$EXTERNALSYM GUID_Joystick}
  324. GUID_SysMouseEm : TGUID = '{6F1D2B80-D5A0-11CF-BFC7-444553540000}';
  325. {$EXTERNALSYM GUID_SysMouseEm}
  326. GUID_SysMouseEm2 : TGUID = '{6F1D2B81-D5A0-11CF-BFC7-444553540000}';
  327. {$EXTERNALSYM GUID_SysMouseEm2}
  328. GUID_SysKeyboardEm : TGUID = '{6F1D2B82-D5A0-11CF-BFC7-444553540000}';
  329. {$EXTERNALSYM GUID_SysKeyboardEm}
  330. GUID_SysKeyboardEm2 : TGUID = '{6F1D2B83-D5A0-11CF-BFC7-444553540000}';
  331. {$EXTERNALSYM GUID_SysKeyboardEm2}
  332. (****************************************************************************
  333. *
  334. * Predefined force feedback effects
  335. *
  336. ****************************************************************************)
  337. const
  338. GUID_ConstantForce : TGUID = '{13541C20-8E33-11D0-9AD0-00A0C9A06E35}';
  339. {$EXTERNALSYM GUID_ConstantForce}
  340. GUID_RampForce : TGUID = '{13541C21-8E33-11D0-9AD0-00A0C9A06E35}';
  341. {$EXTERNALSYM GUID_RampForce}
  342. GUID_Square : TGUID = '{13541C22-8E33-11D0-9AD0-00A0C9A06E35}';
  343. {$EXTERNALSYM GUID_Square}
  344. GUID_Sine : TGUID = '{13541C23-8E33-11D0-9AD0-00A0C9A06E35}';
  345. {$EXTERNALSYM GUID_Sine}
  346. GUID_Triangle : TGUID = '{13541C24-8E33-11D0-9AD0-00A0C9A06E35}';
  347. {$EXTERNALSYM GUID_Triangle}
  348. GUID_SawtoothUp : TGUID = '{13541C25-8E33-11D0-9AD0-00A0C9A06E35}';
  349. {$EXTERNALSYM GUID_SawtoothUp}
  350. GUID_SawtoothDown : TGUID = '{13541C26-8E33-11D0-9AD0-00A0C9A06E35}';
  351. {$EXTERNALSYM GUID_SawtoothDown}
  352. GUID_Spring : TGUID = '{13541C27-8E33-11D0-9AD0-00A0C9A06E35}';
  353. {$EXTERNALSYM GUID_Spring}
  354. GUID_Damper : TGUID = '{13541C28-8E33-11D0-9AD0-00A0C9A06E35}';
  355. {$EXTERNALSYM GUID_Damper}
  356. GUID_Inertia : TGUID = '{13541C29-8E33-11D0-9AD0-00A0C9A06E35}';
  357. {$EXTERNALSYM GUID_Inertia}
  358. GUID_Friction : TGUID = '{13541C2A-8E33-11D0-9AD0-00A0C9A06E35}';
  359. {$EXTERNALSYM GUID_Friction}
  360. GUID_CustomForce : TGUID = '{13541C2B-8E33-11D0-9AD0-00A0C9A06E35}';
  361. {$EXTERNALSYM GUID_CustomForce}
  362. (****************************************************************************
  363. *
  364. * Interfaces and Structures...
  365. *
  366. ****************************************************************************)
  367. {$IFDEF DIRECTINPUT_VERSION_5}
  368. (****************************************************************************
  369. *
  370. * IDirectInputEffect
  371. *
  372. ****************************************************************************)
  373. const
  374. DIEFT_ALL = $00000000;
  375. {$EXTERNALSYM DIEFT_ALL}
  376. DIEFT_CONSTANTFORCE = $00000001;
  377. {$EXTERNALSYM DIEFT_CONSTANTFORCE}
  378. DIEFT_RAMPFORCE = $00000002;
  379. {$EXTERNALSYM DIEFT_RAMPFORCE}
  380. DIEFT_PERIODIC = $00000003;
  381. {$EXTERNALSYM DIEFT_PERIODIC}
  382. DIEFT_CONDITION = $00000004;
  383. {$EXTERNALSYM DIEFT_CONDITION}
  384. DIEFT_CUSTOMFORCE = $00000005;
  385. {$EXTERNALSYM DIEFT_CUSTOMFORCE}
  386. DIEFT_HARDWARE = $000000FF;
  387. {$EXTERNALSYM DIEFT_HARDWARE}
  388. DIEFT_FFATTACK = $00000200;
  389. {$EXTERNALSYM DIEFT_FFATTACK}
  390. DIEFT_FFFADE = $00000400;
  391. {$EXTERNALSYM DIEFT_FFFADE}
  392. DIEFT_SATURATION = $00000800;
  393. {$EXTERNALSYM DIEFT_SATURATION}
  394. DIEFT_POSNEGCOEFFICIENTS = $00001000;
  395. {$EXTERNALSYM DIEFT_POSNEGCOEFFICIENTS}
  396. DIEFT_POSNEGSATURATION = $00002000;
  397. {$EXTERNALSYM DIEFT_POSNEGSATURATION}
  398. DIEFT_DEADBAND = $00004000;
  399. {$EXTERNALSYM DIEFT_DEADBAND}
  400. DIEFT_STARTDELAY = $00008000;
  401. {$EXTERNALSYM DIEFT_STARTDELAY}
  402. //#define DIEFT_GETTYPE(n) LOBYTE(n)
  403. function DIEFT_GETTYPE(n: Cardinal): Byte;
  404. {$EXTERNALSYM DIEFT_GETTYPE}
  405. const
  406. DI_DEGREES = 100;
  407. {$EXTERNALSYM DI_DEGREES}
  408. DI_FFNOMINALMAX = 10000;
  409. {$EXTERNALSYM DI_FFNOMINALMAX}
  410. DI_SECONDS = 1000000;
  411. {$EXTERNALSYM DI_SECONDS}
  412. type
  413. PDIConstantForce = ^TDIConstantForce;
  414. DICONSTANTFORCE = packed record
  415. lMagnitude: Longint;
  416. end;
  417. {$EXTERNALSYM DICONSTANTFORCE}
  418. TDIConstantForce = DICONSTANTFORCE;
  419. PDIRampForce = ^TDIRampForce;
  420. DIRAMPFORCE = packed record
  421. lStart: Longint;
  422. lEnd: Longint;
  423. end;
  424. {$EXTERNALSYM DIRAMPFORCE}
  425. TDIRampForce = DIRAMPFORCE;
  426. PDIPeriodic = ^TDIPeriodic;
  427. DIPERIODIC = packed record
  428. dwMagnitude: DWORD;
  429. lOffset: Longint;
  430. dwPhase: DWORD;
  431. dwPeriod: DWORD;
  432. end;
  433. {$EXTERNALSYM DIPERIODIC}
  434. TDIPeriodic = DIPERIODIC;
  435. PDICondition = ^TDICondition;
  436. DICONDITION = packed record
  437. lOffset: Longint;
  438. lPositiveCoefficient: Longint;
  439. lNegativeCoefficient: Longint;
  440. dwPositiveSaturation: DWORD;
  441. dwNegativeSaturation: DWORD;
  442. lDeadBand: Longint;
  443. end;
  444. {$EXTERNALSYM DICONDITION}
  445. TDICondition = DICONDITION;
  446. PDICustomForce = ^TDICustomForce;
  447. DICUSTOMFORCE = packed record
  448. cChannels: DWORD;
  449. dwSamplePeriod: DWORD;
  450. cSamples: DWORD;
  451. rglForceData: PLongint;
  452. end;
  453. {$EXTERNALSYM DICUSTOMFORCE}
  454. TDICustomForce = DICUSTOMFORCE;
  455. PDIEnvelope = ^TDIEnvelope;
  456. DIENVELOPE = packed record
  457. dwSize: DWORD; (* sizeof(DIENVELOPE) *)
  458. dwAttackLevel: DWORD;
  459. dwAttackTime: DWORD; (* Microseconds *)
  460. dwFadeLevel: DWORD;
  461. dwFadeTime: DWORD; (* Microseconds *)
  462. end;
  463. {$EXTERNALSYM DIENVELOPE}
  464. TDIEnvelope = DIENVELOPE;
  465. (* This structure is defined for DirectX 5.0 compatibility *)
  466. PDIEffectDX5 = ^TDIEffectDX5;
  467. DIEFFECT_DX5 = packed record
  468. dwSize: DWORD; (* sizeof(DIEFFECT_DX5) *)
  469. dwFlags: DWORD; (* DIEFF_* *)
  470. dwDuration: DWORD; (* Microseconds *)
  471. dwSamplePeriod: DWORD; (* Microseconds *)
  472. dwGain: DWORD;
  473. dwTriggerButton: DWORD; (* or DIEB_NOTRIGGER *)
  474. dwTriggerRepeatInterval: DWORD; (* Microseconds *)
  475. cAxes: DWORD; (* Number of axes *)
  476. rgdwAxes: PDWORD; (* Array of axes *)
  477. rglDirection: PLongint; (* Array of directions *)
  478. lpEnvelope: PDIEnvelope; (* Optional *)
  479. cbTypeSpecificParams: DWORD; (* Size of params *)
  480. lpvTypeSpecificParams: Pointer; (* Pointer to params *)
  481. end;
  482. {$EXTERNALSYM DIEFFECT_DX5}
  483. TDIEffectDX5 = DIEFFECT_DX5;
  484. PDIEffect = ^TDIEffect;
  485. DIEFFECT = packed record
  486. dwSize: DWORD; (* sizeof(DIEFFECT) *)
  487. dwFlags: DWORD; (* DIEFF_* *)
  488. dwDuration: DWORD; (* Microseconds *)
  489. dwSamplePeriod: DWORD; (* Microseconds *)
  490. dwGain: DWORD;
  491. dwTriggerButton: DWORD; (* or DIEB_NOTRIGGER *)
  492. dwTriggerRepeatInterval: DWORD; (* Microseconds *)
  493. cAxes: DWORD; (* Number of axes *)
  494. rgdwAxes: PDWORD; (* Array of axes *)
  495. rglDirection: PLongint; (* Array of directions *)
  496. lpEnvelope: PDIEnvelope; (* Optional *)
  497. cbTypeSpecificParams: DWORD; (* Size of params *)
  498. lpvTypeSpecificParams: Pointer; (* Pointer to params *)
  499. {$IFDEF DIRECTINPUT_VERSION_6}
  500. dwStartDelay: DWORD; (* Microseconds *)
  501. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0600 *)
  502. end;
  503. {$EXTERNALSYM DIEFFECT}
  504. TDIEffect = DIEFFECT;
  505. DIEFFECT_DX6 = DIEFFECT;
  506. {$EXTERNALSYM DIEFFECT_DX6}
  507. TDIEffectDX6 = DIEFFECT_DX6;
  508. PDIEffectDX6 = ^TDIEffectDX6;
  509. {$IFDEF DIRECTINPUT_VERSION_7}
  510. PDIFileEffect = ^TDIFileEffect;
  511. DIFILEEFFECT = packed record
  512. dwSize: DWORD;
  513. GuidEffect: TGUID;
  514. lpDiEffect: PDIEffect;
  515. szFriendlyName: array [0..MAX_PATH-1] of Char;
  516. end;
  517. {$EXTERNALSYM DIFILEEFFECT}
  518. TDIFileEffect = DIFILEEFFECT;
  519. TDIEnumEffectsInFileCallback = function (const Effect: TDIFileEffect; Data: Pointer): BOOL; stdcall;
  520. {$NODEFINE TDIEnumEffectsInFileCallback}
  521. {$HPPEMIT 'typedef LPDIENUMEFFECTSINFILECALLBACK TDIEnumEffectsInFileCallback;'}
  522. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  523. const
  524. DIEFF_OBJECTIDS = $00000001;
  525. {$EXTERNALSYM DIEFF_OBJECTIDS}
  526. DIEFF_OBJECTOFFSETS = $00000002;
  527. {$EXTERNALSYM DIEFF_OBJECTOFFSETS}
  528. DIEFF_CARTESIAN = $00000010;
  529. {$EXTERNALSYM DIEFF_CARTESIAN}
  530. DIEFF_POLAR = $00000020;
  531. {$EXTERNALSYM DIEFF_POLAR}
  532. DIEFF_SPHERICAL = $00000040;
  533. {$EXTERNALSYM DIEFF_SPHERICAL}
  534. DIEP_DURATION = $00000001;
  535. {$EXTERNALSYM DIEP_DURATION}
  536. DIEP_SAMPLEPERIOD = $00000002;
  537. {$EXTERNALSYM DIEP_SAMPLEPERIOD}
  538. DIEP_GAIN = $00000004;
  539. {$EXTERNALSYM DIEP_GAIN}
  540. DIEP_TRIGGERBUTTON = $00000008;
  541. {$EXTERNALSYM DIEP_TRIGGERBUTTON}
  542. DIEP_TRIGGERREPEATINTERVAL = $00000010;
  543. {$EXTERNALSYM DIEP_TRIGGERREPEATINTERVAL}
  544. DIEP_AXES = $00000020;
  545. {$EXTERNALSYM DIEP_AXES}
  546. DIEP_DIRECTION = $00000040;
  547. {$EXTERNALSYM DIEP_DIRECTION}
  548. DIEP_ENVELOPE = $00000080;
  549. {$EXTERNALSYM DIEP_ENVELOPE}
  550. DIEP_TYPESPECIFICPARAMS = $00000100;
  551. {$EXTERNALSYM DIEP_TYPESPECIFICPARAMS}
  552. {$IFDEF DIRECTINPUT_VERSION_6}
  553. DIEP_STARTDELAY = $00000200;
  554. {$EXTERNALSYM DIEP_STARTDELAY}
  555. DIEP_ALLPARAMS_DX5 = $000001FF;
  556. {$EXTERNALSYM DIEP_ALLPARAMS_DX5}
  557. DIEP_ALLPARAMS = $000003FF;
  558. {$EXTERNALSYM DIEP_ALLPARAMS}
  559. {$ELSE} (* DIRECTINPUT_VERSION < 0x0600 *)
  560. DIEP_ALLPARAMS = $000001FF;
  561. {$EXTERNALSYM DIEP_ALLPARAMS}
  562. {$ENDIF} (* DIRECTINPUT_VERSION ? 0x0600 *)
  563. DIEP_START = $20000000;
  564. {$EXTERNALSYM DIEP_START}
  565. DIEP_NORESTART = $40000000;
  566. {$EXTERNALSYM DIEP_NORESTART}
  567. DIEP_NODOWNLOAD = $80000000;
  568. {$EXTERNALSYM DIEP_NODOWNLOAD}
  569. DIEB_NOTRIGGER = $FFFFFFFF;
  570. {$EXTERNALSYM DIEB_NOTRIGGER}
  571. DIES_SOLO = $00000001;
  572. {$EXTERNALSYM DIES_SOLO}
  573. DIES_NODOWNLOAD = $80000000;
  574. {$EXTERNALSYM DIES_NODOWNLOAD}
  575. DIEGES_PLAYING = $00000001;
  576. {$EXTERNALSYM DIEGES_PLAYING}
  577. DIEGES_EMULATED = $00000002;
  578. {$EXTERNALSYM DIEGES_EMULATED}
  579. type
  580. PDIEffEscape = ^TDIEffEscape;
  581. DIEFFESCAPE = packed record
  582. dwSize: DWORD;
  583. dwCommand: DWORD;
  584. lpvInBuffer: Pointer;
  585. cbInBuffer: DWORD;
  586. lpvOutBuffer: Pointer;
  587. cbOutBuffer: DWORD;
  588. end;
  589. {$EXTERNALSYM DIEFFESCAPE}
  590. TDIEffEscape = DIEFFESCAPE;
  591. type
  592. {$EXTERNALSYM IDirectInputEffect}
  593. IDirectInputEffect = interface(IUnknown)
  594. [SID_IDirectInputEffect]
  595. (*** IDirectInputEffect methods ***)
  596. function Initialize(hinst: THandle; dwVersion: DWORD; const rguid: TGUID): HResult; stdcall;
  597. function GetEffectGuid(out pguid: TGUID): HResult; stdcall;
  598. function GetParameters(var peff: TDIEffect; dwFlags: DWORD): HResult; stdcall;
  599. function SetParameters(const peff: TDIEffect; dwFlags: DWORD): HResult; stdcall;
  600. function Start(dwIterations, dwFlags: DWORD): HResult; stdcall;
  601. function Stop: HResult; stdcall;
  602. function GetEffectStatus(out pdwFlags: DWORD): HResult; stdcall;
  603. function Download: HResult; stdcall;
  604. function Unload: HResult; stdcall;
  605. function Escape(var pesc: PDIEffEscape): HResult; stdcall;
  606. end;
  607. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  608. (****************************************************************************
  609. *
  610. * IDirectInputDevice
  611. *
  612. ****************************************************************************)
  613. const
  614. {$IFNDEF DIRECTINPUT_VERSION_8} (* #if DIRECTINPUT_VERSION <= 0x700 *)
  615. DIDEVTYPE_DEVICE = 1;
  616. {$EXTERNALSYM DIDEVTYPE_DEVICE}
  617. DIDEVTYPE_MOUSE = 2;
  618. {$EXTERNALSYM DIDEVTYPE_MOUSE}
  619. DIDEVTYPE_KEYBOARD = 3;
  620. {$EXTERNALSYM DIDEVTYPE_KEYBOARD}
  621. DIDEVTYPE_JOYSTICK = 4;
  622. {$EXTERNALSYM DIDEVTYPE_JOYSTICK}
  623. {$ELSE}
  624. DI8DEVCLASS_ALL = 0;
  625. {$EXTERNALSYM DI8DEVCLASS_ALL}
  626. DI8DEVCLASS_DEVICE = 1;
  627. {$EXTERNALSYM DI8DEVCLASS_DEVICE}
  628. DI8DEVCLASS_POINTER = 2;
  629. {$EXTERNALSYM DI8DEVCLASS_POINTER}
  630. DI8DEVCLASS_KEYBOARD = 3;
  631. {$EXTERNALSYM DI8DEVCLASS_KEYBOARD}
  632. DI8DEVCLASS_GAMECTRL = 4;
  633. {$EXTERNALSYM DI8DEVCLASS_GAMECTRL}
  634. DI8DEVTYPE_DEVICE = $11;
  635. {$EXTERNALSYM DI8DEVTYPE_DEVICE}
  636. DI8DEVTYPE_MOUSE = $12;
  637. {$EXTERNALSYM DI8DEVTYPE_MOUSE}
  638. DI8DEVTYPE_KEYBOARD = $13;
  639. {$EXTERNALSYM DI8DEVTYPE_KEYBOARD}
  640. DI8DEVTYPE_JOYSTICK = $14;
  641. {$EXTERNALSYM DI8DEVTYPE_JOYSTICK}
  642. DI8DEVTYPE_GAMEPAD = $15;
  643. {$EXTERNALSYM DI8DEVTYPE_GAMEPAD}
  644. DI8DEVTYPE_DRIVING = $16;
  645. {$EXTERNALSYM DI8DEVTYPE_DRIVING}
  646. DI8DEVTYPE_FLIGHT = $17;
  647. {$EXTERNALSYM DI8DEVTYPE_FLIGHT}
  648. DI8DEVTYPE_1STPERSON = $18;
  649. {$EXTERNALSYM DI8DEVTYPE_1STPERSON}
  650. DI8DEVTYPE_DEVICECTRL = $19;
  651. {$EXTERNALSYM DI8DEVTYPE_DEVICECTRL}
  652. DI8DEVTYPE_SCREENPOINTER = $1A;
  653. {$EXTERNALSYM DI8DEVTYPE_SCREENPOINTER}
  654. DI8DEVTYPE_REMOTE = $1B;
  655. {$EXTERNALSYM DI8DEVTYPE_REMOTE}
  656. DI8DEVTYPE_SUPPLEMENTAL = $1C;
  657. {$EXTERNALSYM DI8DEVTYPE_SUPPLEMENTAL}
  658. {$ENDIF} (* DIRECTINPUT_VERSION <= 0x700 *)
  659. DIDEVTYPE_HID = $00010000;
  660. {$EXTERNALSYM DIDEVTYPE_HID}
  661. {$IFNDEF DIRECTINPUT_VERSION_8} (* #if DIRECTINPUT_VERSION <= 0x700 *)
  662. DIDEVTYPEMOUSE_UNKNOWN = 1;
  663. {$EXTERNALSYM DIDEVTYPEMOUSE_UNKNOWN}
  664. DIDEVTYPEMOUSE_TRADITIONAL = 2;
  665. {$EXTERNALSYM DIDEVTYPEMOUSE_TRADITIONAL}
  666. DIDEVTYPEMOUSE_FINGERSTICK = 3;
  667. {$EXTERNALSYM DIDEVTYPEMOUSE_FINGERSTICK}
  668. DIDEVTYPEMOUSE_TOUCHPAD = 4;
  669. {$EXTERNALSYM DIDEVTYPEMOUSE_TOUCHPAD}
  670. DIDEVTYPEMOUSE_TRACKBALL = 5;
  671. {$EXTERNALSYM DIDEVTYPEMOUSE_TRACKBALL}
  672. DIDEVTYPEKEYBOARD_UNKNOWN = 0;
  673. {$EXTERNALSYM DIDEVTYPEKEYBOARD_UNKNOWN}
  674. DIDEVTYPEKEYBOARD_PCXT = 1;
  675. {$EXTERNALSYM DIDEVTYPEKEYBOARD_PCXT}
  676. DIDEVTYPEKEYBOARD_OLIVETTI = 2;
  677. {$EXTERNALSYM DIDEVTYPEKEYBOARD_OLIVETTI}
  678. DIDEVTYPEKEYBOARD_PCAT = 3;
  679. {$EXTERNALSYM DIDEVTYPEKEYBOARD_PCAT}
  680. DIDEVTYPEKEYBOARD_PCENH = 4;
  681. {$EXTERNALSYM DIDEVTYPEKEYBOARD_PCENH}
  682. DIDEVTYPEKEYBOARD_NOKIA1050 = 5;
  683. {$EXTERNALSYM DIDEVTYPEKEYBOARD_NOKIA1050}
  684. DIDEVTYPEKEYBOARD_NOKIA9140 = 6;
  685. {$EXTERNALSYM DIDEVTYPEKEYBOARD_NOKIA9140}
  686. DIDEVTYPEKEYBOARD_NEC98 = 7;
  687. {$EXTERNALSYM DIDEVTYPEKEYBOARD_NEC98}
  688. DIDEVTYPEKEYBOARD_NEC98LAPTOP = 8;
  689. {$EXTERNALSYM DIDEVTYPEKEYBOARD_NEC98LAPTOP}
  690. DIDEVTYPEKEYBOARD_NEC98106 = 9;
  691. {$EXTERNALSYM DIDEVTYPEKEYBOARD_NEC98106}
  692. DIDEVTYPEKEYBOARD_JAPAN106 = 10;
  693. {$EXTERNALSYM DIDEVTYPEKEYBOARD_JAPAN106}
  694. DIDEVTYPEKEYBOARD_JAPANAX = 11;
  695. {$EXTERNALSYM DIDEVTYPEKEYBOARD_JAPANAX}
  696. DIDEVTYPEKEYBOARD_J3100 = 12;
  697. {$EXTERNALSYM DIDEVTYPEKEYBOARD_J3100}
  698. DIDEVTYPEJOYSTICK_UNKNOWN = 1;
  699. {$EXTERNALSYM DIDEVTYPEJOYSTICK_UNKNOWN}
  700. DIDEVTYPEJOYSTICK_TRADITIONAL = 2;
  701. {$EXTERNALSYM DIDEVTYPEJOYSTICK_TRADITIONAL}
  702. DIDEVTYPEJOYSTICK_FLIGHTSTICK = 3;
  703. {$EXTERNALSYM DIDEVTYPEJOYSTICK_FLIGHTSTICK}
  704. DIDEVTYPEJOYSTICK_GAMEPAD = 4;
  705. {$EXTERNALSYM DIDEVTYPEJOYSTICK_GAMEPAD}
  706. DIDEVTYPEJOYSTICK_RUDDER = 5;
  707. {$EXTERNALSYM DIDEVTYPEJOYSTICK_RUDDER}
  708. DIDEVTYPEJOYSTICK_WHEEL = 6;
  709. {$EXTERNALSYM DIDEVTYPEJOYSTICK_WHEEL}
  710. DIDEVTYPEJOYSTICK_HEADTRACKER = 7;
  711. {$EXTERNALSYM DIDEVTYPEJOYSTICK_HEADTRACKER}
  712. {$ELSE}
  713. DI8DEVTYPEMOUSE_UNKNOWN = 1;
  714. {$EXTERNALSYM DI8DEVTYPEMOUSE_UNKNOWN}
  715. DI8DEVTYPEMOUSE_TRADITIONAL = 2;
  716. {$EXTERNALSYM DI8DEVTYPEMOUSE_TRADITIONAL}
  717. DI8DEVTYPEMOUSE_FINGERSTICK = 3;
  718. {$EXTERNALSYM DI8DEVTYPEMOUSE_FINGERSTICK}
  719. DI8DEVTYPEMOUSE_TOUCHPAD = 4;
  720. {$EXTERNALSYM DI8DEVTYPEMOUSE_TOUCHPAD}
  721. DI8DEVTYPEMOUSE_TRACKBALL = 5;
  722. {$EXTERNALSYM DI8DEVTYPEMOUSE_TRACKBALL}
  723. DI8DEVTYPEMOUSE_ABSOLUTE = 6;
  724. {$EXTERNALSYM DI8DEVTYPEMOUSE_ABSOLUTE}
  725. DI8DEVTYPEKEYBOARD_UNKNOWN = 0;
  726. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_UNKNOWN}
  727. DI8DEVTYPEKEYBOARD_PCXT = 1;
  728. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_PCXT}
  729. DI8DEVTYPEKEYBOARD_OLIVETTI = 2;
  730. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_OLIVETTI}
  731. DI8DEVTYPEKEYBOARD_PCAT = 3;
  732. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_PCAT}
  733. DI8DEVTYPEKEYBOARD_PCENH = 4;
  734. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_PCENH}
  735. DI8DEVTYPEKEYBOARD_NOKIA1050 = 5;
  736. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_NOKIA1050}
  737. DI8DEVTYPEKEYBOARD_NOKIA9140 = 6;
  738. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_NOKIA9140}
  739. DI8DEVTYPEKEYBOARD_NEC98 = 7;
  740. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_NEC98}
  741. DI8DEVTYPEKEYBOARD_NEC98LAPTOP = 8;
  742. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_NEC98LAPTOP}
  743. DI8DEVTYPEKEYBOARD_NEC98106 = 9;
  744. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_NEC98106}
  745. DI8DEVTYPEKEYBOARD_JAPAN106 = 10;
  746. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_JAPAN106}
  747. DI8DEVTYPEKEYBOARD_JAPANAX = 11;
  748. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_JAPANAX}
  749. DI8DEVTYPEKEYBOARD_J3100 = 12;
  750. {$EXTERNALSYM DI8DEVTYPEKEYBOARD_J3100}
  751. DI8DEVTYPE_LIMITEDGAMESUBTYPE = 1;
  752. {$EXTERNALSYM DI8DEVTYPE_LIMITEDGAMESUBTYPE}
  753. DI8DEVTYPEJOYSTICK_LIMITED = DI8DEVTYPE_LIMITEDGAMESUBTYPE;
  754. {$EXTERNALSYM DI8DEVTYPEJOYSTICK_LIMITED}
  755. DI8DEVTYPEJOYSTICK_STANDARD = 2;
  756. {$EXTERNALSYM DI8DEVTYPEJOYSTICK_STANDARD}
  757. DI8DEVTYPEGAMEPAD_LIMITED = DI8DEVTYPE_LIMITEDGAMESUBTYPE;
  758. {$EXTERNALSYM DI8DEVTYPEGAMEPAD_LIMITED}
  759. DI8DEVTYPEGAMEPAD_STANDARD = 2;
  760. {$EXTERNALSYM DI8DEVTYPEGAMEPAD_STANDARD}
  761. DI8DEVTYPEGAMEPAD_TILT = 3;
  762. {$EXTERNALSYM DI8DEVTYPEGAMEPAD_TILT}
  763. DI8DEVTYPEDRIVING_LIMITED = DI8DEVTYPE_LIMITEDGAMESUBTYPE;
  764. {$EXTERNALSYM DI8DEVTYPEDRIVING_LIMITED}
  765. DI8DEVTYPEDRIVING_COMBINEDPEDALS = 2;
  766. {$EXTERNALSYM DI8DEVTYPEDRIVING_COMBINEDPEDALS}
  767. DI8DEVTYPEDRIVING_DUALPEDALS = 3;
  768. {$EXTERNALSYM DI8DEVTYPEDRIVING_DUALPEDALS}
  769. DI8DEVTYPEDRIVING_THREEPEDALS = 4;
  770. {$EXTERNALSYM DI8DEVTYPEDRIVING_THREEPEDALS}
  771. DI8DEVTYPEDRIVING_HANDHELD = 5;
  772. {$EXTERNALSYM DI8DEVTYPEDRIVING_HANDHELD}
  773. DI8DEVTYPEFLIGHT_LIMITED = DI8DEVTYPE_LIMITEDGAMESUBTYPE;
  774. {$EXTERNALSYM DI8DEVTYPEFLIGHT_LIMITED}
  775. DI8DEVTYPEFLIGHT_STICK = 2;
  776. {$EXTERNALSYM DI8DEVTYPEFLIGHT_STICK}
  777. DI8DEVTYPEFLIGHT_YOKE = 3;
  778. {$EXTERNALSYM DI8DEVTYPEFLIGHT_YOKE}
  779. DI8DEVTYPEFLIGHT_RC = 4;
  780. {$EXTERNALSYM DI8DEVTYPEFLIGHT_RC}
  781. DI8DEVTYPE1STPERSON_LIMITED = DI8DEVTYPE_LIMITEDGAMESUBTYPE;
  782. {$EXTERNALSYM DI8DEVTYPE1STPERSON_LIMITED}
  783. DI8DEVTYPE1STPERSON_UNKNOWN = 2;
  784. {$EXTERNALSYM DI8DEVTYPE1STPERSON_UNKNOWN}
  785. DI8DEVTYPE1STPERSON_SIXDOF = 3;
  786. {$EXTERNALSYM DI8DEVTYPE1STPERSON_SIXDOF}
  787. DI8DEVTYPE1STPERSON_SHOOTER = 4;
  788. {$EXTERNALSYM DI8DEVTYPE1STPERSON_SHOOTER}
  789. DI8DEVTYPESCREENPTR_UNKNOWN = 2;
  790. {$EXTERNALSYM DI8DEVTYPESCREENPTR_UNKNOWN}
  791. DI8DEVTYPESCREENPTR_LIGHTGUN = 3;
  792. {$EXTERNALSYM DI8DEVTYPESCREENPTR_LIGHTGUN}
  793. DI8DEVTYPESCREENPTR_LIGHTPEN = 4;
  794. {$EXTERNALSYM DI8DEVTYPESCREENPTR_LIGHTPEN}
  795. DI8DEVTYPESCREENPTR_TOUCH = 5;
  796. {$EXTERNALSYM DI8DEVTYPESCREENPTR_TOUCH}
  797. DI8DEVTYPEREMOTE_UNKNOWN = 2;
  798. {$EXTERNALSYM DI8DEVTYPEREMOTE_UNKNOWN}
  799. DI8DEVTYPEDEVICECTRL_UNKNOWN = 2;
  800. {$EXTERNALSYM DI8DEVTYPEDEVICECTRL_UNKNOWN}
  801. DI8DEVTYPEDEVICECTRL_COMMSSELECTION = 3;
  802. {$EXTERNALSYM DI8DEVTYPEDEVICECTRL_COMMSSELECTION}
  803. DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED = 4;
  804. {$EXTERNALSYM DI8DEVTYPEDEVICECTRL_COMMSSELECTION_HARDWIRED}
  805. DI8DEVTYPESUPPLEMENTAL_UNKNOWN = 2;
  806. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_UNKNOWN}
  807. DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER = 3;
  808. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_2NDHANDCONTROLLER}
  809. DI8DEVTYPESUPPLEMENTAL_HEADTRACKER = 4;
  810. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_HEADTRACKER}
  811. DI8DEVTYPESUPPLEMENTAL_HANDTRACKER = 5;
  812. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_HANDTRACKER}
  813. DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE = 6;
  814. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_SHIFTSTICKGATE}
  815. DI8DEVTYPESUPPLEMENTAL_SHIFTER = 7;
  816. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_SHIFTER}
  817. DI8DEVTYPESUPPLEMENTAL_THROTTLE = 8;
  818. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_THROTTLE}
  819. DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE = 9;
  820. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_SPLITTHROTTLE}
  821. DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS = 10;
  822. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_COMBINEDPEDALS}
  823. DI8DEVTYPESUPPLEMENTAL_DUALPEDALS = 11;
  824. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_DUALPEDALS}
  825. DI8DEVTYPESUPPLEMENTAL_THREEPEDALS = 12;
  826. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_THREEPEDALS}
  827. DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS = 13;
  828. {$EXTERNALSYM DI8DEVTYPESUPPLEMENTAL_RUDDERPEDALS}
  829. {$ENDIF} (* DIRECTINPUT_VERSION <= 0x700 *)
  830. // #define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType)
  831. function GET_DIDEVICE_TYPE(dwDevType: DWORD): Byte;
  832. {$EXTERNALSYM GET_DIDEVICE_TYPE}
  833. // #define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType)
  834. function GET_DIDEVICE_SUBTYPE(dwDevType: DWORD): Byte;
  835. {$EXTERNALSYM GET_DIDEVICE_SUBTYPE}
  836. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  837. (* This structure is defined for DirectX 3.0 compatibility *)
  838. type
  839. PDIDevCapsDX3 = ^TDIDevCapsDX3;
  840. DIDEVCAPS_DX3 = packed record
  841. dwSize: DWORD;
  842. dwFlags: DWORD;
  843. dwDevType: DWORD;
  844. dwAxes: DWORD;
  845. dwButtons: DWORD;
  846. dwPOVs: DWORD;
  847. end;
  848. {$EXTERNALSYM DIDEVCAPS_DX3}
  849. TDIDevCapsDX3 = DIDEVCAPS_DX3;
  850. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  851. PDIDevCaps = ^TDIDevCaps;
  852. DIDEVCAPS = packed record
  853. dwSize: DWORD;
  854. dwFlags: DWORD;
  855. dwDevType: DWORD;
  856. dwAxes: DWORD;
  857. dwButtons: DWORD;
  858. dwPOVs: DWORD;
  859. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  860. dwFFSamplePeriod: DWORD;
  861. dwFFMinTimeResolution: DWORD;
  862. dwFirmwareRevision: DWORD;
  863. dwHardwareRevision: DWORD;
  864. dwFFDriverVersion: DWORD;
  865. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  866. end;
  867. {$EXTERNALSYM DIDEVCAPS}
  868. TDIDevCaps = DIDEVCAPS;
  869. const
  870. DIDC_ATTACHED = $00000001;
  871. {$EXTERNALSYM DIDC_ATTACHED}
  872. DIDC_POLLEDDEVICE = $00000002;
  873. {$EXTERNALSYM DIDC_POLLEDDEVICE}
  874. DIDC_EMULATED = $00000004;
  875. {$EXTERNALSYM DIDC_EMULATED}
  876. DIDC_POLLEDDATAFORMAT = $00000008;
  877. {$EXTERNALSYM DIDC_POLLEDDATAFORMAT}
  878. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  879. DIDC_FORCEFEEDBACK = $00000100;
  880. {$EXTERNALSYM DIDC_FORCEFEEDBACK}
  881. DIDC_FFATTACK = $00000200;
  882. {$EXTERNALSYM DIDC_FFATTACK}
  883. DIDC_FFFADE = $00000400;
  884. {$EXTERNALSYM DIDC_FFFADE}
  885. DIDC_SATURATION = $00000800;
  886. {$EXTERNALSYM DIDC_SATURATION}
  887. DIDC_POSNEGCOEFFICIENTS = $00001000;
  888. {$EXTERNALSYM DIDC_POSNEGCOEFFICIENTS}
  889. DIDC_POSNEGSATURATION = $00002000;
  890. {$EXTERNALSYM DIDC_POSNEGSATURATION}
  891. DIDC_DEADBAND = $00004000;
  892. {$EXTERNALSYM DIDC_DEADBAND}
  893. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  894. DIDC_STARTDELAY = $00008000;
  895. {$EXTERNALSYM DIDC_STARTDELAY}
  896. {$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
  897. DIDC_ALIAS = $00010000;
  898. {$EXTERNALSYM DIDC_ALIAS}
  899. DIDC_PHANTOM = $00020000;
  900. {$EXTERNALSYM DIDC_PHANTOM}
  901. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
  902. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  903. DIDC_HIDDEN = $00040000;
  904. {$EXTERNALSYM DIDC_HIDDEN}
  905. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  906. DIDFT_ALL = $00000000;
  907. {$EXTERNALSYM DIDFT_ALL}
  908. DIDFT_RELAXIS = $00000001;
  909. {$EXTERNALSYM DIDFT_RELAXIS}
  910. DIDFT_ABSAXIS = $00000002;
  911. {$EXTERNALSYM DIDFT_ABSAXIS}
  912. DIDFT_AXIS = $00000003;
  913. {$EXTERNALSYM DIDFT_AXIS}
  914. DIDFT_PSHBUTTON = $00000004;
  915. {$EXTERNALSYM DIDFT_PSHBUTTON}
  916. DIDFT_TGLBUTTON = $00000008;
  917. {$EXTERNALSYM DIDFT_TGLBUTTON}
  918. DIDFT_BUTTON = $0000000C;
  919. {$EXTERNALSYM DIDFT_BUTTON}
  920. DIDFT_POV = $00000010;
  921. {$EXTERNALSYM DIDFT_POV}
  922. DIDFT_COLLECTION = $00000040;
  923. {$EXTERNALSYM DIDFT_COLLECTION}
  924. DIDFT_NODATA = $00000080;
  925. {$EXTERNALSYM DIDFT_NODATA}
  926. DIDFT_ANYINSTANCE = $00FFFF00;
  927. {$EXTERNALSYM DIDFT_ANYINSTANCE}
  928. DIDFT_INSTANCEMASK = DIDFT_ANYINSTANCE;
  929. {$EXTERNALSYM DIDFT_INSTANCEMASK}
  930. // #define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8)
  931. function DIDFT_MAKEINSTANCE(n: Cardinal): Cardinal;
  932. {$EXTERNALSYM DIDFT_MAKEINSTANCE}
  933. // #define DIDFT_GETTYPE(n) LOBYTE(n)
  934. function DIDFT_GETTYPE(n: Cardinal): Byte;
  935. {$EXTERNALSYM DIDFT_GETTYPE}
  936. // #define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8)
  937. function DIDFT_GETINSTANCE(n: Cardinal): Cardinal;
  938. {$EXTERNALSYM DIDFT_GETINSTANCE}
  939. const
  940. DIDFT_FFACTUATOR = $01000000;
  941. {$EXTERNALSYM DIDFT_FFACTUATOR}
  942. DIDFT_FFEFFECTTRIGGER = $02000000;
  943. {$EXTERNALSYM DIDFT_FFEFFECTTRIGGER}
  944. {$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
  945. DIDFT_OUTPUT = $10000000;
  946. {$EXTERNALSYM DIDFT_OUTPUT}
  947. DIDFT_VENDORDEFINED = $04000000;
  948. {$EXTERNALSYM DIDFT_VENDORDEFINED}
  949. DIDFT_ALIAS = $08000000;
  950. {$EXTERNALSYM DIDFT_ALIAS}
  951. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
  952. // #define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8)
  953. function DIDFT_ENUMCOLLECTION(n: Cardinal): Cardinal;
  954. {$EXTERNALSYM DIDFT_ENUMCOLLECTION}
  955. const
  956. DIDFT_NOCOLLECTION = $00FFFF00;
  957. {$EXTERNALSYM DIDFT_NOCOLLECTION}
  958. type
  959. PDIObjectDataFormat = ^TDIObjectDataFormat;
  960. _DIOBJECTDATAFORMAT = packed record
  961. pguid: PGUID;
  962. dwOfs: DWORD;
  963. dwType: DWORD;
  964. dwFlags: DWORD;
  965. end;
  966. {$EXTERNALSYM _DIOBJECTDATAFORMAT}
  967. DIOBJECTDATAFORMAT = _DIOBJECTDATAFORMAT;
  968. {$EXTERNALSYM DIOBJECTDATAFORMAT}
  969. TDIObjectDataFormat = _DIOBJECTDATAFORMAT;
  970. PDIDataFormat = ^TDIDataFormat;
  971. _DIDATAFORMAT = packed record
  972. dwSize: DWORD;
  973. dwObjSize: DWORD;
  974. dwFlags: DWORD;
  975. dwDataSize: DWORD;
  976. dwNumObjs: DWORD;
  977. rgodf: PDIObjectDataFormat;
  978. end;
  979. {$EXTERNALSYM _DIDATAFORMAT}
  980. DIDATAFORMAT = _DIDATAFORMAT;
  981. {$EXTERNALSYM DIDATAFORMAT}
  982. TDIDataFormat = _DIDATAFORMAT;
  983. const
  984. DIDF_ABSAXIS = $00000001;
  985. {$EXTERNALSYM DIDF_ABSAXIS}
  986. DIDF_RELAXIS = $00000002;
  987. {$EXTERNALSYM DIDF_RELAXIS}
  988. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION > 0x0700) *)
  989. type
  990. PDIActionA = ^TDIActionA;
  991. PDIActionW = ^TDIActionW;
  992. PDIAction = PDIActionA;
  993. _DIACTIONA = packed record
  994. uAppData: Pointer;
  995. dwSemantic: DWORD;
  996. dwFlags: DWORD;
  997. case Byte of
  998. 0: (
  999. lptszActionName: PAnsiChar;
  1000. guidInstance: TGUID;
  1001. dwObjID: DWORD;
  1002. dwHow: DWORD;
  1003. );
  1004. 1: (
  1005. uResIdString: LongWord;
  1006. );
  1007. end;
  1008. {$EXTERNALSYM _DIACTIONA}
  1009. _DIACTIONW = packed record
  1010. uAppData: Pointer;
  1011. dwSemantic: DWORD;
  1012. dwFlags: DWORD;
  1013. case Byte of
  1014. 0: (
  1015. lptszActionName: PWideChar;
  1016. guidInstance: TGUID;
  1017. dwObjID: DWORD;
  1018. dwHow: DWORD;
  1019. );
  1020. 1: (
  1021. uResIdString: LongWord;
  1022. );
  1023. end;
  1024. {$EXTERNALSYM _DIACTIONW}
  1025. _DIACTION = _DIACTIONA;
  1026. {$EXTERNALSYM _DIACTION}
  1027. DIACTIONA = _DIACTIONA;
  1028. {$EXTERNALSYM DIACTIONA}
  1029. DIACTIONW = _DIACTIONW;
  1030. {$EXTERNALSYM DIACTIONW}
  1031. DIACTION = DIACTIONA;
  1032. {$EXTERNALSYM DIACTION}
  1033. TDIActionA = _DIACTIONA;
  1034. TDIActionW = _DIACTIONW;
  1035. TDIAction = TDIActionA;
  1036. const
  1037. DIA_FORCEFEEDBACK = $00000001;
  1038. {$EXTERNALSYM DIA_FORCEFEEDBACK}
  1039. DIA_APPMAPPED = $00000002;
  1040. {$EXTERNALSYM DIA_APPMAPPED}
  1041. DIA_APPNOMAP = $00000004;
  1042. {$EXTERNALSYM DIA_APPNOMAP}
  1043. DIA_NORANGE = $00000008;
  1044. {$EXTERNALSYM DIA_NORANGE}
  1045. DIA_APPFIXED = $00000010;
  1046. {$EXTERNALSYM DIA_APPFIXED}
  1047. DIAH_UNMAPPED = $00000000;
  1048. {$EXTERNALSYM DIAH_UNMAPPED}
  1049. DIAH_USERCONFIG = $00000001;
  1050. {$EXTERNALSYM DIAH_USERCONFIG}
  1051. DIAH_APPREQUESTED = $00000002;
  1052. {$EXTERNALSYM DIAH_APPREQUESTED}
  1053. DIAH_HWAPP = $00000004;
  1054. {$EXTERNALSYM DIAH_HWAPP}
  1055. DIAH_HWDEFAULT = $00000008;
  1056. {$EXTERNALSYM DIAH_HWDEFAULT}
  1057. DIAH_DEFAULT = $00000020;
  1058. {$EXTERNALSYM DIAH_DEFAULT}
  1059. DIAH_ERROR = $80000000;
  1060. {$EXTERNALSYM DIAH_ERROR}
  1061. type
  1062. PDIActionFormatA = ^TDIActionFormatA;
  1063. PDIActionFormatW = ^TDIActionFormatW;
  1064. PDIActionFormat = PDIActionFormatA;
  1065. _DIACTIONFORMATA = packed record
  1066. dwSize : DWORD;
  1067. dwActionSize : DWORD;
  1068. dwDataSize : DWORD;
  1069. dwNumActions : DWORD;
  1070. rgoAction : PDIActionA;
  1071. guidActionMap : TGUID;
  1072. dwGenre : DWORD;
  1073. dwBufferSize : DWORD;
  1074. lAxisMin : Longint;
  1075. lAxisMax : Longint;
  1076. hInstString : THandle;
  1077. ftTimeStamp : TFileTime;
  1078. dwCRC : DWORD;
  1079. tszActionMap : array [0..MAX_PATH-1] of AnsiChar;
  1080. end;
  1081. {$EXTERNALSYM _DIACTIONFORMATA}
  1082. _DIACTIONFORMATW = packed record
  1083. dwSize : DWORD;
  1084. dwActionSize : DWORD;
  1085. dwDataSize : DWORD;
  1086. dwNumActions : DWORD;
  1087. rgoAction : PDIActionW;
  1088. guidActionMap : TGUID;
  1089. dwGenre : DWORD;
  1090. dwBufferSize : DWORD;
  1091. lAxisMin : Longint;
  1092. lAxisMax : Longint;
  1093. hInstString : THandle;
  1094. ftTimeStamp : TFileTime;
  1095. dwCRC : DWORD;
  1096. tszActionMap : array [0..MAX_PATH-1] of WideChar;
  1097. end;
  1098. {$EXTERNALSYM _DIACTIONFORMATW}
  1099. _DIACTIONFORMAT = _DIACTIONFORMATA;
  1100. {$EXTERNALSYM _DIACTIONFORMAT}
  1101. DIACTIONFORMATA = _DIACTIONFORMATA;
  1102. {$EXTERNALSYM DIACTIONFORMATA}
  1103. DIACTIONFORMATW = _DIACTIONFORMATW;
  1104. {$EXTERNALSYM DIACTIONFORMATW}
  1105. DIACTIONFORMAT = DIACTIONFORMATA;
  1106. {$EXTERNALSYM DIACTIONFORMAT}
  1107. TDIActionFormatA = _DIACTIONFORMATA;
  1108. TDIActionFormatW = _DIACTIONFORMATW;
  1109. TDIActionFormat = TDIActionFormatA;
  1110. const
  1111. DIAFTS_NEWDEVICELOW = $FFFFFFFF;
  1112. {$EXTERNALSYM DIAFTS_NEWDEVICELOW}
  1113. DIAFTS_NEWDEVICEHIGH = $FFFFFFFF;
  1114. {$EXTERNALSYM DIAFTS_NEWDEVICEHIGH}
  1115. DIAFTS_UNUSEDDEVICELOW = $00000000;
  1116. {$EXTERNALSYM DIAFTS_UNUSEDDEVICELOW}
  1117. DIAFTS_UNUSEDDEVICEHIGH = $00000000;
  1118. {$EXTERNALSYM DIAFTS_UNUSEDDEVICEHIGH}
  1119. DIDBAM_DEFAULT = $00000000;
  1120. {$EXTERNALSYM DIDBAM_DEFAULT}
  1121. DIDBAM_PRESERVE = $00000001;
  1122. {$EXTERNALSYM DIDBAM_PRESERVE}
  1123. DIDBAM_INITIALIZE = $00000002;
  1124. {$EXTERNALSYM DIDBAM_INITIALIZE}
  1125. DIDBAM_HWDEFAULTS = $00000004;
  1126. {$EXTERNALSYM DIDBAM_HWDEFAULTS}
  1127. DIDSAM_DEFAULT = $00000000;
  1128. {$EXTERNALSYM DIDSAM_DEFAULT}
  1129. DIDSAM_NOUSER = $00000001;
  1130. {$EXTERNALSYM DIDSAM_NOUSER}
  1131. DIDSAM_FORCESAVE = $00000002;
  1132. {$EXTERNALSYM DIDSAM_FORCESAVE}
  1133. DICD_DEFAULT = $00000000;
  1134. {$EXTERNALSYM DICD_DEFAULT}
  1135. DICD_EDIT = $00000001;
  1136. {$EXTERNALSYM DICD_EDIT}
  1137. (*
  1138. * The following definition is normally defined in d3dtypes.h
  1139. *)
  1140. type
  1141. TD3DColor = DXTypes.TD3DColor;
  1142. {$NODEFINE TD3DColor}
  1143. {$HPPEMIT ''}
  1144. {$HPPEMIT '#ifndef D3DCOLOR_DEFINED_BCB'}
  1145. {$HPPEMIT 'typedef D3DCOLOR TD3DColor;'}
  1146. {$HPPEMIT '#define D3DCOLOR_DEFINED_BCB'}
  1147. {$HPPEMIT '#endif'}
  1148. {$HPPEMIT ''}
  1149. type
  1150. PDIColorSet = ^TDIColorSet;
  1151. _DICOLORSET = packed record
  1152. dwSize: DWORD;
  1153. cTextFore: TD3DColor;
  1154. cTextHighlight: TD3DColor;
  1155. cCalloutLine: TD3DColor;
  1156. cCalloutHighlight: TD3DColor;
  1157. cBorder: TD3DColor;
  1158. cControlFill: TD3DColor;
  1159. cHighlightFill: TD3DColor;
  1160. cAreaFill: TD3DColor;
  1161. end;
  1162. {$EXTERNALSYM _DICOLORSET}
  1163. DICOLORSET = _DICOLORSET;
  1164. {$EXTERNALSYM DICOLORSET}
  1165. TDIColorSet = _DICOLORSET;
  1166. PDIConfigureDevicesParamsA = ^TDIConfigureDevicesParamsA;
  1167. PDIConfigureDevicesParamsW = ^TDIConfigureDevicesParamsW;
  1168. PDIConfigureDevicesParams = PDIConfigureDevicesParamsA;
  1169. _DICONFIGUREDEVICESPARAMSA = packed record
  1170. dwSize: DWORD;
  1171. dwcUsers: DWORD;
  1172. lptszUserNames: PAnsiChar;
  1173. dwcFormats: DWORD;
  1174. lprgFormats: PDIActionFormatA;
  1175. hwnd: HWND;
  1176. dics: TDIColorSet;
  1177. lpUnkDDSTarget: IUnknown;
  1178. end;
  1179. {$EXTERNALSYM _DICONFIGUREDEVICESPARAMSA}
  1180. _DICONFIGUREDEVICESPARAMSW = packed record
  1181. dwSize: DWORD;
  1182. dwcUsers: DWORD;
  1183. lptszUserNames: PWideChar;
  1184. dwcFormats: DWORD;
  1185. lprgFormats: PDIActionFormatW;
  1186. hwnd: HWND;
  1187. dics: TDIColorSet;
  1188. lpUnkDDSTarget: IUnknown;
  1189. end;
  1190. {$EXTERNALSYM _DICONFIGUREDEVICESPARAMSW}
  1191. _DICONFIGUREDEVICESPARAMS = _DICONFIGUREDEVICESPARAMSA;
  1192. {$EXTERNALSYM _DICONFIGUREDEVICESPARAMS}
  1193. DICONFIGUREDEVICESPARAMSA = _DICONFIGUREDEVICESPARAMSA;
  1194. {$EXTERNALSYM DICONFIGUREDEVICESPARAMSA}
  1195. DICONFIGUREDEVICESPARAMSW = _DICONFIGUREDEVICESPARAMSW;
  1196. {$EXTERNALSYM DICONFIGUREDEVICESPARAMSW}
  1197. DICONFIGUREDEVICESPARAMS = DICONFIGUREDEVICESPARAMSA;
  1198. {$EXTERNALSYM DICONFIGUREDEVICESPARAMS}
  1199. TDIConfigureDevicesParamsA = _DICONFIGUREDEVICESPARAMSA;
  1200. TDIConfigureDevicesParamsW = _DICONFIGUREDEVICESPARAMSW;
  1201. TDIConfigureDevicesParams = TDIConfigureDevicesParamsA;
  1202. const
  1203. DIDIFT_CONFIGURATION = $00000001;
  1204. {$EXTERNALSYM DIDIFT_CONFIGURATION}
  1205. DIDIFT_OVERLAY = $00000002;
  1206. {$EXTERNALSYM DIDIFT_OVERLAY}
  1207. DIDAL_CENTERED = $00000000;
  1208. {$EXTERNALSYM DIDAL_CENTERED}
  1209. DIDAL_LEFTALIGNED = $00000001;
  1210. {$EXTERNALSYM DIDAL_LEFTALIGNED}
  1211. DIDAL_RIGHTALIGNED = $00000002;
  1212. {$EXTERNALSYM DIDAL_RIGHTALIGNED}
  1213. DIDAL_MIDDLE = $00000000;
  1214. {$EXTERNALSYM DIDAL_MIDDLE}
  1215. DIDAL_TOPALIGNED = $00000004;
  1216. {$EXTERNALSYM DIDAL_TOPALIGNED}
  1217. DIDAL_BOTTOMALIGNED = $00000008;
  1218. {$EXTERNALSYM DIDAL_BOTTOMALIGNED}
  1219. type
  1220. PDIDeviceImageInfoA = ^TDIDeviceImageInfoA;
  1221. PDIDeviceImageInfoW = ^TDIDeviceImageInfoW;
  1222. PDIDeviceImageInfo = PDIDeviceImageInfoA;
  1223. _DIDEVICEIMAGEINFOA = packed record
  1224. tszImagePath: array [0..MAX_PATH-1] of AnsiChar;
  1225. dwFlags: DWORD;
  1226. // These are valid if DIDIFT_OVERLAY is present in dwFlags.
  1227. dwViewID: DWORD;
  1228. rcOverlay: TRect;
  1229. dwObjID: DWORD;
  1230. dwcValidPts: DWORD;
  1231. rgptCalloutLine: array [0..4] of TPoint;
  1232. rcCalloutRect: TRect;
  1233. dwTextAlign: DWORD;
  1234. end;
  1235. {$EXTERNALSYM _DIDEVICEIMAGEINFOA}
  1236. _DIDEVICEIMAGEINFOW = packed record
  1237. tszImagePath: array [0..MAX_PATH-1] of WideChar;
  1238. dwFlags: DWORD;
  1239. // These are valid if DIDIFT_OVERLAY is present in dwFlags.
  1240. dwViewID: DWORD;
  1241. rcOverlay: TRect;
  1242. dwObjID: DWORD;
  1243. dwcValidPts: DWORD;
  1244. rgptCalloutLine: array [0..4] of TPoint;
  1245. rcCalloutRect: TRect;
  1246. dwTextAlign: DWORD;
  1247. end;
  1248. {$EXTERNALSYM _DIDEVICEIMAGEINFOW}
  1249. _DIDEVICEIMAGEINFO = _DIDEVICEIMAGEINFOA;
  1250. {$EXTERNALSYM _DIDEVICEIMAGEINFO}
  1251. DIDEVICEIMAGEINFOA = _DIDEVICEIMAGEINFOA;
  1252. {$EXTERNALSYM DIDEVICEIMAGEINFOA}
  1253. DIDEVICEIMAGEINFOW = _DIDEVICEIMAGEINFOW;
  1254. {$EXTERNALSYM DIDEVICEIMAGEINFOW}
  1255. DIDEVICEIMAGEINFO = DIDEVICEIMAGEINFOA;
  1256. {$EXTERNALSYM DIDEVICEIMAGEINFO}
  1257. TDIDeviceImageInfoA = _DIDEVICEIMAGEINFOA;
  1258. TDIDeviceImageInfoW = _DIDEVICEIMAGEINFOW;
  1259. TDIDeviceImageInfo = TDIDeviceImageInfoA;
  1260. PDIDeviceImageInfoHeaderA = ^TDIDeviceImageInfoHeaderA;
  1261. PDIDeviceImageInfoHeaderW = ^TDIDeviceImageInfoHeaderW;
  1262. PDIDeviceImageInfoHeader = PDIDeviceImageInfoHeaderA;
  1263. _DIDEVICEIMAGEINFOHEADERA = packed record
  1264. dwSize: DWORD;
  1265. dwSizeImageInfo: DWORD;
  1266. dwcViews: DWORD;
  1267. dwcButtons: DWORD;
  1268. dwcAxes: DWORD;
  1269. dwcPOVs: DWORD;
  1270. dwBufferSize: DWORD;
  1271. dwBufferUsed: DWORD;
  1272. lprgImageInfoArray: PDIDeviceImageInfoA;
  1273. end;
  1274. {$EXTERNALSYM _DIDEVICEIMAGEINFOHEADERA}
  1275. _DIDEVICEIMAGEINFOHEADERW = packed record
  1276. dwSize: DWORD;
  1277. dwSizeImageInfo: DWORD;
  1278. dwcViews: DWORD;
  1279. dwcButtons: DWORD;
  1280. dwcAxes: DWORD;
  1281. dwcPOVs: DWORD;
  1282. dwBufferSize: DWORD;
  1283. dwBufferUsed: DWORD;
  1284. lprgImageInfoArray: PDIDeviceImageInfoW;
  1285. end;
  1286. {$EXTERNALSYM _DIDEVICEIMAGEINFOHEADERW}
  1287. _DIDEVICEIMAGEINFOHEADER = _DIDEVICEIMAGEINFOHEADERA;
  1288. {$EXTERNALSYM _DIDEVICEIMAGEINFOHEADER}
  1289. DIDEVICEIMAGEINFOHEADERA = _DIDEVICEIMAGEINFOHEADERA;
  1290. {$EXTERNALSYM _DIDEVICEIMAGEINFOHEADERA}
  1291. DIDEVICEIMAGEINFOHEADERW = _DIDEVICEIMAGEINFOHEADERW;
  1292. {$EXTERNALSYM _DIDEVICEIMAGEINFOHEADERW}
  1293. DIDEVICEIMAGEINFOHEADER = DIDEVICEIMAGEINFOHEADERA;
  1294. {$EXTERNALSYM _DIDEVICEIMAGEINFOHEADER}
  1295. TDIDeviceImageInfoHeaderA = _DIDEVICEIMAGEINFOHEADERA;
  1296. TDIDeviceImageInfoHeaderW = _DIDEVICEIMAGEINFOHEADERW;
  1297. TDIDeviceImageInfoHeader = TDIDeviceImageInfoHeaderA;
  1298. {$ENDIF} (* DIRECTINPUT_VERSION > 0x0700 *)
  1299. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  1300. (* These structures are defined for DirectX 3.0 compatibility *)
  1301. type
  1302. PDIDeviceObjectInstanceDX3A = ^TDIDeviceObjectInstanceDX3A;
  1303. PDIDeviceObjectInstanceDX3W = ^TDIDeviceObjectInstanceDX3W;
  1304. PDIDeviceObjectInstanceDX3 = PDIDeviceObjectInstanceDX3A;
  1305. DIDEVICEOBJECTINSTANCE_DX3A = packed record
  1306. dwSize: DWORD;
  1307. guidType: TGUID;
  1308. dwOfs: DWORD;
  1309. dwType: DWORD;
  1310. dwFlags: DWORD;
  1311. tszName: array [0..MAX_PATH-1] of AnsiChar;
  1312. end;
  1313. {$EXTERNALSYM DIDEVICEOBJECTINSTANCE_DX3A}
  1314. DIDEVICEOBJECTINSTANCE_DX3W = packed record
  1315. dwSize: DWORD;
  1316. guidType: TGUID;
  1317. dwOfs: DWORD;
  1318. dwType: DWORD;
  1319. dwFlags: DWORD;
  1320. tszName: array [0..MAX_PATH-1] of WideChar;
  1321. end;
  1322. {$EXTERNALSYM DIDEVICEOBJECTINSTANCE_DX3W}
  1323. DIDEVICEOBJECTINSTANCE_DX3 = DIDEVICEOBJECTINSTANCE_DX3A;
  1324. {$EXTERNALSYM DIDEVICEOBJECTINSTANCE_DX3}
  1325. TDIDeviceObjectInstanceDX3A = DIDEVICEOBJECTINSTANCE_DX3A;
  1326. TDIDeviceObjectInstanceDX3W = DIDEVICEOBJECTINSTANCE_DX3W;
  1327. TDIDeviceObjectInstanceDX3 = TDIDeviceObjectInstanceDX3A;
  1328. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  1329. type
  1330. PDIDeviceObjectInstanceA = ^TDIDeviceObjectInstanceA;
  1331. PDIDeviceObjectInstanceW = ^TDIDeviceObjectInstanceW;
  1332. PDIDeviceObjectInstance = PDIDeviceObjectInstanceA;
  1333. DIDEVICEOBJECTINSTANCEA = packed record
  1334. dwSize: DWORD;
  1335. guidType: TGUID;
  1336. dwOfs: DWORD;
  1337. dwType: DWORD;
  1338. dwFlags: DWORD;
  1339. tszName: array[0..MAX_PATH-1] of AnsiChar;
  1340. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  1341. dwFFMaxForce: DWORD;
  1342. dwFFForceResolution: DWORD;
  1343. wCollectionNumber: Word;
  1344. wDesignatorIndex: Word;
  1345. wUsagePage: Word;
  1346. wUsage: Word;
  1347. dwDimension: DWORD;
  1348. wExponent: Word;
  1349. wReportId: Word;
  1350. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  1351. end;
  1352. {$EXTERNALSYM DIDEVICEOBJECTINSTANCEA}
  1353. DIDEVICEOBJECTINSTANCEW = packed record
  1354. dwSize: DWORD;
  1355. guidType: TGUID;
  1356. dwOfs: DWORD;
  1357. dwType: DWORD;
  1358. dwFlags: DWORD;
  1359. tszName: array[0..MAX_PATH-1] of WideChar;
  1360. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  1361. dwFFMaxForce: DWORD;
  1362. dwFFForceResolution: DWORD;
  1363. wCollectionNumber: Word;
  1364. wDesignatorIndex: Word;
  1365. wUsagePage: Word;
  1366. wUsage: Word;
  1367. dwDimension: DWORD;
  1368. wExponent: Word;
  1369. wReportId: Word;
  1370. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  1371. end;
  1372. {$EXTERNALSYM DIDEVICEOBJECTINSTANCEW}
  1373. DIDEVICEOBJECTINSTANCE = DIDEVICEOBJECTINSTANCEA;
  1374. {$EXTERNALSYM DIDEVICEOBJECTINSTANCE}
  1375. TDIDeviceObjectInstanceA = DIDEVICEOBJECTINSTANCEA;
  1376. TDIDeviceObjectInstanceW = DIDEVICEOBJECTINSTANCEW;
  1377. TDIDeviceObjectInstance = TDIDeviceObjectInstanceA;
  1378. type
  1379. TDIEnumDeviceObjectsCallbackA = function (var lpddoi: TDIDeviceObjectInstanceA; pvRef : Pointer): BOOL; stdcall;
  1380. {$EXTERNALSYM TDIEnumDeviceObjectsCallbackA}
  1381. TDIEnumDeviceObjectsCallbackW = function (var lpddoi: TDIDeviceObjectInstanceW; pvRef : Pointer): BOOL; stdcall;
  1382. {$EXTERNALSYM TDIEnumDeviceObjectsCallbackW}
  1383. TDIEnumDeviceObjectsCallback = TDIEnumDeviceObjectsCallbackA;
  1384. {$EXTERNALSYM TDIEnumDeviceObjectsCallback}
  1385. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  1386. const
  1387. DIDOI_FFACTUATOR = $00000001;
  1388. {$EXTERNALSYM DIDOI_FFACTUATOR}
  1389. DIDOI_FFEFFECTTRIGGER = $00000002;
  1390. {$EXTERNALSYM DIDOI_FFEFFECTTRIGGER}
  1391. DIDOI_POLLED = $00008000;
  1392. {$EXTERNALSYM DIDOI_POLLED}
  1393. DIDOI_ASPECTPOSITION = $00000100;
  1394. {$EXTERNALSYM DIDOI_ASPECTPOSITION}
  1395. DIDOI_ASPECTVELOCITY = $00000200;
  1396. {$EXTERNALSYM DIDOI_ASPECTVELOCITY}
  1397. DIDOI_ASPECTACCEL = $00000300;
  1398. {$EXTERNALSYM DIDOI_ASPECTACCEL}
  1399. DIDOI_ASPECTFORCE = $00000400;
  1400. {$EXTERNALSYM DIDOI_ASPECTFORCE}
  1401. DIDOI_ASPECTMASK = $00000F00;
  1402. {$EXTERNALSYM DIDOI_ASPECTMASK}
  1403. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  1404. {$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
  1405. DIDOI_GUIDISUSAGE = $00010000;
  1406. {$EXTERNALSYM DIDOI_GUIDISUSAGE}
  1407. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
  1408. type
  1409. PDIPropHeader = ^TDIPropHeader;
  1410. DIPROPHEADER = packed record
  1411. dwSize: DWORD;
  1412. dwHeaderSize: DWORD;
  1413. dwObj: DWORD;
  1414. dwHow: DWORD;
  1415. end;
  1416. {$EXTERNALSYM DIPROPHEADER}
  1417. TDIPropHeader = DIPROPHEADER;
  1418. const
  1419. DIPH_DEVICE = 0;
  1420. {$EXTERNALSYM DIPH_DEVICE}
  1421. DIPH_BYOFFSET = 1;
  1422. {$EXTERNALSYM DIPH_BYOFFSET}
  1423. DIPH_BYID = 2;
  1424. {$EXTERNALSYM DIPH_BYID}
  1425. {$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
  1426. DIPH_BYUSAGE = 3;
  1427. {$EXTERNALSYM DIPH_BYUSAGE}
  1428. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
  1429. {$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
  1430. // #define DIMAKEUSAGEDWORD(UsagePage, Usage) \
  1431. // (DWORD)MAKELONG(Usage, UsagePage)
  1432. function DIMAKEUSAGEDWORD(UsagePage, Usage: Word): DWORD;
  1433. {$EXTERNALSYM DIMAKEUSAGEDWORD}
  1434. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
  1435. type
  1436. PDIPropDWord = ^TDIPropDWord;
  1437. DIPROPDWORD = packed record
  1438. diph: TDIPropHeader;
  1439. dwData: DWORD;
  1440. end;
  1441. {$EXTERNALSYM DIPROPDWORD}
  1442. TDIPropDWord = DIPROPDWORD;
  1443. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  1444. PDIPropPointer = ^TDIPropPointer;
  1445. DIPROPPOINTER = packed record
  1446. diph: TDIPropHeader;
  1447. uData: Pointer;
  1448. end;
  1449. {$EXTERNALSYM DIPROPPOINTER}
  1450. TDIPropPointer = DIPROPPOINTER;
  1451. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  1452. PDIPropRange = ^TDIPropRange;
  1453. DIPROPRANGE = packed record
  1454. diph: TDIPropHeader;
  1455. lMin: Longint;
  1456. lMax: Longint;
  1457. end;
  1458. {$EXTERNALSYM DIPROPRANGE}
  1459. TDIPropRange = DIPROPRANGE;
  1460. const
  1461. DIPROPRANGE_NOMIN = $80000000;
  1462. {$EXTERNALSYM DIPROPRANGE_NOMIN}
  1463. DIPROPRANGE_NOMAX = $7FFFFFFF;
  1464. {$EXTERNALSYM DIPROPRANGE_NOMAX}
  1465. {$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
  1466. type
  1467. PDIPropCal = ^TDIPropCal;
  1468. DIPROPCAL = packed record
  1469. diph: TDIPropHeader;
  1470. lMin: Longint;
  1471. lCenter: Longint;
  1472. lMax: Longint;
  1473. end;
  1474. {$EXTERNALSYM DIPROPCAL}
  1475. TDIPropCal = DIPROPCAL;
  1476. PDIPropCalPov = ^TDIPropCalPov;
  1477. DIPROPCALPOV = packed record
  1478. diph: TDIPropHeader;
  1479. lMin: array[0..4] of Longint;
  1480. lMax: array[0..4] of Longint;
  1481. end;
  1482. {$EXTERNALSYM DIPROPCALPOV}
  1483. TDIPropCalPov = DIPROPCALPOV;
  1484. PDIPropGuidAndPath = ^TDIPropGuidAndPath;
  1485. DIPROPGUIDANDPATH = packed record
  1486. diph: TDIPropHeader;
  1487. guidClass: TGUID;
  1488. wszPath: array[0..MAX_PATH-1] of WideChar;
  1489. end;
  1490. {$EXTERNALSYM DIPROPGUIDANDPATH}
  1491. TDIPropGuidAndPath = DIPROPGUIDANDPATH;
  1492. PDIPropString = ^TDIPropString;
  1493. DIPROPSTRING = packed record
  1494. diph: TDIPropHeader;
  1495. wsz: array[0..MAX_PATH-1] of WideChar;
  1496. end;
  1497. {$EXTERNALSYM DIPROPSTRING}
  1498. TDIPropString = DIPROPSTRING;
  1499. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
  1500. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  1501. const
  1502. MAXCPOINTSNUM = 8;
  1503. {$EXTERNALSYM MAXCPOINTSNUM}
  1504. type
  1505. PCPoint = ^TCPoint;
  1506. _CPOINT = packed record
  1507. lP: Longint; // raw value
  1508. dwLog: DWORD; // logical_value / max_logical_value * 10000
  1509. end;
  1510. {$EXTERNALSYM _CPOINT}
  1511. CPOINT = _CPOINT;
  1512. {$EXTERNALSYM CPOINT}
  1513. TCPoint = _CPOINT;
  1514. PDIPropCPoints = ^TDIPropCPoints;
  1515. DIPROPCPOINTS = packed record
  1516. diph: TDIPropHeader;
  1517. dwCPointsNum: DWORD;
  1518. cp: array[0..MAXCPOINTSNUM-1] of TCPoint;
  1519. end;
  1520. {$EXTERNALSYM DIPROPCPOINTS}
  1521. TDIPropCPoints = DIPROPCPOINTS;
  1522. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  1523. // #define MAKEDIPROP(prop) (*(const GUID *)(prop))
  1524. type
  1525. MAKEDIPROP = PGUID;
  1526. {$EXTERNALSYM MAKEDIPROP}
  1527. const
  1528. DIPROP_BUFFERSIZE = MAKEDIPROP(1);
  1529. {$EXTERNALSYM DIPROP_BUFFERSIZE}
  1530. DIPROP_AXISMODE = MAKEDIPROP(2);
  1531. {$EXTERNALSYM DIPROP_AXISMODE}
  1532. DIPROPAXISMODE_ABS = 0;
  1533. {$EXTERNALSYM DIPROPAXISMODE_ABS}
  1534. DIPROPAXISMODE_REL = 1;
  1535. {$EXTERNALSYM DIPROPAXISMODE_REL}
  1536. DIPROP_GRANULARITY = MAKEDIPROP(3);
  1537. {$EXTERNALSYM DIPROP_GRANULARITY}
  1538. DIPROP_RANGE = MAKEDIPROP(4);
  1539. {$EXTERNALSYM DIPROP_RANGE}
  1540. DIPROP_DEADZONE = MAKEDIPROP(5);
  1541. {$EXTERNALSYM DIPROP_DEADZONE}
  1542. DIPROP_SATURATION = MAKEDIPROP(6);
  1543. {$EXTERNALSYM DIPROP_SATURATION}
  1544. DIPROP_FFGAIN = MAKEDIPROP(7);
  1545. {$EXTERNALSYM DIPROP_FFGAIN}
  1546. DIPROP_FFLOAD = MAKEDIPROP(8);
  1547. {$EXTERNALSYM DIPROP_FFLOAD}
  1548. DIPROP_AUTOCENTER = MAKEDIPROP(9);
  1549. {$EXTERNALSYM DIPROP_AUTOCENTER}
  1550. DIPROPAUTOCENTER_OFF = 0;
  1551. {$EXTERNALSYM DIPROPAUTOCENTER_OFF}
  1552. DIPROPAUTOCENTER_ON = 1;
  1553. {$EXTERNALSYM DIPROPAUTOCENTER_ON}
  1554. DIPROP_CALIBRATIONMODE = MAKEDIPROP(10);
  1555. {$EXTERNALSYM DIPROP_CALIBRATIONMODE}
  1556. DIPROPCALIBRATIONMODE_COOKED = 0;
  1557. {$EXTERNALSYM DIPROPCALIBRATIONMODE_COOKED}
  1558. DIPROPCALIBRATIONMODE_RAW = 1;
  1559. {$EXTERNALSYM DIPROPCALIBRATIONMODE_RAW}
  1560. {$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
  1561. DIPROP_CALIBRATION = MAKEDIPROP(11);
  1562. {$EXTERNALSYM DIPROP_CALIBRATION}
  1563. DIPROP_GUIDANDPATH = MAKEDIPROP(12);
  1564. {$EXTERNALSYM DIPROP_GUIDANDPATH}
  1565. DIPROP_INSTANCENAME = MAKEDIPROP(13);
  1566. {$EXTERNALSYM DIPROP_INSTANCENAME}
  1567. DIPROP_PRODUCTNAME = MAKEDIPROP(14);
  1568. {$EXTERNALSYM DIPROP_PRODUCTNAME}
  1569. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
  1570. {$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x05b2) *)
  1571. DIPROP_JOYSTICKID = MAKEDIPROP(15);
  1572. {$EXTERNALSYM DIPROP_JOYSTICKID}
  1573. DIPROP_GETPORTDISPLAYNAME = MAKEDIPROP(16);
  1574. {$EXTERNALSYM DIPROP_GETPORTDISPLAYNAME}
  1575. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x05b2 *)
  1576. {$IFDEF DIRECTINPUT_VERSION_7} (* #if(DIRECTINPUT_VERSION >= 0x0700) *)
  1577. DIPROP_PHYSICALRANGE = MAKEDIPROP(18);
  1578. {$EXTERNALSYM DIPROP_PHYSICALRANGE}
  1579. DIPROP_LOGICALRANGE = MAKEDIPROP(19);
  1580. {$EXTERNALSYM DIPROP_LOGICALRANGE}
  1581. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  1582. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  1583. DIPROP_KEYNAME = MAKEDIPROP(20);
  1584. {$EXTERNALSYM DIPROP_KEYNAME}
  1585. DIPROP_CPOINTS = MAKEDIPROP(21);
  1586. {$EXTERNALSYM DIPROP_CPOINTS}
  1587. DIPROP_APPDATA = MAKEDIPROP(22);
  1588. {$EXTERNALSYM DIPROP_APPDATA}
  1589. DIPROP_SCANCODE = MAKEDIPROP(23);
  1590. {$EXTERNALSYM DIPROP_SCANCODE}
  1591. DIPROP_VIDPID = MAKEDIPROP(24);
  1592. {$EXTERNALSYM DIPROP_VIDPID}
  1593. DIPROP_USERNAME = MAKEDIPROP(25);
  1594. {$EXTERNALSYM DIPROP_USERNAME}
  1595. DIPROP_TYPENAME = MAKEDIPROP(26);
  1596. {$EXTERNALSYM DIPROP_TYPENAME}
  1597. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  1598. type
  1599. PDIDeviceObjectDataDX3 = ^TDIDeviceObjectDataDX3;
  1600. DIDEVICEOBJECTDATA_DX3 = packed record
  1601. dwOfs: DWORD;
  1602. dwData: DWORD;
  1603. dwTimeStamp: DWORD;
  1604. dwSequence: DWORD;
  1605. end;
  1606. {$EXTERNALSYM DIDEVICEOBJECTDATA_DX3}
  1607. TDIDeviceObjectDataDX3 = DIDEVICEOBJECTDATA_DX3;
  1608. PDIDeviceObjectData = ^TDIDeviceObjectData;
  1609. DIDEVICEOBJECTDATA = packed record
  1610. dwOfs: DWORD;
  1611. dwData: DWORD;
  1612. dwTimeStamp: DWORD;
  1613. dwSequence: DWORD;
  1614. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  1615. uAppData: Pointer;
  1616. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  1617. end;
  1618. {$EXTERNALSYM DIDEVICEOBJECTDATA}
  1619. TDIDeviceObjectData = DIDEVICEOBJECTDATA;
  1620. const
  1621. DIGDD_PEEK = $00000001;
  1622. {$EXTERNALSYM DIGDD_PEEK}
  1623. // #define DISEQUENCE_COMPARE(dwSequence1, cmp, dwSequence2) \
  1624. // ((int)((dwSequence1) - (dwSequence2)) cmp 0)
  1625. // Translator: This is not convertable to pascal
  1626. const
  1627. DISCL_EXCLUSIVE = $00000001;
  1628. {$EXTERNALSYM DISCL_EXCLUSIVE}
  1629. DISCL_NONEXCLUSIVE = $00000002;
  1630. {$EXTERNALSYM DISCL_NONEXCLUSIVE}
  1631. DISCL_FOREGROUND = $00000004;
  1632. {$EXTERNALSYM DISCL_FOREGROUND}
  1633. DISCL_BACKGROUND = $00000008;
  1634. {$EXTERNALSYM DISCL_BACKGROUND}
  1635. DISCL_NOWINKEY = $00000010;
  1636. {$EXTERNALSYM DISCL_NOWINKEY}
  1637. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  1638. (* These structures are defined for DirectX 3.0 compatibility *)
  1639. type
  1640. PDIDeviceInstanceDX3A = ^TDIDeviceInstanceDX3A;
  1641. PDIDeviceInstanceDX3W = ^TDIDeviceInstanceDX3W;
  1642. PDIDeviceInstanceDX3 = PDIDeviceInstanceDX3A;
  1643. DIDEVICEINSTANCE_DX3A = packed record
  1644. dwSize: DWORD;
  1645. guidInstance: TGUID;
  1646. guidProduct: TGUID;
  1647. dwDevType: DWORD;
  1648. tszInstanceName: array[0..MAX_PATH-1] of AnsiChar;
  1649. tszProductName: array[0..MAX_PATH-1] of AnsiChar;
  1650. end;
  1651. {$EXTERNALSYM DIDEVICEINSTANCE_DX3A}
  1652. DIDEVICEINSTANCE_DX3W = packed record
  1653. dwSize: DWORD;
  1654. guidInstance: TGUID;
  1655. guidProduct: TGUID;
  1656. dwDevType: DWORD;
  1657. tszInstanceName: array[0..MAX_PATH-1] of WideChar;
  1658. tszProductName: array[0..MAX_PATH-1] of WideChar;
  1659. end;
  1660. {$EXTERNALSYM DIDEVICEINSTANCE_DX3W}
  1661. DIDEVICEINSTANCE_DX3 = DIDEVICEINSTANCE_DX3A;
  1662. {$EXTERNALSYM DIDEVICEINSTANCE_DX3}
  1663. TDIDeviceInstanceDX3A = DIDEVICEINSTANCE_DX3A;
  1664. TDIDeviceInstanceDX3W = DIDEVICEINSTANCE_DX3W;
  1665. TDIDeviceInstanceDX3 = TDIDeviceInstanceDX3A;
  1666. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  1667. type
  1668. PDIDeviceInstanceA = ^TDIDeviceInstanceA;
  1669. PDIDeviceInstanceW = ^TDIDeviceInstanceW;
  1670. PDIDeviceInstance = PDIDeviceInstanceA;
  1671. DIDEVICEINSTANCEA = packed record
  1672. dwSize: DWORD;
  1673. guidInstance: TGUID;
  1674. guidProduct: TGUID;
  1675. dwDevType: DWORD;
  1676. tszInstanceName: array[0..MAX_PATH-1] of AnsiChar;
  1677. tszProductName: array[0..MAX_PATH-1] of AnsiChar;
  1678. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  1679. guidFFDriver: TGUID;
  1680. wUsagePage: Word;
  1681. wUsage: Word;
  1682. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  1683. end;
  1684. {$EXTERNALSYM DIDEVICEINSTANCEA}
  1685. DIDEVICEINSTANCEW = packed record
  1686. dwSize: DWORD;
  1687. guidInstance: TGUID;
  1688. guidProduct: TGUID;
  1689. dwDevType: DWORD;
  1690. tszInstanceName: array[0..MAX_PATH-1] of WideChar;
  1691. tszProductName: array[0..MAX_PATH-1] of WideChar;
  1692. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  1693. guidFFDriver: TGUID;
  1694. wUsagePage: Word;
  1695. wUsage: Word;
  1696. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  1697. end;
  1698. {$EXTERNALSYM DIDEVICEINSTANCEW}
  1699. DIDEVICEINSTANCE = DIDEVICEINSTANCEA;
  1700. {$EXTERNALSYM DIDEVICEINSTANCE}
  1701. TDIDeviceInstanceA = DIDEVICEINSTANCEA;
  1702. TDIDeviceInstanceW = DIDEVICEINSTANCEW;
  1703. TDIDeviceInstance = TDIDeviceInstanceA;
  1704. type
  1705. {$EXTERNALSYM IDirectInputDeviceA}
  1706. IDirectInputDeviceA = interface(IUnknown)
  1707. [SID_IDirectInputDeviceA]
  1708. (*** IDirectInputDeviceA methods ***)
  1709. function GetCapabilities(var lpDIDevCaps: TDIDevCaps): HResult; stdcall;
  1710. function EnumObjects(lpCallback: TDIEnumDeviceObjectsCallbackA; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  1711. function GetProperty(rguidProp: PGUID; var pdiph: TDIPropHeader): HResult; stdcall;
  1712. function SetProperty(rguidProp: PGUID; const pdiph: TDIPropHeader): HResult; stdcall;
  1713. function Acquire: HResult; stdcall;
  1714. function Unacquire: HResult; stdcall;
  1715. function GetDeviceState(cbData: DWORD; lpvData: Pointer): HResult; stdcall;
  1716. function GetDeviceData(cbObjectData: DWORD; rgdod: PDIDeviceObjectData; out pdwInOut: DWORD; dwFlags: DWORD): HResult; stdcall;
  1717. function SetDataFormat(var lpdf: TDIDataFormat): HResult; stdcall;
  1718. function SetEventNotification(hEvent: THandle): HResult; stdcall;
  1719. function SetCooperativeLevel(hwnd: HWND; dwFlags: DWORD): HResult; stdcall;
  1720. function GetObjectInfo(var pdidoi: TDIDeviceObjectInstanceA; dwObj, dwHow: DWORD): HResult; stdcall;
  1721. function GetDeviceInfo(var pdidi: TDIDeviceInstanceA): HResult; stdcall;
  1722. function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD): HResult; stdcall;
  1723. function Initialize(hinst: THandle; dwVersion: DWORD; const rguid: TGUID): HResult; stdcall;
  1724. end;
  1725. {$EXTERNALSYM IDirectInputDeviceW}
  1726. IDirectInputDeviceW = interface(IUnknown)
  1727. [SID_IDirectInputDeviceW]
  1728. (*** IDirectInputDeviceW methods ***)
  1729. function GetCapabilities(var lpDIDevCaps: TDIDevCaps): HResult; stdcall;
  1730. function EnumObjects(lpCallback: TDIEnumDeviceObjectsCallbackW; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  1731. function GetProperty(rguidProp: PGUID; var pdiph: TDIPropHeader): HResult; stdcall;
  1732. function SetProperty(rguidProp: PGUID; const pdiph: TDIPropHeader): HResult; stdcall;
  1733. function Acquire: HResult; stdcall;
  1734. function Unacquire: HResult; stdcall;
  1735. function GetDeviceState(cbData: DWORD; lpvData: Pointer): HResult; stdcall;
  1736. function GetDeviceData(cbObjectData: DWORD; rgdod: PDIDeviceObjectData; out pdwInOut: DWORD; dwFlags: DWORD): HResult; stdcall;
  1737. function SetDataFormat(var lpdf: TDIDataFormat): HResult; stdcall;
  1738. function SetEventNotification(hEvent: THandle): HResult; stdcall;
  1739. function SetCooperativeLevel(hwnd: HWND; dwFlags: DWORD): HResult; stdcall;
  1740. function GetObjectInfo(var pdidoi: TDIDeviceObjectInstanceW; dwObj, dwHow: DWORD): HResult; stdcall;
  1741. function GetDeviceInfo(var pdidi: TDIDeviceInstanceW): HResult; stdcall;
  1742. function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD): HResult; stdcall;
  1743. function Initialize(hinst: THandle; dwVersion: DWORD; const rguid: TGUID): HResult; stdcall;
  1744. end;
  1745. {$EXTERNALSYM IDirectInputDevice}
  1746. IDirectInputDevice = IDirectInputDeviceA;
  1747. type
  1748. IID_IDirectInputDevice = IDirectInputDevice;
  1749. {$EXTERNALSYM IID_IDirectInputDevice}
  1750. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  1751. const
  1752. DISFFC_RESET = $00000001;
  1753. {$EXTERNALSYM DISFFC_RESET}
  1754. DISFFC_STOPALL = $00000002;
  1755. {$EXTERNALSYM DISFFC_STOPALL}
  1756. DISFFC_PAUSE = $00000004;
  1757. {$EXTERNALSYM DISFFC_PAUSE}
  1758. DISFFC_CONTINUE = $00000008;
  1759. {$EXTERNALSYM DISFFC_CONTINUE}
  1760. DISFFC_SETACTUATORSON = $00000010;
  1761. {$EXTERNALSYM DISFFC_SETACTUATORSON}
  1762. DISFFC_SETACTUATORSOFF = $00000020;
  1763. {$EXTERNALSYM DISFFC_SETACTUATORSOFF}
  1764. DIGFFS_EMPTY = $00000001;
  1765. {$EXTERNALSYM DIGFFS_EMPTY}
  1766. DIGFFS_STOPPED = $00000002;
  1767. {$EXTERNALSYM DIGFFS_STOPPED}
  1768. DIGFFS_PAUSED = $00000004;
  1769. {$EXTERNALSYM DIGFFS_PAUSED}
  1770. DIGFFS_ACTUATORSON = $00000010;
  1771. {$EXTERNALSYM DIGFFS_ACTUATORSON}
  1772. DIGFFS_ACTUATORSOFF = $00000020;
  1773. {$EXTERNALSYM DIGFFS_ACTUATORSOFF}
  1774. DIGFFS_POWERON = $00000040;
  1775. {$EXTERNALSYM DIGFFS_POWERON}
  1776. DIGFFS_POWEROFF = $00000080;
  1777. {$EXTERNALSYM DIGFFS_POWEROFF}
  1778. DIGFFS_SAFETYSWITCHON = $00000100;
  1779. {$EXTERNALSYM DIGFFS_SAFETYSWITCHON}
  1780. DIGFFS_SAFETYSWITCHOFF = $00000200;
  1781. {$EXTERNALSYM DIGFFS_SAFETYSWITCHOFF}
  1782. DIGFFS_USERFFSWITCHON = $00000400;
  1783. {$EXTERNALSYM DIGFFS_USERFFSWITCHON}
  1784. DIGFFS_USERFFSWITCHOFF = $00000800;
  1785. {$EXTERNALSYM DIGFFS_USERFFSWITCHOFF}
  1786. DIGFFS_DEVICELOST = $80000000;
  1787. {$EXTERNALSYM DIGFFS_DEVICELOST}
  1788. type
  1789. PDIEffectInfoA = ^TDIEffectInfoA;
  1790. PDIEffectInfoW = ^TDIEffectInfoW;
  1791. PDIEffectInfo = PDIEffectInfoA;
  1792. DIEFFECTINFOA = packed record
  1793. dwSize: DWORD;
  1794. guid: TGUID;
  1795. dwEffType: DWORD;
  1796. dwStaticParams: DWORD;
  1797. dwDynamicParams: DWORD;
  1798. tszName: array[0..MAX_PATH-1] of AnsiChar;
  1799. end;
  1800. {$EXTERNALSYM DIEFFECTINFOA}
  1801. DIEFFECTINFOW = packed record
  1802. dwSize: DWORD;
  1803. guid: TGUID;
  1804. dwEffType: DWORD;
  1805. dwStaticParams: DWORD;
  1806. dwDynamicParams: DWORD;
  1807. tszName: array[0..MAX_PATH-1] of WideChar;
  1808. end;
  1809. {$EXTERNALSYM DIEFFECTINFOW}
  1810. DIEFFECTINFO = DIEFFECTINFOA;
  1811. {$EXTERNALSYM DIEFFECTINFO}
  1812. TDIEffectInfoA = DIEFFECTINFOA;
  1813. TDIEffectInfoW = DIEFFECTINFOW;
  1814. TDIEffectInfo = TDIEffectInfoA;
  1815. const
  1816. DISDD_CONTINUE = $00000001;
  1817. {$EXTERNALSYM DISDD_CONTINUE}
  1818. type
  1819. TDIEnumEffectsCallbackA = function (var pdei: TDIEffectInfoA; pvRef: Pointer): BOOL; stdcall;
  1820. {$NODEFINE TDIEnumEffectsCallbackA}
  1821. (*$HPPEMIT 'typedef LPDIENUMEFFECTSCALLBACKA TDIEnumEffectsCallbackA;'*)
  1822. TDIEnumEffectsCallbackW = function (var pdei: TDIEffectInfoW; pvRef: Pointer): BOOL; stdcall;
  1823. {$NODEFINE TDIEnumEffectsCallbackW}
  1824. (*$HPPEMIT 'typedef LPDIENUMEFFECTSCALLBACKW TDIEnumEffectsCallbackW;'*)
  1825. TDIEnumEffectsCallback = TDIEnumEffectsCallbackA;
  1826. {$NODEFINE TDIEnumEffectsCallback}
  1827. {$HPPEMIT 'typedef LPDIENUMEFFECTSINFILECALLBACK TDIEnumEffectsInFileCallback;'}
  1828. TDIEnumCreatedEffectObjectsCallback = function (peff : IDirectInputEffect; pvRev: Pointer): BOOL; stdcall;
  1829. {$NODEFINE TDIEnumCreatedEffectObjectsCallback}
  1830. {$HPPEMIT 'typedef LPDIENUMCREATEDEFFECTOBJECTSCALLBACK TDIEnumCreatedEffectObjectsCallback;'}
  1831. {$EXTERNALSYM IDirectInputDevice2A}
  1832. IDirectInputDevice2A = interface(IDirectInputDeviceA)
  1833. [SID_IDirectInputDevice2A]
  1834. (*** IDirectInputDevice2A methods ***)
  1835. function CreateEffect(const rguid: TGUID; lpeff: PDIEffect; out ppdeff: IDirectInputEffect; punkOuter: IUnknown): HResult; stdcall;
  1836. function EnumEffects(lpCallback: TDIEnumEffectsCallbackA; pvRef: Pointer; dwEffType: DWORD): HResult; stdcall;
  1837. function GetEffectInfo(var pdei: TDIEffectInfoA; const rguid: TGUID): HResult; stdcall;
  1838. function GetForceFeedbackState(out pdwOut: DWORD): HResult; stdcall;
  1839. function SendForceFeedbackCommand(dwFlags: DWORD): HResult; stdcall;
  1840. function EnumCreatedEffectObjects(lpCallback: TDIEnumCreatedEffectObjectsCallback; pvRef: Pointer; fl: DWORD): HResult; stdcall;
  1841. function Escape(var pesc: TDIEffEscape): HResult; stdcall;
  1842. function Poll: HResult; stdcall;
  1843. function SendDeviceData(cbObjectData: DWORD; rgdod: PDIDeviceObjectData; var pdwInOut: DWORD; fl: DWORD): HResult; stdcall;
  1844. end;
  1845. {$EXTERNALSYM IDirectInputDevice2W}
  1846. IDirectInputDevice2W = interface(IDirectInputDeviceW)
  1847. [SID_IDirectInputDevice2W]
  1848. (*** IDirectInputDevice2W methods ***)
  1849. function CreateEffect(const rguid: TGUID; lpeff: PDIEffect; out ppdeff: IDirectInputEffect; punkOuter: IUnknown): HResult; stdcall;
  1850. function EnumEffects(lpCallback: TDIEnumEffectsCallbackW; pvRef: Pointer; dwEffType: DWORD): HResult; stdcall;
  1851. function GetEffectInfo(var pdei: TDIEffectInfoW; const rguid: TGUID): HResult; stdcall;
  1852. function GetForceFeedbackState(out pdwOut: DWORD): HResult; stdcall;
  1853. function SendForceFeedbackCommand(dwFlags: DWORD): HResult; stdcall;
  1854. function EnumCreatedEffectObjects(lpCallback: TDIEnumCreatedEffectObjectsCallback; pvRef: Pointer; fl: DWORD): HResult; stdcall;
  1855. function Escape(var pesc: TDIEffEscape): HResult; stdcall;
  1856. function Poll: HResult; stdcall;
  1857. function SendDeviceData(cbObjectData: DWORD; rgdod: PDIDeviceObjectData; var pdwInOut: DWORD; fl: DWORD): HResult; stdcall;
  1858. end;
  1859. {$EXTERNALSYM IDirectInputDevice2}
  1860. IDirectInputDevice2 = IDirectInputDevice2A;
  1861. type
  1862. IID_IDirectInputDevice2 = IDirectInputDevice2;
  1863. {$EXTERNALSYM IID_IDirectInputDevice2}
  1864. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  1865. {$IFDEF DIRECTINPUT_VERSION_7} (* #if(DIRECTINPUT_VERSION >= 0x0700) *)
  1866. const
  1867. DIFEF_DEFAULT = $00000000;
  1868. {$EXTERNALSYM DIFEF_DEFAULT}
  1869. DIFEF_INCLUDENONSTANDARD = $00000001;
  1870. {$EXTERNALSYM DIFEF_INCLUDENONSTANDARD}
  1871. DIFEF_MODIFYIFNEEDED = $00000010;
  1872. {$EXTERNALSYM DIFEF_MODIFYIFNEEDED}
  1873. type
  1874. {$EXTERNALSYM IDirectInputDevice7A}
  1875. IDirectInputDevice7A = interface(IDirectInputDevice2A)
  1876. [SID_IDirectInputDevice7A]
  1877. (*** IDirectInputDevice7A methods ***)
  1878. function EnumEffectsInFile(lpszFileName: PAnsiChar; pec: TDIEnumEffectsInFileCallback; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  1879. function WriteEffectToFile(lpszFileName: PAnsiChar; dwEntries: DWORD; rgDiFileEft: PDIFileEffect; dwFlags: DWORD): HResult; stdcall;
  1880. end;
  1881. {$EXTERNALSYM IDirectInputDevice7W}
  1882. IDirectInputDevice7W = interface(IDirectInputDevice2W)
  1883. [SID_IDirectInputDevice7W]
  1884. (*** IDirectInputDevice7W methods ***)
  1885. function EnumEffectsInFile(lpszFileName: PWideChar; pec: TDIEnumEffectsInFileCallback; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  1886. function WriteEffectToFile(lpszFileName: PWideChar; dwEntries: DWORD; rgDiFileEft: PDIFileEffect; dwFlags: DWORD): HResult; stdcall;
  1887. end;
  1888. {$EXTERNALSYM IDirectInputDevice7}
  1889. IDirectInputDevice7 = IDirectInputDevice7A;
  1890. type
  1891. IID_IDirectInputDevice7 = IDirectInputDevice7;
  1892. {$EXTERNALSYM IID_IDirectInputDevice7}
  1893. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  1894. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  1895. type
  1896. {$EXTERNALSYM IDirectInputDevice8A}
  1897. IDirectInputDevice8A = interface(IDirectInputDevice7A)
  1898. [SID_IDirectInputDevice8A]
  1899. (*** IDirectInputDevice8A methods ***)
  1900. function BuildActionMap(lpdiaf: TDIActionFormatA; lpszUserName: PAnsiChar; dwFlags: DWORD): HResult; stdcall;
  1901. function SetActionMap(var lpdiActionFormat: TDIActionFormatA; lptszUserName: PAnsiChar; dwFlags: DWORD): HResult; stdcall;
  1902. function GetImageInfo(var lpdiDevImageInfoHeader: TDIDeviceImageInfoHeaderA): HResult; stdcall;
  1903. end;
  1904. {$EXTERNALSYM IDirectInputDevice8W}
  1905. IDirectInputDevice8W = interface(IDirectInputDevice7W)
  1906. [SID_IDirectInputDevice8W]
  1907. (*** IDirectInputDevice8W methods ***)
  1908. function BuildActionMap(lpdiaf: TDIActionFormatW; lpszUserName: PWideChar; dwFlags: DWORD): HResult; stdcall;
  1909. function SetActionMap(var lpdiActionFormat: TDIActionFormatW; lptszUserName: PWideChar; dwFlags: DWORD): HResult; stdcall;
  1910. function GetImageInfo(var lpdiDevImageInfoHeader: TDIDeviceImageInfoHeaderW): HResult; stdcall;
  1911. end;
  1912. {$EXTERNALSYM IDirectInputDevice8}
  1913. IDirectInputDevice8 = IDirectInputDevice8A;
  1914. type
  1915. IID_IDirectInputDevice8 = IDirectInputDevice8;
  1916. {$EXTERNALSYM IID_IDirectInputDevice8}
  1917. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  1918. (****************************************************************************
  1919. *
  1920. * Mouse
  1921. *
  1922. ****************************************************************************)
  1923. type
  1924. PDIMouseState = ^TDIMouseState;
  1925. _DIMOUSESTATE = packed record
  1926. lX: Longint;
  1927. lY: Longint;
  1928. lZ: Longint;
  1929. rgbButtons: array[0..3] of Byte;
  1930. end;
  1931. {$EXTERNALSYM _DIMOUSESTATE}
  1932. DIMOUSESTATE = _DIMOUSESTATE;
  1933. {$EXTERNALSYM DIMOUSESTATE}
  1934. TDIMouseState = _DIMOUSESTATE;
  1935. {$IFDEF DIRECTINPUT_VERSION_7} (* #if(DIRECTINPUT_VERSION >= 0x0700) *)
  1936. PDIMouseState2 = ^TDIMouseState2;
  1937. _DIMOUSESTATE2 = packed record
  1938. lX: Longint;
  1939. lY: Longint;
  1940. lZ: Longint;
  1941. rgbButtons: array[0..7] of Byte;
  1942. end;
  1943. {$EXTERNALSYM _DIMOUSESTATE2}
  1944. DIMOUSESTATE2 = _DIMOUSESTATE2;
  1945. {$EXTERNALSYM DIMOUSESTATE2}
  1946. TDIMouseState2 = _DIMOUSESTATE2;
  1947. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  1948. const
  1949. DIMOFS_X = 0; // FIELD_OFFSET(DIMOUSESTATE, lX)
  1950. {$EXTERNALSYM DIMOFS_X}
  1951. DIMOFS_Y = 4; // FIELD_OFFSET(DIMOUSESTATE, lY)
  1952. {$EXTERNALSYM DIMOFS_Y}
  1953. DIMOFS_Z = 8; // FIELD_OFFSET(DIMOUSESTATE, lZ)
  1954. {$EXTERNALSYM DIMOFS_Z}
  1955. DIMOFS_BUTTON0 = 12; // (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 0)
  1956. {$EXTERNALSYM DIMOFS_BUTTON0}
  1957. DIMOFS_BUTTON1 = DIMOFS_BUTTON0 + 1; // (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 1)
  1958. {$EXTERNALSYM DIMOFS_BUTTON1}
  1959. DIMOFS_BUTTON2 = DIMOFS_BUTTON0 + 2; // (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 2)
  1960. {$EXTERNALSYM DIMOFS_BUTTON2}
  1961. DIMOFS_BUTTON3 = DIMOFS_BUTTON0 + 3; // (FIELD_OFFSET(DIMOUSESTATE, rgbButtons) + 3)
  1962. {$EXTERNALSYM DIMOFS_BUTTON3}
  1963. {$IFDEF DIRECTINPUT_VERSION_7} (* #if(DIRECTINPUT_VERSION >= 0x0700) *)
  1964. DIMOFS_BUTTON4 = DIMOFS_BUTTON0 + 4; // (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 4)
  1965. {$EXTERNALSYM DIMOFS_BUTTON4}
  1966. DIMOFS_BUTTON5 = DIMOFS_BUTTON0 + 5; // (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 5)
  1967. {$EXTERNALSYM DIMOFS_BUTTON5}
  1968. DIMOFS_BUTTON6 = DIMOFS_BUTTON0 + 6; // (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 6)
  1969. {$EXTERNALSYM DIMOFS_BUTTON6}
  1970. DIMOFS_BUTTON7 = DIMOFS_BUTTON0 + 7; // (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7)
  1971. {$EXTERNALSYM DIMOFS_BUTTON7}
  1972. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  1973. (****************************************************************************
  1974. *
  1975. * Keyboard
  1976. *
  1977. ****************************************************************************)
  1978. (****************************************************************************
  1979. *
  1980. * DirectInput keyboard scan codes
  1981. *
  1982. ****************************************************************************)
  1983. const
  1984. DIK_ESCAPE = $01;
  1985. {$EXTERNALSYM DIK_ESCAPE}
  1986. DIK_1 = $02;
  1987. {$EXTERNALSYM DIK_1}
  1988. DIK_2 = $03;
  1989. {$EXTERNALSYM DIK_2}
  1990. DIK_3 = $04;
  1991. {$EXTERNALSYM DIK_3}
  1992. DIK_4 = $05;
  1993. {$EXTERNALSYM DIK_4}
  1994. DIK_5 = $06;
  1995. {$EXTERNALSYM DIK_5}
  1996. DIK_6 = $07;
  1997. {$EXTERNALSYM DIK_6}
  1998. DIK_7 = $08;
  1999. {$EXTERNALSYM DIK_7}
  2000. DIK_8 = $09;
  2001. {$EXTERNALSYM DIK_8}
  2002. DIK_9 = $0A;
  2003. {$EXTERNALSYM DIK_9}
  2004. DIK_0 = $0B;
  2005. {$EXTERNALSYM DIK_0}
  2006. DIK_MINUS = $0C; (* - on main keyboard *)
  2007. {$EXTERNALSYM DIK_MINUS}
  2008. DIK_EQUALS = $0D;
  2009. {$EXTERNALSYM DIK_EQUALS}
  2010. DIK_BACK = $0E; (* backspace *)
  2011. {$EXTERNALSYM DIK_BACK}
  2012. DIK_TAB = $0F;
  2013. {$EXTERNALSYM DIK_TAB}
  2014. DIK_Q = $10;
  2015. {$EXTERNALSYM DIK_Q}
  2016. DIK_W = $11;
  2017. {$EXTERNALSYM DIK_W}
  2018. DIK_E = $12;
  2019. {$EXTERNALSYM DIK_E}
  2020. DIK_R = $13;
  2021. {$EXTERNALSYM DIK_R}
  2022. DIK_T = $14;
  2023. {$EXTERNALSYM DIK_T}
  2024. DIK_Y = $15;
  2025. {$EXTERNALSYM DIK_Y}
  2026. DIK_U = $16;
  2027. {$EXTERNALSYM DIK_U}
  2028. DIK_I = $17;
  2029. {$EXTERNALSYM DIK_I}
  2030. DIK_O = $18;
  2031. {$EXTERNALSYM DIK_O}
  2032. DIK_P = $19;
  2033. {$EXTERNALSYM DIK_P}
  2034. DIK_LBRACKET = $1A;
  2035. {$EXTERNALSYM DIK_LBRACKET}
  2036. DIK_RBRACKET = $1B;
  2037. {$EXTERNALSYM DIK_RBRACKET}
  2038. DIK_RETURN = $1C; (* Enter on main keyboard *)
  2039. {$EXTERNALSYM DIK_RETURN}
  2040. DIK_LCONTROL = $1D;
  2041. {$EXTERNALSYM DIK_LCONTROL}
  2042. DIK_A = $1E;
  2043. {$EXTERNALSYM DIK_A}
  2044. DIK_S = $1F;
  2045. {$EXTERNALSYM DIK_S}
  2046. DIK_D = $20;
  2047. {$EXTERNALSYM DIK_D}
  2048. DIK_F = $21;
  2049. {$EXTERNALSYM DIK_F}
  2050. DIK_G = $22;
  2051. {$EXTERNALSYM DIK_G}
  2052. DIK_H = $23;
  2053. {$EXTERNALSYM DIK_H}
  2054. DIK_J = $24;
  2055. {$EXTERNALSYM DIK_J}
  2056. DIK_K = $25;
  2057. {$EXTERNALSYM DIK_K}
  2058. DIK_L = $26;
  2059. {$EXTERNALSYM DIK_L}
  2060. DIK_SEMICOLON = $27;
  2061. {$EXTERNALSYM DIK_SEMICOLON}
  2062. DIK_APOSTROPHE = $28;
  2063. {$EXTERNALSYM DIK_APOSTROPHE}
  2064. DIK_GRAVE = $29; (* accent grave *)
  2065. {$EXTERNALSYM DIK_GRAVE}
  2066. DIK_LSHIFT = $2A;
  2067. {$EXTERNALSYM DIK_LSHIFT}
  2068. DIK_BACKSLASH = $2B;
  2069. {$EXTERNALSYM DIK_BACKSLASH}
  2070. DIK_Z = $2C;
  2071. {$EXTERNALSYM DIK_Z}
  2072. DIK_X = $2D;
  2073. {$EXTERNALSYM DIK_X}
  2074. DIK_C = $2E;
  2075. {$EXTERNALSYM DIK_C}
  2076. DIK_V = $2F;
  2077. {$EXTERNALSYM DIK_V}
  2078. DIK_B = $30;
  2079. {$EXTERNALSYM DIK_B}
  2080. DIK_N = $31;
  2081. {$EXTERNALSYM DIK_N}
  2082. DIK_M = $32;
  2083. {$EXTERNALSYM DIK_M}
  2084. DIK_COMMA = $33;
  2085. {$EXTERNALSYM DIK_COMMA}
  2086. DIK_PERIOD = $34; (* . on main keyboard *)
  2087. {$EXTERNALSYM DIK_PERIOD}
  2088. DIK_SLASH = $35; (* / on main keyboard *)
  2089. {$EXTERNALSYM DIK_SLASH}
  2090. DIK_RSHIFT = $36;
  2091. {$EXTERNALSYM DIK_RSHIFT}
  2092. DIK_MULTIPLY = $37; (* * on numeric keypad *)
  2093. {$EXTERNALSYM DIK_MULTIPLY}
  2094. DIK_LMENU = $38; (* left Alt *)
  2095. {$EXTERNALSYM DIK_LMENU}
  2096. DIK_SPACE = $39;
  2097. {$EXTERNALSYM DIK_SPACE}
  2098. DIK_CAPITAL = $3A;
  2099. {$EXTERNALSYM DIK_CAPITAL}
  2100. DIK_F1 = $3B;
  2101. {$EXTERNALSYM DIK_F1}
  2102. DIK_F2 = $3C;
  2103. {$EXTERNALSYM DIK_F2}
  2104. DIK_F3 = $3D;
  2105. {$EXTERNALSYM DIK_F3}
  2106. DIK_F4 = $3E;
  2107. {$EXTERNALSYM DIK_F4}
  2108. DIK_F5 = $3F;
  2109. {$EXTERNALSYM DIK_F5}
  2110. DIK_F6 = $40;
  2111. {$EXTERNALSYM DIK_F6}
  2112. DIK_F7 = $41;
  2113. {$EXTERNALSYM DIK_F7}
  2114. DIK_F8 = $42;
  2115. {$EXTERNALSYM DIK_F8}
  2116. DIK_F9 = $43;
  2117. {$EXTERNALSYM DIK_F9}
  2118. DIK_F10 = $44;
  2119. {$EXTERNALSYM DIK_F10}
  2120. DIK_NUMLOCK = $45;
  2121. {$EXTERNALSYM DIK_NUMLOCK}
  2122. DIK_SCROLL = $46; (* Scroll Lock *)
  2123. {$EXTERNALSYM DIK_SCROLL}
  2124. DIK_NUMPAD7 = $47;
  2125. {$EXTERNALSYM DIK_NUMPAD7}
  2126. DIK_NUMPAD8 = $48;
  2127. {$EXTERNALSYM DIK_NUMPAD8}
  2128. DIK_NUMPAD9 = $49;
  2129. {$EXTERNALSYM DIK_NUMPAD9}
  2130. DIK_SUBTRACT = $4A; (* - on numeric keypad *)
  2131. {$EXTERNALSYM DIK_SUBTRACT}
  2132. DIK_NUMPAD4 = $4B;
  2133. {$EXTERNALSYM DIK_NUMPAD4}
  2134. DIK_NUMPAD5 = $4C;
  2135. {$EXTERNALSYM DIK_NUMPAD5}
  2136. DIK_NUMPAD6 = $4D;
  2137. {$EXTERNALSYM DIK_NUMPAD6}
  2138. DIK_ADD = $4E; (* + on numeric keypad *)
  2139. {$EXTERNALSYM DIK_ADD}
  2140. DIK_NUMPAD1 = $4F;
  2141. {$EXTERNALSYM DIK_NUMPAD1}
  2142. DIK_NUMPAD2 = $50;
  2143. {$EXTERNALSYM DIK_NUMPAD2}
  2144. DIK_NUMPAD3 = $51;
  2145. {$EXTERNALSYM DIK_NUMPAD3}
  2146. DIK_NUMPAD0 = $52;
  2147. {$EXTERNALSYM DIK_NUMPAD0}
  2148. DIK_DECIMAL = $53; (* . on numeric keypad *)
  2149. {$EXTERNALSYM DIK_DECIMAL}
  2150. DIK_OEM_102 = $56; (* <> or \| on RT 102-key keyboard (Non-U.S.) *)
  2151. {$EXTERNALSYM DIK_OEM_102}
  2152. DIK_F11 = $57;
  2153. {$EXTERNALSYM DIK_F11}
  2154. DIK_F12 = $58;
  2155. {$EXTERNALSYM DIK_F12}
  2156. DIK_F13 = $64; (* (NEC PC98) *)
  2157. {$EXTERNALSYM DIK_F13}
  2158. DIK_F14 = $65; (* (NEC PC98) *)
  2159. {$EXTERNALSYM DIK_F14}
  2160. DIK_F15 = $66; (* (NEC PC98) *)
  2161. {$EXTERNALSYM DIK_F15}
  2162. DIK_KANA = $70; (* (Japanese keyboard) *)
  2163. {$EXTERNALSYM DIK_KANA}
  2164. DIK_ABNT_C1 = $73; (* /? on Brazilian keyboard *)
  2165. {$EXTERNALSYM DIK_ABNT_C1}
  2166. DIK_CONVERT = $79; (* (Japanese keyboard) *)
  2167. {$EXTERNALSYM DIK_CONVERT}
  2168. DIK_NOCONVERT = $7B; (* (Japanese keyboard) *)
  2169. {$EXTERNALSYM DIK_NOCONVERT}
  2170. DIK_YEN = $7D; (* (Japanese keyboard) *)
  2171. {$EXTERNALSYM DIK_YEN}
  2172. DIK_ABNT_C2 = $7E; (* Numpad . on Brazilian keyboard *)
  2173. {$EXTERNALSYM DIK_ABNT_C2}
  2174. DIK_NUMPADEQUALS = $8D; (* = on numeric keypad (NEC PC98) *)
  2175. {$EXTERNALSYM DIK_NUMPADEQUALS}
  2176. DIK_PREVTRACK = $90; (* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) *)
  2177. {$EXTERNALSYM DIK_PREVTRACK}
  2178. DIK_AT = $91; (* (NEC PC98) *)
  2179. {$EXTERNALSYM DIK_AT}
  2180. DIK_COLON = $92; (* (NEC PC98) *)
  2181. {$EXTERNALSYM DIK_COLON}
  2182. DIK_UNDERLINE = $93; (* (NEC PC98) *)
  2183. {$EXTERNALSYM DIK_UNDERLINE}
  2184. DIK_KANJI = $94; (* (Japanese keyboard) *)
  2185. {$EXTERNALSYM DIK_KANJI}
  2186. DIK_STOP = $95; (* (NEC PC98) *)
  2187. {$EXTERNALSYM DIK_STOP}
  2188. DIK_AX = $96; (* (Japan AX) *)
  2189. {$EXTERNALSYM DIK_AX}
  2190. DIK_UNLABELED = $97; (* (J3100) *)
  2191. {$EXTERNALSYM DIK_UNLABELED}
  2192. DIK_NEXTTRACK = $99; (* Next Track *)
  2193. {$EXTERNALSYM DIK_NEXTTRACK}
  2194. DIK_NUMPADENTER = $9C; (* Enter on numeric keypad *)
  2195. {$EXTERNALSYM DIK_NUMPADENTER}
  2196. DIK_RCONTROL = $9D;
  2197. {$EXTERNALSYM DIK_RCONTROL}
  2198. DIK_MUTE = $A0; (* Mute *)
  2199. {$EXTERNALSYM DIK_MUTE}
  2200. DIK_CALCULATOR = $A1; (* Calculator *)
  2201. {$EXTERNALSYM DIK_CALCULATOR}
  2202. DIK_PLAYPAUSE = $A2; (* Play / Pause *)
  2203. {$EXTERNALSYM DIK_PLAYPAUSE}
  2204. DIK_MEDIASTOP = $A4; (* Media Stop *)
  2205. {$EXTERNALSYM DIK_MEDIASTOP}
  2206. DIK_VOLUMEDOWN = $AE; (* Volume - *)
  2207. {$EXTERNALSYM DIK_VOLUMEDOWN}
  2208. DIK_VOLUMEUP = $B0; (* Volume + *)
  2209. {$EXTERNALSYM DIK_VOLUMEUP}
  2210. DIK_WEBHOME = $B2; (* Web home *)
  2211. {$EXTERNALSYM DIK_WEBHOME}
  2212. DIK_NUMPADCOMMA = $B3; (* , on numeric keypad (NEC PC98) *)
  2213. {$EXTERNALSYM DIK_NUMPADCOMMA}
  2214. DIK_DIVIDE = $B5; (* / on numeric keypad *)
  2215. {$EXTERNALSYM DIK_DIVIDE}
  2216. DIK_SYSRQ = $B7;
  2217. {$EXTERNALSYM DIK_SYSRQ}
  2218. DIK_RMENU = $B8; (* right Alt *)
  2219. {$EXTERNALSYM DIK_RMENU}
  2220. DIK_PAUSE = $C5; (* Pause *)
  2221. {$EXTERNALSYM DIK_PAUSE}
  2222. DIK_HOME = $C7; (* Home on arrow keypad *)
  2223. {$EXTERNALSYM DIK_HOME}
  2224. DIK_UP = $C8; (* UpArrow on arrow keypad *)
  2225. {$EXTERNALSYM DIK_UP}
  2226. DIK_PRIOR = $C9; (* PgUp on arrow keypad *)
  2227. {$EXTERNALSYM DIK_PRIOR}
  2228. DIK_LEFT = $CB; (* LeftArrow on arrow keypad *)
  2229. {$EXTERNALSYM DIK_LEFT}
  2230. DIK_RIGHT = $CD; (* RightArrow on arrow keypad *)
  2231. {$EXTERNALSYM DIK_RIGHT}
  2232. DIK_END = $CF; (* End on arrow keypad *)
  2233. {$EXTERNALSYM DIK_END}
  2234. DIK_DOWN = $D0; (* DownArrow on arrow keypad *)
  2235. {$EXTERNALSYM DIK_DOWN}
  2236. DIK_NEXT = $D1; (* PgDn on arrow keypad *)
  2237. {$EXTERNALSYM DIK_NEXT}
  2238. DIK_INSERT = $D2; (* Insert on arrow keypad *)
  2239. {$EXTERNALSYM DIK_INSERT}
  2240. DIK_DELETE = $D3; (* Delete on arrow keypad *)
  2241. {$EXTERNALSYM DIK_DELETE}
  2242. DIK_LWIN = $DB; (* Left Windows key *)
  2243. {$EXTERNALSYM DIK_LWIN}
  2244. DIK_RWIN = $DC; (* Right Windows key *)
  2245. {$EXTERNALSYM DIK_RWIN}
  2246. DIK_APPS = $DD; (* AppMenu key *)
  2247. {$EXTERNALSYM DIK_APPS}
  2248. DIK_POWER = $DE; (* System Power *)
  2249. {$EXTERNALSYM DIK_POWER}
  2250. DIK_SLEEP = $DF; (* System Sleep *)
  2251. {$EXTERNALSYM DIK_SLEEP}
  2252. DIK_WAKE = $E3; (* System Wake *)
  2253. {$EXTERNALSYM DIK_WAKE}
  2254. DIK_WEBSEARCH = $E5; (* Web Search *)
  2255. {$EXTERNALSYM DIK_WEBSEARCH}
  2256. DIK_WEBFAVORITES = $E6; (* Web Favorites *)
  2257. {$EXTERNALSYM DIK_WEBFAVORITES}
  2258. DIK_WEBREFRESH = $E7; (* Web Refresh *)
  2259. {$EXTERNALSYM DIK_WEBREFRESH}
  2260. DIK_WEBSTOP = $E8; (* Web Stop *)
  2261. {$EXTERNALSYM DIK_WEBSTOP}
  2262. DIK_WEBFORWARD = $E9; (* Web Forward *)
  2263. {$EXTERNALSYM DIK_WEBFORWARD}
  2264. DIK_WEBBACK = $EA; (* Web Back *)
  2265. {$EXTERNALSYM DIK_WEBBACK}
  2266. DIK_MYCOMPUTER = $EB; (* My Computer *)
  2267. {$EXTERNALSYM DIK_MYCOMPUTER}
  2268. DIK_MAIL = $EC; (* Mail *)
  2269. {$EXTERNALSYM DIK_MAIL}
  2270. DIK_MEDIASELECT = $ED; (* Media Select *)
  2271. {$EXTERNALSYM DIK_MEDIASELECT}
  2272. (*
  2273. * Alternate names for keys, to facilitate transition from DOS.
  2274. *)
  2275. DIK_BACKSPACE = DIK_BACK; (* backspace *)
  2276. {$EXTERNALSYM DIK_BACKSPACE}
  2277. DIK_NUMPADSTAR = DIK_MULTIPLY; (* * on numeric keypad *)
  2278. {$EXTERNALSYM DIK_NUMPADSTAR}
  2279. DIK_LALT = DIK_LMENU; (* left Alt *)
  2280. {$EXTERNALSYM DIK_LALT}
  2281. DIK_CAPSLOCK = DIK_CAPITAL; (* CapsLock *)
  2282. {$EXTERNALSYM DIK_CAPSLOCK}
  2283. DIK_NUMPADMINUS = DIK_SUBTRACT; (* - on numeric keypad *)
  2284. {$EXTERNALSYM DIK_NUMPADMINUS}
  2285. DIK_NUMPADPLUS = DIK_ADD; (* + on numeric keypad *)
  2286. {$EXTERNALSYM DIK_NUMPADPLUS}
  2287. DIK_NUMPADPERIOD = DIK_DECIMAL; (* . on numeric keypad *)
  2288. {$EXTERNALSYM DIK_NUMPADPERIOD}
  2289. DIK_NUMPADSLASH = DIK_DIVIDE; (* / on numeric keypad *)
  2290. {$EXTERNALSYM DIK_NUMPADSLASH}
  2291. DIK_RALT = DIK_RMENU; (* right Alt *)
  2292. {$EXTERNALSYM DIK_RALT}
  2293. DIK_UPARROW = DIK_UP; (* UpArrow on arrow keypad *)
  2294. {$EXTERNALSYM DIK_UPARROW}
  2295. DIK_PGUP = DIK_PRIOR; (* PgUp on arrow keypad *)
  2296. {$EXTERNALSYM DIK_PGUP}
  2297. DIK_LEFTARROW = DIK_LEFT; (* LeftArrow on arrow keypad *)
  2298. {$EXTERNALSYM DIK_LEFTARROW}
  2299. DIK_RIGHTARROW = DIK_RIGHT; (* RightArrow on arrow keypad *)
  2300. {$EXTERNALSYM DIK_RIGHTARROW}
  2301. DIK_DOWNARROW = DIK_DOWN; (* DownArrow on arrow keypad *)
  2302. {$EXTERNALSYM DIK_DOWNARROW}
  2303. DIK_PGDN = DIK_NEXT; (* PgDn on arrow keypad *)
  2304. {$EXTERNALSYM DIK_PGDN}
  2305. (*
  2306. * Alternate names for keys originally not used on US keyboards.
  2307. *)
  2308. DIK_CIRCUMFLEX = DIK_PREVTRACK; (* Japanese keyboard *)
  2309. {$EXTERNALSYM DIK_CIRCUMFLEX}
  2310. (****************************************************************************
  2311. *
  2312. * Joystick
  2313. *
  2314. ****************************************************************************)
  2315. type
  2316. PDIJoyState = ^TDIJoyState;
  2317. DIJOYSTATE = packed record
  2318. lX: Longint; (* x-axis position *)
  2319. lY: Longint; (* y-axis position *)
  2320. lZ: Longint; (* z-axis position *)
  2321. lRx: Longint; (* x-axis rotation *)
  2322. lRy: Longint; (* y-axis rotation *)
  2323. lRz: Longint; (* z-axis rotation *)
  2324. rglSlider: array[0..1] of Longint; (* extra axes positions *)
  2325. rgdwPOV: array[0..3] of DWORD; (* POV directions *)
  2326. rgbButtons: array[0..31] of Byte; (* 32 buttons *)
  2327. end;
  2328. {$EXTERNALSYM DIJOYSTATE}
  2329. TDIJoyState = DIJOYSTATE;
  2330. PDIJoyState2 = ^TDIJoyState2;
  2331. DIJOYSTATE2 = packed record
  2332. lX: Longint; (* x-axis position *)
  2333. lY: Longint; (* y-axis position *)
  2334. lZ: Longint; (* z-axis position *)
  2335. lRx: Longint; (* x-axis rotation *)
  2336. lRy: Longint; (* y-axis rotation *)
  2337. lRz: Longint; (* z-axis rotation *)
  2338. rglSlider: array[0..1] of Longint; (* extra axes positions *)
  2339. rgdwPOV: array[0..3] of DWORD; (* POV directions *)
  2340. rgbButtons: array[0..127] of Byte; (* 128 buttons *)
  2341. lVX: Longint; (* x-axis velocity *)
  2342. lVY: Longint; (* y-axis velocity *)
  2343. lVZ: Longint; (* z-axis velocity *)
  2344. lVRx: Longint; (* x-axis angular velocity *)
  2345. lVRy: Longint; (* y-axis angular velocity *)
  2346. lVRz: Longint; (* z-axis angular velocity *)
  2347. rglVSlider: array[0..1] of Longint; (* extra axes velocities *)
  2348. lAX: Longint; (* x-axis acceleration *)
  2349. lAY: Longint; (* y-axis acceleration *)
  2350. lAZ: Longint; (* z-axis acceleration *)
  2351. lARx: Longint; (* x-axis angular acceleration *)
  2352. lARy: Longint; (* y-axis angular acceleration *)
  2353. lARz: Longint; (* z-axis angular acceleration *)
  2354. rglASlider: array[0..1] of Longint; (* extra axes accelerations *)
  2355. lFX: Longint; (* x-axis force *)
  2356. lFY: Longint; (* y-axis force *)
  2357. lFZ: Longint; (* z-axis force *)
  2358. lFRx: Longint; (* x-axis torque *)
  2359. lFRy: Longint; (* y-axis torque *)
  2360. lFRz: Longint; (* z-axis torque *)
  2361. rglFSlider: array[0..1] of Longint; (* extra axes forces *)
  2362. end;
  2363. {$EXTERNALSYM DIJOYSTATE2}
  2364. TDIJoyState2 = DIJOYSTATE2;
  2365. const
  2366. DIJOFS_X = 0; // FIELD_OFFSET(DIJOYSTATE, lX)
  2367. {$EXTERNALSYM DIJOFS_X}
  2368. DIJOFS_Y = 4; // FIELD_OFFSET(DIJOYSTATE, lY)
  2369. {$EXTERNALSYM DIJOFS_Y}
  2370. DIJOFS_Z = 8; // FIELD_OFFSET(DIJOYSTATE, lZ)
  2371. {$EXTERNALSYM DIJOFS_Z}
  2372. DIJOFS_RX = 12; // FIELD_OFFSET(DIJOYSTATE, lRx)
  2373. {$EXTERNALSYM DIJOFS_RX}
  2374. DIJOFS_RY = 16; // FIELD_OFFSET(DIJOYSTATE, lRy)
  2375. {$EXTERNALSYM DIJOFS_RY}
  2376. DIJOFS_RZ = 20; // FIELD_OFFSET(DIJOYSTATE, lRz)
  2377. {$EXTERNALSYM DIJOFS_RZ}
  2378. // #define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \
  2379. // (n) * sizeof(LONG))
  2380. function DIJOFS_SLIDER(n: Cardinal): Cardinal;
  2381. {$EXTERNALSYM DIJOFS_SLIDER}
  2382. // #define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \
  2383. // (n) * sizeof(DWORD))
  2384. function DIJOFS_POV(n: Cardinal): Cardinal;
  2385. {$EXTERNALSYM DIJOFS_POV}
  2386. // #define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))
  2387. function DIJOFS_BUTTON(n: Cardinal): Cardinal;
  2388. {$EXTERNALSYM DIJOFS_BUTTON}
  2389. const
  2390. DIJOFS_BUTTON_ = 48; // Helper const
  2391. DIJOFS_BUTTON0 = DIJOFS_BUTTON_ + 0; // DIJOFS_BUTTON(0)
  2392. {$EXTERNALSYM DIJOFS_BUTTON0}
  2393. DIJOFS_BUTTON1 = DIJOFS_BUTTON_ + 1; // DIJOFS_BUTTON(1)
  2394. {$EXTERNALSYM DIJOFS_BUTTON1}
  2395. DIJOFS_BUTTON2 = DIJOFS_BUTTON_ + 2; // DIJOFS_BUTTON(2)
  2396. {$EXTERNALSYM DIJOFS_BUTTON2}
  2397. DIJOFS_BUTTON3 = DIJOFS_BUTTON_ + 3; // DIJOFS_BUTTON(3)
  2398. {$EXTERNALSYM DIJOFS_BUTTON3}
  2399. DIJOFS_BUTTON4 = DIJOFS_BUTTON_ + 4; // DIJOFS_BUTTON(4)
  2400. {$EXTERNALSYM DIJOFS_BUTTON4}
  2401. DIJOFS_BUTTON5 = DIJOFS_BUTTON_ + 5; // DIJOFS_BUTTON(5)
  2402. {$EXTERNALSYM DIJOFS_BUTTON5}
  2403. DIJOFS_BUTTON6 = DIJOFS_BUTTON_ + 6; // DIJOFS_BUTTON(6)
  2404. {$EXTERNALSYM DIJOFS_BUTTON6}
  2405. DIJOFS_BUTTON7 = DIJOFS_BUTTON_ + 7; // DIJOFS_BUTTON(7)
  2406. {$EXTERNALSYM DIJOFS_BUTTON7}
  2407. DIJOFS_BUTTON8 = DIJOFS_BUTTON_ + 8; // DIJOFS_BUTTON(8)
  2408. {$EXTERNALSYM DIJOFS_BUTTON8}
  2409. DIJOFS_BUTTON9 = DIJOFS_BUTTON_ + 9; // DIJOFS_BUTTON(9)
  2410. {$EXTERNALSYM DIJOFS_BUTTON9}
  2411. DIJOFS_BUTTON10 = DIJOFS_BUTTON_ + 10; // DIJOFS_BUTTON(10)
  2412. {$EXTERNALSYM DIJOFS_BUTTON10}
  2413. DIJOFS_BUTTON11 = DIJOFS_BUTTON_ + 11; // DIJOFS_BUTTON(11)
  2414. {$EXTERNALSYM DIJOFS_BUTTON11}
  2415. DIJOFS_BUTTON12 = DIJOFS_BUTTON_ + 12; // DIJOFS_BUTTON(12)
  2416. {$EXTERNALSYM DIJOFS_BUTTON12}
  2417. DIJOFS_BUTTON13 = DIJOFS_BUTTON_ + 13; // DIJOFS_BUTTON(13)
  2418. {$EXTERNALSYM DIJOFS_BUTTON13}
  2419. DIJOFS_BUTTON14 = DIJOFS_BUTTON_ + 14; // DIJOFS_BUTTON(14)
  2420. {$EXTERNALSYM DIJOFS_BUTTON14}
  2421. DIJOFS_BUTTON15 = DIJOFS_BUTTON_ + 15; // DIJOFS_BUTTON(15)
  2422. {$EXTERNALSYM DIJOFS_BUTTON15}
  2423. DIJOFS_BUTTON16 = DIJOFS_BUTTON_ + 16; // DIJOFS_BUTTON(16)
  2424. {$EXTERNALSYM DIJOFS_BUTTON16}
  2425. DIJOFS_BUTTON17 = DIJOFS_BUTTON_ + 17; // DIJOFS_BUTTON(17)
  2426. {$EXTERNALSYM DIJOFS_BUTTON17}
  2427. DIJOFS_BUTTON18 = DIJOFS_BUTTON_ + 18; // DIJOFS_BUTTON(18)
  2428. {$EXTERNALSYM DIJOFS_BUTTON18}
  2429. DIJOFS_BUTTON19 = DIJOFS_BUTTON_ + 19; // DIJOFS_BUTTON(19)
  2430. {$EXTERNALSYM DIJOFS_BUTTON19}
  2431. DIJOFS_BUTTON20 = DIJOFS_BUTTON_ + 20; // DIJOFS_BUTTON(20)
  2432. {$EXTERNALSYM DIJOFS_BUTTON20}
  2433. DIJOFS_BUTTON21 = DIJOFS_BUTTON_ + 21; // DIJOFS_BUTTON(21)
  2434. {$EXTERNALSYM DIJOFS_BUTTON21}
  2435. DIJOFS_BUTTON22 = DIJOFS_BUTTON_ + 22; // DIJOFS_BUTTON(22)
  2436. {$EXTERNALSYM DIJOFS_BUTTON22}
  2437. DIJOFS_BUTTON23 = DIJOFS_BUTTON_ + 23; // DIJOFS_BUTTON(23)
  2438. {$EXTERNALSYM DIJOFS_BUTTON23}
  2439. DIJOFS_BUTTON24 = DIJOFS_BUTTON_ + 24; // DIJOFS_BUTTON(24)
  2440. {$EXTERNALSYM DIJOFS_BUTTON24}
  2441. DIJOFS_BUTTON25 = DIJOFS_BUTTON_ + 25; // DIJOFS_BUTTON(25)
  2442. {$EXTERNALSYM DIJOFS_BUTTON25}
  2443. DIJOFS_BUTTON26 = DIJOFS_BUTTON_ + 26; // DIJOFS_BUTTON(26)
  2444. {$EXTERNALSYM DIJOFS_BUTTON26}
  2445. DIJOFS_BUTTON27 = DIJOFS_BUTTON_ + 27; // DIJOFS_BUTTON(27)
  2446. {$EXTERNALSYM DIJOFS_BUTTON27}
  2447. DIJOFS_BUTTON28 = DIJOFS_BUTTON_ + 28; // DIJOFS_BUTTON(28)
  2448. {$EXTERNALSYM DIJOFS_BUTTON28}
  2449. DIJOFS_BUTTON29 = DIJOFS_BUTTON_ + 29; // DIJOFS_BUTTON(29)
  2450. {$EXTERNALSYM DIJOFS_BUTTON29}
  2451. DIJOFS_BUTTON30 = DIJOFS_BUTTON_ + 30; // DIJOFS_BUTTON(30)
  2452. {$EXTERNALSYM DIJOFS_BUTTON30}
  2453. DIJOFS_BUTTON31 = DIJOFS_BUTTON_ + 31; // DIJOFS_BUTTON(31)
  2454. {$EXTERNALSYM DIJOFS_BUTTON31}
  2455. const
  2456. rgodfDIMouse: array[0..6] of TDIObjectDataFormat = (
  2457. (pguid: @GUID_XAxis; dwOfs: DIMOFS_X; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE; dwFlags: 0),
  2458. (pguid: @GUID_YAxis; dwOfs: DIMOFS_Y; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE; dwFlags: 0),
  2459. (pguid: @GUID_ZAxis; dwOfs: DIMOFS_Z; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2460. (pguid: nil; dwOfs: DIMOFS_BUTTON0; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE; dwFlags: 0),
  2461. (pguid: nil; dwOfs: DIMOFS_BUTTON1; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE; dwFlags: 0),
  2462. (pguid: nil; dwOfs: DIMOFS_BUTTON2; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2463. (pguid: nil; dwOfs: DIMOFS_BUTTON3; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0)
  2464. );
  2465. {$EXTERNALSYM rgodfDIMouse}
  2466. c_dfDIMouse: TDIDataFormat = (
  2467. dwSize: Sizeof(c_dfDIMouse); // $18
  2468. dwObjSize: Sizeof(TDIObjectDataFormat); // $10
  2469. dwFlags: DIDF_RELAXIS; // $2
  2470. dwDataSize: Sizeof(TDIMouseState); // $10
  2471. dwNumObjs: High(rgodfDIMouse) + 1;
  2472. rgodf: @rgodfDIMouse
  2473. );
  2474. {$EXTERNALSYM c_dfDIMouse}
  2475. {$IFDEF DIRECTINPUT_VERSION_7} (* #if(DIRECTINPUT_VERSION >= 0x0700) *)
  2476. rgodfDIMouse2: array[0..10] of TDIObjectDataFormat = (
  2477. (pguid: @GUID_XAxis; dwOfs: DIMOFS_X; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE; dwFlags: 0),
  2478. (pguid: @GUID_YAxis; dwOfs: DIMOFS_Y; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE; dwFlags: 0),
  2479. (pguid: @GUID_ZAxis; dwOfs: DIMOFS_Z; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0), // DIDFT_ENUMCOLLECTION(DIDFT_ALIAS) == $80000000
  2480. (pguid: nil; dwOfs: DIMOFS_BUTTON0; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE; dwFlags: 0),
  2481. (pguid: nil; dwOfs: DIMOFS_BUTTON1; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE; dwFlags: 0),
  2482. (pguid: nil; dwOfs: DIMOFS_BUTTON2; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2483. (pguid: nil; dwOfs: DIMOFS_BUTTON3; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2484. (pguid: nil; dwOfs: DIMOFS_BUTTON4; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2485. (pguid: nil; dwOfs: DIMOFS_BUTTON5; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2486. (pguid: nil; dwOfs: DIMOFS_BUTTON6; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2487. (pguid: nil; dwOfs: DIMOFS_BUTTON7; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0)
  2488. );
  2489. {$EXTERNALSYM rgodfDIMouse2}
  2490. c_dfDIMouse2: TDIDataFormat = (
  2491. dwSize : Sizeof(c_dfDIMouse2); // $18
  2492. dwObjSize : Sizeof(TDIObjectDataFormat); // $10
  2493. dwFlags : DIDF_RELAXIS; // $2
  2494. dwDataSize : Sizeof(TDIMouseState2); // $10
  2495. dwNumObjs : High(rgodfDIMouse2) + 1;
  2496. rgodf : @rgodfDIMouse2
  2497. );
  2498. {$EXTERNALSYM c_dfDIMouse2}
  2499. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  2500. const
  2501. rgodfKeyboard: array[0..255] of TDIObjectDataFormat = (
  2502. (pguid: @GUID_Key; dwOfs: 0; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 0 shl 8); dwFlags: 0),
  2503. (pguid: @GUID_Key; dwOfs: 1; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 1 shl 8); dwFlags: 0),
  2504. (pguid: @GUID_Key; dwOfs: 2; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 2 shl 8); dwFlags: 0),
  2505. (pguid: @GUID_Key; dwOfs: 3; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 3 shl 8); dwFlags: 0),
  2506. (pguid: @GUID_Key; dwOfs: 4; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 4 shl 8); dwFlags: 0),
  2507. (pguid: @GUID_Key; dwOfs: 5; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 5 shl 8); dwFlags: 0),
  2508. (pguid: @GUID_Key; dwOfs: 6; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 6 shl 8); dwFlags: 0),
  2509. (pguid: @GUID_Key; dwOfs: 7; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 7 shl 8); dwFlags: 0),
  2510. (pguid: @GUID_Key; dwOfs: 8; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 8 shl 8); dwFlags: 0),
  2511. (pguid: @GUID_Key; dwOfs: 9; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 9 shl 8); dwFlags: 0),
  2512. (pguid: @GUID_Key; dwOfs: 10; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 10 shl 8); dwFlags: 0),
  2513. (pguid: @GUID_Key; dwOfs: 11; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 11 shl 8); dwFlags: 0),
  2514. (pguid: @GUID_Key; dwOfs: 12; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 12 shl 8); dwFlags: 0),
  2515. (pguid: @GUID_Key; dwOfs: 13; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 13 shl 8); dwFlags: 0),
  2516. (pguid: @GUID_Key; dwOfs: 14; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 14 shl 8); dwFlags: 0),
  2517. (pguid: @GUID_Key; dwOfs: 15; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 15 shl 8); dwFlags: 0),
  2518. (pguid: @GUID_Key; dwOfs: 16; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 16 shl 8); dwFlags: 0),
  2519. (pguid: @GUID_Key; dwOfs: 17; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 17 shl 8); dwFlags: 0),
  2520. (pguid: @GUID_Key; dwOfs: 18; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 18 shl 8); dwFlags: 0),
  2521. (pguid: @GUID_Key; dwOfs: 19; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 19 shl 8); dwFlags: 0),
  2522. (pguid: @GUID_Key; dwOfs: 20; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 20 shl 8); dwFlags: 0),
  2523. (pguid: @GUID_Key; dwOfs: 21; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 21 shl 8); dwFlags: 0),
  2524. (pguid: @GUID_Key; dwOfs: 22; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 22 shl 8); dwFlags: 0),
  2525. (pguid: @GUID_Key; dwOfs: 23; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 23 shl 8); dwFlags: 0),
  2526. (pguid: @GUID_Key; dwOfs: 24; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 24 shl 8); dwFlags: 0),
  2527. (pguid: @GUID_Key; dwOfs: 25; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 25 shl 8); dwFlags: 0),
  2528. (pguid: @GUID_Key; dwOfs: 26; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 26 shl 8); dwFlags: 0),
  2529. (pguid: @GUID_Key; dwOfs: 27; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 27 shl 8); dwFlags: 0),
  2530. (pguid: @GUID_Key; dwOfs: 28; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 28 shl 8); dwFlags: 0),
  2531. (pguid: @GUID_Key; dwOfs: 29; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 29 shl 8); dwFlags: 0),
  2532. (pguid: @GUID_Key; dwOfs: 30; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 30 shl 8); dwFlags: 0),
  2533. (pguid: @GUID_Key; dwOfs: 31; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 31 shl 8); dwFlags: 0),
  2534. (pguid: @GUID_Key; dwOfs: 32; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 32 shl 8); dwFlags: 0),
  2535. (pguid: @GUID_Key; dwOfs: 33; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 33 shl 8); dwFlags: 0),
  2536. (pguid: @GUID_Key; dwOfs: 34; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 34 shl 8); dwFlags: 0),
  2537. (pguid: @GUID_Key; dwOfs: 35; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 35 shl 8); dwFlags: 0),
  2538. (pguid: @GUID_Key; dwOfs: 36; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 36 shl 8); dwFlags: 0),
  2539. (pguid: @GUID_Key; dwOfs: 37; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 37 shl 8); dwFlags: 0),
  2540. (pguid: @GUID_Key; dwOfs: 38; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 38 shl 8); dwFlags: 0),
  2541. (pguid: @GUID_Key; dwOfs: 39; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 39 shl 8); dwFlags: 0),
  2542. (pguid: @GUID_Key; dwOfs: 40; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 40 shl 8); dwFlags: 0),
  2543. (pguid: @GUID_Key; dwOfs: 41; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 41 shl 8); dwFlags: 0),
  2544. (pguid: @GUID_Key; dwOfs: 42; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 42 shl 8); dwFlags: 0),
  2545. (pguid: @GUID_Key; dwOfs: 43; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 43 shl 8); dwFlags: 0),
  2546. (pguid: @GUID_Key; dwOfs: 44; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 44 shl 8); dwFlags: 0),
  2547. (pguid: @GUID_Key; dwOfs: 45; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 45 shl 8); dwFlags: 0),
  2548. (pguid: @GUID_Key; dwOfs: 46; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 46 shl 8); dwFlags: 0),
  2549. (pguid: @GUID_Key; dwOfs: 47; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 47 shl 8); dwFlags: 0),
  2550. (pguid: @GUID_Key; dwOfs: 48; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 48 shl 8); dwFlags: 0),
  2551. (pguid: @GUID_Key; dwOfs: 49; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 49 shl 8); dwFlags: 0),
  2552. (pguid: @GUID_Key; dwOfs: 50; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 50 shl 8); dwFlags: 0),
  2553. (pguid: @GUID_Key; dwOfs: 51; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 51 shl 8); dwFlags: 0),
  2554. (pguid: @GUID_Key; dwOfs: 52; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 52 shl 8); dwFlags: 0),
  2555. (pguid: @GUID_Key; dwOfs: 53; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 53 shl 8); dwFlags: 0),
  2556. (pguid: @GUID_Key; dwOfs: 54; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 54 shl 8); dwFlags: 0),
  2557. (pguid: @GUID_Key; dwOfs: 55; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 55 shl 8); dwFlags: 0),
  2558. (pguid: @GUID_Key; dwOfs: 56; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 56 shl 8); dwFlags: 0),
  2559. (pguid: @GUID_Key; dwOfs: 57; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 57 shl 8); dwFlags: 0),
  2560. (pguid: @GUID_Key; dwOfs: 58; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 58 shl 8); dwFlags: 0),
  2561. (pguid: @GUID_Key; dwOfs: 59; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 59 shl 8); dwFlags: 0),
  2562. (pguid: @GUID_Key; dwOfs: 60; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 60 shl 8); dwFlags: 0),
  2563. (pguid: @GUID_Key; dwOfs: 61; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 61 shl 8); dwFlags: 0),
  2564. (pguid: @GUID_Key; dwOfs: 62; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 62 shl 8); dwFlags: 0),
  2565. (pguid: @GUID_Key; dwOfs: 63; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 63 shl 8); dwFlags: 0),
  2566. (pguid: @GUID_Key; dwOfs: 64; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 64 shl 8); dwFlags: 0),
  2567. (pguid: @GUID_Key; dwOfs: 65; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 65 shl 8); dwFlags: 0),
  2568. (pguid: @GUID_Key; dwOfs: 66; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 66 shl 8); dwFlags: 0),
  2569. (pguid: @GUID_Key; dwOfs: 67; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 67 shl 8); dwFlags: 0),
  2570. (pguid: @GUID_Key; dwOfs: 68; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 68 shl 8); dwFlags: 0),
  2571. (pguid: @GUID_Key; dwOfs: 69; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 69 shl 8); dwFlags: 0),
  2572. (pguid: @GUID_Key; dwOfs: 70; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 70 shl 8); dwFlags: 0),
  2573. (pguid: @GUID_Key; dwOfs: 71; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 71 shl 8); dwFlags: 0),
  2574. (pguid: @GUID_Key; dwOfs: 72; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 72 shl 8); dwFlags: 0),
  2575. (pguid: @GUID_Key; dwOfs: 73; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 73 shl 8); dwFlags: 0),
  2576. (pguid: @GUID_Key; dwOfs: 74; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 74 shl 8); dwFlags: 0),
  2577. (pguid: @GUID_Key; dwOfs: 75; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 75 shl 8); dwFlags: 0),
  2578. (pguid: @GUID_Key; dwOfs: 76; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 76 shl 8); dwFlags: 0),
  2579. (pguid: @GUID_Key; dwOfs: 77; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 77 shl 8); dwFlags: 0),
  2580. (pguid: @GUID_Key; dwOfs: 78; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 78 shl 8); dwFlags: 0),
  2581. (pguid: @GUID_Key; dwOfs: 79; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 79 shl 8); dwFlags: 0),
  2582. (pguid: @GUID_Key; dwOfs: 80; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 80 shl 8); dwFlags: 0),
  2583. (pguid: @GUID_Key; dwOfs: 81; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 81 shl 8); dwFlags: 0),
  2584. (pguid: @GUID_Key; dwOfs: 82; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 82 shl 8); dwFlags: 0),
  2585. (pguid: @GUID_Key; dwOfs: 83; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 83 shl 8); dwFlags: 0),
  2586. (pguid: @GUID_Key; dwOfs: 84; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 84 shl 8); dwFlags: 0),
  2587. (pguid: @GUID_Key; dwOfs: 85; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 85 shl 8); dwFlags: 0),
  2588. (pguid: @GUID_Key; dwOfs: 86; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 86 shl 8); dwFlags: 0),
  2589. (pguid: @GUID_Key; dwOfs: 87; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 87 shl 8); dwFlags: 0),
  2590. (pguid: @GUID_Key; dwOfs: 88; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 88 shl 8); dwFlags: 0),
  2591. (pguid: @GUID_Key; dwOfs: 89; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 89 shl 8); dwFlags: 0),
  2592. (pguid: @GUID_Key; dwOfs: 90; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 90 shl 8); dwFlags: 0),
  2593. (pguid: @GUID_Key; dwOfs: 91; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 91 shl 8); dwFlags: 0),
  2594. (pguid: @GUID_Key; dwOfs: 92; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 92 shl 8); dwFlags: 0),
  2595. (pguid: @GUID_Key; dwOfs: 93; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 93 shl 8); dwFlags: 0),
  2596. (pguid: @GUID_Key; dwOfs: 94; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 94 shl 8); dwFlags: 0),
  2597. (pguid: @GUID_Key; dwOfs: 95; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 95 shl 8); dwFlags: 0),
  2598. (pguid: @GUID_Key; dwOfs: 96; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 96 shl 8); dwFlags: 0),
  2599. (pguid: @GUID_Key; dwOfs: 97; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 97 shl 8); dwFlags: 0),
  2600. (pguid: @GUID_Key; dwOfs: 98; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 98 shl 8); dwFlags: 0),
  2601. (pguid: @GUID_Key; dwOfs: 99; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 99 shl 8); dwFlags: 0),
  2602. (pguid: @GUID_Key; dwOfs: 100; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (100 shl 8); dwFlags: 0),
  2603. (pguid: @GUID_Key; dwOfs: 101; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (101 shl 8); dwFlags: 0),
  2604. (pguid: @GUID_Key; dwOfs: 102; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (102 shl 8); dwFlags: 0),
  2605. (pguid: @GUID_Key; dwOfs: 103; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (103 shl 8); dwFlags: 0),
  2606. (pguid: @GUID_Key; dwOfs: 104; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (104 shl 8); dwFlags: 0),
  2607. (pguid: @GUID_Key; dwOfs: 105; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (105 shl 8); dwFlags: 0),
  2608. (pguid: @GUID_Key; dwOfs: 106; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (106 shl 8); dwFlags: 0),
  2609. (pguid: @GUID_Key; dwOfs: 107; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (107 shl 8); dwFlags: 0),
  2610. (pguid: @GUID_Key; dwOfs: 108; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (108 shl 8); dwFlags: 0),
  2611. (pguid: @GUID_Key; dwOfs: 109; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (109 shl 8); dwFlags: 0),
  2612. (pguid: @GUID_Key; dwOfs: 110; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (110 shl 8); dwFlags: 0),
  2613. (pguid: @GUID_Key; dwOfs: 111; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (111 shl 8); dwFlags: 0),
  2614. (pguid: @GUID_Key; dwOfs: 112; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (112 shl 8); dwFlags: 0),
  2615. (pguid: @GUID_Key; dwOfs: 113; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (113 shl 8); dwFlags: 0),
  2616. (pguid: @GUID_Key; dwOfs: 114; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (114 shl 8); dwFlags: 0),
  2617. (pguid: @GUID_Key; dwOfs: 115; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (115 shl 8); dwFlags: 0),
  2618. (pguid: @GUID_Key; dwOfs: 116; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (116 shl 8); dwFlags: 0),
  2619. (pguid: @GUID_Key; dwOfs: 117; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (117 shl 8); dwFlags: 0),
  2620. (pguid: @GUID_Key; dwOfs: 118; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (118 shl 8); dwFlags: 0),
  2621. (pguid: @GUID_Key; dwOfs: 119; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (119 shl 8); dwFlags: 0),
  2622. (pguid: @GUID_Key; dwOfs: 120; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (120 shl 8); dwFlags: 0),
  2623. (pguid: @GUID_Key; dwOfs: 121; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (121 shl 8); dwFlags: 0),
  2624. (pguid: @GUID_Key; dwOfs: 122; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (122 shl 8); dwFlags: 0),
  2625. (pguid: @GUID_Key; dwOfs: 123; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (123 shl 8); dwFlags: 0),
  2626. (pguid: @GUID_Key; dwOfs: 124; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (124 shl 8); dwFlags: 0),
  2627. (pguid: @GUID_Key; dwOfs: 125; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (125 shl 8); dwFlags: 0),
  2628. (pguid: @GUID_Key; dwOfs: 126; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (126 shl 8); dwFlags: 0),
  2629. (pguid: @GUID_Key; dwOfs: 127; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (127 shl 8); dwFlags: 0),
  2630. (pguid: @GUID_Key; dwOfs: 128; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (128 shl 8); dwFlags: 0),
  2631. (pguid: @GUID_Key; dwOfs: 129; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (129 shl 8); dwFlags: 0),
  2632. (pguid: @GUID_Key; dwOfs: 130; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (130 shl 8); dwFlags: 0),
  2633. (pguid: @GUID_Key; dwOfs: 131; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (131 shl 8); dwFlags: 0),
  2634. (pguid: @GUID_Key; dwOfs: 132; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (132 shl 8); dwFlags: 0),
  2635. (pguid: @GUID_Key; dwOfs: 133; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (133 shl 8); dwFlags: 0),
  2636. (pguid: @GUID_Key; dwOfs: 134; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (134 shl 8); dwFlags: 0),
  2637. (pguid: @GUID_Key; dwOfs: 135; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (135 shl 8); dwFlags: 0),
  2638. (pguid: @GUID_Key; dwOfs: 136; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (136 shl 8); dwFlags: 0),
  2639. (pguid: @GUID_Key; dwOfs: 137; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (137 shl 8); dwFlags: 0),
  2640. (pguid: @GUID_Key; dwOfs: 138; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (138 shl 8); dwFlags: 0),
  2641. (pguid: @GUID_Key; dwOfs: 139; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (139 shl 8); dwFlags: 0),
  2642. (pguid: @GUID_Key; dwOfs: 140; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (140 shl 8); dwFlags: 0),
  2643. (pguid: @GUID_Key; dwOfs: 141; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (141 shl 8); dwFlags: 0),
  2644. (pguid: @GUID_Key; dwOfs: 142; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (142 shl 8); dwFlags: 0),
  2645. (pguid: @GUID_Key; dwOfs: 143; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (143 shl 8); dwFlags: 0),
  2646. (pguid: @GUID_Key; dwOfs: 144; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (144 shl 8); dwFlags: 0),
  2647. (pguid: @GUID_Key; dwOfs: 145; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (145 shl 8); dwFlags: 0),
  2648. (pguid: @GUID_Key; dwOfs: 146; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (146 shl 8); dwFlags: 0),
  2649. (pguid: @GUID_Key; dwOfs: 147; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (147 shl 8); dwFlags: 0),
  2650. (pguid: @GUID_Key; dwOfs: 148; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (148 shl 8); dwFlags: 0),
  2651. (pguid: @GUID_Key; dwOfs: 149; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (149 shl 8); dwFlags: 0),
  2652. (pguid: @GUID_Key; dwOfs: 150; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (150 shl 8); dwFlags: 0),
  2653. (pguid: @GUID_Key; dwOfs: 151; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (151 shl 8); dwFlags: 0),
  2654. (pguid: @GUID_Key; dwOfs: 152; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (152 shl 8); dwFlags: 0),
  2655. (pguid: @GUID_Key; dwOfs: 153; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (153 shl 8); dwFlags: 0),
  2656. (pguid: @GUID_Key; dwOfs: 154; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (154 shl 8); dwFlags: 0),
  2657. (pguid: @GUID_Key; dwOfs: 155; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (155 shl 8); dwFlags: 0),
  2658. (pguid: @GUID_Key; dwOfs: 156; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (156 shl 8); dwFlags: 0),
  2659. (pguid: @GUID_Key; dwOfs: 157; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (157 shl 8); dwFlags: 0),
  2660. (pguid: @GUID_Key; dwOfs: 158; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (158 shl 8); dwFlags: 0),
  2661. (pguid: @GUID_Key; dwOfs: 159; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (159 shl 8); dwFlags: 0),
  2662. (pguid: @GUID_Key; dwOfs: 160; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (160 shl 8); dwFlags: 0),
  2663. (pguid: @GUID_Key; dwOfs: 161; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (161 shl 8); dwFlags: 0),
  2664. (pguid: @GUID_Key; dwOfs: 162; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (162 shl 8); dwFlags: 0),
  2665. (pguid: @GUID_Key; dwOfs: 163; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (163 shl 8); dwFlags: 0),
  2666. (pguid: @GUID_Key; dwOfs: 164; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (164 shl 8); dwFlags: 0),
  2667. (pguid: @GUID_Key; dwOfs: 165; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (165 shl 8); dwFlags: 0),
  2668. (pguid: @GUID_Key; dwOfs: 166; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (166 shl 8); dwFlags: 0),
  2669. (pguid: @GUID_Key; dwOfs: 167; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (167 shl 8); dwFlags: 0),
  2670. (pguid: @GUID_Key; dwOfs: 168; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (168 shl 8); dwFlags: 0),
  2671. (pguid: @GUID_Key; dwOfs: 169; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (169 shl 8); dwFlags: 0),
  2672. (pguid: @GUID_Key; dwOfs: 170; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (170 shl 8); dwFlags: 0),
  2673. (pguid: @GUID_Key; dwOfs: 171; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (171 shl 8); dwFlags: 0),
  2674. (pguid: @GUID_Key; dwOfs: 172; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (172 shl 8); dwFlags: 0),
  2675. (pguid: @GUID_Key; dwOfs: 173; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (173 shl 8); dwFlags: 0),
  2676. (pguid: @GUID_Key; dwOfs: 174; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (174 shl 8); dwFlags: 0),
  2677. (pguid: @GUID_Key; dwOfs: 175; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (175 shl 8); dwFlags: 0),
  2678. (pguid: @GUID_Key; dwOfs: 176; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (176 shl 8); dwFlags: 0),
  2679. (pguid: @GUID_Key; dwOfs: 177; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (177 shl 8); dwFlags: 0),
  2680. (pguid: @GUID_Key; dwOfs: 178; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (178 shl 8); dwFlags: 0),
  2681. (pguid: @GUID_Key; dwOfs: 179; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (179 shl 8); dwFlags: 0),
  2682. (pguid: @GUID_Key; dwOfs: 180; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (180 shl 8); dwFlags: 0),
  2683. (pguid: @GUID_Key; dwOfs: 181; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (181 shl 8); dwFlags: 0),
  2684. (pguid: @GUID_Key; dwOfs: 182; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (182 shl 8); dwFlags: 0),
  2685. (pguid: @GUID_Key; dwOfs: 183; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (183 shl 8); dwFlags: 0),
  2686. (pguid: @GUID_Key; dwOfs: 184; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (184 shl 8); dwFlags: 0),
  2687. (pguid: @GUID_Key; dwOfs: 185; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (185 shl 8); dwFlags: 0),
  2688. (pguid: @GUID_Key; dwOfs: 186; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (186 shl 8); dwFlags: 0),
  2689. (pguid: @GUID_Key; dwOfs: 187; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (187 shl 8); dwFlags: 0),
  2690. (pguid: @GUID_Key; dwOfs: 188; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (188 shl 8); dwFlags: 0),
  2691. (pguid: @GUID_Key; dwOfs: 189; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (189 shl 8); dwFlags: 0),
  2692. (pguid: @GUID_Key; dwOfs: 190; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (190 shl 8); dwFlags: 0),
  2693. (pguid: @GUID_Key; dwOfs: 191; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (191 shl 8); dwFlags: 0),
  2694. (pguid: @GUID_Key; dwOfs: 192; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (192 shl 8); dwFlags: 0),
  2695. (pguid: @GUID_Key; dwOfs: 193; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (193 shl 8); dwFlags: 0),
  2696. (pguid: @GUID_Key; dwOfs: 194; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (194 shl 8); dwFlags: 0),
  2697. (pguid: @GUID_Key; dwOfs: 195; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (195 shl 8); dwFlags: 0),
  2698. (pguid: @GUID_Key; dwOfs: 196; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (196 shl 8); dwFlags: 0),
  2699. (pguid: @GUID_Key; dwOfs: 197; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (197 shl 8); dwFlags: 0),
  2700. (pguid: @GUID_Key; dwOfs: 198; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (198 shl 8); dwFlags: 0),
  2701. (pguid: @GUID_Key; dwOfs: 199; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (199 shl 8); dwFlags: 0),
  2702. (pguid: @GUID_Key; dwOfs: 200; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (200 shl 8); dwFlags: 0),
  2703. (pguid: @GUID_Key; dwOfs: 201; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (201 shl 8); dwFlags: 0),
  2704. (pguid: @GUID_Key; dwOfs: 202; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (202 shl 8); dwFlags: 0),
  2705. (pguid: @GUID_Key; dwOfs: 203; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (203 shl 8); dwFlags: 0),
  2706. (pguid: @GUID_Key; dwOfs: 204; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (204 shl 8); dwFlags: 0),
  2707. (pguid: @GUID_Key; dwOfs: 205; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (205 shl 8); dwFlags: 0),
  2708. (pguid: @GUID_Key; dwOfs: 206; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (206 shl 8); dwFlags: 0),
  2709. (pguid: @GUID_Key; dwOfs: 207; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (207 shl 8); dwFlags: 0),
  2710. (pguid: @GUID_Key; dwOfs: 208; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (208 shl 8); dwFlags: 0),
  2711. (pguid: @GUID_Key; dwOfs: 209; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (209 shl 8); dwFlags: 0),
  2712. (pguid: @GUID_Key; dwOfs: 210; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (210 shl 8); dwFlags: 0),
  2713. (pguid: @GUID_Key; dwOfs: 211; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (211 shl 8); dwFlags: 0),
  2714. (pguid: @GUID_Key; dwOfs: 212; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (212 shl 8); dwFlags: 0),
  2715. (pguid: @GUID_Key; dwOfs: 213; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (213 shl 8); dwFlags: 0),
  2716. (pguid: @GUID_Key; dwOfs: 214; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (214 shl 8); dwFlags: 0),
  2717. (pguid: @GUID_Key; dwOfs: 215; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (215 shl 8); dwFlags: 0),
  2718. (pguid: @GUID_Key; dwOfs: 216; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (216 shl 8); dwFlags: 0),
  2719. (pguid: @GUID_Key; dwOfs: 217; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (217 shl 8); dwFlags: 0),
  2720. (pguid: @GUID_Key; dwOfs: 218; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (218 shl 8); dwFlags: 0),
  2721. (pguid: @GUID_Key; dwOfs: 219; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (219 shl 8); dwFlags: 0),
  2722. (pguid: @GUID_Key; dwOfs: 220; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (220 shl 8); dwFlags: 0),
  2723. (pguid: @GUID_Key; dwOfs: 221; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (221 shl 8); dwFlags: 0),
  2724. (pguid: @GUID_Key; dwOfs: 222; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (222 shl 8); dwFlags: 0),
  2725. (pguid: @GUID_Key; dwOfs: 223; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (223 shl 8); dwFlags: 0),
  2726. (pguid: @GUID_Key; dwOfs: 224; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (224 shl 8); dwFlags: 0),
  2727. (pguid: @GUID_Key; dwOfs: 225; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (225 shl 8); dwFlags: 0),
  2728. (pguid: @GUID_Key; dwOfs: 226; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (226 shl 8); dwFlags: 0),
  2729. (pguid: @GUID_Key; dwOfs: 227; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (227 shl 8); dwFlags: 0),
  2730. (pguid: @GUID_Key; dwOfs: 228; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (228 shl 8); dwFlags: 0),
  2731. (pguid: @GUID_Key; dwOfs: 229; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (229 shl 8); dwFlags: 0),
  2732. (pguid: @GUID_Key; dwOfs: 230; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (230 shl 8); dwFlags: 0),
  2733. (pguid: @GUID_Key; dwOfs: 231; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (231 shl 8); dwFlags: 0),
  2734. (pguid: @GUID_Key; dwOfs: 232; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (232 shl 8); dwFlags: 0),
  2735. (pguid: @GUID_Key; dwOfs: 233; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (233 shl 8); dwFlags: 0),
  2736. (pguid: @GUID_Key; dwOfs: 234; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (234 shl 8); dwFlags: 0),
  2737. (pguid: @GUID_Key; dwOfs: 235; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (235 shl 8); dwFlags: 0),
  2738. (pguid: @GUID_Key; dwOfs: 236; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (236 shl 8); dwFlags: 0),
  2739. (pguid: @GUID_Key; dwOfs: 237; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (237 shl 8); dwFlags: 0),
  2740. (pguid: @GUID_Key; dwOfs: 238; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (238 shl 8); dwFlags: 0),
  2741. (pguid: @GUID_Key; dwOfs: 239; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (239 shl 8); dwFlags: 0),
  2742. (pguid: @GUID_Key; dwOfs: 240; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (240 shl 8); dwFlags: 0),
  2743. (pguid: @GUID_Key; dwOfs: 241; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (241 shl 8); dwFlags: 0),
  2744. (pguid: @GUID_Key; dwOfs: 242; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (242 shl 8); dwFlags: 0),
  2745. (pguid: @GUID_Key; dwOfs: 243; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (243 shl 8); dwFlags: 0),
  2746. (pguid: @GUID_Key; dwOfs: 244; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (244 shl 8); dwFlags: 0),
  2747. (pguid: @GUID_Key; dwOfs: 245; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (245 shl 8); dwFlags: 0),
  2748. (pguid: @GUID_Key; dwOfs: 246; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (246 shl 8); dwFlags: 0),
  2749. (pguid: @GUID_Key; dwOfs: 247; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (247 shl 8); dwFlags: 0),
  2750. (pguid: @GUID_Key; dwOfs: 248; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (248 shl 8); dwFlags: 0),
  2751. (pguid: @GUID_Key; dwOfs: 249; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (249 shl 8); dwFlags: 0),
  2752. (pguid: @GUID_Key; dwOfs: 250; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (250 shl 8); dwFlags: 0),
  2753. (pguid: @GUID_Key; dwOfs: 251; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (251 shl 8); dwFlags: 0),
  2754. (pguid: @GUID_Key; dwOfs: 252; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (252 shl 8); dwFlags: 0),
  2755. (pguid: @GUID_Key; dwOfs: 253; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (253 shl 8); dwFlags: 0),
  2756. (pguid: @GUID_Key; dwOfs: 254; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (254 shl 8); dwFlags: 0),
  2757. (pguid: @GUID_Key; dwOfs: 255; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (255 shl 8); dwFlags: 0)
  2758. );
  2759. {$EXTERNALSYM rgodfKeyboard}
  2760. const
  2761. c_dfDIKeyboard: TDIDataFormat = (
  2762. dwSize : Sizeof(c_dfDIKeyboard);
  2763. dwObjSize : Sizeof(TDIObjectDataFormat);
  2764. dwFlags : DIDF_RELAXIS;
  2765. dwDataSize : 256;
  2766. dwNumObjs : High(rgodfKeyboard) + 1;
  2767. rgodf : @rgodfKeyboard
  2768. );
  2769. {$EXTERNALSYM c_dfDIKeyboard}
  2770. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  2771. rgodfJoystick: array[0..43] of TDIObjectDataFormat = (
  2772. (pguid: @GUID_XAxis; dwOfs: DIJOFS_X; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2773. (pguid: @GUID_YAxis; dwOfs: DIJOFS_Y; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2774. (pguid: @GUID_ZAxis; dwOfs: DIJOFS_Z; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2775. (pguid: @GUID_RxAxis; dwOfs: DIJOFS_RX; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2776. (pguid: @GUID_RyAxis; dwOfs: DIJOFS_RY; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2777. (pguid: @GUID_RzAxis; dwOfs: DIJOFS_RZ; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2778. // 2 Sliders
  2779. (pguid: @GUID_Slider; dwOfs: 24; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2780. (pguid: @GUID_Slider; dwOfs: 28; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2781. // 4 POVs (yes, really)
  2782. (pguid: @GUID_POV; dwOfs: 32; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2783. (pguid: @GUID_POV; dwOfs: 36; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2784. (pguid: @GUID_POV; dwOfs: 40; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2785. (pguid: @GUID_POV; dwOfs: 44; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2786. // Buttons
  2787. (pguid: nil; dwOfs: DIJOFS_BUTTON0; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2788. (pguid: nil; dwOfs: DIJOFS_BUTTON1; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2789. (pguid: nil; dwOfs: DIJOFS_BUTTON2; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2790. (pguid: nil; dwOfs: DIJOFS_BUTTON3; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2791. (pguid: nil; dwOfs: DIJOFS_BUTTON4; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2792. (pguid: nil; dwOfs: DIJOFS_BUTTON5; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2793. (pguid: nil; dwOfs: DIJOFS_BUTTON6; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2794. (pguid: nil; dwOfs: DIJOFS_BUTTON7; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2795. (pguid: nil; dwOfs: DIJOFS_BUTTON8; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2796. (pguid: nil; dwOfs: DIJOFS_BUTTON9; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2797. (pguid: nil; dwOfs: DIJOFS_BUTTON10; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2798. (pguid: nil; dwOfs: DIJOFS_BUTTON11; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2799. (pguid: nil; dwOfs: DIJOFS_BUTTON12; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2800. (pguid: nil; dwOfs: DIJOFS_BUTTON13; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2801. (pguid: nil; dwOfs: DIJOFS_BUTTON14; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2802. (pguid: nil; dwOfs: DIJOFS_BUTTON15; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2803. (pguid: nil; dwOfs: DIJOFS_BUTTON16; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2804. (pguid: nil; dwOfs: DIJOFS_BUTTON17; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2805. (pguid: nil; dwOfs: DIJOFS_BUTTON18; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2806. (pguid: nil; dwOfs: DIJOFS_BUTTON19; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2807. (pguid: nil; dwOfs: DIJOFS_BUTTON20; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2808. (pguid: nil; dwOfs: DIJOFS_BUTTON21; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2809. (pguid: nil; dwOfs: DIJOFS_BUTTON22; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2810. (pguid: nil; dwOfs: DIJOFS_BUTTON23; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2811. (pguid: nil; dwOfs: DIJOFS_BUTTON24; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2812. (pguid: nil; dwOfs: DIJOFS_BUTTON25; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2813. (pguid: nil; dwOfs: DIJOFS_BUTTON26; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2814. (pguid: nil; dwOfs: DIJOFS_BUTTON27; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2815. (pguid: nil; dwOfs: DIJOFS_BUTTON28; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2816. (pguid: nil; dwOfs: DIJOFS_BUTTON29; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2817. (pguid: nil; dwOfs: DIJOFS_BUTTON30; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2818. (pguid: nil; dwOfs: DIJOFS_BUTTON31; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0)
  2819. );
  2820. {$EXTERNALSYM rgodfJoystick}
  2821. c_dfDIJoystick: TDIDataFormat = (
  2822. dwSize : Sizeof(c_dfDIJoystick);
  2823. dwObjSize : Sizeof(TDIObjectDataFormat); // $10
  2824. dwFlags : DIDF_ABSAXIS;
  2825. dwDataSize : SizeOf(TDIJoyState); // $10
  2826. dwNumObjs : High(rgodfJoystick) + 1; // $2C
  2827. rgodf : @rgodfJoystick
  2828. );
  2829. {$EXTERNALSYM c_dfDIJoystick}
  2830. rgodfJoystick2: array[0..163] of TDIObjectDataFormat = (
  2831. (pguid: @GUID_XAxis; dwOfs: DIJOFS_X; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2832. (pguid: @GUID_YAxis; dwOfs: DIJOFS_Y; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2833. (pguid: @GUID_ZAxis; dwOfs: DIJOFS_Z; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2834. (pguid: @GUID_RxAxis; dwOfs: DIJOFS_RX; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2835. (pguid: @GUID_RyAxis; dwOfs: DIJOFS_RY; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2836. (pguid: @GUID_RzAxis; dwOfs: DIJOFS_RZ; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2837. // 2 Sliders
  2838. (pguid: @GUID_Slider; dwOfs: 24; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2839. (pguid: @GUID_Slider; dwOfs: 28; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  2840. // 4 POVs (yes, really)
  2841. (pguid: @GUID_POV; dwOfs: 32; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2842. (pguid: @GUID_POV; dwOfs: 36; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2843. (pguid: @GUID_POV; dwOfs: 40; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2844. (pguid: @GUID_POV; dwOfs: 44; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2845. // Buttons
  2846. (pguid: nil; dwOfs: DIJOFS_BUTTON0; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2847. (pguid: nil; dwOfs: DIJOFS_BUTTON1; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2848. (pguid: nil; dwOfs: DIJOFS_BUTTON2; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2849. (pguid: nil; dwOfs: DIJOFS_BUTTON3; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2850. (pguid: nil; dwOfs: DIJOFS_BUTTON4; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2851. (pguid: nil; dwOfs: DIJOFS_BUTTON5; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2852. (pguid: nil; dwOfs: DIJOFS_BUTTON6; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2853. (pguid: nil; dwOfs: DIJOFS_BUTTON7; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2854. (pguid: nil; dwOfs: DIJOFS_BUTTON8; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2855. (pguid: nil; dwOfs: DIJOFS_BUTTON9; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2856. (pguid: nil; dwOfs: DIJOFS_BUTTON10; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2857. (pguid: nil; dwOfs: DIJOFS_BUTTON11; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2858. (pguid: nil; dwOfs: DIJOFS_BUTTON12; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2859. (pguid: nil; dwOfs: DIJOFS_BUTTON13; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2860. (pguid: nil; dwOfs: DIJOFS_BUTTON14; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2861. (pguid: nil; dwOfs: DIJOFS_BUTTON15; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2862. (pguid: nil; dwOfs: DIJOFS_BUTTON16; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2863. (pguid: nil; dwOfs: DIJOFS_BUTTON17; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2864. (pguid: nil; dwOfs: DIJOFS_BUTTON18; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2865. (pguid: nil; dwOfs: DIJOFS_BUTTON19; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2866. (pguid: nil; dwOfs: DIJOFS_BUTTON20; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2867. (pguid: nil; dwOfs: DIJOFS_BUTTON21; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2868. (pguid: nil; dwOfs: DIJOFS_BUTTON22; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2869. (pguid: nil; dwOfs: DIJOFS_BUTTON23; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2870. (pguid: nil; dwOfs: DIJOFS_BUTTON24; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2871. (pguid: nil; dwOfs: DIJOFS_BUTTON25; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2872. (pguid: nil; dwOfs: DIJOFS_BUTTON26; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2873. (pguid: nil; dwOfs: DIJOFS_BUTTON27; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2874. (pguid: nil; dwOfs: DIJOFS_BUTTON28; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2875. (pguid: nil; dwOfs: DIJOFS_BUTTON29; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2876. (pguid: nil; dwOfs: DIJOFS_BUTTON30; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2877. (pguid: nil; dwOfs: DIJOFS_BUTTON31; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  2878. (pguid: nil; dwOfs: 80; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2879. (pguid: nil; dwOfs: 81; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2880. (pguid: nil; dwOfs: 82; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2881. (pguid: nil; dwOfs: 83; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2882. (pguid: nil; dwOfs: 84; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2883. (pguid: nil; dwOfs: 85; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2884. (pguid: nil; dwOfs: 86; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2885. (pguid: nil; dwOfs: 87; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2886. (pguid: nil; dwOfs: 88; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2887. (pguid: nil; dwOfs: 89; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2888. (pguid: nil; dwOfs: 90; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2889. (pguid: nil; dwOfs: 91; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2890. (pguid: nil; dwOfs: 92; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2891. (pguid: nil; dwOfs: 93; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2892. (pguid: nil; dwOfs: 94; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2893. (pguid: nil; dwOfs: 95; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2894. (pguid: nil; dwOfs: 96; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2895. (pguid: nil; dwOfs: 97; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2896. (pguid: nil; dwOfs: 98; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2897. (pguid: nil; dwOfs: 99; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2898. (pguid: nil; dwOfs: 100; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2899. (pguid: nil; dwOfs: 101; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2900. (pguid: nil; dwOfs: 102; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2901. (pguid: nil; dwOfs: 103; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2902. (pguid: nil; dwOfs: 104; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2903. (pguid: nil; dwOfs: 105; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2904. (pguid: nil; dwOfs: 106; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2905. (pguid: nil; dwOfs: 107; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2906. (pguid: nil; dwOfs: 108; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2907. (pguid: nil; dwOfs: 109; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2908. (pguid: nil; dwOfs: 110; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2909. (pguid: nil; dwOfs: 111; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2910. (pguid: nil; dwOfs: 112; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2911. (pguid: nil; dwOfs: 113; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2912. (pguid: nil; dwOfs: 114; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2913. (pguid: nil; dwOfs: 115; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2914. (pguid: nil; dwOfs: 116; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2915. (pguid: nil; dwOfs: 117; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2916. (pguid: nil; dwOfs: 118; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2917. (pguid: nil; dwOfs: 119; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2918. (pguid: nil; dwOfs: 120; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2919. (pguid: nil; dwOfs: 121; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2920. (pguid: nil; dwOfs: 122; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2921. (pguid: nil; dwOfs: 123; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2922. (pguid: nil; dwOfs: 124; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2923. (pguid: nil; dwOfs: 125; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2924. (pguid: nil; dwOfs: 126; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2925. (pguid: nil; dwOfs: 127; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2926. (pguid: nil; dwOfs: 128; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2927. (pguid: nil; dwOfs: 129; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2928. (pguid: nil; dwOfs: 130; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2929. (pguid: nil; dwOfs: 131; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2930. (pguid: nil; dwOfs: 132; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2931. (pguid: nil; dwOfs: 133; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2932. (pguid: nil; dwOfs: 134; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2933. (pguid: nil; dwOfs: 135; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2934. (pguid: nil; dwOfs: 136; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2935. (pguid: nil; dwOfs: 137; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2936. (pguid: nil; dwOfs: 138; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2937. (pguid: nil; dwOfs: 139; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2938. (pguid: nil; dwOfs: 140; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2939. (pguid: nil; dwOfs: 141; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2940. (pguid: nil; dwOfs: 142; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2941. (pguid: nil; dwOfs: 143; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2942. (pguid: nil; dwOfs: 144; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2943. (pguid: nil; dwOfs: 145; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2944. (pguid: nil; dwOfs: 146; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2945. (pguid: nil; dwOfs: 147; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2946. (pguid: nil; dwOfs: 148; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2947. (pguid: nil; dwOfs: 149; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2948. (pguid: nil; dwOfs: 150; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2949. (pguid: nil; dwOfs: 151; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2950. (pguid: nil; dwOfs: 152; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2951. (pguid: nil; dwOfs: 153; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2952. (pguid: nil; dwOfs: 154; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2953. (pguid: nil; dwOfs: 155; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2954. (pguid: nil; dwOfs: 156; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2955. (pguid: nil; dwOfs: 157; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2956. (pguid: nil; dwOfs: 158; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2957. (pguid: nil; dwOfs: 159; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2958. (pguid: nil; dwOfs: 160; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2959. (pguid: nil; dwOfs: 161; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2960. (pguid: nil; dwOfs: 162; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2961. (pguid: nil; dwOfs: 163; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2962. (pguid: nil; dwOfs: 164; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2963. (pguid: nil; dwOfs: 165; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2964. (pguid: nil; dwOfs: 166; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2965. (pguid: nil; dwOfs: 167; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2966. (pguid: nil; dwOfs: 168; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2967. (pguid: nil; dwOfs: 169; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2968. (pguid: nil; dwOfs: 170; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2969. (pguid: nil; dwOfs: 171; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2970. (pguid: nil; dwOfs: 172; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2971. (pguid: nil; dwOfs: 173; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2972. (pguid: nil; dwOfs: 174; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2973. (pguid: nil; dwOfs: 175; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  2974. (pguid: @GUID_XAxis; dwOfs: 176; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  2975. (pguid: @GUID_YAxis; dwOfs: 180; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  2976. (pguid: @GUID_ZAxis; dwOfs: 184; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  2977. (pguid: @GUID_RxAxis; dwOfs: 188; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  2978. (pguid: @GUID_RyAxis; dwOfs: 192; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  2979. (pguid: @GUID_RzAxis; dwOfs: 196; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  2980. (pguid: @GUID_Slider; dwOfs: 24; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  2981. (pguid: @GUID_Slider; dwOfs: 28; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  2982. (pguid: @GUID_XAxis; dwOfs: 208; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  2983. (pguid: @GUID_YAxis; dwOfs: 212; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  2984. (pguid: @GUID_ZAxis; dwOfs: 216; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  2985. (pguid: @GUID_RxAxis; dwOfs: 220; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  2986. (pguid: @GUID_RyAxis; dwOfs: 224; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  2987. (pguid: @GUID_RzAxis; dwOfs: 228; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  2988. (pguid: @GUID_Slider; dwOfs: 24; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  2989. (pguid: @GUID_Slider; dwOfs: 28; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  2990. (pguid: @GUID_XAxis; dwOfs: 240; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  2991. (pguid: @GUID_YAxis; dwOfs: 244; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  2992. (pguid: @GUID_ZAxis; dwOfs: 248; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  2993. (pguid: @GUID_RxAxis; dwOfs: 252; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  2994. (pguid: @GUID_RyAxis; dwOfs: 256; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  2995. (pguid: @GUID_RzAxis; dwOfs: 260; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  2996. (pguid: @GUID_Slider; dwOfs: 24; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  2997. (pguid: @GUID_Slider; dwOfs: 28; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE)
  2998. );
  2999. {$EXTERNALSYM rgodfJoystick2}
  3000. c_dfDIJoystick2: TDIDataFormat = (
  3001. dwSize : Sizeof(c_dfDIJoystick2);
  3002. dwObjSize : Sizeof(TDIObjectDataFormat);
  3003. dwFlags : DIDF_ABSAXIS;
  3004. dwDataSize : SizeOf(TDIJoyState2);
  3005. dwNumObjs : High(rgodfJoystick2) + 1;
  3006. rgodf : @rgodfJoystick2
  3007. );
  3008. {$EXTERNALSYM c_dfDIJoystick2}
  3009. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  3010. (****************************************************************************
  3011. *
  3012. * IDirectInput
  3013. *
  3014. ****************************************************************************)
  3015. const
  3016. DIENUM_STOP = BOOL(0);
  3017. {$EXTERNALSYM DIENUM_STOP}
  3018. DIENUM_CONTINUE = BOOL(1);
  3019. {$EXTERNALSYM DIENUM_CONTINUE}
  3020. type
  3021. TDIEnumDevicesCallbackA = function (var lpddi: TDIDeviceInstanceA; pvRef: Pointer): BOOL; stdcall;
  3022. {$EXTERNALSYM TDIEnumDevicesCallbackA}
  3023. TDIEnumDevicesCallbackW = function (var lpddi: TDIDeviceInstanceW; pvRef: Pointer): BOOL; stdcall;
  3024. {$EXTERNALSYM TDIEnumDevicesCallbackW}
  3025. TDIEnumDevicesCallback = TDIEnumDevicesCallbackA;
  3026. {$EXTERNALSYM TDIEnumDevicesCallback}
  3027. TDIConfigureDevicesCallback = function (lpDDSTarget: IUnknown; pvRef: Pointer): BOOL; stdcall;
  3028. const
  3029. DIEDFL_ALLDEVICES = $00000000;
  3030. {$EXTERNALSYM DIEDFL_ALLDEVICES}
  3031. DIEDFL_ATTACHEDONLY = $00000001;
  3032. {$EXTERNALSYM DIEDFL_ATTACHEDONLY}
  3033. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  3034. DIEDFL_FORCEFEEDBACK = $00000100;
  3035. {$EXTERNALSYM DIEDFL_FORCEFEEDBACK}
  3036. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  3037. {$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
  3038. DIEDFL_INCLUDEALIASES = $00010000;
  3039. {$EXTERNALSYM DIEDFL_INCLUDEALIASES}
  3040. DIEDFL_INCLUDEPHANTOMS = $00020000;
  3041. {$EXTERNALSYM DIEDFL_INCLUDEPHANTOMS}
  3042. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
  3043. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  3044. DIEDFL_INCLUDEHIDDEN = $00040000;
  3045. {$EXTERNALSYM DIEDFL_INCLUDEHIDDEN}
  3046. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  3047. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  3048. type
  3049. TDIEnumDevicesBySemanticsCallbackA = function (var lpddi: TDIDeviceInstanceA; lpdid: IDirectInputDevice8A; dwFlags, dwRemaining: DWORD; pvRef: Pointer): BOOL; stdcall;
  3050. {$EXTERNALSYM TDIEnumDevicesBySemanticsCallbackA}
  3051. TDIEnumDevicesBySemanticsCallbackW = function (var lpddi: TDIDeviceInstanceW; lpdid: IDirectInputDevice8W; dwFlags, dwRemaining: DWORD; pvRef: Pointer): BOOL; stdcall;
  3052. {$EXTERNALSYM TDIEnumDevicesBySemanticsCallbackW}
  3053. TDIEnumDevicesBySemanticsCallback = TDIEnumDevicesBySemanticsCallbackA;
  3054. {$EXTERNALSYM TDIEnumDevicesBySemanticsCallback}
  3055. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  3056. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  3057. const
  3058. DIEDBS_MAPPEDPRI1 = $00000001;
  3059. {$EXTERNALSYM DIEDBS_MAPPEDPRI1}
  3060. DIEDBS_MAPPEDPRI2 = $00000002;
  3061. {$EXTERNALSYM DIEDBS_MAPPEDPRI2}
  3062. DIEDBS_RECENTDEVICE = $00000010;
  3063. {$EXTERNALSYM DIEDBS_RECENTDEVICE}
  3064. DIEDBS_NEWDEVICE = $00000020;
  3065. {$EXTERNALSYM DIEDBS_NEWDEVICE}
  3066. DIEDBSFL_ATTACHEDONLY = $00000000;
  3067. {$EXTERNALSYM DIEDBSFL_ATTACHEDONLY}
  3068. DIEDBSFL_THISUSER = $00000010;
  3069. {$EXTERNALSYM DIEDBSFL_THISUSER}
  3070. DIEDBSFL_FORCEFEEDBACK = DIEDFL_FORCEFEEDBACK;
  3071. {$EXTERNALSYM DIEDBSFL_FORCEFEEDBACK}
  3072. DIEDBSFL_AVAILABLEDEVICES = $00001000;
  3073. {$EXTERNALSYM DIEDBSFL_AVAILABLEDEVICES}
  3074. DIEDBSFL_MULTIMICEKEYBOARDS = $00002000;
  3075. {$EXTERNALSYM DIEDBSFL_MULTIMICEKEYBOARDS}
  3076. DIEDBSFL_NONGAMINGDEVICES = $00004000;
  3077. {$EXTERNALSYM DIEDBSFL_NONGAMINGDEVICES}
  3078. DIEDBSFL_VALID = $00007110;
  3079. {$EXTERNALSYM DIEDBSFL_VALID}
  3080. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  3081. type
  3082. {$EXTERNALSYM IDirectInputA}
  3083. IDirectInputA = interface(IUnknown)
  3084. [SID_IDirectInputA]
  3085. (*** IDirectInputA methods ***)
  3086. function CreateDevice(const rguid: TGUID; out lplpDirectInputDevice: IDirectInputDeviceA; pUnkOuter: IUnknown): HResult; stdcall;
  3087. function EnumDevices(dwDevType: DWORD; lpCallback: TDIEnumDevicesCallbackA; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  3088. function GetDeviceStatus(const rguidInstance: TGUID): HResult; stdcall;
  3089. function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD): HResult; stdcall;
  3090. function Initialize(hinst: THandle; dwVersion: DWORD): HResult; stdcall;
  3091. end;
  3092. {$EXTERNALSYM IDirectInputW}
  3093. IDirectInputW = interface(IUnknown)
  3094. [SID_IDirectInputW]
  3095. (*** IDirectInputW methods ***)
  3096. function CreateDevice(const rguid: TGUID; out lplpDirectInputDevice: IDirectInputDeviceW; pUnkOuter: IUnknown): HResult; stdcall;
  3097. function EnumDevices(dwDevType: DWORD; lpCallback: TDIEnumDevicesCallbackW; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  3098. function GetDeviceStatus(const rguidInstance: TGUID): HResult; stdcall;
  3099. function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD): HResult; stdcall;
  3100. function Initialize(hinst: THandle; dwVersion: DWORD): HResult; stdcall;
  3101. end;
  3102. {$EXTERNALSYM IDirectInput}
  3103. IDirectInput = IDirectInputA;
  3104. type
  3105. IID_IDirectInput = IDirectInput;
  3106. {$EXTERNALSYM IID_IDirectInput}
  3107. type
  3108. {$EXTERNALSYM IDirectInput2A}
  3109. IDirectInput2A = interface(IDirectInputA)
  3110. [SID_IDirectInput2A]
  3111. (*** IDirectInput2A methods ***)
  3112. function FindDevice(const rguidClass: TGUID; ptszName: PAnsiChar; out pguidInstance: TGUID): HResult; stdcall;
  3113. end;
  3114. {$EXTERNALSYM IDirectInput2W}
  3115. IDirectInput2W = interface(IDirectInputW)
  3116. [SID_IDirectInput2W]
  3117. (*** IDirectInput2W methods ***)
  3118. function FindDevice(const rguidClass: TGUID; ptszName: PWideChar; out pguidInstance: TGUID): HResult; stdcall;
  3119. end;
  3120. {$EXTERNALSYM IDirectInput2}
  3121. IDirectInput2 = IDirectInput2A;
  3122. type
  3123. IID_IDirectInput2 = IDirectInput2;
  3124. {$EXTERNALSYM IID_IDirectInput2}
  3125. type
  3126. {$EXTERNALSYM IDirectInput7A}
  3127. IDirectInput7A = interface(IDirectInput2A)
  3128. [SID_IDirectInput7A]
  3129. (*** IDirectInput7A methods ***)
  3130. function CreateDeviceEx(const rguid, riid: TGUID; out pvOut: Pointer; pUnkOuter: IUnknown) : HResult; stdcall;
  3131. end;
  3132. {$EXTERNALSYM IDirectInput7W}
  3133. IDirectInput7W = interface(IDirectInput2W)
  3134. [SID_IDirectInput7W]
  3135. (*** IDirectInput7W methods ***)
  3136. function CreateDeviceEx(const rguid, riid: TGUID; out pvOut: Pointer; pUnkOuter: IUnknown) : HResult; stdcall;
  3137. end;
  3138. {$EXTERNALSYM IDirectInput7}
  3139. IDirectInput7 = IDirectInput7A;
  3140. type
  3141. IID_IDirectInput7 = IDirectInput7;
  3142. {$EXTERNALSYM IID_IDirectInput7}
  3143. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  3144. type
  3145. {$EXTERNALSYM IDirectInput8A}
  3146. IDirectInput8A = interface(IUnknown)
  3147. [SID_IDirectInput8A]
  3148. (*** IDirectInput8A methods ***)
  3149. function CreateDevice(const rguid: TGUID; out lplpDirectInputDevice: IDirectInputDevice8A; pUnkOuter: IUnknown): HResult; stdcall;
  3150. function EnumDevices(dwDevType: DWORD; lpCallback: TDIEnumDevicesCallbackA; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  3151. function GetDeviceStatus(const rguidInstance: TGUID): HResult; stdcall;
  3152. function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD): HResult; stdcall;
  3153. function Initialize(hinst: THandle; dwVersion: DWORD): HResult; stdcall;
  3154. function FindDevice(const rguidClass: TGUID; ptszName: PAnsiChar; out pguidInstance: TGUID): HResult; stdcall;
  3155. function EnumDevicesBySemantics(ptszUserName: PAnsiChar; lpdiActionFormat: TDIActionFormatA; lpCallback: TDIEnumDevicesBySemanticsCallbackA; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  3156. function ConfigureDevices(lpdiCallback: TDIConfigureDevicesCallback; lpdiCDParams: TDIConfigureDevicesParamsA; dwFlags: DWORD; pvRefData: Pointer): HResult; stdcall;
  3157. end;
  3158. {$EXTERNALSYM IDirectInput8W}
  3159. IDirectInput8W = interface(IUnknown)
  3160. [SID_IDirectInput8W]
  3161. (*** IDirectInput8W methods ***)
  3162. function CreateDevice(const rguid: TGUID; out lplpDirectInputDevice: IDirectInputDevice8W; pUnkOuter: IUnknown): HResult; stdcall;
  3163. function EnumDevices(dwDevType: DWORD; lpCallback: TDIEnumDevicesCallbackW; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  3164. function GetDeviceStatus(const rguidInstance: TGUID): HResult; stdcall;
  3165. function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD): HResult; stdcall;
  3166. function Initialize(hinst: THandle; dwVersion: DWORD): HResult; stdcall;
  3167. function FindDevice(const rguidClass: TGUID; ptszName: PWideChar; out pguidInstance: TGUID): HResult; stdcall;
  3168. function EnumDevicesBySemantics(ptszUserName: PWideChar; lpdiActionFormat: TDIActionFormatW; lpCallback: TDIEnumDevicesBySemanticsCallbackW; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  3169. function ConfigureDevices(lpdiCallback: TDIConfigureDevicesCallback; lpdiCDParams: TDIConfigureDevicesParamsW; dwFlags: DWORD; pvRefData: Pointer): HResult; stdcall;
  3170. end;
  3171. {$EXTERNALSYM IDirectInput8}
  3172. IDirectInput8 = IDirectInput8A;
  3173. type
  3174. IID_IDirectInput8 = IDirectInput8;
  3175. {$EXTERNALSYM IID_IDirectInput8}
  3176. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  3177. const
  3178. DirectInputDll = 'dinput.dll';
  3179. DirectInput8Dll = 'dinput8.dll';
  3180. function DirectInputLoaded: Boolean;
  3181. function UnLoadDirectInput: Boolean;
  3182. function LoadDirectInput: Boolean;
  3183. {$IFDEF DIRECTINPUT_DYNAMIC_LINK}
  3184. //{$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION > 0x0700) *)
  3185. var
  3186. DirectInput8Create: function(hinst: THandle; dwVersion: Cardinal; const riidltf: TGUID; out ppvOut; punkOuter: IUnknown): HResult; stdcall;
  3187. {$EXTERNALSYM DirectInput8Create}
  3188. //{$ELSE}
  3189. DirectInputCreateA: function(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInputA; punkOuter: IUnknown): HResult; stdcall;
  3190. {$EXTERNALSYM DirectInputCreateA}
  3191. DirectInputCreateW: function(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInputW; punkOuter: IUnknown): HResult; stdcall;
  3192. {$EXTERNALSYM DirectInputCreateW}
  3193. DirectInputCreate: function(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInput; punkOuter: IUnknown): HResult; stdcall;
  3194. {$EXTERNALSYM DirectInputCreate}
  3195. DirectInputCreateEx: function(hinst : THandle; dwVersion: DWORD; const riidltf: TGUID; out ppvOut; punkOuter: IUnknown): HResult; stdcall;
  3196. {$EXTERNALSYM DirectInputCreateEx}
  3197. //{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  3198. {$ELSE}
  3199. //{$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION > 0x0700) *)
  3200. function DirectInput8Create(hinst: THandle; dwVersion: DWORD; const riidltf: TGUID; out ppvOut{: Pointer}; punkOuter: IUnknown): HResult; stdcall; external DirectInput8Dll;
  3201. {$EXTERNALSYM DirectInput8Create}
  3202. //{$ELSE}
  3203. function DirectInputCreateA(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInputA; punkOuter: IUnknown): HResult; stdcall; external DirectInputDll name 'DirectInputCreateA';
  3204. {$EXTERNALSYM DirectInputCreateA}
  3205. function DirectInputCreateW(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInputW; punkOuter: IUnknown): HResult; stdcall; external DirectInputDll name 'DirectInputCreateW';
  3206. {$EXTERNALSYM DirectInputCreateW}
  3207. function DirectInputCreate(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInput; punkOuter: IUnknown): HResult; stdcall; external DirectInputDll name 'DirectInputCreateA';
  3208. {$EXTERNALSYM DirectInputCreate}
  3209. function DirectInputCreateEx(hinst: THandle; dwVersion: DWORD; const riidltf: TGUID; out ppvOut{: Pointer}; punkOuter: IUnknown): HResult; stdcall; external DirectInputDll;
  3210. {$EXTERNALSYM DirectInputCreateEx}
  3211. //{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  3212. {$ENDIF}
  3213. (****************************************************************************
  3214. *
  3215. * Return Codes
  3216. *
  3217. ****************************************************************************)
  3218. const
  3219. (*
  3220. * The operation completed successfully.
  3221. *)
  3222. DI_OK = S_OK;
  3223. {$EXTERNALSYM DI_OK}
  3224. (*
  3225. * The device exists but is not currently attached.
  3226. *)
  3227. DI_NOTATTACHED = S_FALSE;
  3228. {$EXTERNALSYM DI_NOTATTACHED}
  3229. (*
  3230. * The device buffer overflowed. Some input was lost.
  3231. *)
  3232. DI_BUFFEROVERFLOW = S_FALSE;
  3233. {$EXTERNALSYM DI_BUFFEROVERFLOW}
  3234. (*
  3235. * The change in device properties had no effect.
  3236. *)
  3237. DI_PROPNOEFFECT = S_FALSE;
  3238. {$EXTERNALSYM DI_PROPNOEFFECT}
  3239. (*
  3240. * The operation had no effect.
  3241. *)
  3242. DI_NOEFFECT = S_FALSE;
  3243. {$EXTERNALSYM DI_NOEFFECT}
  3244. (*
  3245. * The device is a polled device. As a result, device buffering
  3246. * will not collect any data and event notifications will not be
  3247. * signalled until GetDeviceState is called.
  3248. *)
  3249. DI_POLLEDDEVICE = HRESULT($00000002);
  3250. {$EXTERNALSYM DI_POLLEDDEVICE}
  3251. (*
  3252. * The parameters of the effect were successfully updated by
  3253. * IDirectInputEffect::SetParameters, but the effect was not
  3254. * downloaded because the device is not exclusively acquired
  3255. * or because the DIEP_NODOWNLOAD flag was passed.
  3256. *)
  3257. DI_DOWNLOADSKIPPED = HRESULT($00000003);
  3258. {$EXTERNALSYM DI_DOWNLOADSKIPPED}
  3259. (*
  3260. * The parameters of the effect were successfully updated by
  3261. * IDirectInputEffect::SetParameters, but in order to change
  3262. * the parameters, the effect needed to be restarted.
  3263. *)
  3264. DI_EFFECTRESTARTED = HRESULT($00000004);
  3265. {$EXTERNALSYM DI_EFFECTRESTARTED}
  3266. (*
  3267. * The parameters of the effect were successfully updated by
  3268. * IDirectInputEffect::SetParameters, but some of them were
  3269. * beyond the capabilities of the device and were truncated.
  3270. *)
  3271. DI_TRUNCATED = HRESULT($00000008);
  3272. {$EXTERNALSYM DI_TRUNCATED}
  3273. (*
  3274. * The settings have been successfully applied but could not be
  3275. * persisted.
  3276. *)
  3277. DI_SETTINGSNOTSAVED = HRESULT($0000000B);
  3278. {$EXTERNALSYM DI_SETTINGSNOTSAVED}
  3279. (*
  3280. * Equal to DI_EFFECTRESTARTED | DI_TRUNCATED.
  3281. *)
  3282. DI_TRUNCATEDANDRESTARTED = HRESULT($0000000C);
  3283. {$EXTERNALSYM DI_TRUNCATEDANDRESTARTED}
  3284. (*
  3285. * A SUCCESS code indicating that settings cannot be modified.
  3286. *)
  3287. DI_WRITEPROTECT = HRESULT($00000013);
  3288. {$EXTERNALSYM DI_WRITEPROTECT}
  3289. SEVERITY_ERROR_FACILITY_WIN32 =
  3290. HResult(SEVERITY_ERROR shl 31) or HResult(FACILITY_WIN32 shl 16);
  3291. {$EXTERNALSYM SEVERITY_ERROR_FACILITY_WIN32}
  3292. (*
  3293. * The application requires a newer version of DirectInput.
  3294. *)
  3295. DIERR_OLDDIRECTINPUTVERSION = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  3296. ERROR_OLD_WIN_VERSION);
  3297. {$EXTERNALSYM DIERR_OLDDIRECTINPUTVERSION}
  3298. (*
  3299. * The application was written for an unsupported prerelease version
  3300. * of DirectInput.
  3301. *)
  3302. DIERR_BETADIRECTINPUTVERSION = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  3303. ERROR_RMODE_APP);
  3304. {$EXTERNALSYM DIERR_BETADIRECTINPUTVERSION}
  3305. (*
  3306. * The object could not be created due to an incompatible driver version
  3307. * or mismatched or incomplete driver components.
  3308. *)
  3309. DIERR_BADDRIVERVER = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  3310. ERROR_BAD_DRIVER_LEVEL);
  3311. {$EXTERNALSYM DIERR_BADDRIVERVER}
  3312. (*
  3313. * The device or device instance or effect is not registered with DirectInput.
  3314. *)
  3315. DIERR_DEVICENOTREG = REGDB_E_CLASSNOTREG;
  3316. {$EXTERNALSYM DIERR_DEVICENOTREG}
  3317. (*
  3318. * The requested object does not exist.
  3319. *)
  3320. DIERR_NOTFOUND = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  3321. ERROR_FILE_NOT_FOUND);
  3322. {$EXTERNALSYM DIERR_NOTFOUND}
  3323. (*
  3324. * The requested object does not exist.
  3325. *)
  3326. DIERR_OBJECTNOTFOUND = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  3327. ERROR_FILE_NOT_FOUND);
  3328. {$EXTERNALSYM DIERR_OBJECTNOTFOUND}
  3329. (*
  3330. * An invalid parameter was passed to the returning function,
  3331. * or the object was not in a state that admitted the function
  3332. * to be called.
  3333. *)
  3334. DIERR_INVALIDPARAM = E_INVALIDARG;
  3335. {$EXTERNALSYM DIERR_INVALIDPARAM}
  3336. (*
  3337. * The specified interface is not supported by the object
  3338. *)
  3339. DIERR_NOINTERFACE = E_NOINTERFACE;
  3340. {$EXTERNALSYM DIERR_NOINTERFACE}
  3341. (*
  3342. * An undetermined error occured inside the DInput subsystem
  3343. *)
  3344. DIERR_GENERIC = E_FAIL;
  3345. {$EXTERNALSYM DIERR_GENERIC}
  3346. (*
  3347. * The DInput subsystem couldn't allocate sufficient memory to complete the
  3348. * caller's request.
  3349. *)
  3350. DIERR_OUTOFMEMORY = E_OUTOFMEMORY;
  3351. {$EXTERNALSYM DIERR_OUTOFMEMORY}
  3352. (*
  3353. * The function called is not supported at this time
  3354. *)
  3355. DIERR_UNSUPPORTED = E_NOTIMPL;
  3356. {$EXTERNALSYM DIERR_UNSUPPORTED}
  3357. (*
  3358. * This object has not been initialized
  3359. *)
  3360. DIERR_NOTINITIALIZED = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  3361. ERROR_NOT_READY);
  3362. {$EXTERNALSYM DIERR_NOTINITIALIZED}
  3363. (*
  3364. * This object is already initialized
  3365. *)
  3366. DIERR_ALREADYINITIALIZED = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  3367. ERROR_ALREADY_INITIALIZED);
  3368. {$EXTERNALSYM DIERR_ALREADYINITIALIZED}
  3369. (*
  3370. * This object does not support aggregation
  3371. *)
  3372. DIERR_NOAGGREGATION = CLASS_E_NOAGGREGATION;
  3373. {$EXTERNALSYM DIERR_NOAGGREGATION}
  3374. (*
  3375. * Another app has a higher priority level, preventing this call from
  3376. * succeeding.
  3377. *)
  3378. DIERR_OTHERAPPHASPRIO = E_ACCESSDENIED;
  3379. {$EXTERNALSYM DIERR_OTHERAPPHASPRIO}
  3380. (*
  3381. * Access to the device has been lost. It must be re-acquired.
  3382. *)
  3383. DIERR_INPUTLOST = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  3384. ERROR_READ_FAULT);
  3385. {$EXTERNALSYM DIERR_INPUTLOST}
  3386. (*
  3387. * The operation cannot be performed while the device is acquired.
  3388. *)
  3389. DIERR_ACQUIRED = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  3390. ERROR_BUSY);
  3391. {$EXTERNALSYM DIERR_ACQUIRED}
  3392. (*
  3393. * The operation cannot be performed unless the device is acquired.
  3394. *)
  3395. DIERR_NOTACQUIRED = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  3396. ERROR_INVALID_ACCESS);
  3397. {$EXTERNALSYM DIERR_NOTACQUIRED}
  3398. (*
  3399. * The specified property cannot be changed.
  3400. *)
  3401. DIERR_READONLY = E_ACCESSDENIED;
  3402. {$EXTERNALSYM DIERR_READONLY}
  3403. (*
  3404. * The device already has an event notification associated with it.
  3405. *)
  3406. DIERR_HANDLEEXISTS = E_ACCESSDENIED;
  3407. {$EXTERNALSYM DIERR_HANDLEEXISTS}
  3408. (*
  3409. * Data is not yet available.
  3410. *)
  3411. E_PENDING = $8000000A;
  3412. {$EXTERNALSYM E_PENDING}
  3413. (*
  3414. * Unable to IDirectInputJoyConfig_Acquire because the user
  3415. * does not have sufficient privileges to change the joystick
  3416. * configuration.
  3417. *)
  3418. DIERR_INSUFFICIENTPRIVS = $80040200;
  3419. {$EXTERNALSYM DIERR_INSUFFICIENTPRIVS}
  3420. (*
  3421. * The device is full.
  3422. *)
  3423. DIERR_DEVICEFULL = $80040201;
  3424. {$EXTERNALSYM DIERR_DEVICEFULL}
  3425. (*
  3426. * Not all the requested information fit into the buffer.
  3427. *)
  3428. DIERR_MOREDATA = $80040202;
  3429. {$EXTERNALSYM DIERR_MOREDATA}
  3430. (*
  3431. * The effect is not downloaded.
  3432. *)
  3433. DIERR_NOTDOWNLOADED = $80040203;
  3434. {$EXTERNALSYM DIERR_NOTDOWNLOADED}
  3435. (*
  3436. * The device cannot be reinitialized because there are still effects
  3437. * attached to it.
  3438. *)
  3439. DIERR_HASEFFECTS = $80040204;
  3440. {$EXTERNALSYM DIERR_HASEFFECTS}
  3441. (*
  3442. * The operation cannot be performed unless the device is acquired
  3443. * in DISCL_EXCLUSIVE mode.
  3444. *)
  3445. DIERR_NOTEXCLUSIVEACQUIRED = $80040205;
  3446. {$EXTERNALSYM DIERR_NOTEXCLUSIVEACQUIRED}
  3447. (*
  3448. * The effect could not be downloaded because essential information
  3449. * is missing. For example, no axes have been associated with the
  3450. * effect, or no type-specific information has been created.
  3451. *)
  3452. DIERR_INCOMPLETEEFFECT = $80040206;
  3453. {$EXTERNALSYM DIERR_INCOMPLETEEFFECT}
  3454. (*
  3455. * Attempted to read buffered device data from a device that is
  3456. * not buffered.
  3457. *)
  3458. DIERR_NOTBUFFERED = $80040207;
  3459. {$EXTERNALSYM DIERR_NOTBUFFERED}
  3460. (*
  3461. * An attempt was made to modify parameters of an effect while it is
  3462. * playing. Not all hardware devices support altering the parameters
  3463. * of an effect while it is playing.
  3464. *)
  3465. DIERR_EFFECTPLAYING = $80040208;
  3466. {$EXTERNALSYM DIERR_EFFECTPLAYING}
  3467. (*
  3468. * The operation could not be completed because the device is not
  3469. * plugged in.
  3470. *)
  3471. DIERR_UNPLUGGED = $80040209;
  3472. {$EXTERNALSYM DIERR_UNPLUGGED}
  3473. (*
  3474. * SendDeviceData failed because more information was requested
  3475. * to be sent than can be sent to the device. Some devices have
  3476. * restrictions on how much data can be sent to them. (For example,
  3477. * there might be a limit on the number of buttons that can be
  3478. * pressed at once.)
  3479. *)
  3480. DIERR_REPORTFULL = $8004020A;
  3481. {$EXTERNALSYM DIERR_REPORTFULL}
  3482. (*
  3483. * A mapper file function failed because reading or writing the user or IHV
  3484. * settings file failed.
  3485. *)
  3486. DIERR_MAPFILEFAIL = $8004020B;
  3487. {$EXTERNALSYM DIERR_MAPFILEFAIL}
  3488. (*--- DINPUT Mapper Definitions: New for Dx8 ---*)
  3489. (*--- Keyboard
  3490. Physical Keyboard Device ---*)
  3491. DIKEYBOARD_ESCAPE = $81000401;
  3492. {$EXTERNALSYM DIKEYBOARD_ESCAPE}
  3493. DIKEYBOARD_1 = $81000402;
  3494. {$EXTERNALSYM DIKEYBOARD_1}
  3495. DIKEYBOARD_2 = $81000403;
  3496. {$EXTERNALSYM DIKEYBOARD_2}
  3497. DIKEYBOARD_3 = $81000404;
  3498. {$EXTERNALSYM DIKEYBOARD_3}
  3499. DIKEYBOARD_4 = $81000405;
  3500. {$EXTERNALSYM DIKEYBOARD_4}
  3501. DIKEYBOARD_5 = $81000406;
  3502. {$EXTERNALSYM DIKEYBOARD_5}
  3503. DIKEYBOARD_6 = $81000407;
  3504. {$EXTERNALSYM DIKEYBOARD_6}
  3505. DIKEYBOARD_7 = $81000408;
  3506. {$EXTERNALSYM DIKEYBOARD_7}
  3507. DIKEYBOARD_8 = $81000409;
  3508. {$EXTERNALSYM DIKEYBOARD_8}
  3509. DIKEYBOARD_9 = $8100040A;
  3510. {$EXTERNALSYM DIKEYBOARD_9}
  3511. DIKEYBOARD_0 = $8100040B;
  3512. {$EXTERNALSYM DIKEYBOARD_0}
  3513. DIKEYBOARD_MINUS = $8100040C; (* - on main keyboard *)
  3514. {$EXTERNALSYM DIKEYBOARD_MINUS}
  3515. DIKEYBOARD_EQUALS = $8100040D;
  3516. {$EXTERNALSYM DIKEYBOARD_EQUALS}
  3517. DIKEYBOARD_BACK = $8100040E; (* backspace *)
  3518. {$EXTERNALSYM DIKEYBOARD_BACK}
  3519. DIKEYBOARD_TAB = $8100040F;
  3520. {$EXTERNALSYM DIKEYBOARD_TAB}
  3521. DIKEYBOARD_Q = $81000410;
  3522. {$EXTERNALSYM DIKEYBOARD_Q}
  3523. DIKEYBOARD_W = $81000411;
  3524. {$EXTERNALSYM DIKEYBOARD_W}
  3525. DIKEYBOARD_E = $81000412;
  3526. {$EXTERNALSYM DIKEYBOARD_E}
  3527. DIKEYBOARD_R = $81000413;
  3528. {$EXTERNALSYM DIKEYBOARD_R}
  3529. DIKEYBOARD_T = $81000414;
  3530. {$EXTERNALSYM DIKEYBOARD_T}
  3531. DIKEYBOARD_Y = $81000415;
  3532. {$EXTERNALSYM DIKEYBOARD_Y}
  3533. DIKEYBOARD_U = $81000416;
  3534. {$EXTERNALSYM DIKEYBOARD_U}
  3535. DIKEYBOARD_I = $81000417;
  3536. {$EXTERNALSYM DIKEYBOARD_I}
  3537. DIKEYBOARD_O = $81000418;
  3538. {$EXTERNALSYM DIKEYBOARD_O}
  3539. DIKEYBOARD_P = $81000419;
  3540. {$EXTERNALSYM DIKEYBOARD_P}
  3541. DIKEYBOARD_LBRACKET = $8100041A;
  3542. {$EXTERNALSYM DIKEYBOARD_LBRACKET}
  3543. DIKEYBOARD_RBRACKET = $8100041B;
  3544. {$EXTERNALSYM DIKEYBOARD_RBRACKET}
  3545. DIKEYBOARD_RETURN = $8100041C; (* Enter on main keyboard *)
  3546. {$EXTERNALSYM DIKEYBOARD_RETURN}
  3547. DIKEYBOARD_LCONTROL = $8100041D;
  3548. {$EXTERNALSYM DIKEYBOARD_LCONTROL}
  3549. DIKEYBOARD_A = $8100041E;
  3550. {$EXTERNALSYM DIKEYBOARD_A}
  3551. DIKEYBOARD_S = $8100041F;
  3552. {$EXTERNALSYM DIKEYBOARD_S}
  3553. DIKEYBOARD_D = $81000420;
  3554. {$EXTERNALSYM DIKEYBOARD_D}
  3555. DIKEYBOARD_F = $81000421;
  3556. {$EXTERNALSYM DIKEYBOARD_F}
  3557. DIKEYBOARD_G = $81000422;
  3558. {$EXTERNALSYM DIKEYBOARD_G}
  3559. DIKEYBOARD_H = $81000423;
  3560. {$EXTERNALSYM DIKEYBOARD_H}
  3561. DIKEYBOARD_J = $81000424;
  3562. {$EXTERNALSYM DIKEYBOARD_J}
  3563. DIKEYBOARD_K = $81000425;
  3564. {$EXTERNALSYM DIKEYBOARD_K}
  3565. DIKEYBOARD_L = $81000426;
  3566. {$EXTERNALSYM DIKEYBOARD_L}
  3567. DIKEYBOARD_SEMICOLON = $81000427;
  3568. {$EXTERNALSYM DIKEYBOARD_SEMICOLON}
  3569. DIKEYBOARD_APOSTROPHE = $81000428;
  3570. {$EXTERNALSYM DIKEYBOARD_APOSTROPHE}
  3571. DIKEYBOARD_GRAVE = $81000429; (* accent grave *)
  3572. {$EXTERNALSYM DIKEYBOARD_GRAVE}
  3573. DIKEYBOARD_LSHIFT = $8100042A;
  3574. {$EXTERNALSYM DIKEYBOARD_LSHIFT}
  3575. DIKEYBOARD_BACKSLASH = $8100042B;
  3576. {$EXTERNALSYM DIKEYBOARD_BACKSLASH}
  3577. DIKEYBOARD_Z = $8100042C;
  3578. {$EXTERNALSYM DIKEYBOARD_Z}
  3579. DIKEYBOARD_X = $8100042D;
  3580. {$EXTERNALSYM DIKEYBOARD_X}
  3581. DIKEYBOARD_C = $8100042E;
  3582. {$EXTERNALSYM DIKEYBOARD_C}
  3583. DIKEYBOARD_V = $8100042F;
  3584. {$EXTERNALSYM DIKEYBOARD_V}
  3585. DIKEYBOARD_B = $81000430;
  3586. {$EXTERNALSYM DIKEYBOARD_B}
  3587. DIKEYBOARD_N = $81000431;
  3588. {$EXTERNALSYM DIKEYBOARD_N}
  3589. DIKEYBOARD_M = $81000432;
  3590. {$EXTERNALSYM DIKEYBOARD_M}
  3591. DIKEYBOARD_COMMA = $81000433;
  3592. {$EXTERNALSYM DIKEYBOARD_COMMA}
  3593. DIKEYBOARD_PERIOD = $81000434; (* . on main keyboard *)
  3594. {$EXTERNALSYM DIKEYBOARD_PERIOD}
  3595. DIKEYBOARD_SLASH = $81000435; (* / on main keyboard *)
  3596. {$EXTERNALSYM DIKEYBOARD_SLASH}
  3597. DIKEYBOARD_RSHIFT = $81000436;
  3598. {$EXTERNALSYM DIKEYBOARD_RSHIFT}
  3599. DIKEYBOARD_MULTIPLY = $81000437; (* * on numeric keypad *)
  3600. {$EXTERNALSYM DIKEYBOARD_MULTIPLY}
  3601. DIKEYBOARD_LMENU = $81000438; (* left Alt *)
  3602. {$EXTERNALSYM DIKEYBOARD_LMENU}
  3603. DIKEYBOARD_SPACE = $81000439;
  3604. {$EXTERNALSYM DIKEYBOARD_SPACE}
  3605. DIKEYBOARD_CAPITAL = $8100043A;
  3606. {$EXTERNALSYM DIKEYBOARD_CAPITAL}
  3607. DIKEYBOARD_F1 = $8100043B;
  3608. {$EXTERNALSYM DIKEYBOARD_F1}
  3609. DIKEYBOARD_F2 = $8100043C;
  3610. {$EXTERNALSYM DIKEYBOARD_F2}
  3611. DIKEYBOARD_F3 = $8100043D;
  3612. {$EXTERNALSYM DIKEYBOARD_F3}
  3613. DIKEYBOARD_F4 = $8100043E;
  3614. {$EXTERNALSYM DIKEYBOARD_F4}
  3615. DIKEYBOARD_F5 = $8100043F;
  3616. {$EXTERNALSYM DIKEYBOARD_F5}
  3617. DIKEYBOARD_F6 = $81000440;
  3618. {$EXTERNALSYM DIKEYBOARD_F6}
  3619. DIKEYBOARD_F7 = $81000441;
  3620. {$EXTERNALSYM DIKEYBOARD_F7}
  3621. DIKEYBOARD_F8 = $81000442;
  3622. {$EXTERNALSYM DIKEYBOARD_F8}
  3623. DIKEYBOARD_F9 = $81000443;
  3624. {$EXTERNALSYM DIKEYBOARD_F9}
  3625. DIKEYBOARD_F10 = $81000444;
  3626. {$EXTERNALSYM DIKEYBOARD_F10}
  3627. DIKEYBOARD_NUMLOCK = $81000445;
  3628. {$EXTERNALSYM DIKEYBOARD_NUMLOCK}
  3629. DIKEYBOARD_SCROLL = $81000446; (* Scroll Lock *)
  3630. {$EXTERNALSYM DIKEYBOARD_SCROLL}
  3631. DIKEYBOARD_NUMPAD7 = $81000447;
  3632. {$EXTERNALSYM DIKEYBOARD_NUMPAD7}
  3633. DIKEYBOARD_NUMPAD8 = $81000448;
  3634. {$EXTERNALSYM DIKEYBOARD_NUMPAD8}
  3635. DIKEYBOARD_NUMPAD9 = $81000449;
  3636. {$EXTERNALSYM DIKEYBOARD_NUMPAD9}
  3637. DIKEYBOARD_SUBTRACT = $8100044A; (* - on numeric keypad *)
  3638. {$EXTERNALSYM DIKEYBOARD_SUBTRACT}
  3639. DIKEYBOARD_NUMPAD4 = $8100044B;
  3640. {$EXTERNALSYM DIKEYBOARD_NUMPAD4}
  3641. DIKEYBOARD_NUMPAD5 = $8100044C;
  3642. {$EXTERNALSYM DIKEYBOARD_NUMPAD5}
  3643. DIKEYBOARD_NUMPAD6 = $8100044D;
  3644. {$EXTERNALSYM DIKEYBOARD_NUMPAD6}
  3645. DIKEYBOARD_ADD = $8100044E; (* + on numeric keypad *)
  3646. {$EXTERNALSYM DIKEYBOARD_ADD}
  3647. DIKEYBOARD_NUMPAD1 = $8100044F;
  3648. {$EXTERNALSYM DIKEYBOARD_NUMPAD1}
  3649. DIKEYBOARD_NUMPAD2 = $81000450;
  3650. {$EXTERNALSYM DIKEYBOARD_NUMPAD2}
  3651. DIKEYBOARD_NUMPAD3 = $81000451;
  3652. {$EXTERNALSYM DIKEYBOARD_NUMPAD3}
  3653. DIKEYBOARD_NUMPAD0 = $81000452;
  3654. {$EXTERNALSYM DIKEYBOARD_NUMPAD0}
  3655. DIKEYBOARD_DECIMAL = $81000453; (* . on numeric keypad *)
  3656. {$EXTERNALSYM DIKEYBOARD_DECIMAL}
  3657. DIKEYBOARD_OEM_102 = $81000456; (* <> or \| on RT 102-key keyboard (Non-U.S.) *)
  3658. {$EXTERNALSYM DIKEYBOARD_OEM_102}
  3659. DIKEYBOARD_F11 = $81000457;
  3660. {$EXTERNALSYM DIKEYBOARD_F11}
  3661. DIKEYBOARD_F12 = $81000458;
  3662. {$EXTERNALSYM DIKEYBOARD_F12}
  3663. DIKEYBOARD_F13 = $81000464; (* (NEC PC98) *)
  3664. {$EXTERNALSYM DIKEYBOARD_F13}
  3665. DIKEYBOARD_F14 = $81000465; (* (NEC PC98) *)
  3666. {$EXTERNALSYM DIKEYBOARD_F14}
  3667. DIKEYBOARD_F15 = $81000466; (* (NEC PC98) *)
  3668. {$EXTERNALSYM DIKEYBOARD_F15}
  3669. DIKEYBOARD_KANA = $81000470; (* (Japanese keyboard) *)
  3670. {$EXTERNALSYM DIKEYBOARD_KANA}
  3671. DIKEYBOARD_ABNT_C1 = $81000473; (* /? on Brazilian keyboard *)
  3672. {$EXTERNALSYM DIKEYBOARD_ABNT_C1}
  3673. DIKEYBOARD_CONVERT = $81000479; (* (Japanese keyboard) *)
  3674. {$EXTERNALSYM DIKEYBOARD_CONVERT}
  3675. DIKEYBOARD_NOCONVERT = $8100047B; (* (Japanese keyboard) *)
  3676. {$EXTERNALSYM DIKEYBOARD_NOCONVERT}
  3677. DIKEYBOARD_YEN = $8100047D; (* (Japanese keyboard) *)
  3678. {$EXTERNALSYM DIKEYBOARD_YEN}
  3679. DIKEYBOARD_ABNT_C2 = $8100047E; (* Numpad . on Brazilian keyboard *)
  3680. {$EXTERNALSYM DIKEYBOARD_ABNT_C2}
  3681. DIKEYBOARD_NUMPADEQUALS = $8100048D; (* = on numeric keypad (NEC PC98) *)
  3682. {$EXTERNALSYM DIKEYBOARD_NUMPADEQUALS}
  3683. DIKEYBOARD_PREVTRACK = $81000490; (* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) *)
  3684. {$EXTERNALSYM DIKEYBOARD_PREVTRACK}
  3685. DIKEYBOARD_AT = $81000491; (* (NEC PC98) *)
  3686. {$EXTERNALSYM DIKEYBOARD_AT}
  3687. DIKEYBOARD_COLON = $81000492; (* (NEC PC98) *)
  3688. {$EXTERNALSYM DIKEYBOARD_COLON}
  3689. DIKEYBOARD_UNDERLINE = $81000493; (* (NEC PC98) *)
  3690. {$EXTERNALSYM DIKEYBOARD_UNDERLINE}
  3691. DIKEYBOARD_KANJI = $81000494; (* (Japanese keyboard) *)
  3692. {$EXTERNALSYM DIKEYBOARD_KANJI}
  3693. DIKEYBOARD_STOP = $81000495; (* (NEC PC98) *)
  3694. {$EXTERNALSYM DIKEYBOARD_STOP}
  3695. DIKEYBOARD_AX = $81000496; (* (Japan AX) *)
  3696. {$EXTERNALSYM DIKEYBOARD_AX}
  3697. DIKEYBOARD_UNLABELED = $81000497; (* (J3100) *)
  3698. {$EXTERNALSYM DIKEYBOARD_UNLABELED}
  3699. DIKEYBOARD_NEXTTRACK = $81000499; (* Next Track *)
  3700. {$EXTERNALSYM DIKEYBOARD_NEXTTRACK}
  3701. DIKEYBOARD_NUMPADENTER = $8100049C; (* Enter on numeric keypad *)
  3702. {$EXTERNALSYM DIKEYBOARD_NUMPADENTER}
  3703. DIKEYBOARD_RCONTROL = $8100049D;
  3704. {$EXTERNALSYM DIKEYBOARD_RCONTROL}
  3705. DIKEYBOARD_MUTE = $810004A0; (* Mute *)
  3706. {$EXTERNALSYM DIKEYBOARD_MUTE}
  3707. DIKEYBOARD_CALCULATOR = $810004A1; (* Calculator *)
  3708. {$EXTERNALSYM DIKEYBOARD_CALCULATOR}
  3709. DIKEYBOARD_PLAYPAUSE = $810004A2; (* Play / Pause *)
  3710. {$EXTERNALSYM DIKEYBOARD_PLAYPAUSE}
  3711. DIKEYBOARD_MEDIASTOP = $810004A4; (* Media Stop *)
  3712. {$EXTERNALSYM DIKEYBOARD_MEDIASTOP}
  3713. DIKEYBOARD_VOLUMEDOWN = $810004AE; (* Volume - *)
  3714. {$EXTERNALSYM DIKEYBOARD_VOLUMEDOWN}
  3715. DIKEYBOARD_VOLUMEUP = $810004B0; (* Volume + *)
  3716. {$EXTERNALSYM DIKEYBOARD_VOLUMEUP}
  3717. DIKEYBOARD_WEBHOME = $810004B2; (* Web home *)
  3718. {$EXTERNALSYM DIKEYBOARD_WEBHOME}
  3719. DIKEYBOARD_NUMPADCOMMA = $810004B3; (* , on numeric keypad (NEC PC98) *)
  3720. {$EXTERNALSYM DIKEYBOARD_NUMPADCOMMA}
  3721. DIKEYBOARD_DIVIDE = $810004B5; (* / on numeric keypad *)
  3722. {$EXTERNALSYM DIKEYBOARD_DIVIDE}
  3723. DIKEYBOARD_SYSRQ = $810004B7;
  3724. {$EXTERNALSYM DIKEYBOARD_SYSRQ}
  3725. DIKEYBOARD_RMENU = $810004B8; (* right Alt *)
  3726. {$EXTERNALSYM DIKEYBOARD_RMENU}
  3727. DIKEYBOARD_PAUSE = $810004C5; (* Pause *)
  3728. {$EXTERNALSYM DIKEYBOARD_PAUSE}
  3729. DIKEYBOARD_HOME = $810004C7; (* Home on arrow keypad *)
  3730. {$EXTERNALSYM DIKEYBOARD_HOME}
  3731. DIKEYBOARD_UP = $810004C8; (* UpArrow on arrow keypad *)
  3732. {$EXTERNALSYM DIKEYBOARD_UP}
  3733. DIKEYBOARD_PRIOR = $810004C9; (* PgUp on arrow keypad *)
  3734. {$EXTERNALSYM DIKEYBOARD_PRIOR}
  3735. DIKEYBOARD_LEFT = $810004CB; (* LeftArrow on arrow keypad *)
  3736. {$EXTERNALSYM DIKEYBOARD_LEFT}
  3737. DIKEYBOARD_RIGHT = $810004CD; (* RightArrow on arrow keypad *)
  3738. {$EXTERNALSYM DIKEYBOARD_RIGHT}
  3739. DIKEYBOARD_END = $810004CF; (* End on arrow keypad *)
  3740. {$EXTERNALSYM DIKEYBOARD_END}
  3741. DIKEYBOARD_DOWN = $810004D0; (* DownArrow on arrow keypad *)
  3742. {$EXTERNALSYM DIKEYBOARD_DOWN}
  3743. DIKEYBOARD_NEXT = $810004D1; (* PgDn on arrow keypad *)
  3744. {$EXTERNALSYM DIKEYBOARD_NEXT}
  3745. DIKEYBOARD_INSERT = $810004D2; (* Insert on arrow keypad *)
  3746. {$EXTERNALSYM DIKEYBOARD_INSERT}
  3747. DIKEYBOARD_DELETE = $810004D3; (* Delete on arrow keypad *)
  3748. {$EXTERNALSYM DIKEYBOARD_DELETE}
  3749. DIKEYBOARD_LWIN = $810004DB; (* Left Windows key *)
  3750. {$EXTERNALSYM DIKEYBOARD_LWIN}
  3751. DIKEYBOARD_RWIN = $810004DC; (* Right Windows key *)
  3752. {$EXTERNALSYM DIKEYBOARD_RWIN}
  3753. DIKEYBOARD_APPS = $810004DD; (* AppMenu key *)
  3754. {$EXTERNALSYM DIKEYBOARD_APPS}
  3755. DIKEYBOARD_POWER = $810004DE; (* System Power *)
  3756. {$EXTERNALSYM DIKEYBOARD_POWER}
  3757. DIKEYBOARD_SLEEP = $810004DF; (* System Sleep *)
  3758. {$EXTERNALSYM DIKEYBOARD_SLEEP}
  3759. DIKEYBOARD_WAKE = $810004E3; (* System Wake *)
  3760. {$EXTERNALSYM DIKEYBOARD_WAKE}
  3761. DIKEYBOARD_WEBSEARCH = $810004E5; (* Web Search *)
  3762. {$EXTERNALSYM DIKEYBOARD_WEBSEARCH}
  3763. DIKEYBOARD_WEBFAVORITES = $810004E6; (* Web Favorites *)
  3764. {$EXTERNALSYM DIKEYBOARD_WEBFAVORITES}
  3765. DIKEYBOARD_WEBREFRESH = $810004E7; (* Web Refresh *)
  3766. {$EXTERNALSYM DIKEYBOARD_WEBREFRESH}
  3767. DIKEYBOARD_WEBSTOP = $810004E8; (* Web Stop *)
  3768. {$EXTERNALSYM DIKEYBOARD_WEBSTOP}
  3769. DIKEYBOARD_WEBFORWARD = $810004E9; (* Web Forward *)
  3770. {$EXTERNALSYM DIKEYBOARD_WEBFORWARD}
  3771. DIKEYBOARD_WEBBACK = $810004EA; (* Web Back *)
  3772. {$EXTERNALSYM DIKEYBOARD_WEBBACK}
  3773. DIKEYBOARD_MYCOMPUTER = $810004EB; (* My Computer *)
  3774. {$EXTERNALSYM DIKEYBOARD_MYCOMPUTER}
  3775. DIKEYBOARD_MAIL = $810004EC; (* Mail *)
  3776. {$EXTERNALSYM DIKEYBOARD_MAIL}
  3777. DIKEYBOARD_MEDIASELECT = $810004ED; (* Media Select *)
  3778. {$EXTERNALSYM DIKEYBOARD_MEDIASELECT}
  3779. (*--- MOUSE
  3780. Physical Mouse Device ---*)
  3781. DIMOUSE_XAXISAB = ($82000200 or DIMOFS_X); (* X Axis-absolute: Some mice natively report absolute coordinates *)
  3782. {$EXTERNALSYM DIMOUSE_XAXISAB}
  3783. DIMOUSE_YAXISAB = ($82000200 or DIMOFS_Y); (* Y Axis-absolute: Some mice natively report absolute coordinates *)
  3784. {$EXTERNALSYM DIMOUSE_YAXISAB}
  3785. DIMOUSE_XAXIS = ($82000300 or DIMOFS_X); (* X Axis *)
  3786. {$EXTERNALSYM DIMOUSE_XAXIS}
  3787. DIMOUSE_YAXIS = ($82000300 or DIMOFS_Y); (* Y Axis *)
  3788. {$EXTERNALSYM DIMOUSE_YAXIS}
  3789. DIMOUSE_WHEEL = ($82000300 or DIMOFS_Z); (* Z Axis *)
  3790. {$EXTERNALSYM DIMOUSE_WHEEL}
  3791. DIMOUSE_BUTTON0 = ($82000400 or DIMOFS_BUTTON0); (* Button 0 *)
  3792. {$EXTERNALSYM DIMOUSE_BUTTON0}
  3793. DIMOUSE_BUTTON1 = ($82000400 or DIMOFS_BUTTON1); (* Button 1 *)
  3794. {$EXTERNALSYM DIMOUSE_BUTTON1}
  3795. DIMOUSE_BUTTON2 = ($82000400 or DIMOFS_BUTTON2); (* Button 2 *)
  3796. {$EXTERNALSYM DIMOUSE_BUTTON2}
  3797. DIMOUSE_BUTTON3 = ($82000400 or DIMOFS_BUTTON3); (* Button 3 *)
  3798. {$EXTERNALSYM DIMOUSE_BUTTON3}
  3799. DIMOUSE_BUTTON4 = ($82000400 or DIMOFS_BUTTON4); (* Button 4 *)
  3800. {$EXTERNALSYM DIMOUSE_BUTTON4}
  3801. DIMOUSE_BUTTON5 = ($82000400 or DIMOFS_BUTTON5); (* Button 5 *)
  3802. {$EXTERNALSYM DIMOUSE_BUTTON5}
  3803. DIMOUSE_BUTTON6 = ($82000400 or DIMOFS_BUTTON6); (* Button 6 *)
  3804. {$EXTERNALSYM DIMOUSE_BUTTON6}
  3805. DIMOUSE_BUTTON7 = ($82000400 or DIMOFS_BUTTON7); (* Button 7 *)
  3806. {$EXTERNALSYM DIMOUSE_BUTTON7}
  3807. (*--- VOICE
  3808. Physical Dplay Voice Device ---*)
  3809. DIVOICE_CHANNEL1 = $83000401;
  3810. {$EXTERNALSYM DIVOICE_CHANNEL1}
  3811. DIVOICE_CHANNEL2 = $83000402;
  3812. {$EXTERNALSYM DIVOICE_CHANNEL2}
  3813. DIVOICE_CHANNEL3 = $83000403;
  3814. {$EXTERNALSYM DIVOICE_CHANNEL3}
  3815. DIVOICE_CHANNEL4 = $83000404;
  3816. {$EXTERNALSYM DIVOICE_CHANNEL4}
  3817. DIVOICE_CHANNEL5 = $83000405;
  3818. {$EXTERNALSYM DIVOICE_CHANNEL5}
  3819. DIVOICE_CHANNEL6 = $83000406;
  3820. {$EXTERNALSYM DIVOICE_CHANNEL6}
  3821. DIVOICE_CHANNEL7 = $83000407;
  3822. {$EXTERNALSYM DIVOICE_CHANNEL7}
  3823. DIVOICE_CHANNEL8 = $83000408;
  3824. {$EXTERNALSYM DIVOICE_CHANNEL8}
  3825. DIVOICE_TEAM = $83000409;
  3826. {$EXTERNALSYM DIVOICE_TEAM}
  3827. DIVOICE_ALL = $8300040A;
  3828. {$EXTERNALSYM DIVOICE_ALL}
  3829. DIVOICE_RECORDMUTE = $8300040B;
  3830. {$EXTERNALSYM DIVOICE_RECORDMUTE}
  3831. DIVOICE_PLAYBACKMUTE = $8300040C;
  3832. {$EXTERNALSYM DIVOICE_PLAYBACKMUTE}
  3833. DIVOICE_TRANSMIT = $8300040D;
  3834. {$EXTERNALSYM DIVOICE_TRANSMIT}
  3835. DIVOICE_VOICECOMMAND = $83000410;
  3836. {$EXTERNALSYM DIVOICE_VOICECOMMAND}
  3837. (*--- Driving Simulator - Racing
  3838. Vehicle control is primary objective ---*)
  3839. DIVIRTUAL_DRIVING_RACE = $01000000;
  3840. {$EXTERNALSYM DIVIRTUAL_DRIVING_RACE}
  3841. DIAXIS_DRIVINGR_STEER = $01008A01; (* Steering *)
  3842. {$EXTERNALSYM DIAXIS_DRIVINGR_STEER}
  3843. DIAXIS_DRIVINGR_ACCELERATE = $01039202; (* Accelerate *)
  3844. {$EXTERNALSYM DIAXIS_DRIVINGR_ACCELERATE}
  3845. DIAXIS_DRIVINGR_BRAKE = $01041203; (* Brake-Axis *)
  3846. {$EXTERNALSYM DIAXIS_DRIVINGR_BRAKE}
  3847. DIBUTTON_DRIVINGR_SHIFTUP = $01000C01; (* Shift to next higher gear *)
  3848. {$EXTERNALSYM DIBUTTON_DRIVINGR_SHIFTUP}
  3849. DIBUTTON_DRIVINGR_SHIFTDOWN = $01000C02; (* Shift to next lower gear *)
  3850. {$EXTERNALSYM DIBUTTON_DRIVINGR_SHIFTDOWN}
  3851. DIBUTTON_DRIVINGR_VIEW = $01001C03; (* Cycle through view options *)
  3852. {$EXTERNALSYM DIBUTTON_DRIVINGR_VIEW}
  3853. DIBUTTON_DRIVINGR_MENU = $010004FD; (* Show menu options *)
  3854. {$EXTERNALSYM DIBUTTON_DRIVINGR_MENU}
  3855. (*--- Priority 2 controls ---*)
  3856. DIAXIS_DRIVINGR_ACCEL_AND_BRAKE = $01014A04; (* Some devices combine accelerate and brake in a single axis *)
  3857. {$EXTERNALSYM DIAXIS_DRIVINGR_ACCEL_AND_BRAKE}
  3858. DIHATSWITCH_DRIVINGR_GLANCE = $01004601; (* Look around *)
  3859. {$EXTERNALSYM DIHATSWITCH_DRIVINGR_GLANCE}
  3860. DIBUTTON_DRIVINGR_BRAKE = $01004C04; (* Brake-button *)
  3861. {$EXTERNALSYM DIBUTTON_DRIVINGR_BRAKE}
  3862. DIBUTTON_DRIVINGR_DASHBOARD = $01004405; (* Select next dashboard option *)
  3863. {$EXTERNALSYM DIBUTTON_DRIVINGR_DASHBOARD}
  3864. DIBUTTON_DRIVINGR_AIDS = $01004406; (* Driver correction aids *)
  3865. {$EXTERNALSYM DIBUTTON_DRIVINGR_AIDS}
  3866. DIBUTTON_DRIVINGR_MAP = $01004407; (* Display Driving Map *)
  3867. {$EXTERNALSYM DIBUTTON_DRIVINGR_MAP}
  3868. DIBUTTON_DRIVINGR_BOOST = $01004408; (* Turbo Boost *)
  3869. {$EXTERNALSYM DIBUTTON_DRIVINGR_BOOST}
  3870. DIBUTTON_DRIVINGR_PIT = $01004409; (* Pit stop notification *)
  3871. {$EXTERNALSYM DIBUTTON_DRIVINGR_PIT}
  3872. DIBUTTON_DRIVINGR_ACCELERATE_LINK = $0103D4E0; (* Fallback Accelerate button *)
  3873. {$EXTERNALSYM DIBUTTON_DRIVINGR_ACCELERATE_LINK}
  3874. DIBUTTON_DRIVINGR_STEER_LEFT_LINK = $0100CCE4; (* Fallback Steer Left button *)
  3875. {$EXTERNALSYM DIBUTTON_DRIVINGR_STEER_LEFT_LINK}
  3876. DIBUTTON_DRIVINGR_STEER_RIGHT_LINK = $0100CCEC; (* Fallback Steer Right button *)
  3877. {$EXTERNALSYM DIBUTTON_DRIVINGR_STEER_RIGHT_LINK}
  3878. DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK = $0107C4E4; (* Fallback Glance Left button *)
  3879. {$EXTERNALSYM DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK}
  3880. DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK = $0107C4EC; (* Fallback Glance Right button *)
  3881. {$EXTERNALSYM DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK}
  3882. DIBUTTON_DRIVINGR_DEVICE = $010044FE; (* Show input device and controls *)
  3883. {$EXTERNALSYM DIBUTTON_DRIVINGR_DEVICE}
  3884. DIBUTTON_DRIVINGR_PAUSE = $010044FC; (* Start / Pause / Restart game *)
  3885. {$EXTERNALSYM DIBUTTON_DRIVINGR_PAUSE}
  3886. (*--- Driving Simulator - Combat
  3887. Combat from within a vehicle is primary objective ---*)
  3888. DIVIRTUAL_DRIVING_COMBAT = $02000000;
  3889. {$EXTERNALSYM DIVIRTUAL_DRIVING_COMBAT}
  3890. DIAXIS_DRIVINGC_STEER = $02008A01; (* Steering *)
  3891. {$EXTERNALSYM DIAXIS_DRIVINGC_STEER}
  3892. DIAXIS_DRIVINGC_ACCELERATE = $02039202; (* Accelerate *)
  3893. {$EXTERNALSYM DIAXIS_DRIVINGC_ACCELERATE}
  3894. DIAXIS_DRIVINGC_BRAKE = $02041203; (* Brake-axis *)
  3895. {$EXTERNALSYM DIAXIS_DRIVINGC_BRAKE}
  3896. DIBUTTON_DRIVINGC_FIRE = $02000C01; (* Fire *)
  3897. {$EXTERNALSYM DIBUTTON_DRIVINGC_FIRE}
  3898. DIBUTTON_DRIVINGC_WEAPONS = $02000C02; (* Select next weapon *)
  3899. {$EXTERNALSYM DIBUTTON_DRIVINGC_WEAPONS}
  3900. DIBUTTON_DRIVINGC_TARGET = $02000C03; (* Select next available target *)
  3901. {$EXTERNALSYM DIBUTTON_DRIVINGC_TARGET}
  3902. DIBUTTON_DRIVINGC_MENU = $020004FD; (* Show menu options *)
  3903. {$EXTERNALSYM DIBUTTON_DRIVINGC_MENU}
  3904. (*--- Priority 2 controls ---*)
  3905. DIAXIS_DRIVINGC_ACCEL_AND_BRAKE = $02014A04; (* Some devices combine accelerate and brake in a single axis *)
  3906. {$EXTERNALSYM DIAXIS_DRIVINGC_ACCEL_AND_BRAKE}
  3907. DIHATSWITCH_DRIVINGC_GLANCE = $02004601; (* Look around *)
  3908. {$EXTERNALSYM DIHATSWITCH_DRIVINGC_GLANCE}
  3909. DIBUTTON_DRIVINGC_SHIFTUP = $02004C04; (* Shift to next higher gear *)
  3910. {$EXTERNALSYM DIBUTTON_DRIVINGC_SHIFTUP}
  3911. DIBUTTON_DRIVINGC_SHIFTDOWN = $02004C05; (* Shift to next lower gear *)
  3912. {$EXTERNALSYM DIBUTTON_DRIVINGC_SHIFTDOWN}
  3913. DIBUTTON_DRIVINGC_DASHBOARD = $02004406; (* Select next dashboard option *)
  3914. {$EXTERNALSYM DIBUTTON_DRIVINGC_DASHBOARD}
  3915. DIBUTTON_DRIVINGC_AIDS = $02004407; (* Driver correction aids *)
  3916. {$EXTERNALSYM DIBUTTON_DRIVINGC_AIDS}
  3917. DIBUTTON_DRIVINGC_BRAKE = $02004C08; (* Brake-button *)
  3918. {$EXTERNALSYM DIBUTTON_DRIVINGC_BRAKE}
  3919. DIBUTTON_DRIVINGC_FIRESECONDARY = $02004C09; (* Alternative fire button *)
  3920. {$EXTERNALSYM DIBUTTON_DRIVINGC_FIRESECONDARY}
  3921. DIBUTTON_DRIVINGC_ACCELERATE_LINK = $0203D4E0; (* Fallback Accelerate button *)
  3922. {$EXTERNALSYM DIBUTTON_DRIVINGC_ACCELERATE_LINK}
  3923. DIBUTTON_DRIVINGC_STEER_LEFT_LINK = $0200CCE4; (* Fallback Steer Left button *)
  3924. {$EXTERNALSYM DIBUTTON_DRIVINGC_STEER_LEFT_LINK}
  3925. DIBUTTON_DRIVINGC_STEER_RIGHT_LINK = $0200CCEC; (* Fallback Steer Right button *)
  3926. {$EXTERNALSYM DIBUTTON_DRIVINGC_STEER_RIGHT_LINK}
  3927. DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK = $0207C4E4; (* Fallback Glance Left button *)
  3928. {$EXTERNALSYM DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK}
  3929. DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK = $0207C4EC; (* Fallback Glance Right button *)
  3930. {$EXTERNALSYM DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK}
  3931. DIBUTTON_DRIVINGC_DEVICE = $020044FE; (* Show input device and controls *)
  3932. {$EXTERNALSYM DIBUTTON_DRIVINGC_DEVICE}
  3933. DIBUTTON_DRIVINGC_PAUSE = $020044FC; (* Start / Pause / Restart game *)
  3934. {$EXTERNALSYM DIBUTTON_DRIVINGC_PAUSE}
  3935. (*--- Driving Simulator - Tank
  3936. Combat from withing a tank is primary objective ---*)
  3937. DIVIRTUAL_DRIVING_TANK = $03000000;
  3938. {$EXTERNALSYM DIVIRTUAL_DRIVING_TANK}
  3939. DIAXIS_DRIVINGT_STEER = $03008A01; (* Turn tank left / right *)
  3940. {$EXTERNALSYM DIAXIS_DRIVINGT_STEER}
  3941. DIAXIS_DRIVINGT_BARREL = $03010202; (* Raise / lower barrel *)
  3942. {$EXTERNALSYM DIAXIS_DRIVINGT_BARREL}
  3943. DIAXIS_DRIVINGT_ACCELERATE = $03039203; (* Accelerate *)
  3944. {$EXTERNALSYM DIAXIS_DRIVINGT_ACCELERATE}
  3945. DIAXIS_DRIVINGT_ROTATE = $03020204; (* Turn barrel left / right *)
  3946. {$EXTERNALSYM DIAXIS_DRIVINGT_ROTATE}
  3947. DIBUTTON_DRIVINGT_FIRE = $03000C01; (* Fire *)
  3948. {$EXTERNALSYM DIBUTTON_DRIVINGT_FIRE}
  3949. DIBUTTON_DRIVINGT_WEAPONS = $03000C02; (* Select next weapon *)
  3950. {$EXTERNALSYM DIBUTTON_DRIVINGT_WEAPONS}
  3951. DIBUTTON_DRIVINGT_TARGET = $03000C03; (* Selects next available target *)
  3952. {$EXTERNALSYM DIBUTTON_DRIVINGT_TARGET}
  3953. DIBUTTON_DRIVINGT_MENU = $030004FD; (* Show menu options *)
  3954. {$EXTERNALSYM DIBUTTON_DRIVINGT_MENU}
  3955. (*--- Priority 2 controls ---*)
  3956. DIHATSWITCH_DRIVINGT_GLANCE = $03004601; (* Look around *)
  3957. {$EXTERNALSYM DIHATSWITCH_DRIVINGT_GLANCE}
  3958. DIAXIS_DRIVINGT_BRAKE = $03045205; (* Brake-axis *)
  3959. {$EXTERNALSYM DIAXIS_DRIVINGT_BRAKE}
  3960. DIAXIS_DRIVINGT_ACCEL_AND_BRAKE = $03014A06; (* Some devices combine accelerate and brake in a single axis *)
  3961. {$EXTERNALSYM DIAXIS_DRIVINGT_ACCEL_AND_BRAKE}
  3962. DIBUTTON_DRIVINGT_VIEW = $03005C04; (* Cycle through view options *)
  3963. {$EXTERNALSYM DIBUTTON_DRIVINGT_VIEW}
  3964. DIBUTTON_DRIVINGT_DASHBOARD = $03005C05; (* Select next dashboard option *)
  3965. {$EXTERNALSYM DIBUTTON_DRIVINGT_DASHBOARD}
  3966. DIBUTTON_DRIVINGT_BRAKE = $03004C06; (* Brake-button *)
  3967. {$EXTERNALSYM DIBUTTON_DRIVINGT_BRAKE}
  3968. DIBUTTON_DRIVINGT_FIRESECONDARY = $03004C07; (* Alternative fire button *)
  3969. {$EXTERNALSYM DIBUTTON_DRIVINGT_FIRESECONDARY}
  3970. DIBUTTON_DRIVINGT_ACCELERATE_LINK = $0303D4E0; (* Fallback Accelerate button *)
  3971. {$EXTERNALSYM DIBUTTON_DRIVINGT_ACCELERATE_LINK}
  3972. DIBUTTON_DRIVINGT_STEER_LEFT_LINK = $0300CCE4; (* Fallback Steer Left button *)
  3973. {$EXTERNALSYM DIBUTTON_DRIVINGT_STEER_LEFT_LINK}
  3974. DIBUTTON_DRIVINGT_STEER_RIGHT_LINK = $0300CCEC; (* Fallback Steer Right button *)
  3975. {$EXTERNALSYM DIBUTTON_DRIVINGT_STEER_RIGHT_LINK}
  3976. DIBUTTON_DRIVINGT_BARREL_UP_LINK = $030144E0; (* Fallback Barrel up button *)
  3977. {$EXTERNALSYM DIBUTTON_DRIVINGT_BARREL_UP_LINK}
  3978. DIBUTTON_DRIVINGT_BARREL_DOWN_LINK = $030144E8; (* Fallback Barrel down button *)
  3979. {$EXTERNALSYM DIBUTTON_DRIVINGT_BARREL_DOWN_LINK}
  3980. DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK = $030244E4; (* Fallback Rotate left button *)
  3981. {$EXTERNALSYM DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK}
  3982. DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK = $030244EC; (* Fallback Rotate right button *)
  3983. {$EXTERNALSYM DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK}
  3984. DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK = $0307C4E4; (* Fallback Glance Left button *)
  3985. {$EXTERNALSYM DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK}
  3986. DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK = $0307C4EC; (* Fallback Glance Right button *)
  3987. {$EXTERNALSYM DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK}
  3988. DIBUTTON_DRIVINGT_DEVICE = $030044FE; (* Show input device and controls *)
  3989. {$EXTERNALSYM DIBUTTON_DRIVINGT_DEVICE}
  3990. DIBUTTON_DRIVINGT_PAUSE = $030044FC; (* Start / Pause / Restart game *)
  3991. {$EXTERNALSYM DIBUTTON_DRIVINGT_PAUSE}
  3992. (*--- Flight Simulator - Civilian
  3993. Plane control is the primary objective ---*)
  3994. DIVIRTUAL_FLYING_CIVILIAN = $04000000;
  3995. {$EXTERNALSYM DIVIRTUAL_FLYING_CIVILIAN}
  3996. DIAXIS_FLYINGC_BANK = $04008A01; (* Roll ship left / right *)
  3997. {$EXTERNALSYM DIAXIS_FLYINGC_BANK}
  3998. DIAXIS_FLYINGC_PITCH = $04010A02; (* Nose up / down *)
  3999. {$EXTERNALSYM DIAXIS_FLYINGC_PITCH}
  4000. DIAXIS_FLYINGC_THROTTLE = $04039203; (* Throttle *)
  4001. {$EXTERNALSYM DIAXIS_FLYINGC_THROTTLE}
  4002. DIBUTTON_FLYINGC_VIEW = $04002401; (* Cycle through view options *)
  4003. {$EXTERNALSYM DIBUTTON_FLYINGC_VIEW}
  4004. DIBUTTON_FLYINGC_DISPLAY = $04002402; (* Select next dashboard / heads up display option *)
  4005. {$EXTERNALSYM DIBUTTON_FLYINGC_DISPLAY}
  4006. DIBUTTON_FLYINGC_GEAR = $04002C03; (* Gear up / down *)
  4007. {$EXTERNALSYM DIBUTTON_FLYINGC_GEAR}
  4008. DIBUTTON_FLYINGC_MENU = $040004FD; (* Show menu options *)
  4009. {$EXTERNALSYM DIBUTTON_FLYINGC_MENU}
  4010. (*--- Priority 2 controls ---*)
  4011. DIHATSWITCH_FLYINGC_GLANCE = $04004601; (* Look around *)
  4012. {$EXTERNALSYM DIHATSWITCH_FLYINGC_GLANCE}
  4013. DIAXIS_FLYINGC_BRAKE = $04046A04; (* Apply Brake *)
  4014. {$EXTERNALSYM DIAXIS_FLYINGC_BRAKE}
  4015. DIAXIS_FLYINGC_RUDDER = $04025205; (* Yaw ship left/right *)
  4016. {$EXTERNALSYM DIAXIS_FLYINGC_RUDDER}
  4017. DIAXIS_FLYINGC_FLAPS = $04055A06; (* Flaps *)
  4018. {$EXTERNALSYM DIAXIS_FLYINGC_FLAPS}
  4019. DIBUTTON_FLYINGC_FLAPSUP = $04006404; (* Increment stepping up until fully retracted *)
  4020. {$EXTERNALSYM DIBUTTON_FLYINGC_FLAPSUP}
  4021. DIBUTTON_FLYINGC_FLAPSDOWN = $04006405; (* Decrement stepping down until fully extended *)
  4022. {$EXTERNALSYM DIBUTTON_FLYINGC_FLAPSDOWN}
  4023. DIBUTTON_FLYINGC_BRAKE_LINK = $04046CE0; (* Fallback brake button *)
  4024. {$EXTERNALSYM DIBUTTON_FLYINGC_BRAKE_LINK}
  4025. DIBUTTON_FLYINGC_FASTER_LINK = $0403D4E0; (* Fallback throttle up button *)
  4026. {$EXTERNALSYM DIBUTTON_FLYINGC_FASTER_LINK}
  4027. DIBUTTON_FLYINGC_SLOWER_LINK = $0403D4E8; (* Fallback throttle down button *)
  4028. {$EXTERNALSYM DIBUTTON_FLYINGC_SLOWER_LINK}
  4029. DIBUTTON_FLYINGC_GLANCE_LEFT_LINK = $0407C4E4; (* Fallback Glance Left button *)
  4030. {$EXTERNALSYM DIBUTTON_FLYINGC_GLANCE_LEFT_LINK}
  4031. DIBUTTON_FLYINGC_GLANCE_RIGHT_LINK = $0407C4EC; (* Fallback Glance Right button *)
  4032. {$EXTERNALSYM DIBUTTON_FLYINGC_GLANCE_RIGHT_LINK}
  4033. DIBUTTON_FLYINGC_GLANCE_UP_LINK = $0407C4E0; (* Fallback Glance Up button *)
  4034. {$EXTERNALSYM DIBUTTON_FLYINGC_GLANCE_UP_LINK}
  4035. DIBUTTON_FLYINGC_GLANCE_DOWN_LINK = $0407C4E8; (* Fallback Glance Down button *)
  4036. {$EXTERNALSYM DIBUTTON_FLYINGC_GLANCE_DOWN_LINK}
  4037. DIBUTTON_FLYINGC_DEVICE = $040044FE; (* Show input device and controls *)
  4038. {$EXTERNALSYM DIBUTTON_FLYINGC_DEVICE}
  4039. DIBUTTON_FLYINGC_PAUSE = $040044FC; (* Start / Pause / Restart game *)
  4040. {$EXTERNALSYM DIBUTTON_FLYINGC_PAUSE}
  4041. (*--- Flight Simulator - Military
  4042. Aerial combat is the primary objective ---*)
  4043. DIVIRTUAL_FLYING_MILITARY = $05000000;
  4044. {$EXTERNALSYM DIVIRTUAL_FLYING_MILITARY}
  4045. DIAXIS_FLYINGM_BANK = $05008A01; (* Bank - Roll ship left / right *)
  4046. {$EXTERNALSYM DIAXIS_FLYINGM_BANK}
  4047. DIAXIS_FLYINGM_PITCH = $05010A02; (* Pitch - Nose up / down *)
  4048. {$EXTERNALSYM DIAXIS_FLYINGM_PITCH}
  4049. DIAXIS_FLYINGM_THROTTLE = $05039203; (* Throttle - faster / slower *)
  4050. {$EXTERNALSYM DIAXIS_FLYINGM_THROTTLE}
  4051. DIBUTTON_FLYINGM_FIRE = $05000C01; (* Fire *)
  4052. {$EXTERNALSYM DIBUTTON_FLYINGM_FIRE}
  4053. DIBUTTON_FLYINGM_WEAPONS = $05000C02; (* Select next weapon *)
  4054. {$EXTERNALSYM DIBUTTON_FLYINGM_WEAPONS}
  4055. DIBUTTON_FLYINGM_TARGET = $05000C03; (* Selects next available target *)
  4056. {$EXTERNALSYM DIBUTTON_FLYINGM_TARGET}
  4057. DIBUTTON_FLYINGM_MENU = $050004FD; (* Show menu options *)
  4058. {$EXTERNALSYM DIBUTTON_FLYINGM_MENU}
  4059. (*--- Priority 2 controls ---*)
  4060. DIHATSWITCH_FLYINGM_GLANCE = $05004601; (* Look around *)
  4061. {$EXTERNALSYM DIHATSWITCH_FLYINGM_GLANCE}
  4062. DIBUTTON_FLYINGM_COUNTER = $05005C04; (* Activate counter measures *)
  4063. {$EXTERNALSYM DIBUTTON_FLYINGM_COUNTER}
  4064. DIAXIS_FLYINGM_RUDDER = $05024A04; (* Rudder - Yaw ship left/right *)
  4065. {$EXTERNALSYM DIAXIS_FLYINGM_RUDDER}
  4066. DIAXIS_FLYINGM_BRAKE = $05046205; (* Brake-axis *)
  4067. {$EXTERNALSYM DIAXIS_FLYINGM_BRAKE}
  4068. DIBUTTON_FLYINGM_VIEW = $05006405; (* Cycle through view options *)
  4069. {$EXTERNALSYM DIBUTTON_FLYINGM_VIEW}
  4070. DIBUTTON_FLYINGM_DISPLAY = $05006406; (* Select next dashboard option *)
  4071. {$EXTERNALSYM DIBUTTON_FLYINGM_DISPLAY}
  4072. DIAXIS_FLYINGM_FLAPS = $05055206; (* Flaps *)
  4073. {$EXTERNALSYM DIAXIS_FLYINGM_FLAPS}
  4074. DIBUTTON_FLYINGM_FLAPSUP = $05005407; (* Increment stepping up until fully retracted *)
  4075. {$EXTERNALSYM DIBUTTON_FLYINGM_FLAPSUP}
  4076. DIBUTTON_FLYINGM_FLAPSDOWN = $05005408; (* Decrement stepping down until fully extended *)
  4077. {$EXTERNALSYM DIBUTTON_FLYINGM_FLAPSDOWN}
  4078. DIBUTTON_FLYINGM_FIRESECONDARY = $05004C09; (* Alternative fire button *)
  4079. {$EXTERNALSYM DIBUTTON_FLYINGM_FIRESECONDARY}
  4080. DIBUTTON_FLYINGM_GEAR = $0500640A; (* Gear up / down *)
  4081. {$EXTERNALSYM DIBUTTON_FLYINGM_GEAR}
  4082. DIBUTTON_FLYINGM_BRAKE_LINK = $050464E0; (* Fallback brake button *)
  4083. {$EXTERNALSYM DIBUTTON_FLYINGM_BRAKE_LINK}
  4084. DIBUTTON_FLYINGM_FASTER_LINK = $0503D4E0; (* Fallback throttle up button *)
  4085. {$EXTERNALSYM DIBUTTON_FLYINGM_FASTER_LINK}
  4086. DIBUTTON_FLYINGM_SLOWER_LINK = $0503D4E8; (* Fallback throttle down button *)
  4087. {$EXTERNALSYM DIBUTTON_FLYINGM_SLOWER_LINK}
  4088. DIBUTTON_FLYINGM_GLANCE_LEFT_LINK = $0507C4E4; (* Fallback Glance Left button *)
  4089. {$EXTERNALSYM DIBUTTON_FLYINGM_GLANCE_LEFT_LINK}
  4090. DIBUTTON_FLYINGM_GLANCE_RIGHT_LINK = $0507C4EC; (* Fallback Glance Right button *)
  4091. {$EXTERNALSYM DIBUTTON_FLYINGM_GLANCE_RIGHT_LINK}
  4092. DIBUTTON_FLYINGM_GLANCE_UP_LINK = $0507C4E0; (* Fallback Glance Up button *)
  4093. {$EXTERNALSYM DIBUTTON_FLYINGM_GLANCE_UP_LINK}
  4094. DIBUTTON_FLYINGM_GLANCE_DOWN_LINK = $0507C4E8; (* Fallback Glance Down button *)
  4095. {$EXTERNALSYM DIBUTTON_FLYINGM_GLANCE_DOWN_LINK}
  4096. DIBUTTON_FLYINGM_DEVICE = $050044FE; (* Show input device and controls *)
  4097. {$EXTERNALSYM DIBUTTON_FLYINGM_DEVICE}
  4098. DIBUTTON_FLYINGM_PAUSE = $050044FC; (* Start / Pause / Restart game *)
  4099. {$EXTERNALSYM DIBUTTON_FLYINGM_PAUSE}
  4100. (*--- Flight Simulator - Combat Helicopter
  4101. Combat from helicopter is primary objective ---*)
  4102. DIVIRTUAL_FLYING_HELICOPTER = $06000000;
  4103. {$EXTERNALSYM DIVIRTUAL_FLYING_HELICOPTER}
  4104. DIAXIS_FLYINGH_BANK = $06008A01; (* Bank - Roll ship left / right *)
  4105. {$EXTERNALSYM DIAXIS_FLYINGH_BANK}
  4106. DIAXIS_FLYINGH_PITCH = $06010A02; (* Pitch - Nose up / down *)
  4107. {$EXTERNALSYM DIAXIS_FLYINGH_PITCH}
  4108. DIAXIS_FLYINGH_COLLECTIVE = $06018A03; (* Collective - Blade pitch/power *)
  4109. {$EXTERNALSYM DIAXIS_FLYINGH_COLLECTIVE}
  4110. DIBUTTON_FLYINGH_FIRE = $06001401; (* Fire *)
  4111. {$EXTERNALSYM DIBUTTON_FLYINGH_FIRE}
  4112. DIBUTTON_FLYINGH_WEAPONS = $06001402; (* Select next weapon *)
  4113. {$EXTERNALSYM DIBUTTON_FLYINGH_WEAPONS}
  4114. DIBUTTON_FLYINGH_TARGET = $06001403; (* Selects next available target *)
  4115. {$EXTERNALSYM DIBUTTON_FLYINGH_TARGET}
  4116. DIBUTTON_FLYINGH_MENU = $060004FD; (* Show menu options *)
  4117. {$EXTERNALSYM DIBUTTON_FLYINGH_MENU}
  4118. (*--- Priority 2 controls ---*)
  4119. DIHATSWITCH_FLYINGH_GLANCE = $06004601; (* Look around *)
  4120. {$EXTERNALSYM DIHATSWITCH_FLYINGH_GLANCE}
  4121. DIAXIS_FLYINGH_TORQUE = $06025A04; (* Torque - Rotate ship around left / right axis *)
  4122. {$EXTERNALSYM DIAXIS_FLYINGH_TORQUE}
  4123. DIAXIS_FLYINGH_THROTTLE = $0603DA05; (* Throttle *)
  4124. {$EXTERNALSYM DIAXIS_FLYINGH_THROTTLE}
  4125. DIBUTTON_FLYINGH_COUNTER = $06005404; (* Activate counter measures *)
  4126. {$EXTERNALSYM DIBUTTON_FLYINGH_COUNTER}
  4127. DIBUTTON_FLYINGH_VIEW = $06006405; (* Cycle through view options *)
  4128. {$EXTERNALSYM DIBUTTON_FLYINGH_VIEW}
  4129. DIBUTTON_FLYINGH_GEAR = $06006406; (* Gear up / down *)
  4130. {$EXTERNALSYM DIBUTTON_FLYINGH_GEAR}
  4131. DIBUTTON_FLYINGH_FIRESECONDARY = $06004C07; (* Alternative fire button *)
  4132. {$EXTERNALSYM DIBUTTON_FLYINGH_FIRESECONDARY}
  4133. DIBUTTON_FLYINGH_FASTER_LINK = $0603DCE0; (* Fallback throttle up button *)
  4134. {$EXTERNALSYM DIBUTTON_FLYINGH_FASTER_LINK}
  4135. DIBUTTON_FLYINGH_SLOWER_LINK = $0603DCE8; (* Fallback throttle down button *)
  4136. {$EXTERNALSYM DIBUTTON_FLYINGH_SLOWER_LINK}
  4137. DIBUTTON_FLYINGH_GLANCE_LEFT_LINK = $0607C4E4; (* Fallback Glance Left button *)
  4138. {$EXTERNALSYM DIBUTTON_FLYINGH_GLANCE_LEFT_LINK}
  4139. DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK = $0607C4EC; (* Fallback Glance Right button *)
  4140. {$EXTERNALSYM DIBUTTON_FLYINGH_GLANCE_RIGHT_LINK}
  4141. DIBUTTON_FLYINGH_GLANCE_UP_LINK = $0607C4E0; (* Fallback Glance Up button *)
  4142. {$EXTERNALSYM DIBUTTON_FLYINGH_GLANCE_UP_LINK}
  4143. DIBUTTON_FLYINGH_GLANCE_DOWN_LINK = $0607C4E8; (* Fallback Glance Down button *)
  4144. {$EXTERNALSYM DIBUTTON_FLYINGH_GLANCE_DOWN_LINK}
  4145. DIBUTTON_FLYINGH_DEVICE = $060044FE; (* Show input device and controls *)
  4146. {$EXTERNALSYM DIBUTTON_FLYINGH_DEVICE}
  4147. DIBUTTON_FLYINGH_PAUSE = $060044FC; (* Start / Pause / Restart game *)
  4148. {$EXTERNALSYM DIBUTTON_FLYINGH_PAUSE}
  4149. (*--- Space Simulator - Combat
  4150. Space Simulator with weapons ---*)
  4151. DIVIRTUAL_SPACESIM = $07000000;
  4152. {$EXTERNALSYM DIVIRTUAL_SPACESIM}
  4153. DIAXIS_SPACESIM_LATERAL = $07008201; (* Move ship left / right *)
  4154. {$EXTERNALSYM DIAXIS_SPACESIM_LATERAL}
  4155. DIAXIS_SPACESIM_MOVE = $07010202; (* Move ship forward/backward *)
  4156. {$EXTERNALSYM DIAXIS_SPACESIM_MOVE}
  4157. DIAXIS_SPACESIM_THROTTLE = $07038203; (* Throttle - Engine speed *)
  4158. {$EXTERNALSYM DIAXIS_SPACESIM_THROTTLE}
  4159. DIBUTTON_SPACESIM_FIRE = $07000401; (* Fire *)
  4160. {$EXTERNALSYM DIBUTTON_SPACESIM_FIRE}
  4161. DIBUTTON_SPACESIM_WEAPONS = $07000402; (* Select next weapon *)
  4162. {$EXTERNALSYM DIBUTTON_SPACESIM_WEAPONS}
  4163. DIBUTTON_SPACESIM_TARGET = $07000403; (* Selects next available target *)
  4164. {$EXTERNALSYM DIBUTTON_SPACESIM_TARGET}
  4165. DIBUTTON_SPACESIM_MENU = $070004FD; (* Show menu options *)
  4166. {$EXTERNALSYM DIBUTTON_SPACESIM_MENU}
  4167. (*--- Priority 2 controls ---*)
  4168. DIHATSWITCH_SPACESIM_GLANCE = $07004601; (* Look around *)
  4169. {$EXTERNALSYM DIHATSWITCH_SPACESIM_GLANCE}
  4170. DIAXIS_SPACESIM_CLIMB = $0701C204; (* Climb - Pitch ship up/down *)
  4171. {$EXTERNALSYM DIAXIS_SPACESIM_CLIMB}
  4172. DIAXIS_SPACESIM_ROTATE = $07024205; (* Rotate - Turn ship left/right *)
  4173. {$EXTERNALSYM DIAXIS_SPACESIM_ROTATE}
  4174. DIBUTTON_SPACESIM_VIEW = $07004404; (* Cycle through view options *)
  4175. {$EXTERNALSYM DIBUTTON_SPACESIM_VIEW}
  4176. DIBUTTON_SPACESIM_DISPLAY = $07004405; (* Select next dashboard / heads up display option *)
  4177. {$EXTERNALSYM DIBUTTON_SPACESIM_DISPLAY}
  4178. DIBUTTON_SPACESIM_RAISE = $07004406; (* Raise ship while maintaining current pitch *)
  4179. {$EXTERNALSYM DIBUTTON_SPACESIM_RAISE}
  4180. DIBUTTON_SPACESIM_LOWER = $07004407; (* Lower ship while maintaining current pitch *)
  4181. {$EXTERNALSYM DIBUTTON_SPACESIM_LOWER}
  4182. DIBUTTON_SPACESIM_GEAR = $07004408; (* Gear up / down *)
  4183. {$EXTERNALSYM DIBUTTON_SPACESIM_GEAR}
  4184. DIBUTTON_SPACESIM_FIRESECONDARY = $07004409; (* Alternative fire button *)
  4185. {$EXTERNALSYM DIBUTTON_SPACESIM_FIRESECONDARY}
  4186. DIBUTTON_SPACESIM_LEFT_LINK = $0700C4E4; (* Fallback move left button *)
  4187. {$EXTERNALSYM DIBUTTON_SPACESIM_LEFT_LINK}
  4188. DIBUTTON_SPACESIM_RIGHT_LINK = $0700C4EC; (* Fallback move right button *)
  4189. {$EXTERNALSYM DIBUTTON_SPACESIM_RIGHT_LINK}
  4190. DIBUTTON_SPACESIM_FORWARD_LINK = $070144E0; (* Fallback move forward button *)
  4191. {$EXTERNALSYM DIBUTTON_SPACESIM_FORWARD_LINK}
  4192. DIBUTTON_SPACESIM_BACKWARD_LINK = $070144E8; (* Fallback move backwards button *)
  4193. {$EXTERNALSYM DIBUTTON_SPACESIM_BACKWARD_LINK}
  4194. DIBUTTON_SPACESIM_FASTER_LINK = $0703C4E0; (* Fallback throttle up button *)
  4195. {$EXTERNALSYM DIBUTTON_SPACESIM_FASTER_LINK}
  4196. DIBUTTON_SPACESIM_SLOWER_LINK = $0703C4E8; (* Fallback throttle down button *)
  4197. {$EXTERNALSYM DIBUTTON_SPACESIM_SLOWER_LINK}
  4198. DIBUTTON_SPACESIM_TURN_LEFT_LINK = $070244E4; (* Fallback turn left button *)
  4199. {$EXTERNALSYM DIBUTTON_SPACESIM_TURN_LEFT_LINK}
  4200. DIBUTTON_SPACESIM_TURN_RIGHT_LINK = $070244EC; (* Fallback turn right button *)
  4201. {$EXTERNALSYM DIBUTTON_SPACESIM_TURN_RIGHT_LINK}
  4202. DIBUTTON_SPACESIM_GLANCE_LEFT_LINK = $0707C4E4; (* Fallback Glance Left button *)
  4203. {$EXTERNALSYM DIBUTTON_SPACESIM_GLANCE_LEFT_LINK}
  4204. DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK = $0707C4EC; (* Fallback Glance Right button *)
  4205. {$EXTERNALSYM DIBUTTON_SPACESIM_GLANCE_RIGHT_LINK}
  4206. DIBUTTON_SPACESIM_GLANCE_UP_LINK = $0707C4E0; (* Fallback Glance Up button *)
  4207. {$EXTERNALSYM DIBUTTON_SPACESIM_GLANCE_UP_LINK}
  4208. DIBUTTON_SPACESIM_GLANCE_DOWN_LINK = $0707C4E8; (* Fallback Glance Down button *)
  4209. {$EXTERNALSYM DIBUTTON_SPACESIM_GLANCE_DOWN_LINK}
  4210. DIBUTTON_SPACESIM_DEVICE = $070044FE; (* Show input device and controls *)
  4211. {$EXTERNALSYM DIBUTTON_SPACESIM_DEVICE}
  4212. DIBUTTON_SPACESIM_PAUSE = $070044FC; (* Start / Pause / Restart game *)
  4213. {$EXTERNALSYM DIBUTTON_SPACESIM_PAUSE}
  4214. (*--- Fighting - First Person
  4215. Hand to Hand combat is primary objective ---*)
  4216. DIVIRTUAL_FIGHTING_HAND2HAND = $08000000;
  4217. {$EXTERNALSYM DIVIRTUAL_FIGHTING_HAND2HAND}
  4218. DIAXIS_FIGHTINGH_LATERAL = $08008201; (* Sidestep left/right *)
  4219. {$EXTERNALSYM DIAXIS_FIGHTINGH_LATERAL}
  4220. DIAXIS_FIGHTINGH_MOVE = $08010202; (* Move forward/backward *)
  4221. {$EXTERNALSYM DIAXIS_FIGHTINGH_MOVE}
  4222. DIBUTTON_FIGHTINGH_PUNCH = $08000401; (* Punch *)
  4223. {$EXTERNALSYM DIBUTTON_FIGHTINGH_PUNCH}
  4224. DIBUTTON_FIGHTINGH_KICK = $08000402; (* Kick *)
  4225. {$EXTERNALSYM DIBUTTON_FIGHTINGH_KICK}
  4226. DIBUTTON_FIGHTINGH_BLOCK = $08000403; (* Block *)
  4227. {$EXTERNALSYM DIBUTTON_FIGHTINGH_BLOCK}
  4228. DIBUTTON_FIGHTINGH_CROUCH = $08000404; (* Crouch *)
  4229. {$EXTERNALSYM DIBUTTON_FIGHTINGH_CROUCH}
  4230. DIBUTTON_FIGHTINGH_JUMP = $08000405; (* Jump *)
  4231. {$EXTERNALSYM DIBUTTON_FIGHTINGH_JUMP}
  4232. DIBUTTON_FIGHTINGH_SPECIAL1 = $08000406; (* Apply first special move *)
  4233. {$EXTERNALSYM DIBUTTON_FIGHTINGH_SPECIAL1}
  4234. DIBUTTON_FIGHTINGH_SPECIAL2 = $08000407; (* Apply second special move *)
  4235. {$EXTERNALSYM DIBUTTON_FIGHTINGH_SPECIAL2}
  4236. DIBUTTON_FIGHTINGH_MENU = $080004FD; (* Show menu options *)
  4237. {$EXTERNALSYM DIBUTTON_FIGHTINGH_MENU}
  4238. (*--- Priority 2 controls ---*)
  4239. DIBUTTON_FIGHTINGH_SELECT = $08004408; (* Select special move *)
  4240. {$EXTERNALSYM DIBUTTON_FIGHTINGH_SELECT}
  4241. DIHATSWITCH_FIGHTINGH_SLIDE = $08004601; (* Look around *)
  4242. {$EXTERNALSYM DIHATSWITCH_FIGHTINGH_SLIDE}
  4243. DIBUTTON_FIGHTINGH_DISPLAY = $08004409; (* Shows next on-screen display option *)
  4244. {$EXTERNALSYM DIBUTTON_FIGHTINGH_DISPLAY}
  4245. DIAXIS_FIGHTINGH_ROTATE = $08024203; (* Rotate - Turn body left/right *)
  4246. {$EXTERNALSYM DIAXIS_FIGHTINGH_ROTATE}
  4247. DIBUTTON_FIGHTINGH_DODGE = $0800440A; (* Dodge *)
  4248. {$EXTERNALSYM DIBUTTON_FIGHTINGH_DODGE}
  4249. DIBUTTON_FIGHTINGH_LEFT_LINK = $0800C4E4; (* Fallback left sidestep button *)
  4250. {$EXTERNALSYM DIBUTTON_FIGHTINGH_LEFT_LINK}
  4251. DIBUTTON_FIGHTINGH_RIGHT_LINK = $0800C4EC; (* Fallback right sidestep button *)
  4252. {$EXTERNALSYM DIBUTTON_FIGHTINGH_RIGHT_LINK}
  4253. DIBUTTON_FIGHTINGH_FORWARD_LINK = $080144E0; (* Fallback forward button *)
  4254. {$EXTERNALSYM DIBUTTON_FIGHTINGH_FORWARD_LINK}
  4255. DIBUTTON_FIGHTINGH_BACKWARD_LINK = $080144E8; (* Fallback backward button *)
  4256. {$EXTERNALSYM DIBUTTON_FIGHTINGH_BACKWARD_LINK}
  4257. DIBUTTON_FIGHTINGH_DEVICE = $080044FE; (* Show input device and controls *)
  4258. {$EXTERNALSYM DIBUTTON_FIGHTINGH_DEVICE}
  4259. DIBUTTON_FIGHTINGH_PAUSE = $080044FC; (* Start / Pause / Restart game *)
  4260. {$EXTERNALSYM DIBUTTON_FIGHTINGH_PAUSE}
  4261. (*--- Fighting - First Person Shooting
  4262. Navigation and combat are primary objectives ---*)
  4263. DIVIRTUAL_FIGHTING_FPS = $09000000;
  4264. {$EXTERNALSYM DIVIRTUAL_FIGHTING_FPS}
  4265. DIAXIS_FPS_ROTATE = $09008201; (* Rotate character left/right *)
  4266. {$EXTERNALSYM DIAXIS_FPS_ROTATE}
  4267. DIAXIS_FPS_MOVE = $09010202; (* Move forward/backward *)
  4268. {$EXTERNALSYM DIAXIS_FPS_MOVE}
  4269. DIBUTTON_FPS_FIRE = $09000401; (* Fire *)
  4270. {$EXTERNALSYM DIBUTTON_FPS_FIRE}
  4271. DIBUTTON_FPS_WEAPONS = $09000402; (* Select next weapon *)
  4272. {$EXTERNALSYM DIBUTTON_FPS_WEAPONS}
  4273. DIBUTTON_FPS_APPLY = $09000403; (* Use item *)
  4274. {$EXTERNALSYM DIBUTTON_FPS_APPLY}
  4275. DIBUTTON_FPS_SELECT = $09000404; (* Select next inventory item *)
  4276. {$EXTERNALSYM DIBUTTON_FPS_SELECT}
  4277. DIBUTTON_FPS_CROUCH = $09000405; (* Crouch/ climb down/ swim down *)
  4278. {$EXTERNALSYM DIBUTTON_FPS_CROUCH}
  4279. DIBUTTON_FPS_JUMP = $09000406; (* Jump/ climb up/ swim up *)
  4280. {$EXTERNALSYM DIBUTTON_FPS_JUMP}
  4281. DIAXIS_FPS_LOOKUPDOWN = $09018203; (* Look up / down *)
  4282. {$EXTERNALSYM DIAXIS_FPS_LOOKUPDOWN}
  4283. DIBUTTON_FPS_STRAFE = $09000407; (* Enable strafing while active *)
  4284. {$EXTERNALSYM DIBUTTON_FPS_STRAFE}
  4285. DIBUTTON_FPS_MENU = $090004FD; (* Show menu options *)
  4286. {$EXTERNALSYM DIBUTTON_FPS_MENU}
  4287. (*--- Priority 2 controls ---*)
  4288. DIHATSWITCH_FPS_GLANCE = $09004601; (* Look around *)
  4289. {$EXTERNALSYM DIHATSWITCH_FPS_GLANCE}
  4290. DIBUTTON_FPS_DISPLAY = $09004408; (* Shows next on-screen display option/ map *)
  4291. {$EXTERNALSYM DIBUTTON_FPS_DISPLAY}
  4292. DIAXIS_FPS_SIDESTEP = $09024204; (* Sidestep *)
  4293. {$EXTERNALSYM DIAXIS_FPS_SIDESTEP}
  4294. DIBUTTON_FPS_DODGE = $09004409; (* Dodge *)
  4295. {$EXTERNALSYM DIBUTTON_FPS_DODGE}
  4296. DIBUTTON_FPS_GLANCEL = $0900440A; (* Glance Left *)
  4297. {$EXTERNALSYM DIBUTTON_FPS_GLANCEL}
  4298. DIBUTTON_FPS_GLANCER = $0900440B; (* Glance Right *)
  4299. {$EXTERNALSYM DIBUTTON_FPS_GLANCER}
  4300. DIBUTTON_FPS_FIRESECONDARY = $0900440C; (* Alternative fire button *)
  4301. {$EXTERNALSYM DIBUTTON_FPS_FIRESECONDARY}
  4302. DIBUTTON_FPS_ROTATE_LEFT_LINK = $0900C4E4; (* Fallback rotate left button *)
  4303. {$EXTERNALSYM DIBUTTON_FPS_ROTATE_LEFT_LINK}
  4304. DIBUTTON_FPS_ROTATE_RIGHT_LINK = $0900C4EC; (* Fallback rotate right button *)
  4305. {$EXTERNALSYM DIBUTTON_FPS_ROTATE_RIGHT_LINK}
  4306. DIBUTTON_FPS_FORWARD_LINK = $090144E0; (* Fallback forward button *)
  4307. {$EXTERNALSYM DIBUTTON_FPS_FORWARD_LINK}
  4308. DIBUTTON_FPS_BACKWARD_LINK = $090144E8; (* Fallback backward button *)
  4309. {$EXTERNALSYM DIBUTTON_FPS_BACKWARD_LINK}
  4310. DIBUTTON_FPS_GLANCE_UP_LINK = $0901C4E0; (* Fallback look up button *)
  4311. {$EXTERNALSYM DIBUTTON_FPS_GLANCE_UP_LINK}
  4312. DIBUTTON_FPS_GLANCE_DOWN_LINK = $0901C4E8; (* Fallback look down button *)
  4313. {$EXTERNALSYM DIBUTTON_FPS_GLANCE_DOWN_LINK}
  4314. DIBUTTON_FPS_STEP_LEFT_LINK = $090244E4; (* Fallback step left button *)
  4315. {$EXTERNALSYM DIBUTTON_FPS_STEP_LEFT_LINK}
  4316. DIBUTTON_FPS_STEP_RIGHT_LINK = $090244EC; (* Fallback step right button *)
  4317. {$EXTERNALSYM DIBUTTON_FPS_STEP_RIGHT_LINK}
  4318. DIBUTTON_FPS_DEVICE = $090044FE; (* Show input device and controls *)
  4319. {$EXTERNALSYM DIBUTTON_FPS_DEVICE}
  4320. DIBUTTON_FPS_PAUSE = $090044FC; (* Start / Pause / Restart game *)
  4321. {$EXTERNALSYM DIBUTTON_FPS_PAUSE}
  4322. (*--- Fighting - Third Person action
  4323. Perspective of camera is behind the main character ---*)
  4324. DIVIRTUAL_FIGHTING_THIRDPERSON = $0A000000;
  4325. {$EXTERNALSYM DIVIRTUAL_FIGHTING_THIRDPERSON}
  4326. DIAXIS_TPS_TURN = $0A020201; (* Turn left/right *)
  4327. {$EXTERNALSYM DIAXIS_TPS_TURN}
  4328. DIAXIS_TPS_MOVE = $0A010202; (* Move forward/backward *)
  4329. {$EXTERNALSYM DIAXIS_TPS_MOVE}
  4330. DIBUTTON_TPS_RUN = $0A000401; (* Run or walk toggle switch *)
  4331. {$EXTERNALSYM DIBUTTON_TPS_RUN}
  4332. DIBUTTON_TPS_ACTION = $0A000402; (* Action Button *)
  4333. {$EXTERNALSYM DIBUTTON_TPS_ACTION}
  4334. DIBUTTON_TPS_SELECT = $0A000403; (* Select next weapon *)
  4335. {$EXTERNALSYM DIBUTTON_TPS_SELECT}
  4336. DIBUTTON_TPS_USE = $0A000404; (* Use inventory item currently selected *)
  4337. {$EXTERNALSYM DIBUTTON_TPS_USE}
  4338. DIBUTTON_TPS_JUMP = $0A000405; (* Character Jumps *)
  4339. {$EXTERNALSYM DIBUTTON_TPS_JUMP}
  4340. DIBUTTON_TPS_MENU = $0A0004FD; (* Show menu options *)
  4341. {$EXTERNALSYM DIBUTTON_TPS_MENU}
  4342. (*--- Priority 2 controls ---*)
  4343. DIHATSWITCH_TPS_GLANCE = $0A004601; (* Look around *)
  4344. {$EXTERNALSYM DIHATSWITCH_TPS_GLANCE}
  4345. DIBUTTON_TPS_VIEW = $0A004406; (* Select camera view *)
  4346. {$EXTERNALSYM DIBUTTON_TPS_VIEW}
  4347. DIBUTTON_TPS_STEPLEFT = $0A004407; (* Character takes a left step *)
  4348. {$EXTERNALSYM DIBUTTON_TPS_STEPLEFT}
  4349. DIBUTTON_TPS_STEPRIGHT = $0A004408; (* Character takes a right step *)
  4350. {$EXTERNALSYM DIBUTTON_TPS_STEPRIGHT}
  4351. DIAXIS_TPS_STEP = $0A00C203; (* Character steps left/right *)
  4352. {$EXTERNALSYM DIAXIS_TPS_STEP}
  4353. DIBUTTON_TPS_DODGE = $0A004409; (* Character dodges or ducks *)
  4354. {$EXTERNALSYM DIBUTTON_TPS_DODGE}
  4355. DIBUTTON_TPS_INVENTORY = $0A00440A; (* Cycle through inventory *)
  4356. {$EXTERNALSYM DIBUTTON_TPS_INVENTORY}
  4357. DIBUTTON_TPS_TURN_LEFT_LINK = $0A0244E4; (* Fallback turn left button *)
  4358. {$EXTERNALSYM DIBUTTON_TPS_TURN_LEFT_LINK}
  4359. DIBUTTON_TPS_TURN_RIGHT_LINK = $0A0244EC; (* Fallback turn right button *)
  4360. {$EXTERNALSYM DIBUTTON_TPS_TURN_RIGHT_LINK}
  4361. DIBUTTON_TPS_FORWARD_LINK = $0A0144E0; (* Fallback forward button *)
  4362. {$EXTERNALSYM DIBUTTON_TPS_FORWARD_LINK}
  4363. DIBUTTON_TPS_BACKWARD_LINK = $0A0144E8; (* Fallback backward button *)
  4364. {$EXTERNALSYM DIBUTTON_TPS_BACKWARD_LINK}
  4365. DIBUTTON_TPS_GLANCE_UP_LINK = $0A07C4E0; (* Fallback look up button *)
  4366. {$EXTERNALSYM DIBUTTON_TPS_GLANCE_UP_LINK}
  4367. DIBUTTON_TPS_GLANCE_DOWN_LINK = $0A07C4E8; (* Fallback look down button *)
  4368. {$EXTERNALSYM DIBUTTON_TPS_GLANCE_DOWN_LINK}
  4369. DIBUTTON_TPS_GLANCE_LEFT_LINK = $0A07C4E4; (* Fallback glance up button *)
  4370. {$EXTERNALSYM DIBUTTON_TPS_GLANCE_LEFT_LINK}
  4371. DIBUTTON_TPS_GLANCE_RIGHT_LINK = $0A07C4EC; (* Fallback glance right button *)
  4372. {$EXTERNALSYM DIBUTTON_TPS_GLANCE_RIGHT_LINK}
  4373. DIBUTTON_TPS_DEVICE = $0A0044FE; (* Show input device and controls *)
  4374. {$EXTERNALSYM DIBUTTON_TPS_DEVICE}
  4375. DIBUTTON_TPS_PAUSE = $0A0044FC; (* Start / Pause / Restart game *)
  4376. {$EXTERNALSYM DIBUTTON_TPS_PAUSE}
  4377. (*--- Strategy - Role Playing
  4378. Navigation and problem solving are primary actions ---*)
  4379. DIVIRTUAL_STRATEGY_ROLEPLAYING = $0B000000;
  4380. {$EXTERNALSYM DIVIRTUAL_STRATEGY_ROLEPLAYING}
  4381. DIAXIS_STRATEGYR_LATERAL = $0B008201; (* sidestep - left/right *)
  4382. {$EXTERNALSYM DIAXIS_STRATEGYR_LATERAL}
  4383. DIAXIS_STRATEGYR_MOVE = $0B010202; (* move forward/backward *)
  4384. {$EXTERNALSYM DIAXIS_STRATEGYR_MOVE}
  4385. DIBUTTON_STRATEGYR_GET = $0B000401; (* Acquire item *)
  4386. {$EXTERNALSYM DIBUTTON_STRATEGYR_GET}
  4387. DIBUTTON_STRATEGYR_APPLY = $0B000402; (* Use selected item *)
  4388. {$EXTERNALSYM DIBUTTON_STRATEGYR_APPLY}
  4389. DIBUTTON_STRATEGYR_SELECT = $0B000403; (* Select nextitem *)
  4390. {$EXTERNALSYM DIBUTTON_STRATEGYR_SELECT}
  4391. DIBUTTON_STRATEGYR_ATTACK = $0B000404; (* Attack *)
  4392. {$EXTERNALSYM DIBUTTON_STRATEGYR_ATTACK}
  4393. DIBUTTON_STRATEGYR_CAST = $0B000405; (* Cast Spell *)
  4394. {$EXTERNALSYM DIBUTTON_STRATEGYR_CAST}
  4395. DIBUTTON_STRATEGYR_CROUCH = $0B000406; (* Crouch *)
  4396. {$EXTERNALSYM DIBUTTON_STRATEGYR_CROUCH}
  4397. DIBUTTON_STRATEGYR_JUMP = $0B000407; (* Jump *)
  4398. {$EXTERNALSYM DIBUTTON_STRATEGYR_JUMP}
  4399. DIBUTTON_STRATEGYR_MENU = $0B0004FD; (* Show menu options *)
  4400. {$EXTERNALSYM DIBUTTON_STRATEGYR_MENU}
  4401. (*--- Priority 2 controls ---*)
  4402. DIHATSWITCH_STRATEGYR_GLANCE = $0B004601; (* Look around *)
  4403. {$EXTERNALSYM DIHATSWITCH_STRATEGYR_GLANCE}
  4404. DIBUTTON_STRATEGYR_MAP = $0B004408; (* Cycle through map options *)
  4405. {$EXTERNALSYM DIBUTTON_STRATEGYR_MAP}
  4406. DIBUTTON_STRATEGYR_DISPLAY = $0B004409; (* Shows next on-screen display option *)
  4407. {$EXTERNALSYM DIBUTTON_STRATEGYR_DISPLAY}
  4408. DIAXIS_STRATEGYR_ROTATE = $0B024203; (* Turn body left/right *)
  4409. {$EXTERNALSYM DIAXIS_STRATEGYR_ROTATE}
  4410. DIBUTTON_STRATEGYR_LEFT_LINK = $0B00C4E4; (* Fallback sidestep left button *)
  4411. {$EXTERNALSYM DIBUTTON_STRATEGYR_LEFT_LINK}
  4412. DIBUTTON_STRATEGYR_RIGHT_LINK = $0B00C4EC; (* Fallback sidestep right button *)
  4413. {$EXTERNALSYM DIBUTTON_STRATEGYR_RIGHT_LINK}
  4414. DIBUTTON_STRATEGYR_FORWARD_LINK = $0B0144E0; (* Fallback move forward button *)
  4415. {$EXTERNALSYM DIBUTTON_STRATEGYR_FORWARD_LINK}
  4416. DIBUTTON_STRATEGYR_BACK_LINK = $0B0144E8; (* Fallback move backward button *)
  4417. {$EXTERNALSYM DIBUTTON_STRATEGYR_BACK_LINK}
  4418. DIBUTTON_STRATEGYR_ROTATE_LEFT_LINK = $0B0244E4; (* Fallback turn body left button *)
  4419. {$EXTERNALSYM DIBUTTON_STRATEGYR_ROTATE_LEFT_LINK}
  4420. DIBUTTON_STRATEGYR_ROTATE_RIGHT_LINK = $0B0244EC; (* Fallback turn body right button *)
  4421. {$EXTERNALSYM DIBUTTON_STRATEGYR_ROTATE_RIGHT_LINK}
  4422. DIBUTTON_STRATEGYR_DEVICE = $0B0044FE; (* Show input device and controls *)
  4423. {$EXTERNALSYM DIBUTTON_STRATEGYR_DEVICE}
  4424. DIBUTTON_STRATEGYR_PAUSE = $0B0044FC; (* Start / Pause / Restart game *)
  4425. {$EXTERNALSYM DIBUTTON_STRATEGYR_PAUSE}
  4426. (*--- Strategy - Turn based
  4427. Navigation and problem solving are primary actions ---*)
  4428. DIVIRTUAL_STRATEGY_TURN = $0C000000;
  4429. {$EXTERNALSYM DIVIRTUAL_STRATEGY_TURN}
  4430. DIAXIS_STRATEGYT_LATERAL = $0C008201; (* Sidestep left/right *)
  4431. {$EXTERNALSYM DIAXIS_STRATEGYT_LATERAL}
  4432. DIAXIS_STRATEGYT_MOVE = $0C010202; (* Move forward/backwards *)
  4433. {$EXTERNALSYM DIAXIS_STRATEGYT_MOVE}
  4434. DIBUTTON_STRATEGYT_SELECT = $0C000401; (* Select unit or object *)
  4435. {$EXTERNALSYM DIBUTTON_STRATEGYT_SELECT}
  4436. DIBUTTON_STRATEGYT_INSTRUCT = $0C000402; (* Cycle through instructions *)
  4437. {$EXTERNALSYM DIBUTTON_STRATEGYT_INSTRUCT}
  4438. DIBUTTON_STRATEGYT_APPLY = $0C000403; (* Apply selected instruction *)
  4439. {$EXTERNALSYM DIBUTTON_STRATEGYT_APPLY}
  4440. DIBUTTON_STRATEGYT_TEAM = $0C000404; (* Select next team / cycle through all *)
  4441. {$EXTERNALSYM DIBUTTON_STRATEGYT_TEAM}
  4442. DIBUTTON_STRATEGYT_TURN = $0C000405; (* Indicate turn over *)
  4443. {$EXTERNALSYM DIBUTTON_STRATEGYT_TURN}
  4444. DIBUTTON_STRATEGYT_MENU = $0C0004FD; (* Show menu options *)
  4445. {$EXTERNALSYM DIBUTTON_STRATEGYT_MENU}
  4446. (*--- Priority 2 controls ---*)
  4447. DIBUTTON_STRATEGYT_ZOOM = $0C004406; (* Zoom - in / out *)
  4448. {$EXTERNALSYM DIBUTTON_STRATEGYT_ZOOM}
  4449. DIBUTTON_STRATEGYT_MAP = $0C004407; (* cycle through map options *)
  4450. {$EXTERNALSYM DIBUTTON_STRATEGYT_MAP}
  4451. DIBUTTON_STRATEGYT_DISPLAY = $0C004408; (* shows next on-screen display options *)
  4452. {$EXTERNALSYM DIBUTTON_STRATEGYT_DISPLAY}
  4453. DIBUTTON_STRATEGYT_LEFT_LINK = $0C00C4E4; (* Fallback sidestep left button *)
  4454. {$EXTERNALSYM DIBUTTON_STRATEGYT_LEFT_LINK}
  4455. DIBUTTON_STRATEGYT_RIGHT_LINK = $0C00C4EC; (* Fallback sidestep right button *)
  4456. {$EXTERNALSYM DIBUTTON_STRATEGYT_RIGHT_LINK}
  4457. DIBUTTON_STRATEGYT_FORWARD_LINK = $0C0144E0; (* Fallback move forward button *)
  4458. {$EXTERNALSYM DIBUTTON_STRATEGYT_FORWARD_LINK}
  4459. DIBUTTON_STRATEGYT_BACK_LINK = $0C0144E8; (* Fallback move back button *)
  4460. {$EXTERNALSYM DIBUTTON_STRATEGYT_BACK_LINK}
  4461. DIBUTTON_STRATEGYT_DEVICE = $0C0044FE; (* Show input device and controls *)
  4462. {$EXTERNALSYM DIBUTTON_STRATEGYT_DEVICE}
  4463. DIBUTTON_STRATEGYT_PAUSE = $0C0044FC; (* Start / Pause / Restart game *)
  4464. {$EXTERNALSYM DIBUTTON_STRATEGYT_PAUSE}
  4465. (*--- Sports - Hunting
  4466. Hunting ---*)
  4467. DIVIRTUAL_SPORTS_HUNTING = $0D000000;
  4468. {$EXTERNALSYM DIVIRTUAL_SPORTS_HUNTING}
  4469. DIAXIS_HUNTING_LATERAL = $0D008201; (* sidestep left/right *)
  4470. {$EXTERNALSYM DIAXIS_HUNTING_LATERAL}
  4471. DIAXIS_HUNTING_MOVE = $0D010202; (* move forward/backwards *)
  4472. {$EXTERNALSYM DIAXIS_HUNTING_MOVE}
  4473. DIBUTTON_HUNTING_FIRE = $0D000401; (* Fire selected weapon *)
  4474. {$EXTERNALSYM DIBUTTON_HUNTING_FIRE}
  4475. DIBUTTON_HUNTING_AIM = $0D000402; (* Select aim/move *)
  4476. {$EXTERNALSYM DIBUTTON_HUNTING_AIM}
  4477. DIBUTTON_HUNTING_WEAPON = $0D000403; (* Select next weapon *)
  4478. {$EXTERNALSYM DIBUTTON_HUNTING_WEAPON}
  4479. DIBUTTON_HUNTING_BINOCULAR = $0D000404; (* Look through Binoculars *)
  4480. {$EXTERNALSYM DIBUTTON_HUNTING_BINOCULAR}
  4481. DIBUTTON_HUNTING_CALL = $0D000405; (* Make animal call *)
  4482. {$EXTERNALSYM DIBUTTON_HUNTING_CALL}
  4483. DIBUTTON_HUNTING_MAP = $0D000406; (* View Map *)
  4484. {$EXTERNALSYM DIBUTTON_HUNTING_MAP}
  4485. DIBUTTON_HUNTING_SPECIAL = $0D000407; (* Special game operation *)
  4486. {$EXTERNALSYM DIBUTTON_HUNTING_SPECIAL}
  4487. DIBUTTON_HUNTING_MENU = $0D0004FD; (* Show menu options *)
  4488. {$EXTERNALSYM DIBUTTON_HUNTING_MENU}
  4489. (*--- Priority 2 controls ---*)
  4490. DIHATSWITCH_HUNTING_GLANCE = $0D004601; (* Look around *)
  4491. {$EXTERNALSYM DIHATSWITCH_HUNTING_GLANCE}
  4492. DIBUTTON_HUNTING_DISPLAY = $0D004408; (* show next on-screen display option *)
  4493. {$EXTERNALSYM DIBUTTON_HUNTING_DISPLAY}
  4494. DIAXIS_HUNTING_ROTATE = $0D024203; (* Turn body left/right *)
  4495. {$EXTERNALSYM DIAXIS_HUNTING_ROTATE}
  4496. DIBUTTON_HUNTING_CROUCH = $0D004409; (* Crouch/ Climb / Swim down *)
  4497. {$EXTERNALSYM DIBUTTON_HUNTING_CROUCH}
  4498. DIBUTTON_HUNTING_JUMP = $0D00440A; (* Jump/ Climb up / Swim up *)
  4499. {$EXTERNALSYM DIBUTTON_HUNTING_JUMP}
  4500. DIBUTTON_HUNTING_FIRESECONDARY = $0D00440B; (* Alternative fire button *)
  4501. {$EXTERNALSYM DIBUTTON_HUNTING_FIRESECONDARY}
  4502. DIBUTTON_HUNTING_LEFT_LINK = $0D00C4E4; (* Fallback sidestep left button *)
  4503. {$EXTERNALSYM DIBUTTON_HUNTING_LEFT_LINK}
  4504. DIBUTTON_HUNTING_RIGHT_LINK = $0D00C4EC; (* Fallback sidestep right button *)
  4505. {$EXTERNALSYM DIBUTTON_HUNTING_RIGHT_LINK}
  4506. DIBUTTON_HUNTING_FORWARD_LINK = $0D0144E0; (* Fallback move forward button *)
  4507. {$EXTERNALSYM DIBUTTON_HUNTING_FORWARD_LINK}
  4508. DIBUTTON_HUNTING_BACK_LINK = $0D0144E8; (* Fallback move back button *)
  4509. {$EXTERNALSYM DIBUTTON_HUNTING_BACK_LINK}
  4510. DIBUTTON_HUNTING_ROTATE_LEFT_LINK = $0D0244E4; (* Fallback turn body left button *)
  4511. {$EXTERNALSYM DIBUTTON_HUNTING_ROTATE_LEFT_LINK}
  4512. DIBUTTON_HUNTING_ROTATE_RIGHT_LINK = $0D0244EC; (* Fallback turn body right button *)
  4513. {$EXTERNALSYM DIBUTTON_HUNTING_ROTATE_RIGHT_LINK}
  4514. DIBUTTON_HUNTING_DEVICE = $0D0044FE; (* Show input device and controls *)
  4515. {$EXTERNALSYM DIBUTTON_HUNTING_DEVICE}
  4516. DIBUTTON_HUNTING_PAUSE = $0D0044FC; (* Start / Pause / Restart game *)
  4517. {$EXTERNALSYM DIBUTTON_HUNTING_PAUSE}
  4518. (*--- Sports - Fishing
  4519. Catching Fish is primary objective ---*)
  4520. DIVIRTUAL_SPORTS_FISHING = $0E000000;
  4521. {$EXTERNALSYM DIVIRTUAL_SPORTS_FISHING}
  4522. DIAXIS_FISHING_LATERAL = $0E008201; (* sidestep left/right *)
  4523. {$EXTERNALSYM DIAXIS_FISHING_LATERAL}
  4524. DIAXIS_FISHING_MOVE = $0E010202; (* move forward/backwards *)
  4525. {$EXTERNALSYM DIAXIS_FISHING_MOVE}
  4526. DIBUTTON_FISHING_CAST = $0E000401; (* Cast line *)
  4527. {$EXTERNALSYM DIBUTTON_FISHING_CAST}
  4528. DIBUTTON_FISHING_TYPE = $0E000402; (* Select cast type *)
  4529. {$EXTERNALSYM DIBUTTON_FISHING_TYPE}
  4530. DIBUTTON_FISHING_BINOCULAR = $0E000403; (* Look through Binocular *)
  4531. {$EXTERNALSYM DIBUTTON_FISHING_BINOCULAR}
  4532. DIBUTTON_FISHING_BAIT = $0E000404; (* Select type of Bait *)
  4533. {$EXTERNALSYM DIBUTTON_FISHING_BAIT}
  4534. DIBUTTON_FISHING_MAP = $0E000405; (* View Map *)
  4535. {$EXTERNALSYM DIBUTTON_FISHING_MAP}
  4536. DIBUTTON_FISHING_MENU = $0E0004FD; (* Show menu options *)
  4537. {$EXTERNALSYM DIBUTTON_FISHING_MENU}
  4538. (*--- Priority 2 controls ---*)
  4539. DIHATSWITCH_FISHING_GLANCE = $0E004601; (* Look around *)
  4540. {$EXTERNALSYM DIHATSWITCH_FISHING_GLANCE}
  4541. DIBUTTON_FISHING_DISPLAY = $0E004406; (* Show next on-screen display option *)
  4542. {$EXTERNALSYM DIBUTTON_FISHING_DISPLAY}
  4543. DIAXIS_FISHING_ROTATE = $0E024203; (* Turn character left / right *)
  4544. {$EXTERNALSYM DIAXIS_FISHING_ROTATE}
  4545. DIBUTTON_FISHING_CROUCH = $0E004407; (* Crouch/ Climb / Swim down *)
  4546. {$EXTERNALSYM DIBUTTON_FISHING_CROUCH}
  4547. DIBUTTON_FISHING_JUMP = $0E004408; (* Jump/ Climb up / Swim up *)
  4548. {$EXTERNALSYM DIBUTTON_FISHING_JUMP}
  4549. DIBUTTON_FISHING_LEFT_LINK = $0E00C4E4; (* Fallback sidestep left button *)
  4550. {$EXTERNALSYM DIBUTTON_FISHING_LEFT_LINK}
  4551. DIBUTTON_FISHING_RIGHT_LINK = $0E00C4EC; (* Fallback sidestep right button *)
  4552. {$EXTERNALSYM DIBUTTON_FISHING_RIGHT_LINK}
  4553. DIBUTTON_FISHING_FORWARD_LINK = $0E0144E0; (* Fallback move forward button *)
  4554. {$EXTERNALSYM DIBUTTON_FISHING_FORWARD_LINK}
  4555. DIBUTTON_FISHING_BACK_LINK = $0E0144E8; (* Fallback move back button *)
  4556. {$EXTERNALSYM DIBUTTON_FISHING_BACK_LINK}
  4557. DIBUTTON_FISHING_ROTATE_LEFT_LINK = $0E0244E4; (* Fallback turn body left button *)
  4558. {$EXTERNALSYM DIBUTTON_FISHING_ROTATE_LEFT_LINK}
  4559. DIBUTTON_FISHING_ROTATE_RIGHT_LINK = $0E0244EC; (* Fallback turn body right button *)
  4560. {$EXTERNALSYM DIBUTTON_FISHING_ROTATE_RIGHT_LINK}
  4561. DIBUTTON_FISHING_DEVICE = $0E0044FE; (* Show input device and controls *)
  4562. {$EXTERNALSYM DIBUTTON_FISHING_DEVICE}
  4563. DIBUTTON_FISHING_PAUSE = $0E0044FC; (* Start / Pause / Restart game *)
  4564. {$EXTERNALSYM DIBUTTON_FISHING_PAUSE}
  4565. (*--- Sports - Baseball - Batting
  4566. Batter control is primary objective ---*)
  4567. DIVIRTUAL_SPORTS_BASEBALL_BAT = $0F000000;
  4568. {$EXTERNALSYM DIVIRTUAL_SPORTS_BASEBALL_BAT}
  4569. DIAXIS_BASEBALLB_LATERAL = $0F008201; (* Aim left / right *)
  4570. {$EXTERNALSYM DIAXIS_BASEBALLB_LATERAL}
  4571. DIAXIS_BASEBALLB_MOVE = $0F010202; (* Aim up / down *)
  4572. {$EXTERNALSYM DIAXIS_BASEBALLB_MOVE}
  4573. DIBUTTON_BASEBALLB_SELECT = $0F000401; (* cycle through swing options *)
  4574. {$EXTERNALSYM DIBUTTON_BASEBALLB_SELECT}
  4575. DIBUTTON_BASEBALLB_NORMAL = $0F000402; (* normal swing *)
  4576. {$EXTERNALSYM DIBUTTON_BASEBALLB_NORMAL}
  4577. DIBUTTON_BASEBALLB_POWER = $0F000403; (* swing for the fence *)
  4578. {$EXTERNALSYM DIBUTTON_BASEBALLB_POWER}
  4579. DIBUTTON_BASEBALLB_BUNT = $0F000404; (* bunt *)
  4580. {$EXTERNALSYM DIBUTTON_BASEBALLB_BUNT}
  4581. DIBUTTON_BASEBALLB_STEAL = $0F000405; (* Base runner attempts to steal a base *)
  4582. {$EXTERNALSYM DIBUTTON_BASEBALLB_STEAL}
  4583. DIBUTTON_BASEBALLB_BURST = $0F000406; (* Base runner invokes burst of speed *)
  4584. {$EXTERNALSYM DIBUTTON_BASEBALLB_BURST}
  4585. DIBUTTON_BASEBALLB_SLIDE = $0F000407; (* Base runner slides into base *)
  4586. {$EXTERNALSYM DIBUTTON_BASEBALLB_SLIDE}
  4587. DIBUTTON_BASEBALLB_CONTACT = $0F000408; (* Contact swing *)
  4588. {$EXTERNALSYM DIBUTTON_BASEBALLB_CONTACT}
  4589. DIBUTTON_BASEBALLB_MENU = $0F0004FD; (* Show menu options *)
  4590. {$EXTERNALSYM DIBUTTON_BASEBALLB_MENU}
  4591. (*--- Priority 2 controls ---*)
  4592. DIBUTTON_BASEBALLB_NOSTEAL = $0F004409; (* Base runner goes back to a base *)
  4593. {$EXTERNALSYM DIBUTTON_BASEBALLB_NOSTEAL}
  4594. DIBUTTON_BASEBALLB_BOX = $0F00440A; (* Enter or exit batting box *)
  4595. {$EXTERNALSYM DIBUTTON_BASEBALLB_BOX}
  4596. DIBUTTON_BASEBALLB_LEFT_LINK = $0F00C4E4; (* Fallback sidestep left button *)
  4597. {$EXTERNALSYM DIBUTTON_BASEBALLB_LEFT_LINK}
  4598. DIBUTTON_BASEBALLB_RIGHT_LINK = $0F00C4EC; (* Fallback sidestep right button *)
  4599. {$EXTERNALSYM DIBUTTON_BASEBALLB_RIGHT_LINK}
  4600. DIBUTTON_BASEBALLB_FORWARD_LINK = $0F0144E0; (* Fallback move forward button *)
  4601. {$EXTERNALSYM DIBUTTON_BASEBALLB_FORWARD_LINK}
  4602. DIBUTTON_BASEBALLB_BACK_LINK = $0F0144E8; (* Fallback move back button *)
  4603. {$EXTERNALSYM DIBUTTON_BASEBALLB_BACK_LINK}
  4604. DIBUTTON_BASEBALLB_DEVICE = $0F0044FE; (* Show input device and controls *)
  4605. {$EXTERNALSYM DIBUTTON_BASEBALLB_DEVICE}
  4606. DIBUTTON_BASEBALLB_PAUSE = $0F0044FC; (* Start / Pause / Restart game *)
  4607. {$EXTERNALSYM DIBUTTON_BASEBALLB_PAUSE}
  4608. (*--- Sports - Baseball - Pitching
  4609. Pitcher control is primary objective ---*)
  4610. DIVIRTUAL_SPORTS_BASEBALL_PITCH = $10000000;
  4611. {$EXTERNALSYM DIVIRTUAL_SPORTS_BASEBALL_PITCH}
  4612. DIAXIS_BASEBALLP_LATERAL = $10008201; (* Aim left / right *)
  4613. {$EXTERNALSYM DIAXIS_BASEBALLP_LATERAL}
  4614. DIAXIS_BASEBALLP_MOVE = $10010202; (* Aim up / down *)
  4615. {$EXTERNALSYM DIAXIS_BASEBALLP_MOVE}
  4616. DIBUTTON_BASEBALLP_SELECT = $10000401; (* cycle through pitch selections *)
  4617. {$EXTERNALSYM DIBUTTON_BASEBALLP_SELECT}
  4618. DIBUTTON_BASEBALLP_PITCH = $10000402; (* throw pitch *)
  4619. {$EXTERNALSYM DIBUTTON_BASEBALLP_PITCH}
  4620. DIBUTTON_BASEBALLP_BASE = $10000403; (* select base to throw to *)
  4621. {$EXTERNALSYM DIBUTTON_BASEBALLP_BASE}
  4622. DIBUTTON_BASEBALLP_THROW = $10000404; (* throw to base *)
  4623. {$EXTERNALSYM DIBUTTON_BASEBALLP_THROW}
  4624. DIBUTTON_BASEBALLP_FAKE = $10000405; (* Fake a throw to a base *)
  4625. {$EXTERNALSYM DIBUTTON_BASEBALLP_FAKE}
  4626. DIBUTTON_BASEBALLP_MENU = $100004FD; (* Show menu options *)
  4627. {$EXTERNALSYM DIBUTTON_BASEBALLP_MENU}
  4628. (*--- Priority 2 controls ---*)
  4629. DIBUTTON_BASEBALLP_WALK = $10004406; (* Throw intentional walk / pitch out *)
  4630. {$EXTERNALSYM DIBUTTON_BASEBALLP_WALK}
  4631. DIBUTTON_BASEBALLP_LOOK = $10004407; (* Look at runners on bases *)
  4632. {$EXTERNALSYM DIBUTTON_BASEBALLP_LOOK}
  4633. DIBUTTON_BASEBALLP_LEFT_LINK = $1000C4E4; (* Fallback sidestep left button *)
  4634. {$EXTERNALSYM DIBUTTON_BASEBALLP_LEFT_LINK}
  4635. DIBUTTON_BASEBALLP_RIGHT_LINK = $1000C4EC; (* Fallback sidestep right button *)
  4636. {$EXTERNALSYM DIBUTTON_BASEBALLP_RIGHT_LINK}
  4637. DIBUTTON_BASEBALLP_FORWARD_LINK = $100144E0; (* Fallback move forward button *)
  4638. {$EXTERNALSYM DIBUTTON_BASEBALLP_FORWARD_LINK}
  4639. DIBUTTON_BASEBALLP_BACK_LINK = $100144E8; (* Fallback move back button *)
  4640. {$EXTERNALSYM DIBUTTON_BASEBALLP_BACK_LINK}
  4641. DIBUTTON_BASEBALLP_DEVICE = $100044FE; (* Show input device and controls *)
  4642. {$EXTERNALSYM DIBUTTON_BASEBALLP_DEVICE}
  4643. DIBUTTON_BASEBALLP_PAUSE = $100044FC; (* Start / Pause / Restart game *)
  4644. {$EXTERNALSYM DIBUTTON_BASEBALLP_PAUSE}
  4645. (*--- Sports - Baseball - Fielding
  4646. Fielder control is primary objective ---*)
  4647. DIVIRTUAL_SPORTS_BASEBALL_FIELD = $11000000;
  4648. {$EXTERNALSYM DIVIRTUAL_SPORTS_BASEBALL_FIELD}
  4649. DIAXIS_BASEBALLF_LATERAL = $11008201; (* Aim left / right *)
  4650. {$EXTERNALSYM DIAXIS_BASEBALLF_LATERAL}
  4651. DIAXIS_BASEBALLF_MOVE = $11010202; (* Aim up / down *)
  4652. {$EXTERNALSYM DIAXIS_BASEBALLF_MOVE}
  4653. DIBUTTON_BASEBALLF_NEAREST = $11000401; (* Switch to fielder nearest to the ball *)
  4654. {$EXTERNALSYM DIBUTTON_BASEBALLF_NEAREST}
  4655. DIBUTTON_BASEBALLF_THROW1 = $11000402; (* Make conservative throw *)
  4656. {$EXTERNALSYM DIBUTTON_BASEBALLF_THROW1}
  4657. DIBUTTON_BASEBALLF_THROW2 = $11000403; (* Make aggressive throw *)
  4658. {$EXTERNALSYM DIBUTTON_BASEBALLF_THROW2}
  4659. DIBUTTON_BASEBALLF_BURST = $11000404; (* Invoke burst of speed *)
  4660. {$EXTERNALSYM DIBUTTON_BASEBALLF_BURST}
  4661. DIBUTTON_BASEBALLF_JUMP = $11000405; (* Jump to catch ball *)
  4662. {$EXTERNALSYM DIBUTTON_BASEBALLF_JUMP}
  4663. DIBUTTON_BASEBALLF_DIVE = $11000406; (* Dive to catch ball *)
  4664. {$EXTERNALSYM DIBUTTON_BASEBALLF_DIVE}
  4665. DIBUTTON_BASEBALLF_MENU = $110004FD; (* Show menu options *)
  4666. {$EXTERNALSYM DIBUTTON_BASEBALLF_MENU}
  4667. (*--- Priority 2 controls ---*)
  4668. DIBUTTON_BASEBALLF_SHIFTIN = $11004407; (* Shift the infield positioning *)
  4669. {$EXTERNALSYM DIBUTTON_BASEBALLF_SHIFTIN}
  4670. DIBUTTON_BASEBALLF_SHIFTOUT = $11004408; (* Shift the outfield positioning *)
  4671. {$EXTERNALSYM DIBUTTON_BASEBALLF_SHIFTOUT}
  4672. DIBUTTON_BASEBALLF_AIM_LEFT_LINK = $1100C4E4; (* Fallback aim left button *)
  4673. {$EXTERNALSYM DIBUTTON_BASEBALLF_AIM_LEFT_LINK}
  4674. DIBUTTON_BASEBALLF_AIM_RIGHT_LINK = $1100C4EC; (* Fallback aim right button *)
  4675. {$EXTERNALSYM DIBUTTON_BASEBALLF_AIM_RIGHT_LINK}
  4676. DIBUTTON_BASEBALLF_FORWARD_LINK = $110144E0; (* Fallback move forward button *)
  4677. {$EXTERNALSYM DIBUTTON_BASEBALLF_FORWARD_LINK}
  4678. DIBUTTON_BASEBALLF_BACK_LINK = $110144E8; (* Fallback move back button *)
  4679. {$EXTERNALSYM DIBUTTON_BASEBALLF_BACK_LINK}
  4680. DIBUTTON_BASEBALLF_DEVICE = $110044FE; (* Show input device and controls *)
  4681. {$EXTERNALSYM DIBUTTON_BASEBALLF_DEVICE}
  4682. DIBUTTON_BASEBALLF_PAUSE = $110044FC; (* Start / Pause / Restart game *)
  4683. {$EXTERNALSYM DIBUTTON_BASEBALLF_PAUSE}
  4684. (*--- Sports - Basketball - Offense
  4685. Offense ---*)
  4686. DIVIRTUAL_SPORTS_BASKETBALL_OFFENSE = $12000000;
  4687. {$EXTERNALSYM DIVIRTUAL_SPORTS_BASKETBALL_OFFENSE}
  4688. DIAXIS_BBALLO_LATERAL = $12008201; (* left / right *)
  4689. {$EXTERNALSYM DIAXIS_BBALLO_LATERAL}
  4690. DIAXIS_BBALLO_MOVE = $12010202; (* up / down *)
  4691. {$EXTERNALSYM DIAXIS_BBALLO_MOVE}
  4692. DIBUTTON_BBALLO_SHOOT = $12000401; (* shoot basket *)
  4693. {$EXTERNALSYM DIBUTTON_BBALLO_SHOOT}
  4694. DIBUTTON_BBALLO_DUNK = $12000402; (* dunk basket *)
  4695. {$EXTERNALSYM DIBUTTON_BBALLO_DUNK}
  4696. DIBUTTON_BBALLO_PASS = $12000403; (* throw pass *)
  4697. {$EXTERNALSYM DIBUTTON_BBALLO_PASS}
  4698. DIBUTTON_BBALLO_FAKE = $12000404; (* fake shot or pass *)
  4699. {$EXTERNALSYM DIBUTTON_BBALLO_FAKE}
  4700. DIBUTTON_BBALLO_SPECIAL = $12000405; (* apply special move *)
  4701. {$EXTERNALSYM DIBUTTON_BBALLO_SPECIAL}
  4702. DIBUTTON_BBALLO_PLAYER = $12000406; (* select next player *)
  4703. {$EXTERNALSYM DIBUTTON_BBALLO_PLAYER}
  4704. DIBUTTON_BBALLO_BURST = $12000407; (* invoke burst *)
  4705. {$EXTERNALSYM DIBUTTON_BBALLO_BURST}
  4706. DIBUTTON_BBALLO_CALL = $12000408; (* call for ball / pass to me *)
  4707. {$EXTERNALSYM DIBUTTON_BBALLO_CALL}
  4708. DIBUTTON_BBALLO_MENU = $120004FD; (* Show menu options *)
  4709. {$EXTERNALSYM DIBUTTON_BBALLO_MENU}
  4710. (*--- Priority 2 controls ---*)
  4711. DIHATSWITCH_BBALLO_GLANCE = $12004601; (* scroll view *)
  4712. {$EXTERNALSYM DIHATSWITCH_BBALLO_GLANCE}
  4713. DIBUTTON_BBALLO_SCREEN = $12004409; (* Call for screen *)
  4714. {$EXTERNALSYM DIBUTTON_BBALLO_SCREEN}
  4715. DIBUTTON_BBALLO_PLAY = $1200440A; (* Call for specific offensive play *)
  4716. {$EXTERNALSYM DIBUTTON_BBALLO_PLAY}
  4717. DIBUTTON_BBALLO_JAB = $1200440B; (* Initiate fake drive to basket *)
  4718. {$EXTERNALSYM DIBUTTON_BBALLO_JAB}
  4719. DIBUTTON_BBALLO_POST = $1200440C; (* Perform post move *)
  4720. {$EXTERNALSYM DIBUTTON_BBALLO_POST}
  4721. DIBUTTON_BBALLO_TIMEOUT = $1200440D; (* Time Out *)
  4722. {$EXTERNALSYM DIBUTTON_BBALLO_TIMEOUT}
  4723. DIBUTTON_BBALLO_SUBSTITUTE = $1200440E; (* substitute one player for another *)
  4724. {$EXTERNALSYM DIBUTTON_BBALLO_SUBSTITUTE}
  4725. DIBUTTON_BBALLO_LEFT_LINK = $1200C4E4; (* Fallback sidestep left button *)
  4726. {$EXTERNALSYM DIBUTTON_BBALLO_LEFT_LINK}
  4727. DIBUTTON_BBALLO_RIGHT_LINK = $1200C4EC; (* Fallback sidestep right button *)
  4728. {$EXTERNALSYM DIBUTTON_BBALLO_RIGHT_LINK}
  4729. DIBUTTON_BBALLO_FORWARD_LINK = $120144E0; (* Fallback move forward button *)
  4730. {$EXTERNALSYM DIBUTTON_BBALLO_FORWARD_LINK}
  4731. DIBUTTON_BBALLO_BACK_LINK = $120144E8; (* Fallback move back button *)
  4732. {$EXTERNALSYM DIBUTTON_BBALLO_BACK_LINK}
  4733. DIBUTTON_BBALLO_DEVICE = $120044FE; (* Show input device and controls *)
  4734. {$EXTERNALSYM DIBUTTON_BBALLO_DEVICE}
  4735. DIBUTTON_BBALLO_PAUSE = $120044FC; (* Start / Pause / Restart game *)
  4736. {$EXTERNALSYM DIBUTTON_BBALLO_PAUSE}
  4737. (*--- Sports - Basketball - Defense
  4738. Defense ---*)
  4739. DIVIRTUAL_SPORTS_BASKETBALL_DEFENSE = $13000000;
  4740. {$EXTERNALSYM DIVIRTUAL_SPORTS_BASKETBALL_DEFENSE}
  4741. DIAXIS_BBALLD_LATERAL = $13008201; (* left / right *)
  4742. {$EXTERNALSYM DIAXIS_BBALLD_LATERAL}
  4743. DIAXIS_BBALLD_MOVE = $13010202; (* up / down *)
  4744. {$EXTERNALSYM DIAXIS_BBALLD_MOVE}
  4745. DIBUTTON_BBALLD_JUMP = $13000401; (* jump to block shot *)
  4746. {$EXTERNALSYM DIBUTTON_BBALLD_JUMP}
  4747. DIBUTTON_BBALLD_STEAL = $13000402; (* attempt to steal ball *)
  4748. {$EXTERNALSYM DIBUTTON_BBALLD_STEAL}
  4749. DIBUTTON_BBALLD_FAKE = $13000403; (* fake block or steal *)
  4750. {$EXTERNALSYM DIBUTTON_BBALLD_FAKE}
  4751. DIBUTTON_BBALLD_SPECIAL = $13000404; (* apply special move *)
  4752. {$EXTERNALSYM DIBUTTON_BBALLD_SPECIAL}
  4753. DIBUTTON_BBALLD_PLAYER = $13000405; (* select next player *)
  4754. {$EXTERNALSYM DIBUTTON_BBALLD_PLAYER}
  4755. DIBUTTON_BBALLD_BURST = $13000406; (* invoke burst *)
  4756. {$EXTERNALSYM DIBUTTON_BBALLD_BURST}
  4757. DIBUTTON_BBALLD_PLAY = $13000407; (* call for specific defensive play *)
  4758. {$EXTERNALSYM DIBUTTON_BBALLD_PLAY}
  4759. DIBUTTON_BBALLD_MENU = $130004FD; (* Show menu options *)
  4760. {$EXTERNALSYM DIBUTTON_BBALLD_MENU}
  4761. (*--- Priority 2 controls ---*)
  4762. DIHATSWITCH_BBALLD_GLANCE = $13004601; (* scroll view *)
  4763. {$EXTERNALSYM DIHATSWITCH_BBALLD_GLANCE}
  4764. DIBUTTON_BBALLD_TIMEOUT = $13004408; (* Time Out *)
  4765. {$EXTERNALSYM DIBUTTON_BBALLD_TIMEOUT}
  4766. DIBUTTON_BBALLD_SUBSTITUTE = $13004409; (* substitute one player for another *)
  4767. {$EXTERNALSYM DIBUTTON_BBALLD_SUBSTITUTE}
  4768. DIBUTTON_BBALLD_LEFT_LINK = $1300C4E4; (* Fallback sidestep left button *)
  4769. {$EXTERNALSYM DIBUTTON_BBALLD_LEFT_LINK}
  4770. DIBUTTON_BBALLD_RIGHT_LINK = $1300C4EC; (* Fallback sidestep right button *)
  4771. {$EXTERNALSYM DIBUTTON_BBALLD_RIGHT_LINK}
  4772. DIBUTTON_BBALLD_FORWARD_LINK = $130144E0; (* Fallback move forward button *)
  4773. {$EXTERNALSYM DIBUTTON_BBALLD_FORWARD_LINK}
  4774. DIBUTTON_BBALLD_BACK_LINK = $130144E8; (* Fallback move back button *)
  4775. {$EXTERNALSYM DIBUTTON_BBALLD_BACK_LINK}
  4776. DIBUTTON_BBALLD_DEVICE = $130044FE; (* Show input device and controls *)
  4777. {$EXTERNALSYM DIBUTTON_BBALLD_DEVICE}
  4778. DIBUTTON_BBALLD_PAUSE = $130044FC; (* Start / Pause / Restart game *)
  4779. {$EXTERNALSYM DIBUTTON_BBALLD_PAUSE}
  4780. (*--- Sports - Football - Play
  4781. Play selection ---*)
  4782. DIVIRTUAL_SPORTS_FOOTBALL_FIELD = $14000000;
  4783. {$EXTERNALSYM DIVIRTUAL_SPORTS_FOOTBALL_FIELD}
  4784. DIBUTTON_FOOTBALLP_PLAY = $14000401; (* cycle through available plays *)
  4785. {$EXTERNALSYM DIBUTTON_FOOTBALLP_PLAY}
  4786. DIBUTTON_FOOTBALLP_SELECT = $14000402; (* select play *)
  4787. {$EXTERNALSYM DIBUTTON_FOOTBALLP_SELECT}
  4788. DIBUTTON_FOOTBALLP_HELP = $14000403; (* Bring up pop-up help *)
  4789. {$EXTERNALSYM DIBUTTON_FOOTBALLP_HELP}
  4790. DIBUTTON_FOOTBALLP_MENU = $140004FD; (* Show menu options *)
  4791. {$EXTERNALSYM DIBUTTON_FOOTBALLP_MENU}
  4792. (*--- Priority 2 controls ---*)
  4793. DIBUTTON_FOOTBALLP_DEVICE = $140044FE; (* Show input device and controls *)
  4794. {$EXTERNALSYM DIBUTTON_FOOTBALLP_DEVICE}
  4795. DIBUTTON_FOOTBALLP_PAUSE = $140044FC; (* Start / Pause / Restart game *)
  4796. {$EXTERNALSYM DIBUTTON_FOOTBALLP_PAUSE}
  4797. (*--- Sports - Football - QB
  4798. Offense: Quarterback / Kicker ---*)
  4799. DIVIRTUAL_SPORTS_FOOTBALL_QBCK = $15000000;
  4800. {$EXTERNALSYM DIVIRTUAL_SPORTS_FOOTBALL_QBCK}
  4801. DIAXIS_FOOTBALLQ_LATERAL = $15008201; (* Move / Aim: left / right *)
  4802. {$EXTERNALSYM DIAXIS_FOOTBALLQ_LATERAL}
  4803. DIAXIS_FOOTBALLQ_MOVE = $15010202; (* Move / Aim: up / down *)
  4804. {$EXTERNALSYM DIAXIS_FOOTBALLQ_MOVE}
  4805. DIBUTTON_FOOTBALLQ_SELECT = $15000401; (* Select *)
  4806. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_SELECT}
  4807. DIBUTTON_FOOTBALLQ_SNAP = $15000402; (* snap ball - start play *)
  4808. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_SNAP}
  4809. DIBUTTON_FOOTBALLQ_JUMP = $15000403; (* jump over defender *)
  4810. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_JUMP}
  4811. DIBUTTON_FOOTBALLQ_SLIDE = $15000404; (* Dive/Slide *)
  4812. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_SLIDE}
  4813. DIBUTTON_FOOTBALLQ_PASS = $15000405; (* throws pass to receiver *)
  4814. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_PASS}
  4815. DIBUTTON_FOOTBALLQ_FAKE = $15000406; (* pump fake pass or fake kick *)
  4816. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_FAKE}
  4817. DIBUTTON_FOOTBALLQ_MENU = $150004FD; (* Show menu options *)
  4818. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_MENU}
  4819. (*--- Priority 2 controls ---*)
  4820. DIBUTTON_FOOTBALLQ_FAKESNAP = $15004407; (* Fake snap *)
  4821. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_FAKESNAP}
  4822. DIBUTTON_FOOTBALLQ_MOTION = $15004408; (* Send receivers in motion *)
  4823. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_MOTION}
  4824. DIBUTTON_FOOTBALLQ_AUDIBLE = $15004409; (* Change offensive play at line of scrimmage *)
  4825. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_AUDIBLE}
  4826. DIBUTTON_FOOTBALLQ_LEFT_LINK = $1500C4E4; (* Fallback sidestep left button *)
  4827. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_LEFT_LINK}
  4828. DIBUTTON_FOOTBALLQ_RIGHT_LINK = $1500C4EC; (* Fallback sidestep right button *)
  4829. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_RIGHT_LINK}
  4830. DIBUTTON_FOOTBALLQ_FORWARD_LINK = $150144E0; (* Fallback move forward button *)
  4831. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_FORWARD_LINK}
  4832. DIBUTTON_FOOTBALLQ_BACK_LINK = $150144E8; (* Fallback move back button *)
  4833. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_BACK_LINK}
  4834. DIBUTTON_FOOTBALLQ_DEVICE = $150044FE; (* Show input device and controls *)
  4835. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_DEVICE}
  4836. DIBUTTON_FOOTBALLQ_PAUSE = $150044FC; (* Start / Pause / Restart game *)
  4837. {$EXTERNALSYM DIBUTTON_FOOTBALLQ_PAUSE}
  4838. (*--- Sports - Football - Offense
  4839. Offense - Runner ---*)
  4840. DIVIRTUAL_SPORTS_FOOTBALL_OFFENSE = $16000000;
  4841. {$EXTERNALSYM DIVIRTUAL_SPORTS_FOOTBALL_OFFENSE}
  4842. DIAXIS_FOOTBALLO_LATERAL = $16008201; (* Move / Aim: left / right *)
  4843. {$EXTERNALSYM DIAXIS_FOOTBALLO_LATERAL}
  4844. DIAXIS_FOOTBALLO_MOVE = $16010202; (* Move / Aim: up / down *)
  4845. {$EXTERNALSYM DIAXIS_FOOTBALLO_MOVE}
  4846. DIBUTTON_FOOTBALLO_JUMP = $16000401; (* jump or hurdle over defender *)
  4847. {$EXTERNALSYM DIBUTTON_FOOTBALLO_JUMP}
  4848. DIBUTTON_FOOTBALLO_LEFTARM = $16000402; (* holds out left arm *)
  4849. {$EXTERNALSYM DIBUTTON_FOOTBALLO_LEFTARM}
  4850. DIBUTTON_FOOTBALLO_RIGHTARM = $16000403; (* holds out right arm *)
  4851. {$EXTERNALSYM DIBUTTON_FOOTBALLO_RIGHTARM}
  4852. DIBUTTON_FOOTBALLO_THROW = $16000404; (* throw pass or lateral ball to another runner *)
  4853. {$EXTERNALSYM DIBUTTON_FOOTBALLO_THROW}
  4854. DIBUTTON_FOOTBALLO_SPIN = $16000405; (* Spin to avoid defenders *)
  4855. {$EXTERNALSYM DIBUTTON_FOOTBALLO_SPIN}
  4856. DIBUTTON_FOOTBALLO_MENU = $160004FD; (* Show menu options *)
  4857. {$EXTERNALSYM DIBUTTON_FOOTBALLO_MENU}
  4858. (*--- Priority 2 controls ---*)
  4859. DIBUTTON_FOOTBALLO_JUKE = $16004406; (* Use special move to avoid defenders *)
  4860. {$EXTERNALSYM DIBUTTON_FOOTBALLO_JUKE}
  4861. DIBUTTON_FOOTBALLO_SHOULDER = $16004407; (* Lower shoulder to run over defenders *)
  4862. {$EXTERNALSYM DIBUTTON_FOOTBALLO_SHOULDER}
  4863. DIBUTTON_FOOTBALLO_TURBO = $16004408; (* Speed burst past defenders *)
  4864. {$EXTERNALSYM DIBUTTON_FOOTBALLO_TURBO}
  4865. DIBUTTON_FOOTBALLO_DIVE = $16004409; (* Dive over defenders *)
  4866. {$EXTERNALSYM DIBUTTON_FOOTBALLO_DIVE}
  4867. DIBUTTON_FOOTBALLO_ZOOM = $1600440A; (* Zoom view in / out *)
  4868. {$EXTERNALSYM DIBUTTON_FOOTBALLO_ZOOM}
  4869. DIBUTTON_FOOTBALLO_SUBSTITUTE = $1600440B; (* substitute one player for another *)
  4870. {$EXTERNALSYM DIBUTTON_FOOTBALLO_SUBSTITUTE}
  4871. DIBUTTON_FOOTBALLO_LEFT_LINK = $1600C4E4; (* Fallback sidestep left button *)
  4872. {$EXTERNALSYM DIBUTTON_FOOTBALLO_LEFT_LINK}
  4873. DIBUTTON_FOOTBALLO_RIGHT_LINK = $1600C4EC; (* Fallback sidestep right button *)
  4874. {$EXTERNALSYM DIBUTTON_FOOTBALLO_RIGHT_LINK}
  4875. DIBUTTON_FOOTBALLO_FORWARD_LINK = $160144E0; (* Fallback move forward button *)
  4876. {$EXTERNALSYM DIBUTTON_FOOTBALLO_FORWARD_LINK}
  4877. DIBUTTON_FOOTBALLO_BACK_LINK = $160144E8; (* Fallback move back button *)
  4878. {$EXTERNALSYM DIBUTTON_FOOTBALLO_BACK_LINK}
  4879. DIBUTTON_FOOTBALLO_DEVICE = $160044FE; (* Show input device and controls *)
  4880. {$EXTERNALSYM DIBUTTON_FOOTBALLO_DEVICE}
  4881. DIBUTTON_FOOTBALLO_PAUSE = $160044FC; (* Start / Pause / Restart game *)
  4882. {$EXTERNALSYM DIBUTTON_FOOTBALLO_PAUSE}
  4883. (*--- Sports - Football - Defense
  4884. Defense ---*)
  4885. DIVIRTUAL_SPORTS_FOOTBALL_DEFENSE = $17000000;
  4886. {$EXTERNALSYM DIVIRTUAL_SPORTS_FOOTBALL_DEFENSE}
  4887. DIAXIS_FOOTBALLD_LATERAL = $17008201; (* Move / Aim: left / right *)
  4888. {$EXTERNALSYM DIAXIS_FOOTBALLD_LATERAL}
  4889. DIAXIS_FOOTBALLD_MOVE = $17010202; (* Move / Aim: up / down *)
  4890. {$EXTERNALSYM DIAXIS_FOOTBALLD_MOVE}
  4891. DIBUTTON_FOOTBALLD_PLAY = $17000401; (* cycle through available plays *)
  4892. {$EXTERNALSYM DIBUTTON_FOOTBALLD_PLAY}
  4893. DIBUTTON_FOOTBALLD_SELECT = $17000402; (* select player closest to the ball *)
  4894. {$EXTERNALSYM DIBUTTON_FOOTBALLD_SELECT}
  4895. DIBUTTON_FOOTBALLD_JUMP = $17000403; (* jump to intercept or block *)
  4896. {$EXTERNALSYM DIBUTTON_FOOTBALLD_JUMP}
  4897. DIBUTTON_FOOTBALLD_TACKLE = $17000404; (* tackler runner *)
  4898. {$EXTERNALSYM DIBUTTON_FOOTBALLD_TACKLE}
  4899. DIBUTTON_FOOTBALLD_FAKE = $17000405; (* hold down to fake tackle or intercept *)
  4900. {$EXTERNALSYM DIBUTTON_FOOTBALLD_FAKE}
  4901. DIBUTTON_FOOTBALLD_SUPERTACKLE = $17000406; (* Initiate special tackle *)
  4902. {$EXTERNALSYM DIBUTTON_FOOTBALLD_SUPERTACKLE}
  4903. DIBUTTON_FOOTBALLD_MENU = $170004FD; (* Show menu options *)
  4904. {$EXTERNALSYM DIBUTTON_FOOTBALLD_MENU}
  4905. (*--- Priority 2 controls ---*)
  4906. DIBUTTON_FOOTBALLD_SPIN = $17004407; (* Spin to beat offensive line *)
  4907. {$EXTERNALSYM DIBUTTON_FOOTBALLD_SPIN}
  4908. DIBUTTON_FOOTBALLD_SWIM = $17004408; (* Swim to beat the offensive line *)
  4909. {$EXTERNALSYM DIBUTTON_FOOTBALLD_SWIM}
  4910. DIBUTTON_FOOTBALLD_BULLRUSH = $17004409; (* Bull rush the offensive line *)
  4911. {$EXTERNALSYM DIBUTTON_FOOTBALLD_BULLRUSH}
  4912. DIBUTTON_FOOTBALLD_RIP = $1700440A; (* Rip the offensive line *)
  4913. {$EXTERNALSYM DIBUTTON_FOOTBALLD_RIP}
  4914. DIBUTTON_FOOTBALLD_AUDIBLE = $1700440B; (* Change defensive play at the line of scrimmage *)
  4915. {$EXTERNALSYM DIBUTTON_FOOTBALLD_AUDIBLE}
  4916. DIBUTTON_FOOTBALLD_ZOOM = $1700440C; (* Zoom view in / out *)
  4917. {$EXTERNALSYM DIBUTTON_FOOTBALLD_ZOOM}
  4918. DIBUTTON_FOOTBALLD_SUBSTITUTE = $1700440D; (* substitute one player for another *)
  4919. {$EXTERNALSYM DIBUTTON_FOOTBALLD_SUBSTITUTE}
  4920. DIBUTTON_FOOTBALLD_LEFT_LINK = $1700C4E4; (* Fallback sidestep left button *)
  4921. {$EXTERNALSYM DIBUTTON_FOOTBALLD_LEFT_LINK}
  4922. DIBUTTON_FOOTBALLD_RIGHT_LINK = $1700C4EC; (* Fallback sidestep right button *)
  4923. {$EXTERNALSYM DIBUTTON_FOOTBALLD_RIGHT_LINK}
  4924. DIBUTTON_FOOTBALLD_FORWARD_LINK = $170144E0; (* Fallback move forward button *)
  4925. {$EXTERNALSYM DIBUTTON_FOOTBALLD_FORWARD_LINK}
  4926. DIBUTTON_FOOTBALLD_BACK_LINK = $170144E8; (* Fallback move back button *)
  4927. {$EXTERNALSYM DIBUTTON_FOOTBALLD_BACK_LINK}
  4928. DIBUTTON_FOOTBALLD_DEVICE = $170044FE; (* Show input device and controls *)
  4929. {$EXTERNALSYM DIBUTTON_FOOTBALLD_DEVICE}
  4930. DIBUTTON_FOOTBALLD_PAUSE = $170044FC; (* Start / Pause / Restart game *)
  4931. {$EXTERNALSYM DIBUTTON_FOOTBALLD_PAUSE}
  4932. (*--- Sports - Golf
  4933. ---*)
  4934. DIVIRTUAL_SPORTS_GOLF = $18000000;
  4935. {$EXTERNALSYM DIVIRTUAL_SPORTS_GOLF}
  4936. DIAXIS_GOLF_LATERAL = $18008201; (* Move / Aim: left / right *)
  4937. {$EXTERNALSYM DIAXIS_GOLF_LATERAL}
  4938. DIAXIS_GOLF_MOVE = $18010202; (* Move / Aim: up / down *)
  4939. {$EXTERNALSYM DIAXIS_GOLF_MOVE}
  4940. DIBUTTON_GOLF_SWING = $18000401; (* swing club *)
  4941. {$EXTERNALSYM DIBUTTON_GOLF_SWING}
  4942. DIBUTTON_GOLF_SELECT = $18000402; (* cycle between: club / swing strength / ball arc / ball spin *)
  4943. {$EXTERNALSYM DIBUTTON_GOLF_SELECT}
  4944. DIBUTTON_GOLF_UP = $18000403; (* increase selection *)
  4945. {$EXTERNALSYM DIBUTTON_GOLF_UP}
  4946. DIBUTTON_GOLF_DOWN = $18000404; (* decrease selection *)
  4947. {$EXTERNALSYM DIBUTTON_GOLF_DOWN}
  4948. DIBUTTON_GOLF_TERRAIN = $18000405; (* shows terrain detail *)
  4949. {$EXTERNALSYM DIBUTTON_GOLF_TERRAIN}
  4950. DIBUTTON_GOLF_FLYBY = $18000406; (* view the hole via a flyby *)
  4951. {$EXTERNALSYM DIBUTTON_GOLF_FLYBY}
  4952. DIBUTTON_GOLF_MENU = $180004FD; (* Show menu options *)
  4953. {$EXTERNALSYM DIBUTTON_GOLF_MENU}
  4954. (*--- Priority 2 controls ---*)
  4955. DIHATSWITCH_GOLF_SCROLL = $18004601; (* scroll view *)
  4956. {$EXTERNALSYM DIHATSWITCH_GOLF_SCROLL}
  4957. DIBUTTON_GOLF_ZOOM = $18004407; (* Zoom view in / out *)
  4958. {$EXTERNALSYM DIBUTTON_GOLF_ZOOM}
  4959. DIBUTTON_GOLF_TIMEOUT = $18004408; (* Call for time out *)
  4960. {$EXTERNALSYM DIBUTTON_GOLF_TIMEOUT}
  4961. DIBUTTON_GOLF_SUBSTITUTE = $18004409; (* substitute one player for another *)
  4962. {$EXTERNALSYM DIBUTTON_GOLF_SUBSTITUTE}
  4963. DIBUTTON_GOLF_LEFT_LINK = $1800C4E4; (* Fallback sidestep left button *)
  4964. {$EXTERNALSYM DIBUTTON_GOLF_LEFT_LINK}
  4965. DIBUTTON_GOLF_RIGHT_LINK = $1800C4EC; (* Fallback sidestep right button *)
  4966. {$EXTERNALSYM DIBUTTON_GOLF_RIGHT_LINK}
  4967. DIBUTTON_GOLF_FORWARD_LINK = $180144E0; (* Fallback move forward button *)
  4968. {$EXTERNALSYM DIBUTTON_GOLF_FORWARD_LINK}
  4969. DIBUTTON_GOLF_BACK_LINK = $180144E8; (* Fallback move back button *)
  4970. {$EXTERNALSYM DIBUTTON_GOLF_BACK_LINK}
  4971. DIBUTTON_GOLF_DEVICE = $180044FE; (* Show input device and controls *)
  4972. {$EXTERNALSYM DIBUTTON_GOLF_DEVICE}
  4973. DIBUTTON_GOLF_PAUSE = $180044FC; (* Start / Pause / Restart game *)
  4974. {$EXTERNALSYM DIBUTTON_GOLF_PAUSE}
  4975. (*--- Sports - Hockey - Offense
  4976. Offense ---*)
  4977. DIVIRTUAL_SPORTS_HOCKEY_OFFENSE = $19000000;
  4978. {$EXTERNALSYM DIVIRTUAL_SPORTS_HOCKEY_OFFENSE}
  4979. DIAXIS_HOCKEYO_LATERAL = $19008201; (* Move / Aim: left / right *)
  4980. {$EXTERNALSYM DIAXIS_HOCKEYO_LATERAL}
  4981. DIAXIS_HOCKEYO_MOVE = $19010202; (* Move / Aim: up / down *)
  4982. {$EXTERNALSYM DIAXIS_HOCKEYO_MOVE}
  4983. DIBUTTON_HOCKEYO_SHOOT = $19000401; (* Shoot *)
  4984. {$EXTERNALSYM DIBUTTON_HOCKEYO_SHOOT}
  4985. DIBUTTON_HOCKEYO_PASS = $19000402; (* pass the puck *)
  4986. {$EXTERNALSYM DIBUTTON_HOCKEYO_PASS}
  4987. DIBUTTON_HOCKEYO_BURST = $19000403; (* invoke speed burst *)
  4988. {$EXTERNALSYM DIBUTTON_HOCKEYO_BURST}
  4989. DIBUTTON_HOCKEYO_SPECIAL = $19000404; (* invoke special move *)
  4990. {$EXTERNALSYM DIBUTTON_HOCKEYO_SPECIAL}
  4991. DIBUTTON_HOCKEYO_FAKE = $19000405; (* hold down to fake pass or kick *)
  4992. {$EXTERNALSYM DIBUTTON_HOCKEYO_FAKE}
  4993. DIBUTTON_HOCKEYO_MENU = $190004FD; (* Show menu options *)
  4994. {$EXTERNALSYM DIBUTTON_HOCKEYO_MENU}
  4995. (*--- Priority 2 controls ---*)
  4996. DIHATSWITCH_HOCKEYO_SCROLL = $19004601; (* scroll view *)
  4997. {$EXTERNALSYM DIHATSWITCH_HOCKEYO_SCROLL}
  4998. DIBUTTON_HOCKEYO_ZOOM = $19004406; (* Zoom view in / out *)
  4999. {$EXTERNALSYM DIBUTTON_HOCKEYO_ZOOM}
  5000. DIBUTTON_HOCKEYO_STRATEGY = $19004407; (* Invoke coaching menu for strategy help *)
  5001. {$EXTERNALSYM DIBUTTON_HOCKEYO_STRATEGY}
  5002. DIBUTTON_HOCKEYO_TIMEOUT = $19004408; (* Call for time out *)
  5003. {$EXTERNALSYM DIBUTTON_HOCKEYO_TIMEOUT}
  5004. DIBUTTON_HOCKEYO_SUBSTITUTE = $19004409; (* substitute one player for another *)
  5005. {$EXTERNALSYM DIBUTTON_HOCKEYO_SUBSTITUTE}
  5006. DIBUTTON_HOCKEYO_LEFT_LINK = $1900C4E4; (* Fallback sidestep left button *)
  5007. {$EXTERNALSYM DIBUTTON_HOCKEYO_LEFT_LINK}
  5008. DIBUTTON_HOCKEYO_RIGHT_LINK = $1900C4EC; (* Fallback sidestep right button *)
  5009. {$EXTERNALSYM DIBUTTON_HOCKEYO_RIGHT_LINK}
  5010. DIBUTTON_HOCKEYO_FORWARD_LINK = $190144E0; (* Fallback move forward button *)
  5011. {$EXTERNALSYM DIBUTTON_HOCKEYO_FORWARD_LINK}
  5012. DIBUTTON_HOCKEYO_BACK_LINK = $190144E8; (* Fallback move back button *)
  5013. {$EXTERNALSYM DIBUTTON_HOCKEYO_BACK_LINK}
  5014. DIBUTTON_HOCKEYO_DEVICE = $190044FE; (* Show input device and controls *)
  5015. {$EXTERNALSYM DIBUTTON_HOCKEYO_DEVICE}
  5016. DIBUTTON_HOCKEYO_PAUSE = $190044FC; (* Start / Pause / Restart game *)
  5017. {$EXTERNALSYM DIBUTTON_HOCKEYO_PAUSE}
  5018. (*--- Sports - Hockey - Defense
  5019. Defense ---*)
  5020. DIVIRTUAL_SPORTS_HOCKEY_DEFENSE = $1A000000;
  5021. {$EXTERNALSYM DIVIRTUAL_SPORTS_HOCKEY_DEFENSE}
  5022. DIAXIS_HOCKEYD_LATERAL = $1A008201; (* Move / Aim: left / right *)
  5023. {$EXTERNALSYM DIAXIS_HOCKEYD_LATERAL}
  5024. DIAXIS_HOCKEYD_MOVE = $1A010202; (* Move / Aim: up / down *)
  5025. {$EXTERNALSYM DIAXIS_HOCKEYD_MOVE}
  5026. DIBUTTON_HOCKEYD_PLAYER = $1A000401; (* control player closest to the puck *)
  5027. {$EXTERNALSYM DIBUTTON_HOCKEYD_PLAYER}
  5028. DIBUTTON_HOCKEYD_STEAL = $1A000402; (* attempt steal *)
  5029. {$EXTERNALSYM DIBUTTON_HOCKEYD_STEAL}
  5030. DIBUTTON_HOCKEYD_BURST = $1A000403; (* speed burst or body check *)
  5031. {$EXTERNALSYM DIBUTTON_HOCKEYD_BURST}
  5032. DIBUTTON_HOCKEYD_BLOCK = $1A000404; (* block puck *)
  5033. {$EXTERNALSYM DIBUTTON_HOCKEYD_BLOCK}
  5034. DIBUTTON_HOCKEYD_FAKE = $1A000405; (* hold down to fake tackle or intercept *)
  5035. {$EXTERNALSYM DIBUTTON_HOCKEYD_FAKE}
  5036. DIBUTTON_HOCKEYD_MENU = $1A0004FD; (* Show menu options *)
  5037. {$EXTERNALSYM DIBUTTON_HOCKEYD_MENU}
  5038. (*--- Priority 2 controls ---*)
  5039. DIHATSWITCH_HOCKEYD_SCROLL = $1A004601; (* scroll view *)
  5040. {$EXTERNALSYM DIHATSWITCH_HOCKEYD_SCROLL}
  5041. DIBUTTON_HOCKEYD_ZOOM = $1A004406; (* Zoom view in / out *)
  5042. {$EXTERNALSYM DIBUTTON_HOCKEYD_ZOOM}
  5043. DIBUTTON_HOCKEYD_STRATEGY = $1A004407; (* Invoke coaching menu for strategy help *)
  5044. {$EXTERNALSYM DIBUTTON_HOCKEYD_STRATEGY}
  5045. DIBUTTON_HOCKEYD_TIMEOUT = $1A004408; (* Call for time out *)
  5046. {$EXTERNALSYM DIBUTTON_HOCKEYD_TIMEOUT}
  5047. DIBUTTON_HOCKEYD_SUBSTITUTE = $1A004409; (* substitute one player for another *)
  5048. {$EXTERNALSYM DIBUTTON_HOCKEYD_SUBSTITUTE}
  5049. DIBUTTON_HOCKEYD_LEFT_LINK = $1A00C4E4; (* Fallback sidestep left button *)
  5050. {$EXTERNALSYM DIBUTTON_HOCKEYD_LEFT_LINK}
  5051. DIBUTTON_HOCKEYD_RIGHT_LINK = $1A00C4EC; (* Fallback sidestep right button *)
  5052. {$EXTERNALSYM DIBUTTON_HOCKEYD_RIGHT_LINK}
  5053. DIBUTTON_HOCKEYD_FORWARD_LINK = $1A0144E0; (* Fallback move forward button *)
  5054. {$EXTERNALSYM DIBUTTON_HOCKEYD_FORWARD_LINK}
  5055. DIBUTTON_HOCKEYD_BACK_LINK = $1A0144E8; (* Fallback move back button *)
  5056. {$EXTERNALSYM DIBUTTON_HOCKEYD_BACK_LINK}
  5057. DIBUTTON_HOCKEYD_DEVICE = $1A0044FE; (* Show input device and controls *)
  5058. {$EXTERNALSYM DIBUTTON_HOCKEYD_DEVICE}
  5059. DIBUTTON_HOCKEYD_PAUSE = $1A0044FC; (* Start / Pause / Restart game *)
  5060. {$EXTERNALSYM DIBUTTON_HOCKEYD_PAUSE}
  5061. (*--- Sports - Hockey - Goalie
  5062. Goal tending ---*)
  5063. DIVIRTUAL_SPORTS_HOCKEY_GOALIE = $1B000000;
  5064. {$EXTERNALSYM DIVIRTUAL_SPORTS_HOCKEY_GOALIE}
  5065. DIAXIS_HOCKEYG_LATERAL = $1B008201; (* Move / Aim: left / right *)
  5066. {$EXTERNALSYM DIAXIS_HOCKEYG_LATERAL}
  5067. DIAXIS_HOCKEYG_MOVE = $1B010202; (* Move / Aim: up / down *)
  5068. {$EXTERNALSYM DIAXIS_HOCKEYG_MOVE}
  5069. DIBUTTON_HOCKEYG_PASS = $1B000401; (* pass puck *)
  5070. {$EXTERNALSYM DIBUTTON_HOCKEYG_PASS}
  5071. DIBUTTON_HOCKEYG_POKE = $1B000402; (* poke / check / hack *)
  5072. {$EXTERNALSYM DIBUTTON_HOCKEYG_POKE}
  5073. DIBUTTON_HOCKEYG_STEAL = $1B000403; (* attempt steal *)
  5074. {$EXTERNALSYM DIBUTTON_HOCKEYG_STEAL}
  5075. DIBUTTON_HOCKEYG_BLOCK = $1B000404; (* block puck *)
  5076. {$EXTERNALSYM DIBUTTON_HOCKEYG_BLOCK}
  5077. DIBUTTON_HOCKEYG_MENU = $1B0004FD; (* Show menu options *)
  5078. {$EXTERNALSYM DIBUTTON_HOCKEYG_MENU}
  5079. (*--- Priority 2 controls ---*)
  5080. DIHATSWITCH_HOCKEYG_SCROLL = $1B004601; (* scroll view *)
  5081. {$EXTERNALSYM DIHATSWITCH_HOCKEYG_SCROLL}
  5082. DIBUTTON_HOCKEYG_ZOOM = $1B004405; (* Zoom view in / out *)
  5083. {$EXTERNALSYM DIBUTTON_HOCKEYG_ZOOM}
  5084. DIBUTTON_HOCKEYG_STRATEGY = $1B004406; (* Invoke coaching menu for strategy help *)
  5085. {$EXTERNALSYM DIBUTTON_HOCKEYG_STRATEGY}
  5086. DIBUTTON_HOCKEYG_TIMEOUT = $1B004407; (* Call for time out *)
  5087. {$EXTERNALSYM DIBUTTON_HOCKEYG_TIMEOUT}
  5088. DIBUTTON_HOCKEYG_SUBSTITUTE = $1B004408; (* substitute one player for another *)
  5089. {$EXTERNALSYM DIBUTTON_HOCKEYG_SUBSTITUTE}
  5090. DIBUTTON_HOCKEYG_LEFT_LINK = $1B00C4E4; (* Fallback sidestep left button *)
  5091. {$EXTERNALSYM DIBUTTON_HOCKEYG_LEFT_LINK}
  5092. DIBUTTON_HOCKEYG_RIGHT_LINK = $1B00C4EC; (* Fallback sidestep right button *)
  5093. {$EXTERNALSYM DIBUTTON_HOCKEYG_RIGHT_LINK}
  5094. DIBUTTON_HOCKEYG_FORWARD_LINK = $1B0144E0; (* Fallback move forward button *)
  5095. {$EXTERNALSYM DIBUTTON_HOCKEYG_FORWARD_LINK}
  5096. DIBUTTON_HOCKEYG_BACK_LINK = $1B0144E8; (* Fallback move back button *)
  5097. {$EXTERNALSYM DIBUTTON_HOCKEYG_BACK_LINK}
  5098. DIBUTTON_HOCKEYG_DEVICE = $1B0044FE; (* Show input device and controls *)
  5099. {$EXTERNALSYM DIBUTTON_HOCKEYG_DEVICE}
  5100. DIBUTTON_HOCKEYG_PAUSE = $1B0044FC; (* Start / Pause / Restart game *)
  5101. {$EXTERNALSYM DIBUTTON_HOCKEYG_PAUSE}
  5102. (*--- Sports - Mountain Biking
  5103. ---*)
  5104. DIVIRTUAL_SPORTS_BIKING_MOUNTAIN = $1C000000;
  5105. {$EXTERNALSYM DIVIRTUAL_SPORTS_BIKING_MOUNTAIN}
  5106. DIAXIS_BIKINGM_TURN = $1C008201; (* left / right *)
  5107. {$EXTERNALSYM DIAXIS_BIKINGM_TURN}
  5108. DIAXIS_BIKINGM_PEDAL = $1C010202; (* Pedal faster / slower / brake *)
  5109. {$EXTERNALSYM DIAXIS_BIKINGM_PEDAL}
  5110. DIBUTTON_BIKINGM_JUMP = $1C000401; (* jump over obstacle *)
  5111. {$EXTERNALSYM DIBUTTON_BIKINGM_JUMP}
  5112. DIBUTTON_BIKINGM_CAMERA = $1C000402; (* switch camera view *)
  5113. {$EXTERNALSYM DIBUTTON_BIKINGM_CAMERA}
  5114. DIBUTTON_BIKINGM_SPECIAL1 = $1C000403; (* perform first special move *)
  5115. {$EXTERNALSYM DIBUTTON_BIKINGM_SPECIAL1}
  5116. DIBUTTON_BIKINGM_SELECT = $1C000404; (* Select *)
  5117. {$EXTERNALSYM DIBUTTON_BIKINGM_SELECT}
  5118. DIBUTTON_BIKINGM_SPECIAL2 = $1C000405; (* perform second special move *)
  5119. {$EXTERNALSYM DIBUTTON_BIKINGM_SPECIAL2}
  5120. DIBUTTON_BIKINGM_MENU = $1C0004FD; (* Show menu options *)
  5121. {$EXTERNALSYM DIBUTTON_BIKINGM_MENU}
  5122. (*--- Priority 2 controls ---*)
  5123. DIHATSWITCH_BIKINGM_SCROLL = $1C004601; (* scroll view *)
  5124. {$EXTERNALSYM DIHATSWITCH_BIKINGM_SCROLL}
  5125. DIBUTTON_BIKINGM_ZOOM = $1C004406; (* Zoom view in / out *)
  5126. {$EXTERNALSYM DIBUTTON_BIKINGM_ZOOM}
  5127. DIAXIS_BIKINGM_BRAKE = $1C044203; (* Brake axis *)
  5128. {$EXTERNALSYM DIAXIS_BIKINGM_BRAKE}
  5129. DIBUTTON_BIKINGM_LEFT_LINK = $1C00C4E4; (* Fallback turn left button *)
  5130. {$EXTERNALSYM DIBUTTON_BIKINGM_LEFT_LINK}
  5131. DIBUTTON_BIKINGM_RIGHT_LINK = $1C00C4EC; (* Fallback turn right button *)
  5132. {$EXTERNALSYM DIBUTTON_BIKINGM_RIGHT_LINK}
  5133. DIBUTTON_BIKINGM_FASTER_LINK = $1C0144E0; (* Fallback pedal faster button *)
  5134. {$EXTERNALSYM DIBUTTON_BIKINGM_FASTER_LINK}
  5135. DIBUTTON_BIKINGM_SLOWER_LINK = $1C0144E8; (* Fallback pedal slower button *)
  5136. {$EXTERNALSYM DIBUTTON_BIKINGM_SLOWER_LINK}
  5137. DIBUTTON_BIKINGM_BRAKE_BUTTON_LINK = $1C0444E8; (* Fallback brake button *)
  5138. {$EXTERNALSYM DIBUTTON_BIKINGM_BRAKE_BUTTON_LINK}
  5139. DIBUTTON_BIKINGM_DEVICE = $1C0044FE; (* Show input device and controls *)
  5140. {$EXTERNALSYM DIBUTTON_BIKINGM_DEVICE}
  5141. DIBUTTON_BIKINGM_PAUSE = $1C0044FC; (* Start / Pause / Restart game *)
  5142. {$EXTERNALSYM DIBUTTON_BIKINGM_PAUSE}
  5143. (*--- Sports: Skiing / Snowboarding / Skateboarding
  5144. ---*)
  5145. DIVIRTUAL_SPORTS_SKIING = $1D000000;
  5146. {$EXTERNALSYM DIVIRTUAL_SPORTS_SKIING}
  5147. DIAXIS_SKIING_TURN = $1D008201; (* left / right *)
  5148. {$EXTERNALSYM DIAXIS_SKIING_TURN}
  5149. DIAXIS_SKIING_SPEED = $1D010202; (* faster / slower *)
  5150. {$EXTERNALSYM DIAXIS_SKIING_SPEED}
  5151. DIBUTTON_SKIING_JUMP = $1D000401; (* Jump *)
  5152. {$EXTERNALSYM DIBUTTON_SKIING_JUMP}
  5153. DIBUTTON_SKIING_CROUCH = $1D000402; (* crouch down *)
  5154. {$EXTERNALSYM DIBUTTON_SKIING_CROUCH}
  5155. DIBUTTON_SKIING_CAMERA = $1D000403; (* switch camera view *)
  5156. {$EXTERNALSYM DIBUTTON_SKIING_CAMERA}
  5157. DIBUTTON_SKIING_SPECIAL1 = $1D000404; (* perform first special move *)
  5158. {$EXTERNALSYM DIBUTTON_SKIING_SPECIAL1}
  5159. DIBUTTON_SKIING_SELECT = $1D000405; (* Select *)
  5160. {$EXTERNALSYM DIBUTTON_SKIING_SELECT}
  5161. DIBUTTON_SKIING_SPECIAL2 = $1D000406; (* perform second special move *)
  5162. {$EXTERNALSYM DIBUTTON_SKIING_SPECIAL2}
  5163. DIBUTTON_SKIING_MENU = $1D0004FD; (* Show menu options *)
  5164. {$EXTERNALSYM DIBUTTON_SKIING_MENU}
  5165. (*--- Priority 2 controls ---*)
  5166. DIHATSWITCH_SKIING_GLANCE = $1D004601; (* scroll view *)
  5167. {$EXTERNALSYM DIHATSWITCH_SKIING_GLANCE}
  5168. DIBUTTON_SKIING_ZOOM = $1D004407; (* Zoom view in / out *)
  5169. {$EXTERNALSYM DIBUTTON_SKIING_ZOOM}
  5170. DIBUTTON_SKIING_LEFT_LINK = $1D00C4E4; (* Fallback turn left button *)
  5171. {$EXTERNALSYM DIBUTTON_SKIING_LEFT_LINK}
  5172. DIBUTTON_SKIING_RIGHT_LINK = $1D00C4EC; (* Fallback turn right button *)
  5173. {$EXTERNALSYM DIBUTTON_SKIING_RIGHT_LINK}
  5174. DIBUTTON_SKIING_FASTER_LINK = $1D0144E0; (* Fallback increase speed button *)
  5175. {$EXTERNALSYM DIBUTTON_SKIING_FASTER_LINK}
  5176. DIBUTTON_SKIING_SLOWER_LINK = $1D0144E8; (* Fallback decrease speed button *)
  5177. {$EXTERNALSYM DIBUTTON_SKIING_SLOWER_LINK}
  5178. DIBUTTON_SKIING_DEVICE = $1D0044FE; (* Show input device and controls *)
  5179. {$EXTERNALSYM DIBUTTON_SKIING_DEVICE}
  5180. DIBUTTON_SKIING_PAUSE = $1D0044FC; (* Start / Pause / Restart game *)
  5181. {$EXTERNALSYM DIBUTTON_SKIING_PAUSE}
  5182. (*--- Sports - Soccer - Offense
  5183. Offense ---*)
  5184. DIVIRTUAL_SPORTS_SOCCER_OFFENSE = $1E000000;
  5185. {$EXTERNALSYM DIVIRTUAL_SPORTS_SOCCER_OFFENSE}
  5186. DIAXIS_SOCCERO_LATERAL = $1E008201; (* Move / Aim: left / right *)
  5187. {$EXTERNALSYM DIAXIS_SOCCERO_LATERAL}
  5188. DIAXIS_SOCCERO_MOVE = $1E010202; (* Move / Aim: up / down *)
  5189. {$EXTERNALSYM DIAXIS_SOCCERO_MOVE}
  5190. DIAXIS_SOCCERO_BEND = $1E018203; (* Bend to soccer shot/pass *)
  5191. {$EXTERNALSYM DIAXIS_SOCCERO_BEND}
  5192. DIBUTTON_SOCCERO_SHOOT = $1E000401; (* Shoot the ball *)
  5193. {$EXTERNALSYM DIBUTTON_SOCCERO_SHOOT}
  5194. DIBUTTON_SOCCERO_PASS = $1E000402; (* Pass *)
  5195. {$EXTERNALSYM DIBUTTON_SOCCERO_PASS}
  5196. DIBUTTON_SOCCERO_FAKE = $1E000403; (* Fake *)
  5197. {$EXTERNALSYM DIBUTTON_SOCCERO_FAKE}
  5198. DIBUTTON_SOCCERO_PLAYER = $1E000404; (* Select next player *)
  5199. {$EXTERNALSYM DIBUTTON_SOCCERO_PLAYER}
  5200. DIBUTTON_SOCCERO_SPECIAL1 = $1E000405; (* Apply special move *)
  5201. {$EXTERNALSYM DIBUTTON_SOCCERO_SPECIAL1}
  5202. DIBUTTON_SOCCERO_SELECT = $1E000406; (* Select special move *)
  5203. {$EXTERNALSYM DIBUTTON_SOCCERO_SELECT}
  5204. DIBUTTON_SOCCERO_MENU = $1E0004FD; (* Show menu options *)
  5205. {$EXTERNALSYM DIBUTTON_SOCCERO_MENU}
  5206. (*--- Priority 2 controls ---*)
  5207. DIHATSWITCH_SOCCERO_GLANCE = $1E004601; (* scroll view *)
  5208. {$EXTERNALSYM DIHATSWITCH_SOCCERO_GLANCE}
  5209. DIBUTTON_SOCCERO_SUBSTITUTE = $1E004407; (* Substitute one player for another *)
  5210. {$EXTERNALSYM DIBUTTON_SOCCERO_SUBSTITUTE}
  5211. DIBUTTON_SOCCERO_SHOOTLOW = $1E004408; (* Shoot the ball low *)
  5212. {$EXTERNALSYM DIBUTTON_SOCCERO_SHOOTLOW}
  5213. DIBUTTON_SOCCERO_SHOOTHIGH = $1E004409; (* Shoot the ball high *)
  5214. {$EXTERNALSYM DIBUTTON_SOCCERO_SHOOTHIGH}
  5215. DIBUTTON_SOCCERO_PASSTHRU = $1E00440A; (* Make a thru pass *)
  5216. {$EXTERNALSYM DIBUTTON_SOCCERO_PASSTHRU}
  5217. DIBUTTON_SOCCERO_SPRINT = $1E00440B; (* Sprint / turbo boost *)
  5218. {$EXTERNALSYM DIBUTTON_SOCCERO_SPRINT}
  5219. DIBUTTON_SOCCERO_CONTROL = $1E00440C; (* Obtain control of the ball *)
  5220. {$EXTERNALSYM DIBUTTON_SOCCERO_CONTROL}
  5221. DIBUTTON_SOCCERO_HEAD = $1E00440D; (* Attempt to head the ball *)
  5222. {$EXTERNALSYM DIBUTTON_SOCCERO_HEAD}
  5223. DIBUTTON_SOCCERO_LEFT_LINK = $1E00C4E4; (* Fallback sidestep left button *)
  5224. {$EXTERNALSYM DIBUTTON_SOCCERO_LEFT_LINK}
  5225. DIBUTTON_SOCCERO_RIGHT_LINK = $1E00C4EC; (* Fallback sidestep right button *)
  5226. {$EXTERNALSYM DIBUTTON_SOCCERO_RIGHT_LINK}
  5227. DIBUTTON_SOCCERO_FORWARD_LINK = $1E0144E0; (* Fallback move forward button *)
  5228. {$EXTERNALSYM DIBUTTON_SOCCERO_FORWARD_LINK}
  5229. DIBUTTON_SOCCERO_BACK_LINK = $1E0144E8; (* Fallback move back button *)
  5230. {$EXTERNALSYM DIBUTTON_SOCCERO_BACK_LINK}
  5231. DIBUTTON_SOCCERO_DEVICE = $1E0044FE; (* Show input device and controls *)
  5232. {$EXTERNALSYM DIBUTTON_SOCCERO_DEVICE}
  5233. DIBUTTON_SOCCERO_PAUSE = $1E0044FC; (* Start / Pause / Restart game *)
  5234. {$EXTERNALSYM DIBUTTON_SOCCERO_PAUSE}
  5235. (*--- Sports - Soccer - Defense
  5236. Defense ---*)
  5237. DIVIRTUAL_SPORTS_SOCCER_DEFENSE = $1F000000;
  5238. {$EXTERNALSYM DIVIRTUAL_SPORTS_SOCCER_DEFENSE}
  5239. DIAXIS_SOCCERD_LATERAL = $1F008201; (* Move / Aim: left / right *)
  5240. {$EXTERNALSYM DIAXIS_SOCCERD_LATERAL}
  5241. DIAXIS_SOCCERD_MOVE = $1F010202; (* Move / Aim: up / down *)
  5242. {$EXTERNALSYM DIAXIS_SOCCERD_MOVE}
  5243. DIBUTTON_SOCCERD_BLOCK = $1F000401; (* Attempt to block shot *)
  5244. {$EXTERNALSYM DIBUTTON_SOCCERD_BLOCK}
  5245. DIBUTTON_SOCCERD_STEAL = $1F000402; (* Attempt to steal ball *)
  5246. {$EXTERNALSYM DIBUTTON_SOCCERD_STEAL}
  5247. DIBUTTON_SOCCERD_FAKE = $1F000403; (* Fake a block or a steal *)
  5248. {$EXTERNALSYM DIBUTTON_SOCCERD_FAKE}
  5249. DIBUTTON_SOCCERD_PLAYER = $1F000404; (* Select next player *)
  5250. {$EXTERNALSYM DIBUTTON_SOCCERD_PLAYER}
  5251. DIBUTTON_SOCCERD_SPECIAL = $1F000405; (* Apply special move *)
  5252. {$EXTERNALSYM DIBUTTON_SOCCERD_SPECIAL}
  5253. DIBUTTON_SOCCERD_SELECT = $1F000406; (* Select special move *)
  5254. {$EXTERNALSYM DIBUTTON_SOCCERD_SELECT}
  5255. DIBUTTON_SOCCERD_SLIDE = $1F000407; (* Attempt a slide tackle *)
  5256. {$EXTERNALSYM DIBUTTON_SOCCERD_SLIDE}
  5257. DIBUTTON_SOCCERD_MENU = $1F0004FD; (* Show menu options *)
  5258. {$EXTERNALSYM DIBUTTON_SOCCERD_MENU}
  5259. (*--- Priority 2 controls ---*)
  5260. DIHATSWITCH_SOCCERD_GLANCE = $1F004601; (* scroll view *)
  5261. {$EXTERNALSYM DIHATSWITCH_SOCCERD_GLANCE}
  5262. DIBUTTON_SOCCERD_FOUL = $1F004408; (* Initiate a foul / hard-foul *)
  5263. {$EXTERNALSYM DIBUTTON_SOCCERD_FOUL}
  5264. DIBUTTON_SOCCERD_HEAD = $1F004409; (* Attempt a Header *)
  5265. {$EXTERNALSYM DIBUTTON_SOCCERD_HEAD}
  5266. DIBUTTON_SOCCERD_CLEAR = $1F00440A; (* Attempt to clear the ball down the field *)
  5267. {$EXTERNALSYM DIBUTTON_SOCCERD_CLEAR}
  5268. DIBUTTON_SOCCERD_GOALIECHARGE = $1F00440B; (* Make the goalie charge out of the box *)
  5269. {$EXTERNALSYM DIBUTTON_SOCCERD_GOALIECHARGE}
  5270. DIBUTTON_SOCCERD_SUBSTITUTE = $1F00440C; (* Substitute one player for another *)
  5271. {$EXTERNALSYM DIBUTTON_SOCCERD_SUBSTITUTE}
  5272. DIBUTTON_SOCCERD_LEFT_LINK = $1F00C4E4; (* Fallback sidestep left button *)
  5273. {$EXTERNALSYM DIBUTTON_SOCCERD_LEFT_LINK}
  5274. DIBUTTON_SOCCERD_RIGHT_LINK = $1F00C4EC; (* Fallback sidestep right button *)
  5275. {$EXTERNALSYM DIBUTTON_SOCCERD_RIGHT_LINK}
  5276. DIBUTTON_SOCCERD_FORWARD_LINK = $1F0144E0; (* Fallback move forward button *)
  5277. {$EXTERNALSYM DIBUTTON_SOCCERD_FORWARD_LINK}
  5278. DIBUTTON_SOCCERD_BACK_LINK = $1F0144E8; (* Fallback move back button *)
  5279. {$EXTERNALSYM DIBUTTON_SOCCERD_BACK_LINK}
  5280. DIBUTTON_SOCCERD_DEVICE = $1F0044FE; (* Show input device and controls *)
  5281. {$EXTERNALSYM DIBUTTON_SOCCERD_DEVICE}
  5282. DIBUTTON_SOCCERD_PAUSE = $1F0044FC; (* Start / Pause / Restart game *)
  5283. {$EXTERNALSYM DIBUTTON_SOCCERD_PAUSE}
  5284. (*--- Sports - Racquet
  5285. Tennis - Table-Tennis - Squash ---*)
  5286. DIVIRTUAL_SPORTS_RACQUET = $20000000;
  5287. {$EXTERNALSYM DIVIRTUAL_SPORTS_RACQUET}
  5288. DIAXIS_RACQUET_LATERAL = $20008201; (* Move / Aim: left / right *)
  5289. {$EXTERNALSYM DIAXIS_RACQUET_LATERAL}
  5290. DIAXIS_RACQUET_MOVE = $20010202; (* Move / Aim: up / down *)
  5291. {$EXTERNALSYM DIAXIS_RACQUET_MOVE}
  5292. DIBUTTON_RACQUET_SWING = $20000401; (* Swing racquet *)
  5293. {$EXTERNALSYM DIBUTTON_RACQUET_SWING}
  5294. DIBUTTON_RACQUET_BACKSWING = $20000402; (* Swing backhand *)
  5295. {$EXTERNALSYM DIBUTTON_RACQUET_BACKSWING}
  5296. DIBUTTON_RACQUET_SMASH = $20000403; (* Smash shot *)
  5297. {$EXTERNALSYM DIBUTTON_RACQUET_SMASH}
  5298. DIBUTTON_RACQUET_SPECIAL = $20000404; (* Special shot *)
  5299. {$EXTERNALSYM DIBUTTON_RACQUET_SPECIAL}
  5300. DIBUTTON_RACQUET_SELECT = $20000405; (* Select special shot *)
  5301. {$EXTERNALSYM DIBUTTON_RACQUET_SELECT}
  5302. DIBUTTON_RACQUET_MENU = $200004FD; (* Show menu options *)
  5303. {$EXTERNALSYM DIBUTTON_RACQUET_MENU}
  5304. (*--- Priority 2 controls ---*)
  5305. DIHATSWITCH_RACQUET_GLANCE = $20004601; (* scroll view *)
  5306. {$EXTERNALSYM DIHATSWITCH_RACQUET_GLANCE}
  5307. DIBUTTON_RACQUET_TIMEOUT = $20004406; (* Call for time out *)
  5308. {$EXTERNALSYM DIBUTTON_RACQUET_TIMEOUT}
  5309. DIBUTTON_RACQUET_SUBSTITUTE = $20004407; (* Substitute one player for another *)
  5310. {$EXTERNALSYM DIBUTTON_RACQUET_SUBSTITUTE}
  5311. DIBUTTON_RACQUET_LEFT_LINK = $2000C4E4; (* Fallback sidestep left button *)
  5312. {$EXTERNALSYM DIBUTTON_RACQUET_LEFT_LINK}
  5313. DIBUTTON_RACQUET_RIGHT_LINK = $2000C4EC; (* Fallback sidestep right button *)
  5314. {$EXTERNALSYM DIBUTTON_RACQUET_RIGHT_LINK}
  5315. DIBUTTON_RACQUET_FORWARD_LINK = $200144E0; (* Fallback move forward button *)
  5316. {$EXTERNALSYM DIBUTTON_RACQUET_FORWARD_LINK}
  5317. DIBUTTON_RACQUET_BACK_LINK = $200144E8; (* Fallback move back button *)
  5318. {$EXTERNALSYM DIBUTTON_RACQUET_BACK_LINK}
  5319. DIBUTTON_RACQUET_DEVICE = $200044FE; (* Show input device and controls *)
  5320. {$EXTERNALSYM DIBUTTON_RACQUET_DEVICE}
  5321. DIBUTTON_RACQUET_PAUSE = $200044FC; (* Start / Pause / Restart game *)
  5322. {$EXTERNALSYM DIBUTTON_RACQUET_PAUSE}
  5323. (*--- Arcade- 2D
  5324. Side to Side movement ---*)
  5325. DIVIRTUAL_ARCADE_SIDE2SIDE = $21000000;
  5326. {$EXTERNALSYM DIVIRTUAL_ARCADE_SIDE2SIDE}
  5327. DIAXIS_ARCADES_LATERAL = $21008201; (* left / right *)
  5328. {$EXTERNALSYM DIAXIS_ARCADES_LATERAL}
  5329. DIAXIS_ARCADES_MOVE = $21010202; (* up / down *)
  5330. {$EXTERNALSYM DIAXIS_ARCADES_MOVE}
  5331. DIBUTTON_ARCADES_THROW = $21000401; (* throw object *)
  5332. {$EXTERNALSYM DIBUTTON_ARCADES_THROW}
  5333. DIBUTTON_ARCADES_CARRY = $21000402; (* carry object *)
  5334. {$EXTERNALSYM DIBUTTON_ARCADES_CARRY}
  5335. DIBUTTON_ARCADES_ATTACK = $21000403; (* attack *)
  5336. {$EXTERNALSYM DIBUTTON_ARCADES_ATTACK}
  5337. DIBUTTON_ARCADES_SPECIAL = $21000404; (* apply special move *)
  5338. {$EXTERNALSYM DIBUTTON_ARCADES_SPECIAL}
  5339. DIBUTTON_ARCADES_SELECT = $21000405; (* select special move *)
  5340. {$EXTERNALSYM DIBUTTON_ARCADES_SELECT}
  5341. DIBUTTON_ARCADES_MENU = $210004FD; (* Show menu options *)
  5342. {$EXTERNALSYM DIBUTTON_ARCADES_MENU}
  5343. (*--- Priority 2 controls ---*)
  5344. DIHATSWITCH_ARCADES_VIEW = $21004601; (* scroll view left / right / up / down *)
  5345. {$EXTERNALSYM DIHATSWITCH_ARCADES_VIEW}
  5346. DIBUTTON_ARCADES_LEFT_LINK = $2100C4E4; (* Fallback sidestep left button *)
  5347. {$EXTERNALSYM DIBUTTON_ARCADES_LEFT_LINK}
  5348. DIBUTTON_ARCADES_RIGHT_LINK = $2100C4EC; (* Fallback sidestep right button *)
  5349. {$EXTERNALSYM DIBUTTON_ARCADES_RIGHT_LINK}
  5350. DIBUTTON_ARCADES_FORWARD_LINK = $210144E0; (* Fallback move forward button *)
  5351. {$EXTERNALSYM DIBUTTON_ARCADES_FORWARD_LINK}
  5352. DIBUTTON_ARCADES_BACK_LINK = $210144E8; (* Fallback move back button *)
  5353. {$EXTERNALSYM DIBUTTON_ARCADES_BACK_LINK}
  5354. DIBUTTON_ARCADES_VIEW_UP_LINK = $2107C4E0; (* Fallback scroll view up button *)
  5355. {$EXTERNALSYM DIBUTTON_ARCADES_VIEW_UP_LINK}
  5356. DIBUTTON_ARCADES_VIEW_DOWN_LINK = $2107C4E8; (* Fallback scroll view down button *)
  5357. {$EXTERNALSYM DIBUTTON_ARCADES_VIEW_DOWN_LINK}
  5358. DIBUTTON_ARCADES_VIEW_LEFT_LINK = $2107C4E4; (* Fallback scroll view left button *)
  5359. {$EXTERNALSYM DIBUTTON_ARCADES_VIEW_LEFT_LINK}
  5360. DIBUTTON_ARCADES_VIEW_RIGHT_LINK = $2107C4EC; (* Fallback scroll view right button *)
  5361. {$EXTERNALSYM DIBUTTON_ARCADES_VIEW_RIGHT_LINK}
  5362. DIBUTTON_ARCADES_DEVICE = $210044FE; (* Show input device and controls *)
  5363. {$EXTERNALSYM DIBUTTON_ARCADES_DEVICE}
  5364. DIBUTTON_ARCADES_PAUSE = $210044FC; (* Start / Pause / Restart game *)
  5365. {$EXTERNALSYM DIBUTTON_ARCADES_PAUSE}
  5366. (*--- Arcade - Platform Game
  5367. Character moves around on screen ---*)
  5368. DIVIRTUAL_ARCADE_PLATFORM = $22000000;
  5369. {$EXTERNALSYM DIVIRTUAL_ARCADE_PLATFORM}
  5370. DIAXIS_ARCADEP_LATERAL = $22008201; (* Left / right *)
  5371. {$EXTERNALSYM DIAXIS_ARCADEP_LATERAL}
  5372. DIAXIS_ARCADEP_MOVE = $22010202; (* Up / down *)
  5373. {$EXTERNALSYM DIAXIS_ARCADEP_MOVE}
  5374. DIBUTTON_ARCADEP_JUMP = $22000401; (* Jump *)
  5375. {$EXTERNALSYM DIBUTTON_ARCADEP_JUMP}
  5376. DIBUTTON_ARCADEP_FIRE = $22000402; (* Fire *)
  5377. {$EXTERNALSYM DIBUTTON_ARCADEP_FIRE}
  5378. DIBUTTON_ARCADEP_CROUCH = $22000403; (* Crouch *)
  5379. {$EXTERNALSYM DIBUTTON_ARCADEP_CROUCH}
  5380. DIBUTTON_ARCADEP_SPECIAL = $22000404; (* Apply special move *)
  5381. {$EXTERNALSYM DIBUTTON_ARCADEP_SPECIAL}
  5382. DIBUTTON_ARCADEP_SELECT = $22000405; (* Select special move *)
  5383. {$EXTERNALSYM DIBUTTON_ARCADEP_SELECT}
  5384. DIBUTTON_ARCADEP_MENU = $220004FD; (* Show menu options *)
  5385. {$EXTERNALSYM DIBUTTON_ARCADEP_MENU}
  5386. (*--- Priority 2 controls ---*)
  5387. DIHATSWITCH_ARCADEP_VIEW = $22004601; (* Scroll view *)
  5388. {$EXTERNALSYM DIHATSWITCH_ARCADEP_VIEW}
  5389. DIBUTTON_ARCADEP_FIRESECONDARY = $22004406; (* Alternative fire button *)
  5390. {$EXTERNALSYM DIBUTTON_ARCADEP_FIRESECONDARY}
  5391. DIBUTTON_ARCADEP_LEFT_LINK = $2200C4E4; (* Fallback sidestep left button *)
  5392. {$EXTERNALSYM DIBUTTON_ARCADEP_LEFT_LINK}
  5393. DIBUTTON_ARCADEP_RIGHT_LINK = $2200C4EC; (* Fallback sidestep right button *)
  5394. {$EXTERNALSYM DIBUTTON_ARCADEP_RIGHT_LINK}
  5395. DIBUTTON_ARCADEP_FORWARD_LINK = $220144E0; (* Fallback move forward button *)
  5396. {$EXTERNALSYM DIBUTTON_ARCADEP_FORWARD_LINK}
  5397. DIBUTTON_ARCADEP_BACK_LINK = $220144E8; (* Fallback move back button *)
  5398. {$EXTERNALSYM DIBUTTON_ARCADEP_BACK_LINK}
  5399. DIBUTTON_ARCADEP_VIEW_UP_LINK = $2207C4E0; (* Fallback scroll view up button *)
  5400. {$EXTERNALSYM DIBUTTON_ARCADEP_VIEW_UP_LINK}
  5401. DIBUTTON_ARCADEP_VIEW_DOWN_LINK = $2207C4E8; (* Fallback scroll view down button *)
  5402. {$EXTERNALSYM DIBUTTON_ARCADEP_VIEW_DOWN_LINK}
  5403. DIBUTTON_ARCADEP_VIEW_LEFT_LINK = $2207C4E4; (* Fallback scroll view left button *)
  5404. {$EXTERNALSYM DIBUTTON_ARCADEP_VIEW_LEFT_LINK}
  5405. DIBUTTON_ARCADEP_VIEW_RIGHT_LINK = $2207C4EC; (* Fallback scroll view right button *)
  5406. {$EXTERNALSYM DIBUTTON_ARCADEP_VIEW_RIGHT_LINK}
  5407. DIBUTTON_ARCADEP_DEVICE = $220044FE; (* Show input device and controls *)
  5408. {$EXTERNALSYM DIBUTTON_ARCADEP_DEVICE}
  5409. DIBUTTON_ARCADEP_PAUSE = $220044FC; (* Start / Pause / Restart game *)
  5410. {$EXTERNALSYM DIBUTTON_ARCADEP_PAUSE}
  5411. (*--- CAD - 2D Object Control
  5412. Controls to select and move objects in 2D ---*)
  5413. DIVIRTUAL_CAD_2DCONTROL = $23000000;
  5414. {$EXTERNALSYM DIVIRTUAL_CAD_2DCONTROL}
  5415. DIAXIS_2DCONTROL_LATERAL = $23008201; (* Move view left / right *)
  5416. {$EXTERNALSYM DIAXIS_2DCONTROL_LATERAL}
  5417. DIAXIS_2DCONTROL_MOVE = $23010202; (* Move view up / down *)
  5418. {$EXTERNALSYM DIAXIS_2DCONTROL_MOVE}
  5419. DIAXIS_2DCONTROL_INOUT = $23018203; (* Zoom - in / out *)
  5420. {$EXTERNALSYM DIAXIS_2DCONTROL_INOUT}
  5421. DIBUTTON_2DCONTROL_SELECT = $23000401; (* Select Object *)
  5422. {$EXTERNALSYM DIBUTTON_2DCONTROL_SELECT}
  5423. DIBUTTON_2DCONTROL_SPECIAL1 = $23000402; (* Do first special operation *)
  5424. {$EXTERNALSYM DIBUTTON_2DCONTROL_SPECIAL1}
  5425. DIBUTTON_2DCONTROL_SPECIAL = $23000403; (* Select special operation *)
  5426. {$EXTERNALSYM DIBUTTON_2DCONTROL_SPECIAL}
  5427. DIBUTTON_2DCONTROL_SPECIAL2 = $23000404; (* Do second special operation *)
  5428. {$EXTERNALSYM DIBUTTON_2DCONTROL_SPECIAL2}
  5429. DIBUTTON_2DCONTROL_MENU = $230004FD; (* Show menu options *)
  5430. {$EXTERNALSYM DIBUTTON_2DCONTROL_MENU}
  5431. (*--- Priority 2 controls ---*)
  5432. DIHATSWITCH_2DCONTROL_HATSWITCH = $23004601; (* Hat switch *)
  5433. {$EXTERNALSYM DIHATSWITCH_2DCONTROL_HATSWITCH}
  5434. DIAXIS_2DCONTROL_ROTATEZ = $23024204; (* Rotate view clockwise / counterclockwise *)
  5435. {$EXTERNALSYM DIAXIS_2DCONTROL_ROTATEZ}
  5436. DIBUTTON_2DCONTROL_DISPLAY = $23004405; (* Shows next on-screen display options *)
  5437. {$EXTERNALSYM DIBUTTON_2DCONTROL_DISPLAY}
  5438. DIBUTTON_2DCONTROL_DEVICE = $230044FE; (* Show input device and controls *)
  5439. {$EXTERNALSYM DIBUTTON_2DCONTROL_DEVICE}
  5440. DIBUTTON_2DCONTROL_PAUSE = $230044FC; (* Start / Pause / Restart game *)
  5441. {$EXTERNALSYM DIBUTTON_2DCONTROL_PAUSE}
  5442. (*--- CAD - 3D object control
  5443. Controls to select and move objects within a 3D environment ---*)
  5444. DIVIRTUAL_CAD_3DCONTROL = $24000000;
  5445. {$EXTERNALSYM DIVIRTUAL_CAD_3DCONTROL}
  5446. DIAXIS_3DCONTROL_LATERAL = $24008201; (* Move view left / right *)
  5447. {$EXTERNALSYM DIAXIS_3DCONTROL_LATERAL}
  5448. DIAXIS_3DCONTROL_MOVE = $24010202; (* Move view up / down *)
  5449. {$EXTERNALSYM DIAXIS_3DCONTROL_MOVE}
  5450. DIAXIS_3DCONTROL_INOUT = $24018203; (* Zoom - in / out *)
  5451. {$EXTERNALSYM DIAXIS_3DCONTROL_INOUT}
  5452. DIBUTTON_3DCONTROL_SELECT = $24000401; (* Select Object *)
  5453. {$EXTERNALSYM DIBUTTON_3DCONTROL_SELECT}
  5454. DIBUTTON_3DCONTROL_SPECIAL1 = $24000402; (* Do first special operation *)
  5455. {$EXTERNALSYM DIBUTTON_3DCONTROL_SPECIAL1}
  5456. DIBUTTON_3DCONTROL_SPECIAL = $24000403; (* Select special operation *)
  5457. {$EXTERNALSYM DIBUTTON_3DCONTROL_SPECIAL}
  5458. DIBUTTON_3DCONTROL_SPECIAL2 = $24000404; (* Do second special operation *)
  5459. {$EXTERNALSYM DIBUTTON_3DCONTROL_SPECIAL2}
  5460. DIBUTTON_3DCONTROL_MENU = $240004FD; (* Show menu options *)
  5461. {$EXTERNALSYM DIBUTTON_3DCONTROL_MENU}
  5462. (*--- Priority 2 controls ---*)
  5463. DIHATSWITCH_3DCONTROL_HATSWITCH = $24004601; (* Hat switch *)
  5464. {$EXTERNALSYM DIHATSWITCH_3DCONTROL_HATSWITCH}
  5465. DIAXIS_3DCONTROL_ROTATEX = $24034204; (* Rotate view forward or up / backward or down *)
  5466. {$EXTERNALSYM DIAXIS_3DCONTROL_ROTATEX}
  5467. DIAXIS_3DCONTROL_ROTATEY = $2402C205; (* Rotate view clockwise / counterclockwise *)
  5468. {$EXTERNALSYM DIAXIS_3DCONTROL_ROTATEY}
  5469. DIAXIS_3DCONTROL_ROTATEZ = $24024206; (* Rotate view left / right *)
  5470. {$EXTERNALSYM DIAXIS_3DCONTROL_ROTATEZ}
  5471. DIBUTTON_3DCONTROL_DISPLAY = $24004405; (* Show next on-screen display options *)
  5472. {$EXTERNALSYM DIBUTTON_3DCONTROL_DISPLAY}
  5473. DIBUTTON_3DCONTROL_DEVICE = $240044FE; (* Show input device and controls *)
  5474. {$EXTERNALSYM DIBUTTON_3DCONTROL_DEVICE}
  5475. DIBUTTON_3DCONTROL_PAUSE = $240044FC; (* Start / Pause / Restart game *)
  5476. {$EXTERNALSYM DIBUTTON_3DCONTROL_PAUSE}
  5477. (*--- CAD - 3D Navigation - Fly through
  5478. Controls for 3D modeling ---*)
  5479. DIVIRTUAL_CAD_FLYBY = $25000000;
  5480. {$EXTERNALSYM DIVIRTUAL_CAD_FLYBY}
  5481. DIAXIS_CADF_LATERAL = $25008201; (* move view left / right *)
  5482. {$EXTERNALSYM DIAXIS_CADF_LATERAL}
  5483. DIAXIS_CADF_MOVE = $25010202; (* move view up / down *)
  5484. {$EXTERNALSYM DIAXIS_CADF_MOVE}
  5485. DIAXIS_CADF_INOUT = $25018203; (* in / out *)
  5486. {$EXTERNALSYM DIAXIS_CADF_INOUT}
  5487. DIBUTTON_CADF_SELECT = $25000401; (* Select Object *)
  5488. {$EXTERNALSYM DIBUTTON_CADF_SELECT}
  5489. DIBUTTON_CADF_SPECIAL1 = $25000402; (* do first special operation *)
  5490. {$EXTERNALSYM DIBUTTON_CADF_SPECIAL1}
  5491. DIBUTTON_CADF_SPECIAL = $25000403; (* Select special operation *)
  5492. {$EXTERNALSYM DIBUTTON_CADF_SPECIAL}
  5493. DIBUTTON_CADF_SPECIAL2 = $25000404; (* do second special operation *)
  5494. {$EXTERNALSYM DIBUTTON_CADF_SPECIAL2}
  5495. DIBUTTON_CADF_MENU = $250004FD; (* Show menu options *)
  5496. {$EXTERNALSYM DIBUTTON_CADF_MENU}
  5497. (*--- Priority 2 controls ---*)
  5498. DIHATSWITCH_CADF_HATSWITCH = $25004601; (* Hat switch *)
  5499. {$EXTERNALSYM DIHATSWITCH_CADF_HATSWITCH}
  5500. DIAXIS_CADF_ROTATEX = $25034204; (* Rotate view forward or up / backward or down *)
  5501. {$EXTERNALSYM DIAXIS_CADF_ROTATEX}
  5502. DIAXIS_CADF_ROTATEY = $2502C205; (* Rotate view clockwise / counterclockwise *)
  5503. {$EXTERNALSYM DIAXIS_CADF_ROTATEY}
  5504. DIAXIS_CADF_ROTATEZ = $25024206; (* Rotate view left / right *)
  5505. {$EXTERNALSYM DIAXIS_CADF_ROTATEZ}
  5506. DIBUTTON_CADF_DISPLAY = $25004405; (* shows next on-screen display options *)
  5507. {$EXTERNALSYM DIBUTTON_CADF_DISPLAY}
  5508. DIBUTTON_CADF_DEVICE = $250044FE; (* Show input device and controls *)
  5509. {$EXTERNALSYM DIBUTTON_CADF_DEVICE}
  5510. DIBUTTON_CADF_PAUSE = $250044FC; (* Start / Pause / Restart game *)
  5511. {$EXTERNALSYM DIBUTTON_CADF_PAUSE}
  5512. (*--- CAD - 3D Model Control
  5513. Controls for 3D modeling ---*)
  5514. DIVIRTUAL_CAD_MODEL = $26000000;
  5515. {$EXTERNALSYM DIVIRTUAL_CAD_MODEL}
  5516. DIAXIS_CADM_LATERAL = $26008201; (* move view left / right *)
  5517. {$EXTERNALSYM DIAXIS_CADM_LATERAL}
  5518. DIAXIS_CADM_MOVE = $26010202; (* move view up / down *)
  5519. {$EXTERNALSYM DIAXIS_CADM_MOVE}
  5520. DIAXIS_CADM_INOUT = $26018203; (* in / out *)
  5521. {$EXTERNALSYM DIAXIS_CADM_INOUT}
  5522. DIBUTTON_CADM_SELECT = $26000401; (* Select Object *)
  5523. {$EXTERNALSYM DIBUTTON_CADM_SELECT}
  5524. DIBUTTON_CADM_SPECIAL1 = $26000402; (* do first special operation *)
  5525. {$EXTERNALSYM DIBUTTON_CADM_SPECIAL1}
  5526. DIBUTTON_CADM_SPECIAL = $26000403; (* Select special operation *)
  5527. {$EXTERNALSYM DIBUTTON_CADM_SPECIAL}
  5528. DIBUTTON_CADM_SPECIAL2 = $26000404; (* do second special operation *)
  5529. {$EXTERNALSYM DIBUTTON_CADM_SPECIAL2}
  5530. DIBUTTON_CADM_MENU = $260004FD; (* Show menu options *)
  5531. {$EXTERNALSYM DIBUTTON_CADM_MENU}
  5532. (*--- Priority 2 controls ---*)
  5533. DIHATSWITCH_CADM_HATSWITCH = $26004601; (* Hat switch *)
  5534. {$EXTERNALSYM DIHATSWITCH_CADM_HATSWITCH}
  5535. DIAXIS_CADM_ROTATEX = $26034204; (* Rotate view forward or up / backward or down *)
  5536. {$EXTERNALSYM DIAXIS_CADM_ROTATEX}
  5537. DIAXIS_CADM_ROTATEY = $2602C205; (* Rotate view clockwise / counterclockwise *)
  5538. {$EXTERNALSYM DIAXIS_CADM_ROTATEY}
  5539. DIAXIS_CADM_ROTATEZ = $26024206; (* Rotate view left / right *)
  5540. {$EXTERNALSYM DIAXIS_CADM_ROTATEZ}
  5541. DIBUTTON_CADM_DISPLAY = $26004405; (* shows next on-screen display options *)
  5542. {$EXTERNALSYM DIBUTTON_CADM_DISPLAY}
  5543. DIBUTTON_CADM_DEVICE = $260044FE; (* Show input device and controls *)
  5544. {$EXTERNALSYM DIBUTTON_CADM_DEVICE}
  5545. DIBUTTON_CADM_PAUSE = $260044FC; (* Start / Pause / Restart game *)
  5546. {$EXTERNALSYM DIBUTTON_CADM_PAUSE}
  5547. (*--- Control - Media Equipment
  5548. Remote ---*)
  5549. DIVIRTUAL_REMOTE_CONTROL = $27000000;
  5550. {$EXTERNALSYM DIVIRTUAL_REMOTE_CONTROL}
  5551. DIAXIS_REMOTE_SLIDER = $27050201; (* Slider for adjustment: volume / color / bass / etc *)
  5552. {$EXTERNALSYM DIAXIS_REMOTE_SLIDER}
  5553. DIBUTTON_REMOTE_MUTE = $27000401; (* Set volume on current device to zero *)
  5554. {$EXTERNALSYM DIBUTTON_REMOTE_MUTE}
  5555. DIBUTTON_REMOTE_SELECT = $27000402; (* Next/previous: channel/ track / chapter / picture / station *)
  5556. {$EXTERNALSYM DIBUTTON_REMOTE_SELECT}
  5557. DIBUTTON_REMOTE_PLAY = $27002403; (* Start or pause entertainment on current device *)
  5558. {$EXTERNALSYM DIBUTTON_REMOTE_PLAY}
  5559. DIBUTTON_REMOTE_CUE = $27002404; (* Move through current media *)
  5560. {$EXTERNALSYM DIBUTTON_REMOTE_CUE}
  5561. DIBUTTON_REMOTE_REVIEW = $27002405; (* Move through current media *)
  5562. {$EXTERNALSYM DIBUTTON_REMOTE_REVIEW}
  5563. DIBUTTON_REMOTE_CHANGE = $27002406; (* Select next device *)
  5564. {$EXTERNALSYM DIBUTTON_REMOTE_CHANGE}
  5565. DIBUTTON_REMOTE_RECORD = $27002407; (* Start recording the current media *)
  5566. {$EXTERNALSYM DIBUTTON_REMOTE_RECORD}
  5567. DIBUTTON_REMOTE_MENU = $270004FD; (* Show menu options *)
  5568. {$EXTERNALSYM DIBUTTON_REMOTE_MENU}
  5569. (*--- Priority 2 controls ---*)
  5570. DIAXIS_REMOTE_SLIDER2 = $27054202; (* Slider for adjustment: volume *)
  5571. {$EXTERNALSYM DIAXIS_REMOTE_SLIDER2}
  5572. DIBUTTON_REMOTE_TV = $27005C08; (* Select TV *)
  5573. {$EXTERNALSYM DIBUTTON_REMOTE_TV}
  5574. DIBUTTON_REMOTE_CABLE = $27005C09; (* Select cable box *)
  5575. {$EXTERNALSYM DIBUTTON_REMOTE_CABLE}
  5576. DIBUTTON_REMOTE_CD = $27005C0A; (* Select CD player *)
  5577. {$EXTERNALSYM DIBUTTON_REMOTE_CD}
  5578. DIBUTTON_REMOTE_VCR = $27005C0B; (* Select VCR *)
  5579. {$EXTERNALSYM DIBUTTON_REMOTE_VCR}
  5580. DIBUTTON_REMOTE_TUNER = $27005C0C; (* Select tuner *)
  5581. {$EXTERNALSYM DIBUTTON_REMOTE_TUNER}
  5582. DIBUTTON_REMOTE_DVD = $27005C0D; (* Select DVD player *)
  5583. {$EXTERNALSYM DIBUTTON_REMOTE_DVD}
  5584. DIBUTTON_REMOTE_ADJUST = $27005C0E; (* Enter device adjustment menu *)
  5585. {$EXTERNALSYM DIBUTTON_REMOTE_ADJUST}
  5586. DIBUTTON_REMOTE_DIGIT0 = $2700540F; (* Digit 0 *)
  5587. {$EXTERNALSYM DIBUTTON_REMOTE_DIGIT0}
  5588. DIBUTTON_REMOTE_DIGIT1 = $27005410; (* Digit 1 *)
  5589. {$EXTERNALSYM DIBUTTON_REMOTE_DIGIT1}
  5590. DIBUTTON_REMOTE_DIGIT2 = $27005411; (* Digit 2 *)
  5591. {$EXTERNALSYM DIBUTTON_REMOTE_DIGIT2}
  5592. DIBUTTON_REMOTE_DIGIT3 = $27005412; (* Digit 3 *)
  5593. {$EXTERNALSYM DIBUTTON_REMOTE_DIGIT3}
  5594. DIBUTTON_REMOTE_DIGIT4 = $27005413; (* Digit 4 *)
  5595. {$EXTERNALSYM DIBUTTON_REMOTE_DIGIT4}
  5596. DIBUTTON_REMOTE_DIGIT5 = $27005414; (* Digit 5 *)
  5597. {$EXTERNALSYM DIBUTTON_REMOTE_DIGIT5}
  5598. DIBUTTON_REMOTE_DIGIT6 = $27005415; (* Digit 6 *)
  5599. {$EXTERNALSYM DIBUTTON_REMOTE_DIGIT6}
  5600. DIBUTTON_REMOTE_DIGIT7 = $27005416; (* Digit 7 *)
  5601. {$EXTERNALSYM DIBUTTON_REMOTE_DIGIT7}
  5602. DIBUTTON_REMOTE_DIGIT8 = $27005417; (* Digit 8 *)
  5603. {$EXTERNALSYM DIBUTTON_REMOTE_DIGIT8}
  5604. DIBUTTON_REMOTE_DIGIT9 = $27005418; (* Digit 9 *)
  5605. {$EXTERNALSYM DIBUTTON_REMOTE_DIGIT9}
  5606. DIBUTTON_REMOTE_DEVICE = $270044FE; (* Show input device and controls *)
  5607. {$EXTERNALSYM DIBUTTON_REMOTE_DEVICE}
  5608. DIBUTTON_REMOTE_PAUSE = $270044FC; (* Start / Pause / Restart game *)
  5609. {$EXTERNALSYM DIBUTTON_REMOTE_PAUSE}
  5610. (*--- Control- Web
  5611. Help or Browser ---*)
  5612. DIVIRTUAL_BROWSER_CONTROL = $28000000;
  5613. {$EXTERNALSYM DIVIRTUAL_BROWSER_CONTROL}
  5614. DIAXIS_BROWSER_LATERAL = $28008201; (* Move on screen pointer *)
  5615. {$EXTERNALSYM DIAXIS_BROWSER_LATERAL}
  5616. DIAXIS_BROWSER_MOVE = $28010202; (* Move on screen pointer *)
  5617. {$EXTERNALSYM DIAXIS_BROWSER_MOVE}
  5618. DIBUTTON_BROWSER_SELECT = $28000401; (* Select current item *)
  5619. {$EXTERNALSYM DIBUTTON_BROWSER_SELECT}
  5620. DIAXIS_BROWSER_VIEW = $28018203; (* Move view up/down *)
  5621. {$EXTERNALSYM DIAXIS_BROWSER_VIEW}
  5622. DIBUTTON_BROWSER_REFRESH = $28000402; (* Refresh *)
  5623. {$EXTERNALSYM DIBUTTON_BROWSER_REFRESH}
  5624. DIBUTTON_BROWSER_MENU = $280004FD; (* Show menu options *)
  5625. {$EXTERNALSYM DIBUTTON_BROWSER_MENU}
  5626. (*--- Priority 2 controls ---*)
  5627. DIBUTTON_BROWSER_SEARCH = $28004403; (* Use search tool *)
  5628. {$EXTERNALSYM DIBUTTON_BROWSER_SEARCH}
  5629. DIBUTTON_BROWSER_STOP = $28004404; (* Cease current update *)
  5630. {$EXTERNALSYM DIBUTTON_BROWSER_STOP}
  5631. DIBUTTON_BROWSER_HOME = $28004405; (* Go directly to "home" location *)
  5632. {$EXTERNALSYM DIBUTTON_BROWSER_HOME}
  5633. DIBUTTON_BROWSER_FAVORITES = $28004406; (* Mark current site as favorite *)
  5634. {$EXTERNALSYM DIBUTTON_BROWSER_FAVORITES}
  5635. DIBUTTON_BROWSER_NEXT = $28004407; (* Select Next page *)
  5636. {$EXTERNALSYM DIBUTTON_BROWSER_NEXT}
  5637. DIBUTTON_BROWSER_PREVIOUS = $28004408; (* Select Previous page *)
  5638. {$EXTERNALSYM DIBUTTON_BROWSER_PREVIOUS}
  5639. DIBUTTON_BROWSER_HISTORY = $28004409; (* Show/Hide History *)
  5640. {$EXTERNALSYM DIBUTTON_BROWSER_HISTORY}
  5641. DIBUTTON_BROWSER_PRINT = $2800440A; (* Print current page *)
  5642. {$EXTERNALSYM DIBUTTON_BROWSER_PRINT}
  5643. DIBUTTON_BROWSER_DEVICE = $280044FE; (* Show input device and controls *)
  5644. {$EXTERNALSYM DIBUTTON_BROWSER_DEVICE}
  5645. DIBUTTON_BROWSER_PAUSE = $280044FC; (* Start / Pause / Restart game *)
  5646. {$EXTERNALSYM DIBUTTON_BROWSER_PAUSE}
  5647. (*--- Driving Simulator - Giant Walking Robot
  5648. Walking tank with weapons ---*)
  5649. DIVIRTUAL_DRIVING_MECHA = $29000000;
  5650. {$EXTERNALSYM DIVIRTUAL_DRIVING_MECHA}
  5651. DIAXIS_MECHA_STEER = $29008201; (* Turns mecha left/right *)
  5652. {$EXTERNALSYM DIAXIS_MECHA_STEER}
  5653. DIAXIS_MECHA_TORSO = $29010202; (* Tilts torso forward/backward *)
  5654. {$EXTERNALSYM DIAXIS_MECHA_TORSO}
  5655. DIAXIS_MECHA_ROTATE = $29020203; (* Turns torso left/right *)
  5656. {$EXTERNALSYM DIAXIS_MECHA_ROTATE}
  5657. DIAXIS_MECHA_THROTTLE = $29038204; (* Engine Speed *)
  5658. {$EXTERNALSYM DIAXIS_MECHA_THROTTLE}
  5659. DIBUTTON_MECHA_FIRE = $29000401; (* Fire *)
  5660. {$EXTERNALSYM DIBUTTON_MECHA_FIRE}
  5661. DIBUTTON_MECHA_WEAPONS = $29000402; (* Select next weapon group *)
  5662. {$EXTERNALSYM DIBUTTON_MECHA_WEAPONS}
  5663. DIBUTTON_MECHA_TARGET = $29000403; (* Select closest enemy available target *)
  5664. {$EXTERNALSYM DIBUTTON_MECHA_TARGET}
  5665. DIBUTTON_MECHA_REVERSE = $29000404; (* Toggles throttle in/out of reverse *)
  5666. {$EXTERNALSYM DIBUTTON_MECHA_REVERSE}
  5667. DIBUTTON_MECHA_ZOOM = $29000405; (* Zoom in/out targeting reticule *)
  5668. {$EXTERNALSYM DIBUTTON_MECHA_ZOOM}
  5669. DIBUTTON_MECHA_JUMP = $29000406; (* Fires jump jets *)
  5670. {$EXTERNALSYM DIBUTTON_MECHA_JUMP}
  5671. DIBUTTON_MECHA_MENU = $290004FD; (* Show menu options *)
  5672. {$EXTERNALSYM DIBUTTON_MECHA_MENU}
  5673. (*--- Priority 2 controls ---*)
  5674. DIBUTTON_MECHA_CENTER = $29004407; (* Center torso to legs *)
  5675. {$EXTERNALSYM DIBUTTON_MECHA_CENTER}
  5676. DIHATSWITCH_MECHA_GLANCE = $29004601; (* Look around *)
  5677. {$EXTERNALSYM DIHATSWITCH_MECHA_GLANCE}
  5678. DIBUTTON_MECHA_VIEW = $29004408; (* Cycle through view options *)
  5679. {$EXTERNALSYM DIBUTTON_MECHA_VIEW}
  5680. DIBUTTON_MECHA_FIRESECONDARY = $29004409; (* Alternative fire button *)
  5681. {$EXTERNALSYM DIBUTTON_MECHA_FIRESECONDARY}
  5682. DIBUTTON_MECHA_LEFT_LINK = $2900C4E4; (* Fallback steer left button *)
  5683. {$EXTERNALSYM DIBUTTON_MECHA_LEFT_LINK}
  5684. DIBUTTON_MECHA_RIGHT_LINK = $2900C4EC; (* Fallback steer right button *)
  5685. {$EXTERNALSYM DIBUTTON_MECHA_RIGHT_LINK}
  5686. DIBUTTON_MECHA_FORWARD_LINK = $290144E0; (* Fallback tilt torso forward button *)
  5687. {$EXTERNALSYM DIBUTTON_MECHA_FORWARD_LINK}
  5688. DIBUTTON_MECHA_BACK_LINK = $290144E8; (* Fallback tilt toroso backward button *)
  5689. {$EXTERNALSYM DIBUTTON_MECHA_BACK_LINK}
  5690. DIBUTTON_MECHA_ROTATE_LEFT_LINK = $290244E4; (* Fallback rotate toroso right button *)
  5691. {$EXTERNALSYM DIBUTTON_MECHA_ROTATE_LEFT_LINK}
  5692. DIBUTTON_MECHA_ROTATE_RIGHT_LINK = $290244EC; (* Fallback rotate torso left button *)
  5693. {$EXTERNALSYM DIBUTTON_MECHA_ROTATE_RIGHT_LINK}
  5694. DIBUTTON_MECHA_FASTER_LINK = $2903C4E0; (* Fallback increase engine speed *)
  5695. {$EXTERNALSYM DIBUTTON_MECHA_FASTER_LINK}
  5696. DIBUTTON_MECHA_SLOWER_LINK = $2903C4E8; (* Fallback decrease engine speed *)
  5697. {$EXTERNALSYM DIBUTTON_MECHA_SLOWER_LINK}
  5698. DIBUTTON_MECHA_DEVICE = $290044FE; (* Show input device and controls *)
  5699. {$EXTERNALSYM DIBUTTON_MECHA_DEVICE}
  5700. DIBUTTON_MECHA_PAUSE = $290044FC; (* Start / Pause / Restart game *)
  5701. {$EXTERNALSYM DIBUTTON_MECHA_PAUSE}
  5702. (*
  5703. * "ANY" semantics can be used as a last resort to get mappings for actions
  5704. * that match nothing in the chosen virtual genre. These semantics will be
  5705. * mapped at a lower priority that virtual genre semantics. Also, hardware
  5706. * vendors will not be able to provide sensible mappings for these unless
  5707. * they provide application specific mappings.
  5708. *)
  5709. DIAXIS_ANY_X_1 = $FF00C201;
  5710. {$EXTERNALSYM DIAXIS_ANY_X_1}
  5711. DIAXIS_ANY_X_2 = $FF00C202;
  5712. {$EXTERNALSYM DIAXIS_ANY_X_2}
  5713. DIAXIS_ANY_Y_1 = $FF014201;
  5714. {$EXTERNALSYM DIAXIS_ANY_Y_1}
  5715. DIAXIS_ANY_Y_2 = $FF014202;
  5716. {$EXTERNALSYM DIAXIS_ANY_Y_2}
  5717. DIAXIS_ANY_Z_1 = $FF01C201;
  5718. {$EXTERNALSYM DIAXIS_ANY_Z_1}
  5719. DIAXIS_ANY_Z_2 = $FF01C202;
  5720. {$EXTERNALSYM DIAXIS_ANY_Z_2}
  5721. DIAXIS_ANY_R_1 = $FF024201;
  5722. {$EXTERNALSYM DIAXIS_ANY_R_1}
  5723. DIAXIS_ANY_R_2 = $FF024202;
  5724. {$EXTERNALSYM DIAXIS_ANY_R_2}
  5725. DIAXIS_ANY_U_1 = $FF02C201;
  5726. {$EXTERNALSYM DIAXIS_ANY_U_1}
  5727. DIAXIS_ANY_U_2 = $FF02C202;
  5728. {$EXTERNALSYM DIAXIS_ANY_U_2}
  5729. DIAXIS_ANY_V_1 = $FF034201;
  5730. {$EXTERNALSYM DIAXIS_ANY_V_1}
  5731. DIAXIS_ANY_V_2 = $FF034202;
  5732. {$EXTERNALSYM DIAXIS_ANY_V_2}
  5733. DIAXIS_ANY_A_1 = $FF03C201;
  5734. {$EXTERNALSYM DIAXIS_ANY_A_1}
  5735. DIAXIS_ANY_A_2 = $FF03C202;
  5736. {$EXTERNALSYM DIAXIS_ANY_A_2}
  5737. DIAXIS_ANY_B_1 = $FF044201;
  5738. {$EXTERNALSYM DIAXIS_ANY_B_1}
  5739. DIAXIS_ANY_B_2 = $FF044202;
  5740. {$EXTERNALSYM DIAXIS_ANY_B_2}
  5741. DIAXIS_ANY_C_1 = $FF04C201;
  5742. {$EXTERNALSYM DIAXIS_ANY_C_1}
  5743. DIAXIS_ANY_C_2 = $FF04C202;
  5744. {$EXTERNALSYM DIAXIS_ANY_C_2}
  5745. DIAXIS_ANY_S_1 = $FF054201;
  5746. {$EXTERNALSYM DIAXIS_ANY_S_1}
  5747. DIAXIS_ANY_S_2 = $FF054202;
  5748. {$EXTERNALSYM DIAXIS_ANY_S_2}
  5749. DIAXIS_ANY_1 = $FF004201;
  5750. {$EXTERNALSYM DIAXIS_ANY_1}
  5751. DIAXIS_ANY_2 = $FF004202;
  5752. {$EXTERNALSYM DIAXIS_ANY_2}
  5753. DIAXIS_ANY_3 = $FF004203;
  5754. {$EXTERNALSYM DIAXIS_ANY_3}
  5755. DIAXIS_ANY_4 = $FF004204;
  5756. {$EXTERNALSYM DIAXIS_ANY_4}
  5757. DIPOV_ANY_1 = $FF004601;
  5758. {$EXTERNALSYM DIPOV_ANY_1}
  5759. DIPOV_ANY_2 = $FF004602;
  5760. {$EXTERNALSYM DIPOV_ANY_2}
  5761. DIPOV_ANY_3 = $FF004603;
  5762. {$EXTERNALSYM DIPOV_ANY_3}
  5763. DIPOV_ANY_4 = $FF004604;
  5764. {$EXTERNALSYM DIPOV_ANY_4}
  5765. // #define DIBUTTON_ANY(instance) ( 0xFF004400 | instance )
  5766. function DIBUTTON_ANY(instance: Cardinal): Cardinal;
  5767. {$EXTERNALSYM DIBUTTON_ANY}
  5768. (****************************************************************************
  5769. *
  5770. * Definitions for non-IDirectInput (VJoyD) features defined more recently
  5771. * than the current sdk files
  5772. *
  5773. ****************************************************************************)
  5774. //#ifdef _INC_MMSYSTEM
  5775. //#ifndef MMNOJOY
  5776. //#ifndef __VJOYDX_INCLUDED__
  5777. //#define __VJOYDX_INCLUDED__
  5778. const
  5779. (*
  5780. * Flag to indicate that the dwReserved2 field of the JOYINFOEX structure
  5781. * contains mini-driver specific data to be passed by VJoyD to the mini-
  5782. * driver instead of doing a poll.
  5783. *)
  5784. JOY_PASSDRIVERDATA = $10000000;
  5785. {$EXTERNALSYM JOY_PASSDRIVERDATA}
  5786. (*
  5787. * Informs the joystick driver that the configuration has been changed
  5788. * and should be reloaded from the registery.
  5789. * dwFlags is reserved and should be set to zero
  5790. *)
  5791. const
  5792. WinMMDll = 'WinMM.dll';
  5793. {$IFDEF DIRECTINPUT_DYNAMIC_LINK}
  5794. var
  5795. joyConfigChanged: function(dwFlags: DWORD): MMRESULT; stdcall;
  5796. {$ELSE}
  5797. function joyConfigChanged(dwFlags: DWORD): MMRESULT; stdcall; external WinMMDll;
  5798. {$ENDIF}
  5799. {$EXTERNALSYM joyConfigChanged}
  5800. (*
  5801. * Invoke the joystick control panel directly, using the passed window handle
  5802. * as the parent of the dialog. This API is only supported for compatibility
  5803. * purposes; new applications should use the RunControlPanel method of a
  5804. * device interface for a game controller.
  5805. * The API is called by using the function pointer returned by
  5806. * GetProcAddress( hCPL, TEXT("ShowJoyCPL") ) where hCPL is a HMODULE returned
  5807. * by LoadLibrary( TEXT("joy.cpl") ). The typedef is provided to allow
  5808. * declaration and casting of an appropriately typed variable.
  5809. *)
  5810. const
  5811. JoyCPL = 'joy.cpl';
  5812. type
  5813. TShowJoyCPL = procedure(hWnd: HWND); stdcall;
  5814. {$IFDEF DIRECTINPUT_DYNAMIC_LINK}
  5815. var
  5816. ShowJoyCPL: TShowJoyCPL;
  5817. {$ELSE}
  5818. procedure ShowJoyCPL(hWnd: HWND); stdcall; external JoyCPL;
  5819. {$ENDIF}
  5820. {$EXTERNALSYM ShowJoyCPL}
  5821. const
  5822. (*
  5823. * Hardware Setting indicating that the device is a headtracker
  5824. *)
  5825. JOY_HWS_ISHEADTRACKER = $02000000;
  5826. {$EXTERNALSYM JOY_HWS_ISHEADTRACKER}
  5827. (*
  5828. * Hardware Setting indicating that the VxD is used to replace
  5829. * the standard analog polling
  5830. *)
  5831. JOY_HWS_ISGAMEPORTDRIVER = $04000000;
  5832. {$EXTERNALSYM JOY_HWS_ISGAMEPORTDRIVER}
  5833. (*
  5834. * Hardware Setting indicating that the driver needs a standard
  5835. * gameport in order to communicate with the device.
  5836. *)
  5837. JOY_HWS_ISANALOGPORTDRIVER = $08000000;
  5838. {$EXTERNALSYM JOY_HWS_ISANALOGPORTDRIVER}
  5839. (*
  5840. * Hardware Setting indicating that VJoyD should not load this
  5841. * driver, it will be loaded externally and will register with
  5842. * VJoyD of it's own accord.
  5843. *)
  5844. JOY_HWS_AUTOLOAD = $10000000;
  5845. {$EXTERNALSYM JOY_HWS_AUTOLOAD}
  5846. (*
  5847. * Hardware Setting indicating that the driver acquires any
  5848. * resources needed without needing a devnode through VJoyD.
  5849. *)
  5850. JOY_HWS_NODEVNODE = $20000000;
  5851. {$EXTERNALSYM JOY_HWS_NODEVNODE}
  5852. (*
  5853. * Hardware Setting indicating that the device is a gameport bus
  5854. *)
  5855. JOY_HWS_ISGAMEPORTBUS = $80000000;
  5856. {$EXTERNALSYM JOY_HWS_ISGAMEPORTBUS}
  5857. JOY_HWS_GAMEPORTBUSBUSY = $00000001;
  5858. {$EXTERNALSYM JOY_HWS_GAMEPORTBUSBUSY}
  5859. (*
  5860. * Usage Setting indicating that the settings are volatile and
  5861. * should be removed if still present on a reboot.
  5862. *)
  5863. JOY_US_VOLATILE = $00000008;
  5864. {$EXTERNALSYM JOY_US_VOLATILE}
  5865. //#endif (* __VJOYDX_INCLUDED__ *)
  5866. //#endif (* not MMNOJOY *)
  5867. //#endif (* _INC_MMSYSTEM *)
  5868. (****************************************************************************
  5869. *
  5870. * Definitions for non-IDirectInput (VJoyD) features defined more recently
  5871. * than the current ddk files
  5872. *
  5873. ****************************************************************************)
  5874. //#ifdef _INC_MMDDK
  5875. //#ifndef MMNOJOYDEV
  5876. //#ifndef __VJOYDXD_INCLUDED__
  5877. //#define __VJOYDXD_INCLUDED__
  5878. const
  5879. (*
  5880. * Poll type in which the do_other field of the JOYOEMPOLLDATA
  5881. * structure contains mini-driver specific data passed from an app.
  5882. *)
  5883. JOY_OEMPOLL_PASSDRIVERDATA = 7;
  5884. {$EXTERNALSYM JOY_OEMPOLL_PASSDRIVERDATA}
  5885. //#endif (* __VJOYDXD_INCLUDED__ *)
  5886. //#endif (* not MMNOJOYDEV *)
  5887. //#endif (* _INC_MMDDK *)
  5888. implementation
  5889. //#define DIEFT_GETTYPE(n) LOBYTE(n)
  5890. function DIEFT_GETTYPE(n: Cardinal): Byte;
  5891. begin
  5892. Result := LOBYTE(n);
  5893. end;
  5894. // #define GET_DIDEVICE_TYPE(dwDevType) LOBYTE(dwDevType)
  5895. function GET_DIDEVICE_TYPE(dwDevType: DWORD): Byte;
  5896. begin
  5897. Result := LOBYTE(dwDevType);
  5898. end;
  5899. // #define GET_DIDEVICE_SUBTYPE(dwDevType) HIBYTE(dwDevType)
  5900. function GET_DIDEVICE_SUBTYPE(dwDevType: DWORD): Byte;
  5901. begin
  5902. Result := HiByte(Word(dwDevType));
  5903. end;
  5904. // #define DIDFT_MAKEINSTANCE(n) ((WORD)(n) << 8)
  5905. function DIDFT_MAKEINSTANCE(n: Cardinal): Cardinal;
  5906. begin
  5907. Result := Word(n) shl 8;
  5908. end;
  5909. // #define DIDFT_GETTYPE(n) LOBYTE(n)
  5910. function DIDFT_GETTYPE(n: Cardinal): Byte;
  5911. begin
  5912. Result := LOBYTE(n);
  5913. end;
  5914. // #define DIDFT_GETINSTANCE(n) LOWORD((n) >> 8)
  5915. function DIDFT_GETINSTANCE(n: Cardinal): Cardinal;
  5916. begin
  5917. Result := LOWORD(n) shr 8;
  5918. end;
  5919. // #define DIDFT_ENUMCOLLECTION(n) ((WORD)(n) << 8)
  5920. function DIDFT_ENUMCOLLECTION(n: Cardinal): Cardinal;
  5921. begin
  5922. Result := Word(n) shl 8;
  5923. end;
  5924. {$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
  5925. // #define DIMAKEUSAGEDWORD(UsagePage, Usage) \
  5926. // (DWORD)MAKELONG(Usage, UsagePage)
  5927. function DIMAKEUSAGEDWORD(UsagePage, Usage: Word): DWORD;
  5928. begin
  5929. Result:= DWORD(MakeLong(UsagePage, Usage));
  5930. end;
  5931. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
  5932. // #define DIJOFS_SLIDER(n) (FIELD_OFFSET(DIJOYSTATE, rglSlider) + \
  5933. // (n) * sizeof(LONG))
  5934. function DIJOFS_SLIDER(n: Cardinal): Cardinal;
  5935. begin
  5936. Result := Cardinal(@PDIJoyState(nil)^.rglSlider) + n*SizeOf(DWORD); // + 24;
  5937. end;
  5938. // #define DIJOFS_POV(n) (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + \
  5939. // (n) * sizeof(DWORD))
  5940. function DIJOFS_POV(n: Cardinal): Cardinal;
  5941. begin
  5942. Result := Cardinal(@PDIJoyState(nil).rgdwPOV) + n*SizeOf(DWORD); // + 32;
  5943. end;
  5944. // #define DIJOFS_BUTTON(n) (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))
  5945. function DIJOFS_BUTTON(n: Cardinal): Cardinal;
  5946. begin
  5947. Result := Cardinal(@PDIJoyState(nil).rgbButtons) + n*SizeOf(DWORD); // + 48;
  5948. end;
  5949. // #define DIBUTTON_ANY(instance) ( 0xFF004400 | instance )
  5950. function DIBUTTON_ANY(instance: Cardinal): Cardinal;
  5951. begin
  5952. Result := $FF004400 or instance;
  5953. end;
  5954. {$IFDEF DIRECTINPUT_DYNAMIC_LINK}
  5955. var
  5956. DirectInputLib: THandle = 0;
  5957. DirectInput8Lib: THandle = 0;
  5958. WinMMLib: THandle = 0;
  5959. JoyCPLLib: THandle = 0;
  5960. function DirectInputLoaded: Boolean;
  5961. begin
  5962. Result:= (DirectInputLib <> 0) and (DirectInput8Lib<>0);
  5963. end;
  5964. function UnLoadDirectInput: Boolean;
  5965. begin
  5966. Result:= True;
  5967. if (DirectInputLib <> 0) then
  5968. begin
  5969. Result:= Result and FreeLibrary(DirectInputLib);
  5970. DirectInputCreateA:= nil;
  5971. DirectInputCreateW:= nil;
  5972. DirectInputCreate:= nil;
  5973. DirectInputCreateEx:= nil;
  5974. DirectInputLib:= 0;
  5975. end;
  5976. if (DirectInput8Lib <> 0) then
  5977. begin
  5978. Result:= Result and FreeLibrary(DirectInput8Lib);
  5979. DirectInput8Create:= nil;
  5980. DirectInput8Lib:= 0;
  5981. end;
  5982. if (WinMMLib <> 0) then
  5983. begin
  5984. Result:= Result and FreeLibrary(WinMMLib);
  5985. joyConfigChanged:= nil;
  5986. WinMMLib:= 0;
  5987. end;
  5988. if (JoyCPLLib <> 0) then
  5989. begin
  5990. Result:= Result and FreeLibrary(JoyCPLLib);
  5991. ShowJoyCPL:= nil;
  5992. JoyCPLLib:= 0;
  5993. end;
  5994. end;
  5995. function LoadDirectInput: Boolean;
  5996. begin
  5997. Result:= DirectInputLoaded;
  5998. if (not Result) then
  5999. begin
  6000. DirectInputLib:= LoadLibrary(DirectInputDll);
  6001. if (DirectInputLib<>0) then
  6002. begin
  6003. DirectInputCreateA:= GetProcAddress(DirectInputLib, 'DirectInputCreateA');
  6004. DirectInputCreateW:= GetProcAddress(DirectInputLib, 'DirectInputCreateW');
  6005. {$IFDEF UNICODE}
  6006. DirectInputCreate:= GetProcAddress(DirectInputLib, 'DirectInputCreateW');
  6007. {$ELSE}
  6008. DirectInputCreate:= GetProcAddress(DirectInputLib, 'DirectInputCreateA');
  6009. {$ENDIF}
  6010. DirectInputCreateEx:= GetProcAddress(DirectInputLib, 'DirectInputCreateEx');
  6011. end;
  6012. DirectInput8Lib:= LoadLibrary(DirectInput8Dll);
  6013. if (DirectInput8Lib<>0) then
  6014. begin
  6015. DirectInput8Create:= GetProcAddress(DirectInputLib, 'DirectInput8Create');
  6016. end;
  6017. WinMMLib:= LoadLibrary(WinMMDll);
  6018. if (WinMMLib <> 0) then
  6019. begin
  6020. joyConfigChanged:= GetProcAddress(WinMMLib, 'joyConfigChanged');
  6021. end;
  6022. JoyCPLLib:= LoadLibrary(JoyCPL);
  6023. if (JoyCPLLib <> 0) then
  6024. begin
  6025. ShowJoyCPL:= GetProcAddress(JoyCPLLib, 'ShowJoyCPL');
  6026. end;
  6027. // At least basic procedure is found!
  6028. Result:= Assigned(DirectInputCreate) or Assigned(DirectInput8Create);
  6029. if not Result then UnLoadDirectInput;
  6030. end;
  6031. end;
  6032. {$ELSE}
  6033. function DirectInputLoaded: Boolean;
  6034. begin // Stub function for static linking
  6035. Result:= True;
  6036. end;
  6037. function UnLoadDirectInput: Boolean;
  6038. begin // Stub function for static linking
  6039. Result:= True; // should emulate "normal" behaviour
  6040. end;
  6041. function LoadDirectInput: Boolean;
  6042. begin // Stub function for static linking
  6043. Result:= True;
  6044. end;
  6045. {$ENDIF}
  6046. {$IFDEF DIRECTINPUT_DYNAMIC_LINK}
  6047. initialization
  6048. {$IFNDEF DIRECTINPUT_DYNAMIC_LINK_EXPLICIT}
  6049. LoadDirectInput;
  6050. {$ENDIF}
  6051. finalization
  6052. UnLoadDirectInput;
  6053. {$ENDIF}
  6054. end.