<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: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" xmlns:helpers="clr-namespace:Ryujinx.Ava.UI.Helpers" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" d:DesignHeight="800" d:DesignWidth="800" x:CompileBindings="False" mc:Ignorable="d" Focusable="True"> <Design.DataContext> <viewModels:ControllerSettingsViewModel /> </Design.DataContext> <UserControl.Resources> <helpers: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" Padding="2,0"> <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" Padding="2,0"> <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" Padding="2,0"> <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" Padding="2,0" > <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="100" SelectedIndex="0" Items="{Binding ProfilesList}" Text="{Binding ProfileName}" /> <Button MinWidth="0" 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 MinWidth="0" 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 MinWidth="0" 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 Margin="0,0,10,0" Grid.Column="0" VerticalAlignment="Stretch" DockPanel.Dock="Left"> <Grid.RowDefinitions> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> <RowDefinition Height="Auto" /> </Grid.RowDefinitions> <!-- Left Triggers --> <Border Grid.Row="0" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" IsVisible="{Binding IsLeft}"> <Grid Margin="10" HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <StackPanel Margin="0,0,0,4" Grid.Column="0" Grid.Row="0" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsTriggerZL}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.ButtonZl, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <StackPanel Grid.Column="0" Grid.Row="1" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsTriggerL}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.ButtonL, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <StackPanel Margin="0,0,0,4" Grid.Column="1" Grid.Row="0" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsButtonMinus}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.ButtonMinus, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> </Grid> </Border> <!-- Left Joystick --> <Border Grid.Row="1" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" IsVisible="{Binding IsLeft}"> <StackPanel Margin="10" Orientation="Vertical"> <TextBlock Margin="0,0,0,10" HorizontalAlignment="Center" Text="{locale:Locale ControllerSettingsLStick}" /> <!-- Left Joystick Keyboard --> <StackPanel IsVisible="{Binding !IsController}" Orientation="Vertical"> <!-- Left Joystick Button --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsLStickButton}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.LeftKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Left Joystick Up --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsLStickUp}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.LeftStickUp, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Left Joystick Down --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsLStickDown}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.LeftStickDown, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Left Joystick Left --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsLStickLeft}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.LeftStickLeft, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Left Joystick Right --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsLStickRight}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" 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 Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsLStickButton}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.LeftControllerStickButton, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Left 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 ControllerSettingsLStickStick}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch" Tag="stick"> <TextBlock Text="{Binding Configuration.LeftJoystick, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <CheckBox IsChecked="{Binding Configuration.LeftInvertStickX}"> <TextBlock Text="{locale:Locale ControllerSettingsLStickInvertXAxis}" /> </CheckBox> <CheckBox IsChecked="{Binding Configuration.LeftInvertStickY}"> <TextBlock Text="{locale:Locale ControllerSettingsLStickInvertYAxis}" /> </CheckBox> <CheckBox IsChecked="{Binding Configuration.LeftRotate90}"> <TextBlock Text="{locale:Locale ControllerSettingsRotate90}" /> </CheckBox> <Separator Margin="0,4,0,4" Height="1" /> <StackPanel Orientation="Vertical"> <TextBlock Text="{locale:Locale ControllerSettingsLStickDeadzone}" /> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal"> <Slider Width="130" Maximum="1" TickFrequency="0.01" IsSnapToTickEnabled="True" Minimum="0" Value="{Binding Configuration.DeadzoneLeft, Mode=TwoWay}" /> <TextBlock VerticalAlignment="Center" Text="{Binding Configuration.DeadzoneLeft, StringFormat=\{0:0.00\}}" /> </StackPanel> <TextBlock Text="{locale:Locale ControllerSettingsStickRange}" /> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal"> <Slider Width="130" Maximum="2" TickFrequency="0.01" IsSnapToTickEnabled="True" Minimum="0" Value="{Binding Configuration.RangeLeft, Mode=TwoWay}" /> <TextBlock VerticalAlignment="Center" Text="{Binding Configuration.RangeLeft, StringFormat=\{0:0.00\}}" /> </StackPanel> </StackPanel> </StackPanel> </StackPanel> </Border> <!-- Left DPad --> <Border Grid.Row="2" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" VerticalAlignment="Top" IsVisible="{Binding IsLeft}"> <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" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsDPadUp}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.DpadUp, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Left DPad Down --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsDPadDown}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.DpadDown, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Left DPad Left --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsDPadLeft}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.DpadLeft, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Left DPad Right --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsDPadRight}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.DpadRight, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> </StackPanel> </StackPanel> </Border> </Grid> <!-- Triggers And Side Buttons--> <StackPanel Grid.Column="1" HorizontalAlignment="Stretch"> <Border BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1"> <StackPanel Margin="10" Orientation="Vertical"> <TextBlock HorizontalAlignment="Center" Text="{locale:Locale ControllerSettingsTriggerThreshold}" /> <StackPanel HorizontalAlignment="Center" Orientation="Horizontal"> <Slider Width="130" Maximum="1" TickFrequency="0.01" IsSnapToTickEnabled="True" Minimum="0" Value="{Binding Configuration.TriggerThreshold, Mode=TwoWay}" /> <TextBlock Text="{Binding Configuration.TriggerThreshold, StringFormat=\{0:0.00\}}" /> </StackPanel> <StackPanel Margin="0,4,0,0" HorizontalAlignment="Center" VerticalAlignment="Center" Background="{DynamicResource ThemeDarkColor}" IsVisible="{Binding !IsRight}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsLeftSR}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <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}" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsLeftSL}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <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}" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsRightSR}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <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}" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsRightSL}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <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="250" HorizontalAlignment="Stretch" VerticalAlignment="Top" Source="{Binding Image}" /> <!-- Motion+Rumble --> <StackPanel Margin="0,10,0,0" Orientation="Vertical" > <Border BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" HorizontalAlignment="Stretch" IsVisible="{Binding IsController}"> <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" HorizontalAlignment="Stretch" IsVisible="{Binding IsController}"> <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--> <Grid Margin="10,0,0,0" Grid.Column="2" VerticalAlignment="Top" HorizontalAlignment="Stretch" > <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <Border Grid.Row="0" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" IsVisible="{Binding IsRight}"> <StackPanel Margin="10" Orientation="Vertical"> <Grid HorizontalAlignment="Stretch"> <Grid.ColumnDefinitions> <ColumnDefinition /> <ColumnDefinition /> </Grid.ColumnDefinitions> <Grid.RowDefinitions> <RowDefinition /> <RowDefinition /> </Grid.RowDefinitions> <StackPanel Margin="0,0,0,4" Grid.Column="1" Grid.Row="0" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsTriggerZR}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <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" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsTriggerR}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.ButtonR, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <StackPanel Margin="0,0,8,4" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Right" VerticalAlignment="Center" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsButtonPlus}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.ButtonPlus, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> </Grid> </StackPanel> </Border> <Border Grid.Row="1" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" IsVisible="{Binding IsRight}"> <StackPanel Margin="10" Orientation="Vertical"> <TextBlock Margin="0,0,0,10" 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 Margin="0,0,0,4" Grid.Column="0" Grid.Row="0" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsButtonX}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" 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" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsButtonY}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.ButtonY, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Right Buttons A --> <StackPanel Margin="0,0,0,4" Grid.Column="1" Grid.Row="0" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsButtonA}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" 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" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Width="20" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsButtonB}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.ButtonB, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> </Grid> </StackPanel> </Border> <Border Grid.Row="2" Padding="10" BorderBrush="{DynamicResource ThemeControlBorderColor}" BorderThickness="1" IsVisible="{Binding IsRight}"> <StackPanel Orientation="Vertical"> <TextBlock Margin="0,0,0,10" HorizontalAlignment="Center" Text="{locale:Locale ControllerSettingsRStick}" /> <!-- Right Joystick Keyboard --> <StackPanel IsVisible="{Binding !IsController}" Orientation="Vertical"> <!-- Right Joystick Button --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsRStickButton}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.RightKeyboardStickButton, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Right Joystick Up --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsRStickUp}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.RightStickUp, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Right Joystick Down --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsRStickDown}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.RightStickDown, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Right Joystick Left --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsRStickLeft}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <TextBlock Text="{Binding Configuration.RightStickLeft, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <!-- Right Joystick Right --> <StackPanel Margin="0,0,0,4" Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsRStickRight}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" 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 Background="{DynamicResource ThemeDarkColor}" Orientation="Horizontal"> <TextBlock Margin="0,0,10,0" Width="120" HorizontalAlignment="Center" VerticalAlignment="Center" Text="{locale:Locale ControllerSettingsRStickButton}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch"> <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 ControllerSettingsRStickStick}" TextAlignment="Center" /> <ToggleButton Width="90" Height="27" HorizontalAlignment="Stretch" Tag="stick"> <TextBlock Text="{Binding Configuration.RightJoystick, Mode=TwoWay, Converter={StaticResource Key}}" TextAlignment="Center" /> </ToggleButton> </StackPanel> <CheckBox IsChecked="{Binding Configuration.RightInvertStickX}"> <TextBlock Text="{locale:Locale ControllerSettingsRStickInvertXAxis}" /> </CheckBox> <CheckBox IsChecked="{Binding Configuration.RightInvertStickY}"> <TextBlock Text="{locale:Locale ControllerSettingsRStickInvertYAxis}" /> </CheckBox> <CheckBox IsChecked="{Binding Configuration.RightRotate90}"> <TextBlock Text="{locale:Locale ControllerSettingsRotate90}" /> </CheckBox> <Separator Margin="0,4,0,4" Height="1" /> <StackPanel Orientation="Vertical"> <TextBlock Text="{locale:Locale ControllerSettingsRStickDeadzone}" /> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal"> <Slider Width="130" Maximum="1" TickFrequency="0.01" IsSnapToTickEnabled="True" Padding="0" VerticalAlignment="Center" Minimum="0" Value="{Binding Configuration.DeadzoneRight, Mode=TwoWay}" /> <TextBlock VerticalAlignment="Center" Text="{Binding Configuration.DeadzoneRight, StringFormat=\{0:0.00\}}" /> </StackPanel> <TextBlock Text="{locale:Locale ControllerSettingsStickRange}" /> <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center" Orientation="Horizontal"> <Slider Width="130" Maximum="2" TickFrequency="0.01" IsSnapToTickEnabled="True" Minimum="0" Value="{Binding Configuration.RangeRight, Mode=TwoWay}" /> <TextBlock VerticalAlignment="Center" Text="{Binding Configuration.RangeRight, StringFormat=\{0:0.00\}}" /> </StackPanel> </StackPanel> </StackPanel> </StackPanel> </Border> </Grid> </Grid> </StackPanel> </UserControl>