如何在 Mac OS (`⌥+a` ) 中按 `alt+a`/`option+a` 键绑定时禁用生成特殊字符? [关闭]
Posted
技术标签:
【中文标题】如何在 Mac OS (`⌥+a` ) 中按 `alt+a`/`option+a` 键绑定时禁用生成特殊字符? [关闭]【英文标题】:How to disable generating special characters when pressing the `alt+a`/`option+a` keybinding in Mac OS (`⌥+a` )? [closed] 【发布时间】:2012-08-06 06:28:01 【问题描述】:我试图禁用我的 Mac 中的一种行为。
当我在任何文本编辑器中并使用alt
/option
+任何字母键入组合键时,输出将是特殊字符。
例如:alt+a
的组合将生成 å
。alt+x
的组合将生成 ≈
。
我想取消此行为。
我是一名程序员,当我使用我的代码编辑器时,我想将一些键绑定(键盘快捷键)映射到alt
键(例如⌥+a
)但是当我这样做时它不会执行,因为它会生成特殊的字符。
我猜这个特殊字符优先于我的代码编辑器快捷方式。
您知道如何禁用此默认行为吗?
谢谢
【问题讨论】:
我正在使用 IntelliJ,我想模拟 emacs 键盘快捷键,并将元映射到选项键。但是当我按下选项-b 时,我确实得到了预期的行为,因为它被解释为一个特殊字符。 如果我使用选项键作为修饰符,我可以在我的 IDE 中定义更多快捷方式,从而显着提高我的工作效率。 在 Mac 上进行如此简单的操作有多么困难,简直太荒谬了。在启动器中放置了错误的应用程序 - 祝你好运,使用 SQL 语句将其删除;想要禁用一些愚蠢的快捷方式 - 开始下载和测试在操作系统版本之间不一致的无数解决方案。天哪,我为什么要买这台糟糕的电脑? 这对我有用:superuser.com/a/942256/535138 对于终端有问题的人,请按照此说明进行操作 -> superuser.com/questions/496090/… 【参考方案1】:您可以使用在线工具from this webpage 创建一个自定义键盘映射,并将选项字母全部设置为空白。您可以在几乎任何键盘布局中单击几下创建自定义映射。证明可以在 MacOSX 10.7+ 上使用 IntelliJ Idea、php/WebStorm、NetBeans、Eclipse。
在表单中选择“为选项键设置空白”单选,提交表单,然后下载已禁用“选项”键功能的修补键盘布局。我正在共享标准美国英语键盘布局的工作文件:
MacOS <= 10.10 MacOS >= 10.11启用此自定义映射后,如果您在按下“选项”键的情况下键入字母,则不会将任何内容打印到文本输出中。但是,“选项键按下”由操作系统触发,并由您的 IDE 检测到。因此,您将获得与其他命令键完全相同的行为!
-
下载键映射文件
My Layout.keylayout
。
将其移至~/Library/Keyboard\ Layouts/
打开System Preferences
-> Language Input Methods
(或Keyboard
-> Input Sources
)
转到Input Sources
-> (hit +)
-> Select Others
您应该在列表中找到My Layout
并选择它。
第 4 步可能会因 MacOS 版本而略有不同。请耐心在设置中查找键盘布局列表。
【讨论】:
@Dan 是的,有一个垂直的语言列表——但这与“布局列表”有什么关系?那里没有“我的布局”——只有..语言.. Dropbox 链接现在似乎已损坏。 无法让它工作。我可以将我的新按键布局添加到列表中,但我无法删除默认的“美国”布局,因此它实际上不会使用我的新按键布局.... 这不再适用于 10.11。我在gist.github.com/haosdent/573ea124e5ea666fc576 中生成了一个布局文件,该文件适用于 10.11 对我不起作用。现在在 IntelliJ 中输入r
,而不是 option+r 输入 ®
:(【参考方案2】:
以下是 Sebastian Zaha 回答的详细步骤。 (在我开始工作之前,我最终摸索了一下)。
(或者here is a ready made file by me)
-
下载Ukelele
您可以直接从 .dmg 文件运行它
文件 -> 基于当前输入源新建(我选择了美国)
点击修饰符按钮
从列表中选择选项列中具有左下或右下的每个修饰符。 (也可能有类似 Either Down OR Up,但 AFAIK 你可以离开这些。)
像这样按减号按钮
转到键盘菜单 -> 设置键盘名称
以某种方式更改名称以使其更易于识别
转到文件 -> 另存为
保存到 ~/Library/Keyboard\Layouts/ 后缀为 .keylayout
从您的 Mac OS 帐户注销
重新登录
转到系统偏好设置 -> 键盘 -> 输入源
点击 + 按钮 -> 其他 -> 您的新布局应该可用
添加新布局
可能也保留原来的键盘布局并配置一些不错的切换方式
【讨论】:
这是唯一对我有用的解决方案,它允许我将组合键重新绑定到类似 Emacs 的命令。 @event_jr,你是如何为 emacs 行为重新绑定它们的?当您按住选项并单击 b 时,它会要求该组合的输出。我们如何告诉它输出是返回一个单词? 正如我在上面评论的那样,这也没有帮助我在优胜美地的 IDEA 中修复快捷方式。恐怕他们在较新的版本中更改了某些内容,现在无法解决此问题。我在 OS X Yosemite 10.10.3 上运行 IntelliJ IDEA 14.1.2 @Innokenty 奇怪。我在 OSX 10.10.3 和 IDEA 14.1.2 上,我的类似 emacs 的绑定工作。我从 Windows 机器上带来了 IDEA 配置,并且 .keylayout 文件是使用一些旧版本的 OSX 构建的。其中之一可能是原因吗? Here is my layout file. 在 OS X 10.10.5 中,我在“选项”列中没有看到任何“左下”或“右下”:只有“向下”。我删除了所有这些,现在在 IntelliJ 中可以使用 Emacs 样式的键绑定。我希望我能理解删除这些行的含义,但是如果我遇到麻烦很容易切换输入法,我会用它。谢谢。【参考方案3】:我在完全相同的 IDE 中遇到了完全相同的问题。
解决方法是从这里下载 Ukulele:
http://scripts.sil.org/cms/scripts/page.php?site_id=nrsi&id=ukelele
在应用程序中,您可以使用 File -> New from current source 创建新的按键布局。按 Option 将在 Option-b 的位置显示一个红色键 - 表示它是一个 死键。双击它将允许您将其从死键更改为输出键。当提示输入输出时,您可以输入相同的内容(按 Option-b)。
因此它将输出相同的字符但不会被视为死键,因此 Intellij 可以将其绑定为快捷方式。
要启用您的新布局,您必须将其保存到您的 ~/Library/Keyboard Layouts(如果您使用 Keyboard -> Set Keyboard Name 给它一个新名称会有所帮助),然后启用它从系统偏好设置 -> 语言和文本。
【讨论】:
这项工作量很大,只修复了一个应用程序中的一个键组合。我和至少其他一些人希望全面禁用 opt 作为 mac 上的特殊字符输入。 @javadba 在我做对之后并没有那么糟糕。请参阅下面的答案,了解应该可以快速点击的详细步骤。 I added an answer with detailed steps @SebastianZaha 在此答案中描述的内容。我最终摸索了一下才能完成它,所以希望它可以为某人(以及后来的我)节省一些麻烦。【参考方案4】:使用Ctrl-Alt-<MNEMONIC>
。恕我直言,比必须安装和配置单独的应用程序要容易得多。
【讨论】:
很高兴知道。但是,如果 Ctrl-Alt- 组合键也有功能,这并不完全令人满意。 因为 IDE 的 CTRL+ALT 可能已经被使用了,所以你必须重新配置你的 IDE,这和配置其他应用程序一样痛苦。 如果你问 JetBrains,你会得到这个答案【参考方案5】:我有办法!
将文件放在:~/Library/KeyBindings/DefaultKeyBinding.dict
为:
/* ~/Library/KeyBindings/DefaultKeyBinding.dict */
/* Additional Emacs bindings */
"~f" = "moveWordForward:";
"~b" = "moveWordBackward:";
"~<" = "moveToBeginningOfDocument:";
"~>" = "moveToEndOfDocument:";
"~v" = "pageUp:";
"~d" = "deleteWordForward:";
"~^h" = "deleteWordBackward:";
"~\010" = "deleteWordBackward:"; /* Option-backspace */
"~\177" = "deleteWordBackward:"; /* Option-delete */
/* Escape should really be complete: */
"\033" = "complete:"; /* Escape */
它将隐藏原始文本输入。但是您仍然可以通过在组合之前使用 Ctrl-Q 来获得它。 例如,Ctrl-Q Alt-f 给了我 ƒ。 实际上,我在启用选项键绑定的情况下编写此答案。 您还可以添加其他您喜欢的键!官方参考: https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/EventOverview/TextDefaultsBindings/TextDefaultsBindings.html
以下是您可以绑定到的内容的一个很好的列表: https://www.hcs.harvard.edu/~jrus/site/selectors.html
哦,顺便说一句,如果您将键绑定到未定义的操作,您的应用程序将发生内存泄漏,并且您的系统将在几秒钟内耗尽内存。在 el capitan 上进行了艰苦的测试。
【讨论】:
【参考方案6】:我在带有 VSCode 的新 Macbook 上遇到了同样的问题,在我的旧 Macbook 上运行良好。当我输入 alt-shift-f 格式时,我得到了 unicode。我意识到不同之处在于我的旧 Macbook 具有英式键盘设置,而不是默认的“ABC - 扩展”。添加英式键盘为我解决了这个问题。
【讨论】:
我试过了,但在 Intellij IDEA 中仍然有一个令人讨厌的 Option+N 字符。【参考方案7】:使用 Apple JRE,Option 键组合将用作快捷方式,而不是插入特殊字符。
下载链接: https://support.apple.com/kb/DL1572?locale=en_US
这是一个过时的 JRE(基于 Java 6),但截至 2015 年 10 月,它似乎仍然是我安装的 JetBrains RubyMine 最有效的方法。 (除此之外,键返回到插入特殊字符。)
【讨论】:
【参考方案8】:使用ABC作为输入法而不是ABC-Extended,那么option + [char] 将能够使用应用程序快捷方式而不是显示特殊字符。
【讨论】:
这个答案帮助了我,而不是 ABC-Locale 或 ABC-Extended,我使用了 ABC【参考方案9】:我找到了一个不错的解决方法。 我使用软件Karabiner来更改我的右回车键以控制按住时。
所以 iv 所做的是将选项键重新映射到 option+cmd+control,因为我不知道有任何命令使用所有三个修饰符。现在我可以在没有任何字符的情况下映射正确的快捷方式。但如果需要,您也可以映射到其他键
将此添加到您的 private.xml:(在根目录之间)
<item>
<name>Change option Key to cmd + control + option</name>
<identifier>private.optiontoelse</identifier>
<autogen>__KeyToKey__
KeyCode::OPTION_L,
KeyCode::OPTION_L, ModifierFlag::CONTROL_L | ModifierFlag::COMMAND_L</autogen>
<autogen>__KeyToKey__
KeyCode::OPTION_R,
KeyCode::OPTION_R, ModifierFlag::CONTROL_R | ModifierFlag::COMMAND_R</autogen>
</item>
然后重新加载 xml 并启用“更改密钥”选项卡顶部的选项
https://pqrs.org/osx/karabiner/
【讨论】:
对于使用json
而不是 xml
并且对于较新的 MacOS 版本是必需的 Karabiner-Elements,请使用此模板:gist.github.com/ijoseph/dd136b7bdf622bbe54f7339db052df5e以上是关于如何在 Mac OS (`⌥+a` ) 中按 `alt+a`/`option+a` 键绑定时禁用生成特殊字符? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章