How to control Caps Lock / Num Lock / Scroll Lock LEDs in HID Keyboard Driver?

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

How to control Caps Lock / Num Lock / Scroll Lock LEDs in HID Keyboard Driver?

721件の閲覧回数
Unais_Kn
Contributor I

Hi everyone,

I’m working on an HID keyboard using an NXP MCU and the USB HID keyboard driver.
I would like to control the keyboard LEDs (Caps Lock, Num Lock, and Scroll Lock).

Specifically, I’m trying to understand:

  1. How the host sends LED status (Caps Lock / Num Lock / Scroll Lock) to the device

  2. Which HID report or callback in the NXP HID keyboard driver receives this LED information

  3. How to correctly parse the LED output report and map it to GPIOs to turn the keyboard LEDs ON/OFF

I’m using the NXP USB HID stack, and the keyboard enumeration is working correctly. Key press reports are sent successfully, but I’m not sure where or how to handle the LED output report from the host.

If possible, sample code or references to the relevant driver files/functions would be very helpful.

Thanks in advance!

0 件の賞賛
返信
3 返答(返信)

646件の閲覧回数
Unais_Kn
Contributor I

 

The USB_HostHidSetReport() function is working correctly. However, the implementation requires that USB_HostHidGetReport() be called after every SetReport operation to ensure proper behavior. Is there a specific reason why a GetReport call is required after each SetReport?

Below is the current implementation:

USB_HostHidSetReport(
    g_HostHidKeyboard.classHandle,   /* HID class instance */
    HID_NO_REPORT_ID,                /* Report ID = 0 */
    HID_REPORT_TYPE_OUTPUT,          /* Output report */
    &buffer,                         /* 1-byte LED report */
    sizeof(buffer),
    NULL,                            /* Completion callback */
    NULL
);

USB_HostHidGetReport(
    g_HostHidKeyboard.classHandle,
    HID_NO_REPORT_ID,
    HID_REPORT_TYPE_OUTPUT,          /* Report type */
    &ReportGet,
    1,
    NULL,
    NULL
);
  • Report ID: 0x00

  • Report Type: 0x02

The following function demonstrates the full sequence:

static void Keyboard_SetReport(uint8_t buffer)
{
    usb_status_t status;
    uint8_t ReportGet;

    vTaskDelay(50 / portTICK_PERIOD_MS);
    usb_echo("Keyboard_SetReport - %d\r\n", buffer);

    status = USB_HostHidSetReport(
        g_HostHidKeyboard.classHandle,   /* HID class instance */
        HID_NO_REPORT_ID,                /* Report ID = 0 */
        HID_REPORT_TYPE_OUTPUT,          /* Output report */
        &buffer,                         /* 1-byte LED report */
        sizeof(buffer),
        NULL,                            /* Completion callback */
        NULL
    );

    vTaskDelay(10 / portTICK_PERIOD_MS);

    status = USB_HostHidGetReport(
        g_HostHidKeyboard.classHandle,
        HID_NO_REPORT_ID,
        HID_REPORT_TYPE_OUTPUT,
        &ReportGet,
        1,
        NULL,
        NULL
    );

    if (status != kStatus_USB_Success)
    {
        usb_echo("Error in USB_HostHidSetReport call - %d\r\n", status);
        /* Handle error */
    }
}

 

0 件の賞賛
返信

693件の閲覧回数
Bio_TICFSL
NXP TechSupport
NXP TechSupport

Hello,

Control keyboard LEDs (Caps/Num/Scroll Lock) on an NXP MCU
by implementing an HID Output Report handler within your USB stack to receive 1-byte status updates from the host (bit 0: Num, bit 1: Caps, bit 2: Scroll). Update GPIO pins based on this byte in the USB_DeviceHidKeyboardAction or equivalent callback. 
Key Implementation Details
  • Report Structure: The host sends a 1-byte output report where bits represent the lock states:
    • Bit 0: Num Lock
    • Bit 1: Caps Lock
    • Bit 2: Scroll Lock
  • NXP Implementation: In NXP SDK examples, this is typically handled by modifying the USB_DeviceHidKeyboardAction function or setting up the endpoint 0 callback to process USB_DEV_EVENT_SET_REPORT.
  • Callback Routine: When the host sends the report, the USB stack triggers a callback. You must parse the received data and update the GPIOs controlling the LEDs.
  • Example Code Snippet:
    c
    // Inside your USB HID callback
    if (event == USB_DEV_EVENT_SET_REPORT) {
        uint8_t *led_report = (uint8_t *)param;
        if (led_report[0] & 0x01) { /* Turn on NumLock LED */ }
        if (led_report[0] & 0x02) { /* Turn on CapsLock LED */ }
        if (led_report[0] & 0x04) { /* Turn on ScrollLock LED */ }
    }
    
     
