bevy_iced 0.5.0

Iced integration for Bevy
Documentation
use crate::iced::{
    touch::{self, Finger},
    Point,
};
use bevy_input::keyboard::Key as BevyKey;
use bevy_input::prelude::MouseButton;
use bevy_input::touch::{TouchInput, TouchPhase};
use bevy_math::Vec2;
use iced_core::keyboard::Key as IcedKey;

pub fn key_code(virtual_keycode: &BevyKey) -> IcedKey {
    use iced_core::keyboard::key::Named;
    match virtual_keycode {
        BevyKey::Character(s) => IcedKey::Character(s.clone()),
        BevyKey::Alt => IcedKey::Named(Named::Alt),
        BevyKey::AltGraph => IcedKey::Named(Named::AltGraph),
        BevyKey::CapsLock => IcedKey::Named(Named::CapsLock),
        BevyKey::Control => IcedKey::Named(Named::Control),
        BevyKey::Fn => IcedKey::Named(Named::Fn),
        BevyKey::FnLock => IcedKey::Named(Named::FnLock),
        BevyKey::NumLock => IcedKey::Named(Named::NumLock),
        BevyKey::ScrollLock => IcedKey::Named(Named::ScrollLock),
        BevyKey::Shift => IcedKey::Named(Named::Shift),
        BevyKey::Symbol => IcedKey::Named(Named::Symbol),
        BevyKey::SymbolLock => IcedKey::Named(Named::SymbolLock),
        BevyKey::Meta => IcedKey::Named(Named::Meta),
        BevyKey::Hyper => IcedKey::Named(Named::Hyper),
        BevyKey::Super => IcedKey::Named(Named::Super),
        BevyKey::Enter => IcedKey::Named(Named::Enter),
        BevyKey::Tab => IcedKey::Named(Named::Tab),
        BevyKey::Space => IcedKey::Named(Named::Space),
        BevyKey::ArrowDown => IcedKey::Named(Named::ArrowDown),
        BevyKey::ArrowLeft => IcedKey::Named(Named::ArrowLeft),
        BevyKey::ArrowRight => IcedKey::Named(Named::ArrowRight),
        BevyKey::ArrowUp => IcedKey::Named(Named::ArrowUp),
        BevyKey::End => IcedKey::Named(Named::End),
        BevyKey::Home => IcedKey::Named(Named::Home),
        BevyKey::PageDown => IcedKey::Named(Named::PageDown),
        BevyKey::PageUp => IcedKey::Named(Named::PageUp),
        BevyKey::Backspace => IcedKey::Named(Named::Backspace),
        BevyKey::Clear => IcedKey::Named(Named::Clear),
        BevyKey::Copy => IcedKey::Named(Named::Copy),
        BevyKey::CrSel => IcedKey::Named(Named::CrSel),
        BevyKey::Cut => IcedKey::Named(Named::Cut),
        BevyKey::Delete => IcedKey::Named(Named::Delete),
        BevyKey::EraseEof => IcedKey::Named(Named::EraseEof),
        BevyKey::ExSel => IcedKey::Named(Named::ExSel),
        BevyKey::Insert => IcedKey::Named(Named::Insert),
        BevyKey::Paste => IcedKey::Named(Named::Paste),
        BevyKey::Redo => IcedKey::Named(Named::Redo),
        BevyKey::Undo => IcedKey::Named(Named::Undo),
        BevyKey::Accept => IcedKey::Named(Named::Accept),
        BevyKey::Again => IcedKey::Named(Named::Again),
        BevyKey::Attn => IcedKey::Named(Named::Attn),
        BevyKey::Cancel => IcedKey::Named(Named::Cancel),
        BevyKey::ContextMenu => IcedKey::Named(Named::ContextMenu),
        BevyKey::Escape => IcedKey::Named(Named::Escape),
        BevyKey::Execute => IcedKey::Named(Named::Execute),
        BevyKey::Find => IcedKey::Named(Named::Find),
        BevyKey::Help => IcedKey::Named(Named::Help),
        BevyKey::Pause => IcedKey::Named(Named::Pause),
        BevyKey::Play => IcedKey::Named(Named::Play),
        BevyKey::Props => IcedKey::Named(Named::Props),
        BevyKey::Select => IcedKey::Named(Named::Select),
        BevyKey::ZoomIn => IcedKey::Named(Named::ZoomIn),
        BevyKey::ZoomOut => IcedKey::Named(Named::ZoomOut),
        BevyKey::BrightnessDown => IcedKey::Named(Named::BrightnessDown),
        BevyKey::BrightnessUp => IcedKey::Named(Named::BrightnessUp),
        BevyKey::Eject => IcedKey::Named(Named::Eject),
        BevyKey::LogOff => IcedKey::Named(Named::LogOff),
        BevyKey::Power => IcedKey::Named(Named::Power),
        BevyKey::PowerOff => IcedKey::Named(Named::PowerOff),
        BevyKey::PrintScreen => IcedKey::Named(Named::PrintScreen),
        BevyKey::Hibernate => IcedKey::Named(Named::Hibernate),
        BevyKey::Standby => IcedKey::Named(Named::Standby),
        BevyKey::WakeUp => IcedKey::Named(Named::WakeUp),
        BevyKey::AllCandidates => IcedKey::Named(Named::AllCandidates),
        BevyKey::Alphanumeric => IcedKey::Named(Named::Alphanumeric),
        BevyKey::CodeInput => IcedKey::Named(Named::CodeInput),
        BevyKey::Compose => IcedKey::Named(Named::Compose),
        BevyKey::Convert => IcedKey::Named(Named::Convert),
        BevyKey::FinalMode => IcedKey::Named(Named::FinalMode),
        BevyKey::GroupFirst => IcedKey::Named(Named::GroupFirst),
        BevyKey::GroupLast => IcedKey::Named(Named::GroupLast),
        BevyKey::GroupNext => IcedKey::Named(Named::GroupNext),
        BevyKey::GroupPrevious => IcedKey::Named(Named::GroupPrevious),
        BevyKey::ModeChange => IcedKey::Named(Named::ModeChange),
        BevyKey::NextCandidate => IcedKey::Named(Named::NextCandidate),
        BevyKey::NonConvert => IcedKey::Named(Named::NonConvert),
        BevyKey::PreviousCandidate => IcedKey::Named(Named::PreviousCandidate),
        BevyKey::Process => IcedKey::Named(Named::Process),
        BevyKey::SingleCandidate => IcedKey::Named(Named::SingleCandidate),
        BevyKey::HangulMode => IcedKey::Named(Named::HangulMode),
        BevyKey::HanjaMode => IcedKey::Named(Named::HanjaMode),
        BevyKey::JunjaMode => IcedKey::Named(Named::JunjaMode),
        BevyKey::Eisu => IcedKey::Named(Named::Eisu),
        BevyKey::Hankaku => IcedKey::Named(Named::Hankaku),
        BevyKey::Hiragana => IcedKey::Named(Named::Hiragana),
        BevyKey::HiraganaKatakana => IcedKey::Named(Named::HiraganaKatakana),
        BevyKey::KanaMode => IcedKey::Named(Named::KanaMode),
        BevyKey::KanjiMode => IcedKey::Named(Named::KanjiMode),
        BevyKey::Katakana => IcedKey::Named(Named::Katakana),
        BevyKey::Romaji => IcedKey::Named(Named::Romaji),
        BevyKey::Zenkaku => IcedKey::Named(Named::Zenkaku),
        BevyKey::ZenkakuHankaku => IcedKey::Named(Named::ZenkakuHankaku),
        BevyKey::Soft1 => IcedKey::Named(Named::Soft1),
        BevyKey::Soft2 => IcedKey::Named(Named::Soft2),
        BevyKey::Soft3 => IcedKey::Named(Named::Soft3),
        BevyKey::Soft4 => IcedKey::Named(Named::Soft4),
        BevyKey::ChannelDown => IcedKey::Named(Named::ChannelDown),
        BevyKey::ChannelUp => IcedKey::Named(Named::ChannelUp),
        BevyKey::Close => IcedKey::Named(Named::Close),
        BevyKey::MailForward => IcedKey::Named(Named::MailForward),
        BevyKey::MailReply => IcedKey::Named(Named::MailReply),
        BevyKey::MailSend => IcedKey::Named(Named::MailSend),
        BevyKey::MediaClose => IcedKey::Named(Named::MediaClose),
        BevyKey::MediaFastForward => IcedKey::Named(Named::MediaFastForward),
        BevyKey::MediaPause => IcedKey::Named(Named::MediaPause),
        BevyKey::MediaPlay => IcedKey::Named(Named::MediaPlay),
        BevyKey::MediaPlayPause => IcedKey::Named(Named::MediaPlayPause),
        BevyKey::MediaRecord => IcedKey::Named(Named::MediaRecord),
        BevyKey::MediaRewind => IcedKey::Named(Named::MediaRewind),
        BevyKey::MediaStop => IcedKey::Named(Named::MediaStop),
        BevyKey::MediaTrackNext => IcedKey::Named(Named::MediaTrackNext),
        BevyKey::MediaTrackPrevious => IcedKey::Named(Named::MediaTrackPrevious),
        BevyKey::New => IcedKey::Named(Named::New),
        BevyKey::Open => IcedKey::Named(Named::Open),
        BevyKey::Print => IcedKey::Named(Named::Print),
        BevyKey::Save => IcedKey::Named(Named::Save),
        BevyKey::SpellCheck => IcedKey::Named(Named::SpellCheck),
        BevyKey::Key11 => IcedKey::Named(Named::Key11),
        BevyKey::Key12 => IcedKey::Named(Named::Key12),
        BevyKey::AudioBalanceLeft => IcedKey::Named(Named::AudioBalanceLeft),
        BevyKey::AudioBalanceRight => IcedKey::Named(Named::AudioBalanceRight),
        BevyKey::AudioBassBoostDown => IcedKey::Named(Named::AudioBassBoostDown),
        BevyKey::AudioBassBoostToggle => IcedKey::Named(Named::AudioBassBoostToggle),
        BevyKey::AudioBassBoostUp => IcedKey::Named(Named::AudioBassBoostUp),
        BevyKey::AudioFaderFront => IcedKey::Named(Named::AudioFaderFront),
        BevyKey::AudioFaderRear => IcedKey::Named(Named::AudioFaderRear),
        BevyKey::AudioSurroundModeNext => IcedKey::Named(Named::AudioSurroundModeNext),
        BevyKey::AudioTrebleDown => IcedKey::Named(Named::AudioTrebleDown),
        BevyKey::AudioTrebleUp => IcedKey::Named(Named::AudioTrebleUp),
        BevyKey::AudioVolumeDown => IcedKey::Named(Named::AudioVolumeDown),
        BevyKey::AudioVolumeUp => IcedKey::Named(Named::AudioVolumeUp),
        BevyKey::AudioVolumeMute => IcedKey::Named(Named::AudioVolumeMute),
        BevyKey::MicrophoneToggle => IcedKey::Named(Named::MicrophoneToggle),
        BevyKey::MicrophoneVolumeDown => IcedKey::Named(Named::MicrophoneVolumeDown),
        BevyKey::MicrophoneVolumeUp => IcedKey::Named(Named::MicrophoneVolumeUp),
        BevyKey::MicrophoneVolumeMute => IcedKey::Named(Named::MicrophoneVolumeMute),
        BevyKey::SpeechCorrectionList => IcedKey::Named(Named::SpeechCorrectionList),
        BevyKey::SpeechInputToggle => IcedKey::Named(Named::SpeechInputToggle),
        BevyKey::LaunchApplication1 => IcedKey::Named(Named::LaunchApplication1),
        BevyKey::LaunchApplication2 => IcedKey::Named(Named::LaunchApplication2),
        BevyKey::LaunchCalendar => IcedKey::Named(Named::LaunchCalendar),
        BevyKey::LaunchContacts => IcedKey::Named(Named::LaunchContacts),
        BevyKey::LaunchMail => IcedKey::Named(Named::LaunchMail),
        BevyKey::LaunchMediaPlayer => IcedKey::Named(Named::LaunchMediaPlayer),
        BevyKey::LaunchMusicPlayer => IcedKey::Named(Named::LaunchMusicPlayer),
        BevyKey::LaunchPhone => IcedKey::Named(Named::LaunchPhone),
        BevyKey::LaunchScreenSaver => IcedKey::Named(Named::LaunchScreenSaver),
        BevyKey::LaunchSpreadsheet => IcedKey::Named(Named::LaunchSpreadsheet),
        BevyKey::LaunchWebBrowser => IcedKey::Named(Named::LaunchWebBrowser),
        BevyKey::LaunchWebCam => IcedKey::Named(Named::LaunchWebCam),
        BevyKey::LaunchWordProcessor => IcedKey::Named(Named::LaunchWordProcessor),
        BevyKey::BrowserBack => IcedKey::Named(Named::BrowserBack),
        BevyKey::BrowserFavorites => IcedKey::Named(Named::BrowserFavorites),
        BevyKey::BrowserForward => IcedKey::Named(Named::BrowserForward),
        BevyKey::BrowserHome => IcedKey::Named(Named::BrowserHome),
        BevyKey::BrowserRefresh => IcedKey::Named(Named::BrowserRefresh),
        BevyKey::BrowserSearch => IcedKey::Named(Named::BrowserSearch),
        BevyKey::BrowserStop => IcedKey::Named(Named::BrowserStop),
        BevyKey::AppSwitch => IcedKey::Named(Named::AppSwitch),
        BevyKey::Call => IcedKey::Named(Named::Call),
        BevyKey::Camera => IcedKey::Named(Named::Camera),
        BevyKey::CameraFocus => IcedKey::Named(Named::CameraFocus),
        BevyKey::EndCall => IcedKey::Named(Named::EndCall),
        BevyKey::GoBack => IcedKey::Named(Named::GoBack),
        BevyKey::GoHome => IcedKey::Named(Named::GoHome),
        BevyKey::HeadsetHook => IcedKey::Named(Named::HeadsetHook),
        BevyKey::LastNumberRedial => IcedKey::Named(Named::LastNumberRedial),
        BevyKey::Notification => IcedKey::Named(Named::Notification),
        BevyKey::MannerMode => IcedKey::Named(Named::MannerMode),
        BevyKey::VoiceDial => IcedKey::Named(Named::VoiceDial),
        BevyKey::TV => IcedKey::Named(Named::TV),
        BevyKey::TV3DMode => IcedKey::Named(Named::TV3DMode),
        BevyKey::TVAntennaCable => IcedKey::Named(Named::TVAntennaCable),
        BevyKey::TVAudioDescription => IcedKey::Named(Named::TVAudioDescription),
        BevyKey::TVAudioDescriptionMixDown => IcedKey::Named(Named::TVAudioDescriptionMixDown),
        BevyKey::TVAudioDescriptionMixUp => IcedKey::Named(Named::TVAudioDescriptionMixUp),
        BevyKey::TVContentsMenu => IcedKey::Named(Named::TVContentsMenu),
        BevyKey::TVDataService => IcedKey::Named(Named::TVDataService),
        BevyKey::TVInput => IcedKey::Named(Named::TVInput),
        BevyKey::TVInputComponent1 => IcedKey::Named(Named::TVInputComponent1),
        BevyKey::TVInputComponent2 => IcedKey::Named(Named::TVInputComponent2),
        BevyKey::TVInputComposite1 => IcedKey::Named(Named::TVInputComposite1),
        BevyKey::TVInputComposite2 => IcedKey::Named(Named::TVInputComposite2),
        BevyKey::TVInputHDMI1 => IcedKey::Named(Named::TVInputHDMI1),
        BevyKey::TVInputHDMI2 => IcedKey::Named(Named::TVInputHDMI2),
        BevyKey::TVInputHDMI3 => IcedKey::Named(Named::TVInputHDMI3),
        BevyKey::TVInputHDMI4 => IcedKey::Named(Named::TVInputHDMI4),
        BevyKey::TVInputVGA1 => IcedKey::Named(Named::TVInputVGA1),
        BevyKey::TVMediaContext => IcedKey::Named(Named::TVMediaContext),
        BevyKey::TVNetwork => IcedKey::Named(Named::TVNetwork),
        BevyKey::TVNumberEntry => IcedKey::Named(Named::TVNumberEntry),
        BevyKey::TVPower => IcedKey::Named(Named::TVPower),
        BevyKey::TVRadioService => IcedKey::Named(Named::TVRadioService),
        BevyKey::TVSatellite => IcedKey::Named(Named::TVSatellite),
        BevyKey::TVSatelliteBS => IcedKey::Named(Named::TVSatelliteBS),
        BevyKey::TVSatelliteCS => IcedKey::Named(Named::TVSatelliteCS),
        BevyKey::TVSatelliteToggle => IcedKey::Named(Named::TVSatelliteToggle),
        BevyKey::TVTerrestrialAnalog => IcedKey::Named(Named::TVTerrestrialAnalog),
        BevyKey::TVTerrestrialDigital => IcedKey::Named(Named::TVTerrestrialDigital),
        BevyKey::TVTimer => IcedKey::Named(Named::TVTimer),
        BevyKey::AVRInput => IcedKey::Named(Named::AVRInput),
        BevyKey::AVRPower => IcedKey::Named(Named::AVRPower),
        BevyKey::ColorF0Red => IcedKey::Named(Named::ColorF0Red),
        BevyKey::ColorF1Green => IcedKey::Named(Named::ColorF1Green),
        BevyKey::ColorF2Yellow => IcedKey::Named(Named::ColorF2Yellow),
        BevyKey::ColorF3Blue => IcedKey::Named(Named::ColorF3Blue),
        BevyKey::ColorF4Grey => IcedKey::Named(Named::ColorF4Grey),
        BevyKey::ColorF5Brown => IcedKey::Named(Named::ColorF5Brown),
        BevyKey::ClosedCaptionToggle => IcedKey::Named(Named::ClosedCaptionToggle),
        BevyKey::Dimmer => IcedKey::Named(Named::Dimmer),
        BevyKey::DisplaySwap => IcedKey::Named(Named::DisplaySwap),
        BevyKey::DVR => IcedKey::Named(Named::DVR),
        BevyKey::Exit => IcedKey::Named(Named::Exit),
        BevyKey::FavoriteClear0 => IcedKey::Named(Named::FavoriteClear0),
        BevyKey::FavoriteClear1 => IcedKey::Named(Named::FavoriteClear1),
        BevyKey::FavoriteClear2 => IcedKey::Named(Named::FavoriteClear2),
        BevyKey::FavoriteClear3 => IcedKey::Named(Named::FavoriteClear3),
        BevyKey::FavoriteRecall0 => IcedKey::Named(Named::FavoriteRecall0),
        BevyKey::FavoriteRecall1 => IcedKey::Named(Named::FavoriteRecall1),
        BevyKey::FavoriteRecall2 => IcedKey::Named(Named::FavoriteRecall2),
        BevyKey::FavoriteRecall3 => IcedKey::Named(Named::FavoriteRecall3),
        BevyKey::FavoriteStore0 => IcedKey::Named(Named::FavoriteStore0),
        BevyKey::FavoriteStore1 => IcedKey::Named(Named::FavoriteStore1),
        BevyKey::FavoriteStore2 => IcedKey::Named(Named::FavoriteStore2),
        BevyKey::FavoriteStore3 => IcedKey::Named(Named::FavoriteStore3),
        BevyKey::Guide => IcedKey::Named(Named::Guide),
        BevyKey::GuideNextDay => IcedKey::Named(Named::GuideNextDay),
        BevyKey::GuidePreviousDay => IcedKey::Named(Named::GuidePreviousDay),
        BevyKey::Info => IcedKey::Named(Named::Info),
        BevyKey::InstantReplay => IcedKey::Named(Named::InstantReplay),
        BevyKey::Link => IcedKey::Named(Named::Link),
        BevyKey::ListProgram => IcedKey::Named(Named::ListProgram),
        BevyKey::LiveContent => IcedKey::Named(Named::LiveContent),
        BevyKey::Lock => IcedKey::Named(Named::Lock),
        BevyKey::MediaApps => IcedKey::Named(Named::MediaApps),
        BevyKey::MediaAudioTrack => IcedKey::Named(Named::MediaAudioTrack),
        BevyKey::MediaLast => IcedKey::Named(Named::MediaLast),
        BevyKey::MediaSkipBackward => IcedKey::Named(Named::MediaSkipBackward),
        BevyKey::MediaSkipForward => IcedKey::Named(Named::MediaSkipForward),
        BevyKey::MediaStepBackward => IcedKey::Named(Named::MediaStepBackward),
        BevyKey::MediaStepForward => IcedKey::Named(Named::MediaStepForward),
        BevyKey::MediaTopMenu => IcedKey::Named(Named::MediaTopMenu),
        BevyKey::NavigateIn => IcedKey::Named(Named::NavigateIn),
        BevyKey::NavigateNext => IcedKey::Named(Named::NavigateNext),
        BevyKey::NavigateOut => IcedKey::Named(Named::NavigateOut),
        BevyKey::NavigatePrevious => IcedKey::Named(Named::NavigatePrevious),
        BevyKey::NextFavoriteChannel => IcedKey::Named(Named::NextFavoriteChannel),
        BevyKey::NextUserProfile => IcedKey::Named(Named::NextUserProfile),
        BevyKey::OnDemand => IcedKey::Named(Named::OnDemand),
        BevyKey::Pairing => IcedKey::Named(Named::Pairing),
        BevyKey::PinPDown => IcedKey::Named(Named::PinPDown),
        BevyKey::PinPMove => IcedKey::Named(Named::PinPMove),
        BevyKey::PinPToggle => IcedKey::Named(Named::PinPToggle),
        BevyKey::PinPUp => IcedKey::Named(Named::PinPUp),
        BevyKey::PlaySpeedDown => IcedKey::Named(Named::PlaySpeedDown),
        BevyKey::PlaySpeedReset => IcedKey::Named(Named::PlaySpeedReset),
        BevyKey::PlaySpeedUp => IcedKey::Named(Named::PlaySpeedUp),
        BevyKey::RandomToggle => IcedKey::Named(Named::RandomToggle),
        BevyKey::RcLowBattery => IcedKey::Named(Named::RcLowBattery),
        BevyKey::RecordSpeedNext => IcedKey::Named(Named::RecordSpeedNext),
        BevyKey::RfBypass => IcedKey::Named(Named::RfBypass),
        BevyKey::ScanChannelsToggle => IcedKey::Named(Named::ScanChannelsToggle),
        BevyKey::ScreenModeNext => IcedKey::Named(Named::ScreenModeNext),
        BevyKey::Settings => IcedKey::Named(Named::Settings),
        BevyKey::SplitScreenToggle => IcedKey::Named(Named::SplitScreenToggle),
        BevyKey::STBInput => IcedKey::Named(Named::STBInput),
        BevyKey::STBPower => IcedKey::Named(Named::STBPower),
        BevyKey::Subtitle => IcedKey::Named(Named::Subtitle),
        BevyKey::Teletext => IcedKey::Named(Named::Teletext),
        BevyKey::VideoModeNext => IcedKey::Named(Named::VideoModeNext),
        BevyKey::Wink => IcedKey::Named(Named::Wink),
        BevyKey::ZoomToggle => IcedKey::Named(Named::ZoomToggle),
        BevyKey::F1 => IcedKey::Named(Named::F1),
        BevyKey::F2 => IcedKey::Named(Named::F2),
        BevyKey::F3 => IcedKey::Named(Named::F3),
        BevyKey::F4 => IcedKey::Named(Named::F4),
        BevyKey::F5 => IcedKey::Named(Named::F5),
        BevyKey::F6 => IcedKey::Named(Named::F6),
        BevyKey::F7 => IcedKey::Named(Named::F7),
        BevyKey::F8 => IcedKey::Named(Named::F8),
        BevyKey::F9 => IcedKey::Named(Named::F9),
        BevyKey::F10 => IcedKey::Named(Named::F10),
        BevyKey::F11 => IcedKey::Named(Named::F11),
        BevyKey::F12 => IcedKey::Named(Named::F12),
        BevyKey::F13 => IcedKey::Named(Named::F13),
        BevyKey::F14 => IcedKey::Named(Named::F14),
        BevyKey::F15 => IcedKey::Named(Named::F15),
        BevyKey::F16 => IcedKey::Named(Named::F16),
        BevyKey::F17 => IcedKey::Named(Named::F17),
        BevyKey::F18 => IcedKey::Named(Named::F18),
        BevyKey::F19 => IcedKey::Named(Named::F19),
        BevyKey::F20 => IcedKey::Named(Named::F20),
        BevyKey::F21 => IcedKey::Named(Named::F21),
        BevyKey::F22 => IcedKey::Named(Named::F22),
        BevyKey::F23 => IcedKey::Named(Named::F23),
        BevyKey::F24 => IcedKey::Named(Named::F24),
        BevyKey::F25 => IcedKey::Named(Named::F25),
        BevyKey::F26 => IcedKey::Named(Named::F26),
        BevyKey::F27 => IcedKey::Named(Named::F27),
        BevyKey::F28 => IcedKey::Named(Named::F28),
        BevyKey::F29 => IcedKey::Named(Named::F29),
        BevyKey::F30 => IcedKey::Named(Named::F30),
        BevyKey::F31 => IcedKey::Named(Named::F31),
        BevyKey::F32 => IcedKey::Named(Named::F32),
        BevyKey::F33 => IcedKey::Named(Named::F33),
        BevyKey::F34 => IcedKey::Named(Named::F34),
        BevyKey::F35 => IcedKey::Named(Named::F35),
        BevyKey::Unidentified(_) | BevyKey::Dead(_) => IcedKey::Unidentified,
        _ => IcedKey::Unidentified,
    }
}

