기타 프로젝트/공개 프로그램

Key Input Board 0.8 - 시리얼 신호를 이용한 매크로 프로그램

당근천국 2020. 5. 27. 15:30

Key Input Board 0.8

- 시리얼 신호를 읽어 WinAPI를 호출합니다.

- 원하는 키 조합 입력 기능

- 키 조합 파일 로드 기능



프로그램 다운로드 : https://github.com/dang-gun/KeyInputBoard/releases

프로그램 소스 : github - dang-gun/KeyInputBoard




Author  : Dang-Gun Roleeyas ( http://blog.danggun.net/ )

Create date : 2020.04.24

License  : MIT( https://opensource.org/licenses/MIT )



사용기술 : c# 4.7.2, WinForm



유틸리티 설명

시리얼의 데이터의 신호를 받아 WinAPI 키보드를 호출하는 프로그램입니다.

이 동작은 낮은 수준의 키보드 매크로와 같습니다.

외부 프로그램과 조합한다면 하드웨어 신호를 받아 키보드와 마우스 매크로로 활용할 수 있습니다.




외부 장치에서 시리얼로 신호를 받아

이 신호를 사용자가 지정한 매크로로 변환하여

윈도우를 동작시킵니다.




주의할 것은 이 프로젝트는 키보드를 보조하려는 목적이 아니라

하드웨어 신호로 매크로를 동작시키려는 목적입니다.


만약 키보드를 보조하기 위한다면 아두이노 레오나르도나 키보드를 직접 분해하여 사용하는 것이 좋습니다.



1. 주요 기능

- 시리얼 신호 읽기

- 사용자 정의 동작 리스트

- 시리얼 신호와 사용자 정의 동작 리스트를 매칭 시켜 동작



2. 사용 방법

샘플 코드는 아두이노를 기준으로 합니다.


기판을 아두이노와 함께 다음과 같이 세팅합니다.





아두이노를 다음과 같이 작성합니다.

아래 코드에는 'ButtonClickCheck.h'가 필요합니다.

(참고 : [Arduino] 버튼 처리를 위한 라이브러리 - ButtonClickCheck)


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#include <ButtonClickCheck.h>
 
//버튼 리스트
ButtonClickCheck BtnList[] = 
{
  ButtonClickCheck(1, HIGH),
  ButtonClickCheck(2, HIGH),
  ButtonClickCheck(3, HIGH)
};
 
//핀 리스트 개수
int nBtnCount = 0;
 
void setup()
{
  Serial.begin(9600);
  
  //버튼 리스트 개수
  nBtnCount = sizeof(BtnList) / sizeof(ButtonClickCheck);
  //Serial.println("count:" + (String)nBtnCount );
  
  //버튼 풀업 설정
  for(int i = 0; i < nBtnCount; ++i )
  {
    pinMode(BtnList[i].Pin, INPUT_PULLUP);
    Serial.println("Pin:" + (String)BtnList[i].Pin );
  }
  
}
 
void loop()
{
  if(Serial.available())
  {
    char temp[20];
    byte leng = Serial.readBytesUntil('\n', temp, 20);
    String sResult = ((String)temp).substring(0, leng);
 
    if("GetInfo" == sResult)
    {//인포 요청
      Serial.println("KeyInputBoard");
    }
  }
  else
  {
    //Serial.println((String)digitalRead(Button02));
    
    for(int i = 0; i < nBtnCount; ++i )
    {
      if(3 == BtnList[i].ClickCheck())
      {//첫클릭
        //컴퓨터에 신호를 준다.
        Serial.println("BtnKey:" + (String)BtnList[i].Pin );
        //Serial.println("count:" + (String)nPinListCount);
      }
    }
    
    //Serial.println(" ");
  }
  
  delay(50);
}
cs

github - KeyInputBoard/Arduino/KeyInputBoard_Defult/



이렇게 작성하면 버튼을 눌렀을 때 

BtnKey:[핀 번호]

가 넘어옵니다.



프로그램을 실행하고 아두이노와 연결된 포트를 설정합니다.




필요한 핀정보가 넘어왔을때 할 동작을 작성하고 'Add'버튼을 눌러 리스트에 추가합니다.




'Start'버튼을 눌러 시리얼 포트 감시를 시작합니다.


아두이노에 연결된 버튼을 눌러 지정한 동작이 하는지 확인해 봅시다.




버튼을 누르면 등록된 동작(지포스 스크린 숏, Alt + F1)을 하는 것을 볼 수 있습니다.



수정 이력

2020.05.24 - 0.8

개발 완료