use super::unsupported_key;

use skulpin::sdl2::keyboard::Keycode;

pub fn handle_qwerty_layout(
    keycode: Keycode,
    shift: bool,
    ctrl: bool,
    alt: bool,
) -> Option<(&'static str, bool, bool, bool, bool)> {
    match (keycode, shift, ctrl, alt) {
        (Keycode::Backspace, shift, ctrl, alt) => Some(("BS", true, shift, ctrl, alt)),
        (Keycode::Tab, shift, ctrl, alt) => Some(("Tab", true, shift, ctrl, alt)),
        (Keycode::Return, shift, ctrl, alt) => Some(("Enter", true, shift, ctrl, alt)),
        (Keycode::Escape, shift, ctrl, alt) => Some(("Esc", true, shift, ctrl, alt)),
        (Keycode::Space, shift, ctrl, alt) => Some((" ", false, shift, ctrl, alt)),
        (Keycode::Exclaim, shift, ctrl, alt) => Some(("!", false, shift, ctrl, alt)),
        (Keycode::Quotedbl, shift, ctrl, alt) => Some(("\"", false, shift, ctrl, alt)),
        (Keycode::Hash, shift, ctrl, alt) => Some(("#", false, shift, ctrl, alt)),
        (Keycode::Dollar, shift, ctrl, alt) => Some(("$", false, shift, ctrl, alt)),
        (Keycode::Percent, shift, ctrl, alt) => Some(("%", false, shift, ctrl, alt)),
        (Keycode::Ampersand, shift, ctrl, alt) => Some(("&", false, shift, ctrl, alt)),
        (Keycode::Quote, false, ctrl, alt) => Some(("'", false, false, ctrl, alt)),
        (Keycode::Quote, true, ctrl, alt) => Some(("\"", false, false, ctrl, alt)),
        (Keycode::LeftParen, shift, ctrl, alt) => Some(("(", false, shift, ctrl, alt)),
        (Keycode::RightParen, shift, ctrl, alt) => Some((")", false, shift, ctrl, alt)),
        (Keycode::Asterisk, shift, ctrl, alt) => Some(("*", false, shift, ctrl, alt)),
        (Keycode::Plus, shift, ctrl, alt) => Some(("+", false, shift, ctrl, alt)),
        (Keycode::Comma, false, ctrl, alt) => Some((",", false, shift, ctrl, alt)),
        (Keycode::Comma, true, ctrl, alt) => Some(("<", false, shift, ctrl, alt)),
        (Keycode::Minus, false, ctrl, alt) => Some(("-", false, false, ctrl, alt)),
        (Keycode::Minus, true, ctrl, alt) => Some(("_", false, false, ctrl, alt)),
        (Keycode::Period, false, ctrl, alt) => Some((".", false, false, ctrl, alt)),
        (Keycode::Period, true, ctrl, alt) => Some((">", false, false, ctrl, alt)),
        (Keycode::Slash, false, ctrl, alt) => Some(("/", false, false, ctrl, alt)),
        (Keycode::Slash, true, ctrl, alt) => Some(("?", false, false, ctrl, alt)),
        (Keycode::Num0, false, ctrl, alt) => Some(("0", false, shift, ctrl, alt)),
        (Keycode::Num0, true, ctrl, alt) => Some((")", true, shift, ctrl, alt)),
        (Keycode::Num1, false, ctrl, alt) => Some(("1", false, shift, ctrl, alt)),
        (Keycode::Num1, true, ctrl, alt) => Some(("!", true, shift, ctrl, alt)),
        (Keycode::Num2, false, ctrl, alt) => Some(("2", false, false, ctrl, alt)),
        (Keycode::Num2, true, ctrl, alt) => Some(("@", false, false, ctrl, alt)),
        (Keycode::Num3, false, ctrl, alt) => Some(("3", false, false, ctrl, alt)),
        (Keycode::Num3, true, ctrl, alt) => Some(("#", false, false, ctrl, alt)),
        (Keycode::Num4, false, ctrl, alt) => Some(("4", false, false, ctrl, alt)),
        (Keycode::Num4, true, ctrl, alt) => Some(("$", false, false, ctrl, alt)),
        (Keycode::Num5, false, ctrl, alt) => Some(("5", false, false, ctrl, alt)),
        (Keycode::Num5, true, ctrl, alt) => Some(("%", false, false, ctrl, alt)),
        (Keycode::Num6, false, ctrl, alt) => Some(("6", false, false, ctrl, alt)),
        (Keycode::Num6, true, ctrl, alt) => Some(("^", false, false, ctrl, alt)),
        (Keycode::Num7, false, ctrl, alt) => Some(("7", false, false, ctrl, alt)),
        (Keycode::Num7, true, ctrl, alt) => Some(("&", false, false, ctrl, alt)),
        (Keycode::Num8, false, ctrl, alt) => Some(("8", false, false, ctrl, alt)),
        (Keycode::Num8, true, ctrl, alt) => Some(("*", false, false, ctrl, alt)),
        (Keycode::Num9, false, ctrl, alt) => Some(("9", false, false, ctrl, alt)),
        (Keycode::Num9, true, ctrl, alt) => Some(("(", true, false, ctrl, alt)),
        (Keycode::Colon, shift, ctrl, alt) => Some((":", false, shift, ctrl, alt)),
        (Keycode::Semicolon, false, ctrl, alt) => Some((";", false, false, ctrl, alt)),
        (Keycode::Semicolon, true, ctrl, alt) => Some((":", false, false, ctrl, alt)),
        (Keycode::Less, shift, ctrl, alt) => Some(("lt", false, shift, ctrl, alt)),
        (Keycode::Equals, false, ctrl, alt) => Some(("=", false, false, ctrl, alt)),
        (Keycode::Equals, true, ctrl, alt) => Some(("+", false, false, ctrl, alt)),
        (Keycode::Greater, shift, ctrl, alt) => Some(("gt", false, shift, ctrl, alt)),
        (Keycode::Question, shift, ctrl, alt) => Some(("?", false, shift, ctrl, alt)),
        (Keycode::At, shift, ctrl, alt) => Some(("@", false, shift, ctrl, alt)),
        (Keycode::LeftBracket, false, ctrl, alt) => Some(("[", false, false, ctrl, alt)),
        (Keycode::LeftBracket, true, ctrl, alt) => Some(("{", false, false, ctrl, alt)),
        (Keycode::Backslash, false, ctrl, alt) => Some(("\\", false, false, ctrl, alt)),
        (Keycode::Backslash, true, ctrl, alt) => Some(("|", false, false, ctrl, alt)),
        (Keycode::RightBracket, false, ctrl, alt) => Some(("]", false, false, ctrl, alt)),
        (Keycode::RightBracket, true, ctrl, alt) => Some(("}", false, false, ctrl, alt)),
        (Keycode::Caret, shift, ctrl, alt) => Some(("^", false, shift, ctrl, alt)),
        (Keycode::Underscore, shift, ctrl, alt) => Some(("_", false, shift, ctrl, alt)),
        (Keycode::Backquote, false, ctrl, alt) => Some(("`", false, false, ctrl, alt)),
        (Keycode::Backquote, true, ctrl, alt) => Some(("~", false, false, ctrl, alt)),
        (Keycode::A, shift, ctrl, alt) => Some(("a", false, shift, ctrl, alt)),
        (Keycode::B, shift, ctrl, alt) => Some(("b", false, shift, ctrl, alt)),
        (Keycode::C, shift, ctrl, alt) => Some(("c", false, shift, ctrl, alt)),
        (Keycode::D, shift, ctrl, alt) => Some(("d", false, shift, ctrl, alt)),
        (Keycode::E, shift, ctrl, alt) => Some(("e", false, shift, ctrl, alt)),
        (Keycode::F, shift, ctrl, alt) => Some(("f", false, shift, ctrl, alt)),
        (Keycode::G, shift, ctrl, alt) => Some(("g", false, shift, ctrl, alt)),
        (Keycode::H, shift, ctrl, alt) => Some(("h", false, shift, ctrl, alt)),
        (Keycode::I, shift, ctrl, alt) => Some(("i", false, shift, ctrl, alt)),
        (Keycode::J, shift, ctrl, alt) => Some(("j", false, shift, ctrl, alt)),
        (Keycode::K, shift, ctrl, alt) => Some(("k", false, shift, ctrl, alt)),
        (Keycode::L, shift, ctrl, alt) => Some(("l", false, shift, ctrl, alt)),
        (Keycode::M, shift, ctrl, alt) => Some(("m", false, shift, ctrl, alt)),
        (Keycode::N, shift, ctrl, alt) => Some(("n", false, shift, ctrl, alt)),
        (Keycode::O, shift, ctrl, alt) => Some(("o", false, shift, ctrl, alt)),
        (Keycode::P, shift, ctrl, alt) => Some(("p", false, shift, ctrl, alt)),
        (Keycode::Q, shift, ctrl, alt) => Some(("q", false, shift, ctrl, alt)),
        (Keycode::R, shift, ctrl, alt) => Some(("r", false, shift, ctrl, alt)),
        (Keycode::S, shift, ctrl, alt) => Some(("s", false, shift, ctrl, alt)),
        (Keycode::T, shift, ctrl, alt) => Some(("t", false, shift, ctrl, alt)),
        (Keycode::U, shift, ctrl, alt) => Some(("u", false, shift, ctrl, alt)),
        (Keycode::V, shift, ctrl, alt) => Some(("v", false, shift, ctrl, alt)),
        (Keycode::W, shift, ctrl, alt) => Some(("w", false, shift, ctrl, alt)),
        (Keycode::X, shift, ctrl, alt) => Some(("x", false, shift, ctrl, alt)),
        (Keycode::Y, shift, ctrl, alt) => Some(("y", false, shift, ctrl, alt)),
        (Keycode::Z, shift, ctrl, alt) => Some(("z", false, shift, ctrl, alt)),
        (Keycode::Delete, shift, ctrl, alt) => Some(("Delete", true, shift, ctrl, alt)),
        (Keycode::CapsLock, _, _, _) => unsupported_key(Keycode::CapsLock),
        (Keycode::F1, shift, ctrl, alt) => Some(("F1", true, shift, ctrl, alt)),
        (Keycode::F2, shift, ctrl, alt) => Some(("F2", true, shift, ctrl, alt)),
        (Keycode::F3, shift, ctrl, alt) => Some(("F3", true, shift, ctrl, alt)),
        (Keycode::F4, shift, ctrl, alt) => Some(("F4", true, shift, ctrl, alt)),
        (Keycode::F5, shift, ctrl, alt) => Some(("F5", true, shift, ctrl, alt)),
        (Keycode::F6, shift, ctrl, alt) => Some(("F6", true, shift, ctrl, alt)),
        (Keycode::F7, shift, ctrl, alt) => Some(("F7", true, shift, ctrl, alt)),
        (Keycode::F8, shift, ctrl, alt) => Some(("F8", true, shift, ctrl, alt)),
        (Keycode::F9, shift, ctrl, alt) => Some(("F9", true, shift, ctrl, alt)),
        (Keycode::F10, shift, ctrl, alt) => Some(("F10", true, shift, ctrl, alt)),
        (Keycode::F11, shift, ctrl, alt) => Some(("F11", true, shift, ctrl, alt)),
        (Keycode::F12, shift, ctrl, alt) => Some(("F12", true, shift, ctrl, alt)),
        (Keycode::PrintScreen, _, _, _) => unsupported_key(Keycode::PrintScreen),
        (Keycode::ScrollLock, _, _, _) => unsupported_key(Keycode::ScrollLock),
        (Keycode::Pause, _, _, _) => unsupported_key(Keycode::Pause),
        (Keycode::Insert, shift, ctrl, alt) => Some(("Insert", true, shift, ctrl, alt)),
        (Keycode::Home, shift, ctrl, alt) => Some(("Home", true, shift, ctrl, alt)),
        (Keycode::PageUp, shift, ctrl, alt) => Some(("PageUp", true, shift, ctrl, alt)),
        (Keycode::End, shift, ctrl, alt) => Some(("End", true, shift, ctrl, alt)),
        (Keycode::PageDown, shift, ctrl, alt) => Some(("PageDown", true, shift, ctrl, alt)),
        (Keycode::Right, shift, ctrl, alt) => Some(("Right", true, shift, ctrl, alt)),
        (Keycode::Left, shift, ctrl, alt) => Some(("Left", true, shift, ctrl, alt)),
        (Keycode::Down, shift, ctrl, alt) => Some(("Down", true, shift, ctrl, alt)),
        (Keycode::Up, shift, ctrl, alt) => Some(("Up", true, shift, ctrl, alt)),
        (Keycode::NumLockClear, _, _, _) => unsupported_key(Keycode::NumLockClear),
        (Keycode::KpDivide, shift, ctrl, alt) => Some(("/", true, shift, ctrl, alt)),
        (Keycode::KpMultiply, shift, ctrl, alt) => Some(("*", true, shift, ctrl, alt)),
        (Keycode::KpMinus, shift, ctrl, alt) => Some(("-", true, shift, ctrl, alt)),
        (Keycode::KpPlus, shift, ctrl, alt) => Some(("+", true, shift, ctrl, alt)),
        (Keycode::KpEnter, shift, ctrl, alt) => Some(("Enter", true, shift, ctrl, alt)),
        (Keycode::Kp0, shift, ctrl, alt) => Some(("0", false, shift, ctrl, alt)),
        (Keycode::Kp1, shift, ctrl, alt) => Some(("1", false, shift, ctrl, alt)),
        (Keycode::Kp2, shift, ctrl, alt) => Some(("2", false, shift, ctrl, alt)),
        (Keycode::Kp3, shift, ctrl, alt) => Some(("3", false, shift, ctrl, alt)),
        (Keycode::Kp4, shift, ctrl, alt) => Some(("4", false, shift, ctrl, alt)),
        (Keycode::Kp5, shift, ctrl, alt) => Some(("5", false, shift, ctrl, alt)),
        (Keycode::Kp6, shift, ctrl, alt) => Some(("6", false, shift, ctrl, alt)),
        (Keycode::Kp7, shift, ctrl, alt) => Some(("7", false, shift, ctrl, alt)),
        (Keycode::Kp8, shift, ctrl, alt) => Some(("8", false, shift, ctrl, alt)),
        (Keycode::Kp9, shift, ctrl, alt) => Some(("9", false, shift, ctrl, alt)),
        (Keycode::KpPeriod, shift, ctrl, alt) => Some((".", false, shift, ctrl, alt)),
        (Keycode::Application, _, _, _) => unsupported_key(Keycode::Application),
        (Keycode::Power, _, _, _) => unsupported_key(Keycode::Power),
        (Keycode::KpEquals, shift, ctrl, alt) => Some(("=", false, shift, ctrl, alt)),
        (Keycode::F13, shift, ctrl, alt) => Some(("F13", true, shift, ctrl, alt)),
        (Keycode::F14, shift, ctrl, alt) => Some(("F14", true, shift, ctrl, alt)),
        (Keycode::F15, shift, ctrl, alt) => Some(("F15", true, shift, ctrl, alt)),
        (Keycode::F16, shift, ctrl, alt) => Some(("F16", true, shift, ctrl, alt)),
        (Keycode::F17, shift, ctrl, alt) => Some(("F17", true, shift, ctrl, alt)),
        (Keycode::F18, shift, ctrl, alt) => Some(("F18", true, shift, ctrl, alt)),
        (Keycode::F19, shift, ctrl, alt) => Some(("F19", true, shift, ctrl, alt)),
        (Keycode::F20, shift, ctrl, alt) => Some(("F20", true, shift, ctrl, alt)),
        (Keycode::F21, shift, ctrl, alt) => Some(("F21", true, shift, ctrl, alt)),
        (Keycode::F22, shift, ctrl, alt) => Some(("F22", true, shift, ctrl, alt)),
        (Keycode::F23, shift, ctrl, alt) => Some(("F23", true, shift, ctrl, alt)),
        (Keycode::F24, shift, ctrl, alt) => Some(("F24", true, shift, ctrl, alt)),
        (Keycode::Execute, _, _, _) => unsupported_key(Keycode::Execute),
        (Keycode::Help, _, _, _) => unsupported_key(Keycode::Help),
        (Keycode::Menu, _, _, _) => unsupported_key(Keycode::Menu),
        (Keycode::Select, _, _, _) => unsupported_key(Keycode::Select),
        (Keycode::Stop, _, _, _) => unsupported_key(Keycode::Stop),
        (Keycode::Again, _, _, _) => unsupported_key(Keycode::Again),
        (Keycode::Undo, _, _, _) => unsupported_key(Keycode::Undo),
        (Keycode::Cut, _, _, _) => unsupported_key(Keycode::Cut),
        (Keycode::Copy, _, _, _) => unsupported_key(Keycode::Copy),
        (Keycode::Paste, _, _, _) => unsupported_key(Keycode::Paste),
        (Keycode::Find, _, _, _) => unsupported_key(Keycode::Find),
        (Keycode::Mute, _, _, _) => unsupported_key(Keycode::Mute),
        (Keycode::VolumeUp, _, _, _) => unsupported_key(Keycode::VolumeUp),
        (Keycode::VolumeDown, _, _, _) => unsupported_key(Keycode::VolumeDown),
        (Keycode::KpComma, _, _, _) => unsupported_key(Keycode::KpComma),
        (Keycode::KpEqualsAS400, _, _, _) => unsupported_key(Keycode::KpEqualsAS400),
        (Keycode::AltErase, _, _, _) => unsupported_key(Keycode::AltErase),
        (Keycode::Sysreq, _, _, _) => unsupported_key(Keycode::Sysreq),
        (Keycode::Cancel, _, _, _) => unsupported_key(Keycode::Cancel),
        (Keycode::Clear, _, _, _) => unsupported_key(Keycode::Clear),
        (Keycode::Prior, _, _, _) => unsupported_key(Keycode::Prior),
        (Keycode::Return2, _, _, _) => unsupported_key(Keycode::Return2),
        (Keycode::Separator, _, _, _) => unsupported_key(Keycode::Separator),
        (Keycode::Out, _, _, _) => unsupported_key(Keycode::Out),
        (Keycode::Oper, _, _, _) => unsupported_key(Keycode::Oper),
        (Keycode::ClearAgain, _, _, _) => unsupported_key(Keycode::ClearAgain),
        (Keycode::CrSel, _, _, _) => unsupported_key(Keycode::CrSel),
        (Keycode::ExSel, _, _, _) => unsupported_key(Keycode::ExSel),
        (Keycode::Kp00, _, _, _) => unsupported_key(Keycode::Kp00),
        (Keycode::Kp000, _, _, _) => unsupported_key(Keycode::Kp000),
        (Keycode::ThousandsSeparator, _, _, _) => unsupported_key(Keycode::ThousandsSeparator),
        (Keycode::DecimalSeparator, _, _, _) => unsupported_key(Keycode::DecimalSeparator),
        (Keycode::CurrencyUnit, _, _, _) => unsupported_key(Keycode::CurrencyUnit),
        (Keycode::CurrencySubUnit, _, _, _) => unsupported_key(Keycode::CurrencySubUnit),
        (Keycode::KpLeftParen, shift, ctrl, alt) => Some(("(", false, shift, ctrl, alt)),
        (Keycode::KpRightParen, shift, ctrl, alt) => Some(("(", false, shift, ctrl, alt)),
        (Keycode::KpLeftBrace, shift, ctrl, alt) => Some(("[", false, shift, ctrl, alt)),
        (Keycode::KpRightBrace, shift, ctrl, alt) => Some(("]", false, shift, ctrl, alt)),
        (Keycode::KpTab, shift, ctrl, alt) => Some(("TAB", true, shift, ctrl, alt)),
        (Keycode::KpBackspace, shift, ctrl, alt) => Some(("BS", true, shift, ctrl, alt)),
        (Keycode::KpA, shift, ctrl, alt) => Some(("A", false, shift, ctrl, alt)),
        (Keycode::KpB, shift, ctrl, alt) => Some(("B", false, shift, ctrl, alt)),
        (Keycode::KpC, shift, ctrl, alt) => Some(("C", false, shift, ctrl, alt)),
        (Keycode::KpD, shift, ctrl, alt) => Some(("D", false, shift, ctrl, alt)),
        (Keycode::KpE, shift, ctrl, alt) => Some(("E", false, shift, ctrl, alt)),
        (Keycode::KpF, shift, ctrl, alt) => Some(("F", false, shift, ctrl, alt)),
        (Keycode::KpXor, _, _, _) => unsupported_key(Keycode::KpXor),
        (Keycode::KpPower, shift, ctrl, alt) => Some(("^", false, shift, ctrl, alt)),
        (Keycode::KpPercent, shift, ctrl, alt) => Some(("%", false, shift, ctrl, alt)),
        (Keycode::KpLess, shift, ctrl, alt) => Some(("lt", true, shift, ctrl, alt)),
        (Keycode::KpGreater, shift, ctrl, alt) => Some(("gt", true, shift, ctrl, alt)),
        (Keycode::KpAmpersand, shift, ctrl, alt) => Some(("&", false, shift, ctrl, alt)),
        (Keycode::KpDblAmpersand, _, _, _) => unsupported_key(Keycode::KpDblAmpersand),
        (Keycode::KpVerticalBar, shift, ctrl, alt) => Some(("|", false, shift, ctrl, alt)),
        (Keycode::KpDblVerticalBar, _, _, _) => unsupported_key(Keycode::KpDblVerticalBar),
        (Keycode::KpColon, shift, ctrl, alt) => Some((":", false, shift, ctrl, alt)),
        (Keycode::KpHash, shift, ctrl, alt) => Some(("#", false, shift, ctrl, alt)),
        (Keycode::KpSpace, shift, ctrl, alt) => Some((" ", false, shift, ctrl, alt)),
        (Keycode::KpAt, shift, ctrl, alt) => Some(("@", false, shift, ctrl, alt)),
        (Keycode::KpExclam, shift, ctrl, alt) => Some(("!", false, shift, ctrl, alt)),
        (Keycode::KpMemStore, _, _, _) => unsupported_key(Keycode::KpMemStore),
        (Keycode::KpMemRecall, _, _, _) => unsupported_key(Keycode::KpMemRecall),
        (Keycode::KpMemClear, _, _, _) => unsupported_key(Keycode::KpMemClear),
        (Keycode::KpMemAdd, _, _, _) => unsupported_key(Keycode::KpMemAdd),
        (Keycode::KpMemSubtract, _, _, _) => unsupported_key(Keycode::KpMemSubtract),
        (Keycode::KpMemMultiply, _, _, _) => unsupported_key(Keycode::KpMemMultiply),
        (Keycode::KpMemDivide, _, _, _) => unsupported_key(Keycode::KpMemDivide),
        (Keycode::KpPlusMinus, _, _, _) => unsupported_key(Keycode::KpPlusMinus),
        (Keycode::KpClear, _, _, _) => unsupported_key(Keycode::KpClear),
        (Keycode::KpClearEntry, _, _, _) => unsupported_key(Keycode::KpClearEntry),
        (Keycode::KpBinary, _, _, _) => unsupported_key(Keycode::KpBinary),
        (Keycode::KpOctal, _, _, _) => unsupported_key(Keycode::KpOctal),
        (Keycode::KpDecimal, _, _, _) => unsupported_key(Keycode::KpDecimal),
        (Keycode::KpHexadecimal, _, _, _) => unsupported_key(Keycode::KpHexadecimal),
        (Keycode::LCtrl, _, _, _) => None,
        (Keycode::LShift, _, _, _) => None,
        (Keycode::LAlt, _, _, _) => None,
        (Keycode::LGui, _, _, _) => None,
        (Keycode::RCtrl, _, _, _) => None,
        (Keycode::RShift, _, _, _) => None,
        (Keycode::RAlt, _, _, _) => None,
        (Keycode::RGui, _, _, _) => None,
        (Keycode::Mode, _, _, _) => unsupported_key(Keycode::Mode),
        (Keycode::AudioNext, _, _, _) => unsupported_key(Keycode::AudioNext),
        (Keycode::AudioPrev, _, _, _) => unsupported_key(Keycode::AudioPrev),
        (Keycode::AudioStop, _, _, _) => unsupported_key(Keycode::AudioStop),
        (Keycode::AudioPlay, _, _, _) => unsupported_key(Keycode::AudioPlay),
        (Keycode::AudioMute, _, _, _) => unsupported_key(Keycode::AudioMute),
        (Keycode::MediaSelect, _, _, _) => unsupported_key(Keycode::MediaSelect),
        (Keycode::Www, _, _, _) => unsupported_key(Keycode::Www),
        (Keycode::Mail, _, _, _) => unsupported_key(Keycode::Mail),
        (Keycode::Calculator, _, _, _) => unsupported_key(Keycode::Calculator),
        (Keycode::Computer, _, _, _) => unsupported_key(Keycode::Computer),
        (Keycode::AcSearch, _, _, _) => unsupported_key(Keycode::AcSearch),
        (Keycode::AcHome, _, _, _) => unsupported_key(Keycode::AcHome),
        (Keycode::AcBack, _, _, _) => unsupported_key(Keycode::AcBack),
        (Keycode::AcForward, _, _, _) => unsupported_key(Keycode::AcForward),
        (Keycode::AcStop, _, _, _) => unsupported_key(Keycode::AcStop),
        (Keycode::AcRefresh, _, _, _) => unsupported_key(Keycode::AcRefresh),
        (Keycode::AcBookmarks, _, _, _) => unsupported_key(Keycode::AcBookmarks),
        (Keycode::BrightnessDown, _, _, _) => unsupported_key(Keycode::BrightnessDown),
        (Keycode::BrightnessUp, _, _, _) => unsupported_key(Keycode::BrightnessUp),
        (Keycode::DisplaySwitch, _, _, _) => unsupported_key(Keycode::DisplaySwitch),
        (Keycode::KbdIllumToggle, _, _, _) => unsupported_key(Keycode::KbdIllumToggle),
        (Keycode::KbdIllumDown, _, _, _) => unsupported_key(Keycode::KbdIllumDown),
        (Keycode::KbdIllumUp, _, _, _) => unsupported_key(Keycode::KbdIllumUp),
        (Keycode::Eject, _, _, _) => unsupported_key(Keycode::Eject),
        (Keycode::Sleep, _, _, _) => unsupported_key(Keycode::Sleep),
    }
}
