From dce69af89402c49cbd824b8eee67c3973aa9c33a Mon Sep 17 00:00:00 2001 From: Piotr Podusowski Date: Mon, 29 Jul 2024 20:32:25 +0200 Subject: [PATCH 01/10] Set `KeyboardInput::text` when `logical_key` can be represented as character. --- src/platform_impl/android/mod.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/platform_impl/android/mod.rs b/src/platform_impl/android/mod.rs index 7a5526f779..361e89442f 100644 --- a/src/platform_impl/android/mod.rs +++ b/src/platform_impl/android/mod.rs @@ -390,6 +390,13 @@ impl EventLoop { &mut self.combining_accent, ); + let logical_key = keycodes::to_logical(key_char, keycode); + let text = if let Key::Character(ref c) = logical_key { + Some(c.to_owned()) + } else { + None + }; + let window_id = window::WindowId(WindowId); let event = event::WindowEvent::KeyboardInput { device_id: event::DeviceId(DeviceId(key.device_id())), @@ -399,7 +406,7 @@ impl EventLoop { logical_key: keycodes::to_logical(key_char, keycode), location: keycodes::to_location(keycode), repeat: key.repeat_count() > 0, - text: None, + text, platform_specific: KeyEventExtra {}, }, is_synthetic: false, From 804b05b43643281fd1ff840f3144a5f73283d1ad Mon Sep 17 00:00:00 2001 From: Piotr Podusowski Date: Mon, 29 Jul 2024 20:35:51 +0200 Subject: [PATCH 02/10] changelog updated --- src/changelog/unreleased.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/changelog/unreleased.md b/src/changelog/unreleased.md index f66061b9f4..59896510fe 100644 --- a/src/changelog/unreleased.md +++ b/src/changelog/unreleased.md @@ -83,7 +83,8 @@ changelog entry. instead of requiring a `&mut` reference to it. - On Web, `Window::canvas()` now returns a reference. - On Web, `CursorGrabMode::Locked` now lets `DeviceEvent::MouseMotion` return raw data, not OS - accelerated, if the browser supports it. +- On Android, when `keycode` can be represented as character, it is used as + `KeyboardInput::text`. ### Removed From 952e17a3d216b9cfde74c24f2061c6f074d5a4f8 Mon Sep 17 00:00:00 2001 From: Piotr Podusowski Date: Mon, 29 Jul 2024 20:39:25 +0200 Subject: [PATCH 03/10] changelog entry corrected --- src/changelog/unreleased.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/changelog/unreleased.md b/src/changelog/unreleased.md index 59896510fe..ba8aae59e9 100644 --- a/src/changelog/unreleased.md +++ b/src/changelog/unreleased.md @@ -83,8 +83,7 @@ changelog entry. instead of requiring a `&mut` reference to it. - On Web, `Window::canvas()` now returns a reference. - On Web, `CursorGrabMode::Locked` now lets `DeviceEvent::MouseMotion` return raw data, not OS -- On Android, when `keycode` can be represented as character, it is used as - `KeyboardInput::text`. +- On Android, when `keycode` can be represented as character, it is used as `KeyEvent::text`. ### Removed From b6970823b06539ed9aa52c888ae1475cd4a46e51 Mon Sep 17 00:00:00 2001 From: Piotr Podusowski Date: Mon, 29 Jul 2024 20:40:34 +0200 Subject: [PATCH 04/10] changelog corrected, again --- src/changelog/unreleased.md | 1 + 1 file changed, 1 insertion(+) diff --git a/src/changelog/unreleased.md b/src/changelog/unreleased.md index ba8aae59e9..2f816880a0 100644 --- a/src/changelog/unreleased.md +++ b/src/changelog/unreleased.md @@ -83,6 +83,7 @@ changelog entry. instead of requiring a `&mut` reference to it. - On Web, `Window::canvas()` now returns a reference. - On Web, `CursorGrabMode::Locked` now lets `DeviceEvent::MouseMotion` return raw data, not OS + accelerated, if the browser supports it. - On Android, when `keycode` can be represented as character, it is used as `KeyEvent::text`. ### Removed From a2f967364b79ac422cd7d60fc248ea4df8b0c48c Mon Sep 17 00:00:00 2001 From: Piotr Podusowski Date: Mon, 29 Jul 2024 20:53:06 +0200 Subject: [PATCH 05/10] fix build --- src/platform_impl/android/mod.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/platform_impl/android/mod.rs b/src/platform_impl/android/mod.rs index 361e89442f..bde6abf7e4 100644 --- a/src/platform_impl/android/mod.rs +++ b/src/platform_impl/android/mod.rs @@ -19,6 +19,7 @@ use crate::error; use crate::error::EventLoopError; use crate::event::{self, Force, InnerSizeWriter, StartCause}; use crate::event_loop::{self, ControlFlow, DeviceEvents}; +use crate::keyboard::Key; use crate::platform::pump_events::PumpStatus; use crate::platform_impl::Fullscreen; use crate::window::{ From dffa227f7734741aff9f14f5ad6c5ff785c3d079 Mon Sep 17 00:00:00 2001 From: Piotr Podusowski Date: Mon, 29 Jul 2024 21:26:45 +0200 Subject: [PATCH 06/10] Update src/platform_impl/android/mod.rs Co-authored-by: Marijn Suijten --- src/platform_impl/android/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform_impl/android/mod.rs b/src/platform_impl/android/mod.rs index bde6abf7e4..ac8021a322 100644 --- a/src/platform_impl/android/mod.rs +++ b/src/platform_impl/android/mod.rs @@ -404,7 +404,7 @@ 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, From 8efac0ca8f05541fb5707a983ea33f4e734cb582 Mon Sep 17 00:00:00 2001 From: Piotr Podusowski Date: Fri, 9 Aug 2024 14:19:15 +0200 Subject: [PATCH 07/10] Update src/changelog/unreleased.md Co-authored-by: Marijn Suijten --- src/changelog/unreleased.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/changelog/unreleased.md b/src/changelog/unreleased.md index 2f816880a0..67e163c790 100644 --- a/src/changelog/unreleased.md +++ b/src/changelog/unreleased.md @@ -84,7 +84,7 @@ changelog entry. - On Web, `Window::canvas()` now returns a reference. - On Web, `CursorGrabMode::Locked` now lets `DeviceEvent::MouseMotion` return raw data, not OS accelerated, if the browser supports it. -- On Android, when `keycode` can be represented as character, it is used as `KeyEvent::text`. +- On Android, when `keycode` can be represented as character, its textual representation is provided in `KeyEvent::text`. ### Removed From 7d409ffed7aed9ba10d8008baa8217d8f7104c49 Mon Sep 17 00:00:00 2001 From: Piotr Podusowski Date: Tue, 5 Nov 2024 21:46:30 +0100 Subject: [PATCH 08/10] fmt --- src/platform_impl/android/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform_impl/android/mod.rs b/src/platform_impl/android/mod.rs index 2356bd4fb3..babedffe2b 100644 --- a/src/platform_impl/android/mod.rs +++ b/src/platform_impl/android/mod.rs @@ -20,8 +20,8 @@ use crate::event_loop::{ ActiveEventLoop as RootActiveEventLoop, ControlFlow, DeviceEvents, EventLoopProxy as RootEventLoopProxy, OwnedDisplayHandle as RootOwnedDisplayHandle, }; -use crate::monitor::MonitorHandle as RootMonitorHandle; use crate::keyboard::Key; +use crate::monitor::MonitorHandle as RootMonitorHandle; use crate::platform::pump_events::PumpStatus; use crate::window::{ self, CursorGrabMode, CustomCursor, CustomCursorSource, Fullscreen, ImePurpose, From 492f1c7c7185ed1cef4d08e1d5474c19d62ab8fc Mon Sep 17 00:00:00 2001 From: Piotr Podusowski Date: Mon, 11 Nov 2024 17:29:35 +0100 Subject: [PATCH 09/10] Update src/platform_impl/android/mod.rs Co-authored-by: Marijn Suijten --- src/platform_impl/android/mod.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platform_impl/android/mod.rs b/src/platform_impl/android/mod.rs index babedffe2b..7e2e3ccd9a 100644 --- a/src/platform_impl/android/mod.rs +++ b/src/platform_impl/android/mod.rs @@ -470,8 +470,8 @@ impl EventLoop { ); let logical_key = keycodes::to_logical(key_char, keycode); - let text = if let Key::Character(ref c) = logical_key { - Some(c.to_owned()) + let text = if state == event::ElementState::Pressed { + logical_key.to_text().map(SmolStr::new) } else { None }; From 149f835e6ab276409847b576739b5b5a0cb7a0e8 Mon Sep 17 00:00:00 2001 From: Piotr Podusowski Date: Fri, 13 Dec 2024 17:21:45 +0100 Subject: [PATCH 10/10] compilation fix --- src/platform_impl/android/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform_impl/android/mod.rs b/src/platform_impl/android/mod.rs index 7e2e3ccd9a..e3c0a5479d 100644 --- a/src/platform_impl/android/mod.rs +++ b/src/platform_impl/android/mod.rs @@ -9,6 +9,7 @@ use android_activity::input::{InputEvent, KeyAction, Keycode, MotionAction}; use android_activity::{ AndroidApp, AndroidAppWaker, ConfigurationRef, InputStatus, MainEvent, Rect, }; +use smol_str::SmolStr; use tracing::{debug, trace, warn}; use crate::application::ApplicationHandler; @@ -20,7 +21,6 @@ use crate::event_loop::{ ActiveEventLoop as RootActiveEventLoop, ControlFlow, DeviceEvents, EventLoopProxy as RootEventLoopProxy, OwnedDisplayHandle as RootOwnedDisplayHandle, }; -use crate::keyboard::Key; use crate::monitor::MonitorHandle as RootMonitorHandle; use crate::platform::pump_events::PumpStatus; use crate::window::{