/*
         * public static void Process(States value, Controller controller)
         * {
         *  if (Reactive.ButtonPressed(value, BoatForward))
         *  {
         *      controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.ShieldCell, 200);
         *  }
         * }
         */

        public static void Process(States value, Controller controller)
        {
            if (Reactive.ButtonPressed(value, BoatForward) &&
                controller.SharedState.CurrentMode == EliteSharedState.Mode.Fighting)
            {
                if (null == fireShieldCells)
                {
                    counter         = 0;
                    fireShieldCells = timer.Subscribe(x =>
                    {
                        if (counter % 12 == 0)  // 0, 12000, 240000
                        {
                            controller.Logger.LogDebug("Fire shield cells");
                            controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.ShieldCell, 200);
                        }
                        if (counter == 6 || counter == 21)  // 6000, 21000
                        {
                            controller.Logger.LogDebug("Fire heat sink");
                            controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.HeatSink, 200);
                        }
                        counter++;
                    });
                }
            }
            else
            {
                if (null != fireShieldCells)
                {
                    fireShieldCells.Dispose();
                    fireShieldCells = null;
                    controller.Logger.LogDebug("Fire shield cells: Stopped");
                }
            }
        }
示例#2
0
 public static void Process(States value, Controller controller)
 {
     if (Reactive.ButtonPressed(value, button6))
     {
         Task.Run(async() => await controller.TypeFromClipboard().ConfigureAwait(false));
     }
 }
 public static void Process(States value, Controller controller)
 {
     if (Reactive.ButtonPressed(value, BoatBack))
     {
         controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.HeatSink, 200);
     }
 }
示例#4
0
        public static void Process(States value, Controller controller)
        {
            if (false == controller.SharedState.ProgramIdsMode)
            {
                return; // Not programming
            }
            // Change vJoyTypes.StickAndPedals
            if (Reactive.ButtonPressed(value, (uint)Button.Button1))
            {
                // swap next
                SwapNext(controller, vJoyTypes.StickAndPedals, new string[] { vJoyTypes.Throttle, vJoyTypes.Commander, vJoyTypes.Virtual });
            }

            // Change vJoyTypes.Throttle
            if (Reactive.ButtonPressed(value, (uint)Button.Button2))
            {
                // swap next
                SwapNext(controller, vJoyTypes.Throttle, new string[] { vJoyTypes.Commander, vJoyTypes.Virtual });
            }

            // Change vJoyTypes.Commander
            if (Reactive.ButtonPressed(value, (uint)Button.Button3))
            {
                Swap(controller, vJoyTypes.Commander, vJoyTypes.Virtual);
            }
        }
示例#5
0
 public static void Process(States value, Controller controller)
 {
     if (Reactive.ButtonPressed(value, SpeedbrakeForward) &&
         controller.SharedState.CurrentMode == EliteSharedState.Mode.Fighting)
     {
         if (null == cycleSubsystems)
         {
             cycleSubsystems = timer.Subscribe(x =>
             {
                 controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.CycleSubsystem, 200);
                 controller.Logger.LogDebug("Cycle Subsystem: Next");
             });
             controller.Logger.LogDebug("Cycle Subsystem: Running");
         }
     }
     else
     {
         if (null != cycleSubsystems)
         {
             cycleSubsystems.Dispose();
             cycleSubsystems = null;
             controller.Logger.LogDebug("Cycle Subsystem: Stopped");
         }
     }
 }
示例#6
0
 public static void Process(States value, Controller controller)
 {
     if (Reactive.ButtonPressed(value, pinkyBack))
     {
         controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.TextMessageEntry, 200);
         Task.Run(async() => await controller.TypeFullString("/clear").ConfigureAwait(false));
         controller.Logger.LogDebug("Clear Message Log");
     }
 }
示例#7
0
        public static void Process(States value, Controller controller)
        {
            if (Reactive.ButtonPressed(value, rightThrottleIdle))
            {
                controller.SharedState.ChangeGear(true);
            }

            if (Reactive.ButtonReleased(value, rightThrottleIdle))
            {
                controller.SharedState.ChangeGear(false);
            }
        }
示例#8
0
 public static void Process(States value, Controller controller)
 {
     if (Reactive.ButtonPressed(value, button1))
     {
         // Deployed
         controller.SharedState.ChangeGear(true);
     }
     else if (Reactive.ButtonReleased(value, button1))
     {
         // Retracted
         controller.SharedState.ChangeGear(false);
     }
 }
