55 lines
1.6 KiB
C++
55 lines
1.6 KiB
C++
#include "DigiKeyboard.h"
|
|
#include <stdio.h>
|
|
|
|
#define KEYPAD_1 ( 89 | 0xF000 )
|
|
#define KEYPAD_2 ( 90 | 0xF000 )
|
|
#define KEYPAD_3 ( 91 | 0xF000 )
|
|
#define KEYPAD_4 ( 92 | 0xF000 )
|
|
#define KEYPAD_5 ( 93 | 0xF000 )
|
|
#define KEYPAD_6 ( 94 | 0xF000 )
|
|
#define KEYPAD_7 ( 95 | 0xF000 )
|
|
#define KEYPAD_8 ( 96 | 0xF000 )
|
|
#define KEYPAD_9 ( 97 | 0xF000 )
|
|
#define KEYPAD_0 ( 98 | 0xF000 )
|
|
|
|
int keypad[10] = {KEYPAD_0, KEYPAD_1, KEYPAD_2, KEYPAD_3, KEYPAD_4, KEYPAD_5, KEYPAD_6, KEYPAD_7, KEYPAD_8, KEYPAD_9};
|
|
|
|
void typeAltChar(char c){
|
|
digitalWrite(1, HIGH);
|
|
char alt_code[4];
|
|
snprintf(alt_code, 4, "%d", c); // convert int to decimal
|
|
int i=0;
|
|
while(alt_code[i]!=0){
|
|
if(i > 0 && alt_code[i-1]==alt_code[i]){
|
|
DigiKeyboard.sendKeyPress(0,MOD_ALT_LEFT); // Release all keys except "ALT"
|
|
}
|
|
DigiKeyboard.sendKeyPress(keypad[alt_code[i]-'0'],MOD_ALT_LEFT);
|
|
++i;
|
|
}
|
|
DigiKeyboard.sendKeyPress(0,0);
|
|
digitalWrite(1, LOW);
|
|
}
|
|
|
|
void typeAltString(char* string){
|
|
int i=0;
|
|
while(string[i]!=0){
|
|
typeAltChar(string[i]);
|
|
++i;
|
|
}
|
|
}
|
|
|
|
void setup() {
|
|
pinMode(1, OUTPUT); // setup LED
|
|
|
|
// setup keyboard
|
|
DigiKeyboard.sendKeyStroke(0);
|
|
|
|
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT); // WIN+R open run box
|
|
DigiKeyboard.delay(300);
|
|
// using ALT keys to be keyboard layout agnostic https://en.wikipedia.org/wiki/Alt_code
|
|
typeAltString("echo test");
|
|
DigiKeyboard.sendKeyStroke(KEY_ENTER);
|
|
}
|
|
|
|
void loop() {
|
|
} |