Esempio n. 1
0
        private StateControllerMapping findStateControllerMappings(StateTransition stateTransition, List <StateControllerMapping> stateMappings)
        {
            StateControllerMapping mapping = null;

            if (stateTransition == null)
            {
                foreach (StateControllerMapping current in stateMappings)
                {
                    if (current.stateName == "Default")
                    {
                        mapping = current;
                        break;
                    }
                }
            }
            else
            {
                foreach (StateControllerMapping current in stateMappings)
                {
                    if (current.stateName == stateTransition.stateName)
                    {
                        mapping = current;
                    }
                }
            }

            return(mapping);
        }
Esempio n. 2
0
        public static void addButtonToAltTabCommand(StateControllerMapping scm,
                                                    FFXICompanion.Settings.Button controllerButton,
                                                    Settings.Action buttonAction)
        {
            ControllerMapping cm = new ControllerMapping();

            cm.button        = new ControllerButton(controllerButton, buttonAction);
            cm.altTabCommand = new AltTabCommand();
            scm.controllerMappings.Add(cm);
        }
Esempio n. 3
0
        public static void addButtonToOneKeyPressAndReleaseMapping(StateControllerMapping scm,
                                                                   FFXICompanion.Settings.Button controllerButton,
                                                                   Settings.Action buttonAction,
                                                                   Settings.Key key)
        {
            ControllerMapping cm = new ControllerMapping();

            cm.button            = new ControllerButton(controllerButton, buttonAction);
            cm.keyPressesCommand = new KeyPressesCommand();
            cm.keyPressesCommand.keyPresses.Add(new KeyPress(key, Settings.Action.PRESSED));
            cm.keyPressesCommand.keyPresses.Add(new KeyPress(key, Settings.Action.RELEASED));
            scm.controllerMappings.Add(cm);
        }
Esempio n. 4
0
        public static void addButtonToKeyPressMapping(StateControllerMapping scm,
                                                      FFXICompanion.Settings.Button controllerButton,
                                                      Settings.Action buttonAction,
                                                      Settings.Key key,
                                                      Settings.Action keyPress1)
        {
            ControllerMapping cm = new ControllerMapping();

            cm.button            = new ControllerButton(controllerButton, buttonAction);
            cm.keyPressesCommand = new KeyPressesCommand();
            cm.keyPressesCommand.keyPresses.Add(new KeyPress(key, keyPress1));
            scm.controllerMappings.Add(cm);
        }
Esempio n. 5
0
 public static void createControlKeyButtonMappings(StateControllerMapping mapping)
 {
     // addButtonToKeyPressMapping(mapping, FFXICompanion.Settings.Button.LB, Settings.Action.PRESSED, Settings.Key.LeftShift  , Settings.Action.PRESSED );
     // addButtonToKeyPressMapping(mapping, FFXICompanion.Settings.Button.LT, Settings.Action.PRESSED, Settings.Key.Control  , Settings.Action.PRESSED );
     // addButtonToKeyPressMapping(mapping, FFXICompanion.Settings.Button.RB, Settings.Action.PRESSED, Settings.Key.LOGI_WIN   , Settings.Action.PRESSED );
     // addButtonToKeyPressMapping(mapping, FFXICompanion.Settings.Button.RT, Settings.Action.PRESSED, Settings.Key.LeftAlt , Settings.Action.PRESSED );
     // addButtonToKeyPressMapping(mapping, FFXICompanion.Settings.Button.GUIDE, Settings.Action.PRESSED, Settings.Key.RightAlt, Settings.Action.PRESSED);
     // addButtonToKeyPressMapping(mapping, FFXICompanion.Settings.Button.LB, Settings.Action.RELEASED, Settings.Key.LeftShift , Settings.Action.RELEASED);
     // addButtonToKeyPressMapping(mapping, FFXICompanion.Settings.Button.LT, Settings.Action.RELEASED, Settings.Key.Control , Settings.Action.RELEASED);
     // addButtonToKeyPressMapping(mapping, FFXICompanion.Settings.Button.RB, Settings.Action.RELEASED, Settings.Key.LOGI_WIN  , Settings.Action.RELEASED);
     // addButtonToKeyPressMapping(mapping, FFXICompanion.Settings.Button.RT, Settings.Action.RELEASED, Settings.Key.LeftAlt, Settings.Action.RELEASED);
     // addButtonToKeyPressMapping(mapping, FFXICompanion.Settings.Button.GUIDE, Settings.Action.RELEASED, Settings.Key.RightAlt, Settings.Action.RELEASED);
 }
