mirror of
https://github.com/Keychron/qmk_firmware.git
synced 2024-11-23 08:56:47 +06:00
57 lines
1.4 KiB
C
57 lines
1.4 KiB
C
|
// 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
|