示例#9
0
 public static void Process(States value, Controller controller)
 {
     if (Reactive.ButtonPressed(value, muteButton))
     {
         // Mute EDDI
         Task.Run(async() => await controller.SendKeyCombo(new byte[] { }, 0xCC).ConfigureAwait(false));   // KEY_F11
     }
     else if (Reactive.ButtonReleased(value, muteButton))
     {
         // Unmute EDDI
         Task.Run(async() => await controller.SendKeyCombo(new byte[] { }, 0xCD).ConfigureAwait(false));   // KEY_F12
     }
 }
 public static void Process(States value, Controller controller)
 {
     if (Reactive.ButtonPressed(value, FuelRight))
     {
         controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.SilentRunningToggle, 200);
         controller.Logger.LogDebug("Silent Running Activated");
     }
     if (Reactive.ButtonReleased(value, FuelRight))
     {
         controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.SilentRunningToggle, 200);
         controller.Logger.LogDebug("Silent Running Deactivated");
     }
 }
示例#11
0
 public static void Process(States value, Controller controller)
 {
     if (Reactive.ButtonPressed(value, MIC))
     {
         controller.SharedState.Mute = true;
         controller.DepressKey(0xCA);  // KEY_F9
     }
     if (Reactive.ButtonReleased(value, MIC))
     {
         controller.SharedState.Mute = false;
         controller.ReleaseKey(0xCA);  // KEY_F9
     }
 }
        public static void PrimaryProcess(States value, Controller controller)
        {
            // Volume 1 Tip Up - Windows Volume
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button26))
            {
                WindowsGain += (float)1.0;
                VoiceMeeter.Remote.SetParameter(WindowsDefault, WindowsGain);
            }

            // Volume 1 Tip Down - Windows Volume
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button25))
            {
                WindowsGain -= (float)1.0;
                VoiceMeeter.Remote.SetParameter(WindowsDefault, WindowsGain);
            }

            // Volume 2 Base Up - Next Spotify Track
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button20))
            {
                Utils.SendVKeyToProcess("Spotify", MediaNext);
            }

            // Volume 2 Base Down - Previous Spotify Track
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button19))
            {
                Utils.SendVKeyToProcess("Spotify", MediaPrevious);
            }

            // Volume 2 Tip Up - Amazon Fast Forward 10 sec
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button17))
            {
                Utils.SendKeyToProcess("firefox", RightArrow).Wait();
            }

            // Volume 2 Tip Down - Amazon Rewind 10 sec
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button18))
            {
                Utils.SendKeyToProcess("firefox", LeftArrow).Wait();
            }

            // Volume 2 Button  Amazon Play/Pause
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button21))
            {
                Utils.SendKeyToProcess("firefox", Space).Wait();
            }

            // Volume 1 Button
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button22))
            {
            }
        }
示例#13
0
        public static void ProcessCommon(States value, Controller controller)
        {
            // Kill process
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button5))
            {
                controller.Logger.LogDebug("Kill process");
                Utils.KillProcess("EliteDangerous64").Wait();
            }

            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button12))
            {
                // Take Picture  ALT-F10
                Task.Run(async() => await controller.SendKeyCombo(new byte[] { 0x82 }, 0xCB).ConfigureAwait(false));
                controller.Logger.LogDebug("Take Picture");
            }
        }
示例#14
0
 public static void Process(States value, Controller controller)
 {
     if (Reactive.ButtonPressed(value, leftThrottleParked))
     {
         // Set the left throttle to the middle so we don't move forward or backward when the throttle is parked
         controller.SharedState.LeftThrottleEnabled = false;
         controller.SetJoystickAxis(16 * 1024, vJoy.Wrapper.Axis.HID_USAGE_RZ, vJoyTypes.Throttle);
         controller.Logger.LogDebug("Left Throttle Parked");
     }
     else if (Reactive.ButtonReleased(value, leftThrottleParked))
     {
         // Left throttle is set to move forward and backward from the center
         controller.SharedState.LeftThrottleEnabled = true;
         controller.SetJoystickAxis(32 * 1024, vJoy.Wrapper.Axis.HID_USAGE_RZ, vJoyTypes.Throttle);
         controller.Logger.LogDebug("Left Throttle Activated");
     }
 }
示例#15
0
        public static void Process(States value, Controller controller)
        {
            if ((value.Current.Buttons & (byte)Button.ButtonAll) == (byte)Button.ButtonAll)
            {
                controller.SetJoystickButton(true, MappedButtons.VoiceButtonAll, vJoyTypes.Commander);
                return;
            }

            uint buttonIndex = MappedButtons.VoiceButtonAll;

            foreach (Button button in Enum.GetValues(typeof(Button)))
            {
                controller.SetJoystickButton(
                    Reactive.ButtonPressed(value, (uint)button), buttonIndex, vJoyTypes.Commander);
                buttonIndex++;
            }
        }
