キーボード
差分
このページの2つのバージョン間の差分を表示します。
| 次のリビジョン | 前のリビジョン | ||
| キーボード [2025/04/21 07:51] – 作成 masatok | キーボード [2025/05/19 06:51] (現在) – 外部編集 127.0.0.1 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| ====== キーボードの動作模倣 ====== | ====== キーボードの動作模倣 ====== | ||
| + | |||
| + | {{: | ||
| + | |||
| + | |||
| + | #include " | ||
| + | |||
| + | 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] = { | ||
| + | { ' | ||
| + | { ' | ||
| + | { ' | ||
| + | { ' | ||
| + | }; | ||
| + | |||
| + | void setup() { | ||
| + | for (int i = 0; i < 4; i++) { | ||
| + | pinMode(KEYOUT[i], | ||
| + | digitalWrite(KEYOUT[i], | ||
| + | } | ||
| + | for (int i = 0; i < 2; i++) { | ||
| + | pinMode(KEYIN[i], | ||
| + | } | ||
| + | Keyboard.begin(); | ||
| + | } | ||
| + | |||
| + | void loop() { | ||
| + | unsigned long currentMillis = millis(); | ||
| + | |||
| + | if (currentMillis - previousMillis >= interval) { | ||
| + | previousMillis = currentMillis; | ||
| + | digitalWrite(KEYOUT[columnNum], | ||
| + | |||
| + | 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], | ||
| + | columnNum++; | ||
| + | columnNum %= 4; | ||
| + | } | ||
| + | } | ||
| + | |||
| + | void keyPress(char key) { | ||
| + | switch (key) { | ||
| + | case ' | ||
| + | Keyboard.write(' | ||
| + | Keyboard.write(' | ||
| + | Keyboard.write(' | ||
| + | Keyboard.write(' | ||
| + | Keyboard.write(' | ||
| + | Keyboard.write(' | ||
| + | Keyboard.write(' | ||
| + | break; | ||
| + | |||
| + | case ' | ||
| + | Keyboard.press(KEY_LEFT_ALT); | ||
| + | Keyboard.press(KEY_RIGHT_ARROW); | ||
| + | break; | ||
| + | |||
| + | case ' | ||
| + | Keyboard.press(KEY_LEFT_GUI); | ||
| + | Keyboard.press('/' | ||
| + | break; | ||
| + | |||
| + | case ' | ||
| + | Keyboard.press(KEY_LEFT_ALT); | ||
| + | Keyboard.press(KEY_LEFT_ARROW); | ||
| + | break; | ||
| + | |||
| + | case ' | ||
| + | Keyboard.press(KEY_LEFT_GUI); | ||
| + | Keyboard.press(KEY_LEFT_CTRL); | ||
| + | Keyboard.press(' | ||
| + | break; | ||
| + | |||
| + | case ' | ||
| + | Keyboard.press(KEY_LEFT_GUI); | ||
| + | Keyboard.press(KEY_RIGHT_ARROW); | ||
| + | break; | ||
| + | |||
| + | case ' | ||
| + | Keyboard.press(KEY_LEFT_CTRL); | ||
| + | Keyboard.press(' | ||
| + | break; | ||
| + | |||
| + | case ' | ||
| + | Keyboard.press(KEY_LEFT_GUI); | ||
| + | Keyboard.press(KEY_LEFT_ARROW); | ||
| + | break; | ||
| + | |||
| + | default: | ||
| + | break; | ||
| + | } | ||
| + | } | ||
キーボード.1745221894.txt.gz · 最終更新: (外部編集)
