@epicgames-ps/lib-pixelstreamingfrontend-ue5.5 0.3.0 → 0.3.2

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.
Files changed (172) hide show
  1. package/dist/commonjs/AFK/AFKController.js +109 -109
  2. package/dist/commonjs/Config/Config.js +559 -559
  3. package/dist/commonjs/Config/SettingBase.js +98 -98
  4. package/dist/commonjs/Config/SettingFlag.js +49 -49
  5. package/dist/commonjs/Config/SettingNumber.js +83 -83
  6. package/dist/commonjs/Config/SettingOption.js +84 -84
  7. package/dist/commonjs/Config/SettingText.js +42 -42
  8. package/dist/commonjs/DataChannel/DataChannelController.js +106 -106
  9. package/dist/commonjs/DataChannel/DataChannelLatencyTestController.js +94 -94
  10. package/dist/commonjs/DataChannel/DataChannelLatencyTestResults.js +18 -18
  11. package/dist/commonjs/DataChannel/DataChannelSender.js +43 -43
  12. package/dist/commonjs/DataChannel/InitialSettings.js +41 -41
  13. package/dist/commonjs/DataChannel/LatencyTestResults.js +60 -60
  14. package/dist/commonjs/FreezeFrame/FreezeFrame.js +93 -93
  15. package/dist/commonjs/FreezeFrame/FreezeFrameController.js +95 -95
  16. package/dist/commonjs/Inputs/GamepadController.js +188 -188
  17. package/dist/commonjs/Inputs/GamepadTypes.js +21 -21
  18. package/dist/commonjs/Inputs/IInputController.js +2 -2
  19. package/dist/commonjs/Inputs/InputClassesFactory.js +96 -96
  20. package/dist/commonjs/Inputs/KeyCodes.js +112 -112
  21. package/dist/commonjs/Inputs/KeyboardController.js +137 -137
  22. package/dist/commonjs/Inputs/MouseButtons.js +28 -28
  23. package/dist/commonjs/Inputs/MouseController.js +97 -97
  24. package/dist/commonjs/Inputs/MouseControllerHovering.js +93 -93
  25. package/dist/commonjs/Inputs/MouseControllerLocked.js +153 -153
  26. package/dist/commonjs/Inputs/SpecialKeyCodes.js +19 -19
  27. package/dist/commonjs/Inputs/TouchController.js +123 -123
  28. package/dist/commonjs/Inputs/TouchController.js.map +1 -1
  29. package/dist/commonjs/Inputs/TouchControllerFake.js +91 -91
  30. package/dist/commonjs/Inputs/XRGamepadController.js +124 -124
  31. package/dist/commonjs/PeerConnectionController/AggregatedStats.js +252 -252
  32. package/dist/commonjs/PeerConnectionController/CandidatePairStats.js +10 -10
  33. package/dist/commonjs/PeerConnectionController/CandidateStat.js +10 -10
  34. package/dist/commonjs/PeerConnectionController/CodecStats.js +10 -10
  35. package/dist/commonjs/PeerConnectionController/DataChannelStats.js +10 -10
  36. package/dist/commonjs/PeerConnectionController/InboundRTPStats.js +22 -22
  37. package/dist/commonjs/PeerConnectionController/InboundTrackStats.js +10 -10
  38. package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js +16 -16
  39. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js +584 -584
  40. package/dist/commonjs/PeerConnectionController/SessionStats.js +10 -10
  41. package/dist/commonjs/PeerConnectionController/StreamStats.js +10 -10
  42. package/dist/commonjs/PixelStreaming/PixelStreaming.js +607 -607
  43. package/dist/commonjs/UI/OnScreenKeyboard.js +82 -82
  44. package/dist/commonjs/UeInstanceMessage/ResponseController.js +38 -38
  45. package/dist/commonjs/UeInstanceMessage/SendMessageController.js +120 -120
  46. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js +210 -210
  47. package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js +49 -49
  48. package/dist/commonjs/Util/EventEmitter.js +386 -386
  49. package/dist/commonjs/Util/FileUtil.js +108 -108
  50. package/dist/commonjs/Util/IURLSearchParams.js +25 -25
  51. package/dist/commonjs/Util/InputCoordTranslator.js +49 -49
  52. package/dist/commonjs/Util/RTCUtils.js +40 -40
  53. package/dist/commonjs/VideoPlayer/StreamController.js +67 -67
  54. package/dist/commonjs/VideoPlayer/VideoPlayer.js +177 -177
  55. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js +1221 -1221
  56. package/dist/commonjs/WebXR/WebXRController.js +335 -335
  57. package/dist/commonjs/pixelstreamingfrontend.js +70 -70
  58. package/dist/esm/AFK/AFKController.js +105 -105
  59. package/dist/esm/Config/Config.js +551 -551
  60. package/dist/esm/Config/SettingBase.js +94 -94
  61. package/dist/esm/Config/SettingFlag.js +45 -45
  62. package/dist/esm/Config/SettingNumber.js +79 -79
  63. package/dist/esm/Config/SettingOption.js +80 -80
  64. package/dist/esm/Config/SettingText.js +38 -38
  65. package/dist/esm/DataChannel/DataChannelController.js +102 -102
  66. package/dist/esm/DataChannel/DataChannelLatencyTestController.js +90 -90
  67. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js +14 -14
  68. package/dist/esm/DataChannel/DataChannelSender.js +39 -39
  69. package/dist/esm/DataChannel/InitialSettings.js +34 -34
  70. package/dist/esm/DataChannel/LatencyTestResults.js +56 -56
  71. package/dist/esm/FreezeFrame/FreezeFrame.js +89 -89
  72. package/dist/esm/FreezeFrame/FreezeFrameController.js +91 -91
  73. package/dist/esm/Inputs/GamepadController.js +184 -184
  74. package/dist/esm/Inputs/GamepadTypes.js +17 -17
  75. package/dist/esm/Inputs/IInputController.js +1 -1
  76. package/dist/esm/Inputs/InputClassesFactory.js +91 -91
  77. package/dist/esm/Inputs/KeyCodes.js +109 -109
  78. package/dist/esm/Inputs/KeyboardController.js +133 -133
  79. package/dist/esm/Inputs/MouseButtons.js +23 -23
  80. package/dist/esm/Inputs/MouseController.js +93 -93
  81. package/dist/esm/Inputs/MouseControllerHovering.js +89 -89
  82. package/dist/esm/Inputs/MouseControllerLocked.js +149 -149
  83. package/dist/esm/Inputs/SpecialKeyCodes.js +15 -15
  84. package/dist/esm/Inputs/TouchController.js +119 -119
  85. package/dist/esm/Inputs/TouchController.js.map +1 -1
  86. package/dist/esm/Inputs/TouchControllerFake.js +87 -87
  87. package/dist/esm/Inputs/XRGamepadController.js +120 -120
  88. package/dist/esm/PeerConnectionController/AggregatedStats.js +248 -248
  89. package/dist/esm/PeerConnectionController/CandidatePairStats.js +6 -6
  90. package/dist/esm/PeerConnectionController/CandidateStat.js +6 -6
  91. package/dist/esm/PeerConnectionController/CodecStats.js +6 -6
  92. package/dist/esm/PeerConnectionController/DataChannelStats.js +6 -6
  93. package/dist/esm/PeerConnectionController/InboundRTPStats.js +16 -16
  94. package/dist/esm/PeerConnectionController/InboundTrackStats.js +6 -6
  95. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +11 -11
  96. package/dist/esm/PeerConnectionController/PeerConnectionController.js +580 -580
  97. package/dist/esm/PeerConnectionController/SessionStats.js +6 -6
  98. package/dist/esm/PeerConnectionController/StreamStats.js +6 -6
  99. package/dist/esm/PixelStreaming/PixelStreaming.js +603 -603
  100. package/dist/esm/UI/OnScreenKeyboard.js +78 -78
  101. package/dist/esm/UeInstanceMessage/ResponseController.js +34 -34
  102. package/dist/esm/UeInstanceMessage/SendMessageController.js +116 -116
  103. package/dist/esm/UeInstanceMessage/StreamMessageController.js +205 -205
  104. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js +45 -45
  105. package/dist/esm/Util/EventEmitter.js +345 -345
  106. package/dist/esm/Util/FileUtil.js +103 -103
  107. package/dist/esm/Util/IURLSearchParams.js +21 -21
  108. package/dist/esm/Util/InputCoordTranslator.js +45 -45
  109. package/dist/esm/Util/RTCUtils.js +36 -36
  110. package/dist/esm/VideoPlayer/StreamController.js +63 -63
  111. package/dist/esm/VideoPlayer/VideoPlayer.js +173 -173
  112. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +1217 -1217
  113. package/dist/esm/WebXR/WebXRController.js +331 -331
  114. package/dist/esm/pixelstreamingfrontend.js +24 -24
  115. package/dist/types/AFK/AFKController.d.ts +38 -38
  116. package/dist/types/Config/Config.d.ts +220 -220
  117. package/dist/types/Config/SettingBase.d.ts +43 -43
  118. package/dist/types/Config/SettingFlag.d.ts +24 -24
  119. package/dist/types/Config/SettingNumber.d.ts +41 -41
  120. package/dist/types/Config/SettingOption.d.ts +41 -41
  121. package/dist/types/Config/SettingText.d.ts +21 -21
  122. package/dist/types/DataChannel/DataChannelController.d.ts +59 -59
  123. package/dist/types/DataChannel/DataChannelLatencyTestController.d.ts +25 -25
  124. package/dist/types/DataChannel/DataChannelLatencyTestResults.d.ts +46 -46
  125. package/dist/types/DataChannel/DataChannelSender.d.ts +21 -21
  126. package/dist/types/DataChannel/InitialSettings.d.ts +44 -44
  127. package/dist/types/DataChannel/LatencyTestResults.d.ts +31 -31
  128. package/dist/types/FreezeFrame/FreezeFrame.d.ts +36 -36
  129. package/dist/types/FreezeFrame/FreezeFrameController.d.ts +37 -37
  130. package/dist/types/Inputs/GamepadController.d.ts +61 -61
  131. package/dist/types/Inputs/GamepadTypes.d.ts +15 -15
  132. package/dist/types/Inputs/IInputController.d.ts +16 -16
  133. package/dist/types/Inputs/InputClassesFactory.d.ts +53 -53
  134. package/dist/types/Inputs/KeyCodes.d.ts +5 -5
  135. package/dist/types/Inputs/KeyboardController.d.ts +34 -34
  136. package/dist/types/Inputs/MouseButtons.d.ts +22 -22
  137. package/dist/types/Inputs/MouseController.d.ts +40 -40
  138. package/dist/types/Inputs/MouseControllerHovering.d.ts +26 -26
  139. package/dist/types/Inputs/MouseControllerLocked.d.ts +31 -31
  140. package/dist/types/Inputs/SpecialKeyCodes.d.ts +14 -14
  141. package/dist/types/Inputs/TouchController.d.ts +28 -28
  142. package/dist/types/Inputs/TouchControllerFake.d.ts +29 -29
  143. package/dist/types/Inputs/XRGamepadController.d.ts +15 -15
  144. package/dist/types/PeerConnectionController/AggregatedStats.d.ts +82 -82
  145. package/dist/types/PeerConnectionController/CandidatePairStats.d.ts +22 -22
  146. package/dist/types/PeerConnectionController/CandidateStat.d.ts +13 -13
  147. package/dist/types/PeerConnectionController/CodecStats.d.ts +14 -14
  148. package/dist/types/PeerConnectionController/DataChannelStats.d.ts +15 -15
  149. package/dist/types/PeerConnectionController/InboundRTPStats.d.ts +141 -141
  150. package/dist/types/PeerConnectionController/InboundTrackStats.d.ts +32 -32
  151. package/dist/types/PeerConnectionController/OutBoundRTPStats.d.ts +23 -23
  152. package/dist/types/PeerConnectionController/PeerConnectionController.d.ts +143 -143
  153. package/dist/types/PeerConnectionController/SessionStats.d.ts +8 -8
  154. package/dist/types/PeerConnectionController/StreamStats.d.ts +9 -9
  155. package/dist/types/PixelStreaming/PixelStreaming.d.ts +271 -271
  156. package/dist/types/UI/OnScreenKeyboard.d.ts +30 -30
  157. package/dist/types/UeInstanceMessage/ResponseController.d.ts +19 -19
  158. package/dist/types/UeInstanceMessage/SendMessageController.d.ts +18 -18
  159. package/dist/types/UeInstanceMessage/StreamMessageController.d.ts +29 -29
  160. package/dist/types/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -32
  161. package/dist/types/Util/EventEmitter.d.ts +429 -429
  162. package/dist/types/Util/FileUtil.d.ts +32 -32
  163. package/dist/types/Util/IURLSearchParams.d.ts +9 -9
  164. package/dist/types/Util/InputCoordTranslator.d.ts +29 -29
  165. package/dist/types/Util/RTCUtils.d.ts +8 -8
  166. package/dist/types/VideoPlayer/StreamController.d.ts +22 -22
  167. package/dist/types/VideoPlayer/VideoPlayer.d.ts +78 -78
  168. package/dist/types/WebRtcPlayer/WebRtcPlayerController.d.ts +379 -379
  169. package/dist/types/WebXR/WebXRController.d.ts +42 -42
  170. package/dist/types/pixelstreamingfrontend.d.ts +23 -23
  171. package/package.json +45 -45
  172. package/src/Inputs/TouchController.ts +3 -3
