[Keyboard] Jian keyboard (#8914)
Co-authored-by: Joel Challis <git@zvecr.com> Co-authored-by: Drashna Jaelre <drashna@live.com> Co-authored-by: Ryan <fauxpark@gmail.com> Co-authored-by: Nick Brassel <nick@tzarc.org>
This commit is contained in:
		
							parent
							
								
									39ff121d73
								
							
						
					
					
						commit
						157319fbd0
					
				
					 28 changed files with 1802 additions and 0 deletions
				
			
		
							
								
								
									
										27
									
								
								keyboards/jian/keymaps/advanced/config.h
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								keyboards/jian/keymaps/advanced/config.h
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
/*
 | 
			
		||||
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 AUTO_SHIFT_TIMEOUT 150
 | 
			
		||||
//#define NO_AUTO_SHIFT_NUMERIC
 | 
			
		||||
//#define AUTO_SHIFT_MODIFIERS
 | 
			
		||||
#define IGNORE_MOD_TAP_INTERRUPT
 | 
			
		||||
#define ALT_LAYOUTS_ENABLE
 | 
			
		||||
//#define TRAINING_HALFES_LOCK
 | 
			
		||||
							
								
								
									
										584
									
								
								keyboards/jian/keymaps/advanced/keymap.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										584
									
								
								keyboards/jian/keymaps/advanced/keymap.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,584 @@
 | 
			
		|||
#include QMK_KEYBOARD_H
 | 
			
		||||
 | 
			
		||||
typedef union {
 | 
			
		||||
  uint32_t raw;
 | 
			
		||||
  struct {
 | 
			
		||||
    bool thumb_alt :1;
 | 
			
		||||
    bool iso       :1;
 | 
			
		||||
  };
 | 
			
		||||
} user_config_t;
 | 
			
		||||
 | 
			
		||||
user_config_t user_config;
 | 
			
		||||
 | 
			
		||||
#ifdef STENO_ENABLE
 | 
			
		||||
#include "keymap_steno.h"
 | 
			
		||||
#endif // STENO_ENABLE
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#define QWERTY_base  KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I,    KC_O,   KC_P,    KC_LBRC, KC_RBRC, \
 | 
			
		||||
                             KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K,    KC_L,   KC_SCLN, KC_QUOT, \
 | 
			
		||||
                             KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH
 | 
			
		||||
#define DVORAK_base  KC_GRV, KC_QUOT, KC_COMM, KC_DOT,KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_LBRC, KC_RBRC, \
 | 
			
		||||
                             KC_A,    KC_O,    KC_E,  KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH, \
 | 
			
		||||
                             KC_SCLN, KC_Q,    KC_J,  KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z
 | 
			
		||||
#define COLEMAK_base KC_GRV, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U,    KC_Y,   KC_SCLN, KC_LBRC, KC_RBRC, \
 | 
			
		||||
                             KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E,    KC_I,   KC_O,    KC_QUOT, \
 | 
			
		||||
                             KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH
 | 
			
		||||
#define WORKMAN_base KC_GRV, KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U,    KC_P,   KC_SCLN, KC_LBRC, KC_RBRC, \
 | 
			
		||||
                             KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E,    KC_O,   KC_I,    KC_QUOT, \
 | 
			
		||||
                             KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH
 | 
			
		||||
#ifdef ALT_LAYOUTS_ENABLE
 | 
			
		||||
#include "keymap_dvorak.h"
 | 
			
		||||
#include "keymap_colemak.h"
 | 
			
		||||
#include "keymap_workman.h"
 | 
			
		||||
#define DVK2QWE_base DV_GRV, DV_Q, DV_W, DV_E, DV_R, DV_T, DV_Y, DV_U, DV_I,    DV_O,   DV_P,    DV_LBRC, DV_RBRC, \
 | 
			
		||||
                             DV_A, DV_S, DV_D, DV_F, DV_G, DV_H, DV_J, DV_K,    DV_L,   DV_SCLN, DV_QUOT, \
 | 
			
		||||
                             DV_Z, DV_X, DV_C, DV_V, DV_B, DV_N, DV_M, DV_COMM, DV_DOT, DV_SLSH
 | 
			
		||||
#define CMK2QWE_base KC_GRV, CM_Q, CM_W, CM_E, CM_R, CM_T, CM_Y, CM_U, CM_I,    CM_O,   CM_P,    KC_LBRC, KC_RBRC, \
 | 
			
		||||
                             CM_A, CM_S, CM_D, CM_F, CM_G, CM_H, CM_J, CM_K,    CM_L,   CM_SCLN, KC_QUOT, \
 | 
			
		||||
                             CM_Z, CM_X, CM_C, CM_V, CM_B, CM_N, CM_M, CM_COMM, CM_DOT, CM_SLSH
 | 
			
		||||
#define WMN2QWE_base KC_GRV, WK_Q, WK_W, WK_E, WK_R, WK_T, WK_Y, WK_U, WK_I,    WK_O,   WK_P,    KC_LBRC, KC_RBRC, \
 | 
			
		||||
                             WK_A, WK_S, WK_D, WK_F, WK_G, WK_H, WK_J, WK_K,    WK_L,   WK_SCLN, KC_QUOT, \
 | 
			
		||||
                             WK_Z, WK_X, WK_C, WK_V, WK_B, WK_N, WK_M, KC_COMM, KC_DOT, KC_SLSH
 | 
			
		||||
#define CMK2DVK_base KC_GRV, KC_QUOT, KC_COMM, KC_DOT,CM_P, CM_Y, CM_F, CM_G, CM_C, CM_R, CM_L, KC_LBRC, KC_RBRC, \
 | 
			
		||||
                             CM_A,    CM_O,    CM_E,  CM_U, CM_I, CM_D, CM_H, CM_T, CM_N, CM_S, CM_SLSH, \
 | 
			
		||||
                             CM_SCLN, CM_Q,    CM_J,  CM_K, CM_X, CM_B, CM_M, CM_W, CM_V, CM_Z
 | 
			
		||||
#define WMN2DVK_base KC_GRV, KC_QUOT, KC_COMM, KC_DOT,WK_P, WK_Y, WK_F, WK_G, WK_C, WK_R, WK_L, KC_LBRC, KC_RBRC, \
 | 
			
		||||
                             WK_A,    WK_O,    WK_E,  WK_U, WK_I, WK_D, WK_H, WK_T, WK_N, WK_S, KC_SLSH, \
 | 
			
		||||
                             WK_SCLN, WK_Q,    WK_J,  WK_K, WK_X, WK_B, WK_M, WK_W, WK_V, WK_Z
 | 
			
		||||
#define DVK2CMK_base DV_GRV, DV_Q, DV_W, DV_F, DV_P, DV_G, DV_J, DV_L, DV_U,    DV_Y,   DV_SCLN, DV_LBRC, DV_RBRC, \
 | 
			
		||||
                             DV_A, DV_R, DV_S, DV_T, DV_D, DV_H, DV_N, DV_E,    DV_I,   DV_O,    DV_QUOT, \
 | 
			
		||||
                             DV_Z, DV_X, DV_C, DV_V, DV_B, DV_K, DV_M, DV_COMM, DV_DOT, DV_SLSH
 | 
			
		||||
#define WMN2CMK_base KC_GRV, WK_Q, WK_W, WK_F, WK_P, WK_G, WK_J, WK_L, WK_U,    WK_Y,   WK_SCLN, KC_LBRC, KC_RBRC, \
 | 
			
		||||
                             WK_A, WK_R, WK_S, WK_T, WK_D, WK_H, WK_N, WK_E,    WK_I,   WK_O,    KC_QUOT, \
 | 
			
		||||
                             WK_Z, WK_X, WK_C, WK_V, WK_B, WK_K, WK_M, KC_COMM, KC_DOT, KC_SLSH
 | 
			
		||||
#define DVK2WMN_base DV_GRV, DV_Q, DV_D, DV_R, DV_W, DV_B, DV_J, DV_F, DV_U,    DV_P,   DV_SCLN, DV_LBRC, DV_RBRC, \
 | 
			
		||||
                             DV_A, DV_S, DV_H, DV_T, DV_G, DV_Y, DV_N, DV_E,    DV_O,   DV_I,    DV_QUOT, \
 | 
			
		||||
                             DV_Z, DV_X, DV_M, DV_C, DV_V, DV_K, DV_L, DV_COMM, DV_DOT, DV_SLSH
 | 
			
		||||
#define CMK2WMN_base KC_GRV, CM_Q, CM_D, CM_R, CM_W, CM_B, CM_J, CM_F, CM_U,    CM_P,   CM_SCLN, KC_LBRC, KC_RBRC, \
 | 
			
		||||
                             CM_A, CM_S, CM_H, CM_T, CM_G, CM_Y, CM_N, CM_E,    CM_O,   CM_I,    KC_QUOT, \
 | 
			
		||||
                             CM_Z, CM_X, CM_M, CM_C, CM_V, CM_K, CM_L, CM_COMM, CM_DOT, CM_SLSH
 | 
			
		||||
#endif // ALT_LAYOUTS_ENABLE
 | 
			
		||||
 | 
			
		||||
enum jian_layers {
 | 
			
		||||
  _QWERTY,
 | 
			
		||||
#ifdef ALT_LAYOUTS_ENABLE
 | 
			
		||||
  _DVORAK,
 | 
			
		||||
  _COLEMAK,
 | 
			
		||||
  _WORKMAN,
 | 
			
		||||
  _DVK2QWE,
 | 
			
		||||
  _DVK2CMK,
 | 
			
		||||
  _DVK2WMN,
 | 
			
		||||
  _CMK2QWE,
 | 
			
		||||
  _CMK2DVK,
 | 
			
		||||
  _CMK2WMN,
 | 
			
		||||
  _WMN2QWE,
 | 
			
		||||
  _WMN2DVK,
 | 
			
		||||
  _WMN2CMK,
 | 
			
		||||
#endif // ALT_LAYOUTS_ENABLE
 | 
			
		||||
  _ISO,
 | 
			
		||||
  _LOWER,
 | 
			
		||||
  _RAISE,
 | 
			
		||||
  _ADJUST,
 | 
			
		||||
  _BCKLT_ADJ,
 | 
			
		||||
  _THUMB_ALT,
 | 
			
		||||
#ifdef TRAINING_HALFES_LOCK
 | 
			
		||||
  _LEFT,
 | 
			
		||||
  _RIGHT,
 | 
			
		||||
#endif //TRAINING_HALFES_LOCK
 | 
			
		||||
#ifdef DIPS_ENABLE
 | 
			
		||||
  _DIPS,
 | 
			
		||||
#endif // DIPS_ENABLE
 | 
			
		||||
#ifdef STENO_ENABLE
 | 
			
		||||
  _PLOVER
 | 
			
		||||
#endif // STENO_ENABLE
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum jian_keycodes {
 | 
			
		||||
  QWERTY = SAFE_RANGE,
 | 
			
		||||
  PLOVER,
 | 
			
		||||
  EXT_PLV,
 | 
			
		||||
  EXT_RGB,
 | 
			
		||||
  ISO,
 | 
			
		||||
  THUMB_ALT,
 | 
			
		||||
//ifdef ALT_LAYOUTS_ENABLE
 | 
			
		||||
  CH_WMN,
 | 
			
		||||
  CH_CMK,
 | 
			
		||||
  CH_QWE,
 | 
			
		||||
  CH_DVK,
 | 
			
		||||
//endif // ALT_LAYOUTS_ENABLE
 | 
			
		||||
#ifdef DIPS_ENABLE
 | 
			
		||||
  LAYOUT0,
 | 
			
		||||
  LAYOUT1,
 | 
			
		||||
  LAYOUT2,
 | 
			
		||||
  LAYOUT3,
 | 
			
		||||
  DIP_ISO,
 | 
			
		||||
  FLIP_TH,
 | 
			
		||||
  DIP6,
 | 
			
		||||
  DIP7,
 | 
			
		||||
  DIP8,
 | 
			
		||||
  DIP9,
 | 
			
		||||
  DIP10,
 | 
			
		||||
  DIP11,
 | 
			
		||||
#endif // DIPS_ENABLE
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#ifdef TRAINING_HALFES_LOCK
 | 
			
		||||
static uint8_t lock_timeout = 1;
 | 
			
		||||
static uint8_t lock_cooldown = 0;
 | 
			
		||||
#endif //TRAINING_HALFES_LOCK
 | 
			
		||||
#ifdef DIPS_ENABLE
 | 
			
		||||
#ifdef ALT_LAYOUTS_ENABLE
 | 
			
		||||
static uint8_t layout_conversion_dip_state = 0;
 | 
			
		||||
#endif // ALT_LAYOUTS_ENABLE
 | 
			
		||||
#endif // DIPS_ENABLE
 | 
			
		||||
 | 
			
		||||
#define LOWER MO(_LOWER)
 | 
			
		||||
#define RAISE MO(_RAISE)
 | 
			
		||||
 | 
			
		||||
#define BL_ADJ  TG(_BCKLT_ADJ)
 | 
			
		||||
#define TG_LWR  TG(_LOWER)
 | 
			
		||||
#define TG_RSE  TG(_RAISE)
 | 
			
		||||
 | 
			
		||||
#define RBR_RGU MT(MOD_RGUI, KC_RBRC)
 | 
			
		||||
#define F12_RGU MT(MOD_RGUI, KC_F12)
 | 
			
		||||
#define EQL_LCT MT(MOD_LCTL, KC_EQL)
 | 
			
		||||
#define APP_LCT MT(MOD_LCTL, KC_APP)
 | 
			
		||||
#define EQL_RCT MT(MOD_RCTL, KC_EQL)
 | 
			
		||||
#define QUO_RCT MT(MOD_RCTL, KC_QUOT)
 | 
			
		||||
#define APP_RCT MT(MOD_RCTL, KC_APP)
 | 
			
		||||
#define MIN_RCT MT(MOD_RCTL, KC_MINS)
 | 
			
		||||
#define PLS_LAL MT(MOD_LALT, KC_PPLS)
 | 
			
		||||
#define BSL_RAL MT(MOD_RALT, KC_BSLS)
 | 
			
		||||
 | 
			
		||||
#define NBS_LCT MT(MOD_LCTL, KC_NUBS)
 | 
			
		||||
#define BSH_LAL MT(MOD_LALT, KC_BSLS)
 | 
			
		||||
#define APP_RAL MT(MOD_RALT, KC_APP)
 | 
			
		||||
 | 
			
		||||
#define BSP_LSH MT(MOD_LSFT, KC_BSPC)
 | 
			
		||||
#define BSP_RSH MT(MOD_RSFT, KC_BSPC)
 | 
			
		||||
#define SPC_LSH MT(MOD_LSFT, KC_SPC)
 | 
			
		||||
#define SPC_RSH MT(MOD_RSFT, KC_SPC)
 | 
			
		||||
#define DEL_RSE LT(_RAISE, KC_DEL)
 | 
			
		||||
#define TAB_RSE LT(_RAISE, KC_TAB)
 | 
			
		||||
#define ENT_LWR LT(_LOWER, KC_ENT)
 | 
			
		||||
#define ESC_LWR LT(_LOWER, KC_ESC)
 | 
			
		||||
 | 
			
		||||
#define RGU_RBR RGUI_T(KC_RBRC)
 | 
			
		||||
#define RCT_QUO RCTL_T(KC_QUOT)
 | 
			
		||||
 | 
			
		||||
#define LAYOUT_base( \
 | 
			
		||||
    GRV, Q, W, E, R, T, Y, U, I,    O,   P,    LBRC, RBRC, \
 | 
			
		||||
         A, S, D, F, G, H, J, K,    L,   SCLN, QUOT, \
 | 
			
		||||
         Z, X, C, V, B, N, M, COMM, DOT, SLSH \
 | 
			
		||||
  ) \
 | 
			
		||||
  LAYOUT( \
 | 
			
		||||
  KC_LGUI, GRV,     Q,       W,       E,       R,       T,            Y,       U,       I,       O,       P,       LBRC,    RGU_RBR, \
 | 
			
		||||
           KC_LCTL, A,       S,       D,       F,       G,            H,       J,       K,       L,       SCLN,    RCT_QUO, \
 | 
			
		||||
           KC_LALT, Z,       X,       C,       V,       B,            N,       M,       COMM,    DOT,     SLSH,    BSL_RAL, \
 | 
			
		||||
                                      TAB_RSE, SPC_LSH, ENT_LWR,      ESC_LWR, BSP_RSH, DEL_RSE \
 | 
			
		||||
  )
 | 
			
		||||
#define LAYOUT_base_wrapper(...) LAYOUT_base(__VA_ARGS__)
 | 
			
		||||
 | 
			
		||||
#ifdef SWAP_HANDS_ENABLE
 | 
			
		||||
#define SW_TG SH_TG
 | 
			
		||||
#else
 | 
			
		||||
#define SW_TG _______
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
 | 
			
		||||
 | 
			
		||||
[_QWERTY] = LAYOUT_base_wrapper(QWERTY_base),
 | 
			
		||||
 | 
			
		||||
#ifdef DIPS_ENABLE
 | 
			
		||||
[_DIPS] = LAYOUT_DIPS(\
 | 
			
		||||
  LAYOUT0, LAYOUT1, LAYOUT2, LAYOUT3, DIP_ISO, FLIP_TH, \
 | 
			
		||||
  LAYOUT0, LAYOUT1, LAYOUT2, LAYOUT3, DIP_ISO, FLIP_TH \
 | 
			
		||||
),
 | 
			
		||||
#endif // DIPS_ENABLE
 | 
			
		||||
 | 
			
		||||
[_LOWER] = LAYOUT(
 | 
			
		||||
  _______, KC_UNDS, KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,        KC_F6,   KC_F7,   KC_F8,   KC_F9,   KC_F10,  KC_F11,  F12_RGU,
 | 
			
		||||
           EQL_LCT, KC_EXLM, KC_AT,   KC_HASH, KC_DLR,  KC_PERC,      KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, MIN_RCT,
 | 
			
		||||
           PLS_LAL, KC_1,    KC_2,    KC_3,    KC_4,    KC_5,         KC_6,    KC_7,    KC_8,    KC_9,    KC_0,    _______,
 | 
			
		||||
                                      _______, _______, _______,      _______,  _______, _______
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
[_RAISE] = LAYOUT(
 | 
			
		||||
  _______, KC_NLCK, KC_PSLS, KC_P7,   KC_P8,   KC_P9,   KC_PMNS,      KC_VOLU, KC_HOME, KC_PSCR, KC_PGUP, KC_SLCK, KC_CAPS, _______,
 | 
			
		||||
           EQL_LCT, KC_PAST, KC_P4,   KC_P5,   KC_P6,   KC_PPLS,      KC_MUTE, KC_LEFT, KC_UP,   KC_RGHT, KC_INS,  APP_RCT,
 | 
			
		||||
           _______, KC_P0,   KC_P1,   KC_P2,   KC_P3,   KC_PCMM,      KC_VOLD, KC_END,  KC_DOWN, KC_PGDN, KC_PAUS, _______,
 | 
			
		||||
                                      _______, _______, _______,      _______, _______, _______
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
[_ADJUST] = LAYOUT_symmetric(
 | 
			
		||||
  RESET,   DEBUG,   KC_ASUP, CH_WMN,  CH_CMK,  CH_QWE,  CH_DVK,
 | 
			
		||||
           KC_ASRP, KC_ASTG, XXXXXXX, XXXXXXX, QWERTY,  PLOVER,
 | 
			
		||||
           BL_ADJ,  KC_ASDN, XXXXXXX, XXXXXXX, ISO,     THUMB_ALT,
 | 
			
		||||
                                      _______, SW_TG,   _______
 | 
			
		||||
),
 | 
			
		||||
#if defined(RGBLIGHT) | defined(BACKLIGHT_ENABLE)
 | 
			
		||||
[_BCKLT_ADJ] = LAYOUT_symmetric(
 | 
			
		||||
  XXXXXXX, XXXXXXX, XXXXXXX, BL_INC,  RGB_VAI, RGB_HUD, RGB_HUI,
 | 
			
		||||
           XXXXXXX, XXXXXXX, BL_DEC,  RGB_VAD, RGB_SAD, RGB_SAI,
 | 
			
		||||
           BL_ADJ,  BL_BRTG, BL_TOGG, RGB_TOG, RGB_RMOD,RGB_MOD,
 | 
			
		||||
                                      _______, _______, _______
 | 
			
		||||
),
 | 
			
		||||
#endif // defined(RGBLIGHT) | defined(BACKLIGHT_ENABLE)
 | 
			
		||||
#ifdef TRAINING_HALFES_LOCK
 | 
			
		||||
[_LEFT] = LAYOUT_base(
 | 
			
		||||
  _______, _______, _______, _______, _______, _______,      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
 | 
			
		||||
           _______, _______, _______, _______, _______,      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
 | 
			
		||||
           _______, _______, _______, _______, _______,      XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
[_RIGHT] = LAYOUT_base(
 | 
			
		||||
  XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,      _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
           XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,      _______, _______, _______, _______, _______, _______,
 | 
			
		||||
           XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,      _______, _______, _______, _______, _______
 | 
			
		||||
),
 | 
			
		||||
#endif // TRAINING_HALFES_LOCK
 | 
			
		||||
 | 
			
		||||
#ifdef STENO_ENABLE
 | 
			
		||||
[_PLOVER] = LAYOUT(
 | 
			
		||||
  EXT_PLV, STN_N1,  STN_N2,  STN_N3,  STN_N4,  STN_N5,  STN_N6,       STN_N7,  STN_N8,  STN_N9,  STN_NA,  STN_NB,  STN_NC,  EXT_PLV,
 | 
			
		||||
           STN_FN,  STN_S1,  STN_TL,  STN_PL,  STN_HL,  STN_ST1,      STN_ST3, STN_FR,  STN_PR,  STN_LR,  STN_TR,  STN_DR,
 | 
			
		||||
           XXXXXXX, STN_S2,  STN_KL,  STN_WL,  STN_RL,  STN_ST2,      STN_ST4, STN_RR,  STN_BR,  STN_GR,  STN_SR,  STN_ZR,
 | 
			
		||||
                                      XXXXXXX, STN_A,   STN_O,        STN_E,   STN_U,   XXXXXXX
 | 
			
		||||
),
 | 
			
		||||
#endif // STENO_ENABLE
 | 
			
		||||
 | 
			
		||||
[_THUMB_ALT] = LAYOUT(
 | 
			
		||||
  _______, _______, _______, _______, _______, _______, _______,      _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
           _______, _______, _______, _______, _______, _______,      _______, _______, _______, _______, _______, _______,
 | 
			
		||||
           _______, _______, _______, _______, _______, _______,      _______, _______, _______, _______, _______, _______,
 | 
			
		||||
                                      DEL_RSE, BSP_LSH, ESC_LWR,      ENT_LWR, SPC_RSH, TAB_RSE
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
[_ISO] = LAYOUT(
 | 
			
		||||
  _______, _______,         _______, _______, _______, _______, _______,      _______, _______, _______, _______, _______, _______, _______,
 | 
			
		||||
           LCTL_T(KC_NUBS), _______, _______, _______, _______, _______,      _______, _______, _______, _______, _______, _______,
 | 
			
		||||
           LALT_T(KC_NUHS), _______, _______, _______, _______, _______,      _______, _______, _______, _______, _______, KC_RALT,
 | 
			
		||||
                                              _______, _______, _______,      _______, _______, _______
 | 
			
		||||
),
 | 
			
		||||
 | 
			
		||||
#ifdef ALT_LAYOUTS_ENABLE
 | 
			
		||||
[_DVORAK] = LAYOUT_base_wrapper(DVORAK_base),
 | 
			
		||||
[_COLEMAK] = LAYOUT_base_wrapper(COLEMAK_base),
 | 
			
		||||
[_WORKMAN] = LAYOUT_base_wrapper(WORKMAN_base),
 | 
			
		||||
[_DVK2QWE] = LAYOUT_base_wrapper(DVK2QWE_base),
 | 
			
		||||
[_CMK2QWE] = LAYOUT_base_wrapper(CMK2QWE_base),
 | 
			
		||||
[_WMN2QWE] = LAYOUT_base_wrapper(WMN2QWE_base),
 | 
			
		||||
[_CMK2DVK] = LAYOUT_base_wrapper(CMK2DVK_base),
 | 
			
		||||
[_WMN2DVK] = LAYOUT_base_wrapper(WMN2DVK_base),
 | 
			
		||||
[_DVK2CMK] = LAYOUT_base_wrapper(DVK2CMK_base),
 | 
			
		||||
[_WMN2CMK] = LAYOUT_base_wrapper(WMN2CMK_base),
 | 
			
		||||
[_DVK2WMN] = LAYOUT_base_wrapper(DVK2WMN_base),
 | 
			
		||||
[_CMK2WMN] = LAYOUT_base_wrapper(CMK2WMN_base)
 | 
			
		||||
#endif // ALT_LAYOUTS_ENABLE
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
uint32_t layer_state_set_user(uint32_t state) {
 | 
			
		||||
  return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef DIPS_ENABLE
 | 
			
		||||
#ifdef ALT_LAYOUTS_ENABLE
 | 
			
		||||
void layout_convert(uint8_t statuses) {
 | 
			
		||||
  switch (0b1111 & statuses) {
 | 
			
		||||
    case 0b0000:
 | 
			
		||||
      set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b0001:
 | 
			
		||||
      set_single_persistent_default_layer(_DVORAK);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b0010:
 | 
			
		||||
      set_single_persistent_default_layer(_COLEMAK);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b0011:
 | 
			
		||||
      set_single_persistent_default_layer(_WORKMAN);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b0100:
 | 
			
		||||
      set_single_persistent_default_layer(_DVK2QWE);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b0101:
 | 
			
		||||
      set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b0110:
 | 
			
		||||
      set_single_persistent_default_layer(_DVK2CMK);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b0111:
 | 
			
		||||
      set_single_persistent_default_layer(_DVK2WMN);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b1000:
 | 
			
		||||
      set_single_persistent_default_layer(_CMK2QWE);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b1001:
 | 
			
		||||
      set_single_persistent_default_layer(_CMK2DVK);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b1010:
 | 
			
		||||
      set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b1011:
 | 
			
		||||
      set_single_persistent_default_layer(_CMK2WMN);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b1100:
 | 
			
		||||
      set_single_persistent_default_layer(_WMN2QWE);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b1101:
 | 
			
		||||
      set_single_persistent_default_layer(_WMN2DVK);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b1110:
 | 
			
		||||
      set_single_persistent_default_layer(_WMN2CMK);
 | 
			
		||||
      break;
 | 
			
		||||
    case 0b1111:
 | 
			
		||||
      set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
      break;
 | 
			
		||||
   }
 | 
			
		||||
}
 | 
			
		||||
#endif // ALT_LAYOUTS_ENABLE
 | 
			
		||||
#endif // DIPS_ENABLE
 | 
			
		||||
 | 
			
		||||
void matrix_init_user(void) {
 | 
			
		||||
#ifdef DIPS_ENABLE
 | 
			
		||||
  layer_on(_DIPS);
 | 
			
		||||
#endif // DIPS_ENABLE
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void keyboard_post_init_user(void) {
 | 
			
		||||
  user_config.raw = eeconfig_read_user();
 | 
			
		||||
  if (user_config.thumb_alt) {
 | 
			
		||||
     layer_on(_THUMB_ALT);
 | 
			
		||||
  } else {
 | 
			
		||||
     layer_off(_THUMB_ALT);
 | 
			
		||||
  }
 | 
			
		||||
  if (user_config.iso) {
 | 
			
		||||
     layer_on(_ISO);
 | 
			
		||||
  } else {
 | 
			
		||||
     layer_off(_ISO);
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#ifdef ALT_LAYOUTS_ENABLE
 | 
			
		||||
static char change_layout_input = 0;
 | 
			
		||||
static bool change_layout_keystroke = 0;
 | 
			
		||||
void change_layout_conversion(uint16_t keycode) {
 | 
			
		||||
    switch (keycode) {
 | 
			
		||||
        case CH_WMN:
 | 
			
		||||
            change_layout_input |= 0b1000 << (change_layout_keystroke << 2);
 | 
			
		||||
            break;
 | 
			
		||||
        case CH_CMK:
 | 
			
		||||
            change_layout_input |= 0b0100 << (change_layout_keystroke << 2);
 | 
			
		||||
            break;
 | 
			
		||||
        case CH_DVK:
 | 
			
		||||
            change_layout_input |= 0b0010 << (change_layout_keystroke << 2);
 | 
			
		||||
            break;
 | 
			
		||||
        case CH_QWE:
 | 
			
		||||
            change_layout_input |= 0b0001 << (change_layout_keystroke << 2);
 | 
			
		||||
            break;
 | 
			
		||||
    }
 | 
			
		||||
    if (change_layout_keystroke == 1) {
 | 
			
		||||
        switch (change_layout_input) {
 | 
			
		||||
            case 0b00010001:
 | 
			
		||||
                set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b00100001:
 | 
			
		||||
                set_single_persistent_default_layer(_DVORAK);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b01000001:
 | 
			
		||||
                set_single_persistent_default_layer(_COLEMAK);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b10000001:
 | 
			
		||||
                set_single_persistent_default_layer(_WORKMAN);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b00010010:
 | 
			
		||||
                set_single_persistent_default_layer(_DVK2QWE);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b00100010:
 | 
			
		||||
                set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b01000010:
 | 
			
		||||
                set_single_persistent_default_layer(_DVK2CMK);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b10000010:
 | 
			
		||||
                set_single_persistent_default_layer(_DVK2WMN);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b00010100:
 | 
			
		||||
                set_single_persistent_default_layer(_CMK2QWE);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b00100100:
 | 
			
		||||
                set_single_persistent_default_layer(_CMK2DVK);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b01000100:
 | 
			
		||||
                set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b10000100:
 | 
			
		||||
                set_single_persistent_default_layer(_CMK2WMN);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b00011000:
 | 
			
		||||
                set_single_persistent_default_layer(_WMN2QWE);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b00101000:
 | 
			
		||||
                set_single_persistent_default_layer(_WMN2DVK);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b01001000:
 | 
			
		||||
                set_single_persistent_default_layer(_WMN2CMK);
 | 
			
		||||
                break;
 | 
			
		||||
            case 0b10001000:
 | 
			
		||||
                set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
                break;
 | 
			
		||||
        }
 | 
			
		||||
        change_layout_input = 0;
 | 
			
		||||
    }
 | 
			
		||||
    change_layout_keystroke ^= 1;
 | 
			
		||||
}
 | 
			
		||||
#endif // ALT_LAYOUTS_ENABLE
 | 
			
		||||
 | 
			
		||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
 | 
			
		||||
#ifdef TRAINING_HALFES_LOCK
 | 
			
		||||
  if (!record->event.pressed) {
 | 
			
		||||
      lock_cooldown = --lock_cooldown < 0 ? 0 : lock_cooldown;
 | 
			
		||||
  }
 | 
			
		||||
  if (lock_cooldown == 0) {
 | 
			
		||||
      layer_off(_LEFT);
 | 
			
		||||
      layer_off(_RIGHT);
 | 
			
		||||
  }
 | 
			
		||||
#endif // TRAINING_HALFES_LOCK
 | 
			
		||||
  switch (keycode) {
 | 
			
		||||
#ifdef TRAINING_HALFES_LOCK
 | 
			
		||||
    case SPC_RSH:
 | 
			
		||||
    case BSP_RSH:
 | 
			
		||||
    case DEL_RSE:
 | 
			
		||||
    case ESC_LWR:
 | 
			
		||||
    case BSL_RAL:
 | 
			
		||||
    case RGU_RBR:
 | 
			
		||||
    case RCT_QUO:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
        layer_on(_LEFT);
 | 
			
		||||
        lock_cooldown = lock_timeout;
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        lock_cooldown = 0;
 | 
			
		||||
        layer_off(_LEFT);
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
    case BSP_LSH:
 | 
			
		||||
    case SPC_LSH:
 | 
			
		||||
    case TAB_RSE:
 | 
			
		||||
    case ENT_LWR:
 | 
			
		||||
    case KC_LCTL:
 | 
			
		||||
    case KC_LGUI:
 | 
			
		||||
    case KC_LALT:
 | 
			
		||||
    if (record->event.pressed) {
 | 
			
		||||
        layer_on(_RIGHT);
 | 
			
		||||
        lock_cooldown = lock_timeout;
 | 
			
		||||
    }
 | 
			
		||||
    else {
 | 
			
		||||
        lock_cooldown = 0;
 | 
			
		||||
        layer_off(_RIGHT);
 | 
			
		||||
    }
 | 
			
		||||
    break;
 | 
			
		||||
#endif // TRAINING_HALFES_LOCK
 | 
			
		||||
#ifdef STENO_ENABLE
 | 
			
		||||
    case PLOVER:
 | 
			
		||||
      if (!record->event.pressed) {
 | 
			
		||||
        layer_off(_RAISE);
 | 
			
		||||
        layer_off(_LOWER);
 | 
			
		||||
        layer_off(_ADJUST);
 | 
			
		||||
        layer_on(_PLOVER);
 | 
			
		||||
        if (!eeconfig_is_enabled()) {
 | 
			
		||||
            eeconfig_init();
 | 
			
		||||
        }
 | 
			
		||||
        keymap_config.raw = eeconfig_read_keymap();
 | 
			
		||||
        keymap_config.nkro = 1;
 | 
			
		||||
        eeconfig_update_keymap(keymap_config.raw);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
    case EXT_PLV:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_off(_PLOVER);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
#endif // STENO_ENABLE
 | 
			
		||||
    case QWERTY:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        set_single_persistent_default_layer(_QWERTY);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
#ifdef ALT_LAYOUTS_ENABLE
 | 
			
		||||
    case CH_WMN:
 | 
			
		||||
    case CH_CMK:
 | 
			
		||||
    case CH_QWE:
 | 
			
		||||
    case CH_DVK:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        change_layout_conversion(keycode);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
#endif // ALT_LAYOUTS_ENABLE
 | 
			
		||||
#ifdef DIPS_ENABLE
 | 
			
		||||
#ifdef ALT_LAYOUTS_ENABLE
 | 
			
		||||
    case LAYOUT0:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layout_conversion_dip_state |= 1 << 0;
 | 
			
		||||
      } else {
 | 
			
		||||
        layout_conversion_dip_state &= ~(1 << 0);
 | 
			
		||||
      }
 | 
			
		||||
      layout_convert(layout_conversion_dip_state);
 | 
			
		||||
      return false;
 | 
			
		||||
    case LAYOUT1:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layout_conversion_dip_state |= 1 << 1;
 | 
			
		||||
      } else {
 | 
			
		||||
        layout_conversion_dip_state &= ~(1 << 1);
 | 
			
		||||
      }
 | 
			
		||||
      layout_convert(layout_conversion_dip_state);
 | 
			
		||||
      return false;
 | 
			
		||||
    case LAYOUT2:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layout_conversion_dip_state |= 1 << 2;
 | 
			
		||||
      } else {
 | 
			
		||||
        layout_conversion_dip_state &= ~(1 << 2);
 | 
			
		||||
      }
 | 
			
		||||
      layout_convert(layout_conversion_dip_state);
 | 
			
		||||
      return false;
 | 
			
		||||
    case LAYOUT3:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layout_conversion_dip_state |= 1 << 3;
 | 
			
		||||
      } else {
 | 
			
		||||
        layout_conversion_dip_state &= ~(1 << 3);
 | 
			
		||||
      }
 | 
			
		||||
      layout_convert(layout_conversion_dip_state);
 | 
			
		||||
      return false;
 | 
			
		||||
#endif // ALT_LAYOUTS_ENABLE
 | 
			
		||||
    case DIP_ISO:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
          layer_on(_ISO);
 | 
			
		||||
      } else {
 | 
			
		||||
          layer_off(_ISO);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
    case FLIP_TH:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
          layer_on(_THUMB_ALT);
 | 
			
		||||
      } else {
 | 
			
		||||
          layer_off(_THUMB_ALT);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
#endif // DIPS_ENABLE
 | 
			
		||||
    case THUMB_ALT:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_invert(_THUMB_ALT);
 | 
			
		||||
        user_config.thumb_alt ^= 1;
 | 
			
		||||
        eeconfig_update_user(user_config.raw);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
    case ISO:
 | 
			
		||||
      if (record->event.pressed) {
 | 
			
		||||
        layer_invert(_ISO);
 | 
			
		||||
        user_config.iso ^= 1;
 | 
			
		||||
        eeconfig_update_user(user_config.raw);
 | 
			
		||||
      }
 | 
			
		||||
      return false;
 | 
			
		||||
  }
 | 
			
		||||
  return true;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										5
									
								
								keyboards/jian/keymaps/advanced/rules.mk
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								keyboards/jian/keymaps/advanced/rules.mk
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,5 @@
 | 
			
		|||
SWAP_HANDS_ENABLE = yes
 | 
			
		||||
STENO_ENABLE = no
 | 
			
		||||
MOUSEKEY_ENABLE = no
 | 
			
		||||
EXTRAKEY_ENABLE = yes    # Audio control and System control
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue