輸入設(shè)備

2024-01-23 17:35 更新

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

說(shuō)明

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

導(dǎo)入模塊

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

inputDevice.getDeviceList9+

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

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

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

callback

AsyncCallback<Array<number>>

回調(diào)函數(shù),異步返回所有輸入設(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>>

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

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

返回值

參數(shù)

說(shuō)明

Promise<Array<number>>

Promise對(duì)象,異步返回所有輸入設(shè)備的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

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

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

deviceId

number

輸入設(shè)備id。

callback

AsyncCallback<InputDeviceData>

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

示例

  1. // 獲取輸入設(shè)備id為1的設(shè)備信息。
  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>

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

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

deviceId

number

輸入設(shè)備id。

返回值

參數(shù)

說(shuō)明

Promise<InputDeviceData>

Promise對(duì)象,異步返回輸入設(shè)備信息。

示例

  1. // 獲取輸入設(shè)備id為1的設(shè)備信息。
  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)聽輸入設(shè)備的熱插拔事件,使用時(shí)需連接鼠標(biāo)鍵盤等外部設(shè)備。

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

type

string

輸入設(shè)備的事件類型。

listener

Callback<DeviceListener>

回調(diào)函數(shù),異步上報(bà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)聽輸入設(shè)備的熱插拔事件。在應(yīng)用退出前調(diào)用,取消監(jiān)聽。

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

type

string

輸入設(shè)備的事件類型。

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

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

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

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

callback

AsyncCallback<Array<number>>

回調(diào)函數(shù),異步返回所有輸入設(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>>

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

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

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

返回值

參數(shù)

說(shuō)明

Promise<Array<number>>

Promise對(duì)象,異步返回所有輸入設(shè)備的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

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

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

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

deviceId

number

輸入設(shè)備id。

callback

AsyncCallback<InputDeviceData>

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

示例

  1. // 獲取輸入設(shè)備id為1的設(shè)備信息。
  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>

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

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

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

deviceId

number

輸入設(shè)備id。

返回值

參數(shù)

說(shuō)明

Promise<InputDeviceData>

Promise對(duì)象,異步返回輸入設(shè)備信息。

示例

  1. // 獲取輸入設(shè)備id為1的設(shè)備信息。
  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

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

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

deviceId

number

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

keys

Array<KeyCode>

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

callback

AsyncCallback<Array<boolean>>

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

示例

  1. // 查詢id為1的輸入設(shè)備對(duì)于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>>

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

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

deviceId

number

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

keys

Array<KeyCode>

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

返回值

參數(shù)

說(shuō)明

Promise<Array<boolean>>

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

示例

  1. // 查詢id為1的輸入設(shè)備對(duì)于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

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

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

deviceId

number

輸入設(shè)備的唯一標(biāo)識(shí),同一個(gè)物理設(shè)備反復(fù)插拔,設(shè)備id會(huì)發(fā)生變化。

callback

AsyncCallback<KeyboardType>

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

示例

  1. // 查詢id為1的輸入設(shè)備的鍵盤類型。
  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>

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

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

參數(shù)

參數(shù)名

類型

必填

說(shuō)明

deviceId

number

輸入設(shè)備的唯一標(biāo)識(shí),同一個(gè)物理設(shè)備反復(fù)插拔,設(shè)備id會(huì)發(fā)生變化。

返回值

參數(shù)

說(shuō)明

Promise<KeyboardType>

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

示例

  1. // 示例查詢?cè)O(shè)備id為1的設(shè)備鍵盤類型。
  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+

輸入設(shè)備熱插拔的描述信息。

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

名稱

類型

可讀

可寫

說(shuō)明

type

ChangedType

輸入設(shè)備插入或者移除。

deviceId

number

輸入設(shè)備的唯一標(biāo)識(shí),同一個(gè)物理設(shè)備反復(fù)插拔,設(shè)備id會(huì)發(fā)生變化。

InputDeviceData

輸入設(shè)備的描述信息。

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

名稱

類型

可讀

可寫

說(shuō)明

id

number

輸入設(shè)備的唯一標(biāo)識(shí),同一個(gè)物理設(shè)備反復(fù)插拔,設(shè)備id會(huì)發(fā)生變化。

name

string

輸入設(shè)備的名字。

sources

Array<SourceType>

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

axisRanges

Array<AxisRange>

輸入設(shè)備的軸信息。

bus9+

number

輸入設(shè)備的總線類型。

product9+

number

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

vendor9+

number

輸入設(shè)備的廠商信息。

version9+

number

輸入設(shè)備的版本信息。

phys9+

string

輸入設(shè)備的物理地址。

uniq9+

string

輸入設(shè)備的唯一標(biāo)識(shí)。

AxisType9+

輸入設(shè)備的軸類型。

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

名稱

類型

可讀

可寫

說(shuō)明

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

無(wú)。

AxisRange

輸入設(shè)備的軸信息。

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

名稱

類型

可讀

可寫

說(shuō)明

source

SourceType

軸的輸入源類型。

axis

AxisType

軸的類型。

max

number

軸的最大值。

min

number

軸的最小值。

fuzz9+

number

軸的模糊值。

flat9+

number

軸的基準(zhǔn)值。

resolution9+

number

軸的分辨率。

SourceType9+

軸的輸入源類型。比如鼠標(biāo)設(shè)備可上報(bào)x軸事件,則x軸的輸入源就是鼠標(biāo)。

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

名稱

類型

可讀

可寫

說(shuō)明

keyboard

string

表示輸入設(shè)備是鍵盤。

touchscreen

string

表示輸入設(shè)備是觸摸屏。

mouse

string

表示輸入設(shè)備是鼠標(biāo)。

trackball

string

表示輸入設(shè)備是軌跡球。

touchpad

string

表示輸入設(shè)備是觸摸板。

joystick

string

表示輸入設(shè)備是操縱桿。

ChangedType9+

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

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

名稱

類型

可讀

可寫

說(shuō)明

add

string

表示輸入設(shè)備插入。

remove

string

表示輸入設(shè)備移除。

KeyboardType9+

定義鍵盤輸入設(shè)備的類型。

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

名稱

說(shuō)明

NONE

0

表示無(wú)按鍵設(shè)備。

UNKNOWN

1

表示未知按鍵設(shè)備。

ALPHABETIC_KEYBOARD

2

表示全鍵盤設(shè)備。

DIGITAL_KEYBOARD

3

表示小鍵盤設(shè)備。

HANDWRITING_PEN

4

表示手寫筆設(shè)備。

REMOTE_CONTROL

5

表示遙控器設(shè)備。

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)