@@ -1,110 +1,110 @@
1
- // Copyright Epic Games, Inc. All Rights Reserved.
2
- /*
3
- * New browser APIs have moved away from KeyboardEvent.keyCode to KeyboardEvent.Code.
4
- * For details see: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#constants_for_keycode_value
5
- * We still use old KeyboardEvent.keyCode integers in the UE C++ side, so we need a way to map the new
6
- * string-based KeyboardEvent.Code to the old integers.
7
- */
8
- export const CodeToKeyCode = Object.freeze({
9
- Escape: 27,
10
- Digit0: 48,
11
- Digit1: 49,
12
- Digit2: 50,
13
- Digit3: 51,
14
- Digit4: 52,
15
- Digit5: 53,
16
- Digit6: 54,
17
- Digit7: 55,
18
- Digit8: 56,
19
- Digit9: 57,
20
- Minus: 173,
21
- Equal: 187,
22
- Backspace: 8,
23
- Tab: 9,
24
- KeyQ: 81,
25
- KeyW: 87,
26
- KeyE: 69,
27
- KeyR: 82,
28
- KeyT: 84,
29
- KeyY: 89,
30
- KeyU: 85,
31
- KeyI: 73,
32
- KeyO: 79,
33
- KeyP: 80,
34
- BracketLeft: 219,
35
- BracketRight: 221,
36
- Enter: 13,
37
- ControlLeft: 17,
38
- KeyA: 65,
39
- KeyS: 83,
40
- KeyD: 68,
41
- KeyF: 70,
42
- KeyG: 71,
43
- KeyH: 72,
44
- KeyJ: 74,
45
- KeyK: 75,
46
- KeyL: 76,
47
- Semicolon: 186,
48
- Quote: 222,
49
- Backquote: 192,
50
- ShiftLeft: 16,
51
- Backslash: 220,
52
- KeyZ: 90,
53
- KeyX: 88,
54
- KeyC: 67,
55
- KeyV: 86,
56
- KeyB: 66,
57
- KeyN: 78,
58
- KeyM: 77,
59
- Comma: 188,
60
- Period: 190,
61
- Slash: 191,
62
- ShiftRight: 253,
63
- AltLeft: 18,
64
- Space: 32,
65
- CapsLock: 20,
66
- F1: 112,
67
- F2: 113,
68
- F3: 114,
69
- F4: 115,
70
- F5: 116,
71
- F6: 117,
72
- F7: 118,
73
- F8: 119,
74
- F9: 120,
75
- F10: 121,
76
- F11: 122,
77
- F12: 123,
78
- Pause: 19,
79
- ScrollLock: 145,
80
- NumpadDivide: 111,
81
- NumpadMultiply: 106,
82
- NumpadSubtract: 109,
83
- NumpadAdd: 107,
84
- NumpadDecimal: 110,
85
- Numpad9: 105,
86
- Numpad8: 104,
87
- Numpad7: 103,
88
- Numpad6: 102,
89
- Numpad5: 101,
90
- Numpad4: 100,
91
- Numpad3: 99,
92
- Numpad2: 98,
93
- Numpad1: 97,
94
- Numpad0: 96,
95
- NumLock: 144,
96
- ControlRight: 254,
97
- AltRight: 255,
98
- Home: 36,
99
- End: 35,
100
- ArrowUp: 38,
101
- ArrowLeft: 37,
102
- ArrowRight: 39,
103
- ArrowDown: 40,
104
- PageUp: 33,
105
- PageDown: 34,
106
- Insert: 45,
107
- Delete: 46,
108
- ContextMenu: 93
109
- });
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ /*
3
+ * New browser APIs have moved away from KeyboardEvent.keyCode to KeyboardEvent.Code.
4
+ * For details see: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#constants_for_keycode_value
5
+ * We still use old KeyboardEvent.keyCode integers in the UE C++ side, so we need a way to map the new
6
+ * string-based KeyboardEvent.Code to the old integers.
7
+ */
8
+ export const CodeToKeyCode = Object.freeze({
9
+ Escape: 27,
10
+ Digit0: 48,
11
+ Digit1: 49,
12
+ Digit2: 50,
13
+ Digit3: 51,
14
+ Digit4: 52,
15
+ Digit5: 53,
16
+ Digit6: 54,
17
+ Digit7: 55,
18
+ Digit8: 56,
19
+ Digit9: 57,
20
+ Minus: 173,
21
+ Equal: 187,
22
+ Backspace: 8,
23
+ Tab: 9,
24
+ KeyQ: 81,
25
+ KeyW: 87,
26
+ KeyE: 69,
27
+ KeyR: 82,
28
+ KeyT: 84,
29
+ KeyY: 89,
30
+ KeyU: 85,
31
+ KeyI: 73,
32
+ KeyO: 79,
33
+ KeyP: 80,
34
+ BracketLeft: 219,
35
+ BracketRight: 221,
36
+ Enter: 13,
37
+ ControlLeft: 17,
38
+ KeyA: 65,
39
+ KeyS: 83,
40
+ KeyD: 68,
41
+ KeyF: 70,
42
+ KeyG: 71,
43
+ KeyH: 72,
44
+ KeyJ: 74,
45
+ KeyK: 75,
46
+ KeyL: 76,
47
+ Semicolon: 186,
48
+ Quote: 222,
49
+ Backquote: 192,
50
+ ShiftLeft: 16,
51
+ Backslash: 220,
52
+ KeyZ: 90,
53
+ KeyX: 88,
54
+ KeyC: 67,
55
+ KeyV: 86,
56
+ KeyB: 66,
57
+ KeyN: 78,
58
+ KeyM: 77,
59
+ Comma: 188,
60
+ Period: 190,
61
+ Slash: 191,
62
+ ShiftRight: 253,
63
+ AltLeft: 18,
64
+ Space: 32,
65
+ CapsLock: 20,
66
+ F1: 112,
67
+ F2: 113,
68
+ F3: 114,
69
+ F4: 115,
70
+ F5: 116,
71
+ F6: 117,
72
+ F7: 118,
73
+ F8: 119,
74
+ F9: 120,
75
+ F10: 121,
76
+ F11: 122,
77
+ F12: 123,
78
+ Pause: 19,
79
+ ScrollLock: 145,
80
+ NumpadDivide: 111,
81
+ NumpadMultiply: 106,
82
+ NumpadSubtract: 109,
83
+ NumpadAdd: 107,
84
+ NumpadDecimal: 110,
85
+ Numpad9: 105,
86
+ Numpad8: 104,
87
+ Numpad7: 103,
88
+ Numpad6: 102,
89
+ Numpad5: 101,
90
+ Numpad4: 100,
91
+ Numpad3: 99,
92
+ Numpad2: 98,
93
+ Numpad1: 97,
94
+ Numpad0: 96,
95
+ NumLock: 144,
96
+ ControlRight: 254,
97
+ AltRight: 255,
98
+ Home: 36,
99
+ End: 35,
100
+ ArrowUp: 38,
101
+ ArrowLeft: 37,
102
+ ArrowRight: 39,
103
+ ArrowDown: 40,
104
+ PageUp: 33,
105
+ PageDown: 34,
106
+ Insert: 45,
107
+ Delete: 46,
108
+ ContextMenu: 93
109
+ });
110
110
  //# sourceMappingURL=KeyCodes.js.map
