
usb_task.c
void usb_kbd_task (void)
{
  // if USB ready to transmit new data :
  //        - if last time = 0, nothing
  //        - if key pressed -> transmit key
  //        - if !key pressed -> transmit 0
  if ((!key_hit) && (usb_configuration_nb != 0) && !(Usb_suspend()))
  {
    kbd_test_hit();
    if (key_hit == TRUE)
    {
      Led_1_on();
      transmit_no_key = TRUE;
      Usb_select_ep(EP_KBD_IN);
      Usb_write_byte(0);
      Usb_write_byte(shift_key);
      Usb_write_byte(usb_key);
<font color="red">/*
      Usb_write_byte(0);     // cut off five key slots
      Usb_write_byte(0);
      Usb_write_byte(0);
      Usb_write_byte(0);
      Usb_write_byte(0);
*/</font>
      Usb_set_tx_ready();
      return;
    }

    if (transmit_no_key)
    {
      key_hit = TRUE;
      transmit_no_key = FALSE;
      Usb_select_ep(EP_KBD_IN);
      Usb_write_byte(0);
      Usb_write_byte(0);
      Usb_write_byte(0);
<font color="red">/*
      Usb_write_byte(0);
      Usb_write_byte(0);
      Usb_write_byte(0);
      Usb_write_byte(0);
      Usb_write_byte(0);
*/</font>
      Usb_set_tx_ready();
    }
  }
}
