You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
57 lines
1.3 KiB
57 lines
1.3 KiB
// Copyright 2015 Keyboardio, inc. <jesse@keyboard.io>
|
|
// See "LICENSE" for license details
|
|
|
|
#define DEBUG_SERIAL false
|
|
|
|
#include "KeyboardioFirmware.h"
|
|
#include "KeyboardioHID.h"
|
|
|
|
|
|
uint8_t matrixState[ROWS][COLS] = {0};
|
|
const Key keymaps[KEYMAPS][ROWS][COLS] = { KEYMAP_LIST };
|
|
uint8_t primary_keymap = 0;
|
|
uint8_t temporary_keymap = 0;
|
|
|
|
KeyboardStorage Storage;
|
|
|
|
|
|
|
|
void scan_matrix() {
|
|
//scan the Keyboard matrix looking for connections
|
|
for (byte row = 0; row < LEFT_ROWS; row++) {
|
|
implementation_scan_row(row);
|
|
|
|
for (byte col = 0; col < LEFT_COLS; col++) {
|
|
implementation_scan_left_col(row,col,&matrixState[row][col]);
|
|
handle_key_event(row, col);
|
|
|
|
if (implementation_right_hand_connected()) {
|
|
implementation_scan_right_col(row,col,&matrixState[row][(COLS - 1) - col]);
|
|
handle_key_event(row, (COLS - 1) - col);
|
|
}
|
|
}
|
|
implementation_finish_scanning_row(row);
|
|
}
|
|
}
|
|
|
|
void setup() {
|
|
wdt_disable();
|
|
Keyboard.begin();
|
|
Mouse.begin();
|
|
implementation_leds_setup();
|
|
LEDControl.boot_animation();
|
|
implementation_pins_setup();
|
|
|
|
temporary_keymap = primary_keymap = Storage.load_primary_keymap();
|
|
}
|
|
|
|
|
|
void loop() {
|
|
scan_matrix();
|
|
Keyboard.sendReport();
|
|
Keyboard.releaseAll();
|
|
LEDControl.update(temporary_keymap);
|
|
}
|
|
|
|
|