아두이노우노 R4

아두이노 우노 R4 HID 키보드 제어 API

지구빵집 2024. 3. 7. 07:50
반응형

 

아두이노 우노 R4 HID 키보드 제어  

 

키보드 [USB]

 

설명

 

키보드 기능을 사용하면 32u4 또는 SAMD 마이크로 기반 보드에서 마이크로의 기본 USB 포트를 통해 연결된 컴퓨터로 키 입력을 전송할 수 있습니다.

 

참고: 키보드 라이브러리를 사용하여 가능한 모든 ASCII 문자, 특히 인쇄되지 않는 문자를 전송할 수 있는 것은 아닙니다.

 

이 라이브러리는 수정자 키 사용을 지원합니다. 수정자 키는 동시에 누를 때 다른 키의 동작을 변경합니다. 지원되는 키 및 사용법에 대한 자세한 내용은 여기를 참조하세요.

 

참고 및 경고

 

이러한 핵심 라이브러리를 사용하면 32u4 및 SAMD 기반 보드(레오나르도, 에스플로라, 제로, 듀 및 MKR 제품군)가 연결된 컴퓨터에 기본 마우스 및/또는 키보드로 표시될 수 있습니다.

 

마우스 및 키보드 라이브러리 사용 시 주의할 점: 마우스 또는 키보드 라이브러리가 계속 실행 중이면 보드를 프로그래밍하기 어려울 수 있습니다. Mouse.move() 및 Keyboard.print()와 같은 함수는 커서를 이동하거나 키 입력을 연결된 컴퓨터로 전송하므로 이를 처리할 준비가 되었을 때만 호출해야 합니다. 이 기능을 켜려면 물리적 스위치와 같은 제어 시스템을 사용하거나 제어할 수 있는 특정 입력에만 응답하는 것이 좋습니다. 이를 처리하는 몇 가지 방법은 마우스 및 키보드 예제를 참조하세요.

 

마우스 또는 키보드 라이브러리를 사용할 때는 먼저 Serial.print()를 사용하여 출력을 테스트하는 것이 가장 좋습니다. 이렇게 하면 어떤 값이 보고되고 있는지 확인할 수 있습니다.

 

함수

 

Keyboard.begin()

Keyboard.end()

Keyboard.press()

Keyboard.print()

Keyboard.println()

Keyboard.release()

Keyboard.releaseAll()

Keyboard.write()

 


그냥 내친김에 정리한다. 머 잠도 안오고 특별히 할 일도 없다. 이러니 지루할 틈이 없다. 삶이 참 주옥같다. ^^

 

Keyboard.begin() 설명: 레오나르도 또는 듀 보드와 함께 사용할 경우 Keyboard.start()는 컴퓨터에 연결된 키보드 에뮬레이션을 시작합니다. 제어를 종료하려면 Keyboard.end()를 사용합니다.

구문
Keyboard.begin()
Keyboard.begin(layout)

매개변수
layout: 사용할 키보드 레이아웃. 이 매개변수는 선택 사항이며 기본값은 KeyboardLayout_en_US입니다.

키보드 레이아웃
현재 라이브러리는 다음과 같은 국가별 키보드 레이아웃을 지원합니다:

KeyboardLayout_da_DK: 덴마크
KeyboardLayout_de_DE: 독일
KeyboardLayout_en_US: 미국
KeyboardLayout_es_ES: 스페인
KeyboardLayout_fr_FR: 프랑스
KeyboardLayout_it_IT: 이탈리아
KeyboardLayout_sv_SE: 스웨덴

반환값
Nothing

예제 코드
#포함 <키보드.h>

void setup() {
  // 2번 핀을 입력으로 설정하고
  // 풀업 저항을 켜서 높은 전압이 되도록 합니다.
  // 접지에 연결되지 않는 한:
  pinMode(2, INPUT_PULLUP);
  Keyboard.start();
}

void loop() {
  //버튼이 눌린 경우
  if (digitalRead(2) == LOW) {
    //메시지 전송
    Keyboard.print("Hello!");
  }
}

참고 및 경고
사용자 지정 레이아웃은 기존 레이아웃을 복사하고 수정하여 만들 수 있습니다. 키보드 라이브러리의 KeyboardLayout.h 파일에 있는 지침을 참조하세요.
Keyboard.end() 설명: 연결된 컴퓨터에 대한 키보드 에뮬레이션을 중지합니다. 키보드 에뮬레이션을 시작하려면 키보드.시작()을 사용합니다.

구문: Keyboard.end()

매개변수: None

리턴: 아무것도

예제 코드
#include <Keyboard.h>

void setup() {
  //키보드 통신 시작
  Keyboard.start();
  //키 입력 전송
  Keyboard.print("Hello!");
  //키보드 통신 종료
  Keyboard.end();
}

void loop() {
  // 아무것도 하지 않음
}
Keyboard.press()

설명: 호출하면 키보드에서 키를 누르고 있는 것처럼 Keyboard.press()가 작동합니다. 수정자 키를 사용할 때 유용합니다. 키 누름을 종료하려면 Keyboard.release() 또는 Keyboard.releaseAll()을 사용합니다.

