mirror of
https://github.com/rust-windowing/winit.git
synced 2026-08-29 04:40:04 -04:00
@@ -29,6 +29,7 @@ bitflags = "2"
|
|||||||
cfg_aliases = "0.2.1"
|
cfg_aliases = "0.2.1"
|
||||||
cursor-icon = "1.1.0"
|
cursor-icon = "1.1.0"
|
||||||
dpi = { version = "0.1.2", path = "dpi" }
|
dpi = { version = "0.1.2", path = "dpi" }
|
||||||
|
keyboard-types = "0.8.0"
|
||||||
mint = "0.5.6"
|
mint = "0.5.6"
|
||||||
rwh_06 = { package = "raw-window-handle", version = "0.6", features = ["std"] }
|
rwh_06 = { package = "raw-window-handle", version = "0.6", features = ["std"] }
|
||||||
serde = { version = "1", features = ["serde_derive"] }
|
serde = { version = "1", features = ["serde_derive"] }
|
||||||
|
|||||||
@@ -2,14 +2,6 @@
|
|||||||
|
|
||||||
These images are used in the documentation of `winit`.
|
These images are used in the documentation of `winit`.
|
||||||
|
|
||||||
## keyboard_*.svg
|
|
||||||
|
|
||||||
These files are a modified version of "[ANSI US QWERTY (Windows)](https://commons.wikimedia.org/wiki/File:ANSI_US_QWERTY_(Windows).svg)"
|
|
||||||
by [Tomiĉo] (https://commons.wikimedia.org/wiki/User:Tomi%C4%89o). It was
|
|
||||||
originally released under the [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/deed.en)
|
|
||||||
License. Minor modifications have been made by [John Nunley](https://github.com/notgull),
|
|
||||||
which have been released under the same license as a derivative work.
|
|
||||||
|
|
||||||
## `coordinate-systems*`
|
## `coordinate-systems*`
|
||||||
|
|
||||||
These files are created by [Mads Marquart](https://github.com/madsmtm) using
|
These files are created by [Mads Marquart](https://github.com/madsmtm) using
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 73 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 73 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 73 KiB |
File diff suppressed because one or more lines are too long
|
Before Width: | Height: | Size: 73 KiB |
@@ -13,12 +13,20 @@ rust-version.workspace = true
|
|||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
serde = ["dep:serde", "cursor-icon/serde", "smol_str/serde", "dpi/serde", "bitflags/serde"]
|
serde = [
|
||||||
|
"dep:serde",
|
||||||
|
"bitflags/serde",
|
||||||
|
"cursor-icon/serde",
|
||||||
|
"dpi/serde",
|
||||||
|
"keyboard-types/serde",
|
||||||
|
"smol_str/serde",
|
||||||
|
]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
bitflags.workspace = true
|
bitflags.workspace = true
|
||||||
cursor-icon.workspace = true
|
cursor-icon.workspace = true
|
||||||
dpi.workspace = true
|
dpi.workspace = true
|
||||||
|
keyboard-types.workspace = true
|
||||||
rwh_06.workspace = true
|
rwh_06.workspace = true
|
||||||
serde = { workspace = true, optional = true }
|
serde = { workspace = true, optional = true }
|
||||||
smol_str.workspace = true
|
smol_str.workspace = true
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@@ -1,530 +0,0 @@
|
|||||||
use smol_str::SmolStr;
|
|
||||||
use winit_core::keyboard::{Key, KeyCode, NamedKey, NativeKey, NativeKeyCode, PhysicalKey};
|
|
||||||
|
|
||||||
pub trait FromAttributeValue {
|
|
||||||
fn from_attribute_value(kav: &str) -> Self
|
|
||||||
where
|
|
||||||
Self: Sized;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl FromAttributeValue for Key {
|
|
||||||
fn from_attribute_value(kav: &str) -> Self {
|
|
||||||
Key::Named(match kav {
|
|
||||||
"Unidentified" => return Key::Unidentified(NativeKey::Web(SmolStr::new(kav))),
|
|
||||||
"Dead" => return Key::Dead(None),
|
|
||||||
"Alt" => NamedKey::Alt,
|
|
||||||
"AltGraph" => NamedKey::AltGraph,
|
|
||||||
"CapsLock" => NamedKey::CapsLock,
|
|
||||||
"Control" => NamedKey::Control,
|
|
||||||
"Fn" => NamedKey::Fn,
|
|
||||||
"FnLock" => NamedKey::FnLock,
|
|
||||||
"NumLock" => NamedKey::NumLock,
|
|
||||||
"ScrollLock" => NamedKey::ScrollLock,
|
|
||||||
"Shift" => NamedKey::Shift,
|
|
||||||
"Symbol" => NamedKey::Symbol,
|
|
||||||
"SymbolLock" => NamedKey::SymbolLock,
|
|
||||||
#[allow(deprecated)]
|
|
||||||
"Super" => NamedKey::Super,
|
|
||||||
#[allow(deprecated)]
|
|
||||||
"Hyper" => NamedKey::Hyper,
|
|
||||||
"Meta" => NamedKey::Meta,
|
|
||||||
"Enter" => NamedKey::Enter,
|
|
||||||
"Tab" => NamedKey::Tab,
|
|
||||||
"ArrowDown" => NamedKey::ArrowDown,
|
|
||||||
"ArrowLeft" => NamedKey::ArrowLeft,
|
|
||||||
"ArrowRight" => NamedKey::ArrowRight,
|
|
||||||
"ArrowUp" => NamedKey::ArrowUp,
|
|
||||||
"End" => NamedKey::End,
|
|
||||||
"Home" => NamedKey::Home,
|
|
||||||
"PageDown" => NamedKey::PageDown,
|
|
||||||
"PageUp" => NamedKey::PageUp,
|
|
||||||
"Backspace" => NamedKey::Backspace,
|
|
||||||
"Clear" => NamedKey::Clear,
|
|
||||||
"Copy" => NamedKey::Copy,
|
|
||||||
"CrSel" => NamedKey::CrSel,
|
|
||||||
"Cut" => NamedKey::Cut,
|
|
||||||
"Delete" => NamedKey::Delete,
|
|
||||||
"EraseEof" => NamedKey::EraseEof,
|
|
||||||
"ExSel" => NamedKey::ExSel,
|
|
||||||
"Insert" => NamedKey::Insert,
|
|
||||||
"Paste" => NamedKey::Paste,
|
|
||||||
"Redo" => NamedKey::Redo,
|
|
||||||
"Undo" => NamedKey::Undo,
|
|
||||||
"Accept" => NamedKey::Accept,
|
|
||||||
"Again" => NamedKey::Again,
|
|
||||||
"Attn" => NamedKey::Attn,
|
|
||||||
"Cancel" => NamedKey::Cancel,
|
|
||||||
"ContextMenu" => NamedKey::ContextMenu,
|
|
||||||
"Escape" => NamedKey::Escape,
|
|
||||||
"Execute" => NamedKey::Execute,
|
|
||||||
"Find" => NamedKey::Find,
|
|
||||||
"Help" => NamedKey::Help,
|
|
||||||
"Pause" => NamedKey::Pause,
|
|
||||||
"Play" => NamedKey::Play,
|
|
||||||
"Props" => NamedKey::Props,
|
|
||||||
"Select" => NamedKey::Select,
|
|
||||||
"ZoomIn" => NamedKey::ZoomIn,
|
|
||||||
"ZoomOut" => NamedKey::ZoomOut,
|
|
||||||
"BrightnessDown" => NamedKey::BrightnessDown,
|
|
||||||
"BrightnessUp" => NamedKey::BrightnessUp,
|
|
||||||
"Eject" => NamedKey::Eject,
|
|
||||||
"LogOff" => NamedKey::LogOff,
|
|
||||||
"Power" => NamedKey::Power,
|
|
||||||
"PowerOff" => NamedKey::PowerOff,
|
|
||||||
"PrintScreen" => NamedKey::PrintScreen,
|
|
||||||
"Hibernate" => NamedKey::Hibernate,
|
|
||||||
"Standby" => NamedKey::Standby,
|
|
||||||
"WakeUp" => NamedKey::WakeUp,
|
|
||||||
"AllCandidates" => NamedKey::AllCandidates,
|
|
||||||
"Alphanumeric" => NamedKey::Alphanumeric,
|
|
||||||
"CodeInput" => NamedKey::CodeInput,
|
|
||||||
"Compose" => NamedKey::Compose,
|
|
||||||
"Convert" => NamedKey::Convert,
|
|
||||||
"FinalMode" => NamedKey::FinalMode,
|
|
||||||
"GroupFirst" => NamedKey::GroupFirst,
|
|
||||||
"GroupLast" => NamedKey::GroupLast,
|
|
||||||
"GroupNext" => NamedKey::GroupNext,
|
|
||||||
"GroupPrevious" => NamedKey::GroupPrevious,
|
|
||||||
"ModeChange" => NamedKey::ModeChange,
|
|
||||||
"NextCandidate" => NamedKey::NextCandidate,
|
|
||||||
"NonConvert" => NamedKey::NonConvert,
|
|
||||||
"PreviousCandidate" => NamedKey::PreviousCandidate,
|
|
||||||
"Process" => NamedKey::Process,
|
|
||||||
"SingleCandidate" => NamedKey::SingleCandidate,
|
|
||||||
"HangulMode" => NamedKey::HangulMode,
|
|
||||||
"HanjaMode" => NamedKey::HanjaMode,
|
|
||||||
"JunjaMode" => NamedKey::JunjaMode,
|
|
||||||
"Eisu" => NamedKey::Eisu,
|
|
||||||
"Hankaku" => NamedKey::Hankaku,
|
|
||||||
"Hiragana" => NamedKey::Hiragana,
|
|
||||||
"HiraganaKatakana" => NamedKey::HiraganaKatakana,
|
|
||||||
"KanaMode" => NamedKey::KanaMode,
|
|
||||||
"KanjiMode" => NamedKey::KanjiMode,
|
|
||||||
"Katakana" => NamedKey::Katakana,
|
|
||||||
"Romaji" => NamedKey::Romaji,
|
|
||||||
"Zenkaku" => NamedKey::Zenkaku,
|
|
||||||
"ZenkakuHankaku" => NamedKey::ZenkakuHankaku,
|
|
||||||
"Soft1" => NamedKey::Soft1,
|
|
||||||
"Soft2" => NamedKey::Soft2,
|
|
||||||
"Soft3" => NamedKey::Soft3,
|
|
||||||
"Soft4" => NamedKey::Soft4,
|
|
||||||
"ChannelDown" => NamedKey::ChannelDown,
|
|
||||||
"ChannelUp" => NamedKey::ChannelUp,
|
|
||||||
"Close" => NamedKey::Close,
|
|
||||||
"MailForward" => NamedKey::MailForward,
|
|
||||||
"MailReply" => NamedKey::MailReply,
|
|
||||||
"MailSend" => NamedKey::MailSend,
|
|
||||||
"MediaClose" => NamedKey::MediaClose,
|
|
||||||
"MediaFastForward" => NamedKey::MediaFastForward,
|
|
||||||
"MediaPause" => NamedKey::MediaPause,
|
|
||||||
"MediaPlay" => NamedKey::MediaPlay,
|
|
||||||
"MediaPlayPause" => NamedKey::MediaPlayPause,
|
|
||||||
"MediaRecord" => NamedKey::MediaRecord,
|
|
||||||
"MediaRewind" => NamedKey::MediaRewind,
|
|
||||||
"MediaStop" => NamedKey::MediaStop,
|
|
||||||
"MediaTrackNext" => NamedKey::MediaTrackNext,
|
|
||||||
"MediaTrackPrevious" => NamedKey::MediaTrackPrevious,
|
|
||||||
"New" => NamedKey::New,
|
|
||||||
"Open" => NamedKey::Open,
|
|
||||||
"Print" => NamedKey::Print,
|
|
||||||
"Save" => NamedKey::Save,
|
|
||||||
"SpellCheck" => NamedKey::SpellCheck,
|
|
||||||
"Key11" => NamedKey::Key11,
|
|
||||||
"Key12" => NamedKey::Key12,
|
|
||||||
"AudioBalanceLeft" => NamedKey::AudioBalanceLeft,
|
|
||||||
"AudioBalanceRight" => NamedKey::AudioBalanceRight,
|
|
||||||
"AudioBassBoostDown" => NamedKey::AudioBassBoostDown,
|
|
||||||
"AudioBassBoostToggle" => NamedKey::AudioBassBoostToggle,
|
|
||||||
"AudioBassBoostUp" => NamedKey::AudioBassBoostUp,
|
|
||||||
"AudioFaderFront" => NamedKey::AudioFaderFront,
|
|
||||||
"AudioFaderRear" => NamedKey::AudioFaderRear,
|
|
||||||
"AudioSurroundModeNext" => NamedKey::AudioSurroundModeNext,
|
|
||||||
"AudioTrebleDown" => NamedKey::AudioTrebleDown,
|
|
||||||
"AudioTrebleUp" => NamedKey::AudioTrebleUp,
|
|
||||||
"AudioVolumeDown" => NamedKey::AudioVolumeDown,
|
|
||||||
"AudioVolumeUp" => NamedKey::AudioVolumeUp,
|
|
||||||
"AudioVolumeMute" => NamedKey::AudioVolumeMute,
|
|
||||||
"MicrophoneToggle" => NamedKey::MicrophoneToggle,
|
|
||||||
"MicrophoneVolumeDown" => NamedKey::MicrophoneVolumeDown,
|
|
||||||
"MicrophoneVolumeUp" => NamedKey::MicrophoneVolumeUp,
|
|
||||||
"MicrophoneVolumeMute" => NamedKey::MicrophoneVolumeMute,
|
|
||||||
"SpeechCorrectionList" => NamedKey::SpeechCorrectionList,
|
|
||||||
"SpeechInputToggle" => NamedKey::SpeechInputToggle,
|
|
||||||
"LaunchApplication1" => NamedKey::LaunchApplication1,
|
|
||||||
"LaunchApplication2" => NamedKey::LaunchApplication2,
|
|
||||||
"LaunchCalendar" => NamedKey::LaunchCalendar,
|
|
||||||
"LaunchContacts" => NamedKey::LaunchContacts,
|
|
||||||
"LaunchMail" => NamedKey::LaunchMail,
|
|
||||||
"LaunchMediaPlayer" => NamedKey::LaunchMediaPlayer,
|
|
||||||
"LaunchMusicPlayer" => NamedKey::LaunchMusicPlayer,
|
|
||||||
"LaunchPhone" => NamedKey::LaunchPhone,
|
|
||||||
"LaunchScreenSaver" => NamedKey::LaunchScreenSaver,
|
|
||||||
"LaunchSpreadsheet" => NamedKey::LaunchSpreadsheet,
|
|
||||||
"LaunchWebBrowser" => NamedKey::LaunchWebBrowser,
|
|
||||||
"LaunchWebCam" => NamedKey::LaunchWebCam,
|
|
||||||
"LaunchWordProcessor" => NamedKey::LaunchWordProcessor,
|
|
||||||
"BrowserBack" => NamedKey::BrowserBack,
|
|
||||||
"BrowserFavorites" => NamedKey::BrowserFavorites,
|
|
||||||
"BrowserForward" => NamedKey::BrowserForward,
|
|
||||||
"BrowserHome" => NamedKey::BrowserHome,
|
|
||||||
"BrowserRefresh" => NamedKey::BrowserRefresh,
|
|
||||||
"BrowserSearch" => NamedKey::BrowserSearch,
|
|
||||||
"BrowserStop" => NamedKey::BrowserStop,
|
|
||||||
"AppSwitch" => NamedKey::AppSwitch,
|
|
||||||
"Call" => NamedKey::Call,
|
|
||||||
"Camera" => NamedKey::Camera,
|
|
||||||
"CameraFocus" => NamedKey::CameraFocus,
|
|
||||||
"EndCall" => NamedKey::EndCall,
|
|
||||||
"GoBack" => NamedKey::GoBack,
|
|
||||||
"GoHome" => NamedKey::GoHome,
|
|
||||||
"HeadsetHook" => NamedKey::HeadsetHook,
|
|
||||||
"LastNumberRedial" => NamedKey::LastNumberRedial,
|
|
||||||
"Notification" => NamedKey::Notification,
|
|
||||||
"MannerMode" => NamedKey::MannerMode,
|
|
||||||
"VoiceDial" => NamedKey::VoiceDial,
|
|
||||||
"TV" => NamedKey::TV,
|
|
||||||
"TV3DMode" => NamedKey::TV3DMode,
|
|
||||||
"TVAntennaCable" => NamedKey::TVAntennaCable,
|
|
||||||
"TVAudioDescription" => NamedKey::TVAudioDescription,
|
|
||||||
"TVAudioDescriptionMixDown" => NamedKey::TVAudioDescriptionMixDown,
|
|
||||||
"TVAudioDescriptionMixUp" => NamedKey::TVAudioDescriptionMixUp,
|
|
||||||
"TVContentsMenu" => NamedKey::TVContentsMenu,
|
|
||||||
"TVDataService" => NamedKey::TVDataService,
|
|
||||||
"TVInput" => NamedKey::TVInput,
|
|
||||||
"TVInputComponent1" => NamedKey::TVInputComponent1,
|
|
||||||
"TVInputComponent2" => NamedKey::TVInputComponent2,
|
|
||||||
"TVInputComposite1" => NamedKey::TVInputComposite1,
|
|
||||||
"TVInputComposite2" => NamedKey::TVInputComposite2,
|
|
||||||
"TVInputHDMI1" => NamedKey::TVInputHDMI1,
|
|
||||||
"TVInputHDMI2" => NamedKey::TVInputHDMI2,
|
|
||||||
"TVInputHDMI3" => NamedKey::TVInputHDMI3,
|
|
||||||
"TVInputHDMI4" => NamedKey::TVInputHDMI4,
|
|
||||||
"TVInputVGA1" => NamedKey::TVInputVGA1,
|
|
||||||
"TVMediaContext" => NamedKey::TVMediaContext,
|
|
||||||
"TVNetwork" => NamedKey::TVNetwork,
|
|
||||||
"TVNumberEntry" => NamedKey::TVNumberEntry,
|
|
||||||
"TVPower" => NamedKey::TVPower,
|
|
||||||
"TVRadioService" => NamedKey::TVRadioService,
|
|
||||||
"TVSatellite" => NamedKey::TVSatellite,
|
|
||||||
"TVSatelliteBS" => NamedKey::TVSatelliteBS,
|
|
||||||
"TVSatelliteCS" => NamedKey::TVSatelliteCS,
|
|
||||||
"TVSatelliteToggle" => NamedKey::TVSatelliteToggle,
|
|
||||||
"TVTerrestrialAnalog" => NamedKey::TVTerrestrialAnalog,
|
|
||||||
"TVTerrestrialDigital" => NamedKey::TVTerrestrialDigital,
|
|
||||||
"TVTimer" => NamedKey::TVTimer,
|
|
||||||
"AVRInput" => NamedKey::AVRInput,
|
|
||||||
"AVRPower" => NamedKey::AVRPower,
|
|
||||||
"ColorF0Red" => NamedKey::ColorF0Red,
|
|
||||||
"ColorF1Green" => NamedKey::ColorF1Green,
|
|
||||||
"ColorF2Yellow" => NamedKey::ColorF2Yellow,
|
|
||||||
"ColorF3Blue" => NamedKey::ColorF3Blue,
|
|
||||||
"ColorF4Grey" => NamedKey::ColorF4Grey,
|
|
||||||
"ColorF5Brown" => NamedKey::ColorF5Brown,
|
|
||||||
"ClosedCaptionToggle" => NamedKey::ClosedCaptionToggle,
|
|
||||||
"Dimmer" => NamedKey::Dimmer,
|
|
||||||
"DisplaySwap" => NamedKey::DisplaySwap,
|
|
||||||
"DVR" => NamedKey::DVR,
|
|
||||||
"Exit" => NamedKey::Exit,
|
|
||||||
"FavoriteClear0" => NamedKey::FavoriteClear0,
|
|
||||||
"FavoriteClear1" => NamedKey::FavoriteClear1,
|
|
||||||
"FavoriteClear2" => NamedKey::FavoriteClear2,
|
|
||||||
"FavoriteClear3" => NamedKey::FavoriteClear3,
|
|
||||||
"FavoriteRecall0" => NamedKey::FavoriteRecall0,
|
|
||||||
"FavoriteRecall1" => NamedKey::FavoriteRecall1,
|
|
||||||
"FavoriteRecall2" => NamedKey::FavoriteRecall2,
|
|
||||||
"FavoriteRecall3" => NamedKey::FavoriteRecall3,
|
|
||||||
"FavoriteStore0" => NamedKey::FavoriteStore0,
|
|
||||||
"FavoriteStore1" => NamedKey::FavoriteStore1,
|
|
||||||
"FavoriteStore2" => NamedKey::FavoriteStore2,
|
|
||||||
"FavoriteStore3" => NamedKey::FavoriteStore3,
|
|
||||||
"Guide" => NamedKey::Guide,
|
|
||||||
"GuideNextDay" => NamedKey::GuideNextDay,
|
|
||||||
"GuidePreviousDay" => NamedKey::GuidePreviousDay,
|
|
||||||
"Info" => NamedKey::Info,
|
|
||||||
"InstantReplay" => NamedKey::InstantReplay,
|
|
||||||
"Link" => NamedKey::Link,
|
|
||||||
"ListProgram" => NamedKey::ListProgram,
|
|
||||||
"LiveContent" => NamedKey::LiveContent,
|
|
||||||
"Lock" => NamedKey::Lock,
|
|
||||||
"MediaApps" => NamedKey::MediaApps,
|
|
||||||
"MediaAudioTrack" => NamedKey::MediaAudioTrack,
|
|
||||||
"MediaLast" => NamedKey::MediaLast,
|
|
||||||
"MediaSkipBackward" => NamedKey::MediaSkipBackward,
|
|
||||||
"MediaSkipForward" => NamedKey::MediaSkipForward,
|
|
||||||
"MediaStepBackward" => NamedKey::MediaStepBackward,
|
|
||||||
"MediaStepForward" => NamedKey::MediaStepForward,
|
|
||||||
"MediaTopMenu" => NamedKey::MediaTopMenu,
|
|
||||||
"NavigateIn" => NamedKey::NavigateIn,
|
|
||||||
"NavigateNext" => NamedKey::NavigateNext,
|
|
||||||
"NavigateOut" => NamedKey::NavigateOut,
|
|
||||||
"NavigatePrevious" => NamedKey::NavigatePrevious,
|
|
||||||
"NextFavoriteChannel" => NamedKey::NextFavoriteChannel,
|
|
||||||
"NextUserProfile" => NamedKey::NextUserProfile,
|
|
||||||
"OnDemand" => NamedKey::OnDemand,
|
|
||||||
"Pairing" => NamedKey::Pairing,
|
|
||||||
"PinPDown" => NamedKey::PinPDown,
|
|
||||||
"PinPMove" => NamedKey::PinPMove,
|
|
||||||
"PinPToggle" => NamedKey::PinPToggle,
|
|
||||||
"PinPUp" => NamedKey::PinPUp,
|
|
||||||
"PlaySpeedDown" => NamedKey::PlaySpeedDown,
|
|
||||||
"PlaySpeedReset" => NamedKey::PlaySpeedReset,
|
|
||||||
"PlaySpeedUp" => NamedKey::PlaySpeedUp,
|
|
||||||
"RandomToggle" => NamedKey::RandomToggle,
|
|
||||||
"RcLowBattery" => NamedKey::RcLowBattery,
|
|
||||||
"RecordSpeedNext" => NamedKey::RecordSpeedNext,
|
|
||||||
"RfBypass" => NamedKey::RfBypass,
|
|
||||||
"ScanChannelsToggle" => NamedKey::ScanChannelsToggle,
|
|
||||||
"ScreenModeNext" => NamedKey::ScreenModeNext,
|
|
||||||
"Settings" => NamedKey::Settings,
|
|
||||||
"SplitScreenToggle" => NamedKey::SplitScreenToggle,
|
|
||||||
"STBInput" => NamedKey::STBInput,
|
|
||||||
"STBPower" => NamedKey::STBPower,
|
|
||||||
"Subtitle" => NamedKey::Subtitle,
|
|
||||||
"Teletext" => NamedKey::Teletext,
|
|
||||||
"VideoModeNext" => NamedKey::VideoModeNext,
|
|
||||||
"Wink" => NamedKey::Wink,
|
|
||||||
"ZoomToggle" => NamedKey::ZoomToggle,
|
|
||||||
"F1" => NamedKey::F1,
|
|
||||||
"F2" => NamedKey::F2,
|
|
||||||
"F3" => NamedKey::F3,
|
|
||||||
"F4" => NamedKey::F4,
|
|
||||||
"F5" => NamedKey::F5,
|
|
||||||
"F6" => NamedKey::F6,
|
|
||||||
"F7" => NamedKey::F7,
|
|
||||||
"F8" => NamedKey::F8,
|
|
||||||
"F9" => NamedKey::F9,
|
|
||||||
"F10" => NamedKey::F10,
|
|
||||||
"F11" => NamedKey::F11,
|
|
||||||
"F12" => NamedKey::F12,
|
|
||||||
"F13" => NamedKey::F13,
|
|
||||||
"F14" => NamedKey::F14,
|
|
||||||
"F15" => NamedKey::F15,
|
|
||||||
"F16" => NamedKey::F16,
|
|
||||||
"F17" => NamedKey::F17,
|
|
||||||
"F18" => NamedKey::F18,
|
|
||||||
"F19" => NamedKey::F19,
|
|
||||||
"F20" => NamedKey::F20,
|
|
||||||
"F21" => NamedKey::F21,
|
|
||||||
"F22" => NamedKey::F22,
|
|
||||||
"F23" => NamedKey::F23,
|
|
||||||
"F24" => NamedKey::F24,
|
|
||||||
"F25" => NamedKey::F25,
|
|
||||||
"F26" => NamedKey::F26,
|
|
||||||
"F27" => NamedKey::F27,
|
|
||||||
"F28" => NamedKey::F28,
|
|
||||||
"F29" => NamedKey::F29,
|
|
||||||
"F30" => NamedKey::F30,
|
|
||||||
"F31" => NamedKey::F31,
|
|
||||||
"F32" => NamedKey::F32,
|
|
||||||
"F33" => NamedKey::F33,
|
|
||||||
"F34" => NamedKey::F34,
|
|
||||||
"F35" => NamedKey::F35,
|
|
||||||
string => return Key::Character(SmolStr::new(string)),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl FromAttributeValue for PhysicalKey {
|
|
||||||
fn from_attribute_value(kcav: &str) -> Self {
|
|
||||||
PhysicalKey::Code(match kcav {
|
|
||||||
"Backquote" => KeyCode::Backquote,
|
|
||||||
"Backslash" => KeyCode::Backslash,
|
|
||||||
"BracketLeft" => KeyCode::BracketLeft,
|
|
||||||
"BracketRight" => KeyCode::BracketRight,
|
|
||||||
"Comma" => KeyCode::Comma,
|
|
||||||
"Digit0" => KeyCode::Digit0,
|
|
||||||
"Digit1" => KeyCode::Digit1,
|
|
||||||
"Digit2" => KeyCode::Digit2,
|
|
||||||
"Digit3" => KeyCode::Digit3,
|
|
||||||
"Digit4" => KeyCode::Digit4,
|
|
||||||
"Digit5" => KeyCode::Digit5,
|
|
||||||
"Digit6" => KeyCode::Digit6,
|
|
||||||
"Digit7" => KeyCode::Digit7,
|
|
||||||
"Digit8" => KeyCode::Digit8,
|
|
||||||
"Digit9" => KeyCode::Digit9,
|
|
||||||
"Equal" => KeyCode::Equal,
|
|
||||||
"IntlBackslash" => KeyCode::IntlBackslash,
|
|
||||||
"IntlRo" => KeyCode::IntlRo,
|
|
||||||
"IntlYen" => KeyCode::IntlYen,
|
|
||||||
"KeyA" => KeyCode::KeyA,
|
|
||||||
"KeyB" => KeyCode::KeyB,
|
|
||||||
"KeyC" => KeyCode::KeyC,
|
|
||||||
"KeyD" => KeyCode::KeyD,
|
|
||||||
"KeyE" => KeyCode::KeyE,
|
|
||||||
"KeyF" => KeyCode::KeyF,
|
|
||||||
"KeyG" => KeyCode::KeyG,
|
|
||||||
"KeyH" => KeyCode::KeyH,
|
|
||||||
"KeyI" => KeyCode::KeyI,
|
|
||||||
"KeyJ" => KeyCode::KeyJ,
|
|
||||||
"KeyK" => KeyCode::KeyK,
|
|
||||||
"KeyL" => KeyCode::KeyL,
|
|
||||||
"KeyM" => KeyCode::KeyM,
|
|
||||||
"KeyN" => KeyCode::KeyN,
|
|
||||||
"KeyO" => KeyCode::KeyO,
|
|
||||||
"KeyP" => KeyCode::KeyP,
|
|
||||||
"KeyQ" => KeyCode::KeyQ,
|
|
||||||
"KeyR" => KeyCode::KeyR,
|
|
||||||
"KeyS" => KeyCode::KeyS,
|
|
||||||
"KeyT" => KeyCode::KeyT,
|
|
||||||
"KeyU" => KeyCode::KeyU,
|
|
||||||
"KeyV" => KeyCode::KeyV,
|
|
||||||
"KeyW" => KeyCode::KeyW,
|
|
||||||
"KeyX" => KeyCode::KeyX,
|
|
||||||
"KeyY" => KeyCode::KeyY,
|
|
||||||
"KeyZ" => KeyCode::KeyZ,
|
|
||||||
"Minus" => KeyCode::Minus,
|
|
||||||
"Period" => KeyCode::Period,
|
|
||||||
"Quote" => KeyCode::Quote,
|
|
||||||
"Semicolon" => KeyCode::Semicolon,
|
|
||||||
"Slash" => KeyCode::Slash,
|
|
||||||
"AltLeft" => KeyCode::AltLeft,
|
|
||||||
"AltRight" => KeyCode::AltRight,
|
|
||||||
"Backspace" => KeyCode::Backspace,
|
|
||||||
"CapsLock" => KeyCode::CapsLock,
|
|
||||||
"ContextMenu" => KeyCode::ContextMenu,
|
|
||||||
"ControlLeft" => KeyCode::ControlLeft,
|
|
||||||
"ControlRight" => KeyCode::ControlRight,
|
|
||||||
"Enter" => KeyCode::Enter,
|
|
||||||
"MetaLeft" => KeyCode::MetaLeft,
|
|
||||||
"MetaRight" => KeyCode::MetaRight,
|
|
||||||
"ShiftLeft" => KeyCode::ShiftLeft,
|
|
||||||
"ShiftRight" => KeyCode::ShiftRight,
|
|
||||||
"Space" => KeyCode::Space,
|
|
||||||
"Tab" => KeyCode::Tab,
|
|
||||||
"Convert" => KeyCode::Convert,
|
|
||||||
"KanaMode" => KeyCode::KanaMode,
|
|
||||||
"Lang1" => KeyCode::Lang1,
|
|
||||||
"Lang2" => KeyCode::Lang2,
|
|
||||||
"Lang3" => KeyCode::Lang3,
|
|
||||||
"Lang4" => KeyCode::Lang4,
|
|
||||||
"Lang5" => KeyCode::Lang5,
|
|
||||||
"NonConvert" => KeyCode::NonConvert,
|
|
||||||
"Delete" => KeyCode::Delete,
|
|
||||||
"End" => KeyCode::End,
|
|
||||||
"Help" => KeyCode::Help,
|
|
||||||
"Home" => KeyCode::Home,
|
|
||||||
"Insert" => KeyCode::Insert,
|
|
||||||
"PageDown" => KeyCode::PageDown,
|
|
||||||
"PageUp" => KeyCode::PageUp,
|
|
||||||
"ArrowDown" => KeyCode::ArrowDown,
|
|
||||||
"ArrowLeft" => KeyCode::ArrowLeft,
|
|
||||||
"ArrowRight" => KeyCode::ArrowRight,
|
|
||||||
"ArrowUp" => KeyCode::ArrowUp,
|
|
||||||
"NumLock" => KeyCode::NumLock,
|
|
||||||
"Numpad0" => KeyCode::Numpad0,
|
|
||||||
"Numpad1" => KeyCode::Numpad1,
|
|
||||||
"Numpad2" => KeyCode::Numpad2,
|
|
||||||
"Numpad3" => KeyCode::Numpad3,
|
|
||||||
"Numpad4" => KeyCode::Numpad4,
|
|
||||||
"Numpad5" => KeyCode::Numpad5,
|
|
||||||
"Numpad6" => KeyCode::Numpad6,
|
|
||||||
"Numpad7" => KeyCode::Numpad7,
|
|
||||||
"Numpad8" => KeyCode::Numpad8,
|
|
||||||
"Numpad9" => KeyCode::Numpad9,
|
|
||||||
"NumpadAdd" => KeyCode::NumpadAdd,
|
|
||||||
"NumpadBackspace" => KeyCode::NumpadBackspace,
|
|
||||||
"NumpadClear" => KeyCode::NumpadClear,
|
|
||||||
"NumpadClearEntry" => KeyCode::NumpadClearEntry,
|
|
||||||
"NumpadComma" => KeyCode::NumpadComma,
|
|
||||||
"NumpadDecimal" => KeyCode::NumpadDecimal,
|
|
||||||
"NumpadDivide" => KeyCode::NumpadDivide,
|
|
||||||
"NumpadEnter" => KeyCode::NumpadEnter,
|
|
||||||
"NumpadEqual" => KeyCode::NumpadEqual,
|
|
||||||
"NumpadHash" => KeyCode::NumpadHash,
|
|
||||||
"NumpadMemoryAdd" => KeyCode::NumpadMemoryAdd,
|
|
||||||
"NumpadMemoryClear" => KeyCode::NumpadMemoryClear,
|
|
||||||
"NumpadMemoryRecall" => KeyCode::NumpadMemoryRecall,
|
|
||||||
"NumpadMemoryStore" => KeyCode::NumpadMemoryStore,
|
|
||||||
"NumpadMemorySubtract" => KeyCode::NumpadMemorySubtract,
|
|
||||||
"NumpadMultiply" => KeyCode::NumpadMultiply,
|
|
||||||
"NumpadParenLeft" => KeyCode::NumpadParenLeft,
|
|
||||||
"NumpadParenRight" => KeyCode::NumpadParenRight,
|
|
||||||
"NumpadStar" => KeyCode::NumpadStar,
|
|
||||||
"NumpadSubtract" => KeyCode::NumpadSubtract,
|
|
||||||
"Escape" => KeyCode::Escape,
|
|
||||||
"Fn" => KeyCode::Fn,
|
|
||||||
"FnLock" => KeyCode::FnLock,
|
|
||||||
"PrintScreen" => KeyCode::PrintScreen,
|
|
||||||
"ScrollLock" => KeyCode::ScrollLock,
|
|
||||||
"Pause" => KeyCode::Pause,
|
|
||||||
"BrowserBack" => KeyCode::BrowserBack,
|
|
||||||
"BrowserFavorites" => KeyCode::BrowserFavorites,
|
|
||||||
"BrowserForward" => KeyCode::BrowserForward,
|
|
||||||
"BrowserHome" => KeyCode::BrowserHome,
|
|
||||||
"BrowserRefresh" => KeyCode::BrowserRefresh,
|
|
||||||
"BrowserSearch" => KeyCode::BrowserSearch,
|
|
||||||
"BrowserStop" => KeyCode::BrowserStop,
|
|
||||||
"Eject" => KeyCode::Eject,
|
|
||||||
"LaunchApp1" => KeyCode::LaunchApp1,
|
|
||||||
"LaunchApp2" => KeyCode::LaunchApp2,
|
|
||||||
"LaunchMail" => KeyCode::LaunchMail,
|
|
||||||
"MediaPlayPause" => KeyCode::MediaPlayPause,
|
|
||||||
"MediaSelect" => KeyCode::MediaSelect,
|
|
||||||
"MediaStop" => KeyCode::MediaStop,
|
|
||||||
"MediaTrackNext" => KeyCode::MediaTrackNext,
|
|
||||||
"MediaTrackPrevious" => KeyCode::MediaTrackPrevious,
|
|
||||||
"Power" => KeyCode::Power,
|
|
||||||
"Sleep" => KeyCode::Sleep,
|
|
||||||
"AudioVolumeDown" => KeyCode::AudioVolumeDown,
|
|
||||||
"AudioVolumeMute" => KeyCode::AudioVolumeMute,
|
|
||||||
"AudioVolumeUp" => KeyCode::AudioVolumeUp,
|
|
||||||
"WakeUp" => KeyCode::WakeUp,
|
|
||||||
#[allow(deprecated)]
|
|
||||||
"Super" => KeyCode::Super,
|
|
||||||
#[allow(deprecated)]
|
|
||||||
"Hyper" => KeyCode::Hyper,
|
|
||||||
#[allow(deprecated)]
|
|
||||||
"Turbo" => KeyCode::Turbo,
|
|
||||||
"Abort" => KeyCode::Abort,
|
|
||||||
"Resume" => KeyCode::Resume,
|
|
||||||
"Suspend" => KeyCode::Suspend,
|
|
||||||
"Again" => KeyCode::Again,
|
|
||||||
"Copy" => KeyCode::Copy,
|
|
||||||
"Cut" => KeyCode::Cut,
|
|
||||||
"Find" => KeyCode::Find,
|
|
||||||
"Open" => KeyCode::Open,
|
|
||||||
"Paste" => KeyCode::Paste,
|
|
||||||
"Props" => KeyCode::Props,
|
|
||||||
"Select" => KeyCode::Select,
|
|
||||||
"Undo" => KeyCode::Undo,
|
|
||||||
"Hiragana" => KeyCode::Hiragana,
|
|
||||||
"Katakana" => KeyCode::Katakana,
|
|
||||||
"F1" => KeyCode::F1,
|
|
||||||
"F2" => KeyCode::F2,
|
|
||||||
"F3" => KeyCode::F3,
|
|
||||||
"F4" => KeyCode::F4,
|
|
||||||
"F5" => KeyCode::F5,
|
|
||||||
"F6" => KeyCode::F6,
|
|
||||||
"F7" => KeyCode::F7,
|
|
||||||
"F8" => KeyCode::F8,
|
|
||||||
"F9" => KeyCode::F9,
|
|
||||||
"F10" => KeyCode::F10,
|
|
||||||
"F11" => KeyCode::F11,
|
|
||||||
"F12" => KeyCode::F12,
|
|
||||||
"F13" => KeyCode::F13,
|
|
||||||
"F14" => KeyCode::F14,
|
|
||||||
"F15" => KeyCode::F15,
|
|
||||||
"F16" => KeyCode::F16,
|
|
||||||
"F17" => KeyCode::F17,
|
|
||||||
"F18" => KeyCode::F18,
|
|
||||||
"F19" => KeyCode::F19,
|
|
||||||
"F20" => KeyCode::F20,
|
|
||||||
"F21" => KeyCode::F21,
|
|
||||||
"F22" => KeyCode::F22,
|
|
||||||
"F23" => KeyCode::F23,
|
|
||||||
"F24" => KeyCode::F24,
|
|
||||||
"F25" => KeyCode::F25,
|
|
||||||
"F26" => KeyCode::F26,
|
|
||||||
"F27" => KeyCode::F27,
|
|
||||||
"F28" => KeyCode::F28,
|
|
||||||
"F29" => KeyCode::F29,
|
|
||||||
"F30" => KeyCode::F30,
|
|
||||||
"F31" => KeyCode::F31,
|
|
||||||
"F32" => KeyCode::F32,
|
|
||||||
"F33" => KeyCode::F33,
|
|
||||||
"F34" => KeyCode::F34,
|
|
||||||
"F35" => KeyCode::F35,
|
|
||||||
_ => return PhysicalKey::Unidentified(NativeKeyCode::Unidentified),
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -70,7 +70,6 @@ mod r#async;
|
|||||||
mod cursor;
|
mod cursor;
|
||||||
mod event;
|
mod event;
|
||||||
pub(crate) mod event_loop;
|
pub(crate) mod event_loop;
|
||||||
mod keyboard;
|
|
||||||
mod lock;
|
mod lock;
|
||||||
pub(crate) mod main_thread;
|
pub(crate) mod main_thread;
|
||||||
mod monitor;
|
mod monitor;
|
||||||
|
|||||||
@@ -6,10 +6,11 @@ use wasm_bindgen::prelude::wasm_bindgen;
|
|||||||
use wasm_bindgen::{JsCast, JsValue};
|
use wasm_bindgen::{JsCast, JsValue};
|
||||||
use web_sys::{KeyboardEvent, MouseEvent, Navigator, PointerEvent, WheelEvent};
|
use web_sys::{KeyboardEvent, MouseEvent, Navigator, PointerEvent, WheelEvent};
|
||||||
use winit_core::event::{FingerId, MouseButton, MouseScrollDelta, PointerKind};
|
use winit_core::event::{FingerId, MouseButton, MouseScrollDelta, PointerKind};
|
||||||
use winit_core::keyboard::{Key, KeyLocation, ModifiersState, NamedKey, PhysicalKey};
|
use winit_core::keyboard::{
|
||||||
|
Key, KeyCode, KeyLocation, ModifiersState, NamedKey, NativeKey, NativeKeyCode, PhysicalKey,
|
||||||
|
};
|
||||||
|
|
||||||
use super::Engine;
|
use super::Engine;
|
||||||
use crate::keyboard::FromAttributeValue;
|
|
||||||
|
|
||||||
bitflags::bitflags! {
|
bitflags::bitflags! {
|
||||||
// https://www.w3.org/TR/pointerevents3/#the-buttons-property
|
// https://www.w3.org/TR/pointerevents3/#the-buttons-property
|
||||||
@@ -168,17 +169,32 @@ pub fn pointer_type(event: &PointerEvent, pointer_id: i32) -> PointerKind {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn key_code(event: &KeyboardEvent) -> PhysicalKey {
|
pub fn key_code(event: &KeyboardEvent) -> PhysicalKey {
|
||||||
let code = event.code();
|
// Use keyboard-types' parsing (it is based on the W3C standard).
|
||||||
PhysicalKey::from_attribute_value(&code)
|
match event.code().parse() {
|
||||||
|
Ok(KeyCode::Unidentified) => PhysicalKey::Unidentified(NativeKeyCode::Unidentified),
|
||||||
|
Ok(code) => PhysicalKey::Code(code),
|
||||||
|
Err(err) => {
|
||||||
|
tracing::warn!("unknown keyboard input: {err}");
|
||||||
|
PhysicalKey::Unidentified(NativeKeyCode::Unidentified)
|
||||||
|
},
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn key(event: &KeyboardEvent) -> Key {
|
pub fn key(event: &KeyboardEvent) -> Key {
|
||||||
Key::from_attribute_value(&event.key())
|
let key = event.key();
|
||||||
|
// Use keyboard-types' parsing (it is based on the W3C standard).
|
||||||
|
match key.parse() {
|
||||||
|
Ok(NamedKey::Unidentified) => {
|
||||||
|
Key::Unidentified(NativeKey::Web(SmolStr::new("Unidentified")))
|
||||||
|
},
|
||||||
|
Ok(NamedKey::Dead) => Key::Dead(None),
|
||||||
|
Ok(named) => Key::Named(named),
|
||||||
|
Err(_) => Key::Character(SmolStr::new(key)),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn key_text(event: &KeyboardEvent) -> Option<SmolStr> {
|
pub fn key_text(event: &KeyboardEvent) -> Option<SmolStr> {
|
||||||
let key = event.key();
|
let key = key(event);
|
||||||
let key = Key::from_attribute_value(&key);
|
|
||||||
match &key {
|
match &key {
|
||||||
Key::Character(text) => Some(text.clone()),
|
Key::Character(text) => Some(text.clone()),
|
||||||
Key::Named(NamedKey::Tab) => Some(SmolStr::new("\t")),
|
Key::Named(NamedKey::Tab) => Some(SmolStr::new("\t")),
|
||||||
|
|||||||
@@ -201,6 +201,7 @@ changelog entry.
|
|||||||
- Move `IconExtWindows` into `WinIcon`.
|
- Move `IconExtWindows` into `WinIcon`.
|
||||||
- Move `EventLoopExtPumpEvents` and `PumpStatus` from platform module to `winit::event_loop::pump_events`.
|
- Move `EventLoopExtPumpEvents` and `PumpStatus` from platform module to `winit::event_loop::pump_events`.
|
||||||
- Move `EventLoopExtRunOnDemand` from platform module to `winit::event_loop::run_on_demand`.
|
- Move `EventLoopExtRunOnDemand` from platform module to `winit::event_loop::run_on_demand`.
|
||||||
|
- Use `NamedKey`, `Code` and `Location` from the `keyboard-types` v0.8 crate.
|
||||||
|
|
||||||
### Removed
|
### Removed
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user