Esempio n. 6
0
        public static void addMacroState(CompanionSettings settings, String stateName)
        {
            StateControllerMapping macroState = new StateControllerMapping();

            macroState.stateName = stateName;

            addButtonToOneKeyPressAndReleaseMapping(macroState, FFXICompanion.Settings.Button.DL, Settings.Action.PRESSED, Settings.Key.Numpad1);
            addButtonToOneKeyPressAndReleaseMapping(macroState, FFXICompanion.Settings.Button.DU, Settings.Action.PRESSED, Settings.Key.Numpad2);
            addButtonToOneKeyPressAndReleaseMapping(macroState, FFXICompanion.Settings.Button.DD, Settings.Action.PRESSED, Settings.Key.Numpad3);
            addButtonToOneKeyPressAndReleaseMapping(macroState, FFXICompanion.Settings.Button.DR, Settings.Action.PRESSED, Settings.Key.Numpad4);
            addButtonToOneKeyPressAndReleaseMapping(macroState, FFXICompanion.Settings.Button.X, Settings.Action.PRESSED, Settings.Key.Numpad5);
            addButtonToOneKeyPressAndReleaseMapping(macroState, FFXICompanion.Settings.Button.Y, Settings.Action.PRESSED, Settings.Key.Numpad6);
            addButtonToOneKeyPressAndReleaseMapping(macroState, FFXICompanion.Settings.Button.A, Settings.Action.PRESSED, Settings.Key.Numpad7);
            addButtonToOneKeyPressAndReleaseMapping(macroState, FFXICompanion.Settings.Button.B, Settings.Action.PRESSED, Settings.Key.Numpad8);
            addButtonToOneKeyPressAndReleaseMapping(macroState, FFXICompanion.Settings.Button.BACK, Settings.Action.PRESSED, Settings.Key.Numpad9);
            addButtonToOneKeyPressAndReleaseMapping(macroState, FFXICompanion.Settings.Button.START, Settings.Action.PRESSED, Settings.Key.Numpad0);

            //left stick
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.LSU, Settings.Action.PRESSED, Settings.Key.W, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.LSU, Settings.Action.RELEASED, Settings.Key.W, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.LSL, Settings.Action.PRESSED, Settings.Key.A, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.LSL, Settings.Action.RELEASED, Settings.Key.A, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.LSD, Settings.Action.PRESSED, Settings.Key.S, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.LSD, Settings.Action.RELEASED, Settings.Key.S, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.LSR, Settings.Action.PRESSED, Settings.Key.D, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.LSR, Settings.Action.RELEASED, Settings.Key.D, Settings.Action.RELEASED);

            //right stick
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.RSU, Settings.Action.PRESSED, Settings.Key.I, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.RSU, Settings.Action.RELEASED, Settings.Key.I, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.RSL, Settings.Action.PRESSED, Settings.Key.J, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.RSL, Settings.Action.RELEASED, Settings.Key.J, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.RSD, Settings.Action.PRESSED, Settings.Key.K, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.RSD, Settings.Action.RELEASED, Settings.Key.K, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.RSR, Settings.Action.PRESSED, Settings.Key.L, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(macroState, FFXICompanion.Settings.Button.RSR, Settings.Action.RELEASED, Settings.Key.L, Settings.Action.RELEASED);

            // createControlKeyButtonMappings(macroState);

            settings.stateMappings.Add(macroState);
        }
