3 votos

En OS X Lion 10.7.4 en la Terminal.app no puedo tipo `C-M-@` o `C-M -%`, ¿por qué?

En mi MacBook Pro con OS X Lion 10.7.4, no parece ser un problema del teclado. Por primera vez me di cuenta de este problema cuando traté de usar el valor predeterminado keybinding para ejecutar mark-sexp y query-replace-regexp de emacs, que están destinadas, respectivamente, a C-M-@ y C-M-% por defecto. Como puedo usar emacs mucho, yo realmente echo de menos estas dos características de gran alcance mucho.

Como no tengo experiencia en el trato con los tipos de terminal, etc, me hizo una simple depuración dentro de emacs:

  • C-M-f y C-M-b funcionan como se esperaba. Para el control y la opción de trabajar bien juntos.
  • M-%, M-< y M-> funcionan como se esperaba. Así que la opción y cambio de trabajar bien juntos.
  • C-S-backspace no funciona. (Pero yo nunca he probado este comando antes; la primera vez que me encontré fue hoy cuando la he encontrado en el manual de emacs.) Pero C-@ funciona como se esperaba. Por lo que el control y el cambio probablemente trabajan bien juntos.
  • Si no me equivoco, el comando digit-argument está obligado a C-9, C-8, etc. Estas teclas no funcionan así. Me han asegurado que en las Preferencias del Sistema.la aplicación me ha desactivado estas teclas para cambiar de espacios.

En La Terminal.aplicación de preferencias, he seleccionado "utilizar la opción como meta clave", ya que alivia a escribir el emacs de combinaciones de teclas. También he probado a desactivar esta opción y usar la tecla ESC, pero aún sin éxito. Alguna idea?

P. S. me lanzó X11.de la aplicación y en la ventana de xterm empecé a emacs. El uso de ESC como meta, C-M-% y C-M-@ funcionan perfectamente. En el Cacao versión de Emacs, estos dos funcionan perfectamente. Así que supongo que es un Terminal.aplicación de error o probablemente podría haber un ajuste o de configuración de switch me puede ajustar para hacer este trabajo en la Terminal.aplicación?

Y aquí está la salida de stty -a de emacs shell, esperamos que sea útil...

bash-3.2$ stty -a
speed 9600 baud; 0 rows; 0 columns;
lflags: icanon isig iexten -echo echoe -echok echoke -echonl echoctl
    -echoprt -altwerase -noflsh -tostop -flusho -pendin -nokerninfo
    -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel -iutf8
    -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost -onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
    -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
    eol2 = <undef>; erase = <undef>; intr = ^C; kill = <undef>;
    lnext = ^V; min = 1; quit = ^\; reprint = ^R; start = ^Q;
    status = ^T; stop = ^S; susp = ^Z; time = 0; werase = ^W;
bash-3.2$ 

El mismo comando directamente desde el shell:

$ stty -a
speed 9600 baud; 24 rows; 80 columns;
lflags: icanon isig iexten echo echoe -echok echoke -echonl echoctl
    -echoprt -altwerase -noflsh -tostop -flusho pendin -nokerninfo
    -extproc
iflags: -istrip icrnl -inlcr -igncr ixon -ixoff ixany imaxbel iutf8
    -ignbrk brkint -inpck -ignpar -parmrk
oflags: opost onlcr -oxtabs -onocr -onlret
cflags: cread cs8 -parenb -parodd hupcl -clocal -cstopb -crtscts -dsrflow
    -dtrflow -mdmbuf
cchars: discard = ^O; dsusp = ^Y; eof = ^D; eol = <undef>;
    eol2 = <undef>; erase = ^?; intr = ^C; kill = ^U; lnext = ^V;
    min = 1; quit = ^\; reprint = ^R; start = ^Q; status = ^T;
    stop = ^S; susp = ^Z; time = 0; werase = ^W;
$

(Comentario: parece extraño que la sintaxis de un bloque de código es de cuatro espacios anteriores. Son todos StackExchange usuarios que se espera que sepa cómo utilizar paste(1), sed(1) o rectángulo ediciones?)

6voto

Old Pro Puntos 2851

En general, las aplicaciones de Mac que están esperando la entrada de texto desde el teclado no manejan C-S combinaciones o C dígitos combinaciones. Los programas que funcionan con el control de cambio de combos (como cualquier cosa que se ejecuta bajo X11), lo hacen por el manejo de los eventos clave como los eventos, no de entrada de caracteres. Esta es la forma en que se puede diferenciar entre la Tab y Ctrl-i, las cuales generan el mismo carácter ASCII. (Se puede leer en detalle cómo el Lion (realmente Cacao) maneja los eventos clave si usted realmente quiere saber.)

Históricamente (de vuelta en el Teletipo días), no fueron sólo las letras mayúsculas en el teclado, y no había ningún signo de intercalación (^) o un carácter de subrayado (_) caracteres en el teclado (en su lugar había una flecha hacia arriba y de atrás de la flecha). La tecla mayús trabajado por la alternancia de los 16 bits y la clave de control trabajado por la puesta a cero de los 64 bits del 7-bit ASCII códigos del teclado producido.

Lo que esto significa es que la tecla de control no tuvo ningún efecto para el de 32 caracteres en el teclado que ya tenían sus 64 bit se establece en cero (la mayoría de los caracteres no alfabéticos, incluyendo dígitos), y desde el teletipo fue a propósito limitado, en letras mayúsculas sólo la tecla shift no tuvo ningún efecto sobre la mayoría de los caracteres alfabéticos (y donde tenía un efecto, se produjo una de caracteres especiales como @).

Adicional rareza fue añadido en la migración a apoyar a minúsculas el texto, como la tecla de control de combos fueron todos escritos sin usar la tecla mayús pero ahora la carta escrita a máquina sin utilizar la tecla mayús había cambiado, por lo que la decisión fue para control de mapa-de menor caso a lo que había sido el control de la parte superior de caso. Pero entonces, ¿qué hacer con el control de cambio?

Por un tiempo el problema era manejado por tener el control de la tecla puesta a cero de los 32 bits, que es lo diferenciadas letras minúsculas de mayúsculas. Pero finalmente ASCII fue reemplazado con Unicode y los tipos de duplicar las asignaciones de teclas eran demasiado de una pérdida de teclado espacio para ser autorizados a continuar, por lo que tiene diferentes asignaciones, y en el estándar de Mac NOS teclado la mayoría de los C-S combos están sin asignar.

Así que lo que tienes es el legado de soporte para la entrada de teclado corriendo de vuelta a Teletipo días. Los personajes de la Terminal (y otras aplicaciones de OS X) no apoyo son caracteres que no podía escribir en el Teletipo de teclado. Como prueba de ello, tenga en cuenta que el C-S-2 (C-@), C-S-6 (C-^), y C-S-- (C-_) todo el trabajo, porque esas teclas han sido re-asignado desde el ASR-33, donde S-2 " (y @ fue de S-P), S-6 y, y S-- fue =, pero en general el control de cambio de combos no producen caracteres de cualquier tipo.

0voto

Sean Barbeau Puntos 176

Sólo compartir,

He tratado de personalizar las teclas y por la transposición de la opción de comando como meta , pero sin ningún éxito.

Lo que me doy cuenta de que es Terminal.la aplicación no reconoce los 4 botones simultáneamente. O al menos creo que no.

Sin embargo, esto puede ayudarle a establecer su keybinding a través de software.

También me enteré de otros debates relacionados con este así.

(btw digit-argument trabaja con M-{1..9}, no con C-{1..9} como se mencionó. extraña)

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