v4567 |
|
Темы:
6
Сообщения:
16
Участник с: 23 февраля 2012
|
Здравствуйте. Помогите решить проблему. На сервере стоит линукс без графики в буквеноцифровом режиме 25х80. Для перемещения по файлам использую Midnight Commander, а для правки конфигов встроенный в него текстовый редактор mcedit Все манипуляции делаю от рута. В редакторе в файле клавиш /root/.config/mc/mc.keymap Для перемещения в верх и вниз открытого текстового файла использую вот эти настройки Top = home; alt-lt Bottom = end; alt-gt то есть вверх перемещаюсь по нажатию home а вниз по нажатию end Для перемещения в конец и начало строки использую вот эти настройки Home = ctrl-home End = ctrl-end то есть в начало строки перемещаюсь по нажатию ctrl+home а в конец строки по нажатию ctrl+end На домашнем линуксе с графикой такие же настройки, и на сервере и на домашнем всё работает нормально. На домашнем вот такая связка KDE -> konsole -> mc -> mcedit или KDE -> konsole -> mcedit или фреймбуфер -> bash -> mc -> mcedit или фреймбуфер -> bah -> mcedit На сервере bash(25x80) -> mc -> mcedit или bash(25x80) -> mcedit Но когда по ssh захожу на сервер то не работает, хоть по home хоть по ctrl+home перемещаюсь в начало открытого файла, или по end ctrl+end в конец. Получается вот такая связка уже не работает KDE -> konsole -> ssh -> bash -> mc -> mcedit или KDE -> konsole -> ssh -> bash -> mcedit или фреймбуфер > ssh -> bash -> mc -> mcedit млм фреймбуфер -> ssh -> bash -> mcedit Выходит при соединении по ssh на нажатие ctrl как бы не реагирует или вместо кода нажатия ctrl+home передаётся код просто home, или при нажатии на ctrl+end передаётся код просто end. Если на домашнем компьютере или на сервере, в командно строке набрать ctrl+v, а потом ctrl+home или просто home то выдаёт один и тот же код ^[[1~, соответственно при ctrl+end или end ^[[4~ Хотя в файлах /etc/inputrc /root/.inputrc Прописано вот что #"\e[1~": beginning-of-line #"\e[4~": end-of-line "\e[1;5H": beginning-of-line "\e[1;5F": end-of-line На сервере загружается русская раскладка клавиатуры, что бы писать на русском комментарии, вот такой командой loadkeys /usr/share/kbd/keymaps/ru Я не могу понять где причина почему через ssh перестаёт работать ctrl+home и ctrl+end, а работает просто как home или end. Ведь по отдельности всё работает, получается причине не в terminfo.... Я не знаю кто отвечает за кодировку нажатых клавиш, думаю что при работе в mcedit и просто в фреймбуферском или буквеноцифровом терминале за это отвечают разные библиотеки и соответственно разные настроечные файлы, если они конечно есть. Думаю дело не в ssh. Если кто в курсе, подскажите хотя бы где смотреть. Дело уже не в редакторе mcedit, просто хочется разобраться в проблеме. Проблема эта у меня давно. Ранее спрашивал на других форумах, но ответа так и не нашёл. Дело уже не в редакторе. Очень хотелось бы узнать в чём причина, докопаться до корня проблемы. За помощь буду заранее благодарен! |
vasek |
|
Темы:
47
Сообщения:
11853
Участник с: 17 февраля 2013
|
Первое, что нагуглилось https://superuser.com/questions/913757/why-keys-like-esc-ctrl-shift-and-alt-does-not-work-in-ssh-session-from-my-wind Значит есть и другое ...
Ошибки не исчезают с опытом - они просто умнеют
|
v4567 |
|
Темы:
6
Сообщения:
16
Участник с: 23 февраля 2012
|
С putty на сколько я знаю ситуация совсем другая. Там с передачей ctrl большие проблемы. |
vasek |
|
Темы:
47
Сообщения:
11853
Участник с: 17 февраля 2013
|
Многое зависит от эмулятора терминала - все они разные и по разному понимают и применяют Escape Sequence (escape последовательности) … самый рабочий раньше был xterm. Много лет уже не занимаюсь этим, а вспоминать, точнее влазить во все это, честно говоря, нет желания. Рекомендую для начала проверить Escape Sequence, точнее одинаково ли они отображаются. Например, согласно /etc/inputrc … слово вперед/назад Смотрим, как это выглядит в нашем xterm, для чего запускаем команду od -c или cat > /dev/null … и набираемCtrl+стрелка_вправо --- получаем ^[[1;5C Ctrl+стрелка_влево --- получаем ^[[1;5D Учитывая, что ^[ == esc (сокращенно e), убеждаемся, что совпадает с записью в /etc/inputrc А вот в части Ctrl+home … Ctrl+end , которые у меня отображаются как видим, что они не прописаны в /etc/inputrc … то есть их нужно прописывать. Но если прописывать в ~/.inputrc, то есть нюансы …. какие точно не помню.PS - кстати, работает и новый форум https://archlinux.com.ru/ .... хотя сейчас не очень активны и старый и новый форумы ...
Ошибки не исчезают с опытом - они просто умнеют
|
v4567 |
|
Темы:
6
Сообщения:
16
Участник с: 23 февраля 2012
|
А дело ли в terminfo? Если бы дело было в терминалах xterm или linux или ещё в каком, так локально не работало, или я ошибаюсь. Но у меня локально работает. И в файлах /etc/inputrc /root/.inputrc Прописано "\e[1;5H": beginning-of-line "\e[1;5F": end-of-line "\e[1;5C": forward-word "\e[1;5D": backward-word Но при нажатии ctrl+Home или просто Home выдаёт ^[[1~ При нажатии ctrl+End или просто End выдаёт ^[[4~ При нажатии ctrl+стрелка влево или прост при нажатии стрелка влево выдаёт ^[[D При нажатии ctrl+стрелка вправо или прост при нажатии стрелка вправо выдаёт ^[[C Может Midnight Commander перехватывает нажатия клавиш и интерпретирует их по своему.....? Спасибо за команду od -c Я проверял нажатие клавиш нажимая ctrl+v а потом проверяемую клавишу. |
vasek |
|
Темы:
47
Сообщения:
11853
Участник с: 17 февраля 2013
|
v45671. В части - А дело ли в terminfo? От этого тоже зависит, но основная причина в другом - в самих клавишах Ctrl, Alt, Shift - это клавиши модификаторы, которые сами по себе не вызывают/не отправляют никаких символов, а просто изменяют поведение нажатой клавиши. А поэтому при использовании ssh наблюдаются проблемы с использованием этих клавиш (где то они работают, где то не работаеют) … и их не рекомендуют использоавть … плюс к этому и клавиша esc (тоже понятно почему). Что рекомендуют использовать? - putty (хотя и там есть определенные заморочки) - far2l - сам не пробовал, но как пишут Пишешь, что давно ищешь причину - нужно больше гуглить … но не на ru … а на enPS -1 - https://github.com/elfmz/far2l .... https://github.com/unxed/putty4far2l PS -2 - не пробовал по ssh использовать комбинацию Ctrl+Alt+Del ??? - то же не должна сработать ...
Ошибки не исчезают с опытом - они просто умнеют
|
v4567 |
|
Темы:
6
Сообщения:
16
Участник с: 23 февраля 2012
|
Я putty не использую. Я захожу с линукс, с konsole, в командной строке набираю ssh. Пробовал из фрейсбуфера, результат тот же. Я думаю дело не в ssh, а в том что у меня одинаково интерпретируются нажатия home и ctrl+home ^[[1~ Но где это настроить, изменить не знаю. Думаю в terminfo это не настроить. Интересно можно ли получить чистый терминал без запуска в нём bash. И в нём проверить нажатия этих клавиш, нажимая ctrl+v а потом проверяемую клавишу. И не понятно ещё вот что, как Midnight Commander распознаёт нажатия home и ctrl+home ведь они у меня имеют одинаковый код ^[[1~. То что через ssh это всё работает я знаю, так как на других форумах люди писали что у них работает, но конкретно не помогли так как не знали где эти настройки. Ctrl+Alt+Del через ssh не работает, я думаю из-за того что это нажатие перехватывает система и оно до ssh не доходит. |
vasek |
|
Темы:
47
Сообщения:
11853
Участник с: 17 февраля 2013
|
v4567Оно и не должно работать ... как не должны работать и многие другие комбинации с клавишами модификаторами ... Грубо, по простому: на твоем компе это работает (например, Ctrl+Home), а при передаче по ssh кода нажатия этой комбинации на другой комп воспримется как просто Home, так как нажатие Ctrl не генерит код, а значит по ssh ничего не передается ... нажатие клавиши модификатора воспринимается только на данном компе, где было выполнено это нажатие. Если уж так хочется использовать эти комбинации, можно попробовать использовать xdotool (эмуляцию нажатия клавиш) .... вот только нужно будет решить как внедрить это в редактор .... а по хорошему, все это ерунда и в полне можно обойтись и без этого.
Ошибки не исчезают с опытом - они просто умнеют
|