Add digikeyboard.ino
This commit is contained in:
55
digikeyboard.ino
Normal file
55
digikeyboard.ino
Normal file
@@ -0,0 +1,55 @@
|
||||
#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() {
|
||||
}
|
||||
Reference in New Issue
Block a user