qmk-firmware/keyboards/levinson/keymaps/jyh/keymap.c
Jason Yamada-Hanff 153d1ecfcc Keymap: add jyh levinson keymaps (#4284)
* Keymap: add jyh levinson keymaps

remove tap dance number keys due to sluggish responses

simplify I2C configuration

reverse hyper and meh positions

reduce tapping term to allow fast typing with mod tap space keys

remove Alt hold on right space key. too many false touches.

add vim-style arrows (hjkl) on asdf; semicolon/quote on raise

correct documentation string for jyh levinson layout

add alternative levinson layout for jyh

more inspiration from atreus keyboard. keeps shift in the expected
places. reduces number of layers. puts numpad layout easily
accessible. places important keys on palms and meta keys on top
corners for xmonad.

correct layer switching in jyh2 levinson layout

I was getting stuck on the numpad layer because the numpad hold key
was remapped once the layer was activated. Bad idea. Minor other
refinements.

use curly bracket { instead of brace [ on raise layer

add RGB keys on adjust layer

bootmagic key is confusing. turn it off.

try out permissive hold setting to make mod-tap better

remove hold for right control on quote key. too many mistakes

turn off permissive hold. it was causing unexpected behavior

enable rgb underglow animations

add make it pink/blue key to levinson layout

prevent stuck modifiers in jyh2 levinson keymap

* fix up deprecated code after code review

* remove PREVENT_STUCK_MODIFIERS because it is default

Co-Authored-By: yamad <jyamada1@gmail.com>
2018-11-01 16:52:47 -07:00

216 lines
11 KiB
C

#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;
}