7e27e73e创建于 2025年7月22日历史提交

输入监听开发指导

场景介绍

输入监听提供监听按键,触控板特殊手势等能力。使用场景例如:当用户需要应用在触控板三指上划实现特定功能时,开发者可以通过监听三指上划判断特定功能是否启用。

导入模块

import { inputMonitor } from '@kit.InputKit';

接口说明

输入监听常用接口如下表所示,接口详细介绍请参考ohos.multimodalInput.inputMonitor文档

接口名称 描述
on(type: 'mouse', receiver: Callback<MouseEvent>): void 监听鼠标事件。
on(type: 'touch', receiver: TouchEventReceiver): void 监听触屏事件。
on(type: 'pinch', receiver: TouchEventReceiver): void 监听捏合事件。
on(type: 'threeFingersSwipe', receiver: Callback<ThreeFingersSwipe>): void 监听三指上划事件。
on(type: 'threeFingersTap', receiver: Callback<ThreeFingersSwipe>): void 监听三指清点事件。
on(type: 'fourFingersSwipe', receiver: Callback<FourFingersSwipe>): void 监听四指滑动事件。
on(type: 'rotate', fingers: number, receiver: Callback<Rotate>): void 监听旋转事件。
off(type: 'mouse', receiver: Callback<MouseEvent>): void 取消监听鼠标事件。
off(type: 'touch', receiver: TouchEventReceiver): void 取消监听触屏事件。
off(type: 'pinch', receiver: TouchEventReceiver): void 取消监听捏合事件。
off(type: 'threeFingersSwipe', receiver: Callback<ThreeFingersSwipe>): void 取消监听三指上划事件。
off(type: 'threeFingersTap', receiver: Callback<ThreeFingersSwipe>): void 取消监听三指清点事件。
off(type: 'fourFingersSwipe', receiver: Callback<FourFingersSwipe>): void 取消监听四指滑动事件。
off(type: 'rotate', fingers: number, receiver: Callback<Rotate>): void 取消监听旋转事件。

开发步骤

当应用需要根据鼠标按键按下状态变化样式时。调用on监听鼠标按键事件,调用off取消监听鼠标按键事件。

import { inputMonitor } from '@kit.InputKit';
import { MouseEvent } from '@kit.InputKit';

@Entry
@Component
struct Index {
  build() {
    RelativeContainer() {
      Text()
        .onClick(() => {
          let BUTTON_DOWN = 2;
          let callback = (mouseEvent: MouseEvent) => {
            console.info(`Monitor on success ${JSON.stringify(mouseEvent)}`);
            if(mouseEvent.action = BUTTON_DOWN){
              return true;//鼠标按下回调
            }
            return false;
          };

          try {
            inputMonitor.on('mouse', (mouseEvent: MouseEvent) => {//开始监听鼠标事件
              console.info(`Monitor on success ${JSON.stringify(mouseEvent)}`);
              return false;
            });
          } catch (error) {
            console.error(`Monitor on failed, error: ${JSON.stringify(error, ["code", "message"])}`);
          }
          //监听鼠标按下,按下callbackreturn true
          try {
            inputMonitor.off('mouse', callback);//关闭监听鼠标事件
            console.info(`Monitor off success`);
          } catch (error) {
            console.error(`Monitor off failed, error: ${JSON.stringify(error, ["code", "message"])}`);
          }
        })
    }
  }
}