it-swarm.com.de

OS X Terminal: Meta-Taste + Alt-Funktion gleichzeitig

Gibt es eine Möglichkeit, einalt/optionSchlüssel als Metaschlüssel, aber immer noch in der Lage, einige Zeichen daraus zu machen, die es brauchen?

Zum Beispiel in meinem lokalen Tastaturlayout:

  • @ istalt+2
  • \ istalt+shift+7
  • | istalt+7
  • usw.

Auch wenn ich setzealtals metaschlüssel kann ich diese zeichen nicht mehr machen. Wenn Sie dagegen "esc drücken, esc loslassen, a Taste drücken" verwenden, um Metatastenfolgen zu erstellen, tun mir die Hände weh.

Alle Emacs-Benutzer mit internationalen Tastaturen, die Sie haben könnten! :)

Bearbeiten:

Es scheint, dass ich einstellen kannaltas metaschlüssel and then this art of settings in inputrc hinzufügen: "\e2": "@" Dies funktioniert in der Bash-Shell, aber es funktioniert immer noch nicht mit Emacs, also nicht gut.

36
John Smith

Denken Sie darüber nach, einen voll ausgestatteten Emacs für Mac OS X zu verwenden. Ich benutze Carbon Emacs, aber ich glaube, dass andere (sagen wir Aqua Emacs oder X11 Emacs) den Trick tun würden.

Wenn Sie darauf bestehen, Emacs in einem Terminal zu verwenden, können Sie das C-x 8-Präfix als Erstellungsschlüssel verwenden. Versuchen Sie C-x 8 C-h, um eine Liste der Möglichkeiten zu erhalten.

Siehe http://www.emacswiki.org/emacs/EmacsForMacOS

10
kmkaplan

Ich verwende eine schwedische Tastatur in Mac OS X und verwende folgende Einstellungen für Emacs.app:

Zuerst habe ich KeyRemap4MacBook installiert und habe es eingerichtet, die linke Wahltaste in Command zu ändern.

Ich habe dann folgendes in meinen .emacs:

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

Dadurch wird der Befehl von Emacs als Meta behandelt und Option ignoriert. Da die linke Alt-/Wahltaste dem Befehl erneut zugeordnet ist, funktioniert sie lite meta, während die rechte Alt-/Wahltaste weiterhin für die Eingabe von Sonderzeichen wie @ [] und {} funktioniert.

App-spezifische Mac-Tastenkombinationen wie Cmd + C und Cmd + V funktionieren nicht mehr, globale Tastenkombinationen wie Cmd + Space für Spotlight und Cmd + Tab für das Wechseln zwischen Apps sind jedoch möglich.

Update: Wenn Sie iTerm2 als Terminal verwenden, wird die Zuordnung nur der linken Alt/Option-Taste zu Meta unterstützt. Dies bedeutet, dass Sie immer noch die rechte AltGr/verwenden können. Optionstaste zur Eingabe von Sonderzeichen. Dies bedeutet auch, dass Sie Meta wie gewohnt in Emacs verwenden können, die im iTerm2-Terminal ausgeführt werden.

24
Joakim Hårsman

Ich habe eine schwedische Tastatur auf meinem Mac und verwende Aquamacs. Hinzufügen der beiden Zeilen (Zuschreibung geht an Joakim Hårsman)

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

in .emacs (und Neustart von Aquamacs) hat mir den Trick gebracht.

15
Ztyx

mit iTerm2 können Sie die linke Optionstaste ESC/Meta zuordnen und die Abbildung der rechten Optionstaste auf "normal" belassen. Auf diese Weise können Sie die richtige Optionstaste verwenden, um Akzente usw. einzugeben.

iTerm2 preferences

12
Jan Berkel

Zwei Umgehungen verwende ich:

  • Ich verwende xterm unter X11.app. X11.app verwendet die Befehlstaste als Meta.
  • Beim Ausführen von emacs in Terminal.app verwende ich nur die Eingabemethode rfc1345, mit der ich alle Arten verrückter Nicht-ASCII-Zeichen eingeben kann, ohne einen Optionsschlüssel zu benötigen.
5
bendin

