이건 구글에서 찾은 회로도
이건 제가 보기 쉽게 만든 회로도 입니다.
보시다시피 납땜은 잘 못합니다.
인두는 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);
}
Àúµµ ¿¾³¯¿¡ UNO¿Í CP2102¸¦ ¿¬°áÇÏ°í
UNO Å°º¸µå·Î ÀνÄÇÏ°ÔÇÏ°í
CP2102·Î ¸ÞÅ©·Î ½ºÄÉÁìÀ» ¾÷·Îµå½Ãų¼ö ÀÖ°Ô ÄÚµùÇÏ¿©
°ÔÀÓ¿ë ¸ÞÅ©·Î¸¦ Á¦ÀÛÇغ»ÀûÀÖ½À´Ï´Ù ÇÏÇÏ..