private void OnAddCustomFunctionRequested(object parameter) { if (this.Preset == null) { return; } var newPreset = new PresetCustom((uint)XboxCustomFunction.Button_A, InputKey.None); this.Preset.CustomFunctions.Add(newPreset); // Auto scrolling to end var scrollViewer = Helpers.ParentFinder.FindParent <ScrollViewer>(this); if (scrollViewer != null) { scrollViewer.ScrollToEnd(); } }
public List <InputKey> GetKeys(PresetCustom presetCustom) { var keys = new List <InputKey>(); keys.AddRange(this.CustomFunctions.Where(x => x.Function == presetCustom.Function).Select(x => x.Key)); foreach (var customFunction in this.CustomFunctions) { if (customFunction.Function != presetCustom.Function) { continue; } var xboxCustomFunction = (XboxCustomFunction)presetCustom.Function; var functionType = Helpers.CustomFunctionHelper.GetFunctionType(xboxCustomFunction); switch (functionType) { case FunctionType.Button: foreach (var presetButton in this.Buttons) { var xboxButton = Helpers.CustomFunctionHelper.GetXboxButton(xboxCustomFunction); if (xboxButton == (XboxButton)presetButton.Button) { keys.Add(presetButton.Key); } } break; case FunctionType.Axis: foreach (var presetAxis in this.Axes) { XboxAxisPosition pos; var xboxAxis = Helpers.CustomFunctionHelper.GetXboxAxis(xboxCustomFunction, out pos); if (xboxAxis == (XboxAxis)presetAxis.Axis && pos == (XboxAxisPosition)presetAxis.Value) { keys.Add(presetAxis.Key); } } break; case FunctionType.Dpad: foreach (var presetDpad in this.Dpads) { var direction = Helpers.CustomFunctionHelper.GetDpadDirection(xboxCustomFunction); if (direction == (XboxDpadDirection)presetDpad.Direction) { keys.Add(presetDpad.Key); } } break; case FunctionType.Trigger: foreach (var presetTrigger in this.Triggers) { var xboxTrigger = Helpers.CustomFunctionHelper.GetXboxTrigger(xboxCustomFunction); if (xboxTrigger == (XboxTrigger)presetTrigger.Trigger) { keys.Add(presetTrigger.Key); } } break; default: throw new NotImplementedException( "Not implemented Function Type: " + functionType); } } return(keys); }