feat(core): add keyboard for ohos

This commit is contained in:
richerfu
2025-11-17 14:56:20 +08:00
committed by GitHub
parent 27233f575f
commit 6a46610632
2 changed files with 19 additions and 2 deletions

View File

@@ -29,11 +29,13 @@ pub enum NativeKeyCode {
Windows(u16), Windows(u16),
/// An XKB "keycode". /// An XKB "keycode".
Xkb(u32), Xkb(u32),
/// An OpenHarmony "scancode".
Ohos(u32),
} }
impl std::fmt::Debug for NativeKeyCode { impl std::fmt::Debug for NativeKeyCode {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
use NativeKeyCode::{Android, MacOS, Unidentified, Windows, Xkb}; use NativeKeyCode::{Android, MacOS, Ohos, Unidentified, Windows, Xkb};
let mut debug_tuple; let mut debug_tuple;
match self { match self {
Unidentified => { Unidentified => {
@@ -55,6 +57,10 @@ impl std::fmt::Debug for NativeKeyCode {
debug_tuple = f.debug_tuple("Xkb"); debug_tuple = f.debug_tuple("Xkb");
debug_tuple.field(&format_args!("0x{code:04X}")); debug_tuple.field(&format_args!("0x{code:04X}"));
}, },
Ohos(code) => {
debug_tuple = f.debug_tuple("OpenHarmony");
debug_tuple.field(&format_args!("0x{code:04X}"));
},
} }
debug_tuple.finish() debug_tuple.finish()
} }
@@ -85,11 +91,13 @@ pub enum NativeKey {
Xkb(u32), Xkb(u32),
/// A "key value string". /// A "key value string".
Web(SmolStr), Web(SmolStr),
/// An OpenHarmony "keycode", which is similar to a "virtual-key code" on Windows.
Ohos(u32),
} }
impl std::fmt::Debug for NativeKey { impl std::fmt::Debug for NativeKey {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
use NativeKey::{Android, MacOS, Unidentified, Web, Windows, Xkb}; use NativeKey::{Android, MacOS, Ohos, Unidentified, Web, Windows, Xkb};
let mut debug_tuple; let mut debug_tuple;
match self { match self {
Unidentified => { Unidentified => {
@@ -115,6 +123,10 @@ impl std::fmt::Debug for NativeKey {
debug_tuple = f.debug_tuple("Web"); debug_tuple = f.debug_tuple("Web");
debug_tuple.field(code); debug_tuple.field(code);
}, },
Ohos(code) => {
debug_tuple = f.debug_tuple("OpenHarmony");
debug_tuple.field(code);
},
} }
debug_tuple.finish() debug_tuple.finish()
} }
@@ -129,6 +141,7 @@ impl From<NativeKeyCode> for NativeKey {
NativeKeyCode::MacOS(x) => NativeKey::MacOS(x), NativeKeyCode::MacOS(x) => NativeKey::MacOS(x),
NativeKeyCode::Windows(x) => NativeKey::Windows(x), NativeKeyCode::Windows(x) => NativeKey::Windows(x),
NativeKeyCode::Xkb(x) => NativeKey::Xkb(x), NativeKeyCode::Xkb(x) => NativeKey::Xkb(x),
NativeKeyCode::Ohos(x) => NativeKey::Ohos(x),
} }
} }
} }

View File

@@ -39,3 +39,7 @@ The migration guide could reference other migration examples in the current
changelog entry. changelog entry.
## Unreleased ## Unreleased
### Added
- Add `keyboard` support for OpenHarmony.