# @ohos.multimodalInput.inputDevice (Input Device) The **inputDevice** module allows you to listen for hot swap events of input devices and query information about input devices. > **NOTE** > > The initial APIs of this module are supported since API version 8. Newly added APIs will be marked with a superscript to indicate their earliest API version. ## Modules to Import ```js import inputDevice from '@ohos.multimodalInput.inputDevice'; ``` ## inputDevice.getDeviceList9+ getDeviceList(callback: AsyncCallback<Array<number>>): void Obtains the IDs of all input devices. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | callback | AsyncCallback<Array<number>> | Yes | Callback used to return the result.| **Example** ```js try { inputDevice.getDeviceList((error: Error, ids: Array) => { if (error) { console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Device id list: ${JSON.stringify(ids)}`); }); } catch (error) { console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.getDeviceList9+ getDeviceList(): Promise<Array<number>> Obtains the IDs of all input devices. This API uses a promise to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Return value** | Parameters | Description | | ---------------------------------- | ------------------------------------------- | | Promise<Array<number>> | Promise used to return the result.| **Example** ```js try { inputDevice.getDeviceList().then((ids: Array) => { console.log(`Device id list: ${JSON.stringify(ids)}`); }); } catch (error) { console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.getDeviceInfo9+ getDeviceInfo(deviceId: number, callback: AsyncCallback<InputDeviceData>): void Obtains information about an input device. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | -------------------------------------------------------- | ---- | --------------------------------------- | | deviceId | number | Yes | ID of the input device. | | callback | AsyncCallback<[InputDeviceData](#inputdevicedata)> | Yes | Callback used to return the result, which is an **InputDeviceData** object.| **Example** ```js // Obtain the name of the device whose ID is 1. try { inputDevice.getDeviceInfo(1, (error: Error, deviceData: inputDevice.InputDeviceData) => { if (error) { console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Device info: ${JSON.stringify(deviceData)}`); }); } catch (error) { console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.getDeviceInfo9+ getDeviceInfo(deviceId: number): Promise<InputDeviceData> Obtains information about an input device. This API uses a promise to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ---------------------- | | deviceId | number | Yes | ID of the input device.| **Return value** | Parameters | Description | | -------------------------------------------------- | ------------------------------- | | Promise<[InputDeviceData](#inputdevicedata)> | Promise used to return the result.| **Example** ```js // Obtain the name of the device whose ID is 1. try { inputDevice.getDeviceInfo(1).then((deviceData: inputDevice.InputDeviceData) => { console.log(`Device info: ${JSON.stringify(deviceData)}`); }); } catch (error) { console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.getDeviceInfoSync10+ getDeviceInfoSync(deviceId: number): InputDeviceData Obtains information about the specified input device. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ---------------------- | | deviceId | number | Yes | ID of the input device.| **Return value** | Parameters | Description | | -------------------------------------------------- | ------------------------------- | | [InputDeviceData](#inputdevicedata) | Information about the input device.| **Example** ```js // Obtain the name of the device whose ID is 1. try { let deviceData: inputDevice.InputDeviceData = inputDevice.getDeviceInfoSync(1) console.log(`Device info: ${JSON.stringify(deviceData)}`) } catch (error) { console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`) } ``` ## inputDevice.on9+ on(type: "change", listener: Callback<DeviceListener>): void Enables listening for device hot swap events. When performing this operation, you need to connect your device to an external device, for example, mouse or keyboard. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory | Description | | -------- | ---------------------------------------- | ---- | ----------- | | type | string | Yes | Event type of the input device. | | listener | Callback<[DeviceListener](#devicelistener9)> | Yes | Listener for events of the input device.| **Example** ```js let isPhysicalKeyboardExist = true; try { inputDevice.on("change", (data: inputDevice.DeviceListener) => { console.log(`Device event info: ${JSON.stringify(data)}`); inputDevice.getKeyboardType(data.deviceId, (err: Error, type: inputDevice.KeyboardType) => { console.log("The keyboard type is: " + type); if (type == inputDevice.KeyboardType.ALPHABETIC_KEYBOARD && data.type == 'add') { // The physical keyboard is connected. isPhysicalKeyboardExist = true; } else if (type == inputDevice.KeyboardType.ALPHABETIC_KEYBOARD && data.type == 'remove') { // The physical keyboard is disconnected. isPhysicalKeyboardExist = false; } }); }); // Check whether the soft keyboard is open based on the value of isPhysicalKeyboardExist. } catch (error) { console.log(`Get device info failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.off9+ off(type: "change", listener?: Callback<DeviceListener>): void Disables listening for device hot swap events. This API is called before the application exits. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory | Description | | -------- | ---------------------------------------- | ---- | ----------- | | type | string | Yes | Event type of the input device. | | listener | Callback<[DeviceListener](#devicelistener9)> | No | Listener for events of the input device.| **Example** ```js function callback(data: inputDevice.DeviceListener) { console.log(`Report device event info: ${JSON.stringify(data, [`type`, `deviceId`])}`); }; try { inputDevice.on("change", callback); } catch (error) { console.log(`Listen device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } // Disable this listener. try { inputDevice.off("change", callback); } catch (error) { console.log(`Cancel listening device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } // Disable all listeners. try { inputDevice.off("change"); } catch (error) { console.log(`Cancel all listening device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.getDeviceIds(deprecated) getDeviceIds(callback: AsyncCallback<Array<number>>): void Obtains the IDs of all input devices. This API uses an asynchronous callback to return the result. > This API is deprecated since API version 9. You are advised to use [inputDevice.getDeviceList](#inputdevicegetdevicelist9) instead. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | ---------------------------------------- | ---- | ---------------------------------------- | | callback | AsyncCallback<Array<number>> | Yes | Callback used to return the result.| **Example** ```js inputDevice.getDeviceIds((error: Error, ids: Array) => { if (error) { console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Device id list: ${JSON.stringify(ids)}`); }); ``` ## inputDevice.getDeviceIds(deprecated) getDeviceIds(): Promise<Array<number>> Obtains the IDs of all input devices. This API uses a promise to return the result. > This API is deprecated since API version 9. You are advised to use [inputDevice.getDeviceList](#inputdevicegetdevicelist9) instead. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Return value** | Parameters | Description | | ---------------------------------- | ------------------------------------------- | | Promise<Array<number>> | Promise used to return the result.| **Example** ```js inputDevice.getDeviceIds().then((ids: Array) => { console.log(`Device id list: ${JSON.stringify(ids)}`); }); ``` ## inputDevice.getDevice(deprecated) getDevice(deviceId: number, callback: AsyncCallback<InputDeviceData>): void Obtains information about an input device. This API uses an asynchronous callback to return the result. > This API is deprecated since API version 9. You are advised to use [inputDevice.getDeviceInfo](#inputdevicegetdeviceinfo9) instead. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | -------------------------------------------------------- | ---- | -------------------------------- | | deviceId | number | Yes | ID of the input device. | | callback | AsyncCallback<[InputDeviceData](#inputdevicedata)> | Yes | Callback used to return the result, which is an **InputDeviceData** object.| **Example** ```js // Obtain the name of the device whose ID is 1. inputDevice.getDevice(1, (error: Error, deviceData: inputDevice.InputDeviceData) => { if (error) { console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Device info: ${JSON.stringify(deviceData)}`); }); ``` ## inputDevice.getDevice(deprecated) getDevice(deviceId: number): Promise<InputDeviceData> Obtains information about an input device. This API uses a promise to return the result. > This API is deprecated since API version 9. You are advised to use [inputDevice.getDeviceInfo](#inputdevicegetdeviceinfo9) instead. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ------------ | | deviceId | number | Yes | ID of the input device.| **Return value** | Parameters | Description | | -------------------------------------------------- | ----------------------------------- | | Promise<[InputDeviceData](#inputdevicedata)> | Promise used to return the result.| **Example** ```js // Obtain the name of the device whose ID is 1. inputDevice.getDevice(1).then((deviceData: inputDevice.InputDeviceData) => { console.log(`Device info: ${JSON.stringify(deviceData)}`); }); ``` ## inputDevice.supportKeys9+ supportKeys(deviceId: number, keys: Array<KeyCode>, callback: AsyncCallback <Array<boolean>>): void Obtains the keycodes supported by the input device. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | ----------------------------------------- | ---- | ------------------------------------------------------ | | deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| | keys | Array[<KeyCode>](js-apis-keycode.md#keycode) | Yes | Keycodes to be queried. A maximum of five keycodes can be specified. | | callback | AsyncCallback<Array<boolean>> | Yes | Callback used to return the result. | **Example** ```js // Check whether the input device whose ID is 1 supports keycodes 17, 22, and 2055. try { inputDevice.supportKeys(1, [17, 22, 2055], (error: Error, supportResult: Array) => { console.log(`Query result: ${JSON.stringify(supportResult)}`); }); } catch (error) { console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.supportKeys9+ supportKeys(deviceId: number, keys: Array<KeyCode>): Promise<Array<boolean>> Obtains the keycodes supported by the input device. This API uses a promise to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | -------------------- | ---- | ------------------------------------------------------ | | deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| | keys | Array[<KeyCode>](js-apis-keycode.md#keycode) | Yes | Keycodes to be queried. A maximum of five keycodes can be specified. | **Return value** | Parameters | Description | | ----------------------------------- | ------------------------------- | | Promise<Array<boolean>> | Promise used to return the result.| **Example** ```js // Check whether the input device whose ID is 1 supports keycodes 17, 22, and 2055. try { inputDevice.supportKeys(1, [17, 22, 2055]).then((supportResult: Array) => { console.log(`Query result: ${JSON.stringify(supportResult)}`); }); } catch (error) { console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.supportKeysSync10+ supportKeysSync(deviceId: number, keys: Array<KeyCode>): Array<boolean> Checks whether the input device supports the specified keycode value. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | -------------------- | ---- | ------------------------------------------------------ | | deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| | keys | Array[<KeyCode>](js-apis-keycode.md#keycode) | Yes | Keycodes to be queried. A maximum of five keycodes can be specified. | **Return value** | Parameters | Description | | ----------------------------------- | ------------------------------- | | Array<boolean> | Result indicating whether the input device supports the keycode value. The value **true** indicates yes, and the value **false** indicates no.| **Example** ```js // Check whether the input device whose ID is 1 supports keycodes 17, 22, and 2055. try { let supportResult: Array = inputDevice.supportKeysSync(1, [17, 22, 2055]) console.log(`Query result: ${JSON.stringify(supportResult)}`) } catch (error) { console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`) } ``` ## inputDevice.getKeyboardType9+ getKeyboardType(deviceId: number, callback: AsyncCallback<KeyboardType>): void Obtains the keyboard type of an input device. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | --------------------------------------------------- | ---- | ------------------------------------------------------------ | | deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| | callback | AsyncCallback<[KeyboardType](#keyboardtype9)> | Yes | Callback used to return the result. | **Example** ```js // Query the keyboard type of the input device whose ID is 1. try { inputDevice.getKeyboardType(1, (error: Error, type: Number) => { if (error) { console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Keyboard type: ${JSON.stringify(type)}`); }); } catch (error) { console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.getKeyboardType9+ getKeyboardType(deviceId: number): Promise<KeyboardType> Obtains the keyboard type of an input device. This API uses a promise to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ------------------------------------------------------------ | | deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| **Return value** | Parameters | Description | | --------------------------------------------- | ------------------------------- | | Promise<[KeyboardType](#keyboardtype9)> | Promise used to return the result.| **Example** ```js // Query the keyboard type of the input device whose ID is 1. try { inputDevice.getKeyboardType(1).then((type: Number) => { console.log(`Keyboard type: ${JSON.stringify(type)}`); }); } catch (error) { console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.getKeyboardTypeSync10+ getKeyboardTypeSync(deviceId: number): KeyboardType Obtains the keyboard type of the input device. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ------------------------------------------------------------ | | deviceId | number | Yes | Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| **Return value** | Parameters | Description | | --------------------------------------------- | ------------------------------- | | [KeyboardType](#keyboardtype9) | Keyboard type.| **Example** ```js // Query the keyboard type of the input device whose ID is 1. try { let type: number = inputDevice.getKeyboardTypeSync(1) console.log(`Keyboard type: ${JSON.stringify(type)}`) } catch (error) { console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`) } ``` ## inputDevice.setKeyboardRepeatDelay10+ setKeyboardRepeatDelay(delay: number, callback: AsyncCallback<void>): void Sets the keyboard repeat delay. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **System API**: This is a system API. **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ------------------------------------------------------------ | | delay | number | Yes | Keyboard repeat delay, in ms. The value range is [300, 1000] and the default value is **500**.| | callback | AsyncCallback<void> | Yes | Callback used to return the result.| **Example** ```js try { inputDevice.setKeyboardRepeatDelay(350, (error: Error) => { if (error) { console.log(`Set keyboard repeat delay failed, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Set keyboard repeat delay success`); }); } catch (error) { console.log(`Set keyboard repeat delay failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.setKeyboardRepeatDelay10+ setKeyboardRepeatDelay(delay: number): Promise<void> Sets the keyboard repeat delay. This API uses a promise to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **System API**: This is a system API. **Parameters** | Name | Type | Mandatory | Description | | ----- | ------ | ---- | ----------------------------------- | | delay | number | Yes | Keyboard repeat delay, in ms. The value range is [300, 1000] and the default value is **500**.| **Return value** | Parameters | Description | | ------------------- | ---------------- | | Promise<void> | Promise used to return the result.| **Example** ```js try { inputDevice.setKeyboardRepeatDelay(350).then(() => { console.log(`Set keyboard repeat delay success`); }); } catch (error) { console.log(`Set keyboard repeat delay failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.getKeyboardRepeatDelay10+ getKeyboardRepeatDelay(callback: AsyncCallback<number>): void Obtains the keyboard repeat delay. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **System API**: This is a system API. **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ------------------------------------------------------------ | | callback | AsyncCallback<number> | Yes | Callback used to return the result.| **Example** ```js try { inputDevice.getKeyboardRepeatDelay((error: Error, delay: Number) => { if (error) { console.log(`Get keyboard repeat delay failed, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Get keyboard repeat delay success`); }); } catch (error) { console.log(`Get keyboard repeat delay failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.getKeyboardRepeatDelay10+ getKeyboardRepeatDelay(): Promise<number> Obtains the keyboard repeat delay. This API uses a promise to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **System API**: This is a system API. **Return value** | Parameters | Description | | --------------------- | ------------------- | | Promise<number> | Promise used to return the result.| **Example** ```js try { inputDevice.getKeyboardRepeatDelay().then((delay: Number) => { console.log(`Get keyboard repeat delay success`); }); } catch (error) { console.log(`Get keyboard repeat delay failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.setKeyboardRepeatRate10+ setKeyboardRepeatRate(rate: number, callback: AsyncCallback<void>): void Sets the keyboard repeat rate. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **System API**: This is a system API. **Parameters** | Name | Type | Mandatory| Description | | -------- | ------ | ---- | ------------------------------------------------------------ | | rate | number | Yes | Keyboard repeat rate, in ms/time. The value range is [36, 100] and the default value is 50.| | callback | AsyncCallback<void> | Yes | Callback used to return the result.| **Example** ```js try { inputDevice.setKeyboardRepeatRate(60, (error: Error) => { if (error) { console.log(`Set keyboard repeat rate failed, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Set keyboard repeat rate success`); }); } catch (error) { console.log(`Set keyboard repeat rate failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.setKeyboardRepeatRate10+ setKeyboardRepeatRate(rate: number): Promise<void> Sets the keyboard repeat rate. This API uses a promise to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **System API**: This is a system API. **Parameters** | Name | Type | Mandatory | Description | | ----- | ------ | ---- | ----------------------------------- | | rate | number | Yes | Keyboard repeat rate, in ms/time. The value range is [36, 100] and the default value is 50.| **Return value** | Parameters | Description | | ------------------- | ---------------- | | Promise<void> | Promise used to return the result.| **Example** ```js try { inputDevice.setKeyboardRepeatRate(60).then(() => { console.log(`Set keyboard repeat rate success`); }); } catch (error) { console.log(`Set keyboard repeat rate failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.getKeyboardRepeatRate10+ getKeyboardRepeatRate(callback: AsyncCallback<number>): void Obtains the keyboard repeat rate. This API uses an asynchronous callback to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **System API**: This is a system API. **Parameters** | Name | Type | Mandatory | Description | | -------- | --------------------------- | ---- | -------------- | | callback | AsyncCallback<number> | Yes | Callback used to return the result.| **Example** ```js try { inputDevice.getKeyboardRepeatRate((error: Error, rate: Number) => { if (error) { console.log(`Get keyboard repeat rate failed, error: ${JSON.stringify(error, [`code`, `message`])}`); return; } console.log(`Get keyboard repeat rate success`); }); } catch (error) { console.log(`Get keyboard repeat rate failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## inputDevice.getKeyboardRepeatRate10+ getKeyboardRepeatRate(): Promise<number> Obtains the keyboard repeat rate. This API uses a promise to return the result. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice **System API**: This is a system API. **Return value** | Parameters | Description | | --------------------- | ------------------- | | Promise<number> | Promise used to return the result.| **Example** ```js try { inputDevice.getKeyboardRepeatRate().then((rate: Number) => { console.log(`Get keyboard repeat rate success`); }); } catch (error) { console.log(`Get keyboard repeat rate failed, error: ${JSON.stringify(error, [`code`, `message`])}`); } ``` ## DeviceListener9+ Defines the listener for hot swap events of an input device. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice | Name | Type | Readable | Writable | Description | | --------- | ------ | ---- | ---- | ------- | | type | [ChangedType](#changedtype9)| Yes| No| Device change type, which indicates whether an input device is inserted or removed.| | deviceId | number | Yes| No| Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| ## InputDeviceData Defines the information about an input device. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice | Name | Type | Readable | Writable | Description | | --------- | ------ | ---- | ---- | ------- | | id | number | Yes| No| Unique ID of the input device. If the same physical device is repeatedly inserted and removed, its ID changes.| | name | string | Yes| No| Name of the input device. | | sources | Array<[SourceType](#sourcetype9)> | Yes| No| Source type of the input device. For example, if a keyboard is attached with a touchpad, the device has two input sources: keyboard and touchpad.| | axisRanges | Array<[AxisRange](#axisrange)> | Yes| No| Axis information of the input device. | | bus9+ | number | Yes| No| Bus type of the input device. | | product9+ | number | Yes| No| Product information of the input device. | | vendor9+ | number | Yes| No| Vendor information of the input device. | | version9+ | number | Yes| No| Version information of the input device. | | phys9+ | string | Yes| No| Physical address of the input device. | | uniq9+ | string | Yes| No| Unique ID of the input device. | ## AxisType9+ Defines the axis type of an input device. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice | Name | Type | Readable | Writable | Description | | --------- | ------ | ---- | ---- | ------- | | touchmajor | string | Yes| No| **touchmajor** axis. | | touchminor | string | Yes| No| **touchminor** axis. | | toolminor | string | Yes| No| **toolminor** axis. | | toolmajor | string | Yes| No| **toolmajor** axis. | | orientation | string | Yes| No| Orientation axis.| | pressure | string | Yes| No| Pressure axis. | | x | string | Yes| No| X axis. | | y | string | Yes| No| Y axis. | | null | string | Yes| No| None. | ## AxisRange Defines the axis range of an input device. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice | Name | Type | Readable | Writable | Description | | --------- | ------ | ---- | ---- | ------- | | source | [SourceType](#sourcetype9) | Yes| No| Input source type of the axis.| | axis | [AxisType](#axistype9) | Yes| No| Axis type. | | max | number | Yes| No| Maximum value of the axis. | | min | number | Yes| No| Minimum value of the axis. | | fuzz9+ | number | Yes| No| Fuzzy value of the axis. | | flat9+ | number | Yes| No| Benchmark value of the axis. | | resolution9+ | number | Yes| No| Resolution of the axis. | ## SourceType9+ Input source type of the axis. For example, if a mouse reports an x-axis event, the input source of the x-axis is the mouse. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice | Name | Type | Readable | Writable | Description | | --------- | ------ | ---- | ---- | ------- | | keyboard | string | Yes| No| The input device is a keyboard. | | touchscreen | string | Yes| No| The input device is a touchscreen.| | mouse | string | Yes| No| The input device is a mouse. | | trackball | string | Yes| No| The input device is a trackball.| | touchpad | string | Yes| No| The input device is a touchpad.| | joystick | string | Yes| No| The input device is a joystick.| ## ChangedType9+ Defines the change type for the hot swap event of an input device. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice | Name | Type | Readable | Writable | Description | | --------- | ------ | ---- | ---- | ------- | | add | string | Yes| No| An input device is inserted.| | remove | string | Yes| No| An input device is removed.| ## KeyboardType9+ Enumerates the keyboard types. **System capability**: SystemCapability.MultimodalInput.Input.InputDevice | Name | Value | Description | | ------------------- | ---- | --------- | | NONE | 0 | Keyboard without keys. | | UNKNOWN | 1 | Keyboard with unknown keys.| | ALPHABETIC_KEYBOARD | 2 | Full keyboard. | | DIGITAL_KEYBOARD | 3 | Keypad. | | HANDWRITING_PEN | 4 | Stylus. | | REMOTE_CONTROL | 5 | Remote control. |