1# Copyright (c) 2021-2024 Huawei Device Co., Ltd. 2# Licensed under the Apache License, Version 2.0 (the "License"); 3# you may not use this file except in compliance with the License. 4# You may obtain a copy of the License at 5# 6# http://www.apache.org/licenses/LICENSE-2.0 7# 8# Unless required by applicable law or agreed to in writing, software 9# distributed under the License is distributed on an "AS IS" BASIS, 10# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11# See the License for the specific language governing permissions and 12# limitations under the License. 13 14import("//build/config/components/multimodalinput/cursor_config.gni") 15import("//build/ohos.gni") 16 17mmi_part_name = "input" 18mmi_subsystem_name = "multimodalinput" 19mmi_path = "//foundation/multimodalinput/input" 20graphics_path = "//foundation/graphic/graphic_2d/rosen/modules" 21preferences_path = "//foundation/distributeddatamgr/preferences" 22ability_runtime_path = "//foundation/ability/ability_runtime" 23security_component_path = "//base/security" 24c_utils_root = "//commonlibrary/c_utils" 25hilog_root = "//base/hiviewdfx/hilog" 26 27declare_args() { 28 call_manager_service_enabled = false 29 resource_schedule_service_enabled = false 30 screenlock_manager_enabled = false 31 input_feature_product = "default" 32 input_feature_enable_pgo = false 33 input_feature_pgo_path = "" 34 input_feature_combination_key = true 35 input_feature_pointer_drawing = true 36 input_feature_interceptor = true 37 input_feature_monitor = true 38 input_feature_keyboard = true 39 input_feature_switch = true 40 input_feature_mouse = true 41 input_feature_joystick = true 42 input_feature_touchscreen = true 43 input_feature_input_device = true 44 input_feature_coverage = false 45 input_feature_short_key = true 46 input_ext_feature_anco = false 47 input_ext_feature_fingersense = true 48 input_ext_feature_gesturesense = true 49 input_feature_fingerprint = false 50 input_feature_crown = true 51 input_new_knuckle_dynamic_enabled = true 52 53 if (defined(global_parts_info) && 54 defined(global_parts_info.telephony_call_manager)) { 55 call_manager_service_enabled = true 56 } 57 58 if (defined(global_parts_info) && 59 defined(global_parts_info.resourceschedule_resource_schedule_service)) { 60 resource_schedule_service_enabled = true 61 } 62 63 if (defined(global_parts_info) && 64 defined(global_parts_info.theme_screenlock_mgr)) { 65 screenlock_manager_enabled = true 66 } 67 68 if (is_emulator) { 69 input_feature_pointer_drawing = false 70 } 71 72 uinput_inject_sources = [ 73 "uinput/hdf_device_event_dispatch.cpp", 74 "uinput/hdf_device_event_manager.cpp", 75 "uinput/inject_thread.cpp", 76 "uinput/keyboard_inject.cpp", 77 "uinput/virtual_device.cpp", 78 "uinput/virtual_keyboard.cpp", 79 "uinput/virtual_touch_screen.cpp", 80 ] 81 82 libmmi_common_sources = [ 83 "events/src/axis_event.cpp", 84 "events/src/input_device.cpp", 85 "events/src/input_event.cpp", 86 "events/src/key_event.cpp", 87 "events/src/key_option.cpp", 88 "events/src/pointer_event.cpp", 89 ] 90 91 libmmi_client_sources = [ 92 "event_handler/src/anr_handler.cpp", 93 "event_handler/src/bytrace_adapter.cpp", 94 "event_handler/src/client_msg_handler.cpp", 95 "event_handler/src/input_device_impl.cpp", 96 "event_handler/src/input_handler_manager.cpp", 97 "event_handler/src/input_manager_impl.cpp", 98 "event_handler/src/multimodal_event_handler.cpp", 99 "event_handler/src/scene_board_judgement.cpp", 100 "events/src/input_manager.cpp", 101 "module_loader/src/mmi_client.cpp", 102 "module_loader/src/mmi_fd_listener.cpp", 103 ] 104 105 libmmi_service_sources = [ 106 "$mmi_path/frameworks/proxy/event_handler/src/bytrace_adapter.cpp", 107 "$mmi_path/frameworks/proxy/event_handler/src/scene_board_judgement.cpp", 108 "app_state_manager/src/app_state_observer.cpp", 109 "delegate_task/src/delegate_interface.cpp", 110 "delegate_task/src/delegate_tasks.cpp", 111 "device_config/src/device_config_file_parser.cpp", 112 "device_manager/src/input_device_manager.cpp", 113 "device_state_manager/src/device_event_monitor.cpp", 114 "dfx/src/dfx_hisysevent.cpp", 115 "event_dispatch/src/event_dispatch_handler.cpp", 116 "event_dump/src/event_dump.cpp", 117 "event_handler/src/anr_manager.cpp", 118 "event_handler/src/event_normalize_handler.cpp", 119 "event_handler/src/input_event_handler.cpp", 120 "event_handler/src/key_auto_repeat.cpp", 121 "event_handler/src/key_event_value_transformation.cpp", 122 "event_handler/src/key_map_manager.cpp", 123 "fingersense_wrapper/src/fingersense_wrapper.cpp", 124 "gesturesense_wrapper/src/gesturesense_wrapper.cpp", 125 "hardware_cursor_pointer_manager/src/hardware_cursor_pointer_manager.cpp", 126 "key_command/src/setting_datashare.cpp", 127 "key_command/src/setting_observer.cpp", 128 "libinput_adapter/src/hotplug_detector.cpp", 129 "libinput_adapter/src/libinput_adapter.cpp", 130 "message_handle/src/authorization_dialog.cpp", 131 "message_handle/src/authorize_helper.cpp", 132 "message_handle/src/client_death_handler.cpp", 133 "message_handle/src/inject_notice_manager.cpp", 134 "message_handle/src/server_msg_handler.cpp", 135 "module_loader/src/app_debug_listener.cpp", 136 "module_loader/src/mmi_service.cpp", 137 "module_loader/src/multimodal_input_preferences_manager.cpp", 138 "module_loader/src/uds_server.cpp", 139 "module_loader/src/watchdog_task.cpp", 140 "nap_process/src/nap_process.cpp", 141 "permission_helper/src/permission_helper.cpp", 142 "timer_manager/src/timer_manager.cpp", 143 "window_manager/src/input_display_bind_helper.cpp", 144 "window_manager/src/input_windows_manager.cpp", 145 ] 146 147 infraredemitter_sources = [ "src/js_register_module.cpp" ] 148 149 inputdevice_sources = [ 150 "src/js_event_target.cpp", 151 "src/js_input_device_context.cpp", 152 "src/js_input_device_manager.cpp", 153 "src/js_util.cpp", 154 "src/native_register_module.cpp", 155 ] 156 157 inputmonitor_sources = [ 158 "src/js_input_monitor.cpp", 159 "src/js_input_monitor_manager.cpp", 160 "src/js_input_monitor_module.cpp", 161 ] 162 163 patch_gen_libinput_third_mmi_sources = [ 164 root_out_dir + "/diff_libinput_mmi/src/evdev-debounce.c", 165 root_out_dir + "/diff_libinput_mmi/src/evdev-fallback.c", 166 root_out_dir + "/diff_libinput_mmi/src/evdev-joystick.c", 167 root_out_dir + "/diff_libinput_mmi/src/evdev-privacy-switch.c", 168 root_out_dir + "/diff_libinput_mmi/src/evdev-middle-button.c", 169 root_out_dir + "/diff_libinput_mmi/src/evdev-mt-touchpad-buttons.c", 170 root_out_dir + "/diff_libinput_mmi/src/evdev-mt-touchpad-edge-scroll.c", 171 root_out_dir + "/diff_libinput_mmi/src/evdev-mt-touchpad-gestures.c", 172 root_out_dir + "/diff_libinput_mmi/src/evdev-mt-touchpad-tap.c", 173 root_out_dir + "/diff_libinput_mmi/src/evdev-mt-touchpad-thumb.c", 174 root_out_dir + "/diff_libinput_mmi/src/evdev-mt-touchpad.c", 175 root_out_dir + "/diff_libinput_mmi/src/evdev-tablet-pad-leds.c", 176 root_out_dir + "/diff_libinput_mmi/src/evdev-tablet-pad.c", 177 root_out_dir + "/diff_libinput_mmi/src/evdev-tablet.c", 178 root_out_dir + "/diff_libinput_mmi/src/evdev-totem.c", 179 root_out_dir + "/diff_libinput_mmi/src/evdev-wheel.c", 180 root_out_dir + "/diff_libinput_mmi/src/evdev.c", 181 root_out_dir + "/diff_libinput_mmi/src/filter-custom.c", 182 root_out_dir + "/diff_libinput_mmi/src/filter-flat.c", 183 root_out_dir + "/diff_libinput_mmi/src/filter-low-dpi.c", 184 root_out_dir + "/diff_libinput_mmi/src/filter-mouse.c", 185 root_out_dir + "/diff_libinput_mmi/src/filter-tablet.c", 186 root_out_dir + "/diff_libinput_mmi/src/filter-touchpad-flat.c", 187 root_out_dir + "/diff_libinput_mmi/src/filter-touchpad-x230.c", 188 root_out_dir + "/diff_libinput_mmi/src/filter-touchpad.c", 189 root_out_dir + "/diff_libinput_mmi/src/filter-trackpoint-flat.c", 190 root_out_dir + "/diff_libinput_mmi/src/filter-trackpoint.c", 191 root_out_dir + "/diff_libinput_mmi/src/filter.c", 192 root_out_dir + "/diff_libinput_mmi/src/libinput-util.c", 193 root_out_dir + "/diff_libinput_mmi/src/libinput.c", 194 root_out_dir + "/diff_libinput_mmi/src/path-seat.c", 195 root_out_dir + "/diff_libinput_mmi/src/quirks.c", 196 root_out_dir + "/diff_libinput_mmi/src/timer.c", 197 root_out_dir + "/diff_libinput_mmi/src/util-list.c", 198 root_out_dir + "/diff_libinput_mmi/src/util-prop-parsers.c", 199 root_out_dir + "/diff_libinput_mmi/src/util-ratelimit.c", 200 root_out_dir + "/diff_libinput_mmi/src/util-strings.c", 201 ] 202 203 patch_gen_libmtdev_third_mmi_sources = [ 204 root_out_dir + "/diff_libmtdev_mmi/src/caps.c", 205 root_out_dir + "/diff_libmtdev_mmi/src/core.c", 206 root_out_dir + "/diff_libmtdev_mmi/src/iobuf.c", 207 root_out_dir + "/diff_libmtdev_mmi/src/match.c", 208 root_out_dir + "/diff_libmtdev_mmi/src/match_four.c", 209 ] 210 211 event_injection_sources = [ 212 "src/device_base.cpp", 213 "src/get_device_node.cpp", 214 "src/get_device_object.cpp", 215 "src/injection_event_dispatch.cpp", 216 "src/injection_tools_help_func.cpp", 217 "src/input_parse.cpp", 218 "src/manage_inject_device.cpp", 219 "src/processing_finger_device.cpp", 220 "src/processing_game_pad_device.cpp", 221 "src/processing_joystick_device.cpp", 222 "src/processing_keyboard_device.cpp", 223 "src/processing_mouse_device.cpp", 224 "src/processing_pad_device.cpp", 225 "src/processing_pen_device.cpp", 226 "src/processing_touch_screen_device.cpp", 227 ] 228 229 libmmi_virtual_device_sources = [ 230 "src/virtual_crown.cpp", 231 "src/virtual_device.cpp", 232 "src/virtual_finger.cpp", 233 "src/virtual_gamepad.cpp", 234 "src/virtual_joystick.cpp", 235 "src/virtual_keyboard.cpp", 236 "src/virtual_keyboard_consumer_ctrl.cpp", 237 "src/virtual_keyboard_ext.cpp", 238 "src/virtual_keyboard_sys_ctrl.cpp", 239 "src/virtual_knob.cpp", 240 "src/virtual_knob_consumer_ctrl.cpp", 241 "src/virtual_knob_mouse.cpp", 242 "src/virtual_knob_sys_ctrl.cpp", 243 "src/virtual_mouse.cpp", 244 "src/virtual_pc_switch.cpp", 245 "src/virtual_pc_touchpad.cpp", 246 "src/virtual_pen.cpp", 247 "src/virtual_pen_keyboard.cpp", 248 "src/virtual_pen_mouse.cpp", 249 "src/virtual_remote_control.cpp", 250 "src/virtual_single_finger.cpp", 251 "src/virtual_single_touchscreen.cpp", 252 "src/virtual_stylus.cpp", 253 "src/virtual_touchpad.cpp", 254 "src/virtual_touchscreen.cpp", 255 "src/virtual_trackball.cpp", 256 "src/virtual_trackpad.cpp", 257 "src/virtual_trackpad_mouse.cpp", 258 "src/virtual_trackpad_sys_ctrl.cpp", 259 ] 260 261 libmmi_util_sources = [ 262 "common/src/input_event_data_transformation.cpp", 263 "common/src/klog.cpp", 264 "common/src/util.cpp", 265 "network/src/circle_stream_buffer.cpp", 266 "network/src/net_packet.cpp", 267 "network/src/stream_buffer.cpp", 268 "socket/src/uds_client.cpp", 269 "socket/src/uds_session.cpp", 270 "socket/src/uds_socket.cpp", 271 ] 272} 273 274if (input_feature_joystick) { 275 input_feature_mouse = true 276} 277 278print("input_feature_combination_key = ${input_feature_combination_key}") 279print("input_feature_pointer_drawing = ${input_feature_pointer_drawing}") 280print("input_feature_monitor = ${input_feature_monitor}") 281print("input_feature_interceptor = ${input_feature_interceptor}") 282print("input_feature_keyboard = ${input_feature_keyboard}") 283print("input_feature_switch = ${input_feature_switch}") 284print("input_feature_mouse = ${input_feature_mouse}") 285print("input_feature_joystick = ${input_feature_joystick}") 286print("input_feature_touchscreen = ${input_feature_touchscreen}") 287print("input_feature_input_device = ${input_feature_input_device}") 288print("input_feature_short_key = ${input_feature_short_key}") 289 290input_default_defines = [] 291 292if (input_new_knuckle_dynamic_enabled) { 293 input_default_defines += [ "OHOS_BUILD_ENABLE_NEW_KNUCKLE_DYNAMIC" ] 294} 295 296if (input_feature_pointer_drawing) { 297 input_default_defines += [ "OHOS_BUILD_ENABLE_POINTER_DRAWING" ] 298} 299 300if (input_feature_interceptor) { 301 input_default_defines += [ "OHOS_BUILD_ENABLE_INTERCEPTOR" ] 302} 303 304if (input_feature_keyboard) { 305 input_default_defines += [ "OHOS_BUILD_ENABLE_KEYBOARD" ] 306} 307 308if (input_feature_switch) { 309 input_default_defines += [ "OHOS_BUILD_ENABLE_SWITCH" ] 310} 311 312if (input_feature_monitor) { 313 input_default_defines += [ "OHOS_BUILD_ENABLE_MONITOR" ] 314} 315 316if (input_feature_touchscreen) { 317 input_default_defines += [ "OHOS_BUILD_ENABLE_TOUCH" ] 318} 319 320if (input_feature_mouse) { 321 input_default_defines += [ "OHOS_BUILD_ENABLE_POINTER" ] 322} 323 324if (input_feature_joystick) { 325 input_default_defines += [ "OHOS_BUILD_ENABLE_JOYSTICK" ] 326} 327 328if (input_feature_short_key) { 329 input_default_defines += [ "OHOS_BUILD_ENABLE_SHORT_KEY" ] 330} 331 332if (input_feature_fingerprint) { 333 input_default_defines += [ "OHOS_BUILD_ENABLE_FINGERPRINT" ] 334} 335 336if (input_feature_crown) { 337 input_default_defines += [ "OHOS_BUILD_ENABLE_CROWN" ] 338} 339 340if (!defined(global_parts_info) || 341 defined(global_parts_info.security_security_component_manager)) { 342 security_component_enable = true 343} else { 344 security_component_enable = false 345} 346 347if (security_component_enable) { 348 input_default_defines += [ "OHOS_BUILD_ENABLE_SECURITY_COMPONENT" ] 349} 350 351if (input_ext_feature_fingersense) { 352 input_default_defines += [ "OHOS_BUILD_ENABLE_FINGERSENSE_WRAPPER" ] 353} 354 355if (input_ext_feature_gesturesense) { 356 input_default_defines += [ "OHOS_BUILD_ENABLE_GESTURESENSE_WRAPPER" ] 357} 358 359if (input_ext_feature_anco) { 360 mmi_ext_path = "//vendor/huawei/foundation/multimodalinput/input_ext" 361 input_default_defines += [ "OHOS_BUILD_ENABLE_ANCO" ] 362 libmmi_client_sources += 363 [ "${mmi_ext_path}/anco_uds_manager/src/input_manager_ext.cpp" ] 364 365 libmmi_service_sources += [ 366 "${mmi_ext_path}/anco_uds_manager/src/anco_uds_manager.cpp", 367 "${mmi_ext_path}/anco_uds_manager/src/input_windows_manager_ext.cpp", 368 "${mmi_ext_path}/anco_uds_manager/src/mmi_service_ext.cpp", 369 ] 370 371 if (input_feature_product == "__other") { 372 libmmi_service_sources += [ "${mmi_path}/service/infrared_emitter/src/infrared_emitter_controller.cpp" ] 373 } 374} 375 376if (input_feature_product == "pc") { 377 input_default_defines += [ "OHOS_BUILD_ENABLE_HARDWARE_CURSOR" ] 378} 379 380if (input_ext_feature_magiccursor) { 381 mmi_ext_path = "//vendor/huawei/foundation/multimodalinput/input_ext" 382 g2d_ext_path = "//foundation/graphic/graphic_2d_ext" 383 g2d_path = "//foundation/graphic/graphic_2d" 384 surface_path = "//foundation/graphic/graphic_surface" 385 input_default_defines += [ "OHOS_BUILD_ENABLE_MAGICCURSOR" ] 386 libmmi_service_sources += [ 387 "${mmi_ext_path}/magic_cursor/src/dfx_hisysevent_ext.cpp", 388 "${mmi_ext_path}/magic_cursor/src/lru_cache.cpp", 389 "${mmi_ext_path}/magic_cursor/src/magic_pointer_drawing_manager.cpp", 390 "${mmi_ext_path}/magic_cursor/src/magic_pointer_drawing_manager_ext.cpp", 391 "${mmi_ext_path}/magic_cursor/src/magic_pointer_velocity_tracker.cpp", 392 "${mmi_ext_path}/magic_cursor/src/render_context_gl.cpp", 393 ] 394} 395 396if (defined(global_parts_info.multimedia_player_framework)) { 397 enable_player_framework = true 398 input_default_defines += [ "PLAYER_FRAMEWORK_EXISTS" ] 399} else { 400 enable_player_framework = false 401} 402 403if (enable_player_framework) { 404 libmmi_service_sources += 405 [ "module_loader/src/input_screen_capture_monitor_listener.cpp" ] 406} 407