@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.1.4 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintrc.js +1 -1
- package/.prettierrc.json +1 -0
- package/dist/commonjs/AFK/AFKController.js +110 -0
- package/dist/commonjs/AFK/AFKController.js.map +1 -0
- package/dist/commonjs/Config/Config.js +560 -0
- package/dist/commonjs/Config/Config.js.map +1 -0
- package/dist/commonjs/Config/SettingBase.js +99 -0
- package/dist/commonjs/Config/SettingBase.js.map +1 -0
- package/dist/commonjs/Config/SettingFlag.js +50 -0
- package/dist/commonjs/Config/SettingFlag.js.map +1 -0
- package/dist/commonjs/Config/SettingNumber.js +84 -0
- package/dist/commonjs/Config/SettingNumber.js.map +1 -0
- package/dist/commonjs/Config/SettingOption.js +85 -0
- package/dist/commonjs/Config/SettingOption.js.map +1 -0
- package/dist/commonjs/Config/SettingText.js +43 -0
- package/dist/commonjs/Config/SettingText.js.map +1 -0
- package/dist/commonjs/DataChannel/DataChannelController.js +107 -0
- package/dist/commonjs/DataChannel/DataChannelController.js.map +1 -0
- package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js +95 -0
- package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js.map +1 -0
- package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js +19 -0
- package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js.map +1 -0
- package/dist/commonjs/DataChannel/DataChannelSender.js +44 -0
- package/dist/commonjs/DataChannel/DataChannelSender.js.map +1 -0
- package/dist/commonjs/DataChannel/InitialSettings.js +42 -0
- package/dist/commonjs/DataChannel/InitialSettings.js.map +1 -0
- package/dist/commonjs/DataChannel/LatencyTestResults.js +61 -0
- package/dist/commonjs/DataChannel/LatencyTestResults.js.map +1 -0
- package/dist/commonjs/FreezeFrame/FreezeFrame.js +94 -0
- package/dist/commonjs/FreezeFrame/FreezeFrame.js.map +1 -0
- package/dist/commonjs/FreezeFrame/FreezeFrameController.js +96 -0
- package/dist/commonjs/FreezeFrame/FreezeFrameController.js.map +1 -0
- package/dist/commonjs/Inputs/GamepadController.js +189 -0
- package/dist/commonjs/Inputs/GamepadController.js.map +1 -0
- package/dist/commonjs/Inputs/GamepadTypes.js +22 -0
- package/dist/commonjs/Inputs/GamepadTypes.js.map +1 -0
- package/dist/commonjs/Inputs/IInputController.js +3 -0
- package/dist/commonjs/Inputs/IInputController.js.map +1 -0
- package/dist/commonjs/Inputs/InputClassesFactory.js +97 -0
- package/dist/commonjs/Inputs/InputClassesFactory.js.map +1 -0
- package/dist/commonjs/Inputs/KeyCodes.js +113 -0
- package/dist/commonjs/Inputs/KeyCodes.js.map +1 -0
- package/dist/commonjs/Inputs/KeyboardController.js +138 -0
- package/dist/commonjs/Inputs/KeyboardController.js.map +1 -0
- package/dist/commonjs/Inputs/MouseButtons.js +29 -0
- package/dist/commonjs/Inputs/MouseButtons.js.map +1 -0
- package/dist/commonjs/Inputs/MouseController.js +98 -0
- package/dist/commonjs/Inputs/MouseController.js.map +1 -0
- package/dist/commonjs/Inputs/MouseControllerHovering.js +94 -0
- package/dist/commonjs/Inputs/MouseControllerHovering.js.map +1 -0
- package/dist/commonjs/Inputs/MouseControllerLocked.js +154 -0
- package/dist/commonjs/Inputs/MouseControllerLocked.js.map +1 -0
- package/dist/commonjs/Inputs/SpecialKeyCodes.js +20 -0
- package/dist/commonjs/Inputs/SpecialKeyCodes.js.map +1 -0
- package/dist/commonjs/Inputs/TouchController.js +124 -0
- package/dist/commonjs/Inputs/TouchController.js.map +1 -0
- package/dist/commonjs/Inputs/TouchControllerFake.js +92 -0
- package/dist/commonjs/Inputs/TouchControllerFake.js.map +1 -0
- package/dist/commonjs/Inputs/XRGamepadController.js +125 -0
- package/dist/commonjs/Inputs/XRGamepadController.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/AggregatedStats.js +253 -0
- package/dist/commonjs/PeerConnectionController/AggregatedStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/CandidatePairStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/CandidatePairStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/CandidateStat.js +11 -0
- package/dist/commonjs/PeerConnectionController/CandidateStat.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/CodecStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/CodecStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/DataChannelStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/DataChannelStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/InboundRTPStats.js +23 -0
- package/dist/commonjs/PeerConnectionController/InboundRTPStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/InboundTrackStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/InboundTrackStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js +17 -0
- package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/PeerConnectionController.js +585 -0
- package/dist/commonjs/PeerConnectionController/PeerConnectionController.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/SessionStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/SessionStats.js.map +1 -0
- package/dist/commonjs/PeerConnectionController/StreamStats.js +11 -0
- package/dist/commonjs/PeerConnectionController/StreamStats.js.map +1 -0
- package/dist/commonjs/PixelStreaming/PixelStreaming.js +608 -0
- package/dist/commonjs/PixelStreaming/PixelStreaming.js.map +1 -0
- package/dist/commonjs/UI/OnScreenKeyboard.js +83 -0
- package/dist/commonjs/UI/OnScreenKeyboard.js.map +1 -0
- package/dist/commonjs/UeInstanceMessage/ResponseController.js +39 -0
- package/dist/commonjs/UeInstanceMessage/ResponseController.js.map +1 -0
- package/dist/commonjs/UeInstanceMessage/SendMessageController.js +121 -0
- package/dist/commonjs/UeInstanceMessage/SendMessageController.js.map +1 -0
- package/dist/commonjs/UeInstanceMessage/StreamMessageController.js +211 -0
- package/dist/commonjs/UeInstanceMessage/StreamMessageController.js.map +1 -0
- package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js +50 -0
- package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js.map +1 -0
- package/dist/commonjs/Util/EventEmitter.js +387 -0
- package/dist/commonjs/Util/EventEmitter.js.map +1 -0
- package/dist/commonjs/Util/FileUtil.js +109 -0
- package/dist/commonjs/Util/FileUtil.js.map +1 -0
- package/dist/commonjs/Util/IURLSearchParams.js +26 -0
- package/dist/commonjs/Util/IURLSearchParams.js.map +1 -0
- package/dist/commonjs/Util/InputCoordTranslator.js +50 -0
- package/dist/commonjs/Util/InputCoordTranslator.js.map +1 -0
- package/dist/commonjs/Util/RTCUtils.js +41 -0
- package/dist/commonjs/Util/RTCUtils.js.map +1 -0
- package/dist/commonjs/VideoPlayer/StreamController.js +68 -0
- package/dist/commonjs/VideoPlayer/StreamController.js.map +1 -0
- package/dist/commonjs/VideoPlayer/VideoPlayer.js +178 -0
- package/dist/commonjs/VideoPlayer/VideoPlayer.js.map +1 -0
- package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js +1224 -0
- package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js.map +1 -0
- package/dist/commonjs/WebXR/WebXRController.js +361 -0
- package/dist/commonjs/WebXR/WebXRController.js.map +1 -0
- package/dist/commonjs/pixelstreamingfrontend.js +71 -0
- package/dist/commonjs/pixelstreamingfrontend.js.map +1 -0
- package/dist/esm/AFK/AFKController.js +106 -0
- package/dist/esm/AFK/AFKController.js.map +1 -0
- package/dist/esm/Config/Config.js +552 -0
- package/dist/esm/Config/Config.js.map +1 -0
- package/dist/esm/Config/SettingBase.js +95 -0
- package/dist/esm/Config/SettingBase.js.map +1 -0
- package/dist/esm/Config/SettingFlag.js +46 -0
- package/dist/esm/Config/SettingFlag.js.map +1 -0
- package/dist/esm/Config/SettingNumber.js +80 -0
- package/dist/esm/Config/SettingNumber.js.map +1 -0
- package/dist/esm/Config/SettingOption.js +81 -0
- package/dist/esm/Config/SettingOption.js.map +1 -0
- package/dist/esm/Config/SettingText.js +39 -0
- package/dist/esm/Config/SettingText.js.map +1 -0
- package/dist/esm/DataChannel/DataChannelController.js +103 -0
- package/dist/esm/DataChannel/DataChannelController.js.map +1 -0
- package/dist/esm/DataChannel/DataChannelLatencyTestController.js +91 -0
- package/dist/esm/DataChannel/DataChannelLatencyTestController.js.map +1 -0
- package/dist/esm/DataChannel/DataChannelLatencyTestResults.js +15 -0
- package/dist/esm/DataChannel/DataChannelLatencyTestResults.js.map +1 -0
- package/dist/esm/DataChannel/DataChannelSender.js +40 -0
- package/dist/esm/DataChannel/DataChannelSender.js.map +1 -0
- package/dist/esm/DataChannel/InitialSettings.js +35 -0
- package/dist/esm/DataChannel/InitialSettings.js.map +1 -0
- package/dist/esm/DataChannel/LatencyTestResults.js +57 -0
- package/dist/esm/DataChannel/LatencyTestResults.js.map +1 -0
- package/dist/esm/FreezeFrame/FreezeFrame.js +90 -0
- package/dist/esm/FreezeFrame/FreezeFrame.js.map +1 -0
- package/dist/esm/FreezeFrame/FreezeFrameController.js +92 -0
- package/dist/esm/FreezeFrame/FreezeFrameController.js.map +1 -0
- package/dist/esm/Inputs/GamepadController.js +185 -0
- package/dist/esm/Inputs/GamepadController.js.map +1 -0
- package/dist/esm/Inputs/GamepadTypes.js +18 -0
- package/dist/esm/Inputs/GamepadTypes.js.map +1 -0
- package/dist/esm/Inputs/IInputController.js +2 -0
- package/dist/esm/Inputs/IInputController.js.map +1 -0
- package/dist/esm/Inputs/InputClassesFactory.js +92 -0
- package/dist/esm/Inputs/InputClassesFactory.js.map +1 -0
- package/dist/esm/Inputs/KeyCodes.js +110 -0
- package/dist/esm/Inputs/KeyCodes.js.map +1 -0
- package/dist/esm/Inputs/KeyboardController.js +134 -0
- package/dist/esm/Inputs/KeyboardController.js.map +1 -0
- package/dist/esm/Inputs/MouseButtons.js +24 -0
- package/dist/esm/Inputs/MouseButtons.js.map +1 -0
- package/dist/esm/Inputs/MouseController.js +94 -0
- package/dist/esm/Inputs/MouseController.js.map +1 -0
- package/dist/esm/Inputs/MouseControllerHovering.js +90 -0
- package/dist/esm/Inputs/MouseControllerHovering.js.map +1 -0
- package/dist/esm/Inputs/MouseControllerLocked.js +150 -0
- package/dist/esm/Inputs/MouseControllerLocked.js.map +1 -0
- package/dist/esm/Inputs/SpecialKeyCodes.js +16 -0
- package/dist/esm/Inputs/SpecialKeyCodes.js.map +1 -0
- package/dist/esm/Inputs/TouchController.js +120 -0
- package/dist/esm/Inputs/TouchController.js.map +1 -0
- package/dist/esm/Inputs/TouchControllerFake.js +88 -0
- package/dist/esm/Inputs/TouchControllerFake.js.map +1 -0
- package/dist/esm/Inputs/XRGamepadController.js +121 -0
- package/dist/esm/Inputs/XRGamepadController.js.map +1 -0
- package/dist/esm/PeerConnectionController/AggregatedStats.js +249 -0
- package/dist/esm/PeerConnectionController/AggregatedStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/CandidatePairStats.js +7 -0
- package/dist/esm/PeerConnectionController/CandidatePairStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/CandidateStat.js +7 -0
- package/dist/esm/PeerConnectionController/CandidateStat.js.map +1 -0
- package/dist/esm/PeerConnectionController/CodecStats.js +7 -0
- package/dist/esm/PeerConnectionController/CodecStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/DataChannelStats.js +7 -0
- package/dist/esm/PeerConnectionController/DataChannelStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/InboundRTPStats.js +17 -0
- package/dist/esm/PeerConnectionController/InboundRTPStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/InboundTrackStats.js +7 -0
- package/dist/esm/PeerConnectionController/InboundTrackStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +12 -0
- package/dist/esm/PeerConnectionController/OutBoundRTPStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/PeerConnectionController.js +581 -0
- package/dist/esm/PeerConnectionController/PeerConnectionController.js.map +1 -0
- package/dist/esm/PeerConnectionController/SessionStats.js +7 -0
- package/dist/esm/PeerConnectionController/SessionStats.js.map +1 -0
- package/dist/esm/PeerConnectionController/StreamStats.js +7 -0
- package/dist/esm/PeerConnectionController/StreamStats.js.map +1 -0
- package/dist/esm/PixelStreaming/PixelStreaming.js +604 -0
- package/dist/esm/PixelStreaming/PixelStreaming.js.map +1 -0
- package/dist/esm/UI/OnScreenKeyboard.js +79 -0
- package/dist/esm/UI/OnScreenKeyboard.js.map +1 -0
- package/dist/esm/UeInstanceMessage/ResponseController.js +35 -0
- package/dist/esm/UeInstanceMessage/ResponseController.js.map +1 -0
- package/dist/esm/UeInstanceMessage/SendMessageController.js +117 -0
- package/dist/esm/UeInstanceMessage/SendMessageController.js.map +1 -0
- package/dist/esm/UeInstanceMessage/StreamMessageController.js +206 -0
- package/dist/esm/UeInstanceMessage/StreamMessageController.js.map +1 -0
- package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js +46 -0
- package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js.map +1 -0
- package/dist/esm/Util/EventEmitter.js +346 -0
- package/dist/esm/Util/EventEmitter.js.map +1 -0
- package/dist/esm/Util/FileUtil.js +104 -0
- package/dist/esm/Util/FileUtil.js.map +1 -0
- package/dist/esm/Util/IURLSearchParams.js +22 -0
- package/dist/esm/Util/IURLSearchParams.js.map +1 -0
- package/dist/esm/Util/InputCoordTranslator.js +46 -0
- package/dist/esm/Util/InputCoordTranslator.js.map +1 -0
- package/dist/esm/Util/RTCUtils.js +37 -0
- package/dist/esm/Util/RTCUtils.js.map +1 -0
- package/dist/esm/VideoPlayer/StreamController.js +64 -0
- package/dist/esm/VideoPlayer/StreamController.js.map +1 -0
- package/dist/esm/VideoPlayer/VideoPlayer.js +174 -0
- package/dist/esm/VideoPlayer/VideoPlayer.js.map +1 -0
- package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +1220 -0
- package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js.map +1 -0
- package/dist/esm/WebXR/WebXRController.js +357 -0
- package/dist/esm/WebXR/WebXRController.js.map +1 -0
- package/dist/esm/pixelstreamingfrontend.js +25 -0
- package/dist/esm/pixelstreamingfrontend.js.map +1 -0
- package/{types → dist/types}/AFK/AFKController.d.ts +38 -39
- package/{types → dist/types}/Config/Config.d.ts +220 -219
- package/{types → dist/types}/Config/SettingBase.d.ts +43 -30
- package/{types → dist/types}/Config/SettingFlag.d.ts +24 -33
- package/{types → dist/types}/Config/SettingNumber.d.ts +41 -45
- package/{types → dist/types}/Config/SettingOption.d.ts +41 -43
- package/{types → dist/types}/Config/SettingText.d.ts +21 -29
- package/{types → dist/types}/DataChannel/DataChannelController.d.ts +59 -59
- package/{types → dist/types}/DataChannel/DataChannelLatencyTestController.d.ts +25 -26
- package/{types → dist/types}/DataChannel/DataChannelLatencyTestResults.d.ts +46 -46
- package/{types → dist/types}/DataChannel/DataChannelSender.d.ts +21 -21
- package/{types → dist/types}/DataChannel/InitialSettings.d.ts +44 -44
- package/{types → dist/types}/DataChannel/LatencyTestResults.d.ts +31 -31
- package/{types → dist/types}/FreezeFrame/FreezeFrame.d.ts +36 -36
- package/{types → dist/types}/FreezeFrame/FreezeFrameController.d.ts +37 -37
- package/dist/types/Inputs/GamepadController.d.ts +61 -0
- package/dist/types/Inputs/GamepadTypes.d.ts +15 -0
- package/dist/types/Inputs/IInputController.d.ts +16 -0
- package/{types → dist/types}/Inputs/InputClassesFactory.d.ts +53 -54
- package/dist/types/Inputs/KeyCodes.d.ts +5 -0
- package/dist/types/Inputs/KeyboardController.d.ts +34 -0
- package/{types → dist/types}/Inputs/MouseButtons.d.ts +22 -22
- package/dist/types/Inputs/MouseController.d.ts +40 -0
- package/dist/types/Inputs/MouseControllerHovering.d.ts +26 -0
- package/dist/types/Inputs/MouseControllerLocked.d.ts +31 -0
- package/{types → dist/types}/Inputs/SpecialKeyCodes.d.ts +14 -14
- package/dist/types/Inputs/TouchController.d.ts +28 -0
- package/dist/types/Inputs/TouchControllerFake.d.ts +29 -0
- package/{types → dist/types}/Inputs/XRGamepadController.d.ts +15 -22
- package/{types → dist/types}/PeerConnectionController/AggregatedStats.d.ts +82 -84
- package/{types → dist/types}/PeerConnectionController/CandidatePairStats.d.ts +22 -22
- package/{types → dist/types}/PeerConnectionController/CandidateStat.d.ts +13 -13
- package/{types → dist/types}/PeerConnectionController/CodecStats.d.ts +14 -14
- package/{types → dist/types}/PeerConnectionController/DataChannelStats.d.ts +15 -15
- package/{types → dist/types}/PeerConnectionController/InboundRTPStats.d.ts +141 -141
- package/{types → dist/types}/PeerConnectionController/InboundTrackStats.d.ts +32 -32
- package/{types → dist/types}/PeerConnectionController/OutBoundRTPStats.d.ts +23 -23
- package/{types → dist/types}/PeerConnectionController/PeerConnectionController.d.ts +143 -140
- package/{types → dist/types}/PeerConnectionController/SessionStats.d.ts +8 -8
- package/{types → dist/types}/PeerConnectionController/StreamStats.d.ts +9 -9
- package/{types → dist/types}/PixelStreaming/PixelStreaming.d.ts +271 -259
- package/{types → dist/types}/UI/OnScreenKeyboard.d.ts +30 -30
- package/{types → dist/types}/UeInstanceMessage/ResponseController.d.ts +19 -19
- package/{types → dist/types}/UeInstanceMessage/SendMessageController.d.ts +18 -18
- package/{types → dist/types}/UeInstanceMessage/StreamMessageController.d.ts +29 -29
- package/{types → dist/types}/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -32
- package/{types → dist/types}/Util/EventEmitter.d.ts +429 -429
- package/{types → dist/types}/Util/FileUtil.d.ts +32 -32
- package/dist/types/Util/IURLSearchParams.d.ts +9 -0
- package/dist/types/Util/InputCoordTranslator.d.ts +29 -0
- package/{types → dist/types}/Util/RTCUtils.d.ts +8 -8
- package/{types → dist/types}/VideoPlayer/StreamController.d.ts +22 -24
- package/{types → dist/types}/VideoPlayer/VideoPlayer.d.ts +78 -78
- package/{types → dist/types}/WebRtcPlayer/WebRtcPlayerController.d.ts +379 -377
- package/{types → dist/types}/WebXR/WebXRController.d.ts +42 -42
- package/{types → dist/types}/pixelstreamingfrontend.d.ts +23 -22
- package/package.json +14 -17
- package/readme.md +9 -1
- package/src/AFK/AFKController.ts +10 -32
- package/src/Config/Config.ts +232 -205
- package/src/Config/SettingBase.ts +61 -2
- package/src/Config/SettingFlag.ts +10 -48
- package/src/Config/SettingNumber.ts +23 -33
- package/src/Config/SettingOption.ts +41 -56
- package/src/Config/SettingText.ts +9 -37
- package/src/DataChannel/DataChannelController.ts +6 -26
- package/src/DataChannel/DataChannelLatencyTestController.ts +43 -38
- package/src/DataChannel/DataChannelLatencyTestResults.ts +8 -10
- package/src/DataChannel/DataChannelSender.ts +5 -15
- package/src/DataChannel/LatencyTestResults.ts +5 -15
- package/src/FreezeFrame/FreezeFrame.ts +7 -19
- package/src/FreezeFrame/FreezeFrameController.ts +3 -14
- package/src/Inputs/GamepadController.ts +123 -221
- package/src/Inputs/GamepadTypes.ts +23 -0
- package/src/Inputs/IInputController.ts +17 -0
- package/src/Inputs/InputClassesFactory.ts +38 -45
- package/src/Inputs/KeyCodes.ts +114 -0
- package/src/Inputs/KeyboardController.ts +49 -232
- package/src/Inputs/MouseController.ts +71 -297
- package/src/Inputs/MouseControllerHovering.ts +118 -0
- package/src/Inputs/MouseControllerLocked.ts +194 -0
- package/src/Inputs/TouchController.ts +49 -105
- package/src/Inputs/TouchControllerFake.ts +132 -0
- package/src/Inputs/XRGamepadController.ts +35 -44
- package/src/PeerConnectionController/AggregatedStats.ts +46 -75
- package/src/PeerConnectionController/CandidatePairStats.ts +1 -1
- package/src/PeerConnectionController/CandidateStat.ts +1 -1
- package/src/PeerConnectionController/PeerConnectionController.ts +214 -170
- package/src/PixelStreaming/PixelStreaming.ts +174 -226
- package/src/UI/OnScreenKeyboard.ts +14 -9
- package/src/UeInstanceMessage/ResponseController.ts +6 -15
- package/src/UeInstanceMessage/SendMessageController.ts +16 -18
- package/src/UeInstanceMessage/StreamMessageController.ts +3 -12
- package/src/UeInstanceMessage/ToStreamerMessagesController.ts +3 -9
- package/src/Util/EventEmitter.ts +17 -22
- package/src/Util/FileUtil.ts +11 -34
- package/src/Util/IURLSearchParams.ts +25 -0
- package/src/Util/InputCoordTranslator.ts +73 -0
- package/src/Util/RTCUtils.ts +23 -15
- package/src/VideoPlayer/StreamController.ts +6 -23
- package/src/VideoPlayer/VideoPlayer.ts +9 -30
- package/src/WebRtcPlayer/WebRtcPlayerController.ts +328 -690
- package/src/WebXR/WebXRController.ts +82 -94
- package/src/pixelstreamingfrontend.ts +8 -6
- package/tsconfig.cjs.json +9 -0
- package/tsconfig.esm.json +7 -0
- package/tsconfig.json +4 -6
- package/dist/lib-pixelstreamingfrontend.esm.js +0 -1
- package/dist/lib-pixelstreamingfrontend.js +0 -1
- package/src/Inputs/FakeTouchController.ts +0 -199
- package/src/Inputs/HoveringMouseEvents.ts +0 -192
- package/src/Inputs/IMouseEvents.ts +0 -64
- package/src/Inputs/ITouchController.ts +0 -29
- package/src/Inputs/LockedMouseEvents.ts +0 -287
- package/src/Util/CoordinateConverter.ts +0 -290
- package/src/Util/EventListenerTracker.ts +0 -29
- package/types/Inputs/FakeTouchController.d.ts +0 -61
- package/types/Inputs/GamepadController.d.ts +0 -85
- package/types/Inputs/GamepadTypes.d.ts +0 -8
- package/types/Inputs/HoveringMouseEvents.d.ts +0 -56
- package/types/Inputs/IMouseEvents.d.ts +0 -53
- package/types/Inputs/ITouchController.d.ts +0 -24
- package/types/Inputs/KeyboardController.d.ts +0 -62
- package/types/Inputs/LockedMouseEvents.d.ts +0 -80
- package/types/Inputs/MouseController.d.ts +0 -75
- package/types/Inputs/TouchController.d.ts +0 -53
- package/types/Util/CoordinateConverter.d.ts +0 -100
- package/types/Util/EventListenerTracker.d.ts +0 -14
- package/webpack.common.js +0 -35
- package/webpack.dev.js +0 -35
- package/webpack.prod.js +0 -36
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The base interface for all input controllers.
|
|
3
|
+
* Since controllers mostly just register events and handle them the external interface is limited
|
|
4
|
+
* to register/unregister
|
|
5
|
+
*/
|
|
6
|
+
export interface IInputController {
|
|
7
|
+
/**
|
|
8
|
+
* Tells the controller to register itself to the events it needs to operate.
|
|
9
|
+
*/
|
|
10
|
+
register(): void;
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* Tells the cnotroller to unregister from the events it previously registered to.
|
|
14
|
+
* No behaviour through the controller should happen past this point until register is called again.
|
|
15
|
+
*/
|
|
16
|
+
unregister(): void;
|
|
17
|
+
}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
2
2
|
|
|
3
|
-
import { FakeTouchController } from './FakeTouchController';
|
|
4
3
|
import { KeyboardController } from './KeyboardController';
|
|
5
4
|
import { MouseController } from './MouseController';
|
|
5
|
+
import { MouseControllerLocked } from './MouseControllerLocked';
|
|
6
|
+
import { MouseControllerHovering } from './MouseControllerHovering';
|
|
6
7
|
import { TouchController } from './TouchController';
|
|
7
|
-
import {
|
|
8
|
+
import { TouchControllerFake } from './TouchControllerFake';
|
|
9
|
+
import { GamepadController } from './GamepadController';
|
|
8
10
|
import { Config, ControlSchemeType } from '../Config/Config';
|
|
9
11
|
import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
10
|
-
import {
|
|
12
|
+
import { InputCoordTranslator } from '../Util/InputCoordTranslator';
|
|
11
13
|
import { StreamMessageController } from '../UeInstanceMessage/StreamMessageController';
|
|
12
14
|
import { VideoPlayer } from '../VideoPlayer/VideoPlayer';
|
|
15
|
+
import { IInputController } from './IInputController';
|
|
13
16
|
|
|
14
17
|
/**
|
|
15
18
|
* Class for making and setting up input class types
|
|
@@ -17,7 +20,7 @@ import { VideoPlayer } from '../VideoPlayer/VideoPlayer';
|
|
|
17
20
|
export class InputClassesFactory {
|
|
18
21
|
toStreamerMessagesProvider: StreamMessageController;
|
|
19
22
|
videoElementProvider: VideoPlayer;
|
|
20
|
-
coordinateConverter:
|
|
23
|
+
coordinateConverter: InputCoordTranslator;
|
|
21
24
|
activeKeys: ActiveKeys = new ActiveKeys();
|
|
22
25
|
|
|
23
26
|
/**
|
|
@@ -28,7 +31,7 @@ export class InputClassesFactory {
|
|
|
28
31
|
constructor(
|
|
29
32
|
toStreamerMessagesProvider: StreamMessageController,
|
|
30
33
|
videoElementProvider: VideoPlayer,
|
|
31
|
-
coordinateConverter:
|
|
34
|
+
coordinateConverter: InputCoordTranslator
|
|
32
35
|
) {
|
|
33
36
|
this.toStreamerMessagesProvider = toStreamerMessagesProvider;
|
|
34
37
|
this.videoElementProvider = videoElementProvider;
|
|
@@ -39,13 +42,13 @@ export class InputClassesFactory {
|
|
|
39
42
|
* Registers browser key events.
|
|
40
43
|
*/
|
|
41
44
|
registerKeyBoard(config: Config) {
|
|
42
|
-
Logger.
|
|
45
|
+
Logger.Info('Register Keyboard Events');
|
|
43
46
|
const keyboardController = new KeyboardController(
|
|
44
47
|
this.toStreamerMessagesProvider,
|
|
45
48
|
config,
|
|
46
49
|
this.activeKeys
|
|
47
50
|
);
|
|
48
|
-
keyboardController.
|
|
51
|
+
keyboardController.register();
|
|
49
52
|
return keyboardController;
|
|
50
53
|
}
|
|
51
54
|
|
|
@@ -54,30 +57,25 @@ export class InputClassesFactory {
|
|
|
54
57
|
* @param controlScheme - if the mouse is either hovering or locked
|
|
55
58
|
*/
|
|
56
59
|
registerMouse(controlScheme: ControlSchemeType) {
|
|
57
|
-
Logger.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
Logger.Info(
|
|
74
|
-
Logger.GetStackTrace(),
|
|
75
|
-
'unknown Control Scheme Type Defaulting to Locked Mouse Events'
|
|
76
|
-
);
|
|
77
|
-
mouseController.registerLockedMouseEvents(mouseController);
|
|
78
|
-
break;
|
|
60
|
+
Logger.Info('Register Mouse Events');
|
|
61
|
+
let mouseController: MouseController;
|
|
62
|
+
if (controlScheme == ControlSchemeType.HoveringMouse) {
|
|
63
|
+
mouseController = new MouseControllerHovering(
|
|
64
|
+
this.toStreamerMessagesProvider,
|
|
65
|
+
this.videoElementProvider,
|
|
66
|
+
this.coordinateConverter,
|
|
67
|
+
this.activeKeys
|
|
68
|
+
);
|
|
69
|
+
} else {
|
|
70
|
+
mouseController = new MouseControllerLocked(
|
|
71
|
+
this.toStreamerMessagesProvider,
|
|
72
|
+
this.videoElementProvider,
|
|
73
|
+
this.coordinateConverter,
|
|
74
|
+
this.activeKeys
|
|
75
|
+
);
|
|
79
76
|
}
|
|
80
77
|
|
|
78
|
+
mouseController.register();
|
|
81
79
|
return mouseController;
|
|
82
80
|
}
|
|
83
81
|
|
|
@@ -85,39 +83,34 @@ export class InputClassesFactory {
|
|
|
85
83
|
* register touch events
|
|
86
84
|
* @param fakeMouseTouch - the faked mouse touch event
|
|
87
85
|
*/
|
|
88
|
-
registerTouch(
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
) {
|
|
92
|
-
Logger.Log(Logger.GetStackTrace(), 'Registering Touch', 6);
|
|
86
|
+
registerTouch(fakeMouseTouch: boolean) {
|
|
87
|
+
Logger.Info('Registering Touch');
|
|
88
|
+
let touchController: IInputController;
|
|
93
89
|
if (fakeMouseTouch) {
|
|
94
|
-
|
|
90
|
+
touchController = new TouchControllerFake(
|
|
95
91
|
this.toStreamerMessagesProvider,
|
|
96
92
|
this.videoElementProvider,
|
|
97
93
|
this.coordinateConverter
|
|
98
94
|
);
|
|
99
|
-
fakeTouchController.setVideoElementParentClientRect(
|
|
100
|
-
videoElementParentClientRect
|
|
101
|
-
);
|
|
102
|
-
return fakeTouchController;
|
|
103
95
|
} else {
|
|
104
|
-
|
|
96
|
+
touchController = new TouchController(
|
|
105
97
|
this.toStreamerMessagesProvider,
|
|
106
98
|
this.videoElementProvider,
|
|
107
99
|
this.coordinateConverter
|
|
108
100
|
);
|
|
109
101
|
}
|
|
102
|
+
touchController.register();
|
|
103
|
+
return touchController;
|
|
110
104
|
}
|
|
111
105
|
|
|
112
106
|
/**
|
|
113
107
|
* registers a gamepad
|
|
114
108
|
*/
|
|
115
109
|
registerGamePad() {
|
|
116
|
-
Logger.
|
|
117
|
-
const
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
return gamePadController;
|
|
110
|
+
Logger.Info('Register Game Pad');
|
|
111
|
+
const gamepadController = new GamepadController(this.toStreamerMessagesProvider);
|
|
112
|
+
gamepadController.register();
|
|
113
|
+
return gamepadController;
|
|
121
114
|
}
|
|
122
115
|
}
|
|
123
116
|
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
2
|
+
|
|
3
|
+
interface ICodeToKeyCode {
|
|
4
|
+
[key: string]: number;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
/*
|
|
8
|
+
* New browser APIs have moved away from KeyboardEvent.keyCode to KeyboardEvent.Code.
|
|
9
|
+
* For details see: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#constants_for_keycode_value
|
|
10
|
+
* We still use old KeyboardEvent.keyCode integers in the UE C++ side, so we need a way to map the new
|
|
11
|
+
* string-based KeyboardEvent.Code to the old integers.
|
|
12
|
+
*/
|
|
13
|
+
export const CodeToKeyCode: ICodeToKeyCode = Object.freeze({
|
|
14
|
+
Escape: 27,
|
|
15
|
+
Digit0: 48,
|
|
16
|
+
Digit1: 49,
|
|
17
|
+
Digit2: 50,
|
|
18
|
+
Digit3: 51,
|
|
19
|
+
Digit4: 52,
|
|
20
|
+
Digit5: 53,
|
|
21
|
+
Digit6: 54,
|
|
22
|
+
Digit7: 55,
|
|
23
|
+
Digit8: 56,
|
|
24
|
+
Digit9: 57,
|
|
25
|
+
Minus: 173,
|
|
26
|
+
Equal: 187,
|
|
27
|
+
Backspace: 8,
|
|
28
|
+
Tab: 9,
|
|
29
|
+
KeyQ: 81,
|
|
30
|
+
KeyW: 87,
|
|
31
|
+
KeyE: 69,
|
|
32
|
+
KeyR: 82,
|
|
33
|
+
KeyT: 84,
|
|
34
|
+
KeyY: 89,
|
|
35
|
+
KeyU: 85,
|
|
36
|
+
KeyI: 73,
|
|
37
|
+
KeyO: 79,
|
|
38
|
+
KeyP: 80,
|
|
39
|
+
BracketLeft: 219,
|
|
40
|
+
BracketRight: 221,
|
|
41
|
+
Enter: 13,
|
|
42
|
+
ControlLeft: 17,
|
|
43
|
+
KeyA: 65,
|
|
44
|
+
KeyS: 83,
|
|
45
|
+
KeyD: 68,
|
|
46
|
+
KeyF: 70,
|
|
47
|
+
KeyG: 71,
|
|
48
|
+
KeyH: 72,
|
|
49
|
+
KeyJ: 74,
|
|
50
|
+
KeyK: 75,
|
|
51
|
+
KeyL: 76,
|
|
52
|
+
Semicolon: 186,
|
|
53
|
+
Quote: 222,
|
|
54
|
+
Backquote: 192,
|
|
55
|
+
ShiftLeft: 16,
|
|
56
|
+
Backslash: 220,
|
|
57
|
+
KeyZ: 90,
|
|
58
|
+
KeyX: 88,
|
|
59
|
+
KeyC: 67,
|
|
60
|
+
KeyV: 86,
|
|
61
|
+
KeyB: 66,
|
|
62
|
+
KeyN: 78,
|
|
63
|
+
KeyM: 77,
|
|
64
|
+
Comma: 188,
|
|
65
|
+
Period: 190,
|
|
66
|
+
Slash: 191,
|
|
67
|
+
ShiftRight: 253,
|
|
68
|
+
AltLeft: 18,
|
|
69
|
+
Space: 32,
|
|
70
|
+
CapsLock: 20,
|
|
71
|
+
F1: 112,
|
|
72
|
+
F2: 113,
|
|
73
|
+
F3: 114,
|
|
74
|
+
F4: 115,
|
|
75
|
+
F5: 116,
|
|
76
|
+
F6: 117,
|
|
77
|
+
F7: 118,
|
|
78
|
+
F8: 119,
|
|
79
|
+
F9: 120,
|
|
80
|
+
F10: 121,
|
|
81
|
+
F11: 122,
|
|
82
|
+
F12: 123,
|
|
83
|
+
Pause: 19,
|
|
84
|
+
ScrollLock: 145,
|
|
85
|
+
NumpadDivide: 111,
|
|
86
|
+
NumpadMultiply: 106,
|
|
87
|
+
NumpadSubtract: 109,
|
|
88
|
+
NumpadAdd: 107,
|
|
89
|
+
NumpadDecimal: 110,
|
|
90
|
+
Numpad9: 105,
|
|
91
|
+
Numpad8: 104,
|
|
92
|
+
Numpad7: 103,
|
|
93
|
+
Numpad6: 102,
|
|
94
|
+
Numpad5: 101,
|
|
95
|
+
Numpad4: 100,
|
|
96
|
+
Numpad3: 99,
|
|
97
|
+
Numpad2: 98,
|
|
98
|
+
Numpad1: 97,
|
|
99
|
+
Numpad0: 96,
|
|
100
|
+
NumLock: 144,
|
|
101
|
+
ControlRight: 254,
|
|
102
|
+
AltRight: 255,
|
|
103
|
+
Home: 36,
|
|
104
|
+
End: 35,
|
|
105
|
+
ArrowUp: 38,
|
|
106
|
+
ArrowLeft: 37,
|
|
107
|
+
ArrowRight: 39,
|
|
108
|
+
ArrowDown: 40,
|
|
109
|
+
PageUp: 33,
|
|
110
|
+
PageDown: 34,
|
|
111
|
+
Insert: 45,
|
|
112
|
+
Delete: 46,
|
|
113
|
+
ContextMenu: 93
|
|
114
|
+
});
|
|
@@ -5,206 +5,57 @@ import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
|
|
|
5
5
|
import { ActiveKeys } from './InputClassesFactory';
|
|
6
6
|
import { StreamMessageController } from '../UeInstanceMessage/StreamMessageController';
|
|
7
7
|
import { Config, Flags } from '../Config/Config';
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
interface ICodeToKeyCode {
|
|
11
|
-
[key: string]: number;
|
|
12
|
-
}
|
|
8
|
+
import { IInputController } from './IInputController';
|
|
9
|
+
import { CodeToKeyCode } from './KeyCodes';
|
|
13
10
|
|
|
14
11
|
/**
|
|
15
12
|
* Handles the Keyboard Inputs for the document
|
|
16
13
|
*/
|
|
17
|
-
export class KeyboardController {
|
|
18
|
-
|
|
19
|
-
|
|
14
|
+
export class KeyboardController implements IInputController {
|
|
15
|
+
streamMessageController: StreamMessageController;
|
|
16
|
+
activeKeys: ActiveKeys;
|
|
20
17
|
config: Config;
|
|
21
18
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
* New browser APIs have moved away from KeyboardEvent.keyCode to KeyboardEvent.Code.
|
|
27
|
-
* For details see: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#constants_for_keycode_value
|
|
28
|
-
* We still use old KeyboardEvent.keyCode integers in the UE C++ side, so we need a way to map the new
|
|
29
|
-
* string-based KeyboardEvent.Code to the old integers.
|
|
30
|
-
*/
|
|
31
|
-
CodeToKeyCode: ICodeToKeyCode = {
|
|
32
|
-
Escape: 27,
|
|
33
|
-
Digit0: 48,
|
|
34
|
-
Digit1: 49,
|
|
35
|
-
Digit2: 50,
|
|
36
|
-
Digit3: 51,
|
|
37
|
-
Digit4: 52,
|
|
38
|
-
Digit5: 53,
|
|
39
|
-
Digit6: 54,
|
|
40
|
-
Digit7: 55,
|
|
41
|
-
Digit8: 56,
|
|
42
|
-
Digit9: 57,
|
|
43
|
-
Minus: 173,
|
|
44
|
-
Equal: 187,
|
|
45
|
-
Backspace: 8,
|
|
46
|
-
Tab: 9,
|
|
47
|
-
KeyQ: 81,
|
|
48
|
-
KeyW: 87,
|
|
49
|
-
KeyE: 69,
|
|
50
|
-
KeyR: 82,
|
|
51
|
-
KeyT: 84,
|
|
52
|
-
KeyY: 89,
|
|
53
|
-
KeyU: 85,
|
|
54
|
-
KeyI: 73,
|
|
55
|
-
KeyO: 79,
|
|
56
|
-
KeyP: 80,
|
|
57
|
-
BracketLeft: 219,
|
|
58
|
-
BracketRight: 221,
|
|
59
|
-
Enter: 13,
|
|
60
|
-
ControlLeft: 17,
|
|
61
|
-
KeyA: 65,
|
|
62
|
-
KeyS: 83,
|
|
63
|
-
KeyD: 68,
|
|
64
|
-
KeyF: 70,
|
|
65
|
-
KeyG: 71,
|
|
66
|
-
KeyH: 72,
|
|
67
|
-
KeyJ: 74,
|
|
68
|
-
KeyK: 75,
|
|
69
|
-
KeyL: 76,
|
|
70
|
-
Semicolon: 186,
|
|
71
|
-
Quote: 222,
|
|
72
|
-
Backquote: 192,
|
|
73
|
-
ShiftLeft: 16,
|
|
74
|
-
Backslash: 220,
|
|
75
|
-
KeyZ: 90,
|
|
76
|
-
KeyX: 88,
|
|
77
|
-
KeyC: 67,
|
|
78
|
-
KeyV: 86,
|
|
79
|
-
KeyB: 66,
|
|
80
|
-
KeyN: 78,
|
|
81
|
-
KeyM: 77,
|
|
82
|
-
Comma: 188,
|
|
83
|
-
Period: 190,
|
|
84
|
-
Slash: 191,
|
|
85
|
-
ShiftRight: 253,
|
|
86
|
-
AltLeft: 18,
|
|
87
|
-
Space: 32,
|
|
88
|
-
CapsLock: 20,
|
|
89
|
-
F1: 112,
|
|
90
|
-
F2: 113,
|
|
91
|
-
F3: 114,
|
|
92
|
-
F4: 115,
|
|
93
|
-
F5: 116,
|
|
94
|
-
F6: 117,
|
|
95
|
-
F7: 118,
|
|
96
|
-
F8: 119,
|
|
97
|
-
F9: 120,
|
|
98
|
-
F10: 121,
|
|
99
|
-
F11: 122,
|
|
100
|
-
F12: 123,
|
|
101
|
-
Pause: 19,
|
|
102
|
-
ScrollLock: 145,
|
|
103
|
-
NumpadDivide: 111,
|
|
104
|
-
NumpadMultiply: 106,
|
|
105
|
-
NumpadSubtract: 109,
|
|
106
|
-
NumpadAdd: 107,
|
|
107
|
-
NumpadDecimal: 110,
|
|
108
|
-
Numpad9: 105,
|
|
109
|
-
Numpad8: 104,
|
|
110
|
-
Numpad7: 103,
|
|
111
|
-
Numpad6: 102,
|
|
112
|
-
Numpad5: 101,
|
|
113
|
-
Numpad4: 100,
|
|
114
|
-
Numpad3: 99,
|
|
115
|
-
Numpad2: 98,
|
|
116
|
-
Numpad1: 97,
|
|
117
|
-
Numpad0: 96,
|
|
118
|
-
NumLock: 144,
|
|
119
|
-
ControlRight: 254,
|
|
120
|
-
AltRight: 255,
|
|
121
|
-
Home: 36,
|
|
122
|
-
End: 35,
|
|
123
|
-
ArrowUp: 38,
|
|
124
|
-
ArrowLeft: 37,
|
|
125
|
-
ArrowRight: 39,
|
|
126
|
-
ArrowDown: 40,
|
|
127
|
-
PageUp: 33,
|
|
128
|
-
PageDown: 34,
|
|
129
|
-
Insert: 45,
|
|
130
|
-
Delete: 46,
|
|
131
|
-
ContextMenu: 93
|
|
132
|
-
};
|
|
19
|
+
onKeyDownListener: (event: KeyboardEvent) => void;
|
|
20
|
+
onKeyUpListener: (event: KeyboardEvent) => void;
|
|
21
|
+
onKeyPressListener: (event: KeyboardEvent) => void;
|
|
22
|
+
onCompositionEndListener: (event: KeyboardEvent) => void;
|
|
133
23
|
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
* @param config The applications configuration. We're interested in the suppress browser keys option
|
|
137
|
-
* @param activeKeysProvider Active keys provider class object
|
|
138
|
-
*/
|
|
139
|
-
constructor(
|
|
140
|
-
toStreamerMessagesProvider: StreamMessageController,
|
|
141
|
-
config: Config,
|
|
142
|
-
activeKeysProvider: ActiveKeys
|
|
143
|
-
) {
|
|
144
|
-
this.toStreamerMessagesProvider = toStreamerMessagesProvider;
|
|
24
|
+
constructor(streamMessageController: StreamMessageController, config: Config, activeKeys: ActiveKeys) {
|
|
25
|
+
this.streamMessageController = streamMessageController;
|
|
145
26
|
this.config = config;
|
|
146
|
-
this.
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Registers document keyboard events with the controller
|
|
151
|
-
*/
|
|
152
|
-
registerKeyBoardEvents() {
|
|
153
|
-
const compositionEndHandler = (ev: CompositionEvent) => this.handleOnCompositionEnd(ev);
|
|
154
|
-
const keyDownHandler = (ev: KeyboardEvent) => this.handleOnKeyDown(ev);
|
|
155
|
-
const keyUpHandler = (ev: KeyboardEvent) => this.handleOnKeyUp(ev);
|
|
156
|
-
const keyPressHandler = (ev: KeyboardEvent) => this.handleOnKeyPress(ev);
|
|
27
|
+
this.activeKeys = activeKeys;
|
|
157
28
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
29
|
+
this.onKeyDownListener = this.handleOnKeyDown.bind(this);
|
|
30
|
+
this.onKeyUpListener = this.handleOnKeyUp.bind(this);
|
|
31
|
+
this.onKeyPressListener = this.handleOnKeyPress.bind(this);
|
|
32
|
+
this.onCompositionEndListener = this.handleOnCompositionEnd.bind(this);
|
|
33
|
+
}
|
|
161
34
|
|
|
35
|
+
register() {
|
|
36
|
+
document.addEventListener('compositionend', this.onCompositionEndListener);
|
|
37
|
+
document.addEventListener('keydown', this.onKeyDownListener);
|
|
38
|
+
document.addEventListener('keyup', this.onKeyUpListener);
|
|
162
39
|
//This has been deprecated as at Jun 13 2021
|
|
163
|
-
document.addEventListener(
|
|
164
|
-
|
|
165
|
-
this.keyboardEventListenerTracker.addUnregisterCallback(
|
|
166
|
-
() => document.removeEventListener("compositionend", compositionEndHandler)
|
|
167
|
-
);
|
|
168
|
-
this.keyboardEventListenerTracker.addUnregisterCallback(
|
|
169
|
-
() => document.removeEventListener("keydown", keyDownHandler)
|
|
170
|
-
);
|
|
171
|
-
this.keyboardEventListenerTracker.addUnregisterCallback(
|
|
172
|
-
() => document.removeEventListener("keyup", keyUpHandler)
|
|
173
|
-
);
|
|
174
|
-
this.keyboardEventListenerTracker.addUnregisterCallback(
|
|
175
|
-
() => document.removeEventListener("keypress", keyPressHandler)
|
|
176
|
-
);
|
|
40
|
+
document.addEventListener('keypress', this.onKeyPressListener);
|
|
177
41
|
}
|
|
178
42
|
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
this.
|
|
43
|
+
unregister() {
|
|
44
|
+
document.removeEventListener('compositionend', this.onCompositionEndListener);
|
|
45
|
+
document.removeEventListener('keydown', this.onKeyDownListener);
|
|
46
|
+
document.removeEventListener('keyup', this.onKeyUpListener);
|
|
47
|
+
document.removeEventListener('keypress', this.onKeyPressListener);
|
|
184
48
|
}
|
|
185
49
|
|
|
186
|
-
|
|
187
|
-
* Handles When a key is down
|
|
188
|
-
* @param keyboardEvent - Keyboard event
|
|
189
|
-
*/
|
|
190
|
-
handleOnKeyDown(keyboardEvent: KeyboardEvent) {
|
|
50
|
+
private handleOnKeyDown(keyboardEvent: KeyboardEvent) {
|
|
191
51
|
const keyCode = this.getKeycode(keyboardEvent);
|
|
192
52
|
if (!keyCode || keyCode === 229) {
|
|
193
53
|
return;
|
|
194
54
|
}
|
|
195
55
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
6
|
|
200
|
-
);
|
|
201
|
-
const toStreamerHandlers =
|
|
202
|
-
this.toStreamerMessagesProvider.toStreamerHandlers;
|
|
203
|
-
toStreamerHandlers.get('KeyDown')([
|
|
204
|
-
this.getKeycode(keyboardEvent),
|
|
205
|
-
keyboardEvent.repeat ? 1 : 0
|
|
206
|
-
]);
|
|
207
|
-
const activeKeys = this.activeKeysProvider.getActiveKeys();
|
|
56
|
+
const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
|
|
57
|
+
toStreamerHandlers.get('KeyDown')([this.getKeycode(keyboardEvent), keyboardEvent.repeat ? 1 : 0]);
|
|
58
|
+
const activeKeys = this.activeKeys.getActiveKeys();
|
|
208
59
|
activeKeys.push(keyCode);
|
|
209
60
|
// Backspace is not considered a keypress in JavaScript but we need it
|
|
210
61
|
// to be so characters may be deleted in a UE text entry field.
|
|
@@ -216,66 +67,39 @@ export class KeyboardController {
|
|
|
216
67
|
);
|
|
217
68
|
}
|
|
218
69
|
|
|
219
|
-
if (
|
|
220
|
-
this.config.isFlagEnabled(Flags.SuppressBrowserKeys) &&
|
|
221
|
-
this.isKeyCodeBrowserKey(keyCode)
|
|
222
|
-
) {
|
|
70
|
+
if (this.config.isFlagEnabled(Flags.SuppressBrowserKeys) && this.isKeyCodeBrowserKey(keyCode)) {
|
|
223
71
|
keyboardEvent.preventDefault();
|
|
224
72
|
}
|
|
225
73
|
}
|
|
226
74
|
|
|
227
|
-
|
|
228
|
-
* handles when a key is up
|
|
229
|
-
* @param keyboardEvent - Keyboard event
|
|
230
|
-
*/
|
|
231
|
-
handleOnKeyUp(keyboardEvent: KeyboardEvent) {
|
|
75
|
+
private handleOnKeyUp(keyboardEvent: KeyboardEvent) {
|
|
232
76
|
const keyCode = this.getKeycode(keyboardEvent);
|
|
233
77
|
if (!keyCode) {
|
|
234
78
|
return;
|
|
235
79
|
}
|
|
236
80
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
this.toStreamerMessagesProvider.toStreamerHandlers;
|
|
240
|
-
toStreamerHandlers.get('KeyUp')([ keyCode ]);
|
|
81
|
+
const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
|
|
82
|
+
toStreamerHandlers.get('KeyUp')([keyCode]);
|
|
241
83
|
|
|
242
|
-
if (
|
|
243
|
-
this.config.isFlagEnabled(Flags.SuppressBrowserKeys) &&
|
|
244
|
-
this.isKeyCodeBrowserKey(keyCode)
|
|
245
|
-
) {
|
|
84
|
+
if (this.config.isFlagEnabled(Flags.SuppressBrowserKeys) && this.isKeyCodeBrowserKey(keyCode)) {
|
|
246
85
|
keyboardEvent.preventDefault();
|
|
247
86
|
}
|
|
248
87
|
}
|
|
249
88
|
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
*/
|
|
254
|
-
handleOnKeyPress(keyboard: KeyboardEvent) {
|
|
255
|
-
if (!('charCode' in keyboard)) {
|
|
256
|
-
Logger.Warning(
|
|
257
|
-
Logger.GetStackTrace(),
|
|
258
|
-
'KeyboardEvent.charCode is deprecated in this browser, cannot send key press.'
|
|
259
|
-
);
|
|
89
|
+
private handleOnKeyPress(keyboardEvent: KeyboardEvent) {
|
|
90
|
+
const keyCode = this.getKeycode(keyboardEvent);
|
|
91
|
+
if (!keyCode) {
|
|
260
92
|
return;
|
|
261
93
|
}
|
|
262
94
|
|
|
263
|
-
const
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
const toStreamerHandlers =
|
|
267
|
-
this.toStreamerMessagesProvider.toStreamerHandlers;
|
|
268
|
-
toStreamerHandlers.get('KeyPress')([charCode]);
|
|
95
|
+
const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
|
|
96
|
+
toStreamerHandlers.get('KeyPress')([keyCode]);
|
|
269
97
|
}
|
|
270
98
|
|
|
271
|
-
|
|
272
|
-
* Handle whenever composition ends (eg chinese simplified)
|
|
273
|
-
* @param compositionEvent - the composition event
|
|
274
|
-
*/
|
|
275
|
-
handleOnCompositionEnd(compositionEvent: CompositionEvent) {
|
|
99
|
+
private handleOnCompositionEnd(compositionEvent: CompositionEvent) {
|
|
276
100
|
if (compositionEvent.data && compositionEvent.data.length) {
|
|
277
101
|
compositionEvent.data.split('').forEach((char) => {
|
|
278
|
-
// This keydown, keypress, keyup flow is required to mimic the way characters are
|
|
102
|
+
// This keydown, keypress, keyup flow is required to mimic the way characters are
|
|
279
103
|
// normally triggered
|
|
280
104
|
this.handleOnKeyDown(
|
|
281
105
|
new KeyboardEvent('keydown', {
|
|
@@ -304,17 +128,16 @@ export class KeyboardController {
|
|
|
304
128
|
* @param keyboardEvent - Key board Event
|
|
305
129
|
* @returns - the key code of the Key
|
|
306
130
|
*/
|
|
307
|
-
getKeycode(keyboardEvent: KeyboardEvent) {
|
|
131
|
+
private getKeycode(keyboardEvent: KeyboardEvent) {
|
|
308
132
|
// If we don't have keyCode property because browser API is deprecated then use KeyboardEvent.code instead.
|
|
309
133
|
// See: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#constants_for_keycode_value
|
|
310
134
|
if (!('keyCode' in keyboardEvent)) {
|
|
311
135
|
// Convert KeyboardEvent.code string into integer-based key code for backwards compatibility reasons.
|
|
312
136
|
const event = keyboardEvent as KeyboardEvent;
|
|
313
|
-
if (event.code in
|
|
314
|
-
return
|
|
137
|
+
if (event.code in CodeToKeyCode) {
|
|
138
|
+
return CodeToKeyCode[event.code];
|
|
315
139
|
} else {
|
|
316
140
|
Logger.Warning(
|
|
317
|
-
Logger.GetStackTrace(),
|
|
318
141
|
`Keyboard code of ${event.code} is not supported in our mapping, ignoring this key.`
|
|
319
142
|
);
|
|
320
143
|
return null;
|
|
@@ -323,20 +146,14 @@ export class KeyboardController {
|
|
|
323
146
|
|
|
324
147
|
// If we made it here KeyboardEvent.keyCode is still supported so we can safely use it.
|
|
325
148
|
|
|
326
|
-
if (
|
|
327
|
-
keyboardEvent.keyCode === SpecialKeyCodes.shift &&
|
|
328
|
-
keyboardEvent.code === 'ShiftRight'
|
|
329
|
-
) {
|
|
149
|
+
if (keyboardEvent.keyCode === SpecialKeyCodes.shift && keyboardEvent.code === 'ShiftRight') {
|
|
330
150
|
return SpecialKeyCodes.rightShift;
|
|
331
151
|
} else if (
|
|
332
152
|
keyboardEvent.keyCode === SpecialKeyCodes.control &&
|
|
333
153
|
keyboardEvent.code === 'ControlRight'
|
|
334
154
|
) {
|
|
335
155
|
return SpecialKeyCodes.rightControl;
|
|
336
|
-
} else if (
|
|
337
|
-
keyboardEvent.keyCode === SpecialKeyCodes.alt &&
|
|
338
|
-
keyboardEvent.code === 'AltRight'
|
|
339
|
-
) {
|
|
156
|
+
} else if (keyboardEvent.keyCode === SpecialKeyCodes.alt && keyboardEvent.code === 'AltRight') {
|
|
340
157
|
return SpecialKeyCodes.rightAlt;
|
|
341
158
|
} else {
|
|
342
159
|
return keyboardEvent.keyCode;
|
|
@@ -347,7 +164,7 @@ export class KeyboardController {
|
|
|
347
164
|
* Browser keys do not have a charCode so we only need to test keyCode.
|
|
348
165
|
* @param keyCode - the browser keycode number
|
|
349
166
|
*/
|
|
350
|
-
isKeyCodeBrowserKey(keyCode: number) {
|
|
167
|
+
private isKeyCodeBrowserKey(keyCode: number) {
|
|
351
168
|
// Function keys or tab key are considered "browser keys" that we may wish to suppress by preventing them being process by browser.
|
|
352
169
|
return (keyCode >= 112 && keyCode <= 123) || keyCode === 9;
|
|
353
170
|
}
|