示例#16
0
        public static void ProcessNorm(States value, Controller controller)
        {
            // Camera Quit
            if (Reactive.ButtonReleased(value, (uint)BBI32Button.Button1))
            {
                // Quit Fixed Camera
                controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.CameraEnabled, 150);
            }
            if (Reactive.ButtonReleased(value, (uint)BBI32Button.Button2))
            {
                // Quit Free Camera
                QuitFreeCamera(controller);
            }

            // Orbit Lines Toggle On/Off
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button7))
            {
                // Orbit Lines Toggle
                controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.OrbitLinesToggle, 150);

                controller.SharedState.OrbitLines = !controller.SharedState.OrbitLines;
                controller.Logger.LogDebug($"OrbitLines: {controller.SharedState.OrbitLines}");
            }

            // FFS Scan 180 / Rotation Lock
            if (Reactive.ButtonPressedOrReleased(value, (uint)BBI32Button.Button8))
            {
                // Rotation Lock Toggle
                controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.LockRotationToggle, 150);
            }

            // Cockpit HUD Toggle On/Off
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button9))
            {
                // CRTL+ALT+G
                Task.Run(async() => await controller.SendKeyCombo(new byte[] { 0x80, 0x82 }, 0x47).ConfigureAwait(false));

                controller.Logger.LogDebug("Toggle HeadsUpDisplay");
            }

            // UI Panel Focus  <UIFocus>
            if (Reactive.ButtonPressedOrReleased(value, (uint)BBI32Button.Button10))
            {
                // Mapped to BBI32Button10 = vJoy0  Button 30
            }
        }
 public static void Process(States value, Controller controller)
 {
     if (Reactive.ButtonPressed(value, Button8))
     {
         // Oculus ASW off  CRTL+KP1
         Task.Run(async() => await controller.SendKeyCombo(new byte[] { 0x80 }, 0x31).ConfigureAwait(false));
     }
     if (Reactive.ButtonPressed(value, Button7))
     {
         // Take Picture  ALT-F10
         Task.Run(async() => await controller.SendKeyCombo(new byte[] { 0x82 }, 0xCB).ConfigureAwait(false));
     }
     if (Reactive.ButtonPressed(value, Button5))
     {
         // HUD off  CRTL+ALT+G
         Task.Run(async() => await controller.SendKeyCombo(new byte[] { 0x80, 0x82 }, 0x47).ConfigureAwait(false));
     }
 }
示例#18
0
        public static void Process(States value, Controller controller)
        {
            if (controller.SharedState.HardpointsDeployed == false &&
                Reactive.ButtonPressed(value, EORDown))
            {
                controller.Logger.LogDebug($"Hardpoints out {controller.SharedState.HardpointsDeployed}");
                Task.Run(async() => await controller.SendKeyCombo(new byte[] { 0x80, 0x82 }, 0x48).ConfigureAwait(false));
                controller.SharedState.HardpointsDeployed = true;
            }

            if (controller.SharedState.HardpointsDeployed &&
                Reactive.ButtonReleased(value, EORDown))
            {
                controller.Logger.LogDebug($"Hardpoints in {controller.SharedState.HardpointsDeployed}");
                Task.Run(async() => await controller.SendKeyCombo(new byte[] { 0x80, 0x82 }, 0x48).ConfigureAwait(false));
                controller.SharedState.HardpointsDeployed = false;
            }
        }
        public static void Process(States value, Controller controller)
        {
            // Camera On/Off
            if (Reactive.ButtonPressedOrReleased(value, button22))
            {
                controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.CameraDisabled, 150);
            }

            // Momentary Camera On/Off
            // Camera turns on so we can switch views quickly
            if (Reactive.ButtonPressed(value, button15))
            {
                // Start Camera
                controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.CameraEnabled, 150);
            }
            else if (Reactive.ButtonReleased(value, button15))
            {
                // Quit Camera
                controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.CameraDisabled, 150);
            }
        }
