Je suis en train de concevoir une application console pour un serveur fonctionnant sous RedHat. Les utilisateurs finaux doivent être en mesure d'exécuter cette application avec le terminal de leur choix. (Par exemple : Gnome Terminal, Putty SSH/ Telnet, MS Telnet Client et autres).
Dans la plupart des applications de terminal, il n'y a pas de problème, mais lorsque je lance mon programme à partir d'une session MS telnet, je remarque que mes entrées spéciales pour System.in
et System.console()
s'embrouiller complètement. Un retour arrière permet d'écrire ^H
à l'écran et d'autres touches écrivent aussi du charabia.
J'ai suffisamment bricolé pour que ça marche régulièrement, mais je suis sûr que ce que je fais est dégoûtant :
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);
}
Est-ce qu'il y aurait un problème pour les terminaux qui ne supportent pas xterm
? J'ai remarqué que le client Telnet de Microsoft ne permet pas de définir l'adresse de l'utilisateur. TERM
type à xterm
avant de commencer une session. Cependant, une fois la session commencée, le réglage TERM=xterm
semble résoudre le problème.
Comment la plupart des applications de console abordent-elles cette question ?