pub const fn mouse_button(button: MouseButton) -> iced_core::mouse::Button {
    use iced_core::mouse::Button;
    match button {
        MouseButton::Left => Button::Left,
        MouseButton::Right => Button::Right,
        MouseButton::Middle => Button::Middle,
        MouseButton::Other(val) => Button::Other(val),
        MouseButton::Back => Button::Back,
        MouseButton::Forward => Button::Forward,
    }
}

pub const fn touch_event(bevy_touch_input: &TouchInput) -> touch::Event {
    match *bevy_touch_input {
        TouchInput {
            phase: TouchPhase::Started,
            position: Vec2 { x, y },
            id: finger,
            ..
        } => touch::Event::FingerPressed {
            id: Finger(finger),
            position: Point { x, y },
        },
        TouchInput {
            phase: TouchPhase::Canceled,
            position: Vec2 { x, y },
            id: finger,
            ..
        } => touch::Event::FingerLost {
            id: Finger(finger),
            position: Point { x, y },
        },
        TouchInput {
            phase: TouchPhase::Ended,
            position: Vec2 { x, y },
            id: finger,
            ..
        } => touch::Event::FingerLifted {
            id: Finger(finger),
            position: Point { x, y },
        },
        TouchInput {
            phase: TouchPhase::Moved,
            position: Vec2 { x, y },
            id: finger,
            ..
        } => touch::Event::FingerMoved {
            id: Finger(finger),
            position: Point { x, y },
        },
    }
}