아두이노 자작 키보드 매크로

ScanIP   
   조회 2018   추천 2    





   이건 구글에서 찾은 회로도


  이건 제가 보기 쉽게 만든 회로도 입니다.

  

보시다시피 납땜은 잘 못합니다.

인두는 dc인두기가 있지만 꺼내기 귀찮아서 5v 12w인 usb 인두기 사용했습니다.




 

 완성작이구요 

 기계식 키보드의 스위치를 이용해도 훨씬 낫겠지만

제가 없어서.. 택 스위치 4개 박았습니다.

ic는 혹시나 죽으면 다시 납땜하기 너무 싫어서 소켓을 달았고요

ic 옆에있는게 제가 저번에 전압측정기 만든 digispark라는 아두이노입니다.

저번껀 usb 단자가 있었지만 이건 5핀 단자가 있는 타입이에요


소스도 맨위 회로랑 같이 있었고 저는 소스를 대충 뜯어고쳐서

야매로 만들었습니다.


일단 이 매크로의 최대단점은 등록하는 방법이 귀찮다는겁니다. 

sw를 이용해서 프로그램을 지정해서 하는 그런식이 아니라

cmd 관리자로 실행 시킨다면

윈도우키 -> c -> m-> d -> 왼쪽 컨트롤키, 왼쪽 쉬프트키 눌르는 상태로 엔터 -> 왼쪽 화살표 -> 엔터

이런 아주 무식한 방법으로 되있습니다.

방법을 찾으면 있기야 할텐데... 정보도 없어서 이것도 겨우 한겁니다.




#include 

#include "DigiKeyboard.h"  // Include Library for Keyboard Emulation / Before verifying the code , change the board to Digispark default .

#define MOD_SHIFT_LEFT      (1<<1)  //00000010

#define MOD_GUI_LEFT        (1<<3)  //00001000

#define MOD_CONTROL_LEFT    1

#define KEY_LEFT_ARROW       0X50

#define KEY_ENTER       40

#define KEY_TAB       179

#define KEY_A       4

#define KEY_B       5

#define KEY_C       6

#define KEY_D       7

#define KEY_E       8

#define KEY_F       9

#define KEY_G       10

#define KEY_H       11

#define KEY_I       12

#define KEY_J       13

#define KEY_K       14

#define KEY_L       15

#define KEY_M       16

#define KEY_N       17

#define KEY_O       18

#define KEY_P       19

#define KEY_Q       20

#define KEY_R       21

#define KEY_S       22

#define KEY_T       23

#define KEY_U       24

#define KEY_V       25

#define KEY_W       26

#define KEY_X       27

#define KEY_Y       28

#define KEY_Z       29

#define KEY_1       30

#define KEY_2       31

#define KEY_3       32

#define KEY_4       33

#define KEY_5       34

#define KEY_6       35

#define KEY_7       36

#define KEY_8       37

#define KEY_9       38

#define KEY_0       39


int dataPin = 0;   

int clockPin = 1;  // digispark pins to cd4021 pins

int latchPin = 2;  


//Define variable

byte RegisterValue = 0;  // Used to hold data from DC4021


void setup() {


//define pins used to connect to the CD4021 Shift Register

  pinMode(dataPin, INPUT);

  pinMode(latchPin, OUTPUT);

  pinMode(clockPin, OUTPUT); 


}


