Оболочка иногда не может вывести ESC ^ [символ перед escape-последовательностью

388
Accumulator

Иногда, когда нажимается клавиша со стрелкой (обычно вверх) внутри оболочки, терминал или оболочка не могут вывести ESCсимвол перед escape-последовательностью, поэтому, если я нажимаю стрелку вверх, чтобы попытаться увидеть последнюю команду, она выводит [Aна bash и OAна зш, вместо последней команды. Он работает правильно при следующем нажатии клавиши со стрелкой.

Это происходит независимо от используемого эмулятора терминала или оболочки (но он используется OAвместо [Azsh).

Я не могу сказать точные обстоятельства, в которых это происходит, это кажется несколько случайным, но обычно это происходит в следующий раз, когда я нажимаю стрелку после переключения окон с помощью моего оконного менеджера (i3).

Это не потому, что я слишком быстро нажал клавишу после переключения окон, потому что я могу переключать окна, вводить текст в оболочку, а после этого нажимать клавишу со стрелкой, и она все равно будет выводить [A/ OA.

Это может быть связано с тем, что я использую i3 в качестве моего оконного менеджера.

Что я могу сделать, чтобы исправить или отладить эту проблему?

2
Я предполагаю, что вы нажали клавишу `ESC`, прежде чем возникнет эта проблема. Дело не в том, что вводный ESC последовательности проглочен; вместо этого он комбинируется с ранее буферизованным (два байта ESC образуют что-то), а затем последующие `OA` или` [A` обрабатываются как простые строковые литералы. egmont 6 лет назад 0
Если я нажму клавишу `ESC` перед выпуском, она будет в другом терминале. Нажатие клавиши «ESC» в другом терминале (обычно внутри vim), затем переключение терминалов * иногда * вызывает проблему, но это не всегда воспроизводимо. Accumulator 6 лет назад 0
Как вы меняете окна? Включено ли нажатие клавиши, как Alt + Tab? Что именно? Попробуйте проверить и сообщить о наличии корреляции: переключитесь с терминала на другое окно, затем переключитесь назад и нажмите стрелку. Попробуйте все комбинации (0. нажатие клавиши вперед, нажатие клавиши назад; 1. нажатие клавиши вперед, щелчок мышью назад; 2. щелчок вперед, нажатие клавиши назад; 3. щелчок вперед, щелчок назад). Kamil Maciorowski 6 лет назад 0
Я всегда переключаю окна с помощью `alt + hjkl` (alt - ключ мода) Accumulator 6 лет назад 0

1 ответ на вопрос

0
DGoiko

У меня недостаточно репутации, чтобы оставлять комментарии, поэтому, пожалуйста, не понижайте меня, вместо этого перенесите мой ответ в комментарии, если вы чувствуете, что это очень глупо:

Я вижу четыре возможных сценария (очень общий из-за отсутствия подробностей о драйвере, ядре, дистрибутиве, модели клавиатуры ...):

  1. Сломанная клавиатура.
  2. Проблема оконного менеджера.
  3. Проблема с драйвером / ядром.
  4. Проблема локали.

Возможные решения:

  1. Я видел сломанные клавиатуры, работающие аналогичным образом, посылающие странные сигналы клавиш в случайное время, особенно (но не только) после нажатия других клавиш (вы сказали, что переключаете окна с помощью клавиатуры, а также). Попробуйте другую клавиатуру, чтобы увидеть, если это все еще происходит. Я видел это более часто на беспроводных клавиатурах, но у меня была доля странных вещей и на проводных клавиатурах. Проверьте, происходит ли это иногда без менеджера окон в режиме консоли.
  2. С i3 может быть что-то не так (без более подробной информации я не могу дать вам более глубокий ответ). Обновите i3 или временно установите другой оконный менеджер и посмотрите, не возникнет ли ошибка снова.
  3. Если вы переключаете окна с помощью клавиатуры, это может быть связано с неправильным чтением буфера клавиатуры. Попробуйте обновить ядро, чтобы увидеть, решает ли оно проблему que. Если у вас установлено программное обеспечение для виртуализации, возможно, оно сломало ваш драйвер при срабатывании зацепок клавиатуры ...
  4. Там может быть что-то странное в вашей клавиатуре. Даже если это маловероятно, вы можете попытаться получить или сгенерировать новый файл локалей.
1. Это все еще происходит, определенно не клавиатура. 2. Используя bspwm сейчас, без разницы. 3. Я скоро попробую. 4. Попробуй это сейчас. Accumulator 6 лет назад 0

Похожие вопросы