Die akzeptierte Antwort in Kombination mit der link in the first comment to it reicht aus, um mit einer Komplettlösung zu beginnen. Die Schritte sind:
- Terminalausgang Escape-Codes machen für den Schlüssel
- Emacs machen die Escape-Codes als Standard keypress
- binden die keypress in einem Modus Karte erkennen
der ersten ist sehr terminal und/oder Betriebssystem abhängig.
Der Link im ersten Kommentar zeigt einige Beispiele für X Window System. Die Schlüsselnamen sind in /usr/X11R6/include/X11/keysymdef.h
verfügbar (oder versuchen Sie locate keysymdef.h
) mit dem Präfix XK_
(das für unsere Zwecke entfernt werden sollte).Ich habe gelesen, dass symbolische Namen den Schlüsselliteralen vorgezogen werden.
ich derzeit nicht X laufen, aber ich denke, es ist, wie dies in Ihrem Fall aussehen sollte:
XTerm.VT100.Translations: #override \
Ctrl ~Meta ~Shift <Key> equal: string(0x1b) string("[emacs-C-=")\n
Der erste String ist die Flucht, die zweite ist Ihrer Wahl.
In iTerm können Sie Preferences->Keys
verwenden und Send Escape Sequence
als Action
wählen. Zum Beispiel habe ich:
Emacs Wiki lists some configuration methods für andere Endgeräte.
Jetzt können Sie Emacs lehren, es als C- = zu erkennen. Zuerst define-key
in input-decode-map
. Ich habe ein paar Hilfsfunktionen:
(defun my/global-map-and-set-key (key command &optional prefix suffix)
"`my/map-key' KEY then `global-set-key' KEY with COMMAND.
PREFIX or SUFFIX can wrap the key when passing to `global-set-key'."
(my/map-key key)
(global-set-key (kbd (concat prefix key suffix)) command))
(defun my/map-key (key)
"Map KEY from escape sequence \"\e[emacs-KEY\."
(define-key function-key-map (concat "\e[emacs-" key) (kbd key)))
Also:
(my/global-map-and-set-key "C-=" 'some-function-to-bind-to)
Einige Tasten (aktuell: ()\|;'`"#.,
) müssen in der Zeichenfolge zu entkommen, wie C-\.
.
C-i wird im Allgemeinen als "TAB" in Emacs übersetzt. Ich bin also nicht überrascht, wenn 'C-M-i' mit' M-TAB' übersetzt wird. – kindahero