SeouliteLab

[Java/자바] 키보드, 마우스 이벤트 후킹하기 본문

프로그래밍

[Java/자바] 키보드, 마우스 이벤트 후킹하기

Seoulite Lab 2024. 3. 9. 01:10

Java 프로그램에서 키보드 및 마우스 이벤트를 감지하고 후킹하는 것은 사용자 인터페이스(UI) 개발 및 시스템 모니터링에 유용합니다. 이번 글에서는 Java에서 키보드와 마우스 이벤트를 받아오는 여러 가지 방법과 예제를 살펴보겠습니다.

1. KeyListener를 이용한 키보드 이벤트 감지

KeyListener 인터페이스를 구현하여 키보드 이벤트를 감지할 수 있습니다. 이를 통해 사용자가 키를 누르거나 뗄 때 발생하는 이벤트를 처리할 수 있습니다.

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

public class KeyListenerExample implements KeyListener {
    public void keyPressed(KeyEvent e) {
        int keyCode = e.getKeyCode();
        System.out.println("Key pressed: " + KeyEvent.getKeyText(keyCode));
    }

    public void keyReleased(KeyEvent e) {
        int keyCode = e.getKeyCode();
        System.out.println("Key released: " + KeyEvent.getKeyText(keyCode));
    }

    public void keyTyped(KeyEvent e) {
        // Not used
    }

    public static void main(String[] args) {
        KeyListenerExample listener = new KeyListenerExample();
        // Add listener to a component
    }
}

2. MouseListener 및 MouseMotionListener를 이용한 마우스 이벤트 감지

MouseListener와 MouseMotionListener 인터페이스를 구현하여 마우스 클릭 및 이동 이벤트를 감지할 수 있습니다. 이를 통해 사용자가 마우스를 클릭하거나 이동할 때 발생하는 이벤트를 처리할 수 있습니다.

import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;

public class MouseListenerExample implements MouseListener, MouseMotionListener {
    public void mouseClicked(MouseEvent e) {
        System.out.println("Mouse clicked at: " + e.getX() + ", " + e.getY());
    }

    public void mousePressed(MouseEvent e) {
        // Not used
    }

    public void mouseReleased(MouseEvent e) {
        // Not used
    }

    public void mouseEntered(MouseEvent e) {
        // Not used
    }

    public void mouseExited(MouseEvent e) {
        // Not used
    }

    public void mouseDragged(MouseEvent e) {
        // Not used
    }

    public void mouseMoved(MouseEvent e) {
        // Not used
    }

    public static void main(String[] args) {
        MouseListenerExample listener = new MouseListenerExample();
        // Add listener to a component
    }
}

3. JNativeHook 라이브러리를 이용한 전역 훅 설정

JNativeHook 라이브러리를 사용하면 Java 애플리케이션에서 전역적으로 키보드 및 마우스 이벤트를 후킹할 수 있습니다. 이를 통해 애플리케이션이 백그라운드에서 실행 중일 때도 사용자의 입력을 감지할 수 있습니다.