along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <stdint.h>
-#include <util/delay.h>
#include "keyboard.h"
#include "matrix.h"
#include "keymap.h"
#include "sendchar.h"
#include "bootmagic.h"
#include "eeconfig.h"
-#include "mousekey.h"
+#include "backlight.h"
+#ifdef MOUSEKEY_ENABLE
+# include "mousekey.h"
+#endif
+#ifdef PS2_MOUSE_ENABLE
+# include "ps2_mouse.h"
+#endif
#ifdef MATRIX_HAS_GHOST
void keyboard_init(void)
{
- // TODO: configuration of sendchar impl
- print_sendchar_func = sendchar;
-
timer_init();
matrix_init();
#ifdef PS2_MOUSE_ENABLE
#ifdef BOOTMAGIC_ENABLE
bootmagic();
+#endif
- if (eeconfig_is_enabled()) {
- uint8_t config;
- config = eeconfig_read_debug();
- // ignored if debug is enabled by program before.
- if (!debug_enable) debug_enable = (config & EECONFIG_DEBUG_ENABLE);
- if (!debug_matrix) debug_matrix = (config & EECONFIG_DEBUG_MATRIX);
- if (!debug_keyboard) debug_keyboard = (config & EECONFIG_DEBUG_KEYBOARD);
- if (!debug_mouse) debug_mouse = (config & EECONFIG_DEBUG_MOUSE);
- } else {
- eeconfig_init();
- }
+#ifdef BACKLIGHT_ENABLE
+ backlight_init();
#endif
}
for (uint8_t c = 0; c < MATRIX_COLS; c++) {
if (matrix_change & ((matrix_row_t)1<<c)) {
action_exec((keyevent_t){
- .key = (key_t){ .row = r, .col = c },
+ .key = (keypos_t){ .row = r, .col = c },
.pressed = (matrix_row & ((matrix_row_t)1<<c)),
.time = (timer_read() | 1) /* time should not be 0 */
});
action_exec(TICK);
MATRIX_LOOP_END:
+
#ifdef MOUSEKEY_ENABLE
// mousekey repeat & acceleration
mousekey_task();
#endif
+
+#ifdef PS2_MOUSE_ENABLE
+ ps2_mouse_task();
+#endif
+
// update LED
if (led_status != host_keyboard_leds()) {
led_status = host_keyboard_leds();
void keyboard_set_leds(uint8_t leds)
{
+ if (debug_keyboard) { debug("keyboard_set_led: "); debug_hex8(leds); debug("\n"); }
led_set(leds);
}