Remove winit key remappings

This commit is contained in:
Christian Duerr 2020-01-06 22:06:09 +00:00 committed by GitHub
parent 18836f20dd
commit 183ceee3ad
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 137 additions and 442 deletions

1
Cargo.lock generated
View File

@ -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)",

View File

@ -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"

View File

@ -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<MouseBinding> {
@ -262,58 +286,58 @@ pub fn default_mouse_bindings() -> Vec<MouseBinding> {
pub fn default_key_bindings() -> Vec<KeyBinding> {
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<KeyBinding> {
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<KeyBinding> {
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<KeyBinding> {
fn common_keybindings() -> Vec<KeyBinding> {
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<KeyBinding> {
pub fn platform_key_bindings() -> Vec<KeyBinding> {
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<KeyBinding> {
pub fn platform_key_bindings() -> Vec<KeyBinding> {
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<KeyBinding> {
#[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 {

View File

@ -656,7 +656,7 @@ impl<'a, T: EventListener, A: ActionContext<T>> 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,
};