你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

Bluenrg-ms是否支持hid 复合设备?

[复制链接]
zxrx117 提问时间:2024-12-13 20:51 / 未解决
我在使用Bluenrg-ms做ble hid设备时,分别单独实现了键盘和鼠标的功能,但是当我像usb hid 设备一样在report map(也就是报告描述符)中同时加入用report id 区分时,ble 设备不能同时识别,请问如何解决? 以下是我的报告描述符:

  1. static uint8_t hid_report[] =
  2. {
  3.    
  4. #if use_keybord
  5.         0x05, 0x01,                    // USAGE_PAGE (Generic Desktop)
  6.     0x09, 0x06,                    // USAGE (Keyboard)
  7.         //表示应用集合,必须要以 END_COLLECTION 来结束它,见最后的 END_COLLECTION
  8.     0xa1, 0x01,                    // COLLECTION (Application)
  9. //#if FEATURE_SUPPORT_MULTIMEDIA_KEYBOARD      //复合设备
  10. //    0x85, HIDS_KB_REPORT_ID,                    //   REPORT_ID (1)  
  11. //    //他也需要一字节
  12. //#endif
  13.             0x05, 0x07, // USAGE_PAGE (Keyboard)
  14.         // bitmap of modifiers
  15.         0x75, 0x01,         //   Report Size (1),
  16.         0x95, 0x08,         //   Report Count (8),
  17.         0x19, 0xE0,       //   Usage Minimum (224),
  18.         0x29, 0xE7,       //   Usage Maximum (231),
  19.         0x15, 0x00,       //   Logical Minimum (0),
  20.         0x25, 0x01,       //   Logical Maximum (1),
  21.         0x81, 0x02,       //   Input (Data, Variable, Absolute), ;Modifier byte

  22.        
  23.             // 1 Reserved byte
  24.     0x95, 0x01,  // REPORT_COUNT (1)
  25.     0x75, 0x08, // REPORT_SIZE (8)
  26.     0x81, 0x01, // INPUT (Cnst,Ary,Abs)
  27.        
  28.             // LEDs for num lock etc
  29.     0x95, 0x05, // REPORT_COUNT (5)
  30.     0x75, 0x01, // REPORT_SIZE (1)
  31.     0x05, 0x08, // USAGE_PAGE (LEDs)

  32.     0x19, 0x01, // USAGE_MINIMUM (Num Lock)
  33.     0x29, 0x05, // USAGE_MAXIMUM (Kana)
  34.     0x91, 0x02, // OUTPUT (Data,Var,Abs)
  35.        
  36.                 // Reserved 3 bits
  37.     0x95, 0x01, // REPORT_COUNT (1)
  38.     0x75, 0x03, // REPORT_SIZE (3)
  39.     0x91, 0x03, // OUTPUT (Cnst,Var,Abs)

  40.             /* Slots for 6 keys that can be pressed down at the same time */
  41.     0x95, 0x06, // REPORT_COUNT (6)
  42.     0x75, 0x08, // REPORT_SIZE (8)
  43.     0x15, 0x00, // LOGICAL_MINIMUM (0)
  44.     0x25, 0x65, // LOGICAL_MAXIMUM (101)
  45.     0x05, 0x07, // USAGE_PAGE (Keyboard)
  46.     0x19, 0x00, // USAGE_MINIMUM (Reserved (no event indicated))
  47.     0x29, 0x65, // USAGE_MAXIMUM (Keyboard Application)
  48.     0x81, 0x00, // INPUT (Data,Ary,Abs)
  49.        
  50.         0xC0, // END_COLLECTION
  51. #endif

  52. #if use_mouse

  53.     0x05, 0x01,   // USAGE_PAGE (Generic Desktop)
  54.     0x09, 0x02,   // USAGE (Mouse)
  55.     0xa1, 0x01,   // COLLECTION (Application)
  56. #if FEATURE_SUPPORT_MULTIMEDIA_KEYBOARD      //复合设备
  57.     0x85, HIDS_MM_KB_REPORT_ID,   //   REPORT_ID (2)
  58. #endif
  59.     0x09, 0x01,   //   USAGE (Pointer) 鼠标指针的控制
  60.     0xa1, 0x00,   //   COLLECTION (Physical)

  61.     0x05, 0x09,   //         Usage Page (Buttons)
  62.     0x19, 0x01,   //         Usage Minimum (1)
  63.     0x29, 0x03,   //         Usage Maximum (3)
  64.     0x15, 0x00,   //         Logical Minimum (0)
  65.     0x25, 0x01,   //         Logical Maximum (1)
  66.     0x95, 0x03,   //         Report Count (3)
  67.     0x75, 0x01,   //         Report Size (1)
  68.     0x81, 0x02,   //         Input(Data, Variable, Absolute); 3 button bits
  69.    
  70.         0x95, 0x01,   //         Report Count(1)
  71.     0x75, 0x05,   //         Report Size(5)
  72.     0x81, 0x03,   //         Input(Constant);                 5 bit padding
  73.    
  74.         0x75, 0x08,   //         Report Size (8)
  75.     0x95, 0x03,   //         Report Count (3)
  76.     0x05, 0x01,   //         Usage Page (Generic Desktop)
  77.     0x09, 0x30,   //         Usage (X)
  78.     0x09, 0x31,   //         Usage (Y)
  79.     0x09, 0x38,   //         Usage (Wheel)
  80.     0x15, 0x81,   //         Logical Minimum (-127)
  81.     0x25, 0x7F,   //         Logical Maximum (127)
  82.     0x81, 0x06,   //         Input(Data, Variable, Relative); 3 position bytes (X,Y,Wheel)

  83.     0xc0,         //   END_COLLECTION
  84.       0xc0          // END_COLLECTION

  85. #endif

  86. };
复制代码

收藏 评论0 发布时间:2024-12-13 20:51

举报

0个回答

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版