Comment activer le focus après la souris dans Windows 10

44

Je souhaite une focalisation suivie sur une souris sans relâche sur Windows 10, car il s'agit de la configuration que j'utilise sous Windows et Linux depuis des années.

Sous Windows 10, j'ai essayé les modifications de regedit Xmouse mentionnées dans ce lien qui étaient à l'origine destinées à Windows 8: http://winaero.com/blog/turn-on-xmouse-active-window-tracking-focus-follows-mouse- pointeur-fonctionnalité-dans-windows-8-1-windows-8-and-windows-7 /

Cependant, j'ai rencontré les problèmes suivants:

  1. Lorsque vous ouvrez le menu Démarrer en appuyant sur la touche Windows, il ne reçoit pas de saisie au clavier.

  2. Lorsque vous ouvrez Démarrer, Rechercher ou Notifications en cliquant dessus, ils se ferment avant que vous puissiez interagir avec eux.

Y at-il de toute façon pour obtenir le focus utilisable suit la souris?

Est-ce que quelqu'un utilise avec succès Win10 comme ça?

Gordon Wrigley
la source
Une solution de contournement pour le problème n ° 1 consiste à cliquer sur la loupe (recherche) à la place. La touche de raccourci pour cela est Window + S.
andz
1
Vous pourrez peut-être éviter le problème n ° 2 en définissant ActiveWndTrkTimeout sur une valeur plus élevée. Auparavant, WinAero Xmouse Tuner avait un minimum de 500 ms, mais il est maintenant abaissé à un minimum de 100 ms dans WinAero Tweaker en raison de demandes accablantes. Il n'est toujours pas possible de l'abaisser à moins de 100 ms, mais il pourrait y avoir une bonne raison à cela.
andz

Réponses:

33

Utilisez les contrôles de la souris X , c’est le moyen le plus proche de la vraie souris Focus Follows, et il a quelques options à modifier. C'est un petit utilitaire open source qui ne nécessite ni installation ni redémarrage et vous évite de modifier vous-même le registre.

Dans la mesure de mes expériences, je peux utiliser le clavier pour rechercher des fichiers / programmes après avoir appuyé sur la touche Win. En outre, le menu Démarrer et le menu Notifications ne disparaissent pas avant que je puisse les utiliser, même avec l'option de survol stationnaire, car vous pouvez définir un petit délai pour le comportement (une ou deux cents ms suffira), ce qui vous donne plus de place que nécessaire pour déplacer le pointeur sur la nouvelle fenêtre.

Je l'utilise depuis un moment et j'en suis assez satisfait, plus le gestionnaire de fenêtres de tuiles bug.n. Cette configuration est aussi proche que j’ai été d’utiliser dwm sous unix.

ArthurChamz
la source
24

Le script powershell suivant devrait avoir le même effet que le programme XMouse ... sans avoir à exécuter un fichier binaire tiers

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)

Les constantes extraites d' ici

Golvok
la source
Cela fonctionne à merveille, mieux que tout ce que j'ai essayé. Enregistrez-le dans un fichier .ps1, cliquez dessus avec le bouton droit de la souris et choisissez Exécuter avec Powershell. Vous pouvez même l'ajouter dans le Planificateur de tâches pour démarrer au démarrage.
Zurd
11

Les modifications de registre mentionnées dans le lien de la question fonctionnent sous Windows 10. Cependant, il semble qu'elles doivent être effectuées lorsque l'option «Activer une fenêtre en la survolant avec la souris» est sélectionnée dans les paramètres d'accessibilité. Cette option se trouve sous Panneau de configuration> Facilité d'accès> Modifier le fonctionnement de votre souris .

Si vous rencontrez les mêmes problèmes et que la case à cocher est cochée, désélectionnez-la, cliquez sur appliquer, sélectionnez-la à nouveau et renouvelez les modifications. La souris doit se comporter correctement la prochaine fois que vous vous connectez.

aleixosk
la source
3
Cependant, cela fait ce que son nom suggère - soulève automatiquement les fenêtres. OP veut que cela ne soit PAS élevé, mais permet toujours de se concentrer sur une fenêtre en arrière-plan. Suivre les instructions de Q de Winaero (régler le premier code hexadécimal sur 9F) et se connecter et se déconnecter semble fonctionner correctement. Touche Win + dactylographie = fonctionne pour la recherche. Le bouton Win avec la souris + la saisie = ne fonctionne pas pour la recherche si la mise au point est déjà éloignée de ce bouton, mais si la souris survole le bouton. Tuer explorer.exe et userinit.exe en cours d'exécution ne fonctionnaient pas pour charger les paramètres reg, une déconnexion semble donc nécessaire.
mpag
L'application des modifications du registre arrête la relance automatique.
aleixosk
6

Windows a en fait un indicateur pour activer focus-follow-mouse ("suivi de fenêtre actif"), qui peut être activé facilement via le monstrueux appel d'API Win32 "SystemParametersInfo" . Il existe des programmes tiers pour activer l'indicateur, tels que les contrôles de la souris X , ou vous pouvez effectuer l'appel directement à l'aide de PowerShell.

La documentation n'est pas toujours très claire sur la façon dont l' pvParamargument est utilisé, et certains extraits PowerShell transmettent à tort un pointeur sur la valeur, plutôt que la valeur elle-même, lors de la définition de cet indicateur. Cela finit toujours par être interprété comme true, c.-à-d. Qu'ils travaillent accidentellement pour activer le drapeau, mais pas pour le désactiver à nouveau.

