• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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/>引用文件:&lt;hid/hid_ddk_api.h&gt;<br/>库: libhid.z.so |
21| [hid_ddk_types.h](hid__ddk__types_8h.md) | 提供HID DDK中的枚举变量与结构体定义。<br/>引用文件:&lt;hid/hid_ddk_types.h&gt;<br/>库: libhid.z.so |
22
23
24### 结构体
25
26| 名称 | 描述 |
27| -------- | -------- |
28| struct&nbsp;&nbsp;[Hid_EmitItem](_hid___emit_item.md) | 事件信息。 |
29| struct&nbsp;&nbsp;[Hid_Device](_hid___device.md) | 设备基本信息。 |
30| struct&nbsp;&nbsp;[Hid_EventTypeArray](_hid___event_type_array.md) | 事件类型编码数组。 |
31| struct&nbsp;&nbsp;[Hid_KeyCodeArray](_hid___key_code_array.md) | 键值属性数组。 |
32| struct&nbsp;&nbsp;[Hid_AbsAxesArray](_hid___abs_axes_array.md) | 绝对坐标属性数组。 |
33| struct&nbsp;&nbsp;[Hid_RelAxesArray](_hid___rel_axes_array.md) | 相对坐标属性数组。 |
34| struct&nbsp;&nbsp;[Hid_MscEventArray](_hid___msc_event_array.md) | 其它特殊事件属性数组。 |
35| struct&nbsp;&nbsp;[Hid_EventProperties](_hid___event_properties.md) | 设备关注事件属性。 |
36| struct&nbsp;&nbsp;[Hid_RawDevInfo](_hid___raw_dev_info.md) | 原始设备信息定义。 |
37
38
39### 宏定义
40
41| 名称 | 描述 |
42| -------- | -------- |
43| [HID_MAX_REPORT_BUFFER_SIZE](#hid_max_report_buffer_size)&nbsp;&nbsp;&nbsp;(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