Wie Sie den Fokus aktivieren, folgt der Maus in Windows 10

44

Ich möchte unter Windows 10 eine Erhöhung beim Klicken und eine nachlässige Fokus-Folgemaus verwenden, da dies das Setup ist, das ich unter Windows und Linux seit Jahren verwende.

Unter Windows 10 habe ich die in diesem Link erwähnten Änderungen an regedit Xmouse versucht, die ursprünglich für Windows 8 gedacht waren: http://winaero.com/blog/turn-on-xmouse-active-window-tracking-focus-follows-mouse- Zeiger-Funktion-in-Windows-8-1-Windows-8-und-Windows-7 /

Ich habe jedoch die folgenden Probleme festgestellt:

  1. Wenn Sie das Startmenü durch Drücken der Windows-Taste öffnen, wird keine Tastatureingabe empfangen.

  2. Wenn Sie Start, Suche oder Benachrichtigungen öffnen, indem Sie darauf klicken, werden diese geschlossen, bevor Sie mit ihnen interagieren können.

Gibt es überhaupt einen brauchbaren Fokus, der der Maus folgt?

Benutzt jemand Win10 so erfolgreich?

Gordon Wrigley
quelle
Eine Problemumgehung für Problem Nr. 1 besteht darin, stattdessen auf die Lupe (Suche) zu klicken. Die Tastenkombination hierfür ist Window + S.
andz
1
Sie können das Problem Nr. 2 möglicherweise vermeiden, indem Sie ActiveWndTrkTimeout auf einen höheren Wert setzen. Früher hatte WinAero Xmouse Tuner ein Minimum von 500 ms, aber jetzt ist es in WinAero Tweaker aufgrund überwältigender Anforderungen auf ein Minimum von 100 ms gesenkt. Es ist immer noch nicht möglich, den Wert auf unter 100 ms abzusenken, aber es könnte einen guten Grund dafür geben.
Andz

Antworten:

33

Verwenden Sie die X-Mouse-Steuerelemente , da dies der echten Focus Follows-Maus am nächsten kommt, und es gibt einige Optionen zum Optimieren. Es handelt sich um ein kleines Open-Source-Dienstprogramm, das weder eine Installation noch einen Neustart erfordert, und das Sie davon abhält, die Registrierung selbst zu ändern.

Soweit ich experimentiert habe, kann ich mit der Tastatur nach Dateien / Programmen suchen, nachdem ich die Win-Taste gedrückt habe. Auch das Startmenü und das Benachrichtigungsmenü werden nicht ausgeblendet, bevor ich sie verwenden kann, auch nicht mit der Option zum Anheben beim Schweben, da Sie eine kleine Verzögerung für das Verhalten festlegen können (ein oder zweihundert ms werden ausreichen), die Sie erhalten mehr als genug Platz, um den Zeiger auf das neue Fenster zu bewegen.

Ich habe es für eine Weile benutzt und ich bin ziemlich zufrieden mit ihm und dem bug.n Tiling Window Manager. Dieses Setup ist so ähnlich, wie ich es bei der Verwendung von dwm unter Unix getan habe.

ArthurChamz
quelle
24

Das folgende Powershell-Skript sollte den gleichen Effekt haben wie das XMouse-Programm, ohne dass eine Drittanbieter-Binärdatei ausgeführt werden muss

Code:

$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)

Von hier aus abgefragte Konstanten

golvok
quelle
Das funktioniert wunderbar, besser als alles andere, was ich versucht habe. Speichern Sie dies einfach in einer .ps1-Datei, klicken Sie mit der rechten Maustaste darauf und wählen Sie Mit Powershell ausführen. Sie können es sogar im Taskplaner hinzufügen, um beim Booten zu beginnen.
Zurd
11

Die im Link der Frage genannten Registrierungsänderungen funktionieren unter Windows 10. Sie müssen jedoch anscheinend vorgenommen werden, wenn in den Einstellungen für Eingabehilfen die Option "Aktivieren Sie ein Fenster, indem Sie mit der Maus darüber fahren" ausgewählt ist. Diese Option finden Sie unter Systemsteuerung> Einfacher Zugriff> Ändern der Funktionsweise Ihrer Maus .

