web-dev-qa-db-fra.com

La mise au point suit la souris (plus la relance automatique) sous Mac OS X

(Je ne veux pas entendre à quel point je suis fou de vouloir ça! :)

La mise au point suit la souris est également appelée point de mise au point, mise au point par pointeur et (dans certaines implémentations) mise au point négligée. [Ajoutez d'autres termes qui rendront ceci plus consultable!] X-mouse

142
dreeves

Vous pouvez le faire pour Terminal.app en lançant la commande suivante sur la ligne de commande:

defaults write com.Apple.Terminal FocusFollowsMouse -bool true

Pour les applications X11, vous pouvez faire ceci:

defaults write com.Apple.x11 wm_ffm -bool true

Dans Snow Leopard, utilisez ceci à la place:

defaults write org.x.X11 wm_ffm -bool true

Apparemment, il existe un programme appelé CodeTek Virtual Desktop qui va l'imiter dans tout le système, mais cela coûte $$ (et ils n'ont jamais sorti de version pour OSX Leopard).

67
Clint Ecker

Steve Yegge a écrit un essai à ce sujet il y a quelque temps, où il a essayé et n'a pas réussi à écrire une extension appropriée. Depuis, j'ai essayé de trouver des applications focus-follow-mouse pour OS X et j'ai également échoué.

55
John Millikin

Focus-follow-mouse n'est pas une méthode de saisie particulièrement adaptée à OS X car sa barre de menus a été conçue pour être en haut de l'écran. Lorsque vous déplacez la souris hors de la fenêtre de votre application pour accéder aux menus, si elle se croise avec les fenêtres d'une autre application en cours de route, le menu change.

Donc, oui, en réponse au commentaire dreeves, cela fonctionne parfaitement pour Terminal (ou pour toute autre application unique sur le bureau), car les seules autres fenêtres qu’il va affecter sont les fenêtres Terminal. Et cela fonctionne bien pour X11 car les applications X11 ont généralement leurs barres de menus intégrées dans la fenêtre, vous n’avez donc pas à quitter la fenêtre pour y accéder.

Bien sûr, vous pouvez contourner le problème de changement de menu en introduisant un délai artificiel avant le changement de focus et/ou le changement de menu, mais cela ne fonctionnera jamais aussi bien que sur les autres ordinateurs de bureau.

44
calum_b

Bien que ce soit loin d’être une solution complète, OSX (10.11) intègre deux actions pratiques:

⌃⌥-clic (control-option-click) - change le focus sans lever la fenêtre

clic (clic de commande) - clique dans la fenêtre sans changer de focus

Je ne suis pas sûr de savoir quand ces raccourcis ont été introduits, car je n’ai pas été en mesure de les trouver écrits de partout.

34
dvj

Amethyst prend en charge cette fonctionnalité. Il peut être facilement installé avec brew cask install amethyst.

Voici le fichier de configuration que j'utilise. Il désactive toutes les fonctionnalités en dehors de focus-follow-mouse Enregistrez-le dans ~/.amethyst.

