Это частично приложение, частично конфигурация. В зависимости от того, предназначено ли описание терминала для имитации VT220 или ПК -, клавиатура редактирования -может иметь разные имена, присвоенные клавишам. В то же время приложение curses увидит только первое, поэтому дубликаты помечаются (тиковыми предупреждениями )и вообще удаляются.

Emacs не является приложением curses, но использует описание терминала, предоставленное ncurses. Таким образом, в описании вашего терминала будет отображаться тот или иной конец/выбор. Вы можете изменить описание терминала...

Дополнительная литература:Почему моя клавиатура не работает?

(Об этом есть более длинный комментарий в xterm файле terminfo ).

1
28.01.2020, 02:29

emacs прав. Что является исходной (исходной )управляющей последовательностью для клавиши выбора . Но это, скорее всего, правильно через окольный процесс.

DEC VT102 не имел клавиатуры редактирования. Это прибыло с более новыми моделями. Вот клавиатура DEC VT320 с клавиатурой редактирования, справа от центра над клавиатурой курсора.

This is a DEC VT320 keyboard

Управляющие последовательности DEC VT220 для клавиатуры редактирования, откуда все это пошло, это (с возможностью кодирования модификаторов, добавленных начиная с DEC VT420):

  • найти:DECFNK 1 (т. е. CSI1~или CSI1;Mods~)
  • вставить:DECFNK 1 (, т. е. CSI2~или CSI2;Mods~)
  • удалить также известное как удалить:DECFNK 3 (т. е. CSI3~или CSI3;Mods~)или DEL
  • выберите:DECFNK 4 (, т. е. CSI4~или CSI4;Mods~)
  • следующий экран он же PgDn:DECFNK 5 (т. е. CSI5~или CSI5;Mods~)
  • предыдущий экран также известный как PgUp:DECFNK 6 (т. е. CSI6~или CSI6;Mods~)

Консоль SCO XENIX Multiscreen работала на машинах с клавиатурами IBM Model M и определялась:

  • домашний:CUP (т. е. CSI Hтеоретически расширяемый до CSI1;ModsH)
  • конец:CPL (т. е. CSI Fтеоретически расширяемый до CSI1;ModsF)

DEC VT52x скопировал некоторые элементы из консоли SCO, в том числе эти дополнительные последовательности управления. Было два возможных расположения клавиатуры редактирования на DEC VT52x:

  • Схема ТН ,то же, что и DEC VT220/320/420 :
    • найтивставитьудалить
    • выберитепред.след.
  • Компоновка ПК , такая же, как у IBM Model M :
    • вставкаглавная страницаPgUp
    • удалитьконецPgDn

Функции переходят к физически другому расположению клавиш под управлением настроек микропрограммы в самом терминале. Но отображения функций в их управляющие последовательности инвариантны .

Проблема в том, что благодаря самиздату и бабушкиным байкам люди перепутали их в нескольких терминальных эмуляторах . Эмулятор терминала, встроенный в ядро ​​Linux, например, имеет ублюдочную смесь этих двух. Он использует «компоновку ПК», но (, несмотря на то, что в другом месте имитирует SCO Multiscreen ), отправляет неверные управляющие последовательности для home и end . Он отправляет управляющие последовательности find и select .

Эта ошибка теперь встроена. И оттуда она распространилась.

    Например,
  • mintty обычно отправляет последовательности SCO для home и end . Но у него есть «режим VT220», который заставляет его вести себя так же, как эмулятор терминала Linux, что отличается от поведения VT220 , не в последнюю очередь потому, что он использует раскладку «ПК». , которого не было у VT220.
  • rxvt использует совершенно неверные коды DECFNK для home и end , перекрывая два назначения DECFNK для клавиатуры курсора, DECFNK 7 и DECFNK 8.

Это постоянно вызывает легкую икоту.

Наиболее частая проблема связана с неправильным типом терминала. В базе данных terminfo есть записи для putty, mintty,linuxи др.которые определяют соответствующие возможности kend/ khome/ kfnd/ ksltсо значениями, выдаваемыми этими типами терминалов. Но если кто-то ошибочно вместо этого использует vt220, так как mintty можно дополнительно установить в качестве TERMпеременной окружения , что minty отправляет как home и end понять приложения как найти и выбрать .

Это, вероятно, то, что происходит в вашем случае. Незначительная проблема заключается в том, что приложение, выполняющее понимание, — это tmux, которое распознает управляющую последовательность как select , в соответствии с унаследованным TERM, установленным на что-то вроде vt220, а затем повторно -кодирует его и передает дальше.

Дополнительная литература

1
28.01.2020, 02:29

Теги

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