Add digikeyboard.ino

This commit is contained in:
2025-12-13 17:47:54 +01:00
commit 3c29bc6b49

55
digikeyboard.ino Normal file
View 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() {
}