1 votos

Los caracteres y las notificaciones rebotan cuando el Terminal pierde el foco

OSX 10.11.2 Terminal 2.6.1

Tengo un problema intermitente que me está poniendo de los nervios. Paso mucho tiempo en Terminal en modo de pantalla completa en mi Macbook Air de 11" de 2015. Generalmente tengo Chrome o Notational Velocity o alguna otra cosa en uno de los "Espacios" cercanos y cambio de un lado a otro con el gesto de deslizar cuatro dedos (habilitado en System Preferences -> Trackpad -> Swipe between full screen apps ).

Desde hace varios meses, una de las pestañas de mi Terminal empieza esporádicamente a darme un "rebote" y el rojo 1 placa para un solo tipo de alerta cada vez que pierda el foco . Suelo notarlo cuando hago un swipe con cuatro dedos para ir de un lado a otro del espacio (que inmediatamente muestra un único rebote del icono de la Terminal y la insignia en el dock).

El terminal actúa con normalidad al volver a enfocar. No veo ninguna notificación o mensaje más que unos caracteres extraños. Fue difícil identificar exactamente qué caracteres, así que ejecuté cat y luego cambió el enfoque, y parece que es ^[[O^[[I . Pensé que esto se parecía a algunas de las secuencias para hacer que las teclas de flecha y especiales se comporten en Terminal -> Preferences -> Profiles -> Keyboard pero no veo ninguno con esos personajes.

Tengo el mismo problema cuando en el modo normal (no de pantalla completa) y hago clic en un icono diferente - incluso en el mismo espacio - y Terminal pierde el foco. Los mismos caracteres, un rebote y una placa, así que no creo que esté relacionado con Mission Control.

A menudo estoy ejecutando tmux y tengo conexiones SSH a algunos servidores, pero no he notado que sea exclusivo de una sesión tmux o SSH. Por ejemplo, actualmente tengo unas cuantas pestañas de Terminal abiertas, y ocurre en una pestaña que ejecuta una sesión SSH (no en tmux), pero no ocurre en otra pestaña que ejecuta tmux en SSH, y no ocurre en otras pestañas abiertas a directorios locales.

No veo nada evidente en Console.app y nada desde Terminal. Normalmente intento incluir un " WHYT " a mis posts de stackexchange, pero apenas puedo saber por dónde empezar aquí estoy perplejo.

No es un problema importante, pero definitivamente es molesto, y no muestra signos de dejarme tranquilo en los últimos meses. Cualquier ayuda para resolver esto sería muy apreciada.

3voto

Yasmine Mustafa Puntos 21

Algún programa con el que estás interactuando ha habilitado el terminal Enfoque de entrada/salida eventos, normalmente utilizados junto con Informes sobre ratones (también conocido como "Xterm Mouse Tracking"). Cuando está activado, el terminal envía eventos al TTY para indicar cuándo el terminal obtiene o pierde el foco del teclado (es decir, se activa o se desactiva).

El comando de terminal para activar los eventos de enfoque es:

CSI ? 1 0 0 4 h

(CSI = Introductor de la secuencia de control: ESC [ .)

Los eventos de entrada/salida de foco que el terminal envía al tty son:

Focus In:  CSI I
Focus Out: CSI O

Estas son las secuencias que se ven cuando se utiliza cat para verlos.

El rebote del icono del muelle del terminal y la insignia indican cuando se envía un BEL (Control-G) al terminal cuando no es el terminal activo/principal. (Hay preferencias para controlar estos comportamientos en Preferencias > Perfiles > [perfil] > Avanzado .)

Así que parece que algún programa ha habilitado los eventos Focus In/Out y está enviando un BEL en respuesta a ellos.

También podría ser que el programa que envía el BEL no es el mismo que el programa que habilitó los eventos Focus In/Out. Por ejemplo, un editor como vim puede haberlos habilitado, pero algún programa de intervención como screen o tmux (o posiblemente ssh aunque parece menos probable) está interceptando los eventos Focus In/Out y respondiendo con un BEL para indicar que considera que la entrada no es válida.

está ocurriendo en una pestaña que ejecuta una sesión SSH

Como no lo has dicho, voy a suponer que estás usando un shell dentro de esa sesión y no otro programa. Si ese es el caso, es probable que hayas ejecutado algún programa precedente dentro de esa sesión SSH que habilitó los eventos de enfoque y luego salió sin deshabilitarlos, dejando que el shell los reciba, y si escribes ESC [ I o ESC [ O manualmente en Bash, por defecto emitirá un BEL para indicar que la entrada se considera inválida.

Si sólo has utilizado un shell dentro de esa sesión SSH, entonces deberías examinar los archivos de inicio/configuración del shell en el host remoto para ver si hay algún código que habilite los eventos de enfoque.

Puedes simular esta situación ejecutando el siguiente comando en Bash (y probablemente en otros shells):

printf '\e[?1004h'

Entonces verás que Bash emite un pitido (envía un BEL) cuando activas o desactivas la vista/ventana del terminal.

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