1# HID DDK 2 3 4## 概述 5 6提供HID DDK接口,包括创建设备、发送事件、销毁设备。 7 8**系统能力:** SystemCapability.Driver.HID.Extension 9 10**起始版本:** 11 11 12 13## 汇总 14 15 16### 文件 17 18| 名称 | 描述 | 19| -------- | -------- | 20| [hid_ddk_api.h](hid__ddk__api_8h.md) | 声明主机侧访问输入设备的HID DDK接口。<br/>引用文件:<hid/hid_ddk_api.h><br/>库: libhid.z.so | 21| [hid_ddk_types.h](hid__ddk__types_8h.md) | 提供HID DDK中的枚举变量与结构体定义。<br/>引用文件:<hid/hid_ddk_types.h><br/>库: libhid.z.so | 22 23 24### 结构体 25 26| 名称 | 描述 | 27| -------- | -------- | 28| struct [Hid_EmitItem](_hid___emit_item.md) | 事件信息。 | 29| struct [Hid_Device](_hid___device.md) | 设备基本信息。 | 30| struct [Hid_EventTypeArray](_hid___event_type_array.md) | 事件类型编码数组。 | 31| struct [Hid_KeyCodeArray](_hid___key_code_array.md) | 键值属性数组。 | 32| struct [Hid_AbsAxesArray](_hid___abs_axes_array.md) | 绝对坐标属性数组。 | 33| struct [Hid_RelAxesArray](_hid___rel_axes_array.md) | 相对坐标属性数组。 | 34| struct [Hid_MscEventArray](_hid___msc_event_array.md) | 其它特殊事件属性数组。 | 35| struct [Hid_EventProperties](_hid___event_properties.md) | 设备关注事件属性。 | 36| struct [Hid_RawDevInfo](_hid___raw_dev_info.md) | 原始设备信息定义。 | 37 38 39### 宏定义 40 41| 名称 | 描述 | 42| -------- | -------- | 43| [HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size) (16 \* 1024 - 1) | 最大报告缓冲区大小。 | 44 45 46### 类型定义 47 48| 名称 | 描述 | 49| -------- | -------- | 50| typedef struct [Hid_EmitItem](_hid___emit_item.md) [Hid_EmitItem](#hid_emititem) | 事件信息。 | 51| typedef struct [Hid_Device](_hid___device.md) [Hid_Device](#hid_device) | 设备基本信息。 | 52| typedef struct [Hid_EventTypeArray](_hid___event_type_array.md) [Hid_EventTypeArray](#hid_eventtypearray) | 事件类型编码数组。 | 53| typedef struct [Hid_KeyCodeArray](_hid___key_code_array.md) [Hid_KeyCodeArray](#hid_keycodearray) | 键值属性数组。 | 54| typedef struct [Hid_AbsAxesArray](_hid___abs_axes_array.md) [Hid_AbsAxesArray](#hid_absaxesarray) | 绝对坐标属性数组。 | 55| typedef struct [Hid_RelAxesArray](_hid___rel_axes_array.md) [Hid_RelAxesArray](#hid_relaxesarray) | 相对坐标属性数组。 | 56| typedef struct [Hid_MscEventArray](_hid___msc_event_array.md) [Hid_MscEventArray](#hid_msceventarray) | 其它特殊事件属性数组。 | 57| typedef struct [Hid_EventProperties](_hid___event_properties.md) [Hid_EventProperties](#hid_eventproperties) | 设备关注事件属性。 | 58| typedef struct [Hid_DeviceHandle](#hid_devicehandle) [Hid_DeviceHandle](#hid_devicehandle) | 不透明的USB HID设备结构。 | 59| typedef struct [Hid_RawDevInfo](_hid___raw_dev_info.md) [Hid_RawDevInfo](#hid_rawdevinfo) | 原始设备信息定义。 | 60 61 62### 枚举 63 64| 名称 | 描述 | 65| -------- | -------- | 66| [Hid_DeviceProp](#hid_deviceprop) {<br/>HID_PROP_POINTER = 0x00, HID_PROP_DIRECT = 0x01, HID_PROP_BUTTON_PAD = 0x02, HID_PROP_SEMI_MT = 0x03, HID_PROP_TOP_BUTTON_PAD = 0x04, HID_PROP_POINTING_STICK = 0x05, HID_PROP_ACCELEROMETER = 0x06<br/>} | 输入设备特性定义。 | 67| [Hid_EventType](#hid_eventtype) {<br/>HID_EV_SYN = 0x00, HID_EV_KEY = 0x01, HID_EV_REL = 0x02, HID_EV_ABS = 0x03, HID_EV_MSC = 0x04<br/>} | 事件类型。 | 68| [Hid_SynEvent](#hid_synevent) { HID_SYN_REPORT = 0, HID_SYN_CONFIG = 1, HID_SYN_MT_REPORT = 2, HID_SYN_DROPPED = 3 } | 同步事件编码。 | 69| [Hid_KeyCode](#hid_keycode) {<br/>HID_KEY_A = 30, HID_KEY_B = 48, HID_KEY_C = 46, HID_KEY_D = 32, HID_KEY_E = 18, HID_KEY_F = 33, HID_KEY_G = 34, HID_KEY_H = 35, HID_KEY_I = 23, HID_KEY_J = 36, HID_KEY_K = 37, HID_KEY_L = 38, HID_KEY_M = 50, HID_KEY_N = 49, HID_KEY_O = 24, HID_KEY_P = 25, HID_KEY_Q = 16, HID_KEY_R = 19, HID_KEY_S = 31, HID_KEY_T = 20, HID_KEY_U = 22, HID_KEY_V = 47, HID_KEY_W = 17, HID_KEY_X = 45, HID_KEY_Y = 21, HID_KEY_Z = 44, HID_KEY_ESC = 1, HID_KEY_0 = 11, HID_KEY_1 = 2, HID_KEY_2 = 3, HID_KEY_3 = 4, HID_KEY_4 = 5, HID_KEY_5 = 6, HID_KEY_6 = 7, HID_KEY_7 = 8, HID_KEY_8 = 9, HID_KEY_9 = 10, HID_KEY_GRAVE = 41, HID_KEY_MINUS = 12, HID_KEY_EQUALS = 13, HID_KEY_BACKSPACE = 14, HID_KEY_LEFT_BRACKET = 26, HID_KEY_RIGHT_BRACKET = 27, HID_KEY_ENTER = 28, HID_KEY_LEFT_SHIFT = 42, HID_KEY_BACKSLASH = 43, HID_KEY_SEMICOLON = 39, HID_KEY_APOSTROPHE = 40, HID_KEY_SPACE = 57, HID_KEY_SLASH = 53, HID_KEY_COMMA = 51, HID_KEY_PERIOD = 52, HID_KEY_RIGHT_SHIFT = 54, HID_KEY_NUMPAD_0 = 82, HID_KEY_NUMPAD_1 = 79, HID_KEY_NUMPAD_2 = 80, HID_KEY_NUMPAD_3 = 81, HID_KEY_NUMPAD_4 = 75, HID_KEY_NUMPAD_5 = 76, HID_KEY_NUMPAD_6 = 77, HID_KEY_NUMPAD_7 = 71, HID_KEY_NUMPAD_8 = 72, HID_KEY_NUMPAD_9 = 73, HID_KEY_NUMPAD_DIVIDE = 70, HID_KEY_NUMPAD_MULTIPLY = 55, HID_KEY_NUMPAD_SUBTRACT = 74, HID_KEY_NUMPAD_ADD = 78, HID_KEY_NUMPAD_DOT = 83, HID_KEY_SYSRQ = 99, HID_KEY_DELETE = 111, HID_KEY_MUTE = 113, HID_KEY_VOLUME_DOWN = 114, HID_KEY_VOLUME_UP = 115, HID_KEY_BRIGHTNESS_DOWN = 224, HID_KEY_BRIGHTNESS_UP = 225, HID_BTN_0 = 0x100, HID_BTN_1 = 0x101, HID_BTN_2 = 0x102, HID_BTN_3 = 0x103, HID_BTN_4 = 0x104, HID_BTN_5 = 0x105, HID_BTN_6 = 0x106, HID_BTN_7 = 0x107, HID_BTN_8 = 0x108, HID_BTN_9 = 0x109, HID_BTN_LEFT = 0x110, HID_BTN_RIGHT = 0x111, HID_BTN_MIDDLE = 0x112, HID_BTN_SIDE = 0x113, HID_BTN_EXTRA = 0x114, HID_BTN_FORWARD = 0x115, HID_BTN_BACKWARD = 0x116, HID_BTN_TASK = 0x117, HID_BTN_TOOL_PEN = 0x140, HID_BTN_TOOL_RUBBER = 0x141, HID_BTN_TOOL_BRUSH = 0x142, HID_BTN_TOOL_PENCIL = 0x143, HID_BTN_TOOL_AIRBRUSH = 0x144, HID_BTN_TOOL_FINGER = 0x145, HID_BTN_TOOL_MOUSE = 0x146, HID_BTN_TOOL_LENS = 0x147, HID_BTN_TOOL_QUINT_TAP = 0x148, HID_BTN_STYLUS3 = 0x149, HID_BTN_TOUCH = 0x14a, HID_BTN_STYLUS = 0x14b, HID_BTN_STYLUS2 = 0x14c, HID_BTN_TOOL_DOUBLE_TAP = 0x14d, HID_BTN_TOOL_TRIPLE_TAP = 0x14e, HID_BTN_TOOL_QUAD_TAP = 0x14f, HID_BTN_WHEEL = 0x150<br/>} | 键值编码。 | 70| [Hid_AbsAxes](#hid_absaxes) {<br/>HID_ABS_X = 0x00, HID_ABS_Y = 0x01, HID_ABS_Z = 0x02, HID_ABS_RX = 0x03, HID_ABS_RY = 0x04, HID_ABS_RZ = 0x05, HID_ABS_THROTTLE = 0x06, HID_ABS_RUDDER = 0x07, HID_ABS_WHEEL = 0x08, HID_ABS_GAS = 0x09, HID_ABS_BRAKE = 0x0a, HID_ABS_HAT0X = 0x10, HID_ABS_HAT0Y = 0x11, HID_ABS_HAT1X = 0x12, HID_ABS_HAT1Y = 0x13, HID_ABS_HAT2X = 0x14, HID_ABS_HAT2Y = 0x15, HID_ABS_HAT3X = 0x16, HID_ABS_HAT3Y = 0x17, HID_ABS_PRESSURE = 0x18, HID_ABS_DISTANCE = 0x19, HID_ABS_TILT_X = 0x1a, HID_ABS_TILT_Y = 0x1b, HID_ABS_TOOL_WIDTH = 0x1c, HID_ABS_VOLUME = 0x20, HID_ABS_MISC = 0x28<br/>} | 绝对坐标编码。 | 71| [Hid_RelAxes](#hid_relaxes) {<br/>HID_REL_X = 0x00, HID_REL_Y = 0x01, HID_REL_Z = 0x02, HID_REL_RX = 0x03, HID_REL_RY = 0x04, HID_REL_RZ = 0x05, HID_REL_HWHEEL = 0x06, HID_REL_DIAL = 0x07, HID_REL_WHEEL = 0x08, HID_REL_MISC = 0x09, HID_REL_RESERVED = 0x0a, HID_REL_WHEEL_HI_RES = 0x0b, HID_REL_HWHEEL_HI_RES = 0x0c<br/>} | 相对坐标编码。 | 72| [Hid_MscEvent](#hid_mscevent) {<br/>HID_MSC_SERIAL = 0x00, HID_MSC_PULSE_LED = 0x01, HID_MSC_GESTURE = 0x02, HID_MSC_RAW = 0x03, HID_MSC_SCAN = 0x04, HID_MSC_TIMESTAMP = 0x05<br/>} | 不适合其它类型的输入事件编码。 | 73| [Hid_DdkErrCode](#hid_ddkerrcode) {<br/>HID_DDK_SUCCESS = 0, HID_DDK_NO_PERM = 201, HID_DDK_INVALID_PARAMETER = 401, HID_DDK_FAILURE = 27300001, HID_DDK_NULL_PTR = 27300002, HID_DDK_INVALID_OPERATION = 27300003, HID_DDK_TIMEOUT = 27300004, HID_DDK_INIT_ERROR = 27300005, HID_DDK_SERVICE_ERROR = 27300006, HID_DDK_MEMORY_ERROR = 27300007, HID_DDK_IO_ERROR = 27300008, HID_DDK_DEVICE_NOT_FOUND = 27300009<br/>} | HID DDK错误码定义。 | 74| [Hid_ReportType](#hid_reporttype) { HID_INPUT_REPORT = 0, HID_OUTPUT_REPORT = 1, HID_FEATURE_REPORT = 2 } | 报告(HID设备与主机之间交换的数据包)类型定义。 | 75 76 77### 函数 78 79| 名称 | 描述 | 80| -------- | -------- | 81| int32_t [OH_Hid_CreateDevice](#oh_hid_createdevice) ([Hid_Device](_hid___device.md) \*hidDevice, [Hid_EventProperties](_hid___event_properties.md) \*hidEventProperties) | 创建设备。 | 82| int32_t [OH_Hid_EmitEvent](#oh_hid_emitevent) (int32_t deviceId, const [Hid_EmitItem](_hid___emit_item.md) items[], uint16_t length) | 向指定设备发送事件列表。 | 83| int32_t [OH_Hid_DestroyDevice](#oh_hid_destroydevice) (int32_t deviceId) | 销毁设备。 | 84| int32_t [OH_Hid_Init](#oh_hid_init) (void) | 初始化HID DDK。 | 85| int32_t [OH_Hid_Release](#oh_hid_release) (void) | 释放HID DDK。 | 86| int32_t [OH_Hid_Open](#oh_hid_open) (uint64_t deviceId, uint8_t interfaceIndex, [Hid_DeviceHandle](#hid_devicehandle) \*\*dev) | 打开deviceId和interfaceIndex指定的设备。 | 87| int32_t [OH_Hid_Close](#oh_hid_close) ([Hid_DeviceHandle](#hid_devicehandle) \*\*dev) | 关闭设备。 | 88| int32_t [OH_Hid_Write](#oh_hid_write) ([Hid_DeviceHandle](#hid_devicehandle) \*dev, uint8_t \*data, uint32_t length, uint32_t \*bytesWritten) | 向设备写入报告。 | 89| int32_t [OH_Hid_ReadTimeout](#oh_hid_readtimeout) ([Hid_DeviceHandle](#hid_devicehandle) \*dev, uint8_t \*data, uint32_t bufSize, int timeout, uint32_t \*bytesRead) | 在指定的超时时间内从设备读取报告。 | 90| int32_t [OH_Hid_Read](#oh_hid_read) ([Hid_DeviceHandle](#hid_devicehandle) \*dev, uint8_t \*data, uint32_t bufSize, uint32_t \*bytesRead) | 从设备读取报告,默认为阻塞模式(阻塞等待直到有数据可读取),可以调用[OH_Hid_SetNonBlocking](#oh_hid_setnonblocking)改变模式。 | 91| int32_t [OH_Hid_SetNonBlocking](#oh_hid_setnonblocking) ([Hid_DeviceHandle](#hid_devicehandle) \*dev, int nonBlock) | 设置设备读取模式为非阻塞。 | 92| int32_t [OH_Hid_GetRawInfo](#oh_hid_getrawinfo) ([Hid_DeviceHandle](#hid_devicehandle) \*dev, [Hid_RawDevInfo](_hid___raw_dev_info.md) \*rawDevInfo) | 获取设备原始信息。 | 93| int32_t [OH_Hid_GetRawName](#oh_hid_getrawname) ([Hid_DeviceHandle](#hid_devicehandle) \*dev, char \*data, uint32_t bufSize) | 获取设备原始名称。 | 94| int32_t [OH_Hid_GetPhysicalAddress](#oh_hid_getphysicaladdress) ([Hid_DeviceHandle](#hid_devicehandle) \*dev, char \*data, uint32_t bufSize) | 获取设备物理地址。 | 95| int32_t [OH_Hid_GetRawUniqueId](#oh_hid_getrawuniqueid) ([Hid_DeviceHandle](#hid_devicehandle) \*dev, uint8_t \*data, uint32_t bufSize) | 获取设备原始唯一标识符。 | 96| int32_t [OH_Hid_SendReport](#oh_hid_sendreport) ([Hid_DeviceHandle](#hid_devicehandle) \*dev, [Hid_ReportType](#hid_reporttype) reportType, const uint8_t \*data, uint32_t length) | 向设备发送报告。 | 97| int32_t [OH_Hid_GetReport](#oh_hid_getreport) ([Hid_DeviceHandle](#hid_devicehandle) \*dev, [Hid_ReportType](#hid_reporttype) reportType, uint8_t \*data, uint32_t bufSize) | 获取设备报告。 | 98| int32_t [OH_Hid_GetReportDescriptor](#oh_hid_getreportdescriptor) ([Hid_DeviceHandle](#hid_devicehandle) \*dev, uint8_t \*buf, uint32_t bufSize, uint32_t \*bytesRead) | 获取设备报告描述符。 | 99 100 101### 变量 102 103| 名称 | 描述 | 104| -------- | -------- | 105| uint16_t [Hid_EmitItem::type](#type) | 事件类型。 | 106| uint16_t [Hid_EmitItem::code](#code) | 事件编码。 | 107| uint32_t [Hid_EmitItem::value](#value) | 事件值。 | 108| const char \* [Hid_Device::deviceName](#devicename) | 设备名称。 | 109| uint16_t [Hid_Device::vendorId](#vendorid) | 厂商ID。 | 110| uint16_t [Hid_Device::productId](#productid) | 产品ID。 | 111| uint16_t [Hid_Device::version](#version) | 版本号。 | 112| uint16_t [Hid_Device::bustype](#bustype) | 总线类型。 | 113| [Hid_DeviceProp](#hid_deviceprop) \* [Hid_Device::properties](#properties) | 设备特性。 | 114| uint16_t [Hid_Device::propLength](#proplength) | 设备特性数量。 | 115| [Hid_EventType](#hid_eventtype) \* [Hid_EventTypeArray::hidEventType](#hideventtype) | 事件类型编码。 | 116| uint16_t [Hid_EventTypeArray::length](#length-15) | 数组长度。 | 117| [Hid_KeyCode](#hid_keycode) \* [Hid_KeyCodeArray::hidKeyCode](#hidkeycode) | 键值编码。 | 118| uint16_t [Hid_KeyCodeArray::length](#length-25) | 数组长度。 | 119| [Hid_AbsAxes](#hid_absaxes) \* [Hid_AbsAxesArray::hidAbsAxes](#hidabsaxes) | 绝对坐标属性编码。 | 120| uint16_t [Hid_AbsAxesArray::length](#length-35) | 数组长度。 | 121| [Hid_RelAxes](#hid_relaxes) \* [Hid_RelAxesArray::hidRelAxes](#hidrelaxes) | 相对坐标属性编码。 | 122| uint16_t [Hid_RelAxesArray::length](#length-45) | 数组长度。 | 123| [Hid_MscEvent](#hid_mscevent) \* [Hid_MscEventArray::hidMscEvent](#hidmscevent) | 其它特殊事件属性编码。 | 124| uint16_t [Hid_MscEventArray::length](#length-55) | 数组长度。 | 125| struct [Hid_EventTypeArray](_hid___event_type_array.md)[Hid_EventProperties::hidEventTypes](#hideventtypes) | 事件类型属性编码数组。 | 126| struct [Hid_KeyCodeArray](_hid___key_code_array.md)[Hid_EventProperties::hidKeys](#hidkeys) | 键值属性编码数组。 | 127| struct [Hid_AbsAxesArray](_hid___abs_axes_array.md)[Hid_EventProperties::hidAbs](#hidabs) | 绝对坐标属性编码数组。 | 128| struct [Hid_RelAxesArray](_hid___rel_axes_array.md)[Hid_EventProperties::hidRelBits](#hidrelbits) | 相对坐标属性编码数组。 | 129| struct [Hid_MscEventArray](_hid___msc_event_array.md)[Hid_EventProperties::hidMiscellaneous](#hidmiscellaneous) | 其它特殊事件属性编码数组。 | 130| int32_t [Hid_EventProperties::hidAbsMax](#hidabsmax) [64] | 绝对坐标属性最大值。 | 131| int32_t [Hid_EventProperties::hidAbsMin](#hidabsmin) [64] | 绝对坐标属性最小值。 | 132| int32_t [Hid_EventProperties::hidAbsFuzz](#hidabsfuzz) [64] | 绝对坐标属性模糊值。 | 133| int32_t [Hid_EventProperties::hidAbsFlat](#hidabsflat) [64] | 绝对坐标属性固定值。 | 134| uint32_t [Hid_RawDevInfo::busType](#bustype) | 总线类型。 | 135| uint16_t [Hid_RawDevInfo::vendor](#vendor) | 供应商ID。 | 136| uint16_t [Hid_RawDevInfo::product](#product) | 产品ID。 | 137 138 139## 宏定义说明 140 141 142### HID_MAX_REPORT_BUFFER_SIZE 143 144``` 145#define HID_MAX_REPORT_BUFFER_SIZE (16 * 1024 - 1) 146``` 147 148**描述** 149 150最大报告缓冲区大小。 151 152**起始版本:** 18 153 154 155## 类型定义说明 156 157 158### Hid_AbsAxesArray 159 160``` 161typedef struct Hid_AbsAxesArray Hid_AbsAxesArray 162``` 163 164**描述** 165 166绝对坐标属性数组。 167 168**起始版本:** 11 169 170 171### Hid_Device 172 173``` 174typedef struct Hid_Device Hid_Device 175``` 176 177**描述** 178 179设备基本信息。 180 181**起始版本:** 11 182 183 184### Hid_DeviceHandle 185 186``` 187typedef struct Hid_DeviceHandle Hid_DeviceHandle 188``` 189 190**描述** 191 192不透明的USB HID设备结构。 193 194**起始版本:** 18 195 196 197### Hid_EmitItem 198 199``` 200typedef struct Hid_EmitItem Hid_EmitItem 201``` 202 203**描述** 204 205事件信息。 206 207**起始版本:** 11 208 209 210### Hid_EventProperties 211 212``` 213typedef struct Hid_EventProperties Hid_EventProperties 214``` 215 216**描述** 217 218设备关注事件属性。 219 220**起始版本:** 11 221 222 223### Hid_EventTypeArray 224 225``` 226typedef struct Hid_EventTypeArray Hid_EventTypeArray 227``` 228 229**描述** 230 231事件类型编码数组。 232 233**起始版本:** 11 234 235 236### Hid_KeyCodeArray 237 238``` 239typedef struct Hid_KeyCodeArray Hid_KeyCodeArray 240``` 241 242**描述** 243 244键值属性数组。 245 246**起始版本:** 11 247 248 249### Hid_MscEventArray 250 251``` 252typedef struct Hid_MscEventArray Hid_MscEventArray 253``` 254 255**描述** 256 257其它特殊事件属性数组。 258 259**起始版本:** 11 260 261 262### Hid_RawDevInfo 263 264``` 265typedef struct Hid_RawDevInfo Hid_RawDevInfo 266``` 267 268**描述** 269 270原始设备信息定义。 271 272**起始版本:** 18 273 274 275### Hid_RelAxesArray 276 277``` 278typedef struct Hid_RelAxesArray Hid_RelAxesArray 279``` 280 281**描述** 282 283相对坐标属性数组。 284 285**起始版本:** 11 286 287 288## 枚举类型说明 289 290 291### Hid_AbsAxes 292 293``` 294enum Hid_AbsAxes 295``` 296 297**描述** 298 299绝对坐标编码。 300 301**起始版本:** 11 302 303| 枚举值 | 描述 | 304| -------- | -------- | 305| HID_ABS_X | X轴。 | 306| HID_ABS_Y | Y轴。 | 307| HID_ABS_Z | Z轴。 | 308| HID_ABS_RX | 右模拟摇杆的 X 轴。 | 309| HID_ABS_RY | 右模拟摇杆的 Y 轴。 | 310| HID_ABS_RZ | 右模拟摇杆的 Z 轴。 | 311| HID_ABS_THROTTLE | 油门。 | 312| HID_ABS_RUDDER | 舵。 | 313| HID_ABS_WHEEL | 滚轮。 | 314| HID_ABS_GAS | 气。 | 315| HID_ABS_BRAKE | 制动。 | 316| HID_ABS_HAT0X | HAT0X。 | 317| HID_ABS_HAT0Y | HAT0Y。 | 318| HID_ABS_HAT1X | HAT1X。 | 319| HID_ABS_HAT1Y | HAT1Y。 | 320| HID_ABS_HAT2X | HAT2X。 | 321| HID_ABS_HAT2Y | HAT2Y。 | 322| HID_ABS_HAT3X | HAT3X。 | 323| HID_ABS_HAT3Y | HAT3Y。 | 324| HID_ABS_PRESSURE | 压力。 | 325| HID_ABS_DISTANCE | 距离。 | 326| HID_ABS_TILT_X | X轴倾斜度。 | 327| HID_ABS_TILT_Y | Y轴倾斜度。 | 328| HID_ABS_TOOL_WIDTH | 触摸工具的宽度。 | 329| HID_ABS_VOLUME | 音量。 | 330| HID_ABS_MISC | 其它。 | 331 332 333### Hid_DdkErrCode 334 335``` 336enum Hid_DdkErrCode 337``` 338 339**描述** 340 341HID DDK错误码定义。 342 343**起始版本:** 11 344 345| 枚举值 | 描述 | 346| -------- | -------- | 347| HID_DDK_SUCCESS | 操作成功。 | 348| HID_DDK_NO_PERM | 没有权限,从API 16起,取值由-6变更为201。 | 349| HID_DDK_INVALID_PARAMETER | 非法参数,从API 16起,取值由-2变更为401。 | 350| HID_DDK_FAILURE | 操作失败,从API 16起,取值由-1变更为27300001。 | 351| HID_DDK_NULL_PTR | 空指针异常,从API 16起,取值由-4变更为27300002。 | 352| HID_DDK_INVALID_OPERATION | 非法操作,从API 16起,取值由-3变更为27300003。 | 353| HID_DDK_TIMEOUT | 超时,从API 16起,取值由-5变更为27300004。 | 354| HID_DDK_INIT_ERROR | 初始化DDK失败或DDK未初始化。从API 16开始支持此枚举。 | 355| HID_DDK_SERVICE_ERROR | 服务通信过程中错误,从API 16开始支持此枚举。 | 356| HID_DDK_MEMORY_ERROR | 内存相关的错误,包括:内存数据拷贝失败、内存申请失败等,从API 16开始支持此枚举。 | 357| HID_DDK_IO_ERROR | I/O操作失败,从API 16开始支持此枚举。 | 358| HID_DDK_DEVICE_NOT_FOUND | 设备未找到,从API 16开始支持此枚举。 | 359 360 361### Hid_DeviceProp 362 363``` 364enum Hid_DeviceProp 365``` 366 367**描述** 368 369输入设备特性定义。 370 371**起始版本:** 11 372 373| 枚举值 | 描述 | 374| -------- | -------- | 375| HID_PROP_POINTER | 指针设备。 | 376| HID_PROP_DIRECT | 直接输入设备。 | 377| HID_PROP_BUTTON_PAD | 底部按键触摸设备。 | 378| HID_PROP_SEMI_MT | 全多点触控设备。 | 379| HID_PROP_TOP_BUTTON_PAD | 顶部软按键触摸设备。 | 380| HID_PROP_POINTING_STICK | 指点杆设备。 | 381| HID_PROP_ACCELEROMETER | 加速度传感器设备。 | 382 383 384### Hid_EventType 385 386``` 387enum Hid_EventType 388``` 389 390**描述** 391 392事件类型。 393 394**起始版本:** 11 395 396| 枚举值 | 描述 | 397| -------- | -------- | 398| HID_EV_SYN | 同步事件。 | 399| HID_EV_KEY | 按键事件。 | 400| HID_EV_REL | 相对坐标事件。 | 401| HID_EV_ABS | 绝对坐标事件。 | 402| HID_EV_MSC | 特殊事件。 | 403 404 405### Hid_KeyCode 406 407``` 408enum Hid_KeyCode 409``` 410 411**描述** 412 413键值编码。 414 415**起始版本:** 11 416 417| 枚举值 | 描述 | 418| -------- | -------- | 419| HID_KEY_A | 键A。 | 420| HID_KEY_B | 键B。 | 421| HID_KEY_C | 键C。| 422| HID_KEY_D | 键D。 | 423| HID_KEY_E | 键E。 | 424| HID_KEY_F | 键F。 | 425| HID_KEY_G | 键G。 | 426| HID_KEY_H | 键H。 | 427| HID_KEY_I | 键I。 | 428| HID_KEY_J | 键J。 | 429| HID_KEY_K | 键K。 | 430| HID_KEY_L | 键L。 | 431| HID_KEY_M | 键M。 | 432| HID_KEY_N | 键N。| 433| HID_KEY_O | 键O。 | 434| HID_KEY_P | 键P。 | 435| HID_KEY_Q | 键Q。 | 436| HID_KEY_R | 键R。 | 437| HID_KEY_S | 键S。 | 438| HID_KEY_T | 键T。 | 439| HID_KEY_U | 键U。 | 440| HID_KEY_V | 键V。 | 441| HID_KEY_W | 键W。 | 442| HID_KEY_X | 键X。 | 443| HID_KEY_Y | 键Y。 | 444| HID_KEY_Z | 键Z。 | 445| HID_KEY_ESC | 键ESC。 | 446| HID_KEY_0 | 键0。 | 447| HID_KEY_1 | 键1。 | 448| HID_KEY_2 | 键2。 | 449| HID_KEY_3 | 键3。 | 450| HID_KEY_4 | 键4。 | 451| HID_KEY_5 | 键5。 | 452| HID_KEY_6 | 键6。 | 453| HID_KEY_7 | 键7。 | 454| HID_KEY_8 | 键8。 | 455| HID_KEY_9 | 键9。 | 456| HID_KEY_GRAVE | 键`。 | 457| HID_KEY_MINUS | 键-。 | 458| HID_KEY_EQUALS | 键=。 | 459| HID_KEY_BACKSPACE | 键退格。 | 460| HID_KEY_LEFT_BRACKET | 键[。 | 461| HID_KEY_RIGHT_BRACKET | 键]。 | 462| HID_KEY_ENTER | 键回车。 | 463| HID_KEY_LEFT_SHIFT | 键左shift。 | 464| HID_KEY_BACKSLASH | 键\。 | 465| HID_KEY_SEMICOLON | 键;。 | 466| HID_KEY_APOSTROPHE | 键'。 | 467| HID_KEY_SPACE | 键空格。 | 468| HID_KEY_SLASH | 键/。 | 469| HID_KEY_COMMA | 键,。 | 470| HID_KEY_PERIOD | 键.。 | 471| HID_KEY_RIGHT_SHIFT | 键右shift。 | 472| HID_KEY_NUMPAD_0 | 数字键0。 | 473| HID_KEY_NUMPAD_1 | 数字键1。 | 474| HID_KEY_NUMPAD_2 | 数字键2。 | 475| HID_KEY_NUMPAD_3 | 数字键3。 | 476| HID_KEY_NUMPAD_4 | 数字键4。 | 477| HID_KEY_NUMPAD_5 | 数字键5。 | 478| HID_KEY_NUMPAD_6 | 数字键6。 | 479| HID_KEY_NUMPAD_7 | 数字键7。 | 480| HID_KEY_NUMPAD_8 | 数字键8。 | 481| HID_KEY_NUMPAD_9 | 数字键9。| 482| HID_KEY_NUMPAD_DIVIDE | 数字键/。 | 483| HID_KEY_NUMPAD_MULTIPLY | 数字键\*。 | 484| HID_KEY_NUMPAD_SUBTRACT | 数字键-。 | 485| HID_KEY_NUMPAD_ADD | 数字键+。 | 486| HID_KEY_NUMPAD_DOT | 数字键.。 | 487| HID_KEY_SYSRQ | 键打印屏幕。 | 488| HID_KEY_DELETE | 键删除。 | 489| HID_KEY_MUTE | 键静音。 | 490| HID_KEY_VOLUME_DOWN | 键音量-。 | 491| HID_KEY_VOLUME_UP | 键音量+。 | 492| HID_KEY_BRIGHTNESS_DOWN | 键亮度-。 | 493| HID_KEY_BRIGHTNESS_UP | 键亮度+。 | 494| HID_BTN_0 | 按钮0。| 495| HID_BTN_1 | 按钮1。 | 496| HID_BTN_2 | 按钮2。 | 497| HID_BTN_3 | 按钮3。 | 498| HID_BTN_4 | 按钮4。 | 499| HID_BTN_5 | 按钮5。 | 500| HID_BTN_6 | 按钮6。 | 501| HID_BTN_7 | 按钮7。 | 502| HID_BTN_8 | 按钮8。 | 503| HID_BTN_9 | 按钮9。 | 504| HID_BTN_LEFT | 鼠标按键左键。 | 505| HID_BTN_RIGHT | 鼠标按键右键。 | 506| HID_BTN_MIDDLE | 鼠标按键中键。 | 507| HID_BTN_SIDE | 鼠标侧面按键。 | 508| HID_BTN_EXTRA | 鼠标附加按键。 | 509| HID_BTN_FORWARD | 鼠标向前按键。 | 510| HID_BTN_BACKWARD | 鼠标向后按键。 | 511| HID_BTN_TASK | 鼠标任务按键。 | 512| HID_BTN_TOOL_PEN | 画笔。 | 513| HID_BTN_TOOL_RUBBER | 橡皮擦。 | 514| HID_BTN_TOOL_BRUSH | 笔刷。 | 515| HID_BTN_TOOL_PENCIL | 钢笔。 | 516| HID_BTN_TOOL_AIRBRUSH | 喷枪。 | 517| HID_BTN_TOOL_FINGER | 手指。 | 518| HID_BTN_TOOL_MOUSE | 鼠标。 | 519| HID_BTN_TOOL_LENS | 镜头。 | 520| HID_BTN_TOOL_QUINT_TAP | 五指触控。 | 521| HID_BTN_STYLUS3 | 手写笔3。 | 522| HID_BTN_TOUCH | 触摸。 | 523| HID_BTN_STYLUS | 手写笔。 | 524| HID_BTN_STYLUS2 | 手写笔2。 | 525| HID_BTN_TOOL_DOUBLE_TAP | 二指触控。 | 526| HID_BTN_TOOL_TRIPLE_TAP | 三指触控。 | 527| HID_BTN_TOOL_QUAD_TAP | 四指触控。 | 528| HID_BTN_WHEEL | 滚轮。 | 529 530 531### Hid_MscEvent 532 533``` 534enum Hid_MscEvent 535``` 536 537**描述** 538 539不适合其它类型的输入事件编码。 540 541**起始版本:** 11 542 543| 枚举值 | 描述 | 544| -------- | -------- | 545| HID_MSC_SERIAL | 序列号。 | 546| HID_MSC_PULSE_LED | 脉冲。 | 547| HID_MSC_GESTURE | 手势。 | 548| HID_MSC_RAW | 开始事件。 | 549| HID_MSC_SCAN | 扫描。 | 550| HID_MSC_TIMESTAMP | 时间戳。 | 551 552 553### Hid_RelAxes 554 555``` 556enum Hid_RelAxes 557``` 558 559**描述** 560 561相对坐标编码。 562 563**起始版本:** 11 564 565| 枚举值 | 描述 | 566| -------- | -------- | 567| HID_REL_X | X轴。 | 568| HID_REL_Y | Y轴。 | 569| HID_REL_Z | Z轴。| 570| HID_REL_RX | 右模拟摇杆的 X 轴。 | 571| HID_REL_RY | 右模拟摇杆的 Y 轴。 | 572| HID_REL_RZ | 右模拟摇杆的 Z 轴。 | 573| HID_REL_HWHEEL | 水平滚轮。 | 574| HID_REL_DIAL | 刻度。 | 575| HID_REL_WHEEL | 滚轮。 | 576| HID_REL_MISC | 其它。 | 577| HID_REL_RESERVED | 预留。 | 578| HID_REL_WHEEL_HI_RES | 高分辨率滚轮。 | 579| HID_REL_HWHEEL_HI_RES | 高分辨率水平滚轮。 | 580 581 582### Hid_ReportType 583 584``` 585enum Hid_ReportType 586``` 587 588**描述** 589 590报告(HID设备与主机之间交换的数据包)类型定义。 591 592**起始版本:** 18 593 594| 枚举值 | 描述 | 595| -------- | -------- | 596| HID_INPUT_REPORT | 输入报告。 | 597| HID_OUTPUT_REPORT | 输出报告。 | 598| HID_FEATURE_REPORT | 特性报告。 | 599 600 601### Hid_SynEvent 602 603``` 604enum Hid_SynEvent 605``` 606 607**描述** 608 609同步事件编码。 610 611**起始版本:** 11 612 613| 枚举值 | 描述 | 614| -------- | -------- | 615| HID_SYN_REPORT | 表示一个事件的结束。 | 616| HID_SYN_CONFIG | 表示配置同步。 | 617| HID_SYN_MT_REPORT | 表示多点触摸的ABS数据包结束。 | 618| HID_SYN_DROPPED | 表示该事件被丢弃。 | 619 620 621## 函数说明 622 623 624### OH_Hid_Close() 625 626``` 627int32_t OH_Hid_Close (Hid_DeviceHandle ** dev) 628``` 629 630**描述** 631 632关闭设备。 633 634**起始版本:** 18 635 636**参数:** 637 638| 名称 | 描述 | 639| -------- | -------- | 640| dev | 设备操作句柄。 | 641 642**Permission:** 643 644ohos.permission.ACCESS_DDK_HID 645 646**返回:** 647 648- HID_DDK_SUCCESS 操作成功。 649 650- HID_DDK_NO_PERM 权限校验失败。 651 652- HID_DDK_INIT_ERROR DDK未初始化。 653 654- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 655 656- HID_DDK_IO_ERROR I/O操作失败。 657 658- HID_DDK_INVALID_PARAMETER dev为空。 659 660 661### OH_Hid_CreateDevice() 662 663``` 664int32_t OH_Hid_CreateDevice (Hid_Device * hidDevice, Hid_EventProperties * hidEventProperties) 665``` 666 667**描述** 668 669创建设备。 670 671**起始版本:** 11 672 673**参数:** 674 675| 名称 | 描述 | 676| -------- | -------- | 677| hidDevice | 创建设备需要的基本信息,包括设备名、厂商ID、产品ID等。 | 678| hidEventProperties | 创建的设备关注的事件,包括事件类型、按键事件属性、绝对坐标事件属性、相对坐标事件属性等。 | 679 680**Permission:** 681 682ohos.permission.ACCESS_DDK_HID 683 684**返回:** 685 686- deviceID (一个非负的数字) 调用接口成功。 687 688- HID_DDK_NO_PERM 权限校验失败。 689 690- HID_DDK_INVALID_OPERATION 连接hid_ddk服务失败。 691 692- HID_DDK_INVALID_PARAMETER 参数校验失败。可能的原因:1. 入参hidDevice为空指针;2. 入参hidEventProperties为空指针;3. properties的长度超过7;4. hidEventTypes的长度超过5;5. hidKeys的长度超过100;6. hidAbs的长度超过26;7. hidRelBits的长度超过13;8. hidMiscellaneous的长度超过6。 693 694- HID_DDK_FAILURE 设备数量达到最大值200。 695 696 697### OH_Hid_DestroyDevice() 698 699``` 700int32_t OH_Hid_DestroyDevice (int32_t deviceId) 701``` 702 703**描述** 704 705销毁设备。 706 707**起始版本:** 11 708 709**参数:** 710 711| 名称 | 描述 | 712| -------- | -------- | 713| deviceId | 设备ID。 | 714 715**Permission:** 716 717ohos.permission.ACCESS_DDK_HID 718 719**返回:** 720 721- HID_DDK_SUCCESS 调用接口成功。 722 723- HID_DDK_NO_PERM 权限校验失败。 724 725- HID_DDK_INVALID_OPERATION 连接hid_ddk服务失败或者调用方不是设备的创建者。 726 727- HID_DDK_FAILURE 对应设备不存在。 728 729 730### OH_Hid_EmitEvent() 731 732``` 733int32_t OH_Hid_EmitEvent (int32_t deviceId, const Hid_EmitItem items[], uint16_t length) 734``` 735 736**描述** 737 738向指定设备发送事件列表。 739 740**起始版本:** 11 741 742**参数:** 743 744| 名称 | 描述 | 745| -------- | -------- | 746| deviceId | 设备ID。 | 747| items | 发送的事件列表,事件包括类型(取值来源事件类型Hid_EventType)、编码(取值来源同步事件编码Hid_SynEvent、键值编码Hid_KeyCode、按钮编码HidBtnCode、 绝对坐标编码Hid_AbsAxes、相对坐标编码Hid_RelAxes、其它类型的输入事件编码Hid_MscEvent)、值(根据实际设备输入决定)。 | 748| length | 发送事件列表长度(一次发送事件个数)。 | 749 750**Permission:** 751 752ohos.permission.ACCESS_DDK_HID 753 754**返回:** 755 756- HID_DDK_SUCCESS 调用接口成功。 757 758- HID_DDK_NO_PERM 权限校验失败。 759 760- HID_DDK_INVALID_OPERATION 连接hid_ddk服务失败或者调用方不是设备的创建者。 761 762- HID_DDK_INVALID_PARAMETER 参数校验失败。可能的原因: 1. 设备ID小于0;2. 入参length长度超过7;3. 入参items为空指针。 763 764- HID_DDK_NULL_PTR 对应设备的注入为空。 765 766- HID_DDK_FAILURE 对应设备不存在。 767 768 769### OH_Hid_GetPhysicalAddress() 770 771``` 772int32_t OH_Hid_GetPhysicalAddress (Hid_DeviceHandle * dev, char * data, uint32_t bufSize) 773``` 774 775**描述** 776 777获取设备物理地址。 778 779**起始版本:** 18 780 781**参数:** 782 783| 名称 | 描述 | 784| -------- | -------- | 785| dev | 设备操作句柄。 | 786| data | 存放读取数据的缓冲区。 | 787| bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 | 788 789**Permission:** 790 791ohos.permission.ACCESS_DDK_HID 792 793**返回:** 794 795- HID_DDK_SUCCESS 操作成功。 796 797- HID_DDK_NO_PERM 权限校验失败。 798 799- HID_DDK_INVALID_PARAMETER 参数校验失败。可能原因:1. dev为空;2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 HID_DDK_INIT_ERROR DDK未初始化。 800 801- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 802 803- HID_DDK_MEMORY_ERROR 内存数据拷贝失败。 804 805- HID_DDK_IO_ERROR I/O操作失败。 806 807- HID_DDK_INVALID_OPERATION 不支持此操作。 808 809 810### OH_Hid_GetRawInfo() 811 812``` 813int32_t OH_Hid_GetRawInfo (Hid_DeviceHandle * dev, Hid_RawDevInfo * rawDevInfo) 814``` 815 816**描述** 817 818获取设备原始信息。 819 820**起始版本:** 18 821 822**参数:** 823 824| 名称 | 描述 | 825| -------- | -------- | 826| dev | 设备操作句柄。 | 827| rawDevInfo | 设备原始信息,包含供应商ID、产品ID和总线类型。 | 828 829**Permission:** 830 831ohos.permission.ACCESS_DDK_HID 832 833**返回:** 834 835- HID_DDK_SUCCESS 操作成功。 836 837- HID_DDK_NO_PERM 权限校验失败。 838 839- HID_DDK_INVALID_PARAMETER 参数校验失败。可能原因:1. dev为空;2. rawDevInfo为空。 840 841- HID_DDK_INIT_ERROR DDK未初始化。 842 843- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 844 845- HID_DDK_IO_ERROR I/O操作失败。 846 847- HID_DDK_INVALID_OPERATION 不支持此操作。 848 849 850### OH_Hid_GetRawName() 851 852``` 853int32_t OH_Hid_GetRawName (Hid_DeviceHandle * dev, char * data, uint32_t bufSize) 854``` 855 856**描述** 857 858获取设备原始名称。 859 860**起始版本:** 18 861 862**参数:** 863 864| 名称 | 描述 | 865| -------- | -------- | 866| dev | 设备操作句柄。 | 867| data | 存放读取数据的缓冲区。 | 868| bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 | 869 870**Permission:** 871 872ohos.permission.ACCESS_DDK_HID 873 874**返回:** 875 876- HID_DDK_SUCCESS 操作成功。 877 878- HID_DDK_NO_PERM 权限校验失败。 879 880- HID_DDK_INVALID_PARAMETER 参数校验失败。可能原因:1. dev为空;2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 HID_DDK_INIT_ERROR DDK未初始化。 881 882- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 883 884- HID_DDK_MEMORY_ERROR 内存数据拷贝失败。 885 886- HID_DDK_IO_ERROR I/O操作失败。 887 888- HID_DDK_INVALID_OPERATION 不支持此操作。 889 890 891### OH_Hid_GetRawUniqueId() 892 893``` 894int32_t OH_Hid_GetRawUniqueId (Hid_DeviceHandle * dev, uint8_t * data, uint32_t bufSize) 895``` 896 897**描述** 898 899获取设备原始唯一标识符。 900 901**起始版本:** 18 902 903**参数:** 904 905| 名称 | 描述 | 906| -------- | -------- | 907| dev | 设备操作句柄。 | 908| data | 存放读取数据的缓冲区。 | 909| bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 | 910 911**Permission:** 912 913ohos.permission.ACCESS_DDK_HID 914 915**返回:** 916 917- HID_DDK_SUCCESS 操作成功。 918 919- HID_DDK_NO_PERM 权限校验失败。 920 921- HID_DDK_INVALID_PARAMETER 参数校验失败。可能原因:1. dev为空;2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 HID_DDK_INIT_ERROR DDK未初始化。 922 923- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 924 925- HID_DDK_MEMORY_ERROR 内存数据拷贝失败。 926 927- HID_DDK_IO_ERROR I/O操作失败。 928 929- HID_DDK_INVALID_OPERATION 不支持此操作。 930 931 932### OH_Hid_GetReport() 933 934``` 935int32_t OH_Hid_GetReport (Hid_DeviceHandle * dev, Hid_ReportType reportType, uint8_t * data, uint32_t bufSize) 936``` 937 938**描述** 939 940获取设备报告。 941 942**起始版本:** 18 943 944**参数:** 945 946| 名称 | 描述 | 947| -------- | -------- | 948| dev | 设备操作句柄。 | 949| reportType | 报告类型。 | 950| data | 存放读取数据的缓冲区。 | 951| bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 | 952 953**Permission:** 954 955ohos.permission.ACCESS_DDK_HID 956 957**返回:** 958 959- HID_DDK_SUCCESS 操作成功。 960 961- HID_DDK_NO_PERM 权限校验失败。 962 963- HID_DDK_INVALID_PARAMETER 参数校验失败。可能原因:1. dev为空;2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 964 965- HID_DDK_INIT_ERROR DDK未初始化。 966 967- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 968 969- HID_DDK_MEMORY_ERROR 内存数据拷贝失败。 970 971- HID_DDK_IO_ERROR I/O操作失败。 972 973- HID_DDK_INVALID_OPERATION 不支持此操作。 974 975 976### OH_Hid_GetReportDescriptor() 977 978``` 979int32_t OH_Hid_GetReportDescriptor (Hid_DeviceHandle * dev, uint8_t * buf, uint32_t bufSize, uint32_t * bytesRead) 980``` 981 982**描述** 983 984获取设备报告描述符。 985 986**起始版本:** 18 987 988**参数:** 989 990| 名称 | 描述 | 991| -------- | -------- | 992| dev | 设备操作句柄。 | 993| buf | 存放描述符的缓冲区。 | 994| bufSize | 缓冲区的字节大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 | 995| bytesRead | 读取的字节数。 | 996 997**Permission:** 998 999ohos.permission.ACCESS_DDK_HID 1000 1001**返回:** 1002 1003- HID_DDK_SUCCESS 操作成功。 1004 1005- HID_DDK_NO_PERM 权限校验失败。 1006 1007- HID_DDK_INVALID_PARAMETER 参数校验失败。可能原因:1. dev为空;2. buf为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size);5. bytesRead为空。 1008 1009- HID_DDK_INIT_ERROR DDK未初始化。 1010 1011- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 1012 1013- HID_DDK_MEMORY_ERROR 内存数据拷贝失败。 1014 1015- HID_DDK_IO_ERROR I/O操作失败。 1016 1017- HID_DDK_INVALID_OPERATION 不支持此操作。 1018 1019 1020### OH_Hid_Init() 1021 1022``` 1023int32_t OH_Hid_Init (void) 1024``` 1025 1026**描述** 1027 1028初始化HID DDK。 1029 1030**起始版本:** 18 1031 1032**Permission:** 1033 1034ohos.permission.ACCESS_DDK_HID 1035 1036**返回:** 1037 1038- HID_DDK_SUCCESS 操作成功。 1039 1040- HID_DDK_NO_PERM 权限校验失败。 1041 1042- HID_DDK_INIT_ERROR 初始化DDK失败。 1043 1044- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 1045 1046 1047### OH_Hid_Open() 1048 1049``` 1050int32_t OH_Hid_Open (uint64_t deviceId, uint8_t interfaceIndex, Hid_DeviceHandle ** dev) 1051``` 1052 1053**描述** 1054 1055打开deviceId和interfaceIndex指定的设备。 1056 1057**起始版本:** 18 1058 1059**参数:** 1060 1061| 名称 | 描述 | 1062| -------- | -------- | 1063| deviceId | 操作设备的ID。 | 1064| interfaceIndex | 接口索引,对应HID设备的接口。 | 1065| dev | 设备操作句柄。 | 1066 1067**Permission:** 1068 1069ohos.permission.ACCESS_DDK_HID 1070 1071**返回:** 1072 1073- HID_DDK_SUCCESS 操作成功。 1074 1075- HID_DDK_NO_PERM 权限校验失败。 1076 1077- HID_DDK_INIT_ERROR DDK未初始化。 1078 1079- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 1080 1081- HID_DDK_MEMORY_ERROR dev内存申请失败。 1082 1083- HID_DDK_IO_ERROR I/O操作失败。 1084 1085- HID_DDK_INVALID_PARAMETER dev为空。 1086 1087- HID_DDK_DEVICE_NOT_FOUND 根据deviceId和interfaceIndex找不到设备。 1088 1089 1090### OH_Hid_Read() 1091 1092``` 1093int32_t OH_Hid_Read (Hid_DeviceHandle * dev, uint8_t * data, uint32_t bufSize, uint32_t * bytesRead) 1094``` 1095 1096**描述** 1097 1098从设备读取报告,默认为阻塞模式(阻塞等待直到有数据可读取),可以调用[OH_Hid_SetNonBlocking](#oh_hid_setnonblocking)改变模式。 1099 1100**起始版本:** 18 1101 1102**参数:** 1103 1104| 名称 | 描述 | 1105| -------- | -------- | 1106| dev | 设备操作句柄。 | 1107| data | 存放读取数据的缓冲区。 | 1108| bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 | 1109| bytesRead | 读取的字节数。 | 1110 1111**Permission:** 1112 1113ohos.permission.ACCESS_DDK_HID 1114 1115**返回:** 1116 1117- HID_DDK_SUCCESS 操作成功。 1118 1119- HID_DDK_NO_PERM 权限校验失败。 1120 1121- HID_DDK_INVALID_PARAMETER 参数校验失败。可能原因:1. dev为空;2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size);5. bytesRead为空。 1122 1123- HID_DDK_INIT_ERROR DDK未初始化。 1124 1125- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 1126 1127- HID_DDK_MEMORY_ERROR 内存数据拷贝失败。 1128 1129- HID_DDK_IO_ERROR I/O操作失败。 1130 1131- HID_DDK_TIMEOUT 读取超时。 1132 1133 1134### OH_Hid_ReadTimeout() 1135 1136``` 1137int32_t OH_Hid_ReadTimeout (Hid_DeviceHandle * dev, uint8_t * data, uint32_t bufSize, int timeout, uint32_t * bytesRead) 1138``` 1139 1140**描述** 1141 1142在指定的超时时间内从设备读取报告。 1143 1144**起始版本:** 18 1145 1146**参数:** 1147 1148| 名称 | 描述 | 1149| -------- | -------- | 1150| dev | 设备操作句柄。 | 1151| data | 存放读取数据的缓冲区。 | 1152| bufSize | 存放读取数据的缓冲区大小,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 | 1153| timeout | 超时时间(毫秒)或-1表示阻塞等待。 | 1154| bytesRead | 读取的字节数。 | 1155 1156**Permission:** 1157 1158ohos.permission.ACCESS_DDK_HID 1159 1160**返回:** 1161 1162- HID_DDK_SUCCESS 操作成功。 1163 1164- HID_DDK_NO_PERM 权限校验失败。 1165 1166- HID_DDK_INVALID_PARAMETER 参数校验失败。可能原因:1. dev为空;2. data为空;3. bufSize为0;4. bufSize超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size);5. bytesRead为空。 1167 1168- HID_DDK_INIT_ERROR DDK未初始化。 1169 1170- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 1171 1172- HID_DDK_MEMORY_ERROR 内存数据拷贝失败。 1173 1174- HID_DDK_IO_ERROR I/O操作失败。 1175 1176- HID_DDK_TIMEOUT 读取超时。 1177 1178 1179### OH_Hid_Release() 1180 1181``` 1182int32_t OH_Hid_Release (void) 1183``` 1184 1185**描述** 1186 1187释放HID DDK。 1188 1189**起始版本:** 18 1190 1191**Permission:** 1192 1193ohos.permission.ACCESS_DDK_HID 1194 1195**返回:** 1196 1197- HID_DDK_SUCCESS 操作成功。 1198 1199- HID_DDK_NO_PERM 权限校验失败。 1200 1201- HID_DDK_INIT_ERROR DDK未初始化。 1202 1203- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 1204 1205 1206### OH_Hid_SendReport() 1207 1208``` 1209int32_t OH_Hid_SendReport (Hid_DeviceHandle * dev, Hid_ReportType reportType, const uint8_t * data, uint32_t length) 1210``` 1211 1212**描述** 1213 1214向设备发送报告。 1215 1216**起始版本:** 18 1217 1218**参数:** 1219 1220| 名称 | 描述 | 1221| -------- | -------- | 1222| dev | 设备操作句柄。 | 1223| reportType | 报告类型。 | 1224| data | 待发送的数据。 | 1225| length | 发送数据的字节长度,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 | 1226 1227**Permission:** 1228 1229ohos.permission.ACCESS_DDK_HID 1230 1231**返回:** 1232 1233- HID_DDK_SUCCESS 操作成功。 1234 1235- HID_DDK_NO_PERM 权限校验失败。 1236 1237- HID_DDK_INVALID_PARAMETER 参数校验失败。可能原因:1. dev为空;2. data为空;3. length为0;4. length超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 1238 1239- HID_DDK_INIT_ERROR DDK未初始化。 1240 1241- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 1242 1243- HID_DDK_IO_ERROR I/O操作失败。 1244 1245- HID_DDK_INVALID_OPERATION 不支持此操作。 1246 1247 1248### OH_Hid_SetNonBlocking() 1249 1250``` 1251int32_t OH_Hid_SetNonBlocking (Hid_DeviceHandle * dev, int nonBlock) 1252``` 1253 1254**描述** 1255 1256设置设备读取模式为非阻塞。 1257 1258**起始版本:** 18 1259 1260**参数:** 1261 1262| 名称 | 描述 | 1263| -------- | -------- | 1264| dev | 设备操作句柄。 | 1265| nonBlock | 是否启用非阻塞模式读取数据。<br/>- 1:启用非阻塞模式,调用[OH_Hid_Read](#oh_hid_read)接口时,如果设备有可读的数据,读取并返回HID_DDK_SUCCESS,如果设备没有数据可读,则返回HID_DDK_TIMEOUT。<br/>- 0:禁用非阻塞模式。 | 1266 1267**Permission:** 1268 1269ohos.permission.ACCESS_DDK_HID 1270 1271**返回:** 1272 1273- HID_DDK_SUCCESS 操作成功。 1274 1275- HID_DDK_NO_PERM 权限校验失败。 1276 1277- HID_DDK_INIT_ERROR DDK未初始化。 1278 1279- HID_DDK_INVALID_PARAMETER 参数校验失败。可能原因:1. dev为空;2. nonBlock不是1或0。 1280 1281- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 1282 1283 1284### OH_Hid_Write() 1285 1286``` 1287int32_t OH_Hid_Write (Hid_DeviceHandle * dev, uint8_t * data, uint32_t length, uint32_t * bytesWritten) 1288``` 1289 1290**描述** 1291 1292向设备写入报告。 1293 1294**起始版本:** 18 1295 1296**参数:** 1297 1298| 名称 | 描述 | 1299| -------- | -------- | 1300| dev | 设备操作句柄。 | 1301| data | 待写入的数据。 | 1302| length | 写入数据的字节长度,最大不超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)。 | 1303| bytesWritten | 实际写入的数据字节数。 | 1304 1305**Permission:** 1306 1307ohos.permission.ACCESS_DDK_HID 1308 1309**返回:** 1310 1311- HID_DDK_SUCCESS 操作成功。 1312 1313- HID_DDK_NO_PERM 权限校验失败。 1314 1315- HID_DDK_INVALID_PARAMETER 参数校验失败。可能原因:1. dev为空;2. data为空;3. length为0;4. length超过[HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size);5. bytesWritten为空。 1316 1317- HID_DDK_INIT_ERROR DDK未初始化。 1318 1319- HID_DDK_SERVICE_ERROR 与DDK服务通信失败。 1320 1321- HID_DDK_IO_ERROR I/O操作失败。 1322 1323 1324## 变量说明 1325 1326 1327### bustype 1328 1329``` 1330uint16_t Hid_Device::bustype 1331``` 1332 1333**描述** 1334 1335总线类型。 1336 1337 1338### busType 1339 1340``` 1341uint32_t Hid_RawDevInfo::busType 1342``` 1343 1344**描述** 1345 1346总线类型。 1347 1348 1349### code 1350 1351``` 1352uint16_t Hid_EmitItem::code 1353``` 1354 1355**描述** 1356 1357事件编码。 1358 1359 1360### deviceName 1361 1362``` 1363const char* Hid_Device::deviceName 1364``` 1365 1366**描述** 1367 1368设备名称。 1369 1370 1371### hidAbs 1372 1373``` 1374struct Hid_AbsAxesArray Hid_EventProperties::hidAbs 1375``` 1376 1377**描述** 1378 1379绝对坐标属性编码数组。 1380 1381 1382### hidAbsAxes 1383 1384``` 1385Hid_AbsAxes* Hid_AbsAxesArray::hidAbsAxes 1386``` 1387 1388**描述** 1389 1390绝对坐标属性编码。 1391 1392 1393### hidAbsFlat 1394 1395``` 1396int32_t Hid_EventProperties::hidAbsFlat[64] 1397``` 1398 1399**描述** 1400 1401绝对坐标属性固定值。 1402 1403 1404### hidAbsFuzz 1405 1406``` 1407int32_t Hid_EventProperties::hidAbsFuzz[64] 1408``` 1409 1410**描述** 1411 1412绝对坐标属性模糊值。 1413 1414 1415### hidAbsMax 1416 1417``` 1418int32_t Hid_EventProperties::hidAbsMax[64] 1419``` 1420 1421**描述** 1422 1423绝对坐标属性最大值。 1424 1425 1426### hidAbsMin 1427 1428``` 1429int32_t Hid_EventProperties::hidAbsMin[64] 1430``` 1431 1432**描述** 1433 1434绝对坐标属性最小值。 1435 1436 1437### hidEventType 1438 1439``` 1440Hid_EventType* Hid_EventTypeArray::hidEventType 1441``` 1442 1443**描述** 1444 1445事件类型编码。 1446 1447 1448### hidEventTypes 1449 1450``` 1451struct Hid_EventTypeArray Hid_EventProperties::hidEventTypes 1452``` 1453 1454**描述** 1455 1456事件类型属性编码数组。 1457 1458 1459### hidKeyCode 1460 1461``` 1462Hid_KeyCode* Hid_KeyCodeArray::hidKeyCode 1463``` 1464 1465**描述** 1466 1467键值编码。 1468 1469 1470### hidKeys 1471 1472``` 1473struct Hid_KeyCodeArray Hid_EventProperties::hidKeys 1474``` 1475 1476**描述** 1477 1478键值属性编码数组。 1479 1480 1481### hidMiscellaneous 1482 1483``` 1484struct Hid_MscEventArray Hid_EventProperties::hidMiscellaneous 1485``` 1486 1487**描述** 1488 1489其它特殊事件属性编码数组。 1490 1491 1492### hidMscEvent 1493 1494``` 1495Hid_MscEvent* Hid_MscEventArray::hidMscEvent 1496``` 1497 1498**描述** 1499 1500其它特殊事件属性编码。 1501 1502 1503### hidRelAxes 1504 1505``` 1506Hid_RelAxes* Hid_RelAxesArray::hidRelAxes 1507``` 1508 1509**描述** 1510 1511相对坐标属性编码。 1512 1513 1514### hidRelBits 1515 1516``` 1517struct Hid_RelAxesArray Hid_EventProperties::hidRelBits 1518``` 1519 1520**描述** 1521 1522相对坐标属性编码数组。 1523 1524 1525### length [1/5] 1526 1527``` 1528uint16_t Hid_EventTypeArray::length 1529``` 1530 1531**描述** 1532 1533数组长度。 1534 1535 1536### length [2/5] 1537 1538``` 1539uint16_t Hid_KeyCodeArray::length 1540``` 1541 1542**描述** 1543 1544数组长度。 1545 1546 1547### length [3/5] 1548 1549``` 1550uint16_t Hid_AbsAxesArray::length 1551``` 1552 1553**描述** 1554 1555数组长度。 1556 1557 1558### length [4/5] 1559 1560``` 1561uint16_t Hid_RelAxesArray::length 1562``` 1563 1564**描述** 1565 1566数组长度。 1567 1568 1569### length [5/5] 1570 1571``` 1572uint16_t Hid_MscEventArray::length 1573``` 1574 1575**描述** 1576 1577数组长度。 1578 1579 1580### product 1581 1582``` 1583uint16_t Hid_RawDevInfo::product 1584``` 1585 1586**描述** 1587 1588产品ID。 1589 1590 1591### productId 1592 1593``` 1594uint16_t Hid_Device::productId 1595``` 1596 1597**描述** 1598 1599产品ID。 1600 1601 1602### properties 1603 1604``` 1605Hid_DeviceProp* Hid_Device::properties 1606``` 1607 1608**描述** 1609 1610设备特性。 1611 1612 1613### propLength 1614 1615``` 1616uint16_t Hid_Device::propLength 1617``` 1618 1619**描述** 1620 1621设备特性数量。 1622 1623 1624### type 1625 1626``` 1627uint16_t Hid_EmitItem::type 1628``` 1629 1630**描述** 1631 1632事件类型。 1633 1634 1635### value 1636 1637``` 1638uint32_t Hid_EmitItem::value 1639``` 1640 1641**描述** 1642 1643事件值。 1644 1645 1646### vendor 1647 1648``` 1649uint16_t Hid_RawDevInfo::vendor 1650``` 1651 1652**描述** 1653 1654供应商ID。 1655 1656 1657### vendorId 1658 1659``` 1660uint16_t Hid_Device::vendorId 1661``` 1662 1663**描述** 1664 1665厂商ID。 1666 1667 1668### version 1669 1670``` 1671uint16_t Hid_Device::version 1672``` 1673 1674**描述** 1675 1676版本号。 1677