44#include "Adafruit_TinyUSB.h"
55#include "globals.h"
66
7- #define KEYCODE_TO_SEND HID_KEY_SPACE
7+ #define UP_BUTTON_KEYCODE_TO_SEND HID_KEY_U
8+ #define A_BUTTON_KEYCODE_TO_SEND HID_KEY_A
9+ #define DOWN_BUTTON_KEYCODE_TO_SEND HID_KEY_D
10+ #define SHAKE_KEYCODE_TO_SEND HID_KEY_SPACE
811
912// HID report descriptor using TinyUSB's template
1013// Single Report (no ID) descriptor
@@ -21,9 +24,10 @@ void user_setup(void) {
2124
2225 usb_hid.begin();
2326
24- pinMode(13, OUTPUT);
25- digitalWrite(13, LOW);
26-
27+ pinMode(LED_BUILTIN, OUTPUT);
28+ digitalWrite(LED_BUILTIN, LOW);
29+ arcada.accel.setClick(1, 50);
30+
2731 // wait until device mounted
2832 while( !USBDevice.mounted() ) delay(1);
2933}
@@ -37,11 +41,38 @@ void user_loop(void) {
3741 uint8_t keycode[6] = { 0 };
3842
3943 uint32_t buttonState = arcada.readButtons();
44+ if (buttonState & ARCADA_BUTTONMASK_UP) {
45+ Serial.println("Up");
46+ keycode[0] = UP_BUTTON_KEYCODE_TO_SEND;
47+ }
4048 if (buttonState & ARCADA_BUTTONMASK_A) {
4149 Serial.println("A");
42- keycode[0] = KEYCODE_TO_SEND;
50+ keycode[1] = A_BUTTON_KEYCODE_TO_SEND;
51+ }
52+ if (buttonState & ARCADA_BUTTONMASK_DOWN) {
53+ Serial.println("Down");
54+ keycode[2] = DOWN_BUTTON_KEYCODE_TO_SEND;
55+ }
56+
57+ uint8_t shake = arcada.accel.getClick();
58+ if (shake & 0x30) {
59+ Serial.print("shake detected (0x"); Serial.print(shake, HEX); Serial.print("): ");
60+ if (shake & 0x10) Serial.println(" single shake");
61+ keycode[3] = SHAKE_KEYCODE_TO_SEND;
62+ }
63+
64+ bool anypressed = false;
65+ for (int k=0; k<sizeof(keycode); k++) {
66+ if (keycode[k] != 0) {
67+ anypressed = true;
68+ break;
69+ }
70+ }
71+ if (anypressed) {
72+ digitalWrite(LED_BUILTIN, HIGH);
4373 usb_hid.keyboardReport(0, 0, keycode);
4474 } else {
75+ digitalWrite(LED_BUILTIN, LOW);
4576 usb_hid.keyboardRelease(0);
4677 }
4778}
0 commit comments