Commit 6e867f7d authored by Dean Camera's avatar Dean Camera
Browse files

Removed code to zero reports between two keyboard reports with differing...

Removed code to zero reports between two keyboard reports with differing number of pressed keys, as this relied on non-standard OS behaviour.
parent 86db035b
......@@ -144,7 +144,6 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
uint8_t JoyStatus_LCL = Joystick_GetStatus();
uint8_t ButtonStatus_LCL = Buttons_GetStatus();
static uint8_t PrevUsedKeyCodes;
uint8_t UsedKeyCodes = 0;
if (JoyStatus_LCL & JOY_UP)
......@@ -162,15 +161,6 @@ bool CALLBACK_HID_Device_CreateHIDReport(USB_ClassInfo_HID_Device_t* const HIDIn
if (ButtonStatus_LCL & BUTTONS_BUTTON1)
KeyboardReport->KeyCode[UsedKeyCodes++] = 0x09; // F
/* The host will ignore the device if we add a new keycode to the report while another keycode is currently
* being sent (i.e. the user has pressed another key while a key is already being pressed) - we need to intersperse
* the two reports with a zeroed report to force the host to accept the additional keys */
if (UsedKeyCodes != PrevUsedKeyCodes)
{
memset(KeyboardReport, sizeof(USB_KeyboardReport_Data_t), 0x00);
PrevUsedKeyCodes = UsedKeyCodes;
}
*ReportSize = sizeof(USB_KeyboardReport_Data_t);
return false;
......
......@@ -258,11 +258,11 @@ void EVENT_USB_Device_StartOfFrame(void)
*/
void CreateKeyboardReport(USB_KeyboardReport_Data_t* ReportData)
{
static uint8_t PrevUsedKeyCodes;
uint8_t UsedKeyCodes = 0;
uint8_t JoyStatus_LCL = Joystick_GetStatus();
uint8_t ButtonStatus_LCL = Buttons_GetStatus();
uint8_t UsedKeyCodes = 0;
/* Clear the report contents */
memset(ReportData, 0, sizeof(USB_KeyboardReport_Data_t));
......@@ -281,15 +281,6 @@ void CreateKeyboardReport(USB_KeyboardReport_Data_t* ReportData)
if (ButtonStatus_LCL & BUTTONS_BUTTON1)
ReportData->KeyCode[UsedKeyCodes++] = 0x09; // F
/* The host will ignore the device if we add a new keycode to the report while another keycode is currently
* being sent (i.e. the user has pressed another key while a key is already being pressed) - we need to intersperse
* the two reports with a zeroed report to force the host to accept the additional keys */
if (UsedKeyCodes != PrevUsedKeyCodes)
{
memset(ReportData, 0, sizeof(USB_KeyboardReport_Data_t));
PrevUsedKeyCodes = UsedKeyCodes;
}
}
/** Processes a received LED report, and updates the board LEDs states to match.
......
......@@ -8,7 +8,12 @@
*
* \section Sec_ChangeLogXXXXXX Version XXXXXX
*
* <b>There is no changelog information for this version.</b>
* <b>New:</b>
* - Added activity LED indicators to the AVRISP project to indicate when the device is busy processing a command
*
* <b>Changed:</b>
* - Removed code in the Keyboard demos to send zeroed reports between two reports with differing numbers of keycodes
* as this relied on non-standard OS driver behaviour to repeat key groups
*
* \section Sec_ChangeLog091122 Version 091122
*
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment