public static void Print(UserSettings settings)
        {
            Log.Information("UserSettings.Print()");


            Log.Information("print mappings");
            List <VirtualKey> virtualKeys = KeyUtility.GetVirtualKeyValues();

            foreach (VirtualKey key in virtualKeys)
            {
                Log.Information("print Mappings:{VirtKey:" + key + ", PhysicalKeyGroup: " + settings.Mappings[key] + "}");
            }

            Log.Information("print values");
            Type t = settings.GetType();

            PropertyInfo[] properties = t.GetProperties();
            foreach (PropertyInfo prop in properties)
            {
                if (prop.Name != "KeyboardMappings" && prop.Name != "Mappings")
                {
                    MethodInfo getter = prop.GetGetMethod();
                    if (getter != null)
                    {
                        object value = getter.Invoke(settings, new object[] { });

                        Log.Information("print " + prop + ":" + value);
                    }
                }
            }
        }
        public static void ImportValuesCurrent(UserSettings NewSettings)
        {
            Log.Information("UserSettings.ImportValuesCurrent()");

            //reminder we want to import stuff into variable **ThisInstance**

            ThisInstance.AimToggle = NewSettings.AimToggle;
            ThisInstance.AimToggleRetoggleDelay = NewSettings.AimToggleRetoggleDelay;

            ThisInstance.AnalogStickLowerRange = NewSettings.AnalogStickLowerRange;
            ThisInstance.AnalogStickUpperRange = NewSettings.AnalogStickUpperRange;

            ThisInstance.MouseAimSensitivityEnabled = NewSettings.MouseAimSensitivityEnabled;

            ThisInstance.MouseControlsL3 = NewSettings.MouseControlsL3;
            ThisInstance.MouseControlsR3 = NewSettings.MouseControlsR3;

            ThisInstance.MouseDistanceLowerRange = NewSettings.MouseDistanceLowerRange;
            ThisInstance.MouseDistanceUpperRange = NewSettings.MouseDistanceUpperRange;
            ThisInstance.MouseMaxDistance        = NewSettings.MouseMaxDistance;

            ThisInstance.MousePollingRate = NewSettings.MousePollingRate;

            ThisInstance.MouseWheelScrollHoldDuration = NewSettings.MouseWheelScrollHoldDuration;

            ThisInstance.MouseXAxisSensitivityAimModifier  = NewSettings.MouseXAxisSensitivityAimModifier;
            ThisInstance.MouseXAxisSensitivityLookModifier = NewSettings.MouseXAxisSensitivityLookModifier;
            ThisInstance.MouseXAxisSensitivityMax          = NewSettings.MouseXAxisSensitivityMax;

            ThisInstance.MouseYAxisSensitivityAimModifier  = NewSettings.MouseYAxisSensitivityAimModifier;
            ThisInstance.MouseYAxisSensitivityLookModifier = NewSettings.MouseYAxisSensitivityLookModifier;
            ThisInstance.MouseYAxisSensitivityMax          = NewSettings.MouseYAxisSensitivityMax;

            ThisInstance.RemotePlayVolume = NewSettings.RemotePlayVolume;

            ThisInstance.XYRatio = NewSettings.XYRatio;

            List <VirtualKey> virtualKeys = KeyUtility.GetVirtualKeyValues();

            foreach (VirtualKey key in virtualKeys)
            {
                if (NewSettings.MappingsContainsKey(key))
                {
                    ThisInstance.Mappings[key] = NewSettings.Mappings[key];
                }
            }

            ThisInstance.Version_2_0_0_OrGreater = true;
        }
        public void GetKeyboardMappings()
        {
            List <VirtualKey> virtualKeys = KeyUtility.GetVirtualKeyValues();

            foreach (VirtualKey vk in virtualKeys)
            {
                if (Mappings.ContainsKey(vk))
                {
                    PhysicalKeyGroup pkg = Mappings[vk];
                    if (pkg.PhysicalKeys != null)
                    {
                        foreach (PhysicalKey pk in pkg.PhysicalKeys)
                        {
                            if (pk != null && pk.KeyboardValue != Keyboard.Key.Unknown)
                            {
                                KeyboardMappings[vk] = pk;
                            }
                        }
                    }
                }
            }
        }