forked from MeloNX/MeloNX
use compiled binding for controller view
This commit is contained in:
parent
6b2f1b7d4f
commit
ab7ebecfc8
@ -14,10 +14,6 @@
|
|||||||
<MenuItem Header="Test 1" />
|
<MenuItem Header="Test 1" />
|
||||||
<MenuItem Header="Test 2" />
|
<MenuItem Header="Test 2" />
|
||||||
<MenuItem Header="Test 3">
|
<MenuItem Header="Test 3">
|
||||||
<MenuItem.Icon>
|
|
||||||
<CheckBox Margin="0"
|
|
||||||
IsChecked="{ReflectionBinding Checkbox, Mode=TwoWay}" />
|
|
||||||
</MenuItem.Icon>
|
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</MenuItem>
|
</MenuItem>
|
||||||
</Menu>
|
</Menu>
|
||||||
@ -393,4 +389,4 @@
|
|||||||
<x:Double x:Key="ContentDialogMaxWidth">600</x:Double>
|
<x:Double x:Key="ContentDialogMaxWidth">600</x:Double>
|
||||||
<x:Double x:Key="ContentDialogMaxHeight">756</x:Double>
|
<x:Double x:Key="ContentDialogMaxHeight">756</x:Double>
|
||||||
</Styles.Resources>
|
</Styles.Resources>
|
||||||
</Styles>
|
</Styles>
|
||||||
|
@ -7,7 +7,7 @@ using System;
|
|||||||
|
|
||||||
namespace Ryujinx.Ava.UI.Models
|
namespace Ryujinx.Ava.UI.Models
|
||||||
{
|
{
|
||||||
internal class InputConfiguration<TKey, TStick> : BaseModel
|
public class InputConfiguration<TKey, TStick> : BaseModel
|
||||||
{
|
{
|
||||||
private float _deadzoneRight;
|
private float _deadzoneRight;
|
||||||
private float _triggerThreshold;
|
private float _triggerThreshold;
|
||||||
|
@ -48,10 +48,11 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
private int _controllerNumber;
|
private int _controllerNumber;
|
||||||
private string _controllerImage;
|
private string _controllerImage;
|
||||||
private int _device;
|
private int _device;
|
||||||
private object _configuration;
|
private InputViewModel _configuration;
|
||||||
private string _profileName;
|
private string _profileName;
|
||||||
private bool _isLoaded;
|
private bool _isLoaded;
|
||||||
|
private bool _isLeft;
|
||||||
|
private bool _isRight;
|
||||||
private static readonly InputConfigJsonSerializerContext _serializerContext = new(JsonHelper.GetDefaultSerializerOptions());
|
private static readonly InputConfigJsonSerializerContext _serializerContext = new(JsonHelper.GetDefaultSerializerOptions());
|
||||||
|
|
||||||
public IGamepadDriver AvaloniaKeyboardDriver { get; }
|
public IGamepadDriver AvaloniaKeyboardDriver { get; }
|
||||||
@ -63,23 +64,47 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
public AvaloniaList<string> ProfilesList { get; set; }
|
public AvaloniaList<string> ProfilesList { get; set; }
|
||||||
public AvaloniaList<string> DeviceList { get; set; }
|
public AvaloniaList<string> DeviceList { get; set; }
|
||||||
|
|
||||||
|
public event EventHandler ConfigurationChanged;
|
||||||
|
|
||||||
// XAML Flags
|
// XAML Flags
|
||||||
public bool ShowSettings => _device > 0;
|
public bool ShowSettings => _device > 0;
|
||||||
public bool IsController => _device > 1;
|
public bool IsController => _device > 1;
|
||||||
public bool IsKeyboard => !IsController;
|
public bool IsKeyboard => !IsController;
|
||||||
public bool IsRight { get; set; }
|
public bool IsRight
|
||||||
public bool IsLeft { get; set; }
|
{
|
||||||
|
get => _isRight; set
|
||||||
|
{
|
||||||
|
_isRight = value;
|
||||||
|
|
||||||
|
_configuration.IsRight = IsRight;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public bool IsLeft
|
||||||
|
{
|
||||||
|
get => _isLeft; set
|
||||||
|
{
|
||||||
|
_isLeft = value;
|
||||||
|
|
||||||
|
_configuration.IsLeft = IsLeft;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsModified { get; set; }
|
public bool IsModified { get; set; }
|
||||||
|
|
||||||
public object Configuration
|
public InputViewModel Configuration
|
||||||
{
|
{
|
||||||
get => _configuration;
|
get => _configuration;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_configuration = value;
|
_configuration = value;
|
||||||
|
|
||||||
|
_configuration.IsLeft = IsLeft;
|
||||||
|
_configuration.IsRight = IsRight;
|
||||||
|
_configuration.ControllerImage = _controllerImage;
|
||||||
|
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
|
|
||||||
|
ConfigurationChanged?.Invoke(this, EventArgs.Empty);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,27 +192,9 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
{
|
{
|
||||||
_controllerImage = value;
|
_controllerImage = value;
|
||||||
|
|
||||||
|
if (_configuration != null)
|
||||||
|
_configuration.ControllerImage = value;
|
||||||
OnPropertyChanged();
|
OnPropertyChanged();
|
||||||
OnPropertyChanged(nameof(Image));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public SvgImage Image
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
SvgImage image = new();
|
|
||||||
|
|
||||||
if (!string.IsNullOrWhiteSpace(_controllerImage))
|
|
||||||
{
|
|
||||||
SvgSource source = new();
|
|
||||||
|
|
||||||
source.Load(EmbeddedResources.GetStream(_controllerImage));
|
|
||||||
|
|
||||||
image.Source = source;
|
|
||||||
}
|
|
||||||
|
|
||||||
return image;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,12 +289,12 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
|
|
||||||
if (Config is StandardKeyboardInputConfig keyboardInputConfig)
|
if (Config is StandardKeyboardInputConfig keyboardInputConfig)
|
||||||
{
|
{
|
||||||
Configuration = new InputConfiguration<Key, ConfigStickInputId>(keyboardInputConfig);
|
Configuration = new KeyboardInputViewModel(new InputConfiguration<Key, ConfigStickInputId>(keyboardInputConfig));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Config is StandardControllerInputConfig controllerInputConfig)
|
if (Config is StandardControllerInputConfig controllerInputConfig)
|
||||||
{
|
{
|
||||||
Configuration = new InputConfiguration<ConfigGamepadInputId, ConfigStickInputId>(controllerInputConfig);
|
Configuration = new GamePadInputViewModel(new InputConfiguration<ConfigGamepadInputId, ConfigStickInputId>(controllerInputConfig), async () => { await MotionInputView.Show(this); }, async () => { await RumbleInputView.Show(this); });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -323,16 +330,6 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public async void ShowMotionConfig()
|
|
||||||
{
|
|
||||||
await MotionInputView.Show(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async void ShowRumbleConfig()
|
|
||||||
{
|
|
||||||
await RumbleInputView.Show(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void LoadInputDriver()
|
private void LoadInputDriver()
|
||||||
{
|
{
|
||||||
if (_device < 0)
|
if (_device < 0)
|
||||||
@ -760,14 +757,7 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
|
|
||||||
InputConfig config = null;
|
InputConfig config = null;
|
||||||
|
|
||||||
if (IsKeyboard)
|
config = Configuration.GetConfig();
|
||||||
{
|
|
||||||
config = (Configuration as InputConfiguration<Key, ConfigStickInputId>).GetConfig();
|
|
||||||
}
|
|
||||||
else if (IsController)
|
|
||||||
{
|
|
||||||
config = (Configuration as InputConfiguration<GamepadInputId, ConfigStickInputId>).GetConfig();
|
|
||||||
}
|
|
||||||
|
|
||||||
config.ControllerType = Controllers[_controller].Type;
|
config.ControllerType = Controllers[_controller].Type;
|
||||||
|
|
||||||
@ -830,18 +820,16 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
|
|
||||||
if (device.Type == DeviceType.Keyboard)
|
if (device.Type == DeviceType.Keyboard)
|
||||||
{
|
{
|
||||||
var inputConfig = Configuration as InputConfiguration<Key, ConfigStickInputId>;
|
var inputConfig = Configuration.Config as InputConfiguration<Key, ConfigStickInputId>;
|
||||||
inputConfig.Id = device.Id;
|
inputConfig.Id = device.Id;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var inputConfig = Configuration as InputConfiguration<GamepadInputId, ConfigStickInputId>;
|
var inputConfig = Configuration.Config as InputConfiguration<GamepadInputId, ConfigStickInputId>;
|
||||||
inputConfig.Id = device.Id.Split(" ")[0];
|
inputConfig.Id = device.Id.Split(" ")[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
var config = !IsController
|
var config = Configuration.GetConfig();
|
||||||
? (Configuration as InputConfiguration<Key, ConfigStickInputId>).GetConfig()
|
|
||||||
: (Configuration as InputConfiguration<GamepadInputId, ConfigStickInputId>).GetConfig();
|
|
||||||
config.ControllerType = Controllers[_controller].Type;
|
config.ControllerType = Controllers[_controller].Type;
|
||||||
config.PlayerIndex = _playerId;
|
config.PlayerIndex = _playerId;
|
||||||
|
|
||||||
@ -878,6 +866,8 @@ namespace Ryujinx.Ava.UI.ViewModels
|
|||||||
OnPropertyChanged(nameof(IsKeyboard));
|
OnPropertyChanged(nameof(IsKeyboard));
|
||||||
OnPropertyChanged(nameof(IsRight));
|
OnPropertyChanged(nameof(IsRight));
|
||||||
OnPropertyChanged(nameof(IsLeft));
|
OnPropertyChanged(nameof(IsLeft));
|
||||||
|
|
||||||
|
Configuration?.NotifyChanges();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
|
63
src/Ryujinx.Ava/UI/ViewModels/GamePadInputViewModel.cs
Normal file
63
src/Ryujinx.Ava/UI/ViewModels/GamePadInputViewModel.cs
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
using Ryujinx.Ava.UI.Models;
|
||||||
|
using Ryujinx.Ava.UI.Views.Input;
|
||||||
|
using Ryujinx.Common.Configuration.Hid;
|
||||||
|
using System;
|
||||||
|
using ConfigGamepadInputId = Ryujinx.Common.Configuration.Hid.Controller.GamepadInputId;
|
||||||
|
using ConfigStickInputId = Ryujinx.Common.Configuration.Hid.Controller.StickInputId;
|
||||||
|
|
||||||
|
namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
{
|
||||||
|
public class GamePadInputViewModel : InputViewModel
|
||||||
|
{
|
||||||
|
private InputConfiguration<ConfigGamepadInputId, ConfigStickInputId> _configuration;
|
||||||
|
private Func<System.Threading.Tasks.Task> _showMotionConfigCommand;
|
||||||
|
private Func<System.Threading.Tasks.Task> _showRumbleConfigCommand;
|
||||||
|
|
||||||
|
|
||||||
|
public InputConfiguration<ConfigGamepadInputId, ConfigStickInputId> Configuration
|
||||||
|
{
|
||||||
|
get => _configuration;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_configuration = value;
|
||||||
|
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal override object Config => _configuration;
|
||||||
|
|
||||||
|
public GamePadInputViewModel(InputConfiguration<ConfigGamepadInputId, ConfigStickInputId> configuration, Func<System.Threading.Tasks.Task> showMotionConfigCommand, Func<System.Threading.Tasks.Task> showRumbleConfigCommand)
|
||||||
|
{
|
||||||
|
Configuration = configuration;
|
||||||
|
_showMotionConfigCommand = showMotionConfigCommand;
|
||||||
|
_showRumbleConfigCommand = showRumbleConfigCommand;
|
||||||
|
}
|
||||||
|
|
||||||
|
public GamePadInputViewModel()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void NotifyChanges()
|
||||||
|
{
|
||||||
|
OnPropertyChanged(nameof(Configuration));
|
||||||
|
|
||||||
|
base.NotifyChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override InputConfig GetConfig()
|
||||||
|
{
|
||||||
|
return _configuration.GetConfig();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async void ShowMotionConfig()
|
||||||
|
{
|
||||||
|
await _showMotionConfigCommand();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async void ShowRumbleConfig()
|
||||||
|
{
|
||||||
|
await _showRumbleConfigCommand();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
64
src/Ryujinx.Ava/UI/ViewModels/InputViewModel.cs
Normal file
64
src/Ryujinx.Ava/UI/ViewModels/InputViewModel.cs
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
using Avalonia.Svg.Skia;
|
||||||
|
using Ryujinx.Ava.UI.Models;
|
||||||
|
using Ryujinx.Common;
|
||||||
|
using Ryujinx.Common.Configuration.Hid;
|
||||||
|
using ConfigStickInputId = Ryujinx.Common.Configuration.Hid.Controller.StickInputId;
|
||||||
|
using Key = Ryujinx.Common.Configuration.Hid.Key;
|
||||||
|
|
||||||
|
namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
{
|
||||||
|
public abstract class InputViewModel : BaseModel
|
||||||
|
{
|
||||||
|
private string _controllerImage;
|
||||||
|
|
||||||
|
public bool IsRight { get; set; }
|
||||||
|
public bool IsLeft { get; set; }
|
||||||
|
|
||||||
|
internal abstract object Config { get; }
|
||||||
|
|
||||||
|
public void NotifyChange(string property)
|
||||||
|
{
|
||||||
|
OnPropertyChanged(property);
|
||||||
|
}
|
||||||
|
|
||||||
|
public string ControllerImage
|
||||||
|
{
|
||||||
|
get => _controllerImage;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_controllerImage = value;
|
||||||
|
|
||||||
|
OnPropertyChanged();
|
||||||
|
OnPropertyChanged(nameof(Image));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public SvgImage Image
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
SvgImage image = new();
|
||||||
|
|
||||||
|
if (!string.IsNullOrWhiteSpace(_controllerImage))
|
||||||
|
{
|
||||||
|
SvgSource source = new();
|
||||||
|
|
||||||
|
source.Load(EmbeddedResources.GetStream(_controllerImage));
|
||||||
|
|
||||||
|
image.Source = source;
|
||||||
|
}
|
||||||
|
|
||||||
|
return image;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void NotifyChanges()
|
||||||
|
{
|
||||||
|
OnPropertyChanged(nameof(IsRight));
|
||||||
|
OnPropertyChanged(nameof(IsLeft));
|
||||||
|
OnPropertyChanged(nameof(Image));
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract InputConfig GetConfig();
|
||||||
|
}
|
||||||
|
}
|
47
src/Ryujinx.Ava/UI/ViewModels/KeyboardInputViewModel.cs
Normal file
47
src/Ryujinx.Ava/UI/ViewModels/KeyboardInputViewModel.cs
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
using Ryujinx.Ava.UI.Models;
|
||||||
|
using Ryujinx.Common.Configuration.Hid;
|
||||||
|
using ConfigStickInputId = Ryujinx.Common.Configuration.Hid.Controller.StickInputId;
|
||||||
|
using Key = Ryujinx.Common.Configuration.Hid.Key;
|
||||||
|
|
||||||
|
namespace Ryujinx.Ava.UI.ViewModels
|
||||||
|
{
|
||||||
|
public class KeyboardInputViewModel : InputViewModel
|
||||||
|
{
|
||||||
|
private InputConfiguration<Key, ConfigStickInputId> _configuration;
|
||||||
|
|
||||||
|
|
||||||
|
public InputConfiguration<Key, ConfigStickInputId> Configuration
|
||||||
|
{
|
||||||
|
get => _configuration;
|
||||||
|
set
|
||||||
|
{
|
||||||
|
_configuration = value;
|
||||||
|
|
||||||
|
OnPropertyChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
internal override object Config => _configuration;
|
||||||
|
|
||||||
|
public KeyboardInputViewModel(InputConfiguration<Key, ConfigStickInputId> configuration)
|
||||||
|
{
|
||||||
|
Configuration = configuration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public KeyboardInputViewModel()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void NotifyChanges()
|
||||||
|
{
|
||||||
|
OnPropertyChanged(nameof(Configuration));
|
||||||
|
|
||||||
|
base.NotifyChanges();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override InputConfig GetConfig()
|
||||||
|
{
|
||||||
|
return _configuration.GetConfig();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -1,8 +1,10 @@
|
|||||||
|
using Avalonia;
|
||||||
using Avalonia.Controls;
|
using Avalonia.Controls;
|
||||||
using Avalonia.Controls.Primitives;
|
using Avalonia.Controls.Primitives;
|
||||||
using Avalonia.Input;
|
using Avalonia.Input;
|
||||||
using Avalonia.Interactivity;
|
using Avalonia.Interactivity;
|
||||||
using Avalonia.LogicalTree;
|
using Avalonia.LogicalTree;
|
||||||
|
using Avalonia.VisualTree;
|
||||||
using Ryujinx.Ava.Common.Locale;
|
using Ryujinx.Ava.Common.Locale;
|
||||||
using Ryujinx.Ava.UI.Helpers;
|
using Ryujinx.Ava.UI.Helpers;
|
||||||
using Ryujinx.Ava.UI.Models;
|
using Ryujinx.Ava.UI.Models;
|
||||||
@ -26,8 +28,19 @@ namespace Ryujinx.Ava.UI.Views.Input
|
|||||||
DataContext = ViewModel = new ControllerInputViewModel(this);
|
DataContext = ViewModel = new ControllerInputViewModel(this);
|
||||||
|
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
|
||||||
foreach (ILogical visual in SettingButtons.GetLogicalDescendants())
|
private void SettingButtons_PropertyChanged(object sender, AvaloniaPropertyChangedEventArgs e)
|
||||||
|
{
|
||||||
|
if(e.Property == ContentProperty)
|
||||||
|
{
|
||||||
|
RebindEvents();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void RebindEvents()
|
||||||
|
{
|
||||||
|
foreach (var visual in SettingButtons.GetLogicalDescendants())
|
||||||
{
|
{
|
||||||
if (visual is ToggleButton button && visual is not CheckBox)
|
if (visual is ToggleButton button && visual is not CheckBox)
|
||||||
{
|
{
|
||||||
@ -36,6 +49,15 @@ namespace Ryujinx.Ava.UI.Views.Input
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void OnLoaded(RoutedEventArgs e)
|
||||||
|
{
|
||||||
|
base.OnLoaded(e);
|
||||||
|
|
||||||
|
RebindEvents();
|
||||||
|
|
||||||
|
SettingButtons.PropertyChanged += SettingButtons_PropertyChanged;
|
||||||
|
}
|
||||||
|
|
||||||
protected override void OnPointerReleased(PointerReleasedEventArgs e)
|
protected override void OnPointerReleased(PointerReleasedEventArgs e)
|
||||||
{
|
{
|
||||||
base.OnPointerReleased(e);
|
base.OnPointerReleased(e);
|
||||||
|
741
src/Ryujinx.Ava/UI/Views/Input/GamePadInputView.axaml
Normal file
741
src/Ryujinx.Ava/UI/Views/Input/GamePadInputView.axaml
Normal file
@ -0,0 +1,741 @@
|
|||||||
|
<UserControl xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
d:DesignWidth="800"
|
||||||
|
d:DesignHeight="450"
|
||||||
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
||||||
|
x:DataType="viewModels:GamePadInputViewModel"
|
||||||
|
xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
|
||||||
|
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
||||||
|
xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls"
|
||||||
|
x:Class="Ryujinx.Ava.UI.Views.Input.GamePadInputView">
|
||||||
|
<UserControl.Resources>
|
||||||
|
<helpers:KeyValueConverter x:Key="Key" />
|
||||||
|
</UserControl.Resources>
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<!-- Left Controls -->
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Vertical"
|
||||||
|
Margin="0,0,5,0"
|
||||||
|
Grid.Column="0">
|
||||||
|
<!-- Left Triggers -->
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
IsVisible="{Binding IsLeft}"
|
||||||
|
MinHeight="90"
|
||||||
|
CornerRadius="5">
|
||||||
|
<Grid
|
||||||
|
Margin="10"
|
||||||
|
HorizontalAlignment="Stretch">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="0"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsTriggerZL}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonZl, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="1"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsTriggerL}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonL, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="1"
|
||||||
|
Grid.Row="1"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonMinus}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonMinus, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<!-- Left Joystick -->
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
IsVisible="{Binding IsLeft}"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
CornerRadius="5">
|
||||||
|
<StackPanel
|
||||||
|
Margin="10"
|
||||||
|
Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsLStick}" />
|
||||||
|
<!-- Left Joystick Controller -->
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Vertical">
|
||||||
|
<!-- Left Joystick Button -->
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickButton}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.LeftControllerStickButton, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Left Joystick Stick -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,4,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickStick}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton Tag="stick">
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.LeftJoystick, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<Separator
|
||||||
|
Margin="0,8,0,8"
|
||||||
|
Height="1" />
|
||||||
|
<CheckBox IsChecked="{Binding Configuration.LeftInvertStickX}">
|
||||||
|
<TextBlock Text="{locale:Locale ControllerSettingsStickInvertXAxis}" />
|
||||||
|
</CheckBox>
|
||||||
|
<CheckBox IsChecked="{Binding Configuration.LeftInvertStickY}">
|
||||||
|
<TextBlock Text="{locale:Locale ControllerSettingsStickInvertYAxis}" />
|
||||||
|
</CheckBox>
|
||||||
|
<CheckBox IsChecked="{Binding Configuration.LeftRotate90}">
|
||||||
|
<TextBlock Text="{locale:Locale ControllerSettingsRotate90}" />
|
||||||
|
</CheckBox>
|
||||||
|
<Separator
|
||||||
|
Margin="0,8,0,8"
|
||||||
|
Height="1" />
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickDeadzone}" />
|
||||||
|
<StackPanel
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<controls:SliderScroll
|
||||||
|
Width="130"
|
||||||
|
Maximum="1"
|
||||||
|
TickFrequency="0.01"
|
||||||
|
IsSnapToTickEnabled="True"
|
||||||
|
SmallChange="0.01"
|
||||||
|
Minimum="0"
|
||||||
|
Value="{Binding Configuration.DeadzoneLeft, Mode=TwoWay}" />
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Width="25"
|
||||||
|
Text="{Binding Configuration.DeadzoneLeft, StringFormat=\{0:0.00\}}" />
|
||||||
|
</StackPanel>
|
||||||
|
<TextBlock
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickRange}" />
|
||||||
|
<StackPanel
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<controls:SliderScroll
|
||||||
|
Width="130"
|
||||||
|
Maximum="2"
|
||||||
|
TickFrequency="0.01"
|
||||||
|
IsSnapToTickEnabled="True"
|
||||||
|
SmallChange="0.01"
|
||||||
|
Minimum="0"
|
||||||
|
Value="{Binding Configuration.RangeLeft, Mode=TwoWay}" />
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Width="25"
|
||||||
|
Text="{Binding Configuration.RangeLeft, StringFormat=\{0:0.00\}}" />
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<!-- Left DPad -->
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
VerticalAlignment="Top"
|
||||||
|
IsVisible="{Binding IsLeft}"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
CornerRadius="5">
|
||||||
|
<StackPanel
|
||||||
|
Margin="10"
|
||||||
|
Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsDPad}" />
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<!-- Left DPad Up -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsDPadUp}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.DpadUp, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Left DPad Down -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsDPadDown}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.DpadDown, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Left DPad Left -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsDPadLeft}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.DpadLeft, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Left DPad Right -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsDPadRight}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.DpadRight, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Triggers & Side Buttons -->
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="1"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
VerticalAlignment="Stretch">
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
CornerRadius="5"
|
||||||
|
MinHeight="90">
|
||||||
|
<StackPanel
|
||||||
|
Margin="8"
|
||||||
|
Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsTriggerThreshold}" />
|
||||||
|
<StackPanel
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<controls:SliderScroll
|
||||||
|
Width="130"
|
||||||
|
Maximum="1"
|
||||||
|
TickFrequency="0.01"
|
||||||
|
IsSnapToTickEnabled="True"
|
||||||
|
SmallChange="0.01"
|
||||||
|
Minimum="0"
|
||||||
|
Value="{Binding Configuration.TriggerThreshold, Mode=TwoWay}" />
|
||||||
|
<TextBlock
|
||||||
|
Width="25"
|
||||||
|
Text="{Binding Configuration.TriggerThreshold, StringFormat=\{0:0.00\}}" />
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
IsVisible="{Binding !IsRight}"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsLeftSR}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.LeftButtonSr, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
IsVisible="{Binding !IsRight}"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsLeftSL}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.LeftButtonSl, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
IsVisible="{Binding !IsLeft}"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsRightSR}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.RightButtonSr, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
IsVisible="{Binding !IsLeft}"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsRightSL}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.RightButtonSl, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<!-- Controller Picture -->
|
||||||
|
<Image
|
||||||
|
Margin="0,10,0,0"
|
||||||
|
MaxHeight="300"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
|
Source="{Binding Image}" />
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,10,0,0"
|
||||||
|
Spacing="5"
|
||||||
|
Orientation="Vertical"
|
||||||
|
VerticalAlignment="Bottom">
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
CornerRadius="5"
|
||||||
|
VerticalAlignment="Bottom"
|
||||||
|
HorizontalAlignment="Stretch">
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<CheckBox
|
||||||
|
Margin="10"
|
||||||
|
MinWidth="0"
|
||||||
|
Grid.Column="0"
|
||||||
|
IsChecked="{Binding Configuration.EnableMotion, Mode=TwoWay}">
|
||||||
|
<TextBlock Text="{locale:Locale ControllerSettingsMotion}" />
|
||||||
|
</CheckBox>
|
||||||
|
<Button
|
||||||
|
Margin="10"
|
||||||
|
Grid.Column="1"
|
||||||
|
Command="{Binding ShowMotionConfig}">
|
||||||
|
<TextBlock Text="{locale:Locale ControllerSettingsConfigureGeneral}" />
|
||||||
|
</Button>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
CornerRadius="5"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
Margin="0,-1,0,0">
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<CheckBox
|
||||||
|
Margin="10"
|
||||||
|
MinWidth="0"
|
||||||
|
Grid.Column="0"
|
||||||
|
IsChecked="{Binding Configuration.EnableRumble, Mode=TwoWay}">
|
||||||
|
<TextBlock Text="{locale:Locale ControllerSettingsRumble}" />
|
||||||
|
</CheckBox>
|
||||||
|
<Button
|
||||||
|
Margin="10"
|
||||||
|
Grid.Column="1"
|
||||||
|
Command="{Binding ShowRumbleConfig}">
|
||||||
|
<TextBlock Text="{locale:Locale ControllerSettingsConfigureGeneral}" />
|
||||||
|
</Button>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Controls -->
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Vertical"
|
||||||
|
Margin="5,0,0,0"
|
||||||
|
Grid.Column="2">
|
||||||
|
<!-- Right Triggers -->
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
IsVisible="{Binding IsRight}"
|
||||||
|
MinHeight="90"
|
||||||
|
CornerRadius="5">
|
||||||
|
<Grid
|
||||||
|
Margin="10"
|
||||||
|
HorizontalAlignment="Stretch">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="1"
|
||||||
|
Grid.Row="0"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsTriggerZR}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonZr, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="1"
|
||||||
|
Grid.Row="1"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsTriggerR}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonR, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="1"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonPlus}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonPlus, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<!-- Right Joystick -->
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
IsVisible="{Binding IsRight}"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
CornerRadius="5">
|
||||||
|
<StackPanel
|
||||||
|
Margin="10"
|
||||||
|
Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtons}" />
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Vertical">
|
||||||
|
<!-- Right Buttons A -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="120"
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonA}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonA, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Buttons B -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="120"
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonB}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonB, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Buttons X -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="120"
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonX}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonX, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Buttons Y -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="120"
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonY}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonY, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<!-- Right DPad -->
|
||||||
|
<Border
|
||||||
|
Padding="10"
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
CornerRadius="5"
|
||||||
|
IsVisible="{Binding IsRight}"
|
||||||
|
Margin="0,5,0,0">
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsRStick}" />
|
||||||
|
<!-- Right Joystick Controller -->
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Vertical">
|
||||||
|
<!-- Right Joystick Button -->
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickButton}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.RightControllerStickButton, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Joystick Stick -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,4,0,4"
|
||||||
|
Background="{DynamicResource ThemeDarkColor}"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickStick}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton Tag="stick">
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.RightJoystick, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<Separator Margin="0,8,0,8"
|
||||||
|
Height="1" />
|
||||||
|
<CheckBox IsChecked="{Binding Configuration.RightInvertStickX}">
|
||||||
|
<TextBlock Text="{locale:Locale ControllerSettingsStickInvertXAxis}" />
|
||||||
|
</CheckBox>
|
||||||
|
<CheckBox IsChecked="{Binding Configuration.RightInvertStickY}">
|
||||||
|
<TextBlock Text="{locale:Locale ControllerSettingsStickInvertYAxis}" />
|
||||||
|
</CheckBox>
|
||||||
|
<CheckBox IsChecked="{Binding Configuration.RightRotate90}">
|
||||||
|
<TextBlock Text="{locale:Locale ControllerSettingsRotate90}" />
|
||||||
|
</CheckBox>
|
||||||
|
<Separator Margin="0,8,0,8"
|
||||||
|
Height="1" />
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickDeadzone}" />
|
||||||
|
<StackPanel
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<controls:SliderScroll
|
||||||
|
Width="130"
|
||||||
|
Maximum="1"
|
||||||
|
TickFrequency="0.01"
|
||||||
|
IsSnapToTickEnabled="True"
|
||||||
|
SmallChange="0.01"
|
||||||
|
Padding="0"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Minimum="0"
|
||||||
|
Value="{Binding Configuration.DeadzoneRight, Mode=TwoWay}" />
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Width="25"
|
||||||
|
Text="{Binding Configuration.DeadzoneRight, StringFormat=\{0:0.00\}}" />
|
||||||
|
</StackPanel>
|
||||||
|
<TextBlock
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickRange}" />
|
||||||
|
<StackPanel
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<controls:SliderScroll
|
||||||
|
Width="130"
|
||||||
|
Maximum="2"
|
||||||
|
TickFrequency="0.01"
|
||||||
|
IsSnapToTickEnabled="True"
|
||||||
|
SmallChange="0.01"
|
||||||
|
Minimum="0"
|
||||||
|
Value="{Binding Configuration.RangeRight, Mode=TwoWay}" />
|
||||||
|
<TextBlock
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Width="25"
|
||||||
|
Text="{Binding Configuration.RangeRight, StringFormat=\{0:0.00\}}" />
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
14
src/Ryujinx.Ava/UI/Views/Input/GamePadInputView.axaml.cs
Normal file
14
src/Ryujinx.Ava/UI/Views/Input/GamePadInputView.axaml.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using Avalonia;
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Markup.Xaml;
|
||||||
|
|
||||||
|
namespace Ryujinx.Ava.UI.Views.Input
|
||||||
|
{
|
||||||
|
public partial class GamePadInputView : UserControl
|
||||||
|
{
|
||||||
|
public GamePadInputView()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
672
src/Ryujinx.Ava/UI/Views/Input/KeyboardInputView.axaml
Normal file
672
src/Ryujinx.Ava/UI/Views/Input/KeyboardInputView.axaml
Normal file
@ -0,0 +1,672 @@
|
|||||||
|
<UserControl xmlns="https://github.com/avaloniaui"
|
||||||
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
mc:Ignorable="d"
|
||||||
|
d:DesignWidth="800"
|
||||||
|
d:DesignHeight="450"
|
||||||
|
xmlns:viewModels="clr-namespace:Ryujinx.Ava.UI.ViewModels"
|
||||||
|
x:DataType="viewModels:KeyboardInputViewModel"
|
||||||
|
xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers"
|
||||||
|
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
|
||||||
|
xmlns:controls="clr-namespace:Ryujinx.Ava.UI.Controls"
|
||||||
|
x:Class="Ryujinx.Ava.UI.Views.Input.KeyboardInputView">
|
||||||
|
<UserControl.Resources>
|
||||||
|
<helpers:KeyValueConverter x:Key="Key" />
|
||||||
|
</UserControl.Resources>
|
||||||
|
<Grid>
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
<ColumnDefinition Width="*" />
|
||||||
|
<ColumnDefinition Width="Auto" />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<!-- Left Controls -->
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Vertical"
|
||||||
|
Margin="0,0,5,0"
|
||||||
|
Grid.Column="0">
|
||||||
|
<!-- Left Triggers -->
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
IsVisible="{Binding IsLeft}"
|
||||||
|
MinHeight="90"
|
||||||
|
CornerRadius="5">
|
||||||
|
<Grid
|
||||||
|
Margin="10"
|
||||||
|
HorizontalAlignment="Stretch">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="0"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsTriggerZL}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonZl, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="1"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsTriggerL}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonL, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="1"
|
||||||
|
Grid.Row="1"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonMinus}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonMinus, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<!-- Left Joystick -->
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
IsVisible="{Binding IsLeft}"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
CornerRadius="5">
|
||||||
|
<StackPanel
|
||||||
|
Margin="10"
|
||||||
|
Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsLStick}" />
|
||||||
|
<!-- Left Joystick Keyboard -->
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Vertical">
|
||||||
|
<!-- Left Joystick Button -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickButton}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.LeftKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Left Joystick Up -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickUp}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.LeftStickUp, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Left Joystick Down -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickDown}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.LeftStickDown, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Left Joystick Left -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickLeft}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.LeftStickLeft, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Left Joystick Right -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickRight}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.LeftStickRight, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<!-- Left DPad -->
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
VerticalAlignment="Top"
|
||||||
|
IsVisible="{Binding IsLeft}"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
CornerRadius="5">
|
||||||
|
<StackPanel
|
||||||
|
Margin="10"
|
||||||
|
Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsDPad}" />
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<!-- Left DPad Up -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsDPadUp}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.DpadUp, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Left DPad Down -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsDPadDown}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.DpadDown, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Left DPad Left -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsDPadLeft}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.DpadLeft, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Left DPad Right -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsDPadRight}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.DpadRight, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Triggers & Side Buttons -->
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="1"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
VerticalAlignment="Stretch">
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
CornerRadius="5"
|
||||||
|
MinHeight="90">
|
||||||
|
<StackPanel
|
||||||
|
Margin="8"
|
||||||
|
Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsTriggerThreshold}" />
|
||||||
|
<StackPanel
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<controls:SliderScroll
|
||||||
|
Width="130"
|
||||||
|
Maximum="1"
|
||||||
|
TickFrequency="0.01"
|
||||||
|
IsSnapToTickEnabled="True"
|
||||||
|
SmallChange="0.01"
|
||||||
|
Minimum="0"
|
||||||
|
Value="{Binding Configuration.TriggerThreshold, Mode=TwoWay}" />
|
||||||
|
<TextBlock
|
||||||
|
Width="25"
|
||||||
|
Text="{Binding Configuration.TriggerThreshold, StringFormat=\{0:0.00\}}" />
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
IsVisible="{Binding !IsRight}"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsLeftSR}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.LeftButtonSr, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
IsVisible="{Binding !IsRight}"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsLeftSL}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.LeftButtonSl, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
IsVisible="{Binding !IsLeft}"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsRightSR}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.RightButtonSr, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,4,0,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
IsVisible="{Binding !IsLeft}"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsRightSL}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.RightButtonSl, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<!-- Controller Picture -->
|
||||||
|
<Image
|
||||||
|
Margin="0,10,0,0"
|
||||||
|
MaxHeight="300"
|
||||||
|
HorizontalAlignment="Stretch"
|
||||||
|
VerticalAlignment="Stretch"
|
||||||
|
Source="{Binding Image}" />
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Controls -->
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Vertical"
|
||||||
|
Margin="5,0,0,0"
|
||||||
|
Grid.Column="2">
|
||||||
|
<!-- Right Triggers -->
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
IsVisible="{Binding IsRight}"
|
||||||
|
MinHeight="90"
|
||||||
|
CornerRadius="5">
|
||||||
|
<Grid
|
||||||
|
Margin="10"
|
||||||
|
HorizontalAlignment="Stretch">
|
||||||
|
<Grid.ColumnDefinitions>
|
||||||
|
<ColumnDefinition />
|
||||||
|
<ColumnDefinition />
|
||||||
|
</Grid.ColumnDefinitions>
|
||||||
|
<Grid.RowDefinitions>
|
||||||
|
<RowDefinition />
|
||||||
|
<RowDefinition />
|
||||||
|
</Grid.RowDefinitions>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="1"
|
||||||
|
Grid.Row="0"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsTriggerZR}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonZr, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="1"
|
||||||
|
Grid.Row="1"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsTriggerR}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonR, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<StackPanel
|
||||||
|
Grid.Column="0"
|
||||||
|
Grid.Row="1"
|
||||||
|
HorizontalAlignment="Right"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="20"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonPlus}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonPlus, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</Border>
|
||||||
|
<!-- Right Joystick -->
|
||||||
|
<Border
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
IsVisible="{Binding IsRight}"
|
||||||
|
Margin="0,5,0,0"
|
||||||
|
CornerRadius="5">
|
||||||
|
<StackPanel
|
||||||
|
Margin="10"
|
||||||
|
Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtons}" />
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Vertical">
|
||||||
|
<!-- Right Buttons A -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="120"
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonA}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonA, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Buttons B -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="120"
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonB}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonB, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Buttons X -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="120"
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonX}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonX, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Buttons Y -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Width="120"
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsButtonY}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.ButtonY, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
<!-- Right DPad -->
|
||||||
|
<Border
|
||||||
|
Padding="10"
|
||||||
|
BorderBrush="{DynamicResource ThemeControlBorderColor}"
|
||||||
|
BorderThickness="1"
|
||||||
|
CornerRadius="5"
|
||||||
|
IsVisible="{Binding IsRight}"
|
||||||
|
Margin="0,5,0,0">
|
||||||
|
<StackPanel Orientation="Vertical">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,0,10"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsRStick}" />
|
||||||
|
<!-- Right Joystick Keyboard -->
|
||||||
|
<StackPanel
|
||||||
|
Orientation="Vertical">
|
||||||
|
<!-- Right Joystick Button -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickButton}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.RightKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Joystick Up -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickUp}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.RightStickUp, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Joystick Down -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickDown}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.RightStickDown, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Joystick Left -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickLeft}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.RightStickLeft, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
<!-- Right Joystick Right -->
|
||||||
|
<StackPanel
|
||||||
|
Margin="0,0,0,4"
|
||||||
|
Orientation="Horizontal">
|
||||||
|
<TextBlock
|
||||||
|
Margin="0,0,10,0"
|
||||||
|
Width="120"
|
||||||
|
HorizontalAlignment="Center"
|
||||||
|
VerticalAlignment="Center"
|
||||||
|
Text="{locale:Locale ControllerSettingsStickRight}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
<ToggleButton>
|
||||||
|
<TextBlock
|
||||||
|
Text="{Binding Configuration.RightStickRight, Mode=TwoWay, Converter={StaticResource Key}}"
|
||||||
|
TextAlignment="Center" />
|
||||||
|
</ToggleButton>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</StackPanel>
|
||||||
|
</Border>
|
||||||
|
</StackPanel>
|
||||||
|
</Grid>
|
||||||
|
</UserControl>
|
14
src/Ryujinx.Ava/UI/Views/Input/KeyboardInputView.axaml.cs
Normal file
14
src/Ryujinx.Ava/UI/Views/Input/KeyboardInputView.axaml.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using Avalonia;
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Markup.Xaml;
|
||||||
|
|
||||||
|
namespace Ryujinx.Ava.UI.Views.Input
|
||||||
|
{
|
||||||
|
public partial class KeyboardInputView : UserControl
|
||||||
|
{
|
||||||
|
public KeyboardInputView()
|
||||||
|
{
|
||||||
|
InitializeComponent();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -19,7 +19,7 @@ namespace Ryujinx.Ava.UI.Views.Input
|
|||||||
|
|
||||||
public MotionInputView(ControllerInputViewModel viewModel)
|
public MotionInputView(ControllerInputViewModel viewModel)
|
||||||
{
|
{
|
||||||
var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>;
|
var config = viewModel.Configuration.Config as InputConfiguration<GamepadInputId, StickInputId>;
|
||||||
|
|
||||||
_viewModel = new MotionInputViewModel
|
_viewModel = new MotionInputViewModel
|
||||||
{
|
{
|
||||||
@ -51,7 +51,7 @@ namespace Ryujinx.Ava.UI.Views.Input
|
|||||||
};
|
};
|
||||||
contentDialog.PrimaryButtonClick += (sender, args) =>
|
contentDialog.PrimaryButtonClick += (sender, args) =>
|
||||||
{
|
{
|
||||||
var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>;
|
var config = viewModel.Configuration.Config as InputConfiguration<GamepadInputId, StickInputId>;
|
||||||
config.Slot = content._viewModel.Slot;
|
config.Slot = content._viewModel.Slot;
|
||||||
config.Sensitivity = content._viewModel.Sensitivity;
|
config.Sensitivity = content._viewModel.Sensitivity;
|
||||||
config.GyroDeadzone = content._viewModel.GyroDeadzone;
|
config.GyroDeadzone = content._viewModel.GyroDeadzone;
|
||||||
|
@ -19,7 +19,7 @@ namespace Ryujinx.Ava.UI.Views.Input
|
|||||||
|
|
||||||
public RumbleInputView(ControllerInputViewModel viewModel)
|
public RumbleInputView(ControllerInputViewModel viewModel)
|
||||||
{
|
{
|
||||||
var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>;
|
var config = viewModel.Configuration.Config as InputConfiguration<GamepadInputId, StickInputId>;
|
||||||
|
|
||||||
_viewModel = new RumbleInputViewModel
|
_viewModel = new RumbleInputViewModel
|
||||||
{
|
{
|
||||||
@ -47,7 +47,7 @@ namespace Ryujinx.Ava.UI.Views.Input
|
|||||||
|
|
||||||
contentDialog.PrimaryButtonClick += (sender, args) =>
|
contentDialog.PrimaryButtonClick += (sender, args) =>
|
||||||
{
|
{
|
||||||
var config = viewModel.Configuration as InputConfiguration<GamepadInputId, StickInputId>;
|
var config = viewModel.Configuration.Config as InputConfiguration<GamepadInputId, StickInputId>;
|
||||||
config.StrongRumble = content._viewModel.StrongRumble;
|
config.StrongRumble = content._viewModel.StrongRumble;
|
||||||
config.WeakRumble = content._viewModel.WeakRumble;
|
config.WeakRumble = content._viewModel.WeakRumble;
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user