Dies ist ein alter Beitrag, aber es werden Alternativen für Roboter gefunden. Ich habe mir ein paar Dateien von Aquamacs geliehen ( emulate-mac-keyboard-mode.el, aquamacs-tools.el ) das behebt das Problem (ich habe eine Italian-Pro-Tastatur):

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

dies bietet:

  • einige kleinere Modi ( emulate-mac-italian-keyboard-mode, emulate-mac-french-keyboard-mode, mulate-mac-swiss-german-keyboard-mode , etc) 
  • ein Menü mit allen Optionen, die Aquamacs bietet

Getestet mit Emacs-23.3-universal-10.6.6 und scheint für mich gut zu funktionieren.

Vielen Dank an Aquamacs, was ist mit dem Upstream, wenn nicht bereits getan.

5
wilane

Check out cmd-key-happy. Diese kleine App hat für mich Wunder gewirkt. Sie können den Befehl als Meta verwenden, mit Ausnahmen, die Sie konfigurieren können.

Angaben des Autors folgen:

Mit diesem Programm können Sie den Befehl und die Alt- (oder Optionstasten) In einer beliebigen Anwendung, insbesondere aber in Terminal.app, austauschen. 

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

5
stuntmouse

Spezielle Tastaturbelegung mit Option Deadkey

S. Custom . Es gibt eine Option deadkey , die Optionskombinationen erzeugt, ohne dass die physischen verwendet werden müssen⌥ OptionModifizierertaste. Beispielsweise wird das Zeichen auf einem normalen US-Tastaturlayout wie folgt erzeugt:

  • Schlagen⌥ Option+c.

Die US. Benutzerdefiniertes Tastaturlayout fügt eine zweite Möglichkeit zur Erstellung von hinzu:

  • Schlagen⇧ Shift+§(die Option toter Schlüssel), dann loslassen und dann drückenc.

Dies funktioniert auch in Terminal.app, wenn Option als Metaschlüssel verwenden markiert ist.

Beachten Sie, dass das Tastaturlayout für die USA zwei zusätzliche Funktionen umfasst:

  1. Es konvertiert schlicht§in ein⎄ ComposeSchlüssel (so könnten Sie auch ⟨çitting produzieren, indem Sie schlagen§dann,dannc).
  2. Es ersetzt das CapsLock-Mapping durch ein (deutlich erweitertes) U.S. Erweitertes Tastaturlayout .

Ordnen Sie die Optionstaste der rechten Optionstaste zu

Wenn Sie eine physische ANSI-Tastatur haben, fehlt die§Schlüssel. In diesem Fall empfehle ich die Zuweisung der§Schlüssel zu einem anderen Schlüssel, zum Beispiel nach rechts⌥ OptionModifizierertaste. Installieren Sie KeyRemap4MacBook , öffnen Sie ~/Library/Application\ Support/KeyRemap4MacBook/private.xml und fügen Sie den folgenden Code ein:

<?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>

Klicken Sie auf ReloadXML und wählen Sie dann "ISO-Abschnitt für richtige Option senden". Nun, dein⌥ Right OptionTaste wird neu zugeordnet§, auch während der U.S. Benutzerdefiniertes Tastaturlayout ist aktiv und trifft⇧ Shift+⌥ Right Optionwird dir die Option deadkey state (schlagen) geben⌥ Right OptionSie erhalten einen Deadkey-Status, der dem Optionsmodifikator entspricht.

