From c5175c4a5334da3ee3d1f8d15c30e3011a882c1f Mon Sep 17 00:00:00 2001 From: PoringH Date: Fri, 9 Jun 2023 09:43:56 +0700 Subject: [PATCH 01/38] QCK-75 firmware --- keyboards/qck75/v1/config.h | 24 + keyboards/qck75/v1/halconf.h | 9 + keyboards/qck75/v1/info.json | 134 +++++ keyboards/qck75/v1/keymaps/default/keymap.c | 585 ++++++++++++++++++++ keyboards/qck75/v1/keymaps/via/keymap.c | 572 +++++++++++++++++++ keyboards/qck75/v1/keymaps/via/rules.mk | 2 + keyboards/qck75/v1/mcuconf.h | 15 + keyboards/qck75/v1/readme.md | 27 + keyboards/qck75/v1/rules.mk | 6 + 9 files changed, 1374 insertions(+) create mode 100644 keyboards/qck75/v1/config.h create mode 100644 keyboards/qck75/v1/halconf.h create mode 100644 keyboards/qck75/v1/info.json create mode 100644 keyboards/qck75/v1/keymaps/default/keymap.c create mode 100644 keyboards/qck75/v1/keymaps/via/keymap.c create mode 100644 keyboards/qck75/v1/keymaps/via/rules.mk create mode 100644 keyboards/qck75/v1/mcuconf.h create mode 100644 keyboards/qck75/v1/readme.md create mode 100644 keyboards/qck75/v1/rules.mk diff --git a/keyboards/qck75/v1/config.h b/keyboards/qck75/v1/config.h new file mode 100644 index 000000000000..4e3e5ee81791 --- /dev/null +++ b/keyboards/qck75/v1/config.h @@ -0,0 +1,24 @@ +// Copyright 2023 Andrian (@PoringH) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define I2C1_SCL_PIN B8 +#define I2C1_SDA_PIN B9 + +#define I2C1_SCL_PAL_MODE 1 +#define I2C1_SDA_PAL_MODE 1 + +#define OLED_DISPLAY_ADDRESS 0x3C +#define OLED_DISPLAY_128X64 +#define OLED_COM_PINS 0x12 + +#define OLED_IC OLED_IC_SH1106 +#define OLED_COLUMN_OFFSET 2 + +#define OLED_TIMEOUT 120000 +#define OLED_BRIGHNTESS 120 + +#define VIA_EEPROM_CUSTOM_CONFIG_SIZE 21 + +#define USB_POLLING_INTERVAL_MS 1 diff --git a/keyboards/qck75/v1/halconf.h b/keyboards/qck75/v1/halconf.h new file mode 100644 index 000000000000..bbf9322333db --- /dev/null +++ b/keyboards/qck75/v1/halconf.h @@ -0,0 +1,9 @@ +// Copyright 2023 Andrian (@PoringH) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_I2C TRUE + +#include_next + diff --git a/keyboards/qck75/v1/info.json b/keyboards/qck75/v1/info.json new file mode 100644 index 000000000000..fcfbd4ad3451 --- /dev/null +++ b/keyboards/qck75/v1/info.json @@ -0,0 +1,134 @@ +{ + "manufacturer": "Andrian", + "keyboard_name": "QCK75-XT", + "maintainer": "PoringH", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "encoder": true + }, + "matrix_pins": { + "cols": [ "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B11", "A9", "A8", "C9", "C8", "C7", "C6", "B15", "B14", "B13", "B12" ], + "rows": [ "C3", "A0", "A1", "A2", "B10", "A15" ] + }, + "encoder": { + "rotary": [ + { "pin_a": "C0", "pin_b": "C1", "resolution": 2} + ] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x5047" + }, + "layouts": { + "LAYOUT_75_ansi": { + "layout": [ + { "matrix": [0, 2], "x": 2.5, "y": 0 }, + { "matrix": [0, 3], "x": 3.75, "y": 0 }, + { "matrix": [0, 4], "x": 4.75, "y": 0 }, + { "matrix": [0, 5], "x": 5.75, "y": 0 }, + { "matrix": [0, 6], "x": 6.75, "y": 0 }, + { "matrix": [0, 7], "x": 8, "y": 0 }, + { "matrix": [0, 8], "x": 9, "y": 0 }, + { "matrix": [0, 9], "x": 10, "y": 0 }, + { "matrix": [0, 10], "x": 11, "y": 0 }, + { "matrix": [0, 11], "x": 12.25, "y": 0 }, + { "matrix": [0, 12], "x": 13.25, "y": 0 }, + { "matrix": [0, 13], "x": 14.25, "y": 0 }, + { "matrix": [0, 14], "x": 15.25, "y": 0 }, + { "matrix": [0, 16], "x": 16.5, "y": 0 }, + { "matrix": [0, 17], "x": 18, "y": 0 }, + + { "matrix": [1, 1], "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "x": 2.5, "y": 1.25 }, + { "matrix": [1, 3], "x": 3.5, "y": 1.25 }, + { "matrix": [1, 4], "x": 4.5, "y": 1.25 }, + { "matrix": [1, 5], "x": 5.5, "y": 1.25 }, + { "matrix": [1, 6], "x": 6.5, "y": 1.25 }, + { "matrix": [1, 7], "x": 7.5, "y": 1.25 }, + { "matrix": [1, 8], "x": 8.5, "y": 1.25 }, + { "matrix": [1, 9], "x": 9.5, "y": 1.25 }, + { "matrix": [1, 10], "x": 10.5, "y": 1.25 }, + { "matrix": [1, 11], "x": 11.5, "y": 1.25 }, + { "matrix": [1, 12], "x": 12.5, "y": 1.25 }, + { "matrix": [1, 13], "x": 13.5, "y": 1.25 }, + { "matrix": [1, 14], "x": 14.5, "y": 1.25 }, + { "matrix": [1, 15], "w": 2, "x": 15.5, "y": 1.25 }, + { "matrix": [1, 17], "x": 18, "y": 1.25 }, + + { "matrix": [2, 0], "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "x": 1, "y": 2.25 }, + { "matrix": [2, 2], "w": 2.5, "x": 0, "y": 2.25 }, + { "matrix": [2, 3], "x": 4, "y": 2.25 }, + { "matrix": [2, 4], "x": 5, "y": 2.25 }, + { "matrix": [2, 5], "x": 6, "y": 2.25 }, + { "matrix": [2, 6], "x": 7, "y": 2.25 }, + { "matrix": [2, 7], "x": 8, "y": 2.25 }, + { "matrix": [2, 8], "x": 9, "y": 2.25 }, + { "matrix": [2, 9], "x": 10, "y": 2.25 }, + { "matrix": [2, 10], "x": 11, "y": 2.25 }, + { "matrix": [2, 11], "x": 12, "y": 2.25 }, + { "matrix": [2, 12], "x": 13, "y": 2.25 }, + { "matrix": [2, 13], "x": 14, "y": 2.25 }, + { "matrix": [2, 14], "x": 15, "y": 2.25 }, + { "matrix": [2, 15], "w": 1.5, "x": 16, "y": 2.25 }, + { "matrix": [2, 17], "x": 18, "y": 2 }, + + { "matrix": [3, 0], "x": 0, "y": 3.25 }, + { "matrix": [3, 1], "x": 1, "y": 3.25 }, + { "matrix": [3, 2], "w": 1.75, "x": 2.5, "y": 3.25 }, + { "matrix": [3, 3], "x": 4.25, "y": 3.25 }, + { "matrix": [3, 4], "x": 5.25, "y": 3.25 }, + { "matrix": [3, 5], "x": 6.25, "y": 3.25 }, + { "matrix": [3, 6], "x": 7.25, "y": 3.25 }, + { "matrix": [3, 7], "x": 8.25, "y": 3.25 }, + { "matrix": [3, 8], "x": 9.25, "y": 3.25 }, + { "matrix": [3, 9], "x": 10.25, "y": 3.25 }, + { "matrix": [3, 10], "x": 11.25, "y": 3.25 }, + { "matrix": [3, 11], "x": 12.25, "y": 3.25 }, + { "matrix": [3, 12], "x": 13.25, "y": 3.25 }, + { "matrix": [3, 13], "x": 14.25, "y": 3.25 }, + { "matrix": [3, 15], "w": 2.25, "x": 15.25, "y": 3.25 }, + { "matrix": [3, 17], "x": 18, "y": 3.25 }, + + { "matrix": [4, 0], "x": 0, "y": 4.25 }, + { "matrix": [4, 1], "x": 1, "y": 4.25 }, + { "matrix": [4, 2], "w": 2.25, "x": 2.5, "y": 4.25 }, + { "matrix": [4, 4], "x": 4.75, "y": 4.25 }, + { "matrix": [4, 5], "x": 5.75, "y": 4.25 }, + { "matrix": [4, 6], "x": 6.75, "y": 4.25 }, + { "matrix": [4, 7], "x": 7.75, "y": 4.25 }, + { "matrix": [4, 8], "x": 8.75, "y": 4.25 }, + { "matrix": [4, 9], "x": 9.75, "y": 4.25 }, + { "matrix": [4, 10], "x": 10.75, "y": 4.25 }, + { "matrix": [4, 11], "x": 11.75, "y": 4.25 }, + { "matrix": [4, 12], "x": 12.75, "y": 4.25 }, + { "matrix": [4, 13], "x": 13.75, "y": 4.25 }, + { "matrix": [4, 14], "w": 1.75, "x": 14.75, "y": 4.25 }, + { "matrix": [4, 16], "x": 16.75, "y": 4.25 }, + { "matrix": [4, 17], "x": 18, "y": 4.25 }, + + { "matrix": [5, 0], "x": 0, "y": 5.25 }, + { "matrix": [5, 1], "x": 1, "y": 5.25 }, + { "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.25 }, + { "matrix": [5, 3], "w": 1.25, "x": 3.75, "y": 5.25 }, + { "matrix": [5, 4], "w": 1.25, "x": 5, "y": 5.25 }, + { "matrix": [5, 8], "w": 6.25, "x": 6.25, "y": 5.25 }, + { "matrix": [5, 12], "x": 12.5, "y": 5.25 }, + { "matrix": [5, 13], "x": 13.5, "y": 5.25 }, + { "matrix": [5, 14], "x": 14.5, "y": 5.25 }, + { "matrix": [5, 15], "x": 15.75, "y": 5.5 }, + { "matrix": [5, 16], "x": 16.75, "y": 5.5 }, + { "matrix": [5, 17], "x": 17.75, "y": 5.5 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/qck75/v1/keymaps/default/keymap.c b/keyboards/qck75/v1/keymaps/default/keymap.c new file mode 100644 index 000000000000..bc15e778df19 --- /dev/null +++ b/keyboards/qck75/v1/keymaps/default/keymap.c @@ -0,0 +1,585 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum { + MAIN = 0, + SECOND = 1, + THIRD = 2, + FOURTH = 3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_75_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_SCRL, KC_DEL, + KC_F14, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_F15, KC_F16, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_F17, KC_F18, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_F19, KC_F20, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NUM, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_75_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, GU_TOGG, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_75_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_75_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + QK_BOOT, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + + +bool encoder_update_kb(uint8_t index, bool clockwise) { + return encoder_update_user(index, clockwise); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + switch(get_highest_layer(layer_state)) { + case SECOND: + if(clockwise) { + tap_code(KC_MS_WH_UP); + } else { + tap_code(KC_MS_WH_DOWN); + } + break; + default: + if(clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + return true; +} + +#define KB_STAT_SIZE 18 +#define WIN_STAT_SIZE 12 +#define MIN_WALK_SPEED 10 +#define MIN_RUN_SPEED 40 +#define ANIM_FRAME_DURATION 200 +#define ANIM_SIZE 96 + +uint32_t anim_timer = 0; +uint8_t current_frame = 0; +int current_wpm = 0; +led_t led_usb_state; + +bool isguiDisabled = false; +bool isSneaking = false; +bool isJumping = false; +bool showedJump = true; + +#ifdef OLED_ENABLE + +static void render_animation(int ANIM_X, int ANIM_Y) { + //sit animation 32 X 22 + static const char PROGMEM sit[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, + 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, + 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, + 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, + 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, + 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + }, + + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, + 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, + 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, + 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, + 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, + 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } + + } + }; + + //walk animation 32 X 22 + static const char PROGMEM walk[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, + 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, + 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, + 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, + 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + }, + + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, + 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, + 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, + 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, + 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, + 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + //run animation 32 X 22 + static const char PROGMEM run[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, + 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, + 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, + 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, + 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, + 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + } + }, + + { + { + 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, + 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, + 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, + 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + //bark animation 32 X 22 + static const char PROGMEM bark[2][3][ANIM_SIZE] = { + { + { + 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, + 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, + 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, + 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, + 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + }, + + { + { + 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, + 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, + 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, + 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, + 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + //sneak animation 32 X 22 + static const char PROGMEM sneak[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, + 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, + 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, + 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, + 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, + 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, + 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, + 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, + 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, + }, + }, + + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, + 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, + 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, + 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, + 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, + 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, + 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, + 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + void animate_luna(void) { + + int anim_x; + int anim_y; + + if(isJumping || !showedJump) { + oled_set_cursor(ANIM_X, ANIM_Y + 2); + oled_write(" ", false); + anim_x = ANIM_X; + anim_y = ANIM_Y - 1; + showedJump = true; + } else { + oled_set_cursor(ANIM_X, ANIM_Y - 1); + oled_write(" ", false); + + anim_x = ANIM_X; + anim_y = ANIM_Y; + } + + if(led_usb_state.caps_lock) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(bark[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(bark[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(bark[current_frame][2], ANIM_SIZE); + } else if(isSneaking) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(sneak[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(sneak[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(sneak[current_frame][2], ANIM_SIZE); + } else if(current_wpm <= MIN_WALK_SPEED) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(sit[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(sit[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(sit[current_frame][2], ANIM_SIZE); + } else if(current_wpm <= MIN_RUN_SPEED) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(walk[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(walk[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(walk[current_frame][2], ANIM_SIZE); + } else { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(run[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(run[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(run[current_frame][2], ANIM_SIZE); + } + } + + +# if OLED_TIMEOUT > 0 + + if(last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) { + oled_off(); + return; + } else { + oled_on(); + } +# endif + + if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + current_frame = (current_frame + 1) % 2; + animate_luna(); + } + +}; + + +static void render_caps(int CAP_X, int CAP_Y) { + if(led_usb_state.caps_lock == true) { + static const char PROGMEM caps[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x3b, 0xdb, 0xeb, + 0xdb, 0x3b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM caps2[KB_STAT_SIZE] = { + 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x68, 0x6e, 0x6e, + 0x6e, 0x68, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 + }; + oled_set_cursor(CAP_X, CAP_Y); + oled_write_raw_P(caps, KB_STAT_SIZE); + oled_set_cursor(CAP_X, CAP_Y + 1); + oled_write_raw_P(caps2, KB_STAT_SIZE); + } + else { + static const char PROGMEM caps[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0xc4, 0x24, 0x14, + 0x24, 0xc4, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM caps2[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x17, 0x11, 0x11, + 0x11, 0x17, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 + }; + oled_set_cursor(CAP_X, CAP_Y); + oled_write_raw_P(caps, KB_STAT_SIZE); + oled_set_cursor(CAP_X, CAP_Y + 1); + oled_write_raw_P(caps2, KB_STAT_SIZE); + } +} + +static void render_num(int NUM_X, int NUM_Y) { + if(led_usb_state.num_lock == true) { + static const char PROGMEM num[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0xfb, 0xdb, 0x0b, + 0xfb, 0xfb, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM num2[KB_STAT_SIZE] = { + 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x6f, 0x6b, 0x68, + 0x6b, 0x6f, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 + }; + oled_set_cursor(NUM_X, NUM_Y); + oled_write_raw_P(num, KB_STAT_SIZE); + oled_set_cursor(NUM_X, NUM_Y + 1); + oled_write_raw_P(num2, KB_STAT_SIZE); + } + else { + static const char PROGMEM num[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x04, 0x24, 0xf4, + 0x04, 0x04, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM num2[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x10, 0x14, 0x17, + 0x14, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 + }; + oled_set_cursor(NUM_X, NUM_Y); + oled_write_raw_P(num, KB_STAT_SIZE); + oled_set_cursor(NUM_X, NUM_Y + 1); + oled_write_raw_P(num2, KB_STAT_SIZE); + } +} + +static void render_scroll(int SCROLL_X, int SCROLL_Y) { + if(led_usb_state.scroll_lock == true) { + static const char PROGMEM scroll[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x7b, 0xfb, 0x0b, + 0xfb, 0x7b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM scroll2[KB_STAT_SIZE] = { + 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6b, 0x6b, 0x6a, 0x68, + 0x6a, 0x6b, 0x6b, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 + }; + oled_set_cursor(SCROLL_X, SCROLL_Y); + oled_write_raw_P(scroll, KB_STAT_SIZE); + oled_set_cursor(SCROLL_X, SCROLL_Y + 1); + oled_write_raw_P(scroll2, KB_STAT_SIZE); + } + else { + static const char PROGMEM scroll[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x84, 0x04, 0xf4, + 0x04, 0x84, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM scroll2[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0x0f, 0x10, 0x14, 0x14, 0x15, 0x17, + 0x15, 0x14, 0x14, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 + }; + oled_set_cursor(SCROLL_X, SCROLL_Y); + oled_write_raw_P(scroll, KB_STAT_SIZE); + oled_set_cursor(SCROLL_X, SCROLL_Y + 1); + oled_write_raw_P(scroll2, KB_STAT_SIZE); + } +} + +static void render_winstat(int WIN_X, int WIN_Y) +{ + static const char PROGMEM winlogo[WIN_STAT_SIZE] = { + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + }; + static const char PROGMEM winlogo2[WIN_STAT_SIZE] = { + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + }; + + oled_set_cursor(WIN_X, WIN_Y); + oled_write_raw_P(winlogo, WIN_STAT_SIZE); + oled_set_cursor(WIN_X, WIN_Y + 1); + oled_write_raw_P(winlogo2, WIN_STAT_SIZE); + + oled_set_cursor(WIN_X + 2, WIN_Y); + oled_write("WINKEY", false); + + oled_set_cursor(WIN_X + 2, WIN_Y + 1 ); + if(isguiDisabled) + { + oled_write("DISABLED", false); + } + else { + oled_write("ENABLED ", false); + } +} + +bool oled_task_user(void) { + current_wpm = get_current_wpm(); + led_usb_state = host_keyboard_led_state(); + render_animation(13, 3); + oled_set_cursor(0, 0); + // Host Keyboard Layer Status + switch (get_highest_layer(layer_state)) { + case MAIN: + oled_write("MAIN ", false); + break; + case SECOND: + oled_write("SECOND", false); + break; + case THIRD: + oled_write("THIRD ", false); + break; + default: + oled_write("FOURTH", false); + } + render_caps(0, 2); + render_num(3, 2); + render_scroll(6, 2); + render_winstat(1, 5); + + + oled_set_cursor(12, 0); + oled_write("WPM: ", false); + oled_write(get_u8_str(current_wpm, '0'), false); + return false; +} + +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch(keycode) { + case GU_TOGG: + if(record->event.pressed && isguiDisabled) { + isguiDisabled = false; + break; + } + else if(record->event.pressed) { + isguiDisabled = true; + } + break; + case KC_LCTL: + case KC_RCTL: + if(record->event.pressed) { + isSneaking = true; + } else { + isSneaking = false; + } + break; + case KC_SPC: + if(record->event.pressed) { + isJumping = true; + showedJump = false; + } else { + isJumping = false; + } + break; + } + return true; +} + + diff --git a/keyboards/qck75/v1/keymaps/via/keymap.c b/keyboards/qck75/v1/keymaps/via/keymap.c new file mode 100644 index 000000000000..8904b31ca8b5 --- /dev/null +++ b/keyboards/qck75/v1/keymaps/via/keymap.c @@ -0,0 +1,572 @@ +// Copyright 2023 QMK +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum { + MAIN = 0, + SECOND = 1, + THIRD = 2, + FOURTH = 3 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_75_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_DEL, + KC_F14, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_F15, KC_F16, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_F17, KC_F18, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_F19, KC_F20, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_75_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, GU_TOGG, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_75_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_75_ansi( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + QK_BOOT, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#if defined(ENCODER_MAP_ENABLE) + +const uint16_t PROGMEM encoder_map[][1][2] = { + [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [1] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT)}, + [2] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [3] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, +}; + +#endif + +#define KB_STAT_SIZE 18 +#define WIN_STAT_SIZE 12 +#define MIN_WALK_SPEED 10 +#define MIN_RUN_SPEED 40 +#define ANIM_FRAME_DURATION 200 +#define ANIM_SIZE 96 + +uint32_t anim_timer = 0; +uint8_t current_frame = 0; +int current_wpm = 0; +led_t led_usb_state; + +bool isguiDisabled = false; +bool isSneaking = false; +bool isJumping = false; +bool showedJump = true; + +#ifdef OLED_ENABLE + +static void render_animation(int ANIM_X, int ANIM_Y) { + //sit animation 32 X 22 + static const char PROGMEM sit[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, + 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, + 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, + 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, + 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, + 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + }, + + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, + 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, + 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, + 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, + 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, + 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } + + } + }; + + //walk animation 32 X 22 + static const char PROGMEM walk[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, + 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, + 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, + 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, + 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + }, + + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, + 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, + 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, + 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, + 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, + 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + //run animation 32 X 22 + static const char PROGMEM run[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, + 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, + 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, + 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, + 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, + 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + } + }, + + { + { + 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, + 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, + 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, + 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + //bark animation 32 X 22 + static const char PROGMEM bark[2][3][ANIM_SIZE] = { + { + { + 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, + 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, + 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, + 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, + 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + }, + + { + { + 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, + 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, + 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, + 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, + 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + //sneak animation 32 X 22 + static const char PROGMEM sneak[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, + 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, + 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, + 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, + 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, + 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, + 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, + 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, + 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, + }, + }, + + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, + 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, + 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, + 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, + 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, + 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, + 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, + 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + void animate_luna(void) { + + int anim_x; + int anim_y; + + if(isJumping || !showedJump) { + oled_set_cursor(ANIM_X, ANIM_Y + 2); + oled_write(" ", false); + anim_x = ANIM_X; + anim_y = ANIM_Y - 1; + showedJump = true; + } else { + oled_set_cursor(ANIM_X, ANIM_Y - 1); + oled_write(" ", false); + + anim_x = ANIM_X; + anim_y = ANIM_Y; + } + + if(led_usb_state.caps_lock) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(bark[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(bark[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(bark[current_frame][2], ANIM_SIZE); + } else if(isSneaking) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(sneak[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(sneak[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(sneak[current_frame][2], ANIM_SIZE); + } else if(current_wpm <= MIN_WALK_SPEED) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(sit[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(sit[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(sit[current_frame][2], ANIM_SIZE); + } else if(current_wpm <= MIN_RUN_SPEED) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(walk[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(walk[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(walk[current_frame][2], ANIM_SIZE); + } else { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(run[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(run[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(run[current_frame][2], ANIM_SIZE); + } + } + + +# if OLED_TIMEOUT > 0 + + if(last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) { + oled_off(); + return; + } else { + oled_on(); + } +# endif + + if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + current_frame = (current_frame + 1) % 2; + animate_luna(); + } + +}; + + +static void render_caps(int CAP_X, int CAP_Y) { + if(led_usb_state.caps_lock == true) { + static const char PROGMEM caps[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x3b, 0xdb, 0xeb, + 0xdb, 0x3b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM caps2[KB_STAT_SIZE] = { + 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x68, 0x6e, 0x6e, + 0x6e, 0x68, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 + }; + oled_set_cursor(CAP_X, CAP_Y); + oled_write_raw_P(caps, KB_STAT_SIZE); + oled_set_cursor(CAP_X, CAP_Y + 1); + oled_write_raw_P(caps2, KB_STAT_SIZE); + } + else { + static const char PROGMEM caps[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0xc4, 0x24, 0x14, + 0x24, 0xc4, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM caps2[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x17, 0x11, 0x11, + 0x11, 0x17, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 + }; + oled_set_cursor(CAP_X, CAP_Y); + oled_write_raw_P(caps, KB_STAT_SIZE); + oled_set_cursor(CAP_X, CAP_Y + 1); + oled_write_raw_P(caps2, KB_STAT_SIZE); + } +} + +static void render_num(int NUM_X, int NUM_Y) { + if(led_usb_state.num_lock == true) { + static const char PROGMEM num[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0xfb, 0xdb, 0x0b, + 0xfb, 0xfb, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM num2[KB_STAT_SIZE] = { + 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x6f, 0x6b, 0x68, + 0x6b, 0x6f, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 + }; + oled_set_cursor(NUM_X, NUM_Y); + oled_write_raw_P(num, KB_STAT_SIZE); + oled_set_cursor(NUM_X, NUM_Y + 1); + oled_write_raw_P(num2, KB_STAT_SIZE); + } + else { + static const char PROGMEM num[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x04, 0x24, 0xf4, + 0x04, 0x04, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM num2[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x10, 0x14, 0x17, + 0x14, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 + }; + oled_set_cursor(NUM_X, NUM_Y); + oled_write_raw_P(num, KB_STAT_SIZE); + oled_set_cursor(NUM_X, NUM_Y + 1); + oled_write_raw_P(num2, KB_STAT_SIZE); + } +} + +static void render_scroll(int SCROLL_X, int SCROLL_Y) { + if(led_usb_state.scroll_lock == true) { + static const char PROGMEM scroll[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x7b, 0xfb, 0x0b, + 0xfb, 0x7b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM scroll2[KB_STAT_SIZE] = { + 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6b, 0x6b, 0x6a, 0x68, + 0x6a, 0x6b, 0x6b, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 + }; + oled_set_cursor(SCROLL_X, SCROLL_Y); + oled_write_raw_P(scroll, KB_STAT_SIZE); + oled_set_cursor(SCROLL_X, SCROLL_Y + 1); + oled_write_raw_P(scroll2, KB_STAT_SIZE); + } + else { + static const char PROGMEM scroll[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x84, 0x04, 0xf4, + 0x04, 0x84, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM scroll2[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0x0f, 0x10, 0x14, 0x14, 0x15, 0x17, + 0x15, 0x14, 0x14, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 + }; + oled_set_cursor(SCROLL_X, SCROLL_Y); + oled_write_raw_P(scroll, KB_STAT_SIZE); + oled_set_cursor(SCROLL_X, SCROLL_Y + 1); + oled_write_raw_P(scroll2, KB_STAT_SIZE); + } +} + +static void render_winstat(int WIN_X, int WIN_Y) +{ + static const char PROGMEM winlogo[WIN_STAT_SIZE] = { + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + }; + static const char PROGMEM winlogo2[WIN_STAT_SIZE] = { + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + }; + + oled_set_cursor(WIN_X, WIN_Y); + oled_write_raw_P(winlogo, WIN_STAT_SIZE); + oled_set_cursor(WIN_X, WIN_Y + 1); + oled_write_raw_P(winlogo2, WIN_STAT_SIZE); + + oled_set_cursor(WIN_X + 2, WIN_Y); + oled_write("WINKEY", false); + + oled_set_cursor(WIN_X + 2, WIN_Y + 1 ); + if(isguiDisabled) + { + oled_write("DISABLED", false); + } + else { + oled_write("ENABLED ", false); + } +} + +bool oled_task_user(void) { + current_wpm = get_current_wpm(); + led_usb_state = host_keyboard_led_state(); + render_animation(13, 3); + oled_set_cursor(0, 0); + // Host Keyboard Layer Status + switch (get_highest_layer(layer_state)) { + case MAIN: + oled_write("MAIN ", false); + break; + case SECOND: + oled_write("SECOND", false); + break; + case THIRD: + oled_write("THIRD ", false); + break; + default: + oled_write("FOURTH", false); + } + render_caps(0, 2); + render_num(3, 2); + render_scroll(6, 2); + render_winstat(1, 5); + + + oled_set_cursor(12, 0); + oled_write("WPM: ", false); + oled_write(get_u8_str(current_wpm, '0'), false); + return false; +} + +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch(keycode) { + case GU_TOGG: + if(record->event.pressed && isguiDisabled) { + isguiDisabled = false; + break; + } + else if(record->event.pressed) { + isguiDisabled = true; + } + break; + case KC_LCTL: + case KC_RCTL: + if(record->event.pressed) { + isSneaking = true; + } else { + isSneaking = false; + } + break; + case KC_SPC: + if(record->event.pressed) { + isJumping = true; + showedJump = false; + } else { + isJumping = false; + } + break; + } + return true; +} + + diff --git a/keyboards/qck75/v1/keymaps/via/rules.mk b/keyboards/qck75/v1/keymaps/via/rules.mk new file mode 100644 index 000000000000..4253f570f0bb --- /dev/null +++ b/keyboards/qck75/v1/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/qck75/v1/mcuconf.h b/keyboards/qck75/v1/mcuconf.h new file mode 100644 index 000000000000..c465397d36c1 --- /dev/null +++ b/keyboards/qck75/v1/mcuconf.h @@ -0,0 +1,15 @@ +// Copyright 2023 Andrian (@PoringH) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_I2C_USE_I2C1 +#define STM32_I2C_USE_I2C1 TRUE + +#undef STM32_I2C_I2C1_RX_DMA_STREAM +#define STM32_I2C_I2C1_RX_DMA_STREAM STM32_DMA_STREAM_ID(1, 3) + +#undef STM32_I2C_I2C1_TX_DMA_STREAM +#define STM32_I2C_I2C1_TX_DMA_STREAM STM32_DMA_STREAM_ID(1, 2) diff --git a/keyboards/qck75/v1/readme.md b/keyboards/qck75/v1/readme.md new file mode 100644 index 000000000000..bd61b6691066 --- /dev/null +++ b/keyboards/qck75/v1/readme.md @@ -0,0 +1,27 @@ +# qck75 + +![qck75](imgur.com image replace me!) + +*A short description of the keyboard/project* + +* Keyboard Maintainer: [Andrian](https://github.com/PoringH) +* Hardware Supported: *The PCBs, controllers supported* +* Hardware Availability: *Links to where you can find this hardware* + +Make example for this keyboard (after setting up your build environment): + + make qck75:default + +Flashing example for this keyboard: + + make qck75:default:flash + +See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). + +## Bootloader + +Enter the bootloader in 3 ways: + +* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/qck75/v1/rules.mk b/keyboards/qck75/v1/rules.mk new file mode 100644 index 000000000000..c61264b07015 --- /dev/null +++ b/keyboards/qck75/v1/rules.mk @@ -0,0 +1,6 @@ +# This file intentionally left blank +NKRO_ENABLE = yes +MAGIC_ENABLE = yes +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 +WPM_ENABLE = yes \ No newline at end of file From 84094396f247254dc08367cc3fb6ec54bb6691c2 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:04:03 +0700 Subject: [PATCH 02/38] Update keyboards/qck75/v1/config.h Co-authored-by: Ryan --- keyboards/qck75/v1/config.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/config.h b/keyboards/qck75/v1/config.h index 4e3e5ee81791..7208d3cb4bf1 100644 --- a/keyboards/qck75/v1/config.h +++ b/keyboards/qck75/v1/config.h @@ -17,7 +17,7 @@ #define OLED_COLUMN_OFFSET 2 #define OLED_TIMEOUT 120000 -#define OLED_BRIGHNTESS 120 +#define OLED_BRIGHTNESS 120 #define VIA_EEPROM_CUSTOM_CONFIG_SIZE 21 From ed4f2193701cbbfea6e8a488c21f0711560959e2 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:04:09 +0700 Subject: [PATCH 03/38] Update keyboards/qck75/v1/config.h Co-authored-by: Ryan --- keyboards/qck75/v1/config.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/keyboards/qck75/v1/config.h b/keyboards/qck75/v1/config.h index 7208d3cb4bf1..c44533e16ce0 100644 --- a/keyboards/qck75/v1/config.h +++ b/keyboards/qck75/v1/config.h @@ -20,5 +20,3 @@ #define OLED_BRIGHTNESS 120 #define VIA_EEPROM_CUSTOM_CONFIG_SIZE 21 - -#define USB_POLLING_INTERVAL_MS 1 From 04e6478a8252079845efa86bfc99f0f8ed152db1 Mon Sep 17 00:00:00 2001 From: PoringH Date: Fri, 9 Jun 2023 10:15:35 +0700 Subject: [PATCH 04/38] json format --- keyboards/qck75/v1/info.json | 263 +++++++++++++++++------------------ 1 file changed, 129 insertions(+), 134 deletions(-) diff --git a/keyboards/qck75/v1/info.json b/keyboards/qck75/v1/info.json index fcfbd4ad3451..0f43fe1852a0 100644 --- a/keyboards/qck75/v1/info.json +++ b/keyboards/qck75/v1/info.json @@ -1,134 +1,129 @@ -{ - "manufacturer": "Andrian", - "keyboard_name": "QCK75-XT", - "maintainer": "PoringH", - "bootloader": "stm32-dfu", - "diode_direction": "COL2ROW", - "features": { - "bootmagic": true, - "command": false, - "console": false, - "extrakey": true, - "mousekey": true, - "encoder": true - }, - "matrix_pins": { - "cols": [ "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B11", "A9", "A8", "C9", "C8", "C7", "C6", "B15", "B14", "B13", "B12" ], - "rows": [ "C3", "A0", "A1", "A2", "B10", "A15" ] - }, - "encoder": { - "rotary": [ - { "pin_a": "C0", "pin_b": "C1", "resolution": 2} - ] - }, - "processor": "STM32F072", - "url": "", - "usb": { - "device_version": "1.0.0", - "pid": "0x0001", - "vid": "0x5047" - }, - "layouts": { - "LAYOUT_75_ansi": { - "layout": [ - { "matrix": [0, 2], "x": 2.5, "y": 0 }, - { "matrix": [0, 3], "x": 3.75, "y": 0 }, - { "matrix": [0, 4], "x": 4.75, "y": 0 }, - { "matrix": [0, 5], "x": 5.75, "y": 0 }, - { "matrix": [0, 6], "x": 6.75, "y": 0 }, - { "matrix": [0, 7], "x": 8, "y": 0 }, - { "matrix": [0, 8], "x": 9, "y": 0 }, - { "matrix": [0, 9], "x": 10, "y": 0 }, - { "matrix": [0, 10], "x": 11, "y": 0 }, - { "matrix": [0, 11], "x": 12.25, "y": 0 }, - { "matrix": [0, 12], "x": 13.25, "y": 0 }, - { "matrix": [0, 13], "x": 14.25, "y": 0 }, - { "matrix": [0, 14], "x": 15.25, "y": 0 }, - { "matrix": [0, 16], "x": 16.5, "y": 0 }, - { "matrix": [0, 17], "x": 18, "y": 0 }, - - { "matrix": [1, 1], "x": 1, "y": 1.25 }, - { "matrix": [1, 2], "x": 2.5, "y": 1.25 }, - { "matrix": [1, 3], "x": 3.5, "y": 1.25 }, - { "matrix": [1, 4], "x": 4.5, "y": 1.25 }, - { "matrix": [1, 5], "x": 5.5, "y": 1.25 }, - { "matrix": [1, 6], "x": 6.5, "y": 1.25 }, - { "matrix": [1, 7], "x": 7.5, "y": 1.25 }, - { "matrix": [1, 8], "x": 8.5, "y": 1.25 }, - { "matrix": [1, 9], "x": 9.5, "y": 1.25 }, - { "matrix": [1, 10], "x": 10.5, "y": 1.25 }, - { "matrix": [1, 11], "x": 11.5, "y": 1.25 }, - { "matrix": [1, 12], "x": 12.5, "y": 1.25 }, - { "matrix": [1, 13], "x": 13.5, "y": 1.25 }, - { "matrix": [1, 14], "x": 14.5, "y": 1.25 }, - { "matrix": [1, 15], "w": 2, "x": 15.5, "y": 1.25 }, - { "matrix": [1, 17], "x": 18, "y": 1.25 }, - - { "matrix": [2, 0], "x": 0, "y": 2.25 }, - { "matrix": [2, 1], "x": 1, "y": 2.25 }, - { "matrix": [2, 2], "w": 2.5, "x": 0, "y": 2.25 }, - { "matrix": [2, 3], "x": 4, "y": 2.25 }, - { "matrix": [2, 4], "x": 5, "y": 2.25 }, - { "matrix": [2, 5], "x": 6, "y": 2.25 }, - { "matrix": [2, 6], "x": 7, "y": 2.25 }, - { "matrix": [2, 7], "x": 8, "y": 2.25 }, - { "matrix": [2, 8], "x": 9, "y": 2.25 }, - { "matrix": [2, 9], "x": 10, "y": 2.25 }, - { "matrix": [2, 10], "x": 11, "y": 2.25 }, - { "matrix": [2, 11], "x": 12, "y": 2.25 }, - { "matrix": [2, 12], "x": 13, "y": 2.25 }, - { "matrix": [2, 13], "x": 14, "y": 2.25 }, - { "matrix": [2, 14], "x": 15, "y": 2.25 }, - { "matrix": [2, 15], "w": 1.5, "x": 16, "y": 2.25 }, - { "matrix": [2, 17], "x": 18, "y": 2 }, - - { "matrix": [3, 0], "x": 0, "y": 3.25 }, - { "matrix": [3, 1], "x": 1, "y": 3.25 }, - { "matrix": [3, 2], "w": 1.75, "x": 2.5, "y": 3.25 }, - { "matrix": [3, 3], "x": 4.25, "y": 3.25 }, - { "matrix": [3, 4], "x": 5.25, "y": 3.25 }, - { "matrix": [3, 5], "x": 6.25, "y": 3.25 }, - { "matrix": [3, 6], "x": 7.25, "y": 3.25 }, - { "matrix": [3, 7], "x": 8.25, "y": 3.25 }, - { "matrix": [3, 8], "x": 9.25, "y": 3.25 }, - { "matrix": [3, 9], "x": 10.25, "y": 3.25 }, - { "matrix": [3, 10], "x": 11.25, "y": 3.25 }, - { "matrix": [3, 11], "x": 12.25, "y": 3.25 }, - { "matrix": [3, 12], "x": 13.25, "y": 3.25 }, - { "matrix": [3, 13], "x": 14.25, "y": 3.25 }, - { "matrix": [3, 15], "w": 2.25, "x": 15.25, "y": 3.25 }, - { "matrix": [3, 17], "x": 18, "y": 3.25 }, - - { "matrix": [4, 0], "x": 0, "y": 4.25 }, - { "matrix": [4, 1], "x": 1, "y": 4.25 }, - { "matrix": [4, 2], "w": 2.25, "x": 2.5, "y": 4.25 }, - { "matrix": [4, 4], "x": 4.75, "y": 4.25 }, - { "matrix": [4, 5], "x": 5.75, "y": 4.25 }, - { "matrix": [4, 6], "x": 6.75, "y": 4.25 }, - { "matrix": [4, 7], "x": 7.75, "y": 4.25 }, - { "matrix": [4, 8], "x": 8.75, "y": 4.25 }, - { "matrix": [4, 9], "x": 9.75, "y": 4.25 }, - { "matrix": [4, 10], "x": 10.75, "y": 4.25 }, - { "matrix": [4, 11], "x": 11.75, "y": 4.25 }, - { "matrix": [4, 12], "x": 12.75, "y": 4.25 }, - { "matrix": [4, 13], "x": 13.75, "y": 4.25 }, - { "matrix": [4, 14], "w": 1.75, "x": 14.75, "y": 4.25 }, - { "matrix": [4, 16], "x": 16.75, "y": 4.25 }, - { "matrix": [4, 17], "x": 18, "y": 4.25 }, - - { "matrix": [5, 0], "x": 0, "y": 5.25 }, - { "matrix": [5, 1], "x": 1, "y": 5.25 }, - { "matrix": [5, 2], "w": 1.25, "x": 2.5, "y": 5.25 }, - { "matrix": [5, 3], "w": 1.25, "x": 3.75, "y": 5.25 }, - { "matrix": [5, 4], "w": 1.25, "x": 5, "y": 5.25 }, - { "matrix": [5, 8], "w": 6.25, "x": 6.25, "y": 5.25 }, - { "matrix": [5, 12], "x": 12.5, "y": 5.25 }, - { "matrix": [5, 13], "x": 13.5, "y": 5.25 }, - { "matrix": [5, 14], "x": 14.5, "y": 5.25 }, - { "matrix": [5, 15], "x": 15.75, "y": 5.5 }, - { "matrix": [5, 16], "x": 16.75, "y": 5.5 }, - { "matrix": [5, 17], "x": 17.75, "y": 5.5 } - ] - } - } -} \ No newline at end of file +{ + "manufacturer": "Andrian", + "keyboard_name": "QCK75-XT", + "maintainer": "PoringH", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "C0", "pin_b": "C1", "resolution": 2} + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "encoder": true, + "extrakey": true, + "mousekey": true + }, + "matrix_pins": { + "cols": ["A6", "A7", "C4", "C5", "B0", "B1", "B2", "B11", "A9", "A8", "C9", "C8", "C7", "C6", "B15", "B14", "B13", + "rows": ["C3", "A0", "A1", "A2", "B10", "A15"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x5047" + }, + "layouts": { + "LAYOUT_75_ansi": { + "layout": [ + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.75, "y": 0}, + {"matrix": [0, 4], "x": 4.75, "y": 0}, + {"matrix": [0, 5], "x": 5.75, "y": 0}, + {"matrix": [0, 6], "x": 6.75, "y": 0}, + {"matrix": [0, 7], "x": 8, "y": 0}, + {"matrix": [0, 8], "x": 9, "y": 0}, + {"matrix": [0, 9], "x": 10, "y": 0}, + {"matrix": [0, 10], "x": 11, "y": 0}, + {"matrix": [0, 11], "x": 12.25, "y": 0}, + {"matrix": [0, 12], "x": 13.25, "y": 0}, + {"matrix": [0, 13], "x": 14.25, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.5, "y": 0}, + {"matrix": [0, 17], "x": 18, "y": 0}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2.5, "y": 1.25}, + {"matrix": [1, 3], "x": 3.5, "y": 1.25}, + {"matrix": [1, 4], "x": 4.5, "y": 1.25}, + {"matrix": [1, 5], "x": 5.5, "y": 1.25}, + {"matrix": [1, 6], "x": 6.5, "y": 1.25}, + {"matrix": [1, 7], "x": 7.5, "y": 1.25}, + {"matrix": [1, 8], "x": 8.5, "y": 1.25}, + {"matrix": [1, 9], "x": 9.5, "y": 1.25}, + {"matrix": [1, 10], "x": 10.5, "y": 1.25}, + {"matrix": [1, 11], "x": 11.5, "y": 1.25}, + {"matrix": [1, 12], "x": 12.5, "y": 1.25}, + {"matrix": [1, 13], "x": 13.5, "y": 1.25}, + {"matrix": [1, 14], "x": 14.5, "y": 1.25}, + {"matrix": [1, 15], "x": 15.5, "y": 1.25, "w": 2}, + {"matrix": [1, 17], "x": 18, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.25}, + {"matrix": [2, 2], "x": 0, "y": 2.25, "w": 2.5}, + {"matrix": [2, 3], "x": 4, "y": 2.25}, + {"matrix": [2, 4], "x": 5, "y": 2.25}, + {"matrix": [2, 5], "x": 6, "y": 2.25}, + {"matrix": [2, 6], "x": 7, "y": 2.25}, + {"matrix": [2, 7], "x": 8, "y": 2.25}, + {"matrix": [2, 8], "x": 9, "y": 2.25}, + {"matrix": [2, 9], "x": 10, "y": 2.25}, + {"matrix": [2, 10], "x": 11, "y": 2.25}, + {"matrix": [2, 11], "x": 12, "y": 2.25}, + {"matrix": [2, 12], "x": 13, "y": 2.25}, + {"matrix": [2, 13], "x": 14, "y": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2.25}, + {"matrix": [2, 15], "x": 16, "y": 2.25, "w": 1.5}, + {"matrix": [2, 17], "x": 18, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3.25}, + {"matrix": [3, 1], "x": 1, "y": 3.25}, + {"matrix": [3, 2], "x": 2.5, "y": 3.25, "w": 1.75}, + {"matrix": [3, 3], "x": 4.25, "y": 3.25}, + {"matrix": [3, 4], "x": 5.25, "y": 3.25}, + {"matrix": [3, 5], "x": 6.25, "y": 3.25}, + {"matrix": [3, 6], "x": 7.25, "y": 3.25}, + {"matrix": [3, 7], "x": 8.25, "y": 3.25}, + {"matrix": [3, 8], "x": 9.25, "y": 3.25}, + {"matrix": [3, 9], "x": 10.25, "y": 3.25}, + {"matrix": [3, 10], "x": 11.25, "y": 3.25}, + {"matrix": [3, 11], "x": 12.25, "y": 3.25}, + {"matrix": [3, 12], "x": 13.25, "y": 3.25}, + {"matrix": [3, 13], "x": 14.25, "y": 3.25}, + {"matrix": [3, 15], "x": 15.25, "y": 3.25, "w": 2.25}, + {"matrix": [3, 17], "x": 18, "y": 3.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25}, + {"matrix": [4, 1], "x": 1, "y": 4.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 2.25}, + {"matrix": [4, 4], "x": 4.75, "y": 4.25}, + {"matrix": [4, 5], "x": 5.75, "y": 4.25}, + {"matrix": [4, 6], "x": 6.75, "y": 4.25}, + {"matrix": [4, 7], "x": 7.75, "y": 4.25}, + {"matrix": [4, 8], "x": 8.75, "y": 4.25}, + {"matrix": [4, 9], "x": 9.75, "y": 4.25}, + {"matrix": [4, 10], "x": 10.75, "y": 4.25}, + {"matrix": [4, 11], "x": 11.75, "y": 4.25}, + {"matrix": [4, 12], "x": 12.75, "y": 4.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4.25}, + {"matrix": [4, 14], "x": 14.75, "y": 4.25, "w": 1.75}, + {"matrix": [4, 16], "x": 16.75, "y": 4.25}, + {"matrix": [4, 17], "x": 18, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25}, + {"matrix": [5, 1], "x": 1, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 3], "x": 3.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 4], "x": 5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 8], "x": 6.25, "y": 5.25, "w": 6.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25}, + {"matrix": [5, 14], "x": 14.5, "y": 5.25}, + {"matrix": [5, 15], "x": 15.75, "y": 5.5}, + {"matrix": [5, 16], "x": 16.75, "y": 5.5}, + {"matrix": [5, 17], "x": 17.75, "y": 5.5} + ] + } + } +} \ No newline at end of file From b3a9eda339607a1a0986769b36d2b76f889e102d Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:17:51 +0700 Subject: [PATCH 05/38] Update keyboards/qck75/v1/readme.md Co-authored-by: Ryan --- keyboards/qck75/v1/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/qck75/v1/readme.md b/keyboards/qck75/v1/readme.md index bd61b6691066..4d2f23a92c3a 100644 --- a/keyboards/qck75/v1/readme.md +++ b/keyboards/qck75/v1/readme.md @@ -10,11 +10,11 @@ Make example for this keyboard (after setting up your build environment): - make qck75:default + make qck75/v1:default Flashing example for this keyboard: - make qck75:default:flash + make qck75/v1:default:flash See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs). From cc9bf848cbb478d01b9957793bd4013149938004 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:18:07 +0700 Subject: [PATCH 06/38] Update keyboards/qck75/v1/rules.mk Co-authored-by: Ryan --- keyboards/qck75/v1/rules.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/qck75/v1/rules.mk b/keyboards/qck75/v1/rules.mk index c61264b07015..1fd7b4ab0d2b 100644 --- a/keyboards/qck75/v1/rules.mk +++ b/keyboards/qck75/v1/rules.mk @@ -1,6 +1,5 @@ # This file intentionally left blank NKRO_ENABLE = yes -MAGIC_ENABLE = yes OLED_ENABLE = yes OLED_DRIVER = SSD1306 WPM_ENABLE = yes \ No newline at end of file From f25c2d17ffb456044d3254f8ed6ced9c8dfdb2ef Mon Sep 17 00:00:00 2001 From: PoringH Date: Fri, 9 Jun 2023 10:24:36 +0700 Subject: [PATCH 07/38] Update readme --- keyboards/qck75/v1/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/qck75/v1/readme.md b/keyboards/qck75/v1/readme.md index 4d2f23a92c3a..0f1c458d619c 100644 --- a/keyboards/qck75/v1/readme.md +++ b/keyboards/qck75/v1/readme.md @@ -5,8 +5,8 @@ *A short description of the keyboard/project* * Keyboard Maintainer: [Andrian](https://github.com/PoringH) -* Hardware Supported: *The PCBs, controllers supported* -* Hardware Availability: *Links to where you can find this hardware* +* Hardware Supported: *This project uses STM32F072R8Tx for the mcu on the pcb* +* Hardware Availability: *https://github.com/PoringH/QCK75-XT* Make example for this keyboard (after setting up your build environment): From cc9e5cdfb7be79283cc8d8b91565095b545fb512 Mon Sep 17 00:00:00 2001 From: PoringH Date: Fri, 9 Jun 2023 10:33:10 +0700 Subject: [PATCH 08/38] Update readme.md --- keyboards/qck75/v1/readme.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/keyboards/qck75/v1/readme.md b/keyboards/qck75/v1/readme.md index 0f1c458d619c..805a26f15e13 100644 --- a/keyboards/qck75/v1/readme.md +++ b/keyboards/qck75/v1/readme.md @@ -1,7 +1,11 @@ # qck75 -![qck75](imgur.com image replace me!) - +https://i.imgur.com/rSJf1CA.jpeg +https://i.imgur.com/Kka9Nxr.jpeg +https://i.imgur.com/gCvabEi.jpeg +https://i.imgur.com/l7LvjC5.jpeg +https://i.imgur.com/exdD8Hg.jpeg +https://i.imgur.com/1edEPh9.jpeg *A short description of the keyboard/project* * Keyboard Maintainer: [Andrian](https://github.com/PoringH) From d2be428c08d20ded6c3b1b0ac849ebe5aa723f08 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:38:10 +0700 Subject: [PATCH 09/38] Update readme.md --- keyboards/qck75/v1/readme.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/keyboards/qck75/v1/readme.md b/keyboards/qck75/v1/readme.md index 805a26f15e13..27f14dec22f7 100644 --- a/keyboards/qck75/v1/readme.md +++ b/keyboards/qck75/v1/readme.md @@ -6,11 +6,13 @@ https://i.imgur.com/gCvabEi.jpeg https://i.imgur.com/l7LvjC5.jpeg https://i.imgur.com/exdD8Hg.jpeg https://i.imgur.com/1edEPh9.jpeg -*A short description of the keyboard/project* + +This keyboard is a keyboard made for self use +75% layout with extra keys for macro with led and knob * Keyboard Maintainer: [Andrian](https://github.com/PoringH) -* Hardware Supported: *This project uses STM32F072R8Tx for the mcu on the pcb* -* Hardware Availability: *https://github.com/PoringH/QCK75-XT* +* Hardware Supported: This project uses STM32F072R8Tx for the mcu on the pcb +* Hardware Availability: https://github.com/PoringH/QCK75-XT Make example for this keyboard (after setting up your build environment): From b1f46999a4fe4201619383bbc38b93598faed098 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:52:29 +0700 Subject: [PATCH 10/38] Update keyboards/qck75/v1/readme.md Co-authored-by: Joel Challis --- keyboards/qck75/v1/readme.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/keyboards/qck75/v1/readme.md b/keyboards/qck75/v1/readme.md index 27f14dec22f7..7714803044cb 100644 --- a/keyboards/qck75/v1/readme.md +++ b/keyboards/qck75/v1/readme.md @@ -1,11 +1,6 @@ # qck75 -https://i.imgur.com/rSJf1CA.jpeg -https://i.imgur.com/Kka9Nxr.jpeg -https://i.imgur.com/gCvabEi.jpeg -https://i.imgur.com/l7LvjC5.jpeg -https://i.imgur.com/exdD8Hg.jpeg -https://i.imgur.com/1edEPh9.jpeg +[qck75](https://i.imgur.com/1edEPh9l.jpeg) This keyboard is a keyboard made for self use 75% layout with extra keys for macro with led and knob From 2dcf01fe3ee778747520032668d6c73f5dcdec47 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:53:01 +0700 Subject: [PATCH 11/38] Update keyboards/qck75/v1/rules.mk Co-authored-by: Joel Challis --- keyboards/qck75/v1/rules.mk | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/keyboards/qck75/v1/rules.mk b/keyboards/qck75/v1/rules.mk index 1fd7b4ab0d2b..e9b7a6df0554 100644 --- a/keyboards/qck75/v1/rules.mk +++ b/keyboards/qck75/v1/rules.mk @@ -1,5 +1 @@ -# This file intentionally left blank -NKRO_ENABLE = yes -OLED_ENABLE = yes -OLED_DRIVER = SSD1306 -WPM_ENABLE = yes \ No newline at end of file +OLED_DRIVER = SSD1306 \ No newline at end of file From 5dcd5f1ffc579e8026459123618caa217e6e1269 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:53:14 +0700 Subject: [PATCH 12/38] Update keyboards/qck75/v1/info.json Co-authored-by: Joel Challis --- keyboards/qck75/v1/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/info.json b/keyboards/qck75/v1/info.json index 0f43fe1852a0..a7f084470c35 100644 --- a/keyboards/qck75/v1/info.json +++ b/keyboards/qck75/v1/info.json @@ -18,7 +18,7 @@ "mousekey": true }, "matrix_pins": { - "cols": ["A6", "A7", "C4", "C5", "B0", "B1", "B2", "B11", "A9", "A8", "C9", "C8", "C7", "C6", "B15", "B14", "B13", + "cols": ["A6", "A7", "C4", "C5", "B0", "B1", "B2", "B11", "A9", "A8", "C9", "C8", "C7", "C6", "B15", "B14", "B13"], "rows": ["C3", "A0", "A1", "A2", "B10", "A15"] }, "processor": "STM32F072", From 7e51fbdcb3c178819592a536ac021fa29d39e968 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:53:21 +0700 Subject: [PATCH 13/38] Update keyboards/qck75/v1/info.json Co-authored-by: Joel Challis --- keyboards/qck75/v1/info.json | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/info.json b/keyboards/qck75/v1/info.json index a7f084470c35..ed1e9bbc58dd 100644 --- a/keyboards/qck75/v1/info.json +++ b/keyboards/qck75/v1/info.json @@ -15,7 +15,10 @@ "console": false, "encoder": true, "extrakey": true, - "mousekey": true + "mousekey": true, + "nkro", true, + "oled", true, + "wpm": true }, "matrix_pins": { "cols": ["A6", "A7", "C4", "C5", "B0", "B1", "B2", "B11", "A9", "A8", "C9", "C8", "C7", "C6", "B15", "B14", "B13"], From d654a97a756da56b26bd914dd26bbb27211e826c Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 10:56:28 +0700 Subject: [PATCH 14/38] Update readme.md --- keyboards/qck75/v1/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/readme.md b/keyboards/qck75/v1/readme.md index 7714803044cb..c948ca5d09c7 100644 --- a/keyboards/qck75/v1/readme.md +++ b/keyboards/qck75/v1/readme.md @@ -1,6 +1,6 @@ # qck75 -[qck75](https://i.imgur.com/1edEPh9l.jpeg) +[qck75](https://i.imgur.com/exdD8Hg.jpeg) This keyboard is a keyboard made for self use 75% layout with extra keys for macro with led and knob From ca020442bb0907c3422f25eb30658789dc9c476f Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 11:07:28 +0700 Subject: [PATCH 15/38] Update keyboards/qck75/v1/info.json Co-authored-by: Joel Challis --- keyboards/qck75/v1/info.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/qck75/v1/info.json b/keyboards/qck75/v1/info.json index ed1e9bbc58dd..28c8efea6adb 100644 --- a/keyboards/qck75/v1/info.json +++ b/keyboards/qck75/v1/info.json @@ -16,8 +16,8 @@ "encoder": true, "extrakey": true, "mousekey": true, - "nkro", true, - "oled", true, + "nkro": true, + "oled": true, "wpm": true }, "matrix_pins": { From ea96259390ddbf08e8e9eeb5b5a0224a54110842 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 11:07:43 +0700 Subject: [PATCH 16/38] Update keyboards/qck75/v1/readme.md Co-authored-by: Joel Challis --- keyboards/qck75/v1/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/readme.md b/keyboards/qck75/v1/readme.md index c948ca5d09c7..af01204e7e7d 100644 --- a/keyboards/qck75/v1/readme.md +++ b/keyboards/qck75/v1/readme.md @@ -1,6 +1,6 @@ # qck75 -[qck75](https://i.imgur.com/exdD8Hg.jpeg) +[qck75](https://i.imgur.com/exdD8Hgl.jpeg) This keyboard is a keyboard made for self use 75% layout with extra keys for macro with led and knob From 25c8b603f2f24b5ef5c56a9bc8870a34acf9b746 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 9 Jun 2023 12:12:26 +0700 Subject: [PATCH 17/38] Update keyboards/qck75/v1/info.json Co-authored-by: Joel Challis --- keyboards/qck75/v1/info.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/info.json b/keyboards/qck75/v1/info.json index 28c8efea6adb..6cb3542add58 100644 --- a/keyboards/qck75/v1/info.json +++ b/keyboards/qck75/v1/info.json @@ -21,7 +21,7 @@ "wpm": true }, "matrix_pins": { - "cols": ["A6", "A7", "C4", "C5", "B0", "B1", "B2", "B11", "A9", "A8", "C9", "C8", "C7", "C6", "B15", "B14", "B13"], + "cols": ["A6", "A7", "C4", "C5", "B0", "B1", "B2", "B11", "A9", "A8", "C9", "C8", "C7", "C6", "B15", "B14", "B13", "B12"], "rows": ["C3", "A0", "A1", "A2", "B10", "A15"] }, "processor": "STM32F072", From 5a0fcd1f65f65c54abf6cb073e8ecb82fa89dc4a Mon Sep 17 00:00:00 2001 From: PoringH Date: Fri, 9 Jun 2023 14:10:34 +0700 Subject: [PATCH 18/38] Update info.json redo the qmk format-json info.json --- keyboards/qck75/v1/info.json | 258 +++++++++++++++++------------------ 1 file changed, 129 insertions(+), 129 deletions(-) diff --git a/keyboards/qck75/v1/info.json b/keyboards/qck75/v1/info.json index 6cb3542add58..f5661f30cca7 100644 --- a/keyboards/qck75/v1/info.json +++ b/keyboards/qck75/v1/info.json @@ -1,132 +1,132 @@ -{ - "manufacturer": "Andrian", - "keyboard_name": "QCK75-XT", - "maintainer": "PoringH", - "bootloader": "stm32-dfu", - "diode_direction": "COL2ROW", - "encoder": { - "rotary": [ - {"pin_a": "C0", "pin_b": "C1", "resolution": 2} - ] - }, - "features": { - "bootmagic": true, - "command": false, - "console": false, - "encoder": true, - "extrakey": true, +{ + "manufacturer": "Andrian", + "keyboard_name": "QCK75-XT", + "maintainer": "PoringH", + "bootloader": "stm32-dfu", + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + {"pin_a": "C0", "pin_b": "C1", "resolution": 2} + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "encoder": true, + "extrakey": true, "mousekey": true, - "nkro": true, + "nkro": true, "oled": true, - "wpm": true - }, - "matrix_pins": { + "wpm": true + }, + "matrix_pins": { "cols": ["A6", "A7", "C4", "C5", "B0", "B1", "B2", "B11", "A9", "A8", "C9", "C8", "C7", "C6", "B15", "B14", "B13", "B12"], - "rows": ["C3", "A0", "A1", "A2", "B10", "A15"] - }, - "processor": "STM32F072", - "url": "", - "usb": { - "device_version": "1.0.0", - "pid": "0x0001", - "vid": "0x5047" - }, - "layouts": { - "LAYOUT_75_ansi": { - "layout": [ - {"matrix": [0, 2], "x": 2.5, "y": 0}, - {"matrix": [0, 3], "x": 3.75, "y": 0}, - {"matrix": [0, 4], "x": 4.75, "y": 0}, - {"matrix": [0, 5], "x": 5.75, "y": 0}, - {"matrix": [0, 6], "x": 6.75, "y": 0}, - {"matrix": [0, 7], "x": 8, "y": 0}, - {"matrix": [0, 8], "x": 9, "y": 0}, - {"matrix": [0, 9], "x": 10, "y": 0}, - {"matrix": [0, 10], "x": 11, "y": 0}, - {"matrix": [0, 11], "x": 12.25, "y": 0}, - {"matrix": [0, 12], "x": 13.25, "y": 0}, - {"matrix": [0, 13], "x": 14.25, "y": 0}, - {"matrix": [0, 14], "x": 15.25, "y": 0}, - {"matrix": [0, 16], "x": 16.5, "y": 0}, - {"matrix": [0, 17], "x": 18, "y": 0}, - {"matrix": [1, 1], "x": 1, "y": 1.25}, - {"matrix": [1, 2], "x": 2.5, "y": 1.25}, - {"matrix": [1, 3], "x": 3.5, "y": 1.25}, - {"matrix": [1, 4], "x": 4.5, "y": 1.25}, - {"matrix": [1, 5], "x": 5.5, "y": 1.25}, - {"matrix": [1, 6], "x": 6.5, "y": 1.25}, - {"matrix": [1, 7], "x": 7.5, "y": 1.25}, - {"matrix": [1, 8], "x": 8.5, "y": 1.25}, - {"matrix": [1, 9], "x": 9.5, "y": 1.25}, - {"matrix": [1, 10], "x": 10.5, "y": 1.25}, - {"matrix": [1, 11], "x": 11.5, "y": 1.25}, - {"matrix": [1, 12], "x": 12.5, "y": 1.25}, - {"matrix": [1, 13], "x": 13.5, "y": 1.25}, - {"matrix": [1, 14], "x": 14.5, "y": 1.25}, - {"matrix": [1, 15], "x": 15.5, "y": 1.25, "w": 2}, - {"matrix": [1, 17], "x": 18, "y": 1.25}, - {"matrix": [2, 0], "x": 0, "y": 2.25}, - {"matrix": [2, 1], "x": 1, "y": 2.25}, - {"matrix": [2, 2], "x": 0, "y": 2.25, "w": 2.5}, - {"matrix": [2, 3], "x": 4, "y": 2.25}, - {"matrix": [2, 4], "x": 5, "y": 2.25}, - {"matrix": [2, 5], "x": 6, "y": 2.25}, - {"matrix": [2, 6], "x": 7, "y": 2.25}, - {"matrix": [2, 7], "x": 8, "y": 2.25}, - {"matrix": [2, 8], "x": 9, "y": 2.25}, - {"matrix": [2, 9], "x": 10, "y": 2.25}, - {"matrix": [2, 10], "x": 11, "y": 2.25}, - {"matrix": [2, 11], "x": 12, "y": 2.25}, - {"matrix": [2, 12], "x": 13, "y": 2.25}, - {"matrix": [2, 13], "x": 14, "y": 2.25}, - {"matrix": [2, 14], "x": 15, "y": 2.25}, - {"matrix": [2, 15], "x": 16, "y": 2.25, "w": 1.5}, - {"matrix": [2, 17], "x": 18, "y": 2}, - {"matrix": [3, 0], "x": 0, "y": 3.25}, - {"matrix": [3, 1], "x": 1, "y": 3.25}, - {"matrix": [3, 2], "x": 2.5, "y": 3.25, "w": 1.75}, - {"matrix": [3, 3], "x": 4.25, "y": 3.25}, - {"matrix": [3, 4], "x": 5.25, "y": 3.25}, - {"matrix": [3, 5], "x": 6.25, "y": 3.25}, - {"matrix": [3, 6], "x": 7.25, "y": 3.25}, - {"matrix": [3, 7], "x": 8.25, "y": 3.25}, - {"matrix": [3, 8], "x": 9.25, "y": 3.25}, - {"matrix": [3, 9], "x": 10.25, "y": 3.25}, - {"matrix": [3, 10], "x": 11.25, "y": 3.25}, - {"matrix": [3, 11], "x": 12.25, "y": 3.25}, - {"matrix": [3, 12], "x": 13.25, "y": 3.25}, - {"matrix": [3, 13], "x": 14.25, "y": 3.25}, - {"matrix": [3, 15], "x": 15.25, "y": 3.25, "w": 2.25}, - {"matrix": [3, 17], "x": 18, "y": 3.25}, - {"matrix": [4, 0], "x": 0, "y": 4.25}, - {"matrix": [4, 1], "x": 1, "y": 4.25}, - {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 2.25}, - {"matrix": [4, 4], "x": 4.75, "y": 4.25}, - {"matrix": [4, 5], "x": 5.75, "y": 4.25}, - {"matrix": [4, 6], "x": 6.75, "y": 4.25}, - {"matrix": [4, 7], "x": 7.75, "y": 4.25}, - {"matrix": [4, 8], "x": 8.75, "y": 4.25}, - {"matrix": [4, 9], "x": 9.75, "y": 4.25}, - {"matrix": [4, 10], "x": 10.75, "y": 4.25}, - {"matrix": [4, 11], "x": 11.75, "y": 4.25}, - {"matrix": [4, 12], "x": 12.75, "y": 4.25}, - {"matrix": [4, 13], "x": 13.75, "y": 4.25}, - {"matrix": [4, 14], "x": 14.75, "y": 4.25, "w": 1.75}, - {"matrix": [4, 16], "x": 16.75, "y": 4.25}, - {"matrix": [4, 17], "x": 18, "y": 4.25}, - {"matrix": [5, 0], "x": 0, "y": 5.25}, - {"matrix": [5, 1], "x": 1, "y": 5.25}, - {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, - {"matrix": [5, 3], "x": 3.75, "y": 5.25, "w": 1.25}, - {"matrix": [5, 4], "x": 5, "y": 5.25, "w": 1.25}, - {"matrix": [5, 8], "x": 6.25, "y": 5.25, "w": 6.25}, - {"matrix": [5, 12], "x": 12.5, "y": 5.25}, - {"matrix": [5, 13], "x": 13.5, "y": 5.25}, - {"matrix": [5, 14], "x": 14.5, "y": 5.25}, - {"matrix": [5, 15], "x": 15.75, "y": 5.5}, - {"matrix": [5, 16], "x": 16.75, "y": 5.5}, - {"matrix": [5, 17], "x": 17.75, "y": 5.5} - ] - } - } -} \ No newline at end of file + "rows": ["C3", "A0", "A1", "A2", "B10", "A15"] + }, + "processor": "STM32F072", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0001", + "vid": "0x5047" + }, + "layouts": { + "LAYOUT_75_ansi": { + "layout": [ + {"matrix": [0, 2], "x": 2.5, "y": 0}, + {"matrix": [0, 3], "x": 3.75, "y": 0}, + {"matrix": [0, 4], "x": 4.75, "y": 0}, + {"matrix": [0, 5], "x": 5.75, "y": 0}, + {"matrix": [0, 6], "x": 6.75, "y": 0}, + {"matrix": [0, 7], "x": 8, "y": 0}, + {"matrix": [0, 8], "x": 9, "y": 0}, + {"matrix": [0, 9], "x": 10, "y": 0}, + {"matrix": [0, 10], "x": 11, "y": 0}, + {"matrix": [0, 11], "x": 12.25, "y": 0}, + {"matrix": [0, 12], "x": 13.25, "y": 0}, + {"matrix": [0, 13], "x": 14.25, "y": 0}, + {"matrix": [0, 14], "x": 15.25, "y": 0}, + {"matrix": [0, 16], "x": 16.5, "y": 0}, + {"matrix": [0, 17], "x": 18, "y": 0}, + {"matrix": [1, 1], "x": 1, "y": 1.25}, + {"matrix": [1, 2], "x": 2.5, "y": 1.25}, + {"matrix": [1, 3], "x": 3.5, "y": 1.25}, + {"matrix": [1, 4], "x": 4.5, "y": 1.25}, + {"matrix": [1, 5], "x": 5.5, "y": 1.25}, + {"matrix": [1, 6], "x": 6.5, "y": 1.25}, + {"matrix": [1, 7], "x": 7.5, "y": 1.25}, + {"matrix": [1, 8], "x": 8.5, "y": 1.25}, + {"matrix": [1, 9], "x": 9.5, "y": 1.25}, + {"matrix": [1, 10], "x": 10.5, "y": 1.25}, + {"matrix": [1, 11], "x": 11.5, "y": 1.25}, + {"matrix": [1, 12], "x": 12.5, "y": 1.25}, + {"matrix": [1, 13], "x": 13.5, "y": 1.25}, + {"matrix": [1, 14], "x": 14.5, "y": 1.25}, + {"matrix": [1, 15], "x": 15.5, "y": 1.25, "w": 2}, + {"matrix": [1, 17], "x": 18, "y": 1.25}, + {"matrix": [2, 0], "x": 0, "y": 2.25}, + {"matrix": [2, 1], "x": 1, "y": 2.25}, + {"matrix": [2, 2], "x": 0, "y": 2.25, "w": 2.5}, + {"matrix": [2, 3], "x": 4, "y": 2.25}, + {"matrix": [2, 4], "x": 5, "y": 2.25}, + {"matrix": [2, 5], "x": 6, "y": 2.25}, + {"matrix": [2, 6], "x": 7, "y": 2.25}, + {"matrix": [2, 7], "x": 8, "y": 2.25}, + {"matrix": [2, 8], "x": 9, "y": 2.25}, + {"matrix": [2, 9], "x": 10, "y": 2.25}, + {"matrix": [2, 10], "x": 11, "y": 2.25}, + {"matrix": [2, 11], "x": 12, "y": 2.25}, + {"matrix": [2, 12], "x": 13, "y": 2.25}, + {"matrix": [2, 13], "x": 14, "y": 2.25}, + {"matrix": [2, 14], "x": 15, "y": 2.25}, + {"matrix": [2, 15], "x": 16, "y": 2.25, "w": 1.5}, + {"matrix": [2, 17], "x": 18, "y": 2}, + {"matrix": [3, 0], "x": 0, "y": 3.25}, + {"matrix": [3, 1], "x": 1, "y": 3.25}, + {"matrix": [3, 2], "x": 2.5, "y": 3.25, "w": 1.75}, + {"matrix": [3, 3], "x": 4.25, "y": 3.25}, + {"matrix": [3, 4], "x": 5.25, "y": 3.25}, + {"matrix": [3, 5], "x": 6.25, "y": 3.25}, + {"matrix": [3, 6], "x": 7.25, "y": 3.25}, + {"matrix": [3, 7], "x": 8.25, "y": 3.25}, + {"matrix": [3, 8], "x": 9.25, "y": 3.25}, + {"matrix": [3, 9], "x": 10.25, "y": 3.25}, + {"matrix": [3, 10], "x": 11.25, "y": 3.25}, + {"matrix": [3, 11], "x": 12.25, "y": 3.25}, + {"matrix": [3, 12], "x": 13.25, "y": 3.25}, + {"matrix": [3, 13], "x": 14.25, "y": 3.25}, + {"matrix": [3, 15], "x": 15.25, "y": 3.25, "w": 2.25}, + {"matrix": [3, 17], "x": 18, "y": 3.25}, + {"matrix": [4, 0], "x": 0, "y": 4.25}, + {"matrix": [4, 1], "x": 1, "y": 4.25}, + {"matrix": [4, 2], "x": 2.5, "y": 4.25, "w": 2.25}, + {"matrix": [4, 4], "x": 4.75, "y": 4.25}, + {"matrix": [4, 5], "x": 5.75, "y": 4.25}, + {"matrix": [4, 6], "x": 6.75, "y": 4.25}, + {"matrix": [4, 7], "x": 7.75, "y": 4.25}, + {"matrix": [4, 8], "x": 8.75, "y": 4.25}, + {"matrix": [4, 9], "x": 9.75, "y": 4.25}, + {"matrix": [4, 10], "x": 10.75, "y": 4.25}, + {"matrix": [4, 11], "x": 11.75, "y": 4.25}, + {"matrix": [4, 12], "x": 12.75, "y": 4.25}, + {"matrix": [4, 13], "x": 13.75, "y": 4.25}, + {"matrix": [4, 14], "x": 14.75, "y": 4.25, "w": 1.75}, + {"matrix": [4, 16], "x": 16.75, "y": 4.25}, + {"matrix": [4, 17], "x": 18, "y": 4.25}, + {"matrix": [5, 0], "x": 0, "y": 5.25}, + {"matrix": [5, 1], "x": 1, "y": 5.25}, + {"matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 3], "x": 3.75, "y": 5.25, "w": 1.25}, + {"matrix": [5, 4], "x": 5, "y": 5.25, "w": 1.25}, + {"matrix": [5, 8], "x": 6.25, "y": 5.25, "w": 6.25}, + {"matrix": [5, 12], "x": 12.5, "y": 5.25}, + {"matrix": [5, 13], "x": 13.5, "y": 5.25}, + {"matrix": [5, 14], "x": 14.5, "y": 5.25}, + {"matrix": [5, 15], "x": 15.75, "y": 5.5}, + {"matrix": [5, 16], "x": 16.75, "y": 5.5}, + {"matrix": [5, 17], "x": 17.75, "y": 5.5} + ] + } + } +} \ No newline at end of file From e57c0a90eb566fd4579699da60f6eae4a0bbd55b Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Sun, 11 Jun 2023 17:21:16 +0700 Subject: [PATCH 19/38] Update keyboards/qck75/v1/config.h Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/config.h | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/qck75/v1/config.h b/keyboards/qck75/v1/config.h index c44533e16ce0..5ea3cf9f8177 100644 --- a/keyboards/qck75/v1/config.h +++ b/keyboards/qck75/v1/config.h @@ -9,7 +9,6 @@ #define I2C1_SCL_PAL_MODE 1 #define I2C1_SDA_PAL_MODE 1 -#define OLED_DISPLAY_ADDRESS 0x3C #define OLED_DISPLAY_128X64 #define OLED_COM_PINS 0x12 From 0536267bc83f0a58094910a94eada16740d2f3b2 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Sun, 11 Jun 2023 17:21:47 +0700 Subject: [PATCH 20/38] Update keyboards/qck75/v1/info.json Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/info.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/qck75/v1/info.json b/keyboards/qck75/v1/info.json index f5661f30cca7..a8ae853ab36e 100644 --- a/keyboards/qck75/v1/info.json +++ b/keyboards/qck75/v1/info.json @@ -16,9 +16,9 @@ "encoder": true, "extrakey": true, "mousekey": true, - "nkro": true, + "nkro": true, "oled": true, - "wpm": true + "wpm": true }, "matrix_pins": { "cols": ["A6", "A7", "C4", "C5", "B0", "B1", "B2", "B11", "A9", "A8", "C9", "C8", "C7", "C6", "B15", "B14", "B13", "B12"], From c93c61b11ed8bfc8916a47d52d0d96c50812c9d9 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Sun, 11 Jun 2023 17:22:59 +0700 Subject: [PATCH 21/38] Update keyboards/qck75/v1/rules.mk Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/rules.mk | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/qck75/v1/rules.mk b/keyboards/qck75/v1/rules.mk index e9b7a6df0554..e69de29bb2d1 100644 --- a/keyboards/qck75/v1/rules.mk +++ b/keyboards/qck75/v1/rules.mk @@ -1 +0,0 @@ -OLED_DRIVER = SSD1306 \ No newline at end of file From a7032a038b0a1fd05c0e87da30287c389be22414 Mon Sep 17 00:00:00 2001 From: PoringH Date: Sun, 11 Jun 2023 19:19:53 +0700 Subject: [PATCH 22/38] Moved oled codes to keyboard level & changed some functions --- keyboards/qck75/v1/keymaps/default/keymap.c | 545 +------------------- keyboards/qck75/v1/keymaps/via/keymap.c | 528 +------------------ keyboards/qck75/v1/v1.c | 545 ++++++++++++++++++++ 3 files changed, 549 insertions(+), 1069 deletions(-) create mode 100644 keyboards/qck75/v1/v1.c diff --git a/keyboards/qck75/v1/keymaps/default/keymap.c b/keyboards/qck75/v1/keymaps/default/keymap.c index bc15e778df19..3a122fc0e24f 100644 --- a/keyboards/qck75/v1/keymaps/default/keymap.c +++ b/keyboards/qck75/v1/keymaps/default/keymap.c @@ -3,13 +3,6 @@ #include QMK_KEYBOARD_H -enum { - MAIN = 0, - SECOND = 1, - THIRD = 2, - FOURTH = 3 -}; - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_75_ansi( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_SCRL, KC_DEL, @@ -17,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F15, KC_F16, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, KC_F17, KC_F18, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_F19, KC_F20, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, - KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NUM, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NUM, MO(1), KC_NUM, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_75_ansi( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -46,540 +39,4 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -bool encoder_update_kb(uint8_t index, bool clockwise) { - return encoder_update_user(index, clockwise); -} - -bool encoder_update_user(uint8_t index, bool clockwise) { - switch(get_highest_layer(layer_state)) { - case SECOND: - if(clockwise) { - tap_code(KC_MS_WH_UP); - } else { - tap_code(KC_MS_WH_DOWN); - } - break; - default: - if(clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - } - return true; -} - -#define KB_STAT_SIZE 18 -#define WIN_STAT_SIZE 12 -#define MIN_WALK_SPEED 10 -#define MIN_RUN_SPEED 40 -#define ANIM_FRAME_DURATION 200 -#define ANIM_SIZE 96 - -uint32_t anim_timer = 0; -uint8_t current_frame = 0; -int current_wpm = 0; -led_t led_usb_state; - -bool isguiDisabled = false; -bool isSneaking = false; -bool isJumping = false; -bool showedJump = true; - -#ifdef OLED_ENABLE - -static void render_animation(int ANIM_X, int ANIM_Y) { - //sit animation 32 X 22 - static const char PROGMEM sit[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, - 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, - 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, - 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, - 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, - 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - }, - - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, - 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, - 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, - 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, - 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, - 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - } - - } - }; - - //walk animation 32 X 22 - static const char PROGMEM walk[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, - 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, - 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, - 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, - 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - }, - - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, - 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, - 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, - 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, - 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, - 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - //run animation 32 X 22 - static const char PROGMEM run[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, - 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, - 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, - 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, - 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, - 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - } - }, - - { - { - 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, - 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, - 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, - 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - //bark animation 32 X 22 - static const char PROGMEM bark[2][3][ANIM_SIZE] = { - { - { - 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, - 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, - 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, - 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, - 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - }, - - { - { - 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, - 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, - 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, - 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, - 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - //sneak animation 32 X 22 - static const char PROGMEM sneak[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, - 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, - 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, - 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, - 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, - 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, - 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, - 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, - 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, - }, - }, - - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, - 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, - 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, - 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, - 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, - 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, - 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, - 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - void animate_luna(void) { - - int anim_x; - int anim_y; - - if(isJumping || !showedJump) { - oled_set_cursor(ANIM_X, ANIM_Y + 2); - oled_write(" ", false); - anim_x = ANIM_X; - anim_y = ANIM_Y - 1; - showedJump = true; - } else { - oled_set_cursor(ANIM_X, ANIM_Y - 1); - oled_write(" ", false); - - anim_x = ANIM_X; - anim_y = ANIM_Y; - } - - if(led_usb_state.caps_lock) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(bark[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(bark[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(bark[current_frame][2], ANIM_SIZE); - } else if(isSneaking) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(sneak[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(sneak[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(sneak[current_frame][2], ANIM_SIZE); - } else if(current_wpm <= MIN_WALK_SPEED) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(sit[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(sit[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(sit[current_frame][2], ANIM_SIZE); - } else if(current_wpm <= MIN_RUN_SPEED) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(walk[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(walk[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(walk[current_frame][2], ANIM_SIZE); - } else { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(run[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(run[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(run[current_frame][2], ANIM_SIZE); - } - } - - -# if OLED_TIMEOUT > 0 - - if(last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) { - oled_off(); - return; - } else { - oled_on(); - } -# endif - - if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - current_frame = (current_frame + 1) % 2; - animate_luna(); - } - -}; - - -static void render_caps(int CAP_X, int CAP_Y) { - if(led_usb_state.caps_lock == true) { - static const char PROGMEM caps[KB_STAT_SIZE] = { - 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x3b, 0xdb, 0xeb, - 0xdb, 0x3b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, - }; - static const char PROGMEM caps2[KB_STAT_SIZE] = { - 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x68, 0x6e, 0x6e, - 0x6e, 0x68, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 - }; - oled_set_cursor(CAP_X, CAP_Y); - oled_write_raw_P(caps, KB_STAT_SIZE); - oled_set_cursor(CAP_X, CAP_Y + 1); - oled_write_raw_P(caps2, KB_STAT_SIZE); - } - else { - static const char PROGMEM caps[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0xc4, 0x24, 0x14, - 0x24, 0xc4, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, - }; - static const char PROGMEM caps2[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x17, 0x11, 0x11, - 0x11, 0x17, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 - }; - oled_set_cursor(CAP_X, CAP_Y); - oled_write_raw_P(caps, KB_STAT_SIZE); - oled_set_cursor(CAP_X, CAP_Y + 1); - oled_write_raw_P(caps2, KB_STAT_SIZE); - } -} - -static void render_num(int NUM_X, int NUM_Y) { - if(led_usb_state.num_lock == true) { - static const char PROGMEM num[KB_STAT_SIZE] = { - 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0xfb, 0xdb, 0x0b, - 0xfb, 0xfb, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, - }; - static const char PROGMEM num2[KB_STAT_SIZE] = { - 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x6f, 0x6b, 0x68, - 0x6b, 0x6f, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 - }; - oled_set_cursor(NUM_X, NUM_Y); - oled_write_raw_P(num, KB_STAT_SIZE); - oled_set_cursor(NUM_X, NUM_Y + 1); - oled_write_raw_P(num2, KB_STAT_SIZE); - } - else { - static const char PROGMEM num[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x04, 0x24, 0xf4, - 0x04, 0x04, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, - }; - static const char PROGMEM num2[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x10, 0x14, 0x17, - 0x14, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 - }; - oled_set_cursor(NUM_X, NUM_Y); - oled_write_raw_P(num, KB_STAT_SIZE); - oled_set_cursor(NUM_X, NUM_Y + 1); - oled_write_raw_P(num2, KB_STAT_SIZE); - } -} - -static void render_scroll(int SCROLL_X, int SCROLL_Y) { - if(led_usb_state.scroll_lock == true) { - static const char PROGMEM scroll[KB_STAT_SIZE] = { - 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x7b, 0xfb, 0x0b, - 0xfb, 0x7b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, - }; - static const char PROGMEM scroll2[KB_STAT_SIZE] = { - 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6b, 0x6b, 0x6a, 0x68, - 0x6a, 0x6b, 0x6b, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 - }; - oled_set_cursor(SCROLL_X, SCROLL_Y); - oled_write_raw_P(scroll, KB_STAT_SIZE); - oled_set_cursor(SCROLL_X, SCROLL_Y + 1); - oled_write_raw_P(scroll2, KB_STAT_SIZE); - } - else { - static const char PROGMEM scroll[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x84, 0x04, 0xf4, - 0x04, 0x84, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, - }; - static const char PROGMEM scroll2[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0x0f, 0x10, 0x14, 0x14, 0x15, 0x17, - 0x15, 0x14, 0x14, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 - }; - oled_set_cursor(SCROLL_X, SCROLL_Y); - oled_write_raw_P(scroll, KB_STAT_SIZE); - oled_set_cursor(SCROLL_X, SCROLL_Y + 1); - oled_write_raw_P(scroll2, KB_STAT_SIZE); - } -} - -static void render_winstat(int WIN_X, int WIN_Y) -{ - static const char PROGMEM winlogo[WIN_STAT_SIZE] = { - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, - }; - static const char PROGMEM winlogo2[WIN_STAT_SIZE] = { - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, - }; - - oled_set_cursor(WIN_X, WIN_Y); - oled_write_raw_P(winlogo, WIN_STAT_SIZE); - oled_set_cursor(WIN_X, WIN_Y + 1); - oled_write_raw_P(winlogo2, WIN_STAT_SIZE); - - oled_set_cursor(WIN_X + 2, WIN_Y); - oled_write("WINKEY", false); - - oled_set_cursor(WIN_X + 2, WIN_Y + 1 ); - if(isguiDisabled) - { - oled_write("DISABLED", false); - } - else { - oled_write("ENABLED ", false); - } -} - -bool oled_task_user(void) { - current_wpm = get_current_wpm(); - led_usb_state = host_keyboard_led_state(); - render_animation(13, 3); - oled_set_cursor(0, 0); - // Host Keyboard Layer Status - switch (get_highest_layer(layer_state)) { - case MAIN: - oled_write("MAIN ", false); - break; - case SECOND: - oled_write("SECOND", false); - break; - case THIRD: - oled_write("THIRD ", false); - break; - default: - oled_write("FOURTH", false); - } - render_caps(0, 2); - render_num(3, 2); - render_scroll(6, 2); - render_winstat(1, 5); - - - oled_set_cursor(12, 0); - oled_write("WPM: ", false); - oled_write(get_u8_str(current_wpm, '0'), false); - return false; -} - -#endif - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - case GU_TOGG: - if(record->event.pressed && isguiDisabled) { - isguiDisabled = false; - break; - } - else if(record->event.pressed) { - isguiDisabled = true; - } - break; - case KC_LCTL: - case KC_RCTL: - if(record->event.pressed) { - isSneaking = true; - } else { - isSneaking = false; - } - break; - case KC_SPC: - if(record->event.pressed) { - isJumping = true; - showedJump = false; - } else { - isJumping = false; - } - break; - } - return true; -} - diff --git a/keyboards/qck75/v1/keymaps/via/keymap.c b/keyboards/qck75/v1/keymaps/via/keymap.c index 8904b31ca8b5..4c94a69f4ed6 100644 --- a/keyboards/qck75/v1/keymaps/via/keymap.c +++ b/keyboards/qck75/v1/keymaps/via/keymap.c @@ -3,13 +3,6 @@ #include QMK_KEYBOARD_H -enum { - MAIN = 0, - SECOND = 1, - THIRD = 2, - FOURTH = 3 -}; - const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_75_ansi( KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_DEL, @@ -17,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F15, KC_F16, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, KC_F17, KC_F18, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_F19, KC_F20, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, - KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_NUM, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_75_ansi( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, @@ -50,523 +43,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][1][2] = { [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, [1] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT)}, - [2] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [3] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, -}; - -#endif - -#define KB_STAT_SIZE 18 -#define WIN_STAT_SIZE 12 -#define MIN_WALK_SPEED 10 -#define MIN_RUN_SPEED 40 -#define ANIM_FRAME_DURATION 200 -#define ANIM_SIZE 96 - -uint32_t anim_timer = 0; -uint8_t current_frame = 0; -int current_wpm = 0; -led_t led_usb_state; - -bool isguiDisabled = false; -bool isSneaking = false; -bool isJumping = false; -bool showedJump = true; - -#ifdef OLED_ENABLE - -static void render_animation(int ANIM_X, int ANIM_Y) { - //sit animation 32 X 22 - static const char PROGMEM sit[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, - 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, - 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, - 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, - 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, - 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - }, - - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, - 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, - 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, - 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, - 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, - 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - } - - } - }; - - //walk animation 32 X 22 - static const char PROGMEM walk[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, - 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, - 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, - 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, - 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - }, - - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, - 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, - 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, - 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, - 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, - 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - //run animation 32 X 22 - static const char PROGMEM run[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, - 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, - 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, - 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, - 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, - 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - } - }, - - { - { - 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, - 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, - 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, - 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - //bark animation 32 X 22 - static const char PROGMEM bark[2][3][ANIM_SIZE] = { - { - { - 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, - 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, - 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, - 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, - 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - }, - - { - { - 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, - 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, - 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, - 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, - 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - //sneak animation 32 X 22 - static const char PROGMEM sneak[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, - 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, - 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, - 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, - 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, - 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, - 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, - 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, - 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, - }, - }, - - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, - 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, - 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, - 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, - 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, - 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, - 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, - 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - void animate_luna(void) { - - int anim_x; - int anim_y; - - if(isJumping || !showedJump) { - oled_set_cursor(ANIM_X, ANIM_Y + 2); - oled_write(" ", false); - anim_x = ANIM_X; - anim_y = ANIM_Y - 1; - showedJump = true; - } else { - oled_set_cursor(ANIM_X, ANIM_Y - 1); - oled_write(" ", false); - - anim_x = ANIM_X; - anim_y = ANIM_Y; - } - - if(led_usb_state.caps_lock) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(bark[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(bark[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(bark[current_frame][2], ANIM_SIZE); - } else if(isSneaking) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(sneak[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(sneak[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(sneak[current_frame][2], ANIM_SIZE); - } else if(current_wpm <= MIN_WALK_SPEED) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(sit[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(sit[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(sit[current_frame][2], ANIM_SIZE); - } else if(current_wpm <= MIN_RUN_SPEED) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(walk[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(walk[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(walk[current_frame][2], ANIM_SIZE); - } else { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(run[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(run[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(run[current_frame][2], ANIM_SIZE); - } - } - - -# if OLED_TIMEOUT > 0 - - if(last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) { - oled_off(); - return; - } else { - oled_on(); - } -# endif - - if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - current_frame = (current_frame + 1) % 2; - animate_luna(); - } - + [2] = {ENCODER_CCW_CW(KC_MS_L, KC_MS_R)}, + [3] = {ENCODER_CCW_CW(KC_MS_D, KC_MS_U)}, }; - -static void render_caps(int CAP_X, int CAP_Y) { - if(led_usb_state.caps_lock == true) { - static const char PROGMEM caps[KB_STAT_SIZE] = { - 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x3b, 0xdb, 0xeb, - 0xdb, 0x3b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, - }; - static const char PROGMEM caps2[KB_STAT_SIZE] = { - 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x68, 0x6e, 0x6e, - 0x6e, 0x68, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 - }; - oled_set_cursor(CAP_X, CAP_Y); - oled_write_raw_P(caps, KB_STAT_SIZE); - oled_set_cursor(CAP_X, CAP_Y + 1); - oled_write_raw_P(caps2, KB_STAT_SIZE); - } - else { - static const char PROGMEM caps[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0xc4, 0x24, 0x14, - 0x24, 0xc4, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, - }; - static const char PROGMEM caps2[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x17, 0x11, 0x11, - 0x11, 0x17, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 - }; - oled_set_cursor(CAP_X, CAP_Y); - oled_write_raw_P(caps, KB_STAT_SIZE); - oled_set_cursor(CAP_X, CAP_Y + 1); - oled_write_raw_P(caps2, KB_STAT_SIZE); - } -} - -static void render_num(int NUM_X, int NUM_Y) { - if(led_usb_state.num_lock == true) { - static const char PROGMEM num[KB_STAT_SIZE] = { - 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0xfb, 0xdb, 0x0b, - 0xfb, 0xfb, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, - }; - static const char PROGMEM num2[KB_STAT_SIZE] = { - 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x6f, 0x6b, 0x68, - 0x6b, 0x6f, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 - }; - oled_set_cursor(NUM_X, NUM_Y); - oled_write_raw_P(num, KB_STAT_SIZE); - oled_set_cursor(NUM_X, NUM_Y + 1); - oled_write_raw_P(num2, KB_STAT_SIZE); - } - else { - static const char PROGMEM num[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x04, 0x24, 0xf4, - 0x04, 0x04, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, - }; - static const char PROGMEM num2[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x10, 0x14, 0x17, - 0x14, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 - }; - oled_set_cursor(NUM_X, NUM_Y); - oled_write_raw_P(num, KB_STAT_SIZE); - oled_set_cursor(NUM_X, NUM_Y + 1); - oled_write_raw_P(num2, KB_STAT_SIZE); - } -} - -static void render_scroll(int SCROLL_X, int SCROLL_Y) { - if(led_usb_state.scroll_lock == true) { - static const char PROGMEM scroll[KB_STAT_SIZE] = { - 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x7b, 0xfb, 0x0b, - 0xfb, 0x7b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, - }; - static const char PROGMEM scroll2[KB_STAT_SIZE] = { - 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6b, 0x6b, 0x6a, 0x68, - 0x6a, 0x6b, 0x6b, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 - }; - oled_set_cursor(SCROLL_X, SCROLL_Y); - oled_write_raw_P(scroll, KB_STAT_SIZE); - oled_set_cursor(SCROLL_X, SCROLL_Y + 1); - oled_write_raw_P(scroll2, KB_STAT_SIZE); - } - else { - static const char PROGMEM scroll[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x84, 0x04, 0xf4, - 0x04, 0x84, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, - }; - static const char PROGMEM scroll2[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0x0f, 0x10, 0x14, 0x14, 0x15, 0x17, - 0x15, 0x14, 0x14, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 - }; - oled_set_cursor(SCROLL_X, SCROLL_Y); - oled_write_raw_P(scroll, KB_STAT_SIZE); - oled_set_cursor(SCROLL_X, SCROLL_Y + 1); - oled_write_raw_P(scroll2, KB_STAT_SIZE); - } -} - -static void render_winstat(int WIN_X, int WIN_Y) -{ - static const char PROGMEM winlogo[WIN_STAT_SIZE] = { - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, - }; - static const char PROGMEM winlogo2[WIN_STAT_SIZE] = { - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, - }; - - oled_set_cursor(WIN_X, WIN_Y); - oled_write_raw_P(winlogo, WIN_STAT_SIZE); - oled_set_cursor(WIN_X, WIN_Y + 1); - oled_write_raw_P(winlogo2, WIN_STAT_SIZE); - - oled_set_cursor(WIN_X + 2, WIN_Y); - oled_write("WINKEY", false); - - oled_set_cursor(WIN_X + 2, WIN_Y + 1 ); - if(isguiDisabled) - { - oled_write("DISABLED", false); - } - else { - oled_write("ENABLED ", false); - } -} - -bool oled_task_user(void) { - current_wpm = get_current_wpm(); - led_usb_state = host_keyboard_led_state(); - render_animation(13, 3); - oled_set_cursor(0, 0); - // Host Keyboard Layer Status - switch (get_highest_layer(layer_state)) { - case MAIN: - oled_write("MAIN ", false); - break; - case SECOND: - oled_write("SECOND", false); - break; - case THIRD: - oled_write("THIRD ", false); - break; - default: - oled_write("FOURTH", false); - } - render_caps(0, 2); - render_num(3, 2); - render_scroll(6, 2); - render_winstat(1, 5); - - - oled_set_cursor(12, 0); - oled_write("WPM: ", false); - oled_write(get_u8_str(current_wpm, '0'), false); - return false; -} - #endif - -bool process_record_user(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - case GU_TOGG: - if(record->event.pressed && isguiDisabled) { - isguiDisabled = false; - break; - } - else if(record->event.pressed) { - isguiDisabled = true; - } - break; - case KC_LCTL: - case KC_RCTL: - if(record->event.pressed) { - isSneaking = true; - } else { - isSneaking = false; - } - break; - case KC_SPC: - if(record->event.pressed) { - isJumping = true; - showedJump = false; - } else { - isJumping = false; - } - break; - } - return true; -} - - diff --git a/keyboards/qck75/v1/v1.c b/keyboards/qck75/v1/v1.c new file mode 100644 index 000000000000..9fa5dccabb16 --- /dev/null +++ b/keyboards/qck75/v1/v1.c @@ -0,0 +1,545 @@ +// Copyright 2023 Andrian (@PoringH) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +enum { + MAIN = 0, + SECOND = 1, + THIRD = 2, + FOURTH = 3 +}; + +bool encoder_update_kb(uint8_t index, bool clockwise) { + return encoder_update_user(index, clockwise); +} + +bool encoder_update_user(uint8_t index, bool clockwise) { + switch(get_highest_layer(layer_state)) { + default: + if(clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + case SECOND: + if(clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + break; + case THIRD: + if(clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + case FOURTH: + if(clockwise) { + tap_code(KC_MS_U); + } else { + tap_code(KC_MS_D); + } + break; + } + return true; +} + +#define KB_STAT_SIZE 18 +#define WIN_STAT_SIZE 12 +#define MIN_WALK_SPEED 10 +#define MIN_RUN_SPEED 40 +#define ANIM_FRAME_DURATION 200 +#define ANIM_SIZE 96 + +uint32_t anim_timer = 0; +uint8_t current_frame = 0; +int current_wpm = 0; +led_t led_usb_state; + +bool isguiDisabled = false; +bool isSneaking = false; +bool isJumping = false; +bool showedJump = true; + +#ifdef OLED_ENABLE + +static void render_animation(int ANIM_X, int ANIM_Y) { + //sit animation 32 X 22 + static const char PROGMEM sit[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, + 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, + 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, + 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, + 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, + 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + }, + + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, + 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, + 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, + 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, + 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, + 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, + 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + } + + } + }; + + //walk animation 32 X 22 + static const char PROGMEM walk[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, + 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, + 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, + 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, + 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, + 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + }, + + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, + 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, + 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, + 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, + 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, + 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, + 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + //run animation 32 X 22 + static const char PROGMEM run[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, + 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, + 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, + 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, + 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, + 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, + 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, + 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + } + }, + + { + { + 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, + 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, + 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, + 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + //bark animation 32 X 22 + static const char PROGMEM bark[2][3][ANIM_SIZE] = { + { + { + 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, + 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, + 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, + 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, + 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + }, + + { + { + 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, + 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, + 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, + 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, + 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, + 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + //sneak animation 32 X 22 + static const char PROGMEM sneak[2][3][ANIM_SIZE] = { + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, + 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, + 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, + 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, + 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, + 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, + 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, + 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, + 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, + }, + }, + + { + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, + 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, + 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, + 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, + 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, + 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, + 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, + 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + } + }; + + void animate_luna(void) { + + int anim_x; + int anim_y; + + if(isJumping || !showedJump) { + oled_set_cursor(ANIM_X, ANIM_Y + 2); + oled_write(" ", false); + anim_x = ANIM_X; + anim_y = ANIM_Y - 1; + showedJump = true; + } else { + oled_set_cursor(ANIM_X, ANIM_Y - 1); + oled_write(" ", false); + + anim_x = ANIM_X; + anim_y = ANIM_Y; + } + + if(led_usb_state.caps_lock) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(bark[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(bark[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(bark[current_frame][2], ANIM_SIZE); + } else if(get_mods() & MOD_MASK_CS) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(sneak[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(sneak[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(sneak[current_frame][2], ANIM_SIZE); + } else if(current_wpm <= MIN_WALK_SPEED) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(sit[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(sit[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(sit[current_frame][2], ANIM_SIZE); + } else if(current_wpm <= MIN_RUN_SPEED) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(walk[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(walk[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(walk[current_frame][2], ANIM_SIZE); + } else { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(run[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(run[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(run[current_frame][2], ANIM_SIZE); + } + } + + +# if OLED_TIMEOUT > 0 + + if(last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) { + oled_off(); + return; + } else { + oled_on(); + } +# endif + + if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + current_frame = (current_frame + 1) % 2; + animate_luna(); + } + +}; + +static void render_caps(int CAP_X, int CAP_Y) { + if(led_usb_state.caps_lock == true) { + static const char PROGMEM caps[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x3b, 0xdb, 0xeb, + 0xdb, 0x3b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM caps2[KB_STAT_SIZE] = { + 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x68, 0x6e, 0x6e, + 0x6e, 0x68, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 + }; + oled_set_cursor(CAP_X, CAP_Y); + oled_write_raw_P(caps, KB_STAT_SIZE); + oled_set_cursor(CAP_X, CAP_Y + 1); + oled_write_raw_P(caps2, KB_STAT_SIZE); + } + else { + static const char PROGMEM caps[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0xc4, 0x24, 0x14, + 0x24, 0xc4, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM caps2[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x17, 0x11, 0x11, + 0x11, 0x17, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 + }; + oled_set_cursor(CAP_X, CAP_Y); + oled_write_raw_P(caps, KB_STAT_SIZE); + oled_set_cursor(CAP_X, CAP_Y + 1); + oled_write_raw_P(caps2, KB_STAT_SIZE); + } +} + +static void render_num(int NUM_X, int NUM_Y) { + if(led_usb_state.num_lock == true) { + static const char PROGMEM num[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0xfb, 0xdb, 0x0b, + 0xfb, 0xfb, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM num2[KB_STAT_SIZE] = { + 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x6f, 0x6b, 0x68, + 0x6b, 0x6f, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 + }; + oled_set_cursor(NUM_X, NUM_Y); + oled_write_raw_P(num, KB_STAT_SIZE); + oled_set_cursor(NUM_X, NUM_Y + 1); + oled_write_raw_P(num2, KB_STAT_SIZE); + } + else { + static const char PROGMEM num[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x04, 0x24, 0xf4, + 0x04, 0x04, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM num2[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x10, 0x14, 0x17, + 0x14, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 + }; + oled_set_cursor(NUM_X, NUM_Y); + oled_write_raw_P(num, KB_STAT_SIZE); + oled_set_cursor(NUM_X, NUM_Y + 1); + oled_write_raw_P(num2, KB_STAT_SIZE); + } +} + +static void render_scroll(int SCROLL_X, int SCROLL_Y) { + if(led_usb_state.scroll_lock == true) { + static const char PROGMEM scroll[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x7b, 0xfb, 0x0b, + 0xfb, 0x7b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM scroll2[KB_STAT_SIZE] = { + 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6b, 0x6b, 0x6a, 0x68, + 0x6a, 0x6b, 0x6b, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 + }; + oled_set_cursor(SCROLL_X, SCROLL_Y); + oled_write_raw_P(scroll, KB_STAT_SIZE); + oled_set_cursor(SCROLL_X, SCROLL_Y + 1); + oled_write_raw_P(scroll2, KB_STAT_SIZE); + } + else { + static const char PROGMEM scroll[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x84, 0x04, 0xf4, + 0x04, 0x84, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM scroll2[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0x0f, 0x10, 0x14, 0x14, 0x15, 0x17, + 0x15, 0x14, 0x14, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 + }; + oled_set_cursor(SCROLL_X, SCROLL_Y); + oled_write_raw_P(scroll, KB_STAT_SIZE); + oled_set_cursor(SCROLL_X, SCROLL_Y + 1); + oled_write_raw_P(scroll2, KB_STAT_SIZE); + } +} + +static void render_winstat(int WIN_X, int WIN_Y) +{ + static const char PROGMEM winlogo[WIN_STAT_SIZE] = { + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, + 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + }; + static const char PROGMEM winlogo2[WIN_STAT_SIZE] = { + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, + 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + }; + + oled_set_cursor(WIN_X, WIN_Y); + oled_write_raw_P(winlogo, WIN_STAT_SIZE); + oled_set_cursor(WIN_X, WIN_Y + 1); + oled_write_raw_P(winlogo2, WIN_STAT_SIZE); + + oled_set_cursor(WIN_X + 2, WIN_Y); + oled_write("WINKEY", false); + + oled_set_cursor(WIN_X + 2, WIN_Y + 1 ); + if(keymap_config.no_gui) + { + oled_write("DISABLED", false); + } + else { + oled_write("ENABLED ", false); + } +} + +bool oled_task_user(void) { + current_wpm = get_current_wpm(); + led_usb_state = host_keyboard_led_state(); + render_animation(13, 3); + oled_set_cursor(0, 0); + // Host Keyboard Layer Status + switch (get_highest_layer(layer_state)) { + case MAIN: + oled_write("MAIN ", false); + break; + case SECOND: + oled_write("SECOND", false); + break; + case THIRD: + oled_write("THIRD ", false); + break; + default: + oled_write("FOURTH", false); + } + render_caps(0, 2); + render_num(3, 2); + render_scroll(6, 2); + render_winstat(1, 5); + + + oled_set_cursor(12, 0); + oled_write("WPM: ", false); + oled_write(get_u8_str(current_wpm, '0'), false); + return false; +} + +#endif + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch(keycode) { + case KC_SPC: + if(record->event.pressed) { + isJumping = true; + showedJump = false; + } else { + isJumping = false; + } + break; + } + return true; +} + + From a9f3b53a49fadaa1b8f23a71a80cf78af80b4b9f Mon Sep 17 00:00:00 2001 From: PoringH Date: Sun, 11 Jun 2023 19:34:02 +0700 Subject: [PATCH 23/38] keymap change --- keyboards/qck75/v1/keymaps/default/keymap.c | 2 +- keyboards/qck75/v1/keymaps/via/keymap.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/qck75/v1/keymaps/default/keymap.c b/keyboards/qck75/v1/keymaps/default/keymap.c index 3a122fc0e24f..924dc7cc4e73 100644 --- a/keyboards/qck75/v1/keymaps/default/keymap.c +++ b/keyboards/qck75/v1/keymaps/default/keymap.c @@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F15, KC_F16, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, KC_F17, KC_F18, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_F19, KC_F20, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, - KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NUM, MO(1), KC_NUM, KC_LEFT, KC_DOWN, KC_RGHT + KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NUM, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_75_ansi( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, diff --git a/keyboards/qck75/v1/keymaps/via/keymap.c b/keyboards/qck75/v1/keymaps/via/keymap.c index 4c94a69f4ed6..0e07fe83c2ec 100644 --- a/keyboards/qck75/v1/keymaps/via/keymap.c +++ b/keyboards/qck75/v1/keymaps/via/keymap.c @@ -10,7 +10,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F15, KC_F16, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, KC_F17, KC_F18, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, KC_F19, KC_F20, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, - KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_NUM, KC_LEFT, KC_DOWN, KC_RGHT + KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_75_ansi( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, From 2a5fa18441175e597ce1ef5376dbfa0a5513a143 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Sun, 11 Jun 2023 19:34:27 +0700 Subject: [PATCH 24/38] Update keyboards/qck75/v1/config.h Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/config.h | 1 - 1 file changed, 1 deletion(-) diff --git a/keyboards/qck75/v1/config.h b/keyboards/qck75/v1/config.h index 5ea3cf9f8177..01d875e3d4cf 100644 --- a/keyboards/qck75/v1/config.h +++ b/keyboards/qck75/v1/config.h @@ -10,7 +10,6 @@ #define I2C1_SDA_PAL_MODE 1 #define OLED_DISPLAY_128X64 -#define OLED_COM_PINS 0x12 #define OLED_IC OLED_IC_SH1106 #define OLED_COLUMN_OFFSET 2 From 8a9d4721b27da4b168018aba380ebce20bfbf2f9 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Mon, 12 Jun 2023 12:19:38 +0700 Subject: [PATCH 25/38] Update keyboards/qck75/v1/v1.c Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/v1.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/keyboards/qck75/v1/v1.c b/keyboards/qck75/v1/v1.c index 9fa5dccabb16..b8814e0d6679 100644 --- a/keyboards/qck75/v1/v1.c +++ b/keyboards/qck75/v1/v1.c @@ -10,11 +10,11 @@ enum { FOURTH = 3 }; +#ifdef ENCODER_ENABLE bool encoder_update_kb(uint8_t index, bool clockwise) { - return encoder_update_user(index, clockwise); -} - -bool encoder_update_user(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { + return false; + } switch(get_highest_layer(layer_state)) { default: if(clockwise) { From ca48210825cf09473711a4e4b467fc76822c9795 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Mon, 12 Jun 2023 12:19:51 +0700 Subject: [PATCH 26/38] Update keyboards/qck75/v1/v1.c Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/v1.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/v1.c b/keyboards/qck75/v1/v1.c index b8814e0d6679..b10234fd1b0a 100644 --- a/keyboards/qck75/v1/v1.c +++ b/keyboards/qck75/v1/v1.c @@ -495,7 +495,10 @@ static void render_winstat(int WIN_X, int WIN_Y) } } -bool oled_task_user(void) { +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } current_wpm = get_current_wpm(); led_usb_state = host_keyboard_led_state(); render_animation(13, 3); From ceaa9adf61dc44747ee5d7db59b37acc459d20b1 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Mon, 12 Jun 2023 12:20:02 +0700 Subject: [PATCH 27/38] Update keyboards/qck75/v1/v1.c Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/v1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/v1.c b/keyboards/qck75/v1/v1.c index b10234fd1b0a..645c00d30f94 100644 --- a/keyboards/qck75/v1/v1.c +++ b/keyboards/qck75/v1/v1.c @@ -531,7 +531,7 @@ bool oled_task_kb(void) { #endif -bool process_record_user(uint16_t keycode, keyrecord_t *record) { +bool process_record_kb(uint16_t keycode, keyrecord_t *record) { switch(keycode) { case KC_SPC: if(record->event.pressed) { From 771b9d940079db0f258f555dd39da04eda51fb2e Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Mon, 12 Jun 2023 12:20:10 +0700 Subject: [PATCH 28/38] Update keyboards/qck75/v1/v1.c Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/v1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/v1.c b/keyboards/qck75/v1/v1.c index 645c00d30f94..9977b931258e 100644 --- a/keyboards/qck75/v1/v1.c +++ b/keyboards/qck75/v1/v1.c @@ -542,7 +542,7 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { } break; } - return true; + return process_record_user(keycode, record); } From d8c47091992f27c73945db98cfb698f2abdf16c3 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Mon, 12 Jun 2023 12:20:18 +0700 Subject: [PATCH 29/38] Update keyboards/qck75/v1/v1.c Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/v1.c | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/qck75/v1/v1.c b/keyboards/qck75/v1/v1.c index 9977b931258e..57c37e4ca7ac 100644 --- a/keyboards/qck75/v1/v1.c +++ b/keyboards/qck75/v1/v1.c @@ -47,6 +47,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { return true; } +#ifdef OLED_ENABLE #define KB_STAT_SIZE 18 #define WIN_STAT_SIZE 12 #define MIN_WALK_SPEED 10 From a8d8cf71d9f1885f1982b0f4493d93b3a0cc8031 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Mon, 12 Jun 2023 12:20:26 +0700 Subject: [PATCH 30/38] Update keyboards/qck75/v1/v1.c Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/v1.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/v1.c b/keyboards/qck75/v1/v1.c index 57c37e4ca7ac..90cd68dd94d4 100644 --- a/keyboards/qck75/v1/v1.c +++ b/keyboards/qck75/v1/v1.c @@ -545,5 +545,5 @@ bool process_record_kb(uint16_t keycode, keyrecord_t *record) { } return process_record_user(keycode, record); } - +#endif From 00e3d741931f3f361902269d3a432c9177f6ac43 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Mon, 12 Jun 2023 12:20:32 +0700 Subject: [PATCH 31/38] Update keyboards/qck75/v1/v1.c Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/v1.c | 1 + 1 file changed, 1 insertion(+) diff --git a/keyboards/qck75/v1/v1.c b/keyboards/qck75/v1/v1.c index 90cd68dd94d4..a093a14f4a4b 100644 --- a/keyboards/qck75/v1/v1.c +++ b/keyboards/qck75/v1/v1.c @@ -46,6 +46,7 @@ bool encoder_update_kb(uint8_t index, bool clockwise) { } return true; } +#endif #ifdef OLED_ENABLE #define KB_STAT_SIZE 18 From f1ccc1a1a9272b39c772d8e1dd1e7e90d42b7034 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Mon, 12 Jun 2023 12:46:02 +0700 Subject: [PATCH 32/38] Formatted v1.c ran a qmk format-c to v1.c file --- keyboards/qck75/v1/v1.c | 821 ++++++++++++++++------------------------ 1 file changed, 333 insertions(+), 488 deletions(-) diff --git a/keyboards/qck75/v1/v1.c b/keyboards/qck75/v1/v1.c index a093a14f4a4b..5e512b292c7a 100644 --- a/keyboards/qck75/v1/v1.c +++ b/keyboards/qck75/v1/v1.c @@ -3,508 +3,355 @@ #include QMK_KEYBOARD_H -enum { - MAIN = 0, - SECOND = 1, - THIRD = 2, - FOURTH = 3 -}; +enum { MAIN = 0, SECOND = 1, THIRD = 2, FOURTH = 3 }; #ifdef ENCODER_ENABLE bool encoder_update_kb(uint8_t index, bool clockwise) { if (!encoder_update_user(index, clockwise)) { return false; } - switch(get_highest_layer(layer_state)) { - default: - if(clockwise) { - tap_code(KC_VOLU); - } else { - tap_code(KC_VOLD); - } - case SECOND: - if(clockwise) { - tap_code(KC_MNXT); - } else { - tap_code(KC_MPRV); - } - break; - case THIRD: - if(clockwise) { - tap_code(KC_MS_R); - } else { - tap_code(KC_MS_L); - } - break; - case FOURTH: - if(clockwise) { - tap_code(KC_MS_U); - } else { - tap_code(KC_MS_D); - } - break; - } - return true; + switch (get_highest_layer(layer_state)) { + default: + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + case SECOND: + if (clockwise) { + tap_code(KC_MNXT); + } else { + tap_code(KC_MPRV); + } + break; + case THIRD: + if (clockwise) { + tap_code(KC_MS_R); + } else { + tap_code(KC_MS_L); + } + break; + case FOURTH: + if (clockwise) { + tap_code(KC_MS_U); + } else { + tap_code(KC_MS_D); + } + break; + } + return true; } #endif #ifdef OLED_ENABLE -#define KB_STAT_SIZE 18 -#define WIN_STAT_SIZE 12 -#define MIN_WALK_SPEED 10 -#define MIN_RUN_SPEED 40 -#define ANIM_FRAME_DURATION 200 -#define ANIM_SIZE 96 - -uint32_t anim_timer = 0; -uint8_t current_frame = 0; -int current_wpm = 0; -led_t led_usb_state; +# define KB_STAT_SIZE 18 +# define WIN_STAT_SIZE 12 +# define MIN_WALK_SPEED 10 +# define MIN_RUN_SPEED 40 +# define ANIM_FRAME_DURATION 200 +# define ANIM_SIZE 96 + +uint32_t anim_timer = 0; +uint8_t current_frame = 0; +int current_wpm = 0; +led_t led_usb_state; bool isguiDisabled = false; -bool isSneaking = false; -bool isJumping = false; -bool showedJump = true; +bool isSneaking = false; +bool isJumping = false; +bool showedJump = true; -#ifdef OLED_ENABLE +# ifdef OLED_ENABLE static void render_animation(int ANIM_X, int ANIM_Y) { - //sit animation 32 X 22 - static const char PROGMEM sit[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, - 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, - 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, - 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, - 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, - 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - }, - - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, - 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, - 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, - 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, - 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, - 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, - 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 - } - - } - }; - - //walk animation 32 X 22 - static const char PROGMEM walk[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, - 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, - 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, - 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, - 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, - 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, - 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - }, - - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, - 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, - 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, - 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, - 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, - 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, - 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, - 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - //run animation 32 X 22 - static const char PROGMEM run[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, - 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, - 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, - 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, - 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, - 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, - 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, - 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, - } - }, - - { - { - 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, - 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, - 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, - 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, - 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - //bark animation 32 X 22 - static const char PROGMEM bark[2][3][ANIM_SIZE] = { - { - { - 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, - 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, - 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, - 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, - 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - }, - - { - { - 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, - 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, - 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, - 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, - 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, - 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, - 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - //sneak animation 32 X 22 - static const char PROGMEM sneak[2][3][ANIM_SIZE] = { - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, - 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, - 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, - 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, - 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, - 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, - 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, - 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, - 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, - }, - }, - - { - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, - 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, - 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, - 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, - 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, - 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, - }, - { - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, - 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, - 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, - 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, - } - - } - }; - - void animate_luna(void) { - - int anim_x; - int anim_y; - - if(isJumping || !showedJump) { - oled_set_cursor(ANIM_X, ANIM_Y + 2); - oled_write(" ", false); - anim_x = ANIM_X; - anim_y = ANIM_Y - 1; - showedJump = true; - } else { - oled_set_cursor(ANIM_X, ANIM_Y - 1); - oled_write(" ", false); - - anim_x = ANIM_X; - anim_y = ANIM_Y; - } - - if(led_usb_state.caps_lock) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(bark[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(bark[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(bark[current_frame][2], ANIM_SIZE); - } else if(get_mods() & MOD_MASK_CS) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(sneak[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(sneak[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(sneak[current_frame][2], ANIM_SIZE); - } else if(current_wpm <= MIN_WALK_SPEED) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(sit[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(sit[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(sit[current_frame][2], ANIM_SIZE); - } else if(current_wpm <= MIN_RUN_SPEED) { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(walk[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(walk[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(walk[current_frame][2], ANIM_SIZE); - } else { - oled_set_cursor(anim_x, anim_y); - oled_write_raw_P(run[current_frame][0], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 1); - oled_write_raw_P(run[current_frame][1], ANIM_SIZE); - oled_set_cursor(anim_x, anim_y + 2); - oled_write_raw_P(run[current_frame][2], ANIM_SIZE); - } - } - - -# if OLED_TIMEOUT > 0 - - if(last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) { - oled_off(); - return; - } else { - oled_on(); - } -# endif - - if(timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { - anim_timer = timer_read32(); - current_frame = (current_frame + 1) % 2; - animate_luna(); - } - + // sit animation 32 X 22 + static const char PROGMEM sit[2][3][ANIM_SIZE] = {{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x68, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x06, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + }, + + {{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x1c, 0x02, 0x05, 0x02, 0x24, 0x04, 0x04, 0x02, 0xa9, 0x1e, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + {0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x90, 0x08, 0x18, 0x60, 0x10, 0x08, 0x04, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x0e, 0x82, 0x7c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, + {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x0c, 0x10, 0x10, 0x20, 0x20, 0x20, 0x28, 0x3e, 0x1c, 0x20, 0x20, 0x3e, 0x0f, 0x11, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00} + + }}; + + // walk animation 32 X 22 + static const char PROGMEM walk[2][3][ANIM_SIZE] = {{{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x10, 0x90, 0x90, 0x90, 0xa0, 0xc0, 0x80, 0x80, 0x80, 0x70, 0x08, 0x14, 0x08, 0x90, 0x10, 0x10, 0x08, 0xa4, 0x78, 0x80, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x08, 0xfc, 0x01, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x18, 0xea, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x03, 0x06, 0x18, 0x20, 0x20, 0x3c, 0x0c, 0x12, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }}, + + {{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x20, 0x20, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x28, 0x10, 0x20, 0x20, 0x20, 0x10, 0x48, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x20, 0xf8, 0x02, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x30, 0xd5, 0x20, 0x1f, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x02, 0x1c, 0x14, 0x08, 0x10, 0x20, 0x2c, 0x32, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + }}; + + // run animation 32 X 22 + static const char PROGMEM run[2][3][ANIM_SIZE] = {{{ + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x10, 0x08, 0x08, 0xc8, 0xb0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0xc4, 0xa4, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x58, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x09, 0x04, 0x04, 0x04, 0x04, 0x02, 0x03, 0x02, 0x01, 0x01, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, + }}, + + {{ + 0x00, 0x00, 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x78, 0x28, 0x08, 0x10, 0x20, 0x30, 0x08, 0x10, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0xb0, 0x50, 0x55, 0x20, 0x1f, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x1e, 0x20, 0x20, 0x18, 0x0c, 0x14, 0x1e, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + }}; + + // bark animation 32 X 22 + static const char PROGMEM bark[2][3][ANIM_SIZE] = {{ + { + 0x00, 0xc0, 0x20, 0x10, 0xd0, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x3c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc8, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + }, + + {{ + 0x00, 0xe0, 0x10, 0x10, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x2c, 0x14, 0x04, 0x08, 0x90, 0x18, 0x04, 0x08, 0xb0, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x03, 0x04, 0x08, 0x10, 0x11, 0xf9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0x48, 0x28, 0x2a, 0x10, 0x0f, 0x20, 0x4a, 0x09, 0x10, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x0c, 0x10, 0x20, 0x28, 0x37, 0x02, 0x02, 0x04, 0x08, 0x10, 0x26, 0x2b, 0x32, 0x04, 0x05, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + }}; + + // sneak animation 32 X 22 + static const char PROGMEM sneak[2][3][ANIM_SIZE] = {{ + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x40, 0x40, 0x80, 0x00, 0x80, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x1e, 0x21, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x04, 0x04, 0x04, 0x03, 0x01, 0x00, 0x00, 0x09, 0x01, 0x80, 0x80, 0xab, 0x04, 0xf8, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x1c, 0x20, 0x20, 0x3c, 0x0f, 0x11, 0x1f, 0x02, 0x06, 0x18, 0x20, 0x20, 0x38, 0x08, 0x10, 0x18, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, + }, + }, + + {{ + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x40, 0x40, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xa0, 0x20, 0x40, 0x80, 0xc0, 0x20, 0x40, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x41, 0xf0, 0x04, 0x02, 0x02, 0x02, 0x03, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x40, 0x40, 0x55, 0x82, 0x7c, 0x00, 0x00, 0x00, + }, + { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x20, 0x30, 0x0c, 0x02, 0x05, 0x09, 0x12, 0x1e, 0x04, 0x18, 0x10, 0x08, 0x10, 0x20, 0x28, 0x34, 0x06, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + } + + }}; + + void animate_luna(void) { + int anim_x; + int anim_y; + + if (isJumping || !showedJump) { + oled_set_cursor(ANIM_X, ANIM_Y + 2); + oled_write(" ", false); + anim_x = ANIM_X; + anim_y = ANIM_Y - 1; + showedJump = true; + } else { + oled_set_cursor(ANIM_X, ANIM_Y - 1); + oled_write(" ", false); + + anim_x = ANIM_X; + anim_y = ANIM_Y; + } + + if (led_usb_state.caps_lock) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(bark[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(bark[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(bark[current_frame][2], ANIM_SIZE); + } else if (get_mods() & MOD_MASK_CS) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(sneak[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(sneak[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(sneak[current_frame][2], ANIM_SIZE); + } else if (current_wpm <= MIN_WALK_SPEED) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(sit[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(sit[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(sit[current_frame][2], ANIM_SIZE); + } else if (current_wpm <= MIN_RUN_SPEED) { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(walk[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(walk[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(walk[current_frame][2], ANIM_SIZE); + } else { + oled_set_cursor(anim_x, anim_y); + oled_write_raw_P(run[current_frame][0], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 1); + oled_write_raw_P(run[current_frame][1], ANIM_SIZE); + oled_set_cursor(anim_x, anim_y + 2); + oled_write_raw_P(run[current_frame][2], ANIM_SIZE); + } + } + +# if OLED_TIMEOUT > 0 + + if (last_input_activity_elapsed() > OLED_TIMEOUT && last_led_activity_elapsed() > OLED_TIMEOUT) { + oled_off(); + return; + } else { + oled_on(); + } +# endif + + if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) { + anim_timer = timer_read32(); + current_frame = (current_frame + 1) % 2; + animate_luna(); + } }; static void render_caps(int CAP_X, int CAP_Y) { - if(led_usb_state.caps_lock == true) { - static const char PROGMEM caps[KB_STAT_SIZE] = { - 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x3b, 0xdb, 0xeb, - 0xdb, 0x3b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, - }; - static const char PROGMEM caps2[KB_STAT_SIZE] = { - 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x68, 0x6e, 0x6e, - 0x6e, 0x68, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 - }; - oled_set_cursor(CAP_X, CAP_Y); - oled_write_raw_P(caps, KB_STAT_SIZE); - oled_set_cursor(CAP_X, CAP_Y + 1); - oled_write_raw_P(caps2, KB_STAT_SIZE); - } - else { - static const char PROGMEM caps[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0xc4, 0x24, 0x14, - 0x24, 0xc4, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, - }; - static const char PROGMEM caps2[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x17, 0x11, 0x11, - 0x11, 0x17, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 - }; - oled_set_cursor(CAP_X, CAP_Y); - oled_write_raw_P(caps, KB_STAT_SIZE); - oled_set_cursor(CAP_X, CAP_Y + 1); - oled_write_raw_P(caps2, KB_STAT_SIZE); - } + if (led_usb_state.caps_lock == true) { + static const char PROGMEM caps[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x3b, 0xdb, 0xeb, 0xdb, 0x3b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM caps2[KB_STAT_SIZE] = {0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x68, 0x6e, 0x6e, 0x6e, 0x68, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00}; + oled_set_cursor(CAP_X, CAP_Y); + oled_write_raw_P(caps, KB_STAT_SIZE); + oled_set_cursor(CAP_X, CAP_Y + 1); + oled_write_raw_P(caps2, KB_STAT_SIZE); + } else { + static const char PROGMEM caps[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0xc4, 0x24, 0x14, 0x24, 0xc4, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM caps2[KB_STAT_SIZE] = {0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x17, 0x11, 0x11, 0x11, 0x17, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00}; + oled_set_cursor(CAP_X, CAP_Y); + oled_write_raw_P(caps, KB_STAT_SIZE); + oled_set_cursor(CAP_X, CAP_Y + 1); + oled_write_raw_P(caps2, KB_STAT_SIZE); + } } static void render_num(int NUM_X, int NUM_Y) { - if(led_usb_state.num_lock == true) { - static const char PROGMEM num[KB_STAT_SIZE] = { - 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0xfb, 0xdb, 0x0b, - 0xfb, 0xfb, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, - }; - static const char PROGMEM num2[KB_STAT_SIZE] = { - 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x6f, 0x6b, 0x68, - 0x6b, 0x6f, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 - }; - oled_set_cursor(NUM_X, NUM_Y); - oled_write_raw_P(num, KB_STAT_SIZE); - oled_set_cursor(NUM_X, NUM_Y + 1); - oled_write_raw_P(num2, KB_STAT_SIZE); - } - else { - static const char PROGMEM num[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x04, 0x24, 0xf4, - 0x04, 0x04, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, - }; - static const char PROGMEM num2[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x10, 0x14, 0x17, - 0x14, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 - }; - oled_set_cursor(NUM_X, NUM_Y); - oled_write_raw_P(num, KB_STAT_SIZE); - oled_set_cursor(NUM_X, NUM_Y + 1); - oled_write_raw_P(num2, KB_STAT_SIZE); - } + if (led_usb_state.num_lock == true) { + static const char PROGMEM num[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0xfb, 0xdb, 0x0b, 0xfb, 0xfb, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM num2[KB_STAT_SIZE] = {0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6f, 0x6f, 0x6b, 0x68, 0x6b, 0x6f, 0x6f, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00}; + oled_set_cursor(NUM_X, NUM_Y); + oled_write_raw_P(num, KB_STAT_SIZE); + oled_set_cursor(NUM_X, NUM_Y + 1); + oled_write_raw_P(num2, KB_STAT_SIZE); + } else { + static const char PROGMEM num[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x04, 0x24, 0xf4, 0x04, 0x04, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM num2[KB_STAT_SIZE] = {0x00, 0x00, 0x00, 0x0f, 0x10, 0x10, 0x10, 0x14, 0x17, 0x14, 0x10, 0x10, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00}; + oled_set_cursor(NUM_X, NUM_Y); + oled_write_raw_P(num, KB_STAT_SIZE); + oled_set_cursor(NUM_X, NUM_Y + 1); + oled_write_raw_P(num2, KB_STAT_SIZE); + } } static void render_scroll(int SCROLL_X, int SCROLL_Y) { - if(led_usb_state.scroll_lock == true) { - static const char PROGMEM scroll[KB_STAT_SIZE] = { - 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x7b, 0xfb, 0x0b, - 0xfb, 0x7b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, - }; - static const char PROGMEM scroll2[KB_STAT_SIZE] = { - 0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6b, 0x6b, 0x6a, 0x68, - 0x6a, 0x6b, 0x6b, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00 - }; - oled_set_cursor(SCROLL_X, SCROLL_Y); - oled_write_raw_P(scroll, KB_STAT_SIZE); - oled_set_cursor(SCROLL_X, SCROLL_Y + 1); - oled_write_raw_P(scroll2, KB_STAT_SIZE); - } - else { - static const char PROGMEM scroll[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x84, 0x04, 0xf4, - 0x04, 0x84, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, - }; - static const char PROGMEM scroll2[KB_STAT_SIZE] = { - 0x00, 0x00, 0x00, 0x0f, 0x10, 0x14, 0x14, 0x15, 0x17, - 0x15, 0x14, 0x14, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00 - }; - oled_set_cursor(SCROLL_X, SCROLL_Y); - oled_write_raw_P(scroll, KB_STAT_SIZE); - oled_set_cursor(SCROLL_X, SCROLL_Y + 1); - oled_write_raw_P(scroll2, KB_STAT_SIZE); - } + if (led_usb_state.scroll_lock == true) { + static const char PROGMEM scroll[KB_STAT_SIZE] = { + 0x00, 0xfe, 0xff, 0x07, 0xfb, 0xfb, 0x7b, 0xfb, 0x0b, 0xfb, 0x7b, 0xfb, 0xfb, 0x07, 0xff, 0xfe, 0x00, 0x00, + }; + static const char PROGMEM scroll2[KB_STAT_SIZE] = {0x00, 0x3f, 0x7f, 0x70, 0x6f, 0x6b, 0x6b, 0x6a, 0x68, 0x6a, 0x6b, 0x6b, 0x6f, 0x70, 0x7f, 0x3f, 0x00, 0x00}; + oled_set_cursor(SCROLL_X, SCROLL_Y); + oled_write_raw_P(scroll, KB_STAT_SIZE); + oled_set_cursor(SCROLL_X, SCROLL_Y + 1); + oled_write_raw_P(scroll2, KB_STAT_SIZE); + } else { + static const char PROGMEM scroll[KB_STAT_SIZE] = { + 0x00, 0x00, 0x00, 0xf8, 0x04, 0x04, 0x84, 0x04, 0xf4, 0x04, 0x84, 0x04, 0x04, 0xf8, 0x00, 0x00, 0x00, 0x00, + }; + static const char PROGMEM scroll2[KB_STAT_SIZE] = {0x00, 0x00, 0x00, 0x0f, 0x10, 0x14, 0x14, 0x15, 0x17, 0x15, 0x14, 0x14, 0x10, 0x0f, 0x00, 0x00, 0x00, 0x00}; + oled_set_cursor(SCROLL_X, SCROLL_Y); + oled_write_raw_P(scroll, KB_STAT_SIZE); + oled_set_cursor(SCROLL_X, SCROLL_Y + 1); + oled_write_raw_P(scroll2, KB_STAT_SIZE); + } } -static void render_winstat(int WIN_X, int WIN_Y) -{ - static const char PROGMEM winlogo[WIN_STAT_SIZE] = { - 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, - 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, - }; - static const char PROGMEM winlogo2[WIN_STAT_SIZE] = { - 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, - 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, - }; - - oled_set_cursor(WIN_X, WIN_Y); - oled_write_raw_P(winlogo, WIN_STAT_SIZE); - oled_set_cursor(WIN_X, WIN_Y + 1); - oled_write_raw_P(winlogo2, WIN_STAT_SIZE); - - oled_set_cursor(WIN_X + 2, WIN_Y); - oled_write("WINKEY", false); - - oled_set_cursor(WIN_X + 2, WIN_Y + 1 ); - if(keymap_config.no_gui) - { - oled_write("DISABLED", false); - } - else { - oled_write("ENABLED ", false); - } +static void render_winstat(int WIN_X, int WIN_Y) { + static const char PROGMEM winlogo[WIN_STAT_SIZE] = { + 0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, + }; + static const char PROGMEM winlogo2[WIN_STAT_SIZE] = { + 0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, + }; + + oled_set_cursor(WIN_X, WIN_Y); + oled_write_raw_P(winlogo, WIN_STAT_SIZE); + oled_set_cursor(WIN_X, WIN_Y + 1); + oled_write_raw_P(winlogo2, WIN_STAT_SIZE); + + oled_set_cursor(WIN_X + 2, WIN_Y); + oled_write("WINKEY", false); + + oled_set_cursor(WIN_X + 2, WIN_Y + 1); + if (keymap_config.no_gui) { + oled_write("DISABLED", false); + } else { + oled_write("ENABLED ", false); + } } bool oled_task_kb(void) { if (!oled_task_user()) { return false; } - current_wpm = get_current_wpm(); - led_usb_state = host_keyboard_led_state(); - render_animation(13, 3); - oled_set_cursor(0, 0); + current_wpm = get_current_wpm(); + led_usb_state = host_keyboard_led_state(); + render_animation(13, 3); + oled_set_cursor(0, 0); // Host Keyboard Layer Status switch (get_highest_layer(layer_state)) { case MAIN: @@ -519,32 +366,30 @@ bool oled_task_kb(void) { default: oled_write("FOURTH", false); } - render_caps(0, 2); - render_num(3, 2); + render_caps(0, 2); + render_num(3, 2); render_scroll(6, 2); - render_winstat(1, 5); - - + render_winstat(1, 5); + oled_set_cursor(12, 0); oled_write("WPM: ", false); oled_write(get_u8_str(current_wpm, '0'), false); return false; } -#endif +# endif bool process_record_kb(uint16_t keycode, keyrecord_t *record) { - switch(keycode) { - case KC_SPC: - if(record->event.pressed) { - isJumping = true; - showedJump = false; - } else { - isJumping = false; - } - break; - } - return process_record_user(keycode, record); + switch (keycode) { + case KC_SPC: + if (record->event.pressed) { + isJumping = true; + showedJump = false; + } else { + isJumping = false; + } + break; + } + return process_record_user(keycode, record); } #endif - From d04bdb19b4ef1ba9ebc2b178f7090d827c948a8a Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Tue, 13 Jun 2023 07:16:05 +0700 Subject: [PATCH 33/38] Update keyboards/qck75/v1/keymaps/via/keymap.c Co-authored-by: Ryan --- keyboards/qck75/v1/keymaps/via/keymap.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/keymaps/via/keymap.c b/keyboards/qck75/v1/keymaps/via/keymap.c index 0e07fe83c2ec..42804767e84e 100644 --- a/keyboards/qck75/v1/keymaps/via/keymap.c +++ b/keyboards/qck75/v1/keymaps/via/keymap.c @@ -40,7 +40,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) -const uint16_t PROGMEM encoder_map[][1][2] = { +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, [1] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT)}, [2] = {ENCODER_CCW_CW(KC_MS_L, KC_MS_R)}, From 74648e8b393c7b7807a322096640ec6f258748b9 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 18 Aug 2023 15:00:06 +0700 Subject: [PATCH 34/38] Update keyboards/qck75/v1/readme.md Co-authored-by: Duncan Sutherland --- keyboards/qck75/v1/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/keyboards/qck75/v1/readme.md b/keyboards/qck75/v1/readme.md index af01204e7e7d..b51dca8e4061 100644 --- a/keyboards/qck75/v1/readme.md +++ b/keyboards/qck75/v1/readme.md @@ -1,6 +1,6 @@ # qck75 -[qck75](https://i.imgur.com/exdD8Hgl.jpeg) +[qck75](https://i.imgur.com/exdD8Hgh.jpeg) This keyboard is a keyboard made for self use 75% layout with extra keys for macro with led and knob From a5e45a9cd3c54ef64d96af5c32170185aaf2869c Mon Sep 17 00:00:00 2001 From: PoringH Date: Thu, 31 Aug 2023 22:20:44 +0700 Subject: [PATCH 35/38] Keymap Optimize --- keyboards/qck75/v1/keymaps/default/keymap.c | 34 +++++------------- keyboards/qck75/v1/keymaps/via/keymap.c | 38 ++++++--------------- 2 files changed, 19 insertions(+), 53 deletions(-) diff --git a/keyboards/qck75/v1/keymaps/default/keymap.c b/keyboards/qck75/v1/keymaps/default/keymap.c index 924dc7cc4e73..69bcf61342d1 100644 --- a/keyboards/qck75/v1/keymaps/default/keymap.c +++ b/keyboards/qck75/v1/keymaps/default/keymap.c @@ -5,36 +5,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_75_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_SCRL, KC_DEL, - KC_F14, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_F15, KC_F16, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, - KC_F17, KC_F18, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, - KC_F19, KC_F20, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, - KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NUM, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_SCRL, KC_DEL, + KC_MPLY, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_MPRV, KC_MNXT, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_F17, KC_F18, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_F19, KC_F20, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NUM, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_75_ansi( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, GU_TOGG, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [2] = LAYOUT_75_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS - ), - [3] = LAYOUT_75_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - QK_BOOT, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + QK_BOOT, NK_TOGG, KC_TRNS, GU_TOGG, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; diff --git a/keyboards/qck75/v1/keymaps/via/keymap.c b/keyboards/qck75/v1/keymaps/via/keymap.c index 42804767e84e..8b3cc74d1c59 100644 --- a/keyboards/qck75/v1/keymaps/via/keymap.c +++ b/keyboards/qck75/v1/keymaps/via/keymap.c @@ -5,36 +5,20 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [0] = LAYOUT_75_ansi( - KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_F13, KC_DEL, - KC_F14, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, - KC_F15, KC_F16, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, - KC_F17, KC_F18, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, - KC_F19, KC_F20, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, - KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F13, KC_SCRL, KC_DEL, + KC_MPLY, KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME, + KC_MPRV, KC_MNXT, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_END, + KC_F17, KC_F18, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGUP, + KC_F19, KC_F20, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN, + KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_75_ansi( KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, GU_TOGG, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS - ), - [2] = LAYOUT_75_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, MO(3), KC_TRNS, KC_TRNS, KC_TRNS - ), - [3] = LAYOUT_75_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - QK_BOOT, NK_TOGG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + QK_BOOT, NK_TOGG, KC_TRNS, GU_TOGG, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; @@ -42,9 +26,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [1] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT)}, - [2] = {ENCODER_CCW_CW(KC_MS_L, KC_MS_R)}, - [3] = {ENCODER_CCW_CW(KC_MS_D, KC_MS_U)}, + [1] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT)} }; #endif From ae708813c317ed7b49c962abe843e04fbdf4ca1b Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 15 Sep 2023 18:10:59 +0700 Subject: [PATCH 36/38] Update keyboards/qck75/v1/keymaps/default/keymap.c Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/keymaps/default/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/qck75/v1/keymaps/default/keymap.c b/keyboards/qck75/v1/keymaps/default/keymap.c index 69bcf61342d1..a9cc10f8a4a2 100644 --- a/keyboards/qck75/v1/keymaps/default/keymap.c +++ b/keyboards/qck75/v1/keymaps/default/keymap.c @@ -13,12 +13,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_NUM, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_75_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - QK_BOOT, NK_TOGG, KC_TRNS, GU_TOGG, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + QK_BOOT, NK_TOGG, KC_TRNS, GU_TOGG, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; From b9df7bc4e46414b33852be4a0575c482a73949ac Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 15 Sep 2023 18:11:12 +0700 Subject: [PATCH 37/38] Update keyboards/qck75/v1/keymaps/via/keymap.c Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/keymaps/via/keymap.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/keyboards/qck75/v1/keymaps/via/keymap.c b/keyboards/qck75/v1/keymaps/via/keymap.c index 8b3cc74d1c59..b9413004cd76 100644 --- a/keyboards/qck75/v1/keymaps/via/keymap.c +++ b/keyboards/qck75/v1/keymaps/via/keymap.c @@ -13,12 +13,12 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_F21, KC_F22, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT ), [1] = LAYOUT_75_ansi( - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, - QK_BOOT, NK_TOGG, KC_TRNS, GU_TOGG, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + QK_BOOT, NK_TOGG, KC_TRNS, GU_TOGG, KC_TRNS, KC_TRNS, MO(2), KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ) }; From dfffeee0e62784529b93942ae40dff74b0e45281 Mon Sep 17 00:00:00 2001 From: Poring <97579443+PoringH@users.noreply.github.com> Date: Fri, 15 Sep 2023 18:11:29 +0700 Subject: [PATCH 38/38] Update keyboards/qck75/v1/keymaps/via/keymap.c Co-authored-by: Drashna Jaelre --- keyboards/qck75/v1/keymaps/via/keymap.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/keyboards/qck75/v1/keymaps/via/keymap.c b/keyboards/qck75/v1/keymaps/via/keymap.c index b9413004cd76..8281855ded7c 100644 --- a/keyboards/qck75/v1/keymaps/via/keymap.c +++ b/keyboards/qck75/v1/keymaps/via/keymap.c @@ -25,8 +25,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { #if defined(ENCODER_MAP_ENABLE) const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { - [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, - [1] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT)} + [0] = {ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [1] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT)} }; #endif