在Mac OS X上使用Focus-Follow-Mouse(加上自动加亮)

(我不想听到我是多么的疯狂!:)

焦点跟随 – 鼠标也被称为点对焦,指针焦点,并且(在一些实施方式中)马虎的焦点。 [添加其他条件,这将使这个更可search!] X鼠标

您可以通过在命令行中发出以下命令来为Terminal.app执行此操作:

defaults write com.apple.Terminal FocusFollowsMouse -bool true 

对于X11应用程序,您可以这样做:

 defaults write com.apple.x11 wm_ffm -bool true 

在雪豹,使用这个,而不是:

 defaults write org.x.X11 wm_ffm -bool true 

显然,有一个名为CodeTek虚拟桌面的程序可以模拟全系统,但是它的成本是$$(而且他们从来没有为OSX Leopard购买过一个版本)。

史蒂夫·叶格(Steve Yegge)早就写了一篇关于这个问题的文章,在那里他试图写出一个合适的扩展。 自从我试图find针对OS X的焦点追踪鼠标应用程序,并且也失败了。

Focus-follow-mouse对于OS X来说并不是一个特别合适的input法,因为它的菜单栏被devise为位于屏幕的顶部。 当您将鼠标移出应用程序窗口以进入菜单时,如果它在途中跨越了任何其他应用程序的窗口,则菜单会更改。

所以是的,在回复评论的时候,对于terminal(或者桌面上的其他任何应用程序)来说它是完美的,因为它唯一影响到的其他窗口是terminal窗口,所以当你切换窗口时,菜单永远不会改变。 而且对X11来说工作正常,因为X11应用程序通常在窗口中embedded了菜单栏,所以您不必离开窗口就可以访问它们。

当然,你可以通过在焦点改变和/或菜单切换之前引入人工延迟来解决菜单变化问题,但是它永远不会像在其他桌面上那样工作。

虽然这还不是一个完整的解决scheme,但OSX(10.11)内置的两个方便操作是:

^ – 点击 (控制 – 选项 – 点击) – 切换焦点,而不会提高窗口

⌘-点击 (命令点击) – 点击窗口中不切换焦点

不知道什么时候推出这些快捷方式,因为我无法在任何地方find它们。

紫水晶支持这个function。 它可以很容易安装与brew cask install amethyst

这是我使用的configuration文件。 除了focus-follow-mouse之外,它还closures了所有的function。 保存到~/.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 } 

我目前使用MondoMouse,甚至有它的怪癖,我无法使用我的Mac没有它。 他们有免费试用,我会推荐给大家。

MondoMouse

Codetek有一个这样做的产品,但是他们从来没有发布Leopard或更高版本。

MondoMouse可以做点焦点跟随鼠标,但不能自动加注。 即使是焦点 – 跟随 – 鼠标也被打破了。 例如,它不能很好地与命令选项卡(如果你命令选项卡到一个新的应用程序,不要触摸鼠标,那么它不应该焦点切换回鼠标指针所发生的地方 – 我很确定在Linux中我看到每一个实现得到这个权利,但MondoMouse不)。

您可以为terminal窗口启用focus-follow-mouse(无自动调整)(只需在terminal执行以下操作):

 defaults write com.apple.Terminal FocusFollowsMouse -string YES 

对于X11窗户也是如此:

 defaults write org.x.X11 wm_ffm -bool true 