void loop() {




  //Set latch pin to 1 to get recent data into the CD4021

  digitalWrite(latchPin,1);

  

  delayMicroseconds(20);

  

  //Set latch pin to 0 to get data from the CD4021

  digitalWrite(latchPin,0);


  //Get CD4021 register data in byte variable

  RegisterValue = shiftIn(dataPin, clockPin, MSBFIRST);


  if (RegisterValue == B10000) {

    DigiKeyboard.print("Button 1 pressed  -->");

    DigiKeyboard.println(RegisterValue, BIN);

  }

  if (RegisterValue == B1000) {

    DigiKeyboard.print("Button 2 pressed  -->");

    DigiKeyboard.println(RegisterValue, BIN);

  }

  //3번 버튼, SnippingTool 실행

  if (RegisterValue == B100) {

  DigiKeyboard.update();

  DigiKeyboard.sendKeyStroke(0);

  DigiKeyboard.sendKeyStroke(0, MOD_GUI_LEFT);

  DigiKeyboard.delay(100);

  DigiKeyboard.sendKeyStroke(KEY_S);

  DigiKeyboard.sendKeyStroke(KEY_N);

  DigiKeyboard.sendKeyStroke(KEY_I);

  DigiKeyboard.sendKeyStroke(KEY_P);

  DigiKeyboard.sendKeyStroke(KEY_P);

  DigiKeyboard.sendKeyStroke(KEY_I);

  DigiKeyboard.sendKeyStroke(KEY_N);

  DigiKeyboard.sendKeyStroke(KEY_G);

  DigiKeyboard.sendKeyStroke(KEY_T);

  DigiKeyboard.sendKeyStroke(KEY_O);

  DigiKeyboard.sendKeyStroke(KEY_O);

  DigiKeyboard.sendKeyStroke(KEY_L);

  DigiKeyboard.delay(100);

  DigiKeyboard.sendKeyStroke(KEY_ENTER);

  DigiKeyboard.delay(100);

  }

  

  //4번 버튼, 관리자 CMD 실행

  if (RegisterValue == B10) {

  DigiKeyboard.update();

  DigiKeyboard.sendKeyStroke(0);

  DigiKeyboard.sendKeyStroke(0, MOD_GUI_LEFT);

  DigiKeyboard.delay(100);

  DigiKeyboard.sendKeyStroke(KEY_C);

  DigiKeyboard.sendKeyStroke(KEY_M);

  DigiKeyboard.sendKeyStroke(KEY_D);

  DigiKeyboard.delay(300);

  DigiKeyboard.sendKeyStroke(KEY_ENTER, MOD_CONTROL_LEFT + MOD_SHIFT_LEFT);

  DigiKeyboard.delay(300);

  DigiKeyboard.sendKeyStroke(KEY_LEFT_ARROW);

  DigiKeyboard.delay(300);

  DigiKeyboard.sendKeyStroke(KEY_ENTER);

  DigiKeyboard.delay(300);

  }  

  

// if (RegisterValue == B100000) {

//    DigiKeyboard.print("Button 5 pressed  -->");

//    DigiKeyboard.println(RegisterValue, BIN);

//  }

  

//  if (RegisterValue == B1000000) {

//    DigiKeyboard.print("Button 6 pressed  -->");

//    DigiKeyboard.println(RegisterValue, BIN);

//  }


//   if (RegisterValue == B10000000) {

//    DigiKeyboard.print("Button 7 pressed  -->");

//    DigiKeyboard.println(RegisterValue, BIN);

// }



delay(10);


}






KimSungHoon
송진현 07-17
하하..
저도 옛날에 UNO와 CP2102를 연결하고
UNO 키보드로 인식하게하고
CP2102로 메크로 스케쥴을 업로드시킬수 있게 코딩하여
게임용 메크로를 제작해본적있습니다 하하..




제목Page 1/31
08-16   524   회원K
08-13   551   성기사
08-10   819   1CPU지창훈
07-31   1581   경박한시민
07-26   2055   경박한시민
07-17   2345   ScanIP
07-17   2019   ScanIP
07-16   1829   소주한병
07-14   1714   전직단백질…
07-11   2402   ScanIP
07-10   1639   로드디자이너
07-09   1780   백업하자
07-07   1588   통신보안
07-04   2065   김성진75
07-02   2334   뒷북소년
07-03   1583   김준유
06-30   1906   인두껍
06-28   2158   엠브리오
06-25   2998   경박한시민
06-26   2040   경박한시민