(我不想听到我想要那个有多疯狂!:)
焦点跟随鼠标也称为点对焦点、指针焦点和(在某些实现中)马虎焦点。[添加其他术语,使其更易于搜索!] X-mouse
您可以通过在命令行发出以下命令来为 Terminal.app 执行此操作:
defaults write com.apple.Terminal FocusFollowsMouse -bool true
对于 X11 应用程序,您可以这样做:
defaults write com.apple.x11 wm_ffm -bool true
在 Snow Leopard 中,改用这个:
defaults write org.x.X11 wm_ffm -bool true
显然有一个名为 CodeTek Virtual Desktop 的程序可以在系统范围内模拟它,但它的成本是 $$(而且他们从来没有为 OSX Leopard 提供过版本)。
Steve Yegge 不久前写了一篇关于此的文章,他尝试并未能写出合适的扩展。从那以后,我试图找到适用于 OS X 的焦点跟随鼠标应用程序,但也失败了。
尽管这远不是一个完整的解决方案,但 OSX (10.11) 中内置的两个方便的操作是:
⌃⌥-click (control-option-click) - 在不提升窗口的情况下切换焦点
⌘-click (command-click) - 在窗口中单击而不切换焦点
不确定何时引入这些快捷方式,因为我无法在任何地方找到它们。
焦点跟随鼠标不是特别适合 OS X 的输入法,因为它的菜单栏被设计为位于屏幕顶部。当您将鼠标移出应用程序窗口以进入菜单时,如果它在途中穿过任何其他应用程序的窗口,则菜单会更改。
所以是的,在回复 dreeves 评论时,它对终端(或桌面上的任何其他单个应用程序)非常有效,因为它会影响的唯一其他窗口是终端窗口,所以当你切换窗口时菜单永远不会改变。它适用于 X11,因为 X11 应用程序的菜单栏通常嵌入在窗口中,因此您不必离开窗口即可访问它们。
当然,您可以通过在焦点更改和/或菜单切换之前引入人为延迟来解决菜单更改问题,但它永远不会像在其他桌面上那样工作。
我已经定期回到这个问题大约 10 年了,我终于找到了一个简单的解决方案:AutoRaise https://github.com/sbmpost/AutoRaise
默认情况下,它启用焦点跟随鼠标和自动提升。您可以使用配置选项延迟自动升起。
它还具有他们所谓的“扭曲”功能,当您使用 Command-Tab 键进入窗口时,该功能可将鼠标指针居中。在我尝试之前我从不知道我需要这个,但是一旦我尝试过,我就不能没有它!
所以我决定再次改进我在 MouseFocus.app 上所做的工作,但仍然存在一些缺陷。这些现在都修好了。我将整个内容重命名为“AutoRaise”以更好地反映此工具的作用:当您将窗口悬停时,它将被提升到前面(您选择的延迟)并获得焦点。该工具可以在这里下载。要使用它,请将其复制到您的 /Applications/ 文件夹,确保它是可执行的(chmod 700 AutoRaise)。然后在 Finder 中双击它。要快速打开/关闭它,您可以使用下面的小程序并将其粘贴到自动化服务工作流程中。然后通过 System Preferences|Keyboard|Shortcuts 将创建的服务绑定到键盘快捷键。
更新 (29-03-2017):AutoRaise 二进制文件已更新。如果在命令行上没有指定延迟,它现在也会在相同的主文件夹。这在使用下面的 applescript 时特别有用,因为“启动应用程序”不支持命令行参数。延迟应以单位指定50毫秒20 毫秒。例如,要指定 20 毫秒的延迟,在终端中运行一次此命令:'echo 1 > ~/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
更新(18-04-2019):来源https://github.com/sbmpost/AutoRaise
更新 (05-06-2020):默认延迟已设置为 2 并且轮询时间减少。这些设置可防止在快速移动鼠标(例如到达顶部菜单)时意外弹出窗口。还添加了变形鼠标功能并修复了内存泄漏。有关更多详细信息,请查看自述文件
菜单问题是传统焦点跟随鼠标不起作用的唯一原因。
这是另一种选择:在按下键盘上的键之前不要改变焦点。这将涵盖 95% 的焦点跟随鼠标用例,并且会让这个老脾气的 X 用户非常高兴。我不知道我会在 Chrome 中滚动浏览网页多少次,然后按 Command-T 打开一个新选项卡,然后在终端中找到打开的选项卡。如果我的大脑在使用 Mac 的 8 个月内没有意识到这一点,那么它永远不会。
Amethyst支持此功能。它可以很容易地安装brew install amethyst
。
这是我使用的配置文件。它会关闭除焦点跟随鼠标之外的所有功能。将其保存到~/.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
}
焦点跟随鼠标现在可以在 macOS 中使用,在我的例子中是 Mojave,使用chunkwm。有关“无自动提升”解决方案,请参阅此Stack Overflow 响应。离开会激活自动加注
chunkc set ffm_disable_autoraise 0
在~/.chunkwmrc
.
编辑2019-09-12:
chunkwm 已被yabai取代。安装:
brew tap koekeishiya/formulae
brew install yabai
mkdir -p ~/.config/yabai/
printf 'yabai -m config focus_follows_mouse autoraise' >> ~/.config/yabai/yabairc
brew services start yabai
Codetek 有一个产品可以做到这一点,但他们从未发布过 Leopard 或更高版本的版本。
MondoMouse 可以做焦点跟随鼠标,但不能自动提升。不过,即使是焦点跟随鼠标也坏了。例如,它不能很好地与 command-tab 配合使用(如果您使用 command-tab 到一个新应用程序并且不触摸鼠标,那么它不应该将焦点切换回鼠标指针碰巧所在的位置——我很确定我见过的 Linux 中的每个实现都正确,但 MondoMouse 没有)。
您可以仅为终端窗口启用焦点跟随鼠标(无自动提升)(只需在终端中执行以下命令):
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
)
我不知道任何其他支持它的应用程序。
我目前使用 MondoMouse,即使有它的怪癖,没有它我也无法使用我的 mac。他们有免费试用,我会推荐给大家。
chunkwm 也支持这个(默认情况下我相信): chunkwm
有趣的是,Leopard 默认启用了一种焦点跟随鼠标(无自动提升)。滚轮在不聚焦的窗口中工作。
不幸的是,CodeTek Virtual Desktop Pro 不再开发,几年前该公司似乎已经倒闭了。
历史参考: http: //www.codetek.com/ctvd/ (不适用于新的 OS X 版本!)
历史回顾:http ://www.osnews.com/story/6144
使用 CodeTek Virtual Desktop Pro,您可以获得 Focus-Follow-Mouse 并禁用 Auto-Raise,它还有一个用于虚拟桌面的 Pager——类似于 Fvwm 在 Linux 上的工作方式。它真的很完美——我买过的最好的软件。它与所有应用程序一致地工作,切换应用程序、将窗口移动到不同的工作区以及导航工作区比在最新的 OS X 版本 [10.6、10.7、10.8] 中实现的方式要容易得多
不幸的是,Mac OS X 10.5 VirtualDesktop Pro 停止工作,看起来苹果积极确保 CodeTek 不会继续工作。
令人遗憾的是,Apple 粉碎了 CodeTek 及其产品 - Virtual Desktop Pro 确实优于目前 OS X 工作区的实现方式。它基本上像 LINUX 上的 Fvwm 一样工作 - 超快速导航 - 没有不必要的点击或鼠标手势......
看到 Apple 规定了窗口管理器 (Finder) 的行为并且似乎不再允许第三方替换 Finder 让我感到难过。
还有点击时引发的相关问题。在 OSX 下,每次单击一个窗口时,它也会被提升,因此可能会隐藏其他窗口。当从两个窗口中复制/粘贴时,其中一个窗口覆盖了大部分屏幕,这是有问题的。我喜欢保留一个全局(在所有工作区中都处于活动状态)记事本,我可以从中复制/粘贴内容(可以是命令、文本、待办事项等任何内容)。这在 OSX 下是具有挑战性的。最好有一个选项来禁用点击时加注。
试试DwellClick 。虽然它不是出于预期目的,但自动点击行为具有类似于自动抬起或焦点跟随鼠标的副作用。
就个人而言,我只在光标移动停止后使用左键单击功能,但也有使用修饰符单击和窗口拖动辅助,非常方便。
浏览网页时也有点令人沮丧,因为您要么想要禁用应用程序,要么更加注意光标所在的位置(例如,不在您不打算激活的任何链接或按钮上)。
尝试使用这些选项后,我的 Command-Tab 开始出现异常。这是它如何再次关注应用程序的解决方案:
似乎以前的功能,即终端的窗口焦点随着鼠标移动而改变的能力,在 10.6 中被破坏,导致 Command-Tab 不能正确转移窗口焦点。要解决此问题,只需将以下命令粘贴到终端中:
默认写入 com.apple.Terminal FocusFollowsMouse -string NO
然后重启终端。
解决方案:因为我习惯于在 Windows 中自动加注,所以我在 Mac 上非常想念它。我为 Mac 找到的解决方案是 Zooom(是的,三个 o's)。它具有自动升起功能。您甚至可以设置毫秒在自动提升之前等待。没有它就活不下去。Autoraise 是首选项中的一个选项,您可以在屏幕截图中看到https://www.macupdate.com/app/mac/23203/zooom http://coderage-software.com/zooom/index.html
一些对双屏“专注于悬停”部分可能有用的建议。当另一个屏幕已经具有输入框焦点时,它不能解决某些问题,例如在输入框中输入内容。但它可能会对“专注于悬停”的各个方面来这里的人有所帮助。
如果没有这个修复,我总是必须在监视器中“聚焦点击”,然后才能根据上下文点击任何内容。
您可以通过以下方式获得“专注于悬停”的某些方面:
然后至少选择 Monitor1,现在您可以立即单击 Monitor2 中的某些内容,例如电子邮件或选项卡,而无需第一次“焦点单击”。
与往常一样,这可能不适用于每个人,具体取决于操作系统版本和其他可能。
在 MacOS Mojave 上测试 MondoMouse ( https://www.atomicbird.com/about/mac-apps )。似乎对我来说工作得很好!
要安装 prefpane,将会有一个通知“启用辅助设备访问”,它不再驻留在系统偏好设置 > 辅助功能中。您必须在安全和隐私 > 辅助功能 > 隐私中进行设置
在您打开的每个应用程序中都会有几个关于允许 MondoMouse 的警告,但一旦设置它就可以正常工作!终于解脱了 :)
如果有人感兴趣,这里有一个用于多显示器自动对焦的玩具级实现:https ://bitbucket.org/sivann/mac-screenfocus/src/master/
它主要工作,但不处理不同监视器中同一应用程序的多个窗口。如果您将鼠标移动到另一台显示器,则将焦点放在最后一个拥有它的应用程序上。
你真的不能很好地做到这一点,因为 Mac 界面在设计时根本没有考虑到焦点跟随鼠标(有或没有自动提升)。我怀疑这种情况很快就会改变,除非它改变,否则每个试图实现焦点跟随鼠标的人都会遇到同样的障碍并最终得到一个不令人满意的结果(对于那些想要这样的人来说)。
所以,是的,你为想要这个而疯狂——但出于技术原因。习惯于按照自己的方式使用 Mac,我敢肯定,当你找到新的高效工作方式时,你强迫它表现得像你过去使用的任何 X11 东西一样的愿望会有所减弱。