有什么方法可以更改使firefox以安全模式启动的firefox shift热键吗?我已经使用 Selenium 和 PHPUnit 设置了一些单元测试,但是如果我在测试运行时在机器上工作,那么我经常发现我在键入时按了 shift(在我选择代码块时按住 shift 是另一个大罪犯)。即使您点击弹出的安全模式提示,这也会导致测试失败(并超时)。
有没有办法禁用此热键,或者将键更改为我不经常使用的东西?
有什么方法可以更改使firefox以安全模式启动的firefox shift热键吗?我已经使用 Selenium 和 PHPUnit 设置了一些单元测试,但是如果我在测试运行时在机器上工作,那么我经常发现我在键入时按了 shift(在我选择代码块时按住 shift 是另一个大罪犯)。即使您点击弹出的安全模式提示,这也会导致测试失败(并超时)。
有没有办法禁用此热键,或者将键更改为我不经常使用的东西?
我也遇到过这个问题,没有找到解决办法。似乎它仍然是一个未解决的问题:Mozilla 论坛线程、Bug 653410、Bug 644175等等。作为一种解决方法,您可以安装 firefox 3.6,因为此功能是从 firefox 4 开始实施的,但可能不适合您。
Mozilla 最终添加了一个环境变量来控制这种行为。不幸的是,以一种适用于整个图形系统的方式配置这个环境变量,而不仅仅是一个 bash 会话,有点困难。这过去是通过 /etc/launchd.conf 完成的,但 macOS 在 v10.10 中放弃了对此的支持。幸运的是,systemctl 提供了一个 .plist 文件系统,它可以定义运行程序并在启动时定义系统范围的环境变量,所以我发布了这个工作 .plist 文件,以及安装和删除它的说明:
https://github.com/mcandre/dotfiles/blob/master/setenv.MOZ_DISABLE_SAFE_MODE_KEY.plist
这对我来说太棒了,因为我喜欢通过 QuickSilver 使用 Control+Alt+G 从 GUI 中的任何位置启动我的 Web 浏览器,这当然包括 Firefox 倾向于将其解释为信号安全模式的 Alt 修饰符。
在修复错误 653410之前,我能想到的最佳解决方法是检测何时启动安全模式并以适合您特定目的的最佳方式处理它。这可能意味着终止 Firefox 进程并重新启动,或者可能意味着警告用户,或两者兼而有之。
当 Firefox 以安全模式启动时,它会将“LastVersion=Safe Mode”写入其配置文件目录中的 compatibility.ini 文件。下面给出了一个示例 C# 函数来监视这一点。
FileSystemWatcher safeModeWatcher;
private void watchSafeMode()
{
string profiles = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "Mozilla", "Firefox", "Profiles");
string defaultProfile = Directory.GetDirectories(profiles, "*default*")[0];
safeModeWatcher = new FileSystemWatcher(defaultProfile, "compatibility.ini");
safeModeWatcher.NotifyFilter = NotifyFilters.LastWrite;
safeModeWatcher.Changed += delegate(object s, FileSystemEventArgs e)
{
if (File.ReadAllText(e.FullPath).Contains("LastVersion=Safe Mode"))
{
// safe mode!
System.Diagnostics.Trace.WriteLine("safe mode detected!");
// TODO kill Firefox and launch again, or whatever makes sense for you
}
};
safeModeWatcher.EnableRaisingEvents = true;
// ...
// TODO Dispose safeModeWatcher when done
}