emacsclient Superschlüssel oder Hyper-Schlüssel in iterm2

1258
Mahmoud Abdelkader

Was der Titel sagt: Ich möchte auf ein Emacs-Server / Emacs-Client-Modell wechseln, anstatt die GUI für Mac OS X zu verwenden. Ich verwende iTerm2. Ich möchte die Funktionstaste (Fn) zu Super oder Hyper zuordnen.

Ich habe es mit KeyRemap4MacBook versucht - aber kein Glück.

Aktualisieren:

Es sieht so aus, als könnte ich verwenden event-apply-super-modifieroder event-apply-hyper-modifier, definiert durch function-key-map.

Ich kann wahrscheinlich die Fn-Taste dazu bringen, einen gebrauchten Schlüsselcode auszusenden, wie KeyCode::F18, und iTerm2 diese in einige Escape-Zeichen übersetzen lassen, wie:

Esc+[+J oder sowas ähnliches.

UPDATE (13. April 2015):

Ich denke, dass https://apple.stackexchange.com/questions/144481/sending-controlalt-char-to-terminal-in-iterm2 sehr interessant ist. Möglicherweise kann iterm2 so konfiguriert werden, dass die entsprechenden Steuertasten gesendet werden, ähnlich der Antwort von @ toolbear74.

2
Betrachten Sie [diesen Port] (https://github.com/railwaycat/emacs-mac-port), der native Unterstützung für Fn-Schlüssel bietet. Wenn Sie den Emacsclient auch von diesem Port aus erstellen, können Sie einen grafischen Client für den Emacs-Dämon nutzen, ohne einen X-Server betreiben zu müssen, und zwar mit einem recht umfangreichen Aqua-Support. (Es hat jedenfalls sehr gut für mich funktioniert.) Aaron Miller vor 11 Jahren 1
Womit bist du am Ende gegangen? lipsum123483 vor 9 Jahren 0
@Tricon konnte das nicht herausfinden und es war mein Hauptblocker, direkt zu einem Terminal-basierten Emacs-Erlebnis zu wechseln. Lassen Sie mich wissen, wenn Sie etwas finden. Mahmoud Abdelkader vor 9 Jahren 0

1 Antwort auf die Frage

1
toolbear74

Nicht zufriedenstellende Problemumgehung

Die Reihenfolge C-x @ s-…ist äquivalent zu s-…zB C-x @ s-tist äquivalent zu s-t. Kombiniert mit iTerm2-Shortcuts:

  1. Erstellen Sie eine globale Verknüpfung oder eine Profilverknüpfung zum ⌘…Setzen auf Send hex code, z⌘t => Send hex code
  2. Hex - Code des Formulars angeben: 0x18 0x40 MOD KEYwo MODentweder ist 0x68oder 0x73für hund sjeweils und KEYist der Schlüssel Sie mit modifizierten wollen hyperoder super. ZB Zuordnung ⌘tzu s-t:

    ⌘t => 0x18 0x40 0x73 0x74 
  3. Wiederholen Sie dies für jede gewünschte Abkürzung… meh…

Fehlgeschlagenes Experiment Nr. 1

In iTerm:

  1. Linke und rechte Optionstaste global als linke Option konfigurieren
  2. Linke und rechte Befehlstaste global als rechte Option konfigurieren
  3. Konfigurieren Sie in einem Profil Left Option als +ESCund Right Option alsMeta

Durch diese Zuordnung werden alle Tastenkombinationen von iTerm effektiv deaktiviert.

In Emacs:

Die Verwendung von Right Option ( R⌥) führt dazu, dass Zeichen mit dem 8. Bit gesetzt werden. Wie ich es verstehe, ist dies die alte Art, den META-Tastendruck darzustellen (zurück, wenn die Tastaturen eine echte META-Taste hatten).

Ich habe es jedoch nicht geschafft, dass Emacs mit dieser Unterscheidung etwas Nützliches unternimmt. In Anbetracht dessen META-t=> tmit seinem 8. Bit auf => octal 364habe ich versucht:

(global-set-key (kbd "[R⌥-t]") (lambda () (interactive) (message "woot #1"))) (global-set-key (kbd "\364") (lambda () (interactive) (message "woot #2"))) 

Wo [R⌥-t]ist das individuelle Zeichen, das in meinem Puffer erscheint, wenn ich diese Tastenkombination drücke, grafisch dargestellt als, \364aber sich als einzelnes Zeichen verhält.

Es ist erwähnenswert, dass wir ohne Tastenkombination R⌥-tnichts weiter in emacs drücken, bis ich eine andere Taste drücke, auf der emacs den \364Buchstaben gefolgt von der Interpretation des zweiten Tastendrucks anzeigt . Zum Beispiel R⌥-t a=> \364a<point>und R⌥-t LEFT=> <point>\364, aber nur nachdem aoder der linke Pfeil gedrückt wurde.

Sie können experimentieren, indem Sie nur Schritt 3 oben ausführen und R⌥direkt verwenden.