X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=tmk_core%2Fcommon%2Fkeyboard.c;h=85d25254808946a0a627b35f8e2470278daf1a7f;hb=7f65844f75c30f17804d57d34c0f0ce971226b59;hp=302b3ec87c918a49ec62759ede5ed8b3e5d44b9a;hpb=0cdf5d292c36ba61030f96461369e057fb35cd43;p=qmk_firmware.git diff --git a/tmk_core/common/keyboard.c b/tmk_core/common/keyboard.c index 302b3ec87..85d252548 100644 --- a/tmk_core/common/keyboard.c +++ b/tmk_core/common/keyboard.c @@ -1,5 +1,5 @@ /* -Copyright 2011,2012,2013 Jun Wako +Copyright 2011, 2012, 2013 Jun Wako This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -14,6 +14,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ + #include #include "keyboard.h" #include "matrix.h" @@ -27,9 +28,14 @@ along with this program. If not, see . #include "command.h" #include "util.h" #include "sendchar.h" -#include "bootmagic.h" #include "eeconfig.h" #include "backlight.h" +#include "action_layer.h" +#ifdef BOOTMAGIC_ENABLE +# include "bootmagic.h" +#else +# include "magic.h" +#endif #ifdef MOUSEKEY_ENABLE # include "mousekey.h" #endif @@ -37,42 +43,174 @@ along with this program. If not, see . # include "ps2_mouse.h" #endif #ifdef SERIAL_MOUSE_ENABLE -#include "serial_mouse.h" +# include "serial_mouse.h" #endif #ifdef ADB_MOUSE_ENABLE -#include "adb.h" +# include "adb.h" +#endif +#ifdef RGBLIGHT_ENABLE +# include "rgblight.h" +#endif +#ifdef STENO_ENABLE +# include "process_steno.h" +#endif +#ifdef FAUXCLICKY_ENABLE +# include "fauxclicky.h" +#endif +#ifdef SERIAL_LINK_ENABLE +# include "serial_link/system/serial_link.h" +#endif +#ifdef VISUALIZER_ENABLE +# include "visualizer/visualizer.h" +#endif +#ifdef POINTING_DEVICE_ENABLE +# include "pointing_device.h" +#endif +#ifdef MIDI_ENABLE +# include "process_midi.h" +#endif +#ifdef HD44780_ENABLE +# include "hd44780.h" +#endif +#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 -static bool has_ghost_in_row(uint8_t row) +extern const uint16_t keymaps[][MATRIX_ROWS][MATRIX_COLS]; +static matrix_row_t get_real_keys(uint8_t row, matrix_row_t rowdata){ + matrix_row_t out = 0; + for (uint8_t col = 0; col < MATRIX_COLS; col++) { + //read each key in the row data and check if the keymap defines it as a real key + if (pgm_read_byte(&keymaps[0][row][col]) && (rowdata & (1<= QMK_KEYS_PER_SCAN) +#endif + // process a key per task call + goto MATRIX_LOOP_END; + } } } } } // call with pseudo tick event when no real key event. +#ifdef QMK_KEYS_PER_SCAN + // we can get here with some keys processed now. + if (!keys_processed) +#endif action_exec(TICK); MATRIX_LOOP_END: +#ifdef QWIIC_ENABLE + 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(); @@ -162,11 +335,31 @@ MATRIX_LOOP_END: #endif #ifdef SERIAL_MOUSE_ENABLE - serial_mouse_task(); + serial_mouse_task(); #endif #ifdef ADB_MOUSE_ENABLE - adb_mouse_task(); + adb_mouse_task(); +#endif + +#ifdef SERIAL_LINK_ENABLE + serial_link_update(); +#endif + +#ifdef VISUALIZER_ENABLE + visualizer_update(default_layer_state, layer_state, visualizer_get_mods(), host_keyboard_leds()); +#endif + +#ifdef POINTING_DEVICE_ENABLE + pointing_device_task(); +#endif + +#ifdef MIDI_ENABLE + midi_task(); +#endif + +#ifdef VELOCIKEY_ENABLE + if (velocikey_enabled()) { velocikey_decelerate(); } #endif // update LED @@ -176,6 +369,10 @@ MATRIX_LOOP_END: } } +/** \brief keyboard set leds + * + * FIXME: needs doc + */ void keyboard_set_leds(uint8_t leds) { if (debug_keyboard) { debug("keyboard_set_led: "); debug_hex8(leds); debug("\n"); }