+ } else if (code == KB_PWR) {
+ if (suspend && remote_wakeup) {
+ usb_remote_wakeup();
+ } else {
+ usb_extra_system_send(SYSTEM_POWER_DOWN);
+ }
+ _delay_ms(1000);
+ }
+
+ // normal keys
+ else {
+ // TODO: fix ugly code
+ int8_t i = 0;
+ int8_t empty = -1;
+ for (; i < KEYBOARD_REPORT_MAX; i++) {
+ if (usb_keyboard_keys_prev[i] == code) {
+ usb_keyboard_keys[i] = code;
+ break;
+ } else if (empty == -1 && usb_keyboard_keys_prev[i] == 0 && usb_keyboard_keys[i] == 0) {
+ empty = i;
+ }
+ }
+ if (i == KEYBOARD_REPORT_MAX) {
+ if (empty != -1) {
+ usb_keyboard_keys[empty] = code;
+ }
+ }