(我不想听别人说我有多疯狂想要那个!:)
焦点跟随鼠标也被称为点对焦点、指针焦点和(在某些实现中)草率焦点。[添加其他术语,使搜索更容易!]]鼠标光标
(我不想听别人说我有多疯狂想要那个!:)
焦点跟随鼠标也被称为点对焦点、指针焦点和(在某些实现中)草率焦点。[添加其他术语,使搜索更容易!]]鼠标光标
你可以在终端机上做。通过在命令行中发出以下命令来创建应用程序:
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虚拟桌面的程序可以在系统范围内模拟它,但它需要花费$$(他们从未为OSX Leopard推出过版本)。
Codetek有一款产品可以做到这一点,但他们从未为Leopard或更高版本发布过版本。
MondoMouse可以做焦点跟踪鼠标,但不能自动提升。 即使是焦点跟随鼠标也坏了。 例如,它不能很好地使用命令-标签(如果你命令-标签到一个新应用程序,并且不碰鼠标,那么它不应该将焦点切换回鼠标指针所处的位置——我非常确定我所见过的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
)
我不知道还有其他应用程序支持它。
你不可能真的做得很好,因为Mac界面的设计根本没有考虑到焦点跟随鼠标(有或没有自动上升)。我怀疑这种情况在短时间内不会改变,除非它改变,否则每个试图实现焦点跟随鼠标的人都会遇到同样的障碍,并以不满意的结果结束(对于那些想要这样做的人来说)。
所以,是的,你想要这个是疯狂的——但出于技术原因。习惯按自己的方式使用Mac,我相信当你找到新的高效的工作方式时,你强迫它像你过去使用的任何X11东西那样工作的愿望会逐渐消退。
聚焦鼠标并不是一个特别适合OS X的输入法,因为它的菜单栏被设计在屏幕的顶部。当您将鼠标移出应用程序窗口以进入菜单时,如果它在此过程中穿过任何其他应用程序的窗口,菜单将发生变化。
所以是的,在回复dreeves的评论时,它对终端(或桌面上任何其他单一应用程序)工作得非常好,因为它只会影响终端窗口,所以当你切换窗口时,菜单永远不会改变。它适用于X11,因为X11应用程序通常将它们的菜单栏嵌入在窗口中,所以你不必离开窗口就可以访问它们。
当然,您可以通过在焦点更改和/或菜单切换之前引入人为延迟来解决菜单更改问题,但它永远不会像在其他桌面上那样工作。
不幸的是,CodeTek虚拟桌面专业不再开发,该公司似乎已经退出业务几年前。
历史参考:http://www.codetek.com/ctvd/(不适用于新的OS X版本!)
历史回顾:http://www.osnews.com/story/6144
使用CodeTek Virtual Desktop Pro,你可以获得焦点-跟随-鼠标,并禁用自动上升,它也有一个虚拟桌面的寻呼机——类似于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——超快的导航——没有不必要的点击或鼠标手势……
看到苹果规定窗口管理器(Finder)的行为,似乎不再允许第三方替换Finder,我很难过。
尝试了这些选项后,我的Command-Tab开始表现得很奇怪。以下是它如何再次关注应用程序的解决方案:
之前的一个特性,即终端的窗口焦点随着鼠标移动而改变的能力,在10.6中被打破,导致Command-Tab不能正确地转移窗口焦点。要解决这个问题,只需在终端中粘贴以下命令:
默认写com.apple.Terminal FocusFollowsMouse -string否
然后重新启动终端。
还有一个相关的问题是点击后提高。在OSX下,每次单击一个窗口时,它也会被引发,因此可能会隐藏其他窗口。当从两个窗口复制/粘贴时,这是有问题的,其中一个窗口覆盖了大部分屏幕。我喜欢保留一个全局记事本(在所有工作区中都是活动的),从中复制/粘贴东西(可以是命令、文本、待办事项等任何东西)。在OSX下,这是一个挑战。如果有一个选项可以禁用“点击时提升”就好了。
菜单问题是传统的焦点跟随鼠标无法工作的唯一原因。
这里有一个替代方案:在键盘上按下一个键之前不要改变焦点。这将覆盖95%的焦点跟踪鼠标用例,并将使这个老的脾气暴躁的X用户非常高兴。我不知道有多少次我在Chrome中浏览网页,按下Command-T键打开一个新标签,却发现这个标签在终端中打开了。如果我的大脑在使用Mac的8个月里还没有注意到这一点,那它永远也不会注意到。
给DwellClick一个尝试。虽然这不是它的预期目的,但自动单击行为有一个类似于自动提高或焦点跟随鼠标的副作用。
就我个人而言,我只在光标移动停止后使用左键点击的功能,但也有修改器点击和窗口拖动辅助功能,这非常方便。
在浏览网页时,这也有点令人沮丧,因为你要么想要禁用应用程序,要么更注意光标停留在哪里(例如,不要停留在任何你不想激活的链接或按钮上)。
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
}
So I decided to improve again on the work I did on the MouseFocus.app which still had some flaws. Those are fixed now. I renamed the whole thing to "AutoRaise" to better reflect what this tool does: When you hover a window it will be raised to the front (with a delay of your choosing) and gets the focus. The tool can be downloaded here. To use it, copy it to your /Applications/ folder making sure it is executable (chmod 700 AutoRaise). Then double click it from within Finder. To quickly toggle it on/off you can use the applescript below and paste it into an automator service workflow. Then bind the created service to a keyboard shortcut via System Preferences|Keyboard|Shortcuts.
更新(29-03-2017):AutoRaise二进制文件已经更新。如果命令行上没有指定delay,它现在也会在同一个主文件夹中查找autorrise .delay文件。这在使用下面的applescript时特别有用,因为“启动应用程序”不支持命令行参数。延迟应该以50ms 20ms为单位指定。例如,在一个终端上执行'echo 1 > ~/AutoRaise.delay'命令,指定延时为20ms。
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,轮询时间被缩短。这些设置可以防止快速移动鼠标(例如到达顶部菜单)时意外地弹出窗口。同时一个扭曲鼠标功能已经添加和内存泄漏已被修复。欲了解更多细节,请参阅README
虽然这还远远不是一个完整的解决方案,但OSX(10.11)中内置了两个方便的操作:
⌃-click (control-option-click)—切换焦点而不抬高窗口
⌘-click (command-click) -在窗口中单击而不切换焦点
不确定这些快捷方式是什么时候引入的,因为我在任何地方都找不到关于它们的文章。
解决方案:因为我太习惯在Windows上自动升起,所以我非常怀念Mac上的自动升起。 我为Mac找到的解决方案是zoom(是的,三个o)。它有自动提升功能。您甚至可以设置自动触发前等待的毫秒数。没有它我活不下去。Autoraise是prefs中的一个选项,你可以在截图https://www.macupdate.com/app/mac/23203/zooom中看到 http://coderage-software.com/zooom/index.html
在MacOS Mojave上测试MondoMouse (https://www.atomicbird.com/about/mac-apps)。对我来说似乎很有效!
要安装预装面板,将会有一个通知“为辅助设备启用访问”,不再驻留在系统首选项>可访问性中。你必须在安全与隐私>可访问>隐私中设置它
在你打开的每个应用程序中都会有几个关于允许MondoMouse的警告,但一旦设置它就可以正常工作了!真是松了一口气。
鼠标聚焦现在可以在macOS中实现,在我的Mojave中,使用chunkwm。 请参阅此堆栈溢出响应以获得“无自动触发”解决方案。自动驾驶是通过离开激活的
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
大约10年来,我一直在周期性地回到这个问题上,最后我找到了一个简单的解决方案:AutoRaise https://github.com/sbmpost/AutoRaise
默认情况下,它启用焦点跟随鼠标和自动升起。您可以使用配置选项来延迟自动触发。
它也有所谓的“扭曲”功能,当你Command-Tab到窗口时,将鼠标指针居中。在我尝试之前,我从来不知道我需要它,但一旦我尝试了,我就不能没有它!
如果有人感兴趣的话,这里有一个多监视器自动对焦的玩具级实现:https://bitbucket.org/sivann/mac-screenfocus/src/master/
它大部分工作,但不能处理同一应用程序在不同显示器的多个窗口。如果你将鼠标移到另一个显示器上,会将焦点移到上一个应用程序上。
一些潜在有用的建议,部分“焦点悬停”与双屏幕。它不能修复一些问题,比如当另一个屏幕已经有输入框焦点时,在输入框中输入。但它可能会帮助那些来这里“专注于悬停”的人。
没有这个修复,我总是不得不“焦点点击”在监视器之前,我可以上下文点击任何东西。
你可以通过这个获得“focus on hover”的一些方面:
进入“系统首选项” 选择“任务控制”选项 在那里你应该看到“显示有单独的空间”,去掉它
然后至少选择了Monitor1,现在你可以立即点击Monitor2中的某些内容,比如电子邮件或Tab,而不需要第一次“焦点点击”。
通常情况下,这可能并不适用于每个人,这取决于操作系统版本和其他事情。