@@ -1,134 +1,134 @@
1
- // Copyright Epic Games, Inc. All Rights Reserved.
2
- import { SpecialKeyCodes } from './SpecialKeyCodes';
3
- import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
4
- import { Flags } from '../Config/Config';
5
- import { CodeToKeyCode } from './KeyCodes';
6
- /**
7
- * Handles the Keyboard Inputs for the document
8
- */
9
- export class KeyboardController {
10
- constructor(streamMessageController, config, activeKeys) {
11
- this.streamMessageController = streamMessageController;
12
- this.config = config;
13
- this.activeKeys = activeKeys;
14
- this.onKeyDownListener = this.handleOnKeyDown.bind(this);
15
- this.onKeyUpListener = this.handleOnKeyUp.bind(this);
16
- this.onKeyPressListener = this.handleOnKeyPress.bind(this);
17
- this.onCompositionEndListener = this.handleOnCompositionEnd.bind(this);
18
- }
19
- register() {
20
- document.addEventListener('compositionend', this.onCompositionEndListener);
21
- document.addEventListener('keydown', this.onKeyDownListener);
22
- document.addEventListener('keyup', this.onKeyUpListener);
23
- //This has been deprecated as at Jun 13 2021
24
- document.addEventListener('keypress', this.onKeyPressListener);
25
- }
26
- unregister() {
27
- document.removeEventListener('compositionend', this.onCompositionEndListener);
28
- document.removeEventListener('keydown', this.onKeyDownListener);
29
- document.removeEventListener('keyup', this.onKeyUpListener);
30
- document.removeEventListener('keypress', this.onKeyPressListener);
31
- }
32
- handleOnKeyDown(keyboardEvent) {
33
- const keyCode = this.getKeycode(keyboardEvent);
34
- if (!keyCode || keyCode === 229) {
35
- return;
36
- }
37
- const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
38
- toStreamerHandlers.get('KeyDown')([this.getKeycode(keyboardEvent), keyboardEvent.repeat ? 1 : 0]);
39
- const activeKeys = this.activeKeys.getActiveKeys();
40
- activeKeys.push(keyCode);
41
- // Backspace is not considered a keypress in JavaScript but we need it
42
- // to be so characters may be deleted in a UE text entry field.
43
- if (keyCode === SpecialKeyCodes.backSpace) {
44
- document.dispatchEvent(new KeyboardEvent('keypress', {
45
- charCode: SpecialKeyCodes.backSpace
46
- }));
47
- }
48
- if (this.config.isFlagEnabled(Flags.SuppressBrowserKeys) && this.isKeyCodeBrowserKey(keyCode)) {
49
- keyboardEvent.preventDefault();
50
- }
51
- }
52
- handleOnKeyUp(keyboardEvent) {
53
- const keyCode = this.getKeycode(keyboardEvent);
54
- if (!keyCode) {
55
- return;
56
- }
57
- const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
58
- toStreamerHandlers.get('KeyUp')([keyCode]);
59
- if (this.config.isFlagEnabled(Flags.SuppressBrowserKeys) && this.isKeyCodeBrowserKey(keyCode)) {
60
- keyboardEvent.preventDefault();
61
- }
62
- }
63
- handleOnKeyPress(keyboardEvent) {
64
- const keyCode = this.getKeycode(keyboardEvent);
65
- if (!keyCode) {
66
- return;
67
- }
68
- const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
69
- toStreamerHandlers.get('KeyPress')([keyCode]);
70
- }
71
- handleOnCompositionEnd(compositionEvent) {
72
- if (compositionEvent.data && compositionEvent.data.length) {
73
- compositionEvent.data.split('').forEach((char) => {
74
- // This keydown, keypress, keyup flow is required to mimic the way characters are
75
- // normally triggered
76
- this.handleOnKeyDown(new KeyboardEvent('keydown', {
77
- keyCode: char.toUpperCase().charCodeAt(0),
78
- charCode: char.charCodeAt(0)
79
- }));
80
- this.handleOnKeyPress(new KeyboardEvent('keypress', {
81
- keyCode: char.toUpperCase().charCodeAt(0),
82
- charCode: char.charCodeAt(0)
83
- }));
84
- this.handleOnKeyUp(new KeyboardEvent('keyup', {
85
- keyCode: char.toUpperCase().charCodeAt(0),
86
- charCode: char.charCodeAt(0)
87
- }));
88
- });
89
- }
90
- }
91
- /**
92
- * Gets the Keycode of the Key pressed
93
- * @param keyboardEvent - Key board Event
94
- * @returns - the key code of the Key
95
- */
96
- getKeycode(keyboardEvent) {
97
- // If we don't have keyCode property because browser API is deprecated then use KeyboardEvent.code instead.
98
- // See: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#constants_for_keycode_value
99
- if (!('keyCode' in keyboardEvent)) {
100
- // Convert KeyboardEvent.code string into integer-based key code for backwards compatibility reasons.
101
- const event = keyboardEvent;
102
- if (event.code in CodeToKeyCode) {
103
- return CodeToKeyCode[event.code];
104
- }
105
- else {
106
- Logger.Warning(`Keyboard code of ${event.code} is not supported in our mapping, ignoring this key.`);
107
- return null;
108
- }
109
- }
110
- // If we made it here KeyboardEvent.keyCode is still supported so we can safely use it.
111
- if (keyboardEvent.keyCode === SpecialKeyCodes.shift && keyboardEvent.code === 'ShiftRight') {
112
- return SpecialKeyCodes.rightShift;
113
- }
114
- else if (keyboardEvent.keyCode === SpecialKeyCodes.control &&
115
- keyboardEvent.code === 'ControlRight') {
116
- return SpecialKeyCodes.rightControl;
117
- }
118
- else if (keyboardEvent.keyCode === SpecialKeyCodes.alt && keyboardEvent.code === 'AltRight') {
119
- return SpecialKeyCodes.rightAlt;
120
- }
121
- else {
122
- return keyboardEvent.keyCode;
123
- }
124
- }
125
- /**
126
- * Browser keys do not have a charCode so we only need to test keyCode.
127
- * @param keyCode - the browser keycode number
128
- */
129
- isKeyCodeBrowserKey(keyCode) {
130
- // Function keys or tab key are considered "browser keys" that we may wish to suppress by preventing them being process by browser.
131
- return (keyCode >= 112 && keyCode <= 123) || keyCode === 9;
132
- }
133
- }
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ import { SpecialKeyCodes } from './SpecialKeyCodes';
3
+ import { Logger } from '@epicgames-ps/lib-pixelstreamingcommon-ue5.5';
4
+ import { Flags } from '../Config/Config';
5
+ import { CodeToKeyCode } from './KeyCodes';
6
+ /**
7
+ * Handles the Keyboard Inputs for the document
8
+ */
9
+ export class KeyboardController {
10
+ constructor(streamMessageController, config, activeKeys) {
11
+ this.streamMessageController = streamMessageController;
12
+ this.config = config;
13
+ this.activeKeys = activeKeys;
14
+ this.onKeyDownListener = this.handleOnKeyDown.bind(this);
15
+ this.onKeyUpListener = this.handleOnKeyUp.bind(this);
16
+ this.onKeyPressListener = this.handleOnKeyPress.bind(this);
17
+ this.onCompositionEndListener = this.handleOnCompositionEnd.bind(this);
18
+ }
19
+ register() {
20
+ document.addEventListener('compositionend', this.onCompositionEndListener);
21
+ document.addEventListener('keydown', this.onKeyDownListener);
22
+ document.addEventListener('keyup', this.onKeyUpListener);
23
+ //This has been deprecated as at Jun 13 2021
24
+ document.addEventListener('keypress', this.onKeyPressListener);
25
+ }
26
+ unregister() {
27
+ document.removeEventListener('compositionend', this.onCompositionEndListener);
28
+ document.removeEventListener('keydown', this.onKeyDownListener);
29
+ document.removeEventListener('keyup', this.onKeyUpListener);
30
+ document.removeEventListener('keypress', this.onKeyPressListener);
31
+ }
32
+ handleOnKeyDown(keyboardEvent) {
33
+ const keyCode = this.getKeycode(keyboardEvent);
34
+ if (!keyCode || keyCode === 229) {
35
+ return;
36
+ }
37
+ const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
38
+ toStreamerHandlers.get('KeyDown')([this.getKeycode(keyboardEvent), keyboardEvent.repeat ? 1 : 0]);
39
+ const activeKeys = this.activeKeys.getActiveKeys();
40
+ activeKeys.push(keyCode);
41
+ // Backspace is not considered a keypress in JavaScript but we need it
42
+ // to be so characters may be deleted in a UE text entry field.
43
+ if (keyCode === SpecialKeyCodes.backSpace) {
44
+ document.dispatchEvent(new KeyboardEvent('keypress', {
45
+ charCode: SpecialKeyCodes.backSpace
46
+ }));
47
+ }
48
+ if (this.config.isFlagEnabled(Flags.SuppressBrowserKeys) && this.isKeyCodeBrowserKey(keyCode)) {
49
+ keyboardEvent.preventDefault();
50
+ }
51
+ }
52
+ handleOnKeyUp(keyboardEvent) {
53
+ const keyCode = this.getKeycode(keyboardEvent);
54
+ if (!keyCode) {
55
+ return;
56
+ }
57
+ const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
58
+ toStreamerHandlers.get('KeyUp')([keyCode]);
59
+ if (this.config.isFlagEnabled(Flags.SuppressBrowserKeys) && this.isKeyCodeBrowserKey(keyCode)) {
60
+ keyboardEvent.preventDefault();
61
+ }
62
+ }
63
+ handleOnKeyPress(keyboardEvent) {
64
+ const keyCode = this.getKeycode(keyboardEvent);
65
+ if (!keyCode) {
66
+ return;
67
+ }
68
+ const toStreamerHandlers = this.streamMessageController.toStreamerHandlers;
69
+ toStreamerHandlers.get('KeyPress')([keyCode]);
70
+ }
71
+ handleOnCompositionEnd(compositionEvent) {
72
+ if (compositionEvent.data && compositionEvent.data.length) {
73
+ compositionEvent.data.split('').forEach((char) => {
74
+ // This keydown, keypress, keyup flow is required to mimic the way characters are
75
+ // normally triggered
76
+ this.handleOnKeyDown(new KeyboardEvent('keydown', {
77
+ keyCode: char.toUpperCase().charCodeAt(0),
78
+ charCode: char.charCodeAt(0)
79
+ }));
80
+ this.handleOnKeyPress(new KeyboardEvent('keypress', {
81
+ keyCode: char.toUpperCase().charCodeAt(0),
82
+ charCode: char.charCodeAt(0)
83
+ }));
84
+ this.handleOnKeyUp(new KeyboardEvent('keyup', {
85
+ keyCode: char.toUpperCase().charCodeAt(0),
86
+ charCode: char.charCodeAt(0)
87
+ }));
88
+ });
89
+ }
90
+ }
91
+ /**
92
+ * Gets the Keycode of the Key pressed
93
+ * @param keyboardEvent - Key board Event
94
+ * @returns - the key code of the Key
95
+ */
96
+ getKeycode(keyboardEvent) {
97
+ // If we don't have keyCode property because browser API is deprecated then use KeyboardEvent.code instead.
98
+ // See: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#constants_for_keycode_value
99
+ if (!('keyCode' in keyboardEvent)) {
100
+ // Convert KeyboardEvent.code string into integer-based key code for backwards compatibility reasons.
101
+ const event = keyboardEvent;
102
+ if (event.code in CodeToKeyCode) {
103
+ return CodeToKeyCode[event.code];
104
+ }
105
+ else {
106
+ Logger.Warning(`Keyboard code of ${event.code} is not supported in our mapping, ignoring this key.`);
107
+ return null;
108
+ }
109
+ }
110
+ // If we made it here KeyboardEvent.keyCode is still supported so we can safely use it.
111
+ if (keyboardEvent.keyCode === SpecialKeyCodes.shift && keyboardEvent.code === 'ShiftRight') {
112
+ return SpecialKeyCodes.rightShift;
113
+ }
114
+ else if (keyboardEvent.keyCode === SpecialKeyCodes.control &&
115
+ keyboardEvent.code === 'ControlRight') {
116
+ return SpecialKeyCodes.rightControl;
117
+ }
118
+ else if (keyboardEvent.keyCode === SpecialKeyCodes.alt && keyboardEvent.code === 'AltRight') {
119
+ return SpecialKeyCodes.rightAlt;
120
+ }
121
+ else {
122
+ return keyboardEvent.keyCode;
123
+ }
124
+ }
125
+ /**
126
+ * Browser keys do not have a charCode so we only need to test keyCode.
127
+ * @param keyCode - the browser keycode number
128
+ */
129
+ isKeyCodeBrowserKey(keyCode) {
130
+ // Function keys or tab key are considered "browser keys" that we may wish to suppress by preventing them being process by browser.
131
+ return (keyCode >= 112 && keyCode <= 123) || keyCode === 9;
132
+ }
133
+ }
134
134
  //# sourceMappingURL=KeyboardController.js.map
