#ifdef QWIIC_ENABLE
# include "qwiic.h"
#endif
+#ifdef OLED_DRIVER_ENABLE
+ #include "oled_driver.h"
+#endif
+#ifdef VELOCIKEY_ENABLE
+ #include "velocikey.h"
+#endif
#ifdef MATRIX_HAS_GHOST
extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS];
#ifdef QWIIC_ENABLE
qwiic_init();
#endif
+#ifdef OLED_DRIVER_ENABLE
+ oled_init(OLED_ROTATION_0);
+#endif
#ifdef PS2_MOUSE_ENABLE
ps2_mouse_init();
#endif
void keyboard_task(void)
{
static matrix_row_t matrix_prev[MATRIX_ROWS];
-#ifdef MATRIX_HAS_GHOST
- // static matrix_row_t matrix_ghost[MATRIX_ROWS];
-#endif
static uint8_t led_status = 0;
matrix_row_t matrix_row = 0;
matrix_row_t matrix_change = 0;
uint8_t keys_processed = 0;
#endif
+#if defined(OLED_DRIVER_ENABLE) && !defined(OLED_DISABLE_TIMEOUT)
+ uint8_t ret = matrix_scan();
+#else
matrix_scan();
+#endif
+
if (is_keyboard_master()) {
for (uint8_t r = 0; r < MATRIX_ROWS; r++) {
matrix_row = matrix_get_row(r);
matrix_change = matrix_row ^ matrix_prev[r];
if (matrix_change) {
#ifdef MATRIX_HAS_GHOST
- if (has_ghost_in_row(r, matrix_row)) {
- /* Keep track of whether ghosted status has changed for
- * debugging. But don't update matrix_prev until un-ghosted, or
- * the last key would be lost.
- */
- //if (debug_matrix && matrix_ghost[r] != matrix_row) {
- // matrix_print();
- //}
- //matrix_ghost[r] = matrix_row;
- continue;
- }
- //matrix_ghost[r] = matrix_row;
+ if (has_ghost_in_row(r, matrix_row)) { continue; }
#endif
if (debug_matrix) matrix_print();
for (uint8_t c = 0; c < MATRIX_COLS; c++) {
qwiic_task();
#endif
+#ifdef OLED_DRIVER_ENABLE
+ oled_task();
+#ifndef OLED_DISABLE_TIMEOUT
+ // Wake up oled if user is using those fabulous keys!
+ if (ret)
+ oled_on();
+#endif
+#endif
+
#ifdef MOUSEKEY_ENABLE
// mousekey repeat & acceleration
mousekey_task();
midi_task();
#endif
+#ifdef VELOCIKEY_ENABLE
+ if (velocikey_enabled()) { velocikey_decelerate(); }
+#endif
+
// update LED
if (led_status != host_keyboard_leds()) {
led_status = host_keyboard_leds();