Keymapping menu

This commit is contained in:
Marco 2025-03-26 18:47:17 +01:00
commit b76427e3ca
14 changed files with 137 additions and 34 deletions

View file

@ -0,0 +1,43 @@
using System.Linq;
using Godot;
namespace Cirno.Scripts.UI;
public partial class KeyRemappingItem : HBoxContainer
{
public StringName KeyId { get; set; }
public StringName KeyName { get; set; }
[Export] public Label NameLabel { get; private set; }
[Export] public Label InputLabel { get; private set; }
private bool _active = false;
public override void _Ready()
{
NameLabel.Text = KeyName;
var actions = InputMap.GetActions();
var action = actions.FirstOrDefault(x => x == KeyId);
var events = InputMap.ActionGetEvents(action);
InputLabel.Text = string.Join(",", events.Select(x => x.AsText()));
}
public void StartRemap()
{
_active = true;
}
public override void _Input(InputEvent e)
{
if (!_active) return;
if (e is InputEventKey keyEvent && keyEvent.Pressed)
{
GD.Print(keyEvent.Keycode);
InputLabel.Text = keyEvent.Keycode.ToString();
_active = false;
}
}
}