Консоль Java не распознает клавиши со стрелками

У меня есть некоторые странные проблемы с java-консолью на моем сервере 10.04 (на самом деле это консоль сервера minecraft, но я считаю, что это общая проблема, а не какая-то специфическая для Minecraft): клавиши со стрелками не распознаются должным образом. Всякий раз, когда они используются внутри Java-консоли, они производят что-то вроде этого:

^[[A ^[[B ^[[C ^[[D

Тем не менее, они отлично работают в остальной части системы.

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

Спасибо заранее.

Редактировать (29 октября): Прочитав первый ответ и опробовав несколько вещей, я выяснил еще немного об этой проблеме. Теперь поверх оболочки работает программа, в основном эта проблема вызвана проблемами с jline-библиотекой java, которая используется java-приложением (или, если точнее, его консолью).

В целях тестирования я переключился с OpenJDK6 на OrcaleJDK6, и проблема исчезла. Тестирование OpenJDK7 невозможно, так как нет версии для 10.04. Я предполагаю, что некоторые соединения с jline, так как это библиотека, отвечающая за обработку ввода и вывода консоли. Возможно, версия, используемая приложением, несовместима с более старой версией OpenJDK, используемой на сервере. Но совместимо с более современной версией oracle-java, которую я установил вручную. Я до сих пор не выяснил, как jline-пакет ubuntu вписывается в эту картину. Для меня нет разницы между тестированием с и без него.

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

3
задан 29 October 2012 в 22:37

1 ответ

Некоторые консольные программы (это может быть программа, работающая на вершине удара, такой как sh) не подавляют нажатия клавиши CTRL такой как в † ‘ стрелка или вниз в † “ стрелка и т.д. В тех консолях, Вы также доберетесь, эхо нажатий клавиш как Вы отправило ^[[A ^[[B ^[[C ^[[D. Это не большая проблема на самом деле.

Ваша оболочка по умолчанию bash, который подавляет нажатия клавиш клавиш со стрелками. В отличие от удара, эти sh оболочка не подавляет штрихи клавиши со стрелкой. Можно попробовать его путем выполнения sh на терминале и нажатия клавиш со стрелками. Для выхода от тех консолей необходимо использовать определенную команду, характерную для программ, большую часть времени, это quit или exit. В Вашем случае сервера Minecraft это было бы stop.

0
ответ дан 29 October 2012 в 22:37

Другие вопросы по тегам:

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