|
@@ -13,19 +13,17 @@
|
|
|
#define KEYBOARD_REPORT_COUNT 6
|
|
|
uint8_t key_report[KEYBOARD_REPORT_COUNT] = {0,0,0,0,0,0};
|
|
|
|
|
|
-char report_str[16]; // キーボードレポート表示用
|
|
|
-char indicator_str[16]; // LEDインジケーター表示用
|
|
|
-
|
|
|
+char report_str[OLED_WIDTH/FONT_WIDTH]; // キーボードレポート表示用
|
|
|
+char indicator_str[OLED_WIDTH/FONT_WIDTH]; // LEDインジケーター表示用
|
|
|
|
|
|
// レポート配列をクリア
|
|
|
-void clear_key_report(void)
|
|
|
+inline void clear_key_report(void)
|
|
|
{
|
|
|
for(int i = 0; i < KEYBOARD_REPORT_COUNT; i++){
|
|
|
key_report[i] = 0;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// USBデバイスがマウントされた
|
|
|
void tud_mount_cb(void)
|
|
|
{
|
|
@@ -61,7 +59,6 @@ void tud_hid_report_complete_cb(uint8_t instance, uint8_t const* report, uint16_
|
|
|
// 何もしない
|
|
|
}
|
|
|
|
|
|
-
|
|
|
// コントロールリクエストGET_REPORT
|
|
|
// キーボードは何も行わない
|
|
|
uint16_t tud_hid_get_report_cb(uint8_t instance, uint8_t report_id, hid_report_type_t report_type, uint8_t* buffer, uint16_t reqlen)
|
|
@@ -100,6 +97,14 @@ void tud_hid_set_report_cb(uint8_t instance, uint8_t report_id, hid_report_type_
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+// キーボードレポート表示
|
|
|
+void display_report(void)
|
|
|
+{
|
|
|
+ sprintf(report_str,"%02x%02x%02x%02x%02x%02x", key_report[0],key_report[1],key_report[2],key_report[3],key_report[4],key_report[5]);
|
|
|
+ display_putstr(report_str, 0, 3, false);
|
|
|
+}
|
|
|
+
|
|
|
+// メイン
|
|
|
int main()
|
|
|
{
|
|
|
// TinyUSBの初期化
|
|
@@ -112,6 +117,7 @@ int main()
|
|
|
stdio_init_all();
|
|
|
// OLED表示
|
|
|
display_init();
|
|
|
+ display_report();
|
|
|
// キーパッド
|
|
|
keypad_init();
|
|
|
|
|
@@ -140,8 +146,8 @@ int main()
|
|
|
}
|
|
|
}
|
|
|
// キーボードレポートをOLEDに表示する
|
|
|
- sprintf(report_str,"%02x%02x%02x%02x%02x%02x", key_report[0],key_report[1],key_report[2],key_report[3],key_report[4],key_report[5]);
|
|
|
- display_putstr(report_str, 0, 3, false);
|
|
|
+ display_report();
|
|
|
+ // 空きがあればキーボードレポート送信
|
|
|
if(tud_hid_ready())
|
|
|
tud_hid_keyboard_report(REPORT_ID_KEYBOARD,0, key_report);
|
|
|
}
|