Rewild Your Web
web browser dweb
at main 589 lines 35 kB view raw
1/* This Source Code Form is subject to the terms of the Mozilla Public 2 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * file, You can obtain one at https://mozilla.org/MPL/2.0/. */ 4 5use keyboard_types::{Code, Key, KeyState, Location, Modifiers, NamedKey}; 6use servo::KeyboardEvent; 7use winit::event::{ElementState, KeyEvent}; 8use winit::keyboard::{ 9 Key as WinitKey, KeyCode, KeyLocation as WinitKeyLocation, ModifiersState, 10 NamedKey as WinitNamedKey, PhysicalKey, 11}; 12 13trait FromWinitKeyEvent { 14 fn from_winit_key_event(key_event: &KeyEvent) -> Self; 15} 16 17#[allow(deprecated)] 18impl FromWinitKeyEvent for Key { 19 fn from_winit_key_event(key_event: &KeyEvent) -> Self { 20 let named_key = match key_event.logical_key { 21 WinitKey::Named(named_key) => named_key, 22 WinitKey::Character(ref string) => return Key::Character(string.to_string()), 23 WinitKey::Unidentified(_) | WinitKey::Dead(_) => { 24 return Key::Named(NamedKey::Unidentified); 25 }, 26 }; 27 28 match named_key { 29 WinitNamedKey::AVRInput => Key::Named(NamedKey::AVRInput), 30 WinitNamedKey::AVRPower => Key::Named(NamedKey::AVRPower), 31 WinitNamedKey::Accept => Key::Named(NamedKey::Accept), 32 WinitNamedKey::Again => Key::Named(NamedKey::Again), 33 WinitNamedKey::AllCandidates => Key::Named(NamedKey::AllCandidates), 34 WinitNamedKey::Alphanumeric => Key::Named(NamedKey::Alphanumeric), 35 WinitNamedKey::Alt => Key::Named(NamedKey::Alt), 36 WinitNamedKey::AltGraph => Key::Named(NamedKey::AltGraph), 37 WinitNamedKey::AppSwitch => Key::Named(NamedKey::AppSwitch), 38 WinitNamedKey::ArrowDown => Key::Named(NamedKey::ArrowDown), 39 WinitNamedKey::ArrowLeft => Key::Named(NamedKey::ArrowLeft), 40 WinitNamedKey::ArrowRight => Key::Named(NamedKey::ArrowRight), 41 WinitNamedKey::ArrowUp => Key::Named(NamedKey::ArrowUp), 42 WinitNamedKey::Attn => Key::Named(NamedKey::Attn), 43 WinitNamedKey::AudioBalanceLeft => Key::Named(NamedKey::AudioBalanceLeft), 44 WinitNamedKey::AudioBalanceRight => Key::Named(NamedKey::AudioBalanceRight), 45 WinitNamedKey::AudioBassBoostDown => Key::Named(NamedKey::AudioBassBoostDown), 46 WinitNamedKey::AudioBassBoostToggle => Key::Named(NamedKey::AudioBassBoostToggle), 47 WinitNamedKey::AudioBassBoostUp => Key::Named(NamedKey::AudioBassBoostUp), 48 WinitNamedKey::AudioFaderFront => Key::Named(NamedKey::AudioFaderFront), 49 WinitNamedKey::AudioFaderRear => Key::Named(NamedKey::AudioFaderRear), 50 WinitNamedKey::AudioSurroundModeNext => Key::Named(NamedKey::AudioSurroundModeNext), 51 WinitNamedKey::AudioTrebleDown => Key::Named(NamedKey::AudioTrebleDown), 52 WinitNamedKey::AudioTrebleUp => Key::Named(NamedKey::AudioTrebleUp), 53 WinitNamedKey::AudioVolumeDown => Key::Named(NamedKey::AudioVolumeDown), 54 WinitNamedKey::AudioVolumeMute => Key::Named(NamedKey::AudioVolumeMute), 55 WinitNamedKey::AudioVolumeUp => Key::Named(NamedKey::AudioVolumeUp), 56 WinitNamedKey::Backspace => Key::Named(NamedKey::Backspace), 57 WinitNamedKey::BrightnessDown => Key::Named(NamedKey::BrightnessDown), 58 WinitNamedKey::BrightnessUp => Key::Named(NamedKey::BrightnessUp), 59 WinitNamedKey::BrowserBack => Key::Named(NamedKey::BrowserBack), 60 WinitNamedKey::BrowserFavorites => Key::Named(NamedKey::BrowserFavorites), 61 WinitNamedKey::BrowserForward => Key::Named(NamedKey::BrowserForward), 62 WinitNamedKey::BrowserHome => Key::Named(NamedKey::BrowserHome), 63 WinitNamedKey::BrowserRefresh => Key::Named(NamedKey::BrowserRefresh), 64 WinitNamedKey::BrowserSearch => Key::Named(NamedKey::BrowserSearch), 65 WinitNamedKey::BrowserStop => Key::Named(NamedKey::BrowserStop), 66 WinitNamedKey::Call => Key::Named(NamedKey::Call), 67 WinitNamedKey::Camera => Key::Named(NamedKey::Camera), 68 WinitNamedKey::CameraFocus => Key::Named(NamedKey::CameraFocus), 69 WinitNamedKey::Cancel => Key::Named(NamedKey::Cancel), 70 WinitNamedKey::CapsLock => Key::Named(NamedKey::CapsLock), 71 WinitNamedKey::ChannelDown => Key::Named(NamedKey::ChannelDown), 72 WinitNamedKey::ChannelUp => Key::Named(NamedKey::ChannelUp), 73 WinitNamedKey::Clear => Key::Named(NamedKey::Clear), 74 WinitNamedKey::Close => Key::Named(NamedKey::Close), 75 WinitNamedKey::ClosedCaptionToggle => Key::Named(NamedKey::ClosedCaptionToggle), 76 WinitNamedKey::CodeInput => Key::Named(NamedKey::CodeInput), 77 WinitNamedKey::ColorF0Red => Key::Named(NamedKey::ColorF0Red), 78 WinitNamedKey::ColorF1Green => Key::Named(NamedKey::ColorF1Green), 79 WinitNamedKey::ColorF2Yellow => Key::Named(NamedKey::ColorF2Yellow), 80 WinitNamedKey::ColorF3Blue => Key::Named(NamedKey::ColorF3Blue), 81 WinitNamedKey::ColorF4Grey => Key::Named(NamedKey::ColorF4Grey), 82 WinitNamedKey::ColorF5Brown => Key::Named(NamedKey::ColorF5Brown), 83 WinitNamedKey::Compose => Key::Named(NamedKey::Compose), 84 WinitNamedKey::ContextMenu => Key::Named(NamedKey::ContextMenu), 85 WinitNamedKey::Control => Key::Named(NamedKey::Control), 86 WinitNamedKey::Convert => Key::Named(NamedKey::Convert), 87 WinitNamedKey::Copy => Key::Named(NamedKey::Copy), 88 WinitNamedKey::CrSel => Key::Named(NamedKey::CrSel), 89 WinitNamedKey::Cut => Key::Named(NamedKey::Cut), 90 WinitNamedKey::DVR => Key::Named(NamedKey::DVR), 91 WinitNamedKey::Delete => Key::Named(NamedKey::Delete), 92 WinitNamedKey::Dimmer => Key::Named(NamedKey::Dimmer), 93 WinitNamedKey::DisplaySwap => Key::Named(NamedKey::DisplaySwap), 94 WinitNamedKey::Eisu => Key::Named(NamedKey::Eisu), 95 WinitNamedKey::Eject => Key::Named(NamedKey::Eject), 96 WinitNamedKey::End => Key::Named(NamedKey::End), 97 WinitNamedKey::EndCall => Key::Named(NamedKey::EndCall), 98 WinitNamedKey::Enter => Key::Named(NamedKey::Enter), 99 WinitNamedKey::EraseEof => Key::Named(NamedKey::EraseEof), 100 WinitNamedKey::Escape => Key::Named(NamedKey::Escape), 101 WinitNamedKey::ExSel => Key::Named(NamedKey::ExSel), 102 WinitNamedKey::Execute => Key::Named(NamedKey::Execute), 103 WinitNamedKey::Exit => Key::Named(NamedKey::Exit), 104 WinitNamedKey::F1 => Key::Named(NamedKey::F1), 105 WinitNamedKey::F10 => Key::Named(NamedKey::F10), 106 WinitNamedKey::F11 => Key::Named(NamedKey::F11), 107 WinitNamedKey::F12 => Key::Named(NamedKey::F12), 108 WinitNamedKey::F13 => Key::Named(NamedKey::F13), 109 WinitNamedKey::F14 => Key::Named(NamedKey::F14), 110 WinitNamedKey::F15 => Key::Named(NamedKey::F15), 111 WinitNamedKey::F16 => Key::Named(NamedKey::F16), 112 WinitNamedKey::F17 => Key::Named(NamedKey::F17), 113 WinitNamedKey::F18 => Key::Named(NamedKey::F18), 114 WinitNamedKey::F19 => Key::Named(NamedKey::F19), 115 WinitNamedKey::F2 => Key::Named(NamedKey::F2), 116 WinitNamedKey::F20 => Key::Named(NamedKey::F20), 117 WinitNamedKey::F21 => Key::Named(NamedKey::F21), 118 WinitNamedKey::F22 => Key::Named(NamedKey::F22), 119 WinitNamedKey::F23 => Key::Named(NamedKey::F23), 120 WinitNamedKey::F24 => Key::Named(NamedKey::F24), 121 WinitNamedKey::F25 => Key::Named(NamedKey::F25), 122 WinitNamedKey::F26 => Key::Named(NamedKey::F26), 123 WinitNamedKey::F27 => Key::Named(NamedKey::F27), 124 WinitNamedKey::F28 => Key::Named(NamedKey::F28), 125 WinitNamedKey::F29 => Key::Named(NamedKey::F29), 126 WinitNamedKey::F3 => Key::Named(NamedKey::F3), 127 WinitNamedKey::F30 => Key::Named(NamedKey::F30), 128 WinitNamedKey::F31 => Key::Named(NamedKey::F31), 129 WinitNamedKey::F32 => Key::Named(NamedKey::F32), 130 WinitNamedKey::F33 => Key::Named(NamedKey::F33), 131 WinitNamedKey::F34 => Key::Named(NamedKey::F34), 132 WinitNamedKey::F35 => Key::Named(NamedKey::F35), 133 WinitNamedKey::F4 => Key::Named(NamedKey::F4), 134 WinitNamedKey::F5 => Key::Named(NamedKey::F5), 135 WinitNamedKey::F6 => Key::Named(NamedKey::F6), 136 WinitNamedKey::F7 => Key::Named(NamedKey::F7), 137 WinitNamedKey::F8 => Key::Named(NamedKey::F8), 138 WinitNamedKey::F9 => Key::Named(NamedKey::F9), 139 WinitNamedKey::FavoriteClear0 => Key::Named(NamedKey::FavoriteClear0), 140 WinitNamedKey::FavoriteClear1 => Key::Named(NamedKey::FavoriteClear1), 141 WinitNamedKey::FavoriteClear2 => Key::Named(NamedKey::FavoriteClear2), 142 WinitNamedKey::FavoriteClear3 => Key::Named(NamedKey::FavoriteClear3), 143 WinitNamedKey::FavoriteRecall0 => Key::Named(NamedKey::FavoriteRecall0), 144 WinitNamedKey::FavoriteRecall1 => Key::Named(NamedKey::FavoriteRecall1), 145 WinitNamedKey::FavoriteRecall2 => Key::Named(NamedKey::FavoriteRecall2), 146 WinitNamedKey::FavoriteRecall3 => Key::Named(NamedKey::FavoriteRecall3), 147 WinitNamedKey::FavoriteStore0 => Key::Named(NamedKey::FavoriteStore0), 148 WinitNamedKey::FavoriteStore1 => Key::Named(NamedKey::FavoriteStore1), 149 WinitNamedKey::FavoriteStore2 => Key::Named(NamedKey::FavoriteStore2), 150 WinitNamedKey::FavoriteStore3 => Key::Named(NamedKey::FavoriteStore3), 151 WinitNamedKey::FinalMode => Key::Named(NamedKey::FinalMode), 152 WinitNamedKey::Find => Key::Named(NamedKey::Find), 153 WinitNamedKey::Fn => Key::Named(NamedKey::Fn), 154 WinitNamedKey::FnLock => Key::Named(NamedKey::FnLock), 155 WinitNamedKey::GoBack => Key::Named(NamedKey::GoBack), 156 WinitNamedKey::GoHome => Key::Named(NamedKey::GoHome), 157 WinitNamedKey::GroupFirst => Key::Named(NamedKey::GroupFirst), 158 WinitNamedKey::GroupLast => Key::Named(NamedKey::GroupLast), 159 WinitNamedKey::GroupNext => Key::Named(NamedKey::GroupNext), 160 WinitNamedKey::GroupPrevious => Key::Named(NamedKey::GroupPrevious), 161 WinitNamedKey::Guide => Key::Named(NamedKey::Guide), 162 WinitNamedKey::GuideNextDay => Key::Named(NamedKey::GuideNextDay), 163 WinitNamedKey::GuidePreviousDay => Key::Named(NamedKey::GuidePreviousDay), 164 WinitNamedKey::HangulMode => Key::Named(NamedKey::HangulMode), 165 WinitNamedKey::HanjaMode => Key::Named(NamedKey::HanjaMode), 166 WinitNamedKey::Hankaku => Key::Named(NamedKey::Hankaku), 167 WinitNamedKey::HeadsetHook => Key::Named(NamedKey::HeadsetHook), 168 WinitNamedKey::Help => Key::Named(NamedKey::Help), 169 WinitNamedKey::Hibernate => Key::Named(NamedKey::Hibernate), 170 WinitNamedKey::Hiragana => Key::Named(NamedKey::Hiragana), 171 WinitNamedKey::HiraganaKatakana => Key::Named(NamedKey::HiraganaKatakana), 172 WinitNamedKey::Home => Key::Named(NamedKey::Home), 173 WinitNamedKey::Hyper => Key::Named(NamedKey::Hyper), 174 WinitNamedKey::Info => Key::Named(NamedKey::Info), 175 WinitNamedKey::Insert => Key::Named(NamedKey::Insert), 176 WinitNamedKey::InstantReplay => Key::Named(NamedKey::InstantReplay), 177 WinitNamedKey::JunjaMode => Key::Named(NamedKey::JunjaMode), 178 WinitNamedKey::KanaMode => Key::Named(NamedKey::KanaMode), 179 WinitNamedKey::KanjiMode => Key::Named(NamedKey::KanjiMode), 180 WinitNamedKey::Katakana => Key::Named(NamedKey::Katakana), 181 WinitNamedKey::Key11 => Key::Named(NamedKey::Key11), 182 WinitNamedKey::Key12 => Key::Named(NamedKey::Key12), 183 WinitNamedKey::LastNumberRedial => Key::Named(NamedKey::LastNumberRedial), 184 WinitNamedKey::LaunchApplication1 => Key::Named(NamedKey::LaunchApplication1), 185 WinitNamedKey::LaunchApplication2 => Key::Named(NamedKey::LaunchApplication2), 186 WinitNamedKey::LaunchCalendar => Key::Named(NamedKey::LaunchCalendar), 187 WinitNamedKey::LaunchContacts => Key::Named(NamedKey::LaunchContacts), 188 WinitNamedKey::LaunchMail => Key::Named(NamedKey::LaunchMail), 189 WinitNamedKey::LaunchMediaPlayer => Key::Named(NamedKey::LaunchMediaPlayer), 190 WinitNamedKey::LaunchMusicPlayer => Key::Named(NamedKey::LaunchMusicPlayer), 191 WinitNamedKey::LaunchPhone => Key::Named(NamedKey::LaunchPhone), 192 WinitNamedKey::LaunchScreenSaver => Key::Named(NamedKey::LaunchScreenSaver), 193 WinitNamedKey::LaunchSpreadsheet => Key::Named(NamedKey::LaunchSpreadsheet), 194 WinitNamedKey::LaunchWebBrowser => Key::Named(NamedKey::LaunchWebBrowser), 195 WinitNamedKey::LaunchWebCam => Key::Named(NamedKey::LaunchWebCam), 196 WinitNamedKey::LaunchWordProcessor => Key::Named(NamedKey::LaunchWordProcessor), 197 WinitNamedKey::Link => Key::Named(NamedKey::Link), 198 WinitNamedKey::ListProgram => Key::Named(NamedKey::ListProgram), 199 WinitNamedKey::LiveContent => Key::Named(NamedKey::LiveContent), 200 WinitNamedKey::Lock => Key::Named(NamedKey::Lock), 201 WinitNamedKey::LogOff => Key::Named(NamedKey::LogOff), 202 WinitNamedKey::MailForward => Key::Named(NamedKey::MailForward), 203 WinitNamedKey::MailReply => Key::Named(NamedKey::MailReply), 204 WinitNamedKey::MailSend => Key::Named(NamedKey::MailSend), 205 WinitNamedKey::MannerMode => Key::Named(NamedKey::MannerMode), 206 WinitNamedKey::MediaApps => Key::Named(NamedKey::MediaApps), 207 WinitNamedKey::MediaAudioTrack => Key::Named(NamedKey::MediaAudioTrack), 208 WinitNamedKey::MediaClose => Key::Named(NamedKey::MediaClose), 209 WinitNamedKey::MediaFastForward => Key::Named(NamedKey::MediaFastForward), 210 WinitNamedKey::MediaLast => Key::Named(NamedKey::MediaLast), 211 WinitNamedKey::MediaPause => Key::Named(NamedKey::MediaPause), 212 WinitNamedKey::MediaPlay => Key::Named(NamedKey::MediaPlay), 213 WinitNamedKey::MediaPlayPause => Key::Named(NamedKey::MediaPlayPause), 214 WinitNamedKey::MediaRecord => Key::Named(NamedKey::MediaRecord), 215 WinitNamedKey::MediaRewind => Key::Named(NamedKey::MediaRewind), 216 WinitNamedKey::MediaSkipBackward => Key::Named(NamedKey::MediaSkipBackward), 217 WinitNamedKey::MediaSkipForward => Key::Named(NamedKey::MediaSkipForward), 218 WinitNamedKey::MediaStepBackward => Key::Named(NamedKey::MediaStepBackward), 219 WinitNamedKey::MediaStepForward => Key::Named(NamedKey::MediaStepForward), 220 WinitNamedKey::MediaStop => Key::Named(NamedKey::MediaStop), 221 WinitNamedKey::MediaTopMenu => Key::Named(NamedKey::MediaTopMenu), 222 WinitNamedKey::MediaTrackNext => Key::Named(NamedKey::MediaTrackNext), 223 WinitNamedKey::MediaTrackPrevious => Key::Named(NamedKey::MediaTrackPrevious), 224 WinitNamedKey::Meta => Key::Named(NamedKey::Meta), 225 WinitNamedKey::MicrophoneToggle => Key::Named(NamedKey::MicrophoneToggle), 226 WinitNamedKey::MicrophoneVolumeDown => Key::Named(NamedKey::MicrophoneVolumeDown), 227 WinitNamedKey::MicrophoneVolumeMute => Key::Named(NamedKey::MicrophoneVolumeMute), 228 WinitNamedKey::MicrophoneVolumeUp => Key::Named(NamedKey::MicrophoneVolumeUp), 229 WinitNamedKey::ModeChange => Key::Named(NamedKey::ModeChange), 230 WinitNamedKey::NavigateIn => Key::Named(NamedKey::NavigateIn), 231 WinitNamedKey::NavigateNext => Key::Named(NamedKey::NavigateNext), 232 WinitNamedKey::NavigateOut => Key::Named(NamedKey::NavigateOut), 233 WinitNamedKey::NavigatePrevious => Key::Named(NamedKey::NavigatePrevious), 234 WinitNamedKey::New => Key::Named(NamedKey::New), 235 WinitNamedKey::NextCandidate => Key::Named(NamedKey::NextCandidate), 236 WinitNamedKey::NextFavoriteChannel => Key::Named(NamedKey::NextFavoriteChannel), 237 WinitNamedKey::NextUserProfile => Key::Named(NamedKey::NextUserProfile), 238 WinitNamedKey::NonConvert => Key::Named(NamedKey::NonConvert), 239 WinitNamedKey::Notification => Key::Named(NamedKey::Notification), 240 WinitNamedKey::NumLock => Key::Named(NamedKey::NumLock), 241 WinitNamedKey::OnDemand => Key::Named(NamedKey::OnDemand), 242 WinitNamedKey::Open => Key::Named(NamedKey::Open), 243 WinitNamedKey::PageDown => Key::Named(NamedKey::PageDown), 244 WinitNamedKey::PageUp => Key::Named(NamedKey::PageUp), 245 WinitNamedKey::Pairing => Key::Named(NamedKey::Pairing), 246 WinitNamedKey::Paste => Key::Named(NamedKey::Paste), 247 WinitNamedKey::Pause => Key::Named(NamedKey::Pause), 248 WinitNamedKey::PinPDown => Key::Named(NamedKey::PinPDown), 249 WinitNamedKey::PinPMove => Key::Named(NamedKey::PinPMove), 250 WinitNamedKey::PinPToggle => Key::Named(NamedKey::PinPToggle), 251 WinitNamedKey::PinPUp => Key::Named(NamedKey::PinPUp), 252 WinitNamedKey::Play => Key::Named(NamedKey::Play), 253 WinitNamedKey::PlaySpeedDown => Key::Named(NamedKey::PlaySpeedDown), 254 WinitNamedKey::PlaySpeedReset => Key::Named(NamedKey::PlaySpeedReset), 255 WinitNamedKey::PlaySpeedUp => Key::Named(NamedKey::PlaySpeedUp), 256 WinitNamedKey::Power => Key::Named(NamedKey::Power), 257 WinitNamedKey::PowerOff => Key::Named(NamedKey::PowerOff), 258 WinitNamedKey::PreviousCandidate => Key::Named(NamedKey::PreviousCandidate), 259 WinitNamedKey::Print => Key::Named(NamedKey::Print), 260 WinitNamedKey::PrintScreen => Key::Named(NamedKey::PrintScreen), 261 WinitNamedKey::Process => Key::Named(NamedKey::Process), 262 WinitNamedKey::Props => Key::Named(NamedKey::Props), 263 WinitNamedKey::RandomToggle => Key::Named(NamedKey::RandomToggle), 264 WinitNamedKey::RcLowBattery => Key::Named(NamedKey::RcLowBattery), 265 WinitNamedKey::RecordSpeedNext => Key::Named(NamedKey::RecordSpeedNext), 266 WinitNamedKey::Redo => Key::Named(NamedKey::Redo), 267 WinitNamedKey::RfBypass => Key::Named(NamedKey::RfBypass), 268 WinitNamedKey::Romaji => Key::Named(NamedKey::Romaji), 269 WinitNamedKey::STBInput => Key::Named(NamedKey::STBInput), 270 WinitNamedKey::STBPower => Key::Named(NamedKey::STBPower), 271 WinitNamedKey::Save => Key::Named(NamedKey::Save), 272 WinitNamedKey::ScanChannelsToggle => Key::Named(NamedKey::ScanChannelsToggle), 273 WinitNamedKey::ScreenModeNext => Key::Named(NamedKey::ScreenModeNext), 274 WinitNamedKey::ScrollLock => Key::Named(NamedKey::ScrollLock), 275 WinitNamedKey::Select => Key::Named(NamedKey::Select), 276 WinitNamedKey::Settings => Key::Named(NamedKey::Settings), 277 WinitNamedKey::Shift => Key::Named(NamedKey::Shift), 278 WinitNamedKey::SingleCandidate => Key::Named(NamedKey::SingleCandidate), 279 WinitNamedKey::Soft1 => Key::Named(NamedKey::Soft1), 280 WinitNamedKey::Soft2 => Key::Named(NamedKey::Soft2), 281 WinitNamedKey::Soft3 => Key::Named(NamedKey::Soft3), 282 WinitNamedKey::Soft4 => Key::Named(NamedKey::Soft4), 283 WinitNamedKey::Space => Key::Character(" ".to_string()), 284 WinitNamedKey::SpeechCorrectionList => Key::Named(NamedKey::SpeechCorrectionList), 285 WinitNamedKey::SpeechInputToggle => Key::Named(NamedKey::SpeechInputToggle), 286 WinitNamedKey::SpellCheck => Key::Named(NamedKey::SpellCheck), 287 WinitNamedKey::SplitScreenToggle => Key::Named(NamedKey::SplitScreenToggle), 288 WinitNamedKey::Standby => Key::Named(NamedKey::Standby), 289 WinitNamedKey::Subtitle => Key::Named(NamedKey::Subtitle), 290 WinitNamedKey::Super => Key::Named(NamedKey::Super), 291 WinitNamedKey::Symbol => Key::Named(NamedKey::Symbol), 292 WinitNamedKey::SymbolLock => Key::Named(NamedKey::SymbolLock), 293 WinitNamedKey::TV => Key::Named(NamedKey::TV), 294 WinitNamedKey::TV3DMode => Key::Named(NamedKey::TV3DMode), 295 WinitNamedKey::TVAntennaCable => Key::Named(NamedKey::TVAntennaCable), 296 WinitNamedKey::TVAudioDescription => Key::Named(NamedKey::TVAudioDescription), 297 WinitNamedKey::TVAudioDescriptionMixDown => { 298 Key::Named(NamedKey::TVAudioDescriptionMixDown) 299 }, 300 WinitNamedKey::TVAudioDescriptionMixUp => Key::Named(NamedKey::TVAudioDescriptionMixUp), 301 WinitNamedKey::TVContentsMenu => Key::Named(NamedKey::TVContentsMenu), 302 WinitNamedKey::TVDataService => Key::Named(NamedKey::TVDataService), 303 WinitNamedKey::TVInput => Key::Named(NamedKey::TVInput), 304 WinitNamedKey::TVInputComponent1 => Key::Named(NamedKey::TVInputComponent1), 305 WinitNamedKey::TVInputComponent2 => Key::Named(NamedKey::TVInputComponent2), 306 WinitNamedKey::TVInputComposite1 => Key::Named(NamedKey::TVInputComposite1), 307 WinitNamedKey::TVInputComposite2 => Key::Named(NamedKey::TVInputComposite2), 308 WinitNamedKey::TVInputHDMI1 => Key::Named(NamedKey::TVInputHDMI1), 309 WinitNamedKey::TVInputHDMI2 => Key::Named(NamedKey::TVInputHDMI2), 310 WinitNamedKey::TVInputHDMI3 => Key::Named(NamedKey::TVInputHDMI3), 311 WinitNamedKey::TVInputHDMI4 => Key::Named(NamedKey::TVInputHDMI4), 312 WinitNamedKey::TVInputVGA1 => Key::Named(NamedKey::TVInputVGA1), 313 WinitNamedKey::TVMediaContext => Key::Named(NamedKey::TVMediaContext), 314 WinitNamedKey::TVNetwork => Key::Named(NamedKey::TVNetwork), 315 WinitNamedKey::TVNumberEntry => Key::Named(NamedKey::TVNumberEntry), 316 WinitNamedKey::TVPower => Key::Named(NamedKey::TVPower), 317 WinitNamedKey::TVRadioService => Key::Named(NamedKey::TVRadioService), 318 WinitNamedKey::TVSatellite => Key::Named(NamedKey::TVSatellite), 319 WinitNamedKey::TVSatelliteBS => Key::Named(NamedKey::TVSatelliteBS), 320 WinitNamedKey::TVSatelliteCS => Key::Named(NamedKey::TVSatelliteCS), 321 WinitNamedKey::TVSatelliteToggle => Key::Named(NamedKey::TVSatelliteToggle), 322 WinitNamedKey::TVTerrestrialAnalog => Key::Named(NamedKey::TVTerrestrialAnalog), 323 WinitNamedKey::TVTerrestrialDigital => Key::Named(NamedKey::TVTerrestrialDigital), 324 WinitNamedKey::TVTimer => Key::Named(NamedKey::TVTimer), 325 WinitNamedKey::Tab => Key::Named(NamedKey::Tab), 326 WinitNamedKey::Teletext => Key::Named(NamedKey::Teletext), 327 WinitNamedKey::Undo => Key::Named(NamedKey::Undo), 328 WinitNamedKey::VideoModeNext => Key::Named(NamedKey::VideoModeNext), 329 WinitNamedKey::VoiceDial => Key::Named(NamedKey::VoiceDial), 330 WinitNamedKey::WakeUp => Key::Named(NamedKey::WakeUp), 331 WinitNamedKey::Wink => Key::Named(NamedKey::Wink), 332 WinitNamedKey::Zenkaku => Key::Named(NamedKey::Zenkaku), 333 WinitNamedKey::ZenkakuHankaku => Key::Named(NamedKey::ZenkakuHankaku), 334 WinitNamedKey::ZoomIn => Key::Named(NamedKey::ZoomIn), 335 WinitNamedKey::ZoomOut => Key::Named(NamedKey::ZoomOut), 336 WinitNamedKey::ZoomToggle => Key::Named(NamedKey::ZoomToggle), 337 _ => Key::Named(NamedKey::Unidentified), 338 } 339 } 340} 341 342impl FromWinitKeyEvent for Location { 343 fn from_winit_key_event(key_event: &KeyEvent) -> Self { 344 match key_event.location { 345 WinitKeyLocation::Left => Location::Left, 346 WinitKeyLocation::Numpad => Location::Numpad, 347 WinitKeyLocation::Right => Location::Right, 348 WinitKeyLocation::Standard => Location::Standard, 349 } 350 } 351} 352 353#[allow(deprecated)] 354impl FromWinitKeyEvent for Code { 355 fn from_winit_key_event(key_event: &KeyEvent) -> Self { 356 let key_code = match key_event.physical_key { 357 PhysicalKey::Code(key_code) => key_code, 358 PhysicalKey::Unidentified(_os_code) => return Code::Unidentified, 359 }; 360 361 match key_code { 362 KeyCode::Abort => Code::Abort, 363 KeyCode::Again => Code::Again, 364 KeyCode::AltLeft => Code::AltLeft, 365 KeyCode::AltRight => Code::AltRight, 366 KeyCode::ArrowDown => Code::ArrowDown, 367 KeyCode::ArrowLeft => Code::ArrowLeft, 368 KeyCode::ArrowRight => Code::ArrowRight, 369 KeyCode::ArrowUp => Code::ArrowUp, 370 KeyCode::AudioVolumeDown => Code::AudioVolumeDown, 371 KeyCode::AudioVolumeMute => Code::AudioVolumeMute, 372 KeyCode::AudioVolumeUp => Code::AudioVolumeUp, 373 KeyCode::Backquote => Code::Backquote, 374 KeyCode::Backslash => Code::Backslash, 375 KeyCode::Backspace => Code::Backspace, 376 KeyCode::BracketLeft => Code::BracketLeft, 377 KeyCode::BracketRight => Code::BracketRight, 378 KeyCode::BrowserBack => Code::BrowserBack, 379 KeyCode::BrowserFavorites => Code::BrowserFavorites, 380 KeyCode::BrowserForward => Code::BrowserForward, 381 KeyCode::BrowserHome => Code::BrowserHome, 382 KeyCode::BrowserRefresh => Code::BrowserRefresh, 383 KeyCode::BrowserSearch => Code::BrowserSearch, 384 KeyCode::BrowserStop => Code::BrowserStop, 385 KeyCode::CapsLock => Code::CapsLock, 386 KeyCode::Comma => Code::Comma, 387 KeyCode::ContextMenu => Code::ContextMenu, 388 KeyCode::ControlLeft => Code::ControlLeft, 389 KeyCode::ControlRight => Code::ControlRight, 390 KeyCode::Convert => Code::Convert, 391 KeyCode::Copy => Code::Copy, 392 KeyCode::Cut => Code::Cut, 393 KeyCode::Delete => Code::Delete, 394 KeyCode::Digit0 => Code::Digit0, 395 KeyCode::Digit1 => Code::Digit1, 396 KeyCode::Digit2 => Code::Digit2, 397 KeyCode::Digit3 => Code::Digit3, 398 KeyCode::Digit4 => Code::Digit4, 399 KeyCode::Digit5 => Code::Digit5, 400 KeyCode::Digit6 => Code::Digit6, 401 KeyCode::Digit7 => Code::Digit7, 402 KeyCode::Digit8 => Code::Digit8, 403 KeyCode::Digit9 => Code::Digit9, 404 KeyCode::Eject => Code::Eject, 405 KeyCode::End => Code::End, 406 KeyCode::Enter => Code::Enter, 407 KeyCode::Equal => Code::Equal, 408 KeyCode::Escape => Code::Escape, 409 KeyCode::F1 => Code::F1, 410 KeyCode::F10 => Code::F10, 411 KeyCode::F11 => Code::F11, 412 KeyCode::F12 => Code::F12, 413 KeyCode::F13 => Code::F13, 414 KeyCode::F14 => Code::F14, 415 KeyCode::F15 => Code::F15, 416 KeyCode::F16 => Code::F16, 417 KeyCode::F17 => Code::F17, 418 KeyCode::F18 => Code::F18, 419 KeyCode::F19 => Code::F19, 420 KeyCode::F2 => Code::F2, 421 KeyCode::F20 => Code::F20, 422 KeyCode::F21 => Code::F21, 423 KeyCode::F22 => Code::F22, 424 KeyCode::F23 => Code::F23, 425 KeyCode::F24 => Code::F24, 426 KeyCode::F25 => Code::F25, 427 KeyCode::F26 => Code::F26, 428 KeyCode::F27 => Code::F27, 429 KeyCode::F28 => Code::F28, 430 KeyCode::F29 => Code::F29, 431 KeyCode::F3 => Code::F3, 432 KeyCode::F30 => Code::F30, 433 KeyCode::F31 => Code::F31, 434 KeyCode::F32 => Code::F32, 435 KeyCode::F33 => Code::F33, 436 KeyCode::F34 => Code::F34, 437 KeyCode::F35 => Code::F35, 438 KeyCode::F4 => Code::F4, 439 KeyCode::F5 => Code::F5, 440 KeyCode::F6 => Code::F6, 441 KeyCode::F7 => Code::F7, 442 KeyCode::F8 => Code::F8, 443 KeyCode::F9 => Code::F9, 444 KeyCode::Find => Code::Find, 445 KeyCode::Fn => Code::Fn, 446 KeyCode::FnLock => Code::FnLock, 447 KeyCode::Help => Code::Help, 448 KeyCode::Hiragana => Code::Hiragana, 449 KeyCode::Home => Code::Home, 450 KeyCode::Hyper => Code::Hyper, 451 KeyCode::Insert => Code::Insert, 452 KeyCode::IntlBackslash => Code::IntlBackslash, 453 KeyCode::IntlRo => Code::IntlRo, 454 KeyCode::IntlYen => Code::IntlYen, 455 KeyCode::KanaMode => Code::KanaMode, 456 KeyCode::Katakana => Code::Katakana, 457 KeyCode::KeyA => Code::KeyA, 458 KeyCode::KeyB => Code::KeyB, 459 KeyCode::KeyC => Code::KeyC, 460 KeyCode::KeyD => Code::KeyD, 461 KeyCode::KeyE => Code::KeyE, 462 KeyCode::KeyF => Code::KeyF, 463 KeyCode::KeyG => Code::KeyG, 464 KeyCode::KeyH => Code::KeyH, 465 KeyCode::KeyI => Code::KeyI, 466 KeyCode::KeyJ => Code::KeyJ, 467 KeyCode::KeyK => Code::KeyK, 468 KeyCode::KeyL => Code::KeyL, 469 KeyCode::KeyM => Code::KeyM, 470 KeyCode::KeyN => Code::KeyN, 471 KeyCode::KeyO => Code::KeyO, 472 KeyCode::KeyP => Code::KeyP, 473 KeyCode::KeyQ => Code::KeyQ, 474 KeyCode::KeyR => Code::KeyR, 475 KeyCode::KeyS => Code::KeyS, 476 KeyCode::KeyT => Code::KeyT, 477 KeyCode::KeyU => Code::KeyU, 478 KeyCode::KeyV => Code::KeyV, 479 KeyCode::KeyW => Code::KeyW, 480 KeyCode::KeyX => Code::KeyX, 481 KeyCode::KeyY => Code::KeyY, 482 KeyCode::KeyZ => Code::KeyZ, 483 KeyCode::Lang1 => Code::Lang1, 484 KeyCode::Lang2 => Code::Lang2, 485 KeyCode::Lang3 => Code::Lang3, 486 KeyCode::Lang4 => Code::Lang4, 487 KeyCode::Lang5 => Code::Lang5, 488 KeyCode::LaunchApp1 => Code::LaunchApp1, 489 KeyCode::LaunchApp2 => Code::LaunchApp2, 490 KeyCode::LaunchMail => Code::LaunchMail, 491 KeyCode::MediaPlayPause => Code::MediaPlayPause, 492 KeyCode::MediaSelect => Code::MediaSelect, 493 KeyCode::MediaStop => Code::MediaStop, 494 KeyCode::MediaTrackNext => Code::MediaTrackNext, 495 KeyCode::MediaTrackPrevious => Code::MediaTrackPrevious, 496 KeyCode::Meta => Code::Super, 497 KeyCode::Minus => Code::Minus, 498 KeyCode::NonConvert => Code::NonConvert, 499 KeyCode::NumLock => Code::NumLock, 500 KeyCode::Numpad0 => Code::Numpad0, 501 KeyCode::Numpad1 => Code::Numpad1, 502 KeyCode::Numpad2 => Code::Numpad2, 503 KeyCode::Numpad3 => Code::Numpad3, 504 KeyCode::Numpad4 => Code::Numpad4, 505 KeyCode::Numpad5 => Code::Numpad5, 506 KeyCode::Numpad6 => Code::Numpad6, 507 KeyCode::Numpad7 => Code::Numpad7, 508 KeyCode::Numpad8 => Code::Numpad8, 509 KeyCode::Numpad9 => Code::Numpad9, 510 KeyCode::NumpadAdd => Code::NumpadAdd, 511 KeyCode::NumpadBackspace => Code::NumpadBackspace, 512 KeyCode::NumpadClear => Code::NumpadClear, 513 KeyCode::NumpadClearEntry => Code::NumpadClearEntry, 514 KeyCode::NumpadComma => Code::NumpadComma, 515 KeyCode::NumpadDecimal => Code::NumpadDecimal, 516 KeyCode::NumpadDivide => Code::NumpadDivide, 517 KeyCode::NumpadEnter => Code::NumpadEnter, 518 KeyCode::NumpadEqual => Code::NumpadEqual, 519 KeyCode::NumpadHash => Code::NumpadHash, 520 KeyCode::NumpadMemoryAdd => Code::NumpadMemoryAdd, 521 KeyCode::NumpadMemoryClear => Code::NumpadMemoryClear, 522 KeyCode::NumpadMemoryRecall => Code::NumpadMemoryRecall, 523 KeyCode::NumpadMemoryStore => Code::NumpadMemoryStore, 524 KeyCode::NumpadMemorySubtract => Code::NumpadMemorySubtract, 525 KeyCode::NumpadMultiply => Code::NumpadMultiply, 526 KeyCode::NumpadParenLeft => Code::NumpadParenLeft, 527 KeyCode::NumpadParenRight => Code::NumpadParenRight, 528 KeyCode::NumpadStar => Code::NumpadStar, 529 KeyCode::NumpadSubtract => Code::NumpadSubtract, 530 KeyCode::Open => Code::Open, 531 KeyCode::PageDown => Code::PageDown, 532 KeyCode::PageUp => Code::PageUp, 533 KeyCode::Paste => Code::Paste, 534 KeyCode::Pause => Code::Pause, 535 KeyCode::Period => Code::Period, 536 KeyCode::Power => Code::Power, 537 KeyCode::PrintScreen => Code::PrintScreen, 538 KeyCode::Props => Code::Props, 539 KeyCode::Quote => Code::Quote, 540 KeyCode::Resume => Code::Resume, 541 KeyCode::ScrollLock => Code::ScrollLock, 542 KeyCode::Select => Code::Select, 543 KeyCode::Semicolon => Code::Semicolon, 544 KeyCode::ShiftLeft => Code::ShiftLeft, 545 KeyCode::ShiftRight => Code::ShiftRight, 546 KeyCode::Slash => Code::Slash, 547 KeyCode::Sleep => Code::Sleep, 548 KeyCode::Space => Code::Space, 549 KeyCode::SuperLeft => Code::MetaLeft, 550 KeyCode::SuperRight => Code::MetaRight, 551 KeyCode::Suspend => Code::Suspend, 552 KeyCode::Tab => Code::Tab, 553 KeyCode::Turbo => Code::Turbo, 554 KeyCode::Undo => Code::Undo, 555 KeyCode::WakeUp => Code::WakeUp, 556 _ => Code::Unidentified, 557 } 558 } 559} 560 561impl FromWinitKeyEvent for KeyState { 562 fn from_winit_key_event(key_event: &KeyEvent) -> Self { 563 match key_event.state { 564 ElementState::Pressed => KeyState::Down, 565 ElementState::Released => KeyState::Up, 566 } 567 } 568} 569 570fn keyboard_modifiers_from_winit_modifiers(mods: ModifiersState) -> Modifiers { 571 let mut modifiers = Modifiers::empty(); 572 modifiers.set(Modifiers::CONTROL, mods.control_key()); 573 modifiers.set(Modifiers::SHIFT, mods.shift_key()); 574 modifiers.set(Modifiers::ALT, mods.alt_key()); 575 modifiers.set(Modifiers::META, mods.super_key()); 576 modifiers 577} 578 579pub fn keyboard_event_from_winit(key_event: &KeyEvent, state: ModifiersState) -> KeyboardEvent { 580 KeyboardEvent::new_without_event( 581 KeyState::from_winit_key_event(key_event), 582 Key::from_winit_key_event(key_event), 583 Code::from_winit_key_event(key_event), 584 Location::from_winit_key_event(key_event), 585 keyboard_modifiers_from_winit_modifiers(state), 586 false, 587 false, 588 ) 589}