press()를 사용하기 전에 Keyboard.begin()을 호출해야 합니다.

구문
Keyboard.press(키)

매개변수
키: 누를 키입니다. 허용되는 데이터 유형: char

반환값
전송된 키 누름 수입니다. 데이터 유형: size_t.

예제 코드
#포함 <키보드.h>

// OSX에서 이 옵션을 사용합니다:
char ctrlKey = KEY_LEFT_GUI;
// 윈도우와 리눅스에서 이 옵션을 사용합니다:
// char ctrlKey = KEY_LEFT_CTRL;

void setup() {
  // 핀 2를 입력으로 만들고 풀업 저항을 켜서
  // 풀업 저항을 켜서 접지에 연결되지 않는 한
  // 접지에 연결되지 않는 한:
  pinMode(2, INPUT_PULLUP);
  // 키보드에 대한 제어를 초기화합니다:
  Keyboard.start();
}

void loop() {
  while (digitalRead(2) == HIGH) {
    // 핀 2가 낮아질 때까지 아무것도 하지 않습니다.
    delay(500);
  }
  delay(1000);
  // 새 문서:
  Keyboard.press(ctrlKey);
  Keyboard.press('n');
  delay(100);
  Keyboard.releaseAll();
  // 새 창이 열릴 때까지 기다립니다:
  delay(1000);
}
Keyboard.print() 설명: 하나 이상의 키 입력을 연결된 컴퓨터로 전송합니다.

키보드.print()는 키보드.시작()을 시작한 후에 호출해야 합니다.

구문
Keyboard.print(character)
Keyboard.print(characters)

매개변수
character: 키 입력으로 컴퓨터에 전송할 문자 또는 정수입니다.
characters: 키 입력으로 컴퓨터에 전송할 문자열입니다.

반환값
전송된 키 입력 수입니다. 데이터 유형: size_t.

예제 코드
#포함 <키보드.h>

void setup() {
  // 2번 핀을 입력으로 설정하고
  // 풀업 저항을 켜서 높은 전압이 되도록 합니다.
  // 접지에 연결되지 않는 한:
  pinMode(2, INPUT_PULLUP);
  Keyboard.start();
}

void loop() {
  //버튼이 눌린 경우
  if (digitalRead(2) == LOW) {
    //메시지 전송
    Keyboard.print("Hello!");
  }
}
참고 및 경고
Keyboard.print() 명령을 사용하면 아두이노가 키보드를 대신합니다! 명령을 사용하기 전에 제어권이 있는지 확인하세요. 키보드 제어 상태를 전환하는 푸시 버튼이 효과적입니다.
Keyboard.println() 설명: 하나 이상의 키 입력을 연결된 컴퓨터로 전송한 다음 Enter 키를 누릅니다.

키보드.println()은 Keyboard.begin()을 시작한 후에 호출해야 합니다.

구문
Keyboard.println()
Keyboard.println(character)
Keyboard.println(characters)

매개변수
character: 키 입력으로 컴퓨터에 전송할 문자 또는 정숫자, 그 뒤에 Enter를 입력합니다.
characters: 키 입력으로 컴퓨터에 전송할 문자열, 그 뒤에 Enter를 입력합니다.

반환값: 전송된 키 입력 수입니다. 데이터 유형: size_t.

예제 코드
#포함 <키보드.h>

void setup() {
  // 2번 핀을 입력으로 설정하고
  // 풀업 저항을 켜서 높은 전압이 되도록 합니다.
  // 접지에 연결되지 않는 한:
  pinMode(2, INPUT_PULLUP);
  Keyboard.start();
}

void loop() {
  //버튼이 눌린 경우
  if (digitalRead(2) == LOW) {
    //메시지 전송
    Keyboard.println("안녕하세요!");
  }
}
참고 및 경고
Keyboard.println() 명령을 사용하면 아두이노가 키보드를 대신합니다! 명령을 사용하기 전에 제어권이 있는지 확인하세요. 키보드 제어 상태를 전환하는 푸시 버튼이 효과적입니다.
Keyboard.release() 설명: 지정된 키를 놓습니다. 자세한 내용은 Keyboard.press()를 참조하세요.

구문: Keyboard.release(key)

매개변수
키: 해제할 키입니다. 허용되는 데이터 타입: 문자.

반환값
해제된 키의 개수입니다. 데이터 타입: size_t.

예제 코드
#포함 <키보드.h>

// OSX에서 이 옵션을 사용합니다:
char ctrlKey = KEY_LEFT_GUI;
// 윈도우와 리눅스에서 이 옵션을 사용합니다:
// char ctrlKey = KEY_LEFT_CTRL;

void setup() {
  // 핀 2를 입력으로 만들고 풀업 저항을 켜서
  // 풀업 저항을 켜서 접지에 연결되지 않는 한
  // 접지에 연결되지 않는 한:
  pinMode(2, INPUT_PULLUP);
  // 키보드에 대한 제어를 초기화합니다:
  Keyboard.start();
}

