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

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 (169) 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/TouchControllerFake.js +91 -91
  29. package/dist/commonjs/Inputs/XRGamepadController.js +124 -124
  30. package/dist/commonjs/PeerConnectionController/AggregatedStats.js +252 -252
  31. package/dist/commonjs/PeerConnectionController/CandidatePairStats.js +10 -10
  32. package/dist/commonjs/PeerConnectionController/CandidateStat.js +10 -10
  33. package/dist/commonjs/PeerConnectionController/CodecStats.js +10 -10
  34. package/dist/commonjs/PeerConnectionController/DataChannelStats.js +10 -10
  35. package/dist/commonjs/PeerConnectionController/InboundRTPStats.js +22 -22
  36. package/dist/commonjs/PeerConnectionController/InboundTrackStats.js +10 -10
  37. package/dist/commonjs/PeerConnectionController/OutBoundRTPStats.js +16 -16
  38. package/dist/commonjs/PeerConnectionController/PeerConnectionController.js +584 -584
  39. package/dist/commonjs/PeerConnectionController/SessionStats.js +10 -10
  40. package/dist/commonjs/PeerConnectionController/StreamStats.js +10 -10
  41. package/dist/commonjs/PixelStreaming/PixelStreaming.js +607 -607
  42. package/dist/commonjs/UI/OnScreenKeyboard.js +82 -82
  43. package/dist/commonjs/UeInstanceMessage/ResponseController.js +38 -38
  44. package/dist/commonjs/UeInstanceMessage/SendMessageController.js +120 -120
  45. package/dist/commonjs/UeInstanceMessage/StreamMessageController.js +210 -210
  46. package/dist/commonjs/UeInstanceMessage/ToStreamerMessagesController.js +49 -49
  47. package/dist/commonjs/Util/EventEmitter.js +386 -386
  48. package/dist/commonjs/Util/FileUtil.js +108 -108
  49. package/dist/commonjs/Util/IURLSearchParams.js +25 -25
  50. package/dist/commonjs/Util/InputCoordTranslator.js +49 -49
  51. package/dist/commonjs/Util/RTCUtils.js +40 -40
  52. package/dist/commonjs/VideoPlayer/StreamController.js +67 -67
  53. package/dist/commonjs/VideoPlayer/VideoPlayer.js +177 -177
  54. package/dist/commonjs/WebRtcPlayer/WebRtcPlayerController.js +1221 -1221
  55. package/dist/commonjs/WebXR/WebXRController.js +335 -335
  56. package/dist/commonjs/pixelstreamingfrontend.js +70 -70
  57. package/dist/esm/AFK/AFKController.js +105 -105
  58. package/dist/esm/Config/Config.js +551 -551
  59. package/dist/esm/Config/SettingBase.js +94 -94
  60. package/dist/esm/Config/SettingFlag.js +45 -45
  61. package/dist/esm/Config/SettingNumber.js +79 -79
  62. package/dist/esm/Config/SettingOption.js +80 -80
  63. package/dist/esm/Config/SettingText.js +38 -38
  64. package/dist/esm/DataChannel/DataChannelController.js +102 -102
  65. package/dist/esm/DataChannel/DataChannelLatencyTestController.js +90 -90
  66. package/dist/esm/DataChannel/DataChannelLatencyTestResults.js +14 -14
  67. package/dist/esm/DataChannel/DataChannelSender.js +39 -39
  68. package/dist/esm/DataChannel/InitialSettings.js +34 -34
  69. package/dist/esm/DataChannel/LatencyTestResults.js +56 -56
  70. package/dist/esm/FreezeFrame/FreezeFrame.js +89 -89
  71. package/dist/esm/FreezeFrame/FreezeFrameController.js +91 -91
  72. package/dist/esm/Inputs/GamepadController.js +184 -184
  73. package/dist/esm/Inputs/GamepadTypes.js +17 -17
  74. package/dist/esm/Inputs/IInputController.js +1 -1
  75. package/dist/esm/Inputs/InputClassesFactory.js +91 -91
  76. package/dist/esm/Inputs/KeyCodes.js +109 -109
  77. package/dist/esm/Inputs/KeyboardController.js +133 -133
  78. package/dist/esm/Inputs/MouseButtons.js +23 -23
  79. package/dist/esm/Inputs/MouseController.js +93 -93
  80. package/dist/esm/Inputs/MouseControllerHovering.js +89 -89
  81. package/dist/esm/Inputs/MouseControllerLocked.js +149 -149
  82. package/dist/esm/Inputs/SpecialKeyCodes.js +15 -15
  83. package/dist/esm/Inputs/TouchController.js +119 -119
  84. package/dist/esm/Inputs/TouchControllerFake.js +87 -87
  85. package/dist/esm/Inputs/XRGamepadController.js +120 -120
  86. package/dist/esm/PeerConnectionController/AggregatedStats.js +248 -248
  87. package/dist/esm/PeerConnectionController/CandidatePairStats.js +6 -6
  88. package/dist/esm/PeerConnectionController/CandidateStat.js +6 -6
  89. package/dist/esm/PeerConnectionController/CodecStats.js +6 -6
  90. package/dist/esm/PeerConnectionController/DataChannelStats.js +6 -6
  91. package/dist/esm/PeerConnectionController/InboundRTPStats.js +16 -16
  92. package/dist/esm/PeerConnectionController/InboundTrackStats.js +6 -6
  93. package/dist/esm/PeerConnectionController/OutBoundRTPStats.js +11 -11
  94. package/dist/esm/PeerConnectionController/PeerConnectionController.js +580 -580
  95. package/dist/esm/PeerConnectionController/SessionStats.js +6 -6
  96. package/dist/esm/PeerConnectionController/StreamStats.js +6 -6
  97. package/dist/esm/PixelStreaming/PixelStreaming.js +603 -603
  98. package/dist/esm/UI/OnScreenKeyboard.js +78 -78
  99. package/dist/esm/UeInstanceMessage/ResponseController.js +34 -34
  100. package/dist/esm/UeInstanceMessage/SendMessageController.js +116 -116
  101. package/dist/esm/UeInstanceMessage/StreamMessageController.js +205 -205
  102. package/dist/esm/UeInstanceMessage/ToStreamerMessagesController.js +45 -45
  103. package/dist/esm/Util/EventEmitter.js +345 -345
  104. package/dist/esm/Util/FileUtil.js +103 -103
  105. package/dist/esm/Util/IURLSearchParams.js +21 -21
  106. package/dist/esm/Util/InputCoordTranslator.js +45 -45
  107. package/dist/esm/Util/RTCUtils.js +36 -36
  108. package/dist/esm/VideoPlayer/StreamController.js +63 -63
  109. package/dist/esm/VideoPlayer/VideoPlayer.js +173 -173
  110. package/dist/esm/WebRtcPlayer/WebRtcPlayerController.js +1217 -1217
  111. package/dist/esm/WebXR/WebXRController.js +331 -331
  112. package/dist/esm/pixelstreamingfrontend.js +24 -24
  113. package/dist/types/AFK/AFKController.d.ts +38 -38
  114. package/dist/types/Config/Config.d.ts +220 -220
  115. package/dist/types/Config/SettingBase.d.ts +43 -43
  116. package/dist/types/Config/SettingFlag.d.ts +24 -24
  117. package/dist/types/Config/SettingNumber.d.ts +41 -41
  118. package/dist/types/Config/SettingOption.d.ts +41 -41
  119. package/dist/types/Config/SettingText.d.ts +21 -21
  120. package/dist/types/DataChannel/DataChannelController.d.ts +59 -59
  121. package/dist/types/DataChannel/DataChannelLatencyTestController.d.ts +25 -25
  122. package/dist/types/DataChannel/DataChannelLatencyTestResults.d.ts +46 -46
  123. package/dist/types/DataChannel/DataChannelSender.d.ts +21 -21
  124. package/dist/types/DataChannel/InitialSettings.d.ts +44 -44
  125. package/dist/types/DataChannel/LatencyTestResults.d.ts +31 -31
  126. package/dist/types/FreezeFrame/FreezeFrame.d.ts +36 -36
  127. package/dist/types/FreezeFrame/FreezeFrameController.d.ts +37 -37
  128. package/dist/types/Inputs/GamepadController.d.ts +61 -61
  129. package/dist/types/Inputs/GamepadTypes.d.ts +15 -15
  130. package/dist/types/Inputs/IInputController.d.ts +16 -16
  131. package/dist/types/Inputs/InputClassesFactory.d.ts +53 -53
  132. package/dist/types/Inputs/KeyCodes.d.ts +5 -5
  133. package/dist/types/Inputs/KeyboardController.d.ts +34 -34
  134. package/dist/types/Inputs/MouseButtons.d.ts +22 -22
  135. package/dist/types/Inputs/MouseController.d.ts +40 -40
  136. package/dist/types/Inputs/MouseControllerHovering.d.ts +26 -26
  137. package/dist/types/Inputs/MouseControllerLocked.d.ts +31 -31
  138. package/dist/types/Inputs/SpecialKeyCodes.d.ts +14 -14
  139. package/dist/types/Inputs/TouchController.d.ts +28 -28
  140. package/dist/types/Inputs/TouchControllerFake.d.ts +29 -29
  141. package/dist/types/Inputs/XRGamepadController.d.ts +15 -15
  142. package/dist/types/PeerConnectionController/AggregatedStats.d.ts +82 -82
  143. package/dist/types/PeerConnectionController/CandidatePairStats.d.ts +22 -22
  144. package/dist/types/PeerConnectionController/CandidateStat.d.ts +13 -13
  145. package/dist/types/PeerConnectionController/CodecStats.d.ts +14 -14
  146. package/dist/types/PeerConnectionController/DataChannelStats.d.ts +15 -15
  147. package/dist/types/PeerConnectionController/InboundRTPStats.d.ts +141 -141
  148. package/dist/types/PeerConnectionController/InboundTrackStats.d.ts +32 -32
  149. package/dist/types/PeerConnectionController/OutBoundRTPStats.d.ts +23 -23
  150. package/dist/types/PeerConnectionController/PeerConnectionController.d.ts +143 -143
  151. package/dist/types/PeerConnectionController/SessionStats.d.ts +8 -8
  152. package/dist/types/PeerConnectionController/StreamStats.d.ts +9 -9
  153. package/dist/types/PixelStreaming/PixelStreaming.d.ts +271 -271
  154. package/dist/types/UI/OnScreenKeyboard.d.ts +30 -30
  155. package/dist/types/UeInstanceMessage/ResponseController.d.ts +19 -19
  156. package/dist/types/UeInstanceMessage/SendMessageController.d.ts +18 -18
  157. package/dist/types/UeInstanceMessage/StreamMessageController.d.ts +29 -29
  158. package/dist/types/UeInstanceMessage/ToStreamerMessagesController.d.ts +32 -32
  159. package/dist/types/Util/EventEmitter.d.ts +429 -429
  160. package/dist/types/Util/FileUtil.d.ts +32 -32
  161. package/dist/types/Util/IURLSearchParams.d.ts +9 -9
  162. package/dist/types/Util/InputCoordTranslator.d.ts +29 -29
  163. package/dist/types/Util/RTCUtils.d.ts +8 -8
  164. package/dist/types/VideoPlayer/StreamController.d.ts +22 -22
  165. package/dist/types/VideoPlayer/VideoPlayer.d.ts +78 -78
  166. package/dist/types/WebRtcPlayer/WebRtcPlayerController.d.ts +379 -379
  167. package/dist/types/WebXR/WebXRController.d.ts +42 -42
  168. package/dist/types/pixelstreamingfrontend.d.ts +23 -23
  169. package/package.json +45 -45
@@ -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