XKAEHFMZP4PDXPJ2GZTRAJL7SCHJAH7EXRG2TWEBOFVOFUFJQ6RAC KLGRQAFUQPJP75NVLS5MZZ3CY4TGNVGB4K2YHQSLYVGAPKCLBLUAC T5T2PZSJVBHIPHG7VRXZSH36WGSTR4I44BOI335X4F637E7GUWHAC B66IOHMWFZINTWC57Q5OD4YPBVQNBN3YUM3ZKX4MTDKHYGH5JHFAC PTQ26KY65NDVZ35EG66SARWRGGYKDJ2BT3EVK4RJFS2J5AQUX6OQC HKVKPIIWK6AB4DWCS6SB47RYEXTD4QAQIGDFNQGA3TDJEIAXBZKQC CTPHEJ2S7MMSZTNVO4LFEYHMMTKYWB5PC54RMVJHMATN5TY45GPQC 576YRB7XSKS6Q265TEJQS7HUGMKSGHGDRGVP6WBZS7XMK6RVJRNQC V2265WPBM2LBE4BGEFB3HYCZXA5C5MJKQ5IVPFWY3ARCVIAYBZGQC fn make_kakoune_key(key: Key, state: ModifiersState) -> Option<String> {match key {Key::Named(NamedKey::Space) => Some(add_modifiers("space", state)),Key::Named(NamedKey::Enter) => Some(add_modifiers("ret", state)),Key::Named(NamedKey::Tab) => Some(add_modifiers("tab", state)),Key::Named(NamedKey::Backspace) => Some(add_modifiers("backspace", state)),Key::Named(NamedKey::Delete) => Some(add_modifiers("del", state)),Key::Named(NamedKey::Escape) => Some(add_modifiers("esc", state)),Key::Named(NamedKey::ArrowUp) => Some(add_modifiers("up", state)),Key::Named(NamedKey::ArrowDown) => Some(add_modifiers("down", state)),Key::Named(NamedKey::ArrowLeft) => Some(add_modifiers("left", state)),Key::Named(NamedKey::ArrowRight) => Some(add_modifiers("right", state)),
Key::Named(NamedKey::PageUp) => Some(add_modifiers("pageup", state)),Key::Named(NamedKey::PageDown) => Some(add_modifiers("pagedown", state)),Key::Named(NamedKey::Home) => Some(add_modifiers("home", state)),Key::Named(NamedKey::End) => Some(add_modifiers("end", state)),Key::Named(NamedKey::Insert) => Some(add_modifiers("ins", state)),Key::Named(NamedKey::F1) => Some(add_modifiers("F1", state)),Key::Named(NamedKey::F2) => Some(add_modifiers("F2", state)),Key::Named(NamedKey::F3) => Some(add_modifiers("F3", state)),Key::Named(NamedKey::F4) => Some(add_modifiers("F4", state)),Key::Named(NamedKey::F5) => Some(add_modifiers("F5", state)),Key::Named(NamedKey::F6) => Some(add_modifiers("F6", state)),Key::Named(NamedKey::F7) => Some(add_modifiers("F7", state)),Key::Named(NamedKey::F8) => Some(add_modifiers("F8", state)),Key::Named(NamedKey::F9) => Some(add_modifiers("F9", state)),Key::Named(NamedKey::F10) => Some(add_modifiers("F10", state)),Key::Named(NamedKey::F11) => Some(add_modifiers("F11", state)),Key::Named(NamedKey::F12) => Some(add_modifiers("F12", state)),Key::Character(c) if c == "+" => Some(add_modifiers("plus", state)),Key::Character(c) if c == "-" => Some(add_modifiers("minus", state)),Key::Character(c) if c == "<" => Some(add_modifiers("lt", state)),Key::Character(c) if c == ">" => Some(add_modifiers("lt", state)),Key::Character(c) if state == ModifiersState::empty() || state == ModifiersState::SHIFT => {Some(c.into())}Key::Character(c) => Some(add_modifiers(&c, state)),_ => None,}}
WindowEvent::ModifiersChanged(modifiers) => {self.modifiers = modifiers;}WindowEvent::KeyboardInput { event, .. } => {if !event.state.is_pressed() {return;}if let Some(key) = make_kakoune_key(event.logical_key, self.modifiers.state()) {self.kakoune.send_response(Response::Keys(vec![key]));}}