2011-01-07 6 views
6

Napisałem aplikację Java, która ma chwilę (input.readLine()), która kontynuuje czytanie danych wejściowych do momentu wpisania przez użytkownika polecenia quit. Mam skrypt .bat, aby uruchomić go w systemie Windows i .sh, aby uruchomić go w systemie Linux. Aplikacja działa dobrze w obu.Jak mogę akceptować wejścia strzałek lewo/prawo/góra/dół w powłoce systemu Linux?

Będąc w systemie Windows, jeśli wpiszesz komendę typu "sprawdź wiadomość e-mail" i naciśnij Enter, wykona ona polecenie. Następnie, przy następnym monicie (to znaczy: następnym razem, gdy aplikacja Java odczytuje linię danych wejściowych), możesz nacisnąć strzałkę w górę i wywołać polecenie "sprawdź pocztę". Możesz nacisnąć klawisz lewej strzałki, aby przesunąć kursor w lewo itd. Dokładnie tak, jak tego chcę.

Jednak w systemie Linux naciśnięcie górnego klawisza powoduje^[[D pojawia się. Lewy i prawy klawisz strzałki dają podobne wyjście ASCII, jak^[[C.

Słyszałem o stty i przeglądałem strony man, ale nie mogę wymyślić, co muszę zmienić w skrypcie .sh z uruchomieniem mojej aplikacji Java. Czy ktoś może mi pomóc?

Odpowiedz

1

Funkcja readline służy do tego w jednostkach Unice, ale jest to funkcja C.

można znaleźć dla niego opakowanie Java. (Nigdy go nie używałem)

4

Najprostszym rozwiązaniem jest użycie zewnętrznego opakowania, które czyta wiersz z funkcjami edycji, a następnie wysyła go do twojego programu. Dobrym opakowaniem jest rlwrap.

Korzystanie z oddzielnego narzędzia jest zgodne z filozofią unix używania oddzielnych narzędzi do różnych celów (edycja liniowa i cokolwiek program robi). Jest to również proste: po prostu ustaw wrapper powłoki na rlwrap myprogram zamiast myprogram.

Podstawowa readline library (bez związku z jakimkolwiek readLine metody w Javie; będziemy chcieli otoki Java, takich jak Java-Readline) jest więcej pracy, aby zintegrować i ogranicza swój program będzie GPL. Idź do tego tylko wtedy, gdy potrzebujesz czegoś więcej niż to, co może zapewnić opakowanie - głównie dla konkretnych aplikacji.

Powiązane problemy