Ensure your HID report descriptor properly defines an Output report for the LED indicators (usage page 0x08, LEDs
 
Regards

677件の閲覧回数
Unais_Kn
Contributor I
I am unable to locate the USB_DeviceHidKeyboardAction function in the NXP SDK HID keyboard example.

Is it possible to use the USB_HostHidSetReport and USB_HostHidGetReport APIs to configure and manage HID reports instead? If so, could you please provide an example function demonstrating how to use these APIs for report handling?

Additionally, how can we verify that the HID report descriptor correctly defines an Output Report for keyboard LED indicators (such as Num Lock, Caps Lock, and Scroll Lock)?
0 件の賞賛
返信
%3CLINGO-SUB%20id%3D%22lingo-sub-2300915%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EHID%20%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%20%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%81%A7%20Caps%20Lock%20%2F%20Num%20Lock%20%2F%20Scroll%20Lock%20LED%20%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%E3%81%A9%E3%81%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2300915%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%E7%9A%86%E3%81%95%E3%82%93%3C%2FP%3E%3CP%3E%E7%A7%81%E3%81%AF%E3%80%81NXP%20MCU%20%E3%81%A8%20USB%20HID%20%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%20%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20HID%20%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%82%92%E9%96%8B%E7%99%BA%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3CBR%20%2F%3E%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%20LED%20(Caps%20Lock%E3%80%81Num%20Lock%E3%80%81Scroll%20Lock)%20%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%97%E3%81%9F%E3%81%84%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E5%85%B7%E4%BD%93%E7%9A%84%E3%81%AB%E3%81%AF%E3%80%81%E6%AC%A1%E3%81%AE%E3%81%93%E3%81%A8%E3%82%92%E7%90%86%E8%A7%A3%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3COL%3E%3CLI%3E%3CP%3E%E3%83%9B%E3%82%B9%E3%83%88%E3%81%8C%E3%83%87%E3%83%90%E3%82%A4%E3%82%B9%E3%81%ABLED%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%EF%BC%88Caps%20Lock%20%2F%20Num%20Lock%20%2F%20Scroll%20Lock%EF%BC%89%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3ENXP%20HID%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%81%AE%E3%81%A9%E3%81%AEHID%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%81%BE%E3%81%9F%E3%81%AF%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%81%8C%E3%81%93%E3%81%AELED%E6%83%85%E5%A0%B1%E3%82%92%E5%8F%97%E4%BF%A1%E3%81%99%E3%82%8B%E3%81%8B%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3ELED%E5%87%BA%E5%8A%9B%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E6%AD%A3%E3%81%97%E3%81%8F%E8%A7%A3%E6%9E%90%E3%81%97%E3%80%81%E3%81%9D%E3%82%8C%E3%82%92GPIO%E3%81%AB%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0%E3%81%97%E3%81%A6%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89LED%E3%81%AE%E3%82%AA%E3%83%B3%2F%E3%82%AA%E3%83%95%E3%82%92%E5%88%87%E3%82%8A%E6%9B%BF%E3%81%88%E3%82%8B%E6%96%B9%E6%B3%95%3C%2FP%3E%3C%2FLI%3E%3C%2FOL%3E%3CP%3ENXP%20USB%20HID%20%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%E3%81%8A%E3%82%8A%E3%80%81%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E5%88%97%E6%8C%99%E3%81%AF%E6%AD%A3%E5%B8%B8%E3%81%AB%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%82%AD%E3%83%BC%E6%8A%BC%E4%B8%8B%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%81%AF%E6%AD%A3%E5%B8%B8%E3%81%AB%E9%80%81%E4%BF%A1%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%81%8C%E3%80%81%3CSTRONG%3E%E3%83%9B%E3%82%B9%E3%83%88%E3%81%8B%E3%82%89%E3%81%AE%20LED%20%E5%87%BA%E5%8A%9B%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%3C%2FSTRONG%3E%E3%81%A9%E3%81%93%E3%81%A7%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E5%87%A6%E7%90%86%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%8B%E3%82%8F%E3%81%8B%E3%82%8A%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3C%2FP%3E%3CP%3E%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%82%E3%82%8C%E3%81%B0%E3%80%81%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%20%E3%82%B3%E3%83%BC%E3%83%89%E3%81%BE%E3%81%9F%E3%81%AF%E9%96%A2%E9%80%A3%E3%81%99%E3%82%8B%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%20%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%2F%E9%96%A2%E6%95%B0%E3%81%B8%E3%81%AE%E5%8F%82%E7%85%A7%E3%81%8C%E3%81%82%E3%82%8B%E3%81%A8%E9%9D%9E%E5%B8%B8%E3%81%AB%E5%BD%B9%E7%AB%8B%E3%81%A1%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CP%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%84%E3%81%9F%E3%81%97%E3%81%BE%E3%81%99%EF%BC%81%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2301813%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20control%20Caps%20Lock%20%2F%20Num%20Lock%20%2F%20Scroll%20Lock%20LEDs%20in%20HID%20Keyboard%20Driver%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2301813%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ENXP%20SDK%20HID%20%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%E4%BE%8B%E3%81%A7%20USB_DeviceHidKeyboardAction%20%E9%96%A2%E6%95%B0%E3%82%92%E8%A6%8B%E3%81%A4%E3%81%91%E3%82%8B%E3%81%93%E3%81%A8%E3%81%8C%E3%81%A7%E3%81%8D%E3%81%BE%E3%81%9B%E3%82%93%E3%80%82%3CBR%20%2F%3E%3CBR%20%2F%3E%E4%BB%A3%E3%82%8F%E3%82%8A%E3%81%AB%E3%80%81USB_HostHidSetReport%20%E3%81%8A%E3%82%88%E3%81%B3%20USB_HostHidGetReport%20API%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%97%E3%81%A6%20HID%20%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E6%A7%8B%E6%88%90%E3%81%8A%E3%82%88%E3%81%B3%E7%AE%A1%E7%90%86%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AF%E5%8F%AF%E8%83%BD%E3%81%A7%E3%81%99%E3%81%8B%3F%E3%82%82%E3%81%97%E3%81%9D%E3%81%86%E3%81%AA%E3%82%89%E3%80%81%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E5%87%A6%E7%90%86%E3%81%AB%E3%81%93%E3%82%8C%E3%82%89%E3%81%AE%20API%20%E3%82%92%E4%BD%BF%E7%94%A8%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%E3%82%92%E7%A4%BA%E3%81%99%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E9%96%A2%E6%95%B0%E3%82%92%E6%8F%90%E4%BE%9B%E3%81%97%E3%81%A6%E3%82%82%E3%82%89%E3%81%88%E3%81%BE%E3%81%99%E3%81%8B%3F%3CBR%20%2F%3E%3CBR%20%2F%3E%E3%81%95%E3%82%89%E3%81%AB%E3%80%81HID%20%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E8%A8%98%E8%BF%B0%E5%AD%90%E3%81%8C%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%20LED%20%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%B1%E3%83%BC%E3%82%BF%E3%83%BC%20(Num%20Lock%E3%80%81Caps%20Lock%E3%80%81Scroll%20Lock%20%E3%81%AA%E3%81%A9)%20%E3%81%AE%E5%87%BA%E5%8A%9B%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E6%AD%A3%E3%81%97%E3%81%8F%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E3%81%A9%E3%81%AE%E3%82%88%E3%81%86%E3%81%AB%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8C%E3%81%B0%E3%82%88%E3%81%84%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2301383%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20control%20Caps%20Lock%20%2F%20Num%20Lock%20%2F%20Scroll%20Lock%20LEDs%20in%20HID%20Keyboard%20Driver%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2301383%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%E3%81%93%E3%82%93%E3%81%AB%E3%81%A1%E3%81%AF%E3%80%81%3C%2FP%3E%0A%3CDIV%20class%3D%22Y3BBE%22%20data-sfc-cp%3D%22%22%20data-hveid%3D%22CAEQAA%22%20data-processed%3D%22true%22%3E%0A%3CDIV%20style%3D%22display%3A%20contents%3B%22%20data-subtree%3D%22aimfl%2Cmfl%22%20data-processed%3D%22true%22%3ENXP%20MCU%20%E3%81%A7%E3%82%AD%E3%83%BC%E3%83%9C%E3%83%BC%E3%83%89%E3%81%AE%20LED%20(Caps%2FNum%2FScroll%20Lock)%20%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%99%E3%82%8B%3C%2FDIV%3E%0A%3CMARK%20class%3D%22HxTRcb%22%20data-processed%3D%22true%22%3EUSB%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E5%86%85%E3%81%ABHID%3CSTRONG%20class%3D%22Yjhzub%22%20data-processed%3D%22true%22%3E%E5%87%BA%E5%8A%9B%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%3C%2FSTRONG%3E%E3%83%8F%E3%83%B3%E3%83%89%E3%83%A9%E3%82%92%E5%AE%9F%E8%A3%85%E3%81%97%E3%81%A6%E3%80%81%E3%83%9B%E3%82%B9%E3%83%88%E3%81%8B%E3%82%891%E3%83%90%E3%82%A4%E3%83%88%E3%81%AE%E3%82%B9%E3%83%86%E3%83%BC%E3%82%BF%E3%82%B9%E6%9B%B4%E6%96%B0%E3%82%92%E5%8F%97%E4%BF%A1%E3%81%99%E3%82%8B%EF%BC%88%E3%83%93%E3%83%83%E3%83%880%EF%BC%9A%E6%95%B0%E5%AD%97%E3%80%81%E3%83%93%E3%83%83%E3%83%881%EF%BC%9A%E5%A4%A7%E6%96%87%E5%AD%97%E3%80%81%E3%83%93%E3%83%83%E3%83%882%EF%BC%9A%E3%82%B9%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%AB%EF%BC%89%3C%2FMARK%3E%20%E3%80%82%3CCODE%20class%3D%22o8j0Mc%22%20dir%3D%22ltr%22%20data-processed%3D%22true%22%3EUSB_DeviceHidKeyboardAction%3C%2FCODE%3E%E3%81%BE%E3%81%9F%E3%81%AF%E5%90%8C%E7%AD%89%E3%81%AE%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%81%A7%E3%80%81%E3%81%93%E3%81%AE%E3%83%90%E3%82%A4%E3%83%88%E3%81%AB%E5%9F%BA%E3%81%A5%E3%81%84%E3%81%A6%20GPIO%20%E3%83%94%E3%83%B3%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3CSPAN%20class%3D%22uJ19be%20notranslate%22%20data-wiz-uids%3D%22Q50I8b_e%22%20data-processed%3D%22true%22%3E%3CSPAN%20class%3D%22vKEkVd%22%20data-animation-atomic%3D%22%22%20data-wiz-attrbind%3D%22class%3DQ50I8b_d%2FTKHnVd%22%20data-processed%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FDIV%3E%0A%3CDIV%20class%3D%22Y3BBE%22%20data-sfc-cp%3D%22%22%20data-hveid%3D%22CAIQAA%22%20data-processed%3D%22true%22%3E%3CSTRONG%20class%3D%22Yjhzub%22%20data-processed%3D%22true%22%3E%E4%B8%BB%E3%81%AA%E5%AE%9F%E8%A3%85%E3%81%AE%E8%A9%B3%E7%B4%B0%3C%2FSTRONG%3E%3C%2FDIV%3E%0A%3CUL%20class%3D%22KsbFXc%20U6u95%22%20data-processed%3D%22true%22%3E%0A%3CLI%20data-hveid%3D%22CAMQAA%22%20data-processed%3D%22true%22%3E%3CSPAN%20class%3D%22T286Pc%22%20data-sfc-cp%3D%22%22%20data-processed%3D%22true%22%3E%3CSTRONG%20class%3D%22Yjhzub%22%20data-processed%3D%22true%22%3E%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E6%A7%8B%E9%80%A0%3A%3C%2FSTRONG%3E%E3%83%9B%E3%82%B9%E3%83%88%E3%81%AF%E3%80%81%E5%90%84%E3%83%93%E3%83%83%E3%83%88%E3%81%8C%E3%83%AD%E3%83%83%E3%82%AF%E7%8A%B6%E6%85%8B%E3%82%92%E8%A1%A8%E3%81%99%201%20%E3%83%90%E3%82%A4%E3%83%88%E3%81%AE%E5%87%BA%E5%8A%9B%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E9%80%81%E4%BF%A1%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%0A%3CUL%20class%3D%22KsbFXc%20U6u95%22%20data-processed%3D%22true%22%3E%0A%3CLI%20data-hveid%3D%22CAMQAQ%22%20data-processed%3D%22true%22%3E%3CSPAN%20class%3D%22T286Pc%22%20data-sfc-cp%3D%22%22%20data-processed%3D%22true%22%3E%3CSTRONG%20class%3D%22Yjhzub%22%20data-processed%3D%22true%22%3E%E3%83%93%E3%83%83%E3%83%880%3A%3C%2FSTRONG%3E%20Num%20Lock%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%20data-hveid%3D%22CAMQAg%22%20data-processed%3D%22true%22%3E%3CSPAN%20class%3D%22T286Pc%22%20data-sfc-cp%3D%22%22%20data-processed%3D%22true%22%3E%3CSTRONG%20class%3D%22Yjhzub%22%20data-processed%3D%22true%22%3E%E3%83%93%E3%83%83%E3%83%881%3A%3C%2FSTRONG%3E%20Caps%20Lock%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%20data-hveid%3D%22CAMQAw%22%20data-processed%3D%22true%22%3E%3CSPAN%20class%3D%22T286Pc%22%20data-sfc-cp%3D%22%22%20data-processed%3D%22true%22%3E%3CSTRONG%20class%3D%22Yjhzub%22%20data-processed%3D%22true%22%3E%E3%83%93%E3%83%83%E3%83%882%3A%3C%2FSTRONG%3E%E3%82%B9%E3%82%AF%E3%83%AD%E3%83%BC%E3%83%AB%E3%83%AD%E3%83%83%E3%82%AF%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3C%2FLI%3E%0A%3CLI%20data-hveid%3D%22CAMQBA%22%20data-processed%3D%22true%22%3E%3CSPAN%20class%3D%22T286Pc%22%20data-sfc-cp%3D%22%22%20data-processed%3D%22true%22%3E%3CSTRONG%20class%3D%22Yjhzub%22%20data-processed%3D%22true%22%3ENXP%20%E5%AE%9F%E8%A3%85%3A%3C%2FSTRONG%3E%20NXP%20SDK%20%E3%81%AE%E4%BE%8B%E3%81%A7%E3%81%AF%E3%80%81%E3%81%93%E3%82%8C%E3%81%AF%E9%80%9A%E5%B8%B8%E3%80%81%20%3CCODE%20class%3D%22o8j0Mc%22%20dir%3D%22ltr%22%20data-processed%3D%22true%22%3EUSB_DeviceHidKeyboardAction%3C%2FCODE%3E%E9%96%A2%E6%95%B0%E3%82%92%E5%A4%89%E6%9B%B4%E3%81%99%E3%82%8B%E3%81%8B%E3%80%81%E3%82%A8%E3%83%B3%E3%83%89%E3%83%9D%E3%82%A4%E3%83%B3%E3%83%88%200%20%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%82%92%E8%A8%AD%E5%AE%9A%E3%81%97%E3%81%A6%3CCODE%20class%3D%22o8j0Mc%22%20dir%3D%22ltr%22%20data-processed%3D%22true%22%3EUSB_DEV_EVENT_SET_REPORT%3C%2FCODE%3E%E3%82%92%E5%87%A6%E7%90%86%E3%81%99%E3%82%8B%E3%81%93%E3%81%A8%E3%81%AB%E3%82%88%E3%81%A3%E3%81%A6%E5%87%A6%E7%90%86%E3%81%95%E3%82%8C%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%20data-hveid%3D%22CAMQBQ%22%20data-processed%3D%22true%22%3E%3CSPAN%20class%3D%22T286Pc%22%20data-sfc-cp%3D%22%22%20data-processed%3D%22true%22%3E%3CSTRONG%20class%3D%22Yjhzub%22%20data-processed%3D%22true%22%3E%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%20%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3%3A%3C%2FSTRONG%3E%E3%83%9B%E3%82%B9%E3%83%88%E3%81%8C%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E3%81%A8%E3%80%81USB%20%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF%E3%81%AF%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E3%82%92%E3%83%88%E3%83%AA%E3%82%AC%E3%83%BC%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%E5%8F%97%E4%BF%A1%E3%81%97%E3%81%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E8%A7%A3%E6%9E%90%E3%81%97%E3%80%81LED%20%E3%82%92%E5%88%B6%E5%BE%A1%E3%81%99%E3%82%8B%20GPIO%20%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%99%E3%82%8B%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%3C%2FSPAN%3E%3C%2FLI%3E%0A%3CLI%20data-hveid%3D%22CAMQBg%22%20data-processed%3D%22true%22%3E%3CSPAN%20class%3D%22T286Pc%22%20data-sfc-cp%3D%22%22%20data-processed%3D%22true%22%3E%3CSTRONG%20class%3D%22Yjhzub%22%20data-processed%3D%22true%22%3E%E3%82%B3%E3%83%BC%E3%83%89%E3%82%B9%E3%83%8B%E3%83%9A%E3%83%83%E3%83%88%E3%81%AE%E4%BE%8B%3A%3C%2FSTRONG%3E%3C%2FSPAN%3E%0A%3CDIV%20class%3D%22r1PmQe%22%20data-wiz-uids%3D%22Q50I8b_1d%2CQ50I8b_1e%2CQ50I8b_1f%22%20data-hveid%3D%22CAMQBw%22%20data-processed%3D%22true%22%3E%0A%3CDIV%20data-processed%3D%22true%22%3E%0A%3CDIV%20class%3D%22pHpOfb%22%20data-animation-atomic%3D%22%22%20data-processed%3D%22true%22%3E%0A%3CDIV%20class%3D%22vVRw1d%22%20data-processed%3D%22true%22%3Ec%3C%2FDIV%3E%0A%3CDIV%20class%3D%22pCTyYe%22%20dir%3D%22ltr%22%20data-processed%3D%22true%22%3E%0A%3CPRE%20data-processed%3D%22true%22%3E%3CCODE%20data-processed%3D%22true%22%3E%3CSPAN%20class%3D%22ClTQqc%22%20data-processed%3D%22true%22%3E%2F%2F%20USB%20HID%E3%82%B3%E3%83%BC%E3%83%AB%E3%83%90%E3%83%83%E3%82%AF%E5%86%85%3C%2FSPAN%3E%0A%3CSPAN%20class%3D%22mexSqb%22%20data-processed%3D%22true%22%3Eif%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E(%E3%82%A4%E3%83%99%E3%83%B3%E3%83%88%20%3D%3D%20USB_DEV_EVENT_SET_REPORT)%20%7B%3C%2FSPAN%3E%20uint8_t%20*led_report%20%3D%20(uint8_t%20*)param%3B%0A%20%3CSPAN%20class%3D%22mexSqb%22%20data-processed%3D%22true%22%3Eif%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E(led_report%5B%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22tnfcCf%22%20data-processed%3D%22true%22%3E0%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E%5D%20%26amp%3B%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22tnfcCf%22%20data-processed%3D%22true%22%3E0x01%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E)%20%7B%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22ClTQqc%22%20data-processed%3D%22true%22%3E%2F*%20NumLock%20LED%20%E3%82%92%E3%82%AA%E3%83%B3%E3%81%AB%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E%7D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22mexSqb%22%20data-processed%3D%22true%22%3Eif%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E(led_report%5B%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22tnfcCf%22%20data-processed%3D%22true%22%3E0%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E%5D%20%26amp%3B%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22tnfcCf%22%20data-processed%3D%22true%22%3E0x02%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E)%20%7B%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22ClTQqc%22%20data-processed%3D%22true%22%3E%2F*%20CapsLock%20LED%20%E3%82%92%E3%82%AA%E3%83%B3%E3%81%AB%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E%7D%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22mexSqb%22%20data-processed%3D%22true%22%3Eif%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E(led_report%5B%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22tnfcCf%22%20data-processed%3D%22true%22%3E0%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E%5D%20%26amp%3B%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22tnfcCf%22%20data-processed%3D%22true%22%3E0x04%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E)%20%7B%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22ClTQqc%22%20data-processed%3D%22true%22%3E%2F*%20ScrollLock%20LED%20%E3%82%92%E3%82%AA%E3%83%B3%E3%81%AB%E3%81%99%E3%82%8B%20*%2F%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22undefined%22%20data-processed%3D%22true%22%3E%7D%3C%2FSPAN%3E%20%7D%3C%2FCODE%3E%3C%2FPRE%3E%0A%3C%2FDIV%3E%0A%3C%2FDIV%3E%0A%3C%2FDIV%3E%0A%3C%2FDIV%3E%0A%3CSPAN%20class%3D%22uJ19be%20notranslate%22%20data-wiz-uids%3D%22Q50I8b_1j%22%20data-processed%3D%22true%22%3E%3CSPAN%20class%3D%22vKEkVd%22%20data-animation-atomic%3D%22%22%20data-wiz-attrbind%3D%22class%3DQ50I8b_1i%2FTKHnVd%22%20data-processed%3D%22true%22%3E%26nbsp%3B%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FLI%3E%0A%3C%2FUL%3E%0A%3CDIV%20class%3D%22Y3BBE%22%20data-sfc-cp%3D%22%22%20data-hveid%3D%22CAQQAA%22%20data-processed%3D%22true%22%3EHID%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E8%A8%98%E8%BF%B0%E5%AD%90%E3%81%8CLED%E3%82%A4%E3%83%B3%E3%82%B8%E3%82%B1%E3%83%BC%E3%82%BF%E3%81%AE%3CCODE%20class%3D%22o8j0Mc%22%20dir%3D%22ltr%22%20data-processed%3D%22true%22%3EOutput%3C%2FCODE%3E%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%82%92%E9%81%A9%E5%88%87%E3%81%AB%E5%AE%9A%E7%BE%A9%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%BE%E3%81%99%EF%BC%88%E4%BD%BF%E7%94%A8%E3%83%9A%E3%83%BC%E3%82%B80x08%E3%80%81LED%3C%2FDIV%3E%0A%3CDIV%20class%3D%22Y3BBE%22%20data-sfc-cp%3D%22%22%20data-hveid%3D%22CAQQAA%22%20data-processed%3D%22true%22%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%20class%3D%22Y3BBE%22%20data-sfc-cp%3D%22%22%20data-hveid%3D%22CAQQAA%22%20data-processed%3D%22true%22%3E%E3%82%88%E3%82%8D%E3%81%97%E3%81%8F%E3%81%8A%E9%A1%98%E3%81%84%E3%81%97%E3%81%BE%E3%81%99%E3%80%82%3C%2FDIV%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2302559%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20How%20to%20control%20Caps%20Lock%20%2F%20Num%20Lock%20%2F%20Scroll%20Lock%20LEDs%20in%20HID%20Keyboard%20Driver%3F%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2302559%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CBR%20%2F%3E%3CP%3EUSB_HostHidSetReport()%20%E9%96%A2%E6%95%B0%E3%81%AF%E6%AD%A3%E5%B8%B8%E3%81%AB%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%9F%E3%81%A0%E3%81%97%E3%80%81%E5%AE%9F%E8%A3%85%E3%81%A7%E3%81%AF%E3%80%81%E9%81%A9%E5%88%87%E3%81%AA%E5%8B%95%E4%BD%9C%E3%82%92%E4%BF%9D%E8%A8%BC%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E3%80%81%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%20SetReport%20%E6%93%8D%E4%BD%9C%E3%81%AE%E5%BE%8C%E3%81%AB%20USB_HostHidGetReport()%20%E3%82%92%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%99%E5%BF%85%E8%A6%81%E3%81%8C%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%80%82%E5%90%84%20SetReport%20%E3%81%AE%E5%BE%8C%E3%81%AB%20GetReport%20%E5%91%BC%E3%81%B3%E5%87%BA%E3%81%97%E3%81%8C%E5%BF%85%E8%A6%81%E3%81%AA%E7%89%B9%E5%88%A5%E3%81%AA%E7%90%86%E7%94%B1%E3%81%AF%E3%81%82%E3%82%8A%E3%81%BE%E3%81%99%E3%81%8B%3F%3C%2FP%3E%3CP%3E%E7%8F%BE%E5%9C%A8%E3%81%AE%E5%AE%9F%E8%A3%85%E3%81%AF%E6%AC%A1%E3%81%AE%E3%81%A8%E3%81%8A%E3%82%8A%E3%81%A7%E3%81%99%E3%80%82%3C%2FP%3E%3CPRE%20translate%3D%22no%22%3E%3CSPAN%3EUSB_HostHidSetReport(%0A%20%20%20%20g_HostHidKeyboard.classHandle%2C%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%20HID%20class%20instance%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20HID_NO_REPORT_ID%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%20Report%20ID%20%3D%200%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20HID_REPORT_TYPE_OUTPUT%2C%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%20Output%20report%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20%26amp%3Bbuffer%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%201-byte%20LED%20report%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3Esizeof%3C%2FSPAN%3E(buffer)%2C%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3ENULL%3C%2FSPAN%3E%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%20Completion%20callback%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3ENULL%3C%2FSPAN%3E%0A)%3B%0A%0AUSB_HostHidGetReport(%0A%20%20%20%20g_HostHidKeyboard.classHandle%2C%0A%20%20%20%20HID_NO_REPORT_ID%2C%0A%20%20%20%20HID_REPORT_TYPE_OUTPUT%2C%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%20Report%20type%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20%26amp%3BReportGet%2C%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3E1%3C%2FSPAN%3E%2C%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3ENULL%3C%2FSPAN%3E%2C%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3ENULL%3C%2FSPAN%3E%0A)%3B%3C%2FSPAN%3E%3C%2FPRE%3E%3CUL%3E%3CLI%3E%3CP%3E%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88ID%3A%200x00%3C%2FP%3E%3C%2FLI%3E%3CLI%3E%3CP%3E%E3%83%AC%E3%83%9D%E3%83%BC%E3%83%88%E3%82%BF%E3%82%A4%E3%83%97%3A%200x02%3C%2FP%3E%3C%2FLI%3E%3C%2FUL%3E%3CP%3E%E6%AC%A1%E3%81%AE%E9%96%A2%E6%95%B0%E3%81%AF%E5%AE%8C%E5%85%A8%E3%81%AA%E3%82%B7%E3%83%BC%E3%82%B1%E3%83%B3%E3%82%B9%E3%82%92%E7%A4%BA%E3%81%97%E3%81%A6%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%3C%2FP%3E%3CPRE%20translate%3D%22no%22%3E%3CSPAN%3E%3CSPAN%20class%3D%22%22%3Estatic%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3Evoid%3C%2FSPAN%3E%20%3CSPAN%20class%3D%22%22%3EKeyboard_SetReport%3C%2FSPAN%3E%3CSPAN%20class%3D%22%22%3E(%3CSPAN%20class%3D%22%22%3Euint8_t%3C%2FSPAN%3E%3C%2FSPAN%3E%20buffer)%0A%7B%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3Eusb_status_t%3C%2FSPAN%3E%20status%3B%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3Euint8_t%3C%2FSPAN%3E%20ReportGet%3B%0A%0A%20%20%20%20vTaskDelay(%3CSPAN%20class%3D%22%22%3E50%3C%2FSPAN%3E%20%2F%20portTICK_PERIOD_MS)%3B%0A%20%20%20%20usb_echo(%3CSPAN%20class%3D%22%22%3E%22Keyboard_SetReport%20-%20%25d%5Cr%5Cn%22%3C%2FSPAN%3E%2C%20buffer)%3B%0A%0A%20%20%20%20status%20%3D%20USB_HostHidSetReport(%0A%20%20%20%20%20%20%20%20g_HostHidKeyboard.classHandle%2C%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%20HID%20class%20instance%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20HID_NO_REPORT_ID%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%20Report%20ID%20%3D%200%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20HID_REPORT_TYPE_OUTPUT%2C%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%20Output%20report%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%26amp%3Bbuffer%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%201-byte%20LED%20report%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3Esizeof%3C%2FSPAN%3E(buffer)%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3ENULL%3C%2FSPAN%3E%2C%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%20Completion%20callback%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3ENULL%3C%2FSPAN%3E%0A%20%20%20%20)%3B%0A%0A%20%20%20%20vTaskDelay(%3CSPAN%20class%3D%22%22%3E10%3C%2FSPAN%3E%20%2F%20portTICK_PERIOD_MS)%3B%0A%0A%20%20%20%20status%20%3D%20USB_HostHidGetReport(%0A%20%20%20%20%20%20%20%20g_HostHidKeyboard.classHandle%2C%0A%20%20%20%20%20%20%20%20HID_NO_REPORT_ID%2C%0A%20%20%20%20%20%20%20%20HID_REPORT_TYPE_OUTPUT%2C%0A%20%20%20%20%20%20%20%20%26amp%3BReportGet%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E1%3C%2FSPAN%3E%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3ENULL%3C%2FSPAN%3E%2C%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3ENULL%3C%2FSPAN%3E%0A%20%20%20%20)%3B%0A%0A%20%20%20%20%3CSPAN%20class%3D%22%22%3Eif%3C%2FSPAN%3E%20(status%20!%3D%20kStatus_USB_Success)%0A%20%20%20%20%7B%0A%20%20%20%20%20%20%20%20usb_echo(%3CSPAN%20class%3D%22%22%3E%22Error%20in%20USB_HostHidSetReport%20call%20-%20%25d%5Cr%5Cn%22%3C%2FSPAN%3E%2C%20status)%3B%0A%20%20%20%20%20%20%20%20%3CSPAN%20class%3D%22%22%3E%2F*%20Handle%20error%20*%2F%3C%2FSPAN%3E%0A%20%20%20%20%7D%0A%7D%3C%2FSPAN%3E%3C%2FPRE%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E