<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" FlowDirection="LeftToRight" 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>