From acb403bcbcbc05256500083d1caea7e22ce4db11 Mon Sep 17 00:00:00 2001 From: Tomasz Kramkowski Date: Thu, 25 May 2017 21:56:08 +0100 Subject: Basic keyboard implementation --- usb/descriptors.h | 42 +++++++++++++++--------------------------- 1 file changed, 15 insertions(+), 27 deletions(-) (limited to 'usb/descriptors.h') diff --git a/usb/descriptors.h b/usb/descriptors.h index df603a5..a81a0f7 100644 --- a/usb/descriptors.h +++ b/usb/descriptors.h @@ -67,17 +67,17 @@ unsigned char ds_conf[] = { 1, // Number of endpoints 3, // Interface class 1, // Interface sub class - 2, // Interface protocol + 1, // Interface protocol 0, // Interface string /* HID */ 9, // Length 33, // Descriptor type U16LE(0x0111), // HID Class spec version - 0, // Country code + 32, // Country code 1, // Number of descriptors 34, // Descriptor type -#define DS_HIDREP_SIZE 52 +#define DS_HIDREP_SIZE 29 U16LE(DS_HIDREP_SIZE), // Descriptor length /* Endpoint */ @@ -93,31 +93,19 @@ _Static_assert(sizeof ds_conf == DS_CONF_SIZE, "sizeof ds_conf != DS_CONF_SIZE") /* HID Report descriptor */ unsigned char ds_hidrep[] = { HR_USAGE_PAGE(1), HR_PAGE_GENERIC_DESKTOP, - HR_USAGE(1), HR_GD_MOUSE, + HR_USAGE(1), HR_GD_KEYBOARD, HR_COLLECTION(1), HR_APPLICATION, - HR_USAGE(1), HR_GD_POINTER, - HR_COLLECTION(1), HR_PHYSICAL, - HR_USAGE_PAGE(1), HR_PAGE_BUTTON, - HR_USAGE_MINIMUM(1), 1, - HR_USAGE_MAXIMUM(1), 5, - HR_LOGICAL_MINIMUM(1), 0, - HR_LOGICAL_MAXIMUM(1), 1, - HR_REPORT_COUNT(1), 5, - HR_REPORT_SIZE(1), 1, - HR_INPUT(1), HR_DATA | HR_VARIABLE | HR_ABSOLUTE | HR_BIT_FIELD, - HR_REPORT_COUNT(1), 1, - HR_REPORT_SIZE(1), 3, - HR_INPUT(1), HR_CONSTANT | HR_ARRAY | HR_ABSOLUTE | HR_BIT_FIELD, - HR_USAGE_PAGE(1), HR_PAGE_GENERIC_DESKTOP, - HR_USAGE(1), HR_GD_X, - HR_USAGE(1), HR_GD_Y, - HR_USAGE(1), HR_GD_WHEEL, - HR_LOGICAL_MINIMUM(1), -127, - HR_LOGICAL_MAXIMUM(1), 127, - HR_REPORT_SIZE(1), 8, - HR_REPORT_COUNT(1), 3, - HR_INPUT(1), HR_DATA | HR_VARIABLE | HR_RELATIVE | HR_BIT_FIELD, - HR_END_COLLECTION(0), + HR_USAGE_PAGE(1), HR_PAGE_KEYBOARD, + HR_USAGE_MINIMUM(1), 4, + HR_USAGE_MAXIMUM(1), 231, + HR_LOGICAL_MINIMUM(1), 0, + HR_LOGICAL_MAXIMUM(1), 1, + HR_REPORT_SIZE(1), 1, + HR_REPORT_COUNT(1), 228, + HR_INPUT(1), HR_DATA | HR_VARIABLE | HR_ABSOLUTE | HR_BIT_FIELD, + HR_REPORT_SIZE(1), 4, + HR_REPORT_COUNT(1), 1, + HR_INPUT(1), HR_CONSTANT | HR_ARRAY | HR_ABSOLUTE | HR_BIT_FIELD, HR_END_COLLECTION(0), }; _Static_assert(sizeof ds_hidrep == DS_HIDREP_SIZE, "sizeof ds_hidrep != DS_HIDREP_SIZE"); -- cgit v1.2.3-54-g00ecf