• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (c) 2025 Huawei Device Co., Ltd.
3  * Licensed under the Apache License, Version 2.0 (the "License");
4  * you may not use this file except in compliance with the License.
5  * You may obtain a copy of the License at
6  *
7  *     http://www.apache.org/licenses/LICENSE-2.0
8  *
9  * Unless required by applicable law or agreed to in writing, software
10  * distributed under the License is distributed on an "AS IS" BASIS,
11  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12  * See the License for the specific language governing permissions and
13  * limitations under the License.
14  */
15 #include "napi/native_api.h"
16 #include "multimodalinput/oh_input_manager.h"
17 #include "multimodalinput/oh_key_code.h"
18 #include "hilog/log.h"
19 #include <bits/alltypes.h>
20 #include <thread>
21 #include <iostream>
22 
23 #undef LOG_TAG
24 #define LOG_TAG "MMI"
25 
26 const int GLOBAL_RESMGR = 0xFF00;
27 const char *TAG = "[SensorCapiSample]";
28 
QueryMaxTouchPoints1(napi_env env,napi_callback_info info)29 static napi_value QueryMaxTouchPoints1(napi_env env, napi_callback_info info)
30 {
31     napi_value result;
32 
33     Input_Result retResult = OH_Input_QueryMaxTouchPoints(nullptr);
34     OH_LOG_INFO(LOG_APP, "SUB_MMI_Input_Api_QueryMaxTouchPoints_0100 retResult:%{public}d", retResult);
35     napi_create_int32(env, (retResult == INPUT_PARAMETER_ERROR) ? 1 : 0, &result);
36     return result;
37 }
38 
QueryMaxTouchPoints2(napi_env env,napi_callback_info info)39 static napi_value QueryMaxTouchPoints2(napi_env env, napi_callback_info info)
40 {
41     napi_value result;
42 
43     int32_t count;
44     int32_t minCount = -1;
45     int32_t maxCount = 10;
46     Input_Result retResult = OH_Input_QueryMaxTouchPoints(&count);
47     OH_LOG_INFO(LOG_APP, "SUB_MMI_Input_Api_QueryMaxTouchPoints_0200 retResult:%{public}d", retResult);
48     napi_create_int32(env, (retResult == INPUT_SUCCESS && (count >= minCount && count <= maxCount)) ? 1 : 0, &result);
49     return result;
50 }
51 
InjectTouchEventGlobal1(napi_env env,napi_callback_info info)52 static napi_value InjectTouchEventGlobal1(napi_env env, napi_callback_info info)
53 {
54     napi_value result;
55 
56     struct Input_TouchEvent* touchEvent = OH_Input_CreateTouchEvent();
57     OH_Input_SetTouchEventGlobalX(touchEvent, 100);
58     OH_Input_SetTouchEventGlobalY(touchEvent, 100);
59     OH_Input_SetTouchEventAction(touchEvent, 1);
60     int32_t retResult = OH_Input_InjectTouchEventGlobal(touchEvent);
61     OH_LOG_INFO(LOG_APP, "SUB_MMI_Input_Api_InjectTouchEventGlobal_0100 retResult:%{public}d", retResult);
62     napi_create_int32(env, (touchEvent != nullptr && retResult == INPUT_PERMISSION_DENIED) ? 1 : 0, &result);
63     OH_Input_DestroyTouchEvent(&touchEvent);
64     return result;
65 }
66 
InjectTouchEventGlobal2(napi_env env,napi_callback_info info)67 static napi_value InjectTouchEventGlobal2(napi_env env, napi_callback_info info)
68 {
69     napi_value result;
70 
71     struct Input_TouchEvent* touchEvent = OH_Input_CreateTouchEvent();
72     OH_Input_SetTouchEventGlobalX(touchEvent, 100);
73     int32_t globalX = OH_Input_GetTouchEventGlobalX(touchEvent);
74     OH_LOG_INFO(LOG_APP, "SUB_MMI_Input_Api_InjectTouchEventGlobal_0200 globalX:%{public}d", globalX);
75     napi_create_int32(env, (touchEvent != nullptr && globalX == 100) ? 1 : 0, &result);
76     OH_Input_DestroyTouchEvent(&touchEvent);
77     return result;
78 }
79 
InjectTouchEventGlobal3(napi_env env,napi_callback_info info)80 static napi_value InjectTouchEventGlobal3(napi_env env, napi_callback_info info)
81 {
82     napi_value result;
83 
84     struct Input_TouchEvent* touchEvent = OH_Input_CreateTouchEvent();
85     OH_Input_SetTouchEventGlobalY(touchEvent, 100);
86     int32_t globalY = OH_Input_GetTouchEventGlobalY(touchEvent);
87     OH_LOG_INFO(LOG_APP, "SUB_MMI_Input_Api_InjectTouchEventGlobal_0300 globalY:%{public}d", globalY);
88     napi_create_int32(env, (touchEvent != nullptr && globalY == 100) ? 1 : 0, &result);
89     OH_Input_DestroyTouchEvent(&touchEvent);
90     return result;
91 }
92 
AxisEventGlobal1(napi_env env,napi_callback_info info)93 static napi_value AxisEventGlobal1(napi_env env, napi_callback_info info)
94 {
95     napi_value result;
96 
97     struct Input_AxisEvent* axisEvent = OH_Input_CreateAxisEvent();
98     OH_Input_SetAxisEventGlobalX(axisEvent, 100);
99     int32_t globalX;
100     Input_Result retResult = OH_Input_GetAxisEventGlobalX(axisEvent, &globalX);
101     OH_LOG_INFO(LOG_APP, "SUB_MMI_Input_Api_AxisEventGlobal_0100 retResult:%{public}d", retResult);
102     napi_create_int32(env, (globalX == 100 && retResult == INPUT_SUCCESS) ? 1 : 0, &result);
103     OH_Input_DestroyAxisEvent(&axisEvent);
104     return result;
105 }
106 
AxisEventGlobal2(napi_env env,napi_callback_info info)107 static napi_value AxisEventGlobal2(napi_env env, napi_callback_info info)
108 {
109     napi_value result;
110 
111     struct Input_AxisEvent* axisEvent = OH_Input_CreateAxisEvent();
112     OH_Input_SetAxisEventGlobalY(axisEvent, 99);
113     int32_t globalY;
114     Input_Result retResult = OH_Input_GetAxisEventGlobalY(axisEvent, &globalY);
115     OH_LOG_INFO(LOG_APP, "SUB_MMI_Input_Api_AxisEventGlobal_0200 retResult:%{public}d", retResult);
116     napi_create_int32(env, (globalY == 99 && retResult == INPUT_SUCCESS) ? 1 : 0, &result);
117     OH_Input_DestroyAxisEvent(&axisEvent);
118     return result;
119 }
120 
121 EXTERN_C_START
Init(napi_env env,napi_value exports)122 static napi_value Init(napi_env env, napi_value exports)
123 {
124     napi_property_descriptor desc[] = {
125         {"QueryMaxTouchPoints1", nullptr, QueryMaxTouchPoints1, nullptr, nullptr, nullptr, napi_default, nullptr},
126         {"QueryMaxTouchPoints2", nullptr, QueryMaxTouchPoints2, nullptr, nullptr, nullptr, napi_default, nullptr},
127         {"InjectTouchEventGlobal1", nullptr, InjectTouchEventGlobal1, nullptr, nullptr, nullptr, napi_default, nullptr},
128         {"InjectTouchEventGlobal2", nullptr, InjectTouchEventGlobal2, nullptr, nullptr, nullptr, napi_default, nullptr},
129         {"InjectTouchEventGlobal3", nullptr, InjectTouchEventGlobal3, nullptr, nullptr, nullptr, napi_default, nullptr},
130         {"AxisEventGlobal1", nullptr, AxisEventGlobal1, nullptr, nullptr, nullptr, napi_default, nullptr},
131         {"AxisEventGlobal2", nullptr, AxisEventGlobal2, nullptr, nullptr, nullptr, napi_default, nullptr},
132     };
133     napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);
134     return exports;
135 }
136 EXTERN_C_END
137 
138 static napi_module demoModule = {
139     .nm_version = 1,
140     .nm_flags = 0,
141     .nm_filename = nullptr,
142     .nm_register_func = Init,
143     .nm_modname = "libtouchndk",
144     .nm_priv = ((void *)0),
145     .reserved = {0},
146 };
147 
RegisterEntryModule(void)148 extern "C" __attribute__((constructor)) void RegisterEntryModule(void)
149 {
150     napi_module_register(&demoModule);
151 }