web-dev-qa-db-ja.com

OS Xターミナル:メタキー+ alt機能を同時に使用

を使用する方法はありますか altoption キーをメタキーとして使用しますが、それを使用して、それを必要とする一部の文字を作成できますか?

たとえば、私のローカルキーボードレイアウトでは:

  • @は alt2
  • \は altshift7
  • |は alt7
  • 等.

だから、私が設定した場合 alt メタキーとして、私はそれらの文字をもう作ることができません。一方、「escを押して、escを放して、キーを押す」を使用してメタキーシーケンスを作成すると、手が痛くなります。

これを解決した国際キーボードを使用するEmacsユーザーは、あなたが持っているかもしれないヒントを教えてください! :)

編集:

設定できるようです alt メタキーとして、次の種類の設定をinputrcに追加します:"\e2": "@"これはbashシェルで機能しますが、Emacsでも機能しません。

36
John Smith

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

10
kmkaplan

私はMac OS Xでスウェーデン語キーボードを使用し、Emacs.appに次の設定を使用しています。

最初に KeyRemap4MacBook をインストールし、左のOptionキーをCommandに変更するようにセットアップしました。

次に、私の.emacsに次のようにします。

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

これにより、Emacsはコマンドをメタとして扱い、オプションを無視します。左側のAlt/Optionキーはコマンドに再マッピングされるため、これによりライトメタとして機能しますが、右側のAlt/Optionキーは@ []や{}などの特殊文字の入力にも機能します。

Cmd + CやCmd + Vなどのアプリ固有のMacショートカットは機能しなくなりましたが、SpotlightのCmd + spaceやアプリ切り替えのCmd + Tabなどのグローバルショートカットは機能します。

更新:iTerm2 をターミナルとして使用する場合、左のAlt/Optionキーのみをメタにマッピングするためのサポートがあります。つまり、特殊文字を入力するために、正しいAltGr/Optionキーを引き続き使用できます。これは、iTerm2端末で実行されているEmacs内で通常どおりメタを使用できることも意味します。

24
Joakim Hårsman

Macにスウェーデン語キーボードがあり、Aquamacsを使用しています。 2行を追加します(帰属はJoakimHårsmanに行きます)

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

.emacs(そして、Aquamacsを再起動すること)が私にトリックをもたらしました。

15
Ztyx

iTerm2 を使用すると、左側のオプションキーをESC/metaにマッピングし、右側のオプションキーのマッピングを「通常」のままにすることができます。このように、適切なオプションキーを使用してアクセントなどを入力できます。

iTerm2 preferences

12
Jan Berkel

私が使用する2つの回避策:

  • X11.appで実行しているxtermを使用しています。 X11.appはコマンドキーをメタとして使用します。
  • Terminal.appでemacsを実行するときは、rfc1345入力メソッドを使用するだけです。これにより、オプションキーを必要とせずに、あらゆる種類の狂った非ASCII文字を入力できます。
5
bendin

これは古い投稿ですが、Robotsが検索する代替手段を追加しています。私は問題を修正する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、emulate-mac-french-keyboard-mode、mulate-mac-swiss-german-keyboard-mode、など)
  • aquamacsが提供するすべてのオプションで遊ぶメニュー

Emacs-23.3-universal-10.6.6でテストされ、私にとっては問題なく動作するようです。

これについてAquamacsに感謝します。まだ行われていない場合、これを上流にプッシュすることについてはどうでしょうか。

5
wilane

Cmd-key-happyを確認してください。この小さなアプリは私にとって不思議に働いています。構成可能な例外を除いて、コマンドをメタとして使用できます。

著者の情報は次のとおりです。

このプログラムを使用すると、任意のアプリケーション(特にTerminal.app)でコマンドとAlt(またはオプション)キーを交換できます。

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

5
stuntmouse

オプションのデッドキーを備えた特別なキーボードレイアウト

この問題に対する私の解決策は、私が書いた特別なキーボードレイアウト .S。custom です。オプション deadkey を提供し、物理的なオプションを使用せずにオプションのコンボを生成します ⌥ Option 修飾キー。たとえば、文字「⟨ç」は、通常の米国のキーボードレイアウトでは次のように生成されます。

  • ヒット ⌥ Option+c

