示例#1
0
        public void SendMouseButtonAction(int button, ButtonAction buttonAction, double percentX, double percentY, Viewer viewer)
        {
            try
            {
                var isPressed = buttonAction == ButtonAction.Down;
                // Browser buttons start at 0.  XTest starts at 1.
                var mouseButton = (uint)(button + 1);

                InitDisplay();
                SendMouseMove(percentX, percentY, viewer);
                if (EnvironmentHelper.Is64)
                {
                    LibXtst.XTestFakeButtonEvent(Display, mouseButton, isPressed, 0);
                }
                else
                {
                    LibXtst_32.XTestFakeButtonEvent(Display, mouseButton, isPressed, 0);
                }
                LibX11.XSync(Display, false);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
            }
        }
示例#2
0
        public void SendKeyUp(string key)
        {
            try
            {
                InitDisplay();
                key = ConvertJavaScriptKeyToX11Key(key);
                var keySim = LibX11.XStringToKeysym(key);
                if (keySim == IntPtr.Zero)
                {
                    Logger.Write($"Key not mapped: {key}");
                    return;
                }

                var keyCode = LibX11.XKeysymToKeycode(Display, keySim);
                if (EnvironmentHelper.Is64)
                {
                    LibXtst.XTestFakeKeyEvent(Display, keyCode, false, 0);
                }
                else
                {
                    LibXtst_32.XTestFakeKeyEvent(Display, keyCode, false, 0);
                }
                LibX11.XSync(Display, false);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
            }
        }
示例#3
0
        public void SendMouseMove(double percentX, double percentY, Viewer viewer)
        {
            try
            {
                InitDisplay();

                var screenBounds = viewer.Capturer.CurrentScreenBounds;
                if (EnvironmentHelper.Is64)
                {
                    LibXtst.XTestFakeMotionEvent(Display,
                                                 LibX11.XDefaultScreen(Display),
                                                 screenBounds.X + (int)(screenBounds.Width * percentX),
                                                 screenBounds.Y + (int)(screenBounds.Height * percentY),
                                                 0);
                }
                else
                {
                    LibXtst_32.XTestFakeMotionEvent(Display,
                                                    LibX11.XDefaultScreen(Display),
                                                    screenBounds.X + (int)(screenBounds.Width * percentX),
                                                    screenBounds.Y + (int)(screenBounds.Height * percentY),
                                                    0);
                }

                LibX11.XSync(Display, false);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
            }
        }
示例#4
0
 public void SendLeftMouseUp(double percentX, double percentY, Viewer viewer)
 {
     try
     {
         SendMouseMove(percentX, percentY, viewer);
         LibXtst.XTestFakeButtonEvent(Display, 1, false, 0);
         LibX11.XSync(Display, false);
     }
     catch (Exception ex)
     {
         Logger.Write(ex);
     }
 }
示例#5
0
 public void SendRightMouseDown(double percentX, double percentY, Viewer viewer)
 {
     try
     {
         InitDisplay();
         SendMouseMove(percentX, percentY, viewer);
         LibXtst.XTestFakeButtonEvent(Display, 3, true, 0);
         LibX11.XSync(Display, false);
     }
     catch (Exception ex)
     {
         Logger.Write(ex);
     }
 }
示例#6
0
 public uint SendLeftMouseDown(double percentX, double percentY, Viewer viewer)
 {
     try
     {
         SendMouseMove(percentX, percentY, viewer);
         LibXtst.XTestFakeButtonEvent(Display, 1, true, 0);
         LibX11.XSync(Display, false);
         return(0);
     }
     catch (Exception ex)
     {
         Logger.Write(ex);
         return(1);
     }
 }
示例#7
0
 public void SendMouseMove(double percentX, double percentY, Viewer viewer)
 {
     try
     {
         LibXtst.XTestFakeMotionEvent(Display,
                                      viewer.Capturer.GetSelectedScreenIndex(),
                                      (int)(viewer.Capturer.CurrentScreenBounds.Width * percentX),
                                      (int)(viewer.Capturer.CurrentScreenBounds.Height * percentY),
                                      0);
         LibX11.XSync(Display, false);
     }
     catch (Exception ex)
     {
         Logger.Write(ex);
     }
 }
