mirror of
https://github.com/servo/servo.git
synced 2025-08-05 05:30:08 +01:00
With some adjustment for `NamedKey`. The two crates need to be bumped together to avoid duplicate of `keyboard-types` action. --------- Signed-off-by: PotatoCP <Kenzie.Raditya.Tirtarahardja@huawei.com>
601 lines
34 KiB
Rust
601 lines
34 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
use keyboard_types::{Code, Key, KeyState, Location, Modifiers, NamedKey};
|
|
use servo::KeyboardEvent;
|
|
use winit::event::{ElementState, KeyEvent};
|
|
use winit::keyboard::{
|
|
Key as WinitKey, KeyCode, KeyLocation as WinitKeyLocation, ModifiersState,
|
|
NamedKey as WinitNamedKey, PhysicalKey,
|
|
};
|
|
|
|
// Some shortcuts use Cmd on Mac and Control on other systems.
|
|
#[cfg(target_os = "macos")]
|
|
pub const CMD_OR_CONTROL: Modifiers = Modifiers::META;
|
|
#[cfg(not(target_os = "macos"))]
|
|
pub const CMD_OR_CONTROL: Modifiers = Modifiers::CONTROL;
|
|
|
|
// Some shortcuts use Cmd on Mac and Alt on other systems.
|
|
#[cfg(target_os = "macos")]
|
|
pub const CMD_OR_ALT: Modifiers = Modifiers::META;
|
|
#[cfg(not(target_os = "macos"))]
|
|
pub const CMD_OR_ALT: Modifiers = Modifiers::ALT;
|
|
|
|
trait FromWinitKeyEvent {
|
|
fn from_winit_key_event(key_event: &KeyEvent) -> Self;
|
|
}
|
|
|
|
#[allow(deprecated)]
|
|
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(_) | WinitKey::Dead(_) => {
|
|
return Key::Named(NamedKey::Unidentified);
|
|
},
|
|
};
|
|
|
|
match named_key {
|
|
WinitNamedKey::AVRInput => Key::Named(NamedKey::AVRInput),
|
|
WinitNamedKey::AVRPower => Key::Named(NamedKey::AVRPower),
|
|
WinitNamedKey::Accept => Key::Named(NamedKey::Accept),
|
|
WinitNamedKey::Again => Key::Named(NamedKey::Again),
|
|
WinitNamedKey::AllCandidates => Key::Named(NamedKey::AllCandidates),
|
|
WinitNamedKey::Alphanumeric => Key::Named(NamedKey::Alphanumeric),
|
|
WinitNamedKey::Alt => Key::Named(NamedKey::Alt),
|
|
WinitNamedKey::AltGraph => Key::Named(NamedKey::AltGraph),
|
|
WinitNamedKey::AppSwitch => Key::Named(NamedKey::AppSwitch),
|
|
WinitNamedKey::ArrowDown => Key::Named(NamedKey::ArrowDown),
|
|
WinitNamedKey::ArrowLeft => Key::Named(NamedKey::ArrowLeft),
|
|
WinitNamedKey::ArrowRight => Key::Named(NamedKey::ArrowRight),
|
|
WinitNamedKey::ArrowUp => Key::Named(NamedKey::ArrowUp),
|
|
WinitNamedKey::Attn => Key::Named(NamedKey::Attn),
|
|
WinitNamedKey::AudioBalanceLeft => Key::Named(NamedKey::AudioBalanceLeft),
|
|
WinitNamedKey::AudioBalanceRight => Key::Named(NamedKey::AudioBalanceRight),
|
|
WinitNamedKey::AudioBassBoostDown => Key::Named(NamedKey::AudioBassBoostDown),
|
|
WinitNamedKey::AudioBassBoostToggle => Key::Named(NamedKey::AudioBassBoostToggle),
|
|
WinitNamedKey::AudioBassBoostUp => Key::Named(NamedKey::AudioBassBoostUp),
|
|
WinitNamedKey::AudioFaderFront => Key::Named(NamedKey::AudioFaderFront),
|
|
WinitNamedKey::AudioFaderRear => Key::Named(NamedKey::AudioFaderRear),
|
|
WinitNamedKey::AudioSurroundModeNext => Key::Named(NamedKey::AudioSurroundModeNext),
|
|
WinitNamedKey::AudioTrebleDown => Key::Named(NamedKey::AudioTrebleDown),
|
|
WinitNamedKey::AudioTrebleUp => Key::Named(NamedKey::AudioTrebleUp),
|
|
WinitNamedKey::AudioVolumeDown => Key::Named(NamedKey::AudioVolumeDown),
|
|
WinitNamedKey::AudioVolumeMute => Key::Named(NamedKey::AudioVolumeMute),
|
|
WinitNamedKey::AudioVolumeUp => Key::Named(NamedKey::AudioVolumeUp),
|
|
WinitNamedKey::Backspace => Key::Named(NamedKey::Backspace),
|
|
WinitNamedKey::BrightnessDown => Key::Named(NamedKey::BrightnessDown),
|
|
WinitNamedKey::BrightnessUp => Key::Named(NamedKey::BrightnessUp),
|
|
WinitNamedKey::BrowserBack => Key::Named(NamedKey::BrowserBack),
|
|
WinitNamedKey::BrowserFavorites => Key::Named(NamedKey::BrowserFavorites),
|
|
WinitNamedKey::BrowserForward => Key::Named(NamedKey::BrowserForward),
|
|
WinitNamedKey::BrowserHome => Key::Named(NamedKey::BrowserHome),
|
|
WinitNamedKey::BrowserRefresh => Key::Named(NamedKey::BrowserRefresh),
|
|
WinitNamedKey::BrowserSearch => Key::Named(NamedKey::BrowserSearch),
|
|
WinitNamedKey::BrowserStop => Key::Named(NamedKey::BrowserStop),
|
|
WinitNamedKey::Call => Key::Named(NamedKey::Call),
|
|
WinitNamedKey::Camera => Key::Named(NamedKey::Camera),
|
|
WinitNamedKey::CameraFocus => Key::Named(NamedKey::CameraFocus),
|
|
WinitNamedKey::Cancel => Key::Named(NamedKey::Cancel),
|
|
WinitNamedKey::CapsLock => Key::Named(NamedKey::CapsLock),
|
|
WinitNamedKey::ChannelDown => Key::Named(NamedKey::ChannelDown),
|
|
WinitNamedKey::ChannelUp => Key::Named(NamedKey::ChannelUp),
|
|
WinitNamedKey::Clear => Key::Named(NamedKey::Clear),
|
|
WinitNamedKey::Close => Key::Named(NamedKey::Close),
|
|
WinitNamedKey::ClosedCaptionToggle => Key::Named(NamedKey::ClosedCaptionToggle),
|
|
WinitNamedKey::CodeInput => Key::Named(NamedKey::CodeInput),
|
|
WinitNamedKey::ColorF0Red => Key::Named(NamedKey::ColorF0Red),
|
|
WinitNamedKey::ColorF1Green => Key::Named(NamedKey::ColorF1Green),
|
|
WinitNamedKey::ColorF2Yellow => Key::Named(NamedKey::ColorF2Yellow),
|
|
WinitNamedKey::ColorF3Blue => Key::Named(NamedKey::ColorF3Blue),
|
|
WinitNamedKey::ColorF4Grey => Key::Named(NamedKey::ColorF4Grey),
|
|
WinitNamedKey::ColorF5Brown => Key::Named(NamedKey::ColorF5Brown),
|
|
WinitNamedKey::Compose => Key::Named(NamedKey::Compose),
|
|
WinitNamedKey::ContextMenu => Key::Named(NamedKey::ContextMenu),
|
|
WinitNamedKey::Control => Key::Named(NamedKey::Control),
|
|
WinitNamedKey::Convert => Key::Named(NamedKey::Convert),
|
|
WinitNamedKey::Copy => Key::Named(NamedKey::Copy),
|
|
WinitNamedKey::CrSel => Key::Named(NamedKey::CrSel),
|
|
WinitNamedKey::Cut => Key::Named(NamedKey::Cut),
|
|
WinitNamedKey::DVR => Key::Named(NamedKey::DVR),
|
|
WinitNamedKey::Delete => Key::Named(NamedKey::Delete),
|
|
WinitNamedKey::Dimmer => Key::Named(NamedKey::Dimmer),
|
|
WinitNamedKey::DisplaySwap => Key::Named(NamedKey::DisplaySwap),
|
|
WinitNamedKey::Eisu => Key::Named(NamedKey::Eisu),
|
|
WinitNamedKey::Eject => Key::Named(NamedKey::Eject),
|
|
WinitNamedKey::End => Key::Named(NamedKey::End),
|
|
WinitNamedKey::EndCall => Key::Named(NamedKey::EndCall),
|
|
WinitNamedKey::Enter => Key::Named(NamedKey::Enter),
|
|
WinitNamedKey::EraseEof => Key::Named(NamedKey::EraseEof),
|
|
WinitNamedKey::Escape => Key::Named(NamedKey::Escape),
|
|
WinitNamedKey::ExSel => Key::Named(NamedKey::ExSel),
|
|
WinitNamedKey::Execute => Key::Named(NamedKey::Execute),
|
|
WinitNamedKey::Exit => Key::Named(NamedKey::Exit),
|
|
WinitNamedKey::F1 => Key::Named(NamedKey::F1),
|
|
WinitNamedKey::F10 => Key::Named(NamedKey::F10),
|
|
WinitNamedKey::F11 => Key::Named(NamedKey::F11),
|
|
WinitNamedKey::F12 => Key::Named(NamedKey::F12),
|
|
WinitNamedKey::F13 => Key::Named(NamedKey::F13),
|
|
WinitNamedKey::F14 => Key::Named(NamedKey::F14),
|
|
WinitNamedKey::F15 => Key::Named(NamedKey::F15),
|
|
WinitNamedKey::F16 => Key::Named(NamedKey::F16),
|
|
WinitNamedKey::F17 => Key::Named(NamedKey::F17),
|
|
WinitNamedKey::F18 => Key::Named(NamedKey::F18),
|
|
WinitNamedKey::F19 => Key::Named(NamedKey::F19),
|
|
WinitNamedKey::F2 => Key::Named(NamedKey::F2),
|
|
WinitNamedKey::F20 => Key::Named(NamedKey::F20),
|
|
WinitNamedKey::F21 => Key::Named(NamedKey::F21),
|
|
WinitNamedKey::F22 => Key::Named(NamedKey::F22),
|
|
WinitNamedKey::F23 => Key::Named(NamedKey::F23),
|
|
WinitNamedKey::F24 => Key::Named(NamedKey::F24),
|
|
WinitNamedKey::F25 => Key::Named(NamedKey::F25),
|
|
WinitNamedKey::F26 => Key::Named(NamedKey::F26),
|
|
WinitNamedKey::F27 => Key::Named(NamedKey::F27),
|
|
WinitNamedKey::F28 => Key::Named(NamedKey::F28),
|
|
WinitNamedKey::F29 => Key::Named(NamedKey::F29),
|
|
WinitNamedKey::F3 => Key::Named(NamedKey::F3),
|
|
WinitNamedKey::F30 => Key::Named(NamedKey::F30),
|
|
WinitNamedKey::F31 => Key::Named(NamedKey::F31),
|
|
WinitNamedKey::F32 => Key::Named(NamedKey::F32),
|
|
WinitNamedKey::F33 => Key::Named(NamedKey::F33),
|
|
WinitNamedKey::F34 => Key::Named(NamedKey::F34),
|
|
WinitNamedKey::F35 => Key::Named(NamedKey::F35),
|
|
WinitNamedKey::F4 => Key::Named(NamedKey::F4),
|
|
WinitNamedKey::F5 => Key::Named(NamedKey::F5),
|
|
WinitNamedKey::F6 => Key::Named(NamedKey::F6),
|
|
WinitNamedKey::F7 => Key::Named(NamedKey::F7),
|
|
WinitNamedKey::F8 => Key::Named(NamedKey::F8),
|
|
WinitNamedKey::F9 => Key::Named(NamedKey::F9),
|
|
WinitNamedKey::FavoriteClear0 => Key::Named(NamedKey::FavoriteClear0),
|
|
WinitNamedKey::FavoriteClear1 => Key::Named(NamedKey::FavoriteClear1),
|
|
WinitNamedKey::FavoriteClear2 => Key::Named(NamedKey::FavoriteClear2),
|
|
WinitNamedKey::FavoriteClear3 => Key::Named(NamedKey::FavoriteClear3),
|
|
WinitNamedKey::FavoriteRecall0 => Key::Named(NamedKey::FavoriteRecall0),
|
|
WinitNamedKey::FavoriteRecall1 => Key::Named(NamedKey::FavoriteRecall1),
|
|
WinitNamedKey::FavoriteRecall2 => Key::Named(NamedKey::FavoriteRecall2),
|
|
WinitNamedKey::FavoriteRecall3 => Key::Named(NamedKey::FavoriteRecall3),
|
|
WinitNamedKey::FavoriteStore0 => Key::Named(NamedKey::FavoriteStore0),
|
|
WinitNamedKey::FavoriteStore1 => Key::Named(NamedKey::FavoriteStore1),
|
|
WinitNamedKey::FavoriteStore2 => Key::Named(NamedKey::FavoriteStore2),
|
|
WinitNamedKey::FavoriteStore3 => Key::Named(NamedKey::FavoriteStore3),
|
|
WinitNamedKey::FinalMode => Key::Named(NamedKey::FinalMode),
|
|
WinitNamedKey::Find => Key::Named(NamedKey::Find),
|
|
WinitNamedKey::Fn => Key::Named(NamedKey::Fn),
|
|
WinitNamedKey::FnLock => Key::Named(NamedKey::FnLock),
|
|
WinitNamedKey::GoBack => Key::Named(NamedKey::GoBack),
|
|
WinitNamedKey::GoHome => Key::Named(NamedKey::GoHome),
|
|
WinitNamedKey::GroupFirst => Key::Named(NamedKey::GroupFirst),
|
|
WinitNamedKey::GroupLast => Key::Named(NamedKey::GroupLast),
|
|
WinitNamedKey::GroupNext => Key::Named(NamedKey::GroupNext),
|
|
WinitNamedKey::GroupPrevious => Key::Named(NamedKey::GroupPrevious),
|
|
WinitNamedKey::Guide => Key::Named(NamedKey::Guide),
|
|
WinitNamedKey::GuideNextDay => Key::Named(NamedKey::GuideNextDay),
|
|
WinitNamedKey::GuidePreviousDay => Key::Named(NamedKey::GuidePreviousDay),
|
|
WinitNamedKey::HangulMode => Key::Named(NamedKey::HangulMode),
|
|
WinitNamedKey::HanjaMode => Key::Named(NamedKey::HanjaMode),
|
|
WinitNamedKey::Hankaku => Key::Named(NamedKey::Hankaku),
|
|
WinitNamedKey::HeadsetHook => Key::Named(NamedKey::HeadsetHook),
|
|
WinitNamedKey::Help => Key::Named(NamedKey::Help),
|
|
WinitNamedKey::Hibernate => Key::Named(NamedKey::Hibernate),
|
|
WinitNamedKey::Hiragana => Key::Named(NamedKey::Hiragana),
|
|
WinitNamedKey::HiraganaKatakana => Key::Named(NamedKey::HiraganaKatakana),
|
|
WinitNamedKey::Home => Key::Named(NamedKey::Home),
|
|
WinitNamedKey::Hyper => Key::Named(NamedKey::Hyper),
|
|
WinitNamedKey::Info => Key::Named(NamedKey::Info),
|
|
WinitNamedKey::Insert => Key::Named(NamedKey::Insert),
|
|
WinitNamedKey::InstantReplay => Key::Named(NamedKey::InstantReplay),
|
|
WinitNamedKey::JunjaMode => Key::Named(NamedKey::JunjaMode),
|
|
WinitNamedKey::KanaMode => Key::Named(NamedKey::KanaMode),
|
|
WinitNamedKey::KanjiMode => Key::Named(NamedKey::KanjiMode),
|
|
WinitNamedKey::Katakana => Key::Named(NamedKey::Katakana),
|
|
WinitNamedKey::Key11 => Key::Named(NamedKey::Key11),
|
|
WinitNamedKey::Key12 => Key::Named(NamedKey::Key12),
|
|
WinitNamedKey::LastNumberRedial => Key::Named(NamedKey::LastNumberRedial),
|
|
WinitNamedKey::LaunchApplication1 => Key::Named(NamedKey::LaunchApplication1),
|
|
WinitNamedKey::LaunchApplication2 => Key::Named(NamedKey::LaunchApplication2),
|
|
WinitNamedKey::LaunchCalendar => Key::Named(NamedKey::LaunchCalendar),
|
|
WinitNamedKey::LaunchContacts => Key::Named(NamedKey::LaunchContacts),
|
|
WinitNamedKey::LaunchMail => Key::Named(NamedKey::LaunchMail),
|
|
WinitNamedKey::LaunchMediaPlayer => Key::Named(NamedKey::LaunchMediaPlayer),
|
|
WinitNamedKey::LaunchMusicPlayer => Key::Named(NamedKey::LaunchMusicPlayer),
|
|
WinitNamedKey::LaunchPhone => Key::Named(NamedKey::LaunchPhone),
|
|
WinitNamedKey::LaunchScreenSaver => Key::Named(NamedKey::LaunchScreenSaver),
|
|
WinitNamedKey::LaunchSpreadsheet => Key::Named(NamedKey::LaunchSpreadsheet),
|
|
WinitNamedKey::LaunchWebBrowser => Key::Named(NamedKey::LaunchWebBrowser),
|
|
WinitNamedKey::LaunchWebCam => Key::Named(NamedKey::LaunchWebCam),
|
|
WinitNamedKey::LaunchWordProcessor => Key::Named(NamedKey::LaunchWordProcessor),
|
|
WinitNamedKey::Link => Key::Named(NamedKey::Link),
|
|
WinitNamedKey::ListProgram => Key::Named(NamedKey::ListProgram),
|
|
WinitNamedKey::LiveContent => Key::Named(NamedKey::LiveContent),
|
|
WinitNamedKey::Lock => Key::Named(NamedKey::Lock),
|
|
WinitNamedKey::LogOff => Key::Named(NamedKey::LogOff),
|
|
WinitNamedKey::MailForward => Key::Named(NamedKey::MailForward),
|
|
WinitNamedKey::MailReply => Key::Named(NamedKey::MailReply),
|
|
WinitNamedKey::MailSend => Key::Named(NamedKey::MailSend),
|
|
WinitNamedKey::MannerMode => Key::Named(NamedKey::MannerMode),
|
|
WinitNamedKey::MediaApps => Key::Named(NamedKey::MediaApps),
|
|
WinitNamedKey::MediaAudioTrack => Key::Named(NamedKey::MediaAudioTrack),
|
|
WinitNamedKey::MediaClose => Key::Named(NamedKey::MediaClose),
|
|
WinitNamedKey::MediaFastForward => Key::Named(NamedKey::MediaFastForward),
|
|
WinitNamedKey::MediaLast => Key::Named(NamedKey::MediaLast),
|
|
WinitNamedKey::MediaPause => Key::Named(NamedKey::MediaPause),
|
|
WinitNamedKey::MediaPlay => Key::Named(NamedKey::MediaPlay),
|
|
WinitNamedKey::MediaPlayPause => Key::Named(NamedKey::MediaPlayPause),
|
|
WinitNamedKey::MediaRecord => Key::Named(NamedKey::MediaRecord),
|
|
WinitNamedKey::MediaRewind => Key::Named(NamedKey::MediaRewind),
|
|
WinitNamedKey::MediaSkipBackward => Key::Named(NamedKey::MediaSkipBackward),
|
|
WinitNamedKey::MediaSkipForward => Key::Named(NamedKey::MediaSkipForward),
|
|
WinitNamedKey::MediaStepBackward => Key::Named(NamedKey::MediaStepBackward),
|
|
WinitNamedKey::MediaStepForward => Key::Named(NamedKey::MediaStepForward),
|
|
WinitNamedKey::MediaStop => Key::Named(NamedKey::MediaStop),
|
|
WinitNamedKey::MediaTopMenu => Key::Named(NamedKey::MediaTopMenu),
|
|
WinitNamedKey::MediaTrackNext => Key::Named(NamedKey::MediaTrackNext),
|
|
WinitNamedKey::MediaTrackPrevious => Key::Named(NamedKey::MediaTrackPrevious),
|
|
WinitNamedKey::Meta => Key::Named(NamedKey::Meta),
|
|
WinitNamedKey::MicrophoneToggle => Key::Named(NamedKey::MicrophoneToggle),
|
|
WinitNamedKey::MicrophoneVolumeDown => Key::Named(NamedKey::MicrophoneVolumeDown),
|
|
WinitNamedKey::MicrophoneVolumeMute => Key::Named(NamedKey::MicrophoneVolumeMute),
|
|
WinitNamedKey::MicrophoneVolumeUp => Key::Named(NamedKey::MicrophoneVolumeUp),
|
|
WinitNamedKey::ModeChange => Key::Named(NamedKey::ModeChange),
|
|
WinitNamedKey::NavigateIn => Key::Named(NamedKey::NavigateIn),
|
|
WinitNamedKey::NavigateNext => Key::Named(NamedKey::NavigateNext),
|
|
WinitNamedKey::NavigateOut => Key::Named(NamedKey::NavigateOut),
|
|
WinitNamedKey::NavigatePrevious => Key::Named(NamedKey::NavigatePrevious),
|
|
WinitNamedKey::New => Key::Named(NamedKey::New),
|
|
WinitNamedKey::NextCandidate => Key::Named(NamedKey::NextCandidate),
|
|
WinitNamedKey::NextFavoriteChannel => Key::Named(NamedKey::NextFavoriteChannel),
|
|
WinitNamedKey::NextUserProfile => Key::Named(NamedKey::NextUserProfile),
|
|
WinitNamedKey::NonConvert => Key::Named(NamedKey::NonConvert),
|
|
WinitNamedKey::Notification => Key::Named(NamedKey::Notification),
|
|
WinitNamedKey::NumLock => Key::Named(NamedKey::NumLock),
|
|
WinitNamedKey::OnDemand => Key::Named(NamedKey::OnDemand),
|
|
WinitNamedKey::Open => Key::Named(NamedKey::Open),
|
|
WinitNamedKey::PageDown => Key::Named(NamedKey::PageDown),
|
|
WinitNamedKey::PageUp => Key::Named(NamedKey::PageUp),
|
|
WinitNamedKey::Pairing => Key::Named(NamedKey::Pairing),
|
|
WinitNamedKey::Paste => Key::Named(NamedKey::Paste),
|
|
WinitNamedKey::Pause => Key::Named(NamedKey::Pause),
|
|
WinitNamedKey::PinPDown => Key::Named(NamedKey::PinPDown),
|
|
WinitNamedKey::PinPMove => Key::Named(NamedKey::PinPMove),
|
|
WinitNamedKey::PinPToggle => Key::Named(NamedKey::PinPToggle),
|
|
WinitNamedKey::PinPUp => Key::Named(NamedKey::PinPUp),
|
|
WinitNamedKey::Play => Key::Named(NamedKey::Play),
|
|
WinitNamedKey::PlaySpeedDown => Key::Named(NamedKey::PlaySpeedDown),
|
|
WinitNamedKey::PlaySpeedReset => Key::Named(NamedKey::PlaySpeedReset),
|
|
WinitNamedKey::PlaySpeedUp => Key::Named(NamedKey::PlaySpeedUp),
|
|
WinitNamedKey::Power => Key::Named(NamedKey::Power),
|
|
WinitNamedKey::PowerOff => Key::Named(NamedKey::PowerOff),
|
|
WinitNamedKey::PreviousCandidate => Key::Named(NamedKey::PreviousCandidate),
|
|
WinitNamedKey::Print => Key::Named(NamedKey::Print),
|
|
WinitNamedKey::PrintScreen => Key::Named(NamedKey::PrintScreen),
|
|
WinitNamedKey::Process => Key::Named(NamedKey::Process),
|
|
WinitNamedKey::Props => Key::Named(NamedKey::Props),
|
|
WinitNamedKey::RandomToggle => Key::Named(NamedKey::RandomToggle),
|
|
WinitNamedKey::RcLowBattery => Key::Named(NamedKey::RcLowBattery),
|
|
WinitNamedKey::RecordSpeedNext => Key::Named(NamedKey::RecordSpeedNext),
|
|
WinitNamedKey::Redo => Key::Named(NamedKey::Redo),
|
|
WinitNamedKey::RfBypass => Key::Named(NamedKey::RfBypass),
|
|
WinitNamedKey::Romaji => Key::Named(NamedKey::Romaji),
|
|
WinitNamedKey::STBInput => Key::Named(NamedKey::STBInput),
|
|
WinitNamedKey::STBPower => Key::Named(NamedKey::STBPower),
|
|
WinitNamedKey::Save => Key::Named(NamedKey::Save),
|
|
WinitNamedKey::ScanChannelsToggle => Key::Named(NamedKey::ScanChannelsToggle),
|
|
WinitNamedKey::ScreenModeNext => Key::Named(NamedKey::ScreenModeNext),
|
|
WinitNamedKey::ScrollLock => Key::Named(NamedKey::ScrollLock),
|
|
WinitNamedKey::Select => Key::Named(NamedKey::Select),
|
|
WinitNamedKey::Settings => Key::Named(NamedKey::Settings),
|
|
WinitNamedKey::Shift => Key::Named(NamedKey::Shift),
|
|
WinitNamedKey::SingleCandidate => Key::Named(NamedKey::SingleCandidate),
|
|
WinitNamedKey::Soft1 => Key::Named(NamedKey::Soft1),
|
|
WinitNamedKey::Soft2 => Key::Named(NamedKey::Soft2),
|
|
WinitNamedKey::Soft3 => Key::Named(NamedKey::Soft3),
|
|
WinitNamedKey::Soft4 => Key::Named(NamedKey::Soft4),
|
|
WinitNamedKey::Space => Key::Character(" ".to_string()),
|
|
WinitNamedKey::SpeechCorrectionList => Key::Named(NamedKey::SpeechCorrectionList),
|
|
WinitNamedKey::SpeechInputToggle => Key::Named(NamedKey::SpeechInputToggle),
|
|
WinitNamedKey::SpellCheck => Key::Named(NamedKey::SpellCheck),
|
|
WinitNamedKey::SplitScreenToggle => Key::Named(NamedKey::SplitScreenToggle),
|
|
WinitNamedKey::Standby => Key::Named(NamedKey::Standby),
|
|
WinitNamedKey::Subtitle => Key::Named(NamedKey::Subtitle),
|
|
WinitNamedKey::Super => Key::Named(NamedKey::Super),
|
|
WinitNamedKey::Symbol => Key::Named(NamedKey::Symbol),
|
|
WinitNamedKey::SymbolLock => Key::Named(NamedKey::SymbolLock),
|
|
WinitNamedKey::TV => Key::Named(NamedKey::TV),
|
|
WinitNamedKey::TV3DMode => Key::Named(NamedKey::TV3DMode),
|
|
WinitNamedKey::TVAntennaCable => Key::Named(NamedKey::TVAntennaCable),
|
|
WinitNamedKey::TVAudioDescription => Key::Named(NamedKey::TVAudioDescription),
|
|
WinitNamedKey::TVAudioDescriptionMixDown => {
|
|
Key::Named(NamedKey::TVAudioDescriptionMixDown)
|
|
},
|
|
WinitNamedKey::TVAudioDescriptionMixUp => Key::Named(NamedKey::TVAudioDescriptionMixUp),
|
|
WinitNamedKey::TVContentsMenu => Key::Named(NamedKey::TVContentsMenu),
|
|
WinitNamedKey::TVDataService => Key::Named(NamedKey::TVDataService),
|
|
WinitNamedKey::TVInput => Key::Named(NamedKey::TVInput),
|
|
WinitNamedKey::TVInputComponent1 => Key::Named(NamedKey::TVInputComponent1),
|
|
WinitNamedKey::TVInputComponent2 => Key::Named(NamedKey::TVInputComponent2),
|
|
WinitNamedKey::TVInputComposite1 => Key::Named(NamedKey::TVInputComposite1),
|
|
WinitNamedKey::TVInputComposite2 => Key::Named(NamedKey::TVInputComposite2),
|
|
WinitNamedKey::TVInputHDMI1 => Key::Named(NamedKey::TVInputHDMI1),
|
|
WinitNamedKey::TVInputHDMI2 => Key::Named(NamedKey::TVInputHDMI2),
|
|
WinitNamedKey::TVInputHDMI3 => Key::Named(NamedKey::TVInputHDMI3),
|
|
WinitNamedKey::TVInputHDMI4 => Key::Named(NamedKey::TVInputHDMI4),
|
|
WinitNamedKey::TVInputVGA1 => Key::Named(NamedKey::TVInputVGA1),
|
|
WinitNamedKey::TVMediaContext => Key::Named(NamedKey::TVMediaContext),
|
|
WinitNamedKey::TVNetwork => Key::Named(NamedKey::TVNetwork),
|
|
WinitNamedKey::TVNumberEntry => Key::Named(NamedKey::TVNumberEntry),
|
|
WinitNamedKey::TVPower => Key::Named(NamedKey::TVPower),
|
|
WinitNamedKey::TVRadioService => Key::Named(NamedKey::TVRadioService),
|
|
WinitNamedKey::TVSatellite => Key::Named(NamedKey::TVSatellite),
|
|
WinitNamedKey::TVSatelliteBS => Key::Named(NamedKey::TVSatelliteBS),
|
|
WinitNamedKey::TVSatelliteCS => Key::Named(NamedKey::TVSatelliteCS),
|
|
WinitNamedKey::TVSatelliteToggle => Key::Named(NamedKey::TVSatelliteToggle),
|
|
WinitNamedKey::TVTerrestrialAnalog => Key::Named(NamedKey::TVTerrestrialAnalog),
|
|
WinitNamedKey::TVTerrestrialDigital => Key::Named(NamedKey::TVTerrestrialDigital),
|
|
WinitNamedKey::TVTimer => Key::Named(NamedKey::TVTimer),
|
|
WinitNamedKey::Tab => Key::Named(NamedKey::Tab),
|
|
WinitNamedKey::Teletext => Key::Named(NamedKey::Teletext),
|
|
WinitNamedKey::Undo => Key::Named(NamedKey::Undo),
|
|
WinitNamedKey::VideoModeNext => Key::Named(NamedKey::VideoModeNext),
|
|
WinitNamedKey::VoiceDial => Key::Named(NamedKey::VoiceDial),
|
|
WinitNamedKey::WakeUp => Key::Named(NamedKey::WakeUp),
|
|
WinitNamedKey::Wink => Key::Named(NamedKey::Wink),
|
|
WinitNamedKey::Zenkaku => Key::Named(NamedKey::Zenkaku),
|
|
WinitNamedKey::ZenkakuHankaku => Key::Named(NamedKey::ZenkakuHankaku),
|
|
WinitNamedKey::ZoomIn => Key::Named(NamedKey::ZoomIn),
|
|
WinitNamedKey::ZoomOut => Key::Named(NamedKey::ZoomOut),
|
|
WinitNamedKey::ZoomToggle => Key::Named(NamedKey::ZoomToggle),
|
|
_ => Key::Named(NamedKey::Unidentified),
|
|
}
|
|
}
|
|
}
|
|
|
|
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,
|
|
}
|
|
}
|
|
}
|
|
|
|
#[allow(deprecated)]
|
|
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::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,
|
|
KeyCode::Digit4 => Code::Digit4,
|
|
KeyCode::Digit5 => Code::Digit5,
|
|
KeyCode::Digit6 => Code::Digit6,
|
|
KeyCode::Digit7 => Code::Digit7,
|
|
KeyCode::Digit8 => Code::Digit8,
|
|
KeyCode::Digit9 => Code::Digit9,
|
|
KeyCode::Eject => Code::Eject,
|
|
KeyCode::End => Code::End,
|
|
KeyCode::Enter => Code::Enter,
|
|
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::Find => Code::Find,
|
|
KeyCode::Fn => Code::Fn,
|
|
KeyCode::FnLock => Code::FnLock,
|
|
KeyCode::Help => Code::Help,
|
|
KeyCode::Hiragana => Code::Hiragana,
|
|
KeyCode::Home => Code::Home,
|
|
KeyCode::Hyper => Code::Hyper,
|
|
KeyCode::Insert => Code::Insert,
|
|
KeyCode::IntlBackslash => Code::IntlBackslash,
|
|
KeyCode::IntlRo => Code::IntlRo,
|
|
KeyCode::IntlYen => Code::IntlYen,
|
|
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::NumLock => Code::NumLock,
|
|
KeyCode::Numpad0 => Code::Numpad0,
|
|
KeyCode::Numpad1 => Code::Numpad1,
|
|
KeyCode::Numpad2 => Code::Numpad2,
|
|
KeyCode::Numpad3 => Code::Numpad3,
|
|
KeyCode::Numpad4 => Code::Numpad4,
|
|
KeyCode::Numpad5 => Code::Numpad5,
|
|
KeyCode::Numpad6 => Code::Numpad6,
|
|
KeyCode::Numpad7 => Code::Numpad7,
|
|
KeyCode::Numpad8 => Code::Numpad8,
|
|
KeyCode::Numpad9 => Code::Numpad9,
|
|
KeyCode::NumpadAdd => Code::NumpadAdd,
|
|
KeyCode::NumpadBackspace => Code::NumpadBackspace,
|
|
KeyCode::NumpadClear => Code::NumpadClear,
|
|
KeyCode::NumpadClearEntry => Code::NumpadClearEntry,
|
|
KeyCode::NumpadComma => Code::NumpadComma,
|
|
KeyCode::NumpadDecimal => Code::NumpadDecimal,
|
|
KeyCode::NumpadDivide => Code::NumpadDivide,
|
|
KeyCode::NumpadEnter => Code::NumpadEnter,
|
|
KeyCode::NumpadEqual => Code::NumpadEqual,
|
|
KeyCode::NumpadHash => Code::NumpadHash,
|
|
KeyCode::NumpadMemoryAdd => Code::NumpadMemoryAdd,
|
|
KeyCode::NumpadMemoryClear => Code::NumpadMemoryClear,
|
|
KeyCode::NumpadMemoryRecall => Code::NumpadMemoryRecall,
|
|
KeyCode::NumpadMemoryStore => Code::NumpadMemoryStore,
|
|
KeyCode::NumpadMemorySubtract => Code::NumpadMemorySubtract,
|
|
KeyCode::NumpadMultiply => Code::NumpadMultiply,
|
|
KeyCode::NumpadParenLeft => Code::NumpadParenLeft,
|
|
KeyCode::NumpadParenRight => Code::NumpadParenRight,
|
|
KeyCode::NumpadStar => Code::NumpadStar,
|
|
KeyCode::NumpadSubtract => Code::NumpadSubtract,
|
|
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::WakeUp => Code::WakeUp,
|
|
_ => Code::Unidentified,
|
|
}
|
|
}
|
|
}
|
|
|
|
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());
|
|
modifiers.set(Modifiers::ALT, mods.alt_key());
|
|
modifiers.set(Modifiers::META, mods.super_key());
|
|
modifiers
|
|
}
|
|
|
|
pub fn keyboard_event_from_winit(key_event: &KeyEvent, state: ModifiersState) -> KeyboardEvent {
|
|
KeyboardEvent::new_without_event(
|
|
KeyState::from_winit_key_event(key_event),
|
|
Key::from_winit_key_event(key_event),
|
|
Code::from_winit_key_event(key_event),
|
|
Location::from_winit_key_event(key_event),
|
|
keyboard_modifiers_from_winit_modifiers(state),
|
|
false,
|
|
false,
|
|
)
|
|
}
|