ohos-xcomponent-binding 0.2.0

OpenHarmony's xcomponent binding for rust
use ohos_xcomponent_sys::*;

use ohos_enum_macro::EnumFrom;

#[derive(Debug, Clone, Copy, PartialEq, Eq, EnumFrom)]
#[enum_from_config(OH_NativeXComponent_KeyCode, "OH_NativeXComponent_KeyCode_KEY_")]
pub enum KeyCode {
    Unknown,
    Fn,
    Home,
    Back,
    MediaPlayPause,
    MediaStop,
    MediaNext,
    MediaPrevious,
    MediaRewind,
    MediaFastForward,
    VolumeUp,
    VolumeDown,
    Power,
    Camera,
    VolumeMute,
    Mute,
    BrightnessUp,
    BrightnessDown,
    Key0,
    Key1,
    Key2,
    Key3,
    Key4,
    Key5,
    Key6,
    Key7,
    Key8,
    Key9,
    Star,
    Pound,
    DpadUp,
    DpadDown,
    DpadLeft,
    DpadRight,
    DpadCenter,
    A,
    B,
    C,
    D,
    E,
    F,
    G,
    H,
    I,
    J,
    K,
    L,
    M,
    N,
    O,
    P,
    Q,
    R,
    S,
    T,
    U,
    V,
    W,
    X,
    Y,
    Z,
    Comma,
    Period,
    AltLeft,
    AltRight,
    ShiftLeft,
    ShiftRight,
    Tab,
    Space,
    Sym,
    Explorer,
    Envelope,
    Enter,
    Del,
    Grave,
    Minus,
    Equals,
    LeftBracket,
    RightBracket,
    Backslash,
    Semicolon,
    Apostrophe,
    Slash,
    At,
    Plus,
    Menu,
    PageUp,
    PageDown,
    Escape,
    ForwardDel,
    CtrlLeft,
    CtrlRight,
    CapsLock,
    ScrollLock,
    MetaLeft,
    MetaRight,
    Function,
    SysRq,
    Break,
    MoveHome,
    MoveEnd,
    Insert,
    Forward,
    MediaPlay,
    MediaPause,
    MediaClose,
    MediaEject,
    MediaRecord,
    F1,
    F2,
    F3,
    F4,
    F5,
    F6,
    F7,
    F8,
    F9,
    F10,
    F11,
    F12,
    NumLock,
    Numpad0,
    Numpad1,
    Numpad2,
    Numpad3,
    Numpad4,
    Numpad5,
    Numpad6,
    Numpad7,
    Numpad8,
    Numpad9,
    NumpadDivide,
    NumpadMultiply,
    NumpadSubtract,
    NumpadAdd,
    NumpadDot,
    NumpadComma,
    NumpadEnter,
    NumpadEquals,
    NumpadLeftParen,
    NumpadRightParen,
    VirtualMultitask,
    Sleep,
    ZenkakuHankaku,
    Key102nd,
    Ro,
    Katakana,
    Hiragana,
    Henkan,
    KatakanaHiragana,
    Muhenkan,
    LineFeed,
    Macro,
    NumpadPlusMinus,
    Scale,
    Hanguel,
    Hanja,
    Yen,
    Stop,
    Again,
    Props,
    Undo,
    Copy,
    Open,
    Paste,
    Find,
    Cut,
    Help,
    Calc,
    File,
    Bookmarks,
    Next,
    PlayPause,
    Previous,
    StopCD,
    Config,
    Refresh,
    Exit,
    Edit,
    ScrollUp,
    ScrollDown,
    New,
    Redo,
    Close,
    Play,
    BassBoost,
    Print,
    Chat,
    Finance,
    Cancel,
    KeyboardIllumToggle,
    KeyboardIllumDown,
    KeyboardIllumUp,
    Send,
    Reply,
    ForwardMail,
    Save,
    Documents,
    VideoNext,
    VideoPrev,
    BrightnessCycle,
    BrightnessZero,
    DisplayOff,
    BtnMisc,
    Goto,
    Info,
    Program,
    PVR,
    Subtitle,
    FullScreen,
    Keyboard,
    AspectRatio,
    PC,
    TV,
    TV2,
    VCR,
    VCR2,
    Sat,
    CD,
    Tape,
    Tuner,
    Player,
    DVD,
    Audio,
    Video,
    Memo,
    Calendar,
    Red,
    Green,
    Yellow,
    Blue,
    ChannelUp,
    ChannelDown,
    Last,
    Restart,
    Slow,
    Shuffle,
    Videophone,
    Games,
    ZoomIn,
    ZoomOut,
    ZoomReset,
    WordProcessor,
    Editor,
    Spreadsheet,
    GraphicsEditor,
    Presentation,
    Database,
    News,
    Voicemail,
    AddressBook,
    Messenger,
    BrightnessToggle,
    SpellCheck,
    Coffee,
    MediaRepeat,
    Images,
    ButtonConfig,
    TaskManager,
    Journal,
    ControlPanel,
    AppSelect,
    ScreenSaver,
    Assistant,
    KbdLayoutNext,
    BrightnessMin,
    BrightnessMax,
    KbdInputAssistPrev,
    KbdInputAssistNext,
    KbdInputAssistPrevGroup,
    KbdInputAssistNextGroup,
    KbdInputAssistAccept,
    KbdInputAssistCancel,
    Front,
    Setup,
    Wakeup,
    SendFile,
    DeleteFile,
    Xfer,
    Prog1,
    Prog2,
    MsDos,
    ScreenLock,
    DirectionRotateDisplay,
    CycleWindows,
    Computer,
    EjectCloseCD,
    Iso,
    Move,
    F13,
    F14,
    F15,
    F16,
    F17,
    F18,
    F19,
    F20,
    F21,
    F22,
    F23,
    F24,
    Prog3,
    Prog4,
    Dashboard,
    Suspend,
    Hp,
    Sound,
    Question,
    Connect,
    Sport,
    Shop,
    AltErase,
    SwitchVideoMode,
    Battery,
    Bluetooth,
    Wlan,
    Uwb,
    WwanWimax,
    RfKill,
    Channel,
    Btn0,
    Btn1,
    Btn2,
    Btn3,
    Btn4,
    Btn5,
    Btn6,
    Btn7,
    Btn8,
    Btn9,
}

impl From<KeyCode> for u32 {
    fn from(value: KeyCode) -> Self {
        let key: OH_NativeXComponent_KeyCode = value.into();
        key as u32
    }
}