diff options
Diffstat (limited to 'keyboards/printedpad/printedpad.c')
-rw-r--r-- | keyboards/printedpad/printedpad.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/keyboards/printedpad/printedpad.c b/keyboards/printedpad/printedpad.c new file mode 100644 index 0000000000..4e3354c028 --- /dev/null +++ b/keyboards/printedpad/printedpad.c @@ -0,0 +1,57 @@ +// Copyright 2023 Noah Beidelman (@noahbei) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#include "printedpad.h" + +void board_init(void) { + SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP; +} + +const uint8_t max_layer = 3; +uint8_t current_display_mode = 0; + +bool key_pressed = false; + +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { + if (!process_record_user(keycode, record)) { + return false; + } +#ifdef OLED_ENABLE + key_pressed = record->event.pressed; +#endif + switch(keycode) { + case LT(0, KC_NO): + if (record->event.pressed) { + // on tap + if (record->tap.count) { + if (get_highest_layer(layer_state) >= max_layer) { + layer_clear(); + } else { + layer_move(get_highest_layer(layer_state) + 1); + } + } +#ifdef OLED_ENABLE + // on hold + else { + current_display_mode = (current_display_mode + 1) % 3; + } +#endif + } + return false; + } + return true; +} + +#ifdef OLED_ENABLE +uint32_t flash_timer = 0; +bool layer_changed = false; + +// when the layer is changed, flash the layer number on the screen +layer_state_t layer_state_set_kb(layer_state_t state) { + flash_timer = timer_read(); + layer_changed = true; + + return layer_state_set_user(state); +} +#endif
\ No newline at end of file |