본문 바로가기
하드웨어/아두이노

[아두이노] 키보드를 이용한 윈도우 활성화

by 만들오 2022. 2. 22.

​안녕하세요? 만들오 입니다.

아두이노 레오나르도를 이용해 윈도우 앱을 제어하기 위해, 윈도우 창 활성화를 할 수 있는 방법을 고민하다 방법을 찾았기에, 내용을 공유합니다.

 

※ 윈도우 창 활성화란? 가장 마지막으로 클릭한 창이 활성화된 상태입니다. 윈도우 메모장에 글을 쓰기 위해서는 메모장을 선택하고 입력해야 합니다. 이렇게 선택된 상태를 활성화라고 합니다.

 

윈도우 단축키
  • win+1~9 : 윈도우 하단 작업표시줄의 앱을 활성화 시킵니다. (바로 눌러보세요)

만약, win+1을 눌러 크롬을 활성화 시켰는데, 다시 win+1을 누르면 최소화 되버립니다. 제가 원하는 기능은 항상 활성화를 시키고 싶은데, 최소화 되어버리면 안됩니다.

 

그래서 찾은 방법이 다음 단축키 입니다.

  • win+T : 윈도우 하단 작업표시줄 앱을 순환합니다.

win+T를 누른 상태에서 win+1을 누르면, 활성화 된 상태라도 최소화 되지 않습니다.👍

이게 바로 제가 찾던 기능입니다.

 

만약, 크롬 창이 2개라면?

아래 사진처럼 크롬 창이 2개 이상인 경우도 있습니다.

만약 오른쪽 창을 활성화 시키고 싶다면, win+T → 1 → 1 을 눌러주면 원하는 창을 활성화 시키는군요.

이 로직을 아두이노 스케치로 만들고, 레오나르도 보드에 업로드 하겠습니다.

 

스케치 업로드 전, 보드와 포트 설정은 항상 신경써 줘야 합니다.

keyboard_v3.ino
0.00MB

#include "Keyboard.h"

void setup() {
  Serial.setTimeout(100);
  Serial.begin(9600);
  Keyboard.begin();
}

void active(int num) {
  Keyboard.press(KEY_LEFT_GUI); //win 키
  Keyboard.press('t');
  delay(100);
  Keyboard.release('t');
  for (int i=0; i<num; i++) {
    Keyboard.press('1');
    Keyboard.release('1');
    Serial.println('1');
    delay(100);
  }
  Keyboard.releaseAll();
}

void loop() {
  if (Serial.available() > 0) {
    String msg = Serial.readString();
    Serial.println(msg);
    if (msg == "f1" || msg == "F1") Keyboard.write(KEY_F1);
    else if (msg == "f2" || msg == "F2") Keyboard.write(KEY_F2);
    else if (msg == "f3" || msg == "F3") Keyboard.write(KEY_F3);
    else if (msg == "f4" || msg == "F4") Keyboard.write(KEY_F4);
    else if (msg == "f5" || msg == "F5") Keyboard.write(KEY_F5);
    else if (msg == "f6" || msg == "F6") Keyboard.write(KEY_F6);
    else if (msg == "f7" || msg == "F7") Keyboard.write(KEY_F7);
    else if (msg == "f8" || msg == "F8") Keyboard.write(KEY_F8);
    else if (msg == "f9" || msg == "F9") Keyboard.write(KEY_F9);
    else if (msg == "f10" || msg == "F10") Keyboard.write(KEY_F10);
    else if (msg == "f11" || msg == "F11") Keyboard.write(KEY_F11);
    else if (msg == "f12" || msg == "F12") Keyboard.write(KEY_F12);
    else if (msg == "space") Keyboard.write(32);
    else if (msg == "active_1") active(1);
    else if (msg == "active_2") active(2);
    else if (msg == "active_3") active(3);
    else if (msg == "active_4") active(4);
    else Keyboard.print(msg);
  }
}

 

감사합니다.

 

[끝].

728x90

댓글