(对于10.5.5以前的mac版本,这是:

 defaults write com.apple.x11 wm_ffm true 

我不知道任何其他支持它的应用程序。

菜单问题是传统焦点 – 跟随 – 鼠标不起作用的唯一原因。

这里有一个替代方法:不要改变焦点,直到在键盘上按下一个键。 这将覆盖focus-follow-mouse的95%的用例,并且会让这个老旧的X用户真的很开心。 我不知道在Chrome浏览器中有多less次浏览网页,然后点击Command-T打开一个新标签,然后findterminal中的标签页。 如果我的大脑在使用Mac的8个月内没有采取这个措施​​,它永远不会。

有趣的是,Leopard有一种焦点 – 跟随鼠标(sans autoraise)的默认启用的味道。 滚轮在不专心的窗口中工作。

不幸的是,CodeTek虚拟桌面专业版不再开发,公司似乎几年前就已经倒闭了。

历史参考: http : //www.codetek.com/ctvd/ (不适用于新的OS X版本!)

历史回顾: http : //www.osnews.com/story/6144

使用CodeTek虚拟桌面专业版,您可以获得Focus-Follow-Mouse和禁用自动提升function,并且它还具有用于虚拟桌面的Pager,类似于Fvwm在Linux上的工作方式。 它非常完美 – 我买过的最好的软件。 它与所有应用程序一致,切换应用程序,将窗口移动到不同的工作区以及浏览工作区比在最新的OS X版本中执行工作要容易得多[10.6,10.7,10.8]

不幸的是,随着Mac OS X 10.5 VirtualDesktop Pro停止工作,看起来苹果主动确保CodeTek不会继续工作。

令人遗憾的是,苹果压制了CodeTek和它的产品 – Virtual Desktop Pro的确超越了目前OS X工作空间的实现。 它基本上像LINUX上的Fvwm – 超级快速导航 – 没有不必要的点击或鼠标手势…

我感到难过的是,苹果公司决定了窗口pipe理器(Finder)的行为,而且似乎也不允许Finder的第三方替代品。

所以我决定再次改进我在MouseFocus.app上做的工作,但仍然有一些缺陷。 那些现在是固定的。 为了更好地反映这个工具的作用,我把整个事件改名为“AutoRaise”:当你将一个窗口hover时,它将被提升到前面(延迟你的select)并获得焦点。 该工具可以在这里下载。 要使用它,将其复制到/ Applications /文件夹,确保它是可执行的(chmod 700 AutoRaise)。 然后从Finder中双击它。 要快速打开/closures它,您可以使用下面的applescript并将其粘贴到一个automator 服务工作stream程中。 然后通过系统首选项|键盘|快捷方式将创build的服务绑定到键盘快捷键。

更新(29-03-2017):AutoRaise二进制文件已更新。 如果在命令行中没有指定延迟,现在也会在同一个文件夹中查找AutoRaise.delay文件。 这在使用下面的applescript时特别有用,因为“launch application”不支持命令行参数。 延迟应以50ms为单位指定。 例如,要指定150ms的延迟,在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 

给DwellClick一试。 虽然这不是为了达到预期的目的,但自动点击行为有类似于自动提升或焦点追踪鼠标的副作用。

就我个人而言,在我的光标移动停止之后,我只使用左键单击的function,而且还可以单击修改器和窗口拖动辅助function,非常方便。

这也是一个有点令人沮丧的Web浏览,因为你要么要禁用应用程序,或更多的意识到光标停在哪里(例如不在任何链接或button,你不打算激活)。

还有点击点击的相关问题。 在OSX下每次点击一个窗口,它也会被提升,因此可能隐藏其他窗口。 从两个窗口中复制/粘贴,其中一个覆盖大部分屏幕时,这是有问题的。 我喜欢保留一个全球(活跃在所有的工作区)记事本从我复制/粘贴的东西(可以是任何东西从命令,文本,待办物品等)。 在OSX下这是一个挑战。 有一个选项来禁用点击式按键会很好。

尝试这些选项,我的命令标签开始行为怪异。 这是解决方法,它再次给予应用程序的焦点:

看起来,以前的function,即terminal窗口焦点随鼠标移动而改变的能力,在10.6中被打破,并导致命令标签不能正确传送窗口焦点。 要解决该问题,只需将以下命令粘贴到terminal中:

默认写入com.apple.Terminal FocusFollowsMo​​use -string NO

然后重启terminal。

解决scheme:因为我习惯在Windows中进行自动调整,所以在Mac上我错过了它。 我发现Mac的解决scheme是Zooom(是的,三个)。 它具有自动调整function。 您甚至可以设置毫秒以在自动调整之前等待。 不能没有它。 Autoraise是首选项的一个选项,你可以在截图中看到https://www.macupdate.com/app/mac/23203/zooom http://coderage-software.com/zooom/index.html

chunkwm也支持这个(默认我相信): chunkwm

你不能很好地做到这一点,因为Mac界面根本不是devise了focus-follow-mouse(有或没有自动提升)。 我怀疑这种情况很快就会改变,除非这样做,否则每个试图实现“重点跟随鼠标”的人都会遇到同样的障碍,结果令人不满(对于那些想要这样的东西的人)。

所以,是的,你想为此疯狂 – 但出于技术原因。 习惯于按照自己的条件使用Mac,并且我确定您希望强制它的行为就像您曾经使用过的X11的东西一样会在您find新的高效工作方式时消退。