diff --git a/src/keyboard.rs b/src/keyboard.rs index e52216b..8cc03ee 100644 --- a/src/keyboard.rs +++ b/src/keyboard.rs @@ -21,6 +21,7 @@ pub struct Keyboard<'d, const KEY_N: usize> { num_keys: usize, } +#[derive(Debug, defmt::Format)] pub enum KeyboardError { MaxKeys, } diff --git a/src/main.rs b/src/main.rs index 94f9f6a..d0e1fd1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -45,18 +45,54 @@ async fn main(_spawner: Spawner) { let driver = Driver::new(p.USB, Irqs); let mut usb_buf = usb::UsbKeyboardBuf::new(); let usbkey = usb::UsbKeyboard::create_usb(&mut usb_buf, driver); + let mut keyboard = Keyboard::<6>::new(); - // Set up the signal pin that will be used to trigger the keyboard. - let mut signal_pin = Input::new(p.PIN_16, Pull::None); - - // Enable the schmitt trigger to slightly debounce. + let mut signal_pin = Input::new(p.PIN_15, Pull::None); signal_pin.set_schmitt(true); - - let mut keyboard = Keyboard::<1>::new(); match keyboard.add_key(signal_pin, 'a') { Ok(()) => info!("Key 'a' registered"), - Err(_) => { - defmt::panic!("Failed to register key!"); + Err(e) => { + defmt::panic!("Failed to register key! {:?}", e); + } + } + let mut signal_pin = Input::new(p.PIN_16, Pull::None); + signal_pin.set_schmitt(true); + match keyboard.add_key(signal_pin, 'a') { + Ok(()) => info!("Key 'a' registered"), + Err(e) => { + defmt::panic!("Failed to register key! {:?}", e); + } + } + let mut signal_pin = Input::new(p.PIN_17, Pull::None); + signal_pin.set_schmitt(true); + match keyboard.add_key(signal_pin, 'a') { + Ok(()) => info!("Key 'a' registered"), + Err(e) => { + defmt::panic!("Failed to register key! {:?}", e); + } + } + let mut signal_pin = Input::new(p.PIN_18, Pull::None); + signal_pin.set_schmitt(true); + match keyboard.add_key(signal_pin, 'a') { + Ok(()) => info!("Key 'a' registered"), + Err(e) => { + defmt::panic!("Failed to register key! {:?}", e); + } + } + let mut signal_pin = Input::new(p.PIN_19, Pull::None); + signal_pin.set_schmitt(true); + match keyboard.add_key(signal_pin, 'a') { + Ok(()) => info!("Key 'a' registered"), + Err(e) => { + defmt::panic!("Failed to register key! {:?}", e); + } + } + let mut signal_pin = Input::new(p.PIN_20, Pull::None); + signal_pin.set_schmitt(true); + match keyboard.add_key(signal_pin, 'a') { + Ok(()) => info!("Key 'a' registered"), + Err(e) => { + defmt::panic!("Failed to register key! {:?}", e); } } diff --git a/src/usb.rs b/src/usb.rs index b68fecb..fafe632 100644 --- a/src/usb.rs +++ b/src/usb.rs @@ -27,8 +27,8 @@ pub enum KeyboardAction { impl From for KeyboardAction { fn from(value: Level) -> Self { match value { - Level::Low => KeyboardAction::Depress, - Level::High => KeyboardAction::Press, + Level::High => KeyboardAction::Depress, + Level::Low => KeyboardAction::Press, } } }