본문 바로가기

아두이노우노 R4

우노 R4로 키보드로 업무를 자동화 버튼

반응형

 

아두이노 우노 R4로 키보드로 업무를 자동화 할 수 있도록 만들었습니다. 쉽게 말해서 하드웨어 매크로 기능입니다.

 

* 무료로 받아 사용해 보실 분 - 콘텐츠 수집, 문서 반복 작업, 편집 업무 - 답글 달아주세요.

 

응용 분야

 

- 장애인 컴터 업무 이용 지원

- 발이나 기타 도구를 사용해 버튼을 누르면 자동 실행 이용

- 소프트웨어 이용을 단계별로 나누어 처리하고 사용자가 간섭하는 부분을 최소화

- 소프트웨어로 구현하는 매크로 키보드는 감지가 가능한데 하드웨어 키보드는 감지가 불가능한 장점

 

키보드 입력 자동화 구현 버튼

 

버튼 1. 크롬에서 마우스 우클릭 다른 이름으로 이미지 저장 기능

 

버튼 2. 한글 드래그 한 것 지우고 ctrl-enter, delete 누르고, 그 줄을 개요 1적용, 엔터 2번

 

버튼 3. 백스페이스 지우기 세 번 - 2번에서 개요가 줄 넘을 경우 수정

 

버튼 4. 중간에 이상한 문자 있을 경우 백스페이스로 문자 하나를 지우고 클립보드 내용을 복사 - HTML 코드 수정에 이용

 

버튼 5. 한글에서 CTRL-F 찾기 누르고 ALT-F 다음 찾기 기능(찾는 단어를 한 번 입력하면 그대로 유지하고 있으니 가능) 

 

 

아두이노 스케치 코드

 

#include "Keyboard.h"
#include "Mouse.h"

// set pin numbers for the five buttons:
// https://fishpoint.tistory.com/9357
// https://creatorjoseph.com/268
// https://docs.arduino.cc/language-reference/en/functions/usb/Keyboard/keyboardModifiers/

const int startlow = 12; 

const int yellow = 3; //SW1
const int blue = 4;    //SW2
const int green = 11;   //SW3
const int red = A3;   //SW1
const int black = A2;   //SW1
const int white = A1;   //SW1


void setup() {  // initialize the buttons' inputs:

  pinMode(startlow, INPUT); //when 12 num pin goes Low, Start!
  pinMode(yellow, INPUT);
  pinMode(blue, INPUT);
  pinMode(green, INPUT);
  pinMode(red, INPUT);
  pinMode(black, INPUT);
  pinMode(white, INPUT);

  Serial.begin(9600);
  
  // initialize mouse control:
  Mouse.begin();
  Keyboard.begin();

  while (digitalRead(startlow) == HIGH) {  // 12번 핀 LOW 입력받을때 시작 High면 정지상태 유지 - 꼭 필요함
    delay(100);
  }

  Serial.println("Auto Keyboard Start");
}

void loop() {
  
  while (digitalRead(startlow) == HIGH) {  // 12번 핀 GND 아니면 동작 안하도록, 반드시 추가
    delay(100);
  }

  //Serial.println("start low");

  if (digitalRead(yellow) == LOW){ //마우스 우클릭 이미지 다른 이름으로 저장 끝

    Serial.println("yellow Button");
    Mouse.click(MOUSE_RIGHT);
    delay(100);
    Keyboard.write('v');
    delay(600);
    Keyboard.press(KEY_LEFT_ALT); // 오른쪽 ALT키를 길게 누릅니다.
    delay(200);
    Keyboard.press('s'); // s 누르기
    //delay(200);
    Keyboard.releaseAll(); // 둘 다 놓기
    //delay(100);
    //Keyboard.releaseAll();
    Serial.println("operate yellow end");
  }

  if (digitalRead(blue) == LOW){ // 한글 드래그 한것 지우고 ctrl-enter, delete, 개요 1적용, 엔터 2번
    Serial.println("blue Button");
    Keyboard.press(KEY_LEFT_CTRL);  //왼쪽 컨트롤 키
    Keyboard.press(KEY_RETURN);
    delay(100);
    Keyboard.releaseAll();
    Keyboard.write(KEY_DELETE);
    //delay(500);
    Keyboard.press(KEY_LEFT_CTRL); //
    Keyboard.press(51);
    Keyboard.releaseAll();
    Keyboard.press(KEY_LEFT_CTRL); //
    Keyboard.press(51);
    Keyboard.releaseAll();
    delay(100);
    Keyboard.write(KEY_KP_1); //숫자 키패드 1 - END 줄 끝으로 간다
    Keyboard.write(KEY_RETURN);
    delay(200);
    Keyboard.write(KEY_RETURN);
    Keyboard.releaseAll();

    Serial.println("operate blue end");
  }
  if (digitalRead(green) == LOW)  // 백스페이스 지우기 세 번
  {  
    Serial.println("green Button");
    Keyboard.write(KEY_BACKSPACE);
    delay(200);
    Keyboard.write(KEY_BACKSPACE);
    delay(200);
    Keyboard.write(KEY_BACKSPACE);
    //delay(500);
    Serial.println("operate green end");
  }
  if (digitalRead(red) == LOW)  // 백스페이스 문자 하나를 지우고 클립보드 내용을 복사 - HTML 코드 수정에 이용
  {  
    Serial.println("red Button");
    Keyboard.write(KEY_BACKSPACE);
    delay(200);
    Keyboard.press(KEY_LEFT_CTRL); // ctrl-v 붙여넣기 과정
    Keyboard.write('v');    
    delay(200);
    Keyboard.releaseAll();
    Serial.println("operate red end");
  }
  if (digitalRead(black) == LOW)  // 한글에서 CTRL-F 찾기, ALT-F 다음 찾기(찾는 단어 변하지 않으니까 가능)
  {
    Serial.println("black Button");  
    Keyboard.press(KEY_LEFT_CTRL); // ctrl-f 찾기
    Keyboard.write('f');    
    delay(100);
    Keyboard.releaseAll();

    Keyboard.press(KEY_LEFT_ALT); // alt-f 다음 찾기
    Keyboard.write('f');
    delay(100);
    Keyboard.releaseAll();
    
    delay(500);
    Serial.println("operate black end");
  }
  if (digitalRead(white) == LOW)  // 구현 예정
  {  
    Serial.println("white Button");
    delay(500);
    Serial.println("operate white end");
  }

}

 

 

 

 

반응형

더욱 좋은 정보를 제공하겠습니다.~ ^^