Wenn dieselben Probleme auftreten und das Kontrollkästchen aktiviert ist , deaktivieren Sie es, klicken Sie auf Übernehmen, wählen Sie es erneut aus und wiederholen Sie die Änderungen. Die Maus sollte sich beim nächsten Anmelden ordnungsgemäß verhalten.

Aleixosk
quelle
3
Dies macht jedoch, was der Name andeutet - es werden automatisch die Fenster geöffnet. OP möchte, dass es NICHT erhöht, aber dennoch den Fokus auf ein Hintergrundfenster zulässt. Befolgen Sie die Winaero-Anweisungen des Q (setzen Sie den ersten Hex-Code auf 9F) und melden Sie sich an und ab. Win-Taste + Eingabe = funktioniert für die Suche. Win-Taste mit Maus + Eingabe = funktioniert NICHT für die Suche, wenn der Fokus jemals von der genannten Taste entfernt ist, aber wenn ich die Maus über der Taste halte. Das Beenden von explorer.exe und das Ausführen von userinit.exe funktionierten nicht, um die Registrierungseinstellungen zu laden, sodass eine Abmeldung erforderlich zu sein scheint.
mpag
Durch das Anwenden der Registrierungsänderungen wird die automatische Erhöhung gestoppt.
Aleixosk
6

Windows verfügt tatsächlich über ein Flag zum Aktivieren der Fokus-Follow-Maus ("Active Window Tracking"), das über den monströsen Win32-API-Aufruf "SystemParametersInfo" problemlos aktiviert werden kann . Es gibt Programme von Drittanbietern, mit denen das Flag aktiviert werden kann, z. B. X-Mouse Controls , oder Sie können den Anruf direkt mit PowerShell ausführen.

Die Dokumentation ist nicht immer klar, wie das pvParamArgument verwendet wird, und einige Powershell-Snippets übergeben beim Setzen dieses speziellen Flags fälschlicherweise einen Zeiger auf den Wert und nicht auf den Wert selbst. Dies wird letztendlich immer so interpretiert true, dass sie versehentlich das Flag aktivieren, aber nicht wieder deaktivieren.

Unten ist ein Powershell-Snippet, das den Anruf korrekt ausführt. Es enthält auch eine ordnungsgemäße Fehlerprüfung, und ich habe versucht, eher auf Sauberkeit als auf Kürze zu achten, um auch das Hinzufügen von Wrappern für andere Funktionen zu vereinfachen SystemParametersInfo, falls Sie einige finden, die Sie interessieren.

Shout-out zu pinvoke.net für eine hilfreiche Ressource für Sachen wie diese zu sein.

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
quelle
2
Hallo, willkommen beim Superuser. Wenn Sie neue Beiträge verfassen, versuchen Sie bitte, Ihrem Code einige Erklärungen beizufügen. Obwohl Ihre Antwort richtig zu sein scheint, ist es besser, wenn Sie erklären, WARUM sie funktioniert. Wenn also jemand etwas anderes machen möchte, kann er einen Ausgangspunkt für Ihre Antwort finden. Wie auch immer, vielen Dank, dass Sie Ihr Wissen mit uns teilen!
DGoiko
Dort habe ich die Erklärung ausgearbeitet.
Matthijs
1
Groß! Ich freue mich, Ihre erste Wahl zu sein und hoffe, dass noch viel mehr kommen wird: D
DGoiko
1

Für diejenigen, die es nicht zum Laufen bringen konnten, indem sie nur 40 vom ersten Byte von UserPreferencesMask subtrahierten, können Sie das WinAero Tweaker-Dienstprogramm selbst unter http://winaero.com/download.php?view.1796 herunterladen

Beachten Sie, dass das oben genannte Problem Nr. 1 immer noch vorhanden ist, Sie es jedoch einfach umgehen können, indem Sie das Lupensymbol (Suchen) rechts neben dem Startmenü verwenden (Tastenkürzel Fenster + S). Ein kleiner Preis für den Erwerb der X-Mouse-Funktionalität.

Bei der Verwendung von WinAero Tweaker tritt das Problem Nr. 2 nicht auf.

andz
quelle
1

