diff --git a/examples/device/nrf52840/src/main.c b/examples/device/nrf52840/src/main.c index 000adb9d..84876e7a 100644 --- a/examples/device/nrf52840/src/main.c +++ b/examples/device/nrf52840/src/main.c @@ -103,7 +103,36 @@ void virtual_com_task(void) void usb_hid_task(void) { /*------------- Keyboard -------------*/ - if ( tud_hid_keyboard_ready() ) +// if ( tud_hid_keyboard_ready() ) +// { +// // Poll every 10ms +// static tu_timeout_t tm = { .start = 0, .interval = 10 }; +// +// if ( !tu_timeout_expired(&tm) ) return; // not enough time +// tu_timeout_reset(&tm); +// +// uint32_t const btn = board_buttons(); +// +// if ( btn ) +// { +// uint8_t keycode[6] = { 0 }; +// +// for(uint8_t i=0; i < 6; i++) +// { +// if ( btn & (1 << i) ) keycode[i] = HID_KEY_A + i; +// } +// +// tud_hid_keyboard_keycode(0, keycode); +// }else +// { +// // Null means all zeroes keycodes +// tud_hid_keyboard_keycode(0, NULL); +// } +// } + + + /*------------- Mouse -------------*/ + if ( tud_hid_mouse_ready() ) { // Poll every 10ms static tu_timeout_t tm = { .start = 0, .interval = 10 }; @@ -115,40 +144,9 @@ void usb_hid_task(void) if ( btn ) { - uint8_t keycode[6] = { 0 }; - - for(uint8_t i=0; i < 6; i++) - { - if ( btn & (1 << i) ) keycode[i] = HID_KEY_A + i; - } - - tud_hid_keyboard_keycode(0, keycode); - }else - { - // Null means all zeroes keycodes - tud_hid_keyboard_keycode(0, NULL); + tud_hid_mouse_data(0, 10, 0, 0, 0); } } - - - /*------------- Mouse -------------*/ - // if ( tud_hid_mouse_ready() ) - // { - // // Poll every 10ms - // static tu_timeout_t tm = { .start = 0, .interval = 10 }; - // - // if ( !tu_timeout_expired(&tm) ) return; // not enough time - // tu_timeout_reset(&tm); - // - // uint32_t const btn = board_buttons(); - // - // if ( btn ) - // { - // hid_mouse_report_t report = { .buttons = 0, .x = 10, .y = 0, .wheel = 0 }; - // tud_hid_mouse_report(&report); - // } - // } - } diff --git a/src/device/usbd.c b/src/device/usbd.c index 2b294cd3..bd169bb6 100644 --- a/src/device/usbd.c +++ b/src/device/usbd.c @@ -353,8 +353,6 @@ static tusb_error_t proc_control_request_st(uint8_t rhport, tusb_control_request error = TUSB_ERROR_NONE; //------------- Standard Request e.g in enumeration -------------// - /* Microsoft Windows will awkwardly get HID Report Descriptor with - * Recipient = Device instead of Interface */ if( TUSB_REQ_RCPT_DEVICE == p_request->bmRequestType_bit.recipient && TUSB_REQ_TYPE_STANDARD == p_request->bmRequestType_bit.type ) { @@ -398,7 +396,7 @@ static tusb_error_t proc_control_request_st(uint8_t rhport, tusb_control_request } //------------- Class/Interface Specific Request -------------// - else if ( TUSB_REQ_RCPT_INTERFACE == p_request->bmRequestType_bit.recipient) + else if ( TUSB_REQ_RCPT_INTERFACE == p_request->bmRequestType_bit.recipient ) { if (_usbd_dev.itf2drv[ u16_low_u8(p_request->wIndex) ] < USBD_CLASS_DRIVER_COUNT) { diff --git a/src/device/usbd_desc.c b/src/device/usbd_desc.c index d065ed35..295eb166 100644 --- a/src/device/usbd_desc.c +++ b/src/device/usbd_desc.c @@ -118,7 +118,7 @@ // Keyboard Report Descriptor //--------------------------------------------------------------------+ #if CFG_TUD_HID_KEYBOARD -ATTR_PACKED uint8_t const _desc_auto_hid_kbd_report[] = { +uint8_t const _desc_auto_hid_kbd_report[] = { HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ), HID_USAGE ( HID_USAGE_DESKTOP_KEYBOARD ), HID_COLLECTION ( HID_COLLECTION_APPLICATION ), @@ -170,7 +170,7 @@ ATTR_PACKED uint8_t const _desc_auto_hid_kbd_report[] = { // Mouse Report Descriptor //--------------------------------------------------------------------+ #if CFG_TUD_HID_MOUSE -ATTR_PACKED uint8_t const _desc_auto_hid_mse_report[] = { +uint8_t const _desc_auto_hid_mse_report[] = { HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ), HID_USAGE ( HID_USAGE_DESKTOP_MOUSE ), HID_COLLECTION ( HID_COLLECTION_APPLICATION ), @@ -179,18 +179,18 @@ ATTR_PACKED uint8_t const _desc_auto_hid_mse_report[] = { HID_COLLECTION ( HID_COLLECTION_PHYSICAL ), HID_USAGE_PAGE ( HID_USAGE_PAGE_BUTTON ), HID_USAGE_MIN ( 1 ), - HID_USAGE_MAX ( 5 ), + HID_USAGE_MAX ( 3 ), HID_LOGICAL_MIN ( 0 ), HID_LOGICAL_MAX ( 1 ), // Left, Right, Middle, Backward, Forward mouse buttons - HID_REPORT_COUNT ( 5 ), + HID_REPORT_COUNT ( 3 ), HID_REPORT_SIZE ( 1 ), HID_INPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ), // 3 bit padding HID_REPORT_COUNT ( 1 ), - HID_REPORT_SIZE ( 3 ), + HID_REPORT_SIZE ( 5 ), HID_INPUT ( HID_CONSTANT ), HID_USAGE_PAGE ( HID_USAGE_PAGE_DESKTOP ),