La respuesta aceptada en combinación con link in the first comment to it es suficiente para comenzar una solución completa. Los pasos son:
- hacer sus códigos de escape de salida de terminal para la clave
- crea Emacs reconocen los códigos de escape como una pulsación de tecla estándar
- unen la pulsación de tecla en un mapa modo de
La primera es muy terminal y/o depende del sistema operativo.
El enlace en el primer comentario muestra algunos ejemplos para X Window System. Los nombres de las teclas están disponibles en /usr/X11R6/include/X11/keysymdef.h
(o intente locate keysymdef.h
), con el prefijo XK_
(que debe eliminarse para nuestros fines).Leí que los nombres simbólicos son preferibles a los literales clave.
que actualmente no ejecutan X pero creo que debería tener este aspecto en su caso:
XTerm.VT100.Translations: #override \
Ctrl ~Meta ~Shift <Key> equal: string(0x1b) string("[emacs-C-=")\n
La primera cadena es el escape, el segundo es de su elección.
En iTerm puede usar Preferences->Keys
y elegir Send Escape Sequence
como Action
. Por ejemplo, tengo:
Emacs Wiki lists some configuration methods para otros terminales.
Ahora puede enseñar a Emacs a reconocerlo como C- =. Primero define-key
en input-decode-map
. Tengo un par de funciones de ayuda:
(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)))
Entonces:
(my/global-map-and-set-key "C-=" 'some-function-to-bind-to)
Algunas teclas (en la actualidad: ()\|;'`"#.,
) tendrá que escapar de la cadena, como C-\.
.
C-i se traduce generalmente como 'TAB' en emacs. Así que no me sorprendería si 'C-M-i' se traduce como' M-TAB' – kindahero