{
    "LAYOUTS": "----------------------",
    "layouts": [
    ],

    "MODIFIERS": "----------------------",
    "Valid modifiers are": [
        "option",
        "shift",
        "control",
        "command"
    ],

    "mod1": [
    ],
    "mod2": [
    ],

    "COMMANDS": "----------------------",
    "Commands are": {
        "cycle-layout": "Cycle layout to the next layout",
        "cycle-layout-backward": "Cycle layout to the previous layout",
        "focus-screen-1": "Focus the main window on the first screen",
        "focus-screen-2": "Focus the main window on the second screen",
        "focus-screen-3": "Focus the main window on the third screen",
        "focus-screen-2": "Focus the main window on the second screen",
        "focus-screen-3": "Focus the main window on the third screen",
        "focus-screen-4": "Focus the main window on the fourth screen",
        "throw-screen-1": "Throw the focused window to the first screen",
        "throw-screen-2": "Throw the focused window to the second screen",
        "throw-screen-3": "Throw the focused window to the third screen",
        "throw-screen-4": "Throw the focused window to the fourth screen",
        "shrink-main": "Shrink the main pane of the current layout",
        "expand-main": "Expand the main pane of the current layout",
        "increase-main": "Increase the number of windows in the main pane",
        "decrease-main": "Decrease the number of windows in the main pane",
        "focus-ccw": "Move window focus counter-clockwise on the current screen",
        "focus-cw": "Move window focus clockwise on the current screen",
        "swap-ccw": "Swap focused window with the next window going counter-clockwi$
        "swap-cw": "Swap focused window with the next window going clockwise",
        "swap-main": "Swap focused window with the main window of its screen",
        "throw-space-1": "Throw the focused window to the first space",
        "throw-space-2": "Throw the focused window to the second space",
        "throw-space-3": "Throw the focused window to the third space",
        "throw-space-4": "Throw the focused window to the fourth space",
        "throw-space-5": "Throw the focused window to the fifth space",
        "throw-space-6": "Throw the focused window to the sixth space",
        "throw-space-7": "Throw the focused window to the seventh space",
        "throw-space-8": "Throw the focused window to the eighth space",
        "throw-space-9": "Throw the focused window to the ninth space",
        "throw-space-8": "Throw the focused window to the eighth space",
        "throw-space-9": "Throw the focused window to the ninth space",
        "toggle-float": "Toggle the focused window between being floating and tiled"
    },

    "screens": "3",

    "cycle-layout": {
        "mod": "mod1",
    },
    "cycle-layout-backward": {
        "mod": "mod2",
    },
    "select-tall-layout": {
        "mod": "mod1"
    },
    "select-wide-layout": {
        "mod": "mod1"
    },
    "select-fullscreen-layout": {
        "mod": "mod1"
    },
    "select-column-layout": {
        "mod": "mod1"
    },
        "mod": "mod1"
    },
    "focus-screen-1": {
        "mod": "mod1"
    },
    "focus-screen-2": {
        "mod": "mod1"
    },
    "focus-screen-3": {
        "mod": "mod1"
    },
    "focus-screen-4": {
        "mod": "mod1"
    },
    "throw-screen-1": {
        "mod": "mod2"
    },
    "throw-screen-2": {
        "mod": "mod2"
    },
    "throw-screen-3": {
        "mod": "mod2"
    },
    "throw-screen-4": {
        "mod": "mod2"
    "throw-screen-4": {
        "mod": "mod2"
    },
    "shrink-main": {
        "mod": "mod1"
    },
    "expand-main": {
        "mod": "mod1"
    },
    "increase-main": {
        "mod": "mod1"
    },
    "decrease-main": {
        "mod": "mod1"
    },
    "focus-ccw": {
        "mod": "mod1"
    },
    "focus-cw": {
        "mod": "mod1"
    },
    "swap-screen-ccw": {
        "mod": "mod2"
    },
    "swap-screen-cw": {
    },
    "swap-screen-cw": {
        "mod": "mod2"
    },
    "swap-ccw": {
        "mod": "mod2"
    },
    "swap-cw": {
        "mod": "mod2"
    },
    "swap-main": {
        "mod": "mod1"
    },
    "throw-space-1": {
        "mod": "mod2"
    },
    "throw-space-2": {
        "mod": "mod2"
    },
    "throw-space-3": {
        "mod": "mod2"
    },
    "throw-space-4": {
        "mod": "mod2"
    },

        "mod": "mod2"
    },
    "throw-space-5": {
        "mod": "mod2"
    },
    "throw-space-6": {
        "mod": "mod2"
    },
    "throw-space-7": {
        "mod": "mod2"
    },
    "throw-space-8": {
        "mod": "mod2"
    },
    "throw-space-9": {
        "mod": "mod2"
    },
    "toggle-float": {
        "mod": "mod1"
    },
    "toggle-tiling": {
        "mod": "mod2"
    },
    "display-current-layout": {
        "mod": "mod1"
    "display-current-layout": {
        "mod": "mod1"
    },

    "MISC": "----------------------",
    "floating": [],
    "float-small-windows": false,
    "mouse-follows-focus": false,
    "focus-follows-mouse": true,
    "enables-layout-hud": false,
    "enables-layout-hud-on-space-change": false
}
15
wprl

La question du menu est la seule raison pour laquelle le focus-follow-mouse traditionnel ne fonctionnerait pas.

Voici une alternative: ne changez pas le focus tant qu’une touche n’est pas pressée sur le clavier. Cela couvrirait 95% des cas d'utilisation de focus-follow-mouse et rendrait ce vieil utilisateur très curieux de X très heureux. Je ne sais pas combien de fois je vais faire défiler une page Web dans Chrome et appuyer sur Commande-T pour ouvrir un nouvel onglet et trouver à la place l'onglet qui s'ouvre dans le terminal. Si mon cerveau ne s’en est pas rendu compte depuis huit mois que j’utilise un Mac, il ne le fera jamais.

