DirectInput.pas
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:319k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1.   DIMOFS_BUTTON7  = DIMOFS_BUTTON0 + 7; // (FIELD_OFFSET(DIMOUSESTATE2, rgbButtons) + 7)
  2.   {$EXTERNALSYM DIMOFS_BUTTON7}
  3. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  4. (****************************************************************************
  5.  *
  6.  *      Keyboard
  7.  *
  8.  ****************************************************************************)
  9. (****************************************************************************
  10.  *
  11.  *      DirectInput keyboard scan codes
  12.  *
  13.  ****************************************************************************)
  14. const
  15.   DIK_ESCAPE          = $01;
  16.   {$EXTERNALSYM DIK_ESCAPE}
  17.   DIK_1               = $02;
  18.   {$EXTERNALSYM DIK_1}
  19.   DIK_2               = $03;
  20.   {$EXTERNALSYM DIK_2}
  21.   DIK_3               = $04;
  22.   {$EXTERNALSYM DIK_3}
  23.   DIK_4               = $05;
  24.   {$EXTERNALSYM DIK_4}
  25.   DIK_5               = $06;
  26.   {$EXTERNALSYM DIK_5}
  27.   DIK_6               = $07;
  28.   {$EXTERNALSYM DIK_6}
  29.   DIK_7               = $08;
  30.   {$EXTERNALSYM DIK_7}
  31.   DIK_8               = $09;
  32.   {$EXTERNALSYM DIK_8}
  33.   DIK_9               = $0A;
  34.   {$EXTERNALSYM DIK_9}
  35.   DIK_0               = $0B;
  36.   {$EXTERNALSYM DIK_0}
  37.   DIK_MINUS           = $0C;    (* - on main keyboard *)
  38.   {$EXTERNALSYM DIK_MINUS}
  39.   DIK_EQUALS          = $0D;
  40.   {$EXTERNALSYM DIK_EQUALS}
  41.   DIK_BACK            = $0E;    (* backspace *)
  42.   {$EXTERNALSYM DIK_BACK}
  43.   DIK_TAB             = $0F;
  44.   {$EXTERNALSYM DIK_TAB}
  45.   DIK_Q               = $10;
  46.   {$EXTERNALSYM DIK_Q}
  47.   DIK_W               = $11;
  48.   {$EXTERNALSYM DIK_W}
  49.   DIK_E               = $12;
  50.   {$EXTERNALSYM DIK_E}
  51.   DIK_R               = $13;
  52.   {$EXTERNALSYM DIK_R}
  53.   DIK_T               = $14;
  54.   {$EXTERNALSYM DIK_T}
  55.   DIK_Y               = $15;
  56.   {$EXTERNALSYM DIK_Y}
  57.   DIK_U               = $16;
  58.   {$EXTERNALSYM DIK_U}
  59.   DIK_I               = $17;
  60.   {$EXTERNALSYM DIK_I}
  61.   DIK_O               = $18;
  62.   {$EXTERNALSYM DIK_O}
  63.   DIK_P               = $19;
  64.   {$EXTERNALSYM DIK_P}
  65.   DIK_LBRACKET        = $1A;
  66.   {$EXTERNALSYM DIK_LBRACKET}
  67.   DIK_RBRACKET        = $1B;
  68.   {$EXTERNALSYM DIK_RBRACKET}
  69.   DIK_RETURN          = $1C;    (* Enter on main keyboard *)
  70.   {$EXTERNALSYM DIK_RETURN}
  71.   DIK_LCONTROL        = $1D;
  72.   {$EXTERNALSYM DIK_LCONTROL}
  73.   DIK_A               = $1E;
  74.   {$EXTERNALSYM DIK_A}
  75.   DIK_S               = $1F;
  76.   {$EXTERNALSYM DIK_S}
  77.   DIK_D               = $20;
  78.   {$EXTERNALSYM DIK_D}
  79.   DIK_F               = $21;
  80.   {$EXTERNALSYM DIK_F}
  81.   DIK_G               = $22;
  82.   {$EXTERNALSYM DIK_G}
  83.   DIK_H               = $23;
  84.   {$EXTERNALSYM DIK_H}
  85.   DIK_J               = $24;
  86.   {$EXTERNALSYM DIK_J}
  87.   DIK_K               = $25;
  88.   {$EXTERNALSYM DIK_K}
  89.   DIK_L               = $26;
  90.   {$EXTERNALSYM DIK_L}
  91.   DIK_SEMICOLON       = $27;
  92.   {$EXTERNALSYM DIK_SEMICOLON}
  93.   DIK_APOSTROPHE      = $28;
  94.   {$EXTERNALSYM DIK_APOSTROPHE}
  95.   DIK_GRAVE           = $29;    (* accent grave *)
  96.   {$EXTERNALSYM DIK_GRAVE}
  97.   DIK_LSHIFT          = $2A;
  98.   {$EXTERNALSYM DIK_LSHIFT}
  99.   DIK_BACKSLASH       = $2B;
  100.   {$EXTERNALSYM DIK_BACKSLASH}
  101.   DIK_Z               = $2C;
  102.   {$EXTERNALSYM DIK_Z}
  103.   DIK_X               = $2D;
  104.   {$EXTERNALSYM DIK_X}
  105.   DIK_C               = $2E;
  106.   {$EXTERNALSYM DIK_C}
  107.   DIK_V               = $2F;
  108.   {$EXTERNALSYM DIK_V}
  109.   DIK_B               = $30;
  110.   {$EXTERNALSYM DIK_B}
  111.   DIK_N               = $31;
  112.   {$EXTERNALSYM DIK_N}
  113.   DIK_M               = $32;
  114.   {$EXTERNALSYM DIK_M}
  115.   DIK_COMMA           = $33;
  116.   {$EXTERNALSYM DIK_COMMA}
  117.   DIK_PERIOD          = $34;    (* . on main keyboard *)
  118.   {$EXTERNALSYM DIK_PERIOD}
  119.   DIK_SLASH           = $35;    (* / on main keyboard *)
  120.   {$EXTERNALSYM DIK_SLASH}
  121.   DIK_RSHIFT          = $36;
  122.   {$EXTERNALSYM DIK_RSHIFT}
  123.   DIK_MULTIPLY        = $37;    (* * on numeric keypad *)
  124.   {$EXTERNALSYM DIK_MULTIPLY}
  125.   DIK_LMENU           = $38;    (* left Alt *)
  126.   {$EXTERNALSYM DIK_LMENU}
  127.   DIK_SPACE           = $39;
  128.   {$EXTERNALSYM DIK_SPACE}
  129.   DIK_CAPITAL         = $3A;
  130.   {$EXTERNALSYM DIK_CAPITAL}
  131.   DIK_F1              = $3B;
  132.   {$EXTERNALSYM DIK_F1}
  133.   DIK_F2              = $3C;
  134.   {$EXTERNALSYM DIK_F2}
  135.   DIK_F3              = $3D;
  136.   {$EXTERNALSYM DIK_F3}
  137.   DIK_F4              = $3E;
  138.   {$EXTERNALSYM DIK_F4}
  139.   DIK_F5              = $3F;
  140.   {$EXTERNALSYM DIK_F5}
  141.   DIK_F6              = $40;
  142.   {$EXTERNALSYM DIK_F6}
  143.   DIK_F7              = $41;
  144.   {$EXTERNALSYM DIK_F7}
  145.   DIK_F8              = $42;
  146.   {$EXTERNALSYM DIK_F8}
  147.   DIK_F9              = $43;
  148.   {$EXTERNALSYM DIK_F9}
  149.   DIK_F10             = $44;
  150.   {$EXTERNALSYM DIK_F10}
  151.   DIK_NUMLOCK         = $45;
  152.   {$EXTERNALSYM DIK_NUMLOCK}
  153.   DIK_SCROLL          = $46;    (* Scroll Lock *)
  154.   {$EXTERNALSYM DIK_SCROLL}
  155.   DIK_NUMPAD7         = $47;
  156.   {$EXTERNALSYM DIK_NUMPAD7}
  157.   DIK_NUMPAD8         = $48;
  158.   {$EXTERNALSYM DIK_NUMPAD8}
  159.   DIK_NUMPAD9         = $49;
  160.   {$EXTERNALSYM DIK_NUMPAD9}
  161.   DIK_SUBTRACT        = $4A;    (* - on numeric keypad *)
  162.   {$EXTERNALSYM DIK_SUBTRACT}
  163.   DIK_NUMPAD4         = $4B;
  164.   {$EXTERNALSYM DIK_NUMPAD4}
  165.   DIK_NUMPAD5         = $4C;
  166.   {$EXTERNALSYM DIK_NUMPAD5}
  167.   DIK_NUMPAD6         = $4D;
  168.   {$EXTERNALSYM DIK_NUMPAD6}
  169.   DIK_ADD             = $4E;    (* + on numeric keypad *)
  170.   {$EXTERNALSYM DIK_ADD}
  171.   DIK_NUMPAD1         = $4F;
  172.   {$EXTERNALSYM DIK_NUMPAD1}
  173.   DIK_NUMPAD2         = $50;
  174.   {$EXTERNALSYM DIK_NUMPAD2}
  175.   DIK_NUMPAD3         = $51;
  176.   {$EXTERNALSYM DIK_NUMPAD3}
  177.   DIK_NUMPAD0         = $52;
  178.   {$EXTERNALSYM DIK_NUMPAD0}
  179.   DIK_DECIMAL         = $53;    (* . on numeric keypad *)
  180.   {$EXTERNALSYM DIK_DECIMAL}
  181.   DIK_OEM_102         = $56;    (* <> or | on RT 102-key keyboard (Non-U.S.) *)
  182.   {$EXTERNALSYM DIK_OEM_102}
  183.   DIK_F11             = $57;
  184.   {$EXTERNALSYM DIK_F11}
  185.   DIK_F12             = $58;
  186.   {$EXTERNALSYM DIK_F12}
  187.   DIK_F13             = $64;    (*                     (NEC PC98) *)
  188.   {$EXTERNALSYM DIK_F13}
  189.   DIK_F14             = $65;    (*                     (NEC PC98) *)
  190.   {$EXTERNALSYM DIK_F14}
  191.   DIK_F15             = $66;    (*                     (NEC PC98) *)
  192.   {$EXTERNALSYM DIK_F15}
  193.   DIK_KANA            = $70;    (* (Japanese keyboard)            *)
  194.   {$EXTERNALSYM DIK_KANA}
  195.   DIK_ABNT_C1         = $73;    (* /? on Brazilian keyboard *)
  196.   {$EXTERNALSYM DIK_ABNT_C1}
  197.   DIK_CONVERT         = $79;    (* (Japanese keyboard)            *)
  198.   {$EXTERNALSYM DIK_CONVERT}
  199.   DIK_NOCONVERT       = $7B;    (* (Japanese keyboard)            *)
  200.   {$EXTERNALSYM DIK_NOCONVERT}
  201.   DIK_YEN             = $7D;    (* (Japanese keyboard)            *)
  202.   {$EXTERNALSYM DIK_YEN}
  203.   DIK_ABNT_C2         = $7E;    (* Numpad . on Brazilian keyboard *)
  204.   {$EXTERNALSYM DIK_ABNT_C2}
  205.   DIK_NUMPADEQUALS    = $8D;    (* = on numeric keypad (NEC PC98) *)
  206.   {$EXTERNALSYM DIK_NUMPADEQUALS}
  207.   DIK_PREVTRACK       = $90;    (* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) *)
  208.   {$EXTERNALSYM DIK_PREVTRACK}
  209.   DIK_AT              = $91;    (*                     (NEC PC98) *)
  210.   {$EXTERNALSYM DIK_AT}
  211.   DIK_COLON           = $92;    (*                     (NEC PC98) *)
  212.   {$EXTERNALSYM DIK_COLON}
  213.   DIK_UNDERLINE       = $93;    (*                     (NEC PC98) *)
  214.   {$EXTERNALSYM DIK_UNDERLINE}
  215.   DIK_KANJI           = $94;    (* (Japanese keyboard)            *)
  216.   {$EXTERNALSYM DIK_KANJI}
  217.   DIK_STOP            = $95;    (*                     (NEC PC98) *)
  218.   {$EXTERNALSYM DIK_STOP}
  219.   DIK_AX              = $96;    (*                     (Japan AX) *)
  220.   {$EXTERNALSYM DIK_AX}
  221.   DIK_UNLABELED       = $97;    (*                        (J3100) *)
  222.   {$EXTERNALSYM DIK_UNLABELED}
  223.   DIK_NEXTTRACK       = $99;    (* Next Track *)
  224.   {$EXTERNALSYM DIK_NEXTTRACK}
  225.   DIK_NUMPADENTER     = $9C;    (* Enter on numeric keypad *)
  226.   {$EXTERNALSYM DIK_NUMPADENTER}
  227.   DIK_RCONTROL        = $9D;
  228.   {$EXTERNALSYM DIK_RCONTROL}
  229.   DIK_MUTE            = $A0;    (* Mute *)
  230.   {$EXTERNALSYM DIK_MUTE}
  231.   DIK_CALCULATOR      = $A1;    (* Calculator *)
  232.   {$EXTERNALSYM DIK_CALCULATOR}
  233.   DIK_PLAYPAUSE       = $A2;    (* Play / Pause *)
  234.   {$EXTERNALSYM DIK_PLAYPAUSE}
  235.   DIK_MEDIASTOP       = $A4;    (* Media Stop *)
  236.   {$EXTERNALSYM DIK_MEDIASTOP}
  237.   DIK_VOLUMEDOWN      = $AE;    (* Volume - *)
  238.   {$EXTERNALSYM DIK_VOLUMEDOWN}
  239.   DIK_VOLUMEUP        = $B0;    (* Volume + *)
  240.   {$EXTERNALSYM DIK_VOLUMEUP}
  241.   DIK_WEBHOME         = $B2;    (* Web home *)
  242.   {$EXTERNALSYM DIK_WEBHOME}
  243.   DIK_NUMPADCOMMA     = $B3;    (* , on numeric keypad (NEC PC98) *)
  244.   {$EXTERNALSYM DIK_NUMPADCOMMA}
  245.   DIK_DIVIDE          = $B5;    (* / on numeric keypad *)
  246.   {$EXTERNALSYM DIK_DIVIDE}
  247.   DIK_SYSRQ           = $B7;
  248.   {$EXTERNALSYM DIK_SYSRQ}
  249.   DIK_RMENU           = $B8;    (* right Alt *)
  250.   {$EXTERNALSYM DIK_RMENU}
  251.   DIK_PAUSE           = $C5;    (* Pause *)
  252.   {$EXTERNALSYM DIK_PAUSE}
  253.   DIK_HOME            = $C7;    (* Home on arrow keypad *)
  254.   {$EXTERNALSYM DIK_HOME}
  255.   DIK_UP              = $C8;    (* UpArrow on arrow keypad *)
  256.   {$EXTERNALSYM DIK_UP}
  257.   DIK_PRIOR           = $C9;    (* PgUp on arrow keypad *)
  258.   {$EXTERNALSYM DIK_PRIOR}
  259.   DIK_LEFT            = $CB;    (* LeftArrow on arrow keypad *)
  260.   {$EXTERNALSYM DIK_LEFT}
  261.   DIK_RIGHT           = $CD;    (* RightArrow on arrow keypad *)
  262.   {$EXTERNALSYM DIK_RIGHT}
  263.   DIK_END             = $CF;    (* End on arrow keypad *)
  264.   {$EXTERNALSYM DIK_END}
  265.   DIK_DOWN            = $D0;    (* DownArrow on arrow keypad *)
  266.   {$EXTERNALSYM DIK_DOWN}
  267.   DIK_NEXT            = $D1;    (* PgDn on arrow keypad *)
  268.   {$EXTERNALSYM DIK_NEXT}
  269.   DIK_INSERT          = $D2;    (* Insert on arrow keypad *)
  270.   {$EXTERNALSYM DIK_INSERT}
  271.   DIK_DELETE          = $D3;    (* Delete on arrow keypad *)
  272.   {$EXTERNALSYM DIK_DELETE}
  273.   DIK_LWIN            = $DB;    (* Left Windows key *)
  274.   {$EXTERNALSYM DIK_LWIN}
  275.   DIK_RWIN            = $DC;    (* Right Windows key *)
  276.   {$EXTERNALSYM DIK_RWIN}
  277.   DIK_APPS            = $DD;    (* AppMenu key *)
  278.   {$EXTERNALSYM DIK_APPS}
  279.   DIK_POWER           = $DE;    (* System Power *)
  280.   {$EXTERNALSYM DIK_POWER}
  281.   DIK_SLEEP           = $DF;    (* System Sleep *)
  282.   {$EXTERNALSYM DIK_SLEEP}
  283.   DIK_WAKE            = $E3;    (* System Wake *)
  284.   {$EXTERNALSYM DIK_WAKE}
  285.   DIK_WEBSEARCH       = $E5;    (* Web Search *)
  286.   {$EXTERNALSYM DIK_WEBSEARCH}
  287.   DIK_WEBFAVORITES    = $E6;    (* Web Favorites *)
  288.   {$EXTERNALSYM DIK_WEBFAVORITES}
  289.   DIK_WEBREFRESH      = $E7;    (* Web Refresh *)
  290.   {$EXTERNALSYM DIK_WEBREFRESH}
  291.   DIK_WEBSTOP         = $E8;    (* Web Stop *)
  292.   {$EXTERNALSYM DIK_WEBSTOP}
  293.   DIK_WEBFORWARD      = $E9;    (* Web Forward *)
  294.   {$EXTERNALSYM DIK_WEBFORWARD}
  295.   DIK_WEBBACK         = $EA;    (* Web Back *)
  296.   {$EXTERNALSYM DIK_WEBBACK}
  297.   DIK_MYCOMPUTER      = $EB;    (* My Computer *)
  298.   {$EXTERNALSYM DIK_MYCOMPUTER}
  299.   DIK_MAIL            = $EC;    (* Mail *)
  300.   {$EXTERNALSYM DIK_MAIL}
  301.   DIK_MEDIASELECT     = $ED;    (* Media Select *)
  302.   {$EXTERNALSYM DIK_MEDIASELECT}
  303. (*
  304.  *  Alternate names for keys, to facilitate transition from DOS.
  305.  *)
  306.   DIK_BACKSPACE       = DIK_BACK;            (* backspace *)
  307.   {$EXTERNALSYM DIK_BACKSPACE}
  308.   DIK_NUMPADSTAR      = DIK_MULTIPLY;        (* * on numeric keypad *)
  309.   {$EXTERNALSYM DIK_NUMPADSTAR}
  310.   DIK_LALT            = DIK_LMENU;           (* left Alt *)
  311.   {$EXTERNALSYM DIK_LALT}
  312.   DIK_CAPSLOCK        = DIK_CAPITAL;         (* CapsLock *)
  313.   {$EXTERNALSYM DIK_CAPSLOCK}
  314.   DIK_NUMPADMINUS     = DIK_SUBTRACT;        (* - on numeric keypad *)
  315.   {$EXTERNALSYM DIK_NUMPADMINUS}
  316.   DIK_NUMPADPLUS      = DIK_ADD;             (* + on numeric keypad *)
  317.   {$EXTERNALSYM DIK_NUMPADPLUS}
  318.   DIK_NUMPADPERIOD    = DIK_DECIMAL;         (* . on numeric keypad *)
  319.   {$EXTERNALSYM DIK_NUMPADPERIOD}
  320.   DIK_NUMPADSLASH     = DIK_DIVIDE;          (* / on numeric keypad *)
  321.   {$EXTERNALSYM DIK_NUMPADSLASH}
  322.   DIK_RALT            = DIK_RMENU;           (* right Alt *)
  323.   {$EXTERNALSYM DIK_RALT}
  324.   DIK_UPARROW         = DIK_UP;              (* UpArrow on arrow keypad *)
  325.   {$EXTERNALSYM DIK_UPARROW}
  326.   DIK_PGUP            = DIK_PRIOR;           (* PgUp on arrow keypad *)
  327.   {$EXTERNALSYM DIK_PGUP}
  328.   DIK_LEFTARROW       = DIK_LEFT;            (* LeftArrow on arrow keypad *)
  329.   {$EXTERNALSYM DIK_LEFTARROW}
  330.   DIK_RIGHTARROW      = DIK_RIGHT;           (* RightArrow on arrow keypad *)
  331.   {$EXTERNALSYM DIK_RIGHTARROW}
  332.   DIK_DOWNARROW       = DIK_DOWN;            (* DownArrow on arrow keypad *)
  333.   {$EXTERNALSYM DIK_DOWNARROW}
  334.   DIK_PGDN            = DIK_NEXT;            (* PgDn on arrow keypad *)
  335.   {$EXTERNALSYM DIK_PGDN}
  336. (*
  337.  *  Alternate names for keys originally not used on US keyboards.
  338.  *)
  339.   DIK_CIRCUMFLEX      = DIK_PREVTRACK;       (* Japanese keyboard *)
  340.   {$EXTERNALSYM DIK_CIRCUMFLEX}
  341. (****************************************************************************
  342.  *
  343.  *      Joystick
  344.  *
  345.  ****************************************************************************)
  346. type
  347.   PDIJoyState = ^TDIJoyState;
  348.   DIJOYSTATE = packed record
  349.     lX: Longint;                        (* x-axis position              *)
  350.     lY: Longint;                        (* y-axis position              *)
  351.     lZ: Longint;                        (* z-axis position              *)
  352.     lRx: Longint;                       (* x-axis rotation              *)
  353.     lRy: Longint;                       (* y-axis rotation              *)
  354.     lRz: Longint;                       (* z-axis rotation              *)
  355.     rglSlider: array[0..1] of Longint;  (* extra axes positions         *)
  356.     rgdwPOV: array[0..3] of DWORD;      (* POV directions               *)
  357.     rgbButtons: array[0..31] of Byte;   (* 32 buttons                   *)
  358.   end;
  359.   {$EXTERNALSYM DIJOYSTATE}
  360.   TDIJoyState = DIJOYSTATE;
  361.   PDIJoyState2 = ^TDIJoyState2;
  362.   DIJOYSTATE2 = packed record
  363.     lX: Longint;                        (* x-axis position              *)
  364.     lY: Longint;                        (* y-axis position              *)
  365.     lZ: Longint;                        (* z-axis position              *)
  366.     lRx: Longint;                       (* x-axis rotation              *)
  367.     lRy: Longint;                       (* y-axis rotation              *)
  368.     lRz: Longint;                       (* z-axis rotation              *)
  369.     rglSlider: array[0..1] of Longint;  (* extra axes positions         *)
  370.     rgdwPOV: array[0..3] of DWORD;      (* POV directions               *)
  371.     rgbButtons: array[0..127] of Byte;  (* 128 buttons                  *)
  372.     lVX: Longint;                       (* x-axis velocity              *)
  373.     lVY: Longint;                       (* y-axis velocity              *)
  374.     lVZ: Longint;                       (* z-axis velocity              *)
  375.     lVRx: Longint;                      (* x-axis angular velocity      *)
  376.     lVRy: Longint;                      (* y-axis angular velocity      *)
  377.     lVRz: Longint;                      (* z-axis angular velocity      *)
  378.     rglVSlider: array[0..1] of Longint; (* extra axes velocities        *)
  379.     lAX: Longint;                       (* x-axis acceleration          *)
  380.     lAY: Longint;                       (* y-axis acceleration          *)
  381.     lAZ: Longint;                       (* z-axis acceleration          *)
  382.     lARx: Longint;                      (* x-axis angular acceleration  *)
  383.     lARy: Longint;                      (* y-axis angular acceleration  *)
  384.     lARz: Longint;                      (* z-axis angular acceleration  *)
  385.     rglASlider: array[0..1] of Longint; (* extra axes accelerations     *)
  386.     lFX: Longint;                       (* x-axis force                 *)
  387.     lFY: Longint;                       (* y-axis force                 *)
  388.     lFZ: Longint;                       (* z-axis force                 *)
  389.     lFRx: Longint;                      (* x-axis torque                *)
  390.     lFRy: Longint;                      (* y-axis torque                *)
  391.     lFRz: Longint;                      (* z-axis torque                *)
  392.     rglFSlider: array[0..1] of Longint; (* extra axes forces            *)
  393.   end;
  394.   {$EXTERNALSYM DIJOYSTATE2}
  395.   TDIJoyState2 = DIJOYSTATE2;
  396. const
  397.   DIJOFS_X            = 0;  // FIELD_OFFSET(DIJOYSTATE, lX)
  398.   {$EXTERNALSYM DIJOFS_X}
  399.   DIJOFS_Y            = 4;  // FIELD_OFFSET(DIJOYSTATE, lY)
  400.   {$EXTERNALSYM DIJOFS_Y}
  401.   DIJOFS_Z            = 8;  // FIELD_OFFSET(DIJOYSTATE, lZ)
  402.   {$EXTERNALSYM DIJOFS_Z}
  403.   DIJOFS_RX           = 12; // FIELD_OFFSET(DIJOYSTATE, lRx)
  404.   {$EXTERNALSYM DIJOFS_RX}
  405.   DIJOFS_RY           = 16; // FIELD_OFFSET(DIJOYSTATE, lRy)
  406.   {$EXTERNALSYM DIJOFS_RY}
  407.   DIJOFS_RZ           = 20; // FIELD_OFFSET(DIJOYSTATE, lRz)
  408.   {$EXTERNALSYM DIJOFS_RZ}
  409. //  #define DIJOFS_SLIDER(n)   (FIELD_OFFSET(DIJOYSTATE, rglSlider) + 
  410. //                              (n) * sizeof(LONG))
  411. function DIJOFS_SLIDER(n: Cardinal): Cardinal;
  412. {$EXTERNALSYM DIJOFS_SLIDER}
  413. // #define DIJOFS_POV(n)      (FIELD_OFFSET(DIJOYSTATE, rgdwPOV) + 
  414. //                              (n) * sizeof(DWORD))
  415. function DIJOFS_POV(n: Cardinal): Cardinal;
  416. {$EXTERNALSYM DIJOFS_POV}
  417. // #define DIJOFS_BUTTON(n)   (FIELD_OFFSET(DIJOYSTATE, rgbButtons) + (n))
  418. function DIJOFS_BUTTON(n: Cardinal): Cardinal;
  419. {$EXTERNALSYM DIJOFS_BUTTON}
  420. const
  421.   DIJOFS_BUTTON_      = 48; // Helper const
  422.   DIJOFS_BUTTON0      = DIJOFS_BUTTON_ +  0; // DIJOFS_BUTTON(0)
  423.   {$EXTERNALSYM DIJOFS_BUTTON0}
  424.   DIJOFS_BUTTON1      = DIJOFS_BUTTON_ +  1; // DIJOFS_BUTTON(1)
  425.   {$EXTERNALSYM DIJOFS_BUTTON1}
  426.   DIJOFS_BUTTON2      = DIJOFS_BUTTON_ +  2; // DIJOFS_BUTTON(2)
  427.   {$EXTERNALSYM DIJOFS_BUTTON2}
  428.   DIJOFS_BUTTON3      = DIJOFS_BUTTON_ +  3; // DIJOFS_BUTTON(3)
  429.   {$EXTERNALSYM DIJOFS_BUTTON3}
  430.   DIJOFS_BUTTON4      = DIJOFS_BUTTON_ +  4; // DIJOFS_BUTTON(4)
  431.   {$EXTERNALSYM DIJOFS_BUTTON4}
  432.   DIJOFS_BUTTON5      = DIJOFS_BUTTON_ +  5; // DIJOFS_BUTTON(5)
  433.   {$EXTERNALSYM DIJOFS_BUTTON5}
  434.   DIJOFS_BUTTON6      = DIJOFS_BUTTON_ +  6; // DIJOFS_BUTTON(6)
  435.   {$EXTERNALSYM DIJOFS_BUTTON6}
  436.   DIJOFS_BUTTON7      = DIJOFS_BUTTON_ +  7; // DIJOFS_BUTTON(7)
  437.   {$EXTERNALSYM DIJOFS_BUTTON7}
  438.   DIJOFS_BUTTON8      = DIJOFS_BUTTON_ +  8; // DIJOFS_BUTTON(8)
  439.   {$EXTERNALSYM DIJOFS_BUTTON8}
  440.   DIJOFS_BUTTON9      = DIJOFS_BUTTON_ +  9; // DIJOFS_BUTTON(9)
  441.   {$EXTERNALSYM DIJOFS_BUTTON9}
  442.   DIJOFS_BUTTON10     = DIJOFS_BUTTON_ + 10; // DIJOFS_BUTTON(10)
  443.   {$EXTERNALSYM DIJOFS_BUTTON10}
  444.   DIJOFS_BUTTON11     = DIJOFS_BUTTON_ + 11; // DIJOFS_BUTTON(11)
  445.   {$EXTERNALSYM DIJOFS_BUTTON11}
  446.   DIJOFS_BUTTON12     = DIJOFS_BUTTON_ + 12; // DIJOFS_BUTTON(12)
  447.   {$EXTERNALSYM DIJOFS_BUTTON12}
  448.   DIJOFS_BUTTON13     = DIJOFS_BUTTON_ + 13; // DIJOFS_BUTTON(13)
  449.   {$EXTERNALSYM DIJOFS_BUTTON13}
  450.   DIJOFS_BUTTON14     = DIJOFS_BUTTON_ + 14; // DIJOFS_BUTTON(14)
  451.   {$EXTERNALSYM DIJOFS_BUTTON14}
  452.   DIJOFS_BUTTON15     = DIJOFS_BUTTON_ + 15; // DIJOFS_BUTTON(15)
  453.   {$EXTERNALSYM DIJOFS_BUTTON15}
  454.   DIJOFS_BUTTON16     = DIJOFS_BUTTON_ + 16; // DIJOFS_BUTTON(16)
  455.   {$EXTERNALSYM DIJOFS_BUTTON16}
  456.   DIJOFS_BUTTON17     = DIJOFS_BUTTON_ + 17; // DIJOFS_BUTTON(17)
  457.   {$EXTERNALSYM DIJOFS_BUTTON17}
  458.   DIJOFS_BUTTON18     = DIJOFS_BUTTON_ + 18; // DIJOFS_BUTTON(18)
  459.   {$EXTERNALSYM DIJOFS_BUTTON18}
  460.   DIJOFS_BUTTON19     = DIJOFS_BUTTON_ + 19; // DIJOFS_BUTTON(19)
  461.   {$EXTERNALSYM DIJOFS_BUTTON19}
  462.   DIJOFS_BUTTON20     = DIJOFS_BUTTON_ + 20; // DIJOFS_BUTTON(20)
  463.   {$EXTERNALSYM DIJOFS_BUTTON20}
  464.   DIJOFS_BUTTON21     = DIJOFS_BUTTON_ + 21; // DIJOFS_BUTTON(21)
  465.   {$EXTERNALSYM DIJOFS_BUTTON21}
  466.   DIJOFS_BUTTON22     = DIJOFS_BUTTON_ + 22; // DIJOFS_BUTTON(22)
  467.   {$EXTERNALSYM DIJOFS_BUTTON22}
  468.   DIJOFS_BUTTON23     = DIJOFS_BUTTON_ + 23; // DIJOFS_BUTTON(23)
  469.   {$EXTERNALSYM DIJOFS_BUTTON23}
  470.   DIJOFS_BUTTON24     = DIJOFS_BUTTON_ + 24; // DIJOFS_BUTTON(24)
  471.   {$EXTERNALSYM DIJOFS_BUTTON24}
  472.   DIJOFS_BUTTON25     = DIJOFS_BUTTON_ + 25; // DIJOFS_BUTTON(25)
  473.   {$EXTERNALSYM DIJOFS_BUTTON25}
  474.   DIJOFS_BUTTON26     = DIJOFS_BUTTON_ + 26; // DIJOFS_BUTTON(26)
  475.   {$EXTERNALSYM DIJOFS_BUTTON26}
  476.   DIJOFS_BUTTON27     = DIJOFS_BUTTON_ + 27; // DIJOFS_BUTTON(27)
  477.   {$EXTERNALSYM DIJOFS_BUTTON27}
  478.   DIJOFS_BUTTON28     = DIJOFS_BUTTON_ + 28; // DIJOFS_BUTTON(28)
  479.   {$EXTERNALSYM DIJOFS_BUTTON28}
  480.   DIJOFS_BUTTON29     = DIJOFS_BUTTON_ + 29; // DIJOFS_BUTTON(29)
  481.   {$EXTERNALSYM DIJOFS_BUTTON29}
  482.   DIJOFS_BUTTON30     = DIJOFS_BUTTON_ + 30; // DIJOFS_BUTTON(30)
  483.   {$EXTERNALSYM DIJOFS_BUTTON30}
  484.   DIJOFS_BUTTON31     = DIJOFS_BUTTON_ + 31; // DIJOFS_BUTTON(31)
  485.   {$EXTERNALSYM DIJOFS_BUTTON31}
  486. const
  487.   rgodfDIMouse: array[0..6] of TDIObjectDataFormat = (
  488.     (pguid: @GUID_XAxis; dwOfs: DIMOFS_X; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE; dwFlags: 0),
  489.     (pguid: @GUID_YAxis; dwOfs: DIMOFS_Y; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE; dwFlags: 0),
  490.     (pguid: @GUID_ZAxis; dwOfs: DIMOFS_Z; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  491.     (pguid: nil; dwOfs: DIMOFS_BUTTON0;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE; dwFlags: 0),
  492.     (pguid: nil; dwOfs: DIMOFS_BUTTON1;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE; dwFlags: 0),
  493.     (pguid: nil; dwOfs: DIMOFS_BUTTON2;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  494.     (pguid: nil; dwOfs: DIMOFS_BUTTON3;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0)
  495.   );
  496.   {$EXTERNALSYM rgodfDIMouse}
  497.   c_dfDIMouse: TDIDataFormat = (
  498.     dwSize: Sizeof(c_dfDIMouse);              // $18
  499.     dwObjSize: Sizeof(TDIObjectDataFormat);   // $10
  500.     dwFlags: DIDF_RELAXIS;                    // $2
  501.     dwDataSize: Sizeof(TDIMouseState);        // $10
  502.     dwNumObjs: High(rgodfDIMouse) + 1;
  503.     rgodf: @rgodfDIMouse
  504.   );
  505.   {$EXTERNALSYM c_dfDIMouse}
  506. {$IFDEF DIRECTINPUT_VERSION_7} (* #if(DIRECTINPUT_VERSION >= 0x0700) *)
  507.   rgodfDIMouse2: array[0..10] of TDIObjectDataFormat = (
  508.     (pguid: @GUID_XAxis; dwOfs: DIMOFS_X; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE; dwFlags: 0),
  509.     (pguid: @GUID_YAxis; dwOfs: DIMOFS_Y; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE; dwFlags: 0),
  510.     (pguid: @GUID_ZAxis; dwOfs: DIMOFS_Z; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0), // DIDFT_ENUMCOLLECTION(DIDFT_ALIAS) == $80000000
  511.     (pguid: nil; dwOfs: DIMOFS_BUTTON0;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE; dwFlags: 0),
  512.     (pguid: nil; dwOfs: DIMOFS_BUTTON1;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE; dwFlags: 0),
  513.     (pguid: nil; dwOfs: DIMOFS_BUTTON2;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  514.     (pguid: nil; dwOfs: DIMOFS_BUTTON3;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  515.     (pguid: nil; dwOfs: DIMOFS_BUTTON4;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  516.     (pguid: nil; dwOfs: DIMOFS_BUTTON5;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  517.     (pguid: nil; dwOfs: DIMOFS_BUTTON6;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  518.     (pguid: nil; dwOfs: DIMOFS_BUTTON7;   dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0)
  519.   );
  520.   {$EXTERNALSYM rgodfDIMouse2}
  521.   c_dfDIMouse2: TDIDataFormat = (
  522.     dwSize     : Sizeof(c_dfDIMouse2);              // $18
  523.     dwObjSize  : Sizeof(TDIObjectDataFormat);   // $10
  524.     dwFlags    : DIDF_RELAXIS;                    // $2
  525.     dwDataSize : Sizeof(TDIMouseState2);        // $10
  526.     dwNumObjs  : High(rgodfDIMouse2) + 1;
  527.     rgodf      : @rgodfDIMouse2
  528.   );
  529.   {$EXTERNALSYM c_dfDIMouse2}
  530. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  531. const
  532.   rgodfKeyboard: array[0..255] of TDIObjectDataFormat = (
  533.     (pguid: @GUID_Key; dwOfs:   0; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (  0 shl 8); dwFlags: 0),
  534.     (pguid: @GUID_Key; dwOfs:   1; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (  1 shl 8); dwFlags: 0),
  535.     (pguid: @GUID_Key; dwOfs:   2; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (  2 shl 8); dwFlags: 0),
  536.     (pguid: @GUID_Key; dwOfs:   3; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (  3 shl 8); dwFlags: 0),
  537.     (pguid: @GUID_Key; dwOfs:   4; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (  4 shl 8); dwFlags: 0),
  538.     (pguid: @GUID_Key; dwOfs:   5; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (  5 shl 8); dwFlags: 0),
  539.     (pguid: @GUID_Key; dwOfs:   6; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (  6 shl 8); dwFlags: 0),
  540.     (pguid: @GUID_Key; dwOfs:   7; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (  7 shl 8); dwFlags: 0),
  541.     (pguid: @GUID_Key; dwOfs:   8; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (  8 shl 8); dwFlags: 0),
  542.     (pguid: @GUID_Key; dwOfs:   9; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (  9 shl 8); dwFlags: 0),
  543.     (pguid: @GUID_Key; dwOfs:  10; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 10 shl 8); dwFlags: 0),
  544.     (pguid: @GUID_Key; dwOfs:  11; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 11 shl 8); dwFlags: 0),
  545.     (pguid: @GUID_Key; dwOfs:  12; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 12 shl 8); dwFlags: 0),
  546.     (pguid: @GUID_Key; dwOfs:  13; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 13 shl 8); dwFlags: 0),
  547.     (pguid: @GUID_Key; dwOfs:  14; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 14 shl 8); dwFlags: 0),
  548.     (pguid: @GUID_Key; dwOfs:  15; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 15 shl 8); dwFlags: 0),
  549.     (pguid: @GUID_Key; dwOfs:  16; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 16 shl 8); dwFlags: 0),
  550.     (pguid: @GUID_Key; dwOfs:  17; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 17 shl 8); dwFlags: 0),
  551.     (pguid: @GUID_Key; dwOfs:  18; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 18 shl 8); dwFlags: 0),
  552.     (pguid: @GUID_Key; dwOfs:  19; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 19 shl 8); dwFlags: 0),
  553.     (pguid: @GUID_Key; dwOfs:  20; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 20 shl 8); dwFlags: 0),
  554.     (pguid: @GUID_Key; dwOfs:  21; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 21 shl 8); dwFlags: 0),
  555.     (pguid: @GUID_Key; dwOfs:  22; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 22 shl 8); dwFlags: 0),
  556.     (pguid: @GUID_Key; dwOfs:  23; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 23 shl 8); dwFlags: 0),
  557.     (pguid: @GUID_Key; dwOfs:  24; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 24 shl 8); dwFlags: 0),
  558.     (pguid: @GUID_Key; dwOfs:  25; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 25 shl 8); dwFlags: 0),
  559.     (pguid: @GUID_Key; dwOfs:  26; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 26 shl 8); dwFlags: 0),
  560.     (pguid: @GUID_Key; dwOfs:  27; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 27 shl 8); dwFlags: 0),
  561.     (pguid: @GUID_Key; dwOfs:  28; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 28 shl 8); dwFlags: 0),
  562.     (pguid: @GUID_Key; dwOfs:  29; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 29 shl 8); dwFlags: 0),
  563.     (pguid: @GUID_Key; dwOfs:  30; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 30 shl 8); dwFlags: 0),
  564.     (pguid: @GUID_Key; dwOfs:  31; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 31 shl 8); dwFlags: 0),
  565.     (pguid: @GUID_Key; dwOfs:  32; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 32 shl 8); dwFlags: 0),
  566.     (pguid: @GUID_Key; dwOfs:  33; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 33 shl 8); dwFlags: 0),
  567.     (pguid: @GUID_Key; dwOfs:  34; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 34 shl 8); dwFlags: 0),
  568.     (pguid: @GUID_Key; dwOfs:  35; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 35 shl 8); dwFlags: 0),
  569.     (pguid: @GUID_Key; dwOfs:  36; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 36 shl 8); dwFlags: 0),
  570.     (pguid: @GUID_Key; dwOfs:  37; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 37 shl 8); dwFlags: 0),
  571.     (pguid: @GUID_Key; dwOfs:  38; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 38 shl 8); dwFlags: 0),
  572.     (pguid: @GUID_Key; dwOfs:  39; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 39 shl 8); dwFlags: 0),
  573.     (pguid: @GUID_Key; dwOfs:  40; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 40 shl 8); dwFlags: 0),
  574.     (pguid: @GUID_Key; dwOfs:  41; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 41 shl 8); dwFlags: 0),
  575.     (pguid: @GUID_Key; dwOfs:  42; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 42 shl 8); dwFlags: 0),
  576.     (pguid: @GUID_Key; dwOfs:  43; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 43 shl 8); dwFlags: 0),
  577.     (pguid: @GUID_Key; dwOfs:  44; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 44 shl 8); dwFlags: 0),
  578.     (pguid: @GUID_Key; dwOfs:  45; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 45 shl 8); dwFlags: 0),
  579.     (pguid: @GUID_Key; dwOfs:  46; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 46 shl 8); dwFlags: 0),
  580.     (pguid: @GUID_Key; dwOfs:  47; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 47 shl 8); dwFlags: 0),
  581.     (pguid: @GUID_Key; dwOfs:  48; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 48 shl 8); dwFlags: 0),
  582.     (pguid: @GUID_Key; dwOfs:  49; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 49 shl 8); dwFlags: 0),
  583.     (pguid: @GUID_Key; dwOfs:  50; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 50 shl 8); dwFlags: 0),
  584.     (pguid: @GUID_Key; dwOfs:  51; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 51 shl 8); dwFlags: 0),
  585.     (pguid: @GUID_Key; dwOfs:  52; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 52 shl 8); dwFlags: 0),
  586.     (pguid: @GUID_Key; dwOfs:  53; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 53 shl 8); dwFlags: 0),
  587.     (pguid: @GUID_Key; dwOfs:  54; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 54 shl 8); dwFlags: 0),
  588.     (pguid: @GUID_Key; dwOfs:  55; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 55 shl 8); dwFlags: 0),
  589.     (pguid: @GUID_Key; dwOfs:  56; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 56 shl 8); dwFlags: 0),
  590.     (pguid: @GUID_Key; dwOfs:  57; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 57 shl 8); dwFlags: 0),
  591.     (pguid: @GUID_Key; dwOfs:  58; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 58 shl 8); dwFlags: 0),
  592.     (pguid: @GUID_Key; dwOfs:  59; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 59 shl 8); dwFlags: 0),
  593.     (pguid: @GUID_Key; dwOfs:  60; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 60 shl 8); dwFlags: 0),
  594.     (pguid: @GUID_Key; dwOfs:  61; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 61 shl 8); dwFlags: 0),
  595.     (pguid: @GUID_Key; dwOfs:  62; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 62 shl 8); dwFlags: 0),
  596.     (pguid: @GUID_Key; dwOfs:  63; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 63 shl 8); dwFlags: 0),
  597.     (pguid: @GUID_Key; dwOfs:  64; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 64 shl 8); dwFlags: 0),
  598.     (pguid: @GUID_Key; dwOfs:  65; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 65 shl 8); dwFlags: 0),
  599.     (pguid: @GUID_Key; dwOfs:  66; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 66 shl 8); dwFlags: 0),
  600.     (pguid: @GUID_Key; dwOfs:  67; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 67 shl 8); dwFlags: 0),
  601.     (pguid: @GUID_Key; dwOfs:  68; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 68 shl 8); dwFlags: 0),
  602.     (pguid: @GUID_Key; dwOfs:  69; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 69 shl 8); dwFlags: 0),
  603.     (pguid: @GUID_Key; dwOfs:  70; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 70 shl 8); dwFlags: 0),
  604.     (pguid: @GUID_Key; dwOfs:  71; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 71 shl 8); dwFlags: 0),
  605.     (pguid: @GUID_Key; dwOfs:  72; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 72 shl 8); dwFlags: 0),
  606.     (pguid: @GUID_Key; dwOfs:  73; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 73 shl 8); dwFlags: 0),
  607.     (pguid: @GUID_Key; dwOfs:  74; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 74 shl 8); dwFlags: 0),
  608.     (pguid: @GUID_Key; dwOfs:  75; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 75 shl 8); dwFlags: 0),
  609.     (pguid: @GUID_Key; dwOfs:  76; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 76 shl 8); dwFlags: 0),
  610.     (pguid: @GUID_Key; dwOfs:  77; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 77 shl 8); dwFlags: 0),
  611.     (pguid: @GUID_Key; dwOfs:  78; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 78 shl 8); dwFlags: 0),
  612.     (pguid: @GUID_Key; dwOfs:  79; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 79 shl 8); dwFlags: 0),
  613.     (pguid: @GUID_Key; dwOfs:  80; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 80 shl 8); dwFlags: 0),
  614.     (pguid: @GUID_Key; dwOfs:  81; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 81 shl 8); dwFlags: 0),
  615.     (pguid: @GUID_Key; dwOfs:  82; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 82 shl 8); dwFlags: 0),
  616.     (pguid: @GUID_Key; dwOfs:  83; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 83 shl 8); dwFlags: 0),
  617.     (pguid: @GUID_Key; dwOfs:  84; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 84 shl 8); dwFlags: 0),
  618.     (pguid: @GUID_Key; dwOfs:  85; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 85 shl 8); dwFlags: 0),
  619.     (pguid: @GUID_Key; dwOfs:  86; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 86 shl 8); dwFlags: 0),
  620.     (pguid: @GUID_Key; dwOfs:  87; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 87 shl 8); dwFlags: 0),
  621.     (pguid: @GUID_Key; dwOfs:  88; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 88 shl 8); dwFlags: 0),
  622.     (pguid: @GUID_Key; dwOfs:  89; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 89 shl 8); dwFlags: 0),
  623.     (pguid: @GUID_Key; dwOfs:  90; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 90 shl 8); dwFlags: 0),
  624.     (pguid: @GUID_Key; dwOfs:  91; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 91 shl 8); dwFlags: 0),
  625.     (pguid: @GUID_Key; dwOfs:  92; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 92 shl 8); dwFlags: 0),
  626.     (pguid: @GUID_Key; dwOfs:  93; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 93 shl 8); dwFlags: 0),
  627.     (pguid: @GUID_Key; dwOfs:  94; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 94 shl 8); dwFlags: 0),
  628.     (pguid: @GUID_Key; dwOfs:  95; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 95 shl 8); dwFlags: 0),
  629.     (pguid: @GUID_Key; dwOfs:  96; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 96 shl 8); dwFlags: 0),
  630.     (pguid: @GUID_Key; dwOfs:  97; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 97 shl 8); dwFlags: 0),
  631.     (pguid: @GUID_Key; dwOfs:  98; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 98 shl 8); dwFlags: 0),
  632.     (pguid: @GUID_Key; dwOfs:  99; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or ( 99 shl 8); dwFlags: 0),
  633.     (pguid: @GUID_Key; dwOfs: 100; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (100 shl 8); dwFlags: 0),
  634.     (pguid: @GUID_Key; dwOfs: 101; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (101 shl 8); dwFlags: 0),
  635.     (pguid: @GUID_Key; dwOfs: 102; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (102 shl 8); dwFlags: 0),
  636.     (pguid: @GUID_Key; dwOfs: 103; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (103 shl 8); dwFlags: 0),
  637.     (pguid: @GUID_Key; dwOfs: 104; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (104 shl 8); dwFlags: 0),
  638.     (pguid: @GUID_Key; dwOfs: 105; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (105 shl 8); dwFlags: 0),
  639.     (pguid: @GUID_Key; dwOfs: 106; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (106 shl 8); dwFlags: 0),
  640.     (pguid: @GUID_Key; dwOfs: 107; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (107 shl 8); dwFlags: 0),
  641.     (pguid: @GUID_Key; dwOfs: 108; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (108 shl 8); dwFlags: 0),
  642.     (pguid: @GUID_Key; dwOfs: 109; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (109 shl 8); dwFlags: 0),
  643.     (pguid: @GUID_Key; dwOfs: 110; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (110 shl 8); dwFlags: 0),
  644.     (pguid: @GUID_Key; dwOfs: 111; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (111 shl 8); dwFlags: 0),
  645.     (pguid: @GUID_Key; dwOfs: 112; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (112 shl 8); dwFlags: 0),
  646.     (pguid: @GUID_Key; dwOfs: 113; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (113 shl 8); dwFlags: 0),
  647.     (pguid: @GUID_Key; dwOfs: 114; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (114 shl 8); dwFlags: 0),
  648.     (pguid: @GUID_Key; dwOfs: 115; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (115 shl 8); dwFlags: 0),
  649.     (pguid: @GUID_Key; dwOfs: 116; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (116 shl 8); dwFlags: 0),
  650.     (pguid: @GUID_Key; dwOfs: 117; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (117 shl 8); dwFlags: 0),
  651.     (pguid: @GUID_Key; dwOfs: 118; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (118 shl 8); dwFlags: 0),
  652.     (pguid: @GUID_Key; dwOfs: 119; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (119 shl 8); dwFlags: 0),
  653.     (pguid: @GUID_Key; dwOfs: 120; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (120 shl 8); dwFlags: 0),
  654.     (pguid: @GUID_Key; dwOfs: 121; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (121 shl 8); dwFlags: 0),
  655.     (pguid: @GUID_Key; dwOfs: 122; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (122 shl 8); dwFlags: 0),
  656.     (pguid: @GUID_Key; dwOfs: 123; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (123 shl 8); dwFlags: 0),
  657.     (pguid: @GUID_Key; dwOfs: 124; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (124 shl 8); dwFlags: 0),
  658.     (pguid: @GUID_Key; dwOfs: 125; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (125 shl 8); dwFlags: 0),
  659.     (pguid: @GUID_Key; dwOfs: 126; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (126 shl 8); dwFlags: 0),
  660.     (pguid: @GUID_Key; dwOfs: 127; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (127 shl 8); dwFlags: 0),
  661.     (pguid: @GUID_Key; dwOfs: 128; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (128 shl 8); dwFlags: 0),
  662.     (pguid: @GUID_Key; dwOfs: 129; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (129 shl 8); dwFlags: 0),
  663.     (pguid: @GUID_Key; dwOfs: 130; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (130 shl 8); dwFlags: 0),
  664.     (pguid: @GUID_Key; dwOfs: 131; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (131 shl 8); dwFlags: 0),
  665.     (pguid: @GUID_Key; dwOfs: 132; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (132 shl 8); dwFlags: 0),
  666.     (pguid: @GUID_Key; dwOfs: 133; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (133 shl 8); dwFlags: 0),
  667.     (pguid: @GUID_Key; dwOfs: 134; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (134 shl 8); dwFlags: 0),
  668.     (pguid: @GUID_Key; dwOfs: 135; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (135 shl 8); dwFlags: 0),
  669.     (pguid: @GUID_Key; dwOfs: 136; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (136 shl 8); dwFlags: 0),
  670.     (pguid: @GUID_Key; dwOfs: 137; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (137 shl 8); dwFlags: 0),
  671.     (pguid: @GUID_Key; dwOfs: 138; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (138 shl 8); dwFlags: 0),
  672.     (pguid: @GUID_Key; dwOfs: 139; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (139 shl 8); dwFlags: 0),
  673.     (pguid: @GUID_Key; dwOfs: 140; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (140 shl 8); dwFlags: 0),
  674.     (pguid: @GUID_Key; dwOfs: 141; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (141 shl 8); dwFlags: 0),
  675.     (pguid: @GUID_Key; dwOfs: 142; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (142 shl 8); dwFlags: 0),
  676.     (pguid: @GUID_Key; dwOfs: 143; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (143 shl 8); dwFlags: 0),
  677.     (pguid: @GUID_Key; dwOfs: 144; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (144 shl 8); dwFlags: 0),
  678.     (pguid: @GUID_Key; dwOfs: 145; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (145 shl 8); dwFlags: 0),
  679.     (pguid: @GUID_Key; dwOfs: 146; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (146 shl 8); dwFlags: 0),
  680.     (pguid: @GUID_Key; dwOfs: 147; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (147 shl 8); dwFlags: 0),
  681.     (pguid: @GUID_Key; dwOfs: 148; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (148 shl 8); dwFlags: 0),
  682.     (pguid: @GUID_Key; dwOfs: 149; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (149 shl 8); dwFlags: 0),
  683.     (pguid: @GUID_Key; dwOfs: 150; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (150 shl 8); dwFlags: 0),
  684.     (pguid: @GUID_Key; dwOfs: 151; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (151 shl 8); dwFlags: 0),
  685.     (pguid: @GUID_Key; dwOfs: 152; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (152 shl 8); dwFlags: 0),
  686.     (pguid: @GUID_Key; dwOfs: 153; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (153 shl 8); dwFlags: 0),
  687.     (pguid: @GUID_Key; dwOfs: 154; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (154 shl 8); dwFlags: 0),
  688.     (pguid: @GUID_Key; dwOfs: 155; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (155 shl 8); dwFlags: 0),
  689.     (pguid: @GUID_Key; dwOfs: 156; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (156 shl 8); dwFlags: 0),
  690.     (pguid: @GUID_Key; dwOfs: 157; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (157 shl 8); dwFlags: 0),
  691.     (pguid: @GUID_Key; dwOfs: 158; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (158 shl 8); dwFlags: 0),
  692.     (pguid: @GUID_Key; dwOfs: 159; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (159 shl 8); dwFlags: 0),
  693.     (pguid: @GUID_Key; dwOfs: 160; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (160 shl 8); dwFlags: 0),
  694.     (pguid: @GUID_Key; dwOfs: 161; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (161 shl 8); dwFlags: 0),
  695.     (pguid: @GUID_Key; dwOfs: 162; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (162 shl 8); dwFlags: 0),
  696.     (pguid: @GUID_Key; dwOfs: 163; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (163 shl 8); dwFlags: 0),
  697.     (pguid: @GUID_Key; dwOfs: 164; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (164 shl 8); dwFlags: 0),
  698.     (pguid: @GUID_Key; dwOfs: 165; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (165 shl 8); dwFlags: 0),
  699.     (pguid: @GUID_Key; dwOfs: 166; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (166 shl 8); dwFlags: 0),
  700.     (pguid: @GUID_Key; dwOfs: 167; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (167 shl 8); dwFlags: 0),
  701.     (pguid: @GUID_Key; dwOfs: 168; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (168 shl 8); dwFlags: 0),
  702.     (pguid: @GUID_Key; dwOfs: 169; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (169 shl 8); dwFlags: 0),
  703.     (pguid: @GUID_Key; dwOfs: 170; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (170 shl 8); dwFlags: 0),
  704.     (pguid: @GUID_Key; dwOfs: 171; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (171 shl 8); dwFlags: 0),
  705.     (pguid: @GUID_Key; dwOfs: 172; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (172 shl 8); dwFlags: 0),
  706.     (pguid: @GUID_Key; dwOfs: 173; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (173 shl 8); dwFlags: 0),
  707.     (pguid: @GUID_Key; dwOfs: 174; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (174 shl 8); dwFlags: 0),
  708.     (pguid: @GUID_Key; dwOfs: 175; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (175 shl 8); dwFlags: 0),
  709.     (pguid: @GUID_Key; dwOfs: 176; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (176 shl 8); dwFlags: 0),
  710.     (pguid: @GUID_Key; dwOfs: 177; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (177 shl 8); dwFlags: 0),
  711.     (pguid: @GUID_Key; dwOfs: 178; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (178 shl 8); dwFlags: 0),
  712.     (pguid: @GUID_Key; dwOfs: 179; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (179 shl 8); dwFlags: 0),
  713.     (pguid: @GUID_Key; dwOfs: 180; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (180 shl 8); dwFlags: 0),
  714.     (pguid: @GUID_Key; dwOfs: 181; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (181 shl 8); dwFlags: 0),
  715.     (pguid: @GUID_Key; dwOfs: 182; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (182 shl 8); dwFlags: 0),
  716.     (pguid: @GUID_Key; dwOfs: 183; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (183 shl 8); dwFlags: 0),
  717.     (pguid: @GUID_Key; dwOfs: 184; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (184 shl 8); dwFlags: 0),
  718.     (pguid: @GUID_Key; dwOfs: 185; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (185 shl 8); dwFlags: 0),
  719.     (pguid: @GUID_Key; dwOfs: 186; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (186 shl 8); dwFlags: 0),
  720.     (pguid: @GUID_Key; dwOfs: 187; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (187 shl 8); dwFlags: 0),
  721.     (pguid: @GUID_Key; dwOfs: 188; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (188 shl 8); dwFlags: 0),
  722.     (pguid: @GUID_Key; dwOfs: 189; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (189 shl 8); dwFlags: 0),
  723.     (pguid: @GUID_Key; dwOfs: 190; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (190 shl 8); dwFlags: 0),
  724.     (pguid: @GUID_Key; dwOfs: 191; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (191 shl 8); dwFlags: 0),
  725.     (pguid: @GUID_Key; dwOfs: 192; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (192 shl 8); dwFlags: 0),
  726.     (pguid: @GUID_Key; dwOfs: 193; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (193 shl 8); dwFlags: 0),
  727.     (pguid: @GUID_Key; dwOfs: 194; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (194 shl 8); dwFlags: 0),
  728.     (pguid: @GUID_Key; dwOfs: 195; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (195 shl 8); dwFlags: 0),
  729.     (pguid: @GUID_Key; dwOfs: 196; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (196 shl 8); dwFlags: 0),
  730.     (pguid: @GUID_Key; dwOfs: 197; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (197 shl 8); dwFlags: 0),
  731.     (pguid: @GUID_Key; dwOfs: 198; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (198 shl 8); dwFlags: 0),
  732.     (pguid: @GUID_Key; dwOfs: 199; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (199 shl 8); dwFlags: 0),
  733.     (pguid: @GUID_Key; dwOfs: 200; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (200 shl 8); dwFlags: 0),
  734.     (pguid: @GUID_Key; dwOfs: 201; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (201 shl 8); dwFlags: 0),
  735.     (pguid: @GUID_Key; dwOfs: 202; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (202 shl 8); dwFlags: 0),
  736.     (pguid: @GUID_Key; dwOfs: 203; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (203 shl 8); dwFlags: 0),
  737.     (pguid: @GUID_Key; dwOfs: 204; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (204 shl 8); dwFlags: 0),
  738.     (pguid: @GUID_Key; dwOfs: 205; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (205 shl 8); dwFlags: 0),
  739.     (pguid: @GUID_Key; dwOfs: 206; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (206 shl 8); dwFlags: 0),
  740.     (pguid: @GUID_Key; dwOfs: 207; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (207 shl 8); dwFlags: 0),
  741.     (pguid: @GUID_Key; dwOfs: 208; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (208 shl 8); dwFlags: 0),
  742.     (pguid: @GUID_Key; dwOfs: 209; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (209 shl 8); dwFlags: 0),
  743.     (pguid: @GUID_Key; dwOfs: 210; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (210 shl 8); dwFlags: 0),
  744.     (pguid: @GUID_Key; dwOfs: 211; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (211 shl 8); dwFlags: 0),
  745.     (pguid: @GUID_Key; dwOfs: 212; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (212 shl 8); dwFlags: 0),
  746.     (pguid: @GUID_Key; dwOfs: 213; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (213 shl 8); dwFlags: 0),
  747.     (pguid: @GUID_Key; dwOfs: 214; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (214 shl 8); dwFlags: 0),
  748.     (pguid: @GUID_Key; dwOfs: 215; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (215 shl 8); dwFlags: 0),
  749.     (pguid: @GUID_Key; dwOfs: 216; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (216 shl 8); dwFlags: 0),
  750.     (pguid: @GUID_Key; dwOfs: 217; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (217 shl 8); dwFlags: 0),
  751.     (pguid: @GUID_Key; dwOfs: 218; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (218 shl 8); dwFlags: 0),
  752.     (pguid: @GUID_Key; dwOfs: 219; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (219 shl 8); dwFlags: 0),
  753.     (pguid: @GUID_Key; dwOfs: 220; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (220 shl 8); dwFlags: 0),
  754.     (pguid: @GUID_Key; dwOfs: 221; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (221 shl 8); dwFlags: 0),
  755.     (pguid: @GUID_Key; dwOfs: 222; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (222 shl 8); dwFlags: 0),
  756.     (pguid: @GUID_Key; dwOfs: 223; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (223 shl 8); dwFlags: 0),
  757.     (pguid: @GUID_Key; dwOfs: 224; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (224 shl 8); dwFlags: 0),
  758.     (pguid: @GUID_Key; dwOfs: 225; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (225 shl 8); dwFlags: 0),
  759.     (pguid: @GUID_Key; dwOfs: 226; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (226 shl 8); dwFlags: 0),
  760.     (pguid: @GUID_Key; dwOfs: 227; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (227 shl 8); dwFlags: 0),
  761.     (pguid: @GUID_Key; dwOfs: 228; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (228 shl 8); dwFlags: 0),
  762.     (pguid: @GUID_Key; dwOfs: 229; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (229 shl 8); dwFlags: 0),
  763.     (pguid: @GUID_Key; dwOfs: 230; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (230 shl 8); dwFlags: 0),
  764.     (pguid: @GUID_Key; dwOfs: 231; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (231 shl 8); dwFlags: 0),
  765.     (pguid: @GUID_Key; dwOfs: 232; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (232 shl 8); dwFlags: 0),
  766.     (pguid: @GUID_Key; dwOfs: 233; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (233 shl 8); dwFlags: 0),
  767.     (pguid: @GUID_Key; dwOfs: 234; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (234 shl 8); dwFlags: 0),
  768.     (pguid: @GUID_Key; dwOfs: 235; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (235 shl 8); dwFlags: 0),
  769.     (pguid: @GUID_Key; dwOfs: 236; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (236 shl 8); dwFlags: 0),
  770.     (pguid: @GUID_Key; dwOfs: 237; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (237 shl 8); dwFlags: 0),
  771.     (pguid: @GUID_Key; dwOfs: 238; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (238 shl 8); dwFlags: 0),
  772.     (pguid: @GUID_Key; dwOfs: 239; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (239 shl 8); dwFlags: 0),
  773.     (pguid: @GUID_Key; dwOfs: 240; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (240 shl 8); dwFlags: 0),
  774.     (pguid: @GUID_Key; dwOfs: 241; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (241 shl 8); dwFlags: 0),
  775.     (pguid: @GUID_Key; dwOfs: 242; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (242 shl 8); dwFlags: 0),
  776.     (pguid: @GUID_Key; dwOfs: 243; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (243 shl 8); dwFlags: 0),
  777.     (pguid: @GUID_Key; dwOfs: 244; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (244 shl 8); dwFlags: 0),
  778.     (pguid: @GUID_Key; dwOfs: 245; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (245 shl 8); dwFlags: 0),
  779.     (pguid: @GUID_Key; dwOfs: 246; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (246 shl 8); dwFlags: 0),
  780.     (pguid: @GUID_Key; dwOfs: 247; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (247 shl 8); dwFlags: 0),
  781.     (pguid: @GUID_Key; dwOfs: 248; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (248 shl 8); dwFlags: 0),
  782.     (pguid: @GUID_Key; dwOfs: 249; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (249 shl 8); dwFlags: 0),
  783.     (pguid: @GUID_Key; dwOfs: 250; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (250 shl 8); dwFlags: 0),
  784.     (pguid: @GUID_Key; dwOfs: 251; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (251 shl 8); dwFlags: 0),
  785.     (pguid: @GUID_Key; dwOfs: 252; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (252 shl 8); dwFlags: 0),
  786.     (pguid: @GUID_Key; dwOfs: 253; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (253 shl 8); dwFlags: 0),
  787.     (pguid: @GUID_Key; dwOfs: 254; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (254 shl 8); dwFlags: 0),
  788.     (pguid: @GUID_Key; dwOfs: 255; dwType: DIDFT_BUTTON or DIPROPRANGE_NOMIN or (255 shl 8); dwFlags: 0)
  789.   );
  790.   {$EXTERNALSYM rgodfKeyboard}
  791. const
  792.   c_dfDIKeyboard: TDIDataFormat = (
  793.     dwSize     : Sizeof(c_dfDIKeyboard);
  794.     dwObjSize  : Sizeof(TDIObjectDataFormat);
  795.     dwFlags    : DIDF_RELAXIS;
  796.     dwDataSize : 256;
  797.     dwNumObjs  : High(rgodfKeyboard) + 1;
  798.     rgodf      : @rgodfKeyboard
  799.   );
  800.   {$EXTERNALSYM c_dfDIKeyboard}
  801. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  802.   rgodfJoystick: array[0..43] of TDIObjectDataFormat = (
  803.     (pguid: @GUID_XAxis;  dwOfs: DIJOFS_X;  dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  804.     (pguid: @GUID_YAxis;  dwOfs: DIJOFS_Y;  dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  805.     (pguid: @GUID_ZAxis;  dwOfs: DIJOFS_Z;  dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  806.     (pguid: @GUID_RxAxis; dwOfs: DIJOFS_RX; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  807.     (pguid: @GUID_RyAxis; dwOfs: DIJOFS_RY; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  808.     (pguid: @GUID_RzAxis; dwOfs: DIJOFS_RZ; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  809.     // 2 Sliders
  810.     (pguid: @GUID_Slider; dwOfs: 24; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  811.     (pguid: @GUID_Slider; dwOfs: 28; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  812.     // 4 POVs (yes, really)
  813.     (pguid: @GUID_POV; dwOfs: 32; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  814.     (pguid: @GUID_POV; dwOfs: 36; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  815.     (pguid: @GUID_POV; dwOfs: 40; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  816.     (pguid: @GUID_POV; dwOfs: 44; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  817.     // Buttons
  818.     (pguid: nil; dwOfs: DIJOFS_BUTTON0;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  819.     (pguid: nil; dwOfs: DIJOFS_BUTTON1;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  820.     (pguid: nil; dwOfs: DIJOFS_BUTTON2;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  821.     (pguid: nil; dwOfs: DIJOFS_BUTTON3;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  822.     (pguid: nil; dwOfs: DIJOFS_BUTTON4;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  823.     (pguid: nil; dwOfs: DIJOFS_BUTTON5;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  824.     (pguid: nil; dwOfs: DIJOFS_BUTTON6;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  825.     (pguid: nil; dwOfs: DIJOFS_BUTTON7;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  826.     (pguid: nil; dwOfs: DIJOFS_BUTTON8;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  827.     (pguid: nil; dwOfs: DIJOFS_BUTTON9;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  828.     (pguid: nil; dwOfs: DIJOFS_BUTTON10; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  829.     (pguid: nil; dwOfs: DIJOFS_BUTTON11; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  830.     (pguid: nil; dwOfs: DIJOFS_BUTTON12; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  831.     (pguid: nil; dwOfs: DIJOFS_BUTTON13; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  832.     (pguid: nil; dwOfs: DIJOFS_BUTTON14; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  833.     (pguid: nil; dwOfs: DIJOFS_BUTTON15; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  834.     (pguid: nil; dwOfs: DIJOFS_BUTTON16; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  835.     (pguid: nil; dwOfs: DIJOFS_BUTTON17; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  836.     (pguid: nil; dwOfs: DIJOFS_BUTTON18; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  837.     (pguid: nil; dwOfs: DIJOFS_BUTTON19; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  838.     (pguid: nil; dwOfs: DIJOFS_BUTTON20; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  839.     (pguid: nil; dwOfs: DIJOFS_BUTTON21; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  840.     (pguid: nil; dwOfs: DIJOFS_BUTTON22; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  841.     (pguid: nil; dwOfs: DIJOFS_BUTTON23; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  842.     (pguid: nil; dwOfs: DIJOFS_BUTTON24; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  843.     (pguid: nil; dwOfs: DIJOFS_BUTTON25; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  844.     (pguid: nil; dwOfs: DIJOFS_BUTTON26; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  845.     (pguid: nil; dwOfs: DIJOFS_BUTTON27; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  846.     (pguid: nil; dwOfs: DIJOFS_BUTTON28; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  847.     (pguid: nil; dwOfs: DIJOFS_BUTTON29; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  848.     (pguid: nil; dwOfs: DIJOFS_BUTTON30; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  849.     (pguid: nil; dwOfs: DIJOFS_BUTTON31; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0)
  850.   );
  851.   {$EXTERNALSYM rgodfJoystick}
  852.   c_dfDIJoystick: TDIDataFormat = (
  853.     dwSize     : Sizeof(c_dfDIJoystick);
  854.     dwObjSize  : Sizeof(TDIObjectDataFormat);  // $10
  855.     dwFlags    : DIDF_ABSAXIS;
  856.     dwDataSize : SizeOf(TDIJoyState);         // $10
  857.     dwNumObjs  : High(rgodfJoystick) + 1;  // $2C
  858.     rgodf      : @rgodfJoystick
  859.   );
  860.   {$EXTERNALSYM c_dfDIJoystick}
  861.   rgodfJoystick2: array[0..163] of TDIObjectDataFormat = (
  862.     (pguid: @GUID_XAxis;  dwOfs: DIJOFS_X;  dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  863.     (pguid: @GUID_YAxis;  dwOfs: DIJOFS_Y;  dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  864.     (pguid: @GUID_ZAxis;  dwOfs: DIJOFS_Z;  dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  865.     (pguid: @GUID_RxAxis; dwOfs: DIJOFS_RX; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  866.     (pguid: @GUID_RyAxis; dwOfs: DIJOFS_RY; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  867.     (pguid: @GUID_RzAxis; dwOfs: DIJOFS_RZ; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  868.     // 2 Sliders
  869.     (pguid: @GUID_Slider; dwOfs: 24; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  870.     (pguid: @GUID_Slider; dwOfs: 28; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTPOSITION),
  871.     // 4 POVs (yes, really)
  872.     (pguid: @GUID_POV; dwOfs: 32; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  873.     (pguid: @GUID_POV; dwOfs: 36; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  874.     (pguid: @GUID_POV; dwOfs: 40; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  875.     (pguid: @GUID_POV; dwOfs: 44; dwType: DIDFT_POV or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  876.     // Buttons
  877.     (pguid: nil; dwOfs: DIJOFS_BUTTON0;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  878.     (pguid: nil; dwOfs: DIJOFS_BUTTON1;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  879.     (pguid: nil; dwOfs: DIJOFS_BUTTON2;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  880.     (pguid: nil; dwOfs: DIJOFS_BUTTON3;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  881.     (pguid: nil; dwOfs: DIJOFS_BUTTON4;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  882.     (pguid: nil; dwOfs: DIJOFS_BUTTON5;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  883.     (pguid: nil; dwOfs: DIJOFS_BUTTON6;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  884.     (pguid: nil; dwOfs: DIJOFS_BUTTON7;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  885.     (pguid: nil; dwOfs: DIJOFS_BUTTON8;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  886.     (pguid: nil; dwOfs: DIJOFS_BUTTON9;  dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  887.     (pguid: nil; dwOfs: DIJOFS_BUTTON10; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  888.     (pguid: nil; dwOfs: DIJOFS_BUTTON11; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  889.     (pguid: nil; dwOfs: DIJOFS_BUTTON12; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  890.     (pguid: nil; dwOfs: DIJOFS_BUTTON13; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  891.     (pguid: nil; dwOfs: DIJOFS_BUTTON14; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  892.     (pguid: nil; dwOfs: DIJOFS_BUTTON15; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  893.     (pguid: nil; dwOfs: DIJOFS_BUTTON16; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  894.     (pguid: nil; dwOfs: DIJOFS_BUTTON17; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  895.     (pguid: nil; dwOfs: DIJOFS_BUTTON18; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  896.     (pguid: nil; dwOfs: DIJOFS_BUTTON19; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  897.     (pguid: nil; dwOfs: DIJOFS_BUTTON20; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  898.     (pguid: nil; dwOfs: DIJOFS_BUTTON21; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  899.     (pguid: nil; dwOfs: DIJOFS_BUTTON22; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  900.     (pguid: nil; dwOfs: DIJOFS_BUTTON23; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  901.     (pguid: nil; dwOfs: DIJOFS_BUTTON24; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  902.     (pguid: nil; dwOfs: DIJOFS_BUTTON25; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  903.     (pguid: nil; dwOfs: DIJOFS_BUTTON26; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  904.     (pguid: nil; dwOfs: DIJOFS_BUTTON27; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  905.     (pguid: nil; dwOfs: DIJOFS_BUTTON28; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  906.     (pguid: nil; dwOfs: DIJOFS_BUTTON29; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  907.     (pguid: nil; dwOfs: DIJOFS_BUTTON30; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  908.     (pguid: nil; dwOfs: DIJOFS_BUTTON31; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: 0),
  909.     (pguid: nil; dwOfs:  80; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  910.     (pguid: nil; dwOfs:  81; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  911.     (pguid: nil; dwOfs:  82; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  912.     (pguid: nil; dwOfs:  83; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  913.     (pguid: nil; dwOfs:  84; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  914.     (pguid: nil; dwOfs:  85; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  915.     (pguid: nil; dwOfs:  86; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  916.     (pguid: nil; dwOfs:  87; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  917.     (pguid: nil; dwOfs:  88; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  918.     (pguid: nil; dwOfs:  89; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  919.     (pguid: nil; dwOfs:  90; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  920.     (pguid: nil; dwOfs:  91; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  921.     (pguid: nil; dwOfs:  92; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  922.     (pguid: nil; dwOfs:  93; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  923.     (pguid: nil; dwOfs:  94; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  924.     (pguid: nil; dwOfs:  95; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  925.     (pguid: nil; dwOfs:  96; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  926.     (pguid: nil; dwOfs:  97; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  927.     (pguid: nil; dwOfs:  98; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  928.     (pguid: nil; dwOfs:  99; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  929.     (pguid: nil; dwOfs: 100; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  930.     (pguid: nil; dwOfs: 101; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  931.     (pguid: nil; dwOfs: 102; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  932.     (pguid: nil; dwOfs: 103; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  933.     (pguid: nil; dwOfs: 104; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  934.     (pguid: nil; dwOfs: 105; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  935.     (pguid: nil; dwOfs: 106; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  936.     (pguid: nil; dwOfs: 107; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  937.     (pguid: nil; dwOfs: 108; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  938.     (pguid: nil; dwOfs: 109; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  939.     (pguid: nil; dwOfs: 110; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  940.     (pguid: nil; dwOfs: 111; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  941.     (pguid: nil; dwOfs: 112; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  942.     (pguid: nil; dwOfs: 113; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  943.     (pguid: nil; dwOfs: 114; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  944.     (pguid: nil; dwOfs: 115; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  945.     (pguid: nil; dwOfs: 116; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  946.     (pguid: nil; dwOfs: 117; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  947.     (pguid: nil; dwOfs: 118; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  948.     (pguid: nil; dwOfs: 119; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  949.     (pguid: nil; dwOfs: 120; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  950.     (pguid: nil; dwOfs: 121; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  951.     (pguid: nil; dwOfs: 122; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  952.     (pguid: nil; dwOfs: 123; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  953.     (pguid: nil; dwOfs: 124; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  954.     (pguid: nil; dwOfs: 125; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  955.     (pguid: nil; dwOfs: 126; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  956.     (pguid: nil; dwOfs: 127; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  957.     (pguid: nil; dwOfs: 128; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  958.     (pguid: nil; dwOfs: 129; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  959.     (pguid: nil; dwOfs: 130; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  960.     (pguid: nil; dwOfs: 131; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  961.     (pguid: nil; dwOfs: 132; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  962.     (pguid: nil; dwOfs: 133; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  963.     (pguid: nil; dwOfs: 134; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  964.     (pguid: nil; dwOfs: 135; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  965.     (pguid: nil; dwOfs: 136; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  966.     (pguid: nil; dwOfs: 137; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  967.     (pguid: nil; dwOfs: 138; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  968.     (pguid: nil; dwOfs: 139; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  969.     (pguid: nil; dwOfs: 140; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  970.     (pguid: nil; dwOfs: 141; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  971.     (pguid: nil; dwOfs: 142; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  972.     (pguid: nil; dwOfs: 143; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  973.     (pguid: nil; dwOfs: 144; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  974.     (pguid: nil; dwOfs: 145; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  975.     (pguid: nil; dwOfs: 146; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  976.     (pguid: nil; dwOfs: 147; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  977.     (pguid: nil; dwOfs: 148; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  978.     (pguid: nil; dwOfs: 149; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  979.     (pguid: nil; dwOfs: 150; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  980.     (pguid: nil; dwOfs: 151; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  981.     (pguid: nil; dwOfs: 152; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  982.     (pguid: nil; dwOfs: 153; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  983.     (pguid: nil; dwOfs: 154; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  984.     (pguid: nil; dwOfs: 155; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  985.     (pguid: nil; dwOfs: 156; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  986.     (pguid: nil; dwOfs: 157; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  987.     (pguid: nil; dwOfs: 158; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  988.     (pguid: nil; dwOfs: 159; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  989.     (pguid: nil; dwOfs: 160; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  990.     (pguid: nil; dwOfs: 161; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  991.     (pguid: nil; dwOfs: 162; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  992.     (pguid: nil; dwOfs: 163; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  993.     (pguid: nil; dwOfs: 164; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  994.     (pguid: nil; dwOfs: 165; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  995.     (pguid: nil; dwOfs: 166; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  996.     (pguid: nil; dwOfs: 167; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  997.     (pguid: nil; dwOfs: 168; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  998.     (pguid: nil; dwOfs: 169; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  999.     (pguid: nil; dwOfs: 170; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  1000.     (pguid: nil; dwOfs: 171; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  1001.     (pguid: nil; dwOfs: 172; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  1002.     (pguid: nil; dwOfs: 173; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  1003.     (pguid: nil; dwOfs: 174; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  1004.     (pguid: nil; dwOfs: 175; dwType: DIDFT_BUTTON or DIDFT_ANYINSTANCE or $80000000; dwFlags: $0),
  1005.     (pguid: @GUID_XAxis;  dwOfs: 176; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  1006.     (pguid: @GUID_YAxis;  dwOfs: 180; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  1007.     (pguid: @GUID_ZAxis;  dwOfs: 184; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  1008.     (pguid: @GUID_RxAxis; dwOfs: 188; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  1009.     (pguid: @GUID_RyAxis; dwOfs: 192; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  1010.     (pguid: @GUID_RzAxis; dwOfs: 196; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  1011.     (pguid: @GUID_Slider; dwOfs:  24; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  1012.     (pguid: @GUID_Slider; dwOfs:  28; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTVELOCITY),
  1013.     (pguid: @GUID_XAxis;  dwOfs: 208; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  1014.     (pguid: @GUID_YAxis;  dwOfs: 212; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  1015.     (pguid: @GUID_ZAxis;  dwOfs: 216; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  1016.     (pguid: @GUID_RxAxis; dwOfs: 220; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  1017.     (pguid: @GUID_RyAxis; dwOfs: 224; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  1018.     (pguid: @GUID_RzAxis; dwOfs: 228; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  1019.     (pguid: @GUID_Slider; dwOfs:  24; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  1020.     (pguid: @GUID_Slider; dwOfs:  28; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTACCEL),
  1021.     (pguid: @GUID_XAxis;  dwOfs: 240; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  1022.     (pguid: @GUID_YAxis;  dwOfs: 244; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  1023.     (pguid: @GUID_ZAxis;  dwOfs: 248; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  1024.     (pguid: @GUID_RxAxis; dwOfs: 252; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  1025.     (pguid: @GUID_RyAxis; dwOfs: 256; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  1026.     (pguid: @GUID_RzAxis; dwOfs: 260; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  1027.     (pguid: @GUID_Slider; dwOfs:  24; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE),
  1028.     (pguid: @GUID_Slider; dwOfs:  28; dwType: DIDFT_AXIS or DIDFT_ANYINSTANCE or $80000000; dwFlags: DIDOI_ASPECTFORCE)
  1029.   );
  1030.   {$EXTERNALSYM rgodfJoystick2}
  1031.   c_dfDIJoystick2: TDIDataFormat = (
  1032.     dwSize     : Sizeof(c_dfDIJoystick2);
  1033.     dwObjSize  : Sizeof(TDIObjectDataFormat);
  1034.     dwFlags    : DIDF_ABSAXIS;
  1035.     dwDataSize : SizeOf(TDIJoyState2);
  1036.     dwNumObjs  : High(rgodfJoystick2) + 1;
  1037.     rgodf      : @rgodfJoystick2
  1038.   );
  1039.   {$EXTERNALSYM c_dfDIJoystick2}
  1040. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  1041. (****************************************************************************
  1042.  *
  1043.  *  IDirectInput
  1044.  *
  1045.  ****************************************************************************)
  1046. const
  1047.   DIENUM_STOP             = BOOL(0);
  1048.   {$EXTERNALSYM DIENUM_STOP}
  1049.   DIENUM_CONTINUE         = BOOL(1);
  1050.   {$EXTERNALSYM DIENUM_CONTINUE}
  1051. type
  1052.   TDIEnumDevicesCallbackA = function (var lpddi: TDIDeviceInstanceA; pvRef: Pointer): BOOL; stdcall;
  1053.   {$EXTERNALSYM TDIEnumDevicesCallbackA}
  1054.   TDIEnumDevicesCallbackW = function (var lpddi: TDIDeviceInstanceW; pvRef: Pointer): BOOL; stdcall;
  1055.   {$EXTERNALSYM TDIEnumDevicesCallbackW}
  1056.   TDIEnumDevicesCallback = TDIEnumDevicesCallbackA;
  1057.   {$EXTERNALSYM TDIEnumDevicesCallback}
  1058.   TDIConfigureDevicesCallback = function (lpDDSTarget: IUnknown; pvRef: Pointer): BOOL; stdcall;
  1059. const
  1060.   DIEDFL_ALLDEVICES       = $00000000;
  1061.   {$EXTERNALSYM DIEDFL_ALLDEVICES}
  1062.   DIEDFL_ATTACHEDONLY     = $00000001;
  1063.   {$EXTERNALSYM DIEDFL_ATTACHEDONLY}
  1064. {$IFDEF DIRECTINPUT_VERSION_5} (* #if(DIRECTINPUT_VERSION >= 0x0500) *)
  1065.   DIEDFL_FORCEFEEDBACK    = $00000100;
  1066.   {$EXTERNALSYM DIEDFL_FORCEFEEDBACK}
  1067. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0500 *)
  1068. {$IFDEF DIRECTINPUT_VERSION_5b} (* #if(DIRECTINPUT_VERSION >= 0x050a) *)
  1069.   DIEDFL_INCLUDEALIASES   = $00010000;
  1070.   {$EXTERNALSYM DIEDFL_INCLUDEALIASES}
  1071.   DIEDFL_INCLUDEPHANTOMS  = $00020000;
  1072.   {$EXTERNALSYM DIEDFL_INCLUDEPHANTOMS}
  1073. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x050a *)
  1074. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  1075.   DIEDFL_INCLUDEHIDDEN    = $00040000;
  1076.   {$EXTERNALSYM DIEDFL_INCLUDEHIDDEN}
  1077. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  1078. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  1079. type
  1080.   TDIEnumDevicesBySemanticsCallbackA = function (var lpddi: TDIDeviceInstanceA; lpdid: IDirectInputDevice8A; dwFlags, dwRemaining: DWORD; pvRef: Pointer): BOOL; stdcall;
  1081.   {$EXTERNALSYM TDIEnumDevicesBySemanticsCallbackA}
  1082.   TDIEnumDevicesBySemanticsCallbackW = function (var lpddi: TDIDeviceInstanceW; lpdid: IDirectInputDevice8W; dwFlags, dwRemaining: DWORD; pvRef: Pointer): BOOL; stdcall;
  1083.   {$EXTERNALSYM TDIEnumDevicesBySemanticsCallbackW}
  1084.   TDIEnumDevicesBySemanticsCallback = TDIEnumDevicesBySemanticsCallbackA;
  1085.   {$EXTERNALSYM TDIEnumDevicesBySemanticsCallback}
  1086. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  1087. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  1088. const
  1089.   DIEDBS_MAPPEDPRI1         = $00000001;
  1090.   {$EXTERNALSYM DIEDBS_MAPPEDPRI1}
  1091.   DIEDBS_MAPPEDPRI2         = $00000002;
  1092.   {$EXTERNALSYM DIEDBS_MAPPEDPRI2}
  1093.   DIEDBS_RECENTDEVICE       = $00000010;
  1094.   {$EXTERNALSYM DIEDBS_RECENTDEVICE}
  1095.   DIEDBS_NEWDEVICE          = $00000020;
  1096.   {$EXTERNALSYM DIEDBS_NEWDEVICE}
  1097.   DIEDBSFL_ATTACHEDONLY       = $00000000;
  1098.   {$EXTERNALSYM DIEDBSFL_ATTACHEDONLY}
  1099.   DIEDBSFL_THISUSER           = $00000010;
  1100.   {$EXTERNALSYM DIEDBSFL_THISUSER}
  1101.   DIEDBSFL_FORCEFEEDBACK      = DIEDFL_FORCEFEEDBACK;
  1102.   {$EXTERNALSYM DIEDBSFL_FORCEFEEDBACK}
  1103.   DIEDBSFL_AVAILABLEDEVICES   = $00001000;
  1104.   {$EXTERNALSYM DIEDBSFL_AVAILABLEDEVICES}
  1105.   DIEDBSFL_MULTIMICEKEYBOARDS = $00002000;
  1106.   {$EXTERNALSYM DIEDBSFL_MULTIMICEKEYBOARDS}
  1107.   DIEDBSFL_NONGAMINGDEVICES   = $00004000;
  1108.   {$EXTERNALSYM DIEDBSFL_NONGAMINGDEVICES}
  1109.   DIEDBSFL_VALID              = $00007110;
  1110.   {$EXTERNALSYM DIEDBSFL_VALID}
  1111. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  1112. type
  1113.   {$EXTERNALSYM IDirectInputA}
  1114.   IDirectInputA = interface(IUnknown)
  1115.     [SID_IDirectInputA]
  1116.     (*** IDirectInputA methods ***)
  1117.     function CreateDevice(const rguid: TGUID; out lplpDirectInputDevice: IDirectInputDeviceA; pUnkOuter: IUnknown): HResult; stdcall;
  1118.     function EnumDevices(dwDevType: DWORD; lpCallback: TDIEnumDevicesCallbackA; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  1119.     function GetDeviceStatus(const rguidInstance: TGUID): HResult; stdcall;
  1120.     function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD): HResult; stdcall;
  1121.     function Initialize(hinst: THandle; dwVersion: DWORD): HResult; stdcall;
  1122.   end;
  1123.   {$EXTERNALSYM IDirectInputW}
  1124.   IDirectInputW = interface(IUnknown)
  1125.     [SID_IDirectInputW]
  1126.     (*** IDirectInputW methods ***)
  1127.     function CreateDevice(const rguid: TGUID; out lplpDirectInputDevice: IDirectInputDeviceW; pUnkOuter: IUnknown): HResult; stdcall;
  1128.     function EnumDevices(dwDevType: DWORD; lpCallback: TDIEnumDevicesCallbackW; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  1129.     function GetDeviceStatus(const rguidInstance: TGUID): HResult; stdcall;
  1130.     function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD): HResult; stdcall;
  1131.     function Initialize(hinst: THandle; dwVersion: DWORD): HResult; stdcall;
  1132.   end;
  1133.   {$EXTERNALSYM IDirectInput}
  1134.   IDirectInput = IDirectInputA;
  1135. type
  1136.   IID_IDirectInput = IDirectInput;
  1137.   {$EXTERNALSYM IID_IDirectInput}
  1138. type
  1139.   {$EXTERNALSYM IDirectInput2A}
  1140.   IDirectInput2A = interface(IDirectInputA)
  1141.     [SID_IDirectInput2A]
  1142.     (*** IDirectInput2A methods ***)
  1143.     function FindDevice(const rguidClass: TGUID; ptszName: PAnsiChar; out pguidInstance: TGUID): HResult; stdcall;
  1144.   end;
  1145.   {$EXTERNALSYM IDirectInput2W}
  1146.   IDirectInput2W = interface(IDirectInputW)
  1147.     [SID_IDirectInput2W]
  1148.     (*** IDirectInput2W methods ***)
  1149.     function FindDevice(const rguidClass: TGUID; ptszName: PWideChar; out pguidInstance: TGUID): HResult; stdcall;
  1150.   end;
  1151.   {$EXTERNALSYM IDirectInput2}
  1152.   IDirectInput2 = IDirectInput2A;
  1153. type
  1154.   IID_IDirectInput2 = IDirectInput2;
  1155.   {$EXTERNALSYM IID_IDirectInput2}
  1156. type
  1157.   {$EXTERNALSYM IDirectInput7A}
  1158.   IDirectInput7A = interface(IDirectInput2A)
  1159.     [SID_IDirectInput7A]
  1160.     (*** IDirectInput7A methods ***)
  1161.     function CreateDeviceEx(const rguid, riid: TGUID; out pvOut: Pointer; pUnkOuter: IUnknown) : HResult; stdcall;
  1162.   end;
  1163.   {$EXTERNALSYM IDirectInput7W}
  1164.   IDirectInput7W = interface(IDirectInput2W)
  1165.     [SID_IDirectInput7W]
  1166.     (*** IDirectInput7W methods ***)
  1167.     function CreateDeviceEx(const rguid, riid: TGUID; out pvOut: Pointer; pUnkOuter: IUnknown) : HResult; stdcall;
  1168.   end;
  1169.   {$EXTERNALSYM IDirectInput7}
  1170.   IDirectInput7 = IDirectInput7A;
  1171. type
  1172.   IID_IDirectInput7 = IDirectInput7;
  1173.   {$EXTERNALSYM IID_IDirectInput7}
  1174. {$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION >= 0x0800) *)
  1175. type
  1176.   {$EXTERNALSYM IDirectInput8A}
  1177.   IDirectInput8A = interface(IUnknown)
  1178.     [SID_IDirectInput8A]
  1179.     (*** IDirectInput8A methods ***)
  1180.     function CreateDevice(const rguid: TGUID; out lplpDirectInputDevice: IDirectInputDevice8A; pUnkOuter: IUnknown): HResult; stdcall;
  1181.     function EnumDevices(dwDevType: DWORD; lpCallback: TDIEnumDevicesCallbackA; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  1182.     function GetDeviceStatus(const rguidInstance: TGUID): HResult; stdcall;
  1183.     function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD): HResult; stdcall;
  1184.     function Initialize(hinst: THandle; dwVersion: DWORD): HResult; stdcall;
  1185.     function FindDevice(const rguidClass: TGUID; ptszName: PAnsiChar; out pguidInstance: TGUID): HResult; stdcall;
  1186.     function EnumDevicesBySemantics(ptszUserName: PAnsiChar; lpdiActionFormat: TDIActionFormatA; lpCallback: TDIEnumDevicesBySemanticsCallbackA; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  1187.     function ConfigureDevices(lpdiCallback: TDIConfigureDevicesCallback; lpdiCDParams: TDIConfigureDevicesParamsA; dwFlags: DWORD; pvRefData: Pointer): HResult; stdcall;
  1188.   end;
  1189.   {$EXTERNALSYM IDirectInput8W}
  1190.   IDirectInput8W = interface(IUnknown)
  1191.     [SID_IDirectInput8W]
  1192.     (*** IDirectInput8W methods ***)
  1193.     function CreateDevice(const rguid: TGUID; out lplpDirectInputDevice: IDirectInputDevice8W; pUnkOuter: IUnknown): HResult; stdcall;
  1194.     function EnumDevices(dwDevType: DWORD; lpCallback: TDIEnumDevicesCallbackW; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  1195.     function GetDeviceStatus(const rguidInstance: TGUID): HResult; stdcall;
  1196.     function RunControlPanel(hwndOwner: HWND; dwFlags: DWORD): HResult; stdcall;
  1197.     function Initialize(hinst: THandle; dwVersion: DWORD): HResult; stdcall;
  1198.     function FindDevice(const rguidClass: TGUID; ptszName: PWideChar; out pguidInstance: TGUID): HResult; stdcall;
  1199.     function EnumDevicesBySemantics(ptszUserName: PWideChar; lpdiActionFormat: TDIActionFormatW; lpCallback: TDIEnumDevicesBySemanticsCallbackW; pvRef: Pointer; dwFlags: DWORD): HResult; stdcall;
  1200.     function ConfigureDevices(lpdiCallback: TDIConfigureDevicesCallback; lpdiCDParams: TDIConfigureDevicesParamsW; dwFlags: DWORD; pvRefData: Pointer): HResult; stdcall;
  1201.   end;
  1202.   {$EXTERNALSYM IDirectInput8}
  1203.   IDirectInput8 = IDirectInput8A;
  1204. type
  1205.   IID_IDirectInput8 = IDirectInput8;
  1206.   {$EXTERNALSYM IID_IDirectInput8}
  1207. {$ENDIF} (* DIRECTINPUT_VERSION >= 0x0800 *)
  1208. const
  1209.   DirectInputDll = 'dinput.dll';
  1210.   DirectInput8Dll = 'dinput8.dll';
  1211. function DirectInputLoaded: Boolean;
  1212. function UnLoadDirectInput: Boolean;
  1213. function LoadDirectInput: Boolean;
  1214. {$IFDEF DIRECTINPUT_DYNAMIC_LINK}
  1215. //{$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION > 0x0700) *)
  1216. var
  1217.   DirectInput8Create: function(hinst: THandle; dwVersion: Cardinal; const riidltf: TGUID; out ppvOut; punkOuter: IUnknown): HResult; stdcall;
  1218.   {$EXTERNALSYM DirectInput8Create}
  1219. //{$ELSE}
  1220.   DirectInputCreateA: function(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInputA; punkOuter: IUnknown): HResult; stdcall;
  1221.   {$EXTERNALSYM DirectInputCreateA}
  1222.   DirectInputCreateW: function(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInputW; punkOuter: IUnknown): HResult; stdcall;
  1223.   {$EXTERNALSYM DirectInputCreateW}
  1224.   DirectInputCreate: function(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInput; punkOuter: IUnknown): HResult; stdcall;
  1225.   {$EXTERNALSYM DirectInputCreate}
  1226.   DirectInputCreateEx: function(hinst : THandle; dwVersion: DWORD; const riidltf: TGUID; out ppvOut; punkOuter: IUnknown): HResult; stdcall;
  1227.   {$EXTERNALSYM DirectInputCreateEx}
  1228. //{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  1229. {$ELSE}
  1230. //{$IFDEF DIRECTINPUT_VERSION_8} (* #if(DIRECTINPUT_VERSION > 0x0700) *)
  1231. function DirectInput8Create(hinst: THandle; dwVersion: DWORD; const riidltf: TGUID; out ppvOut{: Pointer}; punkOuter: IUnknown): HResult; stdcall; external DirectInput8Dll;
  1232. {$EXTERNALSYM DirectInput8Create}
  1233. //{$ELSE}
  1234. function DirectInputCreateA(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInputA; punkOuter: IUnknown): HResult; stdcall; external DirectInputDll name 'DirectInputCreateA';
  1235. {$EXTERNALSYM DirectInputCreateA}
  1236. function DirectInputCreateW(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInputW; punkOuter: IUnknown): HResult; stdcall; external DirectInputDll name 'DirectInputCreateW';
  1237. {$EXTERNALSYM DirectInputCreateW}
  1238. function DirectInputCreate(hinst: THandle; dwVersion: DWORD; out ppDI: IDirectInput; punkOuter: IUnknown): HResult; stdcall; external DirectInputDll name 'DirectInputCreateA';
  1239. {$EXTERNALSYM DirectInputCreate}
  1240. function DirectInputCreateEx(hinst: THandle; dwVersion: DWORD; const riidltf: TGUID; out ppvOut{: Pointer}; punkOuter: IUnknown): HResult; stdcall; external DirectInputDll;
  1241. {$EXTERNALSYM DirectInputCreateEx}
  1242. //{$ENDIF} (* DIRECTINPUT_VERSION >= 0x0700 *)
  1243. {$ENDIF}
  1244. (****************************************************************************
  1245.  *
  1246.  *  Return Codes
  1247.  *
  1248.  ****************************************************************************)
  1249. const
  1250. (*
  1251.  *  The operation completed successfully.
  1252.  *)
  1253.   DI_OK                           = S_OK;
  1254.   {$EXTERNALSYM DI_OK}
  1255. (*
  1256.  *  The device exists but is not currently attached.
  1257.  *)
  1258.   DI_NOTATTACHED                  = S_FALSE;
  1259.   {$EXTERNALSYM DI_NOTATTACHED}
  1260. (*
  1261.  *  The device buffer overflowed.  Some input was lost.
  1262.  *)
  1263.   DI_BUFFEROVERFLOW               = S_FALSE;
  1264.   {$EXTERNALSYM DI_BUFFEROVERFLOW}
  1265. (*
  1266.  *  The change in device properties had no effect.
  1267.  *)
  1268.   DI_PROPNOEFFECT                 = S_FALSE;
  1269.   {$EXTERNALSYM DI_PROPNOEFFECT}
  1270. (*
  1271.  *  The operation had no effect.
  1272.  *)
  1273.   DI_NOEFFECT                     = S_FALSE;
  1274.   {$EXTERNALSYM DI_NOEFFECT}
  1275. (*
  1276.  *  The device is a polled device.  As a result, device buffering
  1277.  *  will not collect any data and event notifications will not be
  1278.  *  signalled until GetDeviceState is called.
  1279.  *)
  1280.   DI_POLLEDDEVICE                 = HRESULT($00000002);
  1281.   {$EXTERNALSYM DI_POLLEDDEVICE}
  1282. (*
  1283.  *  The parameters of the effect were successfully updated by
  1284.  *  IDirectInputEffect::SetParameters, but the effect was not
  1285.  *  downloaded because the device is not exclusively acquired
  1286.  *  or because the DIEP_NODOWNLOAD flag was passed.
  1287.  *)
  1288.   DI_DOWNLOADSKIPPED              = HRESULT($00000003);
  1289.   {$EXTERNALSYM DI_DOWNLOADSKIPPED}
  1290. (*
  1291.  *  The parameters of the effect were successfully updated by
  1292.  *  IDirectInputEffect::SetParameters, but in order to change
  1293.  *  the parameters, the effect needed to be restarted.
  1294.  *)
  1295.   DI_EFFECTRESTARTED              = HRESULT($00000004);
  1296.   {$EXTERNALSYM DI_EFFECTRESTARTED}
  1297. (*
  1298.  *  The parameters of the effect were successfully updated by
  1299.  *  IDirectInputEffect::SetParameters, but some of them were
  1300.  *  beyond the capabilities of the device and were truncated.
  1301.  *)
  1302.   DI_TRUNCATED                    = HRESULT($00000008);
  1303.   {$EXTERNALSYM DI_TRUNCATED}
  1304. (*
  1305.  *  The settings have been successfully applied but could not be
  1306.  *  persisted.
  1307.  *)
  1308.   DI_SETTINGSNOTSAVED             = HRESULT($0000000B);
  1309.   {$EXTERNALSYM DI_SETTINGSNOTSAVED}
  1310. (*
  1311.  *  Equal to DI_EFFECTRESTARTED | DI_TRUNCATED.
  1312.  *)
  1313.   DI_TRUNCATEDANDRESTARTED        = HRESULT($0000000C);
  1314.   {$EXTERNALSYM DI_TRUNCATEDANDRESTARTED}
  1315. (*
  1316.  *  A SUCCESS code indicating that settings cannot be modified.
  1317.  *)
  1318.   DI_WRITEPROTECT                 = HRESULT($00000013);
  1319.   {$EXTERNALSYM DI_WRITEPROTECT}
  1320.   SEVERITY_ERROR_FACILITY_WIN32   =
  1321.       HResult(SEVERITY_ERROR shl 31) or HResult(FACILITY_WIN32 shl 16);
  1322.   {$EXTERNALSYM SEVERITY_ERROR_FACILITY_WIN32}
  1323. (*
  1324.  *  The application requires a newer version of DirectInput.
  1325.  *)
  1326.   DIERR_OLDDIRECTINPUTVERSION     = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  1327.                                             ERROR_OLD_WIN_VERSION);
  1328.   {$EXTERNALSYM DIERR_OLDDIRECTINPUTVERSION}
  1329. (*
  1330.  *  The application was written for an unsupported prerelease version
  1331.  *  of DirectInput.
  1332.  *)
  1333.   DIERR_BETADIRECTINPUTVERSION    = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  1334.                                             ERROR_RMODE_APP);
  1335.   {$EXTERNALSYM DIERR_BETADIRECTINPUTVERSION}
  1336. (*
  1337.  *  The object could not be created due to an incompatible driver version
  1338.  *  or mismatched or incomplete driver components.
  1339.  *)
  1340.   DIERR_BADDRIVERVER              = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  1341.                                             ERROR_BAD_DRIVER_LEVEL);
  1342.   {$EXTERNALSYM DIERR_BADDRIVERVER}
  1343. (*
  1344.  * The device or device instance or effect is not registered with DirectInput.
  1345.  *)
  1346.   DIERR_DEVICENOTREG              = REGDB_E_CLASSNOTREG;
  1347.   {$EXTERNALSYM DIERR_DEVICENOTREG}
  1348. (*
  1349.  * The requested object does not exist.
  1350.  *)
  1351.   DIERR_NOTFOUND                  = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  1352.                                             ERROR_FILE_NOT_FOUND);
  1353.   {$EXTERNALSYM DIERR_NOTFOUND}
  1354. (*
  1355.  * The requested object does not exist.
  1356.  *)
  1357.   DIERR_OBJECTNOTFOUND            = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  1358.                                             ERROR_FILE_NOT_FOUND);
  1359.   {$EXTERNALSYM DIERR_OBJECTNOTFOUND}
  1360. (*
  1361.  * An invalid parameter was passed to the returning function,
  1362.  * or the object was not in a state that admitted the function
  1363.  * to be called.
  1364.  *)
  1365.   DIERR_INVALIDPARAM              = E_INVALIDARG;
  1366.   {$EXTERNALSYM DIERR_INVALIDPARAM}
  1367. (*
  1368.  * The specified interface is not supported by the object
  1369.  *)
  1370.   DIERR_NOINTERFACE               = E_NOINTERFACE;
  1371.   {$EXTERNALSYM DIERR_NOINTERFACE}
  1372. (*
  1373.  * An undetermined error occured inside the DInput subsystem
  1374.  *)
  1375.   DIERR_GENERIC                   = E_FAIL;
  1376.   {$EXTERNALSYM DIERR_GENERIC}
  1377. (*
  1378.  * The DInput subsystem couldn't allocate sufficient memory to complete the
  1379.  * caller's request.
  1380.  *)
  1381.   DIERR_OUTOFMEMORY               = E_OUTOFMEMORY;
  1382.   {$EXTERNALSYM DIERR_OUTOFMEMORY}
  1383. (*
  1384.  * The function called is not supported at this time
  1385.  *)
  1386.   DIERR_UNSUPPORTED               = E_NOTIMPL;
  1387.   {$EXTERNALSYM DIERR_UNSUPPORTED}
  1388. (*
  1389.  * This object has not been initialized
  1390.  *)
  1391.   DIERR_NOTINITIALIZED            = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  1392.                                             ERROR_NOT_READY);
  1393.   {$EXTERNALSYM DIERR_NOTINITIALIZED}
  1394. (*
  1395.  * This object is already initialized
  1396.  *)
  1397.   DIERR_ALREADYINITIALIZED        = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  1398.                                             ERROR_ALREADY_INITIALIZED);
  1399.   {$EXTERNALSYM DIERR_ALREADYINITIALIZED}
  1400. (*
  1401.  * This object does not support aggregation
  1402.  *)
  1403.   DIERR_NOAGGREGATION             = CLASS_E_NOAGGREGATION;
  1404.   {$EXTERNALSYM DIERR_NOAGGREGATION}
  1405. (*
  1406.  * Another app has a higher priority level, preventing this call from
  1407.  * succeeding.
  1408.  *)
  1409.   DIERR_OTHERAPPHASPRIO           = E_ACCESSDENIED;
  1410.   {$EXTERNALSYM DIERR_OTHERAPPHASPRIO}
  1411. (*
  1412.  * Access to the device has been lost.  It must be re-acquired.
  1413.  *)
  1414.   DIERR_INPUTLOST                 = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  1415.                                             ERROR_READ_FAULT);
  1416.   {$EXTERNALSYM DIERR_INPUTLOST}
  1417. (*
  1418.  * The operation cannot be performed while the device is acquired.
  1419.  *)
  1420.   DIERR_ACQUIRED                  = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  1421.                                             ERROR_BUSY);
  1422.   {$EXTERNALSYM DIERR_ACQUIRED}
  1423. (*
  1424.  * The operation cannot be performed unless the device is acquired.
  1425.  *)
  1426.   DIERR_NOTACQUIRED               = HRESULT(SEVERITY_ERROR_FACILITY_WIN32 or
  1427.                                             ERROR_INVALID_ACCESS);
  1428.   {$EXTERNALSYM DIERR_NOTACQUIRED}
  1429. (*
  1430.  * The specified property cannot be changed.
  1431.  *)
  1432.   DIERR_READONLY                  = E_ACCESSDENIED;
  1433.   {$EXTERNALSYM DIERR_READONLY}
  1434. (*
  1435.  * The device already has an event notification associated with it.
  1436.  *)
  1437.   DIERR_HANDLEEXISTS              = E_ACCESSDENIED;
  1438.   {$EXTERNALSYM DIERR_HANDLEEXISTS}
  1439. (*
  1440.  * Data is not yet available.
  1441.  *)
  1442.   E_PENDING                       = $8000000A;
  1443.   {$EXTERNALSYM E_PENDING}
  1444. (*
  1445.  * Unable to IDirectInputJoyConfig_Acquire because the user
  1446.  * does not have sufficient privileges to change the joystick
  1447.  * configuration.
  1448.  *)
  1449.   DIERR_INSUFFICIENTPRIVS         = $80040200;
  1450.   {$EXTERNALSYM DIERR_INSUFFICIENTPRIVS}
  1451. (*
  1452.  * The device is full.
  1453.  *)
  1454.   DIERR_DEVICEFULL                = $80040201;
  1455.   {$EXTERNALSYM DIERR_DEVICEFULL}
  1456. (*
  1457.  * Not all the requested information fit into the buffer.
  1458.  *)
  1459.   DIERR_MOREDATA                  = $80040202;
  1460.   {$EXTERNALSYM DIERR_MOREDATA}
  1461. (*
  1462.  * The effect is not downloaded.
  1463.  *)
  1464.   DIERR_NOTDOWNLOADED             = $80040203;
  1465.   {$EXTERNALSYM DIERR_NOTDOWNLOADED}
  1466. (*
  1467.  *  The device cannot be reinitialized because there are still effects
  1468.  *  attached to it.
  1469.  *)
  1470.   DIERR_HASEFFECTS                = $80040204;
  1471.   {$EXTERNALSYM DIERR_HASEFFECTS}
  1472. (*
  1473.  *  The operation cannot be performed unless the device is acquired
  1474.  *  in DISCL_EXCLUSIVE mode.
  1475.  *)
  1476.   DIERR_NOTEXCLUSIVEACQUIRED      = $80040205;
  1477.   {$EXTERNALSYM DIERR_NOTEXCLUSIVEACQUIRED}
  1478. (*
  1479.  *  The effect could not be downloaded because essential information
  1480.  *  is missing.  For example, no axes have been associated with the
  1481.  *  effect, or no type-specific information has been created.
  1482.  *)
  1483.   DIERR_INCOMPLETEEFFECT          = $80040206;
  1484.   {$EXTERNALSYM DIERR_INCOMPLETEEFFECT}
  1485. (*
  1486.  *  Attempted to read buffered device data from a device that is
  1487.  *  not buffered.
  1488.  *)
  1489.   DIERR_NOTBUFFERED               = $80040207;
  1490.   {$EXTERNALSYM DIERR_NOTBUFFERED}
  1491. (*
  1492.  *  An attempt was made to modify parameters of an effect while it is
  1493.  *  playing.  Not all hardware devices support altering the parameters
  1494.  *  of an effect while it is playing.
  1495.  *)
  1496.   DIERR_EFFECTPLAYING             = $80040208;
  1497.   {$EXTERNALSYM DIERR_EFFECTPLAYING}
  1498. (*
  1499.  *  The operation could not be completed because the device is not
  1500.  *  plugged in.
  1501.  *)
  1502.   DIERR_UNPLUGGED                 = $80040209;
  1503.   {$EXTERNALSYM DIERR_UNPLUGGED}
  1504. (*
  1505.  *  SendDeviceData failed because more information was requested
  1506.  *  to be sent than can be sent to the device.  Some devices have
  1507.  *  restrictions on how much data can be sent to them.  (For example,
  1508.  *  there might be a limit on the number of buttons that can be
  1509.  *  pressed at once.)
  1510.  *)
  1511.   DIERR_REPORTFULL                = $8004020A;
  1512.   {$EXTERNALSYM DIERR_REPORTFULL}
  1513. (*
  1514.  *  A mapper file function failed because reading or writing the user or IHV
  1515.  *  settings file failed.
  1516.  *)
  1517.   DIERR_MAPFILEFAIL               = $8004020B;
  1518.   {$EXTERNALSYM DIERR_MAPFILEFAIL}
  1519. (*--- DINPUT Mapper Definitions: New for Dx8         ---*)
  1520. (*--- Keyboard
  1521.       Physical Keyboard Device       ---*)
  1522.   DIKEYBOARD_ESCAPE                       = $81000401;
  1523.   {$EXTERNALSYM DIKEYBOARD_ESCAPE}
  1524.   DIKEYBOARD_1                            = $81000402;
  1525.   {$EXTERNALSYM DIKEYBOARD_1}
  1526.   DIKEYBOARD_2                            = $81000403;
  1527.   {$EXTERNALSYM DIKEYBOARD_2}
  1528.   DIKEYBOARD_3                            = $81000404;
  1529.   {$EXTERNALSYM DIKEYBOARD_3}
  1530.   DIKEYBOARD_4                            = $81000405;
  1531.   {$EXTERNALSYM DIKEYBOARD_4}
  1532.   DIKEYBOARD_5                            = $81000406;
  1533.   {$EXTERNALSYM DIKEYBOARD_5}
  1534.   DIKEYBOARD_6                            = $81000407;
  1535.   {$EXTERNALSYM DIKEYBOARD_6}
  1536.   DIKEYBOARD_7                            = $81000408;
  1537.   {$EXTERNALSYM DIKEYBOARD_7}
  1538.   DIKEYBOARD_8                            = $81000409;
  1539.   {$EXTERNALSYM DIKEYBOARD_8}
  1540.   DIKEYBOARD_9                            = $8100040A;
  1541.   {$EXTERNALSYM DIKEYBOARD_9}
  1542.   DIKEYBOARD_0                            = $8100040B;
  1543.   {$EXTERNALSYM DIKEYBOARD_0}
  1544.   DIKEYBOARD_MINUS                        = $8100040C;    (* - on main keyboard *)
  1545.   {$EXTERNALSYM DIKEYBOARD_MINUS}
  1546.   DIKEYBOARD_EQUALS                       = $8100040D;
  1547.   {$EXTERNALSYM DIKEYBOARD_EQUALS}
  1548.   DIKEYBOARD_BACK                         = $8100040E;    (* backspace *)
  1549.   {$EXTERNALSYM DIKEYBOARD_BACK}
  1550.   DIKEYBOARD_TAB                          = $8100040F;
  1551.   {$EXTERNALSYM DIKEYBOARD_TAB}
  1552.   DIKEYBOARD_Q                            = $81000410;
  1553.   {$EXTERNALSYM DIKEYBOARD_Q}
  1554.   DIKEYBOARD_W                            = $81000411;
  1555.   {$EXTERNALSYM DIKEYBOARD_W}
  1556.   DIKEYBOARD_E                            = $81000412;
  1557.   {$EXTERNALSYM DIKEYBOARD_E}
  1558.   DIKEYBOARD_R                            = $81000413;
  1559.   {$EXTERNALSYM DIKEYBOARD_R}
  1560.   DIKEYBOARD_T                            = $81000414;
  1561.   {$EXTERNALSYM DIKEYBOARD_T}
  1562.   DIKEYBOARD_Y                            = $81000415;
  1563.   {$EXTERNALSYM DIKEYBOARD_Y}
  1564.   DIKEYBOARD_U                            = $81000416;
  1565.   {$EXTERNALSYM DIKEYBOARD_U}
  1566.   DIKEYBOARD_I                            = $81000417;
  1567.   {$EXTERNALSYM DIKEYBOARD_I}
  1568.   DIKEYBOARD_O                            = $81000418;
  1569.   {$EXTERNALSYM DIKEYBOARD_O}
  1570.   DIKEYBOARD_P                            = $81000419;
  1571.   {$EXTERNALSYM DIKEYBOARD_P}
  1572.   DIKEYBOARD_LBRACKET                     = $8100041A;
  1573.   {$EXTERNALSYM DIKEYBOARD_LBRACKET}
  1574.   DIKEYBOARD_RBRACKET                     = $8100041B;
  1575.   {$EXTERNALSYM DIKEYBOARD_RBRACKET}
  1576.   DIKEYBOARD_RETURN                       = $8100041C;    (* Enter on main keyboard *)
  1577.   {$EXTERNALSYM DIKEYBOARD_RETURN}
  1578.   DIKEYBOARD_LCONTROL                     = $8100041D;
  1579.   {$EXTERNALSYM DIKEYBOARD_LCONTROL}
  1580.   DIKEYBOARD_A                            = $8100041E;
  1581.   {$EXTERNALSYM DIKEYBOARD_A}
  1582.   DIKEYBOARD_S                            = $8100041F;
  1583.   {$EXTERNALSYM DIKEYBOARD_S}
  1584.   DIKEYBOARD_D                            = $81000420;
  1585.   {$EXTERNALSYM DIKEYBOARD_D}
  1586.   DIKEYBOARD_F                            = $81000421;
  1587.   {$EXTERNALSYM DIKEYBOARD_F}
  1588.   DIKEYBOARD_G                            = $81000422;
  1589.   {$EXTERNALSYM DIKEYBOARD_G}
  1590.   DIKEYBOARD_H                            = $81000423;
  1591.   {$EXTERNALSYM DIKEYBOARD_H}
  1592.   DIKEYBOARD_J                            = $81000424;
  1593.   {$EXTERNALSYM DIKEYBOARD_J}
  1594.   DIKEYBOARD_K                            = $81000425;
  1595.   {$EXTERNALSYM DIKEYBOARD_K}
  1596.   DIKEYBOARD_L                            = $81000426;
  1597.   {$EXTERNALSYM DIKEYBOARD_L}
  1598.   DIKEYBOARD_SEMICOLON                    = $81000427;
  1599.   {$EXTERNALSYM DIKEYBOARD_SEMICOLON}
  1600.   DIKEYBOARD_APOSTROPHE                   = $81000428;
  1601.   {$EXTERNALSYM DIKEYBOARD_APOSTROPHE}
  1602.   DIKEYBOARD_GRAVE                        = $81000429;    (* accent grave *)
  1603.   {$EXTERNALSYM DIKEYBOARD_GRAVE}
  1604.   DIKEYBOARD_LSHIFT                       = $8100042A;
  1605.   {$EXTERNALSYM DIKEYBOARD_LSHIFT}
  1606.   DIKEYBOARD_BACKSLASH                    = $8100042B;
  1607.   {$EXTERNALSYM DIKEYBOARD_BACKSLASH}
  1608.   DIKEYBOARD_Z                            = $8100042C;
  1609.   {$EXTERNALSYM DIKEYBOARD_Z}
  1610.   DIKEYBOARD_X                            = $8100042D;
  1611.   {$EXTERNALSYM DIKEYBOARD_X}
  1612.   DIKEYBOARD_C                            = $8100042E;
  1613.   {$EXTERNALSYM DIKEYBOARD_C}
  1614.   DIKEYBOARD_V                            = $8100042F;
  1615.   {$EXTERNALSYM DIKEYBOARD_V}
  1616.   DIKEYBOARD_B                            = $81000430;
  1617.   {$EXTERNALSYM DIKEYBOARD_B}
  1618.   DIKEYBOARD_N                            = $81000431;
  1619.   {$EXTERNALSYM DIKEYBOARD_N}
  1620.   DIKEYBOARD_M                            = $81000432;
  1621.   {$EXTERNALSYM DIKEYBOARD_M}
  1622.   DIKEYBOARD_COMMA                        = $81000433;
  1623.   {$EXTERNALSYM DIKEYBOARD_COMMA}
  1624.   DIKEYBOARD_PERIOD                       = $81000434;    (* . on main keyboard *)
  1625.   {$EXTERNALSYM DIKEYBOARD_PERIOD}
  1626.   DIKEYBOARD_SLASH                        = $81000435;    (* / on main keyboard *)
  1627.   {$EXTERNALSYM DIKEYBOARD_SLASH}
  1628.   DIKEYBOARD_RSHIFT                       = $81000436;
  1629.   {$EXTERNALSYM DIKEYBOARD_RSHIFT}
  1630.   DIKEYBOARD_MULTIPLY                     = $81000437;    (* * on numeric keypad *)
  1631.   {$EXTERNALSYM DIKEYBOARD_MULTIPLY}
  1632.   DIKEYBOARD_LMENU                        = $81000438;    (* left Alt *)
  1633.   {$EXTERNALSYM DIKEYBOARD_LMENU}
  1634.   DIKEYBOARD_SPACE                        = $81000439;
  1635.   {$EXTERNALSYM DIKEYBOARD_SPACE}
  1636.   DIKEYBOARD_CAPITAL                      = $8100043A;
  1637.   {$EXTERNALSYM DIKEYBOARD_CAPITAL}
  1638.   DIKEYBOARD_F1                           = $8100043B;
  1639.   {$EXTERNALSYM DIKEYBOARD_F1}
  1640.   DIKEYBOARD_F2                           = $8100043C;
  1641.   {$EXTERNALSYM DIKEYBOARD_F2}
  1642.   DIKEYBOARD_F3                           = $8100043D;
  1643.   {$EXTERNALSYM DIKEYBOARD_F3}
  1644.   DIKEYBOARD_F4                           = $8100043E;
  1645.   {$EXTERNALSYM DIKEYBOARD_F4}
  1646.   DIKEYBOARD_F5                           = $8100043F;
  1647.   {$EXTERNALSYM DIKEYBOARD_F5}
  1648.   DIKEYBOARD_F6                           = $81000440;
  1649.   {$EXTERNALSYM DIKEYBOARD_F6}
  1650.   DIKEYBOARD_F7                           = $81000441;
  1651.   {$EXTERNALSYM DIKEYBOARD_F7}
  1652.   DIKEYBOARD_F8                           = $81000442;
  1653.   {$EXTERNALSYM DIKEYBOARD_F8}
  1654.   DIKEYBOARD_F9                           = $81000443;
  1655.   {$EXTERNALSYM DIKEYBOARD_F9}
  1656.   DIKEYBOARD_F10                          = $81000444;
  1657.   {$EXTERNALSYM DIKEYBOARD_F10}
  1658.   DIKEYBOARD_NUMLOCK                      = $81000445;
  1659.   {$EXTERNALSYM DIKEYBOARD_NUMLOCK}
  1660.   DIKEYBOARD_SCROLL                       = $81000446;    (* Scroll Lock *)
  1661.   {$EXTERNALSYM DIKEYBOARD_SCROLL}
  1662.   DIKEYBOARD_NUMPAD7                      = $81000447;
  1663.   {$EXTERNALSYM DIKEYBOARD_NUMPAD7}
  1664.   DIKEYBOARD_NUMPAD8                      = $81000448;
  1665.   {$EXTERNALSYM DIKEYBOARD_NUMPAD8}
  1666.   DIKEYBOARD_NUMPAD9                      = $81000449;
  1667.   {$EXTERNALSYM DIKEYBOARD_NUMPAD9}
  1668.   DIKEYBOARD_SUBTRACT                     = $8100044A;    (* - on numeric keypad *)
  1669.   {$EXTERNALSYM DIKEYBOARD_SUBTRACT}
  1670.   DIKEYBOARD_NUMPAD4                      = $8100044B;
  1671.   {$EXTERNALSYM DIKEYBOARD_NUMPAD4}
  1672.   DIKEYBOARD_NUMPAD5                      = $8100044C;
  1673.   {$EXTERNALSYM DIKEYBOARD_NUMPAD5}
  1674.   DIKEYBOARD_NUMPAD6                      = $8100044D;
  1675.   {$EXTERNALSYM DIKEYBOARD_NUMPAD6}
  1676.   DIKEYBOARD_ADD                          = $8100044E;    (* + on numeric keypad *)
  1677.   {$EXTERNALSYM DIKEYBOARD_ADD}
  1678.   DIKEYBOARD_NUMPAD1                      = $8100044F;
  1679.   {$EXTERNALSYM DIKEYBOARD_NUMPAD1}
  1680.   DIKEYBOARD_NUMPAD2                      = $81000450;
  1681.   {$EXTERNALSYM DIKEYBOARD_NUMPAD2}
  1682.   DIKEYBOARD_NUMPAD3                      = $81000451;
  1683.   {$EXTERNALSYM DIKEYBOARD_NUMPAD3}
  1684.   DIKEYBOARD_NUMPAD0                      = $81000452;
  1685.   {$EXTERNALSYM DIKEYBOARD_NUMPAD0}
  1686.   DIKEYBOARD_DECIMAL                      = $81000453;    (* . on numeric keypad *)
  1687.   {$EXTERNALSYM DIKEYBOARD_DECIMAL}
  1688.   DIKEYBOARD_OEM_102                      = $81000456;    (* <> or | on RT 102-key keyboard (Non-U.S.) *)
  1689.   {$EXTERNALSYM DIKEYBOARD_OEM_102}
  1690.   DIKEYBOARD_F11                          = $81000457;
  1691.   {$EXTERNALSYM DIKEYBOARD_F11}
  1692.   DIKEYBOARD_F12                          = $81000458;
  1693.   {$EXTERNALSYM DIKEYBOARD_F12}
  1694.   DIKEYBOARD_F13                          = $81000464;    (*                     (NEC PC98) *)
  1695.   {$EXTERNALSYM DIKEYBOARD_F13}
  1696.   DIKEYBOARD_F14                          = $81000465;    (*                     (NEC PC98) *)
  1697.   {$EXTERNALSYM DIKEYBOARD_F14}
  1698.   DIKEYBOARD_F15                          = $81000466;    (*                     (NEC PC98) *)
  1699.   {$EXTERNALSYM DIKEYBOARD_F15}
  1700.   DIKEYBOARD_KANA                         = $81000470;    (* (Japanese keyboard)            *)
  1701.   {$EXTERNALSYM DIKEYBOARD_KANA}
  1702.   DIKEYBOARD_ABNT_C1                      = $81000473;    (* /? on Brazilian keyboard *)
  1703.   {$EXTERNALSYM DIKEYBOARD_ABNT_C1}
  1704.   DIKEYBOARD_CONVERT                      = $81000479;    (* (Japanese keyboard)            *)
  1705.   {$EXTERNALSYM DIKEYBOARD_CONVERT}
  1706.   DIKEYBOARD_NOCONVERT                    = $8100047B;    (* (Japanese keyboard)            *)
  1707.   {$EXTERNALSYM DIKEYBOARD_NOCONVERT}
  1708.   DIKEYBOARD_YEN                          = $8100047D;    (* (Japanese keyboard)            *)
  1709.   {$EXTERNALSYM DIKEYBOARD_YEN}
  1710.   DIKEYBOARD_ABNT_C2                      = $8100047E;    (* Numpad . on Brazilian keyboard *)
  1711.   {$EXTERNALSYM DIKEYBOARD_ABNT_C2}
  1712.   DIKEYBOARD_NUMPADEQUALS                 = $8100048D;    (* = on numeric keypad (NEC PC98) *)
  1713.   {$EXTERNALSYM DIKEYBOARD_NUMPADEQUALS}
  1714.   DIKEYBOARD_PREVTRACK                    = $81000490;    (* Previous Track (DIK_CIRCUMFLEX on Japanese keyboard) *)
  1715.   {$EXTERNALSYM DIKEYBOARD_PREVTRACK}
  1716.   DIKEYBOARD_AT                           = $81000491;    (*                     (NEC PC98) *)
  1717.   {$EXTERNALSYM DIKEYBOARD_AT}
  1718.   DIKEYBOARD_COLON                        = $81000492;    (*                     (NEC PC98) *)
  1719.   {$EXTERNALSYM DIKEYBOARD_COLON}
  1720.   DIKEYBOARD_UNDERLINE                    = $81000493;    (*                     (NEC PC98) *)
  1721.   {$EXTERNALSYM DIKEYBOARD_UNDERLINE}
  1722.   DIKEYBOARD_KANJI                        = $81000494;    (* (Japanese keyboard)            *)
  1723.   {$EXTERNALSYM DIKEYBOARD_KANJI}
  1724.   DIKEYBOARD_STOP                         = $81000495;    (*                     (NEC PC98) *)
  1725.   {$EXTERNALSYM DIKEYBOARD_STOP}
  1726.   DIKEYBOARD_AX                           = $81000496;    (*                     (Japan AX) *)
  1727.   {$EXTERNALSYM DIKEYBOARD_AX}
  1728.   DIKEYBOARD_UNLABELED                    = $81000497;    (*                        (J3100) *)
  1729.   {$EXTERNALSYM DIKEYBOARD_UNLABELED}
  1730.   DIKEYBOARD_NEXTTRACK                    = $81000499;    (* Next Track *)
  1731.   {$EXTERNALSYM DIKEYBOARD_NEXTTRACK}
  1732.   DIKEYBOARD_NUMPADENTER                  = $8100049C;    (* Enter on numeric keypad *)
  1733.   {$EXTERNALSYM DIKEYBOARD_NUMPADENTER}
  1734.   DIKEYBOARD_RCONTROL                     = $8100049D;
  1735.   {$EXTERNALSYM DIKEYBOARD_RCONTROL}
  1736.   DIKEYBOARD_MUTE                         = $810004A0;    (* Mute *)
  1737.   {$EXTERNALSYM DIKEYBOARD_MUTE}
  1738.   DIKEYBOARD_CALCULATOR                   = $810004A1;    (* Calculator *)
  1739.   {$EXTERNALSYM DIKEYBOARD_CALCULATOR}
  1740.   DIKEYBOARD_PLAYPAUSE                    = $810004A2;    (* Play / Pause *)
  1741.   {$EXTERNALSYM DIKEYBOARD_PLAYPAUSE}
  1742.   DIKEYBOARD_MEDIASTOP                    = $810004A4;    (* Media Stop *)
  1743.   {$EXTERNALSYM DIKEYBOARD_MEDIASTOP}
  1744.   DIKEYBOARD_VOLUMEDOWN                   = $810004AE;    (* Volume - *)
  1745.   {$EXTERNALSYM DIKEYBOARD_VOLUMEDOWN}
  1746.   DIKEYBOARD_VOLUMEUP                     = $810004B0;    (* Volume + *)
  1747.   {$EXTERNALSYM DIKEYBOARD_VOLUMEUP}
  1748.   DIKEYBOARD_WEBHOME                      = $810004B2;    (* Web home *)
  1749.   {$EXTERNALSYM DIKEYBOARD_WEBHOME}
  1750.   DIKEYBOARD_NUMPADCOMMA                  = $810004B3;    (* , on numeric keypad (NEC PC98) *)
  1751.   {$EXTERNALSYM DIKEYBOARD_NUMPADCOMMA}
  1752.   DIKEYBOARD_DIVIDE                       = $810004B5;    (* / on numeric keypad *)
  1753.   {$EXTERNALSYM DIKEYBOARD_DIVIDE}
  1754.   DIKEYBOARD_SYSRQ                        = $810004B7;
  1755.   {$EXTERNALSYM DIKEYBOARD_SYSRQ}
  1756.   DIKEYBOARD_RMENU                        = $810004B8;    (* right Alt *)
  1757.   {$EXTERNALSYM DIKEYBOARD_RMENU}
  1758.   DIKEYBOARD_PAUSE                        = $810004C5;    (* Pause *)
  1759.   {$EXTERNALSYM DIKEYBOARD_PAUSE}
  1760.   DIKEYBOARD_HOME                         = $810004C7;    (* Home on arrow keypad *)
  1761.   {$EXTERNALSYM DIKEYBOARD_HOME}
  1762.   DIKEYBOARD_UP                           = $810004C8;    (* UpArrow on arrow keypad *)
  1763.   {$EXTERNALSYM DIKEYBOARD_UP}
  1764.   DIKEYBOARD_PRIOR                        = $810004C9;    (* PgUp on arrow keypad *)
  1765.   {$EXTERNALSYM DIKEYBOARD_PRIOR}
  1766.   DIKEYBOARD_LEFT                         = $810004CB;    (* LeftArrow on arrow keypad *)
  1767.   {$EXTERNALSYM DIKEYBOARD_LEFT}
  1768.   DIKEYBOARD_RIGHT                        = $810004CD;    (* RightArrow on arrow keypad *)
  1769.   {$EXTERNALSYM DIKEYBOARD_RIGHT}
  1770.   DIKEYBOARD_END                          = $810004CF;    (* End on arrow keypad *)
  1771.   {$EXTERNALSYM DIKEYBOARD_END}
  1772.   DIKEYBOARD_DOWN                         = $810004D0;    (* DownArrow on arrow keypad *)
  1773.   {$EXTERNALSYM DIKEYBOARD_DOWN}
  1774.   DIKEYBOARD_NEXT                         = $810004D1;    (* PgDn on arrow keypad *)
  1775.   {$EXTERNALSYM DIKEYBOARD_NEXT}
  1776.   DIKEYBOARD_INSERT                       = $810004D2;    (* Insert on arrow keypad *)
  1777.   {$EXTERNALSYM DIKEYBOARD_INSERT}
  1778.   DIKEYBOARD_DELETE                       = $810004D3;    (* Delete on arrow keypad *)
  1779.   {$EXTERNALSYM DIKEYBOARD_DELETE}
  1780.   DIKEYBOARD_LWIN                         = $810004DB;    (* Left Windows key *)
  1781.   {$EXTERNALSYM DIKEYBOARD_LWIN}
  1782.   DIKEYBOARD_RWIN                         = $810004DC;    (* Right Windows key *)
  1783.   {$EXTERNALSYM DIKEYBOARD_RWIN}
  1784.   DIKEYBOARD_APPS                         = $810004DD;    (* AppMenu key *)
  1785.   {$EXTERNALSYM DIKEYBOARD_APPS}
  1786.   DIKEYBOARD_POWER                        = $810004DE;    (* System Power *)
  1787.   {$EXTERNALSYM DIKEYBOARD_POWER}
  1788.   DIKEYBOARD_SLEEP                        = $810004DF;    (* System Sleep *)
  1789.   {$EXTERNALSYM DIKEYBOARD_SLEEP}
  1790.   DIKEYBOARD_WAKE                         = $810004E3;    (* System Wake *)
  1791.   {$EXTERNALSYM DIKEYBOARD_WAKE}
  1792.   DIKEYBOARD_WEBSEARCH                    = $810004E5;    (* Web Search *)
  1793.   {$EXTERNALSYM DIKEYBOARD_WEBSEARCH}
  1794.   DIKEYBOARD_WEBFAVORITES                 = $810004E6;    (* Web Favorites *)
  1795.   {$EXTERNALSYM DIKEYBOARD_WEBFAVORITES}
  1796.   DIKEYBOARD_WEBREFRESH                   = $810004E7;    (* Web Refresh *)
  1797.   {$EXTERNALSYM DIKEYBOARD_WEBREFRESH}
  1798.   DIKEYBOARD_WEBSTOP                      = $810004E8;    (* Web Stop *)
  1799.   {$EXTERNALSYM DIKEYBOARD_WEBSTOP}
  1800.   DIKEYBOARD_WEBFORWARD                   = $810004E9;    (* Web Forward *)
  1801.   {$EXTERNALSYM DIKEYBOARD_WEBFORWARD}
  1802.   DIKEYBOARD_WEBBACK                      = $810004EA;    (* Web Back *)
  1803.   {$EXTERNALSYM DIKEYBOARD_WEBBACK}
  1804.   DIKEYBOARD_MYCOMPUTER                   = $810004EB;    (* My Computer *)
  1805.   {$EXTERNALSYM DIKEYBOARD_MYCOMPUTER}
  1806.   DIKEYBOARD_MAIL                         = $810004EC;    (* Mail *)
  1807.   {$EXTERNALSYM DIKEYBOARD_MAIL}
  1808.   DIKEYBOARD_MEDIASELECT                  = $810004ED;    (* Media Select *)
  1809.   {$EXTERNALSYM DIKEYBOARD_MEDIASELECT}
  1810. (*--- MOUSE
  1811.       Physical Mouse Device             ---*)
  1812.   DIMOUSE_XAXISAB                         = ($82000200 or DIMOFS_X); (* X Axis-absolute: Some mice natively report absolute coordinates  *)
  1813.   {$EXTERNALSYM DIMOUSE_XAXISAB}
  1814.   DIMOUSE_YAXISAB                         = ($82000200 or DIMOFS_Y); (* Y Axis-absolute: Some mice natively report absolute coordinates *)
  1815.   {$EXTERNALSYM DIMOUSE_YAXISAB}
  1816.   DIMOUSE_XAXIS                           = ($82000300 or DIMOFS_X); (* X Axis *)
  1817.   {$EXTERNALSYM DIMOUSE_XAXIS}
  1818.   DIMOUSE_YAXIS                           = ($82000300 or DIMOFS_Y); (* Y Axis *)
  1819.   {$EXTERNALSYM DIMOUSE_YAXIS}
  1820.   DIMOUSE_WHEEL                           = ($82000300 or DIMOFS_Z); (* Z Axis *)
  1821.   {$EXTERNALSYM DIMOUSE_WHEEL}
  1822.   DIMOUSE_BUTTON0                         = ($82000400 or DIMOFS_BUTTON0); (* Button 0 *)
  1823.   {$EXTERNALSYM DIMOUSE_BUTTON0}
  1824.   DIMOUSE_BUTTON1                         = ($82000400 or DIMOFS_BUTTON1); (* Button 1 *)
  1825.   {$EXTERNALSYM DIMOUSE_BUTTON1}
  1826.   DIMOUSE_BUTTON2                         = ($82000400 or DIMOFS_BUTTON2); (* Button 2 *)
  1827.   {$EXTERNALSYM DIMOUSE_BUTTON2}
  1828.   DIMOUSE_BUTTON3                         = ($82000400 or DIMOFS_BUTTON3); (* Button 3 *)
  1829.   {$EXTERNALSYM DIMOUSE_BUTTON3}
  1830.   DIMOUSE_BUTTON4                         = ($82000400 or DIMOFS_BUTTON4); (* Button 4 *)
  1831.   {$EXTERNALSYM DIMOUSE_BUTTON4}
  1832.   DIMOUSE_BUTTON5                         = ($82000400 or DIMOFS_BUTTON5); (* Button 5 *)
  1833.   {$EXTERNALSYM DIMOUSE_BUTTON5}
  1834.   DIMOUSE_BUTTON6                         = ($82000400 or DIMOFS_BUTTON6); (* Button 6 *)
  1835.   {$EXTERNALSYM DIMOUSE_BUTTON6}
  1836.   DIMOUSE_BUTTON7                         = ($82000400 or DIMOFS_BUTTON7); (* Button 7 *)
  1837.   {$EXTERNALSYM DIMOUSE_BUTTON7}
  1838. (*--- VOICE
  1839.       Physical Dplay Voice Device       ---*)
  1840.   DIVOICE_CHANNEL1                        = $83000401;
  1841.   {$EXTERNALSYM DIVOICE_CHANNEL1}
  1842.   DIVOICE_CHANNEL2                        = $83000402;
  1843.   {$EXTERNALSYM DIVOICE_CHANNEL2}
  1844.   DIVOICE_CHANNEL3                        = $83000403;
  1845.   {$EXTERNALSYM DIVOICE_CHANNEL3}
  1846.   DIVOICE_CHANNEL4                        = $83000404;
  1847.   {$EXTERNALSYM DIVOICE_CHANNEL4}
  1848.   DIVOICE_CHANNEL5                        = $83000405;
  1849.   {$EXTERNALSYM DIVOICE_CHANNEL5}
  1850.   DIVOICE_CHANNEL6                        = $83000406;
  1851.   {$EXTERNALSYM DIVOICE_CHANNEL6}
  1852.   DIVOICE_CHANNEL7                        = $83000407;
  1853.   {$EXTERNALSYM DIVOICE_CHANNEL7}
  1854.   DIVOICE_CHANNEL8                        = $83000408;
  1855.   {$EXTERNALSYM DIVOICE_CHANNEL8}
  1856.   DIVOICE_TEAM                            = $83000409;
  1857.   {$EXTERNALSYM DIVOICE_TEAM}
  1858.   DIVOICE_ALL                             = $8300040A;
  1859.   {$EXTERNALSYM DIVOICE_ALL}
  1860.   DIVOICE_RECORDMUTE                      = $8300040B;
  1861.   {$EXTERNALSYM DIVOICE_RECORDMUTE}
  1862.   DIVOICE_PLAYBACKMUTE                    = $8300040C;
  1863.   {$EXTERNALSYM DIVOICE_PLAYBACKMUTE}
  1864.   DIVOICE_TRANSMIT                        = $8300040D;
  1865.   {$EXTERNALSYM DIVOICE_TRANSMIT}
  1866.   DIVOICE_VOICECOMMAND                    = $83000410;
  1867.   {$EXTERNALSYM DIVOICE_VOICECOMMAND}
  1868. (*--- Driving Simulator - Racing
  1869.       Vehicle control is primary objective  ---*)
  1870.   DIVIRTUAL_DRIVING_RACE                  = $01000000;
  1871.   {$EXTERNALSYM DIVIRTUAL_DRIVING_RACE}
  1872.   DIAXIS_DRIVINGR_STEER                   = $01008A01; (* Steering *)
  1873.   {$EXTERNALSYM DIAXIS_DRIVINGR_STEER}
  1874.   DIAXIS_DRIVINGR_ACCELERATE              = $01039202; (* Accelerate *)
  1875.   {$EXTERNALSYM DIAXIS_DRIVINGR_ACCELERATE}
  1876.   DIAXIS_DRIVINGR_BRAKE                   = $01041203; (* Brake-Axis *)
  1877.   {$EXTERNALSYM DIAXIS_DRIVINGR_BRAKE}
  1878.   DIBUTTON_DRIVINGR_SHIFTUP               = $01000C01; (* Shift to next higher gear *)
  1879.   {$EXTERNALSYM DIBUTTON_DRIVINGR_SHIFTUP}
  1880.   DIBUTTON_DRIVINGR_SHIFTDOWN             = $01000C02; (* Shift to next lower gear *)
  1881.   {$EXTERNALSYM DIBUTTON_DRIVINGR_SHIFTDOWN}
  1882.   DIBUTTON_DRIVINGR_VIEW                  = $01001C03; (* Cycle through view options *)
  1883.   {$EXTERNALSYM DIBUTTON_DRIVINGR_VIEW}
  1884.   DIBUTTON_DRIVINGR_MENU                  = $010004FD; (* Show menu options *)
  1885.   {$EXTERNALSYM DIBUTTON_DRIVINGR_MENU}
  1886. (*--- Priority 2 controls                            ---*)
  1887.   DIAXIS_DRIVINGR_ACCEL_AND_BRAKE         = $01014A04; (* Some devices combine accelerate and brake in a single axis *)
  1888.   {$EXTERNALSYM DIAXIS_DRIVINGR_ACCEL_AND_BRAKE}
  1889.   DIHATSWITCH_DRIVINGR_GLANCE             = $01004601; (* Look around *)
  1890.   {$EXTERNALSYM DIHATSWITCH_DRIVINGR_GLANCE}
  1891.   DIBUTTON_DRIVINGR_BRAKE                 = $01004C04; (* Brake-button *)
  1892.   {$EXTERNALSYM DIBUTTON_DRIVINGR_BRAKE}
  1893.   DIBUTTON_DRIVINGR_DASHBOARD             = $01004405; (* Select next dashboard option *)
  1894.   {$EXTERNALSYM DIBUTTON_DRIVINGR_DASHBOARD}
  1895.   DIBUTTON_DRIVINGR_AIDS                  = $01004406; (* Driver correction aids *)
  1896.   {$EXTERNALSYM DIBUTTON_DRIVINGR_AIDS}
  1897.   DIBUTTON_DRIVINGR_MAP                   = $01004407; (* Display Driving Map *)
  1898.   {$EXTERNALSYM DIBUTTON_DRIVINGR_MAP}
  1899.   DIBUTTON_DRIVINGR_BOOST                 = $01004408; (* Turbo Boost *)
  1900.   {$EXTERNALSYM DIBUTTON_DRIVINGR_BOOST}
  1901.   DIBUTTON_DRIVINGR_PIT                   = $01004409; (* Pit stop notification *)
  1902.   {$EXTERNALSYM DIBUTTON_DRIVINGR_PIT}
  1903.   DIBUTTON_DRIVINGR_ACCELERATE_LINK       = $0103D4E0; (* Fallback Accelerate button *)
  1904.   {$EXTERNALSYM DIBUTTON_DRIVINGR_ACCELERATE_LINK}
  1905.   DIBUTTON_DRIVINGR_STEER_LEFT_LINK       = $0100CCE4; (* Fallback Steer Left button *)
  1906.   {$EXTERNALSYM DIBUTTON_DRIVINGR_STEER_LEFT_LINK}
  1907.   DIBUTTON_DRIVINGR_STEER_RIGHT_LINK      = $0100CCEC; (* Fallback Steer Right button *)
  1908.   {$EXTERNALSYM DIBUTTON_DRIVINGR_STEER_RIGHT_LINK}
  1909.   DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK      = $0107C4E4; (* Fallback Glance Left button *)
  1910.   {$EXTERNALSYM DIBUTTON_DRIVINGR_GLANCE_LEFT_LINK}
  1911.   DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK     = $0107C4EC; (* Fallback Glance Right button *)
  1912.   {$EXTERNALSYM DIBUTTON_DRIVINGR_GLANCE_RIGHT_LINK}
  1913.   DIBUTTON_DRIVINGR_DEVICE                = $010044FE; (* Show input device and controls *)
  1914.   {$EXTERNALSYM DIBUTTON_DRIVINGR_DEVICE}
  1915.   DIBUTTON_DRIVINGR_PAUSE                 = $010044FC; (* Start / Pause / Restart game *)
  1916.   {$EXTERNALSYM DIBUTTON_DRIVINGR_PAUSE}
  1917. (*--- Driving Simulator - Combat
  1918.       Combat from within a vehicle is primary objective  ---*)
  1919.   DIVIRTUAL_DRIVING_COMBAT                = $02000000;
  1920.   {$EXTERNALSYM DIVIRTUAL_DRIVING_COMBAT}
  1921.   DIAXIS_DRIVINGC_STEER                   = $02008A01; (* Steering  *)
  1922.   {$EXTERNALSYM DIAXIS_DRIVINGC_STEER}
  1923.   DIAXIS_DRIVINGC_ACCELERATE              = $02039202; (* Accelerate *)
  1924.   {$EXTERNALSYM DIAXIS_DRIVINGC_ACCELERATE}
  1925.   DIAXIS_DRIVINGC_BRAKE                   = $02041203; (* Brake-axis *)
  1926.   {$EXTERNALSYM DIAXIS_DRIVINGC_BRAKE}
  1927.   DIBUTTON_DRIVINGC_FIRE                  = $02000C01; (* Fire *)
  1928.   {$EXTERNALSYM DIBUTTON_DRIVINGC_FIRE}
  1929.   DIBUTTON_DRIVINGC_WEAPONS               = $02000C02; (* Select next weapon *)
  1930.   {$EXTERNALSYM DIBUTTON_DRIVINGC_WEAPONS}
  1931.   DIBUTTON_DRIVINGC_TARGET                = $02000C03; (* Select next available target *)
  1932.   {$EXTERNALSYM DIBUTTON_DRIVINGC_TARGET}
  1933.   DIBUTTON_DRIVINGC_MENU                  = $020004FD; (* Show menu options *)
  1934.   {$EXTERNALSYM DIBUTTON_DRIVINGC_MENU}
  1935. (*--- Priority 2 controls                            ---*)
  1936.   DIAXIS_DRIVINGC_ACCEL_AND_BRAKE         = $02014A04; (* Some devices combine accelerate and brake in a single axis *)
  1937.   {$EXTERNALSYM DIAXIS_DRIVINGC_ACCEL_AND_BRAKE}
  1938.   DIHATSWITCH_DRIVINGC_GLANCE             = $02004601; (* Look around *)
  1939.   {$EXTERNALSYM DIHATSWITCH_DRIVINGC_GLANCE}
  1940.   DIBUTTON_DRIVINGC_SHIFTUP               = $02004C04; (* Shift to next higher gear *)
  1941.   {$EXTERNALSYM DIBUTTON_DRIVINGC_SHIFTUP}
  1942.   DIBUTTON_DRIVINGC_SHIFTDOWN             = $02004C05; (* Shift to next lower gear *)
  1943.   {$EXTERNALSYM DIBUTTON_DRIVINGC_SHIFTDOWN}
  1944.   DIBUTTON_DRIVINGC_DASHBOARD             = $02004406; (* Select next dashboard option *)
  1945.   {$EXTERNALSYM DIBUTTON_DRIVINGC_DASHBOARD}
  1946.   DIBUTTON_DRIVINGC_AIDS                  = $02004407; (* Driver correction aids *)
  1947.   {$EXTERNALSYM DIBUTTON_DRIVINGC_AIDS}
  1948.   DIBUTTON_DRIVINGC_BRAKE                 = $02004C08; (* Brake-button *)
  1949.   {$EXTERNALSYM DIBUTTON_DRIVINGC_BRAKE}
  1950.   DIBUTTON_DRIVINGC_FIRESECONDARY         = $02004C09; (* Alternative fire button *)
  1951.   {$EXTERNALSYM DIBUTTON_DRIVINGC_FIRESECONDARY}
  1952.   DIBUTTON_DRIVINGC_ACCELERATE_LINK       = $0203D4E0; (* Fallback Accelerate button *)
  1953.   {$EXTERNALSYM DIBUTTON_DRIVINGC_ACCELERATE_LINK}
  1954.   DIBUTTON_DRIVINGC_STEER_LEFT_LINK       = $0200CCE4; (* Fallback Steer Left button *)
  1955.   {$EXTERNALSYM DIBUTTON_DRIVINGC_STEER_LEFT_LINK}
  1956.   DIBUTTON_DRIVINGC_STEER_RIGHT_LINK      = $0200CCEC; (* Fallback Steer Right button *)
  1957.   {$EXTERNALSYM DIBUTTON_DRIVINGC_STEER_RIGHT_LINK}
  1958.   DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK      = $0207C4E4; (* Fallback Glance Left button *)
  1959.   {$EXTERNALSYM DIBUTTON_DRIVINGC_GLANCE_LEFT_LINK}
  1960.   DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK     = $0207C4EC; (* Fallback Glance Right button *)
  1961.   {$EXTERNALSYM DIBUTTON_DRIVINGC_GLANCE_RIGHT_LINK}
  1962.   DIBUTTON_DRIVINGC_DEVICE                = $020044FE; (* Show input device and controls *)
  1963.   {$EXTERNALSYM DIBUTTON_DRIVINGC_DEVICE}
  1964.   DIBUTTON_DRIVINGC_PAUSE                 = $020044FC; (* Start / Pause / Restart game *)
  1965.   {$EXTERNALSYM DIBUTTON_DRIVINGC_PAUSE}
  1966. (*--- Driving Simulator - Tank
  1967.       Combat from withing a tank is primary objective  ---*)
  1968.   DIVIRTUAL_DRIVING_TANK                  = $03000000;
  1969.   {$EXTERNALSYM DIVIRTUAL_DRIVING_TANK}
  1970.   DIAXIS_DRIVINGT_STEER                   = $03008A01; (* Turn tank left / right *)
  1971.   {$EXTERNALSYM DIAXIS_DRIVINGT_STEER}
  1972.   DIAXIS_DRIVINGT_BARREL                  = $03010202; (* Raise / lower barrel *)
  1973.   {$EXTERNALSYM DIAXIS_DRIVINGT_BARREL}
  1974.   DIAXIS_DRIVINGT_ACCELERATE              = $03039203; (* Accelerate *)
  1975.   {$EXTERNALSYM DIAXIS_DRIVINGT_ACCELERATE}
  1976.   DIAXIS_DRIVINGT_ROTATE                  = $03020204; (* Turn barrel left / right *)
  1977.   {$EXTERNALSYM DIAXIS_DRIVINGT_ROTATE}
  1978.   DIBUTTON_DRIVINGT_FIRE                  = $03000C01; (* Fire *)
  1979.   {$EXTERNALSYM DIBUTTON_DRIVINGT_FIRE}
  1980.   DIBUTTON_DRIVINGT_WEAPONS               = $03000C02; (* Select next weapon *)
  1981.   {$EXTERNALSYM DIBUTTON_DRIVINGT_WEAPONS}
  1982.   DIBUTTON_DRIVINGT_TARGET                = $03000C03; (* Selects next available target *)
  1983.   {$EXTERNALSYM DIBUTTON_DRIVINGT_TARGET}
  1984.   DIBUTTON_DRIVINGT_MENU                  = $030004FD; (* Show menu options *)
  1985.   {$EXTERNALSYM DIBUTTON_DRIVINGT_MENU}
  1986. (*--- Priority 2 controls                            ---*)
  1987.   DIHATSWITCH_DRIVINGT_GLANCE             = $03004601; (* Look around *)
  1988.   {$EXTERNALSYM DIHATSWITCH_DRIVINGT_GLANCE}
  1989.   DIAXIS_DRIVINGT_BRAKE                   = $03045205; (* Brake-axis *)
  1990.   {$EXTERNALSYM DIAXIS_DRIVINGT_BRAKE}
  1991.   DIAXIS_DRIVINGT_ACCEL_AND_BRAKE         = $03014A06; (* Some devices combine accelerate and brake in a single axis *)
  1992.   {$EXTERNALSYM DIAXIS_DRIVINGT_ACCEL_AND_BRAKE}
  1993.   DIBUTTON_DRIVINGT_VIEW                  = $03005C04; (* Cycle through view options *)
  1994.   {$EXTERNALSYM DIBUTTON_DRIVINGT_VIEW}
  1995.   DIBUTTON_DRIVINGT_DASHBOARD             = $03005C05; (* Select next dashboard option *)
  1996.   {$EXTERNALSYM DIBUTTON_DRIVINGT_DASHBOARD}
  1997.   DIBUTTON_DRIVINGT_BRAKE                 = $03004C06; (* Brake-button *)
  1998.   {$EXTERNALSYM DIBUTTON_DRIVINGT_BRAKE}
  1999.   DIBUTTON_DRIVINGT_FIRESECONDARY         = $03004C07; (* Alternative fire button *)
  2000.   {$EXTERNALSYM DIBUTTON_DRIVINGT_FIRESECONDARY}
  2001.   DIBUTTON_DRIVINGT_ACCELERATE_LINK       = $0303D4E0; (* Fallback Accelerate button *)
  2002.   {$EXTERNALSYM DIBUTTON_DRIVINGT_ACCELERATE_LINK}
  2003.   DIBUTTON_DRIVINGT_STEER_LEFT_LINK       = $0300CCE4; (* Fallback Steer Left button *)
  2004.   {$EXTERNALSYM DIBUTTON_DRIVINGT_STEER_LEFT_LINK}
  2005.   DIBUTTON_DRIVINGT_STEER_RIGHT_LINK      = $0300CCEC; (* Fallback Steer Right button *)
  2006.   {$EXTERNALSYM DIBUTTON_DRIVINGT_STEER_RIGHT_LINK}
  2007.   DIBUTTON_DRIVINGT_BARREL_UP_LINK        = $030144E0; (* Fallback Barrel up button *)
  2008.   {$EXTERNALSYM DIBUTTON_DRIVINGT_BARREL_UP_LINK}
  2009.   DIBUTTON_DRIVINGT_BARREL_DOWN_LINK      = $030144E8; (* Fallback Barrel down button *)
  2010.   {$EXTERNALSYM DIBUTTON_DRIVINGT_BARREL_DOWN_LINK}
  2011.   DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK      = $030244E4; (* Fallback Rotate left button *)
  2012.   {$EXTERNALSYM DIBUTTON_DRIVINGT_ROTATE_LEFT_LINK}
  2013.   DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK     = $030244EC; (* Fallback Rotate right button *)
  2014.   {$EXTERNALSYM DIBUTTON_DRIVINGT_ROTATE_RIGHT_LINK}
  2015.   DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK      = $0307C4E4; (* Fallback Glance Left button *)
  2016.   {$EXTERNALSYM DIBUTTON_DRIVINGT_GLANCE_LEFT_LINK}
  2017.   DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK     = $0307C4EC; (* Fallback Glance Right button *)
  2018.   {$EXTERNALSYM DIBUTTON_DRIVINGT_GLANCE_RIGHT_LINK}
  2019.   DIBUTTON_DRIVINGT_DEVICE                = $030044FE; (* Show input device and controls *)
  2020.   {$EXTERNALSYM DIBUTTON_DRIVINGT_DEVICE}
  2021.   DIBUTTON_DRIVINGT_PAUSE                 = $030044FC; (* Start / Pause / Restart game *)
  2022.   {$EXTERNALSYM DIBUTTON_DRIVINGT_PAUSE}
  2023. (*--- Flight Simulator - Civilian
  2024.       Plane control is the primary objective  ---*)
  2025.   DIVIRTUAL_FLYING_CIVILIAN               = $04000000;
  2026.   {$EXTERNALSYM DIVIRTUAL_FLYING_CIVILIAN}
  2027.   DIAXIS_FLYINGC_BANK                     = $04008A01; (* Roll ship left / right *)
  2028.   {$EXTERNALSYM DIAXIS_FLYINGC_BANK}
  2029.   DIAXIS_FLYINGC_PITCH                    = $04010A02; (* Nose up / down *)
  2030.   {$EXTERNALSYM DIAXIS_FLYINGC_PITCH}
  2031.   DIAXIS_FLYINGC_THROTTLE                 = $04039203; (* Throttle *)
  2032.   {$EXTERNALSYM DIAXIS_FLYINGC_THROTTLE}
  2033.   DIBUTTON_FLYINGC_VIEW                   = $04002401; (* Cycle through view options *)
  2034.   {$EXTERNALSYM DIBUTTON_FLYINGC_VIEW}
  2035.   DIBUTTON_FLYINGC_DISPLAY                = $04002402; (* Select next dashboard / heads up display option *)
  2036.   {$EXTERNALSYM DIBUTTON_FLYINGC_DISPLAY}
  2037.   DIBUTTON_FLYINGC_GEAR                   = $04002C03; (* Gear up / down *)
  2038.   {$EXTERNALSYM DIBUTTON_FLYINGC_GEAR}
  2039.   DIBUTTON_FLYINGC_MENU                   = $040004FD; (* Show menu options *)
  2040.   {$EXTERNALSYM DIBUTTON_FLYINGC_MENU}
  2041. (*--- Priority 2 controls                            ---*)
  2042.   DIHATSWITCH_FLYINGC_GLANCE              = $04004601; (* Look around *)
  2043.   {$EXTERNALSYM DIHATSWITCH_FLYINGC_GLANCE}
  2044.   DIAXIS_FLYINGC_BRAKE                    = $04046A04; (* Apply Brake *)
  2045.   {$EXTERNALSYM DIAXIS_FLYINGC_BRAKE}