PHP WebShell
Текущая директория: /usr/lib/node_modules/bitgo/node_modules/react-native/ReactAndroid/src/main/java/com/facebook/react
Просмотр файла: ReactAndroidHWInputDeviceHelper.kt
/*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
package com.facebook.react
import android.view.KeyEvent
import android.view.View
import com.facebook.react.bridge.WritableMap
import com.facebook.react.bridge.WritableNativeMap
/** Responsible for dispatching events specific for hardware inputs. */
internal class ReactAndroidHWInputDeviceHelper(private val reactRootView: ReactRootView) {
/**
* We keep a reference to the last focused view id so that we can send it as a target for key
* events and be able to send a blur event when focus changes.
*/
private var lastFocusedViewId = View.NO_ID
/** Called from [ReactRootView]. This is the main place the key events are handled. */
fun handleKeyEvent(ev: KeyEvent) {
val eventKeyCode = ev.keyCode
val eventKeyAction = ev.action
if ((eventKeyAction == KeyEvent.ACTION_UP || eventKeyAction == KeyEvent.ACTION_DOWN) &&
KEY_EVENTS_ACTIONS.containsKey(eventKeyCode)) {
dispatchEvent(KEY_EVENTS_ACTIONS[eventKeyCode], lastFocusedViewId, eventKeyAction)
}
}
/** Called from [ReactRootView] when focused view changes. */
fun onFocusChanged(newFocusedView: View) {
if (lastFocusedViewId == newFocusedView.id) {
return
}
if (lastFocusedViewId != View.NO_ID) {
dispatchEvent("blur", lastFocusedViewId)
}
lastFocusedViewId = newFocusedView.id
dispatchEvent("focus", newFocusedView.id)
}
/** Called from [ReactRootView] when the whole view hierarchy looses focus. */
fun clearFocus() {
if (lastFocusedViewId != View.NO_ID) {
dispatchEvent("blur", lastFocusedViewId)
}
lastFocusedViewId = View.NO_ID
}
private fun dispatchEvent(eventType: String?, targetViewId: Int, eventKeyAction: Int = -1) {
val event: WritableMap =
WritableNativeMap().apply {
putString("eventType", eventType)
putInt("eventKeyAction", eventKeyAction)
if (targetViewId != View.NO_ID) {
putInt("tag", targetViewId)
}
}
reactRootView.sendEvent("onHWKeyEvent", event)
}
private companion object {
/**
* Contains a mapping between handled KeyEvents and the corresponding navigation event that
* should be fired when the KeyEvent is received.
*/
private val KEY_EVENTS_ACTIONS: Map<Int, String> =
mapOf(
KeyEvent.KEYCODE_DPAD_CENTER to "select",
KeyEvent.KEYCODE_ENTER to "select",
KeyEvent.KEYCODE_SPACE to "select",
KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE to "playPause",
KeyEvent.KEYCODE_MEDIA_REWIND to "rewind",
KeyEvent.KEYCODE_MEDIA_FAST_FORWARD to "fastForward",
KeyEvent.KEYCODE_MEDIA_STOP to "stop",
KeyEvent.KEYCODE_MEDIA_NEXT to "next",
KeyEvent.KEYCODE_MEDIA_PREVIOUS to "previous",
KeyEvent.KEYCODE_DPAD_UP to "up",
KeyEvent.KEYCODE_DPAD_RIGHT to "right",
KeyEvent.KEYCODE_DPAD_DOWN to "down",
KeyEvent.KEYCODE_DPAD_LEFT to "left",
KeyEvent.KEYCODE_INFO to "info",
KeyEvent.KEYCODE_MENU to "menu")
}
}
Выполнить команду
Для локальной разработки. Не используйте в интернете!