static void UpdateGamepad(DJHControllerMap Map) { iReport.bDevice = (byte)1; if (Map.TT_normal != 0) { iReport.AxisY = (Map.TT_normal - 0x80) * 0x1FF + 0x3FFF; } iReport.Dial = ((Map.Filter_step * 0x1FFF) + (Map.Filter_normal * 0x20) - 0x100) * 3; iReport.Slider = (Map.Slider_step * 0x1FFF) + (Map.Slider_normal * 0x20); int a = 0x0; if (Map.PS >= 0x10) { a = 0x40; Map.PS -= 0x10; } else { a = 0x0; } iReport.Buttons = (uint)Map.Buttons + (uint)(Map.PS << 0x04) + (uint)a; if (Map.DPAD == 0x0F) { iReport.bHats = 0xFFFFFF; } else { iReport.bHats = (uint)4487 * Map.DPAD; } // Feed the driver Gamepad.UpdateVJD(1, ref iReport); }
static void ReadDJHDevice(string DevicePath) { // Create handle to the device HIDDevice DJH = new HIDDevice(DevicePath, false); // Read bytes & map DJH DJHControllerMap Map = new DJHControllerMap(); while (true) { byte[] DJHBytes = DJH.read(); // Map Map.Buttons = DJHBytes[1]; Map.DPAD = DJHBytes[3]; Map.PS = DJHBytes[2]; Map.TT_normal = DJHBytes[7]; Map.Filter_normal = DJHBytes[20]; Map.Filter_step = DJHBytes[21]; Map.Slider_normal = DJHBytes[22]; Map.Slider_step = DJHBytes[23]; // Print Console.Write("\rButton: {0}\t DPAD: {1}\t PS: {2}\t TT: {3}\t Filter: {4}|{5}\tSlider: {6}|{7}\t", Map.Buttons, Map.DPAD, Map.PS, Map.TT_normal, Map.Filter_normal, Map.Filter_step, Map.Slider_normal, Map.Slider_step); // Report vJoy UpdateGamepad(Map); } }