summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/src/keyboard/event.rs3
-rw-r--r--winit/src/conversion.rs10
2 files changed, 10 insertions, 3 deletions
diff --git a/core/src/keyboard/event.rs b/core/src/keyboard/event.rs
index 09625b18..26c45717 100644
--- a/core/src/keyboard/event.rs
+++ b/core/src/keyboard/event.rs
@@ -15,6 +15,9 @@ pub enum Event {
/// The key pressed.
key: Key,
+ /// The key pressed with all keyboard modifiers applied, except Ctrl.
+ modified_key: Key,
+
/// The physical key pressed.
physical_key: key::Physical,
diff --git a/winit/src/conversion.rs b/winit/src/conversion.rs
index 0f336cc7..13b0f15b 100644
--- a/winit/src/conversion.rs
+++ b/winit/src/conversion.rs
@@ -192,7 +192,7 @@ pub fn window_event(
}
},
WindowEvent::KeyboardInput { event, .. } => Some(Event::Keyboard({
- let logical_key = {
+ let key = {
#[cfg(not(target_arch = "wasm32"))]
{
use winit::platform::modifier_supplement::KeyEventExtModifierSupplement;
@@ -202,7 +202,7 @@ pub fn window_event(
#[cfg(target_arch = "wasm32")]
{
// TODO: Fix inconsistent API on Wasm
- event.logical_key
+ event.logical_key.clone()
}
};
@@ -225,10 +225,13 @@ pub fn window_event(
let winit::event::KeyEvent {
state,
location,
+ logical_key,
physical_key,
..
} = event;
- let key = key(logical_key);
+
+ let key = self::key(key);
+ let modified_key = self::key(logical_key);
let physical_key = self::physical_key(physical_key);
let modifiers = self::modifiers(modifiers);
@@ -249,6 +252,7 @@ pub fn window_event(
winit::event::ElementState::Pressed => {
keyboard::Event::KeyPressed {
key,
+ modified_key,
physical_key,
modifiers,
location,