是否可以在Mac OS X Lion中禁用命令选项卡应用程序切换器?


Answers:


6

您可以使用KeyRemap4MacBook将command-tab映射到另一个组合键:

<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | ModifierFlag::NONE, KeyCode::F19</autogen>

这将禁用command-tab和shift-command-tab:

<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | ModifierFlag::NONE, KeyCode::VK_NONE</autogen>
<autogen>__KeyToKey__ KeyCode::TAB, VK_COMMAND | VK_SHIFT | ModifierFlag::NONE, KeyCode::VK_NONE</autogen>

谢谢,这是一个很好的线索。很高兴知道通过DefaultKeyBinding.dict重新映射是死胡同。我将试用KeyRemap4MacBook
肖恩·麦克西

1
很好,谢谢。如果其他人不清楚,则需要private.xml在自己的<item>标签下将这些定义添加到<root>。然后,重新加载private.xml并切换新选项。
jrhorn424

确保在<item>条目中添加名称和标识符 <name>Disable Command Tab</name> <identifier>private.disable_command_tab</identifier>
Willem D'Haeseleer 2015年

1

您可以将其作为装配级别。对于ML 10.8.3,此Cmd+ Tab注册发生在地址0x10000b258的子例程中。在伪代码中,它看起来像:

rax = CPSRegisterForKeyOnConnection(*(int32_t *)rbx, 0x1002cd078, 0x1, 0x1);
if (rax != 0x0) {
    fprintf(**__stderrp, "Error registering cmd-tab key, %d\\n");
}
rax = CPSRegisterForKeyOnConnection(*(int32_t *)0x1002ccda8, 0x1002cd078, 0x2, 0x1);
if (rax != 0x0) {
    fprintf(**__stderrp, "Error registering cmd-shift-tab key, %d\\n");
}

因此,如果您替换以下字节码:

488D35691C2C008B3BBA01000000B901000000E85CD71B0085C0741A488B0DD5FC2400488B39488D355B341C0089C230C0E892C51B00488D0563192C008B38488D352A1C2C00BA02000000B901000000E81FD71B0085C0741A488B4380000C0345C0043354

与:

90909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909090909

并辞职您的Dock.app,它将起作用。您还必须先取消保护Dock二进制文件的保护,因为Dock二进制文件已加密。


5
能否请您用某种来源备份您的答案?所有这些代码都可能使将来的读者感到困惑和不信任。希望你能理解。
罗伦佐·冯·马特宏峰

1
另外补充什么原代码执行和更换(拆卸将是罚款,据我而言)
vonbrand

3
这是一个很酷的答案。尽管其他两个评论中的关注可能是正确的,但令人遗憾的是所有评论都对此表示怀疑,但是没有人指出这很酷。您如何知道哪个子例程地址以及什么是090909?(没有操作?)
Gal 2015年

0

可接受的答案包括重新映射吗?

当我第一次插入Mac OS X Lion(10.7)时,它很难检测到键盘布局。但是,按照说明进行操作(即,按Left Shift键右边的键等)后,它可以正确识别布局。

在系统偏好设置中,Lion有一个很棒的键盘面板:

Lion的键盘面板的屏幕截图

接下来,转到修改器键…

在此处输入图片说明

宾果游戏,现在CapsLock充当控件。

或者,您可以尝试实现按键绑定:

编辑默认的键盘绑定文件〜/ Library / KeyBindings / DefaultKeyBinding.dict。创建目录和/或文件(如果尚不存在),并使其如下所示:

{
  /* Remap Home / End to be correct */
  "\UF729" = "moveToBeginningOfLine:"; /* Home */
  "\UF72B" = "moveToEndOfLine:"; /* End */
  "$\UF729" = "moveToBeginningOfLineAndModifySelection:"; /* Shift + Home */
  "$\UF72B" = "moveToEndOfLineAndModifySelection:"; /* Shift + End */
}

如果DefaultKeyBinding.dict中已经有条目,只需将上面的4个新映射添加到文件的主要部分。可能需要重新启动才能生效。

您将需要根据您的尝试调整上面的代码


1
虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
加拿大卢克

3
同意以上评论者-这个答案太过round回。感谢您尝试的回答,但请尝试更加直接。我觉得这篇文章可能会使将来发现此问题的其他人感到困惑。另外,将整个命令键重新映射到其他内容对于我来说也不是一个可接受的解决方案,因为我将命令键用于许多其他事情。我无法确定您在解决方案第二部分中显示的代码是否可以让我选择性地禁用CMD + TAB,但是如果可以的话请明确说明。
肖恩·麦克凯西

将命令键重新映射到Caps Lock可能是我能提供的最好的主意。您仍然会获得命令键,我很惊讶地听到您实际上在使用大写锁定功能。第二种选择是演示如果您有简单方法无法正常工作的原因,您将要做的工作量。除了这两个以外,我没有别的。我提供了路加所建议的基本部件。
埃弗里特

实际上,我已经将CapsLock重新映射为Escape(如果使用Vim,则必不可少!)。再次感谢您的努力,不过,我还是建议您编辑您的帖子。请仅链接到有关重新映射修饰符键的内容,以便将来的浏览器在知道该解决方案对他们不起作用时,不必费心阅读整个说明。
肖恩·麦克西
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.