From 5a74bf0aabfe8e0605313b2692a111fb342dfc81 Mon Sep 17 00:00:00 2001 From: Mads Marquart Date: Thu, 19 Mar 2026 02:27:23 +0100 Subject: [PATCH] Android: Add further scancode conversions (#4023) Firefox' source at: https://searchfox.org/mozilla-central/rev/c597e9c789ad36af84a0370d395be066b7dc94f4/widget/NativeKeyToDOMCodeName.h Seems to use some other form of scan code? So instead we try to map as many of the codes available on `Keycode` that they do as possible. --- winit-android/src/keycodes.rs | 13 +++++++++++++ winit/src/changelog/unreleased.md | 1 + 2 files changed, 14 insertions(+) diff --git a/winit-android/src/keycodes.rs b/winit-android/src/keycodes.rs index 75f4fb2bd..9b1fe1f0d 100644 --- a/winit-android/src/keycodes.rs +++ b/winit-android/src/keycodes.rs @@ -109,6 +109,7 @@ pub fn to_physical_key(keycode: Keycode) -> PhysicalKey { Keycode::MediaStop => KeyCode::MediaStop, Keycode::MediaNext => KeyCode::MediaTrackNext, Keycode::MediaPrevious => KeyCode::MediaTrackPrevious, + Keycode::MediaEject => KeyCode::Eject, Keycode::Plus => KeyCode::Equal, Keycode::Minus => KeyCode::Minus, @@ -131,7 +132,11 @@ pub fn to_physical_key(keycode: Keycode) -> PhysicalKey { // These are exactly the same Keycode::ScrollLock => KeyCode::ScrollLock, + Keycode::Eisu => KeyCode::Lang2, + Keycode::Muhenkan => KeyCode::NonConvert, + Keycode::Henkan => KeyCode::Convert, Keycode::Yen => KeyCode::IntlYen, + Keycode::Ro => KeyCode::IntlRo, Keycode::Kana => KeyCode::Lang1, Keycode::KatakanaHiragana => KeyCode::KanaMode, @@ -154,6 +159,14 @@ pub fn to_physical_key(keycode: Keycode) -> PhysicalKey { Keycode::Sleep => KeyCode::Sleep, // what about SoftSleep? Keycode::Wakeup => KeyCode::WakeUp, + Keycode::CapsLock => KeyCode::CapsLock, + Keycode::Help => KeyCode::Help, + + Keycode::Back => KeyCode::BrowserBack, + Keycode::Forward => KeyCode::BrowserForward, + Keycode::Refresh => KeyCode::BrowserRefresh, + Keycode::Search => KeyCode::BrowserSearch, + keycode => return PhysicalKey::Unidentified(NativeKeyCode::Android(keycode.into())), }) } diff --git a/winit/src/changelog/unreleased.md b/winit/src/changelog/unreleased.md index a99ce6628..32910b707 100644 --- a/winit/src/changelog/unreleased.md +++ b/winit/src/changelog/unreleased.md @@ -47,6 +47,7 @@ changelog entry. - On Redox, add support for missing keyboard scancodes. - Implement `Send` and `Sync` for `OwnedDisplayHandle`. - Use new macOS 15 cursors for resize icons. +- On Android, added scancode conversions for more obscure key codes. ### Changed