diff --git a/data/schemas/keyboard.jsonschema b/data/schemas/keyboard.jsonschema index 6f4f9c82ac01..2afc1ed516f1 100644 --- a/data/schemas/keyboard.jsonschema +++ b/data/schemas/keyboard.jsonschema @@ -23,6 +23,7 @@ } }, "type": "object", + "not": { "required": [ "vendorId", "productId" ] }, // reject via keys... "properties": { "keyboard_name": {"$ref": "qmk.definitions.v1#/text_identifier"}, "keyboard_folder": {"$ref": "qmk.definitions.v1#/keyboard"}, diff --git a/docs/feature_split_keyboard.md b/docs/feature_split_keyboard.md index 25f7473bda89..c095c8712fb6 100644 --- a/docs/feature_split_keyboard.md +++ b/docs/feature_split_keyboard.md @@ -79,6 +79,16 @@ If you're using a custom transport (communication method), then you will also ne SPLIT_TRANSPORT = custom ``` +### Layout Macro + +Configuring your layout in a split keyboard works slightly differently to a non-split keyboard. Take for example the following layout. The top left numbers refer to the matrix row and column, and the bottom right are the order of the keys in the layout: + +![Physical layout](https://i.imgur.com/QeY6kMQ.png) + +Since the matrix scanning procedure operates on entire rows, it first populates the left half's rows, then the right half's. Thus, the matrix as QMK views it has double the rows instead of double the columns: + +![Matrix](https://i.imgur.com/4wjJzBU.png) + ### Setting Handedness By default, the firmware does not know which side is which; it needs some help to determine that. There are several ways to do this, listed in order of precedence. diff --git a/docs/newbs_building_firmware_workflow.md b/docs/newbs_building_firmware_workflow.md index 99b32f0b7139..e6895252aa55 100644 --- a/docs/newbs_building_firmware_workflow.md +++ b/docs/newbs_building_firmware_workflow.md @@ -106,6 +106,9 @@ jobs: steps: + - name: Disable git safe directory checks + run : git config --global --add safe.directory '*' + - name: Checkout QMK uses: actions/checkout@v3 with: diff --git a/docs/porting_your_keyboard_to_qmk.md b/docs/porting_your_keyboard_to_qmk.md index e6a3a72cda24..b0213a6d7005 100644 --- a/docs/porting_your_keyboard_to_qmk.md +++ b/docs/porting_your_keyboard_to_qmk.md @@ -150,6 +150,8 @@ In the above example, * It must conform to the [layout guidelines](hardware_keyboard_guidelines.md#ltkeyboard_namehgt) * `"matrix": [0, 0]` defines the electrical position +?> See also: [Split Keyboard Layout Macro](https://docs.qmk.fm/#/feature_split_keyboard?id=layout-macro) and [Matrix to Physical Layout](https://docs.qmk.fm/#/understanding_qmk?id=matrix-to-physical-layout-map). + ## Additional Configuration There are a lot of features that can be turned on or off, configured or tuned. Some of these have yet to be migrated over to [Data Driven Configuration](data_driven_config.md). The following sections cover the process for when an `info.json` option is unavailable. diff --git a/keyboards/anavi/knobs3/info.json b/keyboards/anavi/knobs3/info.json new file mode 100644 index 000000000000..8bea49066d36 --- /dev/null +++ b/keyboards/anavi/knobs3/info.json @@ -0,0 +1,76 @@ +{ + "keyboard_name": "Knobs 3", + "manufacturer": "ANAVI", + "url": "https://github.com/AnaviTechnology/anavi-knobs-3", + "maintainer": "leon-anavi", + "processor": "RP2040", + "bootloader": "rp2040", + "matrix_pins": { + "direct": [ + ["GP26", "GP29", "GP0"] + ] + }, + "features": { + "bootmagic": false, + "command": false, + "console": false, + "extrakey": true, + "mousekey": false, + "nkro": true, + "rgblight": true + }, + "rgblight": { + "pin": "GP12", + "led_count": 1, + "hue_steps": 10, + "saturation_steps": 17, + "brightness_steps": 17, + "max_brightness": 255, + "animations": { + "alternating": true, + "breathing": true, + "christmas": true, + "knight": true, + "rainbow_mood": true, + "rainbow_swirl": true, + "rgb_test": true, + "snake": true, + "static_gradient": true, + "twinkle": true + } + }, + "encoder": { + "enabled": true, + "rotary": [ + { + "pin_a": "GP27", + "pin_b": "GP28", + "resolution": 2 + }, + { + "pin_a": "GP4", + "pin_b": "GP3", + "resolution": 2 + }, + { + "pin_a": "GP1", + "pin_b": "GP2", + "resolution": 2 + } + ] + }, + "layouts": { + "LAYOUT": { + "layout": [ + { "label":"Mute", "x": 0, "y": 0, "matrix": [0, 0] }, + { "label":"RGB", "x": 0, "y": 1, "matrix": [0, 1] }, + { "label":"Animation", "x": 0, "y": 2, "matrix": [0, 2] } + ] + } + }, + "usb": { + "device_version": "1.0.0", + "pid": "0x9A25", + "vid": "0xFEED" + } +} diff --git a/keyboards/anavi/knobs3/keymaps/default/keymap.c b/keyboards/anavi/knobs3/keymaps/default/keymap.c new file mode 100644 index 000000000000..e5eaa2f1e19c --- /dev/null +++ b/keyboards/anavi/knobs3/keymaps/default/keymap.c @@ -0,0 +1,10 @@ +// Copyright 2022 Leon Anavi +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT( + KC_MUTE, RGB_TOG, RGB_MOD + ) +}; diff --git a/keyboards/anavi/knobs3/knobs3.c b/keyboards/anavi/knobs3/knobs3.c new file mode 100644 index 000000000000..efae0101636f --- /dev/null +++ b/keyboards/anavi/knobs3/knobs3.c @@ -0,0 +1,73 @@ +// Copyright 2022 Leon Anavi +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "quantum.h" +#include + +void keyboard_post_init_kb(void) { + // Enable RGB LED + setPinOutput(GP11); + writePinHigh(GP11); + rgblight_enable(); + + // Offload to the user func + keyboard_post_init_user(); +} + +#ifdef ENCODER_ENABLE +bool encoder_update_kb(uint8_t index, bool clockwise) { + if (!encoder_update_user(index, clockwise)) { return false; } + if (0 == index) { + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } else if (1 == index) { + if (clockwise) { + tap_code(KC_UP); + } else { + tap_code(KC_DOWN); + } + } else if (2 == index) { + if (clockwise) { + tap_code(KC_LEFT); + } else { + tap_code(KC_RIGHT); + } + } + return true; +} +#endif + +#ifdef OLED_ENABLE + +bool oled_task_kb(void) { + + if (!oled_task_user()) { + return false; + } + + // Host Keyboard Layer Status + oled_write_ln_P(PSTR("ANAVI Knobs 3"), false); + oled_write_ln_P(PSTR("Keymap: Default"), false); + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("Num Lock: "), false); + oled_write_ln_P(led_state.num_lock ? PSTR("On") : PSTR("Off"), false); + oled_write_P(PSTR("Caps Lock: "), false); + oled_write_ln_P(led_state.caps_lock ? PSTR("On") : PSTR("Off"), false); + oled_write_P(PSTR("Scroll Lock: "), false); + oled_write_ln_P(led_state.scroll_lock ? PSTR("On") : PSTR("Off"), false); +#ifdef RGBLIGHT_ENABLE + static char rgbStatusLine1[26] = {0}; + snprintf(rgbStatusLine1, sizeof(rgbStatusLine1), "RGB Mode: %d", rgblight_get_mode()); + oled_write_ln(rgbStatusLine1, false); + static char rgbStatusLine2[26] = {0}; + snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val()); + oled_write_ln(rgbStatusLine2, false); +#endif + return false; +} +#endif diff --git a/keyboards/anavi/knobs3/mcuconf.h b/keyboards/anavi/knobs3/mcuconf.h new file mode 100644 index 000000000000..eb1c98372fba --- /dev/null +++ b/keyboards/anavi/knobs3/mcuconf.h @@ -0,0 +1,12 @@ +// Copyright 2022 Leon Anavi (@leon-anavi) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef RP_I2C_USE_I2C0 +#define RP_I2C_USE_I2C0 FALSE + +#undef RP_I2C_USE_I2C1 +#define RP_I2C_USE_I2C1 TRUE diff --git a/keyboards/anavi/knobs3/readme.md b/keyboards/anavi/knobs3/readme.md new file mode 100644 index 000000000000..09d80b72f4b8 --- /dev/null +++ b/keyboards/anavi/knobs3/readme.md @@ -0,0 +1,25 @@ +# ANAVI Knobs 3 + +Mini mechanical keyboard with 3 clickable rotary encoders, USB-C, RP2040 microcontroller and I2C slot for mini OLED display. + +* Keyboard Maintainer: [Leon Anavi](https://github.com/leon-anavi) +* Hardware Supported: ANAVI Knobs 3 +* Hardware Availability: [Crowd Supply](https://www.crowdsupply.com/anavi-technology/anavi-macro-pad-10), [GitHub repository](https://github.com/AnaviTechnology/anavi-knobs-3) + +Make example for this keyboard (after setting up your build environment): + + make anavi/knobs3:default + +Flashing example for this keyboard: + + make anavi/knobs3: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 on the left half, or top right key on the right half, and then plug in the USB cable on that keyboard half. +* **Physical reset button**: Double tap the reset button on the XIAO RP2040. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available. diff --git a/keyboards/anavi/knobs3/rules.mk b/keyboards/anavi/knobs3/rules.mk new file mode 100644 index 000000000000..ed8acbe4ac10 --- /dev/null +++ b/keyboards/anavi/knobs3/rules.mk @@ -0,0 +1,6 @@ +WS2812_DRIVER = vendor + +OLED_ENABLE = yes +OLED_DRIVER = SSD1306 # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C + +OPT_DEFS += -DHAL_USE_I2C=TRUE diff --git a/keyboards/gummykey/config.h b/keyboards/gummykey/config.h new file mode 100644 index 000000000000..30f6269abc56 --- /dev/null +++ b/keyboards/gummykey/config.h @@ -0,0 +1,26 @@ +// Copyright 2023 Gummor (@gumorr) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + + +#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 } +#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2 } + +#define USE_I2C + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/gummykey/gummykey.c b/keyboards/gummykey/gummykey.c new file mode 100644 index 000000000000..3669d08057f4 --- /dev/null +++ b/keyboards/gummykey/gummykey.c @@ -0,0 +1,4 @@ +// Copyright 2023 Gummor (@gumorr) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "gummykey.h" diff --git a/keyboards/gummykey/gummykey.h b/keyboards/gummykey/gummykey.h new file mode 100644 index 000000000000..79d36dc8a550 --- /dev/null +++ b/keyboards/gummykey/gummykey.h @@ -0,0 +1,28 @@ +// Copyright 2023 Gummor (@gumorr) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "quantum.h" + +#define ___ KC_NO + +#define LAYOUT_split_4x6_5( \ + L00, L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, R00, \ + L10, L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, R10, \ + L20, L21, L22, L23, L24, L25, R25, R24, R23, R22, R21, R20, \ + L30, L31, L32, L33, L34, L35, R35, R34, R33, R32, R31, R30, \ + L40, L41, L42, L44, L45, R45, R44, R42, R41, R40 \ +) \ +{ \ + { L00, L01, L02, L03, L04, L05 }, \ + { L10, L11, L12, L13, L14, L15 }, \ + { L20, L21, L22, L23, L24, L25 }, \ + { L30, L31, L32, L33, L34, L35 }, \ + { L40, L41, L42, ___, L44, L45 }, \ + { R00, R01, R02, R03, R04, R05 }, \ + { R10, R11, R12, R13, R14, R15 }, \ + { R20, R21, R22, R23, R24, R25 }, \ + { R30, R31, R32, R33, R34, R35 }, \ + { R40, R41, R42, ___, R44, R45 } \ +} diff --git a/keyboards/gummykey/info.json b/keyboards/gummykey/info.json new file mode 100644 index 000000000000..4f2136f358cd --- /dev/null +++ b/keyboards/gummykey/info.json @@ -0,0 +1,89 @@ +{ + "keyboard_name": "GummyKey", + "manufacturer": "Gumorr", + "url": "https://github.com/gumorr/GummyKey", + "maintainer": "Gumorr", + "usb": { + "vid": "0xAA12", + "pid": "0x0001", + "device_version": "1.0.0" + }, + "processor": "atmega32u4", + "bootloader": "caterina", + "diode_direction": "ROW2COL", + "layouts": { + "LAYOUT_split_4x6_5": { + "layout": + [ + {"x":0.25, "y":0}, + {"x":1.25, "y":0}, + {"x":2.25, "y":0}, + {"x":3.25, "y":0}, + {"x":4.25, "y":0.125}, + {"x":5.25, "y":0.25}, + + {"x":0.25, "y":1}, + {"x":1.25, "y":1}, + {"x":2.25, "y":1}, + {"x":3.25, "y":1}, + {"x":4.25, "y":1.125}, + {"x":5.25, "y":1.25}, + + {"x":0, "y":2, "w":1.25}, + {"x":1.25, "y":2}, + {"x":2.25, "y":2}, + {"x":3.25, "y":2}, + {"x":4.25, "y":2.125}, + {"x":5.25, "y":2.25}, + + {"x":0, "y":3, "w":1.25}, + {"x":1.25, "y":3}, + {"x":2.25, "y":3}, + {"x":3.25, "y":3}, + {"x":4.25, "y":3.125}, + {"x":5.25, "y":3.25}, + + {"x":0, "y":4, "w":1.25}, + {"x":1.25, "y":4}, + {"x":2.25, "y":4}, + {"x":3.5, "y":4.25, "w":2.25}, + {"x":6.75, "y":4.25}, + + + {"x":13.25, "y":0}, + {"x":12.25, "y":0}, + {"x":11.25, "y":0}, + {"x":10.25, "y":0}, + {"x":9.25, "y":0.125}, + {"x":8.25, "y":0.25}, + + {"x":13.25, "y":1}, + {"x":12.25, "y":1}, + {"x":11.25, "y":1}, + {"x":10.25, "y":1}, + {"x":9.25, "y":1.125}, + {"x":8.25, "y":1.25}, + + {"x":13.25, "y":2, "w":1.25}, + {"x":12.25, "y":2}, + {"x":11.25, "y":2}, + {"x":10.25, "y":2}, + {"x":9.25, "y":2.125}, + {"x":8.25, "y":2.25}, + + {"x":13.25, "y":3, "w":1.25}, + {"x":12.25, "y":3}, + {"x":11.25, "y":3}, + {"x":10.25, "y":3}, + {"x":9.25, "y":3.125}, + {"x":8.25, "y":3.25}, + + {"x":13.25, "y":4, "w":1.25}, + {"x":12.25, "y":4}, + {"x":11.25, "y":4}, + {"x":8, "y":4.25, "w":2.25}, + {"x":7, "y":4.25} + ] + } + } +} diff --git a/keyboards/gummykey/keymaps/default/keymap.c b/keyboards/gummykey/keymaps/default/keymap.c new file mode 100644 index 000000000000..d950e3b59a4a --- /dev/null +++ b/keyboards/gummykey/keymaps/default/keymap.c @@ -0,0 +1,32 @@ +// Copyright 2023 Gummor (@gumorr) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FUNCTION +}; + +#define FUNCT MO(_FUNCTION) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[_BASE] = LAYOUT_split_4x6_5( + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, + KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS, + KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, + 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_LCTL, KC_LGUI, KC_LALT, KC_SPC, FUNCT, FUNCT, KC_SPC, KC_RALT, KC_APP, KC_RCTL +), + +[_FUNCTION] = LAYOUT_split_4x6_5( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL, + _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, + KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_CAPS, + KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, KC_RSFT, + _______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT +), + +}; diff --git a/keyboards/gummykey/readme.md b/keyboards/gummykey/readme.md new file mode 100644 index 000000000000..80558ee3307a --- /dev/null +++ b/keyboards/gummykey/readme.md @@ -0,0 +1,27 @@ +# GummyKey + +![gummykey](https://i.imgur.com/R6ffs2Bh.png) + +a 4x6+5 split keyboard i made + +* Keyboard Maintainer: [Gummor](https://github.com/gumorr) +* Hardware Supported: Pro Micro +* Hardware Availability: [Github](https://github.com/gumorr/GummyKey) + +Make example for this keyboard (after setting up your build environment): + + make gummykey:default + +Flashing example for this keyboard: + + make gummykey: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 \ No newline at end of file diff --git a/keyboards/gummykey/rules.mk b/keyboards/gummykey/rules.mk new file mode 100644 index 000000000000..b043543633bf --- /dev/null +++ b/keyboards/gummykey/rules.mk @@ -0,0 +1,13 @@ +# Build Options +# change yes to no to disable +# +BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite +MOUSEKEY_ENABLE = yes # Mouse keys +EXTRAKEY_ENABLE = yes # Audio control and System control +CONSOLE_ENABLE = no # Console for debug +COMMAND_ENABLE = no # Commands for debug and configuration +NKRO_ENABLE = no # Enable N-Key Rollover +BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow +AUDIO_ENABLE = no # Audio output +SPLIT_KEYBOARD = yes diff --git a/keyboards/handwired/sejin_eat1010r2/info.json b/keyboards/handwired/sejin_eat1010r2/info.json new file mode 100644 index 000000000000..e913412a9f76 --- /dev/null +++ b/keyboards/handwired/sejin_eat1010r2/info.json @@ -0,0 +1,39 @@ +{ + "keyboard_name": "EAT-1010R2", + "manufacturer": "Sejin", + "url": "", + "maintainer": "DmNosachev", + "usb": { + "vid": "0x515A", + "pid": "0x4D4D", + "device_version": "0.0.1" + }, + "diode_direction": "COL2ROW", + "development_board": "bluepill", + "matrix_pins": { + "cols": ["B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15", "C13", "C14", "C15", "A0", "A1", "A2", "A3", "A4"], + "rows": ["B11", "B12", "B13", "B14", "B15", "A8", "A9", "A10"], + "ghost": true + }, + "indicators": { + "caps_lock": "B1", + "num_lock": "B0", + "scroll_lock": "B10" + }, + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": false + }, + "bootmagic": { + "matrix": [1, 0] + }, + "layouts": { + "LAYOUT": { + "layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"|", "x":13, "y":1.5}, {"label":"\u2190", "x":14, "y":1.5}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"Enter", "x":13.5, "y":2.5, "w":1.5, "h":2}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}] + } + } +} diff --git a/keyboards/handwired/sejin_eat1010r2/keymaps/debug/keymap.c b/keyboards/handwired/sejin_eat1010r2/keymaps/debug/keymap.c new file mode 100644 index 000000000000..67691cd54242 --- /dev/null +++ b/keyboards/handwired/sejin_eat1010r2/keymaps/debug/keymap.c @@ -0,0 +1,38 @@ +/* Copyright 2023 DmNosachev + * + * 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 . + */ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Base */ + [0] = LAYOUT_debug( + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + // If console is enabled, it will print the matrix position and status of each key pressed +#ifdef CONSOLE_ENABLE + uprintf("row: %u, col: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed); +#endif + return true; +} \ No newline at end of file diff --git a/keyboards/handwired/sejin_eat1010r2/keymaps/debug/rules.mk b/keyboards/handwired/sejin_eat1010r2/keymaps/debug/rules.mk new file mode 100644 index 000000000000..032f2ee316aa --- /dev/null +++ b/keyboards/handwired/sejin_eat1010r2/keymaps/debug/rules.mk @@ -0,0 +1 @@ +CONSOLE_ENABLE = yes # Console for debug diff --git a/keyboards/handwired/sejin_eat1010r2/keymaps/default/keymap.c b/keyboards/handwired/sejin_eat1010r2/keymaps/default/keymap.c new file mode 100644 index 000000000000..8ab4907331df --- /dev/null +++ b/keyboards/handwired/sejin_eat1010r2/keymaps/default/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2023 DmNosachev + * + * 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 . + */ +#include QMK_KEYBOARD_H + +// Defines names for use in layer keycodes and the keymap +enum layer_names { + _BASE, + _FN1 +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +/* + * ,---------------------------------------------------------------------------------------------------------------------------------------. + * | Esc | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 | F10 | F11 | F12 | |PrnSc|ScrLk|Pause| | + * |---------------------------------------------------------------------------------------------------------------------------------------| + * | ~ ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | Bsp | |Insrt|Home |PgUp | |NumLk| / | * | - | + * |---------------------------------------------------------------------------------------------------------------------------------------| + * | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | | | Del | End |PgDn | | 7 | 8 | 9 | + | + * |-------------------------------------------------------------------------------| | --------------------------------------| | + * | Caps | A | S | D | F | G | H | J | K | L | ;: | '" | Enter | | 4 | 5 | 6 | | + * |---------------------------------------------------------------------------------------------------------------------------------------| + * | Shift | Z | X | C | V | B | N | M | , | . | /? | Shift | | Up | | 1 | 2 | 3 |Enter| + * |-----------------------------------------------------------------------------------------|---------------------------------------| | + * | Ctrl | | Alt | Space | Alt | | Ctr | |Left |Down |Right| | 0 | . | | + * `---------------------------------------------------------------------------------------------------------------------------------------' +*/ + [_BASE] = 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_PSCR, KC_SCRL, KC_PAUS, + 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_BSLS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, + 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_ENT, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS, + 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_P4, KC_P5, KC_P6, + 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_P1, KC_P2, KC_P3, KC_PENT, + KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT + ) +}; diff --git a/keyboards/handwired/sejin_eat1010r2/readme.md b/keyboards/handwired/sejin_eat1010r2/readme.md new file mode 100644 index 000000000000..397e1f5c88b9 --- /dev/null +++ b/keyboards/handwired/sejin_eat1010r2/readme.md @@ -0,0 +1,48 @@ +# QMK-based firmware for Sejin EAT-1010R2 keyboard + +* Keyboard Maintainer: [DmNosachev](https://github.com/DmNosachev) +* Hardware Supported: Sejin EAT-1010R2 (membrane keyboard, Sejin +Futaba-mount dome, Asian 101 ISO layout), Blue/Black Pill STM32F103 MCU +oard. Alternatevely you can use any MCU which is supported by QMK and +has 27 or more IO pins + +Make example for this keyboard (after setting up your build environment): + + make handwired/sejin_eat1010r2:default + +Flashing example for this keyboard: + + make handwired/sejin_eat1010r2: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). + +## Additional hardware +* 16 and 8 pin 2.54mm (0.1'') FPC connectors. They can be found at +Aliexpress for 2–3 USD for 10pcs. Two 8 pin connectors can be glued +together as a replacement for 16 pin. +* Three 5mm LEDs and current limiting resistors (150–300Ω, depending on +LED specs). This keyboard has exactly the same spacing between LEDs as +IBM Model M, so a corresponding PCB can be used after adding resistors. + +## Membrane +Sejin EAT-1010R2 has 16x8 matrix. There are 16 and 8 pin flex connectors +from membrane sheets. Solder FPC connectors to devboard (numbering from +left to right, see *matrix_pins* in info.json file). + +## Bootloader +Burn [STM32duino bootloader](https://github.com/rogerclarkmelbourne/STM32duino-bootloader) +to Blue Pill board. + +There are several ways to get into the bootloader: +* STM32duino bootloader waits for 3 seconds in DFU mode before jumping to application. +You just have to start the flashing process, then connect the USB. +* This firmware is configured with [bootmagic feature](https://docs.qmk.fm/#/feature_bootmagic). +Hold the ESC key down when plugging the keyboard in to trigger the bootloader. + +## Troubleshooting +There is *debug* layout which has mapping for every matrix position and +prints column and raw numbers to console (hid_listen or QMK toolbox). diff --git a/keyboards/handwired/sejin_eat1010r2/rules.mk b/keyboards/handwired/sejin_eat1010r2/rules.mk new file mode 100644 index 000000000000..a92b0993283e --- /dev/null +++ b/keyboards/handwired/sejin_eat1010r2/rules.mk @@ -0,0 +1,2 @@ +# Enter lower-power sleep mode when on the ChibiOS idle thread +OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE diff --git a/keyboards/handwired/sejin_eat1010r2/sejin_eat1010r2.h b/keyboards/handwired/sejin_eat1010r2/sejin_eat1010r2.h new file mode 100644 index 000000000000..9618ed6b649b --- /dev/null +++ b/keyboards/handwired/sejin_eat1010r2/sejin_eat1010r2.h @@ -0,0 +1,74 @@ +/* Copyright 2023 DmNosachev + * + * 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 . + */ + +#pragma once + +#include "quantum.h" + +/* readability */ +#define XXX KC_NO + +/* 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( \ + K10, K1B, K2B, K27, K17, K15, K25, K14, K13, K24, K35, K26, K16, K1C, K2C, K1D, \ + K20, K30, K3B, K37, K21, K11, K12, K22, K45, K34, K23, K33, K44, K06, K46, K36, K3C, K3D, K2D, K3E, K4E, K3F, \ + K40, K00, K4B, K47, K41, K31, K32, K42, K55, K04, K43, K03, K54, K07, K05, K4C, K0C, K0D, K4D, K0E, K4F, \ + K70, K50, K0B, K67, K51, K01, K02, K52, K65, K64, K53, K63, K5C, K5D, K5E, \ + K7A, K6B, K5B, K77, K71, K61, K62, K72, K75, K74, K73, K6A, K56, K6C, K6D, K6E, K5F, \ + K79, K78, K7B, K68, K69, K66, K76, K7C, K7E, K7F \ +) \ +{ \ +/* 0 */ { K00, K01, K02, K03, K04, K05, K06, K07, XXX, XXX, XXX, K0B, K0C, K0D, K0E, XXX }, \ +/* 1 */ { K10, K11, K12, K13, K14, K15, K16, K17, XXX, XXX, XXX, K1B, K1C, K1D, XXX, XXX }, \ +/* 2 */ { K20, K21, K22, K23, K24, K25, K26, K27, XXX, XXX, XXX, K2B, K2C, K2D, XXX, XXX }, \ +/* 3 */ { K30, K31, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX, K3B, K3C, K3D, K3E, K3F }, \ +/* 4 */ { K40, K41, K42, K43, K44, K45, K46, K47, XXX, XXX, XXX, K4B, K4C, K4D, K4E, K4F }, \ +/* 5 */ { K50, K51, K52, K53, K54, K55, K56, XXX, XXX, XXX, XXX, K5B, K5C, K5D, K5E, K5F }, \ +/* 6 */ { XXX, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, XXX }, \ +/* 7 */ { K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C, XXX, K7E, K7F } \ +} +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + +#define LAYOUT_debug( \ + K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \ + K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \ + K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \ + K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \ + K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, \ + K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, \ + K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F, \ + K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C, K7D, K7E, K7F \ +) \ +{ \ +/* 0 */ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \ +/* 1 */ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \ +/* 2 */ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \ +/* 3 */ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \ +/* 4 */ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \ +/* 5 */ { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \ +/* 6 */ { K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \ +/* 7 */ { K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C, K7D, K7E, K7F } \ +} +/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */ + diff --git a/keyboards/karn/config.h b/keyboards/karn/config.h new file mode 100644 index 000000000000..2e737bfd7107 --- /dev/null +++ b/keyboards/karn/config.h @@ -0,0 +1,18 @@ +// Copyright 2023 Robert Mills (@robcmills) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define DIRECT_PINS {{NO_PIN, A15,A8, B15, B14, B13}, \ + {B10, B1, B0, A7, A6, A5 }, \ + {NO_PIN, B3, B4, B5, B8, B9 }, \ + {A4, A3, A2, NO_PIN, NO_PIN, NO_PIN}} + +#define DIRECT_PINS_RIGHT {{B13, B14, B15, A8, A15, NO_PIN}, \ + {A5, A6, A7, B0, B1, B10}, \ + {B9, B8, B5, B4, B3, NO_PIN}, \ + {A2, A3, A4, NO_PIN, NO_PIN, NO_PIN}} + +#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode. +#define SERIAL_USART_TX_PIN B6 // USART TX pin +#define SERIAL_USART_RX_PIN B7 // USART RX pin diff --git a/keyboards/karn/halconf.h b/keyboards/karn/halconf.h new file mode 100644 index 000000000000..150de899ab69 --- /dev/null +++ b/keyboards/karn/halconf.h @@ -0,0 +1,8 @@ +// Copyright 2023 Robert Mills (@robcmills) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#define HAL_USE_SERIAL TRUE + +#include_next diff --git a/keyboards/karn/info.json b/keyboards/karn/info.json new file mode 100644 index 000000000000..961aa8efd24d --- /dev/null +++ b/keyboards/karn/info.json @@ -0,0 +1,75 @@ +{ + "manufacturer": "Robert Mills", + "keyboard_name": "karn", + "maintainer": "robcmills", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "development_board": "blackpill_f401", + "url": "https://github.com/robcmills/karn-keyboard", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "bootmagic": { + "matrix": [0, 1] + }, + "split": { + "enabled": true + }, + "community_layouts": ["split_3x6_3"], + "layouts": { + "LAYOUT_split_3x6_3": { + "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": [4, 0], "x": 8, "y": 0}, + { "matrix": [4, 1], "x": 9, "y": 0 }, + { "matrix": [4, 2], "x": 10, "y": 0 }, + { "matrix": [4, 3], "x": 11, "y": 0 }, + { "matrix": [4, 4], "x": 12, "y": 0}, + { "matrix": [4, 5], "x": 13, "y": 0}, + { "matrix": [1, 0], "x": 0, "y": 1}, + { "matrix": [1, 1], "x": 1, "y": 1}, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1 }, + { "matrix": [1, 4], "x": 4, "y": 1 }, + { "matrix": [1, 5], "x": 5, "y": 1}, + { "matrix": [5, 0], "x": 8, "y": 1}, + { "matrix": [5, 1], "x": 9, "y": 1 }, + { "matrix": [5, 2], "x": 10, "y": 1 }, + { "matrix": [5, 3], "x": 11, "y": 1 }, + { "matrix": [5, 4], "x": 12, "y": 1}, + { "matrix": [5, 5], "x": 13, "y": 1}, + { "matrix": [2, 0], "x": 0, "y": 2}, + { "matrix": [2, 1], "x": 1, "y": 2}, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2 }, + { "matrix": [2, 4], "x": 4, "y": 2 }, + { "matrix": [2, 5], "x": 5, "y": 2}, + { "matrix": [6, 0], "x": 8, "y": 2}, + { "matrix": [6, 1], "x": 9, "y": 2 }, + { "matrix": [6, 2], "x": 10, "y": 2 }, + { "matrix": [6, 3], "x": 11, "y": 2 }, + { "matrix": [6, 4], "x": 12, "y": 2}, + { "matrix": [6, 5], "x": 13, "y": 2}, + { "matrix": [3, 0], "x": 3.5, "y": 3.25 }, + { "matrix": [3, 1], "x": 4.5, "y": 3.5 }, + { "matrix": [3, 2], "x": 5.5, "y": 3.75 }, + { "matrix": [7, 0], "x": 7.5, "y": 3.75 }, + { "matrix": [7, 1], "x": 8.5, "y": 3.5 }, + { "matrix": [7, 2], "x": 9.5, "y": 3.25 } + ] + } + } +} diff --git a/keyboards/karn/keymaps/colemak/config.h b/keyboards/karn/keymaps/colemak/config.h new file mode 100644 index 000000000000..71eb08ed1e25 --- /dev/null +++ b/keyboards/karn/keymaps/colemak/config.h @@ -0,0 +1,13 @@ +// Copyright 2023 Robert Mills (@robcmills) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Equivalent to zmk behavior-hold-tap tap-preferred flavor +// Do not force the mod-tap key press to be handled as a modifier +// if any other key was pressed while the mod-tap key is held down. +#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY + +// Equivalent to zmk behavior-hold-tap hold-preferred flavor +#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY + diff --git a/keyboards/karn/keymaps/colemak/keymap.c b/keyboards/karn/keymaps/colemak/keymap.c new file mode 100644 index 000000000000..dbe78c0dada5 --- /dev/null +++ b/keyboards/karn/keymaps/colemak/keymap.c @@ -0,0 +1,96 @@ +// Copyright 2023 Robert Mills (@robcmills) +// SPDX-License-Identifier: GPL-2.0 + +#include QMK_KEYBOARD_H + +// Tap Dance declarations +enum { + TD_F1_F11, + TD_F2_F12, +}; + +// Tap Dance definitions +qk_tap_dance_action_t tap_dance_actions[] = { + // Tap once for F1, twice for F11 + [TD_F1_F11] = ACTION_TAP_DANCE_DOUBLE(KC_F1, KC_F11), + [TD_F2_F12] = ACTION_TAP_DANCE_DOUBLE(KC_F2, KC_F12), +}; + +bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case SFT_T(KC_Z): // Special case for Shift + return true; // Immediately select the hold action when another key is pressed. + case SFT_T(KC_ESC): + return true; + default: + return false; // Do not select the hold action when another key is pressed. + } +} + +bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CTL_T(KC_X): + return true; + case ALT_T(KC_C): + return true; + case CMD_T(KC_V): + return true; + case CMD_T(KC_M): + return true; + case ALT_T(KC_COMM): + return true; + case CTL_T(KC_DOT): + return true; + case KC_X: + return true; + case KC_C: + return true; + case KC_V: + return true; + case KC_M: + return true; + case KC_COMM: + return true; + case KC_DOT: + return true; + default: + return false; + } +} + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + // default (colemak) + [0] = LAYOUT_split_3x6_3( + KC_NO, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_NO, + HYPR_T(KC_TAB),KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, HYPR_T(KC_ENT), + KC_NO, SFT_T(KC_Z),CTL_T(KC_X),ALT_T(KC_C),CMD_T(KC_V),KC_B, KC_K, CMD_T(KC_M),ALT_T(KC_COMM),CTL_T(KC_DOT),RSFT_T(KC_SLSH),KC_NO, + MO(1), SFT_T(KC_ESC),MO(3), KC_BSPC,KC_SPC,MO(2) + ), + + // symbols + [1] = LAYOUT_split_3x6_3( + _______, KC_BSLS, KC_GRV, KC_QUOT, KC_DQT, KC_LCBR, KC_RCBR, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_DEL, _______, _______ + ), + + // nav + [2] = LAYOUT_split_3x6_3( + _______, _______, KC_Q, _______, _______, KC_VOLU, _______, _______, _______, KC_SCLN, _______, _______, + _______, C(KC_UP),C(KC_DOWN),G(KC_GRV), G(KC_TAB), KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS, _______, + _______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + // numbers + [3] = LAYOUT_split_3x6_3( + _______, TD(TD_F1_F11), TD(TD_F2_F12), KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/karn/keymaps/colemak/readme.md b/keyboards/karn/keymaps/colemak/readme.md new file mode 100644 index 000000000000..8d3be932fe63 --- /dev/null +++ b/keyboards/karn/keymaps/colemak/readme.md @@ -0,0 +1,58 @@ +``` + /* + * ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐ + * │ Q │ W │ F │ P │ G │ BASE │ J │ L │ U │ Y │ ; │ + * │ │ │ │ │ │ LAYER │ │ │ │ │ │ + * ┌─────┼─────┼─────┼─────┼─────┼─────┤ ┌─────┐ ├─────┼─────┼─────┼─────┼─────┼─────┐ + * │ TAB │ A │ R │ S │ T │ D │ │ TAP │ │ H │ N │ E │ I │ O │ ENT │ + * │ HYP │ │ │ │ │ │ │ HOLD│ │ │ │ │ │ │ HYP │ + * └─────┼─────┼─────┼─────┼─────┼─────┤ └─────┘ ├─────┼─────┼─────┼─────┼─────┼─────┘ + * │ Z │ X │ C │ V │ B │ │ K │ M │ , │ . │ / │ + * │ SFT │ CTL │ ALT │ CMD │ │ │ │ CMD │ ALT │ CTL │ SFT │ + * └─────┴─────┴─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┴─────┴─────┘ + * │ │ ESC │ │ │ BAK │ SPC │ │ + * │ SYM │ SFT │ NUM │ │ │ │ NAV │ + * └─────┴─────┴─────┘ └─────┴─────┴─────┘ + * ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐ + * │ \ │ ` │ ' │ " │ { │ SYM │ } │ - │ = │ [ │ ] │ + * │ │ │ │ │ │ LAYER │ │ │ │ │ │ + * ┌─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┐ + * │ │ ! │ @ │ # │ $ │ % │ │ ^ │ & │ * │ ( │ ) │ │ + * │ │ │ │ │ │ │ │ │ │ │ │ │ │ + * └─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┘ + * │ │ │ │ │ │ │ │ │ │ │ │ + * │ │ │ │ │ │ │ │ │ │ │ │ + * └─────┴─────┴─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┴─────┴─────┘ + * │ │ │ │ │ DEL │ │ │ + * │ │ │ │ │ │ │ │ + * └─────┴─────┴─────┘ └─────┴─────┴─────┘ + * ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐ + * │ │ │ │ │ VOL │ NAV │ │ │ │ │ │ + * │ │ │ │ │ UP │ LAYER │ │ │ │ │ │ + * ┌─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┐ + * │ │ CTL │ CTL │ CMD │ CMD │ VOL │ │ ← │ ↓ │ ↑ │ → │CAPS │ │ + * │ │ + ↓ │ + ↑ │ + ` │ +TAB│ DOWN│ │ │ │ │ │LOCK │ │ + * └─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┘ + * │ │ │ │ │ MUTE│ │ │ │ │ │ │ + * │ │ │ │ │ │ │ │ │ │ │ │ + * └─────┴─────┴─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┴─────┴─────┘ + * │ │ │ │ │ │ │ │ + * │ │ │ │ │ │ │ │ + * └─────┴─────┴─────┘ └─────┴─────┴─────┘ + * ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐ + * │ F1 │ F2 │ F3 │ F4 │ F5 │ NUM │ F6 │ F7 │ F8 │ F9 │ F10 │ + * │ F11 │ F12 │ │ │ │ LAYER │ │ │ │ │ │ + * ┌─────┼─────┼─────┼─────┼─────┼─────┤ ┌─────┐ ├─────┼─────┼─────┼─────┼─────┼─────┐ + * │ │ 1 │ 2 │ 3 │ 4 │ 5 │ │ TAP │ │ 6 │ 7 │ 8 │ 9 │ 0 │ │ + * │ │ │ │ │ │ │ │TAPx2│ │ │ │ │ │ │ │ + * └─────┼─────┼─────┼─────┼─────┼─────┤ └─────┘ ├─────┼─────┼─────┼─────┼─────┼─────┘ + * │ │ │ │ │ │ │ │ │ │ │ │ + * │ │ │ │ │ │ │ │ │ │ │ │ + * └─────┴─────┴─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┴─────┴─────┘ + * │ │ │ │ │ │ │ │ + * │ │ │ │ │ │ │ │ + * └─────┴─────┴─────┘ └─────┴─────┴─────┘ + */ +``` + + diff --git a/keyboards/karn/keymaps/colemak/rules.mk b/keyboards/karn/keymaps/colemak/rules.mk new file mode 100644 index 000000000000..e5ddcae8d927 --- /dev/null +++ b/keyboards/karn/keymaps/colemak/rules.mk @@ -0,0 +1 @@ +TAP_DANCE_ENABLE = yes diff --git a/keyboards/karn/keymaps/default/keymap.c b/keyboards/karn/keymaps/default/keymap.c new file mode 100644 index 000000000000..5f679552d974 --- /dev/null +++ b/keyboards/karn/keymaps/default/keymap.c @@ -0,0 +1,41 @@ +// Copyright 2023 Robert Mills (@robcmills) +// SPDX-License-Identifier: GPL-2.0 + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + + // default (qwerty) + [0] = LAYOUT_split_3x6_3( + KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NO, + HYPR_T(KC_TAB),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, HYPR_T(KC_ENT), + KC_NO, SFT_T(KC_Z),CTL_T(KC_X),ALT_T(KC_C),CMD_T(KC_V),KC_B, KC_N, CMD_T(KC_M),ALT_T(KC_COMM),CTL_T(KC_DOT),RSFT_T(KC_SLSH),KC_NO, + MO(1), SFT_T(KC_ESC),MO(3), KC_BSPC,KC_SPC,MO(2) + ), + + // symbols + [1] = LAYOUT_split_3x6_3( + _______, KC_BSLS, KC_GRV, KC_QUOT, KC_DQT, KC_LCBR, KC_RCBR, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______, + _______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, KC_DEL, _______, _______ + ), + + // nav + [2] = LAYOUT_split_3x6_3( + _______, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, _______, _______, + _______, C(KC_UP),C(KC_DOWN),G(KC_GRV), G(KC_TAB), KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS, _______, + _______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ), + + // numbers + [3] = LAYOUT_split_3x6_3( + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______ + ) +}; + diff --git a/keyboards/karn/mcuconf.h b/keyboards/karn/mcuconf.h new file mode 100644 index 000000000000..766fa7d06e06 --- /dev/null +++ b/keyboards/karn/mcuconf.h @@ -0,0 +1,9 @@ +// Copyright 2022 Robert Mills (@robcmills) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include_next + +#undef STM32_SERIAL_USE_USART1 +#define STM32_SERIAL_USE_USART1 TRUE diff --git a/keyboards/karn/readme.md b/keyboards/karn/readme.md new file mode 100644 index 000000000000..037cc5d652ed --- /dev/null +++ b/keyboards/karn/readme.md @@ -0,0 +1,42 @@ +# Karn 2 + +Split, ortholinear, non-staggered, diodeless, 38 key keyboard, with a unique set of 1.5u thumb arc keys and 1.5u pinky reach keys. + +* Keyboard Maintainer: [Robert Mills](https://github.com/robcmills) +* Hardware Supported: Blackpill STM32F401 + +Based on the excellent [cantor](https://github.com/diepala/cantor), and inspired by the popular [corne](https://github.com/foostan/crkbd), [ferris](https://github.com/pierrechevalier83/ferris) and [sweep](https://github.com/davidphilipbarr/Sweep) keyboards. + +[https://github.com/robcmills/karn-keyboard](https://github.com/robcmills/karn-keyboard) + +![karn-2-left](https://i.imgur.com/vm6XFyIh.jpeg) + +![karn-2-full](https://i.imgur.com/R7WnlC3h.jpeg) + +![karn-2-pcb](https://i.imgur.com/EQqyyEDh.png) + + +### Make + +Make example for this keyboard (after setting up your build environment): + + make karn:default + +Flashing example for this keyboard: + + make karn: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. For the right side, hold the top right key and plug the keyboard. +* **Physical reset button**: + * Press and hold the BOOT0 button. + * Press and release the NRST button. + * Release the BOOT0 button. +* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available + diff --git a/keyboards/karn/rules.mk b/keyboards/karn/rules.mk new file mode 100644 index 000000000000..c6e298832137 --- /dev/null +++ b/keyboards/karn/rules.mk @@ -0,0 +1 @@ +SERIAL_DRIVER = usart diff --git a/keyboards/kprepublic/bm80v2/keymaps/smooted/config.h b/keyboards/kprepublic/bm80v2/keymaps/smooted/config.h new file mode 100644 index 000000000000..88fa41d11098 --- /dev/null +++ b/keyboards/kprepublic/bm80v2/keymaps/smooted/config.h @@ -0,0 +1,17 @@ +/* Copyright 2022 bdtc123 * + * 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 . + */ + +#pragma once +#define FORCE_NKRO diff --git a/keyboards/kprepublic/bm80v2/keymaps/smooted/keymap.c b/keyboards/kprepublic/bm80v2/keymaps/smooted/keymap.c new file mode 100644 index 000000000000..ba91157d927b --- /dev/null +++ b/keyboards/kprepublic/bm80v2/keymaps/smooted/keymap.c @@ -0,0 +1,25 @@ +// Copyright 2021 Yizhen Liu (@edwardslau) +// SPDX-License-Identifier: GPL-2.0 +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + [0] = LAYOUT_tkl_ansi( + KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, + 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_INS, KC_HOME, KC_PGUP, + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, + KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, + KC_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, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT + ), + + [1] = LAYOUT_tkl_ansi( + QK_BOOT, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) + +}; diff --git a/keyboards/kprepublic/bm80v2/keymaps/smooted/rules.mk b/keyboards/kprepublic/bm80v2/keymaps/smooted/rules.mk new file mode 100644 index 000000000000..1e5b99807cb7 --- /dev/null +++ b/keyboards/kprepublic/bm80v2/keymaps/smooted/rules.mk @@ -0,0 +1 @@ +VIA_ENABLE = yes diff --git a/keyboards/momokai/tap_duo/config.h b/keyboards/momokai/tap_duo/config.h index 555c7912d668..ca447bf9c6d1 100644 --- a/keyboards/momokai/tap_duo/config.h +++ b/keyboards/momokai/tap_duo/config.h @@ -38,84 +38,61 @@ //TODO: implement RGB Matrix #define RGB_DI_PIN F0 -#define RGBLED_NUM 4 -#define RGBLIGHT_HUE_STEP 8 -#define RGBLIGHT_SAT_STEP 8 -#define RGBLIGHT_VAL_STEP 8 +#ifdef RGB_MATRIX_ENABLE +#define RGB_MATRIX_LED_COUNT 4 +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 + // 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_SOLID_COLOR + #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 -#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL + // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined + #define ENABLE_RGB_MATRIX_TYPING_HEATMAP + #define ENABLE_RGB_MATRIX_DIGITAL_RAIN - -/*== all animations enable ==*/ -// #define RGBLIGHT_ANIMATIONS -/*== or choose animations ==*/ - #define RGBLIGHT_EFFECT_BREATHING - #define RGBLIGHT_EFFECT_RAINBOW_MOOD - #define RGBLIGHT_EFFECT_RAINBOW_SWIRL - #define RGBLIGHT_EFFECT_SNAKE - #define RGBLIGHT_EFFECT_KNIGHT - #define RGBLIGHT_EFFECT_CHRISTMAS - #define RGBLIGHT_EFFECT_STATIC_GRADIENT - #define RGBLIGHT_EFFECT_RGB_TEST - #define RGBLIGHT_EFFECT_ALTERNATING - -// #ifdef RGB_DI_PIN -// #define DRIVER_LED_TOTAL 5 - -// #define RGB_MATRIX_KEYPRESSES // reacts to keypresses -// // # define RGBLIGHT_LIMIT_VAL 180 // Limit to vendor-recommended value -// #endif -// #ifdef RGB_MATRIX_ENABLE -// // # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value -// // 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_SOLID_COLOR -// #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 -// #endif + // 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 +#endif diff --git a/keyboards/momokai/tap_duo/rules.mk b/keyboards/momokai/tap_duo/rules.mk index 0b56f37c994a..0459a2ad6b56 100644 --- a/keyboards/momokai/tap_duo/rules.mk +++ b/keyboards/momokai/tap_duo/rules.mk @@ -8,7 +8,8 @@ CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output - +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 LTO_ENABLE = yes diff --git a/keyboards/momokai/tap_duo/tap_duo.c b/keyboards/momokai/tap_duo/tap_duo.c index 2216c37f4318..bd5381083862 100644 --- a/keyboards/momokai/tap_duo/tap_duo.c +++ b/keyboards/momokai/tap_duo/tap_duo.c @@ -16,16 +16,16 @@ #include "tap_duo.h" -// #ifdef RGB_MATRIX_ENABLE -// led_config_t g_led_config = { { -// // Key Matrix to LED Index -// { 0, 1, 2, NO_LED, NO_LED, NO_LED} -// }, { -// // LED Index to Physical Position -// { 56, 0}, { 112, 0}, { 168, 0}, { 0, 64}, { 224, 64} -// }, { -// // LED Index to Flag -// 4,4,4,2,2 -// } }; +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, NO_LED, NO_LED, NO_LED} +}, { + // LED Index to Physical Position + { 112, 0}, { 168, 0}, { 0, 64}, { 224, 64} +}, { + // LED Index to Flag + 4,4,2,2 +} }; -// #endif +#endif diff --git a/keyboards/momokai/tap_trio/config.h b/keyboards/momokai/tap_trio/config.h index ba2c74ee17ee..7a38599d11a9 100644 --- a/keyboards/momokai/tap_trio/config.h +++ b/keyboards/momokai/tap_trio/config.h @@ -25,81 +25,64 @@ //TODO: implement RGB Matrix #define RGB_DI_PIN F0 -#define RGBLED_NUM 5 -#define RGBLIGHT_HUE_STEP 8 -#define RGBLIGHT_SAT_STEP 8 -#define RGBLIGHT_VAL_STEP 8 +// #define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL -#define RGBLIGHT_DEFAULT_MODE RGBLIGHT_MODE_RAINBOW_SWIRL +#ifdef RGB_MATRIX_ENABLE +#define RGB_MATRIX_LED_COUNT 5 +#define RGB_MATRIX_KEYPRESSES // reacts to keypresses +#define RGB_MATRIX_FRAMEBUFFER_EFFECTS +#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200 + // 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_SOLID_COLOR + #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 - #define RGBLIGHT_EFFECT_BREATHING - #define RGBLIGHT_EFFECT_RAINBOW_MOOD - #define RGBLIGHT_EFFECT_RAINBOW_SWIRL - #define RGBLIGHT_EFFECT_SNAKE - #define RGBLIGHT_EFFECT_KNIGHT - #define RGBLIGHT_EFFECT_CHRISTMAS - #define RGBLIGHT_EFFECT_STATIC_GRADIENT - #define RGBLIGHT_EFFECT_RGB_TEST - #define RGBLIGHT_EFFECT_ALTERNATING + // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined + #define ENABLE_RGB_MATRIX_TYPING_HEATMAP + #define ENABLE_RGB_MATRIX_DIGITAL_RAIN -// #ifdef RGB_DI_PIN -// #define RGB_MATRIX_LED_COUNT 5 - -// #define RGB_MATRIX_KEYPRESSES // reacts to keypresses -// // # define RGBLIGHT_LIMIT_VAL 180 // Limit to vendor-recommended value -// #endif -// #ifdef RGB_MATRIX_ENABLE -// // # define RGB_MATRIX_MAXIMUM_BRIGHTNESS 180 // Limit to vendor-recommended value -// // 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_SOLID_COLOR -// #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 -// #endif + // 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 +#endif diff --git a/keyboards/momokai/tap_trio/rules.mk b/keyboards/momokai/tap_trio/rules.mk index 0b56f37c994a..0459a2ad6b56 100644 --- a/keyboards/momokai/tap_trio/rules.mk +++ b/keyboards/momokai/tap_trio/rules.mk @@ -8,7 +8,8 @@ CONSOLE_ENABLE = no # Console for debug COMMAND_ENABLE = no # Commands for debug and configuration NKRO_ENABLE = no # Enable N-Key Rollover BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality -RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow +RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow AUDIO_ENABLE = no # Audio output - +RGB_MATRIX_ENABLE = yes +RGB_MATRIX_DRIVER = WS2812 LTO_ENABLE = yes diff --git a/keyboards/momokai/tap_trio/tap_trio.c b/keyboards/momokai/tap_trio/tap_trio.c index 02bd0d3addc0..69b850e04cc0 100644 --- a/keyboards/momokai/tap_trio/tap_trio.c +++ b/keyboards/momokai/tap_trio/tap_trio.c @@ -16,16 +16,16 @@ #include "tap_trio.h" -// #ifdef RGB_MATRIX_ENABLE -// led_config_t g_led_config = { { -// // Key Matrix to LED Index -// { 0, 1, 2, NO_LED, NO_LED, NO_LED} -// }, { -// // LED Index to Physical Position -// { 56, 0}, { 112, 0}, { 168, 0}, { 0, 64}, { 224, 64} -// }, { -// // LED Index to Flag -// 4,4,4,2,2 -// } }; +#ifdef RGB_MATRIX_ENABLE +led_config_t g_led_config = { { + // Key Matrix to LED Index + { 0, 1, 2, NO_LED, NO_LED, NO_LED} +}, { + // LED Index to Physical Position + { 56, 0}, { 112, 0}, { 168, 0}, { 0, 64}, { 224, 64} +}, { + // LED Index to Flag + 4,4,4,2,2 +} }; -// #endif +#endif diff --git a/keyboards/switchplate/southpaw_65/matrix.c b/keyboards/switchplate/southpaw_65/matrix.c index 5895750f890b..e24dcef85353 100644 --- a/keyboards/switchplate/southpaw_65/matrix.c +++ b/keyboards/switchplate/southpaw_65/matrix.c @@ -54,9 +54,9 @@ static uint32_t read_cols(void) { uint8_t state_1 = 0; uint8_t state_2 = 0; uint8_t state_3 = 0; - pca9555_readPins(IC2, PCA9555_PORT0, &state_1); - pca9555_readPins(IC2, PCA9555_PORT1, &state_2); - pca9555_readPins(IC1, PCA9555_PORT1, &state_3); + pca9555_readPins(IC1, PCA9555_PORT1, &state_1); + pca9555_readPins(IC2, PCA9555_PORT0, &state_2); + pca9555_readPins(IC2, PCA9555_PORT1, &state_3); uint32_t state = ((((uint32_t)state_3 & 0b01111111) << 12) | ((uint32_t)state_2 << 4) | (((uint32_t)state_1 & 0b11110000) >> 4)); return ~state;