diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index e2dc36a21fe061e72bb849677e42e0d693934afa..07260735022fd607a2ea3f6e99396761b60fd592 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -823,8 +823,13 @@ pub fn handle_keymap_file_changes( }) .detach(); - cx.on_keyboard_layout_change(move |_| { - keyboard_layout_tx.unbounded_send(()).ok(); + let mut current_mapping = settings::get_key_equivalents(cx.keyboard_layout()); + cx.on_keyboard_layout_change(move |cx| { + let next_mapping = settings::get_key_equivalents(cx.keyboard_layout()); + if next_mapping != current_mapping { + current_mapping = next_mapping; + keyboard_layout_tx.unbounded_send(()).ok(); + } }) .detach();