#![allow(non_camel_case_types)]
#![allow(non_upper_case_globals)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[repr(i32)]
pub enum ESteamDeckKeyboardLayout {
    QWERTY = 0,
    Bulgarian = 1,
    Chinese_Simplified = 2,
    Chinese_Traditional = 3,
    Czech = 4,
    Danish = 5,
    Finnish = 6,
    French = 7,
    German = 8,
    Greek = 9,
    Hungarian = 10,
    Italian = 11,
    Japanese = 12,
    Korean = 13,
    Norwegian = 14,
    Polish = 15,
    Portuguese = 16,
    Romanian = 17,
    Russian = 18,
    Spanish = 19,
    Swedish = 20,
    Thai = 21,
    Turkish_F = 22,
    Turkish_Q = 23,
    Ukrainian = 24,
    Vietnamese = 25,
    QWERTY_International = 26,
    Dvorak = 27,
    Colemak = 28,
    Bulgarian_Phonetic_Traditional = 29,
    Bulgarian_Phonetic = 30,
    Chinese_Traditional_Bopomofo = 31,
    Chinese_Traditional_Cangjie = 32,
    Japanese_Kana = 33,
    Chinese_Traditional_Quick = 34,
    Indonesian = 35,
}

impl ESteamDeckKeyboardLayout {
    pub fn from_i32(val: i32) -> Option<Self> {
        match val {
            x if x == Self::QWERTY as i32 => Some(Self::QWERTY),
            x if x == Self::Bulgarian as i32 => Some(Self::Bulgarian),
            x if x == Self::Chinese_Simplified as i32 => Some(Self::Chinese_Simplified),
            x if x == Self::Chinese_Traditional as i32 => Some(Self::Chinese_Traditional),
            x if x == Self::Czech as i32 => Some(Self::Czech),
            x if x == Self::Danish as i32 => Some(Self::Danish),
            x if x == Self::Finnish as i32 => Some(Self::Finnish),
            x if x == Self::French as i32 => Some(Self::French),
            x if x == Self::German as i32 => Some(Self::German),
            x if x == Self::Greek as i32 => Some(Self::Greek),
            x if x == Self::Hungarian as i32 => Some(Self::Hungarian),
            x if x == Self::Italian as i32 => Some(Self::Italian),
            x if x == Self::Japanese as i32 => Some(Self::Japanese),
            x if x == Self::Korean as i32 => Some(Self::Korean),
            x if x == Self::Norwegian as i32 => Some(Self::Norwegian),
            x if x == Self::Polish as i32 => Some(Self::Polish),
            x if x == Self::Portuguese as i32 => Some(Self::Portuguese),
            x if x == Self::Romanian as i32 => Some(Self::Romanian),
            x if x == Self::Russian as i32 => Some(Self::Russian),
            x if x == Self::Spanish as i32 => Some(Self::Spanish),
            x if x == Self::Swedish as i32 => Some(Self::Swedish),
            x if x == Self::Thai as i32 => Some(Self::Thai),
            x if x == Self::Turkish_F as i32 => Some(Self::Turkish_F),
            x if x == Self::Turkish_Q as i32 => Some(Self::Turkish_Q),
            x if x == Self::Ukrainian as i32 => Some(Self::Ukrainian),
            x if x == Self::Vietnamese as i32 => Some(Self::Vietnamese),
            x if x == Self::QWERTY_International as i32 => Some(Self::QWERTY_International),
            x if x == Self::Dvorak as i32 => Some(Self::Dvorak),
            x if x == Self::Colemak as i32 => Some(Self::Colemak),
            x if x == Self::Bulgarian_Phonetic_Traditional as i32 => Some(Self::Bulgarian_Phonetic_Traditional),
            x if x == Self::Bulgarian_Phonetic as i32 => Some(Self::Bulgarian_Phonetic),
            x if x == Self::Chinese_Traditional_Bopomofo as i32 => Some(Self::Chinese_Traditional_Bopomofo),
            x if x == Self::Chinese_Traditional_Cangjie as i32 => Some(Self::Chinese_Traditional_Cangjie),
            x if x == Self::Japanese_Kana as i32 => Some(Self::Japanese_Kana),
            x if x == Self::Chinese_Traditional_Quick as i32 => Some(Self::Chinese_Traditional_Quick),
            x if x == Self::Indonesian as i32 => Some(Self::Indonesian),
            _ => None,
        }
    }
}
