[java] Jansi를 활용하여 자바에서 터미널에서 마우스 입력 처리하기

이번 글에서는 Jansi 라이브러리를 사용하여 자바에서 터미널에서 마우스 입력을 처리하는 방법을 알아보겠습니다. Jansi는 자바 언어를 위한 터미널 관련 기능을 제공하는 오픈 소스 라이브러리입니다.

Jansi 라이브러리 설치하기

먼저, Jansi 라이브러리를 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음 의존성을 추가합니다.

<dependencies>
    <dependency>
        <groupId>org.fusesource.jansi</groupId>
        <artifactId>jansi</artifactId>
        <version>1.18</version>
    </dependency>
</dependencies>

Gradle을 사용하는 경우, build.gradle 파일에 다음 의존성을 추가합니다.

dependencies {
    implementation 'org.fusesource.jansi:jansi:1.18'
}

의존성을 추가한 후, 프로젝트를 빌드하면 Jansi 라이브러리가 자동으로 다운로드되고 설치됩니다.

Jansi를 이용한 터미널 마우스 입력 처리하기

다음은 Jansi를 사용하여 터미널에서 마우스 입력을 처리하는 예제 코드입니다.

import org.fusesource.jansi.AnsiConsole;
import org.fusesource.jansi.AnsiTerminalOutputStream;
import org.fusesource.jansi.MouseEvent;

public class TerminalMouseInputExample {

    public static void main(String[] args) {
        // 터미널 초기화
        AnsiConsole.systemInstall();

        // 마우스 이벤트 핸들러 등록
        AnsiConsole.out().ansi().enableMouseTracking(AnsiTerminalOutputStream.MouseTracking.ON).newMouseMotionListener((MouseEvent event) -> {
            System.out.println("마우스 이동: " + event.getX() + ", " + event.getY());
        }).newMouseListener((MouseEvent event) -> {
            System.out.println("마우스 클릭: 버튼 " + event.getButton() + ", " + event.getAction() + " (" + event.getX() + ", " + event.getY() + ")");
        });

        // 사용자 입력 대기
        while (true) {
            // 아무 작업도 하지 않음
        }
    }
}

위의 예제 코드에서는 AnsiConsole.out()을 통해 터미널로 출력을 보냅니다. ansi().enableMouseTracking(AnsiTerminalOutputStream.MouseTracking.ON)을 사용하여 마우스 입력을 활성화합니다. newMouseMotionListener()을 통해 마우스 이동 이벤트를 처리하고, newMouseListener()를 통해 마우스 클릭 이벤트를 처리합니다.

마우스 이동 이벤트에서는 마우스의 X, Y 좌표를 출력하고, 마우스 클릭 이벤트에서는 버튼 번호, 액션 (눌렀을 때 / 놓았을 때), X, Y 좌표를 출력합니다. 사용자 입력을 받기 위해 무한루프를 사용하였습니다.

결론

Jansi 라이브러리를 사용하면 자바에서 터미널에서 마우스 입력을 처리하는 것이 가능합니다. 위의 예제 코드를 참고하여 자신의 프로젝트에 터미널에서의 마우스 입력 처리 기능을 추가해보세요. Jansi 라이브러리의 다양한 기능을 활용하면 더욱 다양한 터미널 관련 기능을 자바 프로그램에서 사용할 수 있습니다.

참고 자료