Подтвердить что ты не робот

OS X Terminal: функция Meta + + Alt одновременно

Есть ли способ использовать ключ alt/option в качестве мета-ключа, но все же использовать его для создания некоторых символов, которые ему нужны?

Например, в моей локальной раскладке клавиатуры:

  • @ - alt + 2
  • \ alt + shift + 7
  • | alt + 7
  • и др.

Итак, если я устанавливаю alt как мета-ключ, я больше не могу делать эти символы. С другой стороны, используя "press esc, release esc, нажмите клавишу", чтобы сделать последовательности мета-ключей, мои руки больно.

Любые пользователи Emacs с международными клавиатурами, которые решили это, пожалуйста, дайте любые советы, которые у вас могут быть!:)

Изменить:

Похоже, что я могу установить alt в качестве мета-ключа, а затем добавить такие настройки в inputrc: "\e2": "@" Это работает в оболочке bash, но все равно не будет работать с Emacs, поэтому нет хорошо.

4b9b3361

Ответ 1

Подумайте об использовании полнофункционального Emacs для Mac OS X. Я использую Carbon Emacs, но я считаю, что другие (например, Aqua Emacs или X11 Emacs) будут делать трюк.

Если вы настаиваете на использовании Emacs в терминале, вы можете использовать префикс C-x 8 как составной ключ. Попробуйте C-x 8 C-h, чтобы получить список возможностей.

См. http://www.emacswiki.org/emacs/EmacsForMacOS

Ответ 2

Я использую шведскую клавиатуру в Mac OS X и использую следующую настройку для Emacs.app:

Сначала у меня установлен KeyRemap4MacBook, и у меня есть настройка для изменения левой клавиши Option в Command.

Тогда у меня есть следующие .emacs:

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

Это заставляет Emacs обрабатывать команду как мета и игнорировать опцию. Поскольку левая клавиша Alt/Option переназначена для команды, это заставляет ее работать с lite meta, в то время как правая клавиша Alt/Option по-прежнему работает для ввода специальных символов, таких как @[] и {}.

Конкретные быстрые клавиши Mac, такие как Cmd + C и Cmd + V, больше не работают, но глобальные ярлыки, такие как Cmd + пространство для Spotlight и Cmd + Tab для переключения приложений, делают.

Update: Если вы используете iTerm2 в качестве терминала, который поддерживает отображение только левой клавиши Alt/Option в мета, что означает, что вы все еще можете использовать правой клавишей AltGr/Option для ввода специальных символов. Это также означает, что вы можете использовать meta как обычно внутри Emacs, работающего на терминале iTerm2.

Ответ 3

У меня есть шведская клавиатура на моем Mac, и я использую Aquamacs. Добавление двух строк (атрибуция идет к Joakim Hårsman)

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

in .emacs (и перезапуск Aquamacs) помогло.

Ответ 4

с iTerm2 вы можете сопоставить левую опционную клавишу ESC/meta и оставить отображение правильной клавиши опции "normal", Таким образом, вы можете использовать правильный ключ опции для ввода акцентов и т.д.

iTerm2 preferences

Ответ 5

Два рабочих момента, которые я использую:

  • Я использую xterm, работающий под X11.app. X11.app использует ключ команды как мета.
  • При запуске emacs в Terminal.app я просто использую входной метод rfc1345, который позволяет мне вводить всевозможные сумасшедшие символы без ascii без необходимости выбора ключа.

Ответ 6

Отъезд cmd-key-happy. Это небольшое приложение сотворило для меня чудеса. Он позволяет использовать команду как мета, с исключениями, которые вы можете настроить.

Информация об авторе:

Эта программа позволяет вам обменивать команду и клавиши alt (или опции) в любом приложении, но, в частности, Terminal.app.

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

Ответ 7

Это старое сообщение, но добавление альтернатив для поиска роботов. Я заимствовал пару файлов из Aquamacs (emulate-mac-keyboard-mode.el, aquamacs-tools.el), которые исправляют проблему (у меня есть клавиатура Italian-Pro):

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

это обеспечивает:

  • несколько второстепенных режимов ( emulate-mac-italian-keyboard-mode, эмулировать-макинтош-франко-клавиатура режим, mulate-mac-swiss-german-keyboard-mode, и т.д.)
  • меню для воспроизведения со всеми опциями, предоставляемыми Aquamacs

