summaryrefslogtreecommitdiffstats
path: root/winit/src
diff options
context:
space:
mode:
authorLibravatar Ashley Wulber <ashley@system76.com>2024-02-05 14:54:18 -0500
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2024-02-20 16:30:36 +0100
commit9600954d8de57442dfe1269dcf80e3d23edbaf0a (patch)
treeec28f0e32e231fdb7f2870f66703c4cf9bc2ca9c /winit/src
parente24b1b65002d716f8bf5fccb49871bd4f46791ca (diff)
downloadiced-9600954d8de57442dfe1269dcf80e3d23edbaf0a.tar.gz
iced-9600954d8de57442dfe1269dcf80e3d23edbaf0a.tar.bz2
iced-9600954d8de57442dfe1269dcf80e3d23edbaf0a.zip
Decouple `Key` from modifiers and apply them to `text`
Diffstat (limited to 'winit/src')
-rw-r--r--winit/src/conversion.rs45
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);