示例#20
0
        public static void ProcessFree(States value, Controller controller)
        {
            // Free Camera On
            if (Reactive.ButtonPressedOrReleased(value, (uint)BBI32Button.Button2))
            {
                // Start Free Camera without waiting
                StartFreeCamera(controller);
            }

            if (Reactive.ButtonPressedOrReleased(value, (uint)BBI32Button.Button7))
            {
            }

            // Rotation Lock Toggle
            if (Reactive.ButtonPressedOrReleased(value, (uint)BBI32Button.Button8))
            {
                controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.LockRotationToggle, 150);
            }

            // Camera HUD Toggle On/Off
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button9))
            {
                // J Key
                Task.Run(async() => await controller.SendKeyCombo(new byte[] { }, 0x4A).ConfigureAwait(false));
            }

            // World Lock Toggle
            if (Reactive.ButtonPressedOrReleased(value, (uint)BBI32Button.Button10))
            {
                controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.LockToWorldToggle, 150);
            }

            // Ship or Camera Control
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button11))
            {
                controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.LockToVehicalToggle, 150);
            }
        }
示例#21
0
        public static void ProcessFixedCamera(States value, Controller controller)
        {
            // Camera On
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button1))
            {
                // Start Camera
                controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.CameraEnabled, 150);
            }

            // Camera HUD Toggle On/Off
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button9))
            {
                // J Key
                Task.Run(async() => await controller.SendKeyCombo(new byte[] { }, 0x4A).ConfigureAwait(false));
            }

            // Vanity Camera Next
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button11))
            {
                // Vanity Camera Next
                controller.CallActivateButton(vJoyTypes.Virtual, MappedButtons.NextCamera, 150);
            }
        }
示例#22
0
        public static void Process(States value, Controller controller)
        {
            if (controller.SharedState != null)
            {
                // If either state of the Autopilot switch is released
                if (Reactive.MultiSwitchStateOff(value, apahButton))
                {
                    controller.SharedState.ChangeMode(EliteSharedState.Mode.Travel);
                }

                if (Reactive.ButtonPressed(value, Button27))
                {
                    controller.SharedState.ChangeMode(EliteSharedState.Mode.Fighting);
                }

                if (Reactive.ButtonPressed(value, Button28))
                {
                    controller.SharedState.ChangeMode(EliteSharedState.Mode.Mining);
                }

                if (Reactive.ButtonPressed(value, Button01))
                {
                    controller.SharedState.ThrottleShift1 = true;
                }

                if (Reactive.ButtonReleased(value, Button01))
                {
                    controller.SharedState.ThrottleShift1 = false;
                }

                if (Reactive.ButtonReleased(value, Button15))
                {
                    controller.SharedState.ThrottleShift2 = true;
                }
            }
        }
        public static void NormalProcess(States value, Controller controller)
        {
            // Volume 1 Base Up
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button23))
            {
                EliteDangerousGain += (float)1.0;
                VoiceMeeter.Remote.SetParameter(EliteDangerous, EliteDangerousGain);
            }

            // Volume 1 Base Down
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button24))
            {
                EliteDangerousGain -= (float)1.0;
                VoiceMeeter.Remote.SetParameter(EliteDangerous, EliteDangerousGain);
            }

            // Volume 1 Tip Up
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button26))
            {
                VoiceAttackGain += (float)1.0;
                VoiceMeeter.Remote.SetParameter(VoiceAttack, VoiceAttackGain);
            }

            // Volume 1 Tip Down
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button25))
            {
                VoiceAttackGain -= (float)1.0;
                VoiceMeeter.Remote.SetParameter(VoiceAttack, VoiceAttackGain);
            }

            // Volume 2 Base Up
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button20))
            {
                SpotifyGain += (float)1.0;
                VoiceMeeter.Remote.SetParameter(Spotify, SpotifyGain);
            }

            // Volume 2 Base Down
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button19))
            {
                SpotifyGain -= (float)1.0;
                VoiceMeeter.Remote.SetParameter(Spotify, SpotifyGain);
            }

            // Volume 2 Tip Up
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button17))
            {
                DiscordGain += (float)1.0;
                VoiceMeeter.Remote.SetParameter(Discord, DiscordGain);
            }

            // Volume 2 Tip Down
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button18))
            {
                DiscordGain -= (float)1.0;
                VoiceMeeter.Remote.SetParameter(Discord, DiscordGain);
            }

            // Volume 2 Button  Spotify Play/Pause
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button21))
            {
                // Launch if not running
                if (Utils.ProcessRunning("Spotify"))
                {
                    Utils.SendVKeyToProcess("Spotify", MediaPlayPause);
                }
                else
                {
                    Utils.Launch("spotify:");
                }
            }

            // Volume 1 Button  Restart Audio Engine
            if (Reactive.ButtonPressed(value, (uint)BBI32Button.Button22))
            {
                VoiceMeeter.Remote.Restart();
            }
        }