diff --git a/multimodalinput/kits/c/BUILD.gn b/multimodalinput/kits/c/BUILD.gn new file mode 100644 index 0000000000000000000000000000000000000000..ef280ae4410748f9e0c527037ac214557090a516 --- /dev/null +++ b/multimodalinput/kits/c/BUILD.gn @@ -0,0 +1,39 @@ +# Copyright (C) 2024 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. + +import("//build/ohos.gni") +import("//build/ohos/ndk/ndk.gni") +import("//foundation/multimodalinput/input/multimodalinput_mini.gni") + +ohos_ndk_headers("ohinput_header") { + dest_dir = "$ndk_headers_out_dir/multimodalinput" + sources = [ + "input_event/capi_input_event.h", + "input_event/capi_key_event.h", + "input_event/capi_mouse_event.h", + "input_event/capi_touch_event.h", + ] +} + +ohos_ndk_library("libohinput_ndk") { + output_name = "ohinput" + output_extension = "so" + ndk_description_file = "./ohinput.ndk.json" + system_capability = "SystemCapability.MultimodalInput.Input.InputSimulator" + system_capability_headers = [ + "multimodalinput/capi_input_event.h", + "multimodalinput/capi_key_event.h", + "multimodalinput/capi_mouse_event.h", + "multimodalinput/capi_touch_event.h", + ] +} diff --git a/multimodalinput/kits/c/input_event/capi_input_event.h b/multimodalinput/kits/c/input_event/capi_input_event.h new file mode 100644 index 0000000000000000000000000000000000000000..3e10d78324d78858a5d4b0baec16851c21a303dc --- /dev/null +++ b/multimodalinput/kits/c/input_event/capi_input_event.h @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2024 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. + */ + +#ifndef CAPI_INPUT_EVENT_H +#define CAPI_INPUT_EVENT_H + +/** + * @addtogroup OHInput + * @{ + * + * @brief Provides the C interface in the multi-modal input domain. + * + * @since 11 + * @version 1.0 + */ + +/** + * @file capi_input_event.h + * + * @brief Provides C interfaces for multi-modal event injection. + * + * @syscap SystemCapability.MultimodalInput.Input.InputSimulator + * @library libohinput.so + * @since 11 + * @version 1.0 + */ + +#include +#include "capi_key_event.h" +#include "capi_mouse_event.h" +#include "capi_touch_event.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Inject system keys. + * + * @param keyEvent - the key event to be injected. + * @return 0 - Success. + * 201 - Missing permissions. + * 202 - SystemAPI permission error. + * 401 - Parameter error. + * @permission systemapi hide for inner use + * @syscap SystemCapability.MultimodalInput.Input.InputSimulator + * @since 11 + * @version 1.0 + */ +int32_t OH_InputEventClient_InjectEvent(struct OH_KeyEvent* keyEvent); + +/** + * @brief Inject mouse event. + * + * @param mouseEvent - the mouse event to be injected. + * @return 0 - Success. + * 201 - Missing permissions. + * 202 - SystemAPI permission error. + * 401 - Parameter error. + * @permission systemapi hide for inner use + * @syscap SystemCapability.MultimodalInput.Input.InputSimulator + * @since 11 + * @version 1.0 + */ +int32_t OH_InputEventClient_InjectMouseEvent(struct OH_MouseEvent* mouseEvent); + +/** + * @brief Inject touch event. + * + * @param touchEvent - the touch event to be injected. + * @return 0 - Success. + * 201 - Missing permissions. + * 202 - SystemAPI permission error. + * 401 - Parameter error. + * @permission systemapi hide for inner use + * @syscap SystemCapability.MultimodalInput.Input.InputSimulator + * @since 11 + * @version 1.0 + */ +int32_t OH_InputEventClient_InjectTouchEvent(struct OH_TouchEvent* touchEvent); + +#ifdef __cplusplus +} +#endif +#endif // CAPI_INPUT_EVENT_H diff --git a/multimodalinput/kits/c/input_event/capi_key_event.h b/multimodalinput/kits/c/input_event/capi_key_event.h new file mode 100644 index 0000000000000000000000000000000000000000..38aa337070cd9cc50d6f8d151336e63e9de7a3fe --- /dev/null +++ b/multimodalinput/kits/c/input_event/capi_key_event.h @@ -0,0 +1,402 @@ +/* + * Copyright (c) 2024 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. + */ + +#ifndef CAPI_KEY_EVENT_H +#define CAPI_KEY_EVENT_H + +/** + * @addtogroup OHInput + * @{ + * + * @brief Provides the C interface in the multi-modal input domain. + * + * @since 11 + * @version 1.0 + */ + +/** + * @file capi_key_event.h + * + * @brief Defines the key event structure and related enumeration values. + * + * @syscap SystemCapability.MultimodalInput.Input.InputSimulator + * @library libohinput.so + * @since 11 + * @version 1.0 + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Enumerated values of OpenHarmony key code. + * + * @since 11 + * @version 1.0 + */ +typedef enum { + KEYCODE_FN = 0, + KEYCODE_UNKNOWN = -1, + KEYCODE_HOME = 1, + KEYCODE_BACK = 2, + KEYCODE_MEDIA_PLAY_PAUSE = 10, + KEYCODE_MEDIA_STOP = 11, + KEYCODE_MEDIA_NEXT = 12, + KEYCODE_MEDIA_PREVIOUS = 13, + KEYCODE_MEDIA_REWIND = 14, + KEYCODE_MEDIA_FAST_FORWARD = 15, + KEYCODE_VOLUME_UP = 16, + KEYCODE_VOLUME_DOWN = 17, + KEYCODE_POWER = 18, + KEYCODE_CAMERA = 19, + KEYCODE_VOLUME_MUTE = 22, + KEYCODE_MUTE = 23, + KEYCODE_BRIGHTNESS_UP = 40, + KEYCODE_BRIGHTNESS_DOWN = 41, + KEYCODE_0 = 2000, + KEYCODE_1 = 2001, + KEYCODE_2 = 2002, + KEYCODE_3 = 2003, + KEYCODE_4 = 2004, + KEYCODE_5 = 2005, + KEYCODE_6 = 2006, + KEYCODE_7 = 2007, + KEYCODE_8 = 2008, + KEYCODE_9 = 2009, + KEYCODE_STAR = 2010, + KEYCODE_POUND = 2011, + KEYCODE_DPAD_UP = 2012, + KEYCODE_DPAD_DOWN = 2013, + KEYCODE_DPAD_LEFT = 2014, + KEYCODE_DPAD_RIGHT = 2015, + KEYCODE_DPAD_CENTER = 2016, + KEYCODE_A = 2017, + KEYCODE_B = 2018, + KEYCODE_C = 2019, + KEYCODE_D = 2020, + KEYCODE_E = 2021, + KEYCODE_F = 2022, + KEYCODE_G = 2023, + KEYCODE_H = 2024, + KEYCODE_I = 2025, + KEYCODE_J = 2026, + KEYCODE_K = 2027, + KEYCODE_L = 2028, + KEYCODE_M = 2029, + KEYCODE_N = 2030, + KEYCODE_O = 2031, + KEYCODE_P = 2032, + KEYCODE_Q = 2033, + KEYCODE_R = 2034, + KEYCODE_S = 2035, + KEYCODE_T = 2036, + KEYCODE_U = 2037, + KEYCODE_V = 2038, + KEYCODE_W = 2039, + KEYCODE_X = 2040, + KEYCODE_Y = 2041, + KEYCODE_Z = 2042, + KEYCODE_COMMA = 2043, + KEYCODE_PERIOD = 2044, + KEYCODE_ALT_LEFT = 2045, + KEYCODE_ALT_RIGHT = 2046, + KEYCODE_SHIFT_LEFT = 2047, + KEYCODE_SHIFT_RIGHT = 2048, + KEYCODE_TAB = 2049, + KEYCODE_SPACE = 2050, + KEYCODE_SYM = 2051, + KEYCODE_EXPLORER = 2052, + KEYCODE_ENVELOPE = 2053, + KEYCODE_ENTER = 2054, + KEYCODE_DEL = 2055, + KEYCODE_GRAVE = 2056, + KEYCODE_MINUS = 2057, + KEYCODE_EQUALS = 2058, + KEYCODE_LEFT_BRACKET = 2059, + KEYCODE_RIGHT_BRACKET = 2060, + KEYCODE_BACKSLASH = 2061, + KEYCODE_SEMICOLON = 2062, + KEYCODE_APOSTROPHE = 2063, + KEYCODE_SLASH = 2064, + KEYCODE_AT = 2065, + KEYCODE_PLUS = 2066, + KEYCODE_MENU = 2067, + KEYCODE_PAGE_UP = 2068, + KEYCODE_PAGE_DOWN = 2069, + KEYCODE_ESCAPE = 2070, + KEYCODE_FORWARD_DEL = 2071, + KEYCODE_CTRL_LEFT = 2072, + KEYCODE_CTRL_RIGHT = 2073, + KEYCODE_CAPS_LOCK = 2074, + KEYCODE_SCROLL_LOCK = 2075, + KEYCODE_META_LEFT = 2076, + KEYCODE_META_RIGHT = 2077, + KEYCODE_FUNCTION = 2078, + KEYCODE_SYSRQ = 2079, + KEYCODE_BREAK = 2080, + KEYCODE_MOVE_HOME = 2081, + KEYCODE_MOVE_END = 2082, + KEYCODE_INSERT = 2083, + KEYCODE_FORWARD = 2084, + KEYCODE_MEDIA_PLAY = 2085, + KEYCODE_MEDIA_PAUSE = 2086, + KEYCODE_MEDIA_CLOSE = 2087, + KEYCODE_MEDIA_EJECT = 2088, + KEYCODE_MEDIA_RECORD = 2089, + KEYCODE_F1 = 2090, + KEYCODE_F2 = 2091, + KEYCODE_F3 = 2092, + KEYCODE_F4 = 2093, + KEYCODE_F5 = 2094, + KEYCODE_F6 = 2095, + KEYCODE_F7 = 2096, + KEYCODE_F8 = 2097, + KEYCODE_F9 = 2098, + KEYCODE_F10 = 2099, + KEYCODE_F11 = 2100, + KEYCODE_F12 = 2101, + KEYCODE_NUM_LOCK = 2102, + KEYCODE_NUMPAD_0 = 2103, + KEYCODE_NUMPAD_1 = 2104, + KEYCODE_NUMPAD_2 = 2105, + KEYCODE_NUMPAD_3 = 2106, + KEYCODE_NUMPAD_4 = 2107, + KEYCODE_NUMPAD_5 = 2108, + KEYCODE_NUMPAD_6 = 2109, + KEYCODE_NUMPAD_7 = 2110, + KEYCODE_NUMPAD_8 = 2111, + KEYCODE_NUMPAD_9 = 2112, + KEYCODE_NUMPAD_DIVIDE = 2113, + KEYCODE_NUMPAD_MULTIPLY = 2114, + KEYCODE_NUMPAD_SUBTRACT = 2115, + KEYCODE_NUMPAD_ADD = 2116, + KEYCODE_NUMPAD_DOT = 2117, + KEYCODE_NUMPAD_COMMA = 2118, + KEYCODE_NUMPAD_ENTER = 2119, + KEYCODE_NUMPAD_EQUALS = 2120, + KEYCODE_NUMPAD_LEFT_PAREN = 2121, + KEYCODE_NUMPAD_RIGHT_PAREN = 2122, + KEYCODE_VIRTUAL_MULTITASK = 2210, + KEYCODE_SLEEP = 2600, + KEYCODE_ZENKAKU_HANKAKU = 2601, + KEYCODE_102ND = 2602, + KEYCODE_RO = 2603, + KEYCODE_KATAKANA = 2604, + KEYCODE_HIRAGANA = 2605, + KEYCODE_HENKAN = 2606, + KEYCODE_KATAKANA_HIRAGANA = 2607, + KEYCODE_MUHENKAN = 2608, + KEYCODE_LINEFEED = 2609, + KEYCODE_MACRO = 2610, + KEYCODE_NUMPAD_PLUSMINUS = 2611, + KEYCODE_SCALE = 2612, + KEYCODE_HANGUEL = 2613, + KEYCODE_HANJA = 2614, + KEYCODE_YEN = 2615, + KEYCODE_STOP = 2616, + KEYCODE_AGAIN = 2617, + KEYCODE_PROPS = 2618, + KEYCODE_UNDO = 2619, + KEYCODE_COPY = 2620, + KEYCODE_OPEN = 2621, + KEYCODE_PASTE = 2622, + KEYCODE_FIND = 2623, + KEYCODE_CUT = 2624, + KEYCODE_HELP = 2625, + KEYCODE_CALC = 2626, + KEYCODE_FILE = 2627, + KEYCODE_BOOKMARKS = 2628, + KEYCODE_NEXT = 2629, + KEYCODE_PLAYPAUSE = 2630, + KEYCODE_PREVIOUS = 2631, + KEYCODE_STOPCD = 2632, + KEYCODE_CONFIG = 2634, + KEYCODE_REFRESH = 2635, + KEYCODE_EXIT = 2636, + KEYCODE_EDIT = 2637, + KEYCODE_SCROLLUP = 2638, + KEYCODE_SCROLLDOWN = 2639, + KEYCODE_NEW = 2640, + KEYCODE_REDO = 2641, + KEYCODE_CLOSE = 2642, + KEYCODE_PLAY = 2643, + KEYCODE_BASSBOOST = 2644, + KEYCODE_PRINT = 2645, + KEYCODE_CHAT = 2646, + KEYCODE_FINANCE = 2647, + KEYCODE_CANCEL = 2648, + KEYCODE_KBDILLUM_TOGGLE = 2649, + KEYCODE_KBDILLUM_DOWN = 2650, + KEYCODE_KBDILLUM_UP = 2651, + KEYCODE_SEND = 2652, + KEYCODE_REPLY = 2653, + KEYCODE_FORWARDMAIL = 2654, + KEYCODE_SAVE = 2655, + KEYCODE_DOCUMENTS = 2656, + KEYCODE_VIDEO_NEXT = 2657, + KEYCODE_VIDEO_PREV = 2658, + KEYCODE_BRIGHTNESS_CYCLE = 2659, + KEYCODE_BRIGHTNESS_ZERO = 2660, + KEYCODE_DISPLAY_OFF = 2661, + KEYCODE_BTN_MISC = 2662, + KEYCODE_GOTO = 2663, + KEYCODE_INFO = 2664, + KEYCODE_PROGRAM = 2665, + KEYCODE_PVR = 2666, + KEYCODE_SUBTITLE = 2667, + KEYCODE_FULL_SCREEN = 2668, + KEYCODE_KEYBOARD = 2669, + KEYCODE_ASPECT_RATIO = 2670, + KEYCODE_PC = 2671, + KEYCODE_TV = 2672, + KEYCODE_TV2 = 2673, + KEYCODE_VCR = 2674, + KEYCODE_VCR2 = 2675, + KEYCODE_SAT = 2676, + KEYCODE_CD = 2677, + KEYCODE_TAPE = 2678, + KEYCODE_TUNER = 2679, + KEYCODE_PLAYER = 2680, + KEYCODE_DVD = 2681, + KEYCODE_AUDIO = 2682, + KEYCODE_VIDEO = 2683, + KEYCODE_MEMO = 2684, + KEYCODE_CALENDAR = 2685, + KEYCODE_RED = 2686, + KEYCODE_GREEN = 2687, + KEYCODE_YELLOW = 2688, + KEYCODE_BLUE = 2689, + KEYCODE_CHANNELUP = 2690, + KEYCODE_CHANNELDOWN = 2691, + KEYCODE_LAST = 2692, + KEYCODE_RESTART = 2693, + KEYCODE_SLOW = 2694, + KEYCODE_SHUFFLE = 2695, + KEYCODE_VIDEOPHONE = 2696, + KEYCODE_GAMES = 2697, + KEYCODE_ZOOMIN = 2698, + KEYCODE_ZOOMOUT = 2699, + KEYCODE_ZOOMRESET = 2700, + KEYCODE_WORDPROCESSOR = 2701, + KEYCODE_EDITOR = 2702, + KEYCODE_SPREADSHEET = 2703, + KEYCODE_GRAPHICSEDITOR = 2704, + KEYCODE_PRESENTATION = 2705, + KEYCODE_DATABASE = 2706, + KEYCODE_NEWS = 2707, + KEYCODE_VOICEMAIL = 2708, + KEYCODE_ADDRESSBOOK = 2709, + KEYCODE_MESSENGER = 2710, + KEYCODE_BRIGHTNESS_TOGGLE = 2711, + KEYCODE_SPELLCHECK = 2712, + KEYCODE_COFFEE = 2713, + KEYCODE_MEDIA_REPEAT = 2714, + KEYCODE_IMAGES = 2715, + KEYCODE_BUTTONCONFIG = 2716, + KEYCODE_TASKMANAGER = 2717, + KEYCODE_JOURNAL = 2718, + KEYCODE_CONTROLPANEL = 2719, + KEYCODE_APPSELECT = 2720, + KEYCODE_SCREENSAVER = 2721, + KEYCODE_ASSISTANT = 2722, + KEYCODE_KBD_LAYOUT_NEXT = 2723, + KEYCODE_BRIGHTNESS_MIN = 2724, + KEYCODE_BRIGHTNESS_MAX = 2725, + KEYCODE_KBDINPUTASSIST_PREV = 2726, + KEYCODE_KBDINPUTASSIST_NEXT = 2727, + KEYCODE_KBDINPUTASSIST_PREVGROUP = 2728, + KEYCODE_KBDINPUTASSIST_NEXTGROUP = 2729, + KEYCODE_KBDINPUTASSIST_ACCEPT = 2730, + KEYCODE_KBDINPUTASSIST_CANCEL = 2731, + KEYCODE_FRONT = 2800, + KEYCODE_SETUP = 2801, + KEYCODE_WAKEUP = 2802, + KEYCODE_SENDFILE = 2803, + KEYCODE_DELETEFILE = 2804, + KEYCODE_XFER = 2805, + KEYCODE_PROG1 = 2806, + KEYCODE_PROG2 = 2807, + KEYCODE_MSDOS = 2808, + KEYCODE_SCREENLOCK = 2809, + KEYCODE_DIRECTION_ROTATE_DISPLAY = 2810, + KEYCODE_CYCLEWINDOWS = 2811, + KEYCODE_COMPUTER = 2812, + KEYCODE_EJECTCLOSECD = 2813, + KEYCODE_ISO = 2814, + KEYCODE_MOVE = 2815, + KEYCODE_F13 = 2816, + KEYCODE_F14 = 2817, + KEYCODE_F15 = 2818, + KEYCODE_F16 = 2819, + KEYCODE_F17 = 2820, + KEYCODE_F18 = 2821, + KEYCODE_F19 = 2822, + KEYCODE_F20 = 2823, + KEYCODE_F21 = 2824, + KEYCODE_F22 = 2825, + KEYCODE_F23 = 2826, + KEYCODE_F24 = 2827, + KEYCODE_PROG3 = 2828, + KEYCODE_PROG4 = 2829, + KEYCODE_DASHBOARD = 2830, + KEYCODE_SUSPEND = 2831, + KEYCODE_HP = 2832, + KEYCODE_SOUND = 2833, + KEYCODE_QUESTION = 2834, + KEYCODE_CONNECT = 2836, + KEYCODE_SPORT = 2837, + KEYCODE_SHOP = 2838, + KEYCODE_ALTERASE = 2839, + KEYCODE_SWITCHVIDEOMODE = 2841, + KEYCODE_BATTERY = 2842, + KEYCODE_BLUETOOTH = 2843, + KEYCODE_WLAN = 2844, + KEYCODE_UWB = 2845, + KEYCODE_WWAN_WIMAX = 2846, + KEYCODE_RFKILL = 2847, + KEYCODE_CHANNEL = 3001, + KEYCODE_BTN_0 = 3100, + KEYCODE_BTN_1 = 3101, + KEYCODE_BTN_2 = 3102, + KEYCODE_BTN_3 = 3103, + KEYCODE_BTN_4 = 3104, + KEYCODE_BTN_5 = 3105, + KEYCODE_BTN_6 = 3106, + KEYCODE_BTN_7 = 3107, + KEYCODE_BTN_8 = 3108, + KEYCODE_BTN_9 = 3109 +} OH_KeyCode; + +/** + * @brief The key event to be injected. + * + * @since 11 + * @version 1.0 + */ +typedef struct OH_KeyEvent { + bool isPressed = false; + int32_t keyCode; + int32_t keyDownDuration = 0; + bool isIntercepted = false; +} OH_KeyEvent; + +#ifdef __cplusplus +} +#endif + +#endif // CAPI_KEY_EVENT_H diff --git a/multimodalinput/kits/c/input_event/capi_mouse_event.h b/multimodalinput/kits/c/input_event/capi_mouse_event.h new file mode 100644 index 0000000000000000000000000000000000000000..f6181b81e63094ddb944bcadd6f48212482e3879 --- /dev/null +++ b/multimodalinput/kits/c/input_event/capi_mouse_event.h @@ -0,0 +1,194 @@ +/* + * Copyright (c) 2024 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. + */ + +#ifndef CAPI_MOUSE_EVENT_H +#define CAPI_MOUSE_EVENT_H + +/** + * @addtogroup OHInput + * @{ + * + * @brief Provides the C interface in the multi-modal input domain. + * + * @since 11 + * @version 1.0 + */ + +/** + * @file capi_mouse_event.h + * + * @brief Defines the mouse event structure and related enumeration values. + * + * @syscap SystemCapability.MultimodalInput.Input.InputSimulator + * @library libohinput.so + * @since 11 + * @version 1.0 + */ + +#include +#include "capi_key_event.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Enumerated values of mouse event action. + * + * @since 11 + * @version 1.0 + */ +typedef enum { + /** Cancel. */ + MOUSE_ACTION_CANCEL = 0, + /** Moving of the mouse pointer. */ + MOUSE_ACTION_MOVE = 1, + /** Pressing down of the mouse. */ + MOUSE_ACTION_BUTTON_DOWN = 2, + /** Lifting of the mouse button. */ + MOUSE_ACTION_BUTTON_UP = 3, + /** Beginning of the axis event associated with the mouse. */ + MOUSE_ACTION_AXIS_BEGIN = 4, + /** Updating of the axis event associated with the mouse. */ + MOUSE_ACTION_AXIS_UPDATE = 5, + /** Ending of the axis event associated with the mouse. */ + MOUSE_ACTION_AXIS_END = 6, + /** Pressing down of the mouse touch pad. */ + MOUSE_ACTION_ACTION_DOWN = 7, + /** Lifting of the mouse touch pad. */ + MOUSE_ACTION_ACTION_UP = 8 +} MouseEvent_Action; + +/** + * @brief Enumerated values of mouse event button. + * + * @since 11 + * @version 1.0 + */ +typedef enum { + /** Left button on the mouse. */ + MOUSE_BUTTON_LEFT = 0, + /** Middle button on the mouse. */ + MOUSE_BUTTON_MIDDLE = 1, + /** Right button on the mouse. */ + MOUSE_BUTTON_RIGHT = 2, + /** Side button on the mouse. */ + MOUSE_BUTTON_SIDE = 3, + /** Extended button on the mouse. */ + MOUSE_BUTTON_EXTRA = 4, + /** Forward button on the mouse. */ + MOUSE_BUTTON_FORWARD = 5, + /** Back button on the mouse. */ + MOUSE_BUTTON_BACK = 6, + /** Task key on the mouse. */ + MOUSE_BUTTON_TASK = 7 +} MouseEvent_Button; + +/** + * @brief Enumerated values of mouse event axis. + * + * @since 11 + * @version 1.0 + */ +typedef enum { + /** Vertical scroll axis. */ + MOUSE_AXIS_SCROLL_VERTICAL = 0, + /** Horizontal scroll axis. */ + MOUSE_AXIS_SCROLL_HORIZONTAL = 1, + /** Pinch axis. */ + MOUSE_AXIS_PINCH = 2 +} MouseEvent_Axis; + +/** + * @brief Enumerated values of mouse event tool type. + * + * @since 11 + * @version 1.0 + */ +typedef enum { + /** Unknown type. */ + MOUSE_TOOLTYPE_UNKNOWN = 0, + /** Mouse. */ + MOUSE_TOOLTYPE_MOUSE = 1, + /** Joystick. */ + MOUSE_TOOLTYPE_JOYSTICK = 2, + /** Touch pad. */ + MOUSE_TOOLTYPE_TOUCHPAD = 3 +} MouseEvent_ToolType; + +/** + * @brief Structure of the axis information in the mouse event. + * + * @since 11 + * @version 1.0 + */ +typedef struct MouseEvent_AxisValue { + /** Axis type. */ + MouseEvent_Axis axis; + /** Axis value. */ + int32_t value; +} MouseEvent_AxisValue; + +/** + * @brief The mouse event to be injected. + * + * @since 11 + * @version 1.0 + */ +typedef struct OH_MouseEvent { + /** Mouse event action. */ + MouseEvent_Action action; + /** X coordinate of the mouse pointer on the screen. */ + int32_t screenX; + /** Y coordinate of the mouse pointer on the screen. */ + int32_t screenY; + /** X coordinate of the mouse pointer in the window. */ + int32_t windowX; + /** Y coordinate of the mouse pointer in the window. */ + int32_t windowY; + /** + * X axis offset relative to the previous reported mouse pointer position. When the mouse pointer is at + * the edge of the screen, the value may be less than the difference of the X coordinate reported twice. + */ + int32_t rawDeltaX; + /** Y axis offset relative to the previous reported mouse pointer position. */ + int32_t rawDeltaY; + /** Button that is currently pressed or released. */ + MouseEvent_Button button; + /** Whether ctrlKey is being pressed. */ + bool ctrlKey; + /** Whether altKey is being pressed. */ + bool altKey; + /** Whether shiftKey is being pressed. */ + bool shiftKey; + /** Whether logoKey is being pressed. */ + bool logoKey; + /** Whether fnKey is being pressed. */ + bool fnKey; + /** Whether capsLock is active. */ + bool capsLock; + /** Whether numLock is active. */ + bool numLock; + /** Whether scrollLock is active. */ + bool scrollLock; + /** Tool type */ + MouseEvent_ToolType toolType; +} OH_MouseEvent; + +#ifdef __cplusplus +} +#endif + +#endif // CAPI_MOUSE_EVENT_H diff --git a/multimodalinput/kits/c/input_event/capi_touch_event.h b/multimodalinput/kits/c/input_event/capi_touch_event.h new file mode 100644 index 0000000000000000000000000000000000000000..eefdb10f70f167bdf48569d61d13a34f118873ec --- /dev/null +++ b/multimodalinput/kits/c/input_event/capi_touch_event.h @@ -0,0 +1,167 @@ +/* + * Copyright (c) 2024 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. + */ + +#ifndef CAPI_TOUCH_EVENT_H +#define CAPI_TOUCH_EVENT_H + +/** + * @addtogroup OHInput + * @{ + * + * @brief Provides the C interface in the multi-modal input domain. + * + * @since 11 + * @version 1.0 + */ + +/** + * @file capi_touch_event.h + * + * @brief Defines the touch event structure and related enumeration values. + * + * @syscap SystemCapability.MultimodalInput.Input.InputSimulator + * @library libohinput.so + * @since 11 + * @version 1.0 + */ + +#include + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @brief Enumerated values of touch event action. + * + * @since 11 + * @version 1.0 + */ +typedef enum { + /** Touch cancelled. */ + TOUCH_ACTION_CANCEL = 0, + /** Touch pressed. */ + TOUCH_ACTION_DOWN = 1, + /** Touch moved. */ + TOUCH_ACTION_MOVE = 2, + /** Touch lifted. */ + TOUCH_ACTION_UP = 3, +} TouchEvent_Action; + +/** + * @brief Enumerated values of touch event source type. + * + * @since 11 + * @version 1.0 + */ +typedef enum { + /** Touchscreen. */ + TOUCH_SOURCE_TYPE_TOUCH_SCREEN = 0, + /** Stylus. */ + TOUCH_SOURCE_TYPE_PEN = 1, + /** Touchpad. */ + TOUCH_SOURCE_TYPE_TOUCH_PAD = 2 +} TouchEvent_SourceType; + +/** + * @brief Enumerated values of touch event tool type. + * + * @since 11 + * @version 1.0 + */ +typedef enum { + /** Finger. */ + TOUCH_TOOLTYPE_FINGER = 0, + /** Stylus. */ + TOUCH_TOOLTYPE_PEN = 1, + /** Rubber. */ + TOUCH_TOOLTYPE_RUBBER = 2, + /** Brush. */ + TOUCH_TOOLTYPE_BRUSH = 3, + /** Pencil. */ + TOUCH_TOOLTYPE_PENCIL = 4, + /** Air brush. */ + TOUCH_TOOLTYPE_AIRBRUSH = 5, + /** Mouse. */ + TOUCH_TOOLTYPE_MOUSE = 6, + /** Lens. */ + TOUCH_TOOLTYPE_LENS = 7, +} TouchEvent_ToolType; + +/** + * @brief Information structure of the touch point in a touch event. + * + * @since 11 + * @version 1.0 + */ +typedef struct TouchEvent_Point { + /** Pointer identifier. */ + int32_t id; + /** Time stamp when touch is pressed. */ + int32_t pressedTime; + /** X coordinate of the touch position on the screen. */ + int32_t screenX; + /** Y coordinate of the touch position on the screen. */ + int32_t screenY; + /** X coordinate of the touch position in the window. */ + int32_t windowX; + /** Y coordinate of the touch position in the window. */ + int32_t windowY; + /** Pressure value. The value range is [0.0, 1.0]. The value 0.0 indicates that the pressure is not supported. */ + int32_t pressure; + /** Width of the contact area when touch is pressed. */ + int32_t width; + /** Height of the contact area when touch is pressed. */ + int32_t height; + /** Angle relative to the YZ plane. The value range is [-90, 90]. A positive value indicates a rightward tilt. */ + int32_t tiltX; + /** Angle relative to the XZ plane. The value range is [-90, 90]. A positive value indicates a downward tilt. */ + int32_t tiltY; + /** Center point X of the tool area. */ + int32_t toolX; + /** Center point Y of the tool area. */ + int32_t toolY; + /** Width of the tool area. */ + int32_t toolWidth; + /** Height of the tool area. */ + int32_t toolHeight; + /** X coordinate of the input device. */ + int32_t rawX; + /** Y coordinate of the input device. */ + int32_t rawY; + /** Tool type. */ + TouchEvent_ToolType toolType; +} TouchEvent_Point; + +/** + * @brief The touch event to be injected. + * + * @since 11 + * @version 1.0 + */ +typedef struct OH_TouchEvent { + /** Touch action. */ + TouchEvent_Action action; + /** Current touch point. */ + TouchEvent_Point touch; + /** Device type of the touch source. */ + TouchEvent_SourceType sourceType; +} OH_TouchEvent; + +#ifdef __cplusplus +} +#endif + +#endif // CAPI_TOUCH_EVENT_H diff --git a/multimodalinput/kits/c/ohinput.ndk.json b/multimodalinput/kits/c/ohinput.ndk.json new file mode 100644 index 0000000000000000000000000000000000000000..b07d85d00ef389044df962df2a0870bdc830f339 --- /dev/null +++ b/multimodalinput/kits/c/ohinput.ndk.json @@ -0,0 +1,14 @@ +[ + { + "first_introduced": "11", + "name": "OH_InputEventClient_InjectEvent" + }, + { + "first_introduced": "11", + "name": "OH_InputEventClient_InjectMouseEvent" + }, + { + "first_introduced": "11", + "name": "OH_InputEventClient_InjectTouchEvent" + } +] \ No newline at end of file