diff options
author | Alex Ong <the.onga@gmail.com> | 2019-01-04 19:43:45 +1100 |
---|---|---|
committer | Alex Ong <the.onga@gmail.com> | 2019-01-04 19:43:45 +1100 |
commit | 2bb2977c133646c4e056960e72029270d77cc1eb (patch) | |
tree | 235d491f992121ac1716c5bf2fafb80983748576 /keyboards/levinson | |
parent | a55c838961c89097ab849ed6cb1f261791e6b9b4 (diff) | |
parent | 47c91fc7f75ae0a477e55b687aa0fc30da0a283c (diff) | |
download | qmk_firmware-2bb2977c133646c4e056960e72029270d77cc1eb.tar.gz |
Merge branch 'master' into debounce_refactor
# Conflicts:
# tmk_core/common/keyboard.c
Diffstat (limited to 'keyboards/levinson')
32 files changed, 1504 insertions, 49 deletions
diff --git a/keyboards/levinson/keymaps/atreus/config.h b/keyboards/levinson/keymaps/atreus/config.h new file mode 100644 index 000000000..a82c15238 --- /dev/null +++ b/keyboards/levinson/keymaps/atreus/config.h @@ -0,0 +1,22 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2015 Jack Humbert + +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/>. +*/ +#pragma once + +#define MASTER_LEFT diff --git a/keyboards/levinson/keymaps/atreus/keymap.c b/keyboards/levinson/keymaps/atreus/keymap.c new file mode 100644 index 000000000..61ad04ef7 --- /dev/null +++ b/keyboards/levinson/keymaps/atreus/keymap.c @@ -0,0 +1,41 @@ +#include QMK_KEYBOARD_H + +#define _QW 0 +#define _RS 1 +#define _LW 2 + +/* + * 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 , . / + * esc tab gui shift bksp ctrl || alt space raise - ' enter + */ +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[_QW] = LAYOUT_ortho_4x12( /* Qwerty */ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_NO, KC_NO, KC_Y, KC_U, KC_I, KC_O, KC_P, + KC_A, KC_S, KC_D, KC_F, KC_G, KC_NO, KC_NO, KC_H, KC_J, KC_K, KC_L, KC_SCLN , + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_NO, KC_NO, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH , + KC_ESC, KC_TAB, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, MO(_RS), KC_MINS, KC_QUOT, KC_ENT ), +/* + * ! @ up { } || pgup 7 8 9 * + * # left down right $ || pgdn 4 5 6 + + * [ ] ( ) & || ` 1 2 3 \ + * lower insert super shift bksp ctrl || alt space fn . 0 = + */ +[_RS] = LAYOUT_ortho_4x12( /* [> RAISE <] */ + KC_EXLM, KC_AT, KC_UP, KC_LCBR, KC_RCBR, KC_NO, KC_NO, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR , + KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_DLR, KC_NO, KC_NO, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS , + KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_NO, KC_NO, KC_GRV, KC_1, KC_2, KC_3, KC_BSLS , + TG(_LW), KC_INS, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, KC_TRNS, KC_DOT, KC_0, KC_EQL ), +/* + * insert home up end pgup || up F7 F8 F9 F10 + * del left down right pgdn || down F4 F5 F6 F11 + * volup reset || F1 F2 F3 F12 + * voldn super shift bksp ctrl || alt space L0 prtsc scroll pause + */ +[_LW] = LAYOUT_ortho_4x12( /* [> LOWER <] */ + KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_NO, KC_NO, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 , + KC_DELT, KC_LEFT, KC_DOWN, KC_RGHT, KC_DOWN, KC_NO, KC_NO, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 , + KC_NO, KC_VOLU, KC_NO, KC_NO, RESET, KC_NO, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 , + KC_NO, KC_VOLD, KC_LGUI, KC_LSFT, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, TO(_QW), KC_PSCR, KC_SLCK, KC_PAUS ) +}; diff --git a/keyboards/levinson/keymaps/atreus/readme.md b/keyboards/levinson/keymaps/atreus/readme.md new file mode 100644 index 000000000..0b548ace1 --- /dev/null +++ b/keyboards/levinson/keymaps/atreus/readme.md @@ -0,0 +1,8 @@ +# Atreus layout port + +Port the default Atreus layout to the Levinson/Let's Split. + +The purpose is to try out the layout to get a sense of what works in it. + +The 'extra' keys on the Levinson are dead in this version, to make a +more faithful emulation of the atreus layout. diff --git a/keyboards/levinson/keymaps/drogglbecher/config.h b/keyboards/levinson/keymaps/drogglbecher/config.h new file mode 100644 index 000000000..ef96ff00b --- /dev/null +++ b/keyboards/levinson/keymaps/drogglbecher/config.h @@ -0,0 +1,17 @@ +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "config_common.h" + +/* Use I2C or Serial, not both */ + +#define USE_SERIAL +/* #define USE_I2C */ + +/* Select hand configuration */ + +#define MASTER_LEFT +/* #define _MASTER_RIGHT */ +/* #define EE_HANDS */ + +#endif diff --git a/keyboards/levinson/keymaps/drogglbecher/keymap.c b/keyboards/levinson/keymaps/drogglbecher/keymap.c new file mode 100644 index 000000000..b8d2dc594 --- /dev/null +++ b/keyboards/levinson/keymaps/drogglbecher/keymap.c @@ -0,0 +1,76 @@ +#include QMK_KEYBOARD_H + +extern keymap_config_t keymap_config; + +#define _FN0 0 +#define _FN1 1 +#define _FN2 2 + +#define KC_X1 MO(_FN1) +#define KC_X2 MO(_FN2) + +#define KC_LPRN LSFT(KC_9) // ( +#define KC_RPRN LSFT(KC_0) // ) + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* ┌──────┬──────┬──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┬──────┬──────┐ + * │ ESC │ q │ w │ e │ r │ t │ │ y │ u │ i │ o │ p │ BS │ + * ├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤ + * │ CTRL │ a │ s │ d │ f │ g │ │ h │ j │ k │ l │ " ' │ RET │ + * ├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤ + * │ SHFT │ z │ x │ c │ v │ b │ │ n │ m │ [ { │ ] } │ ; : │ SHFT │ + * ├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤ + * │ L1 │ ALT │ L2 │ TAB | SPC │ SPC │ │ SPC │ SPC │ , < │ . > │ - _ │ / ? │ + * └──────┴──────┴──────┴──────┴──────┴──────┘ └──────┴──────┴──────┴──────┴──────┴──────┘ + */ + + [_FN0] = LAYOUT_ortho_4x12( \ + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_LBRC, KC_RBRC, KC_SCLN, KC_RSFT, \ + KC_X1, KC_LALT, KC_X2, KC_TAB, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_COMM, KC_DOT, KC_MINS, KC_SLSH \ + ), + + /* ┌──────┬──────┬──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┬──────┬──────┐ + * │ │ 1 │ 2 │ 3 │ 4 │ 5 │ │ 6 │ 7 │ 8 │ 9 │ 0 │ DEL │ + * ├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤ + * │ │ ä │ ö │ ü │ ß │ │ │ LEFT │ DOWN │ UP │ RGT │ │ │ + * ├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤ + * │ │ Ä │ Ö │ Ü │ € │ │ │ │ │ ( │ ) │ │ │ + * ├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤ + * │ | │ │ | SPC │ SPC │ │ SPC │ SPC │ │ │ │ \ | │ + * └──────┴──────┴──────┴──────┴──────┴──────┘ └──────┴──────┴──────┴──────┴──────┴──────┘ + */ + + [_FN1] = LAYOUT_ortho_4x12( \ + _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, \ + _______, UC(L'ä'), UC(L'ö'), UC(L'ü'), UC(L'ß'), _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_PIPE, \ + _______, UC(L'Ä'), UC(L'Ö'), UC(L'Ü'), UC(L'€'), _______, _______, _______, KC_LPRN, KC_RPRN, _______, _______, \ + _______, _______, _______, KC_TAB, KC_SPC, KC_SPC, KC_SPC, KC_SPC, _______, _______, _______, KC_BSLS \ + ), + + /* ┌──────┬──────┬──────┬──────┬──────┬──────┐ ┌──────┬──────┬──────┬──────┬──────┬──────┐ + * │ ` │ ! │ @ │ # │ $ │ % │ │ ^ │ & │ * │ ~ │ + │ = │ + * ├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤ + * │ │ │ │ │ │ │ │ HOME │ PGDN │ PGUP │ END │ │ │ + * ├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤ + * │ F1 │ F2 │ F3 │ F4 │ F5 │ F6 │ │ F7 │ F8 │ F9 │ F10 │ F11 │ F12 │ + * ├──────┼──────┼──────┼──────┼──────┼──────┤ ├──────┼──────┼──────┼──────┼──────┼──────┤ + * │ │ │ │ │ SPC │ SPC │ │ SPC │ SPC │ │ VOL+ │ VOL- │ MUTE │ + * └──────┴──────┴──────┴──────┴──────┴──────┘ └──────┴──────┴──────┴──────┴──────┴──────┘ + */ + + [_FN2] = LAYOUT_ortho_4x12( \ + KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_TILD, KC_PLUS, KC_PEQL, \ + _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______, _______, \ + 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_SPC, KC_SPC, KC_SPC, KC_SPC, _______, KC_VOLD, KC_VOLU, KC_MUTE \ + ) + +}; + +void matrix_init_user(void) { + set_unicode_input_mode(UC_LNX); +}; diff --git a/keyboards/levinson/keymaps/drogglbecher/rules.mk b/keyboards/levinson/keymaps/drogglbecher/rules.mk new file mode 100644 index 000000000..b223b71ab --- /dev/null +++ b/keyboards/levinson/keymaps/drogglbecher/rules.mk @@ -0,0 +1,10 @@ +AUTO_SHIFT_ENABLE = no +AUTO_SHIFT_MODIFIERS = no +RGBLIGHT_ENABLE = no +BACKLIGHT_ENABLE = no +UNICODE_ENABLE = yes +DEFAULT_FOLDER = levinson/rev2 + +ifndef QUANTUM_DIR + include ../../../../Makefile +endif diff --git a/keyboards/levinson/keymaps/jyh/config.h b/keyboards/levinson/keymaps/jyh/config.h new file mode 100644 index 000000000..d3e598bd0 --- /dev/null +++ b/keyboards/levinson/keymaps/jyh/config.h @@ -0,0 +1,29 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2015 Jack Humbert + +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/>. +*/ +#pragma once + +/* Select hand configuration */ +#define MASTER_LEFT + +/* Tap Dance timing */ +#define TAPPING_TERM 150 + +/* Toggling layer requires # taps */ +#define TAPPING_TOGGLE 2 diff --git a/keyboards/levinson/keymaps/jyh/keymap.c b/keyboards/levinson/keymaps/jyh/keymap.c new file mode 100644 index 000000000..d8cfa7e06 --- /dev/null +++ b/keyboards/levinson/keymaps/jyh/keymap.c @@ -0,0 +1,215 @@ +#include QMK_KEYBOARD_H + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _LOWER 3 /* Symbols, Media */ +#define _RAISE 4 /* Numbers, Arrows */ +#define _FUNC 5 /* Function Keys */ +#define _NUMS 6 /* Numpad */ +#define _ADJUST 16 + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + LOWER, + RAISE, + ADJUST, +}; + +// Fillers to make layering more clear +#define KC_ KC_TRNS + +// tap toggle numpad on +#define NUMPAD TT(_NUMS) + +// Mod Tap Definitions +// ------------------- + // Tap Hold + // ------------------ +#define CTL_ESC MT(MOD_LCTL, KC_ESC) // Esc Left Control +#define SFT_ENT MT(MOD_RSFT, KC_ENT) // Enter Right Shift +#define CTL_SPC MT(MOD_LCTL, KC_SPC) // Space Left Control +#define ALT_SPC MT(MOD_LALT, KC_SPC) // Space Left Alt +#define ALT_BSP MT(MOD_LALT, KC_BSPC) // Bkspace Left Alt +#define HPR_TAB MT(MOD_HYPR, KC_TAB) // Tab Hyper (Super+Ctrl+Alt+Shift) +#define HPR_GRV MT(MOD_HYPR, KC_GRV) // ` Hyper +#define HPR_TIL MT(MOD_HYPR, KC_TILD) // ~ Hyper +#define MEH_TIL MT(MOD_MEH, KC_GRV) // ` Meh (Ctrl+Alt+Shift) +#define SFT_MIN MT(MOD_LSFT, KC_MINS) // - Left Shift +#define NPD_UND LT(_NUMS, KC_UNDS) // _ Layer Numpad +#define FNC_PIP LT(_FUNC, KC_PIPE) // | Layer Function Keys + +#define CTL_DEL MT(MOD_LCTL, KC_DEL) // Del Left Control +#define CTL_QOT MT(MOD_RCTL, KC_QUOT) // ' Right Control +#define CTL_BSL MT(MOD_RCTL, KC_BSLS) // \ Right Control +#define CTL_PIP MT(MOD_RCTL, KC_PIPE) // | Right Control + +// Redefine for LAYOUT_kc +#define KC_CTL_BSL CTL_BSL +#define KC_CTL_PIP CTL_PIP +#define KC_CTL_DEL CTL_DEL +#define KC_HPR_TIL HPR_TIL +#define KC_HPR_GRV HPR_GRV + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * + * ,-----------------------------------------. ,-----------------------------------------. + * | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | S | D | F | G | | H | J | K | L | ; | ' | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | - | Z | X | C | V | B | | N | M | , | . | / | Enter| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Numpd| Meh | Meta | Alt | Lower| Space| | Space| Raise| Alt | Meta | Hyper| Func | + * `-----------------------------------------' `-----------------------------------------' + * + * with Hold (Emacs-oriented) + * ,-----------------------------------------. ,-----------------------------------------. + * | Hyper| | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Ctrl | | | | | | | | | | | | Ctrl | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift| | | | | | | | | | | | Shift| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * `-----------------------------------------' `-----------------------------------------' + */ + [_QWERTY] = LAYOUT_ortho_4x12( + HPR_TAB, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_BSPC, + CTL_ESC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, CTL_QOT, + SFT_MIN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, SFT_ENT, + NUMPAD , KC_MEH , KC_LGUI, KC_LALT, LOWER, CTL_SPC, KC_SPC, RAISE, KC_RALT, KC_RGUI, KC_HYPR, MO(_FUNC) + ), + + +/* Raise + * ,-----------------------------------------. ,-----------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | Left | Up | Down | Right| ( | | ) | - | = | [ | ] | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | ; | ' | * | , | { | | } | _ | + | . | / | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * `-----------------------------------------' `-----------------------------------------' + */ + [_RAISE] = LAYOUT_kc_ortho_4x12( + HPR_GRV, 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 , , + ,LEFT, UP ,DOWN,RGHT,LPRN, RPRN,MINS, EQL,LBRC,RBRC,CTL_PIP, + ,COLN,QUOT,ASTR,COMM,LCBR, RCBR,UNDS,PLUS, , , , + , , , , , , , , , , , + ), + +/* Lower + * ,-----------------------------------------. ,-----------------------------------------. + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Del | Vol+ | Mute | Play | PgUp | : | | ' | - | = | [ | ] | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | Vol- | < M | M > | PgDn | ; | | " | | | , | . | / | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * `-----------------------------------------' `-----------------------------------------' + */ + [_LOWER] = LAYOUT_kc_ortho_4x12( + HPR_TIL,EXLM, AT ,HASH,DLR , PERC , CIRC,AMPR,ASTR,LPRN,RPRN, , + CTL_DEL,VOLU,MUTE,MPLY,PGUP, COLN , QUOT,MINS, EQL,LBRC,RBRC,CTL_BSL, + ,VOLD,MPRV,MNXT,PGDN, SCLN , DQUO,PIPE,COMM, DOT,SLSH, , + , , , , , , , , , , , + ), + + [_FUNC] = LAYOUT_kc_ortho_4x12( +// ,----+----+----+----+----+----. ,----+----+----+----+----+----. + , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 , F10, , +// |----+----+----+----+----+----| |----+----+----+----+----+----| + , F11, F12, F13, F14, F15, F16, F17, F18, F19, F20, , +// |----+----+----+----+----+----| |----+----+----+----+----+----| + , F21, F22, F23, F24, NO , NO , NO , NO , NO , NO , , +// |----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , , , , , +// `----+----+----+----+----+----' `----+----+----+----+----+----' + ), + + [_NUMS] = LAYOUT_kc_ortho_4x12( +// ,----+----+----+----+----+----. ,----+----+----+----+----+----. + , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ,SLSH, , +// |----+----+----+----+----+----| |----+----+----+----+----+----| + ,CAPS, INS,HOME,PGUP,LPRN, RPRN, 4 , 5 , 6 ,ASTR, , +// |----+----+----+----+----+----| |----+----+----+----+----+----| + ,NLCK, DEL, END,PGDN,SCLN, COMM, 1 , 2 , 3 ,MINS, , +// |----+----+----+----+----+----| |----+----+----+----+----+----| + , , , , , , , 0 ,DOT ,EQL ,PLUS, +// `----+----+----+----+----+----' `----+----+----+----+----+----' + ), + + [_ADJUST] = LAYOUT_ortho_4x12( +// ,-------+--------+--------+--------+--------+--------. ,-------+--------+--------+--------+--------+--------. + RESET , XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_DEL , \ +// |-------+--------+--------+--------+--------+--------| |-------+--------+--------+--------+--------+--------| + _______, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, BL_TOGG, BL_STEP, XXXXXXX, XXXXXXX, XXXXXXX, _______, \ +// |-------+--------+--------+--------+--------+--------| |-------+--------+--------+--------+--------+--------| + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, \ +// |-------+--------+--------+--------+--------+--------| |-------+--------+--------+--------+--------+--------| + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +// `-------+--------+--------+--------+--------+--------' `-------+--------+--------+--------+--------+--------, + ) + +/* + * ,-----------------------------------------. ,-----------------------------------------. + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * `-----------------------------------------' `-----------------------------------------' + */ +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + } + return true; +} diff --git a/keyboards/levinson/keymaps/jyh/readme.md b/keyboards/levinson/keymaps/jyh/readme.md new file mode 100644 index 000000000..e20424e51 --- /dev/null +++ b/keyboards/levinson/keymaps/jyh/readme.md @@ -0,0 +1,32 @@ +# jyh's levinson layout + +[Levinson](https://keeb.io/products/levinson-lets-split-w-led-backlight) +built on rev2 PCBs. A split 4x12 keyboard with LED backlights. + +The layout is oriented towards needs for programming, Emacs, XMonad, +and experience with 60% keyboards with no base layer arrow keys +(Poker). It makes heavy use of modifiers and layers. + +## Layout features + + * Extensive use of _Mod Tap_, e.g. + * Tap sends Esc, Hold sends Left Control + * Tap sends Enter, Hold sends Right Shift + * ... and many more + * Hyper and Meh keys + * Right modifier keys in place of arrow keys + * Arrows are instead available in two alternate locations: + * WASD arrows on _Adjust_ + * Arrow cluster on _Raise_ (inspired by hexwire) + * Centered symbol/bracket cluster on _Lower/Raise_ + * Inspired by hexwire layout + * Programming-oriented + * Spacebar sends modifier keys on hold (_this is finicky in practice. may shut off completely_) + * Control ~~and Alt/Meta~~ on left ~~and right~~ space, respectively + * Strict space available on _Function_ and _Numpad_ layers + * For Emacs keychords + * Extra dedicated layers + * Numpad (available with tap toggle) + * Function key (F01-24) + * Redunant keys where it is convenient to have characters together + on one layer diff --git a/keyboards/levinson/keymaps/jyh/rules.mk b/keyboards/levinson/keymaps/jyh/rules.mk new file mode 100644 index 000000000..66110cfcc --- /dev/null +++ b/keyboards/levinson/keymaps/jyh/rules.mk @@ -0,0 +1 @@ +BACKLIGHT_ENABLE=yes diff --git a/keyboards/levinson/keymaps/jyh2/config.h b/keyboards/levinson/keymaps/jyh2/config.h new file mode 100644 index 000000000..f50674bb8 --- /dev/null +++ b/keyboards/levinson/keymaps/jyh2/config.h @@ -0,0 +1,33 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako <wakojun@gmail.com> +Copyright 2015 Jack Humbert + +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/>. +*/ +#pragma once + +/* Select hand configuration */ +#define MASTER_LEFT + +/* Tap Dance timing */ +#define TAPPING_TERM 150 + +/* Toggling layer requires # taps */ +#define TAPPING_TOGGLE 3 + +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 12 + diff --git a/keyboards/levinson/keymaps/jyh2/keymap.c b/keyboards/levinson/keymaps/jyh2/keymap.c new file mode 100644 index 000000000..4b7442928 --- /dev/null +++ b/keyboards/levinson/keymaps/jyh2/keymap.c @@ -0,0 +1,222 @@ +#include QMK_KEYBOARD_H + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _LOWER 3 /* Symbols, Media */ +#define _RAISE 4 /* Numbers, Arrows */ +#define _FUNC 5 /* Function Keys */ +#define _NUMS 6 /* Numpad */ +#define _ADJUST 16 + +/* short layer aliases */ +#define _QW _QWERTY +#define _LW _LOWER +#define _RS _RAISE +#define _NM _NUMS +#define _AD _ADJUST + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + LOWER, + RAISE, + ADJUST, + MKITPNK, + DYNAMIC_MACRO_RANGE +}; + +#include "dynamic_macro.h" + +#define DREC_1 DYN_REC_START1 +#define DREC_2 DYN_REC_START2 +#define DPLAY_1 DYN_MACRO_PLAY1 +#define DPLAY_2 DYN_MACRO_PLAY2 +#define DSTOP DYN_REC_STOP + + +// Mod Tap Definitions +// ------------------- + // Tap Hold + // ------------------ +#define GUI_GRV MT(MOD_LGUI, KC_GRV) // ` Meta +#define CTL_ESC MT(MOD_LCTL, KC_ESC) // Esc Left Control +#define SFT_MIN MT(MOD_LSFT, KC_MINS) // - Left Shift +#define MEH_LBC MT(MOD_MEH, KC_LBRC) // [ Meh +#define CTL_BSP MT(MOD_LCTL, KC_BSPC) // Bkspce Left Control +#define HPR_RBC MT(MOD_HYPR, KC_RBRC) // ] Hyper +#define SFT_EQL MT(MOD_RSFT, KC_EQL) // = Right Shift +#define GUI_BSL MT(MOD_RGUI, KC_BSLS) // \ Meta + +#define NUM_TAB LT(_NUMS, KC_TAB) // Tab Layer Numpad + +#define CTL_DEL MT(MOD_LCTL, KC_DEL) // Del Left Control + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------. ,-----------------------------------------. + * | ` | Q | W | E | R | T | | Y | U | I | O | P | \ | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Esc | A | S | D | F | G | | H | J | K | L | ; | ' | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | - | Z | X | C | V | B | | N | M | , | . | / | = | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Tab | [ | Meta | Alt | Lower| Bksp | | Space| Raise| Alt | Meta | ] | Enter| + * `-----------------------------------------' `-----------------------------------------' + * with Hold (Emacs-oriented) + * ,-----------------------------------------. ,-----------------------------------------. + * | Meta | | | | | | | | | | | | Meta | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Ctrl | | | | | | | | | | | | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Shift| | | | | | | | | | | | Shift| + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Numpd| Meh | | | | Ctrl | | | | | | Hyper| | + * `-----------------------------------------' `-----------------------------------------' + */ + [_QW] = LAYOUT_ortho_4x12( + GUI_GRV, KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , GUI_BSL, + CTL_ESC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, + SFT_MIN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, SFT_EQL, + NUM_TAB, MEH_LBC, KC_LGUI, KC_LALT, LOWER , CTL_BSP, KC_SPC , RAISE , KC_RALT, KC_RGUI, HPR_RBC, KC_ENT + ), + +/* Raise + * ,-----------------------------------------. ,-----------------------------------------. + * | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | Left | Up | Down | Right| ; | | ' | 4 | 5 | 6 | * | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | { | } | ( | ) | , | | - | 1 | 2 | 3 | / | = | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | |Adjust| | | | RAISE| . | 0 | + | Enter| + * `-----------------------------------------' `-----------------------------------------' + */ + [_RS] = LAYOUT_ortho_4x12( + _______, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , _______, + _______, KC_LEFT, KC_UP , KC_DOWN, KC_RGHT, KC_SCLN, KC_QUOT, KC_4 , KC_5 , KC_6 , KC_ASTR, _______, + _______, KC_LCBR, KC_RCBR, KC_LPRN, KC_RPRN, KC_COMM, KC_MINS, KC_1 , KC_2 , KC_3 , KC_SLSH, _______, + _______, _______, _______, _______, _______, _______, _______, _______, KC_DOT , KC_0 , KC_PLUS, _______ + ), + +/* Lower + * ,-----------------------------------------. ,-----------------------------------------. + * | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Del | Vol+ | Mute | Play | PgUp | Home | | F1 | F2 | F3 | F4 | F5 | F6 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | Vol- | < M | M > | PgDn | End | | F7 | F8 | F9 | F10 | F11 | F12 | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | |LOWER | | | |Adjust| | | | Enter| + * `-----------------------------------------' `-----------------------------------------' + */ + [_LW] = LAYOUT_ortho_4x12( + _______, KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, + CTL_DEL, KC_VOLU, KC_MUTE, KC_MPLY, KC_PGUP, KC_HOME, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , + _______, KC_VOLD, KC_MPRV, KC_MNXT, KC_PGDN, KC_END , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ), + +/* Numpad + * ,-----------------------------------------. ,-----------------------------------------. + * | | | PrSc | ScrLk| Pause| | | | 7 | 8 | 9 | 0 | Lock | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | Ins | Home | PgUp | | | | 4 | 5 | 6 | / | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | Del | End | PgDn | | | | 1 | 2 | 3 | * | = | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * |NUMPAD| | | | | | | | 0 | . | + | - | Enter| + * `-----------------------------------------' `-----------------------------------------' + */ + [_NM] = LAYOUT_ortho_4x12( + XXXXXXX, XXXXXXX, KC_PSCR, KC_SLCK, KC_PAUS, XXXXXXX, XXXXXXX, KC_7 , KC_8 , KC_9 , KC_0 , TO(_NM), + XXXXXXX, XXXXXXX, KC_INS , KC_HOME, KC_PGUP, XXXXXXX, XXXXXXX, KC_4 , KC_5 , KC_6 , KC_SLSH, XXXXXXX, + XXXXXXX, XXXXXXX, KC_DEL , KC_END , KC_PGDN, XXXXXXX, XXXXXXX, KC_1 , KC_2 , KC_3 , KC_ASTR, KC_EQL , + _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, KC_0 , KC_DOT , KC_PLUS, KC_MINS, _______ + ), + +/* Adjust + * ,-----------------------------------------. ,-----------------------------------------. + * | Reset| | Up | | | Rec1 | | Rec2 | Plain| Snake|Gradnt| | Del | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | Caps | Left | Down | Right|MkItPk| Play1| | Play2| RGB | HUE+ | SAT+ | BRI+ | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | Stop1| | Stop2| MODE | HUE- | SAT- | BRI- | | + * |------+------+------+------+------+------| |------+------+------+------+------+------| + * | | | | | | | | | | | | | | + * `-----------------------------------------' `-----------------------------------------' + */ + [_ADJUST] = LAYOUT_ortho_4x12( + RESET , XXXXXXX, KC_UP , XXXXXXX, XXXXXXX, DREC_1 , DREC_2 , RGB_M_P, RGB_M_SN,RGB_M_G, XXXXXXX, KC_DEL , + KC_CAPS, KC_LEFT, KC_DOWN, KC_RGHT, MKITPNK, DPLAY_1, DPLAY_2, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, _______, + _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DSTOP , DSTOP , RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + ) +}; + +void make_it_pink_blue(void) { + uint16_t blue_hue = 210; + uint16_t pink_hue = 315; + + /* key is pressed */ + uint16_t hue = rgblight_get_hue(); + uint8_t sat = rgblight_get_sat(); + uint8_t val = rgblight_get_val(); + + if (hue != blue_hue) + rgblight_sethsv(blue_hue, sat, val); + else + rgblight_sethsv(pink_hue, sat, val); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + if (!process_record_dynamic_macro(keycode, record)) + return false; + + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + case MKITPNK: + if (record->event.pressed) + make_it_pink_blue(); + return false; + break; + } + return true; +} diff --git a/keyboards/levinson/keymaps/jyh2/readme.md b/keyboards/levinson/keymaps/jyh2/readme.md new file mode 100644 index 000000000..45ca95692 --- /dev/null +++ b/keyboards/levinson/keymaps/jyh2/readme.md @@ -0,0 +1,32 @@ +# jyh's levinson layout + +[Levinson](https://keeb.io/products/levinson-lets-split-w-led-backlight) +built on rev2 PCBs. A split 4x12 keyboard with LED backlights. + +The layout is oriented towards needs for programming, Emacs, XMonad, +and experience with 60% keyboards with no base layer arrow keys +(Poker). It makes heavy use of modifiers and layers. It is influenced +by good ideas from the Atreus keyboard layout. + +## Layout features + + * Extensive use of _Mod Tap_, e.g. + * Tap sends Esc, Hold sends Left Control + * Tap sends Tab, Hold activates Numpad layer + * Tap sends - , Hold sends Shift + * ... and many more + * Places Tab and Enter on bottom corners, for hitting with palm + * Meta is available on top corners, for controlling XMonad + * Control on center key, for Emacs (among other things) + * Backspace (Control Hold) and Space on center keys + * All 60% keys available on base layer, except for numbers + * Hyper and Meh keys + * Right modifier keys in place of arrow keys + * Arrows are instead available in two alternate locations: + * WASD arrows on _Adjust_ + * Arrow cluster on _Raise_ (inspired by hexwire) + * Numpad and Numrow on _Raise_ layer. Each is faster in some contexts + * Function keys on _Lower_ + * Dynamic macros from QMK firmware on _Adjust_ + * Redunant keys where it is convenient to have characters together + on one layer diff --git a/keyboards/levinson/keymaps/jyh2/rules.mk b/keyboards/levinson/keymaps/jyh2/rules.mk new file mode 100644 index 000000000..fbb3b49d6 --- /dev/null +++ b/keyboards/levinson/keymaps/jyh2/rules.mk @@ -0,0 +1,2 @@ +RGBLIGHT_ENABLE=yes +BOOTMAGIC_ENABLE=no diff --git a/keyboards/levinson/keymaps/losinggeneration/rules.mk b/keyboards/levinson/keymaps/losinggeneration/rules.mk index f3e47b4c2..c8eef2cb3 100644 --- a/keyboards/levinson/keymaps/losinggeneration/rules.mk +++ b/keyboards/levinson/keymaps/losinggeneration/rules.mk @@ -10,7 +10,7 @@ COMMAND_ENABLE = no # Commands for debug and configuration CONSOLE_ENABLE = no # Console for debug(+400) MIDI_ENABLE = no # MIDI controls NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work -RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. ifndef QUANTUM_DIR include ../../../../Makefile diff --git a/keyboards/levinson/keymaps/mmacdougall/README.md b/keyboards/levinson/keymaps/mmacdougall/README.md new file mode 100644 index 000000000..bae8c8a4b --- /dev/null +++ b/keyboards/levinson/keymaps/mmacdougall/README.md @@ -0,0 +1,21 @@ +mmacdougall's Levinson Layout +============================ + +Similar to default layout, however RGB & backlight controls are mapped to adjust layer + +## Layouts + +### Adjust (Lower + Raise) + +``` +/* Adjust (Lower + Raise) + ,-----------------------------------------------------------------------------------. + | | Reset| | | | | | | | | | Del | + |------+------+------+------+------+-------------+------+------+------+------+------| + | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + |------+------+------+------+------+------|------+------+------+------+------+------| + |B Step|RGB Tg|RGB Md|Hue Up|Hue Dn|Sat Up|Sat Dn|Val Up|Val Dn| | | | + |------+------+------+------+------+------+------+------+------+------+------+------| + | | | | | | | | | | | | + `-----------------------------------------------------------------------------------' +``` diff --git a/keyboards/levinson/keymaps/mmacdougall/config.h b/keyboards/levinson/keymaps/mmacdougall/config.h new file mode 100644 index 000000000..63dd5bc88 --- /dev/null +++ b/keyboards/levinson/keymaps/mmacdougall/config.h @@ -0,0 +1,20 @@ +#pragma once + +/* Use I2C or Serial, not both */ + +#define USE_SERIAL +// #define USE_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + + +#undef RGBLED_NUM +#define RGBLIGHT_ANIMATIONS +#define RGBLED_NUM 12 +#define RGBLIGHT_HUE_STEP 8 +#define RGBLIGHT_SAT_STEP 8 +#define RGBLIGHT_VAL_STEP 8 diff --git a/keyboards/levinson/keymaps/mmacdougall/keymap.c b/keyboards/levinson/keymaps/mmacdougall/keymap.c new file mode 100644 index 000000000..dec47a761 --- /dev/null +++ b/keyboards/levinson/keymaps/mmacdougall/keymap.c @@ -0,0 +1,201 @@ +#include QMK_KEYBOARD_H + +extern keymap_config_t keymap_config; + +// Each layer gets a name for readability, which is then used in the keymap matrix below. +// The underscores don't mean anything - you can have a layer called STUFF or any other name. +// Layer names don't all need to be of the same length, obviously, and you can also skip them +// entirely and just use numbers. +#define _QWERTY 0 +#define _COLEMAK 1 +#define _DVORAK 2 +#define _LOWER 3 +#define _RAISE 4 +#define _ADJUST 16 + +enum custom_keycodes { + QWERTY = SAFE_RANGE, + COLEMAK, + DVORAK, + LOWER, + RAISE, + ADJUST, +}; + +// Fillers to make layering more clear +#define _______ KC_TRNS +#define XXXXXXX KC_NO + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | S | D | F | G | H | J | K | L | ; | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_QWERTY] = LAYOUT_ortho_4x12( \ + 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_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Colemak + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | F | P | G | J | L | U | Y | ; | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | R | S | T | D | H | N | E | I | O | " | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | K | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_COLEMAK] = LAYOUT_ortho_4x12( \ + KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC, \ + KC_ESC, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Dvorak + * ,-----------------------------------------------------------------------------------. + * | Tab | " | , | . | P | Y | F | G | C | R | L | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Esc | A | O | E | U | I | D | H | T | N | S | / | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| ; | Q | J | K | X | B | M | W | V | Z |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * |Adjust| Ctrl | Alt | GUI |Lower |Space |Space |Raise | Left | Down | Up |Right | + * `-----------------------------------------------------------------------------------' + */ +[_DVORAK] = LAYOUT_ortho_4x12( \ + KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC, \ + KC_ESC, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \ + KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT , \ + ADJUST, KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT \ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | ! | @ | # | $ | % | ^ | & | * | ( | ) | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | | \ | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO ~ |ISO | | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_ortho_4x12( \ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),_______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 |ISO # |ISO / | | |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | Next | Vol- | Vol+ | Play | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_ortho_4x12( \ + KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC, \ + KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY \ +), + +/* Adjust (Lower + Raise) + * ,-----------------------------------------------------------------------------------. + * | | Reset| | | | | | | | | | Del | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | | | |Aud on|Audoff|AGnorm|AGswap|Qwerty|Colemk|Dvorak| | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * |B Step|RGB Tg|RGB Md|Hue Up|Hue Dn|Sat Up|Sat Dn|Val Up|Val Dn| | | | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | | | | | | | | | | | + * `-----------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_ortho_4x12( \ + _______, RESET, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + BL_STEP, RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, _______, \ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ +) + + +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case QWERTY: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_SONG(tone_qwerty); + #endif + set_single_persistent_default_layer(_QWERTY); + } + return false; + break; + case COLEMAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_SONG(tone_colemak); + #endif + set_single_persistent_default_layer(_COLEMAK); + } + return false; + break; + case DVORAK: + if (record->event.pressed) { + #ifdef AUDIO_ENABLE + PLAY_SONG(tone_dvorak); + #endif + set_single_persistent_default_layer(_DVORAK); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + } + return true; +} diff --git a/keyboards/levinson/keymaps/mmacdougall/rules.mk b/keyboards/levinson/keymaps/mmacdougall/rules.mk new file mode 100644 index 000000000..d7463419b --- /dev/null +++ b/keyboards/levinson/keymaps/mmacdougall/rules.mk @@ -0,0 +1,2 @@ +RGBLIGHT_ENABLE = yes +BACKLIGHT_ENABLE = yes diff --git a/keyboards/levinson/keymaps/steno/config.h b/keyboards/levinson/keymaps/steno/config.h new file mode 100644 index 000000000..9cbc148e4 --- /dev/null +++ b/keyboards/levinson/keymaps/steno/config.h @@ -0,0 +1,34 @@ +/* +Copyright 2017 Danny Nguyen <danny@hexwire.com> + +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/>. +*/ + +#pragma once + +/* Use I2C or Serial, not both */ + +#define USE_I2C +// #define USE_SERIAL + + +#define FORCE_NKRO //For Steno. + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + + diff --git a/keyboards/levinson/keymaps/steno/keymap.c b/keyboards/levinson/keymaps/steno/keymap.c new file mode 100644 index 000000000..cd7493467 --- /dev/null +++ b/keyboards/levinson/keymaps/steno/keymap.c @@ -0,0 +1,148 @@ +#include QMK_KEYBOARD_H +#include "keymap_steno.h" + +extern keymap_config_t keymap_config; + +#define _PLOVER 0 +#define _QWERTY 1 +#define _LOWER 2 +#define _RAISE 3 +#define _ADJUST 4 + +enum custom_keycodes +{ + PLOVER = SAFE_RANGE, + QWERTY, + LOWER, + RAISE, + ADJUST, + EXT_QWE, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = +{ + + [_PLOVER] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + STN_PWR, STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_ST3, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + STN_FN, STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_ST4, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + STN_N1, STN_N2, STN_N3, STN_N4, STN_N5, STN_N6, STN_N7, STN_N8, STN_N9, STN_NA, STN_NB, STN_NC, + //├────────┼────────┼────────┼────────┼────────┼────────┼ ┼────────┼────────┼────────┼────────┼────────┼────────┤ + XXXXXXX, STN_RE1, STN_RE2, XXXXXXX, STN_A, STN_O, STN_E, STN_U, XXXXXXX, XXXXXXX, QWERTY, XXXXXXX + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴ ┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + + ), + + [_QWERTY] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RSFT, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LGUI, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_QUOT, + //├────────┼────────┼────────┼────────┼────────┼────────┼ ┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LALT, KC_MINUS, KC_TAB, KC_LCTL, LOWER, KC_SPC, KC_ENT, RAISE, KC_RCTL, KC_RGUI, EXT_QWE, KC_RALT + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴ ┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + + ), + + [_LOWER] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, _______, KC_7, KC_8, KC_9, KC_PLUS, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_F7, KC_F8, KC_LEFT, KC_UP, KC_RGHT, KC_F9, KC_PSLS, KC_4, KC_5, KC_6, KC_MINUS, KC_MUTE, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_F10, KC_F11, KC_DOWN, KC_F11, KC_F12, KC_PAST, KC_1, KC_2, KC_3, KC_EQL, KC_VOLU, + //├────────┼────────┼────────┼────────┼────────┼────────┼ ┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, KC_0, _______, KC_COMM, KC_DOT, KC_ENT, KC_VOLD + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴ ┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + + ), + + [_RAISE] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + KC_GRAVE, KC_TILD, KC_UNDS, KC_EQL, KC_PIPE, _______, KC_HOME, KC_DEL, _______, KC_INS, KC_PGUP, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_BSLASH,KC_LCBR, KC_RCBR, KC_MINUS, KC_LBRC, KC_RBRC, KC_END, KC_LEFT, KC_UP, KC_RGHT, KC_PGDN, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_COLN, KC_LT, KC_GT, KC_PLUS, KC_LPRN, KC_RPRN, _______, _______, KC_DOWN, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼ ┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴ ┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + + ), + + [_ADJUST] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + _______, _______, KC_CAPS, KC_MENU, KC_APP, KC_PSCR, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______,_______, _______, _______, KC_PAUS, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, KC_SLCK, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼ ┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴ ┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + + ), + + +}; + + +void matrix_init_user() { + steno_set_mode(STENO_MODE_GEMINI); // or STENO_MODE_BOLT +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case PLOVER: + if (record->event.pressed) { + set_single_persistent_default_layer(_PLOVER); + } + return false; + break; + case LOWER: + if (record->event.pressed) { + layer_on(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_LOWER); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case RAISE: + if (record->event.pressed) { + layer_on(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } else { + layer_off(_RAISE); + update_tri_layer(_LOWER, _RAISE, _ADJUST); + } + return false; + break; + case ADJUST: + if (record->event.pressed) { + layer_on(_ADJUST); + } else { + layer_off(_ADJUST); + } + return false; + break; + case QWERTY: + if (!record->event.pressed) { + layer_on(_QWERTY); + } + return false; + break; + case EXT_QWE: + if (record->event.pressed) { + layer_off(_QWERTY); + } + return false; + break; + } + return true; +} diff --git a/keyboards/levinson/keymaps/steno/rules.mk b/keyboards/levinson/keymaps/steno/rules.mk new file mode 100644 index 000000000..9c31e590e --- /dev/null +++ b/keyboards/levinson/keymaps/steno/rules.mk @@ -0,0 +1,7 @@ +EXTRAKEY_ENABLE = no # Disable if you run out of usb endpoints. Media keys need this to work. +MOUSEKEY_ENABLE = no # Mouse keys(+4700) Uses extra usb enpoints. +STENO_ENABLE = yes # Additional protocols for Stenography(+1700), requires VIRTSER. +AUDIO_ENABLE = no # Audio output on port C6 +MIDI_ENABLE = no # MIDI controls +NKRO_ENABLE = yes +BOOTMAGIC_ENABLE = yes diff --git a/keyboards/levinson/keymaps/treadwell/config.h b/keyboards/levinson/keymaps/treadwell/config.h index e6648db14..69783937b 100644 --- a/keyboards/levinson/keymaps/treadwell/config.h +++ b/keyboards/levinson/keymaps/treadwell/config.h @@ -16,6 +16,12 @@ #define TAPPING_TERM 150 +/* default layer sounds */ +#define DEFAULT_LAYER_SONGS { SONG(QWERTY_SOUND), \ + SONG(GAME_SOUND), \ + SONG(COLEMAK_SOUND) \ + } + //#undef RGBLED_NUM //#define RGBLIGHT_ANIMATIONS //#define RGBLED_NUM 12 diff --git a/keyboards/levinson/keymaps/treadwell/keymap.c b/keyboards/levinson/keymaps/treadwell/keymap.c index f930ebb79..bcc744a6d 100644 --- a/keyboards/levinson/keymaps/treadwell/keymap.c +++ b/keyboards/levinson/keymaps/treadwell/keymap.c @@ -4,7 +4,7 @@ extern keymap_config_t keymap_config; #define _QWERTY 0 #define _COLEMAK 1 -#define _DVORAK 2 +#define _GAME 2 #define _NUMB 3 #define _CODE 4 #define _SYS 5 @@ -14,7 +14,7 @@ extern keymap_config_t keymap_config; enum custom_keycodes { QWERTY = SAFE_RANGE, COLEMAK, - DVORAK, + GAME, NUMB, CODE, SYS, @@ -25,13 +25,9 @@ enum custom_keycodes { #define KC_ KC_TRNS #define _______ KC_TRNS -#define KC_CAPW LGUI(LSFT(KC_3)) // Capture whole screen -#define KC_CPYW LGUI(LSFT(LCTL(KC_3))) // Copy whole screen -#define KC_CAPP LGUI(LSFT(KC_4)) // Capture portion of screen -#define KC_CPYP LGUI(LSFT(LCTL(KC_4))) // Copy portion of screen #define KC_X1 CODE #define KC_X2 NUMB -#define KC_X3 SYS +#define KC_X3 MO(_SYS) #define KC_X4 MT(MOD_LSFT, KC_ENT) const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { @@ -60,25 +56,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //`----+----+----+----+----+----' `----+----+----+----+----+----' ), - [_DVORAK] = LAYOUT_kc( + [_GAME] = LAYOUT_kc( //,----+----+----+----+----+----. ,----+----+----+----+----+----. - TAB ,QUOT,COMM,DOT , P , Y , F , G , C , R , L ,MINS, + TAB , Q , W , E , R , T , Y , U , I , O , P ,MINS, //|----+----+----+----+----+----| |----+----+----+----+----+----| - BSPC, A , O , E , U , I , D , H , T , N , S ,SLSH, + ESC , A , S , D , F , G , H , J , K , L ,SCLN,QUOT, //|----+----+----+----+----+----| |----+----+----+----+----+----| - LSFT,SCLN, Q , J , K , X , B , M , W , V , Z , X4 , + LSFT, Z , X , C , V , B , N , M ,COMM,DOT ,SLSH, X4 , //|----+----+----+----+----+----| |----+----+----+----+----+----| - X3 ,LCTL,LALT,LGUI, X1 ,LALT, SPC , X2 ,LEFT,DOWN, UP ,RGHT + X3 ,LCTL,LALT,LGUI, X2 , SPC, SPC , X1 ,LEFT,DOWN, UP ,RGHT //`----+----+----+----+----+----' `----+----+----+----+----+----' ), [_NUMB] = LAYOUT_kc( //,----+----+----+----+----+----. ,----+----+----+----+----+----. - TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN,PMNS, + TILD,EXLM, AT ,HASH,DLR ,PERC, CIRC,AMPR,ASTR,LPRN,RPRN, DEL, //|----+----+----+----+----+----| |----+----+----+----+----+----| GRV , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 0 ,UNDS, //|----+----+----+----+----+----| |----+----+----+----+----+----| - , ,MPRV,MPLY,MNXT, , ,VOLD,VOLU,MUTE, , , + , ,MPRV,MNXT,MPLY, , ,VOLD,VOLU,MUTE, , , //|----+----+----+----+----+----| |----+----+----+----+----+----| , , , , ,LALT, , , , , , //`----+----+----+----+----+----' `----+----+----+----+----+----' @@ -90,7 +86,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { //|----+------+----+----+----+----| |----+----+----+----+----+----| CAPS,SELECT,LEFT,DOWN,RGHT,DEL , PGDN, END,LBRC,RBRC,MINS,UNDS, //|----+------+----+----+----+----| |----+----+----+----+----+----| - , UNDO ,CUT ,COPY,PASTE, , LEFT,RGHT,LCBR,RCBR,PLUS,PEQL, + LSFT, UNDO ,CUT ,COPY,PASTE, , LEFT,RGHT,LCBR,RCBR,PLUS,PEQL, //|----+------+----+----+----+----| |----+----+----+----+----+----| , , , , ,LALT, , , , , , //`----+------+----+----+----+----' `----+----+----+----+----+----' @@ -98,10 +94,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_SYS] = LAYOUT_kc( //,----+----+----+----+----+----. ,----+----+----+----+----+----. - F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 , - //|----+----+----+----+----+----| |----+----+----+----+----+----| , , , , , , , , , , , , //|----+----+----+----+----+----| |----+----+----+----+----+----| + F12 , F1 , F2 , F3 , F4 , F5 , F6 , F7 , F8 , F9 ,F10 ,F11 , + //|----+----+----+----+----+----| |----+----+----+----+----+----| , , , , , , , , , , , , //|----+----+----+----+----+----| |----+----+----+----+----+----| , , , , , , , , , , , @@ -121,7 +117,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { */ [_ADJUST] = LAYOUT_ortho_4x12( \ _______, RESET , RGB_TOG, RGB_MOD, RGB_HUD, RGB_HUI, RGB_SAD, RGB_SAI, RGB_VAD, RGB_VAI, _______, _______, \ - _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, DVORAK, _______, _______, \ + _______, _______, _______, AU_ON, AU_OFF, AG_NORM, AG_SWAP, QWERTY, COLEMAK, GAME , _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, \ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ \ ) @@ -129,43 +125,23 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { }; -#ifdef AUDIO_ENABLE -float tone_qwerty[][2] = SONG(QWERTY_SOUND); -float tone_dvorak[][2] = SONG(DVORAK_SOUND); -float tone_colemak[][2] = SONG(COLEMAK_SOUND); -#endif - -void persistent_default_layer_set(uint16_t default_layer) { - eeconfig_update_default_layer(default_layer); - default_layer_set(default_layer); -} - bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { case QWERTY: if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_qwerty); - #endif - persistent_default_layer_set(1UL<<_QWERTY); + set_single_persistent_default_layer(_QWERTY); } return false; break; case COLEMAK: if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_colemak); - #endif - persistent_default_layer_set(1UL<<_COLEMAK); + set_single_persistent_default_layer(_COLEMAK); } return false; break; - case DVORAK: + case GAME: if (record->event.pressed) { - #ifdef AUDIO_ENABLE - PLAY_SONG(tone_dvorak); - #endif - persistent_default_layer_set(1UL<<_DVORAK); + set_single_persistent_default_layer(_GAME); } return false; break; diff --git a/keyboards/levinson/keymaps/xtonhasvim/config.h b/keyboards/levinson/keymaps/xtonhasvim/config.h new file mode 100644 index 000000000..bcd2220ce --- /dev/null +++ b/keyboards/levinson/keymaps/xtonhasvim/config.h @@ -0,0 +1,35 @@ +#pragma once + +#define USE_SERIAL + +// #define MUSIC_MASK (keycode != KC_NO) + +/* + * MIDI options + */ + +/* Prevent use of disabled MIDI features in the keymap */ +//#define MIDI_ENABLE_STRICT 1 + +/* enable basic MIDI features: + - MIDI notes can be sent when in Music mode is on +*/ + +// #define MIDI_BASIC + +/* enable advanced MIDI features: + - MIDI notes can be added to the keymap + - Octave shift and transpose + - Virtual sustain, portamento, and modulation wheel + - etc. +*/ +//#define MIDI_ADVANCED + +/* override number of MIDI tone keycodes (each octave adds 12 keycodes and allocates 12 bytes) */ +//#define MIDI_TONE_KEYCODE_OCTAVES 2 + +// help for fast typist+dual function keys? +#define PERMISSIVE_HOLD + +// where is the cord plugged in? +#define MASTER_LEFT diff --git a/keyboards/levinson/keymaps/xtonhasvim/keymap.c b/keyboards/levinson/keymaps/xtonhasvim/keymap.c new file mode 100644 index 000000000..b9341ff35 --- /dev/null +++ b/keyboards/levinson/keymaps/xtonhasvim/keymap.c @@ -0,0 +1,237 @@ + /* Copyright 2015-2017 Christon DeWan + * + * 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 +#include "xtonhasvim.h" +#include "fancylighting.h" + +/************************************ + * states + ************************************/ + +enum layers { + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, + _MOVE, + _MOUSE, + _CMD +}; + +extern uint8_t vim_cmd_layer(void) { return _CMD; } + +/************************************ + * keymaps! + ************************************/ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* Qwerty + * ,-----------------------------------------------------------------------------------. + * | Tab | Q | W | E | R | T | Y | U | I | O | P | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Ctrl*| A* | S | D | F | G | H | J | K | L | ;* | ' | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | Shift| Z | X | C | V | B | N | M | , | . | / |Enter | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | chkwm| | Alt | GUI |Lower*| Sp|ace |Raise*| SPC | GUI | | Vim | + * `-----------------------------------------------------------------------------------' + * + * - Ctrl acts as Esc when tapped. + * - Holding A or ; switches to movement layer. + * - Raise and Lower are one-shot layers. + */ +[_QWERTY] = LAYOUT_ortho_4x12( \ + KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, \ + LCTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, LT(_MOVE,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, RSFT_T(KC_ENT) , \ + LSFT(KC_LALT), MO(_MOVE), KC_LALT, KC_LGUI, MO(_LOWER), KC_SPC, KC_SPC, MO(_RAISE), KC_RGUI, KC_RALT, MO(_MOVE), VIM_START \ +), + +/* Lower + * ,-----------------------------------------------------------------------------------. + * | ~ | F1 | F2 | F3 | F4 | F5 | F6 | _ | + | { | } | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | Next | Vol- | Vol+ | Play | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Bail | | | | | |Raise | | | Bail | | + * `-----------------------------------------------------------------------------------' + */ +[_LOWER] = LAYOUT_ortho_4x12( \ + KC_TILD, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_BSPC, \ + KC_DEL, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE, \ + _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, X_____X, X_____X, X_____X, X_____X, FIREY_RETURN, \ + RESET, TO(_QWERTY), _______, _______, _______, _______, _______, MO(_RAISE), _______, _______, TO(_QWERTY), X_____X \ +), + +/* Raise + * ,-----------------------------------------------------------------------------------. + * | ` | F1 | F2 | F3 | F4 | F5 | F6 | - | = | [ | ] | Bksp | + * |------+------+------+------+------+-------------+------+------+------+------+------| + * | Del | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | \ | + * |------+------+------+------+------+------|------+------+------+------+------+------| + * | | F7 | F8 | F9 | F10 | F11 | F12 | | Next | Vol- | Vol+ | Play | + * |------+------+------+------+------+------+------+------+------+------+------+------| + * | | Bail | | |Lower | | | | | | Bail | | + * `-----------------------------------------------------------------------------------' + */ +[_RAISE] = LAYOUT_ortho_4x12( \ + KC_GRV, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSPC, \ + KC_DEL, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSLS, \ + _______, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, FIREY_RETURN, \ + X_____X, TO(_QWERTY), _______, _______, MO(_LOWER), _______, _______, _______, _______, _______, TO(_QWERTY), RESET \ +), + + +/* Adjust (Lower + Raise) + * ,-------------------------------------------------------------------------------------. + * |BL Raise| | | | | | | | | | | | + * |--------+------+------+------+------+-------------+------+------+------+------+------| + * |BL Lower| | | | | | | | | | | | + * |--------+------+------+------+------+------|------+------+------+------+------+------| + * |BL STEP | | | | | | | Next | Vol- | Vol+ | Play | | + * |--------+------+------+------+------+------+------+------+------+------+------+------| + * |Backlite| Bail | | | | | | | | | Bail | | + * `-------------------------------------------------------------------------------------' + */ +[_ADJUST] = LAYOUT_ortho_4x12( \ + BL_INC, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, RGB_MODE_PLAIN, \ + BL_DEC, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, RGB_MODE_REVERSE, \ + BL_STEP, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY, RGB_MODE_FORWARD, \ + BL_TOGG, TO(_MOUSE), _______, _______, _______, _______, _______, _______, _______, _______, TO(_QWERTY), RGB_TOG \ +), + + +/* movement layer (hold semicolon) */ +[_MOVE] = LAYOUT_ortho_4x12( \ + TO(_QWERTY), X_____X, X_____X, X_____X, X_____X, X_____X, KC_HOME, KC_PGDN, KC_PGUP, KC_END, X_____X, X_____X, \ + _______, X_____X, LGUI(KC_LBRC), LGUI(LSFT(KC_LBRC)), LGUI(LSFT(KC_RBRC)), LGUI(KC_RBRC), KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, X_____X, \ + _______, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, _______, \ + _______, _______, _______, _______, _______, X_____X, X_____X, _______, _______, _______, _______, X_____X \ +), + +/* mouse layer + */ +[_MOUSE] = LAYOUT_ortho_4x12( \ + TO(_QWERTY), X_____X, X_____X, KC_MS_UP, X_____X, X_____X, KC_MS_WH_LEFT, KC_MS_WH_DOWN, KC_MS_WH_UP, KC_MS_WH_RIGHT, X_____X, X_____X, \ + _______, X_____X, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, X_____X, X_____X, KC_MS_BTN1, KC_MS_BTN2, KC_MS_BTN3, X_____X, X_____X, \ + _______, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, X_____X, _______, \ + _______, TO(_QWERTY), _______, _______, _______, X_____X, X_____X, _______, _______, _______, TO(_QWERTY), X_____X \ +), + +/* vim command layer. + */ +[_CMD] = LAYOUT_ortho_4x12( \ + X_____X, X_____X, VIM_W, VIM_E, X_____X, X_____X, VIM_Y, VIM_U, VIM_I, VIM_O, VIM_P, X_____X, \ + VIM_ESC, VIM_A, VIM_S, VIM_D, X_____X, VIM_G, VIM_H, VIM_J, VIM_K, VIM_L, X_____X, X_____X, \ + VIM_SHIFT, X_____X, VIM_X, VIM_C, VIM_V, VIM_B, X_____X, X_____X, VIM_COMMA, VIM_PERIOD, X_____X, VIM_SHIFT, \ + _______, TO(_QWERTY), _______, _______, X_____X, X_____X, X_____X, X_____X, _______, _______, TO(_QWERTY), X_____X \ +) + +}; + + + +#define C_RED 0xFF, 0x00, 0x00 +#define C_GRN 0x00, 0xFF, 0x00 +#define C_BLU 0x00, 0x00, 0xFF + +#define C_YAN 0x00, 0xFF, 0xFF +#define C_PRP 0x7A, 0x00, 0xFF +#define C_ORG 0xFF, 0x93, 0x00 + +void rgbflag(uint8_t r, uint8_t g, uint8_t b, uint8_t rr, uint8_t gg, uint8_t bb) { + LED_TYPE *target_led = user_rgb_mode ? shadowed_led : led; + for (int i = 0; i < RGBLED_NUM; i++) { + switch (i) { + case 10: case 11: + target_led[i].r = r; + target_led[i].g = g; + target_led[i].b = b; + break; + case 0: case 1: + target_led[i].r = rr; + target_led[i].g = gg; + target_led[i].b = bb; + break; + default: + target_led[i].r = 0; + target_led[i].g = 0; + target_led[i].b = 0; + break; + } + } + rgblight_set(); +} + +void set_state_leds(void) { + if (rgblight_get_mode() == 1) { + switch (biton32(layer_state)) { + case _RAISE: + rgbflag(C_BLU, C_GRN); + break; + case _LOWER: + rgbflag(C_BLU, C_RED); + break; + case _ADJUST: + rgbflag(C_BLU, C_PRP); + break; + case _MOVE: + rgbflag(C_RED, C_PRP); + break; + case _MOUSE: + rgbflag(C_RED, C_GRN); + break; + case _CMD: + switch(vstate) { + case VIM_V: + case VIM_VI: + case VIM_VS: + rgbflag(C_GRN, C_YAN); + break; + case VIM_C: + case VIM_CI: + rgbflag(C_GRN, C_ORG); + break; + case VIM_D: + case VIM_DI: + rgbflag(C_GRN, C_RED); + break; + case VIM_G: + rgbflag(C_GRN, C_BLU); + break; + case VIM_Y: + rgbflag(C_GRN, C_PRP); + break; + case VIM_START: + default: + rgbflag(C_GRN, C_GRN); + break; + } + break; + default: // for any other layers, or the default layer + rgbflag(C_YAN, C_YAN); + break; + } + } +} + +uint32_t layer_state_set_user(uint32_t state) { + return update_tri_layer_state(state, _RAISE, _LOWER, _ADJUST); +} diff --git a/keyboards/levinson/keymaps/xtonhasvim/readme.md b/keyboards/levinson/keymaps/xtonhasvim/readme.md new file mode 100644 index 000000000..9ff4ce1f1 --- /dev/null +++ b/keyboards/levinson/keymaps/xtonhasvim/readme.md @@ -0,0 +1,9 @@ +# Xton has a tiny keyboard! With Vim! + +Based on the standard Planck layout with a few changes: + +* Escape moved to dual-function with control. +* Dedicated movement and mouse layers. +* Top and middle row swapped in `_RAISE` and `_LOWER` because I never use F-keys. +* Vim layers! See `users/xtonhasvim`. + diff --git a/keyboards/levinson/keymaps/xtonhasvim/rules.mk b/keyboards/levinson/keymaps/xtonhasvim/rules.mk new file mode 100644 index 000000000..ad5466991 --- /dev/null +++ b/keyboards/levinson/keymaps/xtonhasvim/rules.mk @@ -0,0 +1,5 @@ +# MOUSEKEY_ENABLE = yes +# BACKLIGHT_ENABLE = yes +# AUDIO_ENABLE = no + +RGBLIGHT_ENABLE = yes # Enable WS2812 RGB underlight. diff --git a/keyboards/levinson/readme.md b/keyboards/levinson/readme.md index 79e64d332..8cb4ff1cf 100644 --- a/keyboards/levinson/readme.md +++ b/keyboards/levinson/readme.md @@ -4,17 +4,25 @@ Levinson A split 40% split 4x12 ortholinear keyboard made and sold by Keebio. It's essentially a Let's Split with LED backlight support and 2u thumb key support. [More info at Keebio](https://keeb.io). Keyboard Maintainer: [Bakingpy/nooges](https://github.com/nooges) -Hardware Supported: Pro Micro +Hardware Supported: Pro Micro, Elite-C Hardware Availability: [Keebio](https://keeb.io) Make example for this keyboard (after setting up your build environment): make levinson/rev2:default -Example of flashing this keyboard: +Example of flashing this keyboard with Pro micro: make levinson/rev2:default:avrdude -See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. +Example of flashing this keyboard with Elite-C: + +You'll need to add `BOOTLOADER = atmel-dfu` to your `rules.mk` to ensure that resetting the board works properly. + +Hold the reset button on the Elite-C board, or the reset button on the keyboard if already assembled, then release the button and run: + + make levinson/rev2:default:dfu + +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). A build guide for this keyboard can be found here: [Levinson Build Guide](https://docs.keeb.io) diff --git a/keyboards/levinson/rev1/config.h b/keyboards/levinson/rev1/config.h index 52a644e82..07ba1e221 100644 --- a/keyboards/levinson/rev1/config.h +++ b/keyboards/levinson/rev1/config.h @@ -41,6 +41,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* Set 0 if debouncing isn't needed */ #define DEBOUNCING_DELAY 5 +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D0 + /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ @@ -53,7 +56,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* ws2812 RGB LED */ #define RGB_DI_PIN D3 -#define RGBLIGHT_TIMER + #define RGBLED_NUM 12 // Number of LEDs /* Backlight LEDs */ diff --git a/keyboards/levinson/rev2/config.h b/keyboards/levinson/rev2/config.h index 4845c935e..a731c7195 100644 --- a/keyboards/levinson/rev2/config.h +++ b/keyboards/levinson/rev2/config.h @@ -41,6 +41,9 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* Set 0 if debouncing isn't needed */ #define DEBOUNCING_DELAY 5 +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN D0 + /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ #define LOCKING_SUPPORT_ENABLE /* Locking resynchronize hack */ @@ -53,7 +56,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. /* ws2812 RGB LED */ #define RGB_DI_PIN D3 -#define RGBLIGHT_TIMER + #define RGBLED_NUM 12 // Number of LEDs /* Backlight LEDs */ diff --git a/keyboards/levinson/rules.mk b/keyboards/levinson/rules.mk index 4805ed99e..8f1fa130f 100644 --- a/keyboards/levinson/rules.mk +++ b/keyboards/levinson/rules.mk @@ -22,7 +22,7 @@ MIDI_ENABLE = no # MIDI controls AUDIO_ENABLE = no # Audio output on port C6 UNICODE_ENABLE = no # Unicode BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID -RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time. +RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend |