輸入設備

2024-01-23 17:35 更新

輸入設備管理模塊,用于監(jiān)聽輸入設備連接和斷開狀態(tài),查詢輸入設備相關信息。

說明

本模塊首批接口從API version 8開始支持。后續(xù)版本的新增接口,采用上角標單獨標記接口的起始版本。

導入模塊

  1. import inputDevice from '@ohos.multimodalInput.inputDevice';

inputDevice.getDeviceList9+

getDeviceList(callback: AsyncCallback<Array<number>>): void

獲取所有輸入設備的id列表,使用AsyncCallback異步方式返回結(jié)果。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

callback

AsyncCallback<Array<number>>

回調(diào)函數(shù),異步返回所有輸入設備的id列表。

示例

  1. try {
  2. inputDevice.getDeviceList((error, ids) => {
  3. if (error) {
  4. console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`);
  5. return;
  6. }
  7. console.log(`Device id list: ${JSON.stringify(ids)}`);
  8. });
  9. } catch (error) {
  10. console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`);
  11. }

inputDevice.getDeviceList9+

getDeviceList(): Promise<Array<number>>

獲取所有輸入設備的id列表,使用Promise異步方式返回結(jié)果。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

返回值

參數(shù)

說明

Promise<Array<number>>

Promise對象,異步返回所有輸入設備的id列表。

示例

  1. try {
  2. inputDevice.getDeviceList().then((ids) => {
  3. console.log(`Device id list: ${JSON.stringify(ids)}`);
  4. });
  5. } catch (error) {
  6. console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`);
  7. }

inputDevice.getDeviceInfo9+

getDeviceInfo(deviceId: number, callback: AsyncCallback<InputDeviceData>): void

獲取指定輸入設備的信息,使用AsyncCallback異步方式返回結(jié)果。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

deviceId

number

輸入設備id。

callback

AsyncCallback<InputDeviceData>

回調(diào)函數(shù),異步返回輸入設備信息。

示例

  1. // 獲取輸入設備id為1的設備信息。
  2. try {
  3. inputDevice.getDeviceInfo(1, (error, deviceData) => {
  4. if (error) {
  5. console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`);
  6. return;
  7. }
  8. console.log(`Device info: ${JSON.stringify(deviceData)}`);
  9. });
  10. } catch (error) {
  11. console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`);
  12. }

inputDevice.getDeviceInfo9+

getDeviceInfo(deviceId: number): Promise<InputDeviceData>

獲取指定輸入設備的信息,使用Promise異步方式返回結(jié)果。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

deviceId

number

輸入設備id。

返回值

參數(shù)

說明

Promise<InputDeviceData>

Promise對象,異步返回輸入設備信息。

示例

  1. // 獲取輸入設備id為1的設備信息。
  2. try {
  3. inputDevice.getDeviceInfo(1).then((deviceData) => {
  4. console.log(`Device info: ${JSON.stringify(deviceData)}`);
  5. });
  6. } catch (error) {
  7. console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`);
  8. }

inputDevice.on9+

on(type: "change", listener: Callback<DeviceListener>): void

監(jiān)聽輸入設備的熱插拔事件,使用時需連接鼠標鍵盤等外部設備。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

type

string

輸入設備的事件類型。

listener

Callback<DeviceListener>

回調(diào)函數(shù),異步上報輸入設備熱插拔事件。

示例

  1. let isPhysicalKeyboardExist = true;
  2. try {
  3. inputDevice.on("change", (data) => {
  4. console.log(`Device event info: ${JSON.stringify(data)}`);
  5. inputDevice.getKeyboardType(data.deviceId, (err, type) => {
  6. console.log("The keyboard type is: " + type);
  7. if (type == inputDevice.KeyboardType.ALPHABETIC_KEYBOARD && data.type == 'add') {
  8. // 監(jiān)聽物理鍵盤已連接。
  9. isPhysicalKeyboardExist = true;
  10. } else if (type == inputDevice.KeyboardType.ALPHABETIC_KEYBOARD && data.type == 'remove') {
  11. // 監(jiān)聽物理鍵盤已斷開。
  12. isPhysicalKeyboardExist = false;
  13. }
  14. });
  15. });
  16. // 根據(jù)isPhysicalKeyboardExist的值決定軟鍵盤是否彈出。
  17. } catch (error) {
  18. console.log(`Get device info failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
  19. }

inputDevice.off9+

off(type: "change", listener?: Callback<DeviceListener>): void

取消監(jiān)聽輸入設備的熱插拔事件。在應用退出前調(diào)用,取消監(jiān)聽。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

type

string

輸入設備的事件類型。

listener

Callback<DeviceListener>

取消監(jiān)聽的回調(diào)函數(shù)。

示例

  1. function callback(data) {
  2. console.log(`Report device event info: ${JSON.stringify(data, [`type`, `deviceId`])}`);
  3. };
  4. try {
  5. inputDevice.on("change", callback);
  6. } catch (error) {
  7. console.log(`Listen device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
  8. }
  9. // 取消指定的監(jiān)聽。
  10. try {
  11. inputDevice.off("change", callback);
  12. } catch (error) {
  13. console.log(`Cancel listening device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
  14. }
  15. // 取消所有監(jiān)聽。
  16. try {
  17. inputDevice.off("change");
  18. } catch (error) {
  19. console.log(`Cancel all listening device event failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
  20. }

inputDevice.getDeviceIds(deprecated)

getDeviceIds(callback: AsyncCallback<Array<number>>): void

獲取所有輸入設備的id列表,使用AsyncCallback異步方式返回結(jié)果。

從API version 9 開始不再維護,建議使用inputDevice.getDeviceList代替。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

callback

AsyncCallback<Array<number>>

回調(diào)函數(shù),異步返回所有輸入設備的id列表。

示例

  1. inputDevice.getDeviceIds((error, ids) => {
  2. if (error) {
  3. console.log(`Failed to get device id list, error: ${JSON.stringify(error, [`code`, `message`])}`);
  4. return;
  5. }
  6. console.log(`Device id list: ${JSON.stringify(ids)}`);
  7. });

inputDevice.getDeviceIds(deprecated)

getDeviceIds(): Promise<Array<number>>

獲取所有輸入設備的id列表,使用Promise異步方式返回結(jié)果。

從API version 9 開始不再維護,建議使用inputDevice.getDeviceList代替。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

返回值

參數(shù)

說明

Promise<Array<number>>

Promise對象,異步返回所有輸入設備的id列表。

示例

  1. inputDevice.getDeviceIds().then((ids) => {
  2. console.log(`Device id list: ${JSON.stringify(ids)}`);
  3. });

inputDevice.getDevice(deprecated)

getDevice(deviceId: number, callback: AsyncCallback<InputDeviceData>): void

獲取指定輸入設備的信息,使用AsyncCallback異步方式返回結(jié)果。

從API version 9 開始不再維護,建議使用inputDevice.getDeviceInfo代替。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

deviceId

number

輸入設備id。

callback

AsyncCallback<InputDeviceData>

回調(diào)函數(shù),異步返回輸入設備信息。

示例

  1. // 獲取輸入設備id為1的設備信息。
  2. inputDevice.getDevice(1, (error, deviceData) => {
  3. if (error) {
  4. console.log(`Failed to get device info, error: ${JSON.stringify(error, [`code`, `message`])}`);
  5. return;
  6. }
  7. console.log(`Device info: ${JSON.stringify(deviceData)}`);
  8. });

inputDevice.getDevice(deprecated)

getDevice(deviceId: number): Promise<InputDeviceData>

獲取指定輸入設備的信息,使用Promise異步方式返回結(jié)果。

從API version 9 開始不再維護,建議使用inputDevice.getDeviceInfo代替。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

deviceId

number

輸入設備id。

返回值

參數(shù)

說明

Promise<InputDeviceData>

Promise對象,異步返回輸入設備信息。

示例

  1. // 獲取輸入設備id為1的設備信息。
  2. inputDevice.getDevice(1).then((deviceData) => {
  3. console.log(`Device info: ${JSON.stringify(deviceData)}`);
  4. });

inputDevice.supportKeys9+

supportKeys(deviceId: number, keys: Array<KeyCode>, callback: AsyncCallback <Array<boolean>>): void

獲取輸入設備是否支持指定的鍵碼值,使用AsyncCallback異步方式返回結(jié)果。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

deviceId

number

輸入設備id,同一個物理設備反復插拔,設備id會發(fā)生變化。

keys

Array<KeyCode>

需要查詢的鍵碼值,最多支持5個按鍵查詢。

callback

AsyncCallback<Array<boolean>>

回調(diào)函數(shù),異步返回查詢結(jié)果。

示例

  1. // 查詢id為1的輸入設備對于17、22和2055按鍵的支持情況。
  2. try {
  3. inputDevice.supportKeys(1, [17, 22, 2055], (error, supportResult) => {
  4. console.log(`Query result: ${JSON.stringify(supportResult)}`);
  5. });
  6. } catch (error) {
  7. console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
  8. }

inputDevice.supportKeys9+

supportKeys(deviceId: number, keys: Array<KeyCode>): Promise<Array<boolean>>

獲取輸入設備是否支持指定的鍵碼值,使用Promise異步方式返回結(jié)果。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

deviceId

number

輸入設備id,同一個物理設備反復插拔,設備id會發(fā)生變化。

keys

Array<KeyCode>

需要查詢的鍵碼值,最多支持5個按鍵查詢。

返回值

參數(shù)

說明

Promise<Array<boolean>>

Promise對象,異步返回查詢結(jié)果。

示例

  1. // 查詢id為1的輸入設備對于17、22和2055按鍵的支持情況。
  2. try {
  3. inputDevice.supportKeys(1, [17, 22, 2055]).then((supportResult) => {
  4. console.log(`Query result: ${JSON.stringify(supportResult)}`);
  5. });
  6. } catch (error) {
  7. console.log(`Query failed, error: ${JSON.stringify(error, [`code`, `message`])}`);
  8. }

inputDevice.getKeyboardType9+

getKeyboardType(deviceId: number, callback: AsyncCallback<KeyboardType>): void

獲取輸入設備的鍵盤類型,使用AsyncCallback異步方式返回結(jié)果。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

deviceId

number

輸入設備的唯一標識,同一個物理設備反復插拔,設備id會發(fā)生變化。

callback

AsyncCallback<KeyboardType>

回調(diào)函數(shù),異步返回查詢結(jié)果。

示例

  1. // 查詢id為1的輸入設備的鍵盤類型。
  2. try {
  3. inputDevice.getKeyboardType(1, (error, type) => {
  4. if (error) {
  5. console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`);
  6. return;
  7. }
  8. console.log(`Keyboard type: ${JSON.stringify(type)}`);
  9. });
  10. } catch (error) {
  11. console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`);
  12. }

inputDevice.getKeyboardType9+

getKeyboardType(deviceId: number): Promise<KeyboardType>

獲取輸入設備的鍵盤類型,使用AsyncCallback異步方式返回結(jié)果。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

參數(shù)

參數(shù)名

類型

必填

說明

deviceId

number

輸入設備的唯一標識,同一個物理設備反復插拔,設備id會發(fā)生變化。

返回值

參數(shù)

說明

Promise<KeyboardType>

Promise對象,異步返回查詢結(jié)果。

示例

  1. // 示例查詢設備id為1的設備鍵盤類型。
  2. try {
  3. inputDevice.getKeyboardType(1).then((type) => {
  4. console.log(`Keyboard type: ${JSON.stringify(type)}`);
  5. });
  6. } catch (error) {
  7. console.log(`Failed to get keyboard type, error: ${JSON.stringify(error, [`code`, `message`])}`);
  8. }

DeviceListener9+

輸入設備熱插拔的描述信息。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

名稱

類型

可讀

可寫

說明

type

ChangedType

輸入設備插入或者移除。

deviceId

number

輸入設備的唯一標識,同一個物理設備反復插拔,設備id會發(fā)生變化。

InputDeviceData

輸入設備的描述信息。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

名稱

類型

可讀

可寫

說明

id

number

輸入設備的唯一標識,同一個物理設備反復插拔,設備id會發(fā)生變化。

name

string

輸入設備的名字。

sources

Array<SourceType>

輸入設備支持的源類型。比如有的鍵盤上附帶觸摸板,則此設備有keyboard和touchpad兩種輸入源。

axisRanges

Array<AxisRange>

輸入設備的軸信息。

bus9+

number

輸入設備的總線類型。

product9+

number

輸入設備的產(chǎn)品信息。

vendor9+

number

輸入設備的廠商信息。

version9+

number

輸入設備的版本信息。

phys9+

string

輸入設備的物理地址。

uniq9+

string

輸入設備的唯一標識。

AxisType9+

輸入設備的軸類型。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

名稱

類型

可讀

可寫

說明

touchMajor

string

表示touchMajor軸。

touchMinor

string

表示touchMinor軸。

toolMinor

string

表示toolMinor軸。

toolMajor

string

表示toolMajor軸。

orientation

string

表示orientation軸。

pressure

string

表示pressure軸。

x

string

表示x軸。

y

string

表示y軸。

NULL

string

無。

AxisRange

輸入設備的軸信息。

系統(tǒng)能力: SystemCapability.MultimodalInput.Input.InputDevice

名稱

類型

可讀

可寫

說明

source

SourceType

軸的輸入源類型。

axis

AxisType

軸的類型。

max

number

軸的最大值。

min

number

軸的最小值。

fuzz9+

number

軸的模糊值。

flat9+

number

軸的基準值。

resolution9+

number

軸的分辨率。

SourceType9+

軸的輸入源類型。比如鼠標設備可上報x軸事件,則x軸的輸入源就是鼠標。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

名稱

類型

可讀

可寫

說明

keyboard

string

表示輸入設備是鍵盤。

touchscreen

string

表示輸入設備是觸摸屏。

mouse

string

表示輸入設備是鼠標。

trackball

string

表示輸入設備是軌跡球。

touchpad

string

表示輸入設備是觸摸板。

joystick

string

表示輸入設備是操縱桿。

ChangedType9+

定義監(jiān)聽設備熱插拔事件。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

名稱

類型

可讀

可寫

說明

add

string

表示輸入設備插入。

remove

string

表示輸入設備移除。

KeyboardType9+

定義鍵盤輸入設備的類型。

系統(tǒng)能力:SystemCapability.MultimodalInput.Input.InputDevice

名稱

說明

NONE

0

表示無按鍵設備。

UNKNOWN

1

表示未知按鍵設備。

ALPHABETIC_KEYBOARD

2

表示全鍵盤設備。

DIGITAL_KEYBOARD

3

表示小鍵盤設備。

HANDWRITING_PEN

4

表示手寫筆設備。

REMOTE_CONTROL

5

表示遙控器設備。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號