[java] Jansi를 이용하여 자바 애플리케이션에서 터미널에서 키 입력 처리하기
자바 애플리케이션을 개발하는 과정에서 터미널에서 키 입력을 처리해야 하는 경우가 있습니다. 이때 Jansi 라이브러리를 이용하면 간편하게 터미널에서 키 입력을 처리할 수 있습니다.
Jansi란?
Jansi는 자바에서 터미널 컬러를 지원하는 라이브러리입니다. 이 라이브러리를 사용하면 터미널에서 키 입력을 처리하는 기능도 제공합니다. Jansi는 Maven을 통해 손쉽게 프로젝트에 추가할 수 있습니다.
Jansi를 이용한 키 입력 처리 방법
- Jansi 라이브러리를 프로젝트에 추가합니다. Maven을 사용하는 경우,
pom.xml
파일에 다음 의존성을 추가합니다.
<dependency>
<groupId>org.fusesource.jansi</groupId>
<artifactId>jansi</artifactId>
<version>1.18</version>
</dependency>
- 키 입력을 처리할 클래스를 작성합니다.
import org.fusesource.jansi.AnsiConsole;
public class KeyInputHandler {
public static void main(String[] args) {
AnsiConsole.systemInstall(); // Jansi를 터미널에 설치합니다.
while (true) {
if (System.in.available() > 0) { // 터미널에서 키 입력이 있는지 확인합니다.
int key = System.in.read(); // 키 입력을 읽어옵니다.
if (key == 27) { // ESC 키를 눌렀을 경우 종료합니다.
break;
} else {
System.out.println("키 입력: " + key);
}
}
}
AnsiConsole.systemUninstall(); // Jansi를 터미널에서 제거합니다.
}
}
위 코드에서 주목해야 할 부분은 다음과 같습니다.
AnsiConsole.systemInstall()
을 호출하여 Jansi를 터미널에 설치합니다. 이렇게 하면 터미널에서 키 입력을 읽어올 수 있습니다.System.in.available()
을 사용하여 터미널에서 키 입력이 있는지 확인합니다.System.in.read()
를 호출하여 키 입력을 읽어옵니다. 이 메서드는int
형태로 키 입력을 반환합니다.- ESC(27) 키를 눌렀을 경우
while
루프를 종료하여 프로그램을 종료합니다. AnsiConsole.systemUninstall()
을 호출하여 Jansi를 터미널에서 제거합니다. 프로그램이 종료될 때 반드시 호출해야 합니다.
- 애플리케이션을 실행합니다. 이제 터미널에서 키를 입력하면 입력된 키를 출력하는 메세지가 출력됩니다.
마무리
Jansi를 이용하면 자바 애플리케이션에서 터미널에서 키 입력을 간편하게 처리할 수 있습니다. 위에서 소개한 방법을 사용하여 터미널에서 키 입력을 처리하는 로직을 구현해 보세요.
참고 자료
- Jansi GitHub 레포지토리: https://github.com/fusesource/jansi