forked from MeloNX/MeloNX
* dotnet format style --severity info Some changes were manually reverted. * dotnet format analyzers --serverity info Some changes have been minimally adapted. * Restore a few unused methods and variables * Address dotnet format CA1816 warnings * Address or silence dotnet format CA2208 warnings * Address or silence dotnet format CA1806 and a few CA1854 warnings * Address dotnet format CA1822 warnings * Make dotnet format succeed in style mode * Address dotnet format CA2208 warnings properly * Address most dotnet format whitespace warnings * Apply dotnet format whitespace formatting A few of them have been manually reverted and the corresponding warning was silenced * Format if-blocks correctly * Another rebase, another dotnet format run * Run dotnet format whitespace after rebase * Run dotnet format after rebase and remove unused usings - analyzers - style - whitespace * Add comments to disabled warnings * Simplify properties and array initialization, Use const when possible, Remove trailing commas * Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas" This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e. * dotnet format whitespace after rebase * First dotnet format pass * Fix build issues * Apply suggestions from code review Co-authored-by: Ac_K <Acoustik666@gmail.com> * Second dotnet format pass * Update src/Ryujinx/Modules/Updater/Updater.cs Co-authored-by: Ac_K <Acoustik666@gmail.com> * Add trailing commas and improve formatting * Fix formatting and naming issues * Rename nvStutterWorkaround to nvidiaStutterWorkaround * Use using declarations and extend resource lifetimes * Fix GTK issues * Add formatting for generated files * Add trailing commas --------- Co-authored-by: Ac_K <Acoustik666@gmail.com>
95 lines
2.3 KiB
C#
95 lines
2.3 KiB
C#
using Gdk;
|
|
using Gtk;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using GtkKey = Gdk.Key;
|
|
|
|
namespace Ryujinx.Input.GTK3
|
|
{
|
|
public class GTK3KeyboardDriver : IGamepadDriver
|
|
{
|
|
private readonly Widget _widget;
|
|
private readonly HashSet<GtkKey> _pressedKeys;
|
|
|
|
public GTK3KeyboardDriver(Widget widget)
|
|
{
|
|
_widget = widget;
|
|
_pressedKeys = new HashSet<GtkKey>();
|
|
|
|
_widget.KeyPressEvent += OnKeyPress;
|
|
_widget.KeyReleaseEvent += OnKeyRelease;
|
|
}
|
|
|
|
public string DriverName => "GTK3";
|
|
|
|
private static readonly string[] _keyboardIdentifers = new string[1] { "0" };
|
|
|
|
public ReadOnlySpan<string> GamepadsIds => _keyboardIdentifers;
|
|
|
|
public event Action<string> OnGamepadConnected
|
|
{
|
|
add { }
|
|
remove { }
|
|
}
|
|
|
|
public event Action<string> OnGamepadDisconnected
|
|
{
|
|
add { }
|
|
remove { }
|
|
}
|
|
|
|
protected virtual void Dispose(bool disposing)
|
|
{
|
|
if (disposing)
|
|
{
|
|
_widget.KeyPressEvent -= OnKeyPress;
|
|
_widget.KeyReleaseEvent -= OnKeyRelease;
|
|
}
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
GC.SuppressFinalize(this);
|
|
Dispose(true);
|
|
}
|
|
|
|
[GLib.ConnectBefore]
|
|
protected void OnKeyPress(object sender, KeyPressEventArgs args)
|
|
{
|
|
GtkKey key = (GtkKey)Keyval.ToLower((uint)args.Event.Key);
|
|
|
|
_pressedKeys.Add(key);
|
|
}
|
|
|
|
[GLib.ConnectBefore]
|
|
protected void OnKeyRelease(object sender, KeyReleaseEventArgs args)
|
|
{
|
|
GtkKey key = (GtkKey)Keyval.ToLower((uint)args.Event.Key);
|
|
|
|
_pressedKeys.Remove(key);
|
|
}
|
|
|
|
internal bool IsPressed(Key key)
|
|
{
|
|
if (key == Key.Unbound || key == Key.Unknown)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
GtkKey nativeKey = GTK3MappingHelper.ToGtkKey(key);
|
|
|
|
return _pressedKeys.Contains(nativeKey);
|
|
}
|
|
|
|
public IGamepad GetGamepad(string id)
|
|
{
|
|
if (!_keyboardIdentifers[0].Equals(id))
|
|
{
|
|
return null;
|
|
}
|
|
|
|
return new GTK3Keyboard(this, _keyboardIdentifers[0], "All keyboards");
|
|
}
|
|
}
|
|
}
|