2010-12-02 17 views
8

¿Es posible de alguna manera enviar la clave "C- (" a Emacs sobre un terminal VT100/xterm (Mac OS X) Terminal)? ¿Hay una secuencia de escape que podría enviarse para lograr el equivalente?Enviar "C- (" a Emacs en terminal VT100/xterm (Terminal Mac OS X)?

Sospecho que el problema fundamental es que el concepto de combinar el control con el carácter "(" (y otros caracteres que se producen mediante turno) no existe.

Nota: Usar Cocoa Emacs no es una opción. Y la razón para necesitar "C- (" es que paredit.el lo usa entre otras combinaciones de teclas, y sería preferible no reasignarlo (porque tiene sentido tenerlo en "C- (").

Respuesta

14

Un terminal VT100 no pudo hacer eso, porque no hay un carácter de control ^( correspondiente al (. Sin embargo, xterm tiene el modo llamado "modifyOtherKeys", que permite enviar códigos de tecla únicos para combinaciones como esa.

Para habilitarlo, configure el recurso modifyOtherKeys, p. en ~/.Xdefaults:

XTerm*vt100.modifyOtherKeys: 1 

Con eso, Ctrl + (enviará el siguiente código clave:

^[[27;6;40~ 

Eso es bastante largo, aunque, por lo que otro formato de códigos de teclas como el que se introdujo, que se puede activar mediante el establecimiento de la formatOtherKeys de recursos:

XTerm*vt100.formatOtherKeys: 1 

Con eso, Ctrl + (envía:

^[[40;6u 

En estos dos códigos de tecla, el 40 es el código ASCII decimal para (, y el 6 representa la tecla Ctrl.

Consulte man xterm y http://invisible-island.net/xterm/ctlseqs/ctlseqs.html para obtener más información. No tengo idea si Terminal.app admite alguno de ellos.

+0

Gracias, esto es casi perfecto. Parte del rompecabezas fue encontrar el código de escape que generaría "C- (", que proporcionó, logré verificar que también funciona en la Terminal de MacOS X. Ahora, sin embargo, noté que la Terminal de MacOS X, lamentablemente, no proporciona mapeo arbitrario teclas (en este caso, Ctrl + paréntesis) para escapar de las secuencias: solo se puede mapear la función, la flecha y algunas otras teclas. –

+1

iTerm2 le permitirá reasignar claves arbitrarias para escapar de las secuencias. –

+0

Más de 4 años de antigüedad y aún así salvar personas detrás. Buen tipo @ ak2 :) – zeusdeux

Cuestiones relacionadas