9
Kyle Rose

J'utilise actuellement MondoMouse et même avec ses bizarreries, je ne pourrais pas utiliser mon mac sans cela. Ils ont un essai gratuit et je le recommanderais à tout le monde.

MondoMouse

8
mcotton

Alors j'ai décidé d'améliorer encore le travail que j'ai fait sur le MouseFocus.app qui avait encore quelques défauts. Ceux sont corrigés maintenant. J'ai renommé le tout en "AutoRaise" pour mieux refléter le rôle de cet outil: lorsque vous survolez une fenêtre, celle-ci est placée au premier plan (avec le délai de votre choix) et prend le focus. L'outil peut être téléchargé ici . Pour l'utiliser, copiez-le dans votre dossier/Applications/en vous assurant qu'il est exécutable (chmod 700 AutoRaise). Ensuite, double-cliquez dessus depuis le Finder. Pour l'activer/le désactiver rapidement, vous pouvez utiliser le script ci-dessous et le coller dans un flux de travaux automator service. Liez ensuite le service créé à un raccourci clavier via Préférences Système | Clavier | Raccourcis.

Update (29-03-2017): Le fichier binaire AutoRaise a été mis à jour. Si aucun délai n'a été spécifié sur la ligne de commande, le fichier AutoRaise.delay sera également recherché dans le même dossier. Ceci est particulièrement utile lorsque vous utilisez le script Applescript ci-dessous, car "Lancer l'application" ne prend pas en charge les arguments de ligne de commande. Le délai doit être spécifié en unités de 50 ms. Par exemple, pour spécifier un délai de 150 ms, exécutez cette commande une fois dans un terminal: 'echo 3> AutoRaise.delay'

on run {input, parameters}
    tell application "Finder"
        if exists of application process "AutoRaise" then
            quit application "/Applications/AutoRaise"
            display notification "AutoRaise Stopped"
        else
            launch application "/Applications/AutoRaise"
            display notification "AutoRaise Started"
        end if
    end tell
    return input
end run
8
sbmpost

Codetek avait un produit qui faisait cela, mais ils n’ont jamais publié de version pour Leopard ou plus tard.

MondoMouse peut en quelque sorte faire la mise au point avec la souris, mais pas avec la levée automatique . Même si la mise au point avec la souris est interrompue, . Par exemple, il ne joue pas bien avec la commande Commande-onglet à une nouvelle application et ne touchez pas la souris alors il devrait pas revenir au point où le pointeur de la souris se trouve - Je suis sûr que chaque implémentation sous Linux que j'ai vue obtient cette mais MondoMouse ne le fait pas).

