mirror of
https://github.com/qmk/qmk_firmware.git
synced 2024-11-22 11:29:26 +00:00
Compare commits
12 Commits
fa7cc56050
...
45a0b7b4c7
Author | SHA1 | Date | |
---|---|---|---|
|
45a0b7b4c7 | ||
|
a52b3aafd2 | ||
|
49f3ffa264 | ||
|
8918adcae4 | ||
|
2cf904b20d | ||
|
4098ff5574 | ||
|
84d5af3157 | ||
|
0ff52925c0 | ||
|
7acc3f4449 | ||
|
c5b91dfe53 | ||
|
6fd4d8c7ee | ||
|
465b6a14e3 |
@ -16,6 +16,6 @@ Flashing example for this keyboard:
|
||||
|
||||
make alf/x2:default:flash
|
||||
|
||||
To reset the board into bootloader mode, hold Space+B while plugging it in.
|
||||
To reset the board into bootloader mode, the key at top left (usually escape) while plugging it in.
|
||||
|
||||
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).
|
||||
|
114
keyboards/bubble75/hotswap/config.h
Normal file
114
keyboards/bubble75/hotswap/config.h
Normal file
@ -0,0 +1,114 @@
|
||||
/* Copyright 2022 Velocifire
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "config_common.h"
|
||||
|
||||
/* key matrix pins */
|
||||
#define MATRIX_ROW_PINS { F4, F5, F6, F7, C7, F1 }
|
||||
#define MATRIX_COL_PINS { B0, B1, B2, B3, E6, F0, D0, D1, D4, D6, D7, B4, B5, B6, C6 }
|
||||
#define DIODE_DIRECTION COL2ROW
|
||||
|
||||
/* Set 0 if debouncing isn't needed */
|
||||
#define DEBOUNCE 5
|
||||
|
||||
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
|
||||
#define LOCKING_SUPPORT_ENABLE
|
||||
|
||||
/* Locking resynchronize hack */
|
||||
#define LOCKING_RESYNC_ENABLE
|
||||
|
||||
#define FORCE_NKRO
|
||||
|
||||
/* WS2812 RGB */
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
#define RGB_DI_PIN B7
|
||||
#define RGBLED_NUM 81
|
||||
#define RGB_MATRIX_LED_COUNT 81
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
||||
#define RGBLIGHT_LAYERS
|
||||
//#define RGBLIGHT_LAYER_BLINK
|
||||
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
|
||||
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
|
||||
#define RGB_MATRIX_LED_PROCESS_LIMIT (RGB_MATRIX_LED_COUNT + 4) / 5
|
||||
#define RGB_MATRIX_LED_FLUSH_LIMIT 16
|
||||
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180
|
||||
//#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||
#define RGB_MATRIX_DEFAULT_HUE 0
|
||||
#define RGB_MATRIX_DEFAULT_SAT 255
|
||||
#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
|
||||
#define RGB_MATRIX_DEFAULT_SPD 127
|
||||
|
||||
|
||||
|
||||
|
||||
// RGB Matrix Animation modes. Explicitly enabled
|
||||
// For full list of effects, see:
|
||||
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
|
||||
// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
|
||||
// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
|
||||
// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
|
||||
#define ENABLE_RGB_MATRIX_BREATHING
|
||||
// #define ENABLE_RGB_MATRIX_BAND_SAT
|
||||
// #define ENABLE_RGB_MATRIX_BAND_VAL
|
||||
// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
|
||||
// #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
|
||||
// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
|
||||
// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_ALL
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
|
||||
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
|
||||
#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
|
||||
#define ENABLE_RGB_MATRIX_DUAL_BEACON
|
||||
#define ENABLE_RGB_MATRIX_RAINBOW_BEACON
|
||||
// #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
|
||||
#define ENABLE_RGB_MATRIX_RAINDROPS
|
||||
// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
|
||||
// #define ENABLE_RGB_MATRIX_HUE_BREATHING
|
||||
// #define ENABLE_RGB_MATRIX_HUE_PENDULUM
|
||||
// #define ENABLE_RGB_MATRIX_HUE_WAVE
|
||||
// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
|
||||
// #define ENABLE_RGB_MATRIX_PIXEL_FLOW
|
||||
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
|
||||
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
|
||||
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
|
||||
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
|
||||
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
|
||||
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
|
||||
#define ENABLE_RGB_MATRIX_SPLASH
|
||||
#define ENABLE_RGB_MATRIX_MULTISPLASH
|
||||
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
|
||||
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
|
||||
|
||||
#define RGB_MATRIX_KEYPRESSES
|
||||
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
|
||||
#endif
|
58
keyboards/bubble75/hotswap/hotswap.c
Normal file
58
keyboards/bubble75/hotswap/hotswap.c
Normal file
@ -0,0 +1,58 @@
|
||||
/* Copyright 2022 Velocifire
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "hotswap.h"
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
led_config_t g_led_config = {
|
||||
{
|
||||
/* Key Matrix to LED Index */
|
||||
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, NO_LED, 13 },
|
||||
{ 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14 },
|
||||
{ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43 },
|
||||
{ 57, 56, 55, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, NO_LED, 44 },
|
||||
{ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, NO_LED, 70, 71 },
|
||||
{ 80, 79, 78, NO_LED, NO_LED, 77, NO_LED, NO_LED, 76, 75, NO_LED, 74, NO_LED, 73, 72 }
|
||||
}, {
|
||||
/* LED Index to Physical Position */
|
||||
// Switch LEDs
|
||||
{0,0}, {23,0}, {38,0}, {54,0}, {69,0}, {75,0}, {90,0}, {105,0}, {120,0}, {143,0}, {158,0}, {173,0}, {188,0}, {225,0},
|
||||
{225,18}, {203,18}, {180,18}, {165,18}, {150,18}, {135,18}, {120,18}, {105,18}, {90,18}, {75,18}, {60,18}, {45,18}, {30,18}, {15,18}, {0,18},
|
||||
{4,30}, {19,30}, {34,30}, {49,30}, {64,30}, {79,30}, {84,30}, {99,30}, {114,30}, {129,30}, {144,30}, {159,30}, {174,30}, {219,30}, {225,30},
|
||||
{225,41}, {201,41}, {191,41}, {161,41}, {146,41}, {131,41}, {116,41}, {101,41}, {86,41}, {71,41}, {56,41}, {41,41}, {26,41}, {6,41},
|
||||
{13,52}, {34,52}, {49,52}, {64,52}, {79,52}, {94,52}, {109,52}, {124,52}, {139,52}, {154,52}, {169,52}, {189,52}, {210,52}, {225,52},
|
||||
{225,64}, {210,64}, {195,64}, {186,64}, {167,64}, {94,64}, {39,64}, {21,64}, {2,64},
|
||||
}, {
|
||||
4,4,4,4,4,4,4,4,4,4,4,4, 4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4, 4,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4, 4,4,
|
||||
4,4,4, 4, 4,4, 4, 4,4,
|
||||
}
|
||||
};
|
||||
|
||||
bool rgb_matrix_indicators_kb(void) {
|
||||
if (!rgb_matrix_indicators_user()) {
|
||||
return false;
|
||||
}
|
||||
if (host_keyboard_led_state().caps_lock) { // Capslock = WHITE
|
||||
rgb_matrix_set_color(57, 255, 255, 255);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
#endif
|
35
keyboards/bubble75/hotswap/hotswap.h
Normal file
35
keyboards/bubble75/hotswap/hotswap.h
Normal file
@ -0,0 +1,35 @@
|
||||
/* Copyright 2022 Velocifire
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define LAYOUT( \
|
||||
K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, K014, \
|
||||
K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114, \
|
||||
K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214, \
|
||||
K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, K314, \
|
||||
K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, K413, K414, \
|
||||
K500, K501, K502, K505, K508, K509, K511, K513, K514 \
|
||||
) { \
|
||||
{ K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, K012, KC_NO, K014 }, \
|
||||
{ K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, K112, K113, K114 }, \
|
||||
{ K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, K212, K213, K214 }, \
|
||||
{ K300, K301, K302, K303, K304, K305, K306, K307, K308, K309, K310, K311, K312, KC_NO, K314 }, \
|
||||
{ K400, K401, K402, K403, K404, K405, K406, K407, K408, K409, K410, K411, KC_NO, K413, K414 }, \
|
||||
{ K500, K501, K502, KC_NO, KC_NO, K505, KC_NO, KC_NO, K508, K509, KC_NO, K511, KC_NO, K513, K514 } \
|
||||
}
|
98
keyboards/bubble75/hotswap/info.json
Normal file
98
keyboards/bubble75/hotswap/info.json
Normal file
@ -0,0 +1,98 @@
|
||||
{
|
||||
"keyboard_name": "bubble75",
|
||||
"url": "",
|
||||
"manufacturer": "phl",
|
||||
"maintainer": "velocifire",
|
||||
"usb": {
|
||||
"vid": "0x4242",
|
||||
"pid": "0x5A4C",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"bootloader": "atmel-dfu",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [{"x":0, "y":0},
|
||||
{"x":1.5, "y":0},
|
||||
{"x":2.5, "y":0},
|
||||
{"x":3.5, "y":0},
|
||||
{"x":4.5, "y":0},
|
||||
{"x":6, "y":0},
|
||||
{"x":7, "y":0},
|
||||
{"x":8, "y":0},
|
||||
{"x":9, "y":0},
|
||||
{"x":10.5, "y":0},
|
||||
{"x":11.5, "y":0},
|
||||
{"x":12.5, "y":0},
|
||||
{"x":13.5, "y":0},
|
||||
{"x":15, "y":0},
|
||||
{"x":0, "y":1.5},
|
||||
{"x":1, "y":1.5},
|
||||
{"x":2, "y":1.5},
|
||||
{"x":3, "y":1.5},
|
||||
{"x":4, "y":1.5},
|
||||
{"x":5, "y":1.5},
|
||||
{"x":6, "y":1.5},
|
||||
{"x":7, "y":1.5},
|
||||
{"x":8, "y":1.5},
|
||||
{"x":9, "y":1.5},
|
||||
{"x":10, "y":1.5},
|
||||
{"x":11, "y":1.5},
|
||||
{"x":12, "y":1.5},
|
||||
{"x":13, "y":1.5, "w":2},
|
||||
{"x":15, "y":1.5},
|
||||
{"x":0, "y":2.5, "w":1.5},
|
||||
{"x":1.5, "y":2.5},
|
||||
{"x":2.5, "y":2.5},
|
||||
{"x":3.5, "y":2.5},
|
||||
{"x":4.5, "y":2.5},
|
||||
{"x":5.5, "y":2.5},
|
||||
{"x":6.5, "y":2.5},
|
||||
{"x":7.5, "y":2.5},
|
||||
{"x":8.5, "y":2.5},
|
||||
{"x":9.5, "y":2.5},
|
||||
{"x":10.5, "y":2.5},
|
||||
{"x":11.5, "y":2.5},
|
||||
{"x":12.5, "y":2.5},
|
||||
{"x":13.5, "y":2.5, "w":1.5},
|
||||
{"x":15, "y":2.5},
|
||||
{"x":0, "y":3.5, "w":1.75},
|
||||
{"x":1.75, "y":3.5},
|
||||
{"x":2.75, "y":3.5},
|
||||
{"x":3.75, "y":3.5},
|
||||
{"x":4.75, "y":3.5},
|
||||
{"x":5.75, "y":3.5},
|
||||
{"x":6.75, "y":3.5},
|
||||
{"x":7.75, "y":3.5},
|
||||
{"x":8.75, "y":3.5},
|
||||
{"x":9.75, "y":3.5},
|
||||
{"x":10.75, "y":3.5},
|
||||
{"x":11.75, "y":3.5},
|
||||
{"x":12.75, "y":3.5, "w":2.25},
|
||||
{"x":15, "y":3.5},
|
||||
{"x":0, "y":4.5, "w":2.25},
|
||||
{"x":2.25, "y":4.5},
|
||||
{"x":3.25, "y":4.5},
|
||||
{"x":4.25, "y":4.5},
|
||||
{"x":5.25, "y":4.5},
|
||||
{"x":6.25, "y":4.5},
|
||||
{"x":7.25, "y":4.5},
|
||||
{"x":8.25, "y":4.5},
|
||||
{"x":9.25, "y":4.5},
|
||||
{"x":10.25, "y":4.5},
|
||||
{"x":11.25, "y":4.5},
|
||||
{"x":12.25, "y":4.5, "w":1.75},
|
||||
{"x":14, "y":4.5},
|
||||
{"x":15, "y":4.5},
|
||||
{"x":0, "y":5.5, "w":1.25},
|
||||
{"x":1.25, "y":5.5, "w":1.25},
|
||||
{"x":2.5, "y":5.5, "w":1.25},
|
||||
{"x":3.75, "y":5.5, "w":6.25},
|
||||
{"x":10, "y":5.5, "w":1.25},
|
||||
{"x":11.25, "y":5.5, "w":1.25},
|
||||
{"x":13, "y":5.5},
|
||||
{"x":14, "y":5.5},
|
||||
{"x":15, "y":5.5}]
|
||||
}
|
||||
}
|
||||
}
|
40
keyboards/bubble75/hotswap/keymaps/default/keymap.c
Normal file
40
keyboards/bubble75/hotswap/keymaps/default/keymap.c
Normal file
@ -0,0 +1,40 @@
|
||||
// Copyright 2022 Velocifire
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
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_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_PGUP,
|
||||
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_PGDN,
|
||||
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_END,
|
||||
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_DEL,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[1] = LAYOUT(
|
||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_HUD,
|
||||
_______, _______, _______, RGB_MOD, RGB_TOG, _______, RGB_SPD, RGB_VAD, RGB_SPI),
|
||||
|
||||
[2] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[3] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
|
||||
};
|
40
keyboards/bubble75/hotswap/keymaps/via/keymap.c
Normal file
40
keyboards/bubble75/hotswap/keymaps/via/keymap.c
Normal file
@ -0,0 +1,40 @@
|
||||
// Copyright 2022 Velocifire
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
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_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_PGUP,
|
||||
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_PGDN,
|
||||
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_END,
|
||||
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_DEL,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
||||
|
||||
[1] = LAYOUT(
|
||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_SAD,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_HUI,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RGB_VAI, RGB_HUD,
|
||||
_______, _______, _______, RGB_MOD, RGB_TOG, _______, RGB_SPD, RGB_VAD, RGB_SPI),
|
||||
|
||||
[2] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______),
|
||||
|
||||
[3] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
|
||||
};
|
1
keyboards/bubble75/hotswap/keymaps/via/rules.mk
Normal file
1
keyboards/bubble75/hotswap/keymaps/via/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
22
keyboards/bubble75/hotswap/readme.md
Normal file
22
keyboards/bubble75/hotswap/readme.md
Normal file
@ -0,0 +1,22 @@
|
||||
# Bubble 75
|
||||
|
||||
![image](https://i.imgur.com/9J01bYHh.png)
|
||||
|
||||
|
||||
A compact exploded F-Row 75% made by Velocifire.
|
||||
|
||||
* Keyboard Maintainer: [d-floe](https://github.com/d-floe)
|
||||
* Hardware Supported: Bubble75 Hotswap
|
||||
* Hardware Availability: [velocifiretech.com](https://www.velocifiretech.com/collections/keyboards/products/bubble-75-premium-keyboard-kit?variant=39743137939574)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make bubble75/hotswap:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make bubble75/hotswap:default:flash
|
||||
|
||||
Bootloader: Press the physical reset button on the bottom side of the PCB or hold down ESC while plugging in the board.
|
||||
|
||||
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).
|
13
keyboards/bubble75/hotswap/rules.mk
Normal file
13
keyboards/bubble75/hotswap/rules.mk
Normal file
@ -0,0 +1,13 @@
|
||||
# Build Options
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = yes # Enable N-Key Rollover
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
AUDIO_ENABLE = no # Audio output
|
||||
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
RGB_MATRIX_DRIVER = WS2812
|
||||
NO_USB_STARTUP_CHECK = yes
|
@ -10,7 +10,7 @@ A 65 + 10% F-Key Column Keyboard kit made and sold by Charue Design. [More info
|
||||
|
||||
#### Jumping to Bootloader
|
||||
|
||||
To enter the bootloader, you may use bootmagic by holding `Space+B` or by holding the reset button located at the back of the PCB, right beside the left shift key, for a few seconds.
|
||||
To enter the bootloader, you may use bootmagic by holding the key at top left (usually escape) or by holding the reset button located at the back of the PCB, right beside the left shift key, for a few seconds.
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
|
30
keyboards/era/era65/config.h
Normal file
30
keyboards/era/era65/config.h
Normal file
@ -0,0 +1,30 @@
|
||||
// Copyright 2023 eerraa (@era)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
*/
|
||||
|
||||
/* disable debug print */
|
||||
//#define NO_DEBUG
|
||||
|
||||
/* disable print */
|
||||
//#define NO_PRINT
|
||||
|
||||
/* disable action features */
|
||||
//#define NO_ACTION_LAYER
|
||||
//#define NO_ACTION_TAPPING
|
||||
//#define NO_ACTION_ONESHOT
|
||||
|
||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 6
|
||||
|
||||
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
|
||||
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET // Activates the double-tap behavior
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U // Timeout window in ms in which the double tap can occur.
|
||||
|
||||
#define BACKLIGHT_PWM_DRIVER PWMD0
|
||||
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A
|
8
keyboards/era/era65/halconf.h
Normal file
8
keyboards/era/era65/halconf.h
Normal file
@ -0,0 +1,8 @@
|
||||
// Copyright 2022 MatteoDM <matteodalmo@gmail.com>
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
|
||||
#include_next <halconf.h>
|
113
keyboards/era/era65/info.json
Normal file
113
keyboards/era/era65/info.json
Normal file
@ -0,0 +1,113 @@
|
||||
{
|
||||
"manufacturer": "ERA",
|
||||
"keyboard_name": "ERA65 1.0.4",
|
||||
"maintainer": "eerraa",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"backlight": true
|
||||
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24", "GP21", "GP20", "GP19", "GP18", "GP17", "GP16", "GP22", "GP23", "GP3"],
|
||||
"rows": ["GP1", "GP2", "GP4", "GP10", "GP11"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"url": "",
|
||||
"usb": {
|
||||
"device_version": "1.0.4",
|
||||
"pid": "0x0001",
|
||||
"vid": "0x4552"
|
||||
},
|
||||
"backlight": {
|
||||
"breathing": true,
|
||||
"breathing_period": 6,
|
||||
"levels": 15,
|
||||
"pin": "GP0"
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "GP12",
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_65_combo": {
|
||||
"layout": [
|
||||
{ "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "matrix": [0, 4], "x": 4, "y": 0 },
|
||||
{ "matrix": [0, 5], "x": 5, "y": 0 },
|
||||
{ "matrix": [0, 6], "x": 6, "y": 0 },
|
||||
{ "matrix": [0, 7], "x": 7, "y": 0 },
|
||||
{ "matrix": [0, 8], "x": 8, "y": 0 },
|
||||
{ "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "matrix": [0, 10], "x": 10, "y": 0 },
|
||||
{ "matrix": [0, 11], "x": 11, "y": 0 },
|
||||
{ "matrix": [0, 12], "x": 12, "y": 0 },
|
||||
{ "matrix": [0, 13], "w": 2, "x": 13, "y": 0 },
|
||||
{ "matrix": [0, 14], "x": 15.5, "y": 0 },
|
||||
{ "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||
{ "matrix": [1, 1], "x": 1.5, "y": 1 },
|
||||
{ "matrix": [1, 2], "x": 2.5, "y": 1 },
|
||||
{ "matrix": [1, 3], "x": 3.5, "y": 1 },
|
||||
{ "matrix": [1, 4], "x": 4.5, "y": 1 },
|
||||
{ "matrix": [1, 5], "x": 5.5, "y": 1 },
|
||||
{ "matrix": [1, 6], "x": 6.5, "y": 1 },
|
||||
{ "matrix": [1, 7], "x": 7.5, "y": 1 },
|
||||
{ "matrix": [1, 8], "x": 8.5, "y": 1 },
|
||||
{ "matrix": [1, 9], "x": 9.5, "y": 1 },
|
||||
{ "matrix": [1, 10], "x": 10.5, "y": 1 },
|
||||
{ "matrix": [1, 11], "x": 11.5, "y": 1 },
|
||||
{ "matrix": [1, 12], "x": 12.5, "y": 1 },
|
||||
{ "matrix": [1, 13], "w": 1.5, "x": 13.5, "y": 1 },
|
||||
{ "matrix": [1, 14], "x": 15.5, "y": 1 },
|
||||
{ "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||
{ "matrix": [2, 1], "x": 1.75, "y": 2 },
|
||||
{ "matrix": [2, 2], "x": 2.75, "y": 2 },
|
||||
{ "matrix": [2, 3], "x": 3.75, "y": 2 },
|
||||
{ "matrix": [2, 4], "x": 4.75, "y": 2 },
|
||||
{ "matrix": [2, 5], "x": 5.75, "y": 2 },
|
||||
{ "matrix": [2, 6], "x": 6.75, "y": 2 },
|
||||
{ "matrix": [2, 7], "x": 7.75, "y": 2 },
|
||||
{ "matrix": [2, 8], "x": 8.75, "y": 2 },
|
||||
{ "matrix": [2, 9], "x": 9.75, "y": 2 },
|
||||
{ "matrix": [2, 10], "x": 10.75, "y": 2 },
|
||||
{ "matrix": [2, 11], "x": 11.75, "y": 2 },
|
||||
{ "matrix": [2, 12], "x": 12.75, "y": 2 },
|
||||
{ "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 2 },
|
||||
{ "matrix": [2, 14], "x": 15.5, "y": 2 },
|
||||
{ "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
|
||||
{ "matrix": [3, 1], "x": 1.25, "y": 3 },
|
||||
{ "matrix": [3, 2], "x": 2.25, "y": 3 },
|
||||
{ "matrix": [3, 3], "x": 3.25, "y": 3 },
|
||||
{ "matrix": [3, 4], "x": 4.25, "y": 3 },
|
||||
{ "matrix": [3, 5], "x": 5.25, "y": 3 },
|
||||
{ "matrix": [3, 6], "x": 6.25, "y": 3 },
|
||||
{ "matrix": [3, 7], "x": 7.25, "y": 3 },
|
||||
{ "matrix": [3, 8], "x": 8.25, "y": 3 },
|
||||
{ "matrix": [3, 9], "x": 9.25, "y": 3 },
|
||||
{ "matrix": [3, 10], "x": 10.25, "y": 3 },
|
||||
{ "matrix": [3, 11], "x": 11.25, "y": 3 },
|
||||
{ "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 },
|
||||
{ "matrix": [3, 13], "x": 14.25, "y": 3.25 },
|
||||
{ "matrix": [3, 14], "x": 15.5, "y": 3 },
|
||||
{ "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
|
||||
{ "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
|
||||
{ "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
|
||||
{ "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 },
|
||||
{ "matrix": [4, 9], "x": 10, "y": 4 },
|
||||
{ "matrix": [4, 10], "x": 11, "y": 4 },
|
||||
{ "matrix": [4, 11], "x": 12, "y": 4 },
|
||||
{ "matrix": [4, 12], "x": 13.25, "y": 4.25 },
|
||||
{ "matrix": [4, 13], "x": 14.25, "y": 4.25 },
|
||||
{ "matrix": [4, 14], "x": 15.25, "y": 4.25 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
37
keyboards/era/era65/keymaps/default/keymap.c
Normal file
37
keyboards/era/era65/keymaps/default/keymap.c
Normal file
@ -0,0 +1,37 @@
|
||||
// Copyright 2018-2022 QMK (@qmk)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_65_combo(
|
||||
QK_GESC, 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_INS,
|
||||
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_DEL,
|
||||
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_NUHS, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_BSLS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||
* │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │PSc│Scr│Pause│Ins│
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │Hom│
|
||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||
* │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │End│
|
||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
|
||||
*/
|
||||
[1] = LAYOUT_65_combo(
|
||||
KC_GRV, 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_PSCR, KC_SCRL, KC_PAUS, KC_INS,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, KC_END,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
};
|
68
keyboards/era/era65/keymaps/via/keymap.c
Normal file
68
keyboards/era/era65/keymaps/via/keymap.c
Normal file
@ -0,0 +1,68 @@
|
||||
// Copyright 2018-2022 QMK (@qmk)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_65_combo(
|
||||
QK_GESC, 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_INS,
|
||||
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_DEL,
|
||||
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_NUHS, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_BSLS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
||||
* │ ` │F1 │F2 │F3 │F4 │F5 │F6 │F7 │F8 │F9 │F10│F11│F12│ │ │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │PSc│Scr│Pause│Ins│
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │ │ │Hom│
|
||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┼───┤
|
||||
* │ │ │ │ │ │ │ │Mut│Vl-│Vl+│ │ │ │End│
|
||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴──┬┴──┬┴──┬───┼───┼───┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │
|
||||
* └────┴────┴────┴────────────────────────┴───┴───┴───┴───┴───┴───┘
|
||||
*/
|
||||
[1] = LAYOUT_65_combo(
|
||||
KC_GRV, 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_PSCR, KC_SCRL, KC_PAUS, KC_INS,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, KC_END,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[2] = LAYOUT_65_combo(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[3] = LAYOUT_65_combo(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[4] = LAYOUT_65_combo(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[5] = LAYOUT_65_combo(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
1
keyboards/era/era65/keymaps/via/rules.mk
Normal file
1
keyboards/era/era65/keymaps/via/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
VIA_ENABLE = yes
|
8
keyboards/era/era65/mcuconf.h
Normal file
8
keyboards/era/era65/mcuconf.h
Normal file
@ -0,0 +1,8 @@
|
||||
// Copyright 2022 MatteoDM <matteodalmo@gmail.com>
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
/* Used for backlight display */
|
||||
#undef RP_PWM_USE_PWM0
|
||||
#define RP_PWM_USE_PWM0 TRUE
|
25
keyboards/era/era65/readme.md
Normal file
25
keyboards/era/era65/readme.md
Normal file
@ -0,0 +1,25 @@
|
||||
# ERA65
|
||||
|
||||
ERA65 Keyboard
|
||||
|
||||
* Keyboard Maintainer: [ERA](https://github.com/eerraa)
|
||||
* Hardware Supported: RP2040
|
||||
* Hardware Availability: [ERA](https://github.com/eerraa)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make era/era65:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make era/era65: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**: Short the reset hole of the PCB twice within 1 second.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
2
keyboards/era/era65/rules.mk
Normal file
2
keyboards/era/era65/rules.mk
Normal file
@ -0,0 +1,2 @@
|
||||
BACKLIGHT_DRIVER = pwm
|
||||
DEBOUNCE_TYPE = asym_eager_defer_pk
|
@ -19,6 +19,6 @@ Flashing example for this keyboard:
|
||||
To reset the board into bootloader mode, do one of the following:
|
||||
|
||||
* Tap the Reset switch mounted on the bottom side of the PCB
|
||||
* Hold Space+B while connecting the USB cable
|
||||
* Hold the key at top left (usually escape) while connecting the USB cable
|
||||
|
||||
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).`
|
||||
|
@ -16,6 +16,6 @@ Flashing example for this keyboard:
|
||||
|
||||
make mechkeys/alu84:default:flash
|
||||
|
||||
To reset the board into bootloader mode, hold Space+B while plugging the cable in.
|
||||
To reset the board into bootloader mode, hold the key at top left (usually escape) while plugging the cable in.
|
||||
|
||||
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).
|
||||
|
@ -16,6 +16,6 @@ Flashing example for this keyboard:
|
||||
|
||||
make misonoworks/karina:default:flash
|
||||
|
||||
To reset the board into bootloader mode, hold Space+B while connecting the USB cable.
|
||||
To reset the board into bootloader mode, hold the key at top left (usually escape) while connecting the USB cable.
|
||||
|
||||
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).
|
||||
|
@ -18,6 +18,6 @@ Flashing example for this keyboard:
|
||||
|
||||
make mt/mt84:default:flash
|
||||
|
||||
To put the board into bootloader mode, either press the reset button on the bottom the PCB or hold Space+B while plugging it in.
|
||||
To put the board into bootloader mode, either press the reset button on the bottom the PCB or hold the key at top left (usually escape) while plugging it in.
|
||||
|
||||
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).
|
||||
|
@ -12,23 +12,23 @@ static bool PIXEL_RAIN(effect_params_t* params) {
|
||||
return 500 / scale16by8(qadd8(rgb_matrix_config.speed, 16), 16);
|
||||
}
|
||||
|
||||
void rain_pixel(uint8_t i, effect_params_t * params, bool off) {
|
||||
if (!HAS_ANY_FLAGS(g_led_config.flags[i], params->flags)) {
|
||||
inline void rain_pixel(uint8_t led_index) {
|
||||
if (!HAS_ANY_FLAGS(g_led_config.flags[led_index], params->flags)) {
|
||||
return;
|
||||
}
|
||||
if (off) {
|
||||
rgb_matrix_set_color(i, 0, 0, 0);
|
||||
if (random8() & 2) {
|
||||
rgb_matrix_set_color(led_index, 0, 0, 0);
|
||||
} else {
|
||||
HSV hsv = {random8(), random8_min_max(127, 255), rgb_matrix_config.hsv.v};
|
||||
RGB rgb = rgb_matrix_hsv_to_rgb(hsv);
|
||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
||||
rgb_matrix_set_color(led_index, rgb.r, rgb.g, rgb.b);
|
||||
}
|
||||
wait_timer = g_rgb_timer + interval();
|
||||
}
|
||||
|
||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
||||
if (g_rgb_timer > wait_timer) {
|
||||
rain_pixel(random8_max(RGB_MATRIX_LED_COUNT), params, random8() & 2);
|
||||
rain_pixel(random8_max(RGB_MATRIX_LED_COUNT));
|
||||
}
|
||||
return rgb_matrix_check_finished_leds(led_max);
|
||||
}
|
||||
|
@ -874,65 +874,48 @@ uint8_t keyboard_leds(void) {
|
||||
return keyboard_led_state;
|
||||
}
|
||||
|
||||
void send_report(uint8_t endpoint, void *report, size_t size) {
|
||||
osalSysLock();
|
||||
if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
|
||||
if (usbGetTransmitStatusI(&USB_DRIVER, endpoint)) {
|
||||
/* Need to either suspend, or loop and call unlock/lock during
|
||||
* every iteration - otherwise the system will remain locked,
|
||||
* no interrupts served, so USB not going through as well.
|
||||
* Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
|
||||
if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[endpoint]->in_state->thread, TIME_MS2I(10)) == MSG_TIMEOUT) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
}
|
||||
usbStartTransmitI(&USB_DRIVER, endpoint, report, size);
|
||||
osalSysUnlock();
|
||||
}
|
||||
|
||||
/* prepare and start sending a report IN
|
||||
* not callable from ISR or locked state */
|
||||
void send_keyboard(report_keyboard_t *report) {
|
||||
osalSysLock();
|
||||
if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) {
|
||||
goto unlock;
|
||||
}
|
||||
uint8_t ep = KEYBOARD_IN_EPNUM;
|
||||
size_t size = KEYBOARD_REPORT_SIZE;
|
||||
|
||||
/* If we're in Boot Protocol, don't send any report ID or other funky fields */
|
||||
if (!keyboard_protocol) {
|
||||
send_report(ep, &report->mods, 8);
|
||||
} else {
|
||||
#ifdef NKRO_ENABLE
|
||||
if (keymap_config.nkro && keyboard_protocol) { /* NKRO protocol */
|
||||
/* need to wait until the previous packet has made it through */
|
||||
/* can rewrite this using the synchronous API, then would wait
|
||||
* until *after* the packet has been transmitted. I think
|
||||
* this is more efficient */
|
||||
/* busy wait, should be short and not very common */
|
||||
if (usbGetTransmitStatusI(&USB_DRIVER, SHARED_IN_EPNUM)) {
|
||||
/* Need to either suspend, or loop and call unlock/lock during
|
||||
* every iteration - otherwise the system will remain locked,
|
||||
* no interrupts served, so USB not going through as well.
|
||||
* Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
|
||||
osalThreadSuspendS(&(&USB_DRIVER)->epc[SHARED_IN_EPNUM]->in_state->thread);
|
||||
if (keymap_config.nkro) {
|
||||
ep = SHARED_IN_EPNUM;
|
||||
size = sizeof(struct nkro_report);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* after osalThreadSuspendS returns USB status might have changed */
|
||||
if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) {
|
||||
goto unlock;
|
||||
send_report(ep, report, size);
|
||||
}
|
||||
}
|
||||
usbStartTransmitI(&USB_DRIVER, SHARED_IN_EPNUM, (uint8_t *)report, sizeof(struct nkro_report));
|
||||
} else
|
||||
#endif /* NKRO_ENABLE */
|
||||
{ /* regular protocol */
|
||||
/* need to wait until the previous packet has made it through */
|
||||
/* busy wait, should be short and not very common */
|
||||
if (usbGetTransmitStatusI(&USB_DRIVER, KEYBOARD_IN_EPNUM)) {
|
||||
/* Need to either suspend, or loop and call unlock/lock during
|
||||
* every iteration - otherwise the system will remain locked,
|
||||
* no interrupts served, so USB not going through as well.
|
||||
* Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
|
||||
osalThreadSuspendS(&(&USB_DRIVER)->epc[KEYBOARD_IN_EPNUM]->in_state->thread);
|
||||
|
||||
/* after osalThreadSuspendS returns USB status might have changed */
|
||||
if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) {
|
||||
goto unlock;
|
||||
}
|
||||
}
|
||||
uint8_t *data, size;
|
||||
if (keyboard_protocol) {
|
||||
data = (uint8_t *)report;
|
||||
size = KEYBOARD_REPORT_SIZE;
|
||||
} else { /* boot protocol */
|
||||
data = &report->mods;
|
||||
size = 8;
|
||||
}
|
||||
usbStartTransmitI(&USB_DRIVER, KEYBOARD_IN_EPNUM, data, size);
|
||||
}
|
||||
keyboard_report_sent = *report;
|
||||
|
||||
unlock:
|
||||
osalSysUnlock();
|
||||
}
|
||||
|
||||
/* ---------------------------------------------------------
|
||||
@ -940,35 +923,13 @@ unlock:
|
||||
* ---------------------------------------------------------
|
||||
*/
|
||||
|
||||
void send_mouse(report_mouse_t *report) {
|
||||
#ifdef MOUSE_ENABLE
|
||||
void send_mouse(report_mouse_t *report) {
|
||||
osalSysLock();
|
||||
if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
|
||||
if (usbGetTransmitStatusI(&USB_DRIVER, MOUSE_IN_EPNUM)) {
|
||||
/* Need to either suspend, or loop and call unlock/lock during
|
||||
* every iteration - otherwise the system will remain locked,
|
||||
* no interrupts served, so USB not going through as well.
|
||||
* Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
|
||||
if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[MOUSE_IN_EPNUM]->in_state->thread, TIME_MS2I(10)) == MSG_TIMEOUT) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
}
|
||||
usbStartTransmitI(&USB_DRIVER, MOUSE_IN_EPNUM, (uint8_t *)report, sizeof(report_mouse_t));
|
||||
send_report(MOUSE_IN_EPNUM, report, sizeof(report_mouse_t));
|
||||
mouse_report_sent = *report;
|
||||
osalSysUnlock();
|
||||
#endif
|
||||
}
|
||||
|
||||
#else /* MOUSE_ENABLE */
|
||||
void send_mouse(report_mouse_t *report) {
|
||||
(void)report;
|
||||
}
|
||||
#endif /* MOUSE_ENABLE */
|
||||
|
||||
/* ---------------------------------------------------------
|
||||
* Extrakey functions
|
||||
* ---------------------------------------------------------
|
||||
@ -976,97 +937,25 @@ void send_mouse(report_mouse_t *report) {
|
||||
|
||||
void send_extra(report_extra_t *report) {
|
||||
#ifdef EXTRAKEY_ENABLE
|
||||
osalSysLock();
|
||||
if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
|
||||
if (usbGetTransmitStatusI(&USB_DRIVER, SHARED_IN_EPNUM)) {
|
||||
/* Need to either suspend, or loop and call unlock/lock during
|
||||
* every iteration - otherwise the system will remain locked,
|
||||
* no interrupts served, so USB not going through as well.
|
||||
* Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
|
||||
if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[SHARED_IN_EPNUM]->in_state->thread, TIME_MS2I(10)) == MSG_TIMEOUT) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
usbStartTransmitI(&USB_DRIVER, SHARED_IN_EPNUM, (uint8_t *)report, sizeof(report_extra_t));
|
||||
osalSysUnlock();
|
||||
send_report(SHARED_IN_EPNUM, report, sizeof(report_extra_t));
|
||||
#endif
|
||||
}
|
||||
|
||||
void send_programmable_button(report_programmable_button_t *report) {
|
||||
#ifdef PROGRAMMABLE_BUTTON_ENABLE
|
||||
osalSysLock();
|
||||
if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
|
||||
if (usbGetTransmitStatusI(&USB_DRIVER, SHARED_IN_EPNUM)) {
|
||||
/* Need to either suspend, or loop and call unlock/lock during
|
||||
* every iteration - otherwise the system will remain locked,
|
||||
* no interrupts served, so USB not going through as well.
|
||||
* Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
|
||||
if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[SHARED_IN_EPNUM]->in_state->thread, TIME_MS2I(10)) == MSG_TIMEOUT) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
usbStartTransmitI(&USB_DRIVER, SHARED_IN_EPNUM, (uint8_t *)report, sizeof(report_programmable_button_t));
|
||||
osalSysUnlock();
|
||||
send_report(SHARED_IN_EPNUM, report, sizeof(report_programmable_button_t));
|
||||
#endif
|
||||
}
|
||||
|
||||
void send_joystick(report_joystick_t *report) {
|
||||
#ifdef JOYSTICK_ENABLE
|
||||
osalSysLock();
|
||||
if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
|
||||
if (usbGetTransmitStatusI(&USB_DRIVER, JOYSTICK_IN_EPNUM)) {
|
||||
/* Need to either suspend, or loop and call unlock/lock during
|
||||
* every iteration - otherwise the system will remain locked,
|
||||
* no interrupts served, so USB not going through as well.
|
||||
* Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
|
||||
if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[JOYSTICK_IN_EPNUM]->in_state->thread, TIME_MS2I(10)) == MSG_TIMEOUT) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
usbStartTransmitI(&USB_DRIVER, JOYSTICK_IN_EPNUM, (uint8_t *)report, sizeof(report_joystick_t));
|
||||
osalSysUnlock();
|
||||
send_report(JOYSTICK_IN_EPNUM, report, sizeof(report_joystick_t));
|
||||
#endif
|
||||
}
|
||||
|
||||
void send_digitizer(report_digitizer_t *report) {
|
||||
#ifdef DIGITIZER_ENABLE
|
||||
osalSysLock();
|
||||
if (usbGetDriverStateI(&USB_DRIVER) != USB_ACTIVE) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
|
||||
if (usbGetTransmitStatusI(&USB_DRIVER, DIGITIZER_IN_EPNUM)) {
|
||||
/* Need to either suspend, or loop and call unlock/lock during
|
||||
* every iteration - otherwise the system will remain locked,
|
||||
* no interrupts served, so USB not going through as well.
|
||||
* Note: for suspend, need USB_USE_WAIT == TRUE in halconf.h */
|
||||
if (osalThreadSuspendTimeoutS(&(&USB_DRIVER)->epc[DIGITIZER_IN_EPNUM]->in_state->thread, TIME_MS2I(10)) == MSG_TIMEOUT) {
|
||||
osalSysUnlock();
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
usbStartTransmitI(&USB_DRIVER, DIGITIZER_IN_EPNUM, (uint8_t *)report, sizeof(report_digitizer_t));
|
||||
osalSysUnlock();
|
||||
send_report(DIGITIZER_IN_EPNUM, report, sizeof(report_digitizer_t));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user