Jak włączyć fokus podąża za myszą w Windows 10

44

Chciałbym podnosić za kliknięcie i niechlujnie podążać za myszką w systemie Windows 10, ponieważ jest to konfiguracja, z której korzystam w systemach Windows i Linux od lat.

W systemie Windows 10 wypróbowałem zmiany regedit Xmouse wspomniane w tym linku, które pierwotnie były przeznaczone dla systemu Windows 8: http://winaero.com/blog/turn-on-xmouse-active-window-tracking-focus-follows-mouse- wskaźnik-funkcja-w-windows-8-1-windows-8-i-windows-7 /

Wystąpiły jednak następujące problemy:

  1. Po otwarciu menu Start przez naciśnięcie klawisza Windows nie jest on odbierany z klawiatury.

  2. Po otwarciu przycisku Start, wyszukiwania lub powiadomień klikając je, zostaną one zamknięte, zanim będzie można z nimi korzystać.

Czy jest jakiś sposób, aby uzyskać użyteczną ostrość po myszy?

Czy ktoś z powodzeniem używa Win10 w ten sposób?

Gordon Wrigley
źródło
Obejściem problemu nr 1 jest kliknięcie szkła powiększającego (wyszukiwanie).
Skrótem
1
Można uniknąć problemu nr 2, ustawiając ActiveWndTrkTimeout na wyższą wartość. Tuner WinAero Xmouse miał kiedyś minimum 500 ms, ale teraz jest obniżony do minimum 100 ms w WinAero Tweaker z powodu przeważających żądań. Nadal nie jest możliwe obniżenie go poniżej 100 ms, ale może to być dobry powód.
i

Odpowiedzi:

33

Używaj kontrolek X-Mouse , jest to najbliższa, jaką znalazłem, prawdziwa Focus Follows Mouse, i ma kilka opcji do ulepszenia. Jest to małe narzędzie typu open source, które nie wymaga instalowania ani ponownego uruchamiania, i pozwala uniknąć samodzielnej zmiany rejestru.

O ile eksperymentowałem, mogę używać klawiatury do wyszukiwania plików / programów po naciśnięciu klawisza Win. Menu Start i Powiadomienia nie znikają, zanim będę mógł ich użyć, nawet z opcją podnoszenia po najechaniu kursorem, ponieważ możesz ustawić małe opóźnienie dla zachowania (wystarczy jedna lub dwieście ms), co daje ci więcej niż wystarczająca ilość miejsca, aby przenieść wskaźnik do nowego okna.

Używałem go przez jakiś czas i jestem bardzo z niego zadowolony, plus bug.n okno Dachówka menedżer. Ta konfiguracja jest tak bliska, jak byłem przy użyciu dwm na Uniksie.

ArthurChamz
źródło
24

Poniższy skrypt PowerShell powinien mieć taki sam efekt jak program XMouse ... bez konieczności uruchamiania pliku binarnego innej firmy

Kod:

$signature = @"
[DllImport("user32.dll")]
public static extern bool SystemParametersInfo(int uAction, int uParam, ref 
int lpvParam, int flags );
"@

$systemParamInfo = Add-Type -memberDefinition  $signature -Name SloppyFocusMouse -passThru

[Int32]$newVal = 1
$systemParamInfo::SystemParametersInfo(0x1001, 0, [REF]$newVal, 2)

Stałe odzyskane stąd

golvok
źródło
To działa pięknie, lepiej niż cokolwiek innego, czego próbowałem. Po prostu zapisz to w pliku .ps1, kliknij go prawym przyciskiem myszy i wybierz Uruchom z PowerShell. Możesz nawet dodać go w Harmonogramie zadań, aby rozpocząć przy starcie.
Zurd
11

Modyfikacje rejestru wymienione w łączu do pytania działają w systemie Windows 10. Wydaje się jednak, że należy je wprowadzić, gdy w ustawieniach dostępności wybrana jest opcja „Aktywuj okno, najeżdżając na niego myszką”. Tę opcję można znaleźć w Panelu sterowania> Łatwość dostępu> Zmień sposób działania myszy .

Jeśli występują te same problemy, a pole wyboru jest zaznaczone, odznacz je, kliknij Zastosuj, wybierz ponownie i powtórz modyfikacje. Mysz powinna zachowywać się poprawnie przy następnym logowaniu.

