#include <avr/interrupt.h>
#include <util/delay.h>
-#include "usb_keyboard_debug.h"
+#include "usb_device.h"
#include "print.h"
#include "matrix.h"
#include "keymap.h"
+#include "jump_bootloader.h"
#define LED_CONFIG (DDRD |= (1<<6))
#define LED_ON (PORTD &= ~(1<<6))
print("keyboard firmware 0.1 for t.m.k.\n");
while (1) {
+ int layer = 0;
uint8_t row, col, code;
matrix_scan();
+ layer = get_layer();
modified = matrix_is_modified();
has_ghost = matrix_has_ghost();
for (col = 0; col < MATRIX_COLS; col++) {
if (matrix[row] & 1<<col) continue;
- code = get_keycode(row, col);
- if (KB_LCTRL <= code && code <= KB_RGUI) {
+ code = get_keycode(layer, row, col);
+ if (code == KB_NO) {
+ continue;
+ } else if (KB_LCTRL <= code && code <= KB_RGUI) {
// modifier keycode: 0xE0-0xE7
keyboard_modifier_keys |= 1<<(code & 0x07);
} else {
}
}
+ // run bootloader when 4 left modifier keys down
+ if (keyboard_modifier_keys == (MOD_LCTRL | MOD_LSHIFT | MOD_LALT | MOD_LGUI)) {
+ print("jump to bootloader...\n");
+ _delay_ms(1000);
+ jump_bootloader();
+ }
+
if (key_index > 6) {
//Rollover
}
// print matrix state for debug
if (modified) {
- print("r/c 01234567\n");
+ print("\nr/c 01234567\n");
for (row = 0; row < MATRIX_ROWS; row++) {
phex(row); print(": ");
pbin_reverse(matrix[row]);
idle_count++;
if (idle_count > 61 * 8) {
idle_count = 0;
- //print("Timer Event :)\n");
- //usb_keyboard_press(KEY_SPACE, 0);
+ print(".");
}
}