From 5f567b7a1ae1dbc27db6d1a68bf99ab1edd91727 Mon Sep 17 00:00:00 2001 From: benjamyn Date: Mon, 2 May 2022 00:19:54 +1000 Subject: [PATCH] Update yampad kb2040 files --- config.h | 7 ++- keymaps/default/keymap.c | 17 +++--- keymaps/via/config.h | 4 ++ keymaps/via/keymap.c | 111 +++++++++++++++++++++------------------ keymaps/via/rules.mk | 2 + readme.md | 7 ++- rules.mk | 3 +- yampad.json | 67 +++++++++++++++++++++++ 8 files changed, 152 insertions(+), 66 deletions(-) create mode 100644 keymaps/via/config.h create mode 100644 yampad.json diff --git a/config.h b/config.h index 9347ef7..d276a68 100644 --- a/config.h +++ b/config.h @@ -31,7 +31,7 @@ along with this program. If not, see . #define MATRIX_COLS 4 /* define nop_fudge */ -#define NOP_FUDGE 0.1 +#define NOP_FUDGE 0.4 /* * Keyboard Matrix Assignments @@ -52,6 +52,7 @@ along with this program. If not, see . /* ENCOOOOOOOOOOOOODER */ #define ENCODERS_PAD_A { GP27 } #define ENCODERS_PAD_B { GP28 } +#define ENCODER_RESOLUTION 4 /* Gimme dat double reset boi */ #define RP2040_BOOTLOADER_DOUBLE_TAP_RESET @@ -63,6 +64,7 @@ along with this program. If not, see . #define RGB_DI_PIN GP29 #define RGBLED_NUM 9 #define RGBLIGHT_ANIMATIONS +#define RGBLIGHT_DEFAULT_HUE 230 /* Debounce reduces chatter (unintended double-presses) - set 0 if debouncing is not needed */ #define DEBOUNCE 2 @@ -72,7 +74,8 @@ along with this program. If not, see . #define I2C1_SCL_PIN GP3 #define I2C_DRIVER I2CD2 - +/* Test EEPROM */ +//#define TRANSIENT_EEPROM_SIZE 1024 /* define if matrix has ghost (lacks anti-ghosting diodes) */ //#define MATRIX_HAS_GHOST diff --git a/keymaps/default/keymap.c b/keymaps/default/keymap.c index 12eccf4..6b93827 100644 --- a/keymaps/default/keymap.c +++ b/keymaps/default/keymap.c @@ -118,11 +118,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { * `-------------------' */ [_BL] = LAYOUT( - TG(_NV), KC_PSLS, KC_PAST, LT(_FN, KC_PMNS), + LT(_NV, KC_NUM), KC_PSLS, KC_PAST, LT(_FN, KC_PMNS), KC_P7, KC_P8, KC_P9, - KC_KB_VOLUME_DOWN, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_AUDIO_MUTE, KC_P4, KC_P5, KC_P6, KC_PPLS, KC_P1, KC_P2, KC_P3, - KC_P0, KC_DBL0, KC_PDOT, KC_PENT + KC_NO, KC_P0, KC_PDOT, KC_PENT ), /* Keymap _NV: Navigation layer @@ -143,7 +143,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_DEL, KC_END, KC_PGDN, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, - KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX + KC_LEFT, KC_DOWN, KC_RGHT, QK_BOOTLOADER ), /* Keymap _FN: RGB Function Layer @@ -162,7 +162,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_FN] = LAYOUT( RGB_MOD, RGB_M_P, RGB_TOG, _______, RGB_HUD, RGB_HUI, XXXXXXX, - XXXXXXX, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, + RGB_TOG, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, RGB_VAD, RGB_VAI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX ), @@ -170,9 +170,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { void keyboard_post_init_user(void) { // Customise these values to desired behaviour - rgblight_mode(23); - debug_enable=true; - debug_matrix=true; + // rgblight_mode(23); + // debug_enable=true; + // debug_matrix=true; //debug_keyboard=true; //debug_mouse=true; } @@ -191,7 +191,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }; - bool encoder_update_user(uint8_t index, bool clockwise) { switch (get_highest_layer(layer_state)) { case _FN: diff --git a/keymaps/via/config.h b/keymaps/via/config.h new file mode 100644 index 0000000..de48a55 --- /dev/null +++ b/keymaps/via/config.h @@ -0,0 +1,4 @@ +#pragma once + + +#define TRANSIENT_EEPROM_SIZE 512 diff --git a/keymaps/via/keymap.c b/keymaps/via/keymap.c index 54b99bc..fb3a8cb 100644 --- a/keymaps/via/keymap.c +++ b/keymaps/via/keymap.c @@ -1,6 +1,7 @@ /* MIT License Copyright (c) 2019 Mattia Dal Ben +Copyright (c) 2021 Josh Johnson Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal @@ -22,7 +23,6 @@ SOFTWARE. */ #include QMK_KEYBOARD_H -#include // Each layer gets a name for readability, which is then used in the keymap matrix below. // The underscores don't mean anything - you can have a layer called STUFF or any other name. @@ -40,66 +40,66 @@ enum custom_keycodes { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { /* Keymap _BL: (Base Layer) Default Layer - * ,-------------------. - * | NV | / | * |-/FN| - * |----|----|----|----| - * | 7 | 8 | 9 | | - * |----|----|----| + | - * | 4 | 5 | 6 | | - * |----|----|----|----| - * | 1 | 2 | 3 | | - * |----|----|----| En | - * | 0 | 00 | . | | - * `-------------------' + * ,-------------------. + * | NV | / | * |-/FN| + * |----|----|----|----| + * | 7 | 8 | 9 | | + *,----|----|----|----| + | + *| PP | 4 | 5 | 6 | | + *'----|----|----|----|----| + * | 1 | 2 | 3 | | + * |----|----|----| En | + * | 0 | 00 | . | | + * `-------------------' */ [_BL] = LAYOUT( - TG(_NV), KC_PSLS, KC_PAST, LT(_FN, KC_PMNS), - KC_P7, KC_P8, KC_P9, - KC_P4, KC_P5, KC_P6, KC_PPLS, - KC_P1, KC_P2, KC_P3, - KC_P0, KC_DBL0, KC_PDOT, KC_PENT + TG(_NV), KC_PSLS, KC_PAST, LT(_FN, KC_PMNS), + KC_P7, KC_P8, KC_P9, + KC_MPLY, KC_P4, KC_P5, KC_P6, KC_PPLS, + KC_P1, KC_P2, KC_P3, + KC_P0, KC_DBL0, KC_PDOT, KC_PENT ), /* Keymap _NV: Navigation layer - * ,-------------------. - * |INS |HOME|PGUP| | - * |----|----|----|----| - * |DEL |END |PGDN| | - * |----|----|----| | - * | | | | | - * |----|----|----|----| - * | | UP | | | - * |----|----|----| | - * |LEFT|DOWN|RIGH| | - * `-------------------' + * ,-------------------. + * |INS |HOME|PGUP| | + * |----|----|----|----| + * |DEL |END |PGDN| | + * ,----|----|----|----| | + * | | | | | | + * '----|----|----|----|----| + * | | UP | | | + * |----|----|----| | + * |LEFT|DOWN|RIGH| | + * `-------------------' */ [_NV] = LAYOUT( - KC_INS, KC_HOME, KC_PGUP, TG(_NV), - KC_DEL, KC_END, KC_PGDN, - XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, - XXXXXXX, KC_UP, XXXXXXX, - KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX + KC_INS, KC_HOME, KC_PGUP, TG(_NV), + KC_DEL, KC_END, KC_PGDN, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, + XXXXXXX, KC_UP, XXXXXXX, + KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX ), /* Keymap _FN: RGB Function Layer - * ,-------------------. - * |RMOD|RGBP|RTOG| FN | - * |----|----|----|----| - * |HUD |HUI | | | - * |----|----|----| | - * |SAD |SAI | | | - * |----|----|----|----| - * |VAD |VAS | | | - * |----|----|----| | - * |RST | | | | - * `-------------------' + * ,-------------------. + * |RMOD|RGBP|RTOG| FN | + * |----|----|----|----| + * |HUD |HUI | | | + * ,---- |----|----|----| | + * | |SAD |SAI | | | + * '---- |----|----|----|----| + * |VAD |VAS | | | + * |----|----|----| | + * |RST | | | | + * `-------------------' */ [_FN] = LAYOUT( - RGB_MOD, RGB_M_P, RGB_TOG, _______, - RGB_HUD, RGB_HUI, XXXXXXX, - RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, - RGB_VAD, RGB_VAI, XXXXXXX, - KC_LEFT, XXXXXXX, XXXXXXX, XXXXXXX + RGB_MOD, RGB_M_P, RGB_TOG, _______, + RGB_HUD, RGB_HUI, XXXXXXX, + XXXXXXX, RGB_SAD, RGB_SAI, XXXXXXX, XXXXXXX, + RGB_VAD, RGB_VAI, XXXXXXX, + KC_NO, XXXXXXX, XXXXXXX, XXXXXXX ), }; @@ -117,6 +117,17 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { return true; }; +bool encoder_update_user(uint8_t index, bool clockwise) { + if (clockwise) + { + tap_code(KC_VOLU); + } else + { + tap_code(KC_VOLD); + } + return true; +} + #ifdef OLED_ENABLE oled_rotation_t oled_init_user(oled_rotation_t rotation) { @@ -161,6 +172,6 @@ bool oled_task_user(void) { (uint8_t)(rgblight_get_val() / RGBLIGHT_VAL_STEP)); oled_write(led_buf, false); - return false; + return false; } #endif diff --git a/keymaps/via/rules.mk b/keymaps/via/rules.mk index 9bf0baa..80ff8c3 100644 --- a/keymaps/via/rules.mk +++ b/keymaps/via/rules.mk @@ -2,3 +2,5 @@ EXTRAKEY_ENABLE = no LTO_ENABLE = yes MOUSEKEY_ENABLE = no VIA_ENABLE = yes + +EEPROM_DRIVER = transient diff --git a/readme.md b/readme.md index 50e2dd1..e6cc03d 100644 --- a/readme.md +++ b/readme.md @@ -3,15 +3,14 @@ ![yampad](https://github.com/mattdibi/yampad/blob/master/img/yampad.jpg) The Yampad project is an open-source, QMK (Quantum Mechanical Keyboard Firmware) powered, hot-swappable, RGB-backlighted, OLED featured, mechanical numpad. This repository will be used to share information about the project and instruction on how to use and assemble the Yampad. -It has been modified to add an encoder and run using the KB2040 instead of a Pro Micro (Special thanks to KarlK90 for their work on the RP2040 support in QMK https://github.com/qmk/qmk_firmware/pull/14877) -* Keyboard fork Maintainer: [ben&jamyn](https://git.lovelynet.net/benjamyn) -* Hardware Supported: kb2040, (RP2040) +* Keyboard Maintainer: [mattdibi](https://github.com/mattdibi) +* Hardware Supported: Pro Micro, (ATmega32u4) * Hardware Availability: https://github.com/mattdibi/yampad Make example for this keyboard (after setting up your build environment): - make 01_yam:default + make yampad:default Flashing example for this keyboard: diff --git a/rules.mk b/rules.mk index 66e9542..fbe0153 100644 --- a/rules.mk +++ b/rules.mk @@ -22,4 +22,5 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow ALLOW_WARNINGS = yes PICO_INTRINSICS_ENABLED = no # ATM Unsupported by ChibiOS! ENCODER_ENABLE = yes -WS2812_DRIVER = pio \ No newline at end of file +WS2812_DRIVER = pio + diff --git a/yampad.json b/yampad.json new file mode 100644 index 0000000..6d8f79a --- /dev/null +++ b/yampad.json @@ -0,0 +1,67 @@ +{ +"name": "Yampad", +"vendorId": "0xCAFE", +"productId": "0xBEEF", +"lighting": "qmk_rgblight", +"matrix": { "rows": 5, "cols": 4 }, +"layouts": { + "labels": ["2U '0'"], + "keymap": [ + [ + { + "x": 1 + }, + "0,0", + "0,1", + "0,2", + "0,3" + ], + [ + { + "x": 1 + }, + "1,0", + "1,1", + "1,2", + { + "h": 2 + }, + "1,3" + ], + [ + "3,3", + "2,0", + "2,1", + "2,2" + ], + [ + { + "x": 1 + }, + "3,0", + "3,1", + "3,2", + { + "h": 2 + }, + "4,3" + ], + [ + { + "x": 1 + }, + "4,0\n\n\n0,0", + "4,1\n\n\n0,0", + "4,2" + ], + [ + { + "y": 0.25, + "x": 1, + "w": 2 + }, + "4,1\n\n\n0,1" + ] + ] + } +}