diff options
-rw-r--r-- | keyboards/buzzard/buzzard.c | 3 | ||||
-rw-r--r-- | keyboards/buzzard/buzzard.h | 9 | ||||
-rw-r--r-- | keyboards/buzzard/config.h | 6 | ||||
-rw-r--r-- | keyboards/buzzard/info.json | 10 | ||||
-rw-r--r-- | keyboards/buzzard/keymaps/crehmann/config.h | 38 | ||||
-rw-r--r-- | keyboards/buzzard/keymaps/crehmann/features/haptic_utils.c | 42 | ||||
-rw-r--r-- | keyboards/buzzard/keymaps/crehmann/features/haptic_utils.h | 10 | ||||
-rw-r--r-- | keyboards/buzzard/keymaps/crehmann/keymap.c | 256 | ||||
-rw-r--r-- | keyboards/buzzard/keymaps/crehmann/rules.mk | 9 | ||||
-rw-r--r-- | keyboards/buzzard/keymaps/default/config.h | 39 | ||||
-rw-r--r-- | keyboards/buzzard/keymaps/default/keymap.c | 274 | ||||
-rw-r--r-- | keyboards/buzzard/keymaps/default/rules.mk | 7 | ||||
-rw-r--r-- | keyboards/buzzard/readme.md | 29 | ||||
-rw-r--r-- | keyboards/buzzard/rev1/config.h | 62 | ||||
-rw-r--r-- | keyboards/buzzard/rev1/rev1.c | 128 | ||||
-rw-r--r-- | keyboards/buzzard/rev1/rev1.h | 52 | ||||
-rw-r--r-- | keyboards/buzzard/rev1/rules.mk | 3 | ||||
-rw-r--r-- | keyboards/buzzard/rules.mk | 22 |
18 files changed, 999 insertions, 0 deletions
diff --git a/keyboards/buzzard/buzzard.c b/keyboards/buzzard/buzzard.c new file mode 100644 index 0000000000..00ad12a23e --- /dev/null +++ b/keyboards/buzzard/buzzard.c @@ -0,0 +1,3 @@ +// Copyright 2021 Christoph Rehmann (crehmann) +// SPDX-License-Identifier: GPL-2.0-or-later +#include "buzzard.h" diff --git a/keyboards/buzzard/buzzard.h b/keyboards/buzzard/buzzard.h new file mode 100644 index 0000000000..f094e4af39 --- /dev/null +++ b/keyboards/buzzard/buzzard.h @@ -0,0 +1,9 @@ +// Copyright 2021 Christoph Rehmann (crehmann) +// SPDX-License-Identifier: GPL-2.0-or-later +#pragma once + +#include "quantum.h" + +#if defined(KEYBOARD_buzzard_rev1) +# include "rev1.h" +#endif
\ No newline at end of file diff --git a/keyboards/buzzard/config.h b/keyboards/buzzard/config.h new file mode 100644 index 0000000000..7dbbedfaf0 --- /dev/null +++ b/keyboards/buzzard/config.h @@ -0,0 +1,6 @@ +// Copyright 2021 Christoph Rehmann (crehmann) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include "config_common.h"
\ No newline at end of file diff --git a/keyboards/buzzard/info.json b/keyboards/buzzard/info.json new file mode 100644 index 0000000000..a958ffdc94 --- /dev/null +++ b/keyboards/buzzard/info.json @@ -0,0 +1,10 @@ +{ + "keyboard_name": "Buzzard", + "url": "https://github.com/crehmann/buzzard", + "maintainer": "crehmann", + "layouts": { + "LAYOUT": { + "layout": [{"x":1, "y":0}, {"x":2, "y":0}, {"x":3, "y":0}, {"x":4, "y":0}, {"x":5, "y":0}, {"x":11, "y":0}, {"x":12, "y":0}, {"x":13, "y":0}, {"x":14, "y":0}, {"x":15, "y":0}, {"x":0, "y":1}, {"x":1, "y":1}, {"x":2, "y":1}, {"x":3, "y":1}, {"x":4, "y":1}, {"x":5, "y":1}, {"x":11, "y":1}, {"x":12, "y":1}, {"x":13, "y":1}, {"x":14, "y":1}, {"x":15, "y":1}, {"x":16, "y":1}, {"x":0, "y":2}, {"x":1, "y":2}, {"x":2, "y":2}, {"x":3, "y":2}, {"x":4, "y":2}, {"x":5, "y":2}, {"x":11, "y":2}, {"x":12, "y":2}, {"x":13, "y":2}, {"x":14, "y":2}, {"x":15, "y":2}, {"x":16, "y":2}, {"x":5, "y":3}, {"x":6, "y":3}, {"x":7, "y":3}, {"x":9, "y":3}, {"x":10, "y":3}, {"x":11, "y":3}] + } + } +}
\ No newline at end of file diff --git a/keyboards/buzzard/keymaps/crehmann/config.h b/keyboards/buzzard/keymaps/crehmann/config.h new file mode 100644 index 0000000000..d5d9a9bb83 --- /dev/null +++ b/keyboards/buzzard/keymaps/crehmann/config.h @@ -0,0 +1,38 @@ +// Copyright 2021 Christoph Rehmann (crehmann) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Configure the global tapping term (default: 200ms) +#define TAPPING_TERM 200 + +// 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 + +// Apply the modifier on keys that are tapped during a short hold of a modtap +#define PERMISSIVE_HOLD + +// Using the right side as master +#define MASTER_RIGHT + +#ifdef HAPTIC_ENABLE +// this configuration has no effect because the haptic exclusion is implemented with +// __attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) +// in the default keymap and reacts only to mouse clicks. +//#define NO_HAPTIC_MOD +#define NO_HAPTIC_FN +#define NO_HAPTIC_ALPHA +#define NO_HAPTIC_PUNCTUATION +#define NO_HAPTIC_NAV +#define NO_HAPTIC_NUMERIC +#define DRV_GREETING alert_750ms +#define DRV_MODE_DEFAULT sharp_tick1 +#endif + +#ifdef PS2_MOUSE_ENABLE +#define PS2_MOUSE_SCROLL_BTN_MASK (1<<PS2_MOUSE_BTN_RIGHT) +#define PS2_MOUSE_SCROLL_BTN_SEND 500 +#endif
\ No newline at end of file diff --git a/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.c b/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.c new file mode 100644 index 0000000000..37fa2902c5 --- /dev/null +++ b/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.c @@ -0,0 +1,42 @@ +// Copyright 2021 Christoph Rehmann (crehmann) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "haptic_utils.h" + +#ifdef HAPTIC_ENABLE +#include "drivers/haptic/DRV2605L.h" +#endif + +#ifdef HAPTIC_ENABLE +bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case KC_BTN1 ... KC_BTN5: + return true; + break; + } + + return false; +} +#endif + +void process_layer_pulse(layer_state_t state) { +#ifdef HAPTIC_ENABLE + switch (get_highest_layer(state)) { + case 1: + DRV_pulse(soft_bump); + break; + case 2: + DRV_pulse(sh_dblsharp_tick); + break; + case 3: + DRV_pulse(lg_dblclick_str); + break; + case 4: + DRV_pulse(soft_bump); + break; + case 5: + DRV_pulse(pulsing_sharp); + break; + } +#endif +} diff --git a/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.h b/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.h new file mode 100644 index 0000000000..ccfbb7e14b --- /dev/null +++ b/keyboards/buzzard/keymaps/crehmann/features/haptic_utils.h @@ -0,0 +1,10 @@ +// Copyright 2021 Christoph Rehmann (crehmann) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +#include QMK_KEYBOARD_H + +bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record); + +void process_layer_pulse(layer_state_t state);
\ No newline at end of file diff --git a/keyboards/buzzard/keymaps/crehmann/keymap.c b/keyboards/buzzard/keymaps/crehmann/keymap.c new file mode 100644 index 0000000000..842494c60a --- /dev/null +++ b/keyboards/buzzard/keymaps/crehmann/keymap.c @@ -0,0 +1,256 @@ +// Copyright 2021 Christoph Rehmann (crehmann) +// SPDX-License-Identifier: GPL-2.0-or-later + +#include QMK_KEYBOARD_H +#include "keymap_german_ch.h" +#include "features/haptic_utils.h" + +#ifdef PS2_MOUSE_ENABLE + #include "ps2_mouse.h" +#endif + +enum layers { + _BASE = 0, + _NAVR, + _SYMB, + _NUMR, + _FUNL, + _MOAJ +}; + + +// Aliases for readability +#define BASE DF(_BASE) +#define NAVR MO(_NAVR) +#define SYMB MO(_SYMB) +#define NUMR MO(_NUMR) +#define FUNL MO(_FUNL) +#define MOAD MO(_MOAJ) + +// Left-hand home row mods +#define RALT_X RALT_T(KC_X) +#define GUI_A LGUI_T(KC_A) +#define ALT_S LALT_T(KC_S) +#define CTL_D LCTL_T(KC_D) +#define SFT_F LSFT_T(KC_F) + +// Right-hand home row mods +#define SFT_J RSFT_T(KC_J) +#define CTL_K RCTL_T(KC_K) +#define ALT_L LALT_T(KC_L) +#define GUI_SCL RGUI_T(KC_SCLN) +#define RALT_DT RALT_T(KC_DOT) + +// Left-hand outer column +#define CTL_ESC MT(MOD_LCTL, KC_ESC) + +// Thumbcluster +#define UC_TL1 CTL_ESC +#define UC_TL2 LT(NAVR, KC_SPC) +#define UC_TL3 LT(NUMR, KC_TAB) + +#define UC_TR3 LT(FUNL, KC_BSPC) +#define UC_TR2 LT(SYMB, KC_ENT) +#define UC_TR1 KC_DEL + +// Shortcuts +#define UC_COPY LCTL(KC_C) +#define UC_PSTE LCTL(KC_V) +#define UC_CUT LCTL(KC_X) +#define UC_MUTE SGUI(KC_M) +#define UC_OSFT OSM(MOD_LSFT) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// /* +// * Base Layer +// * +// * ,----------------------------------. ,----------------------------------. +// * | Q | W | E | R | T | | Z | U | I | O | P | +// * | | | | | | | | | | | | +// * ,------+------+------+------+------+------| |------+------+------+------+------+------. +// * | OSM | A | S | D | F | G | | H | J | K | L | ; : | Bksp | +// * | Shift| GUI | LALT | LCTL | LSFT | | | | LSFT | LCTL | LALT | GUI | | +// * |------+------+------+------+------+------| |------+------+------+------+------+------| +// * | ESC | Y | X | C | F | B | | N | M | , < | . > | / ? | Mute | +// * | CTL | | RALT | | | | | | | | RALT | | Mic | +// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' +// * | ESC | Space| TAB | | Bksp| Enter| Del | +// * | CTL | NAVR | NUMR | | FUNL| SYML | | +// * `--------------------' `--------------------' +// */ + [_BASE] = LAYOUT( + KC_Q , KC_W , KC_E , KC_R , KC_T , CH_Z , KC_U , KC_I , KC_O , KC_P , + UC_OSFT, GUI_A , ALT_S , CTL_D , SFT_F , KC_G , KC_H , SFT_J , CTL_K , ALT_L , GUI_SCL, KC_BSPC, + CTL_ESC, CH_Y , RALT_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, RALT_DT, KC_SLSH, UC_MUTE, + UC_TL1 , UC_TL2 , UC_TL3 , UC_TR3 , UC_TR2 , UC_TR1 + ), + +// /* +// * Symbol Layer +// * +// * ,----------------------------------. ,----------------------------------. +// * | ` | @ | { | } | $ | | ¨ | ü | / | \ | ^ | +// * | | | | | | | | | | | | +// * ,------+------+------+------+------+------| |------+------+------+------+------+------. +// * | | ä | & | ( | ) | | | | ' | " | ? | ! | + | | +// * | | | | | | | | | | | | | | +// * |------+------+------+------+------+------| |------+------+------+------+------+------| +// * | | % | # | [ | ] | ~ | | € | = | * | < | > | | +// * | | | | | | | | | | | | | | +// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' +// * | | | TAB | | | | | +// * | | | | | | | | +// * `--------------------' `--------------------' +// */ + [_SYMB] = LAYOUT( + CH_GRV , CH_AT , CH_LCBR, CH_RCBR, CH_DLR , CH_DIAE, CH_UDIA, CH_SLSH, CH_BSLS, KC_CIRC, + _______, CH_ADIA, CH_AMPR, CH_LPRN, CH_RPRN, CH_PIPE, CH_QUOT, CH_DQUO, CH_QUES, CH_EXLM, CH_PLUS, _______, + _______, CH_PERC, CH_HASH, CH_LBRC, CH_RBRC, CH_TILD, CH_EURO, CH_EQL , CH_ASTR, CH_LABK, CH_RABK, _______, + _______, _______, KC_TAB, _______, _______ , _______ + ), + +// /* +// * Navigation Layer (Right) +// * +// * ,----------------------------------. ,----------------------------------. +// * | | | | | | |Insert| Cut | PgUp | PgDn | | +// * | | | | | | | | | | | | +// * ,------+------+------+------+------+------| |------+------+------+------+------+------. +// * | | | | | | | | Copy | ← | ↑ | ↓ | → | | +// * | | | | | | | | | | | | | | +// * |------+------+------+------+------+------| |------+------+------+------+------+------| +// * | | | | | | | | Paste| Home | WH_U | WH_D | End | | +// * | | | | | | | | | | | | | | +// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' +// * | | | | | Bksp | | Del | +// * | | | | | | | | +// * `--------------------' `--------------------' +// */ + [_NAVR] = LAYOUT( + _______, _______, _______, _______, _______, KC_INS , UC_CUT , KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, UC_COPY, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, UC_PSTE, KC_HOME, KC_WH_U, KC_WH_D, KC_END , _______, + _______, _______, _______, KC_BSPC, _______, _______ + ), +// -------------------------------------------------------------------------------------------------------------------------------------------------------- + +// /* +// * Number Layer (Right) +// * +// * ,----------------------------------. ,----------------------------------. +// * | | | | | | | / | 7 | 8 | 9 | - | +// * | | | | | | | | | | | | +// * ,------+------+------+------+------+------| |------+------+------+------+------+------. +// * | | | | | | | | * | 4 | 5 | 6 | + | | +// * | | | | | | | | | | | | | | +// * |------+------+------+------+------+------| |------+------+------+------+------+------| +// * | | | | | | | | 0 | 1 | 2 | 3 | . | | +// * | | | | | | | | | | | | | | +// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' +// * | | | | | Bksp | Enter| | +// * | | | | | | | | +// * `--------------------' `--------------------' +// */ + [_NUMR] = LAYOUT( + _______, _______, _______, _______, _______, KC_SLSH, KC_7 , KC_8 , KC_9 , KC_MINS, + _______, _______, _______, _______, _______, _______, KC_ASTR, KC_4 , KC_5 , KC_6 , KC_PLUS, _______, + _______, _______, _______, _______, _______, _______, KC_0 , KC_1 , KC_2 , KC_3 , KC_DOT , _______, + _______, _______, _______, KC_BSPC, KC_ENT , _______ + ), + +// /* +// * Function Layer (Left) +// * +// * ,----------------------------------. ,----------------------------------. +// * | F12 | F7 | F8 | F9 | Pause| | | | | | | +// * | | | | | | | | | | | | +// * ,------+------+------+------+------+------| |------+------+------+------+------+------. +// * | | F11 | F4 | F5 | F6 | PrScr| | | | | | | | +// * | | | | | | | | | | | | | | +// * |------+------+------+------+------+------| |------+------+------+------+------+------| +// * | | F10 | F1 | F2 | F3 | CapsL| | | | | | | | +// * | | | | | | | | | | | | | | +// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' +// * | | Space| TAB | | | | | +// * | | | | | | | | +// * `--------------------' `--------------------' +// */ + [_FUNL] = LAYOUT( + KC_F12 , KC_F7 , KC_F8 , KC_F9 , KC_PAUS, _______, _______, _______, _______, _______, + _______, KC_F11 , KC_F4 , KC_F5 , KC_F6 , KC_PSCR, _______, _______, _______, _______, _______, _______, + _______, KC_F10 , KC_F1 , KC_F2 , KC_F3 , KC_CAPS, _______, _______, _______, _______, _______, _______, + _______, KC_SPC , KC_TAB , _______, _______, _______ + ), + +// /* +// * Mouse & Adjustment Layer +// * +// * ,----------------------------------. ,----------------------------------. +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * ,------+------+------+------+------+------| |------+------+------+------+------+------. +// * | | | BTN3 | BTN2 | BTN1 | | | | | | | | | +// * | | | | | | | | | | | | | | +// * |------+------+------+------+------+------| |------+------+------+------+------+------| +// * | | | Cut | Copy | Paste| | | Play |M Prev| VolDn| VolUp|M Next| | +// * | | | | | | | | | | | | | | +// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' +// * | | | | | | | | +// * | | | | | | | | +// * `--------------------' `--------------------' +// */ + [_MOAJ] = LAYOUT( + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, KC_BTN3, KC_BTN2, KC_BTN1, _______, _______, _______, _______, _______, _______, _______, + _______, _______, UC_CUT , UC_COPY, UC_PSTE, _______, KC_MPLY, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______, + _______, _______, _______, _______, _______, _______ + ), + +// -------------------------------------------------------- TEMPLATE ------------------------------------------------------------------------------------- +// /* +// * Layer +// * +// * ,----------------------------------. ,----------------------------------. +// * | | | | | | | | | | | | +// * | | | | | | | | | | | | +// * ,------+------+------+------+------+------| |------+------+------+------+------+------. +// * | | | | | | | | | | | | | | +// * | | | | | | | | | | | | | | +// * |------+------+------+------+------+------| |------+------+------+------+------+------| +// * | | | | | | | | | | | | | | +// * | | | | | | | | | | | | | | +// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' +// * | | | | | | | | +// * | | | | | | | | +// * `--------------------' `--------------------' +// */ +// [_LAYERINDEX] = LAYOUT( +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// _______, _______, _______, _______, _______, _______ +// ), +// -------------------------------------------------------------------------------------------------------------------------------------------------------- +}; + +layer_state_t layer_state_set_user(layer_state_t state) { + process_layer_pulse(state); + return update_tri_layer_state(state, _NAVR, _SYMB, _MOAJ); +} + +uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case GUI_A: + return TAPPING_TERM + 150; + case ALT_S: + return TAPPING_TERM + 50; + case ALT_L: + return TAPPING_TERM + 50; + case GUI_SCL: + return TAPPING_TERM + 150; + default: + return TAPPING_TERM; + } +} diff --git a/keyboards/buzzard/keymaps/crehmann/rules.mk b/keyboards/buzzard/keymaps/crehmann/rules.mk new file mode 100644 index 0000000000..484e7d84a6 --- /dev/null +++ b/keyboards/buzzard/keymaps/crehmann/rules.mk @@ -0,0 +1,9 @@ +SRC += features/haptic_utils.c + +OLED_ENABLE = yes + +HAPTIC_ENABLE = yes +HAPTIC_DRIVER = DRV2605L + +PS2_MOUSE_ENABLE = yes +MOUSEKEY_ENABLE = yes diff --git a/keyboards/buzzard/keymaps/default/config.h b/keyboards/buzzard/keymaps/default/config.h new file mode 100644 index 0000000000..76294cf78a --- /dev/null +++ b/keyboards/buzzard/keymaps/default/config.h @@ -0,0 +1,39 @@ +// Copyright 2021 Christoph Rehmann (crehmann) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +// Configure the global tapping term (default: 200ms) +#define TAPPING_TERM 200 + +// 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 + +// Apply the modifier on keys that are tapped during a short hold of a modtap +#define PERMISSIVE_HOLD + +// Using the right side as master +#define MASTER_RIGHT + +#ifdef HAPTIC_ENABLE +// this configuration has no effect because the haptic exclusion is implemented with +// __attribute__((weak)) bool get_haptic_enabled_key(uint16_t keycode, keyrecord_t *record) +// in the default keymap and reacts only to mouse clicks. +//#define NO_HAPTIC_MOD +#define NO_HAPTIC_FN +#define NO_HAPTIC_ALPHA +#define NO_HAPTIC_PUNCTUATION +#define NO_HAPTIC_NAV +#define NO_HAPTIC_NUMERIC +#define DRV_GREETING alert_750ms +#define DRV_MODE_DEFAULT sharp_tick1 +#endif + + +#ifdef PS2_MOUSE_ENABLE +#define PS2_MOUSE_SCROLL_BTN_MASK (1<<PS2_MOUSE_BTN_RIGHT) // using the right mouse button for scrolling (other buttons can be configured) +#define PS2_MOUSE_SCROLL_BTN_SEND 500 +#endif
\ No newline at end of file diff --git a/keyboards/buzzard/keymaps/default/keymap.c b/keyboards/buzzard/keymaps/default/keymap.c new file mode 100644 index 0000000000..7ca3ddc7de --- /dev/null +++ b/keyboards/buzzard/keymaps/default/keymap.c @@ -0,0 +1,274 @@ +/* Copyright 2021 Christoph Rehmann (crehmann) + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ +#include QMK_KEYBOARD_H + +enum layers { + _BASE = 0, + _NAVR, + _SYMB, + _NUMR, + _FUNL, + _ADJL +}; + + +// Aliases for readability +#define BASE DF(_BASE) +#define NAVR MO(_NAVR) +#define SYMB MO(_SYMB) +#define NUMR MO(_NUMR) +#define FUNL MO(_FUNL) +#define ADJL MO(_ADJL) + +// Left-hand home row mods +#define RALT_X RALT_T(KC_X) +#define GUI_A LGUI_T(KC_A) +#define ALT_S LALT_T(KC_S) +#define CTL_D LCTL_T(KC_D) +#define SFT_F LSFT_T(KC_F) + +// Right-hand home row mods +#define SFT_J RSFT_T(KC_J) +#define CTL_K RCTL_T(KC_K) +#define ALT_L LALT_T(KC_L) +#define GUI_SCL RGUI_T(KC_SCLN) +#define RALT_DT RALT_T(KC_DOT) + +// Left-hand outer column +#define CTL_ESC MT(MOD_LCTL, KC_ESC) +#define SFT_TAB MT(MOD_LSFT, KC_TAB) + +// Thumbcluster +#define UC_TL1 KC_BTN1 +#define UC_TL2 LT(NAVR, KC_SPC) +#define UC_TL3 LT(NUMR, KC_TAB) + +#define UC_TR3 LT(FUNL, KC_BSPC) +#define UC_TR2 LT(SYMB, KC_ENT) +#define UC_TR1 KC_BTN2 + +// Shortcuts +#define UC_COPY LCTL(KC_C) +#define UC_PSTE LCTL(KC_V) +#define UC_CUT LCTL(KC_X) +#define UC_OSFT OSM(MOD_LSFT) + +// clang-format off +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +// /* +// * Base Layer +// * +// * ,----------------------------------. ,----------------------------------. +// * | Q | W | E | R | T | | Y | U | I | O | P | +// * | | | | | | | | | | | | +// * ,------+------+------+------+------+------| |------+------+------+------+------+------. +// * | OSM | A | S | D | F | G | | H | J | K | L | ; : | Bksp | +// * | Shift| GUI | LALT | LCTL | LSFT | | | | LSFT | LCTL | ALT | GUI | | +// * |------+------+------+------+------+------| |------+------+------+------+------+------| +// * | ESC | Z | X | C | F | B | | N | M | , < | . > | / ? | ADJL | +// * | CTL | | RALT | | | | | | | | RALT | | | +// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' +// * | BTN1 | Space| TAB | | Bksp| Enter| BTN2 | +// * | | NAVR | NUMR | | FUNL| SYML | | +// * `--------------------' `--------------------' +// */ + [_BASE] = LAYOUT( + KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , + UC_OSFT, GUI_A , ALT_S , CTL_D , SFT_F , KC_G , KC_H , SFT_J , CTL_K , ALT_L , GUI_SCL, KC_DEL, + CTL_ESC, KC_Z , RALT_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, RALT_DT, KC_SLSH, ADJL , + KC_BTN1, UC_TL2 , UC_TL3 , UC_TR3 , UC_TR2 , UC_TR1 + ), + +// /* +// * Navigation Layer (Right) +// * +// * ,----------------------------------. ,----------------------------------. +// * | | | | | | |Insert| Cut | PgUp | PgDn | | +// * | | | | | | | | | | | | +// * ,------+------+------+------+------+------| |------+------+------+------+------+------. +// * | | | | | | | | Copy | ← | ↑ | ↓ | → | | +// * | | | | | | | | | | | | | | +// * |------+------+------+------+------+------| |------+------+------+------+------+------| +// * | | | | | | | | Paste| Home | WH_U | WH_D | End | | +// * | | | | | | | | | | | | | | +// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' +// * | | | | | Bksp | Enter| | +// * | | | | | | | | +// * `--------------------' `--------------------' +// */ + [_NAVR] = LAYOUT( + _______, _______, _______, _______, _______, KC_INS , UC_CUT , KC_PGUP, KC_PGDN, _______, + _______, _______, _______, _______, _______, _______, UC_COPY, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, _______, + _______, _______, _______, _______, _______, _______, UC_PSTE, KC_HOME, KC_WH_U, KC_WH_D, KC_END , _______, + _______, _______, _______, KC_BSPC, KC_ENT , _______ + ), +// -------------------------------------------------------------------------------------------------------------------------------------------------------- + + +// /* +// * Symbol Layer (Right) +// +// * ,----------------------------------. ,----------------------------------. +// * | ` | ~ | | | \ | | | | / | + | = | ? | +// * | | | | | | | | | | | | +// * ,------+------+------+------+------+------| |------+------+------+------+------+------. +// * | | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | +// * | | | | | | | | | | | | | | +// * |------+------+------+------+------+------| |------+------+------+------+------+------| +// * | | : | ; | - | [ | { | | } | ] | _ | , | . | | +// * | | | | | | | | | | | | | | +// * `----------------------------------+------+-------------. ,-------------+------+----------------------------------' +// * | | Space| TAB | | Bksp | Enter| | +// * | | | | | | | | +// * `--------------------' `--------------------' +// * + [_SYMB] = LAYOUT( + KC_GRV , KC_TILD, KC_PIPE, KC_BSLS, _______, _______, KC_SLSH, KC_PLUS, KC_EQL , KC_QUES, + _______, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + _______, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_LCBR, KC_RCBR, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT , _______, + _______, KC_SPC , KC_TAB , KC_BSPC, KC_ENT , _______ + ), + +// /* +// * Number Layer (Right) +// * +// * ,----------------------------------. ,----------------------------------. +// * | | | | | | | / | 7 | 8 | 9 | - | +// * | | | | | | | | | | | | +// * ,------+------+------+------+------+------| |------+------+------+------+------+------. +// * | | | | | | | | * | 4 | 5 | 6 | + | | +// * | | | | | | | | | | | | | | +// * |------+------+------+------+------+------| |------+------+------+------+------+------| +// * | | | | | | | | 0 | 1 | 2 | 3 | . | | +// * | | | | | | | |