/ source / tools / src / getdxdidf.cpp
getdxdidf.cpp
  1  // compile with:
  2  // gcc -o getdxdidf.exe src\getdxdidf.c -Ic:\mingw32\dx6\include -Lc:\mingw32\dx6\lib -ldxguid -ldinput -mwindows
  3  
  4  #include "compat.h"
  5  
  6  #define NEED_DINPUT_H
  7  #include "windows_inc.h"
  8  
  9  char const * WhatGUID(const GUID *guid)
 10  {
 11      if (guid == &GUID_XAxis) return "&GUID_XAxis";
 12      if (guid == &GUID_YAxis) return "&GUID_YAxis";
 13      if (guid == &GUID_ZAxis) return "&GUID_ZAxis";
 14      if (guid == &GUID_RxAxis) return "&GUID_RxAxis";
 15      if (guid == &GUID_RyAxis) return "&GUID_RyAxis";
 16      if (guid == &GUID_RzAxis) return "&GUID_RzAxis";
 17      if (guid == &GUID_Slider) return "&GUID_Slider";
 18  
 19      if (guid == &GUID_Button) return "&GUID_Button";
 20      if (guid == &GUID_Key) return "&GUID_Key";
 21  
 22      if (guid == &GUID_POV) return "&GUID_POV";
 23  
 24      if (guid == &GUID_Unknown) return "&GUID_Unknown";
 25  
 26      return "NULL";
 27  }
 28  
 29  
 30  
 31  int WINAPI WinMain(HINSTANCE hInstance ATTRIBUTE((unused)), HINSTANCE hPrevInstance ATTRIBUTE((unused)), LPSTR lpCmdLine ATTRIBUTE((unused)), int nCmdShow ATTRIBUTE((unused)))
 32  {
 33      FILE *fp;
 34      DWORD i;
 35  
 36      fp = fopen("didf.txt", "w");
 37      if (!fp) return -1;
 38      setvbuf(fp, NULL, _IONBF, 0);
 39  
 40  
 41      fprintf(fp,
 42          "// Keyboard\n"
 43          "\n"
 44          "static DIOBJECTDATAFORMAT c_dfDIKeyboard_odf[] = {\n"
 45          );
 46  
 47      for (i=0; i<c_dfDIKeyboard.dwNumObjs; i++) {
 48          fprintf(fp,
 49              "\t{ %s, %lu, 0x%08lu, 0x%08lu },\n",
 50                  WhatGUID(c_dfDIKeyboard.rgodf[i].pguid),
 51                  c_dfDIKeyboard.rgodf[i].dwOfs,
 52                  c_dfDIKeyboard.rgodf[i].dwType,
 53                  c_dfDIKeyboard.rgodf[i].dwFlags
 54              );
 55      }
 56      fprintf(fp,
 57          "};\n"
 58          "\n"
 59          "const DIDATAFORMAT c_dfDIKeyboard = { %lu, %lu, 0x%08lu, %lu, %lu, c_dfDIKeyboard_odf };\n\n",
 60          c_dfDIKeyboard.dwSize,
 61              c_dfDIKeyboard.dwObjSize,
 62              c_dfDIKeyboard.dwFlags,
 63              c_dfDIKeyboard.dwDataSize,
 64              c_dfDIKeyboard.dwNumObjs
 65          );
 66  
 67  
 68  
 69      fprintf(fp,
 70          "// Mouse\n"
 71          "\n"
 72          "static DIOBJECTDATAFORMAT c_dfDIMouse_odf[] = {\n"
 73          );
 74  
 75      for (i=0; i<c_dfDIMouse.dwNumObjs; i++) {
 76          fprintf(fp,
 77              "\t{ %s, %lu, 0x%08lu, 0x%08lu },\n",
 78                  WhatGUID(c_dfDIMouse.rgodf[i].pguid),
 79                  c_dfDIMouse.rgodf[i].dwOfs,
 80                  c_dfDIMouse.rgodf[i].dwType,
 81                  c_dfDIMouse.rgodf[i].dwFlags
 82              );
 83      }
 84      fprintf(fp,
 85          "};\n"
 86          "\n"
 87          "const DIDATAFORMAT c_dfDIMouse = { %lu, %lu, 0x%08lu, %lu, %lu, c_dfDIMouse_odf };\n\n",
 88          c_dfDIMouse.dwSize,
 89              c_dfDIMouse.dwObjSize,
 90              c_dfDIMouse.dwFlags,
 91              c_dfDIMouse.dwDataSize,
 92              c_dfDIMouse.dwNumObjs
 93          );
 94  
 95  
 96  
 97      fprintf(fp,
 98          "// Joystick\n"
 99          "\n"
100          "static DIOBJECTDATAFORMAT c_dfDIJoystick_odf[] = {\n"
101          );
102  
103      for (i=0; i<c_dfDIJoystick.dwNumObjs; i++) {
104          fprintf(fp,
105              "\t{ %s, %lu, 0x%08lu, 0x%08lu },\n",
106                  WhatGUID(c_dfDIJoystick.rgodf[i].pguid),
107                  c_dfDIJoystick.rgodf[i].dwOfs,
108                  c_dfDIJoystick.rgodf[i].dwType,
109                  c_dfDIJoystick.rgodf[i].dwFlags
110              );
111      }
112      fprintf(fp,
113          "};\n"
114          "\n"
115          "const DIDATAFORMAT c_dfDIJoystick = { %lu, %lu, 0x%08lu, %lu, %lu, c_dfDIJoystick_odf };\n\n",
116          c_dfDIJoystick.dwSize,
117              c_dfDIJoystick.dwObjSize,
118              c_dfDIJoystick.dwFlags,
119              c_dfDIJoystick.dwDataSize,
120              c_dfDIJoystick.dwNumObjs
121          );
122  
123  
124      fclose(fp);
125  
126      return 0;
127  }