米国customキーボードレイアウトは、⟨ç⟩を作成する2番目の方法を追加します。

  • ヒット ⇧ Shift+§ (オプションのデッドキー)、それを解放してから c

Use option as meta keyがチェックされている場合、これはTerminal.appでも機能します。

米国のカスタムキーボードレイアウトは、次の2つのことを行うことに注意してください。

  1. プレーンに変換します § に ⎄ Compose キー(したがって、 §、その後 ,、その後 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をクリックして、「適切なオプションのISOセクションを送信する」を選択します。今、あなたの ⌥ Right Option キーはに再マッピングされます §なので、米国customキーボードレイアウトがアクティブで、 ⇧ Shift+⌥ Right Option オプションのデッドキー状態(ヒット ⌥ Right Option 追加の修飾子を使用しないと、オプション修飾子と同等のデッドキー状態になります。

維持したい場合 ⌥ Right Option いつ ⇧ Shift 押されていません(代わりに ⎄ Compose キー)を押してから、KeyRemap4MacBookの設定ペインで「Shift + rightオプションのShift + ISOセクションを送信(Shiftを使用せずに通常の右オプションを保持)」を選択します(「右オプションのISOセクションを送信」の代わりに)。そのように ⇧ Shift+⌥ Right Option オプションのデッドキーを生成しますが、プレーンです ⌥ Right Option オプション修飾子として機能し続けます。使い続けることもできます ⌥ Right Option+⇧ Shift 修飾子コンボ(たとえば ⌥ Right Option+⇧ Shift+c→⟨Ç⟩)ヒットしない限り ⇧ Shift 最初。

4
mach

質問の背後にある仮定について考えることは価値があります。本当の問題は、現在オプションキーを必要とするように見える文字を作ることです。この問題は、「メタキー+ alt機能」を同時に実現しなくても解決できます。

説明させてください:私は同様の問題を抱えています。私の英国のキーボードでは、shift-3はポンド記号£にマップされています。つまり、非常に便利な#オプション(メタとしてオプションを使用するターミナルの実際の問題)を取得するには、通常option-3を押す必要があります。ただし、上記の解決策のほとんどは少しやり過ぎであることがわかりました。 Emacsの別のバージョン(Aquamacsなど)に変更したり、別のターミナルアプリケーション(iTermやxtermなど)に切り替えたり、キー再マッピングアプリケーション(KeyRemap4MacBookなど)をインストールしたりしたくありません。 1つのシンボルの!たぶんそれは一部の人に合うでしょうが、問題が1文字だけの場合は、9文字のテキストファイルで解決できることを指摘する価値があると思いました。

この問題の私の個人的なバージョンに関して、最も簡単な解決策は、ホームディレクトリに.inputrcというファイルを作成することです。これは、次の1行で構成されています。

"§": "#"

これにより、現在のMacキーボードの1の左側にある(私にとってはまったく役に立たない)§が(ほぼ必須)の#に再マッピングされます。これは、デフォルトのセットアップよりもさらに適しています。1回のキープレスで#を取得できるからです。再マッピングする必要のある他の文字がある場合は、それぞれに追加の行を追加するだけです。

とにかく、それはシェルで欠落している文字を取得する方法を扱いますが、Emacsでもそれが必要な場合(これは言わなかったが、おそらくそうなのです)、次のようなものを.emacsに追加できます。ファイル(35はASCIIは、たまたま必要な文字、つまり#です):

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

オプションキーを使用して日常的にアクセスしたい文字が数十ある場合は、このようなきちんとした解決策ではないかもしれませんが、そうではありません。

これが誰かの役に立つことを願っています。単なる週末のハッカーとして、私は通常、スタックオーバーフローに関する質問への回答を敢えて投稿しません...

3

上記の回答では、非ASCII入力を入力する方法を説明していますが、ここでは実際には問題ではありません。 C-x 8の方法では、ASCII以外の多くの文字を入力できますが、問題は、(ASCII)文字 `| 'を入力するだけで、Macでオプションキーが必要になることです。 (縦棒)!

では、M- |のようなものをどのように入力しますか? (シェルコマンドの領域)Terminal.appの下のsshでemacsを実行する場合|なので、エスケープキーを使用する以外に方法はありません。 option-7であり、なんらかの愚かな理由でTerminal.appはCmcをメタとして使用できません:-(

(誰かが実際にTerminal.appにCmdをメタとして使用させるハッキング(おそらくSIMBL?)を知っていれば、私は非常に感謝します...)

3
unhammer

次の解決策は[〜#〜] unobtrusive [〜#〜]であり、iTerm2は必要ありませんまたはAquamacsなどです。

ステップ1

Terminal.appの設定で、「オプションをメタキーとして使用する」を[〜#〜] on [〜#〜]にしてください。

ステップ2

~/.inputrcを編集します(存在しない場合は作成します)。次の行を追加します。

"\e3": '#'

これは再マッピングされます ⌥ alt3#文字ターミナルで期待されるとおりを生成するため、煩わしいプロンプト(arg: 3)を返すのではありません。

ステップ3

~/.emacsを編集し、次の行を追加します。

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

これは再マッピングされます ⌥ alt3#文字emacs内で期待されるようにを生成するため、煩わしく何もしない代わりに。


警告1、これは単なる1再マップです。そう ⌥ alt?他のキー)は再マッピングされません、例えばあなたは再マップしたいかもしれません ⌥ altn チルダキー~を生成します。上で概説した同じステップを単に切り替えるだけです 3 先に進む必要があるキーを使用します。

警告2、別のボックスにsshすると、同じ問題に直面しますが、そこで行う必要があるのは~/.inputrc~/.emacsを編集することだけです。そのボックス上のファイル。

警告英国のMacBookでは英国人です。だから海外のMacBookを保証することはできない。

2
Charles Foster

Aquamacs は、少なくとも私の(フランス語)キーボードでサポートしています。 Aquamacsが(ドラッグアンドドロップで)インストールされると、[オプション]-> [オプション]、[コマンド]、[メタキー]に移動して、キーボードに適切な設定を選択できます(私の場合は...メタとフランス語)。私はEmacsに習熟していませんが、私が試したすべての便利な組み合わせ([、{、|など)は機能するようです。

バージョン2.1のメニュー項目によるサポートされているキーボードは次のとおりです。

  • 英国の
  • 我ら
  • スイスフランス語
  • スイスドイツ語
  • フィンランド人
  • イタリアンプロ
  • イタリアの
  • スペイン語
  • フランス語
  • ドイツ人

ただし、キーボードがリストに表示されない場合は、Aquamacsチームからの貢献に感謝します。

2
Gary Verhaegen

私は草を噛み、代わりにエスケープキーを押し始めました。あなたはそれに慣れる...

1
KristianR

私はスウェーデンのキーボードも使用しているので、この質問を修正したいのですが、Alt + 7またはAlt + Shift + 7を押して作成する必要があります。および\。

私もTerminal.appでIrssiを使用していますが、これらはうまく混ざりません。

私は長い間vimユーザーなので、emacsは問題になりません。

Terminal.appでCMDをメタに再マップする方法はありませんか?

これまでのところ、Irssiで/ wg Nと入力するだけで生き残ってきました。これは、これらの文字をターミナルに表示することがIRCよりもはるかに重要であるためです。

解決策は私にとっても金の価値があります! :)

0
Stefan M

これは数年遅れですが、私がしたように、ソリューションを探しているときにこのページに出くわす人々のために、私は自分自身を構築することにしました。

これは、バックグラウンドで実行され、すべてのleft-Alt + $ KEYキーイベントを2つのキーイベント、Esc、次に$ KEYに書き換えるシンプルなステータスバーアプリです。ただし、これは、Terminal.appがフォーカスされたアプリケーションである場合にのみ行われます。

https://github.com/habibalamin/Metalt にあります。

0
habibalamin

Caps Lockキーにエスケープを割り当てたところ、かなりうまくいきました。 Macのシステム設定>キーボード>修飾キーで簡単に設定できます。

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

0
Felix Geenen