@@ -475,6 +475,25 @@ fn main() -> ! {
475475 scan_timer = timer. get_counter ( ) . ticks ( ) ;
476476 }
477477
478+ if !usb_suspended {
479+ let _ = keyboard_hid. interface ( ) . read_report ( ) ;
480+
481+ // Setup the report for the control channel
482+ let keycodes = if let Some ( keycode) = keycode {
483+ [ keycode]
484+ } else {
485+ [ Keyboard :: NoEventIndicated ]
486+ } ;
487+ match keyboard_hid. interface ( ) . write_report ( keycodes) {
488+ Err ( UsbHidError :: WouldBlock ) | Err ( UsbHidError :: Duplicate ) | Ok ( _) => { }
489+ Err ( e) => panic ! ( "Failed to write keyboard report: {:?}" , e) ,
490+ }
491+ match keyboard_hid. interface ( ) . tick ( ) {
492+ Err ( UsbHidError :: WouldBlock ) | Ok ( _) => { }
493+ Err ( e) => panic ! ( "Failed to process keyboard tick: {:?}" , e) ,
494+ }
495+ }
496+
478497 // Wake the host.
479498 if keycode. is_some ( ) && usb_suspended && usb_dev. remote_wakeup_enabled ( ) {
480499 usb_dev. bus ( ) . remote_wakeup ( ) ;
@@ -508,22 +527,7 @@ fn main() -> ! {
508527 //let kb = Matrix::default();
509528 //let kb = scanner.scan();
510529
511- let _ = keyboard_hid. interface ( ) . read_report ( ) ;
512-
513- // Setup the report for the control channel
514- let keycodes = if let Some ( keycode) = keycode {
515- [ keycode]
516- } else {
517- [ Keyboard :: NoEventIndicated ]
518- } ;
519- match keyboard_hid. interface ( ) . write_report ( keycodes) {
520- Err ( UsbHidError :: WouldBlock ) | Err ( UsbHidError :: Duplicate ) | Ok ( _) => { }
521- Err ( e) => panic ! ( "Failed to write keyboard report: {:?}" , e) ,
522- }
523- match keyboard_hid. interface ( ) . tick ( ) {
524- Err ( UsbHidError :: WouldBlock ) | Ok ( _) => { }
525- Err ( e) => panic ! ( "Failed to process keyboard tick: {:?}" , e) ,
526- }
530+ keyboard_hid. poll ( ) ;
527531
528532 // let mut buf = [0u8; 64];
529533 // match serial.read(&mut buf) {
0 commit comments