Esempio n. 7
0
        static void Main(string[] args)
        {
            CompanionSettings settings = new CompanionSettings();

            //default -> select button ->

            //default -> LB, LT, RB, RT, LB+LT, RB+RT, GUIDE -> macro state
            //



            settings.states.Add(new State("Default", "The default state"));
            settings.states.Add(new State("Macro Book State", null));
            settings.states.Add(new State("Macro State", null));

// Settings.Key.LeftShift  ,
// Settings.Key.Control  , S
// Settings.Key.LOGI_WIN   ,
// Settings.Key.LeftAlt , Se
// D, Settings.Key.RightAlt,
// Settings.Key.LeftShift ,
// Settings.Key.Control , S
// Settings.Key.LOGI_WIN  ,
// Settings.Key.LeftAlt, Se
// ED, Settings.Key.RightAlt

            addStateTransition(settings, "Macro Book State", "Macro Book State Transition", FFXICompanion.Settings.Button.BACK);
            addStateTransition(settings, "Macro State", "1", FFXICompanion.Settings.Button.GUIDE, Settings.Key.LeftShift);
            addStateTransition(settings, "Macro State", "2", FFXICompanion.Settings.Button.LB, Settings.Key.Control);
            addStateTransition(settings, "Macro State", "3", FFXICompanion.Settings.Button.LT, Settings.Key.LOGI_WIN);
            addStateTransition(settings, "Macro State", "4", FFXICompanion.Settings.Button.RB, Settings.Key.LeftAlt);
            addStateTransition(settings, "Macro State", "5", FFXICompanion.Settings.Button.RT, Settings.Key.RightAlt);
            addTwoButtonStateTransition(settings, "Macro State", "6", FFXICompanion.Settings.Button.LB, FFXICompanion.Settings.Button.RB, Settings.Key.LOGI_MENU);
            addTwoButtonStateTransition(settings, "Macro State", "7", FFXICompanion.Settings.Button.LT, FFXICompanion.Settings.Button.RT, Settings.Key.RightControl);

            StateControllerMapping defaultStateCM = new StateControllerMapping();

            defaultStateCM.stateName = "Default";

            addButtonToAltTabCommand(defaultStateCM, FFXICompanion.Settings.Button.START, Settings.Action.PRESSED);

            //xyab
            addButtonToOneKeyPressAndReleaseMapping(defaultStateCM, FFXICompanion.Settings.Button.X, Settings.Action.PRESSED, Settings.Key.F);
            addButtonToOneKeyPressAndReleaseMapping(defaultStateCM, FFXICompanion.Settings.Button.Y, Settings.Action.PRESSED, Settings.Key.DashUnderscore);
            addButtonToOneKeyPressAndReleaseMapping(defaultStateCM, FFXICompanion.Settings.Button.A, Settings.Action.PRESSED, Settings.Key.Enter);
            addButtonToOneKeyPressAndReleaseMapping(defaultStateCM, FFXICompanion.Settings.Button.B, Settings.Action.PRESSED, Settings.Key.Escape);

            //d pad
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.DL, Settings.Action.PRESSED, Settings.Key.CommaLeftArrow, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.DR, Settings.Action.PRESSED, Settings.Key.PeriodRightArrow, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.DU, Settings.Action.PRESSED, Settings.Key.N, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.DD, Settings.Action.PRESSED, Settings.Key.M, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.DL, Settings.Action.RELEASED, Settings.Key.CommaLeftArrow, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.DR, Settings.Action.RELEASED, Settings.Key.PeriodRightArrow, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.DU, Settings.Action.RELEASED, Settings.Key.N, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.DD, Settings.Action.RELEASED, Settings.Key.M, Settings.Action.RELEASED);

            //left stick
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.LSU, Settings.Action.PRESSED, Settings.Key.W, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.LSU, Settings.Action.RELEASED, Settings.Key.W, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.LSL, Settings.Action.PRESSED, Settings.Key.A, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.LSL, Settings.Action.RELEASED, Settings.Key.A, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.LSD, Settings.Action.PRESSED, Settings.Key.S, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.LSD, Settings.Action.RELEASED, Settings.Key.S, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.LSR, Settings.Action.PRESSED, Settings.Key.D, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.LSR, Settings.Action.RELEASED, Settings.Key.D, Settings.Action.RELEASED);

            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.LS, Settings.Action.PRESSED, Settings.Key.R, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.LS, Settings.Action.RELEASED, Settings.Key.R, Settings.Action.RELEASED);

            //right stick
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.RSU, Settings.Action.PRESSED, Settings.Key.I, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.RSU, Settings.Action.RELEASED, Settings.Key.I, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.RSL, Settings.Action.PRESSED, Settings.Key.J, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.RSL, Settings.Action.RELEASED, Settings.Key.J, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.RSD, Settings.Action.PRESSED, Settings.Key.K, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.RSD, Settings.Action.RELEASED, Settings.Key.K, Settings.Action.RELEASED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.RSR, Settings.Action.PRESSED, Settings.Key.L, Settings.Action.PRESSED);
            addButtonToKeyPressMapping(defaultStateCM, FFXICompanion.Settings.Button.RSR, Settings.Action.RELEASED, Settings.Key.L, Settings.Action.RELEASED);

            // createControlKeyButtonMappings(defaultStateCM);

            settings.stateMappings.Add(defaultStateCM);


            StateControllerMapping macroTypeStateCM = new StateControllerMapping();

            macroTypeStateCM.stateName = "Macro Book State";

            addButtonToOneKeyPressAndReleaseMapping(macroTypeStateCM, FFXICompanion.Settings.Button.LB, Settings.Action.PRESSED, Settings.Key.Numpad1);
            addButtonToOneKeyPressAndReleaseMapping(macroTypeStateCM, FFXICompanion.Settings.Button.LT, Settings.Action.PRESSED, Settings.Key.Numpad2);
            addButtonToOneKeyPressAndReleaseMapping(macroTypeStateCM, FFXICompanion.Settings.Button.RB, Settings.Action.PRESSED, Settings.Key.Numpad3);
            addButtonToOneKeyPressAndReleaseMapping(macroTypeStateCM, FFXICompanion.Settings.Button.RT, Settings.Action.PRESSED, Settings.Key.Numpad4);
            addButtonToOneKeyPressAndReleaseMapping(macroTypeStateCM, FFXICompanion.Settings.Button.X, Settings.Action.PRESSED, Settings.Key.Numpad5);
            addButtonToOneKeyPressAndReleaseMapping(macroTypeStateCM, FFXICompanion.Settings.Button.Y, Settings.Action.PRESSED, Settings.Key.Numpad6);
            addButtonToOneKeyPressAndReleaseMapping(macroTypeStateCM, FFXICompanion.Settings.Button.A, Settings.Action.PRESSED, Settings.Key.Numpad7);
            addButtonToOneKeyPressAndReleaseMapping(macroTypeStateCM, FFXICompanion.Settings.Button.B, Settings.Action.PRESSED, Settings.Key.Numpad8);

            settings.stateMappings.Add(macroTypeStateCM);

            addMacroState(settings, "Macro State");

            writeSettings(settings);

            // NotifyIcon tray = new NotifyIcon();
            // tray.Icon = new Icon("2.ico");;
            // tray.Visible = true;

            CancellationTokenSource cts = new CancellationTokenSource();
            ModuleData md = ModuleData.getInstance();

            md.companionSettings = settings;
            md.cancellationToken = cts.Token;


            Mapper keyMapper = new Mapper();

            FFXICompanion.Server.HttpServer      srvr       = new FFXICompanion.Server.HttpServer();
            FFXICompanion.Server.SocketServer    sock       = new FFXICompanion.Server.SocketServer();
            FFXICompanion.Server.NamedPipeServer pipeServer = new FFXICompanion.Server.NamedPipeServer();

            List <Thread> threads = new List <Thread>();

            threads.Add(new Thread(new ThreadStart(keyMapper.start)));
            // threads.Add(new Thread(new ThreadStart(srvr.start)));
            // threads.Add(new Thread(new ThreadStart(sock.start)));
            // threads.Add(new Thread(new ThreadStart(pipeServer.start)));

            foreach (Thread thread in threads)
            {
                thread.Start();
            }

            Console.CancelKeyPress += delegate {
                cts.Cancel();
            };

            foreach (Thread thread in threads)
            {
                thread.Join();
            }
        }