Verwenden der Methode zum Erreichen des schlampigen Mausverhaltens, an das ich so gewöhnt bin, aus früheren Versionen von Windows und Linux aus dem Beitrag . Ich habe kein Problem Nr. 2, das Sie haben. Problem Nr. 1, das Sie und alle bei Verwendung dieser Registrierungsänderung haben, ist kein Problem. Dies funktioniert genau wie erwartet, da Sie die Art und Weise geändert haben, in der der Fokus in Fenstern mit dieser Änderung behandelt wird. Mit der Windows-Taste gelangen Sie mit der Maus in das Startmenü und nicht in das Suchmenü, sodass der Fokus nicht auf das Suchmenü gelegt wird. Wenn Sie also die Suche verwenden möchten, klicken Sie entweder in die Suchleiste oder auf das Vergrößerungssymbol (abhängig von Ihren Einstellungen für das Erscheinungsbild) oder verwenden Sie die Tastenkombination Win+ S, um das Richtige zu tun.

sudo
quelle
0

Ich habe Winaero noch nicht getestet, weil:

  1. Ich bin nicht daran interessiert, unbekannte Software aus dem Internet auszuführen.
  2. Da ich alle PCs, die ich verwende, von Windows 7 auf Windows 10 aktualisiert habe, ist die Einstellung "Aktivieren eines Fensters durch Bewegen des Mauszeigers über ein Fenster" in Windows 10 weiterhin wirksam, auch wenn es anscheinend keine Methode dafür gibt Festlegen dieser Einstellung in der Windows 10-GUI.

Ich habe diese Problemumgehungen noch nirgendwo im Internet gefunden, daher werde ich sie hier für andere dokumentieren.

Wenn Sie die folgenden Problemumgehungen verwenden, ist die Verwendung von Windows 10 im Xmouse-Modus praktisch:

  1. Wechseln zu einem anderen Fenster, wenn mehrere Fenster über das App-Symbol in der Taskleiste verfügbar sind:

    Klicken Sie NICHT auf das App-Symbol in der Taskleiste, bevor Sie versuchen, ein Fenster auszuwählen. In diesem Fall werden die Fenster ausgeblendet, sobald Sie den Mauszeiger über die Taskleiste bewegen. Bewegen Sie den Mauszeiger einfach über das App-Symbol, bis die Fenster angezeigt werden, und bewegen Sie den Mauszeiger auf das gewünschte Fenster.

  2. Wechseln zu einem anderen virtuellen Desktop oder einer anderen virtuellen App mithilfe der Schaltfläche für die Aufgabenansicht:

    • Klicken Sie auf die Schaltfläche Aufgabenansicht.
    • Klicken Sie erneut und halten Sie die Taste gedrückt.
    • Bewegen Sie den Zeiger auf die gewünschte Aufgabe oder den virtuellen Desktop.
    • Lassen Sie die Maustaste los und klicken Sie erneut.

Hinweis: Die Windows 10-Einstellung "Inaktive Fenster scrollen, wenn ich den Mauszeiger darüber bewege" ist eine nützliche Ergänzung (siehe Start -> Einstellungen -> Geräte -> Maus und Touchpad ). Dies scheint unabhängig von der Xmouse-Funktionalität zu sein, und ON scheint die Standardeinstellung zu sein.

Chris Gut
quelle
0

Setzen Sie Regkey HKCU \ Systemsteuerung \ Desktop \ ActiveWndTrackTimeout auf einen höheren Wert als 0, um die Verzögerung einzurichten, sofern nicht ein anderes Fenster aktiv wird

Volker
quelle
1
Repariere deinen Schlüssel; es ist Trk not Track; zB ActiveWndTrkTimeout. Ich habe keine Ahnung, was der Track macht, aber das Ändern des Trk ist das, was für mich funktioniert.
Lumpynose
-2

So beheben Sie das Problem Nr. 2 unter Windows 10

2) Wenn Sie Start, Suche oder Benachrichtigungen öffnen, indem Sie darauf klicken, werden diese geschlossen, bevor Sie mit ihnen interagieren können.

Alles was Sie tun müssen ist:

  • Drücken Sie Windows+X
  • Schalttafel
  • Leichtigkeit des Zugangs
  • Ändern Sie die Funktionsweise Ihrer Maus
  • Aktivieren Sie das Kontrollkästchen: Verhindert, dass Fenster automatisch angeordnet werden, wenn sie an den Bildschirmrand verschoben werden

Keine Notwendigkeit für Software von Drittanbietern.

Vincent Ho
quelle