@@ -1,24 +1,24 @@
1
- // Copyright Epic Games, Inc. All Rights Reserved.
2
- /**
3
- * Mouse Button Data
4
- * {@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button}
5
- */
6
- export class MouseButton {
7
- }
8
- MouseButton.mainButton = 0; // Left button.
9
- MouseButton.auxiliaryButton = 1; // Wheel button.
10
- MouseButton.secondaryButton = 2; // Right button.
11
- MouseButton.fourthButton = 3; // Browser Back button.
12
- MouseButton.fifthButton = 4; // Browser Forward button.
13
- /**
14
- * Mouse Button Mask Data
15
- * {@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons}
16
- */
17
- export class MouseButtonsMask {
18
- }
19
- MouseButtonsMask.primaryButton = 1; // Left button.
20
- MouseButtonsMask.secondaryButton = 2; // Right button.
21
- MouseButtonsMask.auxiliaryButton = 4; // Wheel button.
22
- MouseButtonsMask.fourthButton = 8; // Browser Back button.
23
- MouseButtonsMask.fifthButton = 16; // Browser Forward button.
1
+ // Copyright Epic Games, Inc. All Rights Reserved.
2
+ /**
3
+ * Mouse Button Data
4
+ * {@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button}
5
+ */
6
+ export class MouseButton {
7
+ }
8
+ MouseButton.mainButton = 0; // Left button.
9
+ MouseButton.auxiliaryButton = 1; // Wheel button.
10
+ MouseButton.secondaryButton = 2; // Right button.
11
+ MouseButton.fourthButton = 3; // Browser Back button.
12
+ MouseButton.fifthButton = 4; // Browser Forward button.
13
+ /**
14
+ * Mouse Button Mask Data
15
+ * {@link https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/buttons}
16
+ */
17
+ export class MouseButtonsMask {
18
+ }
19
+ MouseButtonsMask.primaryButton = 1; // Left button.
20
+ MouseButtonsMask.secondaryButton = 2; // Right button.
21
+ MouseButtonsMask.auxiliaryButton = 4; // Wheel button.
22
+ MouseButtonsMask.fourthButton = 8; // Browser Back button.
23
+ MouseButtonsMask.fifthButton = 16; // Browser Forward button.
24
24
  //# sourceMappingURL=MouseButtons.js.map