feat: Implement OLED display support and custom icons for 128x32 displays

- Added OLED functionality in keymap.c with custom rendering for layers and modifiers.
- Created a Python script to generate simple icons for OLED displays.
- Introduced a new rules.mk file to enable OLED features for the keymap.
- Developed an OLED font helper script for visualizing and designing custom graphics.
- Redesigned OLED layout to fit 128x32 displays, optimizing space for logos and layer indicators.
- Implemented flow tap functionality in flow_tap.c for enhanced key responsiveness.
This commit is contained in:
Smathev 2025-10-08 13:57:24 +02:00
parent f3afe70c10
commit ac0b03a50c
15 changed files with 1300 additions and 17 deletions

View file

@ -15,6 +15,7 @@
*/
#include "smathev.h"
#include <stdio.h>
//#include "flow_tap.c"
#include "wrappers.h"
#include "casemodes.h"
#include QMK_KEYBOARD_H
@ -47,29 +48,39 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
__NORTO_THUMBS_6__
),
[_QWERTY] = LAYOUT_sweeeeep_base_wrapper(
__________________QWERTY_L1____________________, __________________QWERTY_R1____________________,
__________________QWERTY_L2____________________, __________________QWERTY_R2____________________,
__________________QWERTY_L3____________________, __________________QWERTY_R3____________________,
__QWERTY_THUMBS_6__
),
[_NORTNAVIGATION] = LAYOUT_sweeeeep_base_wrapper(
____________NORTNAVIGATION_1_______________, _________________NUMPAD_1__________________,
____________NORTNAVIGATION_2_______________, _________________NUMPAD_2__________________,
____________NORTNAVIGATION_3_______________, _________________NUMPAD_3__________________,
_______, TG(_NORTO), TG(_QWERTY), TG(_QWERTY), TG(_NORTO), _______
_______, _______, _______, _______, _______, TG(_SETUP)
),
[_SYMFKEYS] = LAYOUT_sweeeeep_base_wrapper(
___________________FKEY______L1________________, ________________NORTSYMBOLS_R1_________________,
___________________FKEY______L2________________, ________________NORTSYMBOLS_R2_________________,
___________________FKEY______L3________________, ________________NORTSYMBOLS_R3_________________,
_______, TG(_NORTO), TG(_QWERTY), TG(_QWERTY), TG(_NORTO), _______
TG(_SETUP), _______, _______, _______, _______, _______
),
[_SETUP] = LAYOUT_sweeeeep_base_wrapper(
__________________QWERTY_L1____________________, _________________KB_SETUP_1________________,
__________________QWERTY_L2____________________, _________________KB_SETUP_2________________,
__________________QWERTY_L3____________________, _________________KB_SETUP_3________________,
_______, TG(_SETUP), TG(_NORTO), TG(_NORTO), TG(_SETUP), _______
)
};
// Chordal hold layout (disabled - conflicts with multi-modifier shortcuts)
/*
const char chordal_hold_layout[MATRIX_ROWS][MATRIX_COLS] PROGMEM =
LAYOUT(
'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R',
'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R',
'L', 'L', 'L', 'L', 'L', 'R', 'R', 'R', 'R', 'R',
'*', 'L', 'L', 'R', 'R', '*'
);
*/
#ifdef OLED_ENABLE
// static uint32_t oled_timer = 0;
bool process_record_oled(uint16_t keycode, keyrecord_t *record);
@ -253,9 +264,9 @@ void render_layer_state(void) {
0x20, 0x9a, 0x9b, 0x9c, 0x20,
0x20, 0xba, 0xbb, 0xbc, 0x20,
0x20, 0xda, 0xdb, 0xdc, 0x20, 0};
if(layer_state_is(_SYMBOLS)) {
if(layer_state_is(_SYMFKEYS)) {
oled_write_P(lower_layer, false);
} else if(layer_state_is(_NAVIGATION)) {
} else if(layer_state_is(_NORTNAVIGATION)) {
oled_write_P(raise_layer, false);
} else {
oled_write_P(default_layer, false);