summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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);