From 6343a9da121f0056f49315ac8780cedf530b1817 Mon Sep 17 00:00:00 2001 From: Susko3 Date: Mon, 27 Jun 2022 20:39:51 +0200 Subject: [PATCH] Synthesize backspace key up event (since Android doesn't send it sometimes) --- osu.Framework.Android/AndroidGameView.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/osu.Framework.Android/AndroidGameView.cs b/osu.Framework.Android/AndroidGameView.cs index 949b845341..c0b1967732 100644 --- a/osu.Framework.Android/AndroidGameView.cs +++ b/osu.Framework.Android/AndroidGameView.cs @@ -140,6 +140,13 @@ public override bool OnKeyDown([GeneratedEnum] Keycode keyCode, KeyEvent e) default: KeyDown?.Invoke(keyCode, e); + + // Releasing backspace on a physical keyboard when text input is active will not send a key up event. + // Manually send one to prevent the key from getting stuck. + // This does mean that key repeat is handled by the OS, instead of by the usual `InputManager` handling. + if (keyCode == Keycode.Del && e.IsFromSource(InputSourceType.Keyboard) && textInputActive) + KeyUp?.Invoke(Keycode.Del, new KeyEvent(e.DownTime, e.EventTime, KeyEventActions.Up, Keycode.Del, 0, e.MetaState, e.DeviceId, e.ScanCode, e.Flags, e.Source)); + return true; } }