본문 바로가기

아두이노우노 R4

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

반응형

 

아두이노 우노 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

 

 

반응형

캐어랩 고객 지원

취업, 창업의 막막함, 외주 관리, 제품 부재!

당신의 고민은 무엇입니까? 현실과 동떨어진 교육, 실패만 반복하는 외주 계약, 아이디어는 있지만 구현할 기술이 없는 막막함.

우리는 알고 있습니다. 문제의 원인은 '명확한 학습, 실전 경험과 신뢰할 수 있는 기술력의 부재'에서 시작됩니다.

이제 고민을 멈추고, 캐어랩을 만나세요!

코딩(펌웨어), 전자부품과 디지털 회로설계, PCB 설계 제작, 고객(시장/수출) 발굴과 마케팅 전략으로 당신을 지원합니다.

제품 설계의 고수는 성공이 만든 게 아니라 실패가 만듭니다. 아이디어를 양산 가능한 제품으로!

귀사의 제품을 만드세요. 교육과 개발 실적으로 신뢰할 수 있는 파트너를 확보하세요.

지난 30년 여정, 캐어랩이 얻은 모든 것을 함께 나누고 싶습니다.

카카오 채널 추가하기

카톡 채팅방에서 무엇이든 물어보세요

당신의 성공을 위해 캐어랩과 함께 하세요.

캐어랩 온라인 채널 바로가기

캐어랩