mirror of
https://github.com/servo/servo.git
synced 2025-07-23 15:23:42 +01:00
servoshell: Clean up keyboard event conversion a little (#32564)
- Use a trait to make all conversions standard - Alphabetize all enums so they are in a consistent order - Remove some comments about unhandled which no longer apply after the winit upgrade. - Use the winit `Location` property to get the `keyboard_types` Location instead of relying on the physical key.
This commit is contained in:
parent
6a48c72a62
commit
9f8118abc7
1 changed files with 552 additions and 601 deletions
|
@ -3,9 +3,11 @@
|
|||
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use keyboard_types::{Code, Key, KeyState, KeyboardEvent, Location, Modifiers};
|
||||
use log::info;
|
||||
use winit::event::{ElementState, KeyEvent};
|
||||
use winit::keyboard::{Key as LogicalKey, KeyCode, ModifiersState, NamedKey, PhysicalKey};
|
||||
use winit::keyboard::{
|
||||
Key as WinitKey, KeyCode, KeyLocation as WinitKeyLocation, ModifiersState, NamedKey,
|
||||
PhysicalKey,
|
||||
};
|
||||
|
||||
// Some shortcuts use Cmd on Mac and Control on other systems.
|
||||
#[cfg(target_os = "macos")]
|
||||
|
@ -19,196 +21,34 @@ pub const CMD_OR_ALT: Modifiers = Modifiers::META;
|
|||
#[cfg(not(target_os = "macos"))]
|
||||
pub const CMD_OR_ALT: Modifiers = Modifiers::ALT;
|
||||
|
||||
fn get_servo_key_from_winit_key(key: &LogicalKey) -> Key {
|
||||
let named_key = match key {
|
||||
LogicalKey::Named(named_key) => named_key,
|
||||
LogicalKey::Character(string) => return Key::Character(string.to_string()),
|
||||
LogicalKey::Unidentified(_) => return Key::Unidentified,
|
||||
LogicalKey::Dead(_) => return Key::Unidentified,
|
||||
trait FromWinitKeyEvent {
|
||||
fn from_winit_key_event(key_event: &KeyEvent) -> Self;
|
||||
}
|
||||
|
||||
impl FromWinitKeyEvent for Key {
|
||||
fn from_winit_key_event(key_event: &KeyEvent) -> Self {
|
||||
let named_key = match key_event.logical_key {
|
||||
WinitKey::Named(named_key) => named_key,
|
||||
WinitKey::Character(ref string) => return Key::Character(string.to_string()),
|
||||
WinitKey::Unidentified(_) => return Key::Unidentified,
|
||||
WinitKey::Dead(_) => return Key::Unidentified,
|
||||
};
|
||||
|
||||
match named_key {
|
||||
// printable: Key1 to Key0
|
||||
// printable: A to Z
|
||||
NamedKey::Escape => Key::Escape,
|
||||
NamedKey::F1 => Key::F1,
|
||||
NamedKey::F2 => Key::F2,
|
||||
NamedKey::F3 => Key::F3,
|
||||
NamedKey::F4 => Key::F4,
|
||||
NamedKey::F5 => Key::F5,
|
||||
NamedKey::F6 => Key::F6,
|
||||
NamedKey::F7 => Key::F7,
|
||||
NamedKey::F8 => Key::F8,
|
||||
NamedKey::F9 => Key::F9,
|
||||
NamedKey::F10 => Key::F10,
|
||||
NamedKey::F11 => Key::F11,
|
||||
NamedKey::F12 => Key::F12,
|
||||
NamedKey::F13 => Key::F13,
|
||||
NamedKey::F14 => Key::F14,
|
||||
NamedKey::F15 => Key::F15,
|
||||
NamedKey::F16 => Key::F16,
|
||||
NamedKey::F17 => Key::F17,
|
||||
NamedKey::F18 => Key::F18,
|
||||
NamedKey::F19 => Key::F19,
|
||||
NamedKey::F20 => Key::F20,
|
||||
NamedKey::F21 => Key::F21,
|
||||
NamedKey::F22 => Key::F22,
|
||||
NamedKey::F23 => Key::F23,
|
||||
NamedKey::F24 => Key::F24,
|
||||
NamedKey::F25 => Key::F25,
|
||||
NamedKey::F26 => Key::F26,
|
||||
NamedKey::F27 => Key::F27,
|
||||
NamedKey::F28 => Key::F28,
|
||||
NamedKey::F29 => Key::F29,
|
||||
NamedKey::F30 => Key::F30,
|
||||
NamedKey::F31 => Key::F31,
|
||||
NamedKey::F32 => Key::F32,
|
||||
NamedKey::F33 => Key::F33,
|
||||
NamedKey::F34 => Key::F34,
|
||||
NamedKey::F35 => Key::F35,
|
||||
NamedKey::PrintScreen => Key::PrintScreen,
|
||||
NamedKey::ScrollLock => Key::ScrollLock,
|
||||
NamedKey::Pause => Key::Pause,
|
||||
NamedKey::Insert => Key::Insert,
|
||||
NamedKey::Home => Key::Home,
|
||||
NamedKey::Delete => Key::Delete,
|
||||
NamedKey::End => Key::End,
|
||||
NamedKey::PageDown => Key::PageDown,
|
||||
NamedKey::PageUp => Key::PageUp,
|
||||
NamedKey::ArrowLeft => Key::ArrowLeft,
|
||||
NamedKey::ArrowUp => Key::ArrowUp,
|
||||
NamedKey::ArrowRight => Key::ArrowRight,
|
||||
NamedKey::ArrowDown => Key::ArrowDown,
|
||||
NamedKey::Backspace => Key::Backspace,
|
||||
NamedKey::Enter => Key::Enter,
|
||||
// printable: Space
|
||||
NamedKey::Compose => Key::Compose,
|
||||
NamedKey::NumLock => Key::NumLock,
|
||||
// printable: Numpad0 to Numpad9
|
||||
// printable: Add, Apostrophe,
|
||||
// printable: Backslash,
|
||||
NamedKey::LaunchApplication2 => Key::LaunchApplication2,
|
||||
NamedKey::CapsLock => Key::CapsLock,
|
||||
// printable: Colon, Comma,
|
||||
NamedKey::Convert => Key::Convert,
|
||||
// printable: Divide, Equals, Grave,
|
||||
NamedKey::KanaMode => Key::KanaMode,
|
||||
NamedKey::KanjiMode => Key::KanjiMode,
|
||||
NamedKey::Alt => Key::Alt,
|
||||
// printable: LBracket,
|
||||
NamedKey::Control => Key::Control,
|
||||
NamedKey::Shift => Key::Shift,
|
||||
NamedKey::Meta => Key::Meta,
|
||||
NamedKey::LaunchMail => Key::LaunchMail,
|
||||
NamedKey::MediaStop => Key::MediaStop,
|
||||
// printable: Minus, Multiply,
|
||||
NamedKey::AudioVolumeMute => Key::AudioVolumeMute,
|
||||
NamedKey::LaunchApplication1 => Key::LaunchApplication1,
|
||||
NamedKey::MediaTrackNext => Key::MediaTrackNext,
|
||||
NamedKey::NonConvert => Key::NonConvert,
|
||||
// printable: NumpadComma, NumpadEnter, NumpadEquals,
|
||||
// printable: Period,
|
||||
NamedKey::MediaPlayPause => Key::MediaPlayPause,
|
||||
NamedKey::Power => Key::Power,
|
||||
NamedKey::MediaTrackPrevious => Key::MediaTrackPrevious,
|
||||
// printable RBracket
|
||||
// printable Semicolon, Slash
|
||||
NamedKey::Standby => Key::Standby,
|
||||
// printable Subtract,
|
||||
NamedKey::Tab => Key::Tab,
|
||||
// printable: Underline,
|
||||
NamedKey::AudioVolumeDown => Key::AudioVolumeDown,
|
||||
NamedKey::AudioVolumeUp => Key::AudioVolumeUp,
|
||||
NamedKey::WakeUp => Key::WakeUp,
|
||||
NamedKey::BrowserBack => Key::BrowserBack,
|
||||
NamedKey::BrowserFavorites => Key::BrowserFavorites,
|
||||
NamedKey::BrowserForward => Key::BrowserForward,
|
||||
NamedKey::BrowserHome => Key::BrowserHome,
|
||||
NamedKey::BrowserRefresh => Key::BrowserRefresh,
|
||||
NamedKey::BrowserSearch => Key::BrowserSearch,
|
||||
NamedKey::BrowserStop => Key::BrowserStop,
|
||||
// printable Yen,
|
||||
NamedKey::Copy => Key::Copy,
|
||||
NamedKey::Paste => Key::Paste,
|
||||
NamedKey::Cut => Key::Cut,
|
||||
NamedKey::AltGraph => Key::AltGraph,
|
||||
NamedKey::Fn => Key::Fn,
|
||||
NamedKey::FnLock => Key::FnLock,
|
||||
NamedKey::Symbol => Key::Symbol,
|
||||
NamedKey::SymbolLock => Key::SymbolLock,
|
||||
NamedKey::Hyper => Key::Hyper,
|
||||
NamedKey::Super => Key::Super,
|
||||
NamedKey::Clear => Key::Clear,
|
||||
NamedKey::CrSel => Key::CrSel,
|
||||
NamedKey::EraseEof => Key::EraseEof,
|
||||
NamedKey::ExSel => Key::ExSel,
|
||||
NamedKey::Redo => Key::Redo,
|
||||
NamedKey::Undo => Key::Undo,
|
||||
NamedKey::AVRInput => Key::AVRInput,
|
||||
NamedKey::AVRPower => Key::AVRPower,
|
||||
NamedKey::Accept => Key::Accept,
|
||||
NamedKey::Again => Key::Again,
|
||||
NamedKey::Attn => Key::Attn,
|
||||
NamedKey::Cancel => Key::Cancel,
|
||||
NamedKey::ContextMenu => Key::ContextMenu,
|
||||
NamedKey::Execute => Key::Execute,
|
||||
NamedKey::Find => Key::Find,
|
||||
NamedKey::Help => Key::Help,
|
||||
NamedKey::Play => Key::Play,
|
||||
NamedKey::Props => Key::Props,
|
||||
NamedKey::Select => Key::Select,
|
||||
NamedKey::ZoomIn => Key::ZoomIn,
|
||||
NamedKey::ZoomOut => Key::ZoomOut,
|
||||
NamedKey::BrightnessDown => Key::BrightnessDown,
|
||||
NamedKey::BrightnessUp => Key::BrightnessUp,
|
||||
NamedKey::Eject => Key::Eject,
|
||||
NamedKey::LogOff => Key::LogOff,
|
||||
NamedKey::PowerOff => Key::PowerOff,
|
||||
NamedKey::Hibernate => Key::Hibernate,
|
||||
NamedKey::AllCandidates => Key::AllCandidates,
|
||||
NamedKey::Alphanumeric => Key::Alphanumeric,
|
||||
NamedKey::CodeInput => Key::CodeInput,
|
||||
NamedKey::FinalMode => Key::FinalMode,
|
||||
NamedKey::GroupFirst => Key::GroupFirst,
|
||||
NamedKey::GroupLast => Key::GroupLast,
|
||||
NamedKey::GroupNext => Key::GroupNext,
|
||||
NamedKey::GroupPrevious => Key::GroupPrevious,
|
||||
NamedKey::ModeChange => Key::ModeChange,
|
||||
NamedKey::NextCandidate => Key::NextCandidate,
|
||||
NamedKey::PreviousCandidate => Key::PreviousCandidate,
|
||||
NamedKey::Process => Key::Process,
|
||||
NamedKey::SingleCandidate => Key::SingleCandidate,
|
||||
NamedKey::HangulMode => Key::HangulMode,
|
||||
NamedKey::HanjaMode => Key::HanjaMode,
|
||||
NamedKey::JunjaMode => Key::JunjaMode,
|
||||
NamedKey::Eisu => Key::Eisu,
|
||||
NamedKey::Hankaku => Key::Hankaku,
|
||||
NamedKey::Hiragana => Key::Hiragana,
|
||||
NamedKey::HiraganaKatakana => Key::HiraganaKatakana,
|
||||
NamedKey::Katakana => Key::Katakana,
|
||||
NamedKey::Romaji => Key::Romaji,
|
||||
NamedKey::Zenkaku => Key::Zenkaku,
|
||||
NamedKey::ZenkakuHankaku => Key::ZenkakuHankaku,
|
||||
NamedKey::Soft1 => Key::Soft1,
|
||||
NamedKey::Soft2 => Key::Soft2,
|
||||
NamedKey::Soft3 => Key::Soft3,
|
||||
NamedKey::Soft4 => Key::Soft4,
|
||||
NamedKey::ChannelDown => Key::ChannelDown,
|
||||
NamedKey::ChannelUp => Key::ChannelUp,
|
||||
NamedKey::Close => Key::Close,
|
||||
NamedKey::MailForward => Key::MailForward,
|
||||
NamedKey::MailReply => Key::MailReply,
|
||||
NamedKey::MailSend => Key::MailSend,
|
||||
NamedKey::MediaClose => Key::MediaClose,
|
||||
NamedKey::MediaFastForward => Key::MediaFastForward,
|
||||
NamedKey::MediaPause => Key::MediaPause,
|
||||
NamedKey::MediaPlay => Key::MediaPlay,
|
||||
NamedKey::MediaRecord => Key::MediaRecord,
|
||||
NamedKey::MediaRewind => Key::MediaRewind,
|
||||
NamedKey::New => Key::New,
|
||||
NamedKey::Open => Key::Open,
|
||||
NamedKey::Print => Key::Print,
|
||||
NamedKey::Save => Key::Save,
|
||||
NamedKey::SpellCheck => Key::SpellCheck,
|
||||
NamedKey::Key11 => Key::Key11,
|
||||
NamedKey::Key12 => Key::Key12,
|
||||
NamedKey::Alt => Key::Alt,
|
||||
NamedKey::AltGraph => Key::AltGraph,
|
||||
NamedKey::AppSwitch => Key::AppSwitch,
|
||||
NamedKey::ArrowDown => Key::ArrowDown,
|
||||
NamedKey::ArrowLeft => Key::ArrowLeft,
|
||||
NamedKey::ArrowRight => Key::ArrowRight,
|
||||
NamedKey::ArrowUp => Key::ArrowUp,
|
||||
NamedKey::Attn => Key::Attn,
|
||||
NamedKey::AudioBalanceLeft => Key::AudioBalanceLeft,
|
||||
NamedKey::AudioBalanceRight => Key::AudioBalanceRight,
|
||||
NamedKey::AudioBassBoostDown => Key::AudioBassBoostDown,
|
||||
|
@ -219,14 +59,142 @@ fn get_servo_key_from_winit_key(key: &LogicalKey) -> Key {
|
|||
NamedKey::AudioSurroundModeNext => Key::AudioSurroundModeNext,
|
||||
NamedKey::AudioTrebleDown => Key::AudioTrebleDown,
|
||||
NamedKey::AudioTrebleUp => Key::AudioTrebleUp,
|
||||
NamedKey::MicrophoneToggle => Key::MicrophoneToggle,
|
||||
NamedKey::MicrophoneVolumeDown => Key::MicrophoneVolumeDown,
|
||||
NamedKey::MicrophoneVolumeUp => Key::MicrophoneVolumeUp,
|
||||
NamedKey::MicrophoneVolumeMute => Key::MicrophoneVolumeMute,
|
||||
NamedKey::SpeechCorrectionList => Key::SpeechCorrectionList,
|
||||
NamedKey::SpeechInputToggle => Key::SpeechInputToggle,
|
||||
NamedKey::AudioVolumeDown => Key::AudioVolumeDown,
|
||||
NamedKey::AudioVolumeMute => Key::AudioVolumeMute,
|
||||
NamedKey::AudioVolumeUp => Key::AudioVolumeUp,
|
||||
NamedKey::Backspace => Key::Backspace,
|
||||
NamedKey::BrightnessDown => Key::BrightnessDown,
|
||||
NamedKey::BrightnessUp => Key::BrightnessUp,
|
||||
NamedKey::BrowserBack => Key::BrowserBack,
|
||||
NamedKey::BrowserFavorites => Key::BrowserFavorites,
|
||||
NamedKey::BrowserForward => Key::BrowserForward,
|
||||
NamedKey::BrowserHome => Key::BrowserHome,
|
||||
NamedKey::BrowserRefresh => Key::BrowserRefresh,
|
||||
NamedKey::BrowserSearch => Key::BrowserSearch,
|
||||
NamedKey::BrowserStop => Key::BrowserStop,
|
||||
NamedKey::Call => Key::Call,
|
||||
NamedKey::Camera => Key::Camera,
|
||||
NamedKey::CameraFocus => Key::CameraFocus,
|
||||
NamedKey::Cancel => Key::Cancel,
|
||||
NamedKey::CapsLock => Key::CapsLock,
|
||||
NamedKey::ChannelDown => Key::ChannelDown,
|
||||
NamedKey::ChannelUp => Key::ChannelUp,
|
||||
NamedKey::Clear => Key::Clear,
|
||||
NamedKey::Close => Key::Close,
|
||||
NamedKey::ClosedCaptionToggle => Key::ClosedCaptionToggle,
|
||||
NamedKey::CodeInput => Key::CodeInput,
|
||||
NamedKey::ColorF0Red => Key::ColorF0Red,
|
||||
NamedKey::ColorF1Green => Key::ColorF1Green,
|
||||
NamedKey::ColorF2Yellow => Key::ColorF2Yellow,
|
||||
NamedKey::ColorF3Blue => Key::ColorF3Blue,
|
||||
NamedKey::ColorF4Grey => Key::ColorF4Grey,
|
||||
NamedKey::ColorF5Brown => Key::ColorF5Brown,
|
||||
NamedKey::Compose => Key::Compose,
|
||||
NamedKey::ContextMenu => Key::ContextMenu,
|
||||
NamedKey::Control => Key::Control,
|
||||
NamedKey::Convert => Key::Convert,
|
||||
NamedKey::Copy => Key::Copy,
|
||||
NamedKey::CrSel => Key::CrSel,
|
||||
NamedKey::Cut => Key::Cut,
|
||||
NamedKey::DVR => Key::DVR,
|
||||
NamedKey::Delete => Key::Delete,
|
||||
NamedKey::Dimmer => Key::Dimmer,
|
||||
NamedKey::DisplaySwap => Key::DisplaySwap,
|
||||
NamedKey::Eisu => Key::Eisu,
|
||||
NamedKey::Eject => Key::Eject,
|
||||
NamedKey::End => Key::End,
|
||||
NamedKey::EndCall => Key::EndCall,
|
||||
NamedKey::Enter => Key::Enter,
|
||||
NamedKey::EraseEof => Key::EraseEof,
|
||||
NamedKey::Escape => Key::Escape,
|
||||
NamedKey::ExSel => Key::ExSel,
|
||||
NamedKey::Execute => Key::Execute,
|
||||
NamedKey::Exit => Key::Exit,
|
||||
NamedKey::F1 => Key::F1,
|
||||
NamedKey::F10 => Key::F10,
|
||||
NamedKey::F11 => Key::F11,
|
||||
NamedKey::F12 => Key::F12,
|
||||
NamedKey::F13 => Key::F13,
|
||||
NamedKey::F14 => Key::F14,
|
||||
NamedKey::F15 => Key::F15,
|
||||
NamedKey::F16 => Key::F16,
|
||||
NamedKey::F17 => Key::F17,
|
||||
NamedKey::F18 => Key::F18,
|
||||
NamedKey::F19 => Key::F19,
|
||||
NamedKey::F2 => Key::F2,
|
||||
NamedKey::F20 => Key::F20,
|
||||
NamedKey::F21 => Key::F21,
|
||||
NamedKey::F22 => Key::F22,
|
||||
NamedKey::F23 => Key::F23,
|
||||
NamedKey::F24 => Key::F24,
|
||||
NamedKey::F25 => Key::F25,
|
||||
NamedKey::F26 => Key::F26,
|
||||
NamedKey::F27 => Key::F27,
|
||||
NamedKey::F28 => Key::F28,
|
||||
NamedKey::F29 => Key::F29,
|
||||
NamedKey::F3 => Key::F3,
|
||||
NamedKey::F30 => Key::F30,
|
||||
NamedKey::F31 => Key::F31,
|
||||
NamedKey::F32 => Key::F32,
|
||||
NamedKey::F33 => Key::F33,
|
||||
NamedKey::F34 => Key::F34,
|
||||
NamedKey::F35 => Key::F35,
|
||||
NamedKey::F4 => Key::F4,
|
||||
NamedKey::F5 => Key::F5,
|
||||
NamedKey::F6 => Key::F6,
|
||||
NamedKey::F7 => Key::F7,
|
||||
NamedKey::F8 => Key::F8,
|
||||
NamedKey::F9 => Key::F9,
|
||||
NamedKey::FavoriteClear0 => Key::FavoriteClear0,
|
||||
NamedKey::FavoriteClear1 => Key::FavoriteClear1,
|
||||
NamedKey::FavoriteClear2 => Key::FavoriteClear2,
|
||||
NamedKey::FavoriteClear3 => Key::FavoriteClear3,
|
||||
NamedKey::FavoriteRecall0 => Key::FavoriteRecall0,
|
||||
NamedKey::FavoriteRecall1 => Key::FavoriteRecall1,
|
||||
NamedKey::FavoriteRecall2 => Key::FavoriteRecall2,
|
||||
NamedKey::FavoriteRecall3 => Key::FavoriteRecall3,
|
||||
NamedKey::FavoriteStore0 => Key::FavoriteStore0,
|
||||
NamedKey::FavoriteStore1 => Key::FavoriteStore1,
|
||||
NamedKey::FavoriteStore2 => Key::FavoriteStore2,
|
||||
NamedKey::FavoriteStore3 => Key::FavoriteStore3,
|
||||
NamedKey::FinalMode => Key::FinalMode,
|
||||
NamedKey::Find => Key::Find,
|
||||
NamedKey::Fn => Key::Fn,
|
||||
NamedKey::FnLock => Key::FnLock,
|
||||
NamedKey::GoBack => Key::GoBack,
|
||||
NamedKey::GoHome => Key::GoHome,
|
||||
NamedKey::GroupFirst => Key::GroupFirst,
|
||||
NamedKey::GroupLast => Key::GroupLast,
|
||||
NamedKey::GroupNext => Key::GroupNext,
|
||||
NamedKey::GroupPrevious => Key::GroupPrevious,
|
||||
NamedKey::Guide => Key::Guide,
|
||||
NamedKey::GuideNextDay => Key::GuideNextDay,
|
||||
NamedKey::GuidePreviousDay => Key::GuidePreviousDay,
|
||||
NamedKey::HangulMode => Key::HangulMode,
|
||||
NamedKey::HanjaMode => Key::HanjaMode,
|
||||
NamedKey::Hankaku => Key::Hankaku,
|
||||
NamedKey::HeadsetHook => Key::HeadsetHook,
|
||||
NamedKey::Help => Key::Help,
|
||||
NamedKey::Hibernate => Key::Hibernate,
|
||||
NamedKey::Hiragana => Key::Hiragana,
|
||||
NamedKey::HiraganaKatakana => Key::HiraganaKatakana,
|
||||
NamedKey::Home => Key::Home,
|
||||
NamedKey::Hyper => Key::Hyper,
|
||||
NamedKey::Info => Key::Info,
|
||||
NamedKey::Insert => Key::Insert,
|
||||
NamedKey::InstantReplay => Key::InstantReplay,
|
||||
NamedKey::JunjaMode => Key::JunjaMode,
|
||||
NamedKey::KanaMode => Key::KanaMode,
|
||||
NamedKey::KanjiMode => Key::KanjiMode,
|
||||
NamedKey::Katakana => Key::Katakana,
|
||||
NamedKey::Key11 => Key::Key11,
|
||||
NamedKey::Key12 => Key::Key12,
|
||||
NamedKey::LastNumberRedial => Key::LastNumberRedial,
|
||||
NamedKey::LaunchApplication1 => Key::LaunchApplication1,
|
||||
NamedKey::LaunchApplication2 => Key::LaunchApplication2,
|
||||
NamedKey::LaunchCalendar => Key::LaunchCalendar,
|
||||
NamedKey::LaunchContacts => Key::LaunchContacts,
|
||||
NamedKey::LaunchMail => Key::LaunchMail,
|
||||
NamedKey::LaunchMediaPlayer => Key::LaunchMediaPlayer,
|
||||
NamedKey::LaunchMusicPlayer => Key::LaunchMusicPlayer,
|
||||
NamedKey::LaunchPhone => Key::LaunchPhone,
|
||||
|
@ -235,18 +203,102 @@ fn get_servo_key_from_winit_key(key: &LogicalKey) -> Key {
|
|||
NamedKey::LaunchWebBrowser => Key::LaunchWebBrowser,
|
||||
NamedKey::LaunchWebCam => Key::LaunchWebCam,
|
||||
NamedKey::LaunchWordProcessor => Key::LaunchWordProcessor,
|
||||
NamedKey::AppSwitch => Key::AppSwitch,
|
||||
NamedKey::Call => Key::Call,
|
||||
NamedKey::Camera => Key::Camera,
|
||||
NamedKey::CameraFocus => Key::CameraFocus,
|
||||
NamedKey::EndCall => Key::EndCall,
|
||||
NamedKey::GoBack => Key::GoBack,
|
||||
NamedKey::GoHome => Key::GoHome,
|
||||
NamedKey::HeadsetHook => Key::HeadsetHook,
|
||||
NamedKey::LastNumberRedial => Key::LastNumberRedial,
|
||||
NamedKey::Notification => Key::Notification,
|
||||
NamedKey::Link => Key::Link,
|
||||
NamedKey::ListProgram => Key::ListProgram,
|
||||
NamedKey::LiveContent => Key::LiveContent,
|
||||
NamedKey::Lock => Key::Lock,
|
||||
NamedKey::LogOff => Key::LogOff,
|
||||
NamedKey::MailForward => Key::MailForward,
|
||||
NamedKey::MailReply => Key::MailReply,
|
||||
NamedKey::MailSend => Key::MailSend,
|
||||
NamedKey::MannerMode => Key::MannerMode,
|
||||
NamedKey::VoiceDial => Key::VoiceDial,
|
||||
NamedKey::MediaApps => Key::MediaApps,
|
||||
NamedKey::MediaAudioTrack => Key::MediaAudioTrack,
|
||||
NamedKey::MediaClose => Key::MediaClose,
|
||||
NamedKey::MediaFastForward => Key::MediaFastForward,
|
||||
NamedKey::MediaLast => Key::MediaLast,
|
||||
NamedKey::MediaPause => Key::MediaPause,
|
||||
NamedKey::MediaPlay => Key::MediaPlay,
|
||||
NamedKey::MediaPlayPause => Key::MediaPlayPause,
|
||||
NamedKey::MediaRecord => Key::MediaRecord,
|
||||
NamedKey::MediaRewind => Key::MediaRewind,
|
||||
NamedKey::MediaSkipBackward => Key::MediaSkipBackward,
|
||||
NamedKey::MediaSkipForward => Key::MediaSkipForward,
|
||||
NamedKey::MediaStepBackward => Key::MediaStepBackward,
|
||||
NamedKey::MediaStepForward => Key::MediaStepForward,
|
||||
NamedKey::MediaStop => Key::MediaStop,
|
||||
NamedKey::MediaTopMenu => Key::MediaTopMenu,
|
||||
NamedKey::MediaTrackNext => Key::MediaTrackNext,
|
||||
NamedKey::MediaTrackPrevious => Key::MediaTrackPrevious,
|
||||
NamedKey::Meta => Key::Meta,
|
||||
NamedKey::MicrophoneToggle => Key::MicrophoneToggle,
|
||||
NamedKey::MicrophoneVolumeDown => Key::MicrophoneVolumeDown,
|
||||
NamedKey::MicrophoneVolumeMute => Key::MicrophoneVolumeMute,
|
||||
NamedKey::MicrophoneVolumeUp => Key::MicrophoneVolumeUp,
|
||||
NamedKey::ModeChange => Key::ModeChange,
|
||||
NamedKey::NavigateIn => Key::NavigateIn,
|
||||
NamedKey::NavigateNext => Key::NavigateNext,
|
||||
NamedKey::NavigateOut => Key::NavigateOut,
|
||||
NamedKey::NavigatePrevious => Key::NavigatePrevious,
|
||||
NamedKey::New => Key::New,
|
||||
NamedKey::NextCandidate => Key::NextCandidate,
|
||||
NamedKey::NextFavoriteChannel => Key::NextFavoriteChannel,
|
||||
NamedKey::NextUserProfile => Key::NextUserProfile,
|
||||
NamedKey::NonConvert => Key::NonConvert,
|
||||
NamedKey::Notification => Key::Notification,
|
||||
NamedKey::NumLock => Key::NumLock,
|
||||
NamedKey::OnDemand => Key::OnDemand,
|
||||
NamedKey::Open => Key::Open,
|
||||
NamedKey::PageDown => Key::PageDown,
|
||||
NamedKey::PageUp => Key::PageUp,
|
||||
NamedKey::Pairing => Key::Pairing,
|
||||
NamedKey::Paste => Key::Paste,
|
||||
NamedKey::Pause => Key::Pause,
|
||||
NamedKey::PinPDown => Key::PinPDown,
|
||||
NamedKey::PinPMove => Key::PinPMove,
|
||||
NamedKey::PinPToggle => Key::PinPToggle,
|
||||
NamedKey::PinPUp => Key::PinPUp,
|
||||
NamedKey::Play => Key::Play,
|
||||
NamedKey::PlaySpeedDown => Key::PlaySpeedDown,
|
||||
NamedKey::PlaySpeedReset => Key::PlaySpeedReset,
|
||||
NamedKey::PlaySpeedUp => Key::PlaySpeedUp,
|
||||
NamedKey::Power => Key::Power,
|
||||
NamedKey::PowerOff => Key::PowerOff,
|
||||
NamedKey::PreviousCandidate => Key::PreviousCandidate,
|
||||
NamedKey::Print => Key::Print,
|
||||
NamedKey::PrintScreen => Key::PrintScreen,
|
||||
NamedKey::Process => Key::Process,
|
||||
NamedKey::Props => Key::Props,
|
||||
NamedKey::RandomToggle => Key::RandomToggle,
|
||||
NamedKey::RcLowBattery => Key::RcLowBattery,
|
||||
NamedKey::RecordSpeedNext => Key::RecordSpeedNext,
|
||||
NamedKey::Redo => Key::Redo,
|
||||
NamedKey::RfBypass => Key::RfBypass,
|
||||
NamedKey::Romaji => Key::Romaji,
|
||||
NamedKey::STBInput => Key::STBInput,
|
||||
NamedKey::STBPower => Key::STBPower,
|
||||
NamedKey::Save => Key::Save,
|
||||
NamedKey::ScanChannelsToggle => Key::ScanChannelsToggle,
|
||||
NamedKey::ScreenModeNext => Key::ScreenModeNext,
|
||||
NamedKey::ScrollLock => Key::ScrollLock,
|
||||
NamedKey::Select => Key::Select,
|
||||
NamedKey::Settings => Key::Settings,
|
||||
NamedKey::Shift => Key::Shift,
|
||||
NamedKey::SingleCandidate => Key::SingleCandidate,
|
||||
NamedKey::Soft1 => Key::Soft1,
|
||||
NamedKey::Soft2 => Key::Soft2,
|
||||
NamedKey::Soft3 => Key::Soft3,
|
||||
NamedKey::Soft4 => Key::Soft4,
|
||||
NamedKey::Space => Key::Character(" ".to_string()),
|
||||
NamedKey::SpeechCorrectionList => Key::SpeechCorrectionList,
|
||||
NamedKey::SpeechInputToggle => Key::SpeechInputToggle,
|
||||
NamedKey::SpellCheck => Key::SpellCheck,
|
||||
NamedKey::SplitScreenToggle => Key::SplitScreenToggle,
|
||||
NamedKey::Standby => Key::Standby,
|
||||
NamedKey::Subtitle => Key::Subtitle,
|
||||
NamedKey::Super => Key::Super,
|
||||
NamedKey::Symbol => Key::Symbol,
|
||||
NamedKey::SymbolLock => Key::SymbolLock,
|
||||
NamedKey::TV => Key::TV,
|
||||
NamedKey::TV3DMode => Key::TV3DMode,
|
||||
NamedKey::TVAntennaCable => Key::TVAntennaCable,
|
||||
|
@ -277,140 +329,75 @@ fn get_servo_key_from_winit_key(key: &LogicalKey) -> Key {
|
|||
NamedKey::TVTerrestrialAnalog => Key::TVTerrestrialAnalog,
|
||||
NamedKey::TVTerrestrialDigital => Key::TVTerrestrialDigital,
|
||||
NamedKey::TVTimer => Key::TVTimer,
|
||||
NamedKey::AVRInput => Key::AVRInput,
|
||||
NamedKey::AVRPower => Key::AVRPower,
|
||||
NamedKey::ColorF0Red => Key::ColorF0Red,
|
||||
NamedKey::ColorF1Green => Key::ColorF1Green,
|
||||
NamedKey::ColorF2Yellow => Key::ColorF2Yellow,
|
||||
NamedKey::ColorF3Blue => Key::ColorF3Blue,
|
||||
NamedKey::ColorF4Grey => Key::ColorF4Grey,
|
||||
NamedKey::ColorF5Brown => Key::ColorF5Brown,
|
||||
NamedKey::ClosedCaptionToggle => Key::ClosedCaptionToggle,
|
||||
NamedKey::Dimmer => Key::Dimmer,
|
||||
NamedKey::DisplaySwap => Key::DisplaySwap,
|
||||
NamedKey::DVR => Key::DVR,
|
||||
NamedKey::Exit => Key::Exit,
|
||||
NamedKey::FavoriteClear0 => Key::FavoriteClear0,
|
||||
NamedKey::FavoriteClear1 => Key::FavoriteClear1,
|
||||
NamedKey::FavoriteClear2 => Key::FavoriteClear2,
|
||||
NamedKey::FavoriteClear3 => Key::FavoriteClear3,
|
||||
NamedKey::FavoriteRecall0 => Key::FavoriteRecall0,
|
||||
NamedKey::FavoriteRecall1 => Key::FavoriteRecall1,
|
||||
NamedKey::FavoriteRecall2 => Key::FavoriteRecall2,
|
||||
NamedKey::FavoriteRecall3 => Key::FavoriteRecall3,
|
||||
NamedKey::FavoriteStore0 => Key::FavoriteStore0,
|
||||
NamedKey::FavoriteStore1 => Key::FavoriteStore1,
|
||||
NamedKey::FavoriteStore2 => Key::FavoriteStore2,
|
||||
NamedKey::FavoriteStore3 => Key::FavoriteStore3,
|
||||
NamedKey::Guide => Key::Guide,
|
||||
NamedKey::GuideNextDay => Key::GuideNextDay,
|
||||
NamedKey::GuidePreviousDay => Key::GuidePreviousDay,
|
||||
NamedKey::Info => Key::Info,
|
||||
NamedKey::InstantReplay => Key::InstantReplay,
|
||||
NamedKey::Link => Key::Link,
|
||||
NamedKey::ListProgram => Key::ListProgram,
|
||||
NamedKey::LiveContent => Key::LiveContent,
|
||||
NamedKey::Lock => Key::Lock,
|
||||
NamedKey::MediaApps => Key::MediaApps,
|
||||
NamedKey::MediaAudioTrack => Key::MediaAudioTrack,
|
||||
NamedKey::MediaLast => Key::MediaLast,
|
||||
NamedKey::MediaSkipBackward => Key::MediaSkipBackward,
|
||||
NamedKey::MediaSkipForward => Key::MediaSkipForward,
|
||||
NamedKey::MediaStepBackward => Key::MediaStepBackward,
|
||||
NamedKey::MediaStepForward => Key::MediaStepForward,
|
||||
NamedKey::MediaTopMenu => Key::MediaTopMenu,
|
||||
NamedKey::NavigateIn => Key::NavigateIn,
|
||||
NamedKey::NavigateNext => Key::NavigateNext,
|
||||
NamedKey::NavigateOut => Key::NavigateOut,
|
||||
NamedKey::NavigatePrevious => Key::NavigatePrevious,
|
||||
NamedKey::NextFavoriteChannel => Key::NextFavoriteChannel,
|
||||
NamedKey::NextUserProfile => Key::NextUserProfile,
|
||||
NamedKey::OnDemand => Key::OnDemand,
|
||||
NamedKey::Pairing => Key::Pairing,
|
||||
NamedKey::PinPDown => Key::PinPDown,
|
||||
NamedKey::PinPMove => Key::PinPMove,
|
||||
NamedKey::PinPToggle => Key::PinPToggle,
|
||||
NamedKey::PinPUp => Key::PinPUp,
|
||||
NamedKey::PlaySpeedDown => Key::PlaySpeedDown,
|
||||
NamedKey::PlaySpeedReset => Key::PlaySpeedReset,
|
||||
NamedKey::PlaySpeedUp => Key::PlaySpeedUp,
|
||||
NamedKey::RandomToggle => Key::RandomToggle,
|
||||
NamedKey::RcLowBattery => Key::RcLowBattery,
|
||||
NamedKey::RecordSpeedNext => Key::RecordSpeedNext,
|
||||
NamedKey::RfBypass => Key::RfBypass,
|
||||
NamedKey::ScanChannelsToggle => Key::ScanChannelsToggle,
|
||||
NamedKey::ScreenModeNext => Key::ScreenModeNext,
|
||||
NamedKey::Settings => Key::Settings,
|
||||
NamedKey::SplitScreenToggle => Key::SplitScreenToggle,
|
||||
NamedKey::STBInput => Key::STBInput,
|
||||
NamedKey::STBPower => Key::STBPower,
|
||||
NamedKey::Subtitle => Key::Subtitle,
|
||||
NamedKey::Tab => Key::Tab,
|
||||
NamedKey::Teletext => Key::Teletext,
|
||||
NamedKey::Undo => Key::Undo,
|
||||
NamedKey::VideoModeNext => Key::VideoModeNext,
|
||||
NamedKey::VoiceDial => Key::VoiceDial,
|
||||
NamedKey::WakeUp => Key::WakeUp,
|
||||
NamedKey::Wink => Key::Wink,
|
||||
NamedKey::Zenkaku => Key::Zenkaku,
|
||||
NamedKey::ZenkakuHankaku => Key::ZenkakuHankaku,
|
||||
NamedKey::ZoomIn => Key::ZoomIn,
|
||||
NamedKey::ZoomOut => Key::ZoomOut,
|
||||
NamedKey::ZoomToggle => Key::ZoomToggle,
|
||||
|
||||
NamedKey::Space => Key::Character(" ".to_string()),
|
||||
_ => Key::Unidentified,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn get_servo_location_from_physical_key(physical_key: PhysicalKey) -> Location {
|
||||
let key_code = if let PhysicalKey::Code(key_code) = physical_key {
|
||||
key_code
|
||||
} else {
|
||||
return Location::Standard;
|
||||
};
|
||||
|
||||
match key_code {
|
||||
KeyCode::ShiftLeft | KeyCode::ControlLeft | KeyCode::AltLeft | KeyCode::SuperLeft => {
|
||||
Location::Left
|
||||
},
|
||||
KeyCode::ShiftRight | KeyCode::ControlRight | KeyCode::AltRight | KeyCode::SuperRight => {
|
||||
Location::Right
|
||||
},
|
||||
KeyCode::Numpad0 |
|
||||
KeyCode::Numpad1 |
|
||||
KeyCode::Numpad2 |
|
||||
KeyCode::Numpad3 |
|
||||
KeyCode::Numpad4 |
|
||||
KeyCode::Numpad5 |
|
||||
KeyCode::Numpad6 |
|
||||
KeyCode::Numpad7 |
|
||||
KeyCode::Numpad8 |
|
||||
KeyCode::Numpad9 |
|
||||
KeyCode::NumpadAdd |
|
||||
KeyCode::NumpadBackspace |
|
||||
KeyCode::NumpadClear |
|
||||
KeyCode::NumpadClearEntry |
|
||||
KeyCode::NumpadComma |
|
||||
KeyCode::NumpadDecimal |
|
||||
KeyCode::NumpadDivide |
|
||||
KeyCode::NumpadEnter |
|
||||
KeyCode::NumpadEqual |
|
||||
KeyCode::NumpadHash |
|
||||
KeyCode::NumpadMemoryAdd |
|
||||
KeyCode::NumpadMemoryClear |
|
||||
KeyCode::NumpadMemoryRecall |
|
||||
KeyCode::NumpadMemoryStore |
|
||||
KeyCode::NumpadMemorySubtract |
|
||||
KeyCode::NumpadMultiply |
|
||||
KeyCode::NumpadParenLeft |
|
||||
KeyCode::NumpadParenRight |
|
||||
KeyCode::NumpadStar |
|
||||
KeyCode::NumpadSubtract => Location::Numpad,
|
||||
_ => Location::Standard,
|
||||
impl FromWinitKeyEvent for Location {
|
||||
fn from_winit_key_event(key_event: &KeyEvent) -> Self {
|
||||
match key_event.location {
|
||||
WinitKeyLocation::Left => Location::Left,
|
||||
WinitKeyLocation::Numpad => Location::Numpad,
|
||||
WinitKeyLocation::Right => Location::Right,
|
||||
WinitKeyLocation::Standard => Location::Standard,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn get_servo_code_from_physical_key(physical_key: PhysicalKey) -> Code {
|
||||
let key_code = match physical_key {
|
||||
impl FromWinitKeyEvent for Code {
|
||||
fn from_winit_key_event(key_event: &KeyEvent) -> Self {
|
||||
let key_code = match key_event.physical_key {
|
||||
PhysicalKey::Code(key_code) => key_code,
|
||||
PhysicalKey::Unidentified(_os_code) => return Code::Unidentified,
|
||||
};
|
||||
|
||||
match key_code {
|
||||
KeyCode::Escape => Code::Escape,
|
||||
KeyCode::Abort => Code::Abort,
|
||||
KeyCode::Again => Code::Again,
|
||||
KeyCode::AltLeft => Code::AltLeft,
|
||||
KeyCode::AltRight => Code::AltRight,
|
||||
KeyCode::ArrowDown => Code::ArrowDown,
|
||||
KeyCode::ArrowLeft => Code::ArrowLeft,
|
||||
KeyCode::ArrowRight => Code::ArrowRight,
|
||||
KeyCode::ArrowUp => Code::ArrowUp,
|
||||
KeyCode::AudioVolumeDown => Code::AudioVolumeDown,
|
||||
KeyCode::AudioVolumeMute => Code::AudioVolumeMute,
|
||||
KeyCode::AudioVolumeUp => Code::AudioVolumeUp,
|
||||
KeyCode::Backquote => Code::Backquote,
|
||||
KeyCode::Backslash => Code::Backslash,
|
||||
KeyCode::Backspace => Code::Backspace,
|
||||
KeyCode::BracketLeft => Code::BracketLeft,
|
||||
KeyCode::BracketRight => Code::BracketRight,
|
||||
KeyCode::BrowserBack => Code::BrowserBack,
|
||||
KeyCode::BrowserFavorites => Code::BrowserFavorites,
|
||||
KeyCode::BrowserForward => Code::BrowserForward,
|
||||
KeyCode::BrowserHome => Code::BrowserHome,
|
||||
KeyCode::BrowserRefresh => Code::BrowserRefresh,
|
||||
KeyCode::BrowserSearch => Code::BrowserSearch,
|
||||
KeyCode::BrowserStop => Code::BrowserStop,
|
||||
KeyCode::CapsLock => Code::CapsLock,
|
||||
KeyCode::Comma => Code::Comma,
|
||||
KeyCode::ContextMenu => Code::ContextMenu,
|
||||
KeyCode::ControlLeft => Code::ControlLeft,
|
||||
KeyCode::ControlRight => Code::ControlRight,
|
||||
KeyCode::Convert => Code::Convert,
|
||||
KeyCode::Copy => Code::Copy,
|
||||
KeyCode::Cut => Code::Cut,
|
||||
KeyCode::Delete => Code::Delete,
|
||||
KeyCode::Digit0 => Code::Digit0,
|
||||
KeyCode::Digit1 => Code::Digit1,
|
||||
KeyCode::Digit2 => Code::Digit2,
|
||||
KeyCode::Digit3 => Code::Digit3,
|
||||
|
@ -420,101 +407,101 @@ fn get_servo_code_from_physical_key(physical_key: PhysicalKey) -> Code {
|
|||
KeyCode::Digit7 => Code::Digit7,
|
||||
KeyCode::Digit8 => Code::Digit8,
|
||||
KeyCode::Digit9 => Code::Digit9,
|
||||
KeyCode::Digit0 => Code::Digit0,
|
||||
|
||||
KeyCode::Backspace => Code::Backspace,
|
||||
KeyCode::Tab => Code::Tab,
|
||||
KeyCode::KeyQ => Code::KeyQ,
|
||||
KeyCode::KeyW => Code::KeyW,
|
||||
KeyCode::KeyE => Code::KeyE,
|
||||
KeyCode::KeyR => Code::KeyR,
|
||||
KeyCode::KeyT => Code::KeyT,
|
||||
KeyCode::KeyY => Code::KeyY,
|
||||
KeyCode::KeyU => Code::KeyU,
|
||||
KeyCode::KeyI => Code::KeyI,
|
||||
KeyCode::KeyO => Code::KeyO,
|
||||
KeyCode::KeyP => Code::KeyP,
|
||||
KeyCode::BracketLeft => Code::BracketLeft,
|
||||
KeyCode::BracketRight => Code::BracketRight,
|
||||
KeyCode::Eject => Code::Eject,
|
||||
KeyCode::End => Code::End,
|
||||
KeyCode::Enter => Code::Enter,
|
||||
|
||||
KeyCode::KeyA => Code::KeyA,
|
||||
KeyCode::KeyS => Code::KeyS,
|
||||
KeyCode::KeyD => Code::KeyD,
|
||||
KeyCode::KeyF => Code::KeyF,
|
||||
KeyCode::KeyG => Code::KeyG,
|
||||
KeyCode::KeyH => Code::KeyH,
|
||||
KeyCode::KeyJ => Code::KeyJ,
|
||||
KeyCode::KeyK => Code::KeyK,
|
||||
KeyCode::KeyL => Code::KeyL,
|
||||
KeyCode::Semicolon => Code::Semicolon,
|
||||
KeyCode::Quote => Code::Quote,
|
||||
|
||||
KeyCode::ShiftLeft => Code::ShiftLeft,
|
||||
KeyCode::Backslash => Code::Backslash,
|
||||
KeyCode::KeyZ => Code::KeyZ,
|
||||
KeyCode::KeyX => Code::KeyX,
|
||||
KeyCode::KeyC => Code::KeyC,
|
||||
KeyCode::KeyV => Code::KeyV,
|
||||
KeyCode::KeyB => Code::KeyB,
|
||||
KeyCode::KeyN => Code::KeyN,
|
||||
KeyCode::KeyM => Code::KeyM,
|
||||
KeyCode::Comma => Code::Comma,
|
||||
KeyCode::Period => Code::Period,
|
||||
KeyCode::Slash => Code::Slash,
|
||||
KeyCode::ShiftRight => Code::ShiftRight,
|
||||
|
||||
KeyCode::Space => Code::Space,
|
||||
|
||||
KeyCode::Equal => Code::Equal,
|
||||
KeyCode::Escape => Code::Escape,
|
||||
KeyCode::F1 => Code::F1,
|
||||
KeyCode::F10 => Code::F10,
|
||||
KeyCode::F11 => Code::F11,
|
||||
KeyCode::F12 => Code::F12,
|
||||
KeyCode::F13 => Code::F13,
|
||||
KeyCode::F14 => Code::F14,
|
||||
KeyCode::F15 => Code::F15,
|
||||
KeyCode::F16 => Code::F16,
|
||||
KeyCode::F17 => Code::F17,
|
||||
KeyCode::F18 => Code::F18,
|
||||
KeyCode::F19 => Code::F19,
|
||||
KeyCode::F2 => Code::F2,
|
||||
KeyCode::F20 => Code::F20,
|
||||
KeyCode::F21 => Code::F21,
|
||||
KeyCode::F22 => Code::F22,
|
||||
KeyCode::F23 => Code::F23,
|
||||
KeyCode::F24 => Code::F24,
|
||||
KeyCode::F25 => Code::F25,
|
||||
KeyCode::F26 => Code::F26,
|
||||
KeyCode::F27 => Code::F27,
|
||||
KeyCode::F28 => Code::F28,
|
||||
KeyCode::F29 => Code::F29,
|
||||
KeyCode::F3 => Code::F3,
|
||||
KeyCode::F30 => Code::F30,
|
||||
KeyCode::F31 => Code::F31,
|
||||
KeyCode::F32 => Code::F32,
|
||||
KeyCode::F33 => Code::F33,
|
||||
KeyCode::F34 => Code::F34,
|
||||
KeyCode::F35 => Code::F35,
|
||||
KeyCode::F4 => Code::F4,
|
||||
KeyCode::F5 => Code::F5,
|
||||
KeyCode::F6 => Code::F6,
|
||||
KeyCode::F7 => Code::F7,
|
||||
KeyCode::F8 => Code::F8,
|
||||
KeyCode::F9 => Code::F9,
|
||||
KeyCode::F10 => Code::F10,
|
||||
|
||||
KeyCode::F11 => Code::F11,
|
||||
KeyCode::F12 => Code::F12,
|
||||
|
||||
KeyCode::ArrowUp => Code::ArrowUp,
|
||||
KeyCode::PageUp => Code::PageUp,
|
||||
KeyCode::ArrowLeft => Code::ArrowLeft,
|
||||
KeyCode::ArrowRight => Code::ArrowRight,
|
||||
|
||||
KeyCode::SuperLeft => Code::MetaLeft,
|
||||
KeyCode::SuperRight => Code::MetaRight,
|
||||
|
||||
KeyCode::Find => Code::Find,
|
||||
KeyCode::Fn => Code::Fn,
|
||||
KeyCode::FnLock => Code::FnLock,
|
||||
KeyCode::Help => Code::Help,
|
||||
KeyCode::Hiragana => Code::Hiragana,
|
||||
KeyCode::Home => Code::Home,
|
||||
KeyCode::End => Code::End,
|
||||
KeyCode::ArrowDown => Code::ArrowDown,
|
||||
KeyCode::PageDown => Code::PageDown,
|
||||
KeyCode::Hyper => Code::Hyper,
|
||||
KeyCode::Insert => Code::Insert,
|
||||
KeyCode::Delete => Code::Delete,
|
||||
KeyCode::Backquote => Code::Backquote,
|
||||
KeyCode::Equal => Code::Equal,
|
||||
KeyCode::IntlBackslash => Code::IntlBackslash,
|
||||
KeyCode::IntlRo => Code::IntlRo,
|
||||
KeyCode::IntlYen => Code::IntlYen,
|
||||
KeyCode::Minus => Code::Minus,
|
||||
KeyCode::AltLeft => Code::AltLeft,
|
||||
KeyCode::AltRight => Code::AltRight,
|
||||
KeyCode::CapsLock => Code::CapsLock,
|
||||
KeyCode::ContextMenu => Code::ContextMenu,
|
||||
KeyCode::ControlLeft => Code::ControlLeft,
|
||||
KeyCode::ControlRight => Code::ControlRight,
|
||||
KeyCode::Convert => Code::Convert,
|
||||
KeyCode::KanaMode => Code::KanaMode,
|
||||
KeyCode::Katakana => Code::Katakana,
|
||||
KeyCode::KeyA => Code::KeyA,
|
||||
KeyCode::KeyB => Code::KeyB,
|
||||
KeyCode::KeyC => Code::KeyC,
|
||||
KeyCode::KeyD => Code::KeyD,
|
||||
KeyCode::KeyE => Code::KeyE,
|
||||
KeyCode::KeyF => Code::KeyF,
|
||||
KeyCode::KeyG => Code::KeyG,
|
||||
KeyCode::KeyH => Code::KeyH,
|
||||
KeyCode::KeyI => Code::KeyI,
|
||||
KeyCode::KeyJ => Code::KeyJ,
|
||||
KeyCode::KeyK => Code::KeyK,
|
||||
KeyCode::KeyL => Code::KeyL,
|
||||
KeyCode::KeyM => Code::KeyM,
|
||||
KeyCode::KeyN => Code::KeyN,
|
||||
KeyCode::KeyO => Code::KeyO,
|
||||
KeyCode::KeyP => Code::KeyP,
|
||||
KeyCode::KeyQ => Code::KeyQ,
|
||||
KeyCode::KeyR => Code::KeyR,
|
||||
KeyCode::KeyS => Code::KeyS,
|
||||
KeyCode::KeyT => Code::KeyT,
|
||||
KeyCode::KeyU => Code::KeyU,
|
||||
KeyCode::KeyV => Code::KeyV,
|
||||
KeyCode::KeyW => Code::KeyW,
|
||||
KeyCode::KeyX => Code::KeyX,
|
||||
KeyCode::KeyY => Code::KeyY,
|
||||
KeyCode::KeyZ => Code::KeyZ,
|
||||
KeyCode::Lang1 => Code::Lang1,
|
||||
KeyCode::Lang2 => Code::Lang2,
|
||||
KeyCode::Lang3 => Code::Lang3,
|
||||
KeyCode::Lang4 => Code::Lang4,
|
||||
KeyCode::Lang5 => Code::Lang5,
|
||||
KeyCode::LaunchApp1 => Code::LaunchApp1,
|
||||
KeyCode::LaunchApp2 => Code::LaunchApp2,
|
||||
KeyCode::LaunchMail => Code::LaunchMail,
|
||||
KeyCode::MediaPlayPause => Code::MediaPlayPause,
|
||||
KeyCode::MediaSelect => Code::MediaSelect,
|
||||
KeyCode::MediaStop => Code::MediaStop,
|
||||
KeyCode::MediaTrackNext => Code::MediaTrackNext,
|
||||
KeyCode::MediaTrackPrevious => Code::MediaTrackPrevious,
|
||||
KeyCode::Meta => Code::Super,
|
||||
KeyCode::Minus => Code::Minus,
|
||||
KeyCode::NonConvert => Code::NonConvert,
|
||||
KeyCode::Help => Code::Help,
|
||||
KeyCode::NumLock => Code::NumLock,
|
||||
KeyCode::Numpad0 => Code::Numpad0,
|
||||
KeyCode::Numpad1 => Code::Numpad1,
|
||||
|
@ -546,79 +533,47 @@ fn get_servo_code_from_physical_key(physical_key: PhysicalKey) -> Code {
|
|||
KeyCode::NumpadParenRight => Code::NumpadParenRight,
|
||||
KeyCode::NumpadStar => Code::NumpadStar,
|
||||
KeyCode::NumpadSubtract => Code::NumpadSubtract,
|
||||
KeyCode::Fn => Code::Fn,
|
||||
KeyCode::FnLock => Code::FnLock,
|
||||
KeyCode::PrintScreen => Code::PrintScreen,
|
||||
KeyCode::ScrollLock => Code::ScrollLock,
|
||||
KeyCode::Pause => Code::Pause,
|
||||
KeyCode::BrowserBack => Code::BrowserBack,
|
||||
KeyCode::BrowserFavorites => Code::BrowserFavorites,
|
||||
KeyCode::BrowserForward => Code::BrowserForward,
|
||||
KeyCode::BrowserHome => Code::BrowserHome,
|
||||
KeyCode::BrowserRefresh => Code::BrowserRefresh,
|
||||
KeyCode::BrowserSearch => Code::BrowserSearch,
|
||||
KeyCode::BrowserStop => Code::BrowserStop,
|
||||
KeyCode::Eject => Code::Eject,
|
||||
KeyCode::LaunchApp1 => Code::LaunchApp1,
|
||||
KeyCode::LaunchApp2 => Code::LaunchApp2,
|
||||
KeyCode::LaunchMail => Code::LaunchMail,
|
||||
KeyCode::MediaPlayPause => Code::MediaPlayPause,
|
||||
KeyCode::MediaSelect => Code::MediaSelect,
|
||||
KeyCode::MediaStop => Code::MediaStop,
|
||||
KeyCode::MediaTrackNext => Code::MediaTrackNext,
|
||||
KeyCode::MediaTrackPrevious => Code::MediaTrackPrevious,
|
||||
KeyCode::Power => Code::Power,
|
||||
KeyCode::Sleep => Code::Sleep,
|
||||
KeyCode::AudioVolumeDown => Code::AudioVolumeDown,
|
||||
KeyCode::AudioVolumeMute => Code::AudioVolumeMute,
|
||||
KeyCode::AudioVolumeUp => Code::AudioVolumeUp,
|
||||
KeyCode::WakeUp => Code::WakeUp,
|
||||
KeyCode::Meta => Code::Super,
|
||||
KeyCode::Hyper => Code::Hyper,
|
||||
KeyCode::Turbo => Code::Turbo,
|
||||
KeyCode::Abort => Code::Abort,
|
||||
KeyCode::Resume => Code::Resume,
|
||||
KeyCode::Suspend => Code::Suspend,
|
||||
KeyCode::Again => Code::Again,
|
||||
KeyCode::Copy => Code::Copy,
|
||||
KeyCode::Cut => Code::Cut,
|
||||
KeyCode::Find => Code::Find,
|
||||
KeyCode::Open => Code::Open,
|
||||
KeyCode::PageDown => Code::PageDown,
|
||||
KeyCode::PageUp => Code::PageUp,
|
||||
KeyCode::Paste => Code::Paste,
|
||||
KeyCode::Pause => Code::Pause,
|
||||
KeyCode::Period => Code::Period,
|
||||
KeyCode::Power => Code::Power,
|
||||
KeyCode::PrintScreen => Code::PrintScreen,
|
||||
KeyCode::Props => Code::Props,
|
||||
KeyCode::Quote => Code::Quote,
|
||||
KeyCode::Resume => Code::Resume,
|
||||
KeyCode::ScrollLock => Code::ScrollLock,
|
||||
KeyCode::Select => Code::Select,
|
||||
KeyCode::Semicolon => Code::Semicolon,
|
||||
KeyCode::ShiftLeft => Code::ShiftLeft,
|
||||
KeyCode::ShiftRight => Code::ShiftRight,
|
||||
KeyCode::Slash => Code::Slash,
|
||||
KeyCode::Sleep => Code::Sleep,
|
||||
KeyCode::Space => Code::Space,
|
||||
KeyCode::SuperLeft => Code::MetaLeft,
|
||||
KeyCode::SuperRight => Code::MetaRight,
|
||||
KeyCode::Suspend => Code::Suspend,
|
||||
KeyCode::Tab => Code::Tab,
|
||||
KeyCode::Turbo => Code::Turbo,
|
||||
KeyCode::Undo => Code::Undo,
|
||||
KeyCode::Hiragana => Code::Hiragana,
|
||||
KeyCode::Katakana => Code::Katakana,
|
||||
KeyCode::F13 => Code::F13,
|
||||
KeyCode::F14 => Code::F14,
|
||||
KeyCode::F15 => Code::F15,
|
||||
KeyCode::F16 => Code::F16,
|
||||
KeyCode::F17 => Code::F17,
|
||||
KeyCode::F18 => Code::F18,
|
||||
KeyCode::F19 => Code::F19,
|
||||
KeyCode::F20 => Code::F20,
|
||||
KeyCode::F21 => Code::F21,
|
||||
KeyCode::F22 => Code::F22,
|
||||
KeyCode::F23 => Code::F23,
|
||||
KeyCode::F24 => Code::F24,
|
||||
KeyCode::F25 => Code::F25,
|
||||
KeyCode::F26 => Code::F26,
|
||||
KeyCode::F27 => Code::F27,
|
||||
KeyCode::F28 => Code::F28,
|
||||
KeyCode::F29 => Code::F29,
|
||||
KeyCode::F30 => Code::F30,
|
||||
KeyCode::F31 => Code::F31,
|
||||
KeyCode::F32 => Code::F32,
|
||||
KeyCode::F33 => Code::F33,
|
||||
KeyCode::F34 => Code::F34,
|
||||
KeyCode::F35 => Code::F35,
|
||||
|
||||
KeyCode::WakeUp => Code::WakeUp,
|
||||
_ => Code::Unidentified,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn get_modifiers(mods: ModifiersState) -> Modifiers {
|
||||
impl FromWinitKeyEvent for KeyState {
|
||||
fn from_winit_key_event(key_event: &KeyEvent) -> Self {
|
||||
match key_event.state {
|
||||
ElementState::Pressed => KeyState::Down,
|
||||
ElementState::Released => KeyState::Up,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn keyboard_modifiers_from_winit_modifiers(mods: ModifiersState) -> Modifiers {
|
||||
let mut modifiers = Modifiers::empty();
|
||||
modifiers.set(Modifiers::CONTROL, mods.control_key());
|
||||
modifiers.set(Modifiers::SHIFT, mods.shift_key());
|
||||
|
@ -627,17 +582,13 @@ fn get_modifiers(mods: ModifiersState) -> Modifiers {
|
|||
modifiers
|
||||
}
|
||||
|
||||
pub fn keyboard_event_from_winit(input: &KeyEvent, state: ModifiersState) -> KeyboardEvent {
|
||||
info!("winit keyboard input: {:?}", input);
|
||||
pub fn keyboard_event_from_winit(key_event: &KeyEvent, state: ModifiersState) -> KeyboardEvent {
|
||||
KeyboardEvent {
|
||||
state: match input.state {
|
||||
ElementState::Pressed => KeyState::Down,
|
||||
ElementState::Released => KeyState::Up,
|
||||
},
|
||||
key: get_servo_key_from_winit_key(&input.logical_key),
|
||||
code: get_servo_code_from_physical_key(input.physical_key),
|
||||
location: get_servo_location_from_physical_key(input.physical_key),
|
||||
modifiers: get_modifiers(state),
|
||||
state: KeyState::from_winit_key_event(key_event),
|
||||
key: Key::from_winit_key_event(key_event),
|
||||
code: Code::from_winit_key_event(key_event),
|
||||
location: Location::from_winit_key_event(key_event),
|
||||
modifiers: keyboard_modifiers_from_winit_modifiers(state),
|
||||
repeat: false,
|
||||
is_composing: false,
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue