Refactor printedpad (#24236)
This commit is contained in:
parent
b5b4e93857
commit
ac1b488170
7 changed files with 88 additions and 77 deletions
|
@ -42,4 +42,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_V, KC_W, KC_X,
|
KC_V, KC_W, KC_X,
|
||||||
KC_Y, KC_Z, KC_ENT
|
KC_Y, KC_Z, KC_ENT
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch(keycode) {
|
||||||
|
case LT(0, KC_NO):
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// on tap
|
||||||
|
if (record->tap.count) {
|
||||||
|
if (get_highest_layer(layer_state) >= 3) {
|
||||||
|
layer_clear();
|
||||||
|
} else {
|
||||||
|
layer_move(get_highest_layer(layer_state) + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef OLED_ENABLE
|
||||||
|
// on hold
|
||||||
|
else {
|
||||||
|
void oled_display_mode_step(void);
|
||||||
|
oled_display_mode_step();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -42,4 +42,29 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||||
KC_V, KC_W, KC_X,
|
KC_V, KC_W, KC_X,
|
||||||
KC_Y, KC_Z, KC_ENT
|
KC_Y, KC_Z, KC_ENT
|
||||||
)
|
)
|
||||||
};
|
};
|
||||||
|
|
||||||
|
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
switch(keycode) {
|
||||||
|
case LT(0, KC_NO):
|
||||||
|
if (record->event.pressed) {
|
||||||
|
// on tap
|
||||||
|
if (record->tap.count) {
|
||||||
|
if (get_highest_layer(layer_state) >= 3) {
|
||||||
|
layer_clear();
|
||||||
|
} else {
|
||||||
|
layer_move(get_highest_layer(layer_state) + 1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#ifdef OLED_ENABLE
|
||||||
|
// on hold
|
||||||
|
else {
|
||||||
|
void oled_display_mode_step(void);
|
||||||
|
oled_display_mode_step();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
|
@ -1,15 +1,22 @@
|
||||||
// Copyright 2023 Noah Beidelman (@noahbei)
|
// Copyright 2023 Noah Beidelman (@noahbei)
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include "printedpad.h"
|
#include "quantum.h"
|
||||||
|
|
||||||
#ifdef OLED_ENABLE
|
|
||||||
static void flash_current_layer(void);
|
|
||||||
|
|
||||||
#define FRAME_DURATION 200
|
#define FRAME_DURATION 200
|
||||||
|
|
||||||
uint32_t animation_timer = 0;
|
static uint32_t animation_timer = 0;
|
||||||
uint8_t current_frame = 0;
|
static uint8_t current_frame = 0;
|
||||||
|
|
||||||
|
static uint32_t flash_timer = 0;
|
||||||
|
static bool layer_changed = false;
|
||||||
|
|
||||||
|
static uint8_t current_display_mode = 0;
|
||||||
|
|
||||||
|
static bool key_pressed = false;
|
||||||
|
|
||||||
|
static void flash_current_layer(void);
|
||||||
|
|
||||||
|
|
||||||
static void render_animation(void) {
|
static void render_animation(void) {
|
||||||
// 'monkeylong26', 128x32px
|
// 'monkeylong26', 128x32px
|
||||||
|
@ -1391,12 +1398,16 @@ static void render_logo(void) {
|
||||||
oled_write_raw_P(prota, sizeof(prota));
|
oled_write_raw_P(prota, sizeof(prota));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool logo_rendered = false;
|
void oled_display_mode_step(void) {
|
||||||
|
current_display_mode = (current_display_mode + 1) % 3;
|
||||||
|
}
|
||||||
|
|
||||||
bool oled_task_kb(void) {
|
bool oled_task_kb(void) {
|
||||||
if (!oled_task_user()) {
|
if (!oled_task_user()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static bool logo_rendered = false;
|
||||||
if (!logo_rendered) {
|
if (!logo_rendered) {
|
||||||
render_logo();
|
render_logo();
|
||||||
if (timer_read() > 2500)
|
if (timer_read() > 2500)
|
||||||
|
@ -1417,4 +1428,17 @@ bool oled_task_kb(void) {
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||||
|
key_pressed = record->event.pressed;
|
||||||
|
|
||||||
|
return process_record_user(keycode, record);
|
||||||
|
}
|
||||||
|
|
||||||
|
// 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);
|
||||||
|
}
|
||||||
|
|
3
keyboards/printedpad/post_rules.mk
Normal file
3
keyboards/printedpad/post_rules.mk
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
ifeq ($(strip $(OLED_ENABLE)), yes)
|
||||||
|
SRC += oled.c
|
||||||
|
endif
|
|
@ -1,57 +1,8 @@
|
||||||
// Copyright 2023 Noah Beidelman (@noahbei)
|
// Copyright 2023 Noah Beidelman (@noahbei)
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
#include "quantum.h"
|
||||||
#include "printedpad.h"
|
|
||||||
|
|
||||||
void board_init(void) {
|
void board_init(void) {
|
||||||
SYSCFG->CFGR1 |= SYSCFG_CFGR1_I2C1_DMA_RMP;
|
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
|
|
|
@ -1,16 +0,0 @@
|
||||||
// Copyright 2023 Noah Beidelman (@noahbei)
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "quantum.h"
|
|
||||||
|
|
||||||
//for oled key press
|
|
||||||
extern bool key_pressed;
|
|
||||||
|
|
||||||
// for changing oled display mode
|
|
||||||
extern uint8_t current_display_mode;
|
|
||||||
|
|
||||||
//for determining when the layer is changed and having a timer for how long we flash the layer
|
|
||||||
extern uint32_t flash_timer;
|
|
||||||
extern bool layer_changed;
|
|
|
@ -1 +0,0 @@
|
||||||
SRC += oled.c
|
|
Loading…
Reference in a new issue