From b539cafc9de3211920a10d81968f72047022c202 Mon Sep 17 00:00:00 2001 From: Robert Bragg Date: Tue, 30 Jan 2024 14:37:20 +0000 Subject: [PATCH] android: forward Key::Characters as KeyEvent::text on press Whenever we press a logical key that corresponds to a `Key::Character` with a unicode string, we now also forward that as the `.text` for the `KeyEvent`. --- src/platform_impl/android/mod.rs | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/platform_impl/android/mod.rs b/src/platform_impl/android/mod.rs index e080d0adbe..a3c0b44dff 100644 --- a/src/platform_impl/android/mod.rs +++ b/src/platform_impl/android/mod.rs @@ -22,6 +22,7 @@ use crate::{ error, event::{self, Force, InnerSizeWriter, StartCause}, event_loop::{self, ControlFlow, DeviceEvents, EventLoopWindowTarget as RootELW}, + keyboard::Key, platform::pump_events::PumpStatus, window::{ self, CursorGrabMode, ImePurpose, ResizeDirection, Theme, WindowButtons, WindowLevel, @@ -450,6 +451,16 @@ impl EventLoop { &mut self.combining_accent, ); + let logical_key = keycodes::to_logical(key_char, keycode); + let text = if let Key::Character(c) = &logical_key { + if state == event::ElementState::Pressed { + Some(c.clone()) + } else { + None + } + } else { + None + }; let event = event::Event::WindowEvent { window_id: window::WindowId(WindowId), event: event::WindowEvent::KeyboardInput { @@ -457,10 +468,10 @@ impl EventLoop { event: event::KeyEvent { state, physical_key: keycodes::to_physical_key(keycode), - logical_key: keycodes::to_logical(key_char, keycode), + logical_key, location: keycodes::to_location(keycode), repeat: key.repeat_count() > 0, - text: None, + text, platform_specific: KeyEventExtra {}, }, is_synthetic: false,