void loop() {
  while (digitalRead(2) == HIGH) {
    // 핀 2가 낮아질 때까지 아무것도 하지 않습니다.
    delay(500);
  }
  delay(1000);
  // 새 문서:
  Keyboard.press(ctrlKey);
  Keyboard.press('n');
  delay(100);
  Keyboard.release(ctrlKey);
  Keyboard.release('n');
  // 새 창이 열릴 때까지 기다립니다:
  delay(1000);
}
Keyboard.releaseAll() 설명: 현재 누르고 있는 모든 키를 해제합니다. 자세한 내용은 Keyboard.press()를 참조하세요.

구문: Keyboard.releaseAll()

매개변수: None

리턴: 아무것도

예제 코드
#포함 <키보드.h>

// OSX에서 이 옵션을 사용합니다:
char ctrlKey = KEY_LEFT_GUI;
// 윈도우와 리눅스에서 이 옵션을 사용합니다:
// char ctrlKey = KEY_LEFT_CTRL;

void setup() {
  // 핀 2를 입력으로 만들고 풀업 저항을 켜서
  // 풀업 저항을 켜서 접지에 연결되지 않는 한
  // 접지에 연결되지 않는 한:
  pinMode(2, INPUT_PULLUP);
  // 키보드에 대한 제어를 초기화합니다:
  Keyboard.start();
}

void loop() {
  while (digitalRead(2) == HIGH) {
    // 핀 2가 낮아질 때까지 아무것도 하지 않습니다.
    delay(500);
  }
  delay(1000);
  // 새 문서:
  Keyboard.press(ctrlKey);
  Keyboard.press('n');
  delay(100);
  Keyboard.releaseAll();
  // 새 창이 열릴 때까지 기다립니다:
  delay(1000);
}
Keyboard.write() 설명
연결된 컴퓨터로 키 입력을 보냅니다. 이는 키보드의 키를 눌렀다 놓는 것과 비슷합니다. 일부 ASCII 문자나 추가 키보드 수정자 및 특수 키를 보낼 수 있습니다.

키보드에 있는 ASCII 문자만 지원됩니다. 예를 들어 ASCII 8(백스페이스)은 작동하지만 ASCII 25(대체)는 작동하지 않습니다. 대문자를 보낼 때 Keyboard.write()는 키보드에서 입력하는 것처럼 Shift 명령과 원하는 문자를 함께 보냅니다. 숫자 유형을 전송하는 경우 ASCII 문자로 전송합니다(예: Keyboard.write(97)은 'a'를 전송합니다).

ASCII 문자의 전체 목록은 ASCIITable.com을 참조하세요.

구문
Keyboard.write(character)

매개변수
character: 컴퓨터로 전송할 문자 또는 정수입니다. 문자로 허용되는 모든 표기법으로 전송할 수 있습니다. 예를 들어, 아래 모두 허용되며 동일한 값인 65 또는 ASCII A를 전송할 수 있습니다:

Keyboard.write(65); // ASCII 값 65 또는 A를 보냅니다.
Keyboard.write('A'); // 따옴표로 묶은 문자와 동일함
Keyboard.write(0x41); // 16진수로도 동일합니다.
Keyboard.write(0b01000001); // 바이너리로 동일하게 (이상한 선택이지만 작동합니다)

반환값
전송된 바이트 수입니다. 데이터 유형: size_t.

예제 코드
#include <Keyboard.h>

void setup() {
  // 2번 핀을 입력으로 설정하고
  // 풀업 저항을 켜서 높은 전압이 되도록 합니다.
  // 접지에 연결되지 않는 한:
  pinMode(2, INPUT_PULLUP);
  Keyboard.start();
}

void loop() {
  //버튼이 눌린 경우
  if (digitalRead(2) == LOW) {
    //SEND ASCII 'A',
    Keyboard.write(65);
  }
}
참고 및 경고
키보드.쓰기() 명령을 사용하면 아두이노가 키보드를 대신합니다! 명령을 사용하기 전에 제어 권한이 있는지 확인하세요. 키보드 제어 상태를 전환하는 푸시 버튼이 효과적입니다.

 

참조

 

예제: 키보드 앤 마우스 컨트롤: 하나의 프로그램에서 마우스와 키보드 명령을 보여줍니다.

예제: KeyboardMessage: 버튼을 눌렀을 때 텍스트 문자열을 전송합니다.

예제: 키보드 로그아웃: 키 명령으로 현재 사용자를 로그아웃합니다.

예제: 키보드 시리얼: 직렬 포트에서 바이트를 읽고 키 입력을 다시 보냅니다.

예제: KeyboardReprogram: Arduino IDE에서 새 창을 열고 간단한 깜박임 프로그램을 사용하여 보드를 다시 프로그래밍합니다. 

 

 

이미지 엘레파츠 유튜브&nbsp;https://www.youtube.com/watch?v=h9O1rt810E8

 

 

반응형