1
0

printedpad.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright 2023 Noah Beidelman (@noahbei)
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #include QMK_KEYBOARD_H
  4. #include "printedpad.h"
  5. void board_init(void) {
  6. SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
  7. }
  8. const uint8_t max_layer = 3;
  9. uint8_t current_display_mode = 0;
  10. bool key_pressed = false;
  11. bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
  12. if (!process_record_user(keycode, record)) {
  13. return false;
  14. }
  15. #ifdef OLED_ENABLE
  16. key_pressed = record->event.pressed;
  17. #endif
  18. switch(keycode) {
  19. case LT(0, KC_NO):
  20. if (record->event.pressed) {
  21. // on tap
  22. if (record->tap.count) {
  23. if (get_highest_layer(layer_state) >= max_layer) {
  24. layer_clear();
  25. } else {
  26. layer_move(get_highest_layer(layer_state) + 1);
  27. }
  28. }
  29. #ifdef OLED_ENABLE
  30. // on hold
  31. else {
  32. current_display_mode = (current_display_mode + 1) % 3;
  33. }
  34. #endif
  35. }
  36. return false;
  37. }
  38. return true;
  39. }
  40. #ifdef OLED_ENABLE
  41. uint32_t flash_timer = 0;
  42. bool layer_changed = false;
  43. // when the layer is changed, flash the layer number on the screen
  44. layer_state_t layer_state_set_kb(layer_state_t state) {
  45. flash_timer = timer_read();
  46. layer_changed = true;
  47. return layer_state_set_user(state);
  48. }
  49. #endif