vizia_winit/
convert.rs

1use vizia_core::prelude::CursorIcon as ViziaCursorIcon;
2use vizia_input::Code as ViziaCode;
3use vizia_input::Key as ViziaKey;
4use winit::keyboard::KeyCode;
5use winit::keyboard::NamedKey;
6use winit::window::CursorIcon as WinitCursorIcon;
7
8pub fn cursor_icon_to_cursor_icon(cursor_icon: ViziaCursorIcon) -> Option<WinitCursorIcon> {
9    match cursor_icon {
10        ViziaCursorIcon::Default => Some(WinitCursorIcon::Default),
11        ViziaCursorIcon::Crosshair => Some(WinitCursorIcon::Crosshair),
12        ViziaCursorIcon::Hand => Some(WinitCursorIcon::Pointer),
13        ViziaCursorIcon::Arrow => Some(WinitCursorIcon::Default),
14        ViziaCursorIcon::Move => Some(WinitCursorIcon::Move),
15        ViziaCursorIcon::Text => Some(WinitCursorIcon::Text),
16        ViziaCursorIcon::Wait => Some(WinitCursorIcon::Wait),
17        ViziaCursorIcon::Help => Some(WinitCursorIcon::Help),
18        ViziaCursorIcon::Progress => Some(WinitCursorIcon::Progress),
19        ViziaCursorIcon::NotAllowed => Some(WinitCursorIcon::NotAllowed),
20        ViziaCursorIcon::ContextMenu => Some(WinitCursorIcon::ContextMenu),
21        ViziaCursorIcon::Cell => Some(WinitCursorIcon::Cell),
22        ViziaCursorIcon::VerticalText => Some(WinitCursorIcon::VerticalText),
23        ViziaCursorIcon::Alias => Some(WinitCursorIcon::Alias),
24        ViziaCursorIcon::Copy => Some(WinitCursorIcon::Copy),
25        ViziaCursorIcon::NoDrop => Some(WinitCursorIcon::NoDrop),
26        ViziaCursorIcon::Grab => Some(WinitCursorIcon::Grab),
27        ViziaCursorIcon::Grabbing => Some(WinitCursorIcon::Grabbing),
28        ViziaCursorIcon::AllScroll => Some(WinitCursorIcon::AllScroll),
29        ViziaCursorIcon::ZoomIn => Some(WinitCursorIcon::ZoomIn),
30        ViziaCursorIcon::ZoomOut => Some(WinitCursorIcon::ZoomOut),
31        ViziaCursorIcon::EResize => Some(WinitCursorIcon::EResize),
32        ViziaCursorIcon::NResize => Some(WinitCursorIcon::NResize),
33        ViziaCursorIcon::NeResize => Some(WinitCursorIcon::NeResize),
34        ViziaCursorIcon::NwResize => Some(WinitCursorIcon::NwResize),
35        ViziaCursorIcon::SResize => Some(WinitCursorIcon::SResize),
36        ViziaCursorIcon::SeResize => Some(WinitCursorIcon::SeResize),
37        ViziaCursorIcon::SwResize => Some(WinitCursorIcon::SwResize),
38        ViziaCursorIcon::WResize => Some(WinitCursorIcon::WResize),
39        ViziaCursorIcon::EwResize => Some(WinitCursorIcon::EwResize),
40        ViziaCursorIcon::NsResize => Some(WinitCursorIcon::NsResize),
41        ViziaCursorIcon::NeswResize => Some(WinitCursorIcon::NeswResize),
42        ViziaCursorIcon::NwseResize => Some(WinitCursorIcon::NwseResize),
43        ViziaCursorIcon::ColResize => Some(WinitCursorIcon::ColResize),
44        ViziaCursorIcon::RowResize => Some(WinitCursorIcon::RowResize),
45        ViziaCursorIcon::None => None,
46    }
47}
48
49pub fn winit_key_code_to_code(virtual_key_code: KeyCode) -> ViziaCode {
50    use winit::keyboard::KeyCode::*;
51    match virtual_key_code {
52        Digit1 => ViziaCode::Digit1,
53        Digit2 => ViziaCode::Digit2,
54        Digit3 => ViziaCode::Digit3,
55        Digit4 => ViziaCode::Digit4,
56        Digit5 => ViziaCode::Digit5,
57        Digit6 => ViziaCode::Digit6,
58        Digit7 => ViziaCode::Digit7,
59        Digit8 => ViziaCode::Digit8,
60        Digit9 => ViziaCode::Digit9,
61        Digit0 => ViziaCode::Digit0,
62        KeyA => ViziaCode::KeyA,
63        KeyB => ViziaCode::KeyB,
64        KeyC => ViziaCode::KeyC,
65        KeyD => ViziaCode::KeyD,
66        KeyE => ViziaCode::KeyE,
67        KeyF => ViziaCode::KeyF,
68        KeyG => ViziaCode::KeyG,
69        KeyH => ViziaCode::KeyH,
70        KeyI => ViziaCode::KeyI,
71        KeyJ => ViziaCode::KeyJ,
72        KeyK => ViziaCode::KeyK,
73        KeyL => ViziaCode::KeyL,
74        KeyM => ViziaCode::KeyM,
75        KeyN => ViziaCode::KeyN,
76        KeyO => ViziaCode::KeyO,
77        KeyP => ViziaCode::KeyP,
78        KeyQ => ViziaCode::KeyQ,
79        KeyR => ViziaCode::KeyR,
80        KeyS => ViziaCode::KeyS,
81        KeyT => ViziaCode::KeyT,
82        KeyU => ViziaCode::KeyU,
83        KeyV => ViziaCode::KeyV,
84        KeyW => ViziaCode::KeyW,
85        KeyX => ViziaCode::KeyX,
86        KeyY => ViziaCode::KeyY,
87        KeyZ => ViziaCode::KeyZ,
88        Escape => ViziaCode::Escape,
89        F1 => ViziaCode::F1,
90        F2 => ViziaCode::F2,
91        F3 => ViziaCode::F3,
92        F4 => ViziaCode::F4,
93        F5 => ViziaCode::F5,
94        F6 => ViziaCode::F6,
95        F7 => ViziaCode::F7,
96        F8 => ViziaCode::F8,
97        F9 => ViziaCode::F9,
98        F10 => ViziaCode::F10,
99        F11 => ViziaCode::F11,
100        F12 => ViziaCode::F12,
101        Insert => ViziaCode::Insert,
102        Home => ViziaCode::Home,
103        Delete => ViziaCode::Delete,
104        End => ViziaCode::End,
105        PageDown => ViziaCode::PageDown,
106        PageUp => ViziaCode::PageUp,
107        ArrowLeft => ViziaCode::ArrowLeft,
108        ArrowUp => ViziaCode::ArrowUp,
109        ArrowRight => ViziaCode::ArrowRight,
110        ArrowDown => ViziaCode::ArrowDown,
111        Backspace => ViziaCode::Backspace,
112        Enter => ViziaCode::Enter,
113        Space => ViziaCode::Space,
114        Numpad0 => ViziaCode::Numpad0,
115        Numpad1 => ViziaCode::Numpad1,
116        Numpad2 => ViziaCode::Numpad2,
117        Numpad3 => ViziaCode::Numpad3,
118        Numpad4 => ViziaCode::Numpad4,
119        Numpad5 => ViziaCode::Numpad5,
120        Numpad6 => ViziaCode::Numpad6,
121        Numpad7 => ViziaCode::Numpad7,
122        Numpad8 => ViziaCode::Numpad8,
123        Numpad9 => ViziaCode::Numpad9,
124        NumpadAdd => ViziaCode::NumpadAdd,
125        NumpadDivide => ViziaCode::NumpadDivide,
126        NumpadDecimal => ViziaCode::NumpadDecimal,
127        NumpadComma => ViziaCode::NumpadComma,
128        NumpadEnter => ViziaCode::NumpadEnter,
129        NumpadEqual => ViziaCode::NumpadEqual,
130        NumpadMultiply => ViziaCode::NumpadMultiply,
131        NumpadSubtract => ViziaCode::NumpadSubtract,
132        Comma => ViziaCode::Comma,
133        Equal => ViziaCode::Equal,
134        Backquote => ViziaCode::Backquote,
135        AltLeft => ViziaCode::AltLeft,
136        BracketLeft => ViziaCode::BracketLeft,
137        ControlLeft => ViziaCode::ControlLeft,
138        ShiftLeft => ViziaCode::ShiftLeft,
139        Minus => ViziaCode::Minus,
140        Period => ViziaCode::Period,
141        Semicolon => ViziaCode::Semicolon,
142        Slash => ViziaCode::Slash,
143        Tab => ViziaCode::Tab,
144        _ => ViziaCode::NonConvert,
145    }
146}
147
148pub fn _scan_code_to_code(scan_code: u32) -> ViziaCode {
149    match scan_code {
150        0x001 => ViziaCode::Escape,
151        0x002 => ViziaCode::Digit1,
152        0x003 => ViziaCode::Digit2,
153        0x004 => ViziaCode::Digit3,
154        0x005 => ViziaCode::Digit4,
155        0x006 => ViziaCode::Digit5,
156        0x007 => ViziaCode::Digit6,
157        0x008 => ViziaCode::Digit7,
158        0x009 => ViziaCode::Digit8,
159        0x00A => ViziaCode::Digit9,
160        0x00B => ViziaCode::Digit0,
161        0x00C => ViziaCode::Minus,
162        0x00D => ViziaCode::Equal,
163        0x00E => ViziaCode::Backspace,
164        0x00F => ViziaCode::Tab,
165        0x010 => ViziaCode::KeyQ,
166        0x011 => ViziaCode::KeyW,
167        0x012 => ViziaCode::KeyE,
168        0x013 => ViziaCode::KeyR,
169        0x014 => ViziaCode::KeyT,
170        0x015 => ViziaCode::KeyY,
171        0x016 => ViziaCode::KeyU,
172        0x017 => ViziaCode::KeyI,
173        0x018 => ViziaCode::KeyO,
174        0x019 => ViziaCode::KeyP,
175        0x01A => ViziaCode::BracketLeft,
176        0x01B => ViziaCode::BracketRight,
177        0x01C => ViziaCode::Enter,
178        0x01D => ViziaCode::ControlLeft,
179        0x01E => ViziaCode::KeyA,
180        0x01F => ViziaCode::KeyS,
181        0x020 => ViziaCode::KeyD,
182        0x021 => ViziaCode::KeyF,
183        0x022 => ViziaCode::KeyG,
184        0x023 => ViziaCode::KeyH,
185        0x024 => ViziaCode::KeyJ,
186        0x025 => ViziaCode::KeyK,
187        0x026 => ViziaCode::KeyL,
188        0x027 => ViziaCode::Semicolon,
189        0x028 => ViziaCode::Quote,
190        0x029 => ViziaCode::Backquote,
191        0x02A => ViziaCode::ShiftLeft,
192        0x02B => ViziaCode::Backslash,
193        0x02C => ViziaCode::KeyZ,
194        0x02D => ViziaCode::KeyX,
195        0x02E => ViziaCode::KeyC,
196        0x02F => ViziaCode::KeyV,
197        0x030 => ViziaCode::KeyB,
198        0x031 => ViziaCode::KeyN,
199        0x032 => ViziaCode::KeyM,
200        0x033 => ViziaCode::Comma,
201        0x034 => ViziaCode::Period,
202        0x035 => ViziaCode::Slash,
203        0x036 => ViziaCode::ShiftRight,
204        0x037 => ViziaCode::NumpadMultiply,
205        0x038 => ViziaCode::AltLeft,
206        0x039 => ViziaCode::Space,
207        0x03A => ViziaCode::CapsLock,
208        0x03B => ViziaCode::F1,
209        0x03C => ViziaCode::F2,
210        0x03D => ViziaCode::F3,
211        0x03E => ViziaCode::F4,
212        0x03F => ViziaCode::F5,
213        0x040 => ViziaCode::F6,
214        0x041 => ViziaCode::F7,
215        0x042 => ViziaCode::F8,
216        0x043 => ViziaCode::F9,
217        0x044 => ViziaCode::F10,
218        0x045 => ViziaCode::Pause,
219        0x046 => ViziaCode::ScrollLock,
220        0x047 => ViziaCode::Numpad7,
221        0x048 => ViziaCode::Numpad8,
222        0x049 => ViziaCode::Numpad9,
223        0x04A => ViziaCode::NumpadSubtract,
224        0x04B => ViziaCode::Numpad4,
225        0x04C => ViziaCode::Numpad5,
226        0x04D => ViziaCode::Numpad6,
227        0x04E => ViziaCode::NumpadAdd,
228        0x04F => ViziaCode::Numpad1,
229        0x050 => ViziaCode::Numpad2,
230        0x051 => ViziaCode::Numpad3,
231        0x052 => ViziaCode::Numpad0,
232        0x053 => ViziaCode::NumpadDecimal,
233        0x054 => ViziaCode::PrintScreen,
234        0x056 => ViziaCode::IntlBackslash,
235        0x057 => ViziaCode::F11,
236        0x058 => ViziaCode::F12,
237        0x059 => ViziaCode::NumpadEqual,
238        0x070 => ViziaCode::KanaMode,
239        0x071 => ViziaCode::Lang2,
240        0x072 => ViziaCode::Lang1,
241        0x073 => ViziaCode::IntlRo,
242        0x079 => ViziaCode::Convert,
243        0x07B => ViziaCode::NonConvert,
244        0x07D => ViziaCode::IntlYen,
245        0x07E => ViziaCode::NumpadComma,
246        0x110 => ViziaCode::MediaTrackPrevious,
247        0x119 => ViziaCode::MediaTrackNext,
248        0x11C => ViziaCode::NumpadEnter,
249        0x11D => ViziaCode::ControlRight,
250        0x120 => ViziaCode::AudioVolumeMute,
251        0x121 => ViziaCode::LaunchApp2,
252        0x122 => ViziaCode::MediaPlayPause,
253        0x124 => ViziaCode::MediaStop,
254        0x12E => ViziaCode::AudioVolumeDown,
255        0x130 => ViziaCode::AudioVolumeUp,
256        0x132 => ViziaCode::BrowserHome,
257        0x135 => ViziaCode::NumpadDivide,
258        0x137 => ViziaCode::PrintScreen,
259        0x138 => ViziaCode::AltRight,
260        0x145 => ViziaCode::NumLock,
261        0x147 => ViziaCode::Home,
262        0x148 => ViziaCode::ArrowUp,
263        0x149 => ViziaCode::PageUp,
264        0x14B => ViziaCode::ArrowLeft,
265        0x14D => ViziaCode::ArrowRight,
266        0x14F => ViziaCode::End,
267        0x150 => ViziaCode::ArrowDown,
268        0x151 => ViziaCode::PageDown,
269        0x152 => ViziaCode::Insert,
270        0x153 => ViziaCode::Delete,
271        0x15B => ViziaCode::MetaLeft,
272        0x15C => ViziaCode::MetaRight,
273        0x15D => ViziaCode::ContextMenu,
274        0x15E => ViziaCode::Power,
275        0x165 => ViziaCode::BrowserSearch,
276        0x166 => ViziaCode::BrowserFavorites,
277        0x167 => ViziaCode::BrowserRefresh,
278        0x168 => ViziaCode::BrowserStop,
279        0x169 => ViziaCode::BrowserForward,
280        0x16A => ViziaCode::BrowserBack,
281        0x16B => ViziaCode::LaunchApp1,
282        0x16C => ViziaCode::LaunchMail,
283        0x16D => ViziaCode::MediaSelect,
284        0x1F1 => ViziaCode::Lang2,
285        0x1F2 => ViziaCode::Lang1,
286        _ => ViziaCode::Unidentified,
287    }
288}
289
290pub fn winit_key_to_key(virtual_key_code: NamedKey) -> Option<ViziaKey> {
291    use winit::keyboard::NamedKey::*;
292    match virtual_key_code {
293        Backspace => Some(ViziaKey::Backspace),
294        Tab => Some(ViziaKey::Tab),
295        Enter => Some(ViziaKey::Enter),
296        Shift => Some(ViziaKey::Shift),
297        Control => Some(ViziaKey::Control),
298        Alt => Some(ViziaKey::Alt),
299        Pause => Some(ViziaKey::Pause),
300        CapsLock => Some(ViziaKey::CapsLock),
301        // TODO: disambiguate kana and hangul? same vk
302        KanaMode => Some(ViziaKey::KanaMode),
303        KanjiMode => Some(ViziaKey::KanjiMode),
304        Escape => Some(ViziaKey::Escape),
305        PageUp => Some(ViziaKey::PageUp),
306        PageDown => Some(ViziaKey::PageDown),
307        End => Some(ViziaKey::End),
308        Home => Some(ViziaKey::Home),
309        ArrowLeft => Some(ViziaKey::ArrowLeft),
310        ArrowUp => Some(ViziaKey::ArrowUp),
311        ArrowRight => Some(ViziaKey::ArrowRight),
312        ArrowDown => Some(ViziaKey::ArrowDown),
313        Select => Some(ViziaKey::Select),
314        Print => Some(ViziaKey::Print),
315        Insert => Some(ViziaKey::Insert),
316        Delete => Some(ViziaKey::Delete),
317        Meta => Some(ViziaKey::Meta),
318        ContextMenu => Some(ViziaKey::ContextMenu),
319        Standby => Some(ViziaKey::Standby),
320        F1 => Some(ViziaKey::F1),
321        F2 => Some(ViziaKey::F2),
322        F3 => Some(ViziaKey::F3),
323        F4 => Some(ViziaKey::F4),
324        F5 => Some(ViziaKey::F5),
325        F6 => Some(ViziaKey::F6),
326        F7 => Some(ViziaKey::F7),
327        F8 => Some(ViziaKey::F8),
328        F9 => Some(ViziaKey::F9),
329        F10 => Some(ViziaKey::F10),
330        F11 => Some(ViziaKey::F11),
331        F12 => Some(ViziaKey::F12),
332        NumLock => Some(ViziaKey::NumLock),
333        ScrollLock => Some(ViziaKey::ScrollLock),
334        AltGraph => Some(ViziaKey::AltGraph),
335        Fn => Some(ViziaKey::Fn),
336        FnLock => Some(ViziaKey::FnLock),
337        Symbol => Some(ViziaKey::Symbol),
338        SymbolLock => Some(ViziaKey::SymbolLock),
339        Hyper => Some(ViziaKey::Hyper),
340        Super => Some(ViziaKey::Super),
341        Space => None,
342        Clear => Some(ViziaKey::Clear),
343        Copy => Some(ViziaKey::Copy),
344        CrSel => Some(ViziaKey::CrSel),
345        Cut => Some(ViziaKey::Cut),
346        EraseEof => Some(ViziaKey::EraseEof),
347        ExSel => Some(ViziaKey::ExSel),
348        Paste => Some(ViziaKey::Paste),
349        Redo => Some(ViziaKey::Redo),
350        Undo => Some(ViziaKey::Undo),
351        Accept => Some(ViziaKey::Accept),
352        Again => Some(ViziaKey::Again),
353        Attn => Some(ViziaKey::Attn),
354        Cancel => Some(ViziaKey::Cancel),
355        Execute => Some(ViziaKey::Execute),
356        Find => Some(ViziaKey::Find),
357        Help => Some(ViziaKey::Help),
358        Play => Some(ViziaKey::Play),
359        Props => Some(ViziaKey::Props),
360        ZoomIn => Some(ViziaKey::ZoomIn),
361        ZoomOut => Some(ViziaKey::ZoomOut),
362        BrightnessDown => Some(ViziaKey::BrightnessDown),
363        BrightnessUp => Some(ViziaKey::BrightnessUp),
364        Eject => Some(ViziaKey::Eject),
365        LogOff => Some(ViziaKey::LogOff),
366        Power => Some(ViziaKey::Power),
367        PowerOff => Some(ViziaKey::PowerOff),
368        PrintScreen => Some(ViziaKey::PrintScreen),
369        Hibernate => Some(ViziaKey::Hibernate),
370        WakeUp => Some(ViziaKey::WakeUp),
371        AllCandidates => Some(ViziaKey::AllCandidates),
372        Alphanumeric => Some(ViziaKey::Alphanumeric),
373        CodeInput => Some(ViziaKey::CodeInput),
374        Compose => Some(ViziaKey::Compose),
375        Convert => Some(ViziaKey::Convert),
376        FinalMode => Some(ViziaKey::FinalMode),
377        GroupFirst => Some(ViziaKey::GroupFirst),
378        GroupLast => Some(ViziaKey::GroupLast),
379        GroupNext => Some(ViziaKey::GroupNext),
380        GroupPrevious => Some(ViziaKey::GroupPrevious),
381        ModeChange => Some(ViziaKey::ModeChange),
382        NextCandidate => Some(ViziaKey::NextCandidate),
383        NonConvert => Some(ViziaKey::NonConvert),
384        PreviousCandidate => Some(ViziaKey::PreviousCandidate),
385        Process => Some(ViziaKey::Process),
386        SingleCandidate => Some(ViziaKey::SingleCandidate),
387        HangulMode => Some(ViziaKey::HangulMode),
388        HanjaMode => Some(ViziaKey::HanjaMode),
389        JunjaMode => Some(ViziaKey::JunjaMode),
390        Eisu => Some(ViziaKey::Eisu),
391        Hankaku => Some(ViziaKey::Hankaku),
392        Hiragana => Some(ViziaKey::Hiragana),
393        HiraganaKatakana => Some(ViziaKey::HiraganaKatakana),
394        Katakana => Some(ViziaKey::Katakana),
395        Romaji => Some(ViziaKey::Romaji),
396        Zenkaku => Some(ViziaKey::Zenkaku),
397        ZenkakuHankaku => Some(ViziaKey::ZenkakuHankaku),
398        Soft1 => Some(ViziaKey::Soft1),
399        Soft2 => Some(ViziaKey::Soft2),
400        Soft3 => Some(ViziaKey::Soft3),
401        Soft4 => Some(ViziaKey::Soft4),
402        ChannelDown => Some(ViziaKey::ChannelDown),
403        ChannelUp => Some(ViziaKey::ChannelUp),
404        Close => Some(ViziaKey::Close),
405        MailForward => Some(ViziaKey::MailForward),
406        MailReply => Some(ViziaKey::MailReply),
407        MailSend => Some(ViziaKey::MailSend),
408        MediaClose => Some(ViziaKey::MediaClose),
409        MediaFastForward => Some(ViziaKey::MediaFastForward),
410        MediaPause => Some(ViziaKey::MediaPause),
411        MediaPlay => Some(ViziaKey::MediaPlay),
412        MediaPlayPause => Some(ViziaKey::MediaPlayPause),
413        MediaRecord => Some(ViziaKey::MediaRecord),
414        MediaRewind => Some(ViziaKey::MediaRewind),
415        MediaStop => Some(ViziaKey::MediaStop),
416        MediaTrackNext => Some(ViziaKey::MediaTrackNext),
417        MediaTrackPrevious => Some(ViziaKey::MediaTrackPrevious),
418        New => Some(ViziaKey::New),
419        Open => Some(ViziaKey::Open),
420        Save => Some(ViziaKey::Save),
421        SpellCheck => Some(ViziaKey::SpellCheck),
422        Key11 => Some(ViziaKey::Key11),
423        Key12 => Some(ViziaKey::Key12),
424        AudioBalanceLeft => Some(ViziaKey::AudioBalanceLeft),
425        AudioBalanceRight => Some(ViziaKey::AudioBalanceRight),
426        AudioBassBoostDown => Some(ViziaKey::AudioBassBoostDown),
427        AudioBassBoostToggle => Some(ViziaKey::AudioBassBoostToggle),
428        AudioBassBoostUp => Some(ViziaKey::AudioBassBoostUp),
429        AudioFaderFront => Some(ViziaKey::AudioFaderFront),
430        AudioFaderRear => Some(ViziaKey::AudioFaderRear),
431        AudioSurroundModeNext => Some(ViziaKey::AudioSurroundModeNext),
432        AudioTrebleDown => Some(ViziaKey::AudioTrebleDown),
433        AudioTrebleUp => Some(ViziaKey::AudioTrebleUp),
434        AudioVolumeDown => Some(ViziaKey::AudioVolumeDown),
435        AudioVolumeUp => Some(ViziaKey::AudioVolumeUp),
436        AudioVolumeMute => Some(ViziaKey::AudioVolumeMute),
437        MicrophoneToggle => Some(ViziaKey::MicrophoneToggle),
438        MicrophoneVolumeDown => Some(ViziaKey::MicrophoneVolumeDown),
439        MicrophoneVolumeUp => Some(ViziaKey::MicrophoneVolumeUp),
440        MicrophoneVolumeMute => Some(ViziaKey::MicrophoneVolumeMute),
441        SpeechCorrectionList => Some(ViziaKey::SpeechCorrectionList),
442        SpeechInputToggle => Some(ViziaKey::SpeechInputToggle),
443        LaunchApplication1 => Some(ViziaKey::LaunchApplication1),
444        LaunchApplication2 => Some(ViziaKey::LaunchApplication2),
445        LaunchCalendar => Some(ViziaKey::LaunchCalendar),
446        LaunchContacts => Some(ViziaKey::LaunchContacts),
447        LaunchMail => Some(ViziaKey::LaunchMail),
448        LaunchMediaPlayer => Some(ViziaKey::LaunchMediaPlayer),
449        LaunchMusicPlayer => Some(ViziaKey::LaunchMusicPlayer),
450        LaunchPhone => Some(ViziaKey::LaunchPhone),
451        LaunchScreenSaver => Some(ViziaKey::LaunchScreenSaver),
452        LaunchSpreadsheet => Some(ViziaKey::LaunchSpreadsheet),
453        LaunchWebBrowser => Some(ViziaKey::LaunchWebBrowser),
454        LaunchWebCam => Some(ViziaKey::LaunchWebCam),
455        LaunchWordProcessor => Some(ViziaKey::LaunchWordProcessor),
456        BrowserBack => Some(ViziaKey::BrowserBack),
457        BrowserFavorites => Some(ViziaKey::BrowserFavorites),
458        BrowserForward => Some(ViziaKey::BrowserForward),
459        BrowserHome => Some(ViziaKey::BrowserHome),
460        BrowserRefresh => Some(ViziaKey::BrowserRefresh),
461        BrowserSearch => Some(ViziaKey::BrowserSearch),
462        BrowserStop => Some(ViziaKey::BrowserStop),
463        AppSwitch => Some(ViziaKey::AppSwitch),
464        Call => Some(ViziaKey::Call),
465        Camera => Some(ViziaKey::Camera),
466        CameraFocus => Some(ViziaKey::CameraFocus),
467        EndCall => Some(ViziaKey::EndCall),
468        GoBack => Some(ViziaKey::GoBack),
469        GoHome => Some(ViziaKey::GoHome),
470        HeadsetHook => Some(ViziaKey::HeadsetHook),
471        LastNumberRedial => Some(ViziaKey::LastNumberRedial),
472        Notification => Some(ViziaKey::Notification),
473        MannerMode => Some(ViziaKey::MannerMode),
474        VoiceDial => Some(ViziaKey::VoiceDial),
475        TV => Some(ViziaKey::TV),
476        TV3DMode => Some(ViziaKey::TV3DMode),
477        TVAntennaCable => Some(ViziaKey::TVAntennaCable),
478        TVAudioDescription => Some(ViziaKey::TVAudioDescription),
479        TVAudioDescriptionMixDown => Some(ViziaKey::TVAudioDescriptionMixDown),
480        TVAudioDescriptionMixUp => Some(ViziaKey::TVAudioDescriptionMixUp),
481        TVContentsMenu => Some(ViziaKey::TVContentsMenu),
482        TVDataService => Some(ViziaKey::TVDataService),
483        TVInput => Some(ViziaKey::TVInput),
484        TVInputComponent1 => Some(ViziaKey::TVInputComponent1),
485        TVInputComponent2 => Some(ViziaKey::TVInputComponent2),
486        TVInputComposite1 => Some(ViziaKey::TVInputComposite1),
487        TVInputComposite2 => Some(ViziaKey::TVInputComposite2),
488        TVInputHDMI1 => Some(ViziaKey::TVInputHDMI1),
489        TVInputHDMI2 => Some(ViziaKey::TVInputHDMI2),
490        TVInputHDMI3 => Some(ViziaKey::TVInputHDMI3),
491        TVInputHDMI4 => Some(ViziaKey::TVInputHDMI4),
492        TVInputVGA1 => Some(ViziaKey::TVInputVGA1),
493        TVMediaContext => Some(ViziaKey::TVMediaContext),
494        TVNetwork => Some(ViziaKey::TVNetwork),
495        TVNumberEntry => Some(ViziaKey::TVNumberEntry),
496        TVPower => Some(ViziaKey::TVPower),
497        TVRadioService => Some(ViziaKey::TVRadioService),
498        TVSatellite => Some(ViziaKey::TVSatellite),
499        TVSatelliteBS => Some(ViziaKey::TVSatelliteBS),
500        TVSatelliteCS => Some(ViziaKey::TVSatelliteCS),
501        TVSatelliteToggle => Some(ViziaKey::TVSatelliteToggle),
502        TVTerrestrialAnalog => Some(ViziaKey::TVTerrestrialAnalog),
503        TVTerrestrialDigital => Some(ViziaKey::TVTerrestrialDigital),
504        TVTimer => Some(ViziaKey::TVTimer),
505        AVRInput => Some(ViziaKey::AVRInput),
506        AVRPower => Some(ViziaKey::AVRPower),
507        ColorF0Red => Some(ViziaKey::ColorF0Red),
508        ColorF1Green => Some(ViziaKey::ColorF1Green),
509        ColorF2Yellow => Some(ViziaKey::ColorF2Yellow),
510        ColorF3Blue => Some(ViziaKey::ColorF3Blue),
511        ColorF4Grey => Some(ViziaKey::ColorF4Grey),
512        ColorF5Brown => Some(ViziaKey::ColorF5Brown),
513        ClosedCaptionToggle => Some(ViziaKey::ClosedCaptionToggle),
514        Dimmer => Some(ViziaKey::Dimmer),
515        DisplaySwap => Some(ViziaKey::DisplaySwap),
516        DVR => Some(ViziaKey::DVR),
517        Exit => Some(ViziaKey::Exit),
518        FavoriteClear0 => Some(ViziaKey::FavoriteClear0),
519        FavoriteClear1 => Some(ViziaKey::FavoriteClear1),
520        FavoriteClear2 => Some(ViziaKey::FavoriteClear2),
521        FavoriteClear3 => Some(ViziaKey::FavoriteClear3),
522        FavoriteRecall0 => Some(ViziaKey::FavoriteRecall0),
523        FavoriteRecall1 => Some(ViziaKey::FavoriteRecall1),
524        FavoriteRecall2 => Some(ViziaKey::FavoriteRecall2),
525        FavoriteRecall3 => Some(ViziaKey::FavoriteRecall3),
526        FavoriteStore0 => Some(ViziaKey::FavoriteStore0),
527        FavoriteStore1 => Some(ViziaKey::FavoriteStore1),
528        FavoriteStore2 => Some(ViziaKey::FavoriteStore2),
529        FavoriteStore3 => Some(ViziaKey::FavoriteStore3),
530        Guide => Some(ViziaKey::Guide),
531        GuideNextDay => Some(ViziaKey::GuideNextDay),
532        GuidePreviousDay => Some(ViziaKey::GuidePreviousDay),
533        Info => Some(ViziaKey::Info),
534        InstantReplay => Some(ViziaKey::InstantReplay),
535        Link => Some(ViziaKey::Link),
536        ListProgram => Some(ViziaKey::ListProgram),
537        LiveContent => Some(ViziaKey::LiveContent),
538        Lock => Some(ViziaKey::Lock),
539        MediaApps => Some(ViziaKey::MediaApps),
540        MediaAudioTrack => Some(ViziaKey::MediaAudioTrack),
541        MediaLast => Some(ViziaKey::MediaLast),
542        MediaSkipBackward => Some(ViziaKey::MediaSkipBackward),
543        MediaSkipForward => Some(ViziaKey::MediaSkipForward),
544        MediaStepBackward => Some(ViziaKey::MediaStepBackward),
545        MediaStepForward => Some(ViziaKey::MediaStepForward),
546        MediaTopMenu => Some(ViziaKey::MediaTopMenu),
547        NavigateIn => Some(ViziaKey::NavigateIn),
548        NavigateNext => Some(ViziaKey::NavigateNext),
549        NavigateOut => Some(ViziaKey::NavigateOut),
550        NavigatePrevious => Some(ViziaKey::NavigatePrevious),
551        NextFavoriteChannel => Some(ViziaKey::NextFavoriteChannel),
552        NextUserProfile => Some(ViziaKey::NextUserProfile),
553        OnDemand => Some(ViziaKey::OnDemand),
554        Pairing => Some(ViziaKey::Pairing),
555        PinPDown => Some(ViziaKey::PinPDown),
556        PinPMove => Some(ViziaKey::PinPMove),
557        PinPToggle => Some(ViziaKey::PinPToggle),
558        PinPUp => Some(ViziaKey::PinPUp),
559        PlaySpeedDown => Some(ViziaKey::PlaySpeedDown),
560        PlaySpeedReset => Some(ViziaKey::PlaySpeedReset),
561        PlaySpeedUp => Some(ViziaKey::PlaySpeedUp),
562        RandomToggle => Some(ViziaKey::RandomToggle),
563        RcLowBattery => Some(ViziaKey::RcLowBattery),
564        RecordSpeedNext => Some(ViziaKey::RecordSpeedNext),
565        RfBypass => Some(ViziaKey::RfBypass),
566        ScanChannelsToggle => Some(ViziaKey::ScanChannelsToggle),
567        ScreenModeNext => Some(ViziaKey::ScreenModeNext),
568        Settings => Some(ViziaKey::Settings),
569        SplitScreenToggle => Some(ViziaKey::SplitScreenToggle),
570        STBInput => Some(ViziaKey::STBInput),
571        STBPower => Some(ViziaKey::STBPower),
572        Subtitle => Some(ViziaKey::Subtitle),
573        Teletext => Some(ViziaKey::Teletext),
574        VideoModeNext => Some(ViziaKey::VideoModeNext),
575        Wink => Some(ViziaKey::Wink),
576        ZoomToggle => Some(ViziaKey::ZoomToggle),
577        F13 => Some(ViziaKey::F13),
578        F14 => Some(ViziaKey::F14),
579        F15 => Some(ViziaKey::F15),
580        F16 => Some(ViziaKey::F16),
581        F17 => Some(ViziaKey::F17),
582        F18 => Some(ViziaKey::F18),
583        F19 => Some(ViziaKey::F19),
584        F20 => Some(ViziaKey::F20),
585        F21 => Some(ViziaKey::F21),
586        F22 => Some(ViziaKey::F22),
587        F23 => Some(ViziaKey::F23),
588        F24 => Some(ViziaKey::F24),
589        F25 => None,
590        F26 => None,
591        F27 => None,
592        F28 => None,
593        F29 => None,
594        F30 => None,
595        F31 => None,
596        F32 => None,
597        F33 => None,
598        F34 => None,
599        F35 => None,
600        _ => None,
601    }
602}