| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177 |
- /*
- * @File name :
- * @Author : Bluetrum IOT Team K.
- * @Date : 2024-07-25
- * @Description :
- *
- * Copyright (c) by Bluetrum, All Rights Reserved.
- */
- #ifndef _HID_DEFINES_H
- #define _HID_DEFINES_H
- #define HID_REP_MAP_CONSUMER_SWAP(...) \
- 0x05, 0x0C, /* Usage Page (Consumer) */ \
- 0x09, 0x01, /* Usage (Consumer Control) */ \
- /* 0xA1, 0x01, */ /* Collection (Application) */ \
- __VA_ARGS__, /* Report ID (...) */ \
- 0x1A, 0x00, 0x00, /* Usage Minimum (Unassigned) */ \
- 0x2A, 0x9C, 0x02, /* Usage Maximum (AC Distribute Vertically) */ \
- 0x16, 0x00, 0x00, /* Logical minimum (0) */ \
- 0x26, 0x9C, 0x02, /* Logical maximum (668) */ \
- 0x75, 0x10, /* Report Size (16) */ \
- 0x95, 0x01, /* Report Count (1) */ \
- 0x81, 0x00, /* Input (Data,Array,Absolute,Bit Field) */ \
- 0x75, 0x08, /* REPORT_SIZE (8) */ \
- 0x95, 0x02, /* REPORT_COUNT (2) */ \
- 0x81, 0x01, /* INPUT (Cnst,Ary,Abs) */ \
- 0xC0 /* End Collection */ \
- #define HID_REP_MAP_KEYBOARD_SWAP(...) \
- 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */ \
- 0x09, 0x06, /* USAGE (Keyboard) */ \
- /* 0xA1, 0x01, */ /* COLLECTION (Application) */ \
- __VA_ARGS__, /* Report ID (...) */ \
- 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ \
- 0x19, 0xE0, /* USAGE_MINIMUM (Keyboard LeftControl) */ \
- 0x29, 0xE7, /* USAGE_MAXIMUM (Keyboard Right GUI) */ \
- 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ \
- 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ \
- 0x75, 0x01, /* REPORT_SIZE (1) */ \
- 0x95, 0x08, /* REPORT_COUNT (8) */ \
- 0x81, 0x02, /* INPUT (Data,Var,Abs) */ \
- 0x95, 0x03, /* REPORT_COUNT (3) */ \
- 0x75, 0x08, /* REPORT_SIZE (8) */ \
- 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ \
- 0x25, 0x65, /* LOGICAL_MAXIMUM (101) */ \
- 0x05, 0x07, /* USAGE_PAGE (Keyboard) */ \
- 0x19, 0x00, /* USAGE_MINIMUM (Reserved (no event indicated)) */ \
- 0x29, 0x65, /* USAGE_MAXIMUM (Keyboard Application) */ \
- 0x81, 0x00, /* INPUT (Data,Ary,Abs) */ \
- 0x95, 0x05, /* REPORT_COUNT (5) */ \
- 0x75, 0x01, /* REPORT_SIZE (1) */ \
- 0x05, 0x08, /* USAGE_PAGE (LEDs) */ \
- 0x19, 0x01, /* USAGE_MINIMUM (Num Lock) */ \
- 0x29, 0x05, /* USAGE_MAXIMUM (Kana) */ \
- 0x91, 0x02, /* OUTPUT (Data,Var,Abs) */ \
- 0x95, 0x01, /* REPORT_COUNT (1) */ \
- 0x75, 0x03, /* REPORT_SIZE (3) */ \
- 0x91, 0x03, /* OUTPUT (Cnst,Var,Abs) */ \
- 0xC0 /* END_COLLECTION */
- #define HID_REP_MAP_MOUSE_SWAP(...) \
- 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */ \
- 0x09, 0x02, /* USAGE (Mouse) */ \
- /* 0xa1, 0x01, */ /* COLLECTION (Application) */ \
- __VA_ARGS__, /* Report ID (...) */ \
- 0x09, 0x01, /* USAGE (Pointer) */ \
- 0xa1, 0x00, /* COLLECTION (Physical) */ \
- 0x05, 0x09, /* USAGE_PAGE (Button) */ \
- 0x19, 0x01, /* USAGE_MINIMUM (Button 1) */ \
- 0x29, 0x05, /* USAGE_MAXIMUM (Button 5) */ \
- 0x15, 0x00, /* LOGICAL_MINIMUM (0) */ \
- 0x25, 0x01, /* LOGICAL_MAXIMUM (1) */ \
- 0x75, 0x01, /* REPORT_SIZE (1) */ \
- 0x95, 0x05, /* REPORT_COUNT (5) */ \
- 0x81, 0x02, /* INPUT (Data,Var,Abs) */ \
- 0x75, 0x03, /* REPORT_SIZE (3) */ \
- 0x95, 0x01, /* REPORT_COUNT (1) */ \
- 0x81, 0x01, /* INPUT (Cnst,Ary,Abs) */ \
- 0x05, 0x01, /* USAGE_PAGE (Generic Desktop) */ \
- 0x09, 0x38, /* USAGE (Wheel) */ \
- 0x09, 0x30, /* USAGE (X) */ \
- 0x09, 0x31, /* USAGE (Y) */ \
- 0x15, 0x81, /* LOGICAL_MINIMUM (-127) */ \
- 0x25, 0x7f, /* LOGICAL_MAXIMUM (127) */ \
- 0x75, 0x08, /* REPORT_SIZE (8) */ \
- 0x95, 0x03, /* REPORT_COUNT (3) */ \
- 0x81, 0x06, /* INPUT (Data,Var,Rel) */ \
- 0xc0, /* END_COLLECTION */ \
- 0xc0 /* END_COLLECTION */
- #define HID_REP_MAP_CONSUMER_NO_ID() HID_REP_MAP_CONSUMER_SWAP(0xa1, 0x01)
- #define HID_REP_MAP_CONSUMER(id) HID_REP_MAP_CONSUMER_SWAP(0xa1, 0x01, 0x85, id)
- #define HID_REP_MAP_KEYBOARD_NO_ID() HID_REP_MAP_KEYBOARD_SWAP(0xa1, 0x01)
- #define HID_REP_MAP_KEYBOARD(id) HID_REP_MAP_KEYBOARD_SWAP(0xa1, 0x01, 0x85, id)
- #define HID_REP_MAP_MOUSE_NO_ID() HID_REP_MAP_MOUSE_SWAP(0xa1, 0x01)
- #define HID_REP_MAP_MOUSE(id) HID_REP_MAP_MOUSE_SWAP(0xa1, 0x01, 0x85, id)
- /**
- * @brief Determine by Peer/Local USB HID Report Map
- */
- #define HID_REP_ID_CONSUMER 1
- #define HID_REP_ID_KEYBOARD 2
- #define HID_REP_ID_LED 2
- #define HID_REP_ID_MOUSE 3
- typedef struct PACKED {
- union {
- struct {
- uint8_t btn_left : 1;
- uint8_t btn_right : 1;
- uint8_t btn_central : 1;
- uint8_t btn_4 : 1;
- uint8_t btn_5 : 1;
- uint8_t reserved : 3;
- };
- uint8_t button;
- };
- int8_t wheel;
- int8_t x;
- int8_t y;
- } hid_rep_mouse_t;
- typedef struct PACKED {
- uint16_t code;
- uint8_t reserved[2];
- } hid_rep_consumer_t;
- typedef struct PACKED {
- union {
- struct {
- uint8_t left_ctrl : 1;
- uint8_t left_shift : 1;
- uint8_t left_alt : 1;
- uint8_t left_gui : 1;
- uint8_t rigth_ctrl : 1;
- uint8_t rigth_shift : 1;
- uint8_t rigth_alt : 1;
- uint8_t rigth_gui : 1;
- };
- uint8_t modify;
- };
- uint8_t key[3];
- } hid_rep_keyboard_t;
- typedef struct PACKED {
- union {
- struct {
- uint8_t num_lock : 1;
- uint8_t caps_lock : 1;
- uint8_t scroll_lock : 1;
- uint8_t compose : 1;
- uint8_t kana : 1;
- uint8_t reserved : 3;
- };
- uint8_t led;
- };
- } hid_rep_led_t;
- typedef struct PACKED {
- uint8_t report_id;
- union {
- /* all elt length is same */
- hid_rep_mouse_t mouse;
- hid_rep_consumer_t consumer;
- hid_rep_keyboard_t keyboard;
- hid_rep_led_t led;
- } pdu;
- } hid_rep_info_t;
- #endif // _HID_DEFINES_H
|