Vous trouverez ci-dessous un extrait de code PowerShell qui exécute correctement l'appel. Cela inclut également la vérification correcte des erreurs, et j’ai essayé d’opter pour la propreté plutôt que la concision, afin de faciliter l’ajout d’emballages pour d’autres fonctionnalités de SystemParametersInfo, si vous en trouviez qui vous intéressaient.

Merci à pinvoke.net d’être une ressource utile pour ce genre de choses.

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
la source
2
Bonjour, bienvenue au superutilisateur. S'il vous plaît, lorsque vous faites de nouvelles contributions, essayez de donner quelques explications attachées à votre code. Bien que votre réponse semble correcte, il serait préférable que vous expliquiez POURQUOI cela fonctionne. Par conséquent, si une personne souhaite faire quelque chose de légèrement différent, elle peut obtenir un point de départ pour votre réponse. En tout cas, merci de partager votre savoir avec nous!
DGoiko
Là, j'ai étoffé l'explication.
Matthijs
1
Génial! Je suis heureux d'être votre premier vote positif, j'espère que beaucoup d'autres viendront: D
DGoiko
1

Pour ceux qui ne pouvaient pas le faire fonctionner en soustrayant simplement 40 du premier octet de UserPreferencesMask, procurez-vous simplement l'utilitaire WinAero Tweaker à l' adresse http://winaero.com/download.php?view.1796.

Notez que le problème n ° 1 ci-dessus est toujours présent, mais qu’il est facile de contourner le problème en utilisant simplement l’icône Loupe (recherche) à droite du menu Démarrer (touche de raccourci Fenêtre + S). Un petit prix à payer pour obtenir la fonctionnalité X-Mouse.

Je n'éprouve pas le problème n ° 2 lorsque j'utilise WinAero Tweaker.

andz
la source
1

Utilisation de la méthode pour obtenir le comportement de souris négligé, auquel je suis si habitué, à partir des versions précédentes de Windows et Linux à partir de la publication . Je ne connais pas le problème n ° 2 que vous rencontrez. Le problème n ° 1 que vous et tous aurez lors de l’utilisation de cette modification du registre n’est pas un problème. Il fonctionne exactement comme prévu car vous avez modifié la façon dont le focus est géré dans Windows avec cette modification. L'utilisation de la touche Windows amène la souris dans le menu Démarrer, pas dans le menu de recherche, donc elle devient active, pas dans le menu de recherche. Donc, si vous souhaitez utiliser la recherche, cliquez sur la barre de recherche ou sur l’icône de grossissement (en fonction de vos paramètres d’apparence), ou utilisez la combinaison touches Win+ Spour obtenir la bonne solution.

sudo
la source
0

Je n'ai pas encore testé Winaero car:

  1. Je ne suis pas intéressé par l'utilisation de logiciels inconnus à partir d'Internet.
  2. Comme j'ai mis à niveau tous les ordinateurs que j'utilise de Windows 7 à Windows 10, le paramètre Windows 7 «Activer une fenêtre en la survolant avec la souris» est resté en vigueur dans Windows 10, même s'il semble n'y avoir aucune méthode de ce paramètre dans l'interface graphique Windows 10.

Je n'ai pas encore trouvé ces solutions de contournement sur Internet, je vais donc documenter ici pour les autres.

L’utilisation des solutions de contournement suivantes facilite l’utilisation de Windows 10 en mode Xmouse:

  1. Basculer vers une autre fenêtre lorsque plusieurs fenêtres sont disponibles via l'icône de l'application dans la barre des tâches:

    Ne cliquez PAS sur l'icône de l'application dans la barre des tâches avant d'essayer de sélectionner une fenêtre. Si vous le faites, dès que vous déplacez le pointeur de la souris au-dessus de la barre des tâches, les fenêtres disparaissent. Placez le pointeur de la souris au-dessus de l’icône de l’application jusqu’à ce que les fenêtres apparaissent, puis vous pourrez déplacer le pointeur sur celle dont vous avez besoin.

  2. Basculer vers un autre bureau ou une application virtuelle à l'aide du bouton de vue des tâches:

    • Cliquez sur le bouton d'affichage des tâches.
    • Cliquez à nouveau et maintenez le bouton enfoncé.
    • Déplacez le pointeur dans la tâche requise ou le bureau virtuel.
    • Relâchez le bouton de la souris, puis cliquez à nouveau.

Remarque: le paramètre Windows 10 "Faire défiler les fenêtres inactives lorsque je les survole" est un ajout utile (voir Démarrer -> Paramètres -> Périphériques -> Souris et pavé tactile ). Cela semble indépendant de la fonctionnalité Xmouse et ON semble être la valeur par défaut.

Chris Good
la source
0

Définissez Regkey HKCU \ Panneau de configuration \ Bureau \ ActiveWndTrackTimeout sur une valeur supérieure à 0 sur Délai d'installation, sauf si une autre fenêtre devient active.

Volker
la source
1
Fixez votre clé c'est Trk not Track; par exemple, ActiveWndTrkTimeout. Je n'ai aucune idée de ce que fait la piste, mais changer celle de Trk est ce qui fonctionne pour moi.
lumpynose
-2

Pour résoudre le problème n ° 2 sous Windows 10

2) Lorsque vous ouvrez Démarrer, Rechercher ou Notifications en cliquant dessus, ils se ferment avant que vous puissiez interagir avec eux.

Tout ce que vous devez faire c'est:

  • Appuyez sur Windows+X
  • Panneau de contrôle
  • Facilité d'accés
  • Changer le fonctionnement de votre souris
  • Activez la case à cocher: Empêcher les fenêtres d'être automatiquement organisées lorsqu'elles sont déplacées vers le bord de l'écran

Pas besoin de logiciel tiers.

Vincent Ho
la source