Esempio n. 8
0
        // public static void GetVidPid(string str, ref int vid, ref int pid)
        // {
        //     var matches = Regex.Matches(str, @"VID_(\w{4})&PID_(\w{4})");
        //     if (matches.Count <= 0 || matches[0].Groups.Count <= 1) return;
        //     vid = Convert.ToInt32(matches[0].Groups[1].Value, 16);
        //     pid = Convert.ToInt32(matches[0].Groups[2].Value, 16);
        // }

        public void start()
        {
            // var stroke = new ManagedWrapper.Stroke();
            // stroke.key.code = (ushort)Keys.J;
            // stroke.key.state = (ushort)ManagedWrapper.KeyState.Down;
            // int devId = 1;
            // ManagedWrapper.Send(_deviceContext, devId, ref stroke, 1);

            //use this code to determine keys
            // ManagedWrapper.SetFilter(deviceContext, ManagedWrapper.IsKeyboard, ManagedWrapper.Filter.All);
            // var stroke = new ManagedWrapper.Stroke();
            // int device = 0;
            // while (ManagedWrapper.Receive(deviceContext, device = ManagedWrapper.Wait(deviceContext), ref stroke, 1) > 0)
            // {
            //     if(ManagedWrapper.IsKeyboard(device) > 0) {
            //         Console.WriteLine(stroke.key.code);
            //         if(stroke.key.code == 1)
            //             break;
            //     }
            // }
            // ManagedWrapper.SetFilter(deviceContext, ManagedWrapper.IsKeyboard, ManagedWrapper.Filter.None);

            // var ret = new List<DeviceInfo>();
            for (var i = 1; i < 21; i++)
            {
                var handle = ManagedWrapper.GetHardwareStr(deviceContext, i, 1000);
                if (handle == "")
                {
                    continue;
                }
                // int foundVid = 0, foundPid = 0;
                // GetVidPid(handle, ref foundVid, ref foundPid);
                //if (foundVid == 0 || foundPid == 0) continue;
                // Console.WriteLine(i + " " + handle);
                // ret.Add(new DeviceInfo {Id = i, IsMouse = i > 10, Handle = handle});
            }

            // foreach (var device in ret)
            // {
            //     Console.WriteLine(device);
            // }


            var controllers = new[] { new Controller(), new Controller(UserIndex.One), new Controller(UserIndex.Two), new Controller(UserIndex.Three), new Controller(UserIndex.Four) };

            // Get 1st controller available
            Controller controller = controllers[0];

            foreach (var selectControler in controllers)
            {
                // Console.WriteLine(selectControler);
                if (selectControler.IsConnected)
                {
                    controller = selectControler;
                    break;
                }
            }

            if (controller == null)
            {
                Console.WriteLine("No XInput controller installed");
            }
            else
            {
                Console.WriteLine("KeyMapper loaded");
                // Console.WriteLine("Found a XInput controller available");
                // Console.WriteLine("Press buttons on the controller to display events or escape key to exit... ");

                // Poll events from joystick
                SharpDX.XInput.State      previousControllerState = controller.GetState();
                Dictionary <Button, bool> lastSimpleGamepadState  = determineSimpleButtonState(previousControllerState);

                StateTransition lastState = null;

                while (!ModuleData.getInstance().cancellationToken.IsCancellationRequested)
                {
                    if (controller.IsConnected)
                    {
                        SharpDX.XInput.State controllerState = controller.GetState();
                        if (previousControllerState.PacketNumber != controllerState.PacketNumber)
                        {
                            // Console.WriteLine(controllerState.Gamepad);

                            Dictionary <Button, bool>            simpleGamepadState = determineSimpleButtonState(controllerState);
                            Dictionary <Button, Settings.Action> changedState       = determineStateDifferences(lastSimpleGamepadState, simpleGamepadState);
                            printStateChanges(changedState);
                            // Console.WriteLine(GetActiveWindowTitle());

                            //determine if we are transitioning to a new 'state'
                            //  this is based on the current state, the game state and the keys pressed/not pressed
                            //  NOTE: the first state wins, for speed
                            StateTransition newState = getNewState(simpleGamepadState, ModuleData.getInstance().companionSettings.stateTransitions);
                            if (newState == null && lastState == null)
                            {
                                //nothing to do
                            }
                            else if (newState != null && lastState == null)
                            {
                                activateState(newState);
                            }
                            else if (newState == null && lastState != null)
                            {
                                deactivateState(lastState);
                            }
                            else if (newState != null && lastState != null && !newState.transitionName.Equals(lastState.transitionName))
                            {
                                deactivateState(lastState);
                                activateState(newState);
                            }

                            //now that we have the state name determined, load the correct mappings
                            StateControllerMapping stateControllerMappings = findStateControllerMappings(newState, ModuleData.getInstance().companionSettings.stateMappings);

                            //apply button presses and such
                            foreach (Button key in changedState.Keys)
                            {
                                Settings.Action action = changedState[key];
                                foreach (ControllerMapping controllerMapping in stateControllerMappings.controllerMappings)
                                {
                                    if (controllerMapping.button.button == key && action == controllerMapping.button.action)
                                    {
                                        handleCommand(controllerMapping);
                                    }
                                }
                            }

                            lastState = newState;
                            lastSimpleGamepadState = simpleGamepadState;
                        }
                        Thread.Sleep(10);
                        previousControllerState = controllerState;
                    }
                }
            }
        }