Wenn du behältst willst⌥ Right Optionwann⇧ Shiftwird nicht gedrückt (statt⎄ ComposeChoose you then in a position of KeyRemap4MacBook „Umschalt + ISO-Abschnitt für Umschalt + Rechtsoption senden (normale Rechtsoption ohne Umschalt dauerte)“ (alternative of „ISO-Abschnitt für rechte Option senden“). Nur so⇧ Shift+⌥ Right Optionerzeugt die Option deadkey, während plain⌥ Right Optionfunktioniert weiterhin als Optionsmodifikator. Sie können sogar weiterverwenden⌥ Right Option+⇧ ShiftModifikatorenkombinationen (zum Beispiel⌥ Right Option+⇧ Shift+c→ ⟨Ç⟨), solange Sie nicht treffen⇧ Shiftzuerst.

4
mach

Es lohnt sich, über die Annahme der Frage nachzudenken. Ich meine damit, dass das eigentliche Problem darin besteht, die Zeichen zu erstellen, die momentan den Optionsschlüssel zu benötigen scheinen. Dieses Problem kann gelöst werden, ohne gleichzeitig eine "Meta Key + Alt-Funktionalität" zu erhalten.

Lassen Sie mich erklären: Ich habe ein ähnliches Problem. Auf meiner britischen Tastatur ist shift-3 dem Pfundzeichen £ zugeordnet, was bedeutet, dass ich in der Regel Option-3 drücken muss, um das nützliche # zu erhalten - ein echtes Problem in Terminal, wo ich Option als Meta verwende. Ich finde jedoch, dass die meisten der oben genannten Lösungen etwas übertrieben sind. Ich möchte nicht zu einer anderen Version von Emacs (z. B. Aquamacs) wechseln, zu einer anderen Terminal-Anwendung wechseln (z. B. iTerm oder xterm) oder eine Key-Remapping-Anwendung (z. B. KeyRemap4MacBook) installieren von einem symbol! Vielleicht würde das für manche Leute passen, aber ich dachte, es lohnt sich, darauf hinzuweisen, dass das Problem nur aus einem Zeichen besteht und mit einer Textdatei mit neun Zeichen gelöst werden kann.

In Bezug auf meine persönliche Version dieses Problems finde ich die einfachste Lösung, eine Datei mit dem Namen .inputrc in meinem Home-Verzeichnis zu erstellen, die aus der folgenden einzelnen Zeile besteht:

"§": "#"

Dies ordnet den (für mich recht nutzlosen) §, der links von der 1 auf der aktuellen Mac-Tastatur gefunden werden kann, auf das (fast unverzichtbare) # um. Das passt mir sogar noch besser als das Standard-Setup, da ich jetzt # mit einem einzigen Tastendruck erhalten kann. Wenn es andere Charaktere gab, die ich neu zuordnen musste, müsste nur eine zusätzliche Zeile für jeden hinzugefügt werden.

Wie auch immer, es geht darum, wie man das fehlende Zeichen in der Shell bekommt, aber wenn man es auch in Emacs haben möchte (was Sie nicht gesagt haben, aber wahrscheinlich der Fall ist), können Sie Ihrer .emacs-Datei etwas hinzufügen (35) ist das ASCII für das Zeichen, das ich will, dh #):

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

Es wäre vielleicht keine so nette Lösung, wenn es Dutzende von Zeichen gibt, auf die ich routinemäßig über die Optionstaste zugreifen wollte, aber es gibt keine.

Ich hoffe das hilft jemandem. Als Wochenend-Hacker wage ich normalerweise keine Antwort auf eine Frage zu Stack Overflow ...

3

Die obigen Antworten erwähnen Möglichkeiten, Eingaben außerhalb des ASCII-Formats einzugeben, aber das ist hier nicht wirklich das Problem. Mit der C-x 8-Methode können Sie eine Reihe von Nicht-ASCII-Dateien eingeben. Das Problem ist jedoch, dass Sie die Optionstaste auf dem Mac nur benötigen, um das (ASCII-) Zeichen "|" einzugeben. (senkrechter Strich)! 

Wie trägst du dann Sachen wie M- | ein? (Region zu Shell-Befehl) beim Ausführen von emacs in ssh unter Terminal.app? Keine Möglichkeit, aber den Escape-Schlüssel zu verwenden, da | Ist Option-7 und Terminal.app aus irgendeinem dummen Grund nicht zulassen, dass Sie Cmc als Meta verwenden :-(

(Wenn jemand einen Hack kennt (SIMBL vielleicht?), Der Terminal.app tatsächlich dazu bringt, Cmd als Meta zu verwenden, wäre ich sehr dankbar ...)

3
unhammer

Die folgende Lösung funktioniert, ist NAUFFÄLLIG und Sie brauchen iTerm2 nicht oder Aquamacs oder was auch immer.

Schritt 1

Behalten Sie die "Option als Metaschlüssel verwenden" aktiviert ON in den Terminal.app-Einstellungen.

Schritt 2

Bearbeiten Sie ~/.inputrc ( und fügen Sie die folgende Zeile hinzu, falls sie noch nicht existiert :

"\e3": '#'

Dies wird neu zugeordnet⌥ alt+3damit Sie ein #- Zeichen erzeugen wie im Terminal erwartet, anstatt dass es ärgerlich mit dem Prompt (arg: 3) zurückkommt.

Schritt 3

Bearbeiten Sie ~/.emacs und fügen Sie die folgende Zeile hinzu:

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

Dies wird neu zugeordnet⌥ alt+3so dass Sie ein # -Zeichen erzeugen wie in Emacs erwartet, anstatt dass es ärgerlich nichts tut.


Einschränkung 1, Dies ist nur 1 Neuzuordnung. So⌥ alt+?( andere Tasten ) werden nicht neu zugeordnet, z. Sie möchten möglicherweise neu zuordnen⌥ alt+nUm den Tildeschlüssel zu erzeugen, ~. Befolgen Sie einfach die gleichen Schritte wie oben beschrieben und wechseln Sie offensichtlich3mit welchem ​​Schlüssel Sie vorwärts gehen müssen.

Einschränkung 2, Wenn Sie in ein anderes Feld ssh eingeben, müssen Sie nur die Dateien ~/.inputrc und ~/.emacs in diesem Feld bearbeiten.

Einschränkung 3, Ich bin Brite auf einem britischen MacBook. Ich kann mich auch nicht für ausländische MacBooks verbürgen.

2
Charles Foster

Aquamacs unterstützt das zumindest für meine (französische) Tastatur. Sobald Aquamacs installiert ist (per Drag'n'Drop), können Sie zu Optionen -> Option, Befehl, Metatasten gehen und eine geeignete Einstellung für Ihre Tastatur wählen (in meinem Fall ... Meta & Französisch). Ich kann nicht mit Emacs umgehen, aber alle nützlichen Kombinationen, die ich versucht habe, scheinen zu funktionieren ([ {, | usw.).

Unterstützte Tastaturen laut den Menüpunkten ab Version 2.1:

  • Britisch
  • UNS
  • Schweizerisch-französisch
  • Schweizerdeutsch
  • Finnisch
  • Italienisch-Pro
  • Italienisch
  • Spanisch
  • Französisch
  • Deutsche

Ich würde vermuten, dass das Aquamacs-Team für jeden Beitrag dankbar wäre, sollte Ihre Tastatur nicht in der Liste erscheinen.

2
Gary Verhaegen

Ich biss ins Gras und fing stattdessen an, den Escape-Schlüssel zu schlagen. Sie gewöhnen sich daran ...

1
KristianR

Ich würde diese Frage gerne modifizieren, weil ich auch eine schwedische Tastatur benutze, bei der ich alt + 7 oder alt + shift + 7 drücken muss, um | zu machen und \. 

Ich benutze Irssi auch in Terminal.app und diese passen nicht gut zusammen. 

Ich bin ein langjähriger Vim-User, obwohl Emacs für mich kein Thema ist. 

Gibt es keine Möglichkeit, CMD in Terminal.app als Meta neu zuzuordnen? 

Bis jetzt habe ich überlebt, indem ich einfach/wg N in Irssi eingetippt habe, denn diese Zeichen in meinem Terminal zu haben, ist viel wichtiger als IRC. 

Eine Lösung wäre für mich Gold wert! :)

0
Stefan M

Dies ist Jahre zu spät, aber für Leute, die auf dieser Seite auf der Suche nach einer Lösung stoßen, habe ich, wie ich es tat, selbst eine erstellt, die es nicht erforderlich macht, Terminal.app für iTerm 2 aufzugeben.

Es ist eine einfache Statusleisten-App, die im Hintergrund ausgeführt wird und alle linken Alt + $ KEY-Schlüsselereignisse in schneller Folge in zwei wichtige Ereignisse umschreibt: Esc, dann $ KEY. Dies geschieht jedoch nur, wenn es sich bei Terminal.app um die fokussierte Anwendung handelt.

Sie finden es hier unter https://github.com/habibalamin/Metalt .

0
habibalamin

Ich habe der Feststelltaste einen Fluchtweg zugewiesen und das funktioniert ganz gut. Sie können es einfach in den Mac-Systemeinstellungen> Tastatur> Modifikatortasten konfigurieren.

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

0
Felix Geenen