aleixosk
źródło
3
Jednak robi to, co sugeruje nazwa - automatycznie podnosi okna. OP chce, aby NIE podniósł, ale nadal pozwala skupić się na oknie w tle. Postępowanie zgodnie z instrukcjami Q Winaero (ustawienie pierwszego kodu szesnastkowego na 9F) oraz logowanie i wylogowanie wydają się działać poprawnie. Klawisz Win + pisanie = działa dla wyszukiwania. Przycisk Win z myszką + pisanie = NIE działa dla wyszukiwania, jeśli fokus jest kiedykolwiek oddalony od tego przycisku, ale działa, jeśli przytrzymuję mysz nad przyciskiem. Zabicie explorer.exe i uruchomienie userinit.exe nie działało, aby załadować ustawienia reg, więc wylogowanie wydaje się potrzebne.
MPag
Zastosowanie modyfikacji rejestru zatrzymuje automatyczne podnoszenie.
aleixosk
6

System Windows ma flagę umożliwiającą aktywację myszy podążającej za myszą („aktywne śledzenie okna”), którą można łatwo włączyć za pomocą monstrualnego wywołania API SystemParametersInfo” Win32. Istnieją programy innych firm, aby włączyć flagę, takie jak X-Mouse Controls , lub możesz wykonać połączenie bezpośrednio za pomocą PowerShell.

Dokumentacja nie zawsze jest bardzo jasna na temat sposobu pvParamużywania argumentu, a niektóre fragmenty PowerShell niepoprawnie przekazują wskaźnik do wartości, a nie do samej wartości, podczas ustawiania tej konkretnej flagi. Ostatecznie zawsze jest to interpretowane jako true, tzn. Przypadkowo działają one w celu włączenia flagi, ale nie w celu jej ponownego wyłączenia.

Poniżej znajduje się fragment kodu PowerShell, który poprawnie wykonuje połączenie. Obejmuje to również prawidłowe sprawdzanie błędów, a ja starałem się raczej zachować czystość niż zwięzłość, aby ułatwić dodawanie opakowań dla innych funkcji SystemParametersInfo, jeśli znajdziesz takie, które Cię interesują.

Krzycz na pinvoke.net za bycie pomocnym źródłem takich rzeczy.

Add-Type -TypeDefinition @'
    using System;
    using System.Runtime.InteropServices;
    using System.ComponentModel;

    public static class Spi {
        [System.FlagsAttribute]
        private enum Flags : uint {
            None            = 0x0,
            UpdateIniFile   = 0x1,
            SendChange      = 0x2,
        }

        [DllImport("user32.dll", SetLastError = true)]
        private static extern bool SystemParametersInfo(
            uint uiAction, uint uiParam, UIntPtr pvParam, Flags flags );

        [DllImport("user32.dll", SetLastError = true)]
        private static extern bool SystemParametersInfo(
            uint uiAction, uint uiParam, out bool pvParam, Flags flags );

        private static void check( bool ok ) {
            if( ! ok )
                throw new Win32Exception( Marshal.GetLastWin32Error() );
        }

        private static UIntPtr ToUIntPtr( this bool value ) {
            return new UIntPtr( value ? 1u : 0u );
        }

        public static bool GetActiveWindowTracking() {
            bool enabled;
            check( SystemParametersInfo( 0x1000, 0, out enabled, Flags.None ) );
            return enabled;
        }

        public static void SetActiveWindowTracking( bool enabled ) {
            // note: pvParam contains the boolean (cast to void*), not a pointer to it!
            check( SystemParametersInfo( 0x1001, 0, enabled.ToUIntPtr(), Flags.SendChange ) );
        }
    }
'@

# check if mouse-focus is enabled
[Spi]::GetActiveWindowTracking()

# disable mouse-focus (default)
[Spi]::SetActiveWindowTracking( $false )

# enable mouse-focus
[Spi]::SetActiveWindowTracking( $true )
Matthijs
źródło
2
Witaj, witaj superużytkowniku. Przy tworzeniu nowego wkładu proszę podać wyjaśnienia dołączone do kodu. Chociaż twoja odpowiedź wydaje się prawidłowa, byłoby lepiej, gdybyś wyjaśnił DLACZEGO to działa, więc jeśli ktoś chce zrobić coś nieco innego, może uzyskać punkt wyjścia dla twojej odpowiedzi. W każdym razie dziękuję za podzielenie się z nami swoją wiedzą!
DGoiko
Tam opracowałem wyjaśnienie.
Matthijs
1
Świetny! Cieszę się, że jestem twoim pierwszym głosowaniem, mam nadzieję, że przyjdzie o wiele więcej: D
DGoiko
1