Протестировано Emacs-23.3-universal-10.6.6 и, похоже, работает нормально для меня.

Спасибо Aquamacs за это, как насчет нажатия этого вверх по течению, если это еще не сделано.

Ответ 8

Специальная раскладка клавиатуры с опцией deadkey

Мое решение этой проблемы - специальная раскладка клавиатуры, которую я написал, U.S. пользовательские. Он предоставляет опцию deadkey, которая выдает комбинации параметров без использования физического ключа модификатора ⌥ Option. Например, символ ⟨ç⟩ создается следующим образом на обычной раскладке клавиатуры U.S:

  • Нажмите ⌥ Option + c.

Пользовательская раскладка клавиатуры в США добавляет второй способ создания ⟨ç⟩:

  • Нажмите ⇧ Shift + § (опция deadkey), затем отпустите его, а затем нажмите c.

Это работает даже в Terminal.app, когда опция Использовать в качестве мета-ключа была проверена.

Обратите внимание, что пользовательская раскладка клавиатуры U.S делает две дополнительные вещи:

  • Он преобразует plain § в ключ ⎄ Compose (так что вы также можете создать ⟨ç⟩, нажав §, затем ,, затем c).
  • Он заменяет отображение CapsLock на (значительно расширенную) раскладку клавиатуры U.S. Extended.

Демонстрационная опция deadkey к правой клавише модификатора опции

