MIDIキーボードをPS4版のFF14に接続するためのアダプタ。このプログラムはPS4側のmbed用で、この他にMIDI側のmbedが必要です。

Dependencies:   USBDevice mbed

Fork of USBKeyboard_HelloWorld by Samuel Mokrani

Revision:
8:370e4348433f
Parent:
7:d29d9dfda5b9
--- a/main.cpp	Sat Aug 18 06:38:20 2018 +0000
+++ b/main.cpp	Sat Aug 25 07:55:23 2018 +0000
@@ -38,24 +38,24 @@
     'a', '1',   // ド    48
     'b', '2',   // レ
     'c',        // ミ
-    'd', '3',   // ファ 
+    'd', '3',   // ファ
     'e', '4',   // ソ
     'f', '5',   // ラ
     'g',        // シ    59
     'h', '6',   // ド    60
     'i', '7',   // レ
-    'j',        // ミ 
+    'j',        // ミ
     'k', '8',   // ファ
     'l', '9',   // ソ
     'm', '0',   // ラ
     'n',        // シ    71
     'o', 'w',   // ド    72
-    'p', 'x',   // レ 
-    'q',        // ミ 
-    'r', 'y',   // ファ 
-    's', 'z',   // ソ 
+    'p', 'x',   // レ
+    'q',        // ミ
+    'r', 'y',   // ファ
+    's', 'z',   // ソ
     't', '.',   // ラ
-    'u',        // シ 
+    'u',        // シ
     'v',        // ド    84
     ',', '/', ';', '[', ']'
 };
@@ -81,21 +81,24 @@
         }
         // 先頭が'O'で4文字以上受信済みかチェック
         if (((unsigned char)(indexW - indexR) >= 4) && (buffer[indexR] == 'O')) {
+            int key = (buffer[indexR + 2] - '0') * 10 + (buffer[indexR + 3] - '0');
             switch(buffer[indexR + 1]) {
                 case 'N':
-                    int key = (buffer[indexR + 2] - '0') * 10 + (buffer[indexR + 3] - '0');
-                    if (key < 48) {
+                    if (key < 48 || key > 84) {
                         pc.printf("reject %d", key);
-                        break;    // 48未満は対象外
+                        break;    // 48未満と84超過は対象外
                     }
-                    if (key <= 84) {
-                        key -= 48;
-                        keyboard.printf("%c", ffKey[key]);
-                        break;
-                    }
-                    pc.printf("other %d", key);
+                    key -= 48;
+                    keyboard.keyDown(ffKey[key]);
+                    //keyboard.printf("%c", ffKey[key]);
                     break;
                 case 'F':
+                    if (key < 48 || key > 84) {
+                        pc.printf("reject %d", key);
+                        break;    // 48未満と84超過は対象外
+                    }
+                    key -= 48;
+                    keyboard.keyUp(ffKey[key]);
                     break;
                 default:
                     pc.printf("不正なコードの受信 %c", buffer[indexR + 1]);