Mysz na wielu monitorach

0

Podpięłam sobie drugi monitor. W zasadzie super sprawa, ale suwanie myszą po tych hektarach zrobiło się średnio ekonomiczne a nie lubię nieliniowego przyspieszania kursora.

Przydałaby się możliwość podpięcia np. pod 4-ty klawisz myszy akcji: "przeskocz do następnego monitora".

znalazłam coś takiego: LittleBigMouse
i to robi jakieś cuda wianki, ale nie wiem, czy akurat coś takiego.

Używam już AutoHotkey i X-Mouse Button Control. Kombinuję, czy może z ich pomocą da się osiągnąć taki efekt, bez instalowania kolejnego programu. A wy jak ogarniacie temat długiego pulpitu?

0

Bardzo łatwo mozesz napisac program ktory przeniesie Ci kursor po nacisnieciu 4 przycisku myszki. Albo taki ktory po nacisnieciu go raz ustawia na srodku monitora1 a dwa razy monitora 2. Mi sie kursor. Reguralnie gubi i bylo by to calkirm uzyteczne.

0

Logitech MX powinien mieć coś takiego w sofcie udostępnionym przez Logitecha, a jak nie to możesz sam napisać wtyczkę/skrypt.

3

Jaką masz ustawioną czułość myszy? U mnie nie ma takiego problemu - pół ruchu nadgarstka = przeskoczenie na kolejny ekran. W dodatku w myszy mam przycisk zmieniający DPI, jeśli potrzeba chwilowo większej precyzji to wystarczy nacisnąć

0
_flamingAccount napisał(a):

Bardzo łatwo mozesz napisac program ktory przeniesie Ci kursor po nacisnieciu 4 przycisku myszki.

Bardzo łatwo, to można to sobie napisać, jak się umie pisać programy :p
Niemniej póki co, wykombinowałam, że da się to prawdopodobnie zrobić w X-Mouse Button Control, a w każdym razie, że są tam też polecenia przesuwania kursora do podanych koordynatów.

1

U mnie dziala :)

using System;
using System.Runtime.InteropServices;
using System.Windows.Forms;

//win formsy bez formy :)
namespace WindowsFormsApp1
{
    static class Program
    {
        [DllImport("user32.dll")]
        static extern bool SetCursorPos(int x, int y);


        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
//minimalizuje appke do tray'a, zamyka sie na klick
            var m_notifyIcon = new System.Windows.Forms.NotifyIcon();
            m_notifyIcon.BalloonTipText = "text.";
            m_notifyIcon.BalloonTipTitle = "The App";
            m_notifyIcon.Icon = new System.Drawing.Icon(@"C:\my.ico");
            m_notifyIcon.Text = "The App";
            m_notifyIcon.Visible = true;


            MouseHook hook1 = new MouseHook();
            hook1.XButtonOneDown += XButtonOneDown;
            m_notifyIcon.Click += (o, e) => { m_notifyIcon.Visible = false; m_notifyIcon.Dispose(); hook1.Uninstall(); Application.Exit(); };
            hook1.Install();
            Application.Run();
        }
        static int i = 0;
        private static void XButtonOneDown(MouseHook.MSLLHOOKSTRUCT mouseStruct)
        {
            var screens = Screen.AllScreens;
            var area = screens[i++ % screens.Length].WorkingArea;
            SetCursorPos(area.X + area.Width / 2, area.Y + area.Height / 2);
        }
    }
}

W mouse hook dodajesz brakujacy guzik

...
                if (MouseMessages.WM_XBUTTONDOWN == (MouseMessages)wParam)
                    if (XButtonOneDown != null)
                        XButtonOneDown((MSLLHOOKSTRUCT)Marshal.PtrToStructure(lParam, typeof(MSLLHOOKSTRUCT)));

...
        private enum MouseMessages
        {
            WM_XBUTTONDOWN  = 0x020B,
1

Znalazłam rozwiązanie na bazie AutoHotkey:

XButton2::
CoordMode, Mouse, Screen ; mouse coordinates relative to the screen
  MouseGetPos, MouseX, MouseY
  if (MouseX > A_ScreenWidth) {
    MouseMove, -A_ScreenWidth, 0, 0, R
  } else {
    MouseMove, A_ScreenWidth, 0, 0, R
  }
return

1 użytkowników online, w tym zalogowanych: 0, gości: 1