Change summary
crates/zed/src/zed.rs | 34 +++++++++++++++++++++++++---------
1 file changed, 25 insertions(+), 9 deletions(-)
Detailed changes
@@ -1317,15 +1317,31 @@ pub fn handle_keymap_file_changes(
})
.detach();
- let mut current_layout_id = cx.keyboard_layout().id().to_string();
- cx.on_keyboard_layout_change(move |cx| {
- let next_layout_id = cx.keyboard_layout().id();
- if next_layout_id != current_layout_id {
- current_layout_id = next_layout_id.to_string();
- keyboard_layout_tx.unbounded_send(()).ok();
- }
- })
- .detach();
+ #[cfg(target_os = "windows")]
+ {
+ let mut current_layout_id = cx.keyboard_layout().id().to_string();
+ cx.on_keyboard_layout_change(move |cx| {
+ let next_layout_id = cx.keyboard_layout().id();
+ if next_layout_id != current_layout_id {
+ current_layout_id = next_layout_id.to_string();
+ keyboard_layout_tx.unbounded_send(()).ok();
+ }
+ })
+ .detach();
+ }
+
+ #[cfg(not(target_os = "windows"))]
+ {
+ let mut current_mapping = cx.keyboard_mapper().get_key_equivalents().cloned();
+ cx.on_keyboard_layout_change(move |cx| {
+ let next_mapping = cx.keyboard_mapper().get_key_equivalents();
+ if current_mapping.as_ref() != next_mapping {
+ current_mapping = next_mapping.cloned();
+ keyboard_layout_tx.unbounded_send(()).ok();
+ }
+ })
+ .detach();
+ }
load_default_keymap(cx);