diff --git a/Cargo.lock b/Cargo.lock index 2c6ce817..1326e2fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2312,6 +2312,7 @@ dependencies = [ "parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)", "percent-encoding 2.1.0 (registry+https://github.com/rust-lang/crates.io-index)", "raw-window-handle 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "serde 1.0.104 (registry+https://github.com/rust-lang/crates.io-index)", "smithay-client-toolkit 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", "wayland-client 0.23.6 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", diff --git a/alacritty/Cargo.toml b/alacritty/Cargo.toml index 201dc93b..72015788 100644 --- a/alacritty/Cargo.toml +++ b/alacritty/Cargo.toml @@ -18,7 +18,7 @@ fnv = "1" serde = { version = "1", features = ["derive"] } serde_yaml = "0.8" serde_json = "1" -glutin = "0.22.0-alpha5" +glutin = { version = "0.22.0-alpha5", features = ["serde"] } notify = "4" libc = "0.2" unicode-width = "0.1" diff --git a/alacritty/src/config/bindings.rs b/alacritty/src/config/bindings.rs index d12c5708..bdbb7c07 100644 --- a/alacritty/src/config/bindings.rs +++ b/alacritty/src/config/bindings.rs @@ -11,11 +11,13 @@ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. +#![allow(clippy::enum_glob_use)] use std::fmt; use std::str::FromStr; -use glutin::event::{ModifiersState, MouseButton}; +use glutin::event::VirtualKeyCode::*; +use glutin::event::{ModifiersState, MouseButton, VirtualKeyCode}; use log::error; use serde::de::Error as SerdeError; use serde::de::{self, MapAccess, Unexpected, Visitor}; @@ -60,7 +62,7 @@ impl Default for KeyBinding { action: Action::Esc(String::new()), mode: TermMode::NONE, notmode: TermMode::NONE, - trigger: Key::A, + trigger: Key::Keycode(A), } } } @@ -218,10 +220,32 @@ impl RelaxedEq for ModifiersState { } macro_rules! bindings { + ( + KeyBinding; + $( + $key:ident + $(,$mods:expr)* + $(,+$mode:expr)* + $(,~$notmode:expr)* + ;$action:expr + );* + $(;)* + ) => {{ + bindings!( + KeyBinding; + $( + Key::Keycode($key) + $(,$mods)* + $(,+$mode)* + $(,~$notmode)* + ;$action + );* + ) + }}; ( $ty:ident; $( - $key:path + $key:expr $(,$mods:expr)* $(,+$mode:expr)* $(,~$notmode:expr)* @@ -249,7 +273,7 @@ macro_rules! bindings { )* v - }} + }}; } pub fn default_mouse_bindings() -> Vec { @@ -262,58 +286,58 @@ pub fn default_mouse_bindings() -> Vec { pub fn default_key_bindings() -> Vec { let mut bindings = bindings!( KeyBinding; - Key::Paste; Action::Paste; - Key::Copy; Action::Copy; - Key::L, ModifiersState::CTRL; Action::ClearLogNotice; - Key::L, ModifiersState::CTRL; Action::Esc("\x0c".into()); - Key::PageUp, ModifiersState::SHIFT, ~TermMode::ALT_SCREEN; Action::ScrollPageUp; - Key::PageDown, ModifiersState::SHIFT, ~TermMode::ALT_SCREEN; Action::ScrollPageDown; - Key::Home, ModifiersState::SHIFT, ~TermMode::ALT_SCREEN; Action::ScrollToTop; - Key::End, ModifiersState::SHIFT, ~TermMode::ALT_SCREEN; Action::ScrollToBottom; - Key::Home, +TermMode::APP_CURSOR; Action::Esc("\x1bOH".into()); - Key::Home, ~TermMode::APP_CURSOR; Action::Esc("\x1b[H".into()); - Key::Home, ModifiersState::SHIFT, +TermMode::ALT_SCREEN; Action::Esc("\x1b[1;2H".into()); - Key::End, +TermMode::APP_CURSOR; Action::Esc("\x1bOF".into()); - Key::End, ~TermMode::APP_CURSOR; Action::Esc("\x1b[F".into()); - Key::End, ModifiersState::SHIFT, +TermMode::ALT_SCREEN; Action::Esc("\x1b[1;2F".into()); - Key::PageUp; Action::Esc("\x1b[5~".into()); - Key::PageUp, ModifiersState::SHIFT, +TermMode::ALT_SCREEN; Action::Esc("\x1b[5;2~".into()); - Key::PageDown; Action::Esc("\x1b[6~".into()); - Key::PageDown, ModifiersState::SHIFT, +TermMode::ALT_SCREEN; Action::Esc("\x1b[6;2~".into()); - Key::Tab, ModifiersState::SHIFT; Action::Esc("\x1b[Z".into()); - Key::Back; Action::Esc("\x7f".into()); - Key::Back, ModifiersState::ALT; Action::Esc("\x1b\x7f".into()); - Key::Insert; Action::Esc("\x1b[2~".into()); - Key::Delete; Action::Esc("\x1b[3~".into()); - Key::Up, +TermMode::APP_CURSOR; Action::Esc("\x1bOA".into()); - Key::Up, ~TermMode::APP_CURSOR; Action::Esc("\x1b[A".into()); - Key::Down, +TermMode::APP_CURSOR; Action::Esc("\x1bOB".into()); - Key::Down, ~TermMode::APP_CURSOR; Action::Esc("\x1b[B".into()); - Key::Right, +TermMode::APP_CURSOR; Action::Esc("\x1bOC".into()); - Key::Right, ~TermMode::APP_CURSOR; Action::Esc("\x1b[C".into()); - Key::Left, +TermMode::APP_CURSOR; Action::Esc("\x1bOD".into()); - Key::Left, ~TermMode::APP_CURSOR; Action::Esc("\x1b[D".into()); - Key::F1; Action::Esc("\x1bOP".into()); - Key::F2; Action::Esc("\x1bOQ".into()); - Key::F3; Action::Esc("\x1bOR".into()); - Key::F4; Action::Esc("\x1bOS".into()); - Key::F5; Action::Esc("\x1b[15~".into()); - Key::F6; Action::Esc("\x1b[17~".into()); - Key::F7; Action::Esc("\x1b[18~".into()); - Key::F8; Action::Esc("\x1b[19~".into()); - Key::F9; Action::Esc("\x1b[20~".into()); - Key::F10; Action::Esc("\x1b[21~".into()); - Key::F11; Action::Esc("\x1b[23~".into()); - Key::F12; Action::Esc("\x1b[24~".into()); - Key::F13; Action::Esc("\x1b[25~".into()); - Key::F14; Action::Esc("\x1b[26~".into()); - Key::F15; Action::Esc("\x1b[28~".into()); - Key::F16; Action::Esc("\x1b[29~".into()); - Key::F17; Action::Esc("\x1b[31~".into()); - Key::F18; Action::Esc("\x1b[32~".into()); - Key::F19; Action::Esc("\x1b[33~".into()); - Key::F20; Action::Esc("\x1b[34~".into()); - Key::NumpadEnter; Action::Esc("\n".into()); + Paste; Action::Paste; + Copy; Action::Copy; + L, ModifiersState::CTRL; Action::ClearLogNotice; + L, ModifiersState::CTRL; Action::Esc("\x0c".into()); + PageUp, ModifiersState::SHIFT, ~TermMode::ALT_SCREEN; Action::ScrollPageUp; + PageDown, ModifiersState::SHIFT, ~TermMode::ALT_SCREEN; Action::ScrollPageDown; + Home, ModifiersState::SHIFT, ~TermMode::ALT_SCREEN; Action::ScrollToTop; + End, ModifiersState::SHIFT, ~TermMode::ALT_SCREEN; Action::ScrollToBottom; + Home, +TermMode::APP_CURSOR; Action::Esc("\x1bOH".into()); + Home, ~TermMode::APP_CURSOR; Action::Esc("\x1b[H".into()); + Home, ModifiersState::SHIFT, +TermMode::ALT_SCREEN; Action::Esc("\x1b[1;2H".into()); + End, +TermMode::APP_CURSOR; Action::Esc("\x1bOF".into()); + End, ~TermMode::APP_CURSOR; Action::Esc("\x1b[F".into()); + End, ModifiersState::SHIFT, +TermMode::ALT_SCREEN; Action::Esc("\x1b[1;2F".into()); + PageUp; Action::Esc("\x1b[5~".into()); + PageUp, ModifiersState::SHIFT, +TermMode::ALT_SCREEN; Action::Esc("\x1b[5;2~".into()); + PageDown; Action::Esc("\x1b[6~".into()); + PageDown, ModifiersState::SHIFT, +TermMode::ALT_SCREEN; Action::Esc("\x1b[6;2~".into()); + Tab, ModifiersState::SHIFT; Action::Esc("\x1b[Z".into()); + Back; Action::Esc("\x7f".into()); + Back, ModifiersState::ALT; Action::Esc("\x1b\x7f".into()); + Insert; Action::Esc("\x1b[2~".into()); + Delete; Action::Esc("\x1b[3~".into()); + Up, +TermMode::APP_CURSOR; Action::Esc("\x1bOA".into()); + Up, ~TermMode::APP_CURSOR; Action::Esc("\x1b[A".into()); + Down, +TermMode::APP_CURSOR; Action::Esc("\x1bOB".into()); + Down, ~TermMode::APP_CURSOR; Action::Esc("\x1b[B".into()); + Right, +TermMode::APP_CURSOR; Action::Esc("\x1bOC".into()); + Right, ~TermMode::APP_CURSOR; Action::Esc("\x1b[C".into()); + Left, +TermMode::APP_CURSOR; Action::Esc("\x1bOD".into()); + Left, ~TermMode::APP_CURSOR; Action::Esc("\x1b[D".into()); + F1; Action::Esc("\x1bOP".into()); + F2; Action::Esc("\x1bOQ".into()); + F3; Action::Esc("\x1bOR".into()); + F4; Action::Esc("\x1bOS".into()); + F5; Action::Esc("\x1b[15~".into()); + F6; Action::Esc("\x1b[17~".into()); + F7; Action::Esc("\x1b[18~".into()); + F8; Action::Esc("\x1b[19~".into()); + F9; Action::Esc("\x1b[20~".into()); + F10; Action::Esc("\x1b[21~".into()); + F11; Action::Esc("\x1b[23~".into()); + F12; Action::Esc("\x1b[24~".into()); + F13; Action::Esc("\x1b[25~".into()); + F14; Action::Esc("\x1b[26~".into()); + F15; Action::Esc("\x1b[28~".into()); + F16; Action::Esc("\x1b[29~".into()); + F17; Action::Esc("\x1b[31~".into()); + F18; Action::Esc("\x1b[32~".into()); + F19; Action::Esc("\x1b[33~".into()); + F20; Action::Esc("\x1b[34~".into()); + NumpadEnter; Action::Esc("\n".into()); ); // Code Modifiers @@ -342,31 +366,31 @@ pub fn default_key_bindings() -> Vec { let modifiers_code = index + 2; bindings.extend(bindings!( KeyBinding; - Key::Delete, mods; Action::Esc(format!("\x1b[3;{}~", modifiers_code)); - Key::Up, mods; Action::Esc(format!("\x1b[1;{}A", modifiers_code)); - Key::Down, mods; Action::Esc(format!("\x1b[1;{}B", modifiers_code)); - Key::Right, mods; Action::Esc(format!("\x1b[1;{}C", modifiers_code)); - Key::Left, mods; Action::Esc(format!("\x1b[1;{}D", modifiers_code)); - Key::F1, mods; Action::Esc(format!("\x1b[1;{}P", modifiers_code)); - Key::F2, mods; Action::Esc(format!("\x1b[1;{}Q", modifiers_code)); - Key::F3, mods; Action::Esc(format!("\x1b[1;{}R", modifiers_code)); - Key::F4, mods; Action::Esc(format!("\x1b[1;{}S", modifiers_code)); - Key::F5, mods; Action::Esc(format!("\x1b[15;{}~", modifiers_code)); - Key::F6, mods; Action::Esc(format!("\x1b[17;{}~", modifiers_code)); - Key::F7, mods; Action::Esc(format!("\x1b[18;{}~", modifiers_code)); - Key::F8, mods; Action::Esc(format!("\x1b[19;{}~", modifiers_code)); - Key::F9, mods; Action::Esc(format!("\x1b[20;{}~", modifiers_code)); - Key::F10, mods; Action::Esc(format!("\x1b[21;{}~", modifiers_code)); - Key::F11, mods; Action::Esc(format!("\x1b[23;{}~", modifiers_code)); - Key::F12, mods; Action::Esc(format!("\x1b[24;{}~", modifiers_code)); - Key::F13, mods; Action::Esc(format!("\x1b[25;{}~", modifiers_code)); - Key::F14, mods; Action::Esc(format!("\x1b[26;{}~", modifiers_code)); - Key::F15, mods; Action::Esc(format!("\x1b[28;{}~", modifiers_code)); - Key::F16, mods; Action::Esc(format!("\x1b[29;{}~", modifiers_code)); - Key::F17, mods; Action::Esc(format!("\x1b[31;{}~", modifiers_code)); - Key::F18, mods; Action::Esc(format!("\x1b[32;{}~", modifiers_code)); - Key::F19, mods; Action::Esc(format!("\x1b[33;{}~", modifiers_code)); - Key::F20, mods; Action::Esc(format!("\x1b[34;{}~", modifiers_code)); + Delete, mods; Action::Esc(format!("\x1b[3;{}~", modifiers_code)); + Up, mods; Action::Esc(format!("\x1b[1;{}A", modifiers_code)); + Down, mods; Action::Esc(format!("\x1b[1;{}B", modifiers_code)); + Right, mods; Action::Esc(format!("\x1b[1;{}C", modifiers_code)); + Left, mods; Action::Esc(format!("\x1b[1;{}D", modifiers_code)); + F1, mods; Action::Esc(format!("\x1b[1;{}P", modifiers_code)); + F2, mods; Action::Esc(format!("\x1b[1;{}Q", modifiers_code)); + F3, mods; Action::Esc(format!("\x1b[1;{}R", modifiers_code)); + F4, mods; Action::Esc(format!("\x1b[1;{}S", modifiers_code)); + F5, mods; Action::Esc(format!("\x1b[15;{}~", modifiers_code)); + F6, mods; Action::Esc(format!("\x1b[17;{}~", modifiers_code)); + F7, mods; Action::Esc(format!("\x1b[18;{}~", modifiers_code)); + F8, mods; Action::Esc(format!("\x1b[19;{}~", modifiers_code)); + F9, mods; Action::Esc(format!("\x1b[20;{}~", modifiers_code)); + F10, mods; Action::Esc(format!("\x1b[21;{}~", modifiers_code)); + F11, mods; Action::Esc(format!("\x1b[23;{}~", modifiers_code)); + F12, mods; Action::Esc(format!("\x1b[24;{}~", modifiers_code)); + F13, mods; Action::Esc(format!("\x1b[25;{}~", modifiers_code)); + F14, mods; Action::Esc(format!("\x1b[26;{}~", modifiers_code)); + F15, mods; Action::Esc(format!("\x1b[28;{}~", modifiers_code)); + F16, mods; Action::Esc(format!("\x1b[29;{}~", modifiers_code)); + F17, mods; Action::Esc(format!("\x1b[31;{}~", modifiers_code)); + F18, mods; Action::Esc(format!("\x1b[32;{}~", modifiers_code)); + F19, mods; Action::Esc(format!("\x1b[33;{}~", modifiers_code)); + F20, mods; Action::Esc(format!("\x1b[34;{}~", modifiers_code)); )); // We're adding the following bindings with `Shift` manually above, so skipping them here @@ -374,11 +398,11 @@ pub fn default_key_bindings() -> Vec { if modifiers_code != 2 { bindings.extend(bindings!( KeyBinding; - Key::Insert, mods; Action::Esc(format!("\x1b[2;{}~", modifiers_code)); - Key::PageUp, mods; Action::Esc(format!("\x1b[5;{}~", modifiers_code)); - Key::PageDown, mods; Action::Esc(format!("\x1b[6;{}~", modifiers_code)); - Key::End, mods; Action::Esc(format!("\x1b[1;{}F", modifiers_code)); - Key::Home, mods; Action::Esc(format!("\x1b[1;{}H", modifiers_code)); + Insert, mods; Action::Esc(format!("\x1b[2;{}~", modifiers_code)); + PageUp, mods; Action::Esc(format!("\x1b[5;{}~", modifiers_code)); + PageDown, mods; Action::Esc(format!("\x1b[6;{}~", modifiers_code)); + End, mods; Action::Esc(format!("\x1b[1;{}F", modifiers_code)); + Home, mods; Action::Esc(format!("\x1b[1;{}H", modifiers_code)); )); } } @@ -392,14 +416,14 @@ pub fn default_key_bindings() -> Vec { fn common_keybindings() -> Vec { bindings!( KeyBinding; - Key::V, ModifiersState::CTRL | ModifiersState::SHIFT; Action::Paste; - Key::C, ModifiersState::CTRL | ModifiersState::SHIFT; Action::Copy; - Key::Insert, ModifiersState::SHIFT; Action::PasteSelection; - Key::Key0, ModifiersState::CTRL; Action::ResetFontSize; - Key::Equals, ModifiersState::CTRL; Action::IncreaseFontSize; - Key::Add, ModifiersState::CTRL; Action::IncreaseFontSize; - Key::Subtract, ModifiersState::CTRL; Action::DecreaseFontSize; - Key::Minus, ModifiersState::CTRL; Action::DecreaseFontSize; + V, ModifiersState::CTRL | ModifiersState::SHIFT; Action::Paste; + C, ModifiersState::CTRL | ModifiersState::SHIFT; Action::Copy; + Insert, ModifiersState::SHIFT; Action::PasteSelection; + Key0, ModifiersState::CTRL; Action::ResetFontSize; + Equals, ModifiersState::CTRL; Action::IncreaseFontSize; + Add, ModifiersState::CTRL; Action::IncreaseFontSize; + Subtract, ModifiersState::CTRL; Action::DecreaseFontSize; + Minus, ModifiersState::CTRL; Action::DecreaseFontSize; ) } @@ -412,7 +436,7 @@ pub fn platform_key_bindings() -> Vec { pub fn platform_key_bindings() -> Vec { let mut bindings = bindings!( KeyBinding; - Key::Return, ModifiersState::ALT; Action::ToggleFullscreen; + Return, ModifiersState::ALT; Action::ToggleFullscreen; ); bindings.extend(common_keybindings()); bindings @@ -422,20 +446,20 @@ pub fn platform_key_bindings() -> Vec { pub fn platform_key_bindings() -> Vec { bindings!( KeyBinding; - Key::Key0, ModifiersState::LOGO; Action::ResetFontSize; - Key::Equals, ModifiersState::LOGO; Action::IncreaseFontSize; - Key::Add, ModifiersState::LOGO; Action::IncreaseFontSize; - Key::Minus, ModifiersState::LOGO; Action::DecreaseFontSize; - Key::Insert, ModifiersState::SHIFT; Action::Esc("\x1b[2;2~".into()); - Key::F, ModifiersState::CTRL | ModifiersState::LOGO; Action::ToggleFullscreen; - Key::K, ModifiersState::LOGO; Action::ClearHistory; - Key::K, ModifiersState::LOGO; Action::Esc("\x0c".into()); - Key::V, ModifiersState::LOGO; Action::Paste; - Key::C, ModifiersState::LOGO; Action::Copy; - Key::H, ModifiersState::LOGO; Action::Hide; - Key::M, ModifiersState::LOGO; Action::Minimize; - Key::Q, ModifiersState::LOGO; Action::Quit; - Key::W, ModifiersState::LOGO; Action::Quit; + Key0, ModifiersState::LOGO; Action::ResetFontSize; + Equals, ModifiersState::LOGO; Action::IncreaseFontSize; + Add, ModifiersState::LOGO; Action::IncreaseFontSize; + Minus, ModifiersState::LOGO; Action::DecreaseFontSize; + Insert, ModifiersState::SHIFT; Action::Esc("\x1b[2;2~".into()); + F, ModifiersState::CTRL | ModifiersState::LOGO; Action::ToggleFullscreen; + K, ModifiersState::LOGO; Action::ClearHistory; + K, ModifiersState::LOGO; Action::Esc("\x0c".into()); + V, ModifiersState::LOGO; Action::Paste; + C, ModifiersState::LOGO; Action::Copy; + H, ModifiersState::LOGO; Action::Hide; + M, ModifiersState::LOGO; Action::Minimize; + Q, ModifiersState::LOGO; Action::Quit; + W, ModifiersState::LOGO; Action::Quit; ) } @@ -448,337 +472,7 @@ pub fn platform_key_bindings() -> Vec { #[derive(Deserialize, Copy, Clone, Debug, Eq, PartialEq, Hash)] pub enum Key { Scancode(u32), - Key1, - Key2, - Key3, - Key4, - Key5, - Key6, - Key7, - Key8, - Key9, - Key0, - A, - B, - C, - D, - E, - F, - G, - H, - I, - J, - K, - L, - M, - N, - O, - P, - Q, - R, - S, - T, - U, - V, - W, - X, - Y, - Z, - Escape, - F1, - F2, - F3, - F4, - F5, - F6, - F7, - F8, - F9, - F10, - F11, - F12, - F13, - F14, - F15, - F16, - F17, - F18, - F19, - F20, - F21, - F22, - F23, - F24, - Snapshot, - Scroll, - Pause, - Insert, - Home, - Delete, - End, - PageDown, - PageUp, - Left, - Up, - Right, - Down, - Back, - Return, - Space, - Compose, - Numlock, - Numpad0, - Numpad1, - Numpad2, - Numpad3, - Numpad4, - Numpad5, - Numpad6, - Numpad7, - Numpad8, - Numpad9, - AbntC1, - AbntC2, - Add, - Apostrophe, - Apps, - At, - Ax, - Backslash, - Calculator, - Capital, - Colon, - Comma, - Convert, - Decimal, - Divide, - Equals, - Grave, - Kana, - Kanji, - LAlt, - LBracket, - LControl, - LShift, - LWin, - Mail, - MediaSelect, - MediaStop, - Minus, - Multiply, - Mute, - MyComputer, - NavigateForward, - NavigateBackward, - NextTrack, - NoConvert, - NumpadComma, - NumpadEnter, - NumpadEquals, - OEM102, - Period, - PlayPause, - Power, - PrevTrack, - RAlt, - RBracket, - RControl, - RShift, - RWin, - Semicolon, - Slash, - Sleep, - Stop, - Subtract, - Sysrq, - Tab, - Underline, - Unlabeled, - VolumeDown, - VolumeUp, - Wake, - WebBack, - WebFavorites, - WebForward, - WebHome, - WebRefresh, - WebSearch, - WebStop, - Yen, - Caret, - Copy, - Paste, - Cut, -} - -impl Key { - pub fn from_glutin_input(key: glutin::event::VirtualKeyCode) -> Self { - use glutin::event::VirtualKeyCode::*; - // Thank you, vim macros and regex! - match key { - Key1 => Key::Key1, - Key2 => Key::Key2, - Key3 => Key::Key3, - Key4 => Key::Key4, - Key5 => Key::Key5, - Key6 => Key::Key6, - Key7 => Key::Key7, - Key8 => Key::Key8, - Key9 => Key::Key9, - Key0 => Key::Key0, - A => Key::A, - B => Key::B, - C => Key::C, - D => Key::D, - E => Key::E, - F => Key::F, - G => Key::G, - H => Key::H, - I => Key::I, - J => Key::J, - K => Key::K, - L => Key::L, - M => Key::M, - N => Key::N, - O => Key::O, - P => Key::P, - Q => Key::Q, - R => Key::R, - S => Key::S, - T => Key::T, - U => Key::U, - V => Key::V, - W => Key::W, - X => Key::X, - Y => Key::Y, - Z => Key::Z, - Escape => Key::Escape, - F1 => Key::F1, - F2 => Key::F2, - F3 => Key::F3, - F4 => Key::F4, - F5 => Key::F5, - F6 => Key::F6, - F7 => Key::F7, - F8 => Key::F8, - F9 => Key::F9, - F10 => Key::F10, - F11 => Key::F11, - F12 => Key::F12, - F13 => Key::F13, - F14 => Key::F14, - F15 => Key::F15, - F16 => Key::F16, - F17 => Key::F17, - F18 => Key::F18, - F19 => Key::F19, - F20 => Key::F20, - F21 => Key::F21, - F22 => Key::F22, - F23 => Key::F23, - F24 => Key::F24, - Snapshot => Key::Snapshot, - Scroll => Key::Scroll, - Pause => Key::Pause, - Insert => Key::Insert, - Home => Key::Home, - Delete => Key::Delete, - End => Key::End, - PageDown => Key::PageDown, - PageUp => Key::PageUp, - Left => Key::Left, - Up => Key::Up, - Right => Key::Right, - Down => Key::Down, - Back => Key::Back, - Return => Key::Return, - Space => Key::Space, - Compose => Key::Compose, - Numlock => Key::Numlock, - Numpad0 => Key::Numpad0, - Numpad1 => Key::Numpad1, - Numpad2 => Key::Numpad2, - Numpad3 => Key::Numpad3, - Numpad4 => Key::Numpad4, - Numpad5 => Key::Numpad5, - Numpad6 => Key::Numpad6, - Numpad7 => Key::Numpad7, - Numpad8 => Key::Numpad8, - Numpad9 => Key::Numpad9, - AbntC1 => Key::AbntC1, - AbntC2 => Key::AbntC2, - Add => Key::Add, - Apostrophe => Key::Apostrophe, - Apps => Key::Apps, - At => Key::At, - Ax => Key::Ax, - Backslash => Key::Backslash, - Calculator => Key::Calculator, - Capital => Key::Capital, - Colon => Key::Colon, - Comma => Key::Comma, - Convert => Key::Convert, - Decimal => Key::Decimal, - Divide => Key::Divide, - Equals => Key::Equals, - Grave => Key::Grave, - Kana => Key::Kana, - Kanji => Key::Kanji, - LAlt => Key::LAlt, - LBracket => Key::LBracket, - LControl => Key::LControl, - LShift => Key::LShift, - LWin => Key::LWin, - Mail => Key::Mail, - MediaSelect => Key::MediaSelect, - MediaStop => Key::MediaStop, - Minus => Key::Minus, - Multiply => Key::Multiply, - Mute => Key::Mute, - MyComputer => Key::MyComputer, - NavigateForward => Key::NavigateForward, - NavigateBackward => Key::NavigateBackward, - NextTrack => Key::NextTrack, - NoConvert => Key::NoConvert, - NumpadComma => Key::NumpadComma, - NumpadEnter => Key::NumpadEnter, - NumpadEquals => Key::NumpadEquals, - OEM102 => Key::OEM102, - Period => Key::Period, - PlayPause => Key::PlayPause, - Power => Key::Power, - PrevTrack => Key::PrevTrack, - RAlt => Key::RAlt, - RBracket => Key::RBracket, - RControl => Key::RControl, - RShift => Key::RShift, - RWin => Key::RWin, - Semicolon => Key::Semicolon, - Slash => Key::Slash, - Sleep => Key::Sleep, - Stop => Key::Stop, - Subtract => Key::Subtract, - Sysrq => Key::Sysrq, - Tab => Key::Tab, - Underline => Key::Underline, - Unlabeled => Key::Unlabeled, - VolumeDown => Key::VolumeDown, - VolumeUp => Key::VolumeUp, - Wake => Key::Wake, - WebBack => Key::WebBack, - WebFavorites => Key::WebFavorites, - WebForward => Key::WebForward, - WebHome => Key::WebHome, - WebRefresh => Key::WebRefresh, - WebSearch => Key::WebSearch, - WebStop => Key::WebStop, - Yen => Key::Yen, - Caret => Key::Caret, - Copy => Key::Copy, - Paste => Key::Paste, - Cut => Key::Cut, - } - } + Keycode(VirtualKeyCode), } struct ModeWrapper { diff --git a/alacritty/src/input.rs b/alacritty/src/input.rs index 08383eab..39f54328 100644 --- a/alacritty/src/input.rs +++ b/alacritty/src/input.rs @@ -656,7 +656,7 @@ impl<'a, T: EventListener, A: ActionContext> Processor<'a, T, A> { let key = match (binding.trigger, input.virtual_keycode) { (Key::Scancode(_), _) => Key::Scancode(input.scancode), - (_, Some(key)) => Key::from_glutin_input(key), + (_, Some(key)) => Key::Keycode(key), _ => continue, };