diff --git a/Remotely_Agent/Remotely_Agent.csproj b/Remotely_Agent/Remotely_Agent.csproj index 5fd1e7f9..242a0b63 100644 --- a/Remotely_Agent/Remotely_Agent.csproj +++ b/Remotely_Agent/Remotely_Agent.csproj @@ -17,6 +17,14 @@ Remotely_Agent + + + + + + + + @@ -65,8 +73,4 @@ - - - - diff --git a/Remotely_Library/Win32/User32.cs b/Remotely_Library/Win32/User32.cs index 59c9d65e..f7cf88ae 100644 --- a/Remotely_Library/Win32/User32.cs +++ b/Remotely_Library/Win32/User32.cs @@ -763,7 +763,8 @@ namespace Remotely_Library.Win32_Classes ///         ///Clear key         /// - OEM_CLEAR = 0xFE + OEM_CLEAR = 0xFE, + SEMI_COLON = 0x3b } public enum ScanCodeShort : short { diff --git a/Remotely_ScreenCast/Capture/BitBltCapture.cs b/Remotely_ScreenCast/Capture/BitBltCapture.cs index 30b33023..8d71e0a8 100644 --- a/Remotely_ScreenCast/Capture/BitBltCapture.cs +++ b/Remotely_ScreenCast/Capture/BitBltCapture.cs @@ -60,6 +60,9 @@ namespace Remotely_ScreenCast.Capture private int selectedScreen = Screen.AllScreens.ToList().IndexOf(Screen.PrimaryScreen); private Graphics graphic; private string desktopName; + private IntPtr hWnd; + private IntPtr hDC; + private IntPtr graphDC; public BitBltCapture() @@ -73,6 +76,7 @@ namespace Remotely_ScreenCast.Capture PreviousFrame = new Bitmap(CurrentScreenBounds.Width, CurrentScreenBounds.Height, PixelFormat.Format32bppArgb); graphic = Graphics.FromImage(CurrentFrame); desktopName = Win32Interop.GetCurrentDesktop(); + hWnd = User32.GetDesktopWindow(); } public void Capture() @@ -99,14 +103,30 @@ namespace Remotely_ScreenCast.Capture { lock (ScreenLock) { + hWnd = User32.GetDesktopWindow(); PreviousFrame = (Bitmap)CurrentFrame.Clone(); - graphic.CopyFromScreen(0 + CurrentScreenBounds.Left, 0 + CurrentScreenBounds.Top, 0, 0, new Size(CurrentScreenBounds.Width, CurrentScreenBounds.Height)); + hDC = User32.GetWindowDC(hWnd); + graphic = Graphics.FromImage(CurrentFrame); + graphDC = graphic.GetHdc(); + var copyResult = GDI32.BitBlt(graphDC, 0, 0, CurrentScreenBounds.Width, CurrentScreenBounds.Height, hDC, CurrentScreenBounds.Left, CurrentScreenBounds.Top, GDI32.TernaryRasterOperations.SRCCOPY); + //graphic.CopyFromScreen(CurrentScreenBounds.Left, CurrentScreenBounds.Top, 0, 0, new Size(CurrentScreenBounds.Width, CurrentScreenBounds.Height)); } } catch (Exception ex) { Logger.Write(ex); } + finally + { + if (graphDC != IntPtr.Zero) + { + graphic.ReleaseHdc(graphDC); + } + if (hDC != IntPtr.Zero) + { + User32.ReleaseDC(hWnd, hDC); + } + } } } } diff --git a/Remotely_ScreenCast/Capture/CursorIconWatcher.cs b/Remotely_ScreenCast/Capture/CursorIconWatcher.cs index 61eb0683..0967c500 100644 --- a/Remotely_ScreenCast/Capture/CursorIconWatcher.cs +++ b/Remotely_ScreenCast/Capture/CursorIconWatcher.cs @@ -44,6 +44,7 @@ namespace Remotely_ScreenCast.Capture var currentCursor = cursorInfo.hCursor.ToInt32(); if (currentCursor != PreviousCursorHandle) { + PreviousCursorHandle = currentCursor; OnChange?.Invoke(this, currentCursor); } } diff --git a/Remotely_ScreenCast/Capture/DXCapture.cs b/Remotely_ScreenCast/Capture/DXCapture.cs index f1a90774..e33b48ad 100644 --- a/Remotely_ScreenCast/Capture/DXCapture.cs +++ b/Remotely_ScreenCast/Capture/DXCapture.cs @@ -210,17 +210,9 @@ namespace Remotely_ScreenCast.Capture { if (e.ResultCode.Code != SharpDX.DXGI.ResultCode.WaitTimeout.Result.Code) { - Logger.Write(e); - Init(); - Capture(); + throw; } } - catch (Exception e) - { - Logger.Write(e); - Init(); - Capture(); - } } } } diff --git a/Remotely_ScreenCast/Capture/ScreenCaster.cs b/Remotely_ScreenCast/Capture/ScreenCaster.cs index f91efdc2..c87e8114 100644 --- a/Remotely_ScreenCast/Capture/ScreenCaster.cs +++ b/Remotely_ScreenCast/Capture/ScreenCaster.cs @@ -26,8 +26,8 @@ namespace Remotely_ScreenCast.Capture { if (Program.Viewers.Count == 0) { - capturer = new DXCapture(); - captureMode = CaptureMode.DirectX; + capturer = new BitBltCapture(); + captureMode = CaptureMode.BitBtl; } else { @@ -68,9 +68,9 @@ namespace Remotely_ScreenCast.Capture await outgoingMessages.SendScreenSize(capturer.CurrentScreenBounds.Width, capturer.CurrentScreenBounds.Height, viewerID); - capturer.ScreenChanged += async (sender, size) => + capturer.ScreenChanged += async (sender, bounds) => { - await outgoingMessages.SendScreenSize(size.Width, size.Height, viewerID); + await outgoingMessages.SendScreenSize(bounds.Width, bounds.Height, viewerID); }; while (!viewer.DisconnectRequested) @@ -98,7 +98,17 @@ namespace Remotely_ScreenCast.Capture } catch (Exception ex) { - Logger.Write($"Outer Error: {ex.Message}{Environment.NewLine}{ex.StackTrace}"); + Logger.Write(ex); + if (captureMode == CaptureMode.DirectX) + { + capturer = new BitBltCapture(); + captureMode = CaptureMode.BitBtl; + capturer.ScreenChanged += async (sender, bounds) => + { + await outgoingMessages.SendScreenSize(bounds.Width, bounds.Height, viewerID); + }; + capturer.SelectedScreen = viewer.CurrentScreenIndex; + } } } @@ -109,11 +119,17 @@ namespace Remotely_ScreenCast.Capture } Logger.Write($"Ended screen cast. Requester: {requesterName}. Viewer ID: {viewerID}."); } - public static Tuple GetAbsoluteScreenCoordinatesFromPercentages(double percentX, double percentY, ICapturer capturer) + public static Tuple GetAbsolutePercentFromRelativePercent(double percentX, double percentY, ICapturer capturer) { var absoluteX = (capturer.CurrentScreenBounds.Width * percentX) + capturer.CurrentScreenBounds.Left; var absoluteY = (capturer.CurrentScreenBounds.Height * percentY) + capturer.CurrentScreenBounds.Top; return new Tuple(absoluteX / SystemInformation.VirtualScreen.Width, absoluteY / SystemInformation.VirtualScreen.Height); } + public static Tuple GetAbsolutePointFromRelativePercent(double percentX, double percentY, ICapturer capturer) + { + var absoluteX = (capturer.CurrentScreenBounds.Width * percentX) + capturer.CurrentScreenBounds.Left; + var absoluteY = (capturer.CurrentScreenBounds.Height * percentY) + capturer.CurrentScreenBounds.Top; + return new Tuple(absoluteX, absoluteY); + } } } diff --git a/Remotely_ScreenCast/Program.cs b/Remotely_ScreenCast/Program.cs index ba36d94c..0386036d 100644 --- a/Remotely_ScreenCast/Program.cs +++ b/Remotely_ScreenCast/Program.cs @@ -56,7 +56,10 @@ namespace Remotely_ScreenCast StartWaitForViewerTimer(); - Console.Read(); + while (true) + { + Console.Read(); + } } private static async void CursorIconWatcher_OnChange(object sender, int cursor) diff --git a/Remotely_ScreenCast/Remotely_ScreenCast.csproj b/Remotely_ScreenCast/Remotely_ScreenCast.csproj index b62c4782..aea169b1 100644 --- a/Remotely_ScreenCast/Remotely_ScreenCast.csproj +++ b/Remotely_ScreenCast/Remotely_ScreenCast.csproj @@ -154,6 +154,7 @@ + diff --git a/Remotely_ScreenCast/Sockets/MessageHandlers.cs b/Remotely_ScreenCast/Sockets/MessageHandlers.cs index 645889a1..36e16e11 100644 --- a/Remotely_ScreenCast/Sockets/MessageHandlers.cs +++ b/Remotely_ScreenCast/Sockets/MessageHandlers.cs @@ -51,6 +51,7 @@ namespace Remotely_ScreenCast.Sockets { if (Program.Viewers.TryGetValue(viewerID, out var viewer) && viewer.HasControl) { + Win32Interop.SendKeyDown((User32.VirtualKeyShort)keyCode); Win32Interop.SendKeyUp((User32.VirtualKeyShort)keyCode); } @@ -60,11 +61,51 @@ namespace Remotely_ScreenCast.Sockets { if (Program.Viewers.TryGetValue(viewerID, out var viewer) && viewer.HasControl) { - var mousePoint = ScreenCaster.GetAbsoluteScreenCoordinatesFromPercentages(percentX, percentY, viewer.Capturer); + var mousePoint = ScreenCaster.GetAbsolutePercentFromRelativePercent(percentX, percentY, viewer.Capturer); Win32Interop.SendMouseMove(mousePoint.Item1, mousePoint.Item2); } }); + hubConnection.On("MouseDown", (int button, double percentX, double percentY, string viewerID) => + { + if (Program.Viewers.TryGetValue(viewerID, out var viewer) && viewer.HasControl) + { + var mousePoint = ScreenCaster.GetAbsolutePercentFromRelativePercent(percentX, percentY, viewer.Capturer); + if (button == 0) + { + Win32Interop.SendLeftMouseDown((int)mousePoint.Item1, (int)mousePoint.Item2); + } + else if (button == 2) + { + Win32Interop.SendRightMouseDown((int)mousePoint.Item1, (int)mousePoint.Item2); + } + } + }); + + hubConnection.On("MouseUp", (int button, double percentX, double percentY, string viewerID) => + { + if (Program.Viewers.TryGetValue(viewerID, out var viewer) && viewer.HasControl) + { + var mousePoint = ScreenCaster.GetAbsolutePercentFromRelativePercent(percentX, percentY, viewer.Capturer); + if (button == 0) + { + Win32Interop.SendLeftMouseUp((int)mousePoint.Item1, (int)mousePoint.Item2); + } + else if (button == 2) + { + Win32Interop.SendRightMouseUp((int)mousePoint.Item1, (int)mousePoint.Item2); + } + } + }); + + hubConnection.On("MouseWheel", (double deltaX, double deltaY, string viewerID) => + { + if (Program.Viewers.TryGetValue(viewerID, out var viewer) && viewer.HasControl) + { + Win32Interop.SendMouseWheel(-(int)deltaY); + } + }); + hubConnection.On("ViewerDisconnected", async (string viewerID) => { if (Program.Viewers.TryGetValue(viewerID, out var viewer)) diff --git a/Remotely_ScreenCast/Win32/GDI32.cs b/Remotely_ScreenCast/Win32/GDI32.cs new file mode 100644 index 00000000..86a35847 --- /dev/null +++ b/Remotely_ScreenCast/Win32/GDI32.cs @@ -0,0 +1,85 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace Win32 +{ + public static class GDI32 + { + #region Enums + /// + /// Specifies a raster-operation code. These codes define how the color data for the + /// source rectangle is to be combined with the color data for the destination + /// rectangle to achieve the final color. + /// + public enum TernaryRasterOperations : uint + { + /// dest = source + SRCCOPY = 0x00CC0020, + /// dest = source OR dest + SRCPAINT = 0x00EE0086, + /// dest = source AND dest + SRCAND = 0x008800C6, + /// dest = source XOR dest + SRCINVERT = 0x00660046, + /// dest = source AND (NOT dest) + SRCERASE = 0x00440328, + /// dest = (NOT source) + NOTSRCCOPY = 0x00330008, + /// dest = (NOT src) AND (NOT dest) + NOTSRCERASE = 0x001100A6, + /// dest = (source AND pattern) + MERGECOPY = 0x00C000CA, + /// dest = (NOT source) OR dest + MERGEPAINT = 0x00BB0226, + /// dest = pattern + PATCOPY = 0x00F00021, + /// dest = DPSnoo + PATPAINT = 0x00FB0A09, + /// dest = pattern XOR dest + PATINVERT = 0x005A0049, + /// dest = (NOT dest) + DSTINVERT = 0x00550009, + /// dest = BLACK + BLACKNESS = 0x00000042, + /// dest = WHITE + WHITENESS = 0x00FF0062, + /// + /// Capture window as seen on screen. This includes layered windows + /// such as WPF windows with AllowsTransparency="true" + /// + CAPTUREBLT = 0x40000000 + } + #endregion + + #region DLL Imports + + [DllImport("gdi32.dll", EntryPoint = "BitBlt", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool BitBlt([In] IntPtr hdc, int nXDest, int nYDest, int nWidth, int nHeight, [In] IntPtr hdcSrc, int nXSrc, int nYSrc, TernaryRasterOperations dwRop); + + [DllImport("gdi32.dll")] + public static extern IntPtr CreateDC(string lpszDriver, string lpszDevice, string lpszOutput, IntPtr lpInitData); + + [DllImport("GDI32.dll")] + public static extern IntPtr CreateCompatibleBitmap(IntPtr hdc, int nWidth, int nHeight);[DllImport("GDI32.dll")] + public static extern IntPtr CreateCompatibleDC(IntPtr hdc); + + [DllImport("GDI32.dll")] + public static extern bool DeleteDC(IntPtr hdc); + + [DllImport("GDI32.dll")] + public static extern bool DeleteObject(IntPtr hObject); + + [DllImport("GDI32.dll")] + public static extern IntPtr GetDeviceCaps(IntPtr hdc, int nIndex); + + [DllImport("GDI32.dll")] + public static extern IntPtr SelectObject(IntPtr hdc, IntPtr hgdiobj); + + #endregion + } +} diff --git a/Remotely_ScreenCast/Win32/User32.cs b/Remotely_ScreenCast/Win32/User32.cs index 43f06628..0efb951d 100644 --- a/Remotely_ScreenCast/Win32/User32.cs +++ b/Remotely_ScreenCast/Win32/User32.cs @@ -763,7 +763,8 @@ namespace Win32 ///         ///Clear key         /// - OEM_CLEAR = 0xFE + OEM_CLEAR = 0xFE, + SEMI_COLON = 0x3b } public enum ScanCodeShort : short { @@ -1126,7 +1127,7 @@ namespace Win32 [DllImport("user32.dll")] public static extern bool EnumDesktopsA(IntPtr hwinsta, EnumDesktopsDelegate lpEnumFunc, IntPtr lParam); - + [DllImport("user32.dll", SetLastError = true)] public static extern IntPtr OpenInputDesktop(uint dwFlags, bool fInherit, ACCESS_MASK dwDesiredAccess); diff --git a/Remotely_ScreenCast/Win32/Win32Interop.cs b/Remotely_ScreenCast/Win32/Win32Interop.cs index d2988a40..cd28285b 100644 --- a/Remotely_ScreenCast/Win32/Win32Interop.cs +++ b/Remotely_ScreenCast/Win32/Win32Interop.cs @@ -120,21 +120,41 @@ namespace Win32 { return User32.OpenInputDesktop(0, false, ACCESS_MASK.GENERIC_ALL); } - public static void SendLeftMouseDown(int x, int y) + public static uint SendLeftMouseDown(int x, int y) { - mouse_event(MOUSEEVENTF_LEFTDOWN, (uint)x, (uint)y, 0, GetMessageExtraInfo()); + // Coordinates must be normalized. The bottom-right coordinate is mapped to 65535. + var normalizedX = x * (double)65535; + var normalizedY = y * (double)65535; + var union = new InputUnion() { mi = new MOUSEINPUT() { dwFlags = MOUSEEVENTF.ABSOLUTE | MOUSEEVENTF.LEFTDOWN | MOUSEEVENTF.VIRTUALDESK, dx = (int)normalizedX, dy = (int)normalizedY, time = 0, mouseData = 0, dwExtraInfo = (UIntPtr)GetMessageExtraInfo() } }; + var input = new INPUT() { type = InputType.MOUSE, U = union }; + return SendInput(1, new INPUT[] { input }, INPUT.Size); } - public static void SendLeftMouseUp(int x, int y) + public static uint SendLeftMouseUp(int x, int y) { - mouse_event(MOUSEEVENTF_LEFTUP, (uint)x, (uint)y, 0, GetMessageExtraInfo()); + // Coordinates must be normalized. The bottom-right coordinate is mapped to 65535. + var normalizedX = x * (double)65535; + var normalizedY = y * (double)65535; + var union = new InputUnion() { mi = new MOUSEINPUT() { dwFlags = MOUSEEVENTF.ABSOLUTE | MOUSEEVENTF.LEFTUP | MOUSEEVENTF.VIRTUALDESK, dx = (int)normalizedX, dy = (int)normalizedY, time = 0, mouseData = 0, dwExtraInfo = (UIntPtr)GetMessageExtraInfo() } }; + var input = new INPUT() { type = InputType.MOUSE, U = union }; + return SendInput(1, new INPUT[] { input }, INPUT.Size); } - public static void SendRightMouseDown(int x, int y) + public static uint SendRightMouseDown(int x, int y) { - mouse_event(MOUSEEVENTF_RIGHTDOWN, (uint)x, (uint)y, 0, GetMessageExtraInfo()); + // Coordinates must be normalized. The bottom-right coordinate is mapped to 65535. + var normalizedX = x * (double)65535; + var normalizedY = y * (double)65535; + var union = new InputUnion() { mi = new MOUSEINPUT() { dwFlags = MOUSEEVENTF.ABSOLUTE | MOUSEEVENTF.RIGHTDOWN | MOUSEEVENTF.VIRTUALDESK, dx = (int)normalizedX, dy = (int)normalizedY, time = 0, mouseData = 0, dwExtraInfo = (UIntPtr)GetMessageExtraInfo() } }; + var input = new INPUT() { type = InputType.MOUSE, U = union }; + return SendInput(1, new INPUT[] { input }, INPUT.Size); } - public static void SendRightMouseUp(int x, int y) + public static uint SendRightMouseUp(int x, int y) { - mouse_event(MOUSEEVENTF_RIGHTUP, (uint)x, (uint)y, 0, GetMessageExtraInfo()); + // Coordinates must be normalized. The bottom-right coordinate is mapped to 65535. + var normalizedX = x * (double)65535; + var normalizedY = y * (double)65535; + var union = new InputUnion() { mi = new MOUSEINPUT() { dwFlags = MOUSEEVENTF.ABSOLUTE | MOUSEEVENTF.RIGHTUP | MOUSEEVENTF.VIRTUALDESK, dx = (int)normalizedX, dy = (int)normalizedY, time = 0, mouseData = 0, dwExtraInfo = (UIntPtr)GetMessageExtraInfo() } }; + var input = new INPUT() { type = InputType.MOUSE, U = union }; + return SendInput(1, new INPUT[] { input }, INPUT.Size); } // Offsets are used in case there's a multi-monitor setup where the left-most or top-most edge of the virtual screen diff --git a/Remotely_Server/Pages/Clients.cshtml b/Remotely_Server/Pages/Clients.cshtml index 9378d09f..55256056 100644 --- a/Remotely_Server/Pages/Clients.cshtml +++ b/Remotely_Server/Pages/Clients.cshtml @@ -54,9 +54,9 @@
-

