Я разрабатываю консольное приложение для сервера, на котором работает RedHat. Конечные пользователи должны иметь возможность запускать это приложение с любым терминалом по своему выбору. (Например, терминал Gnome, шлюз SSH/Telnet, клиент MS Telnet и другие).Настройка среды для System.in
В большинстве терминальных приложений нет ничего плохого, однако, когда я запускаю свою программу из сеанса MS telnet, я замечаю, что мои специальные входы для System.in
и System.console()
полностью перепутаны. В обратном пространстве напишите ^H
на экран, а другие клавиши также напишут тарабарщину.
Я взломал на нее достаточно, что я могу получить его, чтобы последовательно работать, но я уверен, что я делаю это полный:
if (!System.getenv("TERM").equals("xterm"))
{
System.out.println("\nWARNING: The TERM type is now set to xterm\n");
final String[] cmd = { "/bin/sh", "-c", "export TERM=xterm" };
Runtime.getRuntime().exec(cmd);
}
Будет ли проблема здесь для терминалов, которые дон 't поддержка xterm
? Я заметил, что клиент Microsoft Telnet не позволяет вам установить тип TERM
в xterm
перед началом сеанса. Однако, как только сеанс запущен, настройка TERM=xterm
, похоже, решает проблему.
Каким образом большинство консольных приложений затрагивает эту проблему?
Возможно, ваш бред является бегству sequnces ANSI http://stackoverflow.com/questions/16755142/how-to-make-win32-console-recognize-ansi-vt100-escape-sequences?lq=1 –
смотреть там : https://github.com/fusesource/jansi Jansi - это небольшая библиотека java, которая позволяет использовать escape-последовательности ANSI для форматирования вывода консоли, который работает даже на окнах. –
@AndreasFrische oh wow, который выглядит многообещающим! придется играть с ним! – flakes