Если у вас есть физическая клавиатура 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, нажмите UpdateXML, а затем выберите "Отправить раздел ISO для правильной настройки". Теперь ваш ключ ⌥ Right Option переназначается на §, поэтому, когда пользовательская раскладка клавиатуры на компьютере активна, нажатие ⇧ Shift + ⌥ Right Option даст вам статус состояния бездействия (нажатие ⌥ Right Option без дополнительных модификаторов даст вам состояние deadkey, эквивалентное модификатору опции.

Если вы хотите сохранить ⌥ Right Option, когда ⇧ Shift не нажата (вместо клавиши ⎄ Compose), выберите "Отправить Shift + раздел ISO для Shift + right Option (сохранить нормальный правый вариант без Shift)" в в панели предпочтений KeyRemap4MacBook (вместо "Отправить раздел ISO для правой опции" ). Таким образом, только ⇧ Shift + ⌥ Right Option будет генерировать параметр deadkey, в то время как plain ⌥ Right Option будет продолжать работать как модификатор опции. Вы даже можете продолжать использовать комманды модификаторов ⌥ Right Option + ⇧ Shift (например, ⌥ Right Option + ⇧ Shift + c → ⟨Ç⟩), если вы сначала не нажмете ⇧ Shift.

Ответ 9

В приведенных выше ответах упоминаются способы ввода не-ascii-входа, но это не проблема. Метод C-x 8 позволяет вводить кучу не-ascii, но проблема в том, что вам нужен ключ опции на mac, чтобы ввести символ (ascii) `| ' (вертикальная полоса)!

Итак, как вы тогда вводите такие вещи, как M- | (команда region to shell) при запуске emacs в ssh под Terminal.app? Ни в коем случае, но использовать escape-ключ, так как | это опция-7 и Terminal.app по какой-то глупой причине не позволит вам использовать Cmc как мета: - (

(Если кто-нибудь знает о взломе (возможно, SIMBL?), что на самом деле позволяет Terminal.app использовать Cmd как мета, я был бы очень благодарен...)

Ответ 10

Стоит подумать о предположении, стоящем за вопросом. Я хочу сказать, что настоящая проблема заключается в том, что персонажи, которым в настоящее время кажется нужен ключ опции. Эта проблема может быть решена без одновременной "мета-клавиши + альт-функциональность".

Позвольте мне объяснить: у меня есть аналогичная проблема. На моей британской клавиатуре shift-3 отображается на знак фунта, £, что означает, что мне обычно нужно нажать опцию-3, чтобы получить очень полезную # - настоящую проблему в терминале, где я использую опцию как мета. Тем не менее, я нахожу, что большинство из вышеперечисленных решений немного завышено. Я не хочу переходить на другую версию Emacs (например, Aquamacs), переключиться на другое приложение терминала (например, iTerm или xterm) или установить приложение для переназначения ключей (например, KeyRemap4MacBook) для всех одного символа! Возможно, это подойдет некоторым людям, но я подумал, что стоит отметить, что если проблема - это всего лишь один символ, ее можно решить с помощью текстового файла с девятью символами.

Что касается моей личной версии этой проблемы, я считаю, что самым простым решением является создание файла с именем .inputrc в моем домашнем каталоге, состоящем из следующей отдельной строки:

"§": "#"

Это переназначает (для меня, совершенно бесполезный) §, который можно найти слева от 1 на текущей клавиатуре Mac до (почти незаменимого) #. Это мне подходит даже лучше, чем настройка по умолчанию, потому что теперь я могу получить # с одним нажатием клавиши. Если бы были какие-то другие символы, которые мне нужно было переделать, просто нужно было добавить дополнительную строку для каждого из них.

В любом случае, это касается того, как получить отсутствующий символ в оболочке, но если вы также хотите его в Emacs (который вы не сказали, но, вероятно, это так), вы можете добавить что-то вроде этого к вашему .emacs (где 35 - это ASCII для символа, который мне нужен, то есть. #):

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

Это может быть не такое аккуратное решение, если бы были десятки символов, которые я обычно хотел получить с помощью ключа опции, но их нет.

Надеюсь, это поможет кому-то. Как простой выходный хакер, я обычно не посмел бы опубликовать ответ на вопрос о переполнении стека...

Ответ 11

Aquamacs поддерживает это, по крайней мере, для моей (французской) клавиатуры. Как только Aquamacs установлен (через drag'n'drop), вы можете перейти в Options → Option, Command, Meta keys и выбрать подходящую настройку для вашей клавиатуры (в моем случае... Meta и French). Я не владею Emacs, но все полезные комбинации, которые я пробовал, похоже, работают ([, {, | и т.д.).

Поддерживаемые клавиатуры в соответствии с пунктами меню на версии 2.1:

  • Британский
  • США
  • Swiss-французский
  • Swiss-немецкий
  • финский
  • итало-Pro
  • итальянский
  • Испанский
  • Французский
  • Немецкий

Я бы предположил, что команда Aquamacs будет благодарна за любой вклад, хотя ваша клавиатура не появится в списке.

Ответ 12

Следующее решение работает: UNOBTRUSIVE, а вам не нужен iTerm2 или Aquamacs или что-то еще.

Шаг 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 на любой ключ, который вам нужно продолжить.

Caveat 2, Когда вы ssh в другое поле, вы столкнетесь с теми же трудностями, но все, что вам нужно сделать, - это отредактировать файлы ~/.inputrc и ~/.emacs в этом поле.

Caveat 3, Я британский, на британском MacBook. Поэтому я не могу ручаться за иностранные MacBook.

Ответ 13

Я укусил траву и вместо этого нажал клавишу escape. Вы привыкли к этому...

Ответ 14

Я хотел бы изменить этот вопрос или что-то, потому что я также использую шведскую клавиатуру, где я должен нажать alt + 7 или alt + shift + 7, чтобы сделать | и\соответственно.

Я также использую Irssi в Terminal.app, и они плохо смешиваются.

Я долгое время vim-пользователь, хотя emacs для меня не проблема.

Нет ли способа переназначить CMD для Meta в Terminal.app?

До сих пор я выжил, просто набрав /wg N в Irssi, потому что эти символы в моем терминале гораздо важнее IRC.

Решение для меня стоило бы золота!:)

Ответ 15

Это на несколько лет позже, но для людей, которые переходят на эту страницу во время поиска решения, как и я, я решил создать его самостоятельно, которое не требует отказа от Terminal.app в пользу iTerm 2.

Это простое приложение в строке состояния, которое работает в фоновом режиме и переписывает все события клавиш левой клавишей Alt + $ KEY в два ключевых события в быстрой последовательности: Esc, затем $ KEY; однако он делает это только в том случае, если Terminal.app является целевым приложением.

Вы можете найти его здесь на https://github.com/habibalamin/Metalt.

Ответ 16

Я назначил escape на клавишу блокировки шапки, и она работает довольно хорошо. Вы можете легко настроить его в системных настройках Mac> клавиатура> клавиши-модификаторы.

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