Ryujinx/Ryujinx.Ava/Ui/Windows/ControllerSettingsWindow.axaml
2022-05-15 12:44:58 +00:00

1506 lines
No EOL
79 KiB
XML

<UserControl
x:Class="Ryujinx.Ava.Ui.Windows.ControllerSettingsWindow"
xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:ui="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
xmlns:locale="clr-namespace:Ryujinx.Ava.Common.Locale"
xmlns:controls="clr-namespace:Ryujinx.Ava.Ui.Controls"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:viewModels="clr-namespace:Ryujinx.Ava.Ui.ViewModels"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
d:DesignHeight="600"
d:DesignWidth="1660"
x:CompileBindings="False"
mc:Ignorable="d">
<Design.DataContext>
<viewModels:ControllerSettingsViewModel />
</Design.DataContext>
<UserControl.Resources>
<controls:KeyValueConverter x:Key="Key" />
</UserControl.Resources>
<StackPanel
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Orientation="Vertical">
<Grid Margin="2,2,2,5" HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="0.5*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<Border
Grid.Column="0"
Margin="0,0,2,0"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1">
<StackPanel
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Vertical">
<TextBlock
Margin="0,0,0,4"
HorizontalAlignment="Center"
Text="{locale:Locale ControllerSettingsPlayer}" />
<ComboBox
Name="PlayerIndexBox"
Width="150"
SelectionChanged="PlayerIndexBox_OnSelectionChanged"
Items="{Binding PlayerIndexes}"
SelectedIndex="{Binding PlayerId}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
</Border>
<!-- Main Controller Settings -->
<Border
Grid.Column="1"
Margin="0,0,2,0"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1">
<StackPanel
Margin="2"
HorizontalAlignment="Stretch"
VerticalAlignment="Center"
Orientation="Vertical">
<TextBlock
Margin="0,0,0,5"
HorizontalAlignment="Center"
Text="{locale:Locale ControllerSettingsInputDevice}" />
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<ComboBox
Name="DeviceBox"
HorizontalAlignment="Stretch"
Items="{Binding DeviceList}"
SelectedIndex="{Binding Device}" />
<Button
Grid.Column="1"
MinWidth="0"
Margin="5,0,0,0"
VerticalAlignment="Center"
Command="{Binding LoadDevices}">
<ui:SymbolIcon
Symbol="Refresh"
FontSize="15"
Height="20" />
</Button>
</Grid>
</StackPanel>
</Border>
<Border
Grid.Column="2"
Margin="0,0,2,0"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1">
<Grid
Margin="2"
HorizontalAlignment="Stretch"
VerticalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock
Margin="0,0,0,4"
HorizontalAlignment="Center"
Text="{locale:Locale ControllerSettingsControllerType}" />
<ComboBox
Grid.Row="1"
HorizontalAlignment="Stretch"
Items="{Binding Controllers}"
SelectedIndex="{Binding Controller}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</Grid>
</Border>
<Border
Grid.Column="3"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1">
<StackPanel
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Vertical">
<TextBlock
Margin="0,0,0,4"
HorizontalAlignment="Center"
Text="{locale:Locale ControllerSettingsProfile}" />
<StackPanel Orientation="Horizontal">
<ui:ComboBox
IsEditable="True"
Name="ProfileBox"
Width="200"
SelectedIndex="0"
Items="{Binding ProfilesList}"
Text="{Binding ProfileName}" />
<Button
Margin="5,0,0,0"
VerticalAlignment="Center"
ToolTip.Tip="{locale:Locale ControllerSettingsLoadProfileToolTip}"
Command="{Binding LoadProfile}">
<ui:SymbolIcon
Symbol="Upload"
FontSize="15"
Height="20" />
</Button>
<Button
Margin="5,0,0,0"
VerticalAlignment="Center"
ToolTip.Tip="{locale:Locale ControllerSettingsSaveProfileToolTip}"
Command="{Binding SaveProfile}">
<ui:SymbolIcon
Symbol="Save"
FontSize="15"
Height="20" />
</Button>
<Button
Margin="5,0,0,0"
VerticalAlignment="Center"
ToolTip.Tip="{locale:Locale ControllerSettingsRemoveProfileToolTip}"
Command="{Binding RemoveProfile}">
<ui:SymbolIcon
Symbol="Delete"
FontSize="15"
Height="20" />
</Button>
</StackPanel>
</StackPanel>
</Border>
</Grid>
<!-- Button / JoyStick Settings -->
<Grid
Name="SettingButtons"
MinHeight="450"
IsVisible="{Binding ShowSettings}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<!-- Left -->
<Grid Grid.Column="0" VerticalAlignment="Stretch" DockPanel.Dock="Left" Margin="0,0,10,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<!-- Left Joystick -->
<Border
Grid.Row="0"
Padding="15,5,15,0"
Margin="2,0,2,2"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
IsVisible="{Binding IsLeft}">
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Vertical">
<TextBlock
Margin="0,2"
HorizontalAlignment="Center"
Text="{locale:Locale ControllerSettingsLStick}" />
<!-- Left Joystick Keyboard -->
<StackPanel IsVisible="{Binding !IsController}" Orientation="Vertical">
<!-- Left Joystick Button -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsLStickButton}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.LeftKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Left Joystick Up -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsLStickUp}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.LeftStickUp, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Left Joystick Down -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsLStickDown}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.LeftStickDown, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Left Joystick Left -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsLStickLeft}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.LeftStickLeft, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Left Joystick Right -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsLStickRight}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2,2,2,5"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.LeftStickRight, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
</StackPanel>
<!-- Left Joystick Controller -->
<StackPanel IsVisible="{Binding IsController}" Orientation="Vertical">
<!-- Left Joystick Button -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsLStickButton}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.LeftControllerStickButton, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Left Joystick Stick -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsLStickStick}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch"
Tag="stick">
<TextBlock
Text="{Binding Configuration.LeftJoystick, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Horizontal">
<CheckBox IsChecked="{Binding Configuration.LeftInvertStickX}">
<TextBlock Margin="0,0,15,0"
Text="{locale:Locale ControllerSettingsLStickInvertXAxis}" />
</CheckBox>
<CheckBox IsChecked="{Binding Configuration.LeftInvertStickY}">
<TextBlock Margin="0" Text="{locale:Locale ControllerSettingsLStickInvertYAxis}" />
</CheckBox>
</StackPanel>
<CheckBox IsChecked="{Binding Configuration.LeftRotate90}">
<TextBlock Margin="0" Text="{locale:Locale ControllerSettingsRotate90}" />
</CheckBox>
<Separator Height="1" Margin="0,5" />
<StackPanel Margin="0" Orientation="Vertical">
<TextBlock Margin="2" Text="{locale:Locale ControllerSettingsLStickDeadzone}" />
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Horizontal">
<Slider
Margin="0,-10,0,-5"
Width="200"
Maximum="1"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
Minimum="0"
Value="{Binding Configuration.DeadzoneLeft, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
Margin="5, 0"
Text="{Binding Configuration.DeadzoneLeft, StringFormat=\{0:0.000\}}" />
</StackPanel>
<TextBlock Margin="2" Text="{locale:Locale ControllerSettingsStickRange}" />
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Horizontal">
<Slider
Margin="0,-10,0,-5"
Width="200"
Maximum="2"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
Minimum="0"
Value="{Binding Configuration.RangeLeft, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
Margin="5, 0"
Text="{Binding Configuration.RangeLeft, StringFormat=\{0:0.000\}}" />
</StackPanel>
</StackPanel>
</StackPanel>
</StackPanel>
</Border>
<!-- Left DPad -->
<Border
Grid.Row="1"
Margin="2,0,2,2"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
Padding="8"
VerticalAlignment="Top"
IsVisible="{Binding IsLeft}">
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Top"
Orientation="Vertical">
<TextBlock
Margin="0,2"
HorizontalAlignment="Center"
Text="{locale:Locale ControllerSettingsDPad}" />
<StackPanel Orientation="Vertical" HorizontalAlignment="Stretch" VerticalAlignment="Top">
<!-- Left DPad Up -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsDPadUp}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.DpadUp, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Left DPad Down -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsDPadDown}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.DpadDown, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Left DPad Left -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsDPadLeft}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.DpadLeft, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Left DPad Right -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsDPadRight}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.DpadRight, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
</StackPanel>
</StackPanel>
</Border>
<Border
Grid.Row="2"
Margin="2,0,2,2"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
Padding="2"
VerticalAlignment="Top"
IsVisible="{Binding IsController}">
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Top"
Orientation="Vertical">
<TextBlock
Margin="0"
HorizontalAlignment="Center"
Text="{locale:Locale ControllerSettingsRumble}" />
<CheckBox HorizontalAlignment="Center" IsChecked="{Binding Configuration.EnableRumble}">
<TextBlock Margin="0,0,15,0"
Text="{locale:Locale ControllerSettingsRumbleEnable}" />
</CheckBox>
<TextBlock Margin="0"
Text="{locale:Locale ControllerSettingsRumbleStrongMultiplier}" />
<StackPanel Orientation="Horizontal" Margin="0">
<Slider
Margin="0,-5,0,-5"
Width="200"
MaxWidth="200"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
Maximum="10"
Minimum="0"
Value="{Binding Configuration.StrongRumble, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
Margin="5,0"
Text="{Binding Configuration.StrongRumble, StringFormat=\{0:0.000\}}" />
</StackPanel>
<TextBlock
Text="{locale:Locale ControllerSettingsRumbleWeakMultiplier}" />
<StackPanel Orientation="Horizontal" Margin="0">
<Slider
Margin="0,-5,0,-5"
Width="200"
MaxWidth="200"
Maximum="10"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
Minimum="0"
Value="{Binding Configuration.WeakRumble, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
Margin="5,0"
Text="{Binding Configuration.WeakRumble, StringFormat=\{0:0.000\}}" />
</StackPanel>
</StackPanel>
</Border>
</Grid>
<!-- Triggers And Side Buttons-->
<StackPanel Grid.Column="1" HorizontalAlignment="Stretch">
<Border
Margin="2,2,0,2"
Padding="5, 0, 5, 5"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1">
<Grid VerticalAlignment="Center" HorizontalAlignment="Center">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="*" />
<ColumnDefinition Width="Auto" />
<ColumnDefinition Width="Auto" />
</Grid.ColumnDefinitions>
<StackPanel
Grid.Column="0"
Grid.Row="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsVisible="{Binding IsLeft}"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="20"
MinWidth="20"
MaxWidth="20"
Margin="4,2,2,2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsTriggerZL}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.ButtonZl, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Grid.Column="0"
Grid.Row="1"
IsVisible="{Binding IsLeft}"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="20"
MinWidth="20"
MaxWidth="20"
Margin="4,2,2,2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsTriggerL}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.ButtonL, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Grid.Column="1"
Grid.Row="0"
IsVisible="{Binding !IsLeft}"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="20"
MinWidth="20"
MaxWidth="20"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsRightSR}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2,2,4,2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.RightButtonSr, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Grid.Column="1"
Grid.Row="1"
IsVisible="{Binding !IsLeft}"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="20"
MinWidth="20"
MaxWidth="20"
Margin="2,2,4,2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsRightSL}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.RightButtonSl, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Stretch"
Orientation="Horizontal"
Margin="10,0"
Grid.ColumnSpan="2"
Grid.Column="2"
Grid.Row="0">
<TextBlock VerticalAlignment="Center"
Margin="0,5,10,0"
Text="{locale:Locale ControllerSettingsTriggerThreshold}" />
<Slider
Width="130"
Maximum="1"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
Minimum="0"
Value="{Binding Configuration.TriggerThreshold, Mode=TwoWay}" />
<TextBlock Margin="5,0"
Text="{Binding Configuration.TriggerThreshold, StringFormat=\{0:0.000\}}" />
</StackPanel>
<StackPanel
HorizontalAlignment="Left"
VerticalAlignment="Center"
Grid.Column="2"
Grid.Row="1"
IsVisible="{Binding IsLeft}"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="20"
MinWidth="20"
MaxWidth="20"
Margin="4,2,2,2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsButtonMinus}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.ButtonMinus, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Right"
VerticalAlignment="Center"
Grid.Column="3"
Grid.Row="1"
IsVisible="{Binding IsRight}"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="20"
MinWidth="20"
MaxWidth="20"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsButtonPlus}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2,2,4,2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.ButtonPlus, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Grid.Column="4"
Grid.Row="1"
Background="{DynamicResource ThemeDarkColor}"
IsVisible="{Binding !IsRight}"
Orientation="Horizontal">
<TextBlock
Width="20"
MinWidth="20"
MaxWidth="20"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsLeftSR}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2,2,4,2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.LeftButtonSr, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Grid.Column="4"
Grid.Row="0"
IsVisible="{Binding !IsRight}"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="20"
MinWidth="20"
MaxWidth="20"
Margin="2,2,4,2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsRightSL}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.RightButtonSl, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Grid.Column="5"
Grid.Row="0"
IsVisible="{Binding IsRight}"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="20"
MinWidth="20"
MaxWidth="20"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsTriggerZR}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2,2,4,2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.ButtonZr, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Grid.Column="5"
Grid.Row="1"
IsVisible="{Binding IsRight}"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="20"
MinWidth="20"
MaxWidth="20"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsTriggerR}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2,2,4,2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.ButtonR, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
</Grid>
</Border>
<!-- Controller Picture -->
<Image
Height="400"
Margin="0,10,0,0"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Source="{Binding Image}" />
</StackPanel>
<!--Right Controls-->
<Grid
Margin="10,0,0,0"
Grid.Column="2"
VerticalAlignment="Top"
HorizontalAlignment="Stretch">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<Border
Padding="8"
Grid.Row="0"
Margin="2,0,2,2"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
IsVisible="{Binding IsRight}">
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Vertical">
<TextBlock
Margin="0,2"
HorizontalAlignment="Center"
Text="{locale:Locale ControllerSettingsButtons}" />
<Grid HorizontalAlignment="Stretch">
<Grid.ColumnDefinitions>
<ColumnDefinition />
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition />
</Grid.RowDefinitions>
<!-- Right Buttons X -->
<StackPanel
Grid.Column="0"
Grid.Row="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="40"
MaxWidth="40"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsButtonX}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.ButtonX, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Right Buttons Y -->
<StackPanel
Grid.Column="0"
Grid.Row="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="40"
MaxWidth="40"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsButtonY}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.ButtonY, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Right Buttons A -->
<StackPanel
Grid.Column="1"
Grid.Row="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="40"
MaxWidth="40"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsButtonA}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.ButtonA, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Right Buttons B -->
<StackPanel
Grid.Column="1"
Grid.Row="1"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="40"
MaxWidth="40"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsButtonB}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.ButtonB, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
</Grid>
</StackPanel>
</Border>
<Border
Grid.Row="1"
Margin="2,0,2,2"
Padding="15,5,15,0"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
IsVisible="{Binding IsRight}">
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Vertical">
<TextBlock
Margin="0,2"
HorizontalAlignment="Center"
Text="{locale:Locale ControllerSettingsRStick}" />
<!-- Right Joystick Keyboard -->
<StackPanel IsVisible="{Binding !IsController}" Orientation="Vertical">
<!-- Right Joystick Button -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsRStickButton}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.RightKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Right Joystick Up -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsRStickUp}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.RightStickUp, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Right Joystick Down -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsRStickDown}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.RightStickDown, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Right Joystick Left -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsRStickLeft}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.RightStickLeft, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Right Joystick Right -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsRStickRight}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2,2,2,5"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.RightStickRight, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
</StackPanel>
<!-- Right Joystick Controller -->
<StackPanel IsVisible="{Binding IsController}" Orientation="Vertical">
<!-- Right Joystick Button -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsRStickButton}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch">
<TextBlock
Text="{Binding Configuration.RightControllerStickButton, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<!-- Right Joystick Stick -->
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="{DynamicResource ThemeDarkColor}"
Orientation="Horizontal">
<TextBlock
Width="90"
MinWidth="90"
MaxWidth="90"
Margin="2"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Text="{locale:Locale ControllerSettingsRStickStick}"
TextAlignment="Center" />
<ToggleButton
Width="90"
Height="27"
Margin="2"
HorizontalAlignment="Stretch"
Tag="stick">
<TextBlock
Text="{Binding Configuration.RightJoystick, Mode=TwoWay, Converter={StaticResource Key}}"
TextAlignment="Center" />
</ToggleButton>
</StackPanel>
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Horizontal">
<CheckBox IsChecked="{Binding Configuration.RightInvertStickX}">
<TextBlock Margin="0,0,15,0"
Text="{locale:Locale ControllerSettingsRStickInvertXAxis}" />
</CheckBox>
<CheckBox IsChecked="{Binding Configuration.RightInvertStickY}">
<TextBlock Margin="0" Text="{locale:Locale ControllerSettingsRStickInvertYAxis}" />
</CheckBox>
</StackPanel>
<CheckBox IsChecked="{Binding Configuration.RightRotate90}">
<TextBlock Margin="0" Text="{locale:Locale ControllerSettingsRotate90}" />
</CheckBox>
<Separator Margin="-16,0" />
<StackPanel Margin="0" Orientation="Vertical">
<TextBlock Margin="2" Text="{locale:Locale ControllerSettingsRStickDeadzone}" />
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Horizontal">
<Slider
Margin="0,-10,0,-5"
Width="200"
Maximum="1"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
Padding="0"
VerticalAlignment="Center"
Minimum="0"
Value="{Binding Configuration.DeadzoneRight, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
Margin="5, 0"
Text="{Binding Configuration.DeadzoneRight, StringFormat=\{0:0.000\}}" />
</StackPanel>
<TextBlock Margin="2" Text="{locale:Locale ControllerSettingsStickRange}" />
<StackPanel
HorizontalAlignment="Center"
VerticalAlignment="Center"
Orientation="Horizontal">
<Slider
Margin="0,-10,0,-5"
Width="200"
Maximum="2"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
Minimum="0"
Value="{Binding Configuration.RangeRight, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
Margin="5, 0"
Text="{Binding Configuration.RangeRight, StringFormat=\{0:0.000\}}" />
</StackPanel>
</StackPanel>
</StackPanel>
</StackPanel>
</Border>
<!-- Misc -->
<StackPanel Grid.Row="3" Orientation="Vertical">
<Border
HorizontalAlignment="Stretch"
Margin="2,0,2,2"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
BorderThickness="1"
Padding="8"
IsVisible="{Binding IsController}">
<Grid VerticalAlignment="Top">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<StackPanel
Grid.Row="0"
Margin="0,0,0,5"
HorizontalAlignment="Center"
Orientation="Vertical">
<TextBlock
Text="{locale:Locale ControllerSettingsMotion}"
Margin="0" />
</StackPanel>
<StackPanel
Grid.Row="1"
HorizontalAlignment="Center"
Orientation="Vertical">
<CheckBox
HorizontalAlignment="Center"
VerticalAlignment="Center"
IsChecked="{Binding Configuration.EnableMotion, Mode=TwoWay}">
<TextBlock
Margin="0,0,15,0"
Text="{locale:Locale ControllerSettingsMotionEnableMotionControls}" />
</CheckBox>
</StackPanel>
<!-- Motion -->
<Border
Margin="0"
Grid.Row="2"
Padding="0"
BorderBrush="{DynamicResource ThemeControlBorderColor}"
HorizontalAlignment="Stretch"
IsVisible="{Binding Configuration.EnableMotion}">
<StackPanel
HorizontalAlignment="Center"
Orientation="Vertical">
<StackPanel
Margin="0"
HorizontalAlignment="Center"
Orientation="Vertical">
<TextBlock
Margin="0"
HorizontalAlignment="Center"
Text="{locale:Locale ControllerSettingsMotionGyroSensitivity}" />
<StackPanel
Margin="0"
VerticalAlignment="Center"
Orientation="Horizontal">
<Slider
Margin="0,-5,0,-5"
Width="150"
MaxWidth="150"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
Maximum="100"
Minimum="0"
Value="{Binding Configuration.Sensitivity, Mode=TwoWay}" />
<TextBlock HorizontalAlignment="Center"
Margin="5, 0"
Text="{Binding Configuration.Sensitivity, StringFormat=\{0:0\}%}" />
</StackPanel>
</StackPanel>
<StackPanel
Margin="0"
HorizontalAlignment="Center"
Orientation="Vertical">
<TextBlock
Margin="0"
HorizontalAlignment="Center"
Text="{locale:Locale ControllerSettingsMotionGyroDeadzone}" />
<StackPanel VerticalAlignment="Center" Orientation="Horizontal">
<Slider
Margin="0,-5,0,-5"
Width="150"
MaxWidth="150"
TickFrequency="0.01"
IsSnapToTickEnabled="True"
Maximum="100"
Minimum="0"
Value="{Binding Configuration.GyroDeadzone, Mode=TwoWay}" />
<TextBlock
VerticalAlignment="Center"
Margin="5, 0"
Text="{Binding Configuration.GyroDeadzone, StringFormat=\{0:0.000\}}" />
</StackPanel>
</StackPanel>
<Separator Margin="-16,0" />
<Button Margin="0,8,0,0" HorizontalAlignment="Center"
Command="{Binding ShowCemuHookConfig}">
<TextBlock
Text="{locale:Locale ControllerSettingsMotionConfigureCemuHookSettings}" />
</Button>
</StackPanel>
</Border>
</Grid>
</Border>
</StackPanel>
</Grid>
</Grid>
</StackPanel>
</UserControl>