commit 3c29bc6b4973143cb84d5294a63193d9f1300ac2 Author: mikula Date: Sat Dec 13 17:47:54 2025 +0100 Add digikeyboard.ino diff --git a/digikeyboard.ino b/digikeyboard.ino new file mode 100644 index 0000000..3806c2f --- /dev/null +++ b/digikeyboard.ino @@ -0,0 +1,55 @@ +#include "DigiKeyboard.h" +#include + +#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() { +} \ No newline at end of file