キーボード
キーボードの動作模倣
#include “Keyboard.h”
const int KEYIN[] = { 8, 9 }; const int KEYOUT[] = { 2, 3, 4, 5 };
unsigned long previousMillis = 0; const long interval = 30; int columnNum = 0; int sw[4][2] = { 0 }; char keyMap[4][2] = {
{ 'A', 'B' }, { 'C', 'D' }, { 'E', 'F' }, { 'G', 'H' }
};
void setup() {
for (int i = 0; i < 4; i++) { pinMode(KEYOUT[i], OUTPUT); digitalWrite(KEYOUT[i], LOW); } for (int i = 0; i < 2; i++) { pinMode(KEYIN[i], INPUT); } Keyboard.begin();
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) { previousMillis = currentMillis; digitalWrite(KEYOUT[columnNum], HIGH);
for (int rowNum = 0; rowNum < 2; rowNum++) { int readValue = digitalRead(KEYIN[rowNum]); if (readValue != sw[columnNum][rowNum] && readValue == HIGH) { keyPress(keyMap[columnNum][rowNum]); }
sw[columnNum][rowNum] = readValue; delay(10); Keyboard.releaseAll(); }
digitalWrite(KEYOUT[columnNum], LOW); columnNum++; columnNum %= 4; }
}
void keyPress(char key) {
switch (key) { case 'A': Keyboard.write('p'); Keyboard.write('r'); Keyboard.write('i'); Keyboard.write('n'); Keyboard.write('t'); Keyboard.write('('); Keyboard.write(')'); break;
case 'B': Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_RIGHT_ARROW); break;
case 'C': Keyboard.press(KEY_LEFT_GUI); Keyboard.press('/'); break;
case 'D': Keyboard.press(KEY_LEFT_ALT); Keyboard.press(KEY_LEFT_ARROW); break;
case 'E': Keyboard.press(KEY_LEFT_GUI); Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('j'); break;
case 'F': Keyboard.press(KEY_LEFT_GUI); Keyboard.press(KEY_RIGHT_ARROW); break;
case 'G': Keyboard.press(KEY_LEFT_CTRL); Keyboard.press('i'); break;
case 'H': Keyboard.press(KEY_LEFT_GUI); Keyboard.press(KEY_LEFT_ARROW); break;
default: break; }
}
キーボード.txt · 最終更新: by masatok