-    USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;\r
-    \r
-    uint8_t JoyStatus_LCL    = Joystick_GetStatus();\r
-    uint8_t ButtonStatus_LCL = Buttons_GetStatus();\r
-\r
-    if (JoyStatus_LCL & JOY_UP)\r
-      KeyboardReport->KeyCode[0] = 0x04; // A\r
-    else if (JoyStatus_LCL & JOY_DOWN)\r
-      KeyboardReport->KeyCode[0] = 0x05; // B\r
-\r
-    if (JoyStatus_LCL & JOY_LEFT)\r
-      KeyboardReport->KeyCode[0] = 0x06; // C\r
-    else if (JoyStatus_LCL & JOY_RIGHT)\r
-      KeyboardReport->KeyCode[0] = 0x07; // D\r
-\r
-    if (JoyStatus_LCL & JOY_PRESS)\r
-      KeyboardReport->KeyCode[0] = 0x08; // E\r
-      \r
-    if (ButtonStatus_LCL & BUTTONS_BUTTON1)\r
-      KeyboardReport->KeyCode[0] = 0x09; // F\r
-      \r
-    return sizeof(USB_KeyboardReport_Data_t);\r
+       USB_KeyboardReport_Data_t* KeyboardReport = (USB_KeyboardReport_Data_t*)ReportData;\r
+       \r
+       uint8_t JoyStatus_LCL    = Joystick_GetStatus();\r
+       uint8_t ButtonStatus_LCL = Buttons_GetStatus();\r
+\r
+       uint8_t UsedKeyCodes = 0;\r
+       \r
+       if (JoyStatus_LCL & JOY_UP)\r
+         KeyboardReport->KeyCode[UsedKeyCodes++] = 0x04; // A\r
+       else if (JoyStatus_LCL & JOY_DOWN)\r
+         KeyboardReport->KeyCode[UsedKeyCodes++] = 0x05; // B\r
+\r
+       if (JoyStatus_LCL & JOY_LEFT)\r
+         KeyboardReport->KeyCode[UsedKeyCodes++] = 0x06; // C\r
+       else if (JoyStatus_LCL & JOY_RIGHT)\r
+         KeyboardReport->KeyCode[UsedKeyCodes++] = 0x07; // D\r
+\r
+       if (JoyStatus_LCL & JOY_PRESS)\r
+         KeyboardReport->KeyCode[UsedKeyCodes++] = 0x08; // E\r
+         \r
+       if (ButtonStatus_LCL & BUTTONS_BUTTON1)\r
+         KeyboardReport->KeyCode[UsedKeyCodes++] = 0x09; // F\r
+\r
+       *ReportSize = sizeof(USB_KeyboardReport_Data_t);\r
+       return false;\r