/*
* Copyright (c) 2025 Huawei Device Co., Ltd.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
@!namespace("@ohos.multimodalInput.inputEventClient", "inputEventClient")
from ohos.multimodalInput.touchEvent use TouchEvent;
from ohos.multimodalInput.mouseEvent use MouseEvent, Button, Axis;
from ohos.multimodalInput.keyCode use KeyCode;
@!sts_inject("""
static { loadLibraryWithPermissionCheck("InputEventClient.z", "@ohos.multimodalInput.inputEventClient") }
""")
struct KeyEvent {
isPressed: bool;
keyCode: i32;
keyDownDuration: i32;
isIntercepted: bool;
}
struct TouchEventData {
touchEvent: TouchEvent;
useGlobalCoordinate: Optional<bool>;
}
struct MouseEventData {
mouseEvent: MouseEvent;
useGlobalCoordinate: Optional<bool>;
}
struct KeyEventData {
keyEvent: KeyEvent;
}
struct KeyEventInfo {
KeyEvent: KeyEvent;
}
@rename("injectKeyEvent")
function InjectKeyEventSync(keyEvent: KeyEventData): void;
@rename("injectEvent")
function InjectEventSync(keyEvent: KeyEventInfo): void;
@rename("injectMouseEvent")
function InjectMouseEventSync(mouseEvent: MouseEventData): void;
@rename("injectTouchEvent")
function InjectTouchEventSync(touchEvent: TouchEventData): void;
@rename("permitInjection")
function PermitInjectionSync(result: bool): void;
interface MouseController {
@promise @rename("moveTo")
MoveToSync(displayId: i32, displayX: i32, displayY: i32): void;
@promise @rename("pressButton")
PressButtonSync(button: Button): void;
@promise @rename("releaseButton")
ReleaseButtonSync(button: Button): void;
@promise @rename("beginAxis")
BeginAxisSync(axis: Axis, value: i32): void;
@promise @rename("updateAxis")
UpdateAxisSync(axis: Axis, value: i32): void;
@promise @rename("endAxis")
EndAxisSync(axis: Axis): void;
}
@promise @rename("createMouseController")
function CreateMouseControllerSync():MouseController;
struct TouchPoint {
id: i32;
displayId: i32;
displayX: i32;
displayY: i32;
}
interface TouchController {
@promise @rename("touchDown")
TouchDownSync(touch: TouchPoint): void;
@promise @rename("touchMove")
TouchMoveSync(touch: TouchPoint): void;
@promise @rename("touchUp")
TouchUpSync(touch: TouchPoint): void;
}
@promise @rename("createTouchController")
function CreateTouchControllerSync():TouchController;
interface KeyboardController {
@promise @rename("pressKey")
PressKeySync(keyCode: KeyCode): void;
@promise @rename("releaseKey")
ReleaseKeySync(keyCode: KeyCode): void;
}
@promise @rename("createKeyboardController")
function CreateKeyboardControllerSync():KeyboardController;