diff --git a/CHANGELOG.md b/CHANGELOG.md index 13371a47f9..54f83b1e83 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,6 @@ # Unreleased +- On macOS, fixed duplicate key events when pressing `Command + Period`. - Added serde serialization to `os::unix::XWindowType`. - **Breaking:** `image` crate upgraded to 0.21. This is exposed as part of the `icon_loading` API. diff --git a/src/platform/macos/events_loop.rs b/src/platform/macos/events_loop.rs index ca1ff1701d..96d601dd01 100644 --- a/src/platform/macos/events_loop.rs +++ b/src/platform/macos/events_loop.rs @@ -1,5 +1,6 @@ use {ControlFlow, EventsLoopClosed}; use cocoa::{self, appkit, foundation}; +use cocoa::foundation::NSString; use cocoa::appkit::{NSApplication, NSEvent, NSEventMask, NSEventModifierFlags, NSEventPhase, NSView, NSWindow}; use events::{self, ElementState, Event, TouchPhase, WindowEvent, DeviceEvent, ModifiersState, KeyboardInput}; use std::collections::VecDeque; @@ -328,8 +329,9 @@ impl EventsLoop { // KeyUp, and the above trick does not appear to work. appkit::NSKeyDown => { let modifiers = event_mods(ns_event); - let keycode = NSEvent::keyCode(ns_event); - if modifiers.logo && keycode == 47 { + let characters = NSEvent::characters(ns_event); + let is_period = characters.isEqualToString("."); + if modifiers.logo && is_period { modifier_event(ns_event, NSEventModifierFlags::NSCommandKeyMask, false) .map(into_event) } else {