chipo 2.1.0

A chip-8 emulator.
Documentation
const KEY_COUNT: usize = 16;

pub struct Keypad {
    keys: u16,
}

impl Keypad {
    pub fn new() -> Self {
        Keypad { keys: 0 }
    }

    pub fn clear(&mut self) {
        self.keys = 0;
    }

    pub fn is_pressed(&self, index: usize) -> bool {
        (self.keys & (1 << index)) != 0
    }

    pub fn poll_key(&self) -> Option<usize> {
        for i in 0..KEY_COUNT {
            if self.is_pressed(i) {
                return Some(i);
            }
        }
        None
    }

    pub fn press_key(&mut self, index: usize) {
        self.keys |= 1 << index;
    }

    pub fn release_key(&mut self, index: usize) {
        self.keys &= !(1 << index);
    }
}