Rewild Your Web
web
browser
dweb
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}