use rustraight::prelude::*;
const KEYS: &[(KeyCode, &str)] = &[
(KeyCode::KeyA, "A"), (KeyCode::KeyB, "B"), (KeyCode::KeyC, "C"), (KeyCode::KeyD, "D"),
(KeyCode::KeyE, "E"), (KeyCode::KeyF, "F"), (KeyCode::KeyG, "G"), (KeyCode::KeyH, "H"),
(KeyCode::KeyI, "I"), (KeyCode::KeyJ, "J"), (KeyCode::KeyK, "K"), (KeyCode::KeyL, "L"),
(KeyCode::KeyM, "M"), (KeyCode::KeyN, "N"), (KeyCode::KeyO, "O"), (KeyCode::KeyP, "P"),
(KeyCode::KeyQ, "Q"), (KeyCode::KeyR, "R"), (KeyCode::KeyS, "S"), (KeyCode::KeyT, "T"),
(KeyCode::KeyU, "U"), (KeyCode::KeyV, "V"), (KeyCode::KeyW, "W"), (KeyCode::KeyX, "X"),
(KeyCode::KeyY, "Y"), (KeyCode::KeyZ, "Z"),
(KeyCode::Digit0, "0"), (KeyCode::Digit1, "1"), (KeyCode::Digit2, "2"), (KeyCode::Digit3, "3"),
(KeyCode::Digit4, "4"), (KeyCode::Digit5, "5"), (KeyCode::Digit6, "6"), (KeyCode::Digit7, "7"),
(KeyCode::Digit8, "8"), (KeyCode::Digit9, "9"),
(KeyCode::Numpad0, "N0"), (KeyCode::Numpad1, "N1"), (KeyCode::Numpad2, "N2"), (KeyCode::Numpad3, "N3"),
(KeyCode::Numpad4, "N4"), (KeyCode::Numpad5, "N5"), (KeyCode::Numpad6, "N6"), (KeyCode::Numpad7, "N7"),
(KeyCode::Numpad8, "N8"), (KeyCode::Numpad9, "N9"),
(KeyCode::NumpadAdd, "N+"), (KeyCode::NumpadSubtract, "N-"), (KeyCode::NumpadMultiply, "N*"),
(KeyCode::NumpadDivide, "N/"), (KeyCode::NumpadDecimal, "N."), (KeyCode::NumpadEnter, "NEnt"),
(KeyCode::NumLock, "NumLk"),
(KeyCode::F1, "F1"), (KeyCode::F2, "F2"), (KeyCode::F3, "F3"), (KeyCode::F4, "F4"),
(KeyCode::F5, "F5"), (KeyCode::F6, "F6"), (KeyCode::F7, "F7"), (KeyCode::F8, "F8"),
(KeyCode::F9, "F9"), (KeyCode::F10, "F10"), (KeyCode::F11, "F11"), (KeyCode::F12, "F12"),
(KeyCode::F13, "F13"), (KeyCode::F14, "F14"), (KeyCode::F15, "F15"), (KeyCode::F16, "F16"),
(KeyCode::F17, "F17"), (KeyCode::F18, "F18"), (KeyCode::F19, "F19"), (KeyCode::F20, "F20"),
(KeyCode::F21, "F21"), (KeyCode::F22, "F22"), (KeyCode::F23, "F23"), (KeyCode::F24, "F24"),
(KeyCode::ArrowUp, "Up"), (KeyCode::ArrowDown, "Dn"), (KeyCode::ArrowLeft, "Lt"), (KeyCode::ArrowRight, "Rt"),
(KeyCode::Home, "Home"), (KeyCode::End, "End"), (KeyCode::PageUp, "PgUp"), (KeyCode::PageDown, "PgDn"),
(KeyCode::Insert, "Ins"), (KeyCode::Delete, "Del"),
(KeyCode::ShiftLeft, "LShift"), (KeyCode::ShiftRight, "RShift"),
(KeyCode::ControlLeft, "LCtrl"), (KeyCode::ControlRight, "RCtrl"),
(KeyCode::AltLeft, "LAlt"), (KeyCode::AltRight, "RAlt"),
(KeyCode::SuperLeft, "LSuper"), (KeyCode::SuperRight, "RSuper"),
(KeyCode::Backspace, "BkSp"), (KeyCode::Enter, "Enter"), (KeyCode::Tab, "Tab"),
(KeyCode::Escape, "Esc"), (KeyCode::Space, "Space"), (KeyCode::CapsLock, "Caps"),
(KeyCode::Minus, "-"), (KeyCode::Equal, "="), (KeyCode::BracketLeft, "["), (KeyCode::BracketRight, "]"),
(KeyCode::Backslash, "\\"), (KeyCode::Semicolon, ";"), (KeyCode::Quote, "'"), (KeyCode::Backquote, "`"),
(KeyCode::Comma, ","), (KeyCode::Period, "."), (KeyCode::Slash, "/"),
(KeyCode::ScrollLock, "ScrLk"), (KeyCode::Pause, "Pause"), (KeyCode::PrintScreen, "PrtSc"),
];
fn main() {
init(WindowConfig {
title: String::from("06_keyboard"),
width: 900,
height: 500,
screen_width: 900,
screen_height: 500,
..Default::default()
});
while advance_frame() {
draw_fill(MAIN_SCREEN, Color::rgb(15, 15, 20));
draw_text(
MAIN_SCREEN, 10, 6,
"緑=押している / 白=押していない。押した/離した瞬間はコンソールログに出る",
Color::YELLOW,
);
let cols = 12;
let cell_w = 72;
let cell_h = 20;
let origin_x = 10;
let origin_y = 30;
for (i, (key, label)) in KEYS.iter().enumerate() {
let col = (i % cols) as i32;
let row = (i / cols) as i32;
let x = origin_x + col * cell_w;
let y = origin_y + row * cell_h;
let color = if is_pressed(*key) { Color::GREEN } else { Color::rgb(120, 120, 120) };
draw_text(MAIN_SCREEN, x, y, *label, color);
if is_just_pressed(*key) { log_info!("is_just_pressed: {key:?}"); }
if is_released(*key) { log_info!("is_released: {key:?}"); }
}
}
}