diff options
author | 2024-02-05 14:54:18 -0500 | |
---|---|---|
committer | 2024-02-20 16:30:36 +0100 | |
commit | 9600954d8de57442dfe1269dcf80e3d23edbaf0a (patch) | |
tree | ec28f0e32e231fdb7f2870f66703c4cf9bc2ca9c /winit/src/conversion.rs | |
parent | e24b1b65002d716f8bf5fccb49871bd4f46791ca (diff) | |
download | iced-9600954d8de57442dfe1269dcf80e3d23edbaf0a.tar.gz iced-9600954d8de57442dfe1269dcf80e3d23edbaf0a.tar.bz2 iced-9600954d8de57442dfe1269dcf80e3d23edbaf0a.zip |
Decouple `Key` from modifiers and apply them to `text`
Diffstat (limited to 'winit/src/conversion.rs')
-rw-r--r-- | winit/src/conversion.rs | 45 |
1 files changed, 34 insertions, 11 deletions
diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs index 478dbddd..3d2ba0a4 100644 --- a/winit/src/conversion.rs +++ b/winit/src/conversion.rs @@ -195,17 +195,40 @@ pub fn window_event( })) } }, - WindowEvent::KeyboardInput { - event: - winit::event::KeyEvent { - logical_key, - state, - text, - location, - .. - }, - .. - } => Some(Event::Keyboard({ + WindowEvent::KeyboardInput { event, .. } => Some(Event::Keyboard({ + let logical_key = { + #[cfg(not(target_arch = "wasm32"))] + { + use winit::platform::modifier_supplement::KeyEventExtModifierSupplement; + event.key_without_modifiers() + } + + #[cfg(target_arch = "wasm32")] + { + // TODO: Fix inconsistent API on Wasm + event.logical_key + } + }; + + let text = { + #[cfg(not(target_arch = "wasm32"))] + { + use crate::core::SmolStr; + use winit::platform::modifier_supplement::KeyEventExtModifierSupplement; + + event.text_with_all_modifiers().map(SmolStr::new) + } + + #[cfg(target_arch = "wasm32")] + { + // TODO: Fix inconsistent API on Wasm + event.text + } + }; + + let winit::event::KeyEvent { + state, location, .. + } = event; let key = key(logical_key); let modifiers = self::modifiers(modifiers); |