Vous pouvez activer la fonctionnalité de suivi de la souris (sans autoraise) uniquement pour les fenêtres de terminal (il suffit d'exécuter les opérations suivantes dans un terminal):

defaults write com.Apple.Terminal FocusFollowsMouse -string YES

Et de même pour les fenêtres X11:

defaults write org.x.X11 wm_ffm -bool true 

(Pour les versions mac antérieures à 10.5.5, il s’agissait de:

defaults write com.Apple.x11 wm_ffm true

)

Je ne connais aucune autre application qui le supporte.

7
dreeves

chunkwm le supporte aussi (par défaut, je crois): chunkwm

6
asselinpaul

Il est intéressant de noter que Leopard possède un type de focus-follow-mouse (sans autoraise) activé par défaut. La molette de défilement fonctionne dans les fenêtres non focalisées.

5
cksubs

Malheureusement, CodeTek Virtual Desktop Pro n’est plus développé et la société semble avoir cessé ses activités il ya quelques années.

Référence historique: http://www.codetek.com/ctvd/ (ne fonctionne pas sur les nouvelles versions d'OS X!)

Historique: http://www.osnews.com/story/6144

En utilisant CodeTek Virtual Desktop Pro, vous avez pu obtenir Focus-Follow-Mouse et désactiver Auto-Raise. Il disposait également d'un pageur pour les bureaux virtuels, similaire au fonctionnement de Fvwm sous Linux. Cela fonctionnait parfaitement: le meilleur logiciel que j'ai jamais acheté. Il fonctionnait de manière cohérente avec toutes les applications. Changer d'application, déplacer des fenêtres vers différents espaces de travail et naviguer entre les espaces de travail fonctionnait beaucoup plus facilement les dernières versions d'OS X [10.6, 10.7, 10.8]

Malheureusement, avec Mac OS X 10.5, VirtualDesktop Pro a cessé de fonctionner et il semble qu'Apple ait activement veillé à ce que CodeTek ne continue pas à fonctionner dessus.

Il est regrettable qu’Apple ait écrasé CodeTek et son produit: Virtual Desktop Pro était vraiment supérieur à la manière dont les espaces de travail OS X sont actuellement mis en œuvre. Cela fonctionnait fondamentalement comme Fvwm sur LINUX - une navigation très rapide - sans clics inutiles ni gestes de la souris ...

Cela m'attriste de voir qu'Apple dicte le comportement du gestionnaire de fenêtres (Finder) et ne semble plus autoriser de remplacements tiers pour le Finder.

4
Tilo

Donnez DwellClick a essayer. Bien que ce ne soit pas le but recherché, le comportement de clic automatique a un effet secondaire similaire à l'élévation automatique ou à la focalisation sur les souris.

Personnellement, je n’utilise la fonction de clic gauche que lorsque le mouvement de mon curseur s’est arrêté, mais il ya aussi des clics avec des modificateurs et une aide au glissement de la fenêtre qui est assez pratique.

C’est aussi un peu frustrant lorsque vous naviguez sur le Web, car vous voulez soit désactiver l’application, soit être plus conscient de l’emplacement du curseur (par exemple, pas sur les liens ni les boutons que vous ne souhaitez pas activer).

3
Ben M

Il y a aussi la question connexe de la relance sur clic. Sous OSX, chaque fois qu'une fenêtre est cliquée, elle est également levée, masquant ainsi potentiellement d'autres fenêtres. Cela pose un problème lorsque vous utilisez un copier/coller à partir de deux fenêtres, l’une d’elles couvrant la majeure partie de l’écran. J'aime conserver un bloc-notes global (actif dans tous les espaces de travail) à partir duquel je copie/colle des éléments (commandes, texte, éléments à supprimer, etc.). C'est difficile sous OSX. Ce serait bien d'avoir une option pour désactiver la relance au clic.

3
sfar

La mise au point suit la souris est maintenant possible dans macOS, Mojave dans mon cas, avec chunkwm . Voir this Réponse de débordement de pile pour une solution "sans autoraise". Autoraise s'active en partant

chunkc set ffm_disable_autoraise         0

dans ~/.chunkwmrc.

2
Les Grieve

En expérimentant avec ces options, Command-Tab a commencé à se comporter bizarrement. Voici la solution pour redonner la priorité aux applications:

Il semble qu'une fonctionnalité précédente, à savoir la possibilité pour le focus de la fenêtre du terminal de changer avec les mouvements de la souris, soit interrompue dans 10.6 et empêche Command-Tab de transférer correctement le focus de la fenêtre. Pour résoudre le problème, collez simplement la commande suivante dans un terminal:

valeurs par défaut écrivent com.Apple.Terminal FocusFollowsMouse -string NO

Puis redémarrez Terminal. 

1
Team Pannous

Solution: étant donné que j'étais tellement habitué à autoriser dans Windows, je l'ai mal manqué sur le Mac . La solution que j'ai trouvée pour le Mac est Zooom (oui, trois o). Il a une fonction autoraise. Vous pouvez même définir le délai en millisecondes avant l'autoraise. Je ne peux pas vivre sans ça. Autoraise est une option dans les préférences que vous pouvez voir dans la capture d'écran https://www.macupdate.com/app/mac/23203/zooomhttp://coderage-software.com/zooom /index.html

1
Gary Kaputnik

Testé MondoMouse ( https://www.atomicbird.com/about/mac-apps ) sur MacOS Mojave. Semble bien fonctionner pour moi! 

Pour installer le prefpane, il y aura une notification "permettre l'accès pour les périphériques d'assistance" qui ne réside plus dans System Preferences> Accessibility. Vous devrez le définir dans Sécurité et confidentialité> Accessibilité> Confidentialité

Il y aura plusieurs avertissements concernant l'autorisation de MondoMouse dans chaque application ouverte, mais une fois défini, cela fonctionne correctement! Quel soulagement :) 

0
MaltaCode