티스토리 뷰
들어가며
- 애플리케이션에서 사용자의 키보드, 마우스 입력을 감지하는 기능을 구현해야 할 때가 있습니다.
- JNativeHook 라이브러리를 이용하여 이러한 기능을 구현하는 방법에 대해서 알아보겠습니다.
JNativeHook
- Java 전용 Gloabl Keyboard, Mouse 리스너를 제공하는 라이브러리 입니다.
- 플랫폼에 구애받지 않으며 순수 Java로는 구현하지 못하는 키, 마우스 동작을 수신할 수 있습니다.
- 리스너에는 아래와 같은 Event들을 감지할 수 있습니다.
- Key Press Events
- Key Release Events
- Key Typed Events
- Mouse Down Events
- Mouse Up Events
- Mouse Click Events
- Mouse Move Events
- Mouse Drag Events
- Mouse Wheel Events
라이브러리 적용
Gradle
compile group: 'com.1stleg', name: 'jnativehook', version: '2.1.0'
Maven
<!-- https://mvnrepository.com/artifact/com.1stleg/jnativehook -->
<dependency>
<groupId>com.1stleg</groupId>
<artifactId>jnativehook</artifactId>
<version>2.1.0</version>
</dependency>
ETC
예제
- 리스너를 먼저 구현해보겠습니다.
- 아래와 같이
NativeKeyListener, NativeMouseListener
인터페이스를 통해서 구현이 가능합니다.
//KeyBoard 입력 리스너 구현
public class KeyHooker implements NativeKeyListener {
public void nativeKeyPressed(NativeKeyEvent e) {
System.out.println("Key Pressed: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
}
public void nativeKeyReleased(NativeKeyEvent e) {
System.out.println("Key Released: " + NativeKeyEvent.getKeyText(e.getKeyCode()));
}
public void nativeKeyTyped(NativeKeyEvent e) {
System.out.println("Key Typed: " + e.getKeyText(e.getKeyCode()));
}
}
//Mouse 입력 리스너 구현
public class MouseHooker implements NativeMouseListener {
public void nativeMouseClicked(NativeMouseEvent e) {
System.out.println("Mouse Clicked: " + e.getPoint());
}
public void nativeMousePressed(NativeMouseEvent e) {
System.out.println("Mouse Pressed: " + e.getPoint());
}
public void nativeMouseReleased(NativeMouseEvent e) {
System.out.println("Mouse Released: " + e.getPoint());
}
}
- 메인 메서드에서 리스너를 등록해보겠습니다.
- 후에 실행을 해보면 이벤트가 발생했을 때 Console 창에 해당 이벤트가 출력되는 것을 확인할 수 있습니다.
public static void main(String[] args) {
try {
GlobalScreen.registerNativeHook();
}
catch (NativeHookException ex) {
System.err.println("There was a problem registering the native hook.");
System.err.println(ex.getMessage());
System.exit(1);
}
GlobalScreen.addNativeKeyListener(new MouseHooker());
GlobalScreen.addNativeKeyListener(new KeyHooker());
}
반응형
'프로그래밍 > JAVA' 카테고리의 다른 글
(Java) Gson 사용시 보기 좋은 Pretty Json String 변환하는 방법 (0) | 2020.08.25 |
---|---|
[Java] 스트림 슬라이싱 방법 (0) | 2020.08.12 |
[Java] Video URL 다운로드 시에 전체 다운로드 되지 않는 경우 해결방법 (0) | 2020.08.09 |
(Java)Apache Poi 사용시 "The maximum number of Cell Styles was exceeded.." 이슈 해결법 (2) | 2020.08.08 |
[Java] PNG 파일에 Meta 데이터 추가하는 방법 (0) | 2020.08.07 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- 일본여행
- 일본 여행
- 이펙티브자바
- 자전거
- 텐트
- effectivejava
- intelij
- JavaFX 종료
- 자바
- 방통대 과제물
- 배낭 여행
- JavaFX Window Close
- JavaFX 테이블뷰
- 이펙티브
- git
- java
- 이펙티브 자바
- 인텔리제이
- 스프링부트
- JavaFX
- Java UI
- 일본 자전거 여행
- 일본 배낭여행
- springboot
- effective java
- 배낭여행
- windows
- JavaFX Table View
- TableView
- 자전거 여행
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함