JAVA

Java Robot 클래스 keyPress, keyRelease 적용하기

해니01_15 2023. 9. 1. 11:38

Robot 클래스의 지정된 키를 누르는 keyPress에 대한 코드를 알아보려고 한다.

keyPress 코드의 가장 핵심은  KeyEvent 클래스의 상수를 사용하는 것이다. 

 

KeyEvent.VK_알파벳

KeyEvent 상수를 이용하여 변수를 선언해 주고 KeyPress (가상 키 버튼 누르기) 혹은 KeyRelease (가상 키 버튼 놓기)를 이용하여 구현하면 된다. 

 

[기본 완성본]

우선 완성본을 보쟈! 진짜 신기하다.

package Robot;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class keyPress {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
            Robot robot = new Robot();
            int keyCode = KeyEvent.VK_A; // a 키 누르기
            robot.keyPress(keyCode);
        } catch (AWTException e) {
            e.printStackTrace();
        }
	}

}

 

앗? 근데 엔터치고 싶은데 어떻게 해야 하지? 그리고 대문자도 쓰고 싶은데 그건 어떻게 해야 하지? 

 

[가상 키코드 종류] 

  • KeyEvent.VK_알파벳: 알파벳 키 -> 무조건 대문자로 작성 한다
  • KeyEvent.VK_ENTER: 엔터 키
  • KeyEvent.VK_SPACE: 스페이스바
  • KeyEvent.VK_SHIFT: 쉬프트 키
  • KeyEvent.VK_CONTROL: 컨트롤(Ctrl) 키
  • KeyEvent.VK_ALT: 알트(Alt) 키

 

[대문자 입력 예제] 

Shift 키와 알파벳 키를  눌러주고 (Press) 해당 키들을 풀어주면(Release) 된다.  

package Robot;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.KeyEvent;

public class keyPress {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try {
            Robot robot = new Robot();           
            
            int keyPressCode = KeyEvent.VK_SHIFT; // Shift 키 누르기
            int keyCode = KeyEvent.VK_A;   // 'A' 키
            
            robot.keyPress(keyPressCode);
            robot.keyPress(keyCode);
            robot.keyRelease(keyCode);
            robot.keyRelease(keyPressCode);
            
        } catch (AWTException e) {
            e.printStackTrace();
        }
	}

}

 

[주의해야 할 점] 

키 코드로 엔터나 스페이스 시프트 등을 입력해 주었다면 꼭 KeyRelease를 해주어야 한다. 그렇지 않으면 계속~~ 눌려있는 상태여서 굉장히 당황스러운 상황이 발생될 수 있다.