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 }