Если вы недавно начали изучать текстовые многопользовательские игры (MUD) и подключаетесь к ним через терминал на Linux, возможно, вы столкнулись с необычным поведением клавиш. Например, при нажатии Backspace или стрелок вместо ожидаемого действия в строке ввода появляются странные символы вроде ^?
или ^[[A
. Давайте разберёмся, почему это происходит и как вернуть удобство управления.
Почему терминал показывает «кракозябры» вместо стрелок?
Первым делом проверьте значение переменной окружения TERM
, выполнив команду echo $TERM
. Если вы используете RXVT-unicode, результат будет rxvt-unicode-256color
— это нормально. Проблема возникает не из-за терминала, а из-за особенностей протокола Telnet и программы на сервере.
Когда вы подключаетесь к MUD через Telnet, терминал отправляет серверу последовательности символов для каждой нажатой клавиши. Например, стрелка вверх — это ESC [ A
(в шестнадцатеричном виде 1B 5B 41
). Но если серверная программа не умеет обрабатывать такие последовательности, она просто отобразит их «как есть». То же происходит с Backspace: вместо удаления символа вы видите ^?
— это символ ASCII 127 (DEL), который не интерпретируется сервером.
Почему это происходит именно в Linux?
В отличие от Windows, где консоль сама управляет строкой ввода (позволяя перемещать курсор, исправлять ошибки), в Linux и других Unix-системах эта задача лежит на программе, с которой вы работаете. Например, Bash использует библиотеку Readline для удобного редактирования команд. Если сервер MUD не задействует подобные инструменты, клавиши стрелок и Backspace будут работать некорректно.
Попытка изменить переменную TERM
на xterm
(через TERM=xterm telnet aardwolf.org
) не помогает, потому что проблема не в настройках терминала, а в отсутствии обработки клавиш на стороне сервера. Telnet здесь выступает лишь «передатчиком» данных и не влияет на интерпретацию нажатий.
Как исправить проблему с клавишами?
Есть два подхода: использовать специализированные клиенты для MUD или добавить поддержку редактирования строки ввода через утилиты. Рассмотрим оба варианта.
1. Установите клиент с поддержкой MUD
Такие программы, как Tintin++ или Mudlet, созданы специально для текстовых игр. Они умеют:
- Обрабатывать клавиши стрелок и функциональные кнопки.
- Настраивать макросы и автоматизацию действий.
- Поддерживать цветовые схемы и триггеры (автоматические реакции на события в игре).
Пример установки Tintin++ в Ubuntu/Debian:
sudo apt update
sudo apt install tintin++
После установки подключитесь к серверу командой:
tt++ -e aardwolf.org
Клиент автоматически обработает стрелки, Backspace и даже позволит использовать историю команд (как в Bash).
2. Добавьте редактирование строки через rlwrap
Если вы предпочитаете работать через Telnet, утилита rlwrap добавит поддержку стрелок и истории команд. Установите её:
sudo apt install rlwrap # Для Debian/Ubuntu
sudo pacman -S rlwrap # Для Arch Linux
Затем подключитесь к серверу так:
rlwrap telnet aardwolf.org
Теперь стрелки будут перемещать курсор, а Backspace — удалять символы. При этом все данные по-прежнему передаются через Telnet, но rlwrap «оборачивает» ваш ввод, добавляя функции редактирования.
Важно: Если после установки rlwrap клавиши всё равно работают некорректно, проверьте настройки терминала. Иногда помогает явное указание типа терминала:
TERM=xterm-256color rlwrap telnet aardwolf.org
Дополнительные советы и тонкости
- Проверьте серверную поддержку. Некоторые MUD требуют активации определённых опций для обработки клавиш. Посмотрите документацию игры или спросите в чате — возможно, нужно ввести команду вроде
SET KEYPAD ON
. - Настройте RXVT-unicode. Если вы всё же хотите использовать стандартный Telnet, попробуйте изменить поведение Backspace в настройках терминала. Добавьте в файл
~/.Xresources
строку:
Затем выполнитеURxvt.keysym.BackSpace: ^H
xrdb ~/.Xresources
и перезапустите терминал. Это заменит символ DEL (^?) на BS (^H), который иногда лучше распознаётся. - Используйте SSH вместо Telnet. Некоторые серверы MUD поддерживают SSH-подключения, которые стабильнее и безопаснее. Пример команды:
ssh username@aardwolf.org -p 23
Если ни один из способов не помог, возможно, проблема в самом сервере. Попробуйте подключиться к другому MUD — например, Midnight Sun или Discworld — чтобы проверить, повторяется ли ситуация. В редких случаях помогает смена терминала на более простой (например, st или xterm), но это уже тема для отдельного разговора.
Надеюсь, эти инструкции помогут вернуть удовольствие от игры. Не стесняйтесь экспериментировать с клиентами — их расширенные функции (вроде автоматического сбора ресурсов или подсветки важных сообщений) могут значительно упростить ваш опыт.