<UserControl
    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:controls="clr-namespace:Ryujinx.Ava.UI.Controls"
    xmlns:models="clr-namespace:Ryujinx.Ava.UI.Models"
    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:Class="Ryujinx.Ava.UI.Views.Input.ControllerInputView"
    x:DataType="viewModels:ControllerInputViewModel"
    mc:Ignorable="d"
    Focusable="True">
    <Design.DataContext>
        <viewModels:ControllerInputViewModel />
    </Design.DataContext>
    <UserControl.Resources>
        <helpers:KeyValueConverter x:Key="Key" />
    </UserControl.Resources>
    <UserControl.Styles>
        <Style Selector="ToggleButton">
            <Setter Property="Width" Value="90" />
            <Setter Property="Height" Value="27" />
            <Setter Property="HorizontalAlignment" Value="Stretch" />
        </Style>
    </UserControl.Styles>
    <StackPanel
        HorizontalAlignment="Stretch"
        VerticalAlignment="Stretch"
        Orientation="Vertical">
        <StackPanel
            Margin="0 0 0 5"
            Orientation="Vertical"
            Spacing="5">
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="10" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <!-- Player Selection -->
                <Grid
                    Grid.Column="0"
                    Margin="2"
                    HorizontalAlignment="Stretch"
                    VerticalAlignment="Center">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <TextBlock
                        Margin="5,0,10,0"
                        Width="90"
                        HorizontalAlignment="Left"
                        VerticalAlignment="Center"
                        Text="{locale:Locale ControllerSettingsPlayer}" />
                    <ComboBox
                        Grid.Column="1"
                        Name="PlayerIndexBox"
                        HorizontalAlignment="Stretch"
                        VerticalAlignment="Center"
                        SelectionChanged="PlayerIndexBox_OnSelectionChanged"
                        ItemsSource="{Binding PlayerIndexes}"
                        SelectedIndex="{Binding PlayerId}">
                        <ComboBox.ItemTemplate>
                            <DataTemplate>
                                <TextBlock Text="{Binding Name}" />
                            </DataTemplate>
                        </ComboBox.ItemTemplate>
                    </ComboBox>
                </Grid>
                <!-- Profile Selection -->
                <Grid
                    Grid.Column="2"
                    Margin="2"
                    HorizontalAlignment="Stretch"
                    VerticalAlignment="Center">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="Auto"/>
                    </Grid.ColumnDefinitions>
                    <TextBlock
                        Margin="5,0,10,0"
                        Width="90"
                        HorizontalAlignment="Left"
                        VerticalAlignment="Center"
                        Text="{locale:Locale ControllerSettingsProfile}" />
                    <ui:FAComboBox
                        Grid.Column="1"
                        IsEditable="True"
                        Name="ProfileBox"
                        HorizontalAlignment="Stretch"
                        VerticalAlignment="Center"
                        SelectedIndex="0"
                        ItemsSource="{Binding ProfilesList}" 
                        Text="{Binding ProfileName, Mode=TwoWay}" />
                    <Button
                        Grid.Column="2"
                        MinWidth="0"
                        Margin="5,0,0,0"
                        VerticalAlignment="Center"
                        ToolTip.Tip="{locale:Locale ControllerSettingsLoadProfileToolTip}"
                        Command="{ReflectionBinding LoadProfile}">
                        <ui:SymbolIcon
                            Symbol="Upload"
                            FontSize="15"
                            Height="20" />
                    </Button>
                    <Button
                        Grid.Column="3"
                            MinWidth="0"
                            Margin="5,0,0,0"
                            VerticalAlignment="Center"
                            ToolTip.Tip="{locale:Locale ControllerSettingsSaveProfileToolTip}"
                            Command="{ReflectionBinding SaveProfile}">
                        <ui:SymbolIcon
                            Symbol="Save"
                            FontSize="15"
                            Height="20" />
                    </Button>
                    <Button
                        Grid.Column="4"
                            MinWidth="0"
                            Margin="5,0,0,0"
                            VerticalAlignment="Center"
                            ToolTip.Tip="{locale:Locale ControllerSettingsRemoveProfileToolTip}"
                            Command="{ReflectionBinding RemoveProfile}">
                        <ui:SymbolIcon
                            Symbol="Delete"
                            FontSize="15"
                            Height="20" />
                    </Button>
                </Grid>
            </Grid>
            <Separator />
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="10" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <!-- Input Device -->
                <Grid
                    Grid.Column="0"
                    Margin="2"
                    HorizontalAlignment="Stretch">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*"/>
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <TextBlock
                        Grid.Column="0"
                        Margin="5,0,10,0"
                        Width="90"
                        HorizontalAlignment="Left"
                        VerticalAlignment="Center"
                        Text="{locale:Locale ControllerSettingsInputDevice}" />
                    <ComboBox
                        Grid.Column="1"
                        Name="DeviceBox"
                        HorizontalAlignment="Stretch"
                        VerticalAlignment="Center"
                        ItemsSource="{Binding DeviceList}"
                        SelectedIndex="{Binding Device}" />
                    <Button
                        Grid.Column="2"
                        MinWidth="0"
                        Margin="5,0,0,0"
                        VerticalAlignment="Center"
                        Command="{ReflectionBinding LoadDevices}">
                        <ui:SymbolIcon
                            Symbol="Refresh"
                            FontSize="15"
                            Height="20"/>
                    </Button>
                </Grid>
                <!-- Controller Type -->
                <Grid
                    Grid.Column="2"
                    Margin="2"
                    HorizontalAlignment="Stretch"
                    VerticalAlignment="Center">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="Auto"/>
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <TextBlock
                        Margin="5,0,10,0"
                        Width="90"
                        HorizontalAlignment="Left"
                        VerticalAlignment="Center"
                        Text="{locale:Locale ControllerSettingsControllerType}" />
                    <ComboBox
                        Grid.Column="1"
                        HorizontalAlignment="Stretch"
                        ItemsSource="{Binding Controllers}"
                        SelectedIndex="{Binding Controller}">
                        <ComboBox.ItemTemplate>
                            <DataTemplate DataType="models:ControllerModel">
                                <TextBlock Text="{Binding Name}" />
                            </DataTemplate>
                        </ComboBox.ItemTemplate>
                    </ComboBox>
                </Grid>
            </Grid>
        </StackPanel>
        <!-- Button / JoyStick Settings -->
        <Grid
            Name="SettingButtons"
            MinHeight="450"
            IsVisible="{Binding ShowSettings}">
            <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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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
                            IsVisible="{Binding !IsController}"
                            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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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
                                Orientation="Horizontal">
                                <TextBlock
                                    Margin="0,0,10,0"
                                    Width="120"
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    Text="{locale:Locale ControllerSettingsStickButton}"
                                    TextAlignment="Center" />
                                <ToggleButton>
                                    <TextBlock
                                        Text="{ReflectionBinding 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="{ReflectionBinding Configuration.LeftJoystick, Mode=TwoWay, Converter={StaticResource Key}}"
                                        TextAlignment="Center" />
                                </ToggleButton>
                            </StackPanel>
                            <Separator
                                Margin="0,8,0,8"
                                Height="1" />
                            <CheckBox IsChecked="{ReflectionBinding Configuration.LeftInvertStickX}">
                                <TextBlock Text="{locale:Locale ControllerSettingsStickInvertXAxis}" />
                            </CheckBox>
                            <CheckBox IsChecked="{ReflectionBinding Configuration.LeftInvertStickY}">
                                <TextBlock Text="{locale:Locale ControllerSettingsStickInvertYAxis}" />
                            </CheckBox>
                            <CheckBox IsChecked="{ReflectionBinding 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="{ReflectionBinding Configuration.DeadzoneLeft, Mode=TwoWay}" />
                                    <TextBlock
                                        VerticalAlignment="Center"
                                        Width="25"
                                        Text="{ReflectionBinding 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="{ReflectionBinding Configuration.RangeLeft, Mode=TwoWay}" />
                                    <TextBlock
                                        VerticalAlignment="Center"
                                        Width="25"
                                        Text="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding Configuration.TriggerThreshold, Mode=TwoWay}" />
                            <TextBlock
                              Width="25"
                              Text="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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}" />
                <!-- Motion + Rumble -->
                <StackPanel
                    Margin="0,10,0,0"
                    Spacing="5"
                    Orientation="Vertical"
                    VerticalAlignment="Bottom">
                    <Border
                        BorderBrush="{DynamicResource ThemeControlBorderColor}"
                        BorderThickness="1"
                        CornerRadius="5"
                        VerticalAlignment="Bottom"
                        HorizontalAlignment="Stretch"
                        IsVisible="{Binding IsController}">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <CheckBox
                                Margin="10"
                                MinWidth="0"
                                Grid.Column="0"
                                IsChecked="{ReflectionBinding 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"
                        IsVisible="{Binding IsController}"
                        Margin="0,-1,0,0">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="Auto" />
                            </Grid.ColumnDefinitions>
                            <CheckBox
                                Margin="10"
                                MinWidth="0"
                                Grid.Column="0"
                                IsChecked="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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
                            IsVisible="{Binding !IsController}"
                            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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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="{ReflectionBinding 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
                                Orientation="Horizontal">
                                <TextBlock
                                    Margin="0,0,10,0"
                                    Width="120"
                                    HorizontalAlignment="Center"
                                    VerticalAlignment="Center"
                                    Text="{locale:Locale ControllerSettingsStickButton}"
                                    TextAlignment="Center" />
                                <ToggleButton>
                                    <TextBlock
                                        Text="{ReflectionBinding 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="{ReflectionBinding Configuration.RightJoystick, Mode=TwoWay, Converter={StaticResource Key}}"
                                        TextAlignment="Center" />
                                </ToggleButton>
                            </StackPanel>
                            <Separator Margin="0,8,0,8" Height="1" />
                            <CheckBox IsChecked="{ReflectionBinding Configuration.RightInvertStickX}">
                                <TextBlock Text="{locale:Locale ControllerSettingsStickInvertXAxis}" />
                            </CheckBox>
                            <CheckBox IsChecked="{ReflectionBinding Configuration.RightInvertStickY}">
                                <TextBlock Text="{locale:Locale ControllerSettingsStickInvertYAxis}" />
                            </CheckBox>
                            <CheckBox IsChecked="{ReflectionBinding 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="{ReflectionBinding Configuration.DeadzoneRight, Mode=TwoWay}" />
                                    <TextBlock
                                        VerticalAlignment="Center"
                                        Width="25"
                                        Text="{ReflectionBinding 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="{ReflectionBinding Configuration.RangeRight, Mode=TwoWay}" />
                                    <TextBlock
                                        VerticalAlignment="Center"
                                        Width="25"
                                        Text="{ReflectionBinding Configuration.RangeRight, StringFormat=\{0:0.00\}}" />
                                </StackPanel>
                            </StackPanel>
                        </StackPanel>
                    </StackPanel>
                </Border>
            </StackPanel>
        </Grid>
    </StackPanel>
</UserControl>