38

有没有办法使用alt/option键作为元键但仍然可以使用它来制作一些需要它的字符?

例如,在我的本地键盘布局中:

  • @alt+2
  • \alt+ shift+7
  • |alt+7
  • 等等

所以,如果我设置alt为元键,我就不能再制作这些字符了。另一方面,使用“按esc,释放esc,按一个键”来制作元键序列让我的手受伤。

任何使用国际键盘的 Emacs 用户已经解决了这个问题,请提供您可能有的任何提示!:)

编辑:

看来我可以设置alt为元键,然后在 inputrc 中添加这些类型的设置:"\e2": "@"这在 bash shell 中有效,但它仍然不适用于 Emacs,所以不好。

4

16 回答 16

25

我在 Mac OS X 中使用瑞典语键盘,并为 Emacs.app 使用以下设置:

首先,我安装了KeyRemap4MacBook,并将其设置为将左 Option 键更改为 Command。

然后我的 .emacs 中有以下内容:

(setq mac-option-modifier 'none)
(setq mac-command-modifier 'meta)

这使得 Emacs 将 command 视为 Meta 而忽略 Option。由于左 Alt/Option 键被重新映射到命令,这使得它可以在 lite meta 中工作,而右 Alt/Option 键仍然可以用于输入特殊字符,如 @ [] 和 {}。

Cmd+C 和 Cmd+V 等应用程序特定的 Mac 快捷方式不再有效,但用于 Spotlight 的 Cmd+space 和用于应用程序切换的 Cmd+Tab 等全局快捷方式可以。

更新: 如果你使用iTerm2作为终端,它只支持将左 Alt/Option 键映射到 meta,这意味着你仍然可以使用右 AltGr/Option 键来输入特殊字符。这也意味着您可以在 iTerm2 终端中运行的 Emacs 中正常使用 meta。

于 2010-08-03T17:55:46.127 回答
15

我的 Mac 上有瑞典语键盘,我正在使用 Aquamacs。添加这两行(归属于 Joakim Hårsman)

(setq mac-option-modifier 'none)
(setq mac-command-modifier 'meta)

in .emacs(并重新启动 Aquamacs)对我有用。

于 2011-02-20T12:00:04.660 回答
12

使用iTerm2,您可以将左选项键映射到 ESC/meta,并将右选项键的映射保留为“正常”。这样您就可以使用正确的选项键来键入重音等。

iTerm2 首选项

于 2011-09-09T19:51:22.850 回答
10

考虑为 Mac OS X 使用功能齐全的 Emacs。我使用的是 Carbon Emacs,但我相信其他人(比如 Aqua Emacs 或 X11 Emacs)会做到这一点。

如果您坚持在终端中使用 Emacs,您可以使用C-x 8前缀作为组合键。尝试C-x 8 C-h获取可能性列表。

请参阅http://www.emacswiki.org/emacs/EmacsForMacOS

于 2009-02-13T09:35:30.490 回答
5

我使用的两种解决方法:

  • 我使用在 X11.app 下运行的 xterm。X11.app 使用命令键作为元。
  • 在 Terminal.app 中运行 emacs 时,我只使用 rfc1345 输入法,它允许我输入各种疯狂的非 ascii 字符,而无需选项键。
于 2009-02-01T13:34:56.113 回答
5

查看 cmd-key-happy。这个小应用程序为我创造了奇迹。它允许您将命令用作元,您可以配置例外。

作者信息如下:

该程序允许您在任何应用程序中交换命令和 alt(或选项)键,尤其是 Terminal.app。

http://github.com/aim-stuff/cmd-key-happy

于 2010-04-08T11:28:34.427 回答
5

这是一篇旧帖子,但添加了可供机器人查找的替代品。我从 Aquamacs 借了几个文件(emulate -mac-keyboard-mode.el, aquamacs-tools.el)来解决这个问题(我有一个意大利专业键盘):

(defun aq-binding (any)
 nil)
(load  "~/.emacs.d/emulate-mac-keyboard-mode.el") ;;  'noerror

这提供了:

  • 少数次要模式(emulate-mac-italian-keyboard-mode、emulate-mac-french-keyboard-mode、mulate-mac-swiss-german-keyboard-mode等)
  • 使用 Aquamacs 提供的所有选项的菜单

用 Emacs-23.3-universal-10.6.6 测试,似乎对我来说没问题。

感谢 Aquamacs,如果还没有完成,那么将它推向上游怎么样。

于 2011-09-02T13:30:59.500 回答
4

带有选项死键的特殊键盘布局

我对这个问题的解决方案是我编写的特殊键盘布局,US custom。它提供了一个选项死键,无需使用物理⌥ Option修饰键即可生成选项组合。例如,字符 ⟨ç⟩ 在正常的美式键盘布局中产生如下:

  • 点击⌥ Option+ c

美国自定义键盘布局添加了第二种生成 ⟨ç⟩ 的方式:

  • 点击⇧ Shift+ §(选项死键),然后释放它,然后点击c.

当已选中Meta键时,即使在使用选项时也可以在终端中使用。

请注意,美国自定义键盘布局还有两件事:

  1. 它将plain§转换为⎄ Compose键(因此您也可以通过点击§, then ,, then来产生 ⟨ç⟩ c)。
  2. 它用(显着扩展的)美国扩展键盘布局替换了 CapsLock 映射。

将选项死键重新映射到右选项修饰键

如果你有一个物理 ANSI 键盘,那么你就没有这个§键。在这种情况下,我建议将§键分配给其他键,例如右⌥ Option修饰键。安装KeyRemap4MacBook,打开~/Library/Application\ Support/KeyRemap4MacBook/private.xml并粘贴以下代码:

<?xml version="1.0"?>
<root>
<item>
  <name>Send ISO Section for right Option</name>
  <identifier>private.send_iso_section_for_right_option</identifier>
  <autogen>--KeyToKey-- KeyCode::OPTION_R, KeyCode::UK_SECTION</autogen>
</item>
<item>
  <name>Send Shift+ISO Section for Shift+right Option (keep normal right Option without Shift)</name>
  <identifier>private.send_shift_iso_section_for_shift_right_option</identifier>
  <autogen>--KeyToKey-- KeyCode::OPTION_R, ModifierFlag::SHIFT_R, KeyCode::UK_SECTION, ModifierFlag::SHIFT_L</autogen>
  <autogen>--KeyToKey-- KeyCode::OPTION_R, ModifierFlag::SHIFT_L, KeyCode::UK_SECTION, ModifierFlag::SHIFT_L</autogen>
</item>
</root>

然后,打开 KeyRemap4MacBook 首选项窗格,点击ReloadXML,然后选择“Send ISO Section for right option”。现在,您的⌥ Right Option键被重新映射为§,因此当美国自定义键盘布局处于活动状态时,点击⇧ Shift+⌥ Right Option将为您提供选项死键状态(在⌥ Right Option没有其他修饰符的情况下点击将为您提供与选项修饰符等效的死键状态。

如果要在未按下⌥ Right Option时保留⇧ Shift(而不是⎄ Compose键),则在 KeyRemap4MacBook 首选项窗格中选择“Send Shift+ISO Section for Shift+right Option (keep normal right Option without Shift)”(而不是“Send ISO Section for Shift+right Option (keep normal right Option without Shift)”(而不是“Send ISO Section for正确的选择”)。像这样,只有⇧ Shift+⌥ Right Option会产生选项死键,而 plain⌥ Right Option将继续作为选项修饰符工作。只要您不先击中,您甚至可以继续使用⌥ Right Option+⇧ Shift修饰符组合(例如⌥ Right Option+ ⇧ Shift+ →⟨Ç⟩) 。c⇧ Shift

于 2011-02-14T16:28:20.217 回答
4

值得思考问题背后的假设。我的意思是说,真正的问题是使当前似乎需要选项键的字符。无需同时实现“元键 + alt 功能”即可解决此问题。

让我解释一下:我有一个类似的问题。在我的英国键盘上,shift-3 映射到英镑符号 £,这意味着我通常需要点击 option-3 才能获得非常有用的 # - 终端中的一个真正问题,我将选项用作元。但是,我发现上述大多数解决方案都有些过头了。我不想更改为另一个版本的 Emacs(例如 Aquamacs),切换到不同的终端应用程序(例如 iTerm 或 xterm),或者为了安装一个键重新映射应用程序(例如 KeyRemap4MacBook)一个符号!也许这适合某些人,但我认为值得指出的是,如果问题只是一个字符,则可以使用九个字符的文本文件来解决。

关于我个人版本的这个问题,我发现最简单的解决方案是.inputrc在我的主目录中创建一个名为的文件,由以下单行组成:

"§": "#"

这将当前 Mac 键盘上 1 左侧的(对我来说,完全没用的)§ 重新映射到(几乎不可缺少的)#。这比默认设置更适合我,因为我现在可以通过一个按键获得#。如果我需要重新映射任何其他字符,只需为每个字符添加额外的一行即可。

无论如何,这涉及如何在 shell 中获取丢失的字符,但是如果您也希望在 Emacs 中使用它(您没有说但可能是这种情况),那么您可以将类似的内容添加到您的.emacs文件中(其中 35 是我碰巧想要的字符的ASCII,即#):

(global-set-key (kbd "§") 'insert-hash)
(defun insert-hash ()
  (interactive)
  (insert 35))

如果我经常想通过选项键访问几十个字符,那么它可能不是一个很好的解决方案,但没有。

我希望这对某人有所帮助。作为一个周末黑客,我通常不敢在 Stack Overflow 上发布问题的答案......

于 2012-06-01T21:25:29.807 回答
3

上面的答案提到了输入非ASCII输入的方法,但这并不是真正的问题。Cx 8方法让你输入一堆非ascii,但问题是你需要mac上的option键才能输入(ascii)字符`|' (竖条)!

那么你如何输入像 M-| 这样的东西?(区域到 shell 命令)在 Terminal.app 下的 ssh 中运行 emacs 时?没办法,只能使用转义键,因为 | 是 option-7 和 Terminal.app 出于某种愚蠢的原因不会让你使用 Cmc 作为元 :-(

(如果有人知道实际上确实让 Terminal.app 使用 Cmd 作为元数据的 hack(也许是 SIMBL?),我将不胜感激......)

于 2009-05-28T10:48:28.543 回答
3

以下解决方案有效,不引人注目,您不需要 iTerm2Aquamacs或其他任何东西。

第1步

在 Terminal.app 设置中保持“使用选项作为元键”打开

第2步

编辑~/.inputrc如果它不存在则创建它),添加以下行:

"\e3": '#'

这将重新映射⌥ alt+3以便您在终端中按预期#生成一个字符,而不是它烦人地随着提示返回。(arg: 3)

第 3 步

编辑~/.emacs,添加以下行:

(global-set-key (kbd "M-3") "#")

这将重新映射⌥ alt+3以便您在 emacs 中按预期#生成一个字符,而不是烦人地什么都不做。


警告 1,这只是1 个重新映射。所以⌥ alt+ ?其他键)不会被重新映射,例如您可能希望重新映射⌥ alt+n以生成波浪号键~。只需按照上面列出的相同步骤,显然3可以使用您需要的任何键进行切换。

警告 2,当您ssh进入另一个盒子时,您将面临同样的困难,但您所要做的就是编辑该盒子上的~/.inputrc~/.emacs文件。

警告 3,我是英国人,在英国 MacBook 上。所以我不能保证外国的MacBook。

于 2014-08-07T13:02:43.580 回答
2

Aquamacs支持这一点,至少对于我的(法语)键盘而言。一旦安装了 Aquamacs(通过拖放),您可以转到选项 -> 选项、命令、元键并为您的键盘选择适当的设置(在我的情况下,...元和法语)。我不精通 Emacs,但我尝试过的所有有用组合似乎都有效([、{、| 等等)。

根据 2.1 版的菜单项,支持的键盘是:

  • 英国
  • 我们
  • 瑞士法语
  • 瑞士-德国
  • 芬兰
  • 意大利专业
  • 意大利语
  • 西班牙语
  • 法语
  • 德语

不过,如果您的键盘没有出现在列表中,我猜 Aquamacs 团队会感谢您的任何贡献。

于 2010-08-28T18:10:52.133 回答
1

我咬了草,然后开始按逃生键。你习惯了...

于 2009-12-05T21:09:16.093 回答
1

我想修改这个问题或其他什么,因为我也使用瑞典语键盘,我必须按 alt+7 或 alt+shift+7 才能制作 | 和 \ 分别。

我还在 Terminal.app 中使用 Irssi,但这些都不能很好地混合。

我是 vim 的老用户,所以 emacs 对我来说不是问题。

没有办法将 CMD 重新映射为 Terminal.app 中的 Meta 吗?

到目前为止,我一直通过在 Irssi 中简单地输入 /wg N 来生存,因为在我的终端中拥有这些字符比 IRC 重要得多。

不过,一个解决方案对我来说很有价值!:)

于 2010-01-14T18:37:27.100 回答
0

这已经晚了好几年,但是对于在寻找解决方案时遇到此页面的人来说,就像我一样,我决定自己构建一个,不需要放弃 Terminal.app 以支持 iTerm 2。

它是一个简单的状态栏应用程序,在后台运行并将所有左Alt + $KEY键事件快速连续重写为两个键事件,Esc,然后是$KEY;但是,只有在 Terminal.app 是重点应用程序时才会这样做。

您可以在https://github.com/habibalamin/Metalt找到它。

于 2018-04-05T13:17:32.420 回答
0

我将转义分配给大写锁定键,它工作得很好。您可以在 mac 系统首选项 > 键盘 > 修饰键中轻松配置它。

https://apple.stackexchange.com/a/282092/236382

于 2019-04-09T08:44:07.280 回答