|
@@ -3,13 +3,9 @@ use std::{cell::RefCell, collections::HashMap, rc::Rc, str::FromStr};
|
|
|
use dioxus_core::ScopeState;
|
|
|
use dioxus_html::input_data::keyboard_types::Modifiers;
|
|
|
use slab::Slab;
|
|
|
-use wry::application::{
|
|
|
- accelerator::{Accelerator, AcceleratorId},
|
|
|
- event_loop::EventLoopWindowTarget,
|
|
|
- keyboard::{KeyCode, ModifiersState},
|
|
|
-};
|
|
|
+use wry::application::keyboard::ModifiersState;
|
|
|
|
|
|
-use crate::{desktop_context::DesktopContext, use_window};
|
|
|
+use crate::{desktop_context::DesktopContext, window};
|
|
|
|
|
|
#[cfg(any(
|
|
|
target_os = "windows",
|
|
@@ -20,22 +16,25 @@ use crate::{desktop_context::DesktopContext, use_window};
|
|
|
target_os = "netbsd",
|
|
|
target_os = "openbsd"
|
|
|
))]
|
|
|
-use wry::application::global_shortcut::{GlobalShortcut, ShortcutManager, ShortcutManagerError};
|
|
|
+pub use global_hotkey::{
|
|
|
+ hotkey::{Code, HotKey},
|
|
|
+ Error as HotkeyError, GlobalHotKeyEvent, GlobalHotKeyManager,
|
|
|
+};
|
|
|
|
|
|
#[cfg(any(target_os = "ios", target_os = "android"))]
|
|
|
pub use crate::mobile_shortcut::*;
|
|
|
|
|
|
#[derive(Clone)]
|
|
|
pub(crate) struct ShortcutRegistry {
|
|
|
- manager: Rc<RefCell<ShortcutManager>>,
|
|
|
+ manager: Rc<RefCell<GlobalHotKeyManager>>,
|
|
|
shortcuts: ShortcutMap,
|
|
|
}
|
|
|
|
|
|
-type ShortcutMap = Rc<RefCell<HashMap<AcceleratorId, Shortcut>>>;
|
|
|
+type ShortcutMap = Rc<RefCell<HashMap<u32, Shortcut>>>;
|
|
|
|
|
|
struct Shortcut {
|
|
|
#[allow(unused)]
|
|
|
- shortcut: GlobalShortcut,
|
|
|
+ shortcut: HotKey,
|
|
|
callbacks: Slab<Box<dyn FnMut()>>,
|
|
|
}
|
|
|
|
|
@@ -54,15 +53,15 @@ impl Shortcut {
|
|
|
}
|
|
|
|
|
|
impl ShortcutRegistry {
|
|
|
- pub fn new<T>(target: &EventLoopWindowTarget<T>) -> Self {
|
|
|
+ pub fn new() -> Self {
|
|
|
Self {
|
|
|
- manager: Rc::new(RefCell::new(ShortcutManager::new(target))),
|
|
|
+ manager: Rc::new(RefCell::new(GlobalHotKeyManager::new().unwrap())),
|
|
|
shortcuts: Rc::new(RefCell::new(HashMap::new())),
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- pub(crate) fn call_handlers(&self, id: AcceleratorId) {
|
|
|
- if let Some(Shortcut { callbacks, .. }) = self.shortcuts.borrow_mut().get_mut(&id) {
|
|
|
+ pub(crate) fn call_handlers(&self, id: GlobalHotKeyEvent) {
|
|
|
+ if let Some(Shortcut { callbacks, .. }) = self.shortcuts.borrow_mut().get_mut(&id.id) {
|
|
|
for (_, callback) in callbacks.iter_mut() {
|
|
|
(callback)();
|
|
|
}
|
|
@@ -71,10 +70,10 @@ impl ShortcutRegistry {
|
|
|
|
|
|
pub(crate) fn add_shortcut(
|
|
|
&self,
|
|
|
- accelerator: Accelerator,
|
|
|
+ hotkey: HotKey,
|
|
|
callback: Box<dyn FnMut()>,
|
|
|
) -> Result<ShortcutId, ShortcutRegistryError> {
|
|
|
- let accelerator_id = accelerator.clone().id();
|
|
|
+ let accelerator_id = hotkey.clone().id();
|
|
|
let mut shortcuts = self.shortcuts.borrow_mut();
|
|
|
Ok(
|
|
|
if let Some(callbacks) = shortcuts.get_mut(&accelerator_id) {
|
|
@@ -84,12 +83,12 @@ impl ShortcutRegistry {
|
|
|
number: id,
|
|
|
}
|
|
|
} else {
|
|
|
- match self.manager.borrow_mut().register(accelerator) {
|
|
|
- Ok(global_shortcut) => {
|
|
|
+ match self.manager.borrow_mut().register(hotkey) {
|
|
|
+ Ok(_) => {
|
|
|
let mut slab = Slab::new();
|
|
|
let id = slab.insert(callback);
|
|
|
let shortcut = Shortcut {
|
|
|
- shortcut: global_shortcut,
|
|
|
+ shortcut: hotkey,
|
|
|
callbacks: slab,
|
|
|
};
|
|
|
shortcuts.insert(accelerator_id, shortcut);
|
|
@@ -98,7 +97,7 @@ impl ShortcutRegistry {
|
|
|
number: id,
|
|
|
}
|
|
|
}
|
|
|
- Err(ShortcutManagerError::InvalidAccelerator(shortcut)) => {
|
|
|
+ Err(HotkeyError::HotKeyParseError(shortcut)) => {
|
|
|
return Err(ShortcutRegistryError::InvalidShortcut(shortcut))
|
|
|
}
|
|
|
Err(err) => return Err(ShortcutRegistryError::Other(Box::new(err))),
|
|
@@ -113,15 +112,6 @@ impl ShortcutRegistry {
|
|
|
callbacks.remove(id.number);
|
|
|
if callbacks.is_empty() {
|
|
|
if let Some(_shortcut) = shortcuts.remove(&id.id) {
|
|
|
- #[cfg(any(
|
|
|
- target_os = "windows",
|
|
|
- target_os = "macos",
|
|
|
- target_os = "linux",
|
|
|
- target_os = "dragonfly",
|
|
|
- target_os = "freebsd",
|
|
|
- target_os = "netbsd",
|
|
|
- target_os = "openbsd"
|
|
|
- ))]
|
|
|
let _ = self.manager.borrow_mut().unregister(_shortcut.shortcut);
|
|
|
}
|
|
|
}
|
|
@@ -130,8 +120,8 @@ impl ShortcutRegistry {
|
|
|
|
|
|
pub(crate) fn remove_all(&self) {
|
|
|
let mut shortcuts = self.shortcuts.borrow_mut();
|
|
|
- shortcuts.clear();
|
|
|
- let _ = self.manager.borrow_mut().unregister_all();
|
|
|
+ let hotkeys: Vec<_> = shortcuts.drain().map(|(_, v)| v.shortcut).collect();
|
|
|
+ let _ = self.manager.borrow_mut().unregister_all(&hotkeys);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -148,7 +138,7 @@ pub enum ShortcutRegistryError {
|
|
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
|
|
|
/// An global id for a shortcut.
|
|
|
pub struct ShortcutId {
|
|
|
- id: AcceleratorId,
|
|
|
+ id: u32,
|
|
|
number: usize,
|
|
|
}
|
|
|
|
|
@@ -160,30 +150,30 @@ pub struct ShortcutHandle {
|
|
|
}
|
|
|
|
|
|
pub trait IntoAccelerator {
|
|
|
- fn accelerator(&self) -> Accelerator;
|
|
|
+ fn accelerator(&self) -> HotKey;
|
|
|
}
|
|
|
|
|
|
impl IntoAccelerator for (dioxus_html::KeyCode, ModifiersState) {
|
|
|
- fn accelerator(&self) -> Accelerator {
|
|
|
- Accelerator::new(Some(self.1), self.0.into_key_code())
|
|
|
+ fn accelerator(&self) -> HotKey {
|
|
|
+ HotKey::new(Some(self.1.into_modifiers_state()), self.0.into_key_code())
|
|
|
}
|
|
|
}
|
|
|
|
|
|
impl IntoAccelerator for (ModifiersState, dioxus_html::KeyCode) {
|
|
|
- fn accelerator(&self) -> Accelerator {
|
|
|
- Accelerator::new(Some(self.0), self.1.into_key_code())
|
|
|
+ fn accelerator(&self) -> HotKey {
|
|
|
+ HotKey::new(Some(self.0.into_modifiers_state()), self.1.into_key_code())
|
|
|
}
|
|
|
}
|
|
|
|
|
|
impl IntoAccelerator for dioxus_html::KeyCode {
|
|
|
- fn accelerator(&self) -> Accelerator {
|
|
|
- Accelerator::new(None, self.into_key_code())
|
|
|
+ fn accelerator(&self) -> HotKey {
|
|
|
+ HotKey::new(None, self.into_key_code())
|
|
|
}
|
|
|
}
|
|
|
|
|
|
impl IntoAccelerator for &str {
|
|
|
- fn accelerator(&self) -> Accelerator {
|
|
|
- Accelerator::from_str(self).unwrap()
|
|
|
+ fn accelerator(&self) -> HotKey {
|
|
|
+ HotKey::from_str(self).unwrap()
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -193,9 +183,8 @@ pub fn use_global_shortcut(
|
|
|
accelerator: impl IntoAccelerator,
|
|
|
handler: impl FnMut() + 'static,
|
|
|
) -> &Result<ShortcutHandle, ShortcutRegistryError> {
|
|
|
- let desktop = use_window(cx);
|
|
|
cx.use_hook(move || {
|
|
|
- let desktop = desktop.clone();
|
|
|
+ let desktop = window();
|
|
|
|
|
|
let id = desktop.create_shortcut(accelerator.accelerator(), handler);
|
|
|
|
|
@@ -220,143 +209,144 @@ impl Drop for ShortcutHandle {
|
|
|
}
|
|
|
|
|
|
pub trait IntoModifersState {
|
|
|
- fn into_modifiers_state(self) -> ModifiersState;
|
|
|
+ fn into_modifiers_state(self) -> Modifiers;
|
|
|
}
|
|
|
|
|
|
impl IntoModifersState for ModifiersState {
|
|
|
- fn into_modifiers_state(self) -> ModifiersState {
|
|
|
- self
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-impl IntoModifersState for Modifiers {
|
|
|
- fn into_modifiers_state(self) -> ModifiersState {
|
|
|
- let mut state = ModifiersState::empty();
|
|
|
- if self.contains(Modifiers::SHIFT) {
|
|
|
- state |= ModifiersState::SHIFT
|
|
|
+ fn into_modifiers_state(self) -> Modifiers {
|
|
|
+ let mut modifiers = Modifiers::default();
|
|
|
+ if self.shift_key() {
|
|
|
+ modifiers |= Modifiers::SHIFT;
|
|
|
}
|
|
|
- if self.contains(Modifiers::CONTROL) {
|
|
|
- state |= ModifiersState::CONTROL
|
|
|
+ if self.control_key() {
|
|
|
+ modifiers |= Modifiers::CONTROL;
|
|
|
}
|
|
|
- if self.contains(Modifiers::ALT) {
|
|
|
- state |= ModifiersState::ALT
|
|
|
+ if self.alt_key() {
|
|
|
+ modifiers |= Modifiers::ALT;
|
|
|
}
|
|
|
- if self.contains(Modifiers::META) || self.contains(Modifiers::SUPER) {
|
|
|
- state |= ModifiersState::SUPER
|
|
|
+ if self.super_key() {
|
|
|
+ modifiers |= Modifiers::META;
|
|
|
}
|
|
|
- state
|
|
|
+
|
|
|
+ modifiers
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+impl IntoModifersState for Modifiers {
|
|
|
+ fn into_modifiers_state(self) -> Modifiers {
|
|
|
+ self
|
|
|
}
|
|
|
}
|
|
|
|
|
|
pub trait IntoKeyCode {
|
|
|
- fn into_key_code(self) -> KeyCode;
|
|
|
+ fn into_key_code(self) -> Code;
|
|
|
}
|
|
|
|
|
|
-impl IntoKeyCode for KeyCode {
|
|
|
- fn into_key_code(self) -> KeyCode {
|
|
|
+impl IntoKeyCode for Code {
|
|
|
+ fn into_key_code(self) -> Code {
|
|
|
self
|
|
|
}
|
|
|
}
|
|
|
|
|
|
impl IntoKeyCode for dioxus_html::KeyCode {
|
|
|
- fn into_key_code(self) -> KeyCode {
|
|
|
+ fn into_key_code(self) -> Code {
|
|
|
match self {
|
|
|
- dioxus_html::KeyCode::Backspace => KeyCode::Backspace,
|
|
|
- dioxus_html::KeyCode::Tab => KeyCode::Tab,
|
|
|
- dioxus_html::KeyCode::Clear => KeyCode::NumpadClear,
|
|
|
- dioxus_html::KeyCode::Enter => KeyCode::Enter,
|
|
|
- dioxus_html::KeyCode::Shift => KeyCode::ShiftLeft,
|
|
|
- dioxus_html::KeyCode::Ctrl => KeyCode::ControlLeft,
|
|
|
- dioxus_html::KeyCode::Alt => KeyCode::AltLeft,
|
|
|
- dioxus_html::KeyCode::Pause => KeyCode::Pause,
|
|
|
- dioxus_html::KeyCode::CapsLock => KeyCode::CapsLock,
|
|
|
- dioxus_html::KeyCode::Escape => KeyCode::Escape,
|
|
|
- dioxus_html::KeyCode::Space => KeyCode::Space,
|
|
|
- dioxus_html::KeyCode::PageUp => KeyCode::PageUp,
|
|
|
- dioxus_html::KeyCode::PageDown => KeyCode::PageDown,
|
|
|
- dioxus_html::KeyCode::End => KeyCode::End,
|
|
|
- dioxus_html::KeyCode::Home => KeyCode::Home,
|
|
|
- dioxus_html::KeyCode::LeftArrow => KeyCode::ArrowLeft,
|
|
|
- dioxus_html::KeyCode::UpArrow => KeyCode::ArrowUp,
|
|
|
- dioxus_html::KeyCode::RightArrow => KeyCode::ArrowRight,
|
|
|
- dioxus_html::KeyCode::DownArrow => KeyCode::ArrowDown,
|
|
|
- dioxus_html::KeyCode::Insert => KeyCode::Insert,
|
|
|
- dioxus_html::KeyCode::Delete => KeyCode::Delete,
|
|
|
- dioxus_html::KeyCode::Num0 => KeyCode::Numpad0,
|
|
|
- dioxus_html::KeyCode::Num1 => KeyCode::Numpad1,
|
|
|
- dioxus_html::KeyCode::Num2 => KeyCode::Numpad2,
|
|
|
- dioxus_html::KeyCode::Num3 => KeyCode::Numpad3,
|
|
|
- dioxus_html::KeyCode::Num4 => KeyCode::Numpad4,
|
|
|
- dioxus_html::KeyCode::Num5 => KeyCode::Numpad5,
|
|
|
- dioxus_html::KeyCode::Num6 => KeyCode::Numpad6,
|
|
|
- dioxus_html::KeyCode::Num7 => KeyCode::Numpad7,
|
|
|
- dioxus_html::KeyCode::Num8 => KeyCode::Numpad8,
|
|
|
- dioxus_html::KeyCode::Num9 => KeyCode::Numpad9,
|
|
|
- dioxus_html::KeyCode::A => KeyCode::KeyA,
|
|
|
- dioxus_html::KeyCode::B => KeyCode::KeyB,
|
|
|
- dioxus_html::KeyCode::C => KeyCode::KeyC,
|
|
|
- dioxus_html::KeyCode::D => KeyCode::KeyD,
|
|
|
- dioxus_html::KeyCode::E => KeyCode::KeyE,
|
|
|
- dioxus_html::KeyCode::F => KeyCode::KeyF,
|
|
|
- dioxus_html::KeyCode::G => KeyCode::KeyG,
|
|
|
- dioxus_html::KeyCode::H => KeyCode::KeyH,
|
|
|
- dioxus_html::KeyCode::I => KeyCode::KeyI,
|
|
|
- dioxus_html::KeyCode::J => KeyCode::KeyJ,
|
|
|
- dioxus_html::KeyCode::K => KeyCode::KeyK,
|
|
|
- dioxus_html::KeyCode::L => KeyCode::KeyL,
|
|
|
- dioxus_html::KeyCode::M => KeyCode::KeyM,
|
|
|
- dioxus_html::KeyCode::N => KeyCode::KeyN,
|
|
|
- dioxus_html::KeyCode::O => KeyCode::KeyO,
|
|
|
- dioxus_html::KeyCode::P => KeyCode::KeyP,
|
|
|
- dioxus_html::KeyCode::Q => KeyCode::KeyQ,
|
|
|
- dioxus_html::KeyCode::R => KeyCode::KeyR,
|
|
|
- dioxus_html::KeyCode::S => KeyCode::KeyS,
|
|
|
- dioxus_html::KeyCode::T => KeyCode::KeyT,
|
|
|
- dioxus_html::KeyCode::U => KeyCode::KeyU,
|
|
|
- dioxus_html::KeyCode::V => KeyCode::KeyV,
|
|
|
- dioxus_html::KeyCode::W => KeyCode::KeyW,
|
|
|
- dioxus_html::KeyCode::X => KeyCode::KeyX,
|
|
|
- dioxus_html::KeyCode::Y => KeyCode::KeyY,
|
|
|
- dioxus_html::KeyCode::Z => KeyCode::KeyZ,
|
|
|
- dioxus_html::KeyCode::Numpad0 => KeyCode::Numpad0,
|
|
|
- dioxus_html::KeyCode::Numpad1 => KeyCode::Numpad1,
|
|
|
- dioxus_html::KeyCode::Numpad2 => KeyCode::Numpad2,
|
|
|
- dioxus_html::KeyCode::Numpad3 => KeyCode::Numpad3,
|
|
|
- dioxus_html::KeyCode::Numpad4 => KeyCode::Numpad4,
|
|
|
- dioxus_html::KeyCode::Numpad5 => KeyCode::Numpad5,
|
|
|
- dioxus_html::KeyCode::Numpad6 => KeyCode::Numpad6,
|
|
|
- dioxus_html::KeyCode::Numpad7 => KeyCode::Numpad7,
|
|
|
- dioxus_html::KeyCode::Numpad8 => KeyCode::Numpad8,
|
|
|
- dioxus_html::KeyCode::Numpad9 => KeyCode::Numpad9,
|
|
|
- dioxus_html::KeyCode::Multiply => KeyCode::NumpadMultiply,
|
|
|
- dioxus_html::KeyCode::Add => KeyCode::NumpadAdd,
|
|
|
- dioxus_html::KeyCode::Subtract => KeyCode::NumpadSubtract,
|
|
|
- dioxus_html::KeyCode::DecimalPoint => KeyCode::NumpadDecimal,
|
|
|
- dioxus_html::KeyCode::Divide => KeyCode::NumpadDivide,
|
|
|
- dioxus_html::KeyCode::F1 => KeyCode::F1,
|
|
|
- dioxus_html::KeyCode::F2 => KeyCode::F2,
|
|
|
- dioxus_html::KeyCode::F3 => KeyCode::F3,
|
|
|
- dioxus_html::KeyCode::F4 => KeyCode::F4,
|
|
|
- dioxus_html::KeyCode::F5 => KeyCode::F5,
|
|
|
- dioxus_html::KeyCode::F6 => KeyCode::F6,
|
|
|
- dioxus_html::KeyCode::F7 => KeyCode::F7,
|
|
|
- dioxus_html::KeyCode::F8 => KeyCode::F8,
|
|
|
- dioxus_html::KeyCode::F9 => KeyCode::F9,
|
|
|
- dioxus_html::KeyCode::F10 => KeyCode::F10,
|
|
|
- dioxus_html::KeyCode::F11 => KeyCode::F11,
|
|
|
- dioxus_html::KeyCode::F12 => KeyCode::F12,
|
|
|
- dioxus_html::KeyCode::NumLock => KeyCode::NumLock,
|
|
|
- dioxus_html::KeyCode::ScrollLock => KeyCode::ScrollLock,
|
|
|
- dioxus_html::KeyCode::Semicolon => KeyCode::Semicolon,
|
|
|
- dioxus_html::KeyCode::EqualSign => KeyCode::Equal,
|
|
|
- dioxus_html::KeyCode::Comma => KeyCode::Comma,
|
|
|
- dioxus_html::KeyCode::Period => KeyCode::Period,
|
|
|
- dioxus_html::KeyCode::ForwardSlash => KeyCode::Slash,
|
|
|
- dioxus_html::KeyCode::GraveAccent => KeyCode::Backquote,
|
|
|
- dioxus_html::KeyCode::OpenBracket => KeyCode::BracketLeft,
|
|
|
- dioxus_html::KeyCode::BackSlash => KeyCode::Backslash,
|
|
|
- dioxus_html::KeyCode::CloseBraket => KeyCode::BracketRight,
|
|
|
- dioxus_html::KeyCode::SingleQuote => KeyCode::Quote,
|
|
|
+ dioxus_html::KeyCode::Backspace => Code::Backspace,
|
|
|
+ dioxus_html::KeyCode::Tab => Code::Tab,
|
|
|
+ dioxus_html::KeyCode::Clear => Code::NumpadClear,
|
|
|
+ dioxus_html::KeyCode::Enter => Code::Enter,
|
|
|
+ dioxus_html::KeyCode::Shift => Code::ShiftLeft,
|
|
|
+ dioxus_html::KeyCode::Ctrl => Code::ControlLeft,
|
|
|
+ dioxus_html::KeyCode::Alt => Code::AltLeft,
|
|
|
+ dioxus_html::KeyCode::Pause => Code::Pause,
|
|
|
+ dioxus_html::KeyCode::CapsLock => Code::CapsLock,
|
|
|
+ dioxus_html::KeyCode::Escape => Code::Escape,
|
|
|
+ dioxus_html::KeyCode::Space => Code::Space,
|
|
|
+ dioxus_html::KeyCode::PageUp => Code::PageUp,
|
|
|
+ dioxus_html::KeyCode::PageDown => Code::PageDown,
|
|
|
+ dioxus_html::KeyCode::End => Code::End,
|
|
|
+ dioxus_html::KeyCode::Home => Code::Home,
|
|
|
+ dioxus_html::KeyCode::LeftArrow => Code::ArrowLeft,
|
|
|
+ dioxus_html::KeyCode::UpArrow => Code::ArrowUp,
|
|
|
+ dioxus_html::KeyCode::RightArrow => Code::ArrowRight,
|
|
|
+ dioxus_html::KeyCode::DownArrow => Code::ArrowDown,
|
|
|
+ dioxus_html::KeyCode::Insert => Code::Insert,
|
|
|
+ dioxus_html::KeyCode::Delete => Code::Delete,
|
|
|
+ dioxus_html::KeyCode::Num0 => Code::Numpad0,
|
|
|
+ dioxus_html::KeyCode::Num1 => Code::Numpad1,
|
|
|
+ dioxus_html::KeyCode::Num2 => Code::Numpad2,
|
|
|
+ dioxus_html::KeyCode::Num3 => Code::Numpad3,
|
|
|
+ dioxus_html::KeyCode::Num4 => Code::Numpad4,
|
|
|
+ dioxus_html::KeyCode::Num5 => Code::Numpad5,
|
|
|
+ dioxus_html::KeyCode::Num6 => Code::Numpad6,
|
|
|
+ dioxus_html::KeyCode::Num7 => Code::Numpad7,
|
|
|
+ dioxus_html::KeyCode::Num8 => Code::Numpad8,
|
|
|
+ dioxus_html::KeyCode::Num9 => Code::Numpad9,
|
|
|
+ dioxus_html::KeyCode::A => Code::KeyA,
|
|
|
+ dioxus_html::KeyCode::B => Code::KeyB,
|
|
|
+ dioxus_html::KeyCode::C => Code::KeyC,
|
|
|
+ dioxus_html::KeyCode::D => Code::KeyD,
|
|
|
+ dioxus_html::KeyCode::E => Code::KeyE,
|
|
|
+ dioxus_html::KeyCode::F => Code::KeyF,
|
|
|
+ dioxus_html::KeyCode::G => Code::KeyG,
|
|
|
+ dioxus_html::KeyCode::H => Code::KeyH,
|
|
|
+ dioxus_html::KeyCode::I => Code::KeyI,
|
|
|
+ dioxus_html::KeyCode::J => Code::KeyJ,
|
|
|
+ dioxus_html::KeyCode::K => Code::KeyK,
|
|
|
+ dioxus_html::KeyCode::L => Code::KeyL,
|
|
|
+ dioxus_html::KeyCode::M => Code::KeyM,
|
|
|
+ dioxus_html::KeyCode::N => Code::KeyN,
|
|
|
+ dioxus_html::KeyCode::O => Code::KeyO,
|
|
|
+ dioxus_html::KeyCode::P => Code::KeyP,
|
|
|
+ dioxus_html::KeyCode::Q => Code::KeyQ,
|
|
|
+ dioxus_html::KeyCode::R => Code::KeyR,
|
|
|
+ dioxus_html::KeyCode::S => Code::KeyS,
|
|
|
+ dioxus_html::KeyCode::T => Code::KeyT,
|
|
|
+ dioxus_html::KeyCode::U => Code::KeyU,
|
|
|
+ dioxus_html::KeyCode::V => Code::KeyV,
|
|
|
+ dioxus_html::KeyCode::W => Code::KeyW,
|
|
|
+ dioxus_html::KeyCode::X => Code::KeyX,
|
|
|
+ dioxus_html::KeyCode::Y => Code::KeyY,
|
|
|
+ dioxus_html::KeyCode::Z => Code::KeyZ,
|
|
|
+ dioxus_html::KeyCode::Numpad0 => Code::Numpad0,
|
|
|
+ dioxus_html::KeyCode::Numpad1 => Code::Numpad1,
|
|
|
+ dioxus_html::KeyCode::Numpad2 => Code::Numpad2,
|
|
|
+ dioxus_html::KeyCode::Numpad3 => Code::Numpad3,
|
|
|
+ dioxus_html::KeyCode::Numpad4 => Code::Numpad4,
|
|
|
+ dioxus_html::KeyCode::Numpad5 => Code::Numpad5,
|
|
|
+ dioxus_html::KeyCode::Numpad6 => Code::Numpad6,
|
|
|
+ dioxus_html::KeyCode::Numpad7 => Code::Numpad7,
|
|
|
+ dioxus_html::KeyCode::Numpad8 => Code::Numpad8,
|
|
|
+ dioxus_html::KeyCode::Numpad9 => Code::Numpad9,
|
|
|
+ dioxus_html::KeyCode::Multiply => Code::NumpadMultiply,
|
|
|
+ dioxus_html::KeyCode::Add => Code::NumpadAdd,
|
|
|
+ dioxus_html::KeyCode::Subtract => Code::NumpadSubtract,
|
|
|
+ dioxus_html::KeyCode::DecimalPoint => Code::NumpadDecimal,
|
|
|
+ dioxus_html::KeyCode::Divide => Code::NumpadDivide,
|
|
|
+ dioxus_html::KeyCode::F1 => Code::F1,
|
|
|
+ dioxus_html::KeyCode::F2 => Code::F2,
|
|
|
+ dioxus_html::KeyCode::F3 => Code::F3,
|
|
|
+ dioxus_html::KeyCode::F4 => Code::F4,
|
|
|
+ dioxus_html::KeyCode::F5 => Code::F5,
|
|
|
+ dioxus_html::KeyCode::F6 => Code::F6,
|
|
|
+ dioxus_html::KeyCode::F7 => Code::F7,
|
|
|
+ dioxus_html::KeyCode::F8 => Code::F8,
|
|
|
+ dioxus_html::KeyCode::F9 => Code::F9,
|
|
|
+ dioxus_html::KeyCode::F10 => Code::F10,
|
|
|
+ dioxus_html::KeyCode::F11 => Code::F11,
|
|
|
+ dioxus_html::KeyCode::F12 => Code::F12,
|
|
|
+ dioxus_html::KeyCode::NumLock => Code::NumLock,
|
|
|
+ dioxus_html::KeyCode::ScrollLock => Code::ScrollLock,
|
|
|
+ dioxus_html::KeyCode::Semicolon => Code::Semicolon,
|
|
|
+ dioxus_html::KeyCode::EqualSign => Code::Equal,
|
|
|
+ dioxus_html::KeyCode::Comma => Code::Comma,
|
|
|
+ dioxus_html::KeyCode::Period => Code::Period,
|
|
|
+ dioxus_html::KeyCode::ForwardSlash => Code::Slash,
|
|
|
+ dioxus_html::KeyCode::GraveAccent => Code::Backquote,
|
|
|
+ dioxus_html::KeyCode::OpenBracket => Code::BracketLeft,
|
|
|
+ dioxus_html::KeyCode::BackSlash => Code::Backslash,
|
|
|
+ dioxus_html::KeyCode::CloseBraket => Code::BracketRight,
|
|
|
+ dioxus_html::KeyCode::SingleQuote => Code::Quote,
|
|
|
key => panic!("Failed to convert {:?} to tao::keyboard::KeyCode, try using tao::keyboard::KeyCode directly", key),
|
|
|
}
|
|
|
}
|