Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com>
		
			
				
	
	
		
			98 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			98 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* Copyright 2021 drhigsby
 | 
						|
 *
 | 
						|
 * This program is free software: you can redistribute it and/or modify
 | 
						|
 * it under the terms of the GNU General Public License as published by
 | 
						|
 * the Free Software Foundation, either version 2 of the License, or
 | 
						|
 * (at your option) any later version.
 | 
						|
 *
 | 
						|
 * This program is distributed in the hope that it will be useful,
 | 
						|
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
						|
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
						|
 * GNU General Public License for more details.
 | 
						|
 *
 | 
						|
 * You should have received a copy of the GNU General Public License
 | 
						|
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 | 
						|
 */
 | 
						|
#include QMK_KEYBOARD_H
 | 
						|
 | 
						|
enum custom_layers {
 | 
						|
    _BASE,
 | 
						|
    _CLOSE,
 | 
						|
    _FAR,
 | 
						|
    _FUNKY,
 | 
						|
};
 | 
						|
#define CLS_SPC LT(_CLOSE, KC_SPC)
 | 
						|
#define FAR_F LT(_FAR, KC_F)
 | 
						|
#define FNK_D LT(_FUNKY, KC_D)
 | 
						|
#define SFT_Z LSFT_T(KC_Z)
 | 
						|
#define SFT_ENT RSFT_T(KC_ENT)
 | 
						|
#define CTL_X LCTL_T(KC_X)
 | 
						|
#define CTL_DOT RCTL_T(KC_DOT)
 | 
						|
#define WIN_C LWIN_T(KC_C)
 | 
						|
#define WIN_COMM RWIN_T(KC_COMM)
 | 
						|
#define ALT_V LALT_T(KC_V)
 | 
						|
#define ALT_M LALT_T(KC_M)
 | 
						|
#define COPY LCTL(KC_C)
 | 
						|
#define PASTE LCTL(KC_V)
 | 
						|
#define CUT LCTL(KC_X)
 | 
						|
#define UNDO LCTL(KC_Z)
 | 
						|
#define RUS_TGL RALT(KC_LSFT)
 | 
						|
#define LOCK LWIN(KC_L)
 | 
						|
#define vvv KC_TRNS
 | 
						|
 | 
						|
enum custom_keycodes {
 | 
						|
    TYPEDON = SAFE_RANGE
 | 
						|
};
 | 
						|
 | 
						|
bool process_record_user(uint16_t keycode, keyrecord_t* record) {
 | 
						|
    if (record->event.pressed) {
 | 
						|
        switch (keycode) {
 | 
						|
        case TYPEDON:
 | 
						|
            SEND_STRING("[typed on an ogurec]");
 | 
						|
            return false;
 | 
						|
        }
 | 
						|
    }
 | 
						|
    return true;
 | 
						|
};
 | 
						|
 | 
						|
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
						|
    [_BASE] = LAYOUT_ortho_3x12(
 | 
						|
        KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P,
 | 
						|
        KC_A, KC_S, FNK_D, FAR_F, KC_G, KC_GRAVE, KC_SCOLON, KC_H, KC_J, KC_K, KC_L, KC_QUOT,
 | 
						|
        SFT_Z, CTL_X, WIN_C, ALT_V, KC_B, KC_BSPC, CLS_SPC, KC_N, ALT_M, WIN_COMM, CTL_DOT, SFT_ENT
 | 
						|
  ),
 | 
						|
 | 
						|
    [_CLOSE] = LAYOUT_ortho_3x12(
 | 
						|
        KC_1,     KC_2,    KC_3,    KC_4,    KC_5,    _______, _______, KC_6,    KC_7,       KC_8,     KC_9,    KC_0,
 | 
						|
        KC_EXLM,  KC_AT,   KC_HASH, KC_DLR,  KC_PERC, _______, _______, KC_CIRC, KC_AMPR,    KC_ASTR,  KC_LPRN, KC_RPRN,
 | 
						|
        KC_MINUS, KC_UNDS, KC_EQL,  KC_PLUS, _______, _______, vvv,     _______, KC_SCOLON,  KC_COLON, KC_SLSH, KC_QUES
 | 
						|
  ),
 | 
						|
 | 
						|
    [_FAR] = LAYOUT_ortho_3x12(
 | 
						|
        KC_ESC,  TYPEDON, KC_BSLS, RUS_TGL,_______,  _______,  _______,  KC_PGUP,   KC_HOME,    KC_UP,    KC_END,    KC_INS,
 | 
						|
        KC_CAPS, KC_TAB,  KC_PIPE, vvv,    LOCK,     _______,  _______,  KC_PGDN,   KC_LEFT,    KC_DOWN,  KC_RIGHT,  KC_DEL,
 | 
						|
        UNDO,    CUT,     COPY,    PASTE,  KC_LBRC,  KC_RBRC,  KC_LCBR,  KC_RCBR,   _______,    _______,  _______,   _______
 | 
						|
  ),
 | 
						|
    [_FUNKY] = LAYOUT_ortho_3x12(
 | 
						|
        KC_F1,    KC_F2,    KC_F3,   KC_F4,    KC_F5,    KC_F6,   KC_F7,    KC_F8,    KC_F9,    KC_F10,   KC_F11,   KC_F12,
 | 
						|
        _______,  _______,  vvv,     _______,  _______,  _______, _______,  _______,  _______,  _______,  _______,  _______,
 | 
						|
        _______,  _______,  _______, _______,  _______,  KC_VOLD, KC_VOLU,  _______,  _______,  _______,  _______,  _______
 | 
						|
  )
 | 
						|
 | 
						|
};
 | 
						|
 | 
						|
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t* record) {
 | 
						|
    switch (keycode) {
 | 
						|
    case FAR_F:
 | 
						|
        return TAPPING_TERM - 50;
 | 
						|
    case CLS_SPC:
 | 
						|
        return TAPPING_TERM - 50;
 | 
						|
    case SFT_Z:
 | 
						|
        return TAPPING_TERM - 80;
 | 
						|
    case SFT_ENT:
 | 
						|
        return TAPPING_TERM - 75;
 | 
						|
    default:
 | 
						|
        return TAPPING_TERM;
 | 
						|
    }
 | 
						|
}
 |