diff --git a/keyboards/cornifi/config.h b/keyboards/cornifi/config.h new file mode 100644 index 0000000000..36750714de --- /dev/null +++ b/keyboards/cornifi/config.h @@ -0,0 +1,14 @@ +// Copyright 2024-2025 QMK +// SPDX-License-Identifier: GPL-3.0-or-later + +#pragma once + +#define SERIAL_USART_FULL_DUPLEX +#define SERIAL_USART_TX_PIN GP12 +#define SERIAL_USART_RX_PIN GP13 +#define USB_VBUS_PIN GP24 + +/* RP2040- and hardware-specific config */ +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U +#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64 diff --git a/keyboards/cornifi/keyboard.json b/keyboards/cornifi/keyboard.json new file mode 100644 index 0000000000..68e062ad33 --- /dev/null +++ b/keyboards/cornifi/keyboard.json @@ -0,0 +1,96 @@ +{ + "manufacturer": "v3lmx", + "keyboard_name": "cornifi", + "maintainer": "v3lmx", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "direct": [ + ["GP21", "GP25", "GP26", "GP28", "GP29", "GP5"], + ["GP20", "GP22", "GP27", "GP2", "GP3", "GP8"], + ["GP19", "GP23", "GP1", "GP0", "GP4", null], + [null, null, "GP16", "GP17", "GP18", null] + ] + }, + "processor": "RP2040", + "split": { + "bootmagic": { + "matrix": [4, 0] + }, + "enabled": true, + "matrix_pins": { + "right": { + "direct": [ + ["GP9", "GP8", "GP4", "GP3", "GP2", "GP25"], + ["GP10", "GP6", "GP1", "GP28", "GP27", "GP21"], + ["GP11", "GP5", "GP0", "GP29", "GP26", null], + [null, null, "GP16", "GP17", "GP18", null] + ] + } + }, + "serial": { + "driver": "vendor" + } + }, + "url": "https://github.com/v3lmx/cornifi", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layout_aliases": { + "LAYOUT": "LAYOUT_split_3x5_3_ex2" + }, + "layouts": { + "LAYOUT_split_3x5_3_ex2": { + "layout": [ + {"matrix": [0, 0], "x": 0, "y": 0.9}, + {"matrix": [0, 1], "x": 1, "y": 0.3}, + {"matrix": [0, 2], "x": 2, "y": 0}, + {"matrix": [0, 3], "x": 3, "y": 0.35}, + {"matrix": [0, 4], "x": 4, "y": 0.45}, + {"matrix": [0, 5], "x": 5, "y": 0.7}, + {"matrix": [4, 5], "x": 8, "y": 0.7}, + {"matrix": [4, 4], "x": 9, "y": 0.45}, + {"matrix": [4, 3], "x": 10, "y": 0.35}, + {"matrix": [4, 2], "x": 11, "y": 0}, + {"matrix": [4, 1], "x": 12, "y": 0.3}, + {"matrix": [4, 0], "x": 13, "y": 0.9}, + {"matrix": [1, 0], "x": 0, "y": 1.9}, + {"matrix": [1, 1], "x": 1, "y": 1.3}, + {"matrix": [1, 2], "x": 2, "y": 1}, + {"matrix": [1, 3], "x": 3, "y": 1.35}, + {"matrix": [1, 4], "x": 4, "y": 1.45}, + {"matrix": [1, 5], "x": 5, "y": 1.7}, + {"matrix": [5, 5], "x": 8, "y": 1.7}, + {"matrix": [5, 4], "x": 9, "y": 1.45}, + {"matrix": [5, 3], "x": 10, "y": 1.35}, + {"matrix": [5, 2], "x": 11, "y": 1}, + {"matrix": [5, 1], "x": 12, "y": 1.3}, + {"matrix": [5, 0], "x": 13, "y": 1.9}, + {"matrix": [2, 0], "x": 0, "y": 2.9}, + {"matrix": [2, 1], "x": 1, "y": 2.3}, + {"matrix": [2, 2], "x": 2, "y": 2}, + {"matrix": [2, 3], "x": 3, "y": 2.35}, + {"matrix": [2, 4], "x": 4, "y": 2.45}, + {"matrix": [6, 4], "x": 9, "y": 2.45}, + {"matrix": [6, 3], "x": 10, "y": 2.35}, + {"matrix": [6, 2], "x": 11, "y": 2}, + {"matrix": [6, 1], "x": 12, "y": 2.3}, + {"matrix": [6, 0], "x": 13, "y": 2.9}, + {"matrix": [3, 2], "x": 3, "y": 3.7}, + {"matrix": [3, 3], "x": 4, "y": 3.7}, + {"matrix": [3, 4], "x": 5, "y": 3.2, "h": 1.5}, + {"matrix": [7, 4], "x": 8, "y": 3.2, "h": 1.5}, + {"matrix": [7, 3], "x": 9, "y": 3.7}, + {"matrix": [7, 2], "x": 10, "y": 3.7} + ] + } + } +} diff --git a/keyboards/cornifi/keymaps/default/keymap.c b/keyboards/cornifi/keymaps/default/keymap.c new file mode 100644 index 0000000000..207db11738 --- /dev/null +++ b/keyboards/cornifi/keymaps/default/keymap.c @@ -0,0 +1,27 @@ +// Copyright 2025 @v3lmx +// SPDX-License-Identifier: GPL-3.0-or-later + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + // clang-format off + [0] = LAYOUT_split_3x5_3_ex2( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN, + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, KC_SLSH, + KC_ESC, MO(1), KC_TAB, KC_ENT, MO(2), KC_BSPC + ), + [1] = LAYOUT_split_3x5_3_ex2( + KC_1, KC_2, KC_3, KC_4, KC_5, _______, _______, KC_6, KC_7, KC_8, KC_9, KC_0, + XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______, _______, KC_LEFT,KC_DOWN,KC_UP, KC_RIGHT,XXXXXXX, + XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, + KC_LGUI,_______,KC_SPC, KC_ENT, XXXXXXX, KC_RALT + ), + [2] = LAYOUT_split_3x5_3_ex2( + KC_EXLM, KC_AT,KC_HASH, KC_DLR, KC_PERC,_______, _______, KC_CIRC,KC_AMPR,KC_ASTR,KC_LPRN,KC_RPRN, + XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______, _______, KC_MINS,KC_EQL, KC_LBRC,KC_RBRC,KC_BSLS, + XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, KC_UNDS,KC_PLUS,KC_LCBR,KC_RCBR,KC_PIPE, + KC_LGUI,XXXXXXX, KC_SPC, KC_ENT, _______,KC_RALT + ) + // clang-format on +}; diff --git a/keyboards/cornifi/readme.md b/keyboards/cornifi/readme.md new file mode 100644 index 0000000000..3c4022e5ac --- /dev/null +++ b/keyboards/cornifi/readme.md @@ -0,0 +1,32 @@ +# cornifi + +![cornifi keyboard](https://i.imgur.com/Q7B3VX8.jpeg) + +The cornifi keyboard is a split keyboard based on the [corne](https://github.com/foostan/crkbd) with the physical layout of the [fifi](https://github.com/raychengy/fifi_split_keeb). + +* Keyboard Maintainer: [v3lmx (github)](https://github.com/v3lmx) +* Hardware Availability: [v3lmx/cornifi (github)](https://github.com/v3lmx/cornifi) + +Make example for this keyboard (after setting up your build environment): + + make cornifi:default + +Flashing example for this keyboard: + + make cornifi: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**: Hold down the `boot` button and press the `reset` button +* **Keycode in layout**: Press the key mapped to `TD_BOOT` twice if it is available + +## Keymap + +It is recommended to make your own keymap using the [external userspace feature(https://docs.qmk.fm/newbs_external_userspace). + +You can find an example here: [v3lmx qmk userspace](https://github.com/v3lmx/qmk_userspace)