23 votos

¿Cómo puedo enviar C-/ (es decir, barra de control) al terminal?

Estoy intentando ejecutar Emacs en un terminal. He activado la "opción de uso como meta" en las preferencias de la terminal y por lo que es alrededor de 95% de trabajo correcto.

La secuencia de teclas ctrl-/ (o en notación Emacs C-/) es "deshacer". Esta secuencia de teclas sólo hace que el terminal suene una campana. ¿Cómo puedo arreglar esto?

0 votos

Por cierto, esto funciona en iTerm2 - iterm2.com - pero creo que voy a volver a entrenarme para usar ^_ en todas partes, para ser más portátil.

0 votos

@StevenR.Loomis portable? ni control-/ ni control-_ funcionan en Android...

0 votos

@Michael Dije portátil porque es representable en ASCII (ver respuesta aceptada) y así puede transitar por conexiones de red sin problemas. Además, parece ser utilizable en la mayoría de los teclados físicos que he visto. No he probado a emparejar un teclado con el dispositivo Android, ¿te refieres a un teclado blando o duro?

26voto

Nip Puntos 362

Control- / no forma parte del conjunto de códigos de control estándar . No es directamente representable como una pulsación de tecla en muchas emulaciones de terminal. Dicha pulsación sólo es detectable correctamente en ciertos "modos de escaneo" o "modo GUI" específicos de la plataforma (en los que la API le indica exactamente qué teclas y modificadores se están utilizando). Su emulador de terminal emite un pitido porque efectivamente se trata de una pulsación no válida.

Los códigos de control estándar sólo cubren las versiones "Control" de

  • @ A - Z [\]^_ (ASCII 0 - 31), y
  • ? (ASCII 127)

En la mayoría de los programas de emuladores de terminal que se ejecutan con la mayoría de las distribuciones de teclas de EE.UU., es posible que tenga que pulsar Shift para generar algunos de los "Códigos de control":

  • C-@ es ControlShift2 (ya que @ es Shift2 )
  • C-^ es ControlShift6 (ya que ^ es Shift6 )
  • C-_ es ControlShift- (ya que _ es Shift- )
  • Sin embargo, C-? no siempre puede ser ControlShift/ (ya que ? es Shift/ ); C-? suele generarse mediante Backspace (en los teclados Apple, la tecla denominada simplemente "suprimir" sin el símbolo adicional ) o Delete (el de los teclados Apple).

En Emacs basado en tty, normalmente se puede utilizar C-_ para undo en lugar de C-/.

1 votos

Gracias por la exhaustiva respuesta. Voy a intentar jugar con diferentes tipos de terminales para ver si consigo que funcione.

1 votos

¿"Diferentes tipos de terminales"? ¿Te refieres a diferentes programas emuladores de terminal, o te refieres al valor $TERM, que en Terminal se establece a través de Terminal > Preferencias > Configuración > [perfil] > Avanzado > Declarar terminal como ? (Lo único que hace esa preferencia es establecer el valor de $TERM. No cambia el funcionamiento de la emulación de terminal). Control-/ es una característica de X11 y no es soportada por Cocoa o Terminal.

12voto

Kenji Noguchi Puntos 101

Ctrl-/ envía 0x1f que es equivalente a Ctrl-_ desde los días de VT102. Hay muchos emuladores de VT100 pero en realidad son emuladores de VT102. iTerm2 funciona porque sigue este comportamiento.

Sólo los emuladores que se ajustan estrictamente a la especificación VT100 no pueden enviar Ctrl-/. Creo que la aplicación Terminal es uno de ellos.

VT100 enmascara 2 bits más significativos de 7 bits ASCII cuando se pulsa la tecla de control. / es 0x2f, o es 0x6f. Cuando los 2 bits están enmascarados son ambos 0x0f. VT100 puede enviar Ctrl-o pero no Ctrl-/.

0 votos

Esta debería ser la respuesta aceptada.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X