2

Я подключаюсь к рабочему столу Cygwin через SSH из приложения терминала в Mac OS X. Я уже запустил экран на стороне Cygwin и могу подключиться к нему через сеанс SSH. Кроме того, у меня есть следующее в файле .screenrc:

bindkey -k k1 select 1  #  F1 = screen 1
bindkey -k k2 select 2  #  F2 = screen 2
bindkey -k k3 select 3  #  F3 = screen 3
bindkey -k k4 select 4  #  F4 = screen 4
bindkey -k k5 select 5  #  F5 = screen 5
bindkey -k k6 select 6  #  F6 = screen 6
bindkey -k k7 select 7  #  F7 = screen 7
bindkey -k k8 select 8  #  F8 = screen 8
bindkey -k k9 select 9  #  F9 = screen 9
bindkey -k F1 prev      # F11 = prev
bindkey -k F2 next      # F12 = next

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

Я пробовал различные настройки для $ TERM (например, ansi, cygwin, xterm-color, vt100), и они, похоже, ни на что не влияют.

Я убедился, что терминальное приложение на самом деле отправляет управляющую последовательность для ожидаемой функциональной клавиши и что моя оболочка bash (запущенная внутри экрана) получает ее. Например, для F1 он отправляет следующее (hexdump - это написанный мной Perl-скрипт, который принимает STDIN в binmode и выводит его как шестнадцатеричный /ascii дамп):

% hexdump
[press F1 and then hit ^D to terminate input]
00000000:  1b4f50                               .OP

Если все работало правильно, я не думаю, что bash должен получить escape-последовательность, потому что screen должен был это поймать и превратить в команду.

Как заставить работать функциональные клавиши?

2 ответа2

1

С большим количеством экспериментов я смог заставить его работать, добавив следующие строки в мой .screenrc:

terminfo * k1=\EOP
terminfo * k2=\EOQ
terminfo * k3=\EOR
terminfo * k4=\EOS
terminfo * k5=\E[15~
terminfo * k6=\E[17~
terminfo * k7=\E[18~
terminfo * k8=\E[19~
terminfo * k9=\E[20~
terminfo * F1=\E[23~
terminfo * F2=\E[24~
0

Возможно, мой ответ дополнит предыдущий. Вы можете найти модифицированное TERMINFO базы данных , которая позволит вам использовать клавиши Fx, а также Alt+Fx, Ctrl+Fx, Shift+Fx, Alt+Shift+ комбинаций Fx здесь. Инструкция по его использованию находится здесь. Конечно, терминальное приложение должно их поддерживать. Эти коды клавиш взяты из консоли XFree 4 (поддерживается в консоли).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .