代码之家  ›  专栏  ›  技术社区  ›  John Smith

OSX终端:同时具有Meta键+alt功能

  •  36
  • John Smith  · 技术社区  · 16 年前

    有没有一种方法可以使用 中高音 选项

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

    • @ 中高音 + 2.
    • \ 中高音 转移 +
    • | 中高音 + 7.

    所以,如果我 中高音

    任何使用国际键盘的Emacs用户都可以解决此问题,请给出您可能有的任何提示!:)

    编辑:

    看来我可以设置 作为元键,然后在inputrc中添加以下设置: "\e2": "@" 这在bashshell中起作用,但在Emacs中仍然不起作用,所以没有什么好处。

    15 回复  |  直到 11 年前
        1
  •  25
  •   Joakim Hårsman    14 年前

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

    首先我有 KeyRemap4MacBook 已安装,我已将其设置为将左选项键更改为Command。

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

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

    特定于应用程序的Mac快捷方式(如Cmd+C和Cmd+V)不再有效,但全局快捷方式(如用于聚光灯的Cmd+space和用于应用程序切换的Cmd+Tab)则有效。

    更新: 如果你使用 iTerm2

        2
  •  15
  •   Ztyx    14 年前

    我的Mac电脑上有一个瑞典键盘,我用的是AquaMac电脑。添加两行(归属于Joakim Hrsman)

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

    在里面 .emacs (重新启动Aquamacs)帮了我一把。

        3
  •  12
  •   Jan Berkel    13 年前

    具有 iTerm2 您可以将左选项键映射到ESC/meta,并将右选项键的映射保留为“正常”。通过这种方式,您可以使用正确的选项键键入重音符号等。

    iTerm2 preferences

        4
  •  10
  •   kmkaplan    16 年前

    考虑在Mac OS X上使用功能齐全的Emacs。我使用碳Emacs,但我相信其他人(比如Aqua Emacs或X11 Emacs)会这样做。

    C-x 8 前缀作为组合键。尝试 C-x 8 C-h 获取一份可能性列表。

    看见 http://www.emacswiki.org/emacs/EmacsForMacOS

        5
  •  5
  •   bendin    16 年前

    我使用的两种变通方法:

    • 在Terminal.app中运行emacs时,我只使用rfc1345输入法,它允许我在不需要选项键的情况下输入各种疯狂的非ascii字符。
        6
  •  5
  •   stuntmouse    15 年前

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

    此程序允许您交换命令键和alt(或option)键

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

        7
  •  5
  •   kartik    13 年前

    这是一篇老文章,但增加了一个机器人可以找到的替代品。 emulate-mac-keyboard-mode.el、aquamacs-tools.el

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

    这规定:

    • 少数小模式( 模仿mac意大利键盘模式,
    • 使用Aquamacs提供的所有选项的菜单

    使用Emacs-23.3-universal-10.6.6进行测试,对我来说似乎还可以。

    感谢Aquamacs,如果还没有这样做,那么把它推向上游怎么样。

        8
  •  4
  •   Westcroft_to_Apse    13 年前

    让我解释一下:我也有类似的问题。在我的英国键盘上,shift-3被映射到磅符号,这意味着我通常需要点击选项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))
    

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

    我希望这对某人有帮助。作为一个周末黑客,我通常不敢发布关于堆栈溢出问题的答案。。。

        9
  •  4
  •   Aleksander Blomskøld    12 年前

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

    我对这个问题的解决方案是我写的一个特殊的键盘布局, U.S. custom . 它提供了一个选项 deadkey 这将生成选项组合,而不必使用物理 期权 修改键。例如,在普通美国键盘布局上,字符¨按如下方式生成:

    • + C .

    • §移位 + § (选项死键),然后释放它,然后点击 C .

    即使在Terminal.app中,当 将选项用作元键 已经检查过了。

    1. 它转换为普通的 § 组成 § 然后 C ).
    2. 它将CapsLock映射替换为(显著扩展) 键盘布局。

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

    如果您有一个物理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>
    

    然后,打开MacBook首选项窗格,点击 然后选择Send ISO Section作为右选项。现在,你的 正确的选择 密钥被重新映射到 ,所以 §移位 + 将为您提供死锁状态选项(点击 正确的选择 如果没有附加的修改器,将为您提供等同于选项修改器的死键状态。

    正确的选择 §移位 未按下(而不是 §移位 + 正确的选择 正确的选择 + §移位 修改器组合(例如 正确的选择 §移位 + C 只要你不打

        10
  •  3
  •   unhammer    16 年前

    上面的答案提到了输入非ascii输入的方法,但这并不是真正的问题。C-x 8方法允许您输入大量非ascii字符,但问题是您需要mac上的option键才能输入(ascii)字符“|”(垂直条)!

    (如果有人知道一个黑客(可能是SIMBL?)确实让Terminal.app使用Cmd作为meta,我将非常感激……)

        11
  •  2
  •   Gary Verhaegen    14 年前

    Aquamacs 至少在我的(法语)键盘上支持这一点。安装Aquamacs后(通过拖放),您可以转到选项->选项、命令、元键,并为您的键盘选择合适的设置(在我的例子中,…元和法语)。我并不精通Emacs,但我尝试过的所有有用的组合似乎都有效([,{,|,等等)。

    根据2.1版的菜单项,受支持的键盘包括:

    • 英国的
    • 瑞士法语
    • 瑞士-德国
    • 芬兰语
    • 意大利人
    • 西班牙的
    • 德国的

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

        12
  •  2
  •   Charles Foster    10 年前

    下面的解决方案是有效的 不引人注目的 和你 不需要它 Aquamacs 或者别的什么。

    第一步

    保持“将选项用作元键”处于打开状态 在…上

    步骤2

    ~/.inputrc (

    "\e3": '#'

    这将重新映射 中高音 + 3. 这样你就产生了一个 # 性格 ,而不是恼人地返回提示 (arg: 3) .

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

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

    这将重新映射 中高音 + 3. # 性格 正如emacs内部所预期的那样 ,而不是什么都不做。


    警告1 ,这只是 1. 重新绘制地图。所以 阿尔特 + ? ( )不会重新映射,例如,您可能希望重新映射 + N 生成平铺键的步骤 ~ 用你需要的钥匙前进。

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

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

        13
  •  1
  •   KristianR    15 年前

        14
  •  1
  •   Stefan M    15 年前

    我想修改一下这个问题,因为我也使用瑞典键盘,在那里我必须分别按alt+7或alt+shift+7来生成|和\。

    我在Terminal.app中也使用了Irssi,但它们不能很好地混合。

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

    到目前为止,我只需在Irssi中键入/wg N就可以生存下来,因为在终端中输入这些字符比IRC重要得多。

    不过,对我来说,一个解决方案是值得的!:)

        15
  •  0
  •   habibalamin    7 年前

    这已经晚了几年,但对于那些在搜索解决方案时看到此页面的人来说,正如我所做的那样,我决定自己构建一个解决方案,一个不需要放弃Terminal.app而支持iTerm 2的解决方案。

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

    你可以在这里的 https://github.com/habibalamin/Metalt .

        16
  •  0
  •   Felix Geenen Geo    6 年前

    我给caps lock钥匙分配了escape,它工作得很好。您可以在mac系统首选项中轻松配置它>键盘>修改键。

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