示例#8
0
 public uint SendMouseMove(double percentX, double percentY, Viewer viewer)
 {
     try
     {
         var capturer = new X11Capture(Display);
         LibXtst.XTestFakeMotionEvent(Display,
                                      viewer.Capturer.SelectedScreen,
                                      (int)(viewer.Capturer.CurrentScreenBounds.Width * percentX),
                                      (int)(viewer.Capturer.CurrentScreenBounds.Height * percentY),
                                      0);
         LibX11.XSync(Display, false);
     }
     catch (Exception ex)
     {
         Logger.Write(ex);
     }
     return(0);
 }
示例#9
0
        public void SendKeyUp(string key, Viewer viewer)
        {
            try
            {
                key = ConvertJavaScriptKeyToX11Key(key);
                var keySim = LibX11.XStringToKeysym(key);
                if (keySim == null)
                {
                    Logger.Write($"Key not mapped: {key}");
                    return;
                }

                var keyCode = LibX11.XKeysymToKeycode(Display, keySim);
                LibXtst.XTestFakeKeyEvent(Display, keyCode, false, 0);
                LibX11.XSync(Display, false);
            }
            catch (Exception ex)
            {
                Logger.Write(ex);
            }
        }
示例#10
0
 public void SendMouseWheel(int deltaY, Viewer viewer)
 {
     try
     {
         if (deltaY > 0)
         {
             LibXtst.XTestFakeButtonEvent(Display, 4, true, 0);
             LibXtst.XTestFakeButtonEvent(Display, 4, false, 0);
         }
         else
         {
             LibXtst.XTestFakeButtonEvent(Display, 5, true, 0);
             LibXtst.XTestFakeButtonEvent(Display, 5, false, 0);
         }
         LibX11.XSync(Display, false);
     }
     catch (Exception ex)
     {
         Logger.Write(ex);
     }
 }
示例#11
0
 public void SendRightMouseUp(double percentX, double percentY, Viewer viewer)
 {
     try
     {
         InitDisplay();
         SendMouseMove(percentX, percentY, viewer);
         if (EnvironmentHelper.Is64)
         {
             LibXtst.XTestFakeButtonEvent(Display, 3, false, 0);
         }
         else
         {
             LibXtst_32.XTestFakeButtonEvent(Display, 3, false, 0);
         }
         LibX11.XSync(Display, false);
     }
     catch (Exception ex)
     {
         Logger.Write(ex);
     }
 }
示例#12
0
 public void SendMouseWheel(int deltaY)
 {
     try
     {
         InitDisplay();
         if (deltaY > 0)
         {
             LibXtst.XTestFakeButtonEvent(Display, 4, true, 0);
             LibXtst.XTestFakeButtonEvent(Display, 4, false, 0);
             if (EnvironmentHelper.Is64)
             {
                 LibXtst.XTestFakeButtonEvent(Display, 4, true, 0);
                 LibXtst.XTestFakeButtonEvent(Display, 4, false, 0);
             }
             else
             {
                 LibXtst_32.XTestFakeButtonEvent(Display, 4, true, 0);
                 LibXtst_32.XTestFakeButtonEvent(Display, 4, false, 0);
             }
         }
         else
         {
             if (EnvironmentHelper.Is64)
             {
                 LibXtst.XTestFakeButtonEvent(Display, 5, true, 0);
                 LibXtst.XTestFakeButtonEvent(Display, 5, false, 0);
             }
             else
             {
                 LibXtst_32.XTestFakeButtonEvent(Display, 5, true, 0);
                 LibXtst_32.XTestFakeButtonEvent(Display, 5, false, 0);
             }
         }
         LibX11.XSync(Display, false);
     }
     catch (Exception ex)
     {
         Logger.Write(ex);
     }
 }