diff --git a/docs/feature_advanced_keycodes.md b/docs/feature_advanced_keycodes.md index 90f06e405a9a..3da5e7b32f46 100644 --- a/docs/feature_advanced_keycodes.md +++ b/docs/feature_advanced_keycodes.md @@ -37,9 +37,9 @@ For more information on bitwise operators in C, click [here](https://en.wikipedi In practice, this means that you can check whether a given modifier is active with `get_mods() & MOD_BIT(KC_<modifier>)` (see the [list of modifier keycodes](keycodes_basic.md#modifiers)) or with `get_mods() & MOD_MASK_<modifier>` if the difference between left and right hand modifiers is not important and you want to match both. Same thing can be done for one-shot modifiers if you replace `get_mods()` with `get_oneshot_mods()`. -To check that *only* a specific set of mods is active at a time, AND the modifier state and your desired mod mask as explained above and compare the result to the mod mask itself: `get_mods() & <mod mask> == <mod mask>`. +To check that *only* a specific set of mods is active at a time, use a simple equality operator: `get_mods() == <mod mask>`. -For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with `(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))` and then plug it in: `get_oneshot_mods() & (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT)) == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))`. Using `MOD_MASK_CS` instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition. +For example, let's say you want to trigger a piece of custom code if one-shot left control and one-shot left shift are on but every other one-shot mods are off. To do so, you can compose the desired mod mask by combining the mod bits for left control and shift with `(MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))` and then plug it in: `get_oneshot_mods() == (MOD_BIT(KC_LCTL) | MOD_BIT(KC_LSFT))`. Using `MOD_MASK_CS` instead for the mod bitmask would have forced you to press four modifier keys (both versions of control and shift) to fulfill the condition. The full list of mod masks is as follows: @@ -184,4 +184,4 @@ This page used to encompass a large set of features. We have moved many sections ## Key Overrides :id=key-overrides -* [Key Overrides](feature_key_overrides.md) \ No newline at end of file +* [Key Overrides](feature_key_overrides.md) diff --git a/docs/feature_combo.md b/docs/feature_combo.md index 30adab3645b3..075fe252aec4 100644 --- a/docs/feature_combo.md +++ b/docs/feature_combo.md @@ -58,7 +58,7 @@ const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END}; const uint16_t PROGMEM qw_combo[] = {KC_Q, KC_W, COMBO_END}; const uint16_t PROGMEM sd_combo[] = {KC_S, KC_D, COMBO_END}; -combo_t key_combos[COMBO_COUNT] = { +combo_t key_combos[] = { [AB_ESC] = COMBO(ab_combo, KC_ESC), [JK_TAB] = COMBO(jk_combo, KC_TAB), [QW_SFT] = COMBO(qw_combo, KC_LSFT), diff --git a/docs/feature_wpm.md b/docs/feature_wpm.md index 9f98ef8336ca..4f4ed43739b8 100644 --- a/docs/feature_wpm.md +++ b/docs/feature_wpm.md @@ -1,4 +1,4 @@ -# Word Per Minute (WPM) Calculcation +# Word Per Minute (WPM) Calculation The WPM feature uses time between keystrokes to compute a rolling average words per minute rate and makes this available for various uses. diff --git a/docs/isp_flashing_guide.md b/docs/isp_flashing_guide.md index 08f56e987b0e..80fd1ddda125 100644 --- a/docs/isp_flashing_guide.md +++ b/docs/isp_flashing_guide.md @@ -35,6 +35,40 @@ To use a 5V/16MHz Pro Micro as an ISP flashing tool, you will first need to load !> Note that the `10` pin on the Pro Micro should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Pro Micro to the `RESET` on the keyboard. + +### Arduino Uno / Micro as ISP + +[Arduino Uno](https://store.arduino.cc/products/arduino-uno-rev3) +[Arduino Micro](https://store.arduino.cc/products/arduino-micro) + +A standard Uno or Micro can be used as an ISP flashing tool using the [example "ArduinoISP" sketch](https://docs.arduino.cc/built-in-examples/arduino-isp/ArduinoISP#load-the-sketch) to emulate an STK500 ISP. Also works with Sparkfun Pro Micros and clones. + +**AVRDUDE Programmer**: `stk500v1` +**AVRDUDE Port**: Serial + +#### Wiring + +|Uno |Keyboard| +|-----------|--------| +|`5V` |`VCC` | +|`GND` |`GND` | +|`10` (`B2`)|`RESET` | +|`13` (`B5`)|`SCLK` | +|`11` (`B3`)|`MOSI` | +|`12` (`B4`)|`MISO` | + +|Micro |Keyboard| +|-----------|--------| +|`5V` |`VCC` | +|`GND` |`GND` | +|`10` (`B6`)|`RESET` | +|`15` (`B1`)|`SCLK` | +|`16` (`B2`)|`MOSI` | +|`14` (`B3`)|`MISO` | + +!> Note that the `10` pin on the Uno/Micro should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Uno/Micro to the `RESET` on the keyboard. + + ### Teensy 2.0 as ISP [PJRC Teensy 2.0](https://www.pjrc.com/store/teensy.html) @@ -57,6 +91,7 @@ To use a Teensy 2.0 as an ISP flashing tool, you will first need to load a [spec !> Note that the `B0` pin on the Teensy should be wired to the `RESET` pin on the keyboard's controller. ***DO NOT*** connect the `RESET` pin on the Teensy to the `RESET` on the keyboard. + ### SparkFun PocketAVR / USBtinyISP [SparkFun PocketAVR](https://www.sparkfun.com/products/9825) diff --git a/keyboards/adpenrose/obi/info.json b/keyboards/adpenrose/obi/info.json index c0c1b73c6448..ce4ba7b47e6f 100644 --- a/keyboards/adpenrose/obi/info.json +++ b/keyboards/adpenrose/obi/info.json @@ -17,60 +17,117 @@ "layouts": { "LAYOUT_all": { "layout": [ - {"label":"F1", "x":0, "y":0}, - {"label":"Tab", "x":1.25, "y":0, "w":1.5}, - {"label":"Q", "x":2.75, "y":0}, - {"label":"W", "x":3.75, "y":0}, - {"label":"E", "x":4.75, "y":0}, - {"label":"R", "x":5.75, "y":0}, - {"label":"T", "x":6.75, "y":0}, - {"label":"Y", "x":7.75, "y":0}, - {"label":"U", "x":8.75, "y":0}, - {"label":"I", "x":9.75, "y":0}, - {"label":"O", "x":10.75, "y":0}, - {"label":"P", "x":11.75, "y":0}, - {"label":"{", "x":12.75, "y":0}, - {"label":"Backspace", "x":13.75, "y":0, "w":1.5}, + {"label": "F1", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "Tab", "matrix": [0, 1], "x": 1.25, "y": 0, "w": 1.5}, + {"label": "Q", "matrix": [0, 2], "x": 2.75, "y": 0}, + {"label": "W", "matrix": [0, 3], "x": 3.75, "y": 0}, + {"label": "E", "matrix": [0, 4], "x": 4.75, "y": 0}, + {"label": "R", "matrix": [0, 5], "x": 5.75, "y": 0}, + {"label": "T", "matrix": [0, 6], "x": 6.75, "y": 0}, + {"label": "Y", "matrix": [0, 7], "x": 7.75, "y": 0}, + {"label": "U", "matrix": [0, 8], "x": 8.75, "y": 0}, + {"label": "I", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "O", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "P", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "{", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.5}, - {"label":"F2", "x":0, "y":1}, - {"label":"Caps Lock", "x":1.25, "y":1, "w":1.75}, - {"label":"A", "x":3, "y":1}, - {"label":"S", "x":4, "y":1}, - {"label":"D", "x":5, "y":1}, - {"label":"F", "x":6, "y":1}, - {"label":"G", "x":7, "y":1}, - {"label":"H", "x":8, "y":1}, - {"label":"J", "x":9, "y":1}, - {"label":"K", "x":10, "y":1}, - {"label":"L", "x":11, "y":1}, - {"label":":", "x":12, "y":1}, - {"label":"Enter", "x":13, "y":1, "w":2.25}, - - {"label":"F3", "x":0, "y":2}, - {"label":"Shift", "x":1.25, "y":2, "w":2.25}, - {"label":"Z", "x":3.5, "y":2}, - {"label":"X", "x":4.5, "y":2}, - {"label":"C", "x":5.5, "y":2}, - {"label":"V", "x":6.5, "y":2}, - {"label":"B", "x":7.5, "y":2}, - {"label":"N", "x":8.5, "y":2}, - {"label":"M", "x":9.5, "y":2}, - {"label":"<", "x":10.5, "y":2}, - {"label":"Shift", "x":11.5, "y":2, "w":1.75}, - {"label":"Up", "x":13.25, "y":2}, - {"label":"?", "x":14.25, "y":2}, - - {"label":"F4", "x":0, "y":3}, - {"label":"Ctrl", "x":1.25, "y":3, "w":1.25}, - {"label":"Win", "x":2.5, "y":3}, - {"label":"Alt", "x":3.5, "y":3, "w":1.25}, - {"label":"Spacebar", "x":4.75, "y":3, "w":2.25}, - {"label":"Spacebar", "x":7, "y":3, "w":1.25}, - {"label":"Spacebar", "x":8.25, "y":3, "w":2.75}, - {"label":"Alt", "x":11, "y":3, "w":1.25}, - {"label":"Left", "x":12.25, "y":3}, - {"label":"Down", "x":13.25, "y":3}, - {"label":"Right", "x":14.25, "y":3} + {"label": "F2", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "Caps Lock", "matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.75}, + {"label": "A", "matrix": [1, 2], "x": 3, "y": 1}, + {"label": "S", "matrix": [1, 3], "x": 4, "y": 1}, + {"label": "D", "matrix": [1, 4], "x": 5, "y": 1}, + {"label": "F", "matrix": [1, 5], "x": 6, "y": 1}, + {"label": "G", "matrix": [1, 6], "x": 7, "y": 1}, + {"label": "H", "matrix": [1, 7], "x": 8, "y": 1}, + {"label": "J", "matrix": [1, 8], "x": 9, "y": 1}, + {"label": "K", "matrix": [1, 9], "x": 10, "y": 1}, + {"label": "L", "matrix": [1, 10], "x": 11, "y": 1}, + {"label": ":", "matrix": [1, 11], "x": 12, "y": 1}, + {"label": "Enter", "matrix": [1, 13], "x": 13, "y": 1, "w": 2.25}, + + {"label": "F3", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "Shift", "matrix": [2, 1], "x": 1.25, "y": 2, "w": 2.25}, + {"label": "Z", "matrix": [2, 2], "x": 3.5, "y": 2}, + {"label": "X", "matrix": [2, 3], "x": 4.5, "y": 2}, + {"label": "C", "matrix": [2, 4], "x": 5.5, "y": 2}, + {"label": "V", "matrix": [2, 5], "x": 6.5, "y": 2}, + {"label": "B", "matrix": [2, 6], "x": 7.5, "y": 2}, + {"label": "N", "matrix": [2, 7], "x": 8.5, "y": 2}, + {"label": "M", "matrix": [2, 8], "x": 9.5, "y": 2}, + {"label": "<", "matrix": [2, 9], "x": 10.5, "y": 2}, + {"label": "Shift", "matrix": [2, 10], "x": 11.5, "y": 2, "w": 1.75}, + {"label": "Up", "matrix": [2, 12], "x": 13.25, "y": 2}, + {"label": "?", "matrix": [2, 13], "x": 14.25, "y": 2}, + + {"label": "F4", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "Ctrl", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25}, + {"label": "Win", "matrix": [3, 2], "x": 2.5, "y": 3}, + {"label": "Alt", "matrix": [3, 3], "x": 3.5, "y": 3, "w": 1.25}, + {"label": "Spacebar", "matrix": [3, 5], "x": 4.75, "y": 3, "w": 2.25}, + {"label": "Spacebar", "matrix": [3, 6], "x": 7, "y": 3, "w": 1.25}, + {"label": "Spacebar", "matrix": [3, 7], "x": 8.25, "y": 3, "w": 2.75}, + {"label": "Alt", "matrix": [3, 10], "x": 11, "y": 3, "w": 1.25}, + {"label": "Left", "matrix": [3, 11], "x": 12.25, "y": 3}, + {"label": "Down", "matrix": [3, 12], "x": 13.25, "y": 3}, + {"label": "Right", "matrix": [3, 13], "x": 14.25, "y": 3} + ] + }, + + "LAYOUT_625u_space": { + "layout": [ + {"label": "F1", "matrix": [0, 0], "x": 0, "y": 0}, + {"label": "Tab", "matrix": [0, 1], "x": 1.25, "y": 0, "w": 1.5}, + {"label": "Q", "matrix": [0, 2], "x": 2.75, "y": 0}, + {"label": "W", "matrix": [0, 3], "x": 3.75, "y": 0}, + {"label": "E", "matrix": [0, 4], "x": 4.75, "y": 0}, + {"label": "R", "matrix": [0, 5], "x": 5.75, "y": 0}, + {"label": "T", "matrix": [0, 6], "x": 6.75, "y": 0}, + {"label": "Y", "matrix": [0, 7], "x": 7.75, "y": 0}, + {"label": "U", "matrix": [0, 8], "x": 8.75, "y": 0}, + {"label": "I", "matrix": [0, 9], "x": 9.75, "y": 0}, + {"label": "O", "matrix": [0, 10], "x": 10.75, "y": 0}, + {"label": "P", "matrix": [0, 11], "x": 11.75, "y": 0}, + {"label": "{", "matrix": [0, 12], "x": 12.75, "y": 0}, + {"label": "Backspace", "matrix": [0, 13], "x": 13.75, "y": 0, "w": 1.5}, + + {"label": "F2", "matrix": [1, 0], "x": 0, "y": 1}, + {"label": "Caps Lock", "matrix": [1, 1], "x": 1.25, "y": 1, "w": 1.75}, + {"label": "A", "matrix": [1, 2], "x": 3, "y": 1}, + {"label": "S", "matrix": [1, 3], "x": 4, "y": 1}, + {"label": "D", "matrix": [1, 4], "x": 5, "y": 1}, + {"label": "F", "matrix": [1, 5], "x": 6, "y": 1}, + {"label": "G", "matrix": [1, 6], "x": 7, "y": 1}, + {"label": "H", "matrix": [1, 7], "x": 8, "y": 1}, + {"label": "J", "matrix": [1, 8], "x": 9, "y": 1}, + {"label": "K", "matrix": [1, 9], "x": 10, "y": 1}, + {"label": "L", "matrix": [1, 10], "x": 11, "y": 1}, + {"label": ":", "matrix": [1, 11], "x": 12, "y": 1}, + {"label": "Enter", "matrix": [1, 13], "x": 13, "y": 1, "w": 2.25}, + + {"label": "F3", "matrix": [2, 0], "x": 0, "y": 2}, + {"label": "Shift", "matrix": [2, 1], "x": 1.25, "y": 2, "w": 2.25}, + {"label": "Z", "matrix": [2, 2], "x": 3.5, "y": 2}, + {"label": "X", "matrix": [2, 3], "x": 4.5, "y": 2}, + {"label": "C", "matrix": [2, 4], "x": 5.5, "y": 2}, + {"label": "V", "matrix": [2, 5], "x": 6.5, "y": 2}, + {"label": "B", "matrix": [2, 6], "x": 7.5, "y": 2}, + {"label": "N", "matrix": [2, 7], "x": 8.5, "y": 2}, + {"label": "M", "matrix": [2, 8], "x": 9.5, "y": 2}, + {"label": "<", "matrix": [2, 9], "x": 10.5, "y": 2}, + {"label": "Shift", "matrix": [2, 10], "x": 11.5, "y": 2, "w": 1.75}, + {"label": "Up", "matrix": [2, 12], "x": 13.25, "y": 2}, + {"label": "?", "matrix": [2, 13], "x": 14.25, "y": 2}, + + {"label": "F4", "matrix": [3, 0], "x": 0, "y": 3}, + {"label": "Ctrl", "matrix": [3, 1], "x": 1.25, "y": 3, "w": 1.25}, + {"label": "Win", "matrix": [3, 2], "x": 2.5, "y": 3}, + {"label": "Alt", "matrix": [3, 3], "x": 3.5, "y": 3, "w": 1.25}, + {"label": "Spacebar", "matrix": [3, 6], "x": 4.75, "y": 3, "w": 6.25}, + {"label": "Alt", "matrix": [3, 10], "x": 11, "y": 3, "w": 1.25}, + {"label": "Left", "matrix": [3, 11], "x": 12.25, "y": 3}, + {"label": "Down", "matrix": [3, 12], "x": 13.25, "y": 3}, + {"label": "Right", "matrix": [3, 13], "x": 14.25, "y": 3} ] } } diff --git a/keyboards/adpenrose/obi/keymaps/default_625u_space/keymap.c b/keyboards/adpenrose/obi/keymaps/default_625u_space/keymap.c new file mode 100644 index 000000000000..defb5169624a --- /dev/null +++ b/keyboards/adpenrose/obi/keymaps/default_625u_space/keymap.c @@ -0,0 +1,41 @@ +// Copyright 2022 Arturo Avila (@ADPenrose) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_625u_space( + KC_ESC, 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_BSPC, + KC_MUTE, KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + KC_VOLU, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_RSFT, KC_UP, KC_SLSH, + KC_VOLD, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_625u_space( + KC_DEL, KC_TRNS, 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_MPLY, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_QUOT, KC_BSLS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DOT, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_625u_space( + KC_TILD, 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_RBRC, + KC_TRNS, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_625u_space( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, 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[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }, + [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS) } +}; +#endif diff --git a/keyboards/adpenrose/obi/keymaps/default_625u_space/rules.mk b/keyboards/adpenrose/obi/keymaps/default_625u_space/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/adpenrose/obi/keymaps/default_625u_space/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/adpenrose/obi/matrix_diagram.md b/keyboards/adpenrose/obi/matrix_diagram.md new file mode 100644 index 000000000000..b4af2f8ac832 --- /dev/null +++ b/keyboards/adpenrose/obi/matrix_diagram.md @@ -0,0 +1,16 @@ +# Matrix Diagram for ADPenrose Obi + +``` +┌───┐┌─────┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬─────┐ +│00 ││01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │ +├───┤├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ +│10 ││11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1D │ +├───┤├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┬───┤ +│20 ││21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2C │2D │ +├───┤├────┬───┼───┴┬──┴───┴─┬─┴──┬┴───┴───┴─┬─┴──┬───┼───┼───┤ +│30 ││31 │32 │33 │35 │36 │37 │3A │3B │3C │3D │ +└───┘└────┴───┴────┴────────┴────┴──────────┴────┴───┴───┴───┘ + ┌────────────────────────┐ + │36 │ 6.25u Space + └────────────────────────┘ +``` diff --git a/keyboards/adpenrose/obi/obi.c b/keyboards/adpenrose/obi/obi.c deleted file mode 100644 index 2efd4eba472a..000000000000 --- a/keyboards/adpenrose/obi/obi.c +++ /dev/null @@ -1,5 +0,0 @@ -// Copyright 2022 Arturo Avila (@ADPenrose) -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "obi.h" - diff --git a/keyboards/adpenrose/obi/obi.h b/keyboards/adpenrose/obi/obi.h deleted file mode 100644 index 09bf9b29fcd1..000000000000 --- a/keyboards/adpenrose/obi/obi.h +++ /dev/null @@ -1,26 +0,0 @@ -// Copyright 2022 Arturo Avila (@ADPenrose) -// SPDX-License-Identifier: GPL-2.0-or-later - -#pragma once - -#include "quantum.h" - -/* This is a shortcut to help you visually see your layout. - * - * The first section contains all of the arguments representing the physical - * layout of the board and position of the keys. - * - * The second converts the arguments into a two-dimensional array which - * represents the switch matrix. - */ -#define LAYOUT_all( \ - K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, \ - K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1D, \ - K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2C, K2D, \ - K30, K31, K32, K33, K35, K36, K37, K3A, K3B, K3C, K3D \ -) { \ - { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D }, \ - { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, KC_NO, K1D }, \ - { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, KC_NO, K2C, K2D }, \ - { K30, K31, K32, K33, KC_NO, K35, K36, K37, KC_NO, KC_NO, K3A, K3B, K3C, K3D } \ -} diff --git a/keyboards/dotmod/dymium65/config.h b/keyboards/dotmod/dymium65/config.h new file mode 100644 index 000000000000..46d442fc8706 --- /dev/null +++ b/keyboards/dotmod/dymium65/config.h @@ -0,0 +1,36 @@ +/* Copyright 2023 Finalkey + * Copyright 2023 LiWenLiu <https://github.com/LiuLiuQMK> + * + * 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 + +/* 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 + +// The pin connected to the data pin of the LEDs +#define RGB_DI_PIN D7 +// The number of LEDs connected +#define RGB_MATRIX_LED_COUNT 66 +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_KEYRELEASES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_DISABLE_AFTER_TIMEOUT 0 +#define RGB_MATRIX_LED_FLUSH_LIMIT 16 +#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 diff --git a/keyboards/dotmod/dymium65/dymium65.c b/keyboards/dotmod/dymium65/dymium65.c new file mode 100644 index 000000000000..45eaa0251c60 --- /dev/null +++ b/keyboards/dotmod/dymium65/dymium65.c @@ -0,0 +1,54 @@ +/* Copyright 2023 Finalkey + * Copyright 2023 LiWenLiu <https://github.com/LiuLiuQMK> + * + * 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 "quantum.h" + +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { + { + {0, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED}, + {NO_LED, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, NO_LED, NO_LED}, + {28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, NO_LED, NO_LED}, + {29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, NO_LED, 41, 14, 42}, + {55, NO_LED, 54, 53, 52, 51, 50, 49, 48, 47, 46, 45, NO_LED, 44, 43, NO_LED}, + {56, 57, 58, NO_LED, NO_LED, NO_LED, 59, NO_LED, NO_LED, 60, 61, NO_LED, 62, 63, 64, 65} + }, { + {14, 0}, {28, 0}, {42, 0}, {56, 0}, {70, 0}, {84, 0}, {98, 0}, {112, 0}, {126, 0}, {140, 0}, {154, 0}, {168, 0}, {182, 0},{196, 0}, + {224, 16},{196, 16},{182, 16},{168, 16},{154, 16},{140, 16},{126, 16},{112, 16}, {98, 16}, {84, 16}, {70, 16}, {56, 16}, {42, 16} ,{28, 16}, {14, 16}, + {14, 32}, {28, 32}, {42, 32}, {56, 32}, {70, 32}, {84, 32}, {98, 32}, {112, 32}, {126, 32}, {140, 32}, {154, 32}, {168, 32}, {196, 32}, {224, 32}, + {224, 48}, {196, 48},{168, 48},{154, 48},{140, 48},{126, 48},{112, 48}, {98, 48}, {84, 48}, {70, 48}, {56, 48}, {42, 48}, {14, 48}, + {14, 64}, {28, 64}, {42, 64}, {98, 64}, {140, 64}, {154, 64}, {168, 64}, {182, 64},{196, 64}, {224, 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, 12, 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_advanced_kb(uint8_t led_min, uint8_t led_max) { + if (!rgb_matrix_indicators_advanced_user(led_min, led_max)) { + return false; + } + if (host_keyboard_led_state().caps_lock) { + RGB_MATRIX_INDICATOR_SET_COLOR(29, 255, 255, 255); + } + return true; +} +#endif diff --git a/keyboards/dotmod/dymium65/info.json b/keyboards/dotmod/dymium65/info.json new file mode 100644 index 000000000000..31f516507f0b --- /dev/null +++ b/keyboards/dotmod/dymium65/info.json @@ -0,0 +1,137 @@ +{ + "keyboard_name": "DYMIUM65", + "manufacturer": "RDR", + "url": "https://github.com/LiuLiuQMK", + "maintainer": "LiWenLiu", + "usb": { + "vid": "0x5678", + "pid": "0x5058", + "device_version": "0.0.1" + }, + "diode_direction": "ROW2COL", + "matrix_pins": { + "cols": ["E6", "B0", "B1", "B2", "B3", "B7", "D2", "D3", "D5", "D4", "D6", "C6", "B4", "B5", "B6","E2"], + "rows": ["F7", "F6", "F5", "F4", "F1","F0"] + }, + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "features": { + "bootmagic": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "mousekey": true, + "rgb_matrix": true + }, + "build": { + "lto": true + }, + "encoder": { + "enabled": true, + "rotary": [ + {"pin_a": "C7", "pin_b": "D1"} + ] + }, + "rgb_matrix": { + "driver": "WS2812", + "animations": { + "breathing": true, + "band_val": true, + "band_pinwheel_sat": true, + "band_pinwheel_val": true, + "cycle_all": true, + "cycle_left_right": true, + "cycle_up_down": true, + "rainbow_moving_chevron": true, + "cycle_out_in_dual": true, + "cycle_spiral": true, + "rainbow_beacon": true, + "rainbow_pinwheels": true, + "raindrops": true, + "pixel_flow": true, + "solid_reactive": true, + "solid_reactive_multiwide": true, + "solid_reactive_cross": true, + "solid_reactive_nexus": true, + "splash": true + } + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"matrix": [0, 0 ], "x": 0, "y": 0}, + {"matrix": [1, 1 ], "x": 1, "y": 0}, + {"matrix": [1, 2 ], "x": 2, "y": 0}, + {"matrix": [1, 3 ], "x": 3, "y": 0}, + {"matrix": [1, 4 ], "x": 4, "y": 0}, + {"matrix": [1, 5 ], "x": 5, "y": 0}, + {"matrix": [1, 6 ], "x": 6, "y": 0}, + {"matrix": [1, 7 ], "x": 7, "y": 0}, + {"matrix": [1, 8 ], "x": 8, "y": 0}, + {"matrix": [1, 9 ], "x": 9, "y": 0}, + {"matrix": [1, 10], "x": 10, "y": 0}, + {"matrix": [1, 11], "x": 11, "y": 0}, + {"matrix": [1, 12], "x": 12, "y": 0}, + {"matrix": [1, 13], "w": 2, "x": 13, "y": 0}, + {"matrix": [4, 15], "x": 16, "y": 0}, + + {"matrix": [2, 0 ], "w": 1.5, "x": 0, "y": 1}, + {"matrix": [2, 1 ], "x": 1.5, "y": 1}, + {"matrix": [2, 2 ], "x": 2.5, "y": 1}, + {"matrix": [2, 3 ], "x": 3.5, "y": 1}, + {"matrix": [2, 4 ], "x": 4.5, "y": 1}, + {"matrix": [2, 5 ], "x": 5.5, "y": 1}, + {"matrix": [2, 6 ], "x": 6.5, "y": 1}, + {"matrix": [2, 7 ], "x": 7.5, "y": 1}, + {"matrix": [2, 8 ], "x": 8.5, "y": 1}, + {"matrix": [2, 9 ], "x": 9.5, "y": 1}, + {"matrix": [2, 10], "x": 10.5, "y": 1}, + {"matrix": [2, 11], "x": 11.5, "y": 1}, + {"matrix": [2, 12], "x": 12.5, "y": 1}, + {"matrix": [2, 13], "w": 1.5, "x": 13.5, "y": 1}, + {"matrix": [3, 14], "x": 16, "y": 1}, + + {"matrix": [3, 0 ], "w": 1.75, "x": 0, "y": 2}, + {"matrix": [3, 1 ], "x": 1.75, "y": 2}, + {"matrix": [3, 2 ], "x": 2.75, "y": 2}, + {"matrix": [3, 3 ], "x": 3.75, "y": 2}, + {"matrix": [3, 4 ], "x": 4.75, "y": 2}, + {"matrix": [3, 5 ], "x": 5.75, "y": 2}, + {"matrix": [3, 6 ], "x": 6.75, "y": 2}, + {"matrix": [3, 7 ], "x": 7.75, "y": 2}, + {"matrix": [3, 8 ], "x": 8.75, "y": 2}, + {"matrix": [3, 9 ], "x": 9.75, "y": 2}, + {"matrix": [3, 10], "x": 10.75, "y": 2}, + {"matrix": [3, 11], "x": 11.75, "y": 2}, + {"matrix": [3, 13], "w": 2.25, "x": 12.75, "y": 2}, + {"matrix": [3, 15], "x": 16, "y": 2}, + + {"matrix": [4, 0 ], "w": 2.25, "x": 0, "y": 3}, + {"matrix": [4, 2 ], "x": 2.25, "y": 3}, + {"matrix": [4, 3 ], "x": 3.25, "y": 3}, + {"matrix": [4, 4 ], "x": 4.25, "y": 3}, + {"matrix": [4, 5 ], "x": 5.25, "y": 3}, + {"matrix": [4, 6 ], "x": 6.25, "y": 3}, + {"matrix": [4, 7 ], "x": 7.25, "y": 3}, + {"matrix": [4, 8 ], "x": 8.25, "y": 3}, + {"matrix": [4, 9 ], "x": 9.25, "y": 3}, + {"matrix": [4, 10], "x": 10.25, "y": 3}, + {"matrix": [4, 11], "x": 11.25, "y": 3}, + {"matrix": [4, 13], "w": 1.75, "x": 12.25, "y": 3}, + {"matrix": [4, 14], "x": 15.25, "y": 3}, + + {"matrix": [5, 0 ], "w": 1.25, "x": 0, "y": 4}, + {"matrix": [5, 1 ], "w": 1.25, "x": 1.25, "y": 4}, + {"matrix": [5, 2 ], "w": 1.25, "x": 2.5, "y": 4}, + {"matrix": [5, 6 ], "w": 6.25, "x": 3.75, "y": 4}, + {"matrix": [5, 9 ], "x": 10, "y": 4}, + {"matrix": [5, 10], "x": 11, "y": 4}, + {"matrix": [5, 12], "x": 12, "y": 4}, + {"matrix": [5, 13], "x": 14.25, "y": 4}, + {"matrix": [5, 14], "x": 15.25, "y": 4}, + {"matrix": [5, 15], "x": 16.25, "y": 4} + ] + } + } +} diff --git a/keyboards/dotmod/dymium65/keymaps/default/keymap.c b/keyboards/dotmod/dymium65/keymaps/default/keymap.c new file mode 100644 index 000000000000..483746b53f61 --- /dev/null +++ b/keyboards/dotmod/dymium65/keymaps/default/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2023 Finalkey + * Copyright 2023 LiWenLiu <https://github.com/LiuLiuQMK> + * + * 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 QMK_KEYBOARD_H + +// Layer names +enum ats_layers{ + // - Base layer: + _BASE, + // - Symbols, numbers, and functions: + _FN, + // - Alternate Function layer: + _LN, + // - Alternate Function layer: + _MT +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_AUDIO_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_PAGE_UP, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_PAGE_DOWN, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, MO(_FN), KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_FN] = LAYOUT( + KC_GRAVE, 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_BACKSPACE, KC_TRNS, + RGB_TOG, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, RGB_HUI, RGB_HUD, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, RGB_SAD, RGB_SAI, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, MO(_LN), KC_SLASH, KC_RIGHT_SHIFT, RGB_VAI, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, RGB_MOD, _______, KC_RIGHT_CTRL, RGB_SPD, RGB_VAD, RGB_SPI + ), + [_LN] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, MO(_MT), _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_MT] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, _______, _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ) +}; + + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP) }, + [_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [_LN] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI) }, + [_MT] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI) }, +}; +#endif diff --git a/keyboards/dotmod/dymium65/keymaps/default/rules.mk b/keyboards/dotmod/dymium65/keymaps/default/rules.mk new file mode 100644 index 000000000000..a40474b4d5c7 --- /dev/null +++ b/keyboards/dotmod/dymium65/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes \ No newline at end of file diff --git a/keyboards/dotmod/dymium65/keymaps/via/keymap.c b/keyboards/dotmod/dymium65/keymaps/via/keymap.c new file mode 100644 index 000000000000..483746b53f61 --- /dev/null +++ b/keyboards/dotmod/dymium65/keymaps/via/keymap.c @@ -0,0 +1,71 @@ +/* Copyright 2023 Finalkey + * Copyright 2023 LiWenLiu <https://github.com/LiuLiuQMK> + * + * 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 QMK_KEYBOARD_H + +// Layer names +enum ats_layers{ + // - Base layer: + _BASE, + // - Symbols, numbers, and functions: + _FN, + // - Alternate Function layer: + _LN, + // - Alternate Function layer: + _MT +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_AUDIO_MUTE, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_PAGE_UP, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_PAGE_DOWN, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, MO(_FN), KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_FN] = LAYOUT( + KC_GRAVE, 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_BACKSPACE, KC_TRNS, + RGB_TOG, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, RGB_HUI, RGB_HUD, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, RGB_SAD, RGB_SAI, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, MO(_LN), KC_SLASH, KC_RIGHT_SHIFT, RGB_VAI, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, RGB_MOD, _______, KC_RIGHT_CTRL, RGB_SPD, RGB_VAD, RGB_SPI + ), + [_LN] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, MO(_MT), _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ), + [_MT] = LAYOUT( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS, KC_EQUAL, KC_BACKSPACE, KC_TRNS, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LEFT_BRACKET, KC_RIGHT_BRACKET, KC_BACKSLASH, KC_TRNS, + KC_CAPS_LOCK, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SEMICOLON, KC_QUOTE, KC_ENTER, KC_TRNS, + KC_LEFT_SHIFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, _______, _______, KC_SLASH, KC_RIGHT_SHIFT, KC_UP, + KC_LEFT_CTRL, KC_LEFT_GUI, KC_LEFT_ALT, KC_SPACE, KC_RIGHT_ALT, _______, KC_RIGHT_CTRL, KC_LEFT, KC_DOWN, KC_RIGHT + ) +}; + + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [_BASE] = { ENCODER_CCW_CW(KC_AUDIO_VOL_DOWN, KC_AUDIO_VOL_UP) }, + [_FN] = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) }, + [_LN] = { ENCODER_CCW_CW(RGB_SAD, RGB_SAI) }, + [_MT] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI) }, +}; +#endif diff --git a/keyboards/dotmod/dymium65/keymaps/via/rules.mk b/keyboards/dotmod/dymium65/keymaps/via/rules.mk new file mode 100644 index 000000000000..4253f570f0bb --- /dev/null +++ b/keyboards/dotmod/dymium65/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/dotmod/dymium65/readme.md b/keyboards/dotmod/dymium65/readme.md new file mode 100644 index 000000000000..4d5dff4e845b --- /dev/null +++ b/keyboards/dotmod/dymium65/readme.md @@ -0,0 +1,27 @@ +# dymium65 + +A customizable 65% encoder keyboard. + + + +* Keyboard Maintainer: [LiWenLiu](https://github.com/LiuLiuQMK) +* Hardware Supported: dymium65 PCB with atmega32u4 microcontroller +* Hardware Availability: Coming soon + +Make example for this keyboard (after setting up your build environment): + + make dotmod/dymium65:default + +Flashing example for this keyboard: + + make dotmod/dymium65: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 top left key and plug in the keyboard +* **Physical reset button**: Briefly press the button on the back of the PCB +* **Keycode in layout**: There is no key mapped to `QK_BOOT` in the pre-created keymaps, but you may assign this key in any keymaps you create. diff --git a/keyboards/dotmod/dymium65/rules.mk b/keyboards/dotmod/dymium65/rules.mk new file mode 100644 index 000000000000..7ff128fa692e --- /dev/null +++ b/keyboards/dotmod/dymium65/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank \ No newline at end of file diff --git a/keyboards/drop/sense75/config.h b/keyboards/drop/sense75/config.h index 908c465f6ac3..13b8257fbba2 100644 --- a/keyboards/drop/sense75/config.h +++ b/keyboards/drop/sense75/config.h @@ -16,7 +16,6 @@ # define RGB_MATRIX_LED_COUNT (58 + 53) # define ISSI_PWM_FREQUENCY 0b010 // 26k -# define RGB_DISABLE_TIMEOUT 0 # define RGB_DISABLE_WHEN_USB_SUSPENDED # define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_CYCLE_LEFT_RIGHT # define RGB_MATRIX_KEYPRESSES diff --git a/keyboards/dumbpad/v3x/config.h b/keyboards/dumbpad/v3x/config.h index 2c00ba8eef24..f4487b0d402a 100644 --- a/keyboards/dumbpad/v3x/config.h +++ b/keyboards/dumbpad/v3x/config.h @@ -31,7 +31,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. // Cleanup RGB #ifdef RGB_MATRIX_ENABLE -#define RGB_DISABLE_TIMEOUT 300000 // 5 minutes (5 * 60 * 1000ms) +#define RGB_MATRIX_TIMEOUT 300000 // 5 minutes (5 * 60 * 1000ms) #define RGB_DISABLE_WHEN_USB_SUSPENDED #define RGB_MATRIX_FRAMEBUFFER_EFFECTS // Heatmap, Rain diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c index 49a1882851c3..471bc69b8ec6 100644 --- a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c +++ b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/default/keymap.c @@ -30,15 +30,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_DEL, 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_PGUP, 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_PGDN, - 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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + 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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), /* Keymap _FL: Function Layer */ [_FL] = LAYOUT( 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_INS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME, - _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD) + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME, + _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD + ) }; diff --git a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c index cf6200adc740..10653ae46383 100644 --- a/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c +++ b/keyboards/gmmk/gmmk2/p65/ansi/keymaps/via/keymap.c @@ -24,28 +24,32 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { 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_DEL, 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_PGUP, 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_PGDN, - 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_END, - KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + 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_END, + KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT + ), /* Keymap _FL: Function Layer */ [1] = LAYOUT( 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_INS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLU, KC_VOLD, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME, - _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, KC_HOME, + _______, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD + ), [2] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______), + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), [3] = LAYOUT( _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, - _______, _______, _______, _______, _______, _______, _______, _______, _______) + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) }; diff --git a/keyboards/kalakos/bahrnob/info.json b/keyboards/kalakos/bahrnob/info.json new file mode 100644 index 000000000000..d1fe26f5dd34 --- /dev/null +++ b/keyboards/kalakos/bahrnob/info.json @@ -0,0 +1,108 @@ +{ + "keyboard_name": "Bahrnob65", + "manufacturer": "Kalakos", + "maintainer": "zykrah", + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "usb": { + "vid": "0x7A79", + "pid": "0x4261", + "device_version": "0.0.1" + }, + "encoder": { + "rotary": [ + {"pin_a": "D4", "pin_b": "D6"} + ] + }, + "features": { + "bootmagic": true, + "mousekey": true, + "extrakey": true, + "console": false, + "command": false, + "nkro": true, + "encoder": true + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "rows": ["D7", "B4", "B5", "B6", "C6"], + "cols": ["F7", "F6", "F5", "F4", "F1", "F0", "B0", "B1", "B2", "B3", "D0", "D1", "D2", "D3", "D5"] + }, + "layouts": { + "LAYOUT": { + "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], "x": 13, "y": 0 }, + { "matrix": [1, 14], "x": 14, "y": 0 }, + { "matrix": [0, 14], "x": 15.75, "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": [2, 14], "x": 15.5, "y": 1.5 }, + { "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], "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [3, 14], "x": 15.5, "y": 2.5 }, + { "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 }, + { "matrix": [4, 4], "x": 2.25, "y": 3 }, + { "matrix": [3, 1], "x": 1.25, "y": 3 }, + { "matrix": [3, 2], "x": 3.25, "y": 3 }, + { "matrix": [3, 3], "x": 4.25, "y": 3 }, + { "matrix": [3, 4], "x": 5.25, "y": 3 }, + { "matrix": [3, 5], "x": 6.25, "y": 3 }, + { "matrix": [3, 6], "x": 7.25, "y": 3 }, + { "matrix": [3, 7], "x": 8.25, "y": 3 }, + { "matrix": [3, 8], "x": 9.25, "y": 3 }, + { "matrix": [3, 9], "x": 10.25, "y": 3 }, + { "matrix": [3, 10], "x": 11.25, "y": 3 }, + { "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 }, + { "matrix": [2, 13], "x": 14.25, "y": 3.25 }, + { "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, 3], "w": 3, "x": 3.75, "y": 4 }, + { "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 6], "w": 3.25, "x": 6.75, "y": 4 }, + { "matrix": [4, 10], "x": 10, "y": 4 }, + { "matrix": [4, 11], "x": 11, "y": 4 }, + { "matrix": [4, 12], "x": 12, "y": 4 }, + { "matrix": [3, 13], "x": 13.25, "y": 4.25 }, + { "matrix": [4, 13], "x": 14.25, "y": 4.25 }, + { "matrix": [4, 14], "x": 15.25, "y": 4.25 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/kalakos/bahrnob/keymaps/default/keymap.c b/keyboards/kalakos/bahrnob/keymaps/default/keymap.c new file mode 100644 index 000000000000..08ed92c0a822 --- /dev/null +++ b/keyboards/kalakos/bahrnob/keymaps/default/keymap.c @@ -0,0 +1,37 @@ +/* +Copyright 2023 Zykrah + +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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, 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_DEL, KC_MUTE, + 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_HOME, + 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_NUBS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + 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/kalakos/bahrnob/keymaps/via/keymap.c b/keyboards/kalakos/bahrnob/keymaps/via/keymap.c new file mode 100644 index 000000000000..eff227ff296b --- /dev/null +++ b/keyboards/kalakos/bahrnob/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* +Copyright 2023 Zykrah + +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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT( + KC_ESC, 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_DEL, KC_MUTE, + 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_HOME, + 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_NUBS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT( + QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, 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[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU)}, + [1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, + [2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, + [3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}, +}; +#endif diff --git a/keyboards/kalakos/bahrnob/keymaps/via/rules.mk b/keyboards/kalakos/bahrnob/keymaps/via/rules.mk new file mode 100644 index 000000000000..1189f4ad1927 --- /dev/null +++ b/keyboards/kalakos/bahrnob/keymaps/via/rules.mk @@ -0,0 +1,3 @@ +VIA_ENABLE = yes +LTO_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/kalakos/bahrnob/readme.md b/keyboards/kalakos/bahrnob/readme.md new file mode 100644 index 000000000000..a12abddc2a97 --- /dev/null +++ b/keyboards/kalakos/bahrnob/readme.md @@ -0,0 +1,27 @@ +# BAHRNOB65 + + + +Bahrnob 65: Gasket Mount 65% + +* Keyboard Maintainer: [Zykrah](https://github.com/zykrah) +* Hardware Supported: Bahrnob65 Solder PCB +* Hardware Availability: N/A + +Make example for this keyboard (after setting up your build environment): + + make kalakos/bahrnob65:default + +Flashing example for this keyboard: + + make kalakos/bahrnob65: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 reset button on the back of the pcb +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available diff --git a/keyboards/kalakos/bahrnob/rules.mk b/keyboards/kalakos/bahrnob/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/kalakos/bahrnob/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/meletrix/zoom75/info.json b/keyboards/meletrix/zoom75/info.json new file mode 100644 index 000000000000..9fd3bb8522e4 --- /dev/null +++ b/keyboards/meletrix/zoom75/info.json @@ -0,0 +1,148 @@ +{ + "keyboard_name": "zoom75", + "manufacturer": "meletrix", + "url": "https://meletrix.com/products/zoom75-essential-edition-black-wired", + "maintainer": "spbgzh", + "usb": { + "vid": "0x806D", + "pid": "0x0006", + "device_version": "0.0.1" + }, + "encoder": { + "rotary": [ + {"pin_a": "B0", "pin_b": "B1", "resolution": 2} + ] +}, + "indicators": { + "caps_lock": "F6", + "on_state": 0 + }, + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "encoder": true + }, + "matrix_pins": { + "rows": ["F4", "F1", "F0", "C6", "B6", "F5"], + "cols": [ + "C7", + "D5", + "B5", + "B4", + "D7", + "D6", + "D4", + "D3", + "D2", + "D1", + "D0", + "B7", + "B2", + "B3", + "F7" + ] + }, + "processor": "atmega32u4", + "bootloader": "atmel-dfu", + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "label": "Esc", "x": 0, "y": 0 }, + { "matrix": [0, 1], "label": "F1", "x": 1.25, "y": 0 }, + { "matrix": [0, 2], "label": "F2", "x": 2.25, "y": 0 }, + { "matrix": [0, 3], "label": "F3", "x": 3.25, "y": 0 }, + { "matrix": [0, 4], "label": "F4", "x": 4.25, "y": 0 }, + { "matrix": [0, 5], "label": "F5", "x": 5.5, "y": 0 }, + { "matrix": [0, 6], "label": "F6", "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "label": "F7", "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "label": "F8", "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "label": "F9", "x": 9.75, "y": 0 }, + { "matrix": [0, 10], "label": "F10", "x": 10.75, "y": 0 }, + { "matrix": [0, 11], "label": "F11", "x": 11.75, "y": 0 }, + { "matrix": [0, 12], "label": "F12", "x": 12.75, "y": 0 }, + { "matrix": [0, 13], "label": "F13", "x": 14, "y": 0 }, + { "matrix": [0, 14], "label": "Encoder", "x": 15, "y": 0 }, + + { "matrix": [1, 0], "label": "~", "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "label": "1", "x": 1, "y": 1.25 }, + { "matrix": [1, 2], "label": "2", "x": 2, "y": 1.25 }, + { "matrix": [1, 3], "label": "3", "x": 3, "y": 1.25 }, + { "matrix": [1, 4], "label": "4", "x": 4, "y": 1.25 }, + { "matrix": [1, 5], "label": "5", "x": 5, "y": 1.25 }, + { "matrix": [1, 6], "label": "6", "x": 6, "y": 1.25 }, + { "matrix": [1, 7], "label": "7", "x": 7, "y": 1.25 }, + { "matrix": [1, 8], "label": "8", "x": 8, "y": 1.25 }, + { "matrix": [1, 9], "label": "9", "x": 9, "y": 1.25 }, + { "matrix": [1, 10], "label": "0", "x": 10, "y": 1.25 }, + { "matrix": [1, 11], "label": "-", "x": 11, "y": 1.25 }, + { "matrix": [1, 12], "label": "=", "x": 12, "y": 1.25 }, + { "matrix": [1, 13], "label": "Backspace", "x": 13, "y": 1.25 }, + { "matrix": [3, 13], "label": "Backspace1", "x": 14, "y": 1.25 }, + { "matrix": [1, 14], "label": "Delect", "x": 15, "y": 1.25 }, + + { "matrix": [2, 0], "label": "Tab", "x": 0, "y": 2.25, "w": 1.5 }, + { "matrix": [2, 1], "label": "Q", "x": 1.5, "y": 2.25 }, + { "matrix": [2, 2], "label": "W", "x": 2.5, "y": 2.25 }, + { "matrix": [2, 3], "label": "E", "x": 3.5, "y": 2.25 }, + { "matrix": [2, 4], "label": "R", "x": 4.5, "y": 2.25 }, + { "matrix": [2, 5], "label": "T", "x": 5.5, "y": 2.25 }, + { "matrix": [2, 6], "label": "Y", "x": 6.5, "y": 2.25 }, + { "matrix": [2, 7], "label": "U", "x": 7.5, "y": 2.25 }, + { "matrix": [2, 8], "label": "I", "x": 8.5, "y": 2.25 }, + { "matrix": [2, 9], "label": "O", "x": 9.5, "y": 2.25 }, + { "matrix": [2, 10], "label": "P", "x": 10.5, "y": 2.25 }, + { "matrix": [2, 11], "label": "[", "x": 11.5, "y": 2.25 }, + { "matrix": [2, 12], "label": "]", "x": 12.5, "y": 2.25 }, + { "matrix": [2, 13], "label": "\\", "x": 13.5, "y": 2.25, "w": 1.5 }, + { "matrix": [2, 14], "label": "PageUp", "x": 15, "y": 2.25 }, + + { "matrix": [3, 0], "label": "Caps Lock", "x": 0, "y": 3.25, "w": 1.75 }, + { "matrix": [3, 1], "label": "A", "x": 1.75, "y": 3.25 }, + { "matrix": [3, 2], "label": "S", "x": 2.75, "y": 3.25 }, + { "matrix": [3, 3], "label": "D", "x": 3.75, "y": 3.25 }, + { "matrix": [3, 4], "label": "F", "x": 4.75, "y": 3.25 }, + { "matrix": [3, 5], "label": "G", "x": 5.75, "y": 3.25 }, + { "matrix": [3, 6], "label": "H", "x": 6.75, "y": 3.25 }, + { "matrix": [3, 7], "label": "J", "x": 7.75, "y": 3.25 }, + { "matrix": [3, 8], "label": "K", "x": 8.75, "y": 3.25 }, + { "matrix": [3, 9], "label": "L", "x": 9.75, "y": 3.25 }, + { "matrix": [3, 10], "label": ";", "x": 10.75, "y": 3.25 }, + { "matrix": [3, 11], "label": "'", "x": 11.75, "y": 3.25 }, + { "matrix": [3, 12], "label": "Enter", "x": 12.75, "y": 3.25, "w": 2.25 }, + { "matrix": [3, 14], "label": "PageDown", "x": 15, "y": 3.25 }, + + { "matrix": [4, 0], "label": "Shift1", "x": 0, "y": 4.25, "w": 1.25 }, + { "matrix": [4, 1], "label": "Shift2", "x": 1.25, "y": 4.25 }, + { "matrix": [4, 2], "label": "Z", "x": 2.25, "y": 4.25 }, + { "matrix": [4, 3], "label": "X", "x": 3.25, "y": 4.25 }, + { "matrix": [4, 4], "label": "C", "x": 4.25, "y": 4.25 }, + { "matrix": [4, 5], "label": "V", "x": 5.25, "y": 4.25 }, + { "matrix": [4, 6], "label": "B", "x": 6.25, "y": 4.25 }, + { "matrix": [4, 7], "label": "N", "x": 7.25, "y": 4.25 }, + { "matrix": [4, 8], "label": "M", "x": 8.25, "y": 4.25 }, + { "matrix": [4, 9], "label": ",", "x": 9.25, "y": 4.25 }, + { "matrix": [4, 10], "label": ".", "x": 10.25, "y": 4.25 }, + { "matrix": [4, 11], "label": "/", "x": 11.25, "y": 4.25 }, + { "matrix": [4, 12], "label": "Shift1", "x": 12.25, "y": 4.25, "w": 1.75 }, + { "matrix": [4, 13], "label": "\u2191", "x": 14, "y": 4.25 }, + + { "matrix": [5, 0], "label": "Ctrl", "x": 0, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 1], "label": "Win", "x": 1.25, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 2], "label": "Alt", "x": 2.5, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 5], "label": "Space","x": 3.75, "y": 5.25, "w": 2.25 }, + { "matrix": [5, 6], "label": "Space","x": 6, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 7], "label": "Space","x": 7.25, "y": 5.25, "w": 2.75 }, + { "matrix": [5, 9], "label": "Alt", "x": 10, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 10], "label": "Fn", "x": 11.25, "y": 5.25, "w": 1.25 }, + { "matrix": [5, 12], "label": "\u2190", "x": 13, "y": 5.25 }, + { "matrix": [5, 13], "label": "\u2193", "x": 14, "y": 5.25 }, + { "matrix": [5, 14], "label": "\u2192", "x": 15, "y": 5.25 } + ] + } + } +} diff --git a/keyboards/meletrix/zoom75/keymaps/default/keymap.c b/keyboards/meletrix/zoom75/keymaps/default/keymap.c new file mode 100644 index 000000000000..b1cbfb9e9fca --- /dev/null +++ b/keyboards/meletrix/zoom75/keymaps/default/keymap.c @@ -0,0 +1,43 @@ +/* Copyright 2023 meletrix + * + * 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 QMK_KEYBOARD_H + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), }, +}; +#endif + +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_MUTE, + 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_BSPC, KC_DEL, + 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_PGUP, + 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_PGDN, + KC_LSFT, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom75/keymaps/default/rules.mk b/keyboards/meletrix/zoom75/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/meletrix/zoom75/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/meletrix/zoom75/keymaps/via/keymap.c b/keyboards/meletrix/zoom75/keymaps/via/keymap.c new file mode 100644 index 000000000000..00fa34dd1307 --- /dev/null +++ b/keyboards/meletrix/zoom75/keymaps/via/keymap.c @@ -0,0 +1,44 @@ +/* Copyright 2023 meletrix + * + * 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 QMK_KEYBOARD_H + + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_MNXT, KC_MPRV) }, +}; +#endif + +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_MUTE, + 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_BSPC, KC_DEL, + 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_PGUP, + 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_PGDN, + KC_LSFT, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RIGHT + ), + [1] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPLY, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), +}; diff --git a/keyboards/meletrix/zoom75/keymaps/via/rules.mk b/keyboards/meletrix/zoom75/keymaps/via/rules.mk new file mode 100644 index 000000000000..f48a8b10567a --- /dev/null +++ b/keyboards/meletrix/zoom75/keymaps/via/rules.mk @@ -0,0 +1,4 @@ +ENCODER_MAP_ENABLE = yes +VIA_ENABLE = yes +LTO_ENABLE = yes + diff --git a/keyboards/meletrix/zoom75/readme.md b/keyboards/meletrix/zoom75/readme.md new file mode 100644 index 000000000000..060889ce0498 --- /dev/null +++ b/keyboards/meletrix/zoom75/readme.md @@ -0,0 +1,27 @@ +# Zoom75 + +More Info at [Zoom75 Wired Version](https://meletrix.com/products/zoom75-essential-edition-black-wired) + + +* Keyboard Maintainer: [spbgzh](https://github.com/spbgzh) +* Hardware Supported: Zoom75 Wired Version +* Hardware Availability: [zoom75](https://meletrix.com/products/zoom75-essential-edition-black-wired) + + +Make example for this keyboard (after setting up your build environment): + + make meletrix/zoom75:default + +Flashing example for this keyboard: + + make meletrix/zoom75:default:flash + +## Bootloader + +Enter the bootloader using one of the following methods: + +* Tap the Reset switch mounted on the PCB +* In the case of the default keymap, use the key combination Fn + Delete +* Hold the Esc key while connecting the USB cable (also erases persistent settings) + +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). diff --git a/keyboards/meletrix/zoom75/rules.mk b/keyboards/meletrix/zoom75/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/meletrix/zoom75/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/novelkeys/nk_plus/config.h b/keyboards/novelkeys/nk_plus/config.h new file mode 100644 index 000000000000..2d3322bab2a5 --- /dev/null +++ b/keyboards/novelkeys/nk_plus/config.h @@ -0,0 +1,80 @@ +/* +Copyright 2022 Yiancar + +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 + +/* RGB options */ + +#define WS2812_PWM_DRIVER PWMD3 +#define WS2812_PWM_CHANNEL 1 +#define WS2812_PWM_PAL_MODE 1 +#define WS2812_DMA_STREAM STM32_DMA1_STREAM3 +#define WS2812_DMA_CHANNEL 3 + +#define RGB_MATRIX_LED_COUNT 76 +#define RGB_DISABLE_WHEN_USB_SUSPENDED +#define RGB_MATRIX_KEYPRESSES +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS + +// 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 diff --git a/keyboards/novelkeys/nk_plus/halconf.h b/keyboards/novelkeys/nk_plus/halconf.h new file mode 100644 index 000000000000..ce14bc0c416c --- /dev/null +++ b/keyboards/novelkeys/nk_plus/halconf.h @@ -0,0 +1,21 @@ +/* Copyright 2022 Yiancar + * + * 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 + +#define HAL_USE_PWM TRUE + +#include_next <halconf.h> diff --git a/keyboards/novelkeys/nk_plus/info.json b/keyboards/novelkeys/nk_plus/info.json new file mode 100755 index 000000000000..29230e3f1634 --- /dev/null +++ b/keyboards/novelkeys/nk_plus/info.json @@ -0,0 +1,196 @@ +{ + "keyboard_name": "NK+", + "manufacturer": "Yiancar-Designs", + "url": "www.yiancar-designs.com", + "maintainer": "Yiancar", + "usb": { + "vid": "0x8968", + "pid": "0x4E51", + "device_version": "0.0.1" + }, + "diode_direction": "COL2ROW", + "matrix_pins": { + "cols": ["A2", "A1", "A0", "A3", "A4", "A5", "A6", "A7", "B11", "B12", "B13", "B14", "B15", "A8", "A9", "A10", "A14"], + "rows": ["B2", "B1", "B0", "B10", "B3"] + }, + "features": { + "backlight": false, + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "rgb_matrix": true, + "rgblight": false + }, + "processor": "STM32F072", + "bootloader": "stm32-dfu", + "rgb_matrix": { + "driver": "WS2812", + "layout": [ + { "flags": 1, "matrix": [0, 0], "x": 0, "y": 0 }, + { "flags": 1, "matrix": [0, 1], "x": 13, "y": 0 }, + { "flags": 1, "matrix": [0, 2], "x": 32, "y": 0 }, + { "flags": 4, "matrix": [0, 3], "x": 45, "y": 0 }, + { "flags": 4, "matrix": [0, 4], "x": 58, "y": 0 }, + { "flags": 4, "matrix": [0, 5], "x": 70, "y": 0 }, + { "flags": 4, "matrix": [0, 6], "x": 83, "y": 0 }, + { "flags": 4, "matrix": [0, 7], "x": 96, "y": 0 }, + { "flags": 4, "matrix": [0, 8], "x": 109, "y": 0 }, + { "flags": 4, "matrix": [0, 9], "x": 122, "y": 0 }, + { "flags": 4, "matrix": [0, 10], "x": 134, "y": 0 }, + { "flags": 4, "matrix": [0, 11], "x": 147, "y": 0 }, + { "flags": 4, "matrix": [0, 12], "x": 160, "y": 0 }, + { "flags": 4, "matrix": [0, 13], "x": 173, "y": 0 }, + { "flags": 4, "matrix": [0, 14], "x": 186, "y": 0 }, + { "flags": 1, "matrix": [0, 15], "x": 205, "y": 0 }, + { "flags": 1, "matrix": [0, 16], "x": 224, "y": 0 }, + { "flags": 1, "matrix": [1, 16], "x": 224, "y": 16 }, + { "flags": 4, "matrix": [1, 15], "x": 208, "y": 16 }, + { "flags": 4, "matrix": [1, 14], "x": 192, "y": 16 }, + { "flags": 4, "matrix": [1, 13], "x": 179, "y": 16 }, + { "flags": 4, "matrix": [1, 12], "x": 166, "y": 16 }, + { "flags": 4, "matrix": [1, 11], "x": 154, "y": 16 }, + { "flags": 4, "matrix": [1, 10], "x": 141, "y": 16 }, + { "flags": 4, "matrix": [1, 9], "x": 128, "y": 16 }, + { "flags": 4, "matrix": [1, 8], "x": 115, "y": 16 }, + { "flags": 4, "matrix": [1, 7], "x": 102, "y": 16 }, + { "flags": 4, "matrix": [1, 6], "x": 90, "y": 16 }, + { "flags": 4, "matrix": [1, 5], "x": 77, "y": 16 }, + { "flags": 4, "matrix": [1, 4], "x": 64, "y": 16 }, + { "flags": 4, "matrix": [1, 3], "x": 51, "y": 16 }, + { "flags": 1, "matrix": [1, 2], "x": 35, "y": 16 }, + { "flags": 1, "matrix": [1, 1], "x": 13, "y": 16 }, + { "flags": 1, "matrix": [1, 0], "x": 0, "y": 16 }, + { "flags": 1, "matrix": [2, 0], "x": 0, "y": 32 }, + { "flags": 1, "matrix": [2, 1], "x": 13, "y": 32 }, + { "flags": 1, "matrix": [2, 2], "x": 37, "y": 32 }, + { "flags": 4, "matrix": [2, 3], "x": 54, "y": 32 }, + { "flags": 4, "matrix": [2, 4], "x": 67, "y": 32 }, + { "flags": 4, "matrix": [2, 5], "x": 80, "y": 32 }, + { "flags": 4, "matrix": [2, 6], "x": 93, "y": 32 }, + { "flags": 4, "matrix": [2, 7], "x": 106, "y": 32 }, + { "flags": 4, "matrix": [2, 8], "x": 118, "y": 32 }, + { "flags": 4, "matrix": [2, 9], "x": 131, "y": 32 }, + { "flags": 4, "matrix": [2, 10], "x": 144, "y": 32 }, + { "flags": 4, "matrix": [2, 11], "x": 157, "y": 32 }, + { "flags": 4, "matrix": [2, 12], "x": 170, "y": 32 }, + { "flags": 4, "matrix": [2, 13], "x": 182, "y": 32 }, + { "flags": 1, "matrix": [2, 15], "x": 203, "y": 32 }, + { "flags": 1, "matrix": [2, 16], "x": 224, "y": 32 }, + { "flags": 1, "matrix": [3, 16], "x": 224, "y": 48 }, + { "flags": 1, "matrix": [3, 15], "x": 211, "y": 48 }, + { "flags": 1, "matrix": [3, 14], "x": 194, "y": 48 }, + { "flags": 4, "matrix": [3, 13], "x": 176, "y": 48 }, + { "flags": 4, "matrix": [3, 12], "x": 163, "y": 48 }, + { "flags": 4, "matrix": [3, 11], "x": 150, "y": 48 }, + { "flags": 4, "matrix": [3, 10], "x": 138, "y": 48 }, + { "flags": 4, "matrix": [3, 9], "x": 125, "y": 48 }, + { "flags": 4, "matrix": [3, 8], "x": 112, "y": 48 }, + { "flags": 4, "matrix": [3, 7], "x": 99, "y": 48 }, + { "flags": 4, "matrix": [3, 6], "x": 86, "y": 48 }, + { "flags": 4, "matrix": [3, 5], "x": 74, "y": 48 }, + { "flags": 4, "matrix": [3, 4], "x": 61, "y": 48 }, + { "flags": 1, "matrix": [3, 2], "x": 40, "y": 48 }, + { "flags": 1, "matrix": [3, 1], "x": 13, "y": 48 }, + { "flags": 1, "matrix": [3, 0], "x": 0, "y": 48 }, + { "flags": 1, "matrix": [4, 0], "x": 0, "y": 64 }, + { "flags": 1, "matrix": [4, 1], "x": 13, "y": 64 }, + { "flags": 1, "matrix": [4, 2], "x": 35, "y": 64 }, + { "flags": 1, "matrix": [4, 3], "x": 51, "y": 64 }, + { "flags": 1, "matrix": [4, 4], "x": 67, "y": 64 }, + { "flags": 4, "matrix": [4, 8], "x": 122, "y": 64 }, + { "flags": 1, "matrix": [4, 13], "x": 176, "y": 64 }, + { "flags": 1, "matrix": [4, 14], "x": 198, "y": 64 }, + { "flags": 1, "matrix": [4, 15], "x": 211, "y": 64 }, + { "flags": 1, "matrix": [4, 16], "x": 224, "y": 64 } + ], + "max_brightness": 120 + }, + "rgblight": { + "pin": "B4" + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0 }, + { "matrix": [0, 1], "x": 1, "y": 0 }, + { "matrix": [0, 2], "x": 2.5, "y": 0 }, + { "matrix": [0, 3], "x": 3.5, "y": 0 }, + { "matrix": [0, 4], "x": 4.5, "y": 0 }, + { "matrix": [0, 5], "x": 5.5, "y": 0 }, + { "matrix": [0, 6], "x": 6.5, "y": 0 }, + { "matrix": [0, 7], "x": 7.5, "y": 0 }, + { "matrix": [0, 8], "x": 8.5, "y": 0 }, + { "matrix": [0, 9], "x": 9.5, "y": 0 }, + { "matrix": [0, 10], "x": 10.5, "y": 0 }, + { "matrix": [0, 11], "x": 11.5, "y": 0 }, + { "matrix": [0, 12], "x": 12.5, "y": 0 }, + { "matrix": [0, 13], "x": 13.5, "y": 0 }, + { "matrix": [0, 14], "x": 14.5, "y": 0 }, + { "matrix": [0, 15], "x": 15.5, "y": 0 }, + { "matrix": [0, 16], "x": 17.5, "y": 0 }, + { "matrix": [1, 0], "x": 0, "y": 1 }, + { "matrix": [1, 1], "x": 1, "y": 1 }, + { "matrix": [1, 2], "x": 2.5, "y": 1 }, + { "matrix": [1, 3], "x": 4, "y": 1 }, + { "matrix": [1, 4], "x": 5, "y": 1 }, + { "matrix": [1, 5], "x": 6, "y": 1 }, + { "matrix": [1, 6], "x": 7, "y": 1 }, + { "matrix": [1, 7], "x": 8, "y": 1 }, + { "matrix": [1, 8], "x": 9, "y": 1 }, + { "matrix": [1, 9], "x": 10, "y": 1 }, + { "matrix": [1, 10], "x": 11, "y": 1 }, + { "matrix": [1, 11], "x": 12, "y": 1 }, + { "matrix": [1, 12], "x": 13, "y": 1 }, + { "matrix": [1, 13], "x": 14, "y": 1 }, + { "matrix": [1, 14], "x": 15, "y": 1 }, + { "matrix": [1, 15], "x": 16, "y": 1 }, + { "matrix": [1, 16], "x": 17.5, "y": 1 }, + { "matrix": [2, 0], "x": 0, "y": 2 }, + { "matrix": [2, 1], "x": 1, "y": 2 }, + { "matrix": [2, 2], "x": 2.5, "y": 2 }, + { "matrix": [2, 3], "x": 4.25, "y": 2 }, + { "matrix": [2, 4], "x": 5.25, "y": 2 }, + { "matrix": [2, 5], "x": 6.25, "y": 2 }, + { "matrix": [2, 6], "x": 7.25, "y": 2 }, + { "matrix": [2, 7], "x": 8.25, "y": 2 }, + { "matrix": [2, 8], "x": 9.25, "y": 2 }, + { "matrix": [2, 9], "x": 10.25, "y": 2 }, + { "matrix": [2, 10], "x": 11.25, "y": 2 }, + { "matrix": [2, 11], "x": 12.25, "y": 2 }, + { "matrix": [2, 12], "x": 13.25, "y": 2 }, + { "matrix": [2, 13], "x": 14.25, "y": 2 }, + { "matrix": [2, 15], "x": 15.25, "y": 2 }, + { "matrix": [2, 16], "x": 17.5, "y": 2 }, + { "matrix": [3, 0], "x": 0, "y": 3 }, + { "matrix": [3, 1], "x": 1, "y": 3 }, + { "matrix": [3, 2], "x": 2.5, "y": 3 }, + { "matrix": [3, 4], "x": 4.75, "y": 3 }, + { "matrix": [3, 5], "x": 5.75, "y": 3 }, + { "matrix": [3, 6], "x": 6.75, "y": 3 }, + { "matrix": [3, 7], "x": 7.75, "y": 3 }, + { "matrix": [3, 8], "x": 8.75, "y": 3 }, + { "matrix": [3, 9], "x": 9.75, "y": 3 }, + { "matrix": [3, 10], "x": 10.75, "y": 3 }, + { "matrix": [3, 11], "x": 11.75, "y": 3 }, + { "matrix": [3, 12], "x": 12.75, "y": 3 }, + { "matrix": [3, 13], "x": 13.75, "y": 3 }, + { "matrix": [3, 14], "x": 14.75, "y": 3 }, + { "matrix": [3, 15], "x": 16.5, "y": 3 }, + { "matrix": [3, 16], "x": 17.5, "y": 3 }, + { "matrix": [4, 0], "x": 0, "y": 4 }, + { "matrix": [4, 1], "x": 1, "y": 4 }, + { "matrix": [4, 2], "x": 2.5, "y": 4 }, + { "matrix": [4, 3], "x": 4, "y": 4 }, + { "matrix": [4, 4], "x": 5, "y": 4 }, + { "matrix": [4, 8], "x": 6.5, "y": 4 }, + { "matrix": [4, 13], "x": 13.5, "y": 4 }, + { "matrix": [4, 14], "x": 15.5, "y": 4 }, + { "matrix": [4, 15], "x": 16.5, "y": 4 }, + { "matrix": [4, 16], "x": 17.5, "y": 4 } + ] + } + } +} diff --git a/keyboards/novelkeys/nk_plus/keymaps/default/keymap.c b/keyboards/novelkeys/nk_plus/keymaps/default/keymap.c new file mode 100644 index 000000000000..b5697a731d94 --- /dev/null +++ b/keyboards/novelkeys/nk_plus/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +/* Copyright 2022 Yiancar + * + * 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT( /* Base */ + KC_F1, KC_F2, 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_HOME, + KC_F3, KC_F4, 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_PGUP, + KC_F5, KC_F6, 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_PGDN, + KC_F7, KC_F8, 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_END, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT( /* FN */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS) +}; diff --git a/keyboards/novelkeys/nk_plus/keymaps/via/keymap.c b/keyboards/novelkeys/nk_plus/keymaps/via/keymap.c new file mode 100644 index 000000000000..9e877b98048e --- /dev/null +++ b/keyboards/novelkeys/nk_plus/keymaps/via/keymap.c @@ -0,0 +1,33 @@ +/* Copyright 2022 Yiancar + * + * 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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[0] = LAYOUT( /* Base */ + KC_F1, KC_F2, 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_HOME, + KC_F3, KC_F4, 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_PGUP, + KC_F5, KC_F6, 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_PGDN, + KC_F7, KC_F8, 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_END, + KC_F9, KC_F10, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_LEFT, KC_DOWN, KC_RGHT), + +[1] = LAYOUT( /* FN */ + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS), + +}; diff --git a/keyboards/novelkeys/nk_plus/keymaps/via/rules.mk b/keyboards/novelkeys/nk_plus/keymaps/via/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/novelkeys/nk_plus/keymaps/via/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/novelkeys/nk_plus/mcuconf.h b/keyboards/novelkeys/nk_plus/mcuconf.h new file mode 100644 index 000000000000..7cf6a48904d5 --- /dev/null +++ b/keyboards/novelkeys/nk_plus/mcuconf.h @@ -0,0 +1,22 @@ +/* Copyright 2022 Yiancar + * + * 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_next <mcuconf.h> + +#undef STM32_PWM_USE_TIM3 +#define STM32_PWM_USE_TIM3 TRUE diff --git a/keyboards/novelkeys/nk_plus/readme.md b/keyboards/novelkeys/nk_plus/readme.md new file mode 100644 index 000000000000..e4367289591c --- /dev/null +++ b/keyboards/novelkeys/nk_plus/readme.md @@ -0,0 +1,32 @@ +# NK+ + +This is a 65% with macro keys PCB. It supports VIA and full per-key RGB. + +* Keyboard Maintainer: [Yiancar](https://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar) +* Hardware Supported: A 65% with macro keys keyboard with STM32F072CB or APM compatible +* Hardware Availability: https://novelkeys.com/ + +## Instructions + +### Build + +Make example for this keyboard (after setting up your build environment): + + make novelkeys/nk_plus:default + +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). + +### Reset + +- Unplug +- Hold Escape +- Plug In +- Unplug +- Release Escape + +### Flash + +- Unplug +- Hold Escape +- Plug In +- Flash using QMK Toolbox or dfu-util (`make novelkeys/nk_plus:<keymap>:dfu-util`) diff --git a/keyboards/novelkeys/nk_plus/rules.mk b/keyboards/novelkeys/nk_plus/rules.mk new file mode 100644 index 000000000000..a68122281ad1 --- /dev/null +++ b/keyboards/novelkeys/nk_plus/rules.mk @@ -0,0 +1,12 @@ +# Wildcard to allow APM32 MCU +DFU_SUFFIX_ARGS = -v FFFF -p FFFF + +# Do not put the microcontroller into power saving mode +# when we get USB suspend event. We want it to keep updating +# backlight effects. +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE + +# Build Options +# change yes to no to disable +# +WS2812_DRIVER = pwm # Per-key RGB MCU Driver diff --git a/keyboards/quadrum/delta/info.json b/keyboards/quadrum/delta/info.json new file mode 100644 index 000000000000..65ec7429f9ba --- /dev/null +++ b/keyboards/quadrum/delta/info.json @@ -0,0 +1,257 @@ +{ + "manufacturer": "QuadrumLabs", + "keyboard_name": "Delta", + "maintainer": "Sleepdealr", + "bootloader": "atmel-dfu", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": true, + "extrakey": true, + "mousekey": true, + "nkro": true, + "lto": true, + "encoder": true + }, + "matrix_pins": { + "cols": ["F6", "F7", "C7", "C6", "B6", "B5", "B4", "B7", "B3", "B2", "B1", "B0", "D5", "D6", "D4", "D7"], + "rows": ["F5", "F4", "F1", "F0", "D2"] + }, + "processor": "atmega32u4", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0002", + "vid": "0x4C47" + }, + "encoder": { + "rotary": [ + { + "pin_a": "D0", + "pin_b": "D1" + } + ] + }, + "layouts": { + "LAYOUT_all": { + "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], "x": 13, "y": 0 }, + { "matrix": [0, 14], "x": 14, "y": 0 }, + { "matrix": [3, 14], "x": 15.32, "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.32, "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.32, "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.32, "y": 3.32 }, + { "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, 7], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 10], "x": 10, "y": 4 }, + { "matrix": [4, 11], "x": 11, "y": 4 }, + { "matrix": [4, 12], "x": 12, "y": 4 }, + { "matrix": [4, 15], "x": 13.32, "y": 4.32 }, + { "matrix": [4, 13], "x": 14.32, "y": 4.32 }, + { "matrix": [4, 14], "x": 15.32, "y": 4.32 } + ] + }, + "LAYOUT_ansi": { + "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], "x": 13, "y": 0 }, + { "matrix": [0, 14], "x": 14, "y": 0 }, + { "matrix": [3, 14], "x": 15.32, "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.32, "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, 13], "w": 2.25, "x": 12.75, "y": 2 }, + { "matrix": [2, 14], "x": 15.32, "y": 2 }, + { "matrix": [3, 0], "w": 2.25, "x": 0, "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.32, "y": 3.32 }, + { "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, 7], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 10], "x": 10, "y": 4 }, + { "matrix": [4, 11], "x": 11, "y": 4 }, + { "matrix": [4, 12], "x": 12, "y": 4 }, + { "matrix": [4, 15], "x": 13.32, "y": 4.32 }, + { "matrix": [4, 13], "x": 14.32, "y": 4.32 }, + { "matrix": [4, 14], "x": 15.32, "y": 4.32 } + ] + }, + "LAYOUT_iso": { + "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], "x": 13, "y": 0 }, + { "matrix": [0, 14], "x": 14, "y": 0 }, + { "matrix": [3, 14], "x": 15.32, "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, 14], "x": 15.32, "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 }, + { "h": 2, "matrix": [2, 13], "w": 1.25, "x": 13.75, "y": 1 }, + { "matrix": [2, 14], "x": 15.32, "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.32, "y": 3.32 }, + { "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, 7], "w": 6.25, "x": 3.75, "y": 4 }, + { "matrix": [4, 10], "x": 10, "y": 4 }, + { "matrix": [4, 11], "x": 11, "y": 4 }, + { "matrix": [4, 12], "x": 12, "y": 4 }, + { "matrix": [4, 15], "x": 13.32, "y": 4.32 }, + { "matrix": [4, 13], "x": 14.32, "y": 4.32 }, + { "matrix": [4, 14], "x": 15.32, "y": 4.32 } + ] + } + } +} diff --git a/keyboards/quadrum/delta/keymaps/ansi/keymap.c b/keyboards/quadrum/delta/keymaps/ansi/keymap.c new file mode 100644 index 000000000000..7c509a233139 --- /dev/null +++ b/keyboards/quadrum/delta/keymaps/ansi/keymap.c @@ -0,0 +1,42 @@ +/* +Copyright 2023 Sleepdealer + +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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ansi( + KC_ESC, 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_DEL, KC_MUTE, + 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_PGUP, + 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_PGDN, + 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_ansi( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_RBT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; +#endif diff --git a/keyboards/quadrum/delta/keymaps/ansi/rules.mk b/keyboards/quadrum/delta/keymaps/ansi/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/quadrum/delta/keymaps/ansi/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/quadrum/delta/keymaps/default/keymap.c b/keyboards/quadrum/delta/keymaps/default/keymap.c new file mode 100644 index 000000000000..f9c8a59d271b --- /dev/null +++ b/keyboards/quadrum/delta/keymaps/default/keymap.c @@ -0,0 +1,42 @@ +/* +Copyright 2023 Sleepdealer + +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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_all( + KC_ESC, 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_DEL, KC_MUTE, + 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_PGUP, + 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_PGDN, + KC_LSFT, KC_NUBS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_all( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_RBT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; +#endif diff --git a/keyboards/quadrum/delta/keymaps/default/rules.mk b/keyboards/quadrum/delta/keymaps/default/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/quadrum/delta/keymaps/default/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/quadrum/delta/keymaps/iso/keymap.c b/keyboards/quadrum/delta/keymaps/iso/keymap.c new file mode 100644 index 000000000000..20a3db615099 --- /dev/null +++ b/keyboards/quadrum/delta/keymaps/iso/keymap.c @@ -0,0 +1,42 @@ +/* +Copyright 2023 Sleepdealer + +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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_iso( + KC_ESC, 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_DEL, KC_MUTE, + 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_PGUP, + 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_PGDN, + KC_LSFT, KC_NUBS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + [1] = LAYOUT_iso( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_RBT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; +#endif diff --git a/keyboards/quadrum/delta/keymaps/iso/rules.mk b/keyboards/quadrum/delta/keymaps/iso/rules.mk new file mode 100644 index 000000000000..ee325681483f --- /dev/null +++ b/keyboards/quadrum/delta/keymaps/iso/rules.mk @@ -0,0 +1 @@ +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/quadrum/delta/keymaps/via/keymap.c b/keyboards/quadrum/delta/keymaps/via/keymap.c new file mode 100644 index 000000000000..6d4e9835ae32 --- /dev/null +++ b/keyboards/quadrum/delta/keymaps/via/keymap.c @@ -0,0 +1,63 @@ +/* +Copyright 2023 Sleepdealer + +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 QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_all( + KC_ESC, 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_DEL, KC_MUTE, + 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_PGUP, + 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_PGDN, + KC_LSFT, KC_NUBS, 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_all( + KC_GRAVE, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, QK_RBT, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [2] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + + [3] = LAYOUT_all( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) + +}; + +#ifdef ENCODER_MAP_ENABLE +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; +#endif diff --git a/keyboards/quadrum/delta/keymaps/via/rules.mk b/keyboards/quadrum/delta/keymaps/via/rules.mk new file mode 100644 index 000000000000..f1adcab005e8 --- /dev/null +++ b/keyboards/quadrum/delta/keymaps/via/rules.mk @@ -0,0 +1,2 @@ +VIA_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/keyboards/quadrum/delta/readme.md b/keyboards/quadrum/delta/readme.md new file mode 100644 index 000000000000..b96b99dae924 --- /dev/null +++ b/keyboards/quadrum/delta/readme.md @@ -0,0 +1,25 @@ +# Delta + +Delta keyboard + +* Keyboard Maintainer: [Sleepdealer](https://github.com/Sleepdealr) +* Hardware Supported: Delta PCB by lfgberg +* Hardware Availability: Delta GB + +Make example for this keyboard (after setting up your build environment): + + make quadrum/delta:default + +Flashing example for this keyboard: + + make quadrum/delta: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/quadrum/delta/rules.mk b/keyboards/quadrum/delta/rules.mk new file mode 100644 index 000000000000..6968c523355c --- /dev/null +++ b/keyboards/quadrum/delta/rules.mk @@ -0,0 +1,2 @@ +# This file intentionally left blank + diff --git a/keyboards/tweetydabird/lotus58/config.h b/keyboards/tweetydabird/lotus58/config.h new file mode 100644 index 000000000000..5df12cfc03f8 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/config.h @@ -0,0 +1,13 @@ +// Copyright 2022 Markus Knutsson (@TweetyDaBird) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Options not yet fully implemented in info.json +#define RGBLIGHT_LIMIT_VAL 175 +#define RGBLIGHT_DEFAULT_VAL ( RGBLIGHT_LIMIT_VAL / 2 ) + +#define SPLIT_HAND_PIN B5 +#define SPLIT_LAYER_STATE_ENABLE +#define SPLIT_LED_STATE_ENABLE +#define SPLIT_OLED_ENABLE diff --git a/keyboards/tweetydabird/lotus58/elite_c/info.json b/keyboards/tweetydabird/lotus58/elite_c/info.json new file mode 100644 index 000000000000..8cebe9b8134f --- /dev/null +++ b/keyboards/tweetydabird/lotus58/elite_c/info.json @@ -0,0 +1,3 @@ +{ + "bootloader": "atmel-dfu" +} diff --git a/keyboards/tweetydabird/lotus58/elite_c/rules.mk b/keyboards/tweetydabird/lotus58/elite_c/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/elite_c/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/tweetydabird/lotus58/info.json b/keyboards/tweetydabird/lotus58/info.json new file mode 100644 index 000000000000..654fdd9a4c8b --- /dev/null +++ b/keyboards/tweetydabird/lotus58/info.json @@ -0,0 +1,136 @@ +{ + "manufacturer": "Tweetys Wild Thinking", + "keyboard_name": "Lotus 58 Glow (QMK)", + "maintainer": "TweetyDaBird", + "bootloader_instructions": "Short marked pads on PCB, or hold top-outer key when plugging in each hand.", + "build": { + "lto": true + }, + "diode_direction": "COL2ROW", + "encoder": { + "rotary": [ + { "pin_a": "F5", "pin_b": "F4", "resolution": 2 } + ] + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true, + "oled": true, + "encoder": true, + "rgblight": true, + "split": true, + "tri_layer": true + }, + "matrix_pins": { + "cols": ["B1", "B2", "B3", "B6", "F7", "F6"], + "rows": ["D4", "C6", "D7", "E6", "B4"] + }, + "pin_compatible": "promicro", + "processor": "atmega32u4", + "rgblight": { + "led_count": 70, + "pin": "D3", + "split": true, + "split_count": [35, 35], + "sleep": true + }, + "split": { + "bootmagic": { + "matrix": [5, 0] + }, + "enabled": true, + "encoder": { + "right": { + "rotary": [ + { "pin_a": "F4", "pin_b": "F5", "resolution": 2 } + ] + } + }, + "soft_serial_pin": "D2", + "transport": { + "protocol": "serial", + "sync_matrix_state": true, + "sync_modifiers": true + }, + "usb_detect": { + "enabled": true + } + }, + "url": "https://lectronz.com/stores/tweetys-wild-thinking", + "usb": { + "vid": "0xFEED", + "pid": "0x23B0", + "device_version": "1.2.3", + "force_nkro": true + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "label": "Esc", "matrix": [0, 0], "x": 0, "y": 0.75 }, + { "label": "1", "matrix": [0, 1], "x": 1, "y": 0.5 }, + { "label": "2", "matrix": [0, 2], "x": 2, "y": 0.25 }, + { "label": "3", "matrix": [0, 3], "x": 3, "y": 0 }, + { "label": "4", "matrix": [0, 4], "x": 4, "y": 0.25 }, + { "label": "5", "matrix": [0, 5], "x": 5, "y": 0.5 }, + { "label": "Left ENC", "matrix": [4, 0], "x": 6.25, "y": 0.75 }, + { "label": "Right ENC", "matrix": [9, 0], "x": 7.75, "y": 0.75 }, + { "label": "6", "matrix": [5, 5], "x": 9, "y": 0.5 }, + { "label": "7", "matrix": [5, 4], "x": 10, "y": 0.25 }, + { "label": "8", "matrix": [5, 3], "x": 11, "y": 0 }, + { "label": "9", "matrix": [5, 2], "x": 12, "y": 0.25 }, + { "label": "0", "matrix": [5, 1], "x": 13, "y": 0.5 }, + { "label": "-", "matrix": [5, 0], "x": 14, "y": 0.75 }, + { "label": "Tab", "matrix": [1, 0], "x": 0, "y": 1.75 }, + { "label": "Q", "matrix": [1, 1], "x": 1, "y": 1.5 }, + { "label": "W", "matrix": [1, 2], "x": 2, "y": 1.25 }, + { "label": "E", "matrix": [1, 3], "x": 3, "y": 1 }, + { "label": "R", "matrix": [1, 4], "x": 4, "y": 1.25 }, + { "label": "T", "matrix": [1, 5], "x": 5, "y": 1.5 }, + { "label": "Y", "matrix": [6, 5], "x": 9, "y": 1.5 }, + { "label": "U", "matrix": [6, 4], "x": 10, "y": 1.25 }, + { "label": "I", "matrix": [6, 3], "x": 11, "y": 1 }, + { "label": "O", "matrix": [6, 2], "x": 12, "y": 1.25 }, + { "label": "P", "matrix": [6, 1], "x": 13, "y": 1.5 }, + { "label": "{", "matrix": [6, 0], "x": 14, "y": 1.75 }, + { "label": "Caps Lock", "matrix": [2, 0], "x": 0, "y": 2.75 }, + { "label": "A", "matrix": [2, 1], "x": 1, "y": 2.5 }, + { "label": "S", "matrix": [2, 2], "x": 2, "y": 2.25 }, + { "label": "D", "matrix": [2, 3], "x": 3, "y": 2 }, + { "label": "F", "matrix": [2, 4], "x": 4, "y": 2.25 }, + { "label": "G", "matrix": [2, 5], "x": 5, "y": 2.5 }, + { "label": "H", "matrix": [7, 5], "x": 9, "y": 2.5 }, + { "label": "J", "matrix": [7, 4], "x": 10, "y": 2.25 }, + { "label": "K", "matrix": [7, 3], "x": 11, "y": 2 }, + { "label": "L", "matrix": [7, 2], "x": 12, "y": 2.25 }, + { "label": ":", "matrix": [7, 1], "x": 13, "y": 2.5 }, + { "label": "\"", "matrix": [7, 0], "x": 14, "y": 2.75 }, + { "label": "L_Ctrl", "matrix": [3, 0], "x": 0, "y": 3.75 }, + { "label": "Z", "matrix": [3, 1], "x": 1, "y": 3.5 }, + { "label": "X", "matrix": [3, 2], "x": 2, "y": 3.25 }, + { "label": "C", "matrix": [3, 3], "x": 3, "y": 3 }, + { "label": "V", "matrix": [3, 4], "x": 4, "y": 3.25 }, + { "label": "B", "matrix": [3, 5], "x": 5, "y": 3.5 }, + { "label": "Down", "matrix": [4, 5], "x": 6, "y": 3 }, + { "label": "Up", "matrix": [9, 5], "x": 8, "y": 3 }, + { "label": "N", "matrix": [8, 5], "x": 9, "y": 3.5 }, + { "label": "M", "matrix": [8, 4], "x": 10, "y": 3.25 }, + { "label": ",", "matrix": [8, 3], "x": 11, "y": 3 }, + { "label": ".", "matrix": [8, 2], "x": 12, "y": 3.25 }, + { "label": "?", "matrix": [8, 1], "x": 13, "y": 3.5 }, + { "label": "R_Ctrl", "matrix": [8, 0], "x": 14, "y": 3.75 }, + { "label": "Win", "matrix": [4, 1], "x": 2.5, "y": 4.25 }, + { "label": "Lower", "matrix": [4, 2], "x": 3.5, "y": 4.25 }, + { "label": "Alt", "matrix": [4, 3], "x": 4.5, "y": 4.5 }, + { "label": "Space", "matrix": [4, 4], "x": 6, "y": 4.25, "h": 1.25 }, + { "label": "Enter", "matrix": [9, 4], "x": 8, "y": 4.25, "h": 1.25 }, + { "label": "AltGr", "matrix": [9, 3], "x": 9.5, "y": 4.5 }, + { "label": "Raise", "matrix": [9, 2], "x": 10.5, "y": 4.25 }, + { "label": "BckSp", "matrix": [9, 1], "x": 11.5, "y": 4.25 } + ] + } + } +} diff --git a/keyboards/tweetydabird/lotus58/keymaps/default/keymap.c b/keyboards/tweetydabird/lotus58/keymaps/default/keymap.c new file mode 100644 index 000000000000..392ed06ec13b --- /dev/null +++ b/keyboards/tweetydabird/lotus58/keymaps/default/keymap.c @@ -0,0 +1,86 @@ +// Copyright 2022 Markus Knutsson (@TweetyDaBird) +// 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_1, KC_2, KC_3, KC_4, KC_5, KC_MPLY, KC_MPLY, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, + 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_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, +LCTL_T(KC_LEFT), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_DOWN, KC_UP, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RCTL_T(KC_RGHT), + KC_LGUI, TG(2), KC_LALT, LSFT_T(KC_SPC), RSFT_T(KC_ENT), KC_RALT, TG(1), RGUI_T(KC_BSPC) + ), + + [1] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_CIRC, KC_KP_7, KC_KP_8, KC_KP_9, XXXXXXX, XXXXXXX, + _______, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, KC_HASH, KC_KP_4, KC_KP_5, KC_KP_6, XXXXXXX, XXXXXXX, + XXXXXXX, KC_LEFT, KC_DOWN, KC_RIGHT,KC_LBRC, KC_RBRC, KC_AMPR, KC_KP_1, KC_KP_2, KC_KP_3, XXXXXXX, XXXXXXX, + _______, XXXXXXX, KC_PAST, KC_PPLS, KC_PSLS, KC_EQL, _______, _______, KC_DLR, KC_KP_0, KC_PDOT, KC_COLN, KC_PMNS, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [2] = LAYOUT( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______ + ), + + [3] = LAYOUT( + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_SAI, RGB_TOG, + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD,RGB_SAD, RGB_M_P, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CAPS, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, RGB_VAI, RGB_M_B, + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUD, RGB_VAD, RGB_M_R, + _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +#if defined(ENCODER_MAP_ENABLE) +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = { + [0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [1] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [2] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [3] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) } +}; +#endif + +#ifdef OLED_ENABLE +static void print_status_narrow(void) { + // Create OLED content + oled_write_P(PSTR("\n"), false); + oled_write_P(PSTR(""), false); + oled_write_P(PSTR("Lotus -58-"), false); + oled_write_P(PSTR("\n"), false); + + // Print current layer + oled_write_P(PSTR("Layer"), false); + switch (get_highest_layer(layer_state)) { + case 0: + oled_write_P(PSTR("-Base\n"), false); + break; + case 1: + oled_write_P(PSTR("-Num \n"), false); + break; + case 2: + oled_write_P(PSTR("-Func\n"), false); + break; + case 3: + oled_write_P(PSTR("-Sys \n"), false); + break; + default: + oled_write_P(PSTR("Undef"), false); + } + + oled_write_P(PSTR("\n"), false); + led_t led_usb_state = host_keyboard_led_state(); + oled_write_ln_P(PSTR("Caps- lock"), led_usb_state.caps_lock); + +} + +bool oled_task_user(void) { + // Render the OLED + print_status_narrow(); + return false; +} +#endif \ No newline at end of file diff --git a/keyboards/tweetydabird/lotus58/keymaps/default/rules.mk b/keyboards/tweetydabird/lotus58/keymaps/default/rules.mk new file mode 100644 index 000000000000..a944672a67b2 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/keymaps/default/rules.mk @@ -0,0 +1,2 @@ +ENCODER_MAP_ENABLE = yes +AUTO_SHIFT_ENABLE = yes diff --git a/keyboards/tweetydabird/lotus58/lotus58.c b/keyboards/tweetydabird/lotus58/lotus58.c new file mode 100644 index 000000000000..a06c88111cce --- /dev/null +++ b/keyboards/tweetydabird/lotus58/lotus58.c @@ -0,0 +1,29 @@ +// Copyright 2022 Markus Knutsson (@TweetyDaBird) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" + +#ifdef OLED_ENABLE + +oled_rotation_t oled_init_kb(oled_rotation_t rotation) { + return OLED_ROTATION_90; +} + +void render_logo(void) { + // QMK Logo + static const char PROGMEM qmk_logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, + 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00 + }; + oled_write_P(qmk_logo, false); +} + +bool oled_task_kb(void) { + if (!oled_task_user()) { + return false; + } + render_logo(); + return false; +} +#endif \ No newline at end of file diff --git a/keyboards/tweetydabird/lotus58/nanoboot/rules.mk b/keyboards/tweetydabird/lotus58/nanoboot/rules.mk new file mode 100644 index 000000000000..1d937578bd9e --- /dev/null +++ b/keyboards/tweetydabird/lotus58/nanoboot/rules.mk @@ -0,0 +1,2 @@ +BOOTLOADER = qmk-hid +BOOTLOADER_SIZE = 512 diff --git a/keyboards/tweetydabird/lotus58/promicro/info.json b/keyboards/tweetydabird/lotus58/promicro/info.json new file mode 100644 index 000000000000..56062f7ad371 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/promicro/info.json @@ -0,0 +1,3 @@ +{ + "bootloader": "caterina" +} diff --git a/keyboards/tweetydabird/lotus58/promicro/rules.mk b/keyboards/tweetydabird/lotus58/promicro/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/promicro/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/tweetydabird/lotus58/readme.md b/keyboards/tweetydabird/lotus58/readme.md new file mode 100644 index 000000000000..57a89a9b0372 --- /dev/null +++ b/keyboards/tweetydabird/lotus58/readme.md @@ -0,0 +1,37 @@ +# Lotus 58 Glow + + + +* Lotus 58 Glow is a fully programmable 58-key split, ortho-columnar keyboard with a 4x6 main matrix and 4+1 thumb-keys per hand. Optional support for one OLED screen per hand/side showing information such as active layer, CapsLock/NumLock etc. as well as one Rotary Encoder per hand, with optional placement. + +* Keyboard Maintainer: [TweetyDaBird](https://github.com/TweetyDaBird) +* Hardware Supported: *Lotus 58 Glow v1.11 - 1.2x PCB, Pro Micro or pin-compatible* +* Hardware Availability: [Lectronz Store](https://lectronz.com/stores/tweetys-wild-thinking) +* Hardware Design: [GitHub](https://github.com/TweetyDaBird/Lotus58) + + +#### This keyboard firmware contains three different versions, all for the same PCB/hardware, but depending on your choice of controller/bootloader. + + +* promicro - This uses the default Caterina bootloader. +* elite_c - This uses the Atmel-DFU bootloader. +* nanoBoot - A tiny 512 byte bootloader giving far more usable memory for features (can be used on both Elite C and Pro Micro). + + +Make example for this keyboard (after setting up your build environment): + + make tweetydabird/lotus58/promicro:default + +Flashing example for this keyboard: + + make tweetydabird/lotus58/elite_c: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 top outer key for each hand as it is plugged in +* **Physical reset**: Briefly short the marked pads on PCB +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if mapped (not in default keymap)