tcrab_console_gl 0.2.0

An OpenGL 3.3 console emulator
Documentation
use tcrab_console::event::{Event, KeyCode, ButtonState};

fn translate_key_code(glutin_key_code: glutin::VirtualKeyCode) -> Option<KeyCode> {
    Some(match glutin_key_code {
        glutin::VirtualKeyCode::Escape => KeyCode::Escape,
        glutin::VirtualKeyCode::Up => KeyCode::Up,
        glutin::VirtualKeyCode::Down => KeyCode::Down,
        glutin::VirtualKeyCode::Left => KeyCode::Left,
        glutin::VirtualKeyCode::Right => KeyCode::Right,
        _ => return None,
    })
}

pub fn translate(glutin_event: glutin::Event) -> Option<Event> {
    Some(match glutin_event {
        glutin::Event::WindowEvent { event: glutin_window_event, .. } => {
            match glutin_window_event {
                glutin::WindowEvent::CloseRequested => Event::Quit,
                glutin::WindowEvent::KeyboardInput { input, .. } => {
                    let key_state = match input.state {
                        glutin::ElementState::Pressed => ButtonState::Pressed,
                        glutin::ElementState::Released => ButtonState::Released,
                    };
                    Event::KeyboardInput {
                        key_code: input.virtual_keycode.and_then(translate_key_code),
                        key_state,
                    }
                }
                _ => return None,
            }
        },
        _ => return None,
    })
}