Dla tych, którzy nie mogli go uruchomić, odejmując 40 od ​​pierwszego bajtu UserPreferencesMask, wystarczy pobrać narzędzie WinAero Tweaker na stronie http://winaero.com/download.php?view.1796

Zauważ, że powyższy problem nr 1 jest nadal obecny, ale można go łatwo obejść, po prostu używając ikony szkła powiększającego (wyszukiwania) po prawej stronie menu startowego (klawisz skrótu Window + S). Niewielka cena za uzyskanie funkcji X-Mouse.

Podczas korzystania z WinAero Tweaker nie występuje problem nr 2.

andz
źródło
1

Korzystając z tej metody, aby osiągnąć zachowanie niechlujnej myszy, do którego jestem tak przyzwyczajony, z poprzednich wersji systemu Windows i Linux z posta . Nie mam występującego problemu nr 2. Problem nr 1, który będziesz mieć podczas korzystania z tej modyfikacji rejestru, nie stanowi problemu. Działa dokładnie tak, jak oczekiwano, ponieważ zmieniłeś sposób, w jaki fokus jest obsługiwany w oknach dzięki tej modyfikacji. Użycie klawisza Windows przenosi mysz do menu startowego, a nie do menu wyszukiwania, więc skupia się, a nie menu wyszukiwania. Tak więc, jeśli chcesz użyć wyszukiwania, kliknij pasek wyszukiwania lub ikonę powiększenia (w zależności od ustawień wyglądu) lub użyj kombinacji klawiszy Win+ S, a zrobi to dobrze.

sudo
źródło
0

Nie testowałem jeszcze Winaero, ponieważ:

  1. Nie przepadam za uruchomieniem nieznanego oprogramowania z Internetu.
  2. Po uaktualnieniu wszystkich komputerów, z których korzystam, z systemu Windows 7 do Windows 10, system Windows 7 „Aktywuj okno, najeżdżając na niego myszką”, nadal działa w systemie Windows 10, nawet jeśli wydaje się, że nie ma metody ustawienie tego w GUI systemu Windows 10.

Niczego jeszcze nie znalazłem w Internecie, więc opiszę to innym.

Dzięki poniższym obejściom korzystanie z systemu Windows 10 w trybie Xmouse jest praktyczne:

  1. Przełączanie do innego okna, gdy dostępnych jest wiele okien za pośrednictwem ikony aplikacji na pasku zadań:

    NIE klikaj ikony aplikacji na pasku zadań przed próbą wybrania okna. Jeśli to zrobisz, natychmiast po przesunięciu wskaźnika myszy nad pasek zadań okna znikną. Po prostu najedź myszką nad ikonę aplikacji, aż pojawią się okna, a następnie możesz przenieść wskaźnik do potrzebnego.

  2. Przełączanie na inny wirtualny pulpit lub aplikację za pomocą przycisku widoku zadania:

    • Kliknij przycisk widoku zadania.
    • Kliknij ponownie i przytrzymaj przycisk.
    • Przesuń wskaźnik do wymaganego zadania lub wirtualnego pulpitu.
    • Zwolnij przycisk myszy, a następnie kliknij ponownie.

Uwaga: użytecznym dodatkiem jest ustawienie „Przewijanie nieaktywnych okien systemu Windows 10 po najechaniu na nie kursorem” (patrz Start -> Ustawienia -> Urządzenia -> Mysz i touchpad ). Wydaje się to niezależne od funkcjonalności Xmouse, a ON wydaje się być domyślny.

Chris Good
źródło
0

Ustaw Regkey HKCU \ Control Panel \ Desktop \ ActiveWndTrackTimeout na wartość wyższą niż 0, aby ustawić opóźnienie konfiguracji, chyba że inne okno się uaktywni

Volker
źródło
1
Napraw swój klucz; to nie jest Trk Track; np. ActiveWndTrkTimeout. Nie mam pojęcia, co robi Track, ale zmiana Trk jest dla mnie najlepsza.
lumpynose
-2

Aby rozwiązać problem nr 2 w systemie Windows 10

2) Po otwarciu przycisku Start, Wyszukaj lub Powiadomień, klikając je, zostaną one zamknięte, zanim będzie można z nimi korzystać.

Wszystko, co musisz zrobić, to:

  • Naciśnij Windows+X
  • Panel sterowania
  • Łatwość dostępu
  • Zmień sposób działania myszy
  • Zaznacz pole wyboru: Zapobiegaj automatycznemu rozmieszczaniu okien po przesunięciu do krawędzi ekranu

Nie potrzeba oprogramowania innych firm.

Vincent Ho
źródło