Resident Clients

+

Resident Agents

- Installable clients that provide unattended access and remote scripting. + Installable background agents that provide unattended access and remote scripting.
@if (User.Identity.IsAuthenticated) { diff --git a/Remotely_Server/Remotely_Server.csproj b/Remotely_Server/Remotely_Server.csproj index 928decc2..f49944fd 100644 --- a/Remotely_Server/Remotely_Server.csproj +++ b/Remotely_Server/Remotely_Server.csproj @@ -39,6 +39,7 @@ + @@ -1666,6 +1667,7 @@ + diff --git a/Remotely_Server/Services/RCBrowserSocketHub.cs b/Remotely_Server/Services/RCBrowserSocketHub.cs index e9889f8f..2a77915d 100644 --- a/Remotely_Server/Services/RCBrowserSocketHub.cs +++ b/Remotely_Server/Services/RCBrowserSocketHub.cs @@ -73,7 +73,7 @@ namespace Remotely_Server.Services await RCDeviceHub.Clients.Client(ClientID).SendAsync("LongPress", Context.ConnectionId); } - public async Task MouseDown(string button, double percentX, double percentY) + public async Task MouseDown(int button, double percentX, double percentY) { await RCDeviceHub.Clients.Client(ClientID).SendAsync("MouseDown", button, percentX, percentY, Context.ConnectionId); } @@ -83,7 +83,7 @@ namespace Remotely_Server.Services await RCDeviceHub.Clients.Client(ClientID).SendAsync("MouseMove", percentX, percentY, Context.ConnectionId); } - public async Task MouseUp(string button, double percentX, double percentY) + public async Task MouseUp(int button, double percentX, double percentY) { await RCDeviceHub.Clients.Client(ClientID).SendAsync("MouseUp", button, percentX, percentY, Context.ConnectionId); } diff --git a/Remotely_Server/Services/RCDeviceSocketHub.cs b/Remotely_Server/Services/RCDeviceSocketHub.cs index 31552c0b..8e00b4b0 100644 --- a/Remotely_Server/Services/RCDeviceSocketHub.cs +++ b/Remotely_Server/Services/RCDeviceSocketHub.cs @@ -93,9 +93,14 @@ namespace Remotely_Server.Services { await BrowserHub.Clients.Client(browserHubConnectionID).SendAsync("UnattendedSessionReady", Context.ConnectionId); } - public async Task SendConnectionFailedToBrowser(string browserHubConnectionID) + public async Task SendConnectionFailedToBrowser(string rcBrowserHubConnectionID) { - await RCBrowserHub.Clients.Client(browserHubConnectionID).SendAsync("ConnectionFailed"); + await RCBrowserHub.Clients.Client(rcBrowserHubConnectionID).SendAsync("ConnectionFailed"); + } + + public async Task SendCursorChange(int cursor, List viewerIDs) + { + await RCBrowserHub.Clients.Clients(viewerIDs).SendAsync("CursorChange", cursor); } diff --git a/Remotely_Server/appsettings.json b/Remotely_Server/appsettings.json index 4248c3e5..eaaf0e67 100644 --- a/Remotely_Server/appsettings.json +++ b/Remotely_Server/appsettings.json @@ -16,17 +16,7 @@ "UseDomainAuthentication": false, "ShowMessageOfTheDay": true, "DataRetentionInDays": 90, - "RemoteControlSessionLimit": 5, - "IceConfiguration": { - "iceServers": [ - { "urls": "stun:" }, - { - "urls": "turn:", - "credential": "", - "username": "" - } - ] - }, + "RemoteControlSessionLimit": 1, "SmtpHost": "", "SmtpPort": 25, "SmtpUserName": "", diff --git a/Remotely_Server/appsettings.json.old b/Remotely_Server/appsettings.json.old new file mode 100644 index 00000000..a018d283 --- /dev/null +++ b/Remotely_Server/appsettings.json.old @@ -0,0 +1,27 @@ +{ + "ConnectionStrings": { + "SQLite": "DataSource=Server.db", + "SQLServer": "Server=(localdb)\\mssqllocaldb;Database=aspnet-Server-53bc9b9d-9d6a-45d4-8429-2a2761773502;Trusted_Connection=True;MultipleActiveResultSets=true", + "PostgreSQL": "Host=localhost;Database=;Username=;Password=" + }, + "Logging": { + "LogLevel": { + "Default": "Warning" + } + }, + "ApplicationOptions": { + "DefaultPrompt": "~>", + "DBProvider": "SQLite", + "AllowSelfRegistration": true, + "UseDomainAuthentication": false, + "ShowMessageOfTheDay": true, + "DataRetentionInDays": 90, + "RemoteControlSessionLimit": 5, + "SmtpHost": "", + "SmtpPort": 25, + "SmtpUserName": "", + "SmtpPassword": "", + "SmtpEmail": "", + "SmtpDisplayName": "" + } +} \ No newline at end of file diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/CursorMap.js b/Remotely_Server/wwwroot/scripts/RemoteControl/CursorMap.js new file mode 100644 index 00000000..c4225356 --- /dev/null +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/CursorMap.js @@ -0,0 +1,35 @@ +export function GetCursor(windowsCursor) { + return cursorMap[windowsCursor]; +} +var cursorMap = { + 65563: "wait", + 65547: "crosshair", + 65541: "text", + 65543: "text", + 65561: "wait", + 65559: "all-scroll", + 65553: "ew-resize", + 65557: "ns-resize", + 65551: "nesw-resize", + 65555: "ns-resize", + 65549: "nwse-resize", + 65545: "default", + 65565: "help", + 3148293: "row-resize", + 1575755: "col-resize", + 199481: "move", + 264975: "move", + 199463: "move", + 265011: "all-scroll", + 265009: "all-scroll", + 592663: "all-scroll", + 199467: "all-scroll", + 265031: "all-scroll", + 133957: "all-scroll", + 133955: "all-scroll", + 68433: "all-scroll", + 68435: "pointer", + 65539: "default", + 65567: "pointer" +}; +//# sourceMappingURL=CursorMap.js.map \ No newline at end of file diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/CursorMap.js.map b/Remotely_Server/wwwroot/scripts/RemoteControl/CursorMap.js.map new file mode 100644 index 00000000..532103b0 --- /dev/null +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/CursorMap.js.map @@ -0,0 +1 @@ +{"version":3,"file":"CursorMap.js","sourceRoot":"","sources":["CursorMap.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CAAC,aAAqB;IAC3C,OAAO,SAAS,CAAC,aAAa,CAAC,CAAC;AACpC,CAAC;AAED,IAAI,SAAS,GAAG;IACZ,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,WAAW;IAClB,KAAK,EAAE,aAAa;IACpB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,YAAY;IACrB,OAAO,EAAE,YAAY;IACrB,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,MAAM;IACd,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,MAAM,EAAE,YAAY;IACpB,KAAK,EAAE,YAAY;IACnB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;IAChB,KAAK,EAAE,SAAS;CACnB,CAAA"} \ No newline at end of file diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/CursorMap.ts b/Remotely_Server/wwwroot/scripts/RemoteControl/CursorMap.ts new file mode 100644 index 00000000..69181f38 --- /dev/null +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/CursorMap.ts @@ -0,0 +1,35 @@ +export function GetCursor(windowsCursor: number): string { + return cursorMap[windowsCursor]; +} + +var cursorMap = { + 65563: "wait", + 65547: "crosshair", + 65541: "text", + 65543: "text", + 65561: "wait", + 65559: "all-scroll", + 65553: "ew-resize", + 65557: "ns-resize", + 65551: "nesw-resize", + 65555: "ns-resize", + 65549: "nwse-resize", + 65545: "default", + 65565: "help", + 3148293: "row-resize", + 1575755: "col-resize", + 199481: "move", + 264975: "move", + 199463: "move", + 265011: "all-scroll", + 265009: "all-scroll", + 592663: "all-scroll", + 199467: "all-scroll", + 265031: "all-scroll", + 133957: "all-scroll", + 133955: "all-scroll", + 68433: "all-scroll", + 68435: "pointer", + 65539: "default", + 65567: "pointer" +} diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js index 8f8d755c..570ea418 100644 --- a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js @@ -1,5 +1,6 @@ import * as UI from "./UI.js"; import { RemoteControl } from "./RemoteControl.js"; +import { GetCursor } from "./CursorMap.js"; var signalR = window["signalR"]; export class RCBrowserSockets { Connect() { @@ -135,6 +136,10 @@ export class RCBrowserSockets { hubConnection.on("DesktopSwitchFailed", () => { UI.ShowMessage("Desktop switch failed. Please reconnect."); }); + hubConnection.on("CursorChange", (cursor) => { + var newCursor = GetCursor(cursor); + UI.ScreenViewer.style.cursor = newCursor; + }); } } //# sourceMappingURL=RCBrowserSockets.js.map \ No newline at end of file diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js.map b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js.map index 9e9cd096..cb47ca05 100644 --- a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js.map +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.js.map @@ -1 +1 @@ -{"version":3,"file":"RCBrowserSockets.js","sourceRoot":"","sources":["RCBrowserSockets.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"RCBrowserSockets.js","sourceRoot":"","sources":["RCBrowserSockets.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.ts b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.ts index a37ffc61..cac91bbd 100644 --- a/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.ts +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/RCBrowserSockets.ts @@ -2,6 +2,7 @@ import * as UI from "./UI.js"; import { ConnectButton } from "./UI.js"; import { RemoteControl } from "./RemoteControl.js"; +import { GetCursor } from "./CursorMap.js"; var signalR = window["signalR"]; @@ -45,10 +46,10 @@ export class RCBrowserSockets { SendMouseMove(percentX: number, percentY: number): any { this.Connection.invoke("MouseMove", percentX, percentY); } - SendMouseDown(button: string, percentX: number, percentY: number): any { + SendMouseDown(button: number, percentX: number, percentY: number): any { this.Connection.invoke("MouseDown", button, percentX, percentY); } - SendMouseUp(button: string, percentX: number, percentY: number): any { + SendMouseUp(button: number, percentX: number, percentY: number): any { this.Connection.invoke("MouseUp", button, percentX, percentY); } SendTouchDown(): any { @@ -143,5 +144,10 @@ export class RCBrowserSockets { hubConnection.on("DesktopSwitchFailed", () => { UI.ShowMessage("Desktop switch failed. Please reconnect."); }); + + hubConnection.on("CursorChange", (cursor: number) => { + var newCursor = GetCursor(cursor); + UI.ScreenViewer.style.cursor = newCursor; + }); } } \ No newline at end of file diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/UI.js b/Remotely_Server/wwwroot/scripts/RemoteControl/UI.js index 86286feb..f8a9435a 100644 --- a/Remotely_Server/wwwroot/scripts/RemoteControl/UI.js +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/UI.js @@ -130,14 +130,7 @@ export function ApplyInputHandlers(sockets) { e.preventDefault(); var percentX = e.offsetX / ScreenViewer.clientWidth; var percentY = e.offsetY / ScreenViewer.clientHeight; - var button; - if (e.button == 0) { - button = "left"; - } - else if (e.button == 2) { - button = "right"; - } - sockets.SendMouseDown(button, percentX, percentY); + sockets.SendMouseDown(e.button, percentX, percentY); }); ScreenViewer.addEventListener("mouseup", function (e) { if (e.button != 0 && e.button != 2) { @@ -146,14 +139,7 @@ export function ApplyInputHandlers(sockets) { e.preventDefault(); var percentX = e.offsetX / ScreenViewer.clientWidth; var percentY = e.offsetY / ScreenViewer.clientHeight; - var button; - if (e.button == 0) { - button = "left"; - } - else if (e.button == 2) { - button = "right"; - } - sockets.SendMouseUp(button, percentX, percentY); + sockets.SendMouseUp(e.button, percentX, percentY); }); ScreenViewer.addEventListener("click", function (e) { e.preventDefault(); diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/UI.js.map b/Remotely_Server/wwwroot/scripts/RemoteControl/UI.js.map index 05691119..b91db151 100644 --- a/Remotely_Server/wwwroot/scripts/RemoteControl/UI.js.map +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/UI.js.map @@ -1 +1 @@ -{"version":3,"file":"UI.js","sourceRoot":"","sources":["UI.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"UI.js","sourceRoot":"","sources":["UI.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAElE,MAAM,CAAC,IAAI,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAqB,CAAC;AAC1F,MAAM,CAAC,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAsB,CAAC;AACzF,MAAM,CAAC,IAAI,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,YAAY,CAAqB,CAAC;AACzF,MAAM,CAAC,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAmB,CAAC;AACtF,MAAM,CAAC,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAsB,CAAC;AACvF,MAAM,CAAC,IAAI,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC3D,MAAM,CAAC,IAAI,cAAc,GAAG,QAAQ,CAAC,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;AAChF,MAAM,CAAC,IAAI,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAmB,CAAC;AAChF,MAAM,CAAC,IAAI,eAAe,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAmB,CAAC;AAC1F,MAAM,CAAC,IAAI,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,eAAe,CAAmB,CAAC;AACtF,MAAM,CAAC,IAAI,UAAU,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAmB,CAAC;AAChF,MAAM,CAAC,IAAI,gBAAgB,GAAG,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAmB,CAAC;AAC/E,MAAM,CAAC,IAAI,iBAAiB,GAAG,QAAQ,CAAC,cAAc,CAAC,mBAAmB,CAAqB,CAAC;AAChG,MAAM,CAAC,IAAI,oBAAoB,GAAG,QAAQ,CAAC,cAAc,CAAC,sBAAsB,CAAwB,CAAC;AACzG,MAAM,CAAC,IAAI,cAAc,GAAG,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAsB,CAAC;AAE3F,IAAI,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AACjC,IAAI,eAAuB,CAAC;AAC5B,IAAI,eAAuB,CAAC;AAC5B,IAAI,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;AAChC,IAAI,SAAS,GAAG,IAAI,KAAK,EAAU,CAAC;AACpC,IAAI,gBAAwB,CAAC;AAC7B,IAAI,sBAAsB,GAAG,CAAC,CAAC;AAE/B,MAAM,UAAU,kBAAkB,CAAC,OAAyB;IACxD,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QACnE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAA;QACF,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QACtE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvB,IAAI,CAAC,CAAC,EAAE,IAAI,YAAY,EAAE;gBACtB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC9B;QACL,CAAC,CAAC,CAAA;QACF,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC3E,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvB,IAAI,CAAC,CAAC,EAAE,IAAI,iBAAiB,EAAE;gBAC3B,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC9B;QACL,CAAC,CAAC,CAAA;QACF,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC1E,IAAI,MAAM,GAAG,EAAE,CAAC,aAAkC,CAAC;QACnD,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACtC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YAC/C,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;SACnD;aACI;YACD,YAAY,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;YACtC,YAAY,CAAC,KAAK,CAAC,SAAS,GAAG,OAAO,CAAC;SAC1C;IACL,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QACzE,aAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QACvE,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QACrE,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,aAAa,CAAC,IAAI,IAAK,iBAAiB,CAAC,MAAM,EAAE;YACjD,GAAG,GAAG,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,cAAc,aAAa,CAAC,QAAQ,EAAE,CAAC;SACtF;aACI;YACD,GAAG,GAAG,QAAQ,CAAC,IAAI,CAAC;SACvB;QACD,IAAI,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC5C,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC/B,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,SAAS,CAAC;QAC5B,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;QACpB,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACjC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QAClB,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnD,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,YAAY,CAAC,2BAA2B,CAAC,CAAC;IAE9C,CAAC,CAAC,CAAA;IACF,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QAC3E,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IACF,QAAQ,CAAC,aAAa,CAAC,oBAAoB,CAAsB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE;QACjG,WAAW,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QACzE,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE;YAC1B,WAAW,CAAC,iCAAiC,CAAC,CAAC;YAC/C,OAAO;SACV;QACD,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,aAAa,CAAC,gBAAgB,CAAC,cAAc,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,aAAa,CAAC,6BAA6B,CAAC,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,EAAiB,EAAE,EAAE;QACrG,IAAI,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,OAAO,EAAE;YACjC,eAAe,EAAE,CAAC;SACrB;IACL,CAAC,CAAC,CAAC;IACH,QAAQ,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE;QACtE,eAAe,EAAE,CAAC;IACtB,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC;QAClD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,GAAG,EAAE,EAAE;YACnC,OAAO;SACV;QACD,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC;QACpD,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC;QACrD,OAAO,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC;QAClD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;YAChC,OAAO;SACV;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC;QACpD,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC;QACrD,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC;QAChD,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;YAChC,OAAO;SACV;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,WAAW,CAAC;QACpD,IAAI,QAAQ,GAAG,CAAC,CAAC,OAAO,GAAG,YAAY,CAAC,YAAY,CAAC;QACrD,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC;QAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE;QAChD,EAAE,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC;QACnD,cAAc,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QACzC,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAqB,CAAC;QAC7E,IAAI,YAAY,EAAE;YACd,YAAY,CAAC,IAAI,EAAE,CAAC;SACvB;QACD,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;YACtC,OAAO;SACV;QAED,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,GAAG,EAAE;YACnC,OAAO,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO;SACV;QACD,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC5B,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvC,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvC,sBAAsB,GAAG,CAAC,CAAC;QAC3B,gBAAgB,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;YACtC,IAAI,cAAc,GAAG,eAAe,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE;gBAC9F,OAAO,CAAC,aAAa,EAAE,CAAC;aAC3B;QACL,CAAC,EAAE,IAAI,CAAC,CAAC;IACb,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,WAAW,EAAE,UAAU,CAAC;QAClD,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,OAAO;SACV;QAED,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QAEpB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,GAAG,EAAE,EAAE;YACnC,OAAO;SACV;QAED,sBAAsB,GAAG,kBAAkB,CAAC,eAAe,EAAE,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAE1H,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACpC,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvC,eAAe,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACvC,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;IACH,YAAY,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC;QACjD,IAAI,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QAC1E,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,eAAe,EAAE,CAAC;QACpB,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,OAAO;SACV;QACD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,GAAG,IAAI,sBAAsB,GAAG,CAAC,EAAE;YACjE,OAAO,CAAC,OAAO,EAAE,CAAC;SACrB;aACI;YACD,OAAO,CAAC,WAAW,EAAE,CAAC;SACzB;IACL,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC;QAC9C,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAA;IACF,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC;QAC1C,IAAI,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;YACvC,OAAO;SACV;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,CAAC;QACxC,IAAI,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;YACvC,OAAO;SACV;QACD,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;QAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC;IACvC,CAAC,CAAC;IACF,MAAM,CAAC,MAAM,GAAG,UAAU,CAAC;QACvB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACjC,OAAO;SACV;QACD,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,OAAe;IACvC,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAC/C,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1C,UAAU,CAAC,SAAS,GAAG,OAAO,CAAC;IAC/B,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACtC,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE;QACnB,UAAU,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC,EAAE,IAAI,CAAC,CAAC;AACb,CAAC;AAED,MAAM,UAAU,MAAM,CAAC,aAAqB;IACxC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACnC,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAEvC,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,UAAU,CAAC,SAAS,GAAG,aAAa,CAAC;QAErC,IAAI,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC/C,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAE3C,IAAI,YAAY,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACpD,YAAY,CAAC,SAAS,GAAG,QAAQ,CAAC;QAElC,IAAI,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAChD,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC;QAE1B,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QACjC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACrC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACjC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACpC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QAEjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEpC,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE;YACpB,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC,CAAA;QAED,YAAY,CAAC,OAAO,GAAG,GAAG,EAAE;YACxB,QAAQ,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC,CAAC;QAClB,CAAC,CAAA;IACL,CAAC,CAAC,CAAC;AACP,CAAC;AAED,SAAS,WAAW,CAAC,QAAkB;IACnC,WAAW,CAAC,wBAAwB,CAAC,CAAC;IACtC,oBAAoB,CAAC,KAAK,GAAG,CAAC,CAAC;IAC/B,oBAAoB,CAAC,aAAa,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IAE7D,IAAI,OAAO,GAAG,mBAAmB,CAAC;IAClC,IAAI,EAAE,GAAG,IAAI,QAAQ,EAAE,CAAC;IACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QACtC,EAAE,CAAC,MAAM,CAAC,YAAY,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5C;IACD,IAAI,GAAG,GAAG,IAAI,cAAc,EAAE,CAAC;IAC/B,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAChC,GAAG,CAAC,gBAAgB,CAAC,MAAM,EAAE;QACzB,oBAAoB,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpE,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;YACpB,WAAW,CAAC,wBAAwB,CAAC,CAAC;YACtC,aAAa,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;SACtE;aACI;YACD,WAAW,CAAC,qBAAqB,CAAC,CAAC;SACtC;IACL,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE;QAC/B,oBAAoB,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACpE,WAAW,CAAC,qBAAqB,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC;QACxC,oBAAoB,CAAC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAEjB,CAAC"} \ No newline at end of file diff --git a/Remotely_Server/wwwroot/scripts/RemoteControl/UI.ts b/Remotely_Server/wwwroot/scripts/RemoteControl/UI.ts index 282c090c..f9825793 100644 --- a/Remotely_Server/wwwroot/scripts/RemoteControl/UI.ts +++ b/Remotely_Server/wwwroot/scripts/RemoteControl/UI.ts @@ -136,14 +136,7 @@ export function ApplyInputHandlers(sockets: RCBrowserSockets) { e.preventDefault(); var percentX = e.offsetX / ScreenViewer.clientWidth; var percentY = e.offsetY / ScreenViewer.clientHeight; - var button: string; - if (e.button == 0) { - button = "left"; - } - else if (e.button == 2) { - button = "right"; - } - sockets.SendMouseDown(button, percentX, percentY); + sockets.SendMouseDown(e.button, percentX, percentY); }); ScreenViewer.addEventListener("mouseup", function (e) { if (e.button != 0 && e.button != 2) { @@ -152,14 +145,7 @@ export function ApplyInputHandlers(sockets: RCBrowserSockets) { e.preventDefault(); var percentX = e.offsetX / ScreenViewer.clientWidth; var percentY = e.offsetY / ScreenViewer.clientHeight; - var button: string; - if (e.button == 0) { - button = "left"; - } - else if (e.button == 2) { - button = "right"; - } - sockets.SendMouseUp(button, percentX, percentY); + sockets.SendMouseUp(e.button, percentX, percentY); }); ScreenViewer.addEventListener("click", function (e) { e.preventDefault(); diff --git a/Utilities/Publish.ps1 b/Utilities/Publish.ps1 index 2f042ea4..1234cf9f 100644 --- a/Utilities/Publish.ps1 +++ b/Utilities/Publish.ps1 @@ -46,7 +46,7 @@ if ($args.Count -eq 0){ $ArgList.Add($option.ToLower().Trim()) } if ([string]::IsNullOrWhiteSpace($HostName)) { - $HostName = Read-Host "Host Name" + $HostName = Read-Host "Host Name (e.g. my.example.com)" } if ($ArgList.Contains("s")){ @@ -54,7 +54,7 @@ if ($args.Count -eq 0){ $OutDir = Read-Host "Server Out Dir" } if ([string]::IsNullOrWhiteSpace($RID)) { - $RID = Read-Host "Server Runtime ID" + $RID = Read-Host "Server Runtime ID (see comment at top of script)" } } }