diff --git a/keyboards/bozkurt/config.h b/keyboards/bozkurt/config.h new file mode 100644 index 000000000000..89f9ff407782 --- /dev/null +++ b/keyboards/bozkurt/config.h @@ -0,0 +1,20 @@ +// Copyright 2023 omikronik (@omikronik) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* + * Feature disable options + * These options are also useful to firmware size reduction. + */ + +/* disable debug print */ +//#define NO_DEBUG + +/* disable print */ +//#define NO_PRINT + +/* disable action features */ +//#define NO_ACTION_LAYER +//#define NO_ACTION_TAPPING +//#define NO_ACTION_ONESHOT diff --git a/keyboards/bozkurt/info.json b/keyboards/bozkurt/info.json new file mode 100644 index 000000000000..16a613bc66a0 --- /dev/null +++ b/keyboards/bozkurt/info.json @@ -0,0 +1,68 @@ +{ + "manufacturer": "omikronik", + "keyboard_name": "bozkurt", + "maintainer": "omikronik", + "bootloader": "rp2040", + "diode_direction": "COL2ROW", + "features": { + "bootmagic": true, + "command": false, + "console": false, + "extrakey": true, + "mousekey": true, + "nkro": true + }, + "matrix_pins": { + "cols": ["C2", "C2", "C2", "C2", "C2", "C2", "C2", "C2", "C2", "C2", "C2", "C2"], + "rows": ["D1", "D1", "D1", "D1"] + }, + "processor": "RP2040", + "url": "", + "usb": { + "device_version": "1.0.0", + "pid": "0x0000", + "vid": "0xFEED" + }, + "layouts": { + "LAYOUT_split_3x5_3": { + "layout": [ + { "matrix": [0, 0], "x": 0, "y": 0.25 }, + { "matrix": [0, 1], "x": 1, "y": 0.125 }, + { "matrix": [0, 2], "x": 2, "y": 0 }, + { "matrix": [0, 3], "x": 3, "y": 0.125 }, + { "matrix": [0, 4], "x": 4, "y": 0.25 }, + { "matrix": [0, 7], "x": 7, "y": 0.25 }, + { "matrix": [0, 8], "x": 8, "y": 0.125 }, + { "matrix": [0, 9], "x": 9, "y": 0 }, + { "matrix": [0, 10], "x": 10, "y": 0.125 }, + { "matrix": [0, 11], "x": 11, "y": 0.25 }, + { "matrix": [1, 0], "x": 0, "y": 1.25 }, + { "matrix": [1, 1], "x": 1, "y": 1.125 }, + { "matrix": [1, 2], "x": 2, "y": 1 }, + { "matrix": [1, 3], "x": 3, "y": 1.125 }, + { "matrix": [1, 4], "x": 4, "y": 1.25 }, + { "matrix": [1, 7], "x": 7, "y": 1.25 }, + { "matrix": [1, 8], "x": 8, "y": 1.125 }, + { "matrix": [1, 9], "x": 9, "y": 1 }, + { "matrix": [1, 10], "x": 10, "y": 1.125 }, + { "matrix": [1, 11], "x": 11, "y": 1.25 }, + { "matrix": [2, 0], "x": 0, "y": 2.25 }, + { "matrix": [2, 1], "x": 1, "y": 2.125 }, + { "matrix": [2, 2], "x": 2, "y": 2 }, + { "matrix": [2, 3], "x": 3, "y": 2.125 }, + { "matrix": [2, 4], "x": 4, "y": 2.25 }, + { "matrix": [2, 7], "x": 7, "y": 2.25 }, + { "matrix": [2, 8], "x": 8, "y": 2.125 }, + { "matrix": [2, 9], "x": 9, "y": 2 }, + { "matrix": [2, 10], "x": 10, "y": 2.125 }, + { "matrix": [2, 11], "x": 11, "y": 2.25 }, + { "matrix": [3, 2], "x": 2.5, "y": 3.25 }, + { "matrix": [3, 3], "x": 3.5, "y": 3.5 }, + { "matrix": [3, 4], "x": 4.5, "y": 3.75 }, + { "matrix": [3, 6], "x": 6.5, "y": 3.75 }, + { "matrix": [3, 7], "x": 7.5, "y": 3.5 }, + { "matrix": [3, 8], "x": 8.5, "y": 3.25 } + ] + } + } +} \ No newline at end of file diff --git a/keyboards/bozkurt/keymaps/default/keymap.c b/keyboards/bozkurt/keymaps/default/keymap.c new file mode 100644 index 000000000000..f4c3e308fe8a --- /dev/null +++ b/keyboards/bozkurt/keymaps/default/keymap.c @@ -0,0 +1,24 @@ +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* + * ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐ + * │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ; │ + * ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤ + * │ Z │ X │ C │ V │ B │ │ N │ M │ , │ . │ / │ + * └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘ + * ┌───┐ ┌───┐ + * │GUI├───┐ ┌───┤Alt│ + * └───┤Bsp├───┐ ┌───┤Ent├───┘ + * └───┤ │ │ ├───┘ + * └───┘ └───┘ + */ + [0] = LAYOUT_split_3x5_3( + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, 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_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT + ) +}; diff --git a/keyboards/bozkurt/readme.md b/keyboards/bozkurt/readme.md new file mode 100644 index 000000000000..c3a24f81d12f --- /dev/null +++ b/keyboards/bozkurt/readme.md @@ -0,0 +1,27 @@ +# bozkurt + +![bozkurt](imgur.com image replace me!) + +*A short description of the keyboard/project* + +* Keyboard Maintainer: [omikronik](https://github.com/omikronik) +* Hardware Supported: *The PCBs, controllers supported* +* Hardware Availability: *Links to where you can find this hardware* + +Make example for this keyboard (after setting up your build environment): + + make bozkurt:default + +Flashing example for this keyboard: + + make bozkurt: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/bozkurt/rules.mk b/keyboards/bozkurt/rules.mk new file mode 100644 index 000000000000..6e7633bfe015 --- /dev/null +++ b/keyboards/bozkurt/rules.mk @@ -0,0 +1 @@ +# This file intentionally left blank diff --git a/keyboards/splitkb/aurora/lily58/keymaps/yashiro/keymap.json b/keyboards/splitkb/aurora/lily58/keymaps/yashiro/keymap.json index 2d056a82a283..a76a30dad2e9 100644 --- a/keyboards/splitkb/aurora/lily58/keymaps/yashiro/keymap.json +++ b/keyboards/splitkb/aurora/lily58/keymaps/yashiro/keymap.json @@ -49,8 +49,8 @@ "KC_C", "KC_V", "KC_B", - "KC_VOLD", - "KC_VOLU", + "KC_MPLY", + "LGUI(KC_BSPC)", "KC_N", "KC_M", "KC_COMM", @@ -67,7 +67,7 @@ "KC_RGUI" ], [ - "TG(3)", + "KC_TRNS", "KC_F1", "KC_F2", "KC_F3", @@ -109,14 +109,14 @@ "KC_TRNS", "KC_TRNS", "KC_TRNS", + "KC_MPLY", + "KC_MUTE", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", - "KC_TRNS", - "KC_TRNS", - "KC_TRNS", + "TG(3)", "KC_TRNS", "KC_TRNS", "KC_TRNS", @@ -149,11 +149,11 @@ "KC_MINS", "KC_EQL", "KC_TRNS", - "KC_TRNS", + "KC_DQUO", "KC_TRNS", "KC_TRNS", "KC_HASH", - "KC_DLR", + "KC_PERC", "KC_LCBR", "KC_RCBR", "KC_GRV", @@ -161,19 +161,19 @@ "KC_DOWN", "KC_UP", "KC_RGHT", - "KC_TRNS", + "KC_QUOT", "KC_TRNS", "KC_TRNS", "KC_CIRC", - "KC_PERC", + "KC_DLR", "KC_LBRC", "KC_RBRC", "KC_TILD", - "KC_TRNS", - "KC_TRNS", + "KC_MPRV", + "KC_MNXT", "KC_AMPR", - "KC_UNDS", "KC_ASTR", + "KC_UNDS", "KC_BSLS", "KC_PIPE", "KC_TRNS", diff --git a/keyboards/totem/config.h b/keyboards/totem/config.h new file mode 100644 index 000000000000..b7e23ec7931b --- /dev/null +++ b/keyboards/totem/config.h @@ -0,0 +1,60 @@ +/* +Copyright 2022 GEIST <@geigeigeist> + +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 "config_common.h" + +/* USB Device descriptor parameter */ +/*#define VENDOR_ID 0x3A3C +#define PRODUCT_ID 0x0002 +#define DEVICE_VER 0x0001 +#define MANUFACTURER GEIST +#define PRODUCT TOTEM +*/ + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 5 + + +// wiring of each half +#define MATRIX_ROW_PINS { GP26, GP27, GP28, GP29 } +#define MATRIX_COL_PINS { GP6, GP7, GP3, GP4, GP2 } +#define DIODE_DIRECTION COL2ROW + + +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#define DEBOUNCE 5 + + +/* Serial settings */ +#define USE_SERIAL +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN GP0 +//#define SPLIT_LAYER_STATE_ENABLE +//#define SPLIT_USB_DETECT +#define SERIAL_USE_MULTI_TRANSACTION +/* communication between sides */ +#define SERIAL_PIO_USE_PIO1 + + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U \ No newline at end of file diff --git a/keyboards/totem/halconf.h b/keyboards/totem/halconf.h new file mode 100644 index 000000000000..58f0849b9762 --- /dev/null +++ b/keyboards/totem/halconf.h @@ -0,0 +1,7 @@ +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/totem/info.json b/keyboards/totem/info.json new file mode 100644 index 000000000000..ef175da30fa4 --- /dev/null +++ b/keyboards/totem/info.json @@ -0,0 +1,17 @@ +{ + "keyboard_name": "TOTEM", + "url": "https://github.com/GEIGEIGEIST/TOTEM", + "manufacturer": "GEIST", + "usb": { + "vid": "0x3A3C", + "pid": "0x0002", + "device_version": "0.3.0" + }, + "layouts": { + "LAYOUT_totem": { + "layout": [ + {"x":3, "y":0.25}, {"x":13, "y":0.25}, {"x":4, "y":0.75}, {"x":12, "y":0.75}, {"x":5, "y":1}, {"x":11, "y":1}, {"x":3, "y":1.25}, {"x":13, "y":1.25}, {"x":4, "y":1.75}, {"x":12, "y":1.75}, {"x":5, "y":2}, {"x":11, "y":2}, {"x":3, "y":2.25}, {"x":13, "y":2.25}, {"x":4, "y":2.75}, {"x":12, "y":2.75}, {"x":5, "y":3}, {"x":11, "y":3}, {"x":-0.4, "y":-0.5999999999999996}, {"x":-0.6, "y":-4.199999999999999}, {"x":-0.5, "y":-6.199999999999999}, {"x":-0.5, "y":-5.199999999999999}, {"x":-0.5, "y":-4.199999999999999}, {"x":-0.25, "y":-5.55}, {"x":-0.25, "y":-4.55}, {"x":0.75, "y":-3.9499999999999993}, {"x":-0.25, "y":-3.5499999999999994}, {"x":-0.4, "y":-7.1499999999999995}, {"x":-0.4, "y":-7.1499999999999995}, {"x":-0.6, "y":-10.749999999999998}, {"x":-0.6, "y":-10.749999999999998}, {"x":-1.0, "y":-12.1}, {"x":-1.0, "y":-11.1}, {"x":-2, "y":-10.499999999999998}, {"x":-1.0, "y":-10.1}, {"x":-0.75, "y":-12.1}, {"x":-0.75, "y":-11.1}, {"x":-0.75, "y":-10.1} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/totem/keymaps/default/config.h b/keyboards/totem/keymaps/default/config.h new file mode 100644 index 000000000000..25adfe3db71e --- /dev/null +++ b/keyboards/totem/keymaps/default/config.h @@ -0,0 +1,29 @@ +#pragma once + +/* The way how "handedness" is decided (which half is which), +see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness +for more options. +*/ + +#define MASTER_LEFT +// #define MASTER_RIGHT + + +//#define TAPPING_TERM 170 +#define TAPPING_TERM 170 + +// Prevent normal rollover on alphas from accidentally triggering mods. +#define IGNORE_MOD_TAP_INTERRUPT + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +#define TAPPING_FORCE_HOLD + +// Auto Shift +#define NO_AUTO_SHIFT_ALPHA +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM +#define AUTO_SHIFT_NO_SETUP + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define NO_ACTION_ONESHOT + diff --git a/keyboards/totem/keymaps/default/keymap.c b/keyboards/totem/keymaps/default/keymap.c new file mode 100644 index 000000000000..2fcaa5858513 --- /dev/null +++ b/keyboards/totem/keymaps/default/keymap.c @@ -0,0 +1,330 @@ +/* + ▀▀▀▀▀ ▀▀▀▀▀ ▀▀█▀▀ + ▄▀▀▀▄ ▄ ▄▀▀▀▄ ▄ ▄▀▀▀▄ █ ▄▀▀▀▄ + █ █ █ █ █ █ █ █ █ █ █ + ▀▀▀ █ ▀▀▀ █ ▀▀▀ ▀ ▀▀▀ + █ ▄▄▄█▄▄▄ █ █ + ▀ █ █ █ █▄█ + ▀▀▀▀▀ █ █ █ ▀ + ▀ ▀ ▀ D E F A U L T + +▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ +*/ + +#include QMK_KEYBOARD_H +#include +#include "totem.h" + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ D E F I N I T I O N S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e l a y e r s │ +// └─────────────────────────────────────────────────┘ + +enum totem_layers { + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _ADJUST, +}; + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e k e y c o d e s │ +// └─────────────────────────────────────────────────┘ + +enum custom_keycodes { + COLEMAK = SAFE_RANGE, + QWERTY, + LOWER, + RAISE, + ADJUST, + OS_SWAP, + MAKE_H, + SNAP +}; + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e m a c r o n a m e s │ +// └─────────────────────────────────────────────────┘ + +// LEFT HAND HOME ROW MODS QWERTY ├──────────────────┐ + +#define GUI_A MT(MOD_LGUI, KC_A) +#define ALT_S MT(MOD_LALT, KC_S) +#define CTL_D MT(MOD_LCTL, KC_D) +#define SHT_F MT(MOD_LSFT, KC_F) + +// RIGHT HAND HOME ROW MODS QWERTY ├─────────────────┐ + +#define SHT_J MT(MOD_RSFT, KC_J) +#define CTL_K MT(MOD_LCTL, KC_K) +#define ALT_L MT(MOD_LALT, KC_L) +#define GUI_S MT(MOD_LGUI, KC_SCLN) + + +// LEFT HAND HOME ROW MODS COLEMAK ├─────────────────┐ + +#define GUI_A MT(MOD_LGUI, KC_A) +#define ALT_R MT(MOD_LALT, KC_R) +#define CTL_S MT(MOD_LCTL, KC_S) +#define SHT_T MT(MOD_LSFT, KC_T) + +// RIGHT HAND HOME ROW MODS COLEMAK ├────────────────┐ + +#define SHT_N MT(MOD_RSFT, KC_N) +#define CTL_E MT(MOD_LCTL, KC_E) +#define ALT_I MT(MOD_LALT, KC_I) +#define GUI_O MT(MOD_LGUI, KC_O) + + + + +#define LOWER LT(_LOWER, KC_TAB) +#define RAISE LT(_RAISE, KC_ESC) +#define ADJUST MO(_ADJUST) + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ K E Y M A P S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + ┌─────────────────────────────────────────────────┐ + │ q w e r t y │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ Q │ W │ E │ R │ T ││ Y │ U │ I │ O │ P │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ A │ S │ D │ F │ G ││ H │ J │ K │ L │ ; │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ Q │ Z │ X │ C │ V │ B ││ N │ M │ , │ . │ / │ P │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ CTRL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/ + + [_QWERTY] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + GUI_A, ALT_S, CTL_D, SHT_F, KC_G, KC_H, SHT_J, CTL_K, ALT_L, GUI_S, + KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_P, + KC_DEL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC + ), + +/* + + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ c o l e m a k │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ Q │ W │ F │ P │ G ││ J │ L │ U │ Y │ ; │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ A │ R │ S │ T │ D ││ H │ N │ E │ I │ O │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ Q │ Z │ X │ C │ V │ B ││ K │ M │ , │ . │ / │ ; │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ DEL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/ + + [_COLEMAK] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, + KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, + KC_DEL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC + ), + + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ l o w e r │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ CAPSLCK │ NUMLCK │ ↑ │ = │ { ││ } │ 7 │ 8 │ 9 │ + │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ HOME │ ← │ ↓ │ → │ [ ││ ] │ 4 │ 5 │ 6 │ - │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ SCRNSHT │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ ) │ 1 │ 2 │ 3 │ * │ ▼ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ ││ ▼ │ ADJUST │ 0 │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_LOWER] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_QUOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, + SNAP, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______, + _______, _______, _______, _______, ADJUST, KC_P0 + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ r a i s e │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ ! │ @ │ # │ $ │ % ││ ^ │ & │ Ü │ ° │ / │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ Ä │ è │ SZ │ é │ ││ │ ¥ │ € │ £ │ Ö │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ ` │ ~ │ CUE │ │ ││ │ │ │ DM REC1 │ DM STOP │ DM PLY1 │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ GIPHY │ ADJUST │ ▼ ││ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_RAISE] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, + RALT(KC_A),RALT(KC_F),RALT(KC_S),RALT(KC_G),XXXXXXX, XXXXXXX,LSFT(RALT(KC_4)),RALT(KC_5), RALT(KC_4), RALT(KC_O), + XXXXXXX, LSFT(KC_GRV),KC_TILD, RALT(KC_C),XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1, + _______, ADJUST, _______, _______, _______, _______ + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ a d j u s t │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ RESET │ │ │ │ ││ │ F7 │ F8 │ F9 │ F12 │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ DEBUG │ QWERTY │ │ │ ││ │ F4 │ F5 │ F6 │ F11 │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ MAKE │ OS SWAP │ COLEMAK │ │ │ ││ │ F1 │ F2 │ F3 │ F10 │ F13 │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_ADJUST] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, + DB_TOGG, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F11, + MAKE_H, OS_SWAP, COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F13, + _______, _______, _______, _______, _______, _______ + ) +/* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ t e m p l a t e │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ │ │ │ │ ││ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ││ │ │ │ │ │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ │ │ │ │ ││ │ │ │ │ │ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ │ │ ││ │ │ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + ), +*/ +}; + + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ M A C R O S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + + case OS_SWAP: + if (record->event.pressed) { + if (!keymap_config.swap_lctl_lgui) { + keymap_config.swap_lctl_lgui = true; // ─── MAC + } + else { + keymap_config.swap_lctl_lgui = false; // ─── WIN + } + eeconfig_update_keymap(keymap_config.raw); + clear_keyboard(); // ──── clear to prevent stuck keys + return false; + } + + +// ┌─────────────────────────────────────────────────┐ +// │ l a y e r │ +// └─────────────────────────────────────────────────┘ + + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + +// ┌─────────────────────────────────────────────────┐ +// │ q m k │ +// └─────────────────────────────────────────────────┘ + + case MAKE_H: + if (record->event.pressed) { + SEND_STRING ("qmk compile -kb totem -km default"); + tap_code(KC_ENTER); + } + break; + +// ┌─────────────────────────────────────────────────┐ +// │ p r o d u c t i v i t y │ +// └─────────────────────────────────────────────────┘ + + case SNAP: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + SEND_STRING(SS_LSFT(SS_LCMD(SS_LCTL("4")))); //MAC + } else { + SEND_STRING(SS_LSFT(SS_LWIN("S"))); //WIN + } + } + break; + } + return true; +} +/* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + + ██████ + ██ ▄▄▄▄ + ██ ██▀▀██ + ▀▀ ██▄▄██ + ██████ ▀▀▀▀ + ██ ▄▄▄▄▄▄ + ██ ██▀▀▀▀ + ██ ██████ + ██▄▄▄▄ + ▀▀▀▀▀▀ + ████████ + ██ ██ ██ + ██ ██ ██ + ▀▀ ▀▀ ▀▀ + ████████ + +*/ + + + diff --git a/keyboards/totem/keymaps/default/rules.mk b/keyboards/totem/keymaps/default/rules.mk new file mode 100644 index 000000000000..5f8cb68ad0fb --- /dev/null +++ b/keyboards/totem/keymaps/default/rules.mk @@ -0,0 +1 @@ +DYNAMIC_MACRO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/totem/keymaps/geist/config.h b/keyboards/totem/keymaps/geist/config.h new file mode 100644 index 000000000000..f397c2855aed --- /dev/null +++ b/keyboards/totem/keymaps/geist/config.h @@ -0,0 +1,32 @@ +#pragma once + +/* The way how "handedness" is decided (which half is which), +see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness +for more options. +*/ + +#define MASTER_LEFT +// #define MASTER_RIGHT + + +//#define TAPPING_TERM 170 +#define TAPPING_TERM 170 + +// Prevent normal rollover on alphas from accidentally triggering mods. +#define IGNORE_MOD_TAP_INTERRUPT + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +#define TAPPING_FORCE_HOLD + +// Auto Shift +#define NO_AUTO_SHIFT_ALPHA +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM +#define AUTO_SHIFT_NO_SETUP + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define NO_ACTION_ONESHOT +//#define NO_ACTION_TAPPING +//#define NO_MUSIC_MODE + +#define COMBO_COUNT 1 \ No newline at end of file diff --git a/keyboards/totem/keymaps/geist/keymap.c b/keyboards/totem/keymaps/geist/keymap.c new file mode 100644 index 000000000000..a45a84ce919c --- /dev/null +++ b/keyboards/totem/keymaps/geist/keymap.c @@ -0,0 +1,352 @@ +/* + ▀▀▀▀▀ ▀▀▀▀▀ ▀▀█▀▀ + ▄▀▀▀▄ ▄ ▄▀▀▀▄ ▄ ▄▀▀▀▄ █ ▄▀▀▀▄ + █ █ █ █ █ █ █ █ █ █ █ + ▀▀▀ █ ▀▀▀ █ ▀▀▀ ▀ ▀▀▀ + █ ▄▄▄█▄▄▄ █ █ + ▀ █ █ █ █▄█ + ▀▀▀▀▀ █ █ █ ▀ ┌─┐┌─╴╷┌──┬─ + ▀ ▀ ▀ │ ┐├─╴│└─┐│ + └─┘└─╴╵╶─┘╵ +▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ +*/ + +#include QMK_KEYBOARD_H +#include +#include "totem.h" + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ D E F I N I T I O N S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e l a y e r s │ +// └─────────────────────────────────────────────────┘ + +enum totem_layers { + _COLEMAK, + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e k e y c o d e s │ +// └─────────────────────────────────────────────────┘ + +enum custom_keycodes { + COLEMAK = SAFE_RANGE, + QWERTY, + LOWER, + RAISE, + ADJUST, + OS_SWAP, + WMAIL, + GIPHY, + MAKE_H, + SNAP +}; + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e m a c r o n a m e s │ +// └─────────────────────────────────────────────────┘ + +// LEFT HAND HOME ROW MODS ├───────────────────────────────────┐ + +#define GUI_A MT(MOD_LGUI, KC_A) +#define ALT_R MT(MOD_LALT, KC_R) +#define CTL_S MT(MOD_LCTL, KC_S) +#define SHT_T MT(MOD_LSFT, KC_T) + +// RIGHT HAND HOME ROW MODS ├───────────────────────────────────┐ + +#define SHT_N MT(MOD_RSFT, KC_N) +#define CTL_E MT(MOD_LCTL, KC_E) +#define ALT_I MT(MOD_LALT, KC_I) +#define GUI_O MT(MOD_LGUI, KC_O) + +#define LOWER LT(_LOWER, KC_TAB) +#define RAISE LT(_RAISE, KC_ESC) +#define ADJUST MO(_ADJUST) + + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e c o m b o s │ +// └─────────────────────────────────────────────────┘ + +const uint16_t PROGMEM esc_combo[] = {KC_TAB, KC_Q, COMBO_END}; +combo_t key_combos[COMBO_COUNT] = { + COMBO(esc_combo, KC_ESC) +}; + + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e k e y o v e r r i d e s │ +// └─────────────────────────────────────────────────┘ + +const key_override_t sve_key_override = ko_make_basic(MOD_MASK_GUI, KC_S, C(KC_S)); + +// This globally defines all key overrides to be used ├───────────┐ +const key_override_t **key_overrides = (const key_override_t *[]){ + &sve_key_override, + NULL // Null terminate the array of overrides! +}; + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ K E Y M A P S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + ┌─────────────────────────────────────────────────┐ + │ c o l e m a k │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ Q │ W │ F │ P │ G ││ J │ L │ U │ Y │ ; │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ A │ R │ S │ T │ D ││ H │ N │ E │ I │ O │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ Q │ Z │ X │ C │ V │ B ││ K │ M │ , │ . │ / │ \ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ DEL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/ + + [_COLEMAK] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, + KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_DEL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ q w e r t y │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ Q │ W │ E │ R │ T ││ Y │ U │ I │ O │ P │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ A │ S │ D │ F │ G ││ H │ J │ K │ L │ ; │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ SHIFT │ Z │ X │ C │ V │ B ││ N │ M │ , │ . │ / │ \ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ CTRL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/ + + [_QWERTY] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_LCTL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ l o w e r │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ CAPSLCK │ NUMLCK │ ↑ │ = │ { ││ } │ 7 │ 8 │ 9 │ + │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ HOME │ ← │ ↓ │ → │ [ ││ ] │ 4 │ 5 │ 6 │ - │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ SCRNSHT │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ ) │ 1 │ 2 │ 3 │ * │ ▼ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ ││ ▼ │ ADJUST │ 0 │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_LOWER] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_QUOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, + SNAP, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______, + _______, _______, _______, _______, ADJUST, KC_P0 + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ r a i s e │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ ! │ @ │ # │ $ │ % ││ ^ │ & │ Ü │ ° │ / │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ Ä │ è │ SZ │ é │ ││ │ ¥ │ € │ £ │ Ö │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ WEB │ ` │ ~ │ CUE │ │ ││ │ │ │ DM REC1 │ DM STOP │ DM PLY1 │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ GIPHY │ ADJUST │ ▼ ││ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_RAISE] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, + RALT(KC_A),RALT(KC_F),RALT(KC_S),RALT(KC_G),XXXXXXX, XXXXXXX,LSFT(RALT(KC_4)),RALT(KC_5), RALT(KC_4), RALT(KC_O), + WMAIL, LSFT(KC_GRV),KC_TILD, RALT(KC_C),XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1, + GIPHY, ADJUST, _______, _______, _______, _______ + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ a d j u s t │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ RESET │ │ │ │ ││ │ F7 │ F8 │ F9 │ F12 │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ DEBUG │ QWERTY │ │ │ ││ │ F4 │ F5 │ F6 │ F11 │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ MAKE │ OS SWAP │ COLEMAK │ │ │ ││ │ F1 │ F2 │ F3 │ F10 │ F13 │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_ADJUST] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, + DB_TOGG, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F11, + MAKE_H, OS_SWAP, COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F13, + _______, _______, _______, _______, _______, _______ + ) +/* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ t e m p l a t e │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ │ │ │ │ ││ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ││ │ │ │ │ │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ │ │ │ │ ││ │ │ │ │ │ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ │ │ ││ │ │ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + ), +*/ +}; + + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ M A C R O S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + + case OS_SWAP: + if (record->event.pressed) { + if (!keymap_config.swap_lctl_lgui) { + keymap_config.swap_lctl_lgui = true; // ─── MAC + } + else { + keymap_config.swap_lctl_lgui = false; // ─── WIN + } + eeconfig_update_keymap(keymap_config.raw); + clear_keyboard(); // ──── clear to prevent stuck keys + return false; + } + + +// ┌─────────────────────────────────────────────────┐ +// │ l a y e r │ +// └─────────────────────────────────────────────────┘ + + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + +// ┌─────────────────────────────────────────────────┐ +// │ q m k │ +// └─────────────────────────────────────────────────┘ + + case MAKE_H: + if (record->event.pressed) { + SEND_STRING ("qmk compile -kb totem -km geist"); + tap_code(KC_ENTER); + } + break; + +// ┌─────────────────────────────────────────────────┐ +// │ p r o d u c t i v i t y │ +// └─────────────────────────────────────────────────┘ + + case WMAIL: + if (record->event.pressed) { + SEND_STRING ("igit.igit@web.de"); + } + break; + + case GMAIL: + if (record->event.pressed) { + SEND_STRING ("igit@gmx.de"); + } + break; + + case GIPHY: + if (record->event.pressed) { + SEND_STRING ("@gif "); + } + break; + + case SNAP: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + SEND_STRING(SS_LSFT(SS_LCMD(SS_LCTL("4")))); //MAC + } else { + SEND_STRING(SS_LSFT(SS_LWIN("S"))); //WIN + } + } + break; + } + return true; +} +/* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + + ██████ + ██ ▄▄▄▄ + ██ ██▀▀██ + ▀▀ ██▄▄██ + ██████ ▀▀▀▀ + ██ ▄▄▄▄▄▄ + ██ ██▀▀▀▀ + ██ ██████ + ██▄▄▄▄ + ▀▀▀▀▀▀ + ████████ + ██ ██ ██ + ██ ██ ██ + ▀▀ ▀▀ ▀▀ + ████████ + +*/ + + + diff --git a/keyboards/totem/keymaps/geist/rules.mk b/keyboards/totem/keymaps/geist/rules.mk new file mode 100644 index 000000000000..dafd5c565b43 --- /dev/null +++ b/keyboards/totem/keymaps/geist/rules.mk @@ -0,0 +1,3 @@ +DYNAMIC_MACRO_ENABLE = yes +COMBO_ENABLE = yes +KEY_OVERRIDE_ENABLE = yes \ No newline at end of file diff --git a/keyboards/totem/mcuconf.h b/keyboards/totem/mcuconf.h new file mode 100644 index 000000000000..c7d2f690bbd6 --- /dev/null +++ b/keyboards/totem/mcuconf.h @@ -0,0 +1,9 @@ +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM4 +#define RP_PWM_USE_PWM4 TRUE + +#undef RP_PWM_USE_TIM1 +#define RP_PWM_USE_TIM1 TRUE diff --git a/keyboards/totem/readme.md b/keyboards/totem/readme.md new file mode 100644 index 000000000000..c83437d0bf48 --- /dev/null +++ b/keyboards/totem/readme.md @@ -0,0 +1,18 @@ +``` + ▀▀▀▀▀ ▀▀▀▀▀ ▀▀█▀▀ + ▄▀▀▀▄ ▄ ▄▀▀▀▄ ▄ ▄▀▀▀▄ █ ▄▀▀▀▄ + █ █ █ █ █ █ █ █ █ █ █ + ▀▀▀ █ ▀▀▀ █ ▀▀▀ ▀ ▀▀▀ + █ ▄▄▄█▄▄▄ █ █ + ▀ █ █ █ █▄█ + ▀▀▀▀▀ █ █ █ ▀ + ▀ ▀ ▀ +▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ + +``` +# TOTEM split keyboard + +TOTEM is 34 keys column-staggered split keyboard made by @geigeigeist. It uses the Seeed XIAO RP2040. + +You can use this command to compile the firmware +`qmk compile -kb totem -km default` \ No newline at end of file diff --git a/keyboards/totem/rules.mk b/keyboards/totem/rules.mk new file mode 100644 index 000000000000..bf7769118a04 --- /dev/null +++ b/keyboards/totem/rules.mk @@ -0,0 +1,31 @@ +# MCU name +MCU = RP2040 + +# Bootloader selection +BOOTLOADER = rp2040 + +# Ignore some warnings during the build, likely to be fixed before RP2040 PR is merged +ALLOW_WARNINGS = yes + +# LTO must be disabled for RP2040 builds +LTO_ENABLE = no + +SPLIT_KEYBOARD = yes +SWAP_HANDS_ENABLE = yes + +# PIO serial/WS2812 drivers must be used on RP2040 +SERIAL_DRIVER = vendor +WS2812_DRIVER = vendor + +#SPACE SAVING +EXTRAKEY_ENABLE = no +AUDIO_ENABLE = no +MUSIC_ENABLE = no +LTO_ENABLE = no +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +MOUSEKEY_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no + diff --git a/keyboards/totem/totem.c b/keyboards/totem/totem.c new file mode 100644 index 000000000000..9785fb51af07 --- /dev/null +++ b/keyboards/totem/totem.c @@ -0,0 +1,56 @@ +/* Copyright 2022 + * GEIST @geigeigeist + * + * 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 "totem.h" + + +#ifdef SWAP_HANDS_ENABLE + +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = + // The LAYOUT macro could work for this, but it was harder to figure out the + // identity using it. + + // This is the identity layout. +/* +{ \ + { {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0} }, \ + { {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1} }, \ + { {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2} }, \ + { {0, 3}, {2, 3}, {3, 3}, {4, 3} }, \ + \ + { {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4} }, \ + { {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5} }, \ + { {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6} }, \ + { {0, 7}, {1, 7}, {2, 7}, {4, 7}, \ +}; +*/ + + // This is the mirror, q <-> p, w <-> o, etc... +{ \ + { {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4} }, \ + { {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5} }, \ + { {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6} }, \ + { {4, 7}, {2, 7}, {1, 7}, {0, 7} }, \ + \ + { {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0} }, \ + { {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1} }, \ + { {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2} }, \ + { {4, 3}, {3, 3}, {2, 3}, {0, 3} }, \ +}; + +#endif //SWAP_HANDS_ENABLE \ No newline at end of file diff --git a/keyboards/totem/totem.h b/keyboards/totem/totem.h new file mode 100644 index 000000000000..01c37f0121de --- /dev/null +++ b/keyboards/totem/totem.h @@ -0,0 +1,56 @@ +/* Copyright 2022 + * GEIST @geigeigeist + * + * 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" + +/* This 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. + */ + +// readability +#define ___ KC_NO + +// |SW01|SW02|SW03|SW04|SW05| |SW05|SW04|SW03|SW02|SW01| +// |SW06|SW07|SW08|SW09|SW10| |SW10|SW09|SW08|SW07|SW06| +// |SW16|SW11|SW12|SW13|SW14|SW15| |SW15|SW14|SW13|SW12|SW11|SW16| +// |SW17|SW18|SW19| |SW19|SW18|SW17| + +#define LAYOUT_totem( \ + L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ + L30, L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, R34,\ + L32, L33, L34, R30, R31, R32 \ + ) \ + { \ + { L00, L01, L02, L03, L04 }, \ + { L10, L11, L12, L13, L14 }, \ + { L20, L21, L22, L23, L24 }, \ + { L30, ___, L32, L33, L34 }, \ + { R04, R03, R02, R01, R00 }, \ + { R14, R13, R12, R11, R10 }, \ + { R24, R23, R22, R21, R20 }, \ + { R34, ___, R32, R31, R30 }, \ + } + + +#define LAYOUT LAYOUT_totem \ No newline at end of file