有没有办法使用 alt / 选项键作为元键,但仍然可以使用它来制作一些需要它的字符?
例如,在我的本地键盘布局中:
@
alt + 2 \
alt + shift + 7 |
alt + 7 所以,如果我将 alt 设置为元键,我就不能再制作这些字符了。另一方面,使用“按esc,释放esc,按一个键”来制作元键序列会让我的双手受伤。
任何已解决此问题的国际键盘的Emacs用户,请提供您可能提供的任何提示! :)
修改:
看来我可以将 alt 设置为元键,然后在inputrc中添加这些设置:"\e2": "@"
这在bash shell中有效,但它仍然不能用于但Emacs,所以没有好处。
答案 0 :(得分:24)
我在Mac OS X中使用瑞典语键盘,并使用以下设置进行Emacs.app:
首先我安装了KeyRemap4MacBook,然后设置将左侧Option键更改为Command。
然后我的.emacs中有以下内容:
(setq mac-option-modifier 'none)
(setq mac-command-modifier 'meta)
这使得Emacs将命令视为Meta并忽略Option。由于左Alt / Option键被重新映射到命令,这使得它可以工作,而右Alt / Option键仍可用于输入@ []和{}等特殊字符。
特定于应用程序的Mac快捷方式(如Cmd + C和Cmd + V)不再有效,但全局快捷方式(如Spotlight的Cmd +空间和应用切换的Cmd + Tab)可以。
<强>更新强> 如果使用iTerm2作为终端,则支持仅将左Alt / Option键映射到元,这意味着您仍然可以使用正确的AltGr / Option键输入特殊字符。这也意味着您可以在iTerm2终端中运行的Emacs中正常使用meta。
答案 1 :(得分:15)
我的Mac上有一个瑞典语键盘,我正在使用Aquamacs。添加两行(归属于JoakimHårsman)
(setq mac-option-modifier 'none)
(setq mac-command-modifier 'meta)
.emacs
中的(并重新启动Aquamacs)为我做了诀窍。
答案 2 :(得分:12)
使用iTerm2,您可以将左选项键映射到ESC / meta,并将右选项键的映射保留为“normal”。这样您就可以使用正确的选项键来输入重音等。
答案 3 :(得分:10)
考虑使用适用于Mac OS X的全功能Emacs。我使用Carbon Emacs,但我相信其他人(比如Aqua Emacs或X11 Emacs)可以解决问题。
如果您坚持在终端中使用Emacs,则可以使用C-x 8
前缀作为撰写密钥。尝试使用C-x 8 C-h
获取可能性列表。
答案 4 :(得分:5)
我使用的两种解决方法:
答案 5 :(得分:5)
查看cmd-key-happy。这个小应用程序为我创造了奇迹。它允许您将命令用作元,具有您可以配置的异常。
作者的信息如下:
此程序允许您交换命令和alt(或选项)键 在任何应用程序中,但特别是Terminal.app。
答案 6 :(得分:5)
这是一篇旧帖子,但为机器人添加了替代方案。 我从Aquamacs借用了几个文件( emulate-mac-keyboard-mode.el,aquamacs-tools.el )来修复问题(我有一个意大利专业版的键盘):
(defun aq-binding (any)
nil)
(load "~/.emacs.d/emulate-mac-keyboard-mode.el") ;; 'noerror
这提供了:
使用Emacs-23.3-universal-10.6.6测试,似乎对我没用。
非常感谢Aquamacs,如果还没有这样做,那就推动这个上游。
答案 7 :(得分:4)
我对此问题的解决方案是我编写的特殊键盘布局U.S. custom。它提供了一个选项deadkey,可以生成选项组合而无需使用物理⌥选项修饰键。例如,字符⟨ç⟩在普通的美国键盘布局上生成如下:
美国。自定义键盘布局增加了第二种生成⟨ç⟩的方法:
当使用选项作为元键时,即使在Terminal.app中也是如此。
请注意,美国自定义键盘布局还有两件事:
如果你有一个物理ANSI键盘,那么你缺少§键。在这种情况下,我建议将§键分配给其他键,例如右侧⌥选项修饰键。安装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 ,然后选择“为正确的选项发送ISO部分”。现在,您的⌥右选项键被重新映射到§,所以当美国时。自定义键盘布局处于活动状态,点击⇧Shift + ⌥右选项将为您提供选项死键状态(点击⌥右选项没有额外的修饰符会给你一个等同于选项修饰符的死键状态。
如果在⇧Shift未按下(而不是⎄撰写键)时想要保持⌥右选项,则选择“发送” Shift +右侧选项的Shift + ISO部分(在没有Shift的情况下保持正常右侧选项)“在KeyRemap4MacBook偏好设置面板中”(而不是“为正确选项发送ISO部分”)。像这样,只有⇧Shift + ⌥右选项将产生选项死键,而普通⌥右选项将继续作为选项修饰符工作。您甚至可以继续使用⌥右选项 + ⇧Shift修饰符组合(例如⌥右选项 + ⇧Shift + c →⟨Ç⟩)只要你没先点击⇧Shift。
答案 8 :(得分:3)
上面的答案提到了输入非ascii输入的方法,但这不是真正的问题。 C-x 8方法允许你输入一堆非ascii,但问题是你需要mac上的选项键才能输入(ascii)字符`|' (竖条)!
那你怎么输入像M- |这样的东西(在terminal.app下,在ssh中运行emacs)?没有办法,但使用转义键,因为|是选项-7和Terminal.app由于一些愚蠢的原因不会让你使用Cmc作为元: - (
(如果有人知道hack(也许是SIMBL?)实际上让Terminal.app使用Cmd作为meta,我会非常感激......)
答案 9 :(得分:3)
值得思考问题背后的假设。我的意思是说真正的问题是使当前似乎需要选项键的字符。如果不同时实现'元键+ alt功能',就可以解决这个问题。
让我解释一下:我有类似的问题。在我的英国键盘上,shift-3被映射到英镑符号£,这意味着我通常需要点击选项-3来获得非常有用的# - 终端中的一个真正的问题,我使用选项作为元。但是,我发现上述大多数解决方案都有点过分。我不想更改为另一个版本的Emacs(例如Aquamacs),切换到不同的终端应用程序(例如iTerm或xterm),或者为了安装密钥重映射应用程序(例如KeyRemap4MacBook)一个符号!也许这适合一些人,但我认为值得指出的是,如果问题只是一个字符,可以使用九个字符的文本文件来解决。
关于这个问题的个人版本,我发现最简单的解决方案是在我的主目录中创建一个名为.inputrc
的文件,该文件包含以下单行:
"§": "#"
这会重新映射(对我来说,相当无用)§,可以在当前Mac键盘的1左侧找到(几乎不可或缺的)#。这比默认设置更适合我,因为我现在可以用一个按键获得#。如果我需要重新映射任何其他字符,那么只需为每个字符添加额外的行。
无论如何,这涉及如何在shell中获取缺少的字符,但是如果你也想在Emacs中使用它(你没有说,但可能就是这种情况),那么你可以在{{{{ 1}} file(其中35是我想要的角色的ASCII,即。#):
.emacs
如果我经常想通过选项键访问几十个字符,那可能不是一个很好的解决方案,但是没有。
我希望这有助于某人。作为一个周末的黑客,我通常不敢发布Stack Overflow问题的答案......
答案 10 :(得分:2)
Aquamacs支持,至少对我的(法语)键盘支持。安装Aquamacs后(通过拖放),您可以转到选项 - &gt;选项,命令,Meta键并为键盘选择合适的设置(在我的情况下,... Meta&amp; French)。我不熟悉Emacs,但我尝试过的所有有用组合似乎都有用([,{,|等等)。
根据2.1版的菜单项,支持的键盘是:
我猜想,如果您的键盘没有出现在列表中,Aquamacs团队会对任何贡献表示感谢。
答案 11 :(得分:2)
以下解决方案有效, UNOBTRUSIVE ,您不需要iTerm2 或 Aquamacs 等等。
在Terminal.app设置中将“使用选项作为元键”保持为开启。
修改~/.inputrc
(如果它已经不存在),请添加以下行:
"\e3": '#'
这将重新映射⌥alt + 3 ,以便您在终端中生成#
字符,而不是它很烦人地回来了提示(arg: 3)
。
修改~/.emacs
,添加以下行:
(global-set-key (kbd "M-3") "#")
这将重新映射⌥alt + 3 ,以便您在emacs内部生成#
字符 ,而不是烦恼地无所事事。
警告1 ,这只是 1 重新映射。所以⌥alt + ? (其他键)将不会被重新映射,例如您可能希望重新映射⌥alt + n 以生成波形键~
。只需按照上面列出的相同步骤,显然可以使用您需要的任何键来切换 3 。
警告2,当您ssh
进入另一个框时,您将面临同样的困难,但您只需编辑~/.inputrc
和{{1那个盒子上的文件。
警告3,我是英国人,在英国的MacBook上。所以我不能担保外国MacBooks。
答案 12 :(得分:1)
我咬了草,开始按下逃生钥匙。你习惯了......
答案 13 :(得分:0)
我想修改这个问题或其他因为我也使用瑞典语键盘,我必须按alt + 7或alt + shift + 7来制作|和\分别。
我也在Terminal.app中使用Irssi,但这些并不能很好地混合。
我是一个很长时间的vim用户,所以emacs对我来说不是问题。
在Terminal.app中有没有办法将CMD重新映射为Meta?
到目前为止,我只是在Irssi中键入/ wg N而幸存下来,因为在我的终端中输入这些字符比IRC更重要。
虽然解决方案对我来说是值得的! :)
答案 14 :(得分:0)
这已经晚了很多年,但是对于那些在寻找解决方案时遇到此页面的人,正如我所做的那样,我决定自己构建一个,不需要放弃Terminal.app而选择iTerm 2。 / p>
这是一个简单的状态栏应用程序,它在后台运行并将所有左Alt + $ KEY键事件快速连续重写为两个关键事件,Esc,然后是$ KEY;但是,只有当Terminal.app成为焦点应用程序时才会这样做。
答案 15 :(得分:0)
我将大写锁定键分配了转义符,并且效果很好。您可以在Mac系统偏好设置>键盘>修改键中轻松配置它。