From b5ebdf1b3a29119e1a414aaf7e2cf7a583853430 Mon Sep 17 00:00:00 2001 From: Jonathan Rascher Date: Fri, 6 Nov 2020 00:41:06 -0600 Subject: [Keymap] bcat keymaps and userspace (#10705) Add Eco keymap, factor Crkbd keymap to community layout, other minor tweaks * Remove outdated Crkbd Ctrl key positioning info * Add Left Alt key to Lily58 keymap * Lily58 no longer overrides default TAPPING_TERM * Refactor Crkbd keymap to use new community layout * Fix underglow animations for Crkbd w/ Split Common * Add initial Eco keymap * Update outdated reference to Crkbd layout * Add keymap links to userspace readme * Add copyright notices to files changed in this PR --- layouts/community/split_3x6_3/bcat/config.h | 34 ++++++++ layouts/community/split_3x6_3/bcat/keymap.c | 72 +++++++++++++++ layouts/community/split_3x6_3/bcat/readme.md | 126 +++++++++++++++++++++++++++ layouts/community/split_3x6_3/bcat/rules.mk | 10 +++ 4 files changed, 242 insertions(+) create mode 100644 layouts/community/split_3x6_3/bcat/config.h create mode 100644 layouts/community/split_3x6_3/bcat/keymap.c create mode 100644 layouts/community/split_3x6_3/bcat/readme.md create mode 100644 layouts/community/split_3x6_3/bcat/rules.mk (limited to 'layouts') diff --git a/layouts/community/split_3x6_3/bcat/config.h b/layouts/community/split_3x6_3/bcat/config.h new file mode 100644 index 0000000000..e177f0ffcb --- /dev/null +++ b/layouts/community/split_3x6_3/bcat/config.h @@ -0,0 +1,34 @@ +/* Copyright 2020 Jonathan Rascher + * + * 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 + +#if defined(KEYBOARD_crkbd_rev1_common) || defined(KEYBOARD_crkbd_rev1_legacy) +# define EE_HANDS + +# if defined(RGBLIGHT_ENABLE) +/* Configure RGB for underglow only (first six LEDs on each side). */ +# undef RGBLED_SPLIT +# define RGBLED_SPLIT \ + { 6, 6 } +# endif + +# if defined(RGB_MATRIX_ENABLE) +/* Limit max RGB LED current to avoid tripping controller fuse. */ +# undef RGB_MATRIX_MAXIMUM_BRIGHTNESS +# define RGB_MATRIX_MAXIMUM_BRIGHTNESS 150 +# endif +#endif diff --git a/layouts/community/split_3x6_3/bcat/keymap.c b/layouts/community/split_3x6_3/bcat/keymap.c new file mode 100644 index 0000000000..934a8e31f2 --- /dev/null +++ b/layouts/community/split_3x6_3/bcat/keymap.c @@ -0,0 +1,72 @@ +/* Copyright 2020 Jonathan Rascher + * + * 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 + +#include "bcat.h" + +enum layer { + LAYER_DEFAULT, + LAYER_LOWER, + LAYER_RAISE, + LAYER_ADJUST, +}; + +#define LY_LWR MO(LAYER_LOWER) +#define LY_RSE MO(LAYER_RAISE) + +#define KY_CSPC LCTL(KC_SPC) +#define KY_ZMIN LCTL(KC_EQL) +#define KY_ZMOUT LCTL(KC_MINS) +#define KY_ZMRST LCTL(KC_0) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + /* Default layer: http://www.keyboard-layout-editor.com/#/gists/08d9827d916662a9414f48805aa895a5 */ + [LAYER_DEFAULT] = LAYOUT_split_3x6_3( + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + KC_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, + 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, LY_LWR, KC_SPC, KC_ENT, LY_RSE, KC_RALT + ), + + /* Lower layer: http://www.keyboard-layout-editor.com/#/gists/c3fba5eaa2cd70fdfbdbc0f9e34d3bc0 */ + [LAYER_LOWER] = LAYOUT_split_3x6_3( + MC_ALTT, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + KY_CSPC, KY_ZMRST, KY_ZMOUT, KY_ZMIN, KC_WBAK, KC_WFWD, KC_PIPE, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TILD, + _______, KC_APP, KC_PSCR, KC_SLCK, KC_PAUS, KC_LGUI, KC_BSLS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_GRV, + _______, _______, _______, _______, _______, _______ + ), + + /* Raise layer: http://www.keyboard-layout-editor.com/#/gists/08b44355d4ca85d294bad9e2821f91d7 */ + [LAYER_RAISE] = LAYOUT_split_3x6_3( + KC_CAPS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, + _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_F11, KC_DEL, + _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_F12, KC_INS, + _______, _______, _______, _______, _______, _______ + ), + + /* Adjust layer: http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee */ + [LAYER_ADJUST] = LAYOUT_split_3x6_3( + _______, NK_TOGG, KC_MPLY, KC_VOLU, KC_MSTP, _______, EEP_RST, RESET, _______, _______, _______, _______, + _______, _______, KC_MPRV, KC_VOLD, KC_MNXT, _______, RGB_RMOD, RGB_VAD, RGB_VAI, RGB_MOD, RGB_SPI, _______, + _______, _______, _______, KC_MUTE, _______, _______, RGB_HUI, RGB_SAD, RGB_SAI, RGB_HUD, RGB_SPD, _______, + _______, _______, _______, RGB_TOG, _______, _______ + ), +}; + +layer_state_t layer_state_set_keymap(layer_state_t state) { + return update_tri_layer_state(state, LAYER_LOWER, LAYER_RAISE, LAYER_ADJUST); +} diff --git a/layouts/community/split_3x6_3/bcat/readme.md b/layouts/community/split_3x6_3/bcat/readme.md new file mode 100644 index 0000000000..ed17b84186 --- /dev/null +++ b/layouts/community/split_3x6_3/bcat/readme.md @@ -0,0 +1,126 @@ +# bcat's split 3x6 + 3 thumb keys layout + +This is my favorite split ergo layout for typing, featuring the traditional +four ortho/ergo layers (Default, Lower, Raise, Adjust). It is loosely inspired +by the default Planck (numbers on Lower, symbols on Raise) and Crkbd (Space on +left, Enter on right) layouts, but has since been redesigned heavily according +to the principles described below. + +* Since my most-frequently-used keyboard shortcuts involve Ctrl, which lives on +the left half of the keyboard, keys frequently used with it (numbers, function +keys, etc.) are on the Raise layer activated by the right thumb. + +* Navigation can be done on the right half alone, to enable simultaneous +left-handed mousing. Additionally, Web pages can be scrolled with Space or +Shift+Space on the left half alone, to enable taking notes with the right hand +at the same time. + +* Other than Right Shift (which I seldom use), mods aren't rebound on layers. + +* Likewise, Backspace is not rebound on layers to avoid having to let go of +layer-switch keys to correct mistakes. + +## Default layer + +![Default layer layout](https://i.imgur.com/g5N7g8D.png) + +([KLE](http://www.keyboard-layout-editor.com/#/gists/08d9827d916662a9414f48805aa895a5)) + +* The alpha keys are a standard QWERTY layout, no funny business there. + +* Tab and Backspace are in familiar locations from my row-staggered boards +(almost all of which use HHKB-style split backspace). + +* The Esc key is next to the home row for convenience in Vim. + +* There are two Shift keys, although I generally use Left Shift. (I've +considered replacing Right Shift with another key, but haven't chosen one.) + +* Lower and Raise layer-switch keys are in the resting position of my left and +right thumbs, respectively. + +* Space and Enter are on the big thumb keys so they're easy to press. + +* Ctrl is on the left for ease of chording, especially one-handed use of common +shortcuts like Ctrl+T and Ctrl+W. This puts Alt on the right by the process of +elimination. (I would really like one more 1U thumb key on each half to allow +for a redundant Alt key on the left and a dedicated Super key on the right.) + +## Lower layer + +![Lower layer layout](https://i.imgur.com/vaIc9JY.png) + +([KLE](http://www.keyboard-layout-editor.com/#/gists/c3fba5eaa2cd70fdfbdbc0f9e34d3bc0)) + +* This could also be called the "symbol layer". + +* Shifted numbers are bound in their usual positions on the top row. + +* Hyphen/Underscore and Equals/Plus are in the right index- and middle-finger +columns for easy reach. They share the same relative position as on a +row-staggered keyboard, and the shifted versions are physically above the +unshifted versions as a mnemonic device. + +* Brackets and braces are placed below the parens for easy recall. Once again, +the shifted versions are on the home row and the unshifted versions are on the +bottom row. + +* Forward Slash/Pipe and Backtick/Tilde fill out the remaining positions on the +right half, with the same relative positions as on a row-staggered HHKB layout. +And yup, the shifted versions are above the unshifted versions. + +* Remaining keys from a TKL are placed out of the way on the bottom row of the +left half. + +* The home row on the left half contains handy shortcuts for zooming and browser +navigation. + +* Lower+Esc is bound to Ctrl+Space because the Ctrl and Space keys are both on +the left thumb, so this key combination (which I use for tmux prefix and editor +autocomplete) is hard to press in its natural location. + +* Lower+Tab is bound to a custom Alt+Tab macro that keeps the Alt modifier held +as long as the Lower key is held down. This means that window switching is on +Lower+Tab immediately next to browser tab switching (Ctrl+Tab). + +## Raise layer + +![Raise layer layout](https://i.imgur.com/VNEiV9A.png) + +([KLE](http://www.keyboard-layout-editor.com/#/gists/08b44355d4ca85d294bad9e2821f91d7)) + +* This could also be called the "number layer". + +* Unshifted numbers are bound in their usual positions on the top row. + +* Arrow keys are on VIM-style HJKL keys. + +* Home/End and Page Up/Page Down are in the same column as the arrow keys, but +translated down one row. (This means that the comma and period keys are not +bound on the number layer, which makes data entry a bit funky. I might add a +dedicated numpad layer to compensate.) + +* Function keys F1–F10 take up most of remaining space on the left half, with +F11 and F12 spilling over to the right half. (This puts the most used function +keys (F1–F5) on the home row.) + +* Insert and Delete are on the rightmost column, because there didn't seem to +be a better place to put them. + +* Caps Lock is bound in the same position as on an HHKB, for lack of an obvious +better location. + +## Adjust layer + +![Adjust layer layout](https://i.imgur.com/fZouko5.png) + +([KLE](http://www.keyboard-layout-editor.com/#/gists/77e7572e077b36a23eb2086017e16fee)) + +* Media keys are centered around the ESDF cluster, just like I arrange them on +row-staggered keyboards. (It's even more sensible with columnar stagger.) + +* The navigation keys are replaced by RGB controls. Again, this mirrors the +positioning I use on my row-staggered keyboards. + +* Finally, reset keys live at the top-left corner of the right half where it's +reasonably hard to press them by accident. diff --git a/layouts/community/split_3x6_3/bcat/rules.mk b/layouts/community/split_3x6_3/bcat/rules.mk new file mode 100644 index 0000000000..3a9796673e --- /dev/null +++ b/layouts/community/split_3x6_3/bcat/rules.mk @@ -0,0 +1,10 @@ +ifeq ($(strip $(KEYBOARD)), crkbd/rev1/common) + BOOTLOADER = atmel-dfu # Elite-C + + # Enable underglow only. (Split Common doesn't support RGB matrix on slave.) + RGBLIGHT_ENABLE = yes +else ifeq ($(strip $(KEYBOARD)), crkbd/rev1/legacy) + BOOTLOADER = atmel-dfu # Elite-C + + RGB_MATRIX_ENABLE = WS2812 # per-key RGB and underglow +endif -- cgit v1.2.3