DirectInput.pas
上传用户:ctlcnc
上传日期:2021-12-10
资源大小:4933k
文件大小:319k
源码类别:

2D图形编程

开发平台:

Delphi

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