mirror of
https://github.com/ryujinx-mirror/ryujinx.git
synced 2025-03-13 02:39:39 -05:00

* Refactor * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * Update src/Ryujinx/UI/Views/Settings/SettingsHotkeysView.axaml.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Update src/Ryujinx.Input/ButtonValueType.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Add empty line * Requested renames * Update src/Ryujinx/UI/Views/Settings/SettingsHotkeysView.axaml.cs Co-authored-by: gdkchan <gab.dark.100@gmail.com> * Make parent models private readonly * Fix ControllerInputView * Make line shorter * Mac keys in locale * Double line break * Fix build * Get rid of _isValid * Fix potential race condition * Rename HasAnyButtonPressed to IsAnyButtonPressed * Use switches * Simplify enumeration --------- Co-authored-by: Ac_K <Acoustik666@gmail.com> Co-authored-by: gdkchan <gab.dark.100@gmail.com> Co-authored-by: TSR Berry <20988865+TSRBerry@users.noreply.github.com>
51 lines
1.2 KiB
C#
51 lines
1.2 KiB
C#
namespace Ryujinx.Input.Assigner
|
|
{
|
|
/// <summary>
|
|
/// <see cref="IButtonAssigner"/> implementation for <see cref="IKeyboard"/>.
|
|
/// </summary>
|
|
public class KeyboardKeyAssigner : IButtonAssigner
|
|
{
|
|
private readonly IKeyboard _keyboard;
|
|
|
|
private KeyboardStateSnapshot _keyboardState;
|
|
|
|
public KeyboardKeyAssigner(IKeyboard keyboard)
|
|
{
|
|
_keyboard = keyboard;
|
|
}
|
|
|
|
public void Initialize() { }
|
|
|
|
public void ReadInput()
|
|
{
|
|
_keyboardState = _keyboard.GetKeyboardStateSnapshot();
|
|
}
|
|
|
|
public bool IsAnyButtonPressed()
|
|
{
|
|
return GetPressedButton() is not null;
|
|
}
|
|
|
|
public bool ShouldCancel()
|
|
{
|
|
return _keyboardState.IsPressed(Key.Escape);
|
|
}
|
|
|
|
public Button? GetPressedButton()
|
|
{
|
|
Button? keyPressed = null;
|
|
|
|
for (Key key = Key.Unknown; key < Key.Count; key++)
|
|
{
|
|
if (_keyboardState.IsPressed(key))
|
|
{
|
|
keyPressed = new(key);
|
|
break;
|
|
}
|
|
}
|
|
|
|
return !ShouldCancel() ? keyPressed : null;
|
|
}
|
|
}
|
|
}
|