forked from mfulz_github/qmk_firmware
		
	[Keyboard] Keyboard Naked60 Update (#7106)
* [Keyboard] Keyboard Naked60 Update Support for SPLIT_KEYBOARD Keymap updates * Update keyboards/naked60/readme.md Co-Authored-By: Joel Challis <git@zvecr.com> * Update keyboards/naked60/rev1/config.h Co-Authored-By: Joel Challis <git@zvecr.com> * Update keyboards/naked60/rev1/rev1.h Co-Authored-By: Joel Challis <git@zvecr.com> * Update keyboards/naked60/rev1/rev1.h Co-Authored-By: Joel Challis <git@zvecr.com>
This commit is contained in:
		
							parent
							
								
									d99f6e95e1
								
							
						
					
					
						commit
						737bca8e51
					
				| @ -19,25 +19,3 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
| #include "config_common.h" | #include "config_common.h" | ||||||
| 
 |  | ||||||
| // GCC include 'config.h" sequence in qmk_firmware/keyboards/naked60/
 |  | ||||||
| //   -include keyboards/naked60/config.h
 |  | ||||||
| //   -include keyboards/naked60/rev?/config.h
 |  | ||||||
| //   -include keyboards/naked60/rev?/keymaps/MAPNAME/config.h
 |  | ||||||
| //   XXXX.c
 |  | ||||||
| 
 |  | ||||||
| #include <serial_config.h> |  | ||||||
| 
 |  | ||||||
| // GCC include search path in qmk_firmare/keyboards/naked60/
 |  | ||||||
| //    #include "..." search starts here:
 |  | ||||||
| //    #include <...> search starts here:
 |  | ||||||
| //     keyboards/naked60/rev?/keymaps/MAPNAME
 |  | ||||||
| //     keyboards/naked60
 |  | ||||||
| //     keyboards/naked60/rev?
 |  | ||||||
| //     .
 |  | ||||||
| //     ./tmk_core
 |  | ||||||
| //     ......
 |  | ||||||
| 
 |  | ||||||
| // MACRO and FUNCTION are features that are depreciated.
 |  | ||||||
| #define NO_ACTION_MACRO |  | ||||||
| #define NO_ACTION_FUNCTION |  | ||||||
|  | |||||||
| @ -18,34 +18,5 @@ | |||||||
| 
 | 
 | ||||||
| /* Select hand configuration */ | /* Select hand configuration */ | ||||||
| 
 | 
 | ||||||
| #define MASTER_LEFT |  | ||||||
| // #define MASTER_RIGHT
 |  | ||||||
| // #define EE_HANDS
 |  | ||||||
| 
 |  | ||||||
| #define USE_SERIAL_PD2 |  | ||||||
| 
 |  | ||||||
| #define TAPPING_FORCE_HOLD | #define TAPPING_FORCE_HOLD | ||||||
| #define TAPPING_TERM 180 | #define TAPPING_TERM 180 | ||||||
| 
 |  | ||||||
| #define MK_3_SPEED |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_INTERVAL |  | ||||||
| #define MOUSEKEY_INTERVAL 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_TIME_TO_MAX 150 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MAX_SPEED |  | ||||||
| #define MOUSEKEY_MAX_SPEED 3 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MOVE_DELTA |  | ||||||
| #define MOUSEKEY_MOVE_DELTA 5 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_DELAY |  | ||||||
| #define MOUSEKEY_DELAY 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_MAX_SPEED |  | ||||||
| #define MOUSEKEY_WHEEL_MAX_SPEED 1 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_WHEEL_TIME_TO_MAX 0 |  | ||||||
|  | |||||||
| @ -2,11 +2,6 @@ | |||||||
| 
 | 
 | ||||||
| extern keymap_config_t keymap_config; | extern keymap_config_t keymap_config; | ||||||
| 
 | 
 | ||||||
| #ifdef RGBLIGHT_ENABLE |  | ||||||
| //Following line allows macro to read current RGB settings
 |  | ||||||
| extern rgblight_config_t rgblight_config; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| extern uint8_t is_master; | extern uint8_t is_master; | ||||||
| 
 | 
 | ||||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 | // Each layer gets a name for readability, which is then used in the keymap matrix below.
 | ||||||
| @ -21,22 +16,11 @@ enum layer_number { | |||||||
|   _ADJUST, |   _ADJUST, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum custom_keycodes { |  | ||||||
|   FLOCK = SAFE_RANGE, |  | ||||||
|   ADJUST, |  | ||||||
|   RGBRST |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum tapdances{ | enum tapdances{ | ||||||
|   TD_ESFL = 0, |   TD_ESFL = 0, | ||||||
|   TD_ESQW, |   TD_ESQW, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Layer Mode aliases
 |  | ||||||
| 
 |  | ||||||
| #define KC_SNUBS S(KC_NUBS) |  | ||||||
| #define KC_SNUHS S(KC_NUHS) |  | ||||||
| 
 |  | ||||||
| qk_tap_dance_action_t tap_dance_actions[] = { | qk_tap_dance_action_t tap_dance_actions[] = { | ||||||
|   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), |   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), | ||||||
|   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), |   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), | ||||||
| @ -53,7 +37,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|      KC_LCTRL,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,  KC_ENT, |      KC_LCTRL,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,  KC_ENT, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                 ADJUST,KC_LCTRL, KC_LALT, KC_LGUI,MO(_LOWER),KC_SPC, KC_SPC,MO(_RAISE),KC_LEFT, KC_DOWN,   KC_UP,KC_RIGHT |            MO(_ADJUST),KC_LCTRL, KC_LALT, KC_LGUI,MO(_LOWER),KC_SPC, KC_SPC,MO(_RAISE),KC_LEFT, KC_DOWN,   KC_UP,KC_RIGHT | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
| @ -81,7 +65,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|       _______,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                     KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, |       _______,   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,KC_SNUHS,KC_SNUBS, _______, _______, _______, |       _______,   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 |                _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
| @ -107,33 +91,17 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|       _______,   RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ |                _______, _______, _______, _______, _______,   RESET,   RESET, _______, _______, _______, _______, _______ | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ) |   ) | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| uint32_t layer_state_set_user(uint32_t state) { | void matrix_init_user(void) { | ||||||
|   return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); | 
 | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int RGB_current_mode; |  | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
| 
 |  | ||||||
|   bool result = false; |  | ||||||
|   switch (keycode) { |  | ||||||
|     case ADJUST: |  | ||||||
|       update_tri_layer_state(record->event.pressed, _ADJUST, _RAISE, _LOWER); |  | ||||||
|         break; |  | ||||||
|     default: |  | ||||||
|       result = true; |  | ||||||
|       break; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   return result; |  | ||||||
| } | } | ||||||
| @ -46,8 +46,8 @@ | |||||||
| |  1   |  2   |  3   |  4   |  5   |  6   |  7   |  8   |  9   |  10  |  11  |  12  |  13  |  14  | | |  1   |  2   |  3   |  4   |  5   |  6   |  7   |  8   |  9   |  10  |  11  |  12  |  13  |  14  | | ||||||
| |:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| | |:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| | ||||||
| |   ESC|    F2|    F3|    F4|    F5|    F6|      |      |    F7|    F8|    F9|   F10|   F11|   F12| | |   ESC|    F2|    F3|    F4|    F5|    F6|      |      |    F7|    F8|    F9|   F10|   F11|   F12| | ||||||
| |  TILD|   RST| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX|  BTN1|  MS_U|  BTN2| XXXXX|Alt+PSCR| | |  TILD| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX|  BTN1|  MS_U|  BTN2| XXXXX|Alt+PSCR| | ||||||
| |  LSFT| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX|  MS_L|  MS_D|  MS_R| XXXXX|  PSCR| | |  LSFT| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX|  MS_L|  MS_D|  MS_R| XXXXX|  PSCR| | ||||||
| | LCTRL| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| C+A+D| | | LCTRL| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| C+A+D| | ||||||
| |      |ADJUST| LCTRL|  LALT|  LGUI| LOWER|   SPC|   SPC| RAISE|  MNXT|  VOLD|  VOLU|  MPLY|      | | |      |ADJUST| LCTRL|  LALT|  LGUI| LOWER| RESET| RESET| RAISE|  MNXT|  VOLD|  VOLU|  MPLY|      | | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -21,70 +21,7 @@ | |||||||
| #define MASTER_LEFT | #define MASTER_LEFT | ||||||
| // #define MASTER_RIGHT
 | // #define MASTER_RIGHT
 | ||||||
| // #define EE_HANDS
 | // #define EE_HANDS
 | ||||||
| 
 |  | ||||||
| #define USE_SERIAL_PD2 | #define USE_SERIAL_PD2 | ||||||
| 
 | 
 | ||||||
| #define TAPPING_FORCE_HOLD | #define TAPPING_FORCE_HOLD | ||||||
| #define TAPPING_TERM 180 | #define TAPPING_TERM 180 | ||||||
| 
 |  | ||||||
| #define RGBLED_NUM 7 |  | ||||||
| 
 |  | ||||||
| #ifndef IOS_DEVICE_ENABLE |  | ||||||
|   #define RGBLIGHT_LIMIT_VAL 180 |  | ||||||
|   #define RGBLIGHT_VAL_STEP 17 |  | ||||||
| #else |  | ||||||
|   #define RGBLIGHT_LIMIT_VAL 50 |  | ||||||
|   #define RGBLIGHT_VAL_STEP 4 |  | ||||||
| #endif |  | ||||||
| #define RGBLIGHT_HUE_STEP 10 |  | ||||||
| #define RGBLIGHT_SAT_STEP 17 |  | ||||||
| 
 |  | ||||||
| #if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) |  | ||||||
| // USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
 |  | ||||||
| //  120  RGBoff, OLEDoff
 |  | ||||||
| //  120  OLED
 |  | ||||||
| //  330  RGB 6
 |  | ||||||
| //  300  RGB 32
 |  | ||||||
| //  310  OLED & RGB 32
 |  | ||||||
|   #define USB_MAX_POWER_CONSUMPTION 400 |  | ||||||
| #else |  | ||||||
|   // fix iPhone and iPad power adapter issue
 |  | ||||||
|   // iOS device need lessthan 100
 |  | ||||||
|   #define USB_MAX_POWER_CONSUMPTION 100 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| // Selection of RGBLIGHT MODE to use.
 |  | ||||||
| #if defined(LED_ANIMATIONS) |  | ||||||
|    //#define RGBLIGHT_EFFECT_BREATHING
 |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_MOOD |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_SWIRL |  | ||||||
|    //#define RGBLIGHT_EFFECT_SNAKE
 |  | ||||||
|    #define RGBLIGHT_EFFECT_KNIGHT |  | ||||||
|    //#define RGBLIGHT_EFFECT_CHRISTMAS
 |  | ||||||
|    #define RGBLIGHT_EFFECT_STATIC_GRADIENT |  | ||||||
|    //#define RGBLIGHT_EFFECT_RGB_TEST
 |  | ||||||
|    //#define RGBLIGHT_EFFECT_ALTERNATING
 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #define MK_3_SPEED |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_INTERVAL |  | ||||||
| #define MOUSEKEY_INTERVAL 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_TIME_TO_MAX 150 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MAX_SPEED |  | ||||||
| #define MOUSEKEY_MAX_SPEED 3 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MOVE_DELTA |  | ||||||
| #define MOUSEKEY_MOVE_DELTA 5 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_DELAY |  | ||||||
| #define MOUSEKEY_DELAY 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_MAX_SPEED |  | ||||||
| #define MOUSEKEY_WHEEL_MAX_SPEED 1 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_WHEEL_TIME_TO_MAX 0 |  | ||||||
|  | |||||||
| @ -2,11 +2,6 @@ | |||||||
| 
 | 
 | ||||||
| extern keymap_config_t keymap_config; | extern keymap_config_t keymap_config; | ||||||
| 
 | 
 | ||||||
| #ifdef RGBLIGHT_ENABLE |  | ||||||
| //Following line allows macro to read current RGB settings
 |  | ||||||
| extern rgblight_config_t rgblight_config; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| extern uint8_t is_master; | extern uint8_t is_master; | ||||||
| 
 | 
 | ||||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 | // Each layer gets a name for readability, which is then used in the keymap matrix below.
 | ||||||
| @ -24,13 +19,7 @@ enum layer_number { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum custom_keycodes { | enum custom_keycodes { | ||||||
|   FLOCK = SAFE_RANGE, |   RGB_RST = SAFE_RANGE | ||||||
|   MOUSE, |  | ||||||
|   BROWSER, |  | ||||||
|   LOWER, |  | ||||||
|   RAISE, |  | ||||||
|   ADJUST, |  | ||||||
|   RGBRST |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum tapdances{ | enum tapdances{ | ||||||
| @ -38,41 +27,23 @@ enum tapdances{ | |||||||
|   TD_ESQW, |   TD_ESQW, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Fillers to make layering more clear
 |  | ||||||
| 
 |  | ||||||
| #define KC_CAD LCA(KC_DEL) |  | ||||||
| #define KC_APSCR LALT(KC_PSCR) |  | ||||||
| 
 |  | ||||||
| #define KC_SNUBS S(KC_NUBS) |  | ||||||
| #define KC_SNUHS S(KC_NUHS) |  | ||||||
| 
 |  | ||||||
| #define KC_RTAB LCTL(KC_TAB) |  | ||||||
| #define KC_LTAB LCTL(LSFT(KC_TAB)) |  | ||||||
| #define KC_CTAB LCTL(KC_W) |  | ||||||
| #define KC_RETAB LCTL(LSFT(KC_T)) |  | ||||||
| 
 |  | ||||||
| #define KC_TGMO TG(_MOUSE) |  | ||||||
| #define KC_TGBR TG(_BROWSER) |  | ||||||
| #define KC_BSAD LT(_ADJUST, KC_BSPC) |  | ||||||
| 
 |  | ||||||
| qk_tap_dance_action_t tap_dance_actions[] = { | qk_tap_dance_action_t tap_dance_actions[] = { | ||||||
|   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), |   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), | ||||||
|   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), |   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| 
 |  | ||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|   [_QWERTY] = LAYOUT_with_nafuda( |   [_QWERTY] = LAYOUT_with_nafuda( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,                 KC_TGMO, |   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,              TG(_MOUSE), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|        KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, KC_BSLS,        KC_BSAD,   KC_UP, KC_TGBR, |        KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, KC_BSLS,LT(_ADJUST, KC_BSPC),KC_UP,TG(_BROWSER), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       KC_LSFT,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN, KC_QUOT,        KC_LEFT, KC_DOWN,KC_RIGHT, |       KC_LSFT,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN, KC_QUOT,        KC_LEFT, KC_DOWN,KC_RIGHT, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 | ||||||
|      KC_LCTRL,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,  KC_ENT, |      KC_LCTRL,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,  KC_ENT, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                 ADJUST,KC_LCTRL, KC_LALT, KC_LGUI,   LOWER,  KC_SPC,  KC_SPC,   RAISE, KC_LEFT, KC_DOWN,   KC_UP,KC_RIGHT |            MO(_ADJUST),KC_LCTRL, KC_LALT, KC_LGUI,MO(_LOWER),KC_SPC,KC_SPC,MO(_RAISE), KC_LEFT, KC_DOWN,   KC_UP,KC_RIGHT | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
| @ -92,7 +63,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| 
 | 
 | ||||||
|   [_MOUSE] = LAYOUT_with_nafuda( |   [_MOUSE] = LAYOUT_with_nafuda( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,                 KC_TGMO, |   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,              TG(_MOUSE), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,        KC_BTN1, KC_MS_U, KC_BTN2, |       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,        KC_BTN1, KC_MS_U, KC_BTN2, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
| @ -106,11 +77,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| 
 | 
 | ||||||
|   [_BROWSER] = LAYOUT_with_nafuda( |   [_BROWSER] = LAYOUT_with_nafuda( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,                 KC_CTAB, |       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,              LCTL(KC_W), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,       KC_RETAB, KC_WH_U, KC_TGBR, |       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,LCTL(LSFT(KC_T)),KC_WH_U,TG(_BROWSER), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,        KC_LTAB, KC_WH_D, KC_RTAB, |       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,LCTL(LSFT(KC_TAB)), KC_WH_D,LCTL(KC_TAB), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 | ||||||
|       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______, |       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
| @ -120,13 +91,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| 
 | 
 | ||||||
|   [_LOWER] = LAYOUT_with_nafuda( |   [_LOWER] = LAYOUT_with_nafuda( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,                 KC_TGMO, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,               TG(_MOUSE), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       KC_TILD, KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC,                   KC_CIRC, KC_AMPR,  KC_ASTR,KC_LPRN, KC_RPRN,  KC_DEL,        KC_BSAD,   KC_UP, KC_TGBR, |       KC_TILD, KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC,                   KC_CIRC, KC_AMPR,  KC_ASTR,KC_LPRN, KC_RPRN,  KC_DEL,LT(_ADJUST, KC_BSPC),   KC_UP,TG(_MOUSE), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       _______,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                     KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,        KC_LEFT, KC_DOWN,KC_RIGHT, |       _______,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                     KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,        KC_LEFT, KC_DOWN,KC_RIGHT, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 | ||||||
|       _______,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,                    KC_F12,KC_SNUHS,KC_SNUBS, _______, _______, _______, |       _______,   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 |                _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
| @ -134,9 +105,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| 
 | 
 | ||||||
|   [_RAISE] = LAYOUT_with_nafuda( |   [_RAISE] = LAYOUT_with_nafuda( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,                 KC_TGMO, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,               TG(_MOUSE), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       KC_TILD,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0,  KC_DEL,        KC_BSAD,   KC_UP, KC_TGBR, |       KC_TILD,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0,  KC_DEL,LT(_ADJUST, KC_BSPC),   KC_UP,TG(_MOUSE), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|        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_LEFT, KC_DOWN,KC_RIGHT, |        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_LEFT, KC_DOWN,KC_RIGHT, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 | ||||||
| @ -150,37 +121,22 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,                 RGB_VAD, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,                 RGB_VAD, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       _______,   RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR),    ADJUST, RGB_SAD, RGB_VAI, |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR),   _ADJUST, RGB_SAD, RGB_VAI, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR,        RGB_MOD, RGB_TOG, RGB_SAI, |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR,        RGB_MOD, RGB_TOG, RGB_SAI, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 | ||||||
|       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ |                _______, _______, _______, _______, _______,   RESET,   RESET, _______, _______, _______, _______, _______ | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ) |   ) | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) { |  | ||||||
| 
 |  | ||||||
|   pressed ? layer_on(layer1) : layer_off(layer1); |  | ||||||
|   IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int RGB_current_mode; | int RGB_current_mode; | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||||||
| 
 | 
 | ||||||
|   bool result = false; |   bool result = false; | ||||||
|   switch (keycode) { |   switch (keycode) { | ||||||
|     case LOWER: |  | ||||||
|       update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST); |  | ||||||
|       break; |  | ||||||
|     case RAISE: |  | ||||||
|       update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST); |  | ||||||
|         break; |  | ||||||
|     case ADJUST: |  | ||||||
|       update_change_layer(record->event.pressed, _ADJUST, _RAISE, _LOWER); |  | ||||||
|         break; |  | ||||||
|     #ifdef RGBLIGHT_ENABLE |     #ifdef RGBLIGHT_ENABLE | ||||||
|       case RGB_MOD: |       case RGB_MOD: | ||||||
|           if (record->event.pressed) { |           if (record->event.pressed) { | ||||||
| @ -189,7 +145,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
|             RGB_current_mode = rgblight_config.mode; |             RGB_current_mode = rgblight_config.mode; | ||||||
|           } |           } | ||||||
|         break; |         break; | ||||||
|       case RGBRST: |       case RGB_RST: | ||||||
|           if (record->event.pressed) { |           if (record->event.pressed) { | ||||||
|             eeconfig_update_rgblight_default(); |             eeconfig_update_rgblight_default(); | ||||||
|             rgblight_enable(); |             rgblight_enable(); | ||||||
| @ -206,7 +162,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void matrix_init_user(void) { | void matrix_init_user(void) { | ||||||
|   #ifdef RGBLIGHT_ENABLE | 
 | ||||||
|     RGB_current_mode = rgblight_config.mode; |  | ||||||
|   #endif |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -2,30 +2,38 @@ | |||||||
| 
 | 
 | ||||||
| Add Nafuda maps to the default layout. | Add Nafuda maps to the default layout. | ||||||
| 
 | 
 | ||||||
| ## Default | Default | ||||||
| |  1   |  2   |  3   | |   //|--------------------| | ||||||
| |:----:|:----:|:----:| |              Mouse,        | ||||||
| |      | MOUSE|      | |   //|------+------+------| | ||||||
| | BS+Ad|    UP|Browser| |     BS + Ad,    UP,Browser, | ||||||
| |  LEFT|  DOWN| RIGHT| |   //|------+------+------| | ||||||
|  |        LEFT,  DOWN, RIGHT  | ||||||
|  |   //|--------------------| | ||||||
| 
 | 
 | ||||||
| ## Mouse | Mouse | ||||||
| |  1   |  2   |  3   | |   //|--------------------| | ||||||
| |:----:|:----:|:----:| |            Default,        | ||||||
| |      |Default|     | |   //|------+------+------| | ||||||
| |  BTN1|  MS_U|  BTN2| |        BTN1,  MS_U,  BTN2, | ||||||
| |  MS_L|  MS_D|  MS_R| |   //|------+------+------| | ||||||
|  |        MS_L,  MS_D,  MS_R  | ||||||
|  |   //|--------------------| | ||||||
| 
 | 
 | ||||||
| ## Browser | Browser | ||||||
| |  1   |  2   |  3   | |   //|--------------------| | ||||||
| |:----:|:----:|:----:| |           CloseTAB,        | ||||||
| |      |CloseTAB|    | |   //|------+------+------| | ||||||
| |ReOpenTAB|WH_U|Default| |   ReOpenTAB,  WH_U,Default, | ||||||
| |  LTAB|  WH_D|  RTAB| |   //|------+------+------| | ||||||
|  |        LTAB,  WH_D,  RTAB  | ||||||
|  |   //|--------------------| | ||||||
| 
 | 
 | ||||||
| ## Adjust | Adjust | ||||||
| |  1   |  2   |  3   | |   //|------------------------| | ||||||
| |:----:|:----:|:----:| |                LED VAD,        | ||||||
| |      |LED_VAD|      | |   //|------+----------+------| | ||||||
| |Default|LED_HUD|LED_VAI| |     Default,   LED HUD,LED VAI, | ||||||
| |LED_MOD|LED_ON/Off|LED_HUI| |   //|------+----------+------| | ||||||
|  |     LED MOD,LED ON/Off,LED HUI  | ||||||
|  |   //|------------------------| | ||||||
|  | |||||||
| @ -1,10 +0,0 @@ | |||||||
| RGBLIGHT_ENABLE = yes |  | ||||||
| 
 |  | ||||||
| # If your custom naked60 pcb, you can rewrite to yes.
 |  | ||||||
| LED_ANIMATIONS = yes        # LED animations |  | ||||||
| 
 |  | ||||||
| ifeq ($(strip $(LED_ANIMATIONS)), yes) |  | ||||||
|     # OPT_DEFS += -DRGBLIGHT_ANIMATIONS |  | ||||||
|     OPT_DEFS += -DLED_ANIMATIONS |  | ||||||
| endif |  | ||||||
| 
 |  | ||||||
| @ -21,70 +21,7 @@ | |||||||
| #define MASTER_LEFT | #define MASTER_LEFT | ||||||
| // #define MASTER_RIGHT
 | // #define MASTER_RIGHT
 | ||||||
| // #define EE_HANDS
 | // #define EE_HANDS
 | ||||||
| 
 |  | ||||||
| #define USE_SERIAL_PD2 | #define USE_SERIAL_PD2 | ||||||
| 
 | 
 | ||||||
| #define TAPPING_FORCE_HOLD | #define TAPPING_FORCE_HOLD | ||||||
| #define TAPPING_TERM 180 | #define TAPPING_TERM 180 | ||||||
| 
 |  | ||||||
| #define RGBLED_NUM 21 |  | ||||||
| 
 |  | ||||||
| #ifndef IOS_DEVICE_ENABLE |  | ||||||
|   #define RGBLIGHT_LIMIT_VAL 180 |  | ||||||
|   #define RGBLIGHT_VAL_STEP 17 |  | ||||||
| #else |  | ||||||
|   #define RGBLIGHT_LIMIT_VAL 50 |  | ||||||
|   #define RGBLIGHT_VAL_STEP 4 |  | ||||||
| #endif |  | ||||||
| #define RGBLIGHT_HUE_STEP 10 |  | ||||||
| #define RGBLIGHT_SAT_STEP 17 |  | ||||||
| 
 |  | ||||||
| #if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) |  | ||||||
| // USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
 |  | ||||||
| //  120  RGBoff, OLEDoff
 |  | ||||||
| //  120  OLED
 |  | ||||||
| //  330  RGB 6
 |  | ||||||
| //  300  RGB 32
 |  | ||||||
| //  310  OLED & RGB 32
 |  | ||||||
|   #define USB_MAX_POWER_CONSUMPTION 400 |  | ||||||
| #else |  | ||||||
|   // fix iPhone and iPad power adapter issue
 |  | ||||||
|   // iOS device need lessthan 100
 |  | ||||||
|   #define USB_MAX_POWER_CONSUMPTION 100 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| // Selection of RGBLIGHT MODE to use.
 |  | ||||||
| #if defined(LED_ANIMATIONS) |  | ||||||
|    //#define RGBLIGHT_EFFECT_BREATHING
 |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_MOOD |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_SWIRL |  | ||||||
|    //#define RGBLIGHT_EFFECT_SNAKE
 |  | ||||||
|    #define RGBLIGHT_EFFECT_KNIGHT |  | ||||||
|    //#define RGBLIGHT_EFFECT_CHRISTMAS
 |  | ||||||
|    #define RGBLIGHT_EFFECT_STATIC_GRADIENT |  | ||||||
|    //#define RGBLIGHT_EFFECT_RGB_TEST
 |  | ||||||
|    //#define RGBLIGHT_EFFECT_ALTERNATING
 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #define MK_3_SPEED |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_INTERVAL |  | ||||||
| #define MOUSEKEY_INTERVAL 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_TIME_TO_MAX 150 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MAX_SPEED |  | ||||||
| #define MOUSEKEY_MAX_SPEED 3 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MOVE_DELTA |  | ||||||
| #define MOUSEKEY_MOVE_DELTA 5 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_DELAY |  | ||||||
| #define MOUSEKEY_DELAY 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_MAX_SPEED |  | ||||||
| #define MOUSEKEY_WHEEL_MAX_SPEED 1 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_WHEEL_TIME_TO_MAX 0 |  | ||||||
|  | |||||||
| @ -22,15 +22,10 @@ enum layer_number { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum custom_keycodes { | enum custom_keycodes { | ||||||
|   FLOCK = SAFE_RANGE, |   RGB_RST = SAFE_RANGE, | ||||||
|   LOWER, |  | ||||||
|   RAISE, |  | ||||||
|   ADJUST, |  | ||||||
|   KANJI, |  | ||||||
|   RGBRST, |  | ||||||
|   SEND_SUM, |   SEND_SUM, | ||||||
|   SEND_AVERAGE, |   SEND_AVE, | ||||||
|   SEND_COUNTIF, |   SEND_CIF, | ||||||
|   SEND_MAX, |   SEND_MAX, | ||||||
|   SEND_MIN |   SEND_MIN | ||||||
| }; | }; | ||||||
| @ -40,20 +35,6 @@ enum tapdances{ | |||||||
|   TD_ESQW, |   TD_ESQW, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Fillers to make layering more clear
 |  | ||||||
| #define KC_SNUBS S(KC_NUBS) |  | ||||||
| #define KC_SNUHS S(KC_NUHS) |  | ||||||
| 
 |  | ||||||
| #define KC_SSUM  SEND_SUM |  | ||||||
| #define KC_SAVE  SEND_AVERAGE |  | ||||||
| #define KC_SCOU  SEND_COUNTIF |  | ||||||
| #define KC_SMAX  SEND_MAX |  | ||||||
| #define KC_SMIN  SEND_MIN |  | ||||||
| 
 |  | ||||||
| #define KC_RADO LT(_RAISE, KC_PDOT) |  | ||||||
| #define KC_LOP0 LT(_LOWER, KC_P0) |  | ||||||
| #define KC_ADNL LT(_ADJUST, KC_NLCK) |  | ||||||
| 
 |  | ||||||
| qk_tap_dance_action_t tap_dance_actions[] = { | qk_tap_dance_action_t tap_dance_actions[] = { | ||||||
|   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), |   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), | ||||||
|   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), |   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), | ||||||
| @ -62,15 +43,15 @@ qk_tap_dance_action_t tap_dance_actions[] = { | |||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|   [_QWERTY] = LAYOUT_with_setta21( |   [_QWERTY] = LAYOUT_with_setta21( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 | ||||||
|   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,       KC_LOP0,  KC_P1,  KC_P4,  KC_P7,KC_ADNL, KC_ESC, |   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,LT(_LOWER, KC_P0),KC_P1, KC_P4,  KC_P7,KC_NLCK, KC_ESC, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|        KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, KC_BSLS,                 KC_P2,  KC_P5,  KC_P8,KC_PSLS,  KC_F2, |        KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, KC_BSLS,                 KC_P2,  KC_P5,  KC_P8,KC_PSLS,  KC_F2, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|       KC_LSFT,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN, KC_QUOT,       KC_RADO,  KC_P3,  KC_P6,  KC_P9,KC_PAST, KC_EQL, |       KC_LSFT,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L, KC_SCLN, KC_QUOT,LT(_RAISE, KC_PDOT),KC_P3,KC_P6, KC_P9,KC_PAST, KC_EQL, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 | ||||||
|      KC_LCTRL,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,  KC_ENT,               KC_PENT,        KC_PPLS,KC_PMNS, KC_DEL, |      KC_LCTRL,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, KC_COMM,  KC_DOT, KC_SLSH,  KC_ENT,               KC_PENT,        KC_PPLS,KC_PMNS, KC_DEL, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 | ||||||
|                 ADJUST,KC_LCTRL, KC_LALT, KC_LGUI,   LOWER,  KC_SPC,  KC_SPC,   RAISE, KC_LEFT, KC_DOWN,   KC_UP,KC_RIGHT |            MO(_ADJUST),KC_LCTRL, KC_LALT, KC_LGUI,MO(_LOWER), KC_SPC, KC_SPC,MO(_RAISE),KC_LEFT,KC_DOWN,   KC_UP,KC_RIGHT | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
| @ -90,78 +71,63 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| 
 | 
 | ||||||
|   [_LOWER] = LAYOUT_with_setta21( |   [_LOWER] = LAYOUT_with_setta21( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,         LOWER,XXXXXXX,KC_LEFT,XXXXXXX,XXXXXXX, KC_ESC, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,    MO(_LOWER),XXXXXXX,KC_LEFT,XXXXXXX,XXXXXXX, KC_ESC, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|       KC_TILD, KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC,                   KC_CIRC, KC_AMPR,  KC_ASTR,KC_LPRN, KC_RPRN,  KC_DEL,               KC_DOWN,KC_DOWN,  KC_UP,KC_PSLS,  KC_F2, |       KC_TILD, KC_EXLM,   KC_AT, KC_HASH,  KC_DLR, KC_PERC,                   KC_CIRC, KC_AMPR,  KC_ASTR,KC_LPRN, KC_RPRN,  KC_DEL,               KC_DOWN,KC_DOWN,  KC_UP,KC_PSLS,  KC_F2, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|       _______,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                     KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,         RAISE,XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, KC_EQL, |       _______,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                     KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,    MO(_RAISE),XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST,KC_EQL, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 | ||||||
|       _______,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,                    KC_F12,KC_SNUHS,KC_SNUBS, _______, _______, _______,               KC_PENT,        KC_PPLS,KC_PMNS, KC_DEL, |       _______,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,                    KC_F12,S(KC_NUHS),S(KC_NUBS),_______,_______,_______,              KC_PENT,        KC_PPLS,KC_PMNS, KC_DEL, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 | ||||||
|                _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY |                _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
|   [_RAISE] = LAYOUT_with_setta21( |   [_RAISE] = LAYOUT_with_setta21( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |------------------------------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,         LOWER, KC_F11,  KC_F4,  KC_F7,KC_SMIN, KC_ESC, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,       _______, KC_F11,  KC_F4,  KC_F7,SEND_MIN, KC_ESC, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+--------+-------|
 | ||||||
|       KC_TILD,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0,  KC_DEL,                KC_F12,  KC_F5,  KC_F8,KC_SMAX,  KC_F2, |       KC_TILD,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0,  KC_DEL,                KC_F12,  KC_F5,  KC_F8,SEND_MAX,  KC_F2, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+--------+-------|
 | ||||||
|        KC_DEL,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                     KC_F6, KC_MINS,  KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,         RAISE,  KC_F3,  KC_F6,  KC_F9,KC_SCOU, KC_EQL, |        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_F3,  KC_F6,  KC_F9,SEND_CIF, KC_EQL, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+--------+-------|
 | ||||||
|       _______,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,                    KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,               KC_RPRN,        KC_SSUM,KC_SAVE, KC_DEL, |       _______,   KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,                    KC_F12, KC_NUHS, KC_NUBS, _______, _______, _______,               KC_RPRN,       SEND_SUM,SEND_AVE, KC_DEL, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |------------------------------------------------|
 | ||||||
|                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  |                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
|   [_ADJUST] = LAYOUT_with_setta21( /* Base */ |   [_ADJUST] = LAYOUT_with_setta21( /* Base */ | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,         LOWER,RGB_VAD,RGB_HUD,RGB_SAD, ADJUST,RGB_TOG, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,       _______,RGB_VAD,RGB_HUD,RGB_SAD,XXXXXXX,_______, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|       _______,   RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR),          RGB_VAI,RGB_HUI,RGB_SAI,XXXXXXX,_______, |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR),          RGB_VAI,RGB_HUI,RGB_SAI,XXXXXXX,_______, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR,         RAISE,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______, |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR,       _______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 | ||||||
|       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL),            RGB_MOD,        _______,_______,_______, |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL),            RGB_MOD,        RGB_TOG,_______,_______, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 | ||||||
|                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ |                _______, _______, _______, _______, _______,   RESET,   RESET, _______, _______, _______, _______, _______ | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ) |   ) | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) { |  | ||||||
| 
 |  | ||||||
|   pressed ? layer_on(layer1) : layer_off(layer1); |  | ||||||
|   IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| int RGB_current_mode; | int RGB_current_mode; | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||||||
| 
 | 
 | ||||||
|   bool result = false; |   bool result = false; | ||||||
|   switch (keycode) { |   switch (keycode) { | ||||||
|     case LOWER: |  | ||||||
|       update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST); |  | ||||||
|       break; |  | ||||||
|     case RAISE: |  | ||||||
|       update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST); |  | ||||||
|         break; |  | ||||||
|     case ADJUST: |  | ||||||
|       update_change_layer(record->event.pressed, _ADJUST, _RAISE, _LOWER); |  | ||||||
|         break; |  | ||||||
|     case SEND_SUM: |     case SEND_SUM: | ||||||
|       if (record->event.pressed) { |       if (record->event.pressed) { | ||||||
|         SEND_STRING("=SUM("); |         SEND_STRING("=SUM("); | ||||||
|       } |       } | ||||||
|       break; |       break; | ||||||
|     case SEND_AVERAGE: |     case SEND_AVE: | ||||||
|       if (record->event.pressed) { |       if (record->event.pressed) { | ||||||
|         SEND_STRING("=AVERAGE("); |         SEND_STRING("=AVERAGE("); | ||||||
|       } |       } | ||||||
|       break; |       break; | ||||||
|     case SEND_COUNTIF: |     case SEND_CIF: | ||||||
|       if (record->event.pressed) { |       if (record->event.pressed) { | ||||||
|         SEND_STRING("=COUNTIF("); |         SEND_STRING("=COUNTIF("); | ||||||
|       } |       } | ||||||
| @ -184,7 +150,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
|             RGB_current_mode = rgblight_config.mode; |             RGB_current_mode = rgblight_config.mode; | ||||||
|           } |           } | ||||||
|         break; |         break; | ||||||
|       case RGBRST: |       case RGB_RST: | ||||||
|           if (record->event.pressed) { |           if (record->event.pressed) { | ||||||
|             eeconfig_update_rgblight_default(); |             eeconfig_update_rgblight_default(); | ||||||
|             rgblight_enable(); |             rgblight_enable(); | ||||||
| @ -201,7 +167,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void matrix_init_user(void) { | void matrix_init_user(void) { | ||||||
|   #ifdef RGBLIGHT_ENABLE | 
 | ||||||
|     RGB_current_mode = rgblight_config.mode; |  | ||||||
|   #endif |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,9 +0,0 @@ | |||||||
| RGBLIGHT_ENABLE = yes |  | ||||||
| 
 |  | ||||||
| # If your custom naked60 pcb, you can rewrite to yes.
 |  | ||||||
| LED_ANIMATIONS = yes        # LED animations |  | ||||||
| 
 |  | ||||||
| ifeq ($(strip $(LED_ANIMATIONS)), yes) |  | ||||||
|     # OPT_DEFS += -DRGBLIGHT_ANIMATIONS |  | ||||||
|     OPT_DEFS += -DLED_ANIMATIONS |  | ||||||
| endif |  | ||||||
| @ -18,34 +18,5 @@ | |||||||
| 
 | 
 | ||||||
| /* Select hand configuration */ | /* Select hand configuration */ | ||||||
| 
 | 
 | ||||||
| #define MASTER_LEFT |  | ||||||
| // #define MASTER_RIGHT
 |  | ||||||
| // #define EE_HANDS
 |  | ||||||
| 
 |  | ||||||
| #define USE_SERIAL_PD2 |  | ||||||
| 
 |  | ||||||
| #define TAPPING_FORCE_HOLD | #define TAPPING_FORCE_HOLD | ||||||
| #define TAPPING_TERM 180 | #define TAPPING_TERM 180 | ||||||
| 
 |  | ||||||
| #define MK_3_SPEED |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_INTERVAL |  | ||||||
| #define MOUSEKEY_INTERVAL 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_TIME_TO_MAX 150 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MAX_SPEED |  | ||||||
| #define MOUSEKEY_MAX_SPEED 3 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MOVE_DELTA |  | ||||||
| #define MOUSEKEY_MOVE_DELTA 5 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_DELAY |  | ||||||
| #define MOUSEKEY_DELAY 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_MAX_SPEED |  | ||||||
| #define MOUSEKEY_WHEEL_MAX_SPEED 1 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_WHEEL_TIME_TO_MAX 0 |  | ||||||
|  | |||||||
| @ -3,11 +3,6 @@ | |||||||
| 
 | 
 | ||||||
| extern keymap_config_t keymap_config; | extern keymap_config_t keymap_config; | ||||||
| 
 | 
 | ||||||
| #ifdef RGBLIGHT_ENABLE |  | ||||||
| //Following line allows macro to read current RGB settings
 |  | ||||||
| extern rgblight_config_t rgblight_config; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| extern uint8_t is_master; | extern uint8_t is_master; | ||||||
| 
 | 
 | ||||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 | // Each layer gets a name for readability, which is then used in the keymap matrix below.
 | ||||||
| @ -22,25 +17,11 @@ enum layer_number { | |||||||
|   _ADJUST, |   _ADJUST, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum custom_keycodes { |  | ||||||
|   FLOCK = SAFE_RANGE, |  | ||||||
|   LOWER, |  | ||||||
|   RAISE, |  | ||||||
|   ADJUST, |  | ||||||
|   RGBRST |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| enum tapdances{ | enum tapdances{ | ||||||
|   TD_ESFL = 0, |   TD_ESFL = 0, | ||||||
|   TD_ESQW, |   TD_ESQW, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Fillers to make layering more clear
 |  | ||||||
| #define KC_CT11 LCTL_T(KC_F11) |  | ||||||
| #define KC_SF12 SFT_T(KC_F12) |  | ||||||
| #define KC_LOEN LT(_LOWER, KC_ENT) |  | ||||||
| #define KC_RASP LT(_RAISE, KC_SPC) |  | ||||||
| 
 |  | ||||||
| qk_tap_dance_action_t tap_dance_actions[] = { | qk_tap_dance_action_t tap_dance_actions[] = { | ||||||
|   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), |   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), | ||||||
|   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), |   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), | ||||||
| @ -57,7 +38,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|       KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, JP_COMM,  JP_DOT, JP_SLSH, JP_BSLS, |       KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, JP_COMM,  JP_DOT, JP_SLSH, JP_BSLS, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, KC_LOEN, KC_BSPC,  KC_DEL, KC_RASP, KC_HENK, KC_LALT, KC_DOWN,   KC_UP |       KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, LT(_LOWER,KC_ENT),KC_BSPC,  KC_DEL,LT(_RAISE,KC_SPC), KC_HENK, KC_LALT, KC_DOWN,   KC_UP | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
| @ -87,7 +68,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|       JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE,                      KC_0,    KC_1,    KC_2,    KC_3, JP_PLUS,  KC_ENT, |       JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE,                      KC_0,    KC_1,    KC_2,    KC_3, JP_PLUS,  KC_ENT, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                _______, _______, _______, KC_ZKHK,   LOWER, _______, _______,   RAISE,    KC_0,  JP_DOT, _______, _______ |                _______, _______, _______, KC_ZKHK,MO(_LOWER),_______,_______,MO(_RAISE),JP_DOT, _______, _______, _______ | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
| @ -98,9 +79,9 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|        KC_ESC,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6, XXXXXXX,   KC_UP, XXXXXXX, KC_PGUP,  KC_DEL, |        KC_ESC,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6, XXXXXXX,   KC_UP, XXXXXXX, KC_PGUP,  KC_DEL, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|       KC_CT11,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                   XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT,  KC_ENT, | LCTL_T(KC_F11),  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                   XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT,  KC_ENT, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|       KC_SF12,   KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, | SFT_T(KC_F12),   KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ |                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
| @ -110,38 +91,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|       _______,   RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|      KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, |      KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|
 | ||||||
|       KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), |       KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ |                _______, _______, _______, _______, _______,   RESET,   RESET, _______, _______, _______, _______, _______ | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ) |   ) | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) { | uint32_t layer_state_set_user(uint32_t state) { | ||||||
| 
 |   return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); | ||||||
|   pressed ? layer_on(layer1) : layer_off(layer1); |  | ||||||
|   IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int RGB_current_mode; | void matrix_init_user(void) { | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { |  | ||||||
| 
 | 
 | ||||||
|   bool result = false; |  | ||||||
|   switch (keycode) { |  | ||||||
|     case LOWER: |  | ||||||
|       update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST); |  | ||||||
|       break; |  | ||||||
|     case RAISE: |  | ||||||
|       update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST); |  | ||||||
|         break; |  | ||||||
|     default: |  | ||||||
|       result = true; |  | ||||||
|       break; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   return result; |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -6,19 +6,18 @@ | |||||||
| | ESC(FLock) |  1|  2|     3|     4|     5|      |      |     6|     7|     8|     9|     0|  BSPC| | | ESC(FLock) |  1|  2|     3|     4|     5|      |      |     6|     7|     8|     9|     0|  BSPC| | ||||||
| |  TAB |     Q|     W|     E|     R|     T|      |      |     Y|     U|     I|     O|     P|     [| | |  TAB |     Q|     W|     E|     R|     T|      |      |     Y|     U|     I|     O|     P|     [| | ||||||
| |LCTRL |     A|     S|     D|     F|     G|      |      |     H|     J|     K|     L|     -|     ]| | |LCTRL |     A|     S|     D|     F|     G|      |      |     H|     J|     K|     L|     -|     ]| | ||||||
| | LSFT |     Z|     X|     C|     V|     B|      |      |     N|     M|     ,|     .|     /|    \ | | | LSFT |     Z|     X|     C|     V|     B|      |      |     N|     M|     ,|     .|     /|     \| | ||||||
| |      |  LEFT| RIGHT|  LGUI|  MHEN|Low+Ent| BSPC|   DEL|Rai+SPC| HENK|  LALT|    UP|  DOWN|      | | |      |  LEFT| RIGHT|  LGUI|  MHEN|LOWER, ENT|BSPC|DEL|RAISE,SPC|HENK|  LALT|  DOWN|    UP|      | | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ## FLock | ## FLock | ||||||
| |  1   |  2   |  3   |  4   |  5   |  6   |  7   |  8   |  9   |  10  |  11  |  12  |  13  |  14  | | |  1   |  2   |  3   |  4   |  5   |  6   |  7   |  8   |  9   |  10  |  11  |  12  |  13  |  14  | | ||||||
| |:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| | |:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| | ||||||
| |  ESC(FLock)|F2|  F3|    F4|    F5|    F6|      |      |    F7|    F8|    F9|   F10|   F11| _____| | |  ESC(FLock)| F2| F3|    F4|    F5|    F6|      |      |    F7|    F8|    F9|   F10|   F11|  BSPC| | ||||||
| |  TAB |     Q|     W|     E|     R|     T|      |      |     Y|     U|     I|     O|     P|     [| | |  TAB |     Q|     W|     E|     R|     T|      |      |     Y|     U|     I|     O|     P|     [| | ||||||
| |LCTRL |     A|     S|     D|     F|     G|      |      |     H|     J|     K|     L|     -|     ]| | |LCTRL |     A|     S|     D|     F|     G|      |      |     H|     J|     K|     L|     -|     ]| | ||||||
| | LSFT |     Z|     X|     C|     V|     B|      |      |     N|     M|     ,|     .|     /|    \ | | | LSFT |     Z|     X|     C|     V|     B|      |      |     N|     M|     ,|     .|     /|     \| | ||||||
| |      |  LEFT| RIGHT|  LGUI|  MHEN|Low+Ent| BSPC|   DEL|Rai+SPC| HENK|  LALT|    UP|  DOWN|      | | |      |  LEFT| RIGHT|  LGUI|  MHEN|LOWER, ENT|BSPC|DEL|RAISE,SPC|HENK|  LALT|  DOWN|    UP|      | | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ## Lower | ## Lower | ||||||
| @ -28,26 +27,25 @@ | |||||||
| |     :|     !|     ?|     [|     ]|     ~|      |      |     6|     7|     8|     9|     *|     /| | |     :|     !|     ?|     [|     ]|     ~|      |      |     6|     7|     8|     9|     *|     /| | ||||||
| |     '|     #|     "|     (|     )|     @|      |      | XXXXX|     4|     5|     6|     -|     =| | |     '|     #|     "|     (|     )|     @|      |      | XXXXX|     4|     5|     6|     -|     =| | ||||||
| |     ^|     %|     &|     ;|     :|  PIPE|      |      |     0|     1|     2|     3|     +|   ENT| | |     ^|     %|     &|     ;|     :|  PIPE|      |      |     0|     1|     2|     3|     +|   ENT| | ||||||
| |      |  LEFT| RIGHT|  LGUI|  ZKHK| LOWER|  BSPC|   DEL| RAISE|     0|     .|    UP|  DOWN|      | | |      |  LEFT| RIGHT|  LGUI|  ZKHK| LOWER|  BSPC|   DEL| RAISE|  HENK|  LALT|  DOWN|    UP|      | | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ## Raise | ## Raise | ||||||
| |  1   |  2   |  3   |  4   |  5   |  6   |  7   |  8   |  9   |  10  |  11  |  12  |  13  |  14  | | |  1   |  2   |  3   |  4   |  5   |  6   |  7   |  8   |  9   |  10  |  11  |  12  |  13  |  14  | | ||||||
| |:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| | |:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| | ||||||
| |   ESC|    F2|    F3|    F4|    F5|    F6|      |      |    F7|    F8|    F9|   F10|   F11|   F12| | |   ESC|    F2|    F3|    F4|    F5|    F6|      |      |    F7|    F8|    F9|   F10|   F11|   F12| | ||||||
| |   ESC|     1|     2|     3|     4|     5|      |      | XXXXX| XXXXX|    UP| XXXXX|  PGUP|  BSPC| | |   ESC|     1|     2|     3|     4|     5|      |      |     6| XXXXX|    UP| XXXXX|  PGUP|   DEL| | ||||||
| |CtrlF11|   F1|    F2|    F3|    F4|    F5|      |      | XXXXX|  LEFT|  DOWN| RIGHT|  LSFT|   ENT| | |F11,LCTRL| F1|    F2|    F3|    F4|    F5|      |      | XXXXX|  LEFT|  DOWN| RIGHT|  LSFT|   ENT| | ||||||
| |ShiftF12|  F6|    F7|    F8|    F9|   F10|      |      | XXXXX| XXXXX| XXXXX| XXXXX|  PGDN| XXXXX| | |F12,LSFT|  F6|    F7|    F8|    F9|   F10|      |      | XXXXX| XXXXX| XXXXX| XXXXX|  PGDN| XXXXX| | ||||||
| |      |  LEFT| RIGHT|  LGUI|  ZKHK| LOWER|  BSPC|   DEL| RAISE|  HENK|  LALT|    UP|  DOWN|      | | |      |  LEFT| RIGHT|  LGUI|  MHEN| LOWER|  BSPC|   DEL| RAISE|  HENK|  LALT|  DOWN|    UP|      | | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ## Adjust | ## Adjust | ||||||
| |  1   |  2   |  3   |  4   |  5   |  6   |  7   |  8   |  9   |  10  |  11  |  12  |  13  |  14  | | |  1   |  2   |  3   |  4   |  5   |  6   |  7   |  8   |   9  |  10  |  11  |  12  |  13   |  14  | | ||||||
| |:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:| | |:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:----:|:-----:|:----:| | ||||||
| |   ESC|    F2|    F3|    F4|    F5|      |      |    F6|    F7|    F8|    F9|   F10|   F11|   F12| | |   ESC|    F2|    F3|    F4|    F5|    F6|      |      |    F7|    F8|    F9|   F10|    F11|   F12| | ||||||
| |   ESC|   RST| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX|  BTN1|  MS_U|  BTN2| XXXXX|Alt+PSCR| | |   ESC| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX|  BTN1|  MS_U|  BTN2| XXXXX|Alt+PSCR| | ||||||
| | LCTRL| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX|  MS_L|  MS_D|  MS_R| XXXXX|  PSCR| | | LCTRL| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX|  MS_L|  MS_D|  MS_R| XXXXX|  PSCR| | ||||||
| |  LSFT| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| C+A+D| | |  LSFT| XXXXX| XXXXX| XXXXX| XXXXX| XXXXX|      |      | XXXXX| XXXXX| XXXXX| XXXXX| XXXXX| C+A+D| | ||||||
| |      |  LEFT| RIGHT|  LGUI|  ZKHK| LOWER|  BSPC|   DEL| RAISE|  HENK|  LALT|    UP|  DOWN|      | | |      |ADJUST| LCTRL|  LALT|  LGUI| LOWER| RESET| RESET| RAISE|  HENK|  LALT|  DOWN|    UP|      | | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -26,65 +26,3 @@ | |||||||
| 
 | 
 | ||||||
| #define TAPPING_FORCE_HOLD | #define TAPPING_FORCE_HOLD | ||||||
| #define TAPPING_TERM 180 | #define TAPPING_TERM 180 | ||||||
| 
 |  | ||||||
| #define RGBLED_NUM 7 |  | ||||||
| 
 |  | ||||||
| #ifndef IOS_DEVICE_ENABLE |  | ||||||
|   #define RGBLIGHT_LIMIT_VAL 180 |  | ||||||
|   #define RGBLIGHT_VAL_STEP 17 |  | ||||||
| #else |  | ||||||
|   #define RGBLIGHT_LIMIT_VAL 50 |  | ||||||
|   #define RGBLIGHT_VAL_STEP 4 |  | ||||||
| #endif |  | ||||||
| #define RGBLIGHT_HUE_STEP 10 |  | ||||||
| #define RGBLIGHT_SAT_STEP 17 |  | ||||||
| 
 |  | ||||||
| #if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) |  | ||||||
| // USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
 |  | ||||||
| //  120  RGBoff, OLEDoff
 |  | ||||||
| //  120  OLED
 |  | ||||||
| //  330  RGB 6
 |  | ||||||
| //  300  RGB 32
 |  | ||||||
| //  310  OLED & RGB 32
 |  | ||||||
|   #define USB_MAX_POWER_CONSUMPTION 400 |  | ||||||
| #else |  | ||||||
|   // fix iPhone and iPad power adapter issue
 |  | ||||||
|   // iOS device need lessthan 100
 |  | ||||||
|   #define USB_MAX_POWER_CONSUMPTION 100 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| // Selection of RGBLIGHT MODE to use.
 |  | ||||||
| #if defined(LED_ANIMATIONS) |  | ||||||
|    //#define RGBLIGHT_EFFECT_BREATHING
 |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_MOOD |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_SWIRL |  | ||||||
|    //#define RGBLIGHT_EFFECT_SNAKE
 |  | ||||||
|    #define RGBLIGHT_EFFECT_KNIGHT |  | ||||||
|    //#define RGBLIGHT_EFFECT_CHRISTMAS
 |  | ||||||
|    #define RGBLIGHT_EFFECT_STATIC_GRADIENT |  | ||||||
|    //#define RGBLIGHT_EFFECT_RGB_TEST
 |  | ||||||
|    //#define RGBLIGHT_EFFECT_ALTERNATING
 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #define MK_3_SPEED |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_INTERVAL |  | ||||||
| #define MOUSEKEY_INTERVAL 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_TIME_TO_MAX 150 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MAX_SPEED |  | ||||||
| #define MOUSEKEY_MAX_SPEED 3 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MOVE_DELTA |  | ||||||
| #define MOUSEKEY_MOVE_DELTA 5 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_DELAY |  | ||||||
| #define MOUSEKEY_DELAY 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_MAX_SPEED |  | ||||||
| #define MOUSEKEY_WHEEL_MAX_SPEED 1 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_WHEEL_TIME_TO_MAX 0 |  | ||||||
|  | |||||||
| @ -25,13 +25,7 @@ enum layer_number { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum custom_keycodes { | enum custom_keycodes { | ||||||
|   FLOCK = SAFE_RANGE, |   RGB_RST = SAFE_RANGE | ||||||
|   MOUSE, |  | ||||||
|   BROWSER, |  | ||||||
|   LOWER, |  | ||||||
|   RAISE, |  | ||||||
|   ADJUST, |  | ||||||
|   RGBRST |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum tapdances{ | enum tapdances{ | ||||||
| @ -39,21 +33,6 @@ enum tapdances{ | |||||||
|   TD_ESQW, |   TD_ESQW, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Fillers to make layering more clear
 |  | ||||||
| #define KC_CT11 LCTL_T(KC_F11) |  | ||||||
| #define KC_SF12 SFT_T(KC_F12) |  | ||||||
| #define KC_LOEN LT(_LOWER, KC_ENT) |  | ||||||
| #define KC_RASP LT(_RAISE, KC_SPC) |  | ||||||
| 
 |  | ||||||
| #define KC_RTAB LCTL(KC_TAB) |  | ||||||
| #define KC_LTAB LCTL(LSFT(KC_TAB)) |  | ||||||
| #define KC_CTAB LCTL(KC_W) |  | ||||||
| #define KC_RETAB LCTL(LSFT(KC_T)) |  | ||||||
| 
 |  | ||||||
| #define KC_TGMO TG(_MOUSE) |  | ||||||
| #define KC_TGBR TG(_BROWSER) |  | ||||||
| #define KC_BSAD LT(_ADJUST, KC_BSPC) |  | ||||||
| 
 |  | ||||||
| qk_tap_dance_action_t tap_dance_actions[] = { | qk_tap_dance_action_t tap_dance_actions[] = { | ||||||
|   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), |   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), | ||||||
|   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), |   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), | ||||||
| @ -62,15 +41,15 @@ qk_tap_dance_action_t tap_dance_actions[] = { | |||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|   [_QWERTY] = LAYOUT_with_nafuda( |   [_QWERTY] = LAYOUT_with_nafuda( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,                 KC_TGMO, |   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,              TG(_MOUSE), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|        KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, JP_LBRC,        KC_BSAD,   KC_UP, KC_TGBR, |        KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, JP_LBRC,LT(_ADJUST, KC_BSPC),KC_UP,TG(_BROWSER), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|      KC_LCTRL,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L, JP_MINS, JP_RBRC,        KC_LEFT, KC_DOWN,KC_RIGHT, |      KC_LCTRL,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L, JP_MINS, JP_RBRC,        KC_LEFT, KC_DOWN,KC_RIGHT, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 | ||||||
|       KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, JP_COMM,  JP_DOT, JP_SLSH, JP_BSLS, |       KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, JP_COMM,  JP_DOT, JP_SLSH, JP_BSLS, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, KC_LOEN, KC_BSPC,  KC_DEL, KC_RASP, KC_HENK, KC_LALT, KC_DOWN,   KC_UP |      KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN,LT(_LOWER, KC_ENT), KC_BSPC,  KC_DEL,LT(_RAISE, KC_SPC), KC_HENK, KC_LALT, KC_DOWN,   KC_UP | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
| @ -90,7 +69,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| 
 | 
 | ||||||
|   [_MOUSE] = LAYOUT_with_nafuda( |   [_MOUSE] = LAYOUT_with_nafuda( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,                 KC_TGMO, |   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,              TG(_MOUSE), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,        KC_BTN1, KC_MS_U, KC_BTN2, |       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,        KC_BTN1, KC_MS_U, KC_BTN2, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
| @ -104,11 +83,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| 
 | 
 | ||||||
|   [_BROWSER] = LAYOUT_with_nafuda( |   [_BROWSER] = LAYOUT_with_nafuda( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,                 KC_CTAB, |       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,              LCTL(KC_W), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,       KC_RETAB, KC_WH_U, KC_TGBR, |       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,LCTL(LSFT(KC_T)),KC_WH_U,TG(_BROWSER), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,        KC_LTAB, KC_WH_D, KC_RTAB, |       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______,LCTL(LSFT(KC_TAB)), KC_WH_D,LCTL(KC_TAB), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 | ||||||
|       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______, |       _______, _______, _______, _______, _______, _______,                   _______, _______, _______, _______, _______, _______, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
| @ -118,27 +97,27 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| 
 | 
 | ||||||
|   [_LOWER] = LAYOUT_with_nafuda( |   [_LOWER] = LAYOUT_with_nafuda( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,                 KC_TGMO, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,              TG(_MOUSE), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       JP_COLN, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD,                      KC_6,    KC_7,    KC_8,    KC_9, JP_ASTR, JP_SLSH,        KC_BSAD,   KC_UP, KC_TGBR, |       JP_COLN, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD,                      KC_6,    KC_7,    KC_8,    KC_9, JP_ASTR, JP_SLSH,LT(_ADJUST, KC_BSPC),KC_UP,TG(_BROWSER), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       JP_QUOT, JP_HASH,  JP_DQT, JP_LPRN, JP_RPRN,   JP_AT,                   XXXXXXX,    KC_4,    KC_5,    KC_6, JP_MINS,  JP_EQL,        KC_LEFT, KC_DOWN,KC_RIGHT, |       JP_QUOT, JP_HASH,  JP_DQT, JP_LPRN, JP_RPRN,   JP_AT,                   XXXXXXX,    KC_4,    KC_5,    KC_6, JP_MINS,  JP_EQL,        KC_LEFT, KC_DOWN,KC_RIGHT, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 | ||||||
|       JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE,                      KC_0,    KC_1,    KC_2,    KC_3, JP_PLUS,  KC_ENT, |       JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE,                      KC_0,    KC_1,    KC_2,    KC_3, JP_PLUS,  KC_ENT, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                _______, _______, _______, KC_ZKHK,   LOWER, _______, _______,   RAISE,    KC_0,  JP_DOT, _______, _______ |                _______, _______, _______, KC_ZKHK,MO(_LOWER),_______,_______,MO(_RAISE), JP_DOT,_______, _______, _______ | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
|   [_RAISE] = LAYOUT_with_nafuda( |   [_RAISE] = LAYOUT_with_nafuda( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,                 KC_TGMO, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,              TG(_MOUSE), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|        KC_ESC,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6, XXXXXXX,   KC_UP, XXXXXXX, KC_PGUP,  KC_DEL,        KC_BSAD,   KC_UP, KC_TGBR, |        KC_ESC,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6, XXXXXXX,   KC_UP, XXXXXXX, KC_PGUP,  KC_DEL,LT(_ADJUST, KC_BSPC),KC_UP,TG(_BROWSER), | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       KC_CT11,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                   XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT,  KC_ENT,        KC_LEFT, KC_DOWN,KC_RIGHT, | LCTL_T(KC_F11),  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                   XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT,  KC_ENT,        KC_LEFT, KC_DOWN,KC_RIGHT, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 | ||||||
|       KC_SF12,   KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, | SFT_T(KC_F12),   KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  |                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
| @ -148,21 +127,19 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |--------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,                 RGB_VAD, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,                 RGB_VAD, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|       _______,   RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR),    ADJUST, RGB_SAD, RGB_VAI, |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR),   _ADJUST, RGB_SAD, RGB_VAI, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------+--------+--------|
 | ||||||
|      KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR,        RGB_MOD, RGB_TOG, RGB_SAI, |      KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR,        RGB_MOD, RGB_TOG, RGB_SAI, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |--------------------------|
 | ||||||
|       KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), |       KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL), | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|
 | ||||||
|                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ |                _______, _______, _______, _______, _______,   RESET,   RESET, _______, _______, _______, _______, _______ | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ) |   ) | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) { | uint32_t layer_state_set_user(uint32_t state) { | ||||||
| 
 |   return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); | ||||||
|   pressed ? layer_on(layer1) : layer_off(layer1); |  | ||||||
|   IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int RGB_current_mode; | int RGB_current_mode; | ||||||
| @ -170,12 +147,6 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
| 
 | 
 | ||||||
|   bool result = false; |   bool result = false; | ||||||
|   switch (keycode) { |   switch (keycode) { | ||||||
|     case LOWER: |  | ||||||
|       update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST); |  | ||||||
|       break; |  | ||||||
|     case RAISE: |  | ||||||
|       update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST); |  | ||||||
|         break; |  | ||||||
|     #ifdef RGBLIGHT_ENABLE |     #ifdef RGBLIGHT_ENABLE | ||||||
|       case RGB_MOD: |       case RGB_MOD: | ||||||
|           if (record->event.pressed) { |           if (record->event.pressed) { | ||||||
| @ -184,7 +155,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
|             RGB_current_mode = rgblight_config.mode; |             RGB_current_mode = rgblight_config.mode; | ||||||
|           } |           } | ||||||
|         break; |         break; | ||||||
|       case RGBRST: |       case RGB_RST: | ||||||
|           if (record->event.pressed) { |           if (record->event.pressed) { | ||||||
|             eeconfig_update_rgblight_default(); |             eeconfig_update_rgblight_default(); | ||||||
|             rgblight_enable(); |             rgblight_enable(); | ||||||
| @ -201,7 +172,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void matrix_init_user(void) { | void matrix_init_user(void) { | ||||||
|   #ifdef RGBLIGHT_ENABLE | 
 | ||||||
|     RGB_current_mode = rgblight_config.mode; |  | ||||||
|   #endif |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -2,31 +2,38 @@ | |||||||
| 
 | 
 | ||||||
| Add Nafuda maps to the salicylic layout. | Add Nafuda maps to the salicylic layout. | ||||||
| 
 | 
 | ||||||
| ## Default | Default | ||||||
| |  1   |  2   |  3   | |   //|--------------------| | ||||||
| |:----:|:----:|:----:| |              Mouse,        | ||||||
| |      | MOUSE|      | |   //|------+------+------| | ||||||
| | BS+Ad|    UP|Browser| |     BS + Ad,    UP,Browser, | ||||||
| |  LEFT|  DOWN| RIGHT| |   //|------+------+------| | ||||||
|  |        LEFT,  DOWN, RIGHT  | ||||||
|  |   //|--------------------| | ||||||
| 
 | 
 | ||||||
| ## Mouse | Mouse | ||||||
| |  1   |  2   |  3   | |   //|--------------------| | ||||||
| |:----:|:----:|:----:| |            Default,        | ||||||
| |      |Default|     | |   //|------+------+------| | ||||||
| |  BTN1|  MS_U|  BTN2| |        BTN1,  MS_U,  BTN2, | ||||||
| |  MS_L|  MS_D|  MS_R| |   //|------+------+------| | ||||||
|  |        MS_L,  MS_D,  MS_R  | ||||||
|  |   //|--------------------| | ||||||
| 
 | 
 | ||||||
| ## Browser | Browser | ||||||
| |  1   |  2   |  3   | |   //|--------------------| | ||||||
| |:----:|:----:|:----:| |           CloseTAB,        | ||||||
| |      |CloseTAB|    | |   //|------+------+------| | ||||||
| |ReOpenTAB|WH_U|Default| |   ReOpenTAB,  WH_U,Default, | ||||||
| |  LTAB|  WH_D|  RTAB| |   //|------+------+------| | ||||||
| 
 |        LTAB,  WH_D,  RTAB  | ||||||
| ## Adjust |   //|--------------------| | ||||||
| |  1   |  2   |  3   | |  | ||||||
| |:----:|:----:|:----:| |  | ||||||
| |      |LED_VAD|      | |  | ||||||
| |Default|LED_HUD|LED_VAI| |  | ||||||
| |LED_MOD|LED_ON/Off|LED_HUI| |  | ||||||
| 
 | 
 | ||||||
|  | Adjust | ||||||
|  |   //|------------------------| | ||||||
|  |                LED VAD,        | ||||||
|  |   //|------+----------+------| | ||||||
|  |     Default,   LED HUD,LED VAI, | ||||||
|  |   //|------+----------+------| | ||||||
|  |     LED MOD,LED ON/Off,LED HUI  | ||||||
|  |   //|------------------------| | ||||||
|  | |||||||
| @ -1,9 +0,0 @@ | |||||||
| RGBLIGHT_ENABLE = yes |  | ||||||
| 
 |  | ||||||
| # If your custom naked60 pcb, you can rewrite to yes.
 |  | ||||||
| LED_ANIMATIONS = yes        # LED animations |  | ||||||
| 
 |  | ||||||
| ifeq ($(strip $(LED_ANIMATIONS)), yes) |  | ||||||
|     # OPT_DEFS += -DRGBLIGHT_ANIMATIONS |  | ||||||
|     OPT_DEFS += -DLED_ANIMATIONS |  | ||||||
| endif |  | ||||||
| @ -21,70 +21,7 @@ | |||||||
| #define MASTER_LEFT | #define MASTER_LEFT | ||||||
| // #define MASTER_RIGHT
 | // #define MASTER_RIGHT
 | ||||||
| // #define EE_HANDS
 | // #define EE_HANDS
 | ||||||
| 
 |  | ||||||
| #define USE_SERIAL_PD2 | #define USE_SERIAL_PD2 | ||||||
| 
 | 
 | ||||||
| #define TAPPING_FORCE_HOLD | #define TAPPING_FORCE_HOLD | ||||||
| #define TAPPING_TERM 180 | #define TAPPING_TERM 180 | ||||||
| 
 |  | ||||||
| #define RGBLED_NUM 21 |  | ||||||
| 
 |  | ||||||
| #ifndef IOS_DEVICE_ENABLE |  | ||||||
|   #define RGBLIGHT_LIMIT_VAL 180 |  | ||||||
|   #define RGBLIGHT_VAL_STEP 17 |  | ||||||
| #else |  | ||||||
|   #define RGBLIGHT_LIMIT_VAL 50 |  | ||||||
|   #define RGBLIGHT_VAL_STEP 4 |  | ||||||
| #endif |  | ||||||
| #define RGBLIGHT_HUE_STEP 10 |  | ||||||
| #define RGBLIGHT_SAT_STEP 17 |  | ||||||
| 
 |  | ||||||
| #if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) |  | ||||||
| // USB_MAX_POWER_CONSUMPTION value for naked48 keyboard
 |  | ||||||
| //  120  RGBoff, OLEDoff
 |  | ||||||
| //  120  OLED
 |  | ||||||
| //  330  RGB 6
 |  | ||||||
| //  300  RGB 32
 |  | ||||||
| //  310  OLED & RGB 32
 |  | ||||||
|   #define USB_MAX_POWER_CONSUMPTION 400 |  | ||||||
| #else |  | ||||||
|   // fix iPhone and iPad power adapter issue
 |  | ||||||
|   // iOS device need lessthan 100
 |  | ||||||
|   #define USB_MAX_POWER_CONSUMPTION 100 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| // Selection of RGBLIGHT MODE to use.
 |  | ||||||
| #if defined(LED_ANIMATIONS) |  | ||||||
|    //#define RGBLIGHT_EFFECT_BREATHING
 |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_MOOD |  | ||||||
|    #define RGBLIGHT_EFFECT_RAINBOW_SWIRL |  | ||||||
|    //#define RGBLIGHT_EFFECT_SNAKE
 |  | ||||||
|    #define RGBLIGHT_EFFECT_KNIGHT |  | ||||||
|    //#define RGBLIGHT_EFFECT_CHRISTMAS
 |  | ||||||
|    #define RGBLIGHT_EFFECT_STATIC_GRADIENT |  | ||||||
|    //#define RGBLIGHT_EFFECT_RGB_TEST
 |  | ||||||
|    //#define RGBLIGHT_EFFECT_ALTERNATING
 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #define MK_3_SPEED |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_INTERVAL |  | ||||||
| #define MOUSEKEY_INTERVAL 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_TIME_TO_MAX 150 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MAX_SPEED |  | ||||||
| #define MOUSEKEY_MAX_SPEED 3 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_MOVE_DELTA |  | ||||||
| #define MOUSEKEY_MOVE_DELTA 5 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_DELAY |  | ||||||
| #define MOUSEKEY_DELAY 0 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_MAX_SPEED |  | ||||||
| #define MOUSEKEY_WHEEL_MAX_SPEED 1 |  | ||||||
| 
 |  | ||||||
| #undef MOUSEKEY_WHEEL_TIME_TO_MAX |  | ||||||
| #define MOUSEKEY_WHEEL_TIME_TO_MAX 0 |  | ||||||
|  | |||||||
| @ -3,11 +3,6 @@ | |||||||
| 
 | 
 | ||||||
| extern keymap_config_t keymap_config; | extern keymap_config_t keymap_config; | ||||||
| 
 | 
 | ||||||
| #ifdef RGBLIGHT_ENABLE |  | ||||||
| //Following line allows macro to read current RGB settings
 |  | ||||||
| extern rgblight_config_t rgblight_config; |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| extern uint8_t is_master; | extern uint8_t is_master; | ||||||
| 
 | 
 | ||||||
| // Each layer gets a name for readability, which is then used in the keymap matrix below.
 | // Each layer gets a name for readability, which is then used in the keymap matrix below.
 | ||||||
| @ -23,15 +18,10 @@ enum layer_number { | |||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| enum custom_keycodes { | enum custom_keycodes { | ||||||
|   FLOCK = SAFE_RANGE, |   RGB_RST = SAFE_RANGE, | ||||||
|   LOWER, |  | ||||||
|   RAISE, |  | ||||||
|   ADJUST, |  | ||||||
|   KANJI, |  | ||||||
|   RGBRST, |  | ||||||
|   SEND_SUM, |   SEND_SUM, | ||||||
|   SEND_AVERAGE, |   SEND_AVE, | ||||||
|   SEND_COUNTIF, |   SEND_CIF, | ||||||
|   SEND_MAX, |   SEND_MAX, | ||||||
|   SEND_MIN |   SEND_MIN | ||||||
| }; | }; | ||||||
| @ -41,22 +31,6 @@ enum tapdances{ | |||||||
|   TD_ESQW, |   TD_ESQW, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| // Fillers to make layering more clear
 |  | ||||||
| #define KC_CT11 LCTL_T(KC_F11) |  | ||||||
| #define KC_SF12 SFT_T(KC_F12) |  | ||||||
| #define KC_LOEN LT(_LOWER, KC_ENT) |  | ||||||
| #define KC_RASP LT(_RAISE, KC_SPC) |  | ||||||
| 
 |  | ||||||
| #define KC_SSUM  SEND_SUM |  | ||||||
| #define KC_SAVE  SEND_AVERAGE |  | ||||||
| #define KC_SCOU  SEND_COUNTIF |  | ||||||
| #define KC_SMAX  SEND_MAX |  | ||||||
| #define KC_SMIN  SEND_MIN |  | ||||||
| 
 |  | ||||||
| #define KC_RADO LT(_RAISE, KC_PDOT) |  | ||||||
| #define KC_LOP0 LT(_LOWER, KC_P0) |  | ||||||
| #define KC_ADNL LT(_ADJUST, KC_NLCK) |  | ||||||
| 
 |  | ||||||
| qk_tap_dance_action_t tap_dance_actions[] = { | qk_tap_dance_action_t tap_dance_actions[] = { | ||||||
|   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), |   [TD_ESFL] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _FLOCK), | ||||||
|   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), |   [TD_ESQW] = ACTION_TAP_DANCE_DUAL_ROLE(KC_ESC, _QWERTY), | ||||||
| @ -65,15 +39,15 @@ qk_tap_dance_action_t tap_dance_actions[] = { | |||||||
| const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||||||
|   [_QWERTY] = LAYOUT_with_setta21( |   [_QWERTY] = LAYOUT_with_setta21( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 | ||||||
|   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,       KC_LOP0,  KC_P1,  KC_P4,  KC_P7,KC_ADNL, KC_ESC, |   TD(TD_ESFL),    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6,    KC_7,    KC_8,    KC_9,    KC_0, KC_BSPC,LT(_LOWER, KC_P0),KC_P1,  KC_P4,  KC_P7,KC_NLCK, KC_ESC, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|        KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, JP_LBRC,                 KC_P2,  KC_P5,  KC_P8,KC_PSLS,  KC_F2, |        KC_TAB,    KC_Q,    KC_W,    KC_E,    KC_R,    KC_T,                      KC_Y,    KC_U,    KC_I,    KC_O,    KC_P, JP_LBRC,                 KC_P2,  KC_P5,  KC_P8,KC_PSLS,  KC_F2, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|      KC_LCTRL,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L, JP_MINS, JP_RBRC,       KC_RADO,  KC_P3,  KC_P6,  KC_P9,KC_PAST, JP_EQL, |      KC_LCTRL,    KC_A,    KC_S,    KC_D,    KC_F,    KC_G,                      KC_H,    KC_J,    KC_K,    KC_L, JP_MINS, JP_RBRC,LT(_RAISE, KC_PDOT),KC_P3,KC_P6, KC_P9,KC_PAST, JP_EQL, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 | ||||||
|       KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, JP_COMM,  JP_DOT, JP_SLSH, JP_BSLS,               KC_PENT,        KC_PPLS,KC_PMNS, KC_DEL, |       KC_LSFT,    KC_Z,    KC_X,    KC_C,    KC_V,    KC_B,                      KC_N,    KC_M, JP_COMM,  JP_DOT, JP_SLSH, JP_BSLS,               KC_PENT,        KC_PPLS,KC_PMNS, KC_DEL, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 | ||||||
|                KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, KC_LOEN, KC_BSPC,  KC_DEL, KC_RASP, KC_HENK, KC_LALT, KC_DOWN,   KC_UP |       KC_LEFT,KC_RIGHT, KC_LGUI, KC_MHEN, LT(_LOWER,KC_ENT),KC_BSPC,  KC_DEL,LT(_RAISE,KC_SPC), KC_HENK, KC_LALT, KC_DOWN,   KC_UP | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
| @ -93,75 +67,66 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | |||||||
| 
 | 
 | ||||||
|   [_LOWER] = LAYOUT_with_setta21( |   [_LOWER] = LAYOUT_with_setta21( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,         LOWER,XXXXXXX,KC_LEFT,XXXXXXX,XXXXXXX, KC_ESC, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,    MO(_LOWER),XXXXXXX,KC_LEFT,XXXXXXX,XXXXXXX, KC_ESC, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|       JP_COLN, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD,                      KC_6,    KC_7,    KC_8,    KC_9, JP_ASTR, JP_SLSH,               KC_DOWN,KC_DOWN,  KC_UP,KC_PSLS,  KC_F2, |       JP_COLN, JP_EXLM, JP_QUES, JP_LBRC, JP_RBRC, JP_TILD,                      KC_6,    KC_7,    KC_8,    KC_9, JP_ASTR, JP_SLSH,               KC_DOWN,KC_DOWN,  KC_UP,KC_PSLS,  KC_F2, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|       JP_QUOT, JP_HASH,  JP_DQT, JP_LPRN, JP_RPRN,   JP_AT,                   XXXXXXX,    KC_4,    KC_5,    KC_6, JP_MINS,  JP_EQL,         RAISE,XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, JP_EQL, |       JP_QUOT, JP_HASH,  JP_DQT, JP_LPRN, JP_RPRN,   JP_AT,                   XXXXXXX,    KC_4,    KC_5,    KC_6, JP_MINS,  JP_EQL,    MO(_RAISE),XXXXXXX,KC_RIGHT,XXXXXXX,KC_PAST, JP_EQL, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 | ||||||
|       JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE,                      KC_0,    KC_1,    KC_2,    KC_3, JP_PLUS,  KC_ENT,               KC_PENT,        KC_PPLS,KC_PMNS, KC_DEL, |       JP_CIRC, JP_PERC, JP_AMPR, JP_SCLN, JP_COLN, JP_PIPE,                      KC_0,    KC_1,    KC_2,    KC_3, JP_PLUS,  KC_ENT,               KC_PENT,        KC_PPLS,KC_PMNS, KC_DEL, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 | ||||||
|                _______, _______, _______, KC_ZKHK,   LOWER, _______, _______,   RAISE,    KC_0,  JP_DOT, _______, _______ |                _______, _______, _______, KC_ZKHK,MO(_LOWER),_______,_______,MO(_RAISE), JP_DOT,_______, _______, _______ | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
|   [_RAISE] = LAYOUT_with_setta21( |   [_RAISE] = LAYOUT_with_setta21( | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |------------------------------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,         LOWER, KC_F11,  KC_F4,  KC_F7,KC_SMIN, KC_ESC, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,       _______, KC_F11,  KC_F4,  KC_F7,SEND_MIN, KC_ESC, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+--------+-------|
 | ||||||
|        KC_ESC,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6, XXXXXXX,   KC_UP, XXXXXXX, KC_PGUP,  KC_DEL,                KC_F12,  KC_F5,  KC_F8,KC_SMAX,  KC_F2, |        KC_ESC,    KC_1,    KC_2,    KC_3,    KC_4,    KC_5,                      KC_6, XXXXXXX,   KC_UP, XXXXXXX, KC_PGUP,  KC_DEL,                KC_F12,  KC_F5,  KC_F8,SEND_MAX,  KC_F2, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+--------+-------|
 | ||||||
|       KC_CT11,   KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                   XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT,  KC_ENT,         RAISE,  KC_F3,  KC_F6,  KC_F9,KC_SCOU, JP_EQL, | LCTL_T(KC_F11),  KC_F1,   KC_F2,   KC_F3,   KC_F4,   KC_F5,                   XXXXXXX, KC_LEFT, KC_DOWN,KC_RIGHT, KC_LSFT,  KC_ENT,       _______,  KC_F3,  KC_F6,  KC_F9,SEND_CIF, JP_EQL, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+--------+-------|
 | ||||||
|       KC_SF12,   KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX,               JP_RPRN,        KC_SSUM,KC_SAVE, KC_DEL, | SFT_T(KC_F12),   KC_F6,   KC_F7,   KC_F8,   KC_F9,  KC_F10,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGDN, XXXXXXX,               JP_RPRN,       SEND_SUM,SEND_AVE, KC_DEL, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |------------------------------------------------|
 | ||||||
|                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  |                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______  | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ), |   ), | ||||||
| 
 | 
 | ||||||
|   [_ADJUST] = LAYOUT_with_setta21( /* Base */ |   [_ADJUST] = LAYOUT_with_setta21( /* Base */ | ||||||
|   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 |   //,-----------------------------------------------------|                 |-----------------------------------------------------.      |-----------------------------------------------|
 | ||||||
|        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,         LOWER,RGB_VAD,RGB_HUD,RGB_SAD, ADJUST,RGB_TOG, |        KC_ESC,   KC_F2,   KC_F3,   KC_F4,   KC_F5,   KC_F6,                     KC_F7,   KC_F8,   KC_F9,  KC_F10,  KC_F11,  KC_F12,       _______,RGB_VAD,RGB_HUD,RGB_SAD,XXXXXXX,_______, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|       _______,   RESET, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR),          RGB_VAI,RGB_HUI,RGB_SAI,XXXXXXX,_______, |       _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_BTN1, KC_MS_U, KC_BTN2, XXXXXXX,LALT(KC_PSCR),          RGB_VAI,RGB_HUI,RGB_SAI,XXXXXXX,_______, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |-------+-------+-------+-------+-------+-------|
 | ||||||
|      KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR,         RAISE,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______, |      KC_LCTRL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, KC_MS_L, KC_MS_D, KC_MS_R, XXXXXXX, KC_PSCR,       _______,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,_______, | ||||||
|   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 |   //|--------+--------+--------+--------+--------+--------|                 |--------+--------+--------+--------+--------+--------|      |---------------+---------------+-------+-------|
 | ||||||
|       KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL),            RGB_MOD,        _______,_______,_______, |       KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,                   XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,LCA(KC_DEL),            RGB_MOD,        RGB_TOG,_______,_______, | ||||||
|   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 |   //|--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------+--------|      |-----------------------------------------------|
 | ||||||
|                _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ |                _______, _______, _______, _______, _______,   RESET,   RESET, _______, _______, _______, _______, _______ | ||||||
|           //`------------------------------------------------------------------------------------------------------------'
 |           //`------------------------------------------------------------------------------------------------------------'
 | ||||||
|   ) |   ) | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| static inline void update_change_layer(bool pressed, uint8_t layer1, uint8_t layer2, uint8_t layer3) { | uint32_t layer_state_set_user(uint32_t state) { | ||||||
| 
 |   return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST); | ||||||
|   pressed ? layer_on(layer1) : layer_off(layer1); |  | ||||||
|   IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2) ? layer_on(layer3) : layer_off(layer3); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int RGB_current_mode; | int RGB_current_mode; | ||||||
| bool process_record_user(uint16_t keycode, keyrecord_t *record) { | bool process_record_user(uint16_t keycode, keyrecord_t *record) { | ||||||
| 
 |  | ||||||
|   bool result = false; |   bool result = false; | ||||||
|   switch (keycode) { |   switch (keycode) { | ||||||
|     case LOWER: |  | ||||||
|       update_change_layer(record->event.pressed, _LOWER, _RAISE, _ADJUST); |  | ||||||
|       break; |  | ||||||
|     case RAISE: |  | ||||||
|       update_change_layer(record->event.pressed, _RAISE, _LOWER, _ADJUST); |  | ||||||
|         break; |  | ||||||
|     case SEND_SUM: |     case SEND_SUM: | ||||||
|       if (record->event.pressed) { |       if (record->event.pressed) { | ||||||
|         SEND_STRING("_SUM*"); |         SEND_STRING("_SUM*"); | ||||||
|       } |       } | ||||||
|       break; |       break; | ||||||
|     case SEND_AVERAGE: |     case SEND_AVE: | ||||||
|       if (record->event.pressed) { |       if (record->event.pressed) { | ||||||
|         SEND_STRING("_AVERAGE*"); |         SEND_STRING("_AVERAGE*"); | ||||||
|       } |       } | ||||||
|       break; |       break; | ||||||
|     case SEND_COUNTIF: |     case SEND_CIF: | ||||||
|       if (record->event.pressed) { |       if (record->event.pressed) { | ||||||
|         SEND_STRING("_COUNTIF*"); |         SEND_STRING("_COUNTIF*"); | ||||||
|       } |       } | ||||||
| @ -184,7 +149,7 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
|             RGB_current_mode = rgblight_config.mode; |             RGB_current_mode = rgblight_config.mode; | ||||||
|           } |           } | ||||||
|         break; |         break; | ||||||
|       case RGBRST: |       case RGB_RST: | ||||||
|           if (record->event.pressed) { |           if (record->event.pressed) { | ||||||
|             eeconfig_update_rgblight_default(); |             eeconfig_update_rgblight_default(); | ||||||
|             rgblight_enable(); |             rgblight_enable(); | ||||||
| @ -201,7 +166,5 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void matrix_init_user(void) { | void matrix_init_user(void) { | ||||||
|   #ifdef RGBLIGHT_ENABLE | 
 | ||||||
|     RGB_current_mode = rgblight_config.mode; |  | ||||||
|   #endif |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -6,7 +6,7 @@ Add Setta21 maps to the salicylic layout. | |||||||
| |  1   |  2   |  3   |  4   | | |  1   |  2   |  3   |  4   | | ||||||
| |:----:|:----:|:----:|:----:| | |:----:|:----:|:----:|:----:| | ||||||
| |   ESC|    F2|     =|   DEL| | |   ESC|    F2|     =|   DEL| | ||||||
| |Ad+Num|     /|     *|     -| | |   Num|     /|     *|     -| | ||||||
| |     7|     8|     9|      | | |     7|     8|     9|      | | ||||||
| |     4|     5|     6|     +| | |     4|     5|     6|     +| | ||||||
| |     1|     2|     3|      | | |     1|     2|     3|      | | ||||||
| @ -36,7 +36,7 @@ Add Setta21 maps to the salicylic layout. | |||||||
| |  1   |  2   |  3   |  4   | | |  1   |  2   |  3   |  4   | | ||||||
| |:----:|:----:|:----:|:----:| | |:----:|:----:|:----:|:----:| | ||||||
| |   ESC|    F2|     =|   DEL| | |   ESC|    F2|     =|   DEL| | ||||||
| |ADJUST| XXXXX| XXXXX|     -| | | XXXXX| XXXXX| XXXXX|     -| | ||||||
| |LED_SAD|LED_SAI| XXXXX|      | | |LED_SAD|LED_SAI| XXXXX|      | | ||||||
| |LED_HUD|LED_HUI| XXXXX|     +| | |LED_HUD|LED_HUI| XXXXX|     +| | ||||||
| |LED_VAD|LED_VAI| XXXXX|      | | |LED_VAD|LED_VAI| XXXXX|      | | ||||||
|  | |||||||
| @ -1,10 +0,0 @@ | |||||||
| RGBLIGHT_ENABLE = yes |  | ||||||
| 
 |  | ||||||
| # If your custom naked60 pcb, you can rewrite to yes.
 |  | ||||||
| LED_ANIMATIONS = yes        # LED animations |  | ||||||
| 
 |  | ||||||
| ifeq ($(strip $(LED_ANIMATIONS)), yes) |  | ||||||
|     # OPT_DEFS += -DRGBLIGHT_ANIMATIONS |  | ||||||
|     OPT_DEFS += -DLED_ANIMATIONS |  | ||||||
| endif |  | ||||||
| 
 |  | ||||||
| @ -1,12 +1,7 @@ | |||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | #include "quantum.h" | ||||||
|  | 
 | ||||||
| #ifdef KEYBOARD_naked60_rev1 | #ifdef KEYBOARD_naked60_rev1 | ||||||
|   #include "rev1.h" |   #include "rev1.h" | ||||||
| #endif | #endif | ||||||
| 
 |  | ||||||
| #include "quantum.h" |  | ||||||
| 
 |  | ||||||
| #ifdef PROTOCOL_LUFA |  | ||||||
| #include "lufa.h" |  | ||||||
| #include "split_util.h" |  | ||||||
| #endif |  | ||||||
|  | |||||||
| @ -18,6 +18,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| 
 | 
 | ||||||
| #pragma once | #pragma once | ||||||
| 
 | 
 | ||||||
|  | 
 | ||||||
| /* USB Device descriptor parameter */ | /* USB Device descriptor parameter */ | ||||||
| #define VENDOR_ID       0xFEED | #define VENDOR_ID       0xFEED | ||||||
| #define PRODUCT_ID      0x3060 | #define PRODUCT_ID      0x3060 | ||||||
| @ -26,94 +27,27 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>. | |||||||
| #define PRODUCT         naked60 | #define PRODUCT         naked60 | ||||||
| #define DESCRIPTION     Ortholinear 60 Keys Keyboard | #define DESCRIPTION     Ortholinear 60 Keys Keyboard | ||||||
| 
 | 
 | ||||||
| /* Use I2C or Serial */ |  | ||||||
| //#define USE_I2C
 |  | ||||||
| #define USE_SERIAL |  | ||||||
| //#define USE_MATRIX_I2C
 |  | ||||||
| 
 |  | ||||||
| /* Select hand configuration */ |  | ||||||
| #define MASTER_LEFT |  | ||||||
| // #define MASTER_RIGHT
 |  | ||||||
| // #define EE_HANDS
 |  | ||||||
| 
 |  | ||||||
| // OLED support
 |  | ||||||
| //      see ./rules.mk: OLED_ENABLE=yes or no
 |  | ||||||
| #ifdef OLED_ENABLE |  | ||||||
|   #define SSD1306OLED |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| /* key matrix size */ | /* key matrix size */ | ||||||
| #define MATRIX_ROWS 10 | #define MATRIX_ROWS 10 | ||||||
| #define MATRIX_COLS 14 | #define MATRIX_COLS 12 | ||||||
| 
 | 
 | ||||||
| // Rows are doubled-up
 | // Rows are doubled-up
 | ||||||
| #define MATRIX_ROW_PINS { B6, D1, D0, D4, C6 } | #define MATRIX_ROW_PINS { B6, D1, D0, D4, C6 } | ||||||
| 
 |  | ||||||
| // wiring of each half
 |  | ||||||
| #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, D7, E6, B4, B5, D3 } | #define MATRIX_COL_PINS { F4, F5, F6, F7, B1, B3, B2, D7, E6, B4, B5, D3 } | ||||||
| // #define MATRIX_COL_PINS { D3, B5, B4, E6, D7, B2, B3, B1, F7, F6, F5, F4 } //uncomment this line and comment line above if you need to reverse left-to-right key order
 | // When using Setta21
 | ||||||
| 
 | #define MATRIX_ROW_PINS_RIGHT { D4, C6, D7, E6, B2 } | ||||||
| /* define if matrix has ghost */ | #define MATRIX_COL_PINS_RIGHT { F4, F5, F6, F7, B1, B3, B2, B6, B4, B5, B2, B2 } | ||||||
| //#define MATRIX_HAS_GHOST
 | // When using Nafuda
 | ||||||
| 
 | //#define MATRIX_ROW_PINS_RIGHT { D1, D0, D4, C6, B6 }
 | ||||||
| /* number of backlight levels */ | //#define MATRIX_COL_PINS_RIGHT { F4, F5, F6, F7, B1, B3, B2, D7, E6, B4, B5, D3 }
 | ||||||
| // #define BACKLIGHT_LEVELS 3
 |  | ||||||
| 
 | 
 | ||||||
| /* Set 0 if debouncing isn't needed */ | /* Set 0 if debouncing isn't needed */ | ||||||
| #define DEBOUNCE 5 | #define DEBOUNCE 5 | ||||||
| 
 | 
 | ||||||
|  | /* serial.c configuration for split keyboard */ | ||||||
|  | #define SOFT_SERIAL_PIN D2 | ||||||
|  | 
 | ||||||
| /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||||||
| //#define LOCKING_SUPPORT_ENABLE
 | #define LOCKING_SUPPORT_ENABLE | ||||||
| /* Locking resynchronize hack */ | /* Locking resynchronize hack */ | ||||||
| //#define LOCKING_RESYNC_ENABLE
 | #define LOCKING_RESYNC_ENABLE | ||||||
| 
 |  | ||||||
| /* ws2812 RGB LED */ |  | ||||||
| #define RGB_DI_PIN D3 |  | ||||||
| #define RGBLIGHT_TIMER |  | ||||||
| 
 |  | ||||||
| // naked60 keyboard RGB LED support
 |  | ||||||
| //#define RGBLIGHT_ANIMATIONS : see ./rules.mk: LED_ANIMATIONS = yes or no
 |  | ||||||
| //    see ./rules.mk: LED_BACK_ENABLE or LED_UNDERGLOW_ENABLE set yes
 |  | ||||||
| //#define RGBLED_NUM 21
 |  | ||||||
| 
 |  | ||||||
| #ifndef IOS_DEVICE_ENABLE |  | ||||||
|   #define RGBLIGHT_LIMIT_VAL 180 |  | ||||||
|   #define RGBLIGHT_VAL_STEP 17 |  | ||||||
| #else |  | ||||||
|   #define RGBLIGHT_LIMIT_VAL 50 |  | ||||||
|   #define RGBLIGHT_VAL_STEP 4 |  | ||||||
| #endif |  | ||||||
| #define RGBLIGHT_HUE_STEP 10 |  | ||||||
| #define RGBLIGHT_SAT_STEP 17 |  | ||||||
| 
 |  | ||||||
| #if defined(RGBLIGHT_ENABLE) && !defined(IOS_DEVICE_ENABLE) |  | ||||||
| // USB_MAX_POWER_CONSUMPTION value for naked60 keyboard
 |  | ||||||
| //  120  RGBoff, OLEDoff
 |  | ||||||
| //  120  OLED
 |  | ||||||
| //  330  RGB 6
 |  | ||||||
| //  300  RGB 32
 |  | ||||||
| //  310  OLED & RGB 32
 |  | ||||||
|   #define USB_MAX_POWER_CONSUMPTION 400 |  | ||||||
| #else |  | ||||||
|   // fix iPhone and iPad power adapter issue
 |  | ||||||
|   // iOS device need lessthan 100
 |  | ||||||
|   #define USB_MAX_POWER_CONSUMPTION 100 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * Feature disable options |  | ||||||
|  *  These options are also useful to firmware size reduction. |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| /* disable debug print */ |  | ||||||
| // #define NO_DEBUG
 |  | ||||||
| 
 |  | ||||||
| /* disable print */ |  | ||||||
| // #define NO_PRINT
 |  | ||||||
| 
 |  | ||||||
| /* disable action features */ |  | ||||||
| //#define NO_ACTION_LAYER
 |  | ||||||
| //#define NO_ACTION_TAPPING
 |  | ||||||
| //#define NO_ACTION_ONESHOT
 |  | ||||||
| //#define NO_ACTION_MACRO
 |  | ||||||
| //#define NO_ACTION_FUNCTION
 |  | ||||||
|  | |||||||
| @ -1,357 +0,0 @@ | |||||||
| /*
 |  | ||||||
| Copyright 2012 Jun Wako <wakojun@gmail.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/>.
 |  | ||||||
| */ |  | ||||||
| 
 |  | ||||||
| /*
 |  | ||||||
|  * scan matrix |  | ||||||
|  */ |  | ||||||
| #include <stdint.h> |  | ||||||
| #include <stdbool.h> |  | ||||||
| #include <string.h> |  | ||||||
| #include <avr/io.h> |  | ||||||
| #include <avr/wdt.h> |  | ||||||
| #include <avr/interrupt.h> |  | ||||||
| #include <util/delay.h> |  | ||||||
| #include "print.h" |  | ||||||
| #include "debug.h" |  | ||||||
| #include "util.h" |  | ||||||
| #include "matrix.h" |  | ||||||
| #include "split_util.h" |  | ||||||
| #include "pro_micro.h" |  | ||||||
| 
 |  | ||||||
| #ifdef USE_MATRIX_I2C |  | ||||||
| #  include "i2c.h" |  | ||||||
| #else // USE_SERIAL
 |  | ||||||
| #  include "split_scomm.h" |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #ifndef DEBOUNCE |  | ||||||
| #  define DEBOUNCE	5 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #define ERROR_DISCONNECT_COUNT 5 |  | ||||||
| 
 |  | ||||||
| static uint8_t debouncing = DEBOUNCE; |  | ||||||
| static const int ROWS_PER_HAND = MATRIX_ROWS/2; |  | ||||||
| static uint8_t error_count = 0; |  | ||||||
| uint8_t is_master = 0 ; |  | ||||||
| 
 |  | ||||||
| static const uint8_t row_pins[MATRIX_ROWS] = MATRIX_ROW_PINS; |  | ||||||
| static const uint8_t col_pins[MATRIX_COLS] = MATRIX_COL_PINS; |  | ||||||
| 
 |  | ||||||
| /* matrix state(1:on, 0:off) */ |  | ||||||
| static matrix_row_t matrix[MATRIX_ROWS]; |  | ||||||
| static matrix_row_t matrix_debouncing[MATRIX_ROWS]; |  | ||||||
| 
 |  | ||||||
| static matrix_row_t read_cols(void); |  | ||||||
| static void init_cols(void); |  | ||||||
| static void unselect_rows(void); |  | ||||||
| static void select_row(uint8_t row); |  | ||||||
| static uint8_t matrix_master_scan(void); |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| __attribute__ ((weak)) |  | ||||||
| void matrix_init_kb(void) { |  | ||||||
|     matrix_init_user(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| __attribute__ ((weak)) |  | ||||||
| void matrix_scan_kb(void) { |  | ||||||
|     matrix_scan_user(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| __attribute__ ((weak)) |  | ||||||
| void matrix_init_user(void) { |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| __attribute__ ((weak)) |  | ||||||
| void matrix_scan_user(void) { |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline |  | ||||||
| uint8_t matrix_rows(void) |  | ||||||
| { |  | ||||||
|     return MATRIX_ROWS; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline |  | ||||||
| uint8_t matrix_cols(void) |  | ||||||
| { |  | ||||||
|     return MATRIX_COLS; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void matrix_init(void) |  | ||||||
| { |  | ||||||
|     debug_enable = true; |  | ||||||
|     debug_matrix = true; |  | ||||||
|     debug_mouse = true; |  | ||||||
|     // initialize row and col
 |  | ||||||
|     unselect_rows(); |  | ||||||
|     init_cols(); |  | ||||||
| 
 |  | ||||||
|     TX_RX_LED_INIT; |  | ||||||
|     TXLED0; |  | ||||||
|     RXLED0; |  | ||||||
| 
 |  | ||||||
|     // initialize matrix state: all keys off
 |  | ||||||
|     for (uint8_t i=0; i < MATRIX_ROWS; i++) { |  | ||||||
|         matrix[i] = 0; |  | ||||||
|         matrix_debouncing[i] = 0; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     is_master = has_usb(); |  | ||||||
| 
 |  | ||||||
|     matrix_init_quantum(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| uint8_t _matrix_scan(void) |  | ||||||
| { |  | ||||||
|     // Right hand is stored after the left in the matirx so, we need to offset it
 |  | ||||||
|     int offset = isLeftHand ? 0 : (ROWS_PER_HAND); |  | ||||||
| 
 |  | ||||||
|     for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { |  | ||||||
|         select_row(i); |  | ||||||
|         _delay_us(30);  // without this wait read unstable value.
 |  | ||||||
|         matrix_row_t cols = read_cols(); |  | ||||||
|         if (matrix_debouncing[i+offset] != cols) { |  | ||||||
|             matrix_debouncing[i+offset] = cols; |  | ||||||
|             debouncing = DEBOUNCE; |  | ||||||
|         } |  | ||||||
|         unselect_rows(); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (debouncing) { |  | ||||||
|         if (--debouncing) { |  | ||||||
|             _delay_ms(1); |  | ||||||
|         } else { |  | ||||||
|             for (uint8_t i = 0; i < ROWS_PER_HAND; i++) { |  | ||||||
|                 matrix[i+offset] = matrix_debouncing[i+offset]; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return 1; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #ifdef USE_MATRIX_I2C |  | ||||||
| 
 |  | ||||||
| // Get rows from other half over i2c
 |  | ||||||
| int i2c_transaction(void) { |  | ||||||
|     int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; |  | ||||||
| 
 |  | ||||||
|     int err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_WRITE); |  | ||||||
|     if (err) goto i2c_error; |  | ||||||
| 
 |  | ||||||
|     // start of matrix stored at 0x00
 |  | ||||||
|     err = i2c_master_write(0x00); |  | ||||||
|     if (err) goto i2c_error; |  | ||||||
| 
 |  | ||||||
|     // Start read
 |  | ||||||
|     err = i2c_master_start(SLAVE_I2C_ADDRESS + I2C_READ); |  | ||||||
|     if (err) goto i2c_error; |  | ||||||
| 
 |  | ||||||
|     if (!err) { |  | ||||||
|         int i; |  | ||||||
|         for (i = 0; i < ROWS_PER_HAND-1; ++i) { |  | ||||||
|             matrix[slaveOffset+i] = i2c_master_read(I2C_ACK); |  | ||||||
|         } |  | ||||||
|         matrix[slaveOffset+i] = i2c_master_read(I2C_NACK); |  | ||||||
|         i2c_master_stop(); |  | ||||||
|     } else { |  | ||||||
| i2c_error: // the cable is disconnceted, or something else went wrong
 |  | ||||||
|         i2c_reset_state(); |  | ||||||
|         return err; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #else // USE_SERIAL
 |  | ||||||
| 
 |  | ||||||
| int serial_transaction(int master_changed) { |  | ||||||
|     int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; |  | ||||||
| #ifdef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
|     int ret=serial_update_buffers(master_changed); |  | ||||||
| #else |  | ||||||
|     int ret=serial_update_buffers(); |  | ||||||
| #endif |  | ||||||
|     if (ret ) { |  | ||||||
|         if(ret==2) RXLED1; |  | ||||||
|         return 1; |  | ||||||
|     } |  | ||||||
|     RXLED0; |  | ||||||
|     memcpy(&matrix[slaveOffset], |  | ||||||
|         (void *)serial_slave_buffer, sizeof(serial_slave_buffer)); |  | ||||||
|     return 0; |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| uint8_t matrix_scan(void) |  | ||||||
| { |  | ||||||
|     if (is_master) { |  | ||||||
|         matrix_master_scan(); |  | ||||||
|     }else{ |  | ||||||
|         matrix_slave_scan(); |  | ||||||
|         int offset = (isLeftHand) ? ROWS_PER_HAND : 0; |  | ||||||
|         memcpy(&matrix[offset], |  | ||||||
|                (void *)serial_master_buffer, sizeof(serial_master_buffer)); |  | ||||||
|         matrix_scan_quantum(); |  | ||||||
|     } |  | ||||||
|     return 1; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| uint8_t matrix_master_scan(void) { |  | ||||||
| 
 |  | ||||||
|     int ret = _matrix_scan(); |  | ||||||
|     int mchanged = 1; |  | ||||||
| 
 |  | ||||||
|     int offset = (isLeftHand) ? 0 : ROWS_PER_HAND; |  | ||||||
| 
 |  | ||||||
| #ifdef USE_MATRIX_I2C |  | ||||||
| //    for (int i = 0; i < ROWS_PER_HAND; ++i) {
 |  | ||||||
|         /* i2c_slave_buffer[i] = matrix[offset+i]; */ |  | ||||||
| //        i2c_slave_buffer[i] = matrix[offset+i];
 |  | ||||||
| //    }
 |  | ||||||
| #else // USE_SERIAL
 |  | ||||||
|   #ifdef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
|     mchanged = memcmp((void *)serial_master_buffer, |  | ||||||
| 		      &matrix[offset], sizeof(serial_master_buffer)); |  | ||||||
|   #endif |  | ||||||
|     memcpy((void *)serial_master_buffer, |  | ||||||
| 	   &matrix[offset], sizeof(serial_master_buffer)); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #ifdef USE_MATRIX_I2C |  | ||||||
|     if( i2c_transaction() ) { |  | ||||||
| #else // USE_SERIAL
 |  | ||||||
|     if( serial_transaction(mchanged) ) { |  | ||||||
| #endif |  | ||||||
|         // turn on the indicator led when halves are disconnected
 |  | ||||||
|         TXLED1; |  | ||||||
| 
 |  | ||||||
|         error_count++; |  | ||||||
| 
 |  | ||||||
|         if (error_count > ERROR_DISCONNECT_COUNT) { |  | ||||||
|             // reset other half if disconnected
 |  | ||||||
|             int slaveOffset = (isLeftHand) ? (ROWS_PER_HAND) : 0; |  | ||||||
|             for (int i = 0; i < ROWS_PER_HAND; ++i) { |  | ||||||
|                 matrix[slaveOffset+i] = 0; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|     } else { |  | ||||||
|         // turn off the indicator led on no error
 |  | ||||||
|         TXLED0; |  | ||||||
|         error_count = 0; |  | ||||||
|     } |  | ||||||
|     matrix_scan_quantum(); |  | ||||||
|     return ret; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void matrix_slave_scan(void) { |  | ||||||
|     _matrix_scan(); |  | ||||||
| 
 |  | ||||||
|     int offset = (isLeftHand) ? 0 : ROWS_PER_HAND; |  | ||||||
| 
 |  | ||||||
| #ifdef USE_MATRIX_I2C |  | ||||||
|     for (int i = 0; i < ROWS_PER_HAND; ++i) { |  | ||||||
|         /* i2c_slave_buffer[i] = matrix[offset+i]; */ |  | ||||||
|         i2c_slave_buffer[i] = matrix[offset+i]; |  | ||||||
|     } |  | ||||||
| #else // USE_SERIAL
 |  | ||||||
|   #ifdef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
|     int change = 0; |  | ||||||
|   #endif |  | ||||||
|     for (int i = 0; i < ROWS_PER_HAND; ++i) { |  | ||||||
|   #ifdef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
|         if( serial_slave_buffer[i] != matrix[offset+i] ) |  | ||||||
| 	    change = 1; |  | ||||||
|   #endif |  | ||||||
|         serial_slave_buffer[i] = matrix[offset+i]; |  | ||||||
|     } |  | ||||||
|   #ifdef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
|     slave_buffer_change_count += change; |  | ||||||
|   #endif |  | ||||||
| #endif |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool matrix_is_modified(void) |  | ||||||
| { |  | ||||||
|     if (debouncing) return false; |  | ||||||
|     return true; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline |  | ||||||
| bool matrix_is_on(uint8_t row, uint8_t col) |  | ||||||
| { |  | ||||||
|     return (matrix[row] & ((matrix_row_t)1<<col)); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline |  | ||||||
| matrix_row_t matrix_get_row(uint8_t row) |  | ||||||
| { |  | ||||||
|     return matrix[row]; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void matrix_print(void) |  | ||||||
| { |  | ||||||
|     print("\nr/c 0123456789ABCDEF\n"); |  | ||||||
|     for (uint8_t row = 0; row < MATRIX_ROWS; row++) { |  | ||||||
|         phex(row); print(": "); |  | ||||||
|         pbin_reverse16(matrix_get_row(row)); |  | ||||||
|         print("\n"); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| uint8_t matrix_key_count(void) |  | ||||||
| { |  | ||||||
|     uint8_t count = 0; |  | ||||||
|     for (uint8_t i = 0; i < MATRIX_ROWS; i++) { |  | ||||||
|         count += bitpop16(matrix[i]); |  | ||||||
|     } |  | ||||||
|     return count; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static void  init_cols(void) |  | ||||||
| { |  | ||||||
|     for(int x = 0; x < MATRIX_COLS; x++) { |  | ||||||
|         _SFR_IO8((col_pins[x] >> 4) + 1) &=  ~_BV(col_pins[x] & 0xF); |  | ||||||
|         _SFR_IO8((col_pins[x] >> 4) + 2) |= _BV(col_pins[x] & 0xF); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static matrix_row_t read_cols(void) |  | ||||||
| { |  | ||||||
|     matrix_row_t result = 0; |  | ||||||
|     for(int x = 0; x < MATRIX_COLS; x++) { |  | ||||||
|         result |= (_SFR_IO8(col_pins[x] >> 4) & _BV(col_pins[x] & 0xF)) ? 0 : (1 << x); |  | ||||||
|     } |  | ||||||
|     return result; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static void unselect_rows(void) |  | ||||||
| { |  | ||||||
|     for(int x = 0; x < ROWS_PER_HAND; x++) { |  | ||||||
|         _SFR_IO8((row_pins[x] >> 4) + 1) &=  ~_BV(row_pins[x] & 0xF); |  | ||||||
|         _SFR_IO8((row_pins[x] >> 4) + 2) |= _BV(row_pins[x] & 0xF); |  | ||||||
|     } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static void select_row(uint8_t row) |  | ||||||
| { |  | ||||||
|     _SFR_IO8((row_pins[row] >> 4) + 1) |=  _BV(row_pins[row] & 0xF); |  | ||||||
|     _SFR_IO8((row_pins[row] >> 4) + 2) &= ~_BV(row_pins[row] & 0xF); |  | ||||||
| } |  | ||||||
| @ -1 +1,5 @@ | |||||||
| #include "rev1.h" | #include "naked60.h" | ||||||
|  | 
 | ||||||
|  | void matrix_init_kb(void) { | ||||||
|  | 	matrix_init_user(); | ||||||
|  | }; | ||||||
|  | |||||||
| @ -4,11 +4,6 @@ | |||||||
| 
 | 
 | ||||||
| #include "quantum.h" | #include "quantum.h" | ||||||
| 
 | 
 | ||||||
| #ifdef RGBLIGHT_ENABLE |  | ||||||
| //rgb led driver
 |  | ||||||
| #include "ws2812.h" |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| 
 | 
 | ||||||
| //////////////////////////////////////////////////////////////////////////////
 | //////////////////////////////////////////////////////////////////////////////
 | ||||||
| // When only use naked60.
 | // When only use naked60.
 | ||||||
| @ -59,16 +54,16 @@ | |||||||
|     L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, L4A, L4B  \ |     L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, L4A, L4B  \ | ||||||
|   ) \ |   ) \ | ||||||
|   { \ |   { \ | ||||||
|     {  L00,  L01,  L02,  L03,  L04,  L05,  L06,  L07,  L08,  L09,  L0A,  L0B,KC_NO,KC_NO  },  \ |     {  L00,  L01,  L02,  L03,  L04,  L05,  L06,  L07,  L08,  L09,  L0A,  L0B  },  \ | ||||||
|     {  L10,  L11,  L12,  L13,  L14,  L15,  L16,  L17,  L18,  L19,  L1A,  L1B,KC_NO,KC_NO  },  \ |     {  L10,  L11,  L12,  L13,  L14,  L15,  L16,  L17,  L18,  L19,  L1A,  L1B  },  \ | ||||||
|     {  L20,  L21,  L22,  L23,  L24,  L25,  L26,  L27,  L28,  L29,  L2A,  L2B,KC_NO,KC_NO  },  \ |     {  L20,  L21,  L22,  L23,  L24,  L25,  L26,  L27,  L28,  L29,  L2A,  L2B  },  \ | ||||||
|     {  L30,  L31,  L32,  L33,  L34,  L35,  L36,  L37,  L38,  L39,  L3A,  L3B,KC_NO,KC_NO  },  \ |     {  L30,  L31,  L32,  L33,  L34,  L35,  L36,  L37,  L38,  L39,  L3A,  L3B  },  \ | ||||||
|     {  L40,  L41,  L42,  L43,  L44,  L45,  L46,  L47,  L48,  L49,  L4A,  L4B,KC_NO,KC_NO  },  \ |     {  L40,  L41,  L42,  L43,  L44,  L45,  L46,  L47,  L48,  L49,  L4A,  L4B  },  \ | ||||||
|     {  R00,  R01,  R02,  R03,  R04,  R05,KC_NO,KC_NO,KC_NO,  R11,  R12,  R13,  R14,  R15  },  \ |     {  R00,  R01,  R02,  R03,  R04,  R05,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ | ||||||
|     {  R20,  R21,  R22,  R23,  R24,  R25,KC_NO,KC_NO,  R30,KC_NO,  R32,KC_NO,  R34,  R35  },  \ |     {KC_NO,  R11,  R12,  R13,  R14,  R15,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ | ||||||
|     {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ |     {  R20,  R21,  R22,  R23,  R24,  R25,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ | ||||||
|     {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ |     {  R30,KC_NO,  R32,KC_NO,  R34,  R35,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ | ||||||
|     {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  }   \ |     {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  }   \ | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
| //////////////////////////////////////////////////////////////////////////////
 | //////////////////////////////////////////////////////////////////////////////
 | ||||||
| @ -83,15 +78,15 @@ | |||||||
|     L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, L4A, L4B  \ |     L40, L41, L42, L43, L44, L45, L46, L47, L48, L49, L4A, L4B  \ | ||||||
|   ) \ |   ) \ | ||||||
|   { \ |   { \ | ||||||
|     {  L00,  L01,  L02,  L03,  L04,  L05,  L06,  L07,  L08,  L09,  L0A,  L0B,KC_NO,KC_NO  },  \ |     {  L00,  L01,  L02,  L03,  L04,  L05,  L06,  L07,  L08,  L09,  L0A,  L0B  },  \ | ||||||
|     {  L10,  L11,  L12,  L13,  L14,  L15,  L16,  L17,  L18,  L19,  L1A,  L1B,KC_NO,KC_NO  },  \ |     {  L10,  L11,  L12,  L13,  L14,  L15,  L16,  L17,  L18,  L19,  L1A,  L1B  },  \ | ||||||
|     {  L20,  L21,  L22,  L23,  L24,  L25,  L26,  L27,  L28,  L29,  L2A,  L2B,KC_NO,KC_NO  },  \ |     {  L20,  L21,  L22,  L23,  L24,  L25,  L26,  L27,  L28,  L29,  L2A,  L2B  },  \ | ||||||
|     {  L30,  L31,  L32,  L33,  L34,  L35,  L36,  L37,  L38,  L39,  L3A,  L3B,KC_NO,KC_NO  },  \ |     {  L30,  L31,  L32,  L33,  L34,  L35,  L36,  L37,  L38,  L39,  L3A,  L3B  },  \ | ||||||
|     {  L40,  L41,  L42,  L43,  L44,  L45,  L46,  L47,  L48,  L49,  L4A,  L4B,KC_NO,KC_NO  },  \ |     {  L40,  L41,  L42,  L43,  L44,  L45,  L46,  L47,  L48,  L49,  L4A,  L4B  },  \ | ||||||
|     {KC_NO,  R01,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,  R10,  R11,  R12,KC_NO,KC_NO,KC_NO  },  \ |     {KC_NO,  R01,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ | ||||||
|     {  R20,  R21,  R22,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ |     {  R10,  R11,  R12,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ | ||||||
|     {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ |     {  R20,  R21,  R22,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ | ||||||
|     {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ |     {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  },  \ | ||||||
|     {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  }   \ |     {KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO,KC_NO  }   \ | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -1,3 +0,0 @@ | |||||||
| SRC += matrix.c \
 |  | ||||||
|        split_util.c \
 |  | ||||||
|        split_scomm.c |  | ||||||
| @ -1,8 +0,0 @@ | |||||||
| //// #error rev2 serial config
 |  | ||||||
| 
 |  | ||||||
| #ifndef SOFT_SERIAL_PIN |  | ||||||
| /* Soft Serial defines */ |  | ||||||
| #define SOFT_SERIAL_PIN D2 |  | ||||||
| 
 |  | ||||||
| #define SERIAL_USE_MULTI_TRANSACTION |  | ||||||
| #endif |  | ||||||
| @ -1,8 +0,0 @@ | |||||||
| #ifndef SERIAL_CONFIG_SIMPLEAPI_H |  | ||||||
| #define SERIAL_CONFIG_SIMPLEAPI_H |  | ||||||
| 
 |  | ||||||
| #undef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
| #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2 |  | ||||||
| #define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2 |  | ||||||
| 
 |  | ||||||
| #endif // SERIAL_CONFIG_SIMPLEAPI_H
 |  | ||||||
| @ -1,92 +0,0 @@ | |||||||
| #ifdef USE_SERIAL |  | ||||||
| #ifdef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
| /* --- USE flexible API (using multi-type transaction function) --- */ |  | ||||||
| 
 |  | ||||||
| #include <stdbool.h> |  | ||||||
| #include <stdint.h> |  | ||||||
| #include <stddef.h> |  | ||||||
| #include <split_scomm.h> |  | ||||||
| #include "serial.h" |  | ||||||
| #ifdef CONSOLE_ENABLE |  | ||||||
|   #include <print.h> |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0}; |  | ||||||
| uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0}; |  | ||||||
| uint8_t volatile status_com = 0; |  | ||||||
| uint8_t volatile status1 = 0; |  | ||||||
| uint8_t slave_buffer_change_count = 0; |  | ||||||
| uint8_t s_change_old = 0xff; |  | ||||||
| uint8_t s_change_new = 0xff; |  | ||||||
| 
 |  | ||||||
| SSTD_t transactions[] = { |  | ||||||
| #define GET_SLAVE_STATUS 0 |  | ||||||
|     /* master buffer not changed, only recive slave_buffer_change_count */ |  | ||||||
|     { (uint8_t *)&status_com, |  | ||||||
|       0, NULL, |  | ||||||
|       sizeof(slave_buffer_change_count), &slave_buffer_change_count, |  | ||||||
|     }, |  | ||||||
| #define PUT_MASTER_GET_SLAVE_STATUS 1 |  | ||||||
|     /* master buffer changed need send, and recive slave_buffer_change_count  */ |  | ||||||
|     { (uint8_t *)&status_com, |  | ||||||
|       sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer, |  | ||||||
|       sizeof(slave_buffer_change_count), &slave_buffer_change_count, |  | ||||||
|     }, |  | ||||||
| #define GET_SLAVE_BUFFER 2 |  | ||||||
|     /* recive serial_slave_buffer */ |  | ||||||
|     { (uint8_t *)&status1, |  | ||||||
|       0, NULL, |  | ||||||
|       sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer |  | ||||||
|     } |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void serial_master_init(void) |  | ||||||
| { |  | ||||||
|     soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void serial_slave_init(void) |  | ||||||
| { |  | ||||||
|     soft_serial_target_init(transactions, TID_LIMIT(transactions)); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // 0 => no error
 |  | ||||||
| // 1 => slave did not respond
 |  | ||||||
| // 2 => checksum error
 |  | ||||||
| int serial_update_buffers(int master_update) |  | ||||||
| { |  | ||||||
|     int status, smatstatus; |  | ||||||
|     static int need_retry = 0; |  | ||||||
| 
 |  | ||||||
|     if( s_change_old != s_change_new ) { |  | ||||||
|         smatstatus = soft_serial_transaction(GET_SLAVE_BUFFER); |  | ||||||
|         if( smatstatus == TRANSACTION_END ) { |  | ||||||
|             s_change_old = s_change_new; |  | ||||||
| #ifdef CONSOLE_ENABLE |  | ||||||
|             uprintf("slave matrix = %b %b %b %b %b\n", |  | ||||||
|                     serial_slave_buffer[0], serial_slave_buffer[1], |  | ||||||
|                     serial_slave_buffer[2], serial_slave_buffer[3], |  | ||||||
|                     serial_slave_buffer[4] ); |  | ||||||
| #endif |  | ||||||
|         } |  | ||||||
|     } else { |  | ||||||
|         // serial_slave_buffer dosen't change
 |  | ||||||
|         smatstatus = TRANSACTION_END; // dummy status
 |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if( !master_update && !need_retry) { |  | ||||||
|         status = soft_serial_transaction(GET_SLAVE_STATUS); |  | ||||||
|     } else { |  | ||||||
|         status = soft_serial_transaction(PUT_MASTER_GET_SLAVE_STATUS); |  | ||||||
|     } |  | ||||||
|     if( status == TRANSACTION_END ) { |  | ||||||
|         s_change_new = slave_buffer_change_count; |  | ||||||
|         need_retry = 0; |  | ||||||
|     } else { |  | ||||||
|         need_retry = 1; |  | ||||||
|     } |  | ||||||
|     return smatstatus; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #endif // SERIAL_USE_MULTI_TRANSACTION
 |  | ||||||
| #endif /* USE_SERIAL */ |  | ||||||
| @ -1,22 +0,0 @@ | |||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #ifndef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
| /* --- USE Simple API (OLD API, compatible with let's split serial.c) --- */ |  | ||||||
| #include "serial.h" |  | ||||||
| 
 |  | ||||||
| #else |  | ||||||
| /* --- USE flexible API (using multi-type transaction function) --- */ |  | ||||||
| // Buffers for master - slave communication
 |  | ||||||
| #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2 |  | ||||||
| #define SERIAL_MASTER_BUFFER_LENGTH MATRIX_ROWS/2 |  | ||||||
| 
 |  | ||||||
| extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH]; |  | ||||||
| extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH]; |  | ||||||
| extern uint8_t slave_buffer_change_count; |  | ||||||
| 
 |  | ||||||
| void serial_master_init(void); |  | ||||||
| void serial_slave_init(void); |  | ||||||
| int serial_update_buffers(int master_changed); |  | ||||||
| 
 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| @ -1,70 +0,0 @@ | |||||||
| #include <avr/io.h> |  | ||||||
| #include <avr/wdt.h> |  | ||||||
| #include <avr/power.h> |  | ||||||
| #include <avr/interrupt.h> |  | ||||||
| #include <util/delay.h> |  | ||||||
| #include <avr/eeprom.h> |  | ||||||
| #include "split_util.h" |  | ||||||
| #include "matrix.h" |  | ||||||
| #include "keyboard.h" |  | ||||||
| 
 |  | ||||||
| #ifdef USE_MATRIX_I2C |  | ||||||
| #  include "i2c.h" |  | ||||||
| #else |  | ||||||
| #  include "split_scomm.h" |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| volatile bool isLeftHand = true; |  | ||||||
| 
 |  | ||||||
| static void setup_handedness(void) { |  | ||||||
|   #ifdef EE_HANDS |  | ||||||
|     isLeftHand = eeprom_read_byte(EECONFIG_HANDEDNESS); |  | ||||||
|   #else |  | ||||||
|     // I2C_MASTER_RIGHT is deprecated, use MASTER_RIGHT instead, since this works for both serial and i2c
 |  | ||||||
|     #if defined(I2C_MASTER_RIGHT) || defined(MASTER_RIGHT) |  | ||||||
|       isLeftHand = !has_usb(); |  | ||||||
|     #else |  | ||||||
|       isLeftHand = has_usb(); |  | ||||||
|     #endif |  | ||||||
|   #endif |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static void keyboard_master_setup(void) { |  | ||||||
| 
 |  | ||||||
| #ifdef USE_MATRIX_I2C |  | ||||||
|     i2c_master_init(); |  | ||||||
| #else |  | ||||||
|     serial_master_init(); |  | ||||||
| #endif |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static void keyboard_slave_setup(void) { |  | ||||||
| 
 |  | ||||||
| #ifdef USE_MATRIX_I2C |  | ||||||
|     i2c_slave_init(SLAVE_I2C_ADDRESS); |  | ||||||
| #else |  | ||||||
|     serial_slave_init(); |  | ||||||
| #endif |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| bool has_usb(void) { |  | ||||||
|    USBCON |= (1 << OTGPADE); //enables VBUS pad
 |  | ||||||
|    _delay_us(5); |  | ||||||
|    return (USBSTA & (1<<VBUS));  //checks state of VBUS
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void split_keyboard_setup(void) { |  | ||||||
|    setup_handedness(); |  | ||||||
| 
 |  | ||||||
|    if (has_usb()) { |  | ||||||
|       keyboard_master_setup(); |  | ||||||
|    } else { |  | ||||||
|       keyboard_slave_setup(); |  | ||||||
|    } |  | ||||||
|    sei(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // this code runs before the usb and keyboard is initialized
 |  | ||||||
| void matrix_setup(void) { |  | ||||||
|     split_keyboard_setup(); |  | ||||||
| } |  | ||||||
| @ -1,16 +0,0 @@ | |||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include <stdbool.h> |  | ||||||
| #include "eeconfig.h" |  | ||||||
| 
 |  | ||||||
| #define SLAVE_I2C_ADDRESS           0x32 |  | ||||||
| 
 |  | ||||||
| extern volatile bool isLeftHand; |  | ||||||
| 
 |  | ||||||
| // slave version of matix scan, defined in matrix.c
 |  | ||||||
| void matrix_slave_scan(void); |  | ||||||
| 
 |  | ||||||
| void split_keyboard_setup(void); |  | ||||||
| bool has_usb(void); |  | ||||||
| 
 |  | ||||||
| void matrix_master_OLED_init (void); |  | ||||||
| @ -1,5 +1,3 @@ | |||||||
| QUANTUM_LIB_SRC += serial.c |  | ||||||
| 
 |  | ||||||
| # MCU name
 | # MCU name
 | ||||||
| MCU = atmega32u4 | MCU = atmega32u4 | ||||||
| 
 | 
 | ||||||
| @ -19,9 +17,9 @@ BOOTLOADER = caterina | |||||||
| #
 | #
 | ||||||
| BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000) | BOOTMAGIC_ENABLE = no       # Virtual DIP switch configuration(+1000) | ||||||
| MOUSEKEY_ENABLE = yes       # Mouse keys(+4700) | MOUSEKEY_ENABLE = yes       # Mouse keys(+4700) | ||||||
| EXTRAKEY_ENABLE = no        # Audio control and System control(+450) | EXTRAKEY_ENABLE = yes       # Audio control and System control(+450) | ||||||
| CONSOLE_ENABLE = no         # Console for debug(+400) | CONSOLE_ENABLE = no         # Console for debug(+400) | ||||||
| COMMAND_ENABLE = no         # Commands for debug and configuration | COMMAND_ENABLE = yes        # Commands for debug and configuration | ||||||
| NKRO_ENABLE = no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | NKRO_ENABLE = no            # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||||||
| BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality | BACKLIGHT_ENABLE = no       # Enable keyboard backlight functionality | ||||||
| MIDI_ENABLE = no            # MIDI controls | MIDI_ENABLE = no            # MIDI controls | ||||||
| @ -30,11 +28,11 @@ UNICODE_ENABLE = no         # Unicode | |||||||
| BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID | BLUETOOTH_ENABLE = no       # Enable Bluetooth with the Adafruit EZ-Key HID | ||||||
| RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  | RGBLIGHT_ENABLE = no        # Enable WS2812 RGB underlight.  | ||||||
| TAP_DANCE_ENABLE = yes | TAP_DANCE_ENABLE = yes | ||||||
| SUBPROJECT_rev1 = no | OLED_DRIVER_ENABLE = no | ||||||
| USE_I2C = no | USE_I2C = no | ||||||
| # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | # Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
 | ||||||
| SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend | SLEEP_LED_ENABLE = no    # Breathing sleep LED during USB suspend | ||||||
| 
 | 
 | ||||||
| CUSTOM_MATRIX = yes | SPLIT_KEYBOARD = yes | ||||||
| 
 | 
 | ||||||
| DEFAULT_FOLDER = naked60/rev1 | DEFAULT_FOLDER = naked60/rev1 | ||||||
|  | |||||||
| @ -1,590 +0,0 @@ | |||||||
| /*
 |  | ||||||
|  * WARNING: be careful changing this code, it is very timing dependent |  | ||||||
|  * |  | ||||||
|  * 2018-10-28 checked |  | ||||||
|  *  avr-gcc 4.9.2 |  | ||||||
|  *  avr-gcc 5.4.0 |  | ||||||
|  *  avr-gcc 7.3.0 |  | ||||||
|  */ |  | ||||||
| 
 |  | ||||||
| #ifndef F_CPU |  | ||||||
| #define F_CPU 16000000 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #include <avr/io.h> |  | ||||||
| #include <avr/interrupt.h> |  | ||||||
| #include <util/delay.h> |  | ||||||
| #include <stddef.h> |  | ||||||
| #include <stdbool.h> |  | ||||||
| #include "serial.h" |  | ||||||
| //#include <pro_micro.h>
 |  | ||||||
| 
 |  | ||||||
| #ifdef SOFT_SERIAL_PIN |  | ||||||
| 
 |  | ||||||
| #ifdef __AVR_ATmega32U4__ |  | ||||||
|   // if using ATmega32U4 I2C, can not use PD0 and PD1 in soft serial.
 |  | ||||||
|   #ifdef USE_I2C |  | ||||||
|     #if SOFT_SERIAL_PIN == D0 || SOFT_SERIAL_PIN == D1 |  | ||||||
|       #error Using ATmega32U4 I2C, so can not use PD0, PD1 |  | ||||||
|     #endif |  | ||||||
|   #endif |  | ||||||
| 
 |  | ||||||
|   #if SOFT_SERIAL_PIN >= D0 && SOFT_SERIAL_PIN <= D3 |  | ||||||
|     #define SERIAL_PIN_DDR   DDRD |  | ||||||
|     #define SERIAL_PIN_PORT  PORTD |  | ||||||
|     #define SERIAL_PIN_INPUT PIND |  | ||||||
|     #if SOFT_SERIAL_PIN == D0 |  | ||||||
|       #define SERIAL_PIN_MASK _BV(PD0) |  | ||||||
|       #define EIMSK_BIT       _BV(INT0) |  | ||||||
|       #define EICRx_BIT       (~(_BV(ISC00) | _BV(ISC01))) |  | ||||||
|       #define SERIAL_PIN_INTERRUPT INT0_vect |  | ||||||
|     #elif  SOFT_SERIAL_PIN == D1 |  | ||||||
|       #define SERIAL_PIN_MASK _BV(PD1) |  | ||||||
|       #define EIMSK_BIT       _BV(INT1) |  | ||||||
|       #define EICRx_BIT       (~(_BV(ISC10) | _BV(ISC11))) |  | ||||||
|       #define SERIAL_PIN_INTERRUPT INT1_vect |  | ||||||
|     #elif  SOFT_SERIAL_PIN == D2 |  | ||||||
|       #define SERIAL_PIN_MASK _BV(PD2) |  | ||||||
|       #define EIMSK_BIT       _BV(INT2) |  | ||||||
|       #define EICRx_BIT       (~(_BV(ISC20) | _BV(ISC21))) |  | ||||||
|       #define SERIAL_PIN_INTERRUPT INT2_vect |  | ||||||
|     #elif  SOFT_SERIAL_PIN == D3 |  | ||||||
|       #define SERIAL_PIN_MASK _BV(PD3) |  | ||||||
|       #define EIMSK_BIT       _BV(INT3) |  | ||||||
|       #define EICRx_BIT       (~(_BV(ISC30) | _BV(ISC31))) |  | ||||||
|       #define SERIAL_PIN_INTERRUPT INT3_vect |  | ||||||
|     #endif |  | ||||||
|   #elif  SOFT_SERIAL_PIN == E6 |  | ||||||
|     #define SERIAL_PIN_DDR   DDRE |  | ||||||
|     #define SERIAL_PIN_PORT  PORTE |  | ||||||
|     #define SERIAL_PIN_INPUT PINE |  | ||||||
|     #define SERIAL_PIN_MASK  _BV(PE6) |  | ||||||
|     #define EIMSK_BIT        _BV(INT6) |  | ||||||
|     #define EICRx_BIT        (~(_BV(ISC60) | _BV(ISC61))) |  | ||||||
|     #define SERIAL_PIN_INTERRUPT INT6_vect |  | ||||||
|   #else |  | ||||||
|   #error invalid SOFT_SERIAL_PIN value |  | ||||||
|   #endif |  | ||||||
| 
 |  | ||||||
| #else |  | ||||||
|  #error serial.c now support ATmega32U4 only |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| //////////////// for backward compatibility ////////////////////////////////
 |  | ||||||
| #if !defined(SERIAL_USE_SINGLE_TRANSACTION) && !defined(SERIAL_USE_MULTI_TRANSACTION) |  | ||||||
| /* --- USE OLD API (compatible with let's split serial.c) */ |  | ||||||
|   #if SERIAL_SLAVE_BUFFER_LENGTH > 0 |  | ||||||
|   uint8_t volatile serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH] = {0}; |  | ||||||
|   #endif |  | ||||||
|   #if SERIAL_MASTER_BUFFER_LENGTH > 0 |  | ||||||
|   uint8_t volatile serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH] = {0}; |  | ||||||
|   #endif |  | ||||||
|   uint8_t volatile status0 = 0; |  | ||||||
| 
 |  | ||||||
| SSTD_t transactions[] = { |  | ||||||
|     { (uint8_t *)&status0, |  | ||||||
|   #if SERIAL_MASTER_BUFFER_LENGTH > 0 |  | ||||||
|       sizeof(serial_master_buffer), (uint8_t *)serial_master_buffer, |  | ||||||
|   #else |  | ||||||
|       0, (uint8_t *)NULL, |  | ||||||
|   #endif |  | ||||||
|   #if SERIAL_SLAVE_BUFFER_LENGTH > 0 |  | ||||||
|       sizeof(serial_slave_buffer), (uint8_t *)serial_slave_buffer |  | ||||||
|   #else |  | ||||||
|       0, (uint8_t *)NULL, |  | ||||||
|   #endif |  | ||||||
|   } |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| void serial_master_init(void) |  | ||||||
| { soft_serial_initiator_init(transactions, TID_LIMIT(transactions)); } |  | ||||||
| 
 |  | ||||||
| void serial_slave_init(void) |  | ||||||
| { soft_serial_target_init(transactions, TID_LIMIT(transactions)); } |  | ||||||
| 
 |  | ||||||
| // 0 => no error
 |  | ||||||
| // 1 => slave did not respond
 |  | ||||||
| // 2 => checksum error
 |  | ||||||
| int serial_update_buffers() |  | ||||||
| { |  | ||||||
|     int result; |  | ||||||
|     result = soft_serial_transaction(); |  | ||||||
|     return result; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #endif // end of OLD API (compatible with let's split serial.c)
 |  | ||||||
| ////////////////////////////////////////////////////////////////////////////
 |  | ||||||
| 
 |  | ||||||
| #define ALWAYS_INLINE __attribute__((always_inline)) |  | ||||||
| #define NO_INLINE __attribute__((noinline)) |  | ||||||
| #define _delay_sub_us(x)    __builtin_avr_delay_cycles(x) |  | ||||||
| 
 |  | ||||||
| // parity check
 |  | ||||||
| #define ODD_PARITY 1 |  | ||||||
| #define EVEN_PARITY 0 |  | ||||||
| #define PARITY EVEN_PARITY |  | ||||||
| 
 |  | ||||||
| #ifdef SERIAL_DELAY |  | ||||||
|   // custom setup in config.h
 |  | ||||||
|   // #define TID_SEND_ADJUST 2
 |  | ||||||
|   // #define SERIAL_DELAY 6             // micro sec
 |  | ||||||
|   // #define READ_WRITE_START_ADJUST 30 // cycles
 |  | ||||||
|   // #define READ_WRITE_WIDTH_ADJUST 8 // cycles
 |  | ||||||
| #else |  | ||||||
| // ============ Standard setups ============
 |  | ||||||
| 
 |  | ||||||
| #ifndef SELECT_SOFT_SERIAL_SPEED |  | ||||||
| #define SELECT_SOFT_SERIAL_SPEED 1 |  | ||||||
| //  0: about 189kbps
 |  | ||||||
| //  1: about 137kbps (default)
 |  | ||||||
| //  2: about 75kbps
 |  | ||||||
| //  3: about 39kbps
 |  | ||||||
| //  4: about 26kbps
 |  | ||||||
| //  5: about 20kbps
 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #if __GNUC__ < 6 |  | ||||||
|   #define TID_SEND_ADJUST 14 |  | ||||||
| #else |  | ||||||
|   #define TID_SEND_ADJUST 2 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #if SELECT_SOFT_SERIAL_SPEED == 0 |  | ||||||
|   // Very High speed
 |  | ||||||
|   #define SERIAL_DELAY 4             // micro sec
 |  | ||||||
|   #if __GNUC__ < 6 |  | ||||||
|     #define READ_WRITE_START_ADJUST 33 // cycles
 |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 3 // cycles
 |  | ||||||
|   #else |  | ||||||
|     #define READ_WRITE_START_ADJUST 34 // cycles
 |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 7 // cycles
 |  | ||||||
|   #endif |  | ||||||
| #elif SELECT_SOFT_SERIAL_SPEED == 1 |  | ||||||
|   // High speed
 |  | ||||||
|   #define SERIAL_DELAY 6             // micro sec
 |  | ||||||
|   #if __GNUC__ < 6 |  | ||||||
|     #define READ_WRITE_START_ADJUST 30 // cycles
 |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 3 // cycles
 |  | ||||||
|   #else |  | ||||||
|     #define READ_WRITE_START_ADJUST 33 // cycles
 |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 7 // cycles
 |  | ||||||
|   #endif |  | ||||||
| #elif SELECT_SOFT_SERIAL_SPEED == 2 |  | ||||||
|   // Middle speed
 |  | ||||||
|   #define SERIAL_DELAY 12            // micro sec
 |  | ||||||
|   #define READ_WRITE_START_ADJUST 30 // cycles
 |  | ||||||
|   #if __GNUC__ < 6 |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 3 // cycles
 |  | ||||||
|   #else |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 7 // cycles
 |  | ||||||
|   #endif |  | ||||||
| #elif SELECT_SOFT_SERIAL_SPEED == 3 |  | ||||||
|   // Low speed
 |  | ||||||
|   #define SERIAL_DELAY 24            // micro sec
 |  | ||||||
|   #define READ_WRITE_START_ADJUST 30 // cycles
 |  | ||||||
|   #if __GNUC__ < 6 |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 3 // cycles
 |  | ||||||
|   #else |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 7 // cycles
 |  | ||||||
|   #endif |  | ||||||
| #elif SELECT_SOFT_SERIAL_SPEED == 4 |  | ||||||
|   // Very Low speed
 |  | ||||||
|   #define SERIAL_DELAY 36            // micro sec
 |  | ||||||
|   #define READ_WRITE_START_ADJUST 30 // cycles
 |  | ||||||
|   #if __GNUC__ < 6 |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 3 // cycles
 |  | ||||||
|   #else |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 7 // cycles
 |  | ||||||
|   #endif |  | ||||||
| #elif SELECT_SOFT_SERIAL_SPEED == 5 |  | ||||||
|   // Ultra Low speed
 |  | ||||||
|   #define SERIAL_DELAY 48            // micro sec
 |  | ||||||
|   #define READ_WRITE_START_ADJUST 30 // cycles
 |  | ||||||
|   #if __GNUC__ < 6 |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 3 // cycles
 |  | ||||||
|   #else |  | ||||||
|     #define READ_WRITE_WIDTH_ADJUST 7 // cycles
 |  | ||||||
|   #endif |  | ||||||
| #else |  | ||||||
| #error invalid SELECT_SOFT_SERIAL_SPEED value |  | ||||||
| #endif /* SELECT_SOFT_SERIAL_SPEED */ |  | ||||||
| #endif /* SERIAL_DELAY */ |  | ||||||
| 
 |  | ||||||
| #define SERIAL_DELAY_HALF1 (SERIAL_DELAY/2) |  | ||||||
| #define SERIAL_DELAY_HALF2 (SERIAL_DELAY - SERIAL_DELAY/2) |  | ||||||
| 
 |  | ||||||
| #define SLAVE_INT_WIDTH_US 1 |  | ||||||
| #ifndef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
|   #define SLAVE_INT_RESPONSE_TIME SERIAL_DELAY |  | ||||||
| #else |  | ||||||
|   #define SLAVE_INT_ACK_WIDTH_UNIT 2 |  | ||||||
|   #define SLAVE_INT_ACK_WIDTH 4 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| static SSTD_t *Transaction_table = NULL; |  | ||||||
| static uint8_t Transaction_table_size = 0; |  | ||||||
| 
 |  | ||||||
| inline static void serial_delay(void) ALWAYS_INLINE; |  | ||||||
| inline static |  | ||||||
| void serial_delay(void) { |  | ||||||
|   _delay_us(SERIAL_DELAY); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline static void serial_delay_half1(void) ALWAYS_INLINE; |  | ||||||
| inline static |  | ||||||
| void serial_delay_half1(void) { |  | ||||||
|   _delay_us(SERIAL_DELAY_HALF1); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline static void serial_delay_half2(void) ALWAYS_INLINE; |  | ||||||
| inline static |  | ||||||
| void serial_delay_half2(void) { |  | ||||||
|   _delay_us(SERIAL_DELAY_HALF2); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline static void serial_output(void) ALWAYS_INLINE; |  | ||||||
| inline static |  | ||||||
| void serial_output(void) { |  | ||||||
|   SERIAL_PIN_DDR |= SERIAL_PIN_MASK; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // make the serial pin an input with pull-up resistor
 |  | ||||||
| inline static void serial_input_with_pullup(void) ALWAYS_INLINE; |  | ||||||
| inline static |  | ||||||
| void serial_input_with_pullup(void) { |  | ||||||
|   SERIAL_PIN_DDR  &= ~SERIAL_PIN_MASK; |  | ||||||
|   SERIAL_PIN_PORT |= SERIAL_PIN_MASK; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline static uint8_t serial_read_pin(void) ALWAYS_INLINE; |  | ||||||
| inline static |  | ||||||
| uint8_t serial_read_pin(void) { |  | ||||||
|   return !!(SERIAL_PIN_INPUT & SERIAL_PIN_MASK); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline static void serial_low(void) ALWAYS_INLINE; |  | ||||||
| inline static |  | ||||||
| void serial_low(void) { |  | ||||||
|   SERIAL_PIN_PORT &= ~SERIAL_PIN_MASK; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline static void serial_high(void) ALWAYS_INLINE; |  | ||||||
| inline static |  | ||||||
| void serial_high(void) { |  | ||||||
|   SERIAL_PIN_PORT |= SERIAL_PIN_MASK; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size) |  | ||||||
| { |  | ||||||
|     Transaction_table = sstd_table; |  | ||||||
|     Transaction_table_size = (uint8_t)sstd_table_size; |  | ||||||
|     serial_output(); |  | ||||||
|     serial_high(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size) |  | ||||||
| { |  | ||||||
|     Transaction_table = sstd_table; |  | ||||||
|     Transaction_table_size = (uint8_t)sstd_table_size; |  | ||||||
|     serial_input_with_pullup(); |  | ||||||
| 
 |  | ||||||
|     // Enable INT0-INT3,INT6
 |  | ||||||
|     EIMSK |= EIMSK_BIT; |  | ||||||
| #if SERIAL_PIN_MASK == _BV(PE6) |  | ||||||
|     // Trigger on falling edge of INT6
 |  | ||||||
|     EICRB &= EICRx_BIT; |  | ||||||
| #else |  | ||||||
|     // Trigger on falling edge of INT0-INT3
 |  | ||||||
|     EICRA &= EICRx_BIT; |  | ||||||
| #endif |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Used by the sender to synchronize timing with the reciver.
 |  | ||||||
| static void sync_recv(void) NO_INLINE; |  | ||||||
| static |  | ||||||
| void sync_recv(void) { |  | ||||||
|   for (uint8_t i = 0; i < SERIAL_DELAY*5 && serial_read_pin(); i++ ) { |  | ||||||
|   } |  | ||||||
|   // This shouldn't hang if the target disconnects because the
 |  | ||||||
|   // serial line will float to high if the target does disconnect.
 |  | ||||||
|   while (!serial_read_pin()); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Used by the reciver to send a synchronization signal to the sender.
 |  | ||||||
| static void sync_send(void) NO_INLINE; |  | ||||||
| static |  | ||||||
| void sync_send(void) { |  | ||||||
|   serial_low(); |  | ||||||
|   serial_delay(); |  | ||||||
|   serial_high(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Reads a byte from the serial line
 |  | ||||||
| static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) NO_INLINE; |  | ||||||
| static uint8_t serial_read_chunk(uint8_t *pterrcount, uint8_t bit) { |  | ||||||
|     uint8_t byte, i, p, pb; |  | ||||||
| 
 |  | ||||||
|   _delay_sub_us(READ_WRITE_START_ADJUST); |  | ||||||
|   for( i = 0, byte = 0, p = PARITY; i < bit; i++ ) { |  | ||||||
|       serial_delay_half1();   // read the middle of pulses
 |  | ||||||
|       if( serial_read_pin() ) { |  | ||||||
|           byte = (byte << 1) | 1; p ^= 1; |  | ||||||
|       } else { |  | ||||||
|           byte = (byte << 1) | 0; p ^= 0; |  | ||||||
|       } |  | ||||||
|       _delay_sub_us(READ_WRITE_WIDTH_ADJUST); |  | ||||||
|       serial_delay_half2(); |  | ||||||
|   } |  | ||||||
|   /* recive parity bit */ |  | ||||||
|   serial_delay_half1();   // read the middle of pulses
 |  | ||||||
|   pb = serial_read_pin(); |  | ||||||
|   _delay_sub_us(READ_WRITE_WIDTH_ADJUST); |  | ||||||
|   serial_delay_half2(); |  | ||||||
| 
 |  | ||||||
|   *pterrcount += (p != pb)? 1 : 0; |  | ||||||
| 
 |  | ||||||
|   return byte; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // Sends a byte with MSB ordering
 |  | ||||||
| void serial_write_chunk(uint8_t data, uint8_t bit) NO_INLINE; |  | ||||||
| void serial_write_chunk(uint8_t data, uint8_t bit) { |  | ||||||
|     uint8_t b, p; |  | ||||||
|     for( p = PARITY, b = 1<<(bit-1); b ; b >>= 1) { |  | ||||||
|         if(data & b) { |  | ||||||
|             serial_high(); p ^= 1; |  | ||||||
|         } else { |  | ||||||
|             serial_low();  p ^= 0; |  | ||||||
|         } |  | ||||||
|         serial_delay(); |  | ||||||
|     } |  | ||||||
|     /* send parity bit */ |  | ||||||
|     if(p & 1) { serial_high(); } |  | ||||||
|     else      { serial_low(); } |  | ||||||
|     serial_delay(); |  | ||||||
| 
 |  | ||||||
|     serial_low(); // sync_send() / senc_recv() need raise edge
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static void serial_send_packet(uint8_t *buffer, uint8_t size) NO_INLINE; |  | ||||||
| static |  | ||||||
| void serial_send_packet(uint8_t *buffer, uint8_t size) { |  | ||||||
|   for (uint8_t i = 0; i < size; ++i) { |  | ||||||
|     uint8_t data; |  | ||||||
|     data = buffer[i]; |  | ||||||
|     sync_send(); |  | ||||||
|     serial_write_chunk(data,8); |  | ||||||
|   } |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) NO_INLINE; |  | ||||||
| static |  | ||||||
| uint8_t serial_recive_packet(uint8_t *buffer, uint8_t size) { |  | ||||||
|   uint8_t pecount = 0; |  | ||||||
|   for (uint8_t i = 0; i < size; ++i) { |  | ||||||
|     uint8_t data; |  | ||||||
|     sync_recv(); |  | ||||||
|     data = serial_read_chunk(&pecount, 8); |  | ||||||
|     buffer[i] = data; |  | ||||||
|   } |  | ||||||
|   return pecount == 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline static |  | ||||||
| void change_sender2reciver(void) { |  | ||||||
|     sync_send();          //0
 |  | ||||||
|     serial_delay_half1(); //1
 |  | ||||||
|     serial_low();         //2
 |  | ||||||
|     serial_input_with_pullup(); //2
 |  | ||||||
|     serial_delay_half1(); //3
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| inline static |  | ||||||
| void change_reciver2sender(void) { |  | ||||||
|     sync_recv();     //0
 |  | ||||||
|     serial_delay();  //1
 |  | ||||||
|     serial_low();    //3
 |  | ||||||
|     serial_output(); //3
 |  | ||||||
|     serial_delay_half1(); //4
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| static inline uint8_t nibble_bits_count(uint8_t bits) |  | ||||||
| { |  | ||||||
|     bits = (bits & 0x5) + (bits >> 1 & 0x5); |  | ||||||
|     bits = (bits & 0x3) + (bits >> 2 & 0x3); |  | ||||||
|     return bits; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // interrupt handle to be used by the target device
 |  | ||||||
| ISR(SERIAL_PIN_INTERRUPT) { |  | ||||||
| 
 |  | ||||||
| #ifndef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
|   serial_low(); |  | ||||||
|   serial_output(); |  | ||||||
|   SSTD_t *trans = Transaction_table; |  | ||||||
| #else |  | ||||||
|   // recive transaction table index
 |  | ||||||
|   uint8_t tid, bits; |  | ||||||
|   uint8_t pecount = 0; |  | ||||||
|   sync_recv(); |  | ||||||
|   bits = serial_read_chunk(&pecount,7); |  | ||||||
|   tid = bits>>3; |  | ||||||
|   bits = (bits&7) != nibble_bits_count(tid); |  | ||||||
|   if( bits || pecount> 0 || tid > Transaction_table_size ) { |  | ||||||
|       return; |  | ||||||
|   } |  | ||||||
|   serial_delay_half1(); |  | ||||||
| 
 |  | ||||||
|   serial_high(); // response step1 low->high
 |  | ||||||
|   serial_output(); |  | ||||||
|   _delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT*SLAVE_INT_ACK_WIDTH); |  | ||||||
|   SSTD_t *trans = &Transaction_table[tid]; |  | ||||||
|   serial_low(); // response step2 ack high->low
 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|   // target send phase
 |  | ||||||
|   if( trans->target2initiator_buffer_size > 0 ) |  | ||||||
|       serial_send_packet((uint8_t *)trans->target2initiator_buffer, |  | ||||||
|                          trans->target2initiator_buffer_size); |  | ||||||
|   // target switch to input
 |  | ||||||
|   change_sender2reciver(); |  | ||||||
| 
 |  | ||||||
|   // target recive phase
 |  | ||||||
|   if( trans->initiator2target_buffer_size > 0 ) { |  | ||||||
|       if (serial_recive_packet((uint8_t *)trans->initiator2target_buffer, |  | ||||||
|                                trans->initiator2target_buffer_size) ) { |  | ||||||
|           *trans->status = TRANSACTION_ACCEPTED; |  | ||||||
|       } else { |  | ||||||
|           *trans->status = TRANSACTION_DATA_ERROR; |  | ||||||
|       } |  | ||||||
|   } else { |  | ||||||
|       *trans->status = TRANSACTION_ACCEPTED; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   sync_recv(); //weit initiator output to high
 |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /////////
 |  | ||||||
| //  start transaction by initiator
 |  | ||||||
| //
 |  | ||||||
| // int  soft_serial_transaction(int sstd_index)
 |  | ||||||
| //
 |  | ||||||
| // Returns:
 |  | ||||||
| //    TRANSACTION_END
 |  | ||||||
| //    TRANSACTION_NO_RESPONSE
 |  | ||||||
| //    TRANSACTION_DATA_ERROR
 |  | ||||||
| // this code is very time dependent, so we need to disable interrupts
 |  | ||||||
| #ifndef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
| int  soft_serial_transaction(void) { |  | ||||||
|   SSTD_t *trans = Transaction_table; |  | ||||||
| #else |  | ||||||
| int  soft_serial_transaction(int sstd_index) { |  | ||||||
|   if( sstd_index > Transaction_table_size ) |  | ||||||
|       return TRANSACTION_TYPE_ERROR; |  | ||||||
|   SSTD_t *trans = &Transaction_table[sstd_index]; |  | ||||||
| #endif |  | ||||||
|   cli(); |  | ||||||
| 
 |  | ||||||
|   // signal to the target that we want to start a transaction
 |  | ||||||
|   serial_output(); |  | ||||||
|   serial_low(); |  | ||||||
|   _delay_us(SLAVE_INT_WIDTH_US); |  | ||||||
| 
 |  | ||||||
| #ifndef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
|   // wait for the target response
 |  | ||||||
|   serial_input_with_pullup(); |  | ||||||
|   _delay_us(SLAVE_INT_RESPONSE_TIME); |  | ||||||
| 
 |  | ||||||
|   // check if the target is present
 |  | ||||||
|   if (serial_read_pin()) { |  | ||||||
|     // target failed to pull the line low, assume not present
 |  | ||||||
|     serial_output(); |  | ||||||
|     serial_high(); |  | ||||||
|     *trans->status = TRANSACTION_NO_RESPONSE; |  | ||||||
|     sei(); |  | ||||||
|     return TRANSACTION_NO_RESPONSE; |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
| #else |  | ||||||
|   // send transaction table index
 |  | ||||||
|   int tid = (sstd_index<<3) | (7 & nibble_bits_count(sstd_index)); |  | ||||||
|   sync_send(); |  | ||||||
|   _delay_sub_us(TID_SEND_ADJUST); |  | ||||||
|   serial_write_chunk(tid, 7); |  | ||||||
|   serial_delay_half1(); |  | ||||||
| 
 |  | ||||||
|   // wait for the target response (step1 low->high)
 |  | ||||||
|   serial_input_with_pullup(); |  | ||||||
|   while( !serial_read_pin() ) { |  | ||||||
|       _delay_sub_us(2); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   // check if the target is present (step2 high->low)
 |  | ||||||
|   for( int i = 0; serial_read_pin(); i++ ) { |  | ||||||
|       if (i > SLAVE_INT_ACK_WIDTH + 1) { |  | ||||||
|           // slave failed to pull the line low, assume not present
 |  | ||||||
|           serial_output(); |  | ||||||
|           serial_high(); |  | ||||||
|           *trans->status = TRANSACTION_NO_RESPONSE; |  | ||||||
|           sei(); |  | ||||||
|           return TRANSACTION_NO_RESPONSE; |  | ||||||
|       } |  | ||||||
|       _delay_sub_us(SLAVE_INT_ACK_WIDTH_UNIT); |  | ||||||
|   } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
|   // initiator recive phase
 |  | ||||||
|   // if the target is present syncronize with it
 |  | ||||||
|   if( trans->target2initiator_buffer_size > 0 ) { |  | ||||||
|       if (!serial_recive_packet((uint8_t *)trans->target2initiator_buffer, |  | ||||||
|                                 trans->target2initiator_buffer_size) ) { |  | ||||||
|           serial_output(); |  | ||||||
|           serial_high(); |  | ||||||
|           *trans->status = TRANSACTION_DATA_ERROR; |  | ||||||
|           sei(); |  | ||||||
|           return TRANSACTION_DATA_ERROR; |  | ||||||
|       } |  | ||||||
|    } |  | ||||||
| 
 |  | ||||||
|   // initiator switch to output
 |  | ||||||
|   change_reciver2sender(); |  | ||||||
| 
 |  | ||||||
|   // initiator send phase
 |  | ||||||
|   if( trans->initiator2target_buffer_size > 0 ) { |  | ||||||
|       serial_send_packet((uint8_t *)trans->initiator2target_buffer, |  | ||||||
|                          trans->initiator2target_buffer_size); |  | ||||||
|   } |  | ||||||
| 
 |  | ||||||
|   // always, release the line when not in use
 |  | ||||||
|   sync_send(); |  | ||||||
| 
 |  | ||||||
|   *trans->status = TRANSACTION_END; |  | ||||||
|   sei(); |  | ||||||
|   return TRANSACTION_END; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| #ifdef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
| int soft_serial_get_and_clean_status(int sstd_index) { |  | ||||||
|     SSTD_t *trans = &Transaction_table[sstd_index]; |  | ||||||
|     cli(); |  | ||||||
|     int retval = *trans->status; |  | ||||||
|     *trans->status = 0;; |  | ||||||
|     sei(); |  | ||||||
|     return retval; |  | ||||||
| } |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| // Helix serial.c history
 |  | ||||||
| //   2018-1-29 fork from let's split and add PD2, modify sync_recv() (#2308, bceffdefc)
 |  | ||||||
| //   2018-6-28 bug fix master to slave comm and speed up (#3255, 1038bbef4)
 |  | ||||||
| //             (adjusted with avr-gcc 4.9.2)
 |  | ||||||
| //   2018-7-13 remove USE_SERIAL_PD2 macro (#3374, f30d6dd78)
 |  | ||||||
| //             (adjusted with avr-gcc 4.9.2)
 |  | ||||||
| //   2018-8-11 add support multi-type transaction (#3608, feb5e4aae)
 |  | ||||||
| //             (adjusted with avr-gcc 4.9.2)
 |  | ||||||
| //   2018-10-21 fix serial and RGB animation conflict (#4191, 4665e4fff)
 |  | ||||||
| //             (adjusted with avr-gcc 7.3.0)
 |  | ||||||
| //   2018-10-28 re-adjust compiler depend value of delay (#4269, 8517f8a66)
 |  | ||||||
| //             (adjusted with avr-gcc 5.4.0, 7.3.0)
 |  | ||||||
| @ -1,86 +0,0 @@ | |||||||
| #pragma once |  | ||||||
| 
 |  | ||||||
| #include <stdbool.h> |  | ||||||
| 
 |  | ||||||
| // /////////////////////////////////////////////////////////////////
 |  | ||||||
| // Need Soft Serial defines in config.h
 |  | ||||||
| // /////////////////////////////////////////////////////////////////
 |  | ||||||
| // ex.
 |  | ||||||
| //  #define SOFT_SERIAL_PIN ??   // ?? = D0,D1,D2,D3,E6
 |  | ||||||
| //  OPTIONAL: #define SELECT_SOFT_SERIAL_SPEED ? // ? = 1,2,3,4,5
 |  | ||||||
| //                                               //  1: about 137kbps (default)
 |  | ||||||
| //                                               //  2: about 75kbps
 |  | ||||||
| //                                               //  3: about 39kbps
 |  | ||||||
| //                                               //  4: about 26kbps
 |  | ||||||
| //                                               //  5: about 20kbps
 |  | ||||||
| //
 |  | ||||||
| // //// USE OLD API (compatible with let's split serial.c)
 |  | ||||||
| // ex.
 |  | ||||||
| //  #define SERIAL_SLAVE_BUFFER_LENGTH MATRIX_ROWS/2
 |  | ||||||
| //  #define SERIAL_MASTER_BUFFER_LENGTH 1
 |  | ||||||
| //
 |  | ||||||
| // //// USE NEW API
 |  | ||||||
| //    //// USE simple API (using signle-type transaction function)
 |  | ||||||
| //      #define SERIAL_USE_SINGLE_TRANSACTION
 |  | ||||||
| // //// USE flexible API (using multi-type transaction function)
 |  | ||||||
| //  #define SERIAL_USE_MULTI_TRANSACTION
 |  | ||||||
| //
 |  | ||||||
| // /////////////////////////////////////////////////////////////////
 |  | ||||||
| 
 |  | ||||||
| 
 |  | ||||||
| //////////////// for backward compatibility ////////////////////////////////
 |  | ||||||
| #if !defined(SERIAL_USE_SINGLE_TRANSACTION) && !defined(SERIAL_USE_MULTI_TRANSACTION) |  | ||||||
| /* --- USE OLD API (compatible with let's split serial.c) */ |  | ||||||
|  #if SERIAL_SLAVE_BUFFER_LENGTH > 0 |  | ||||||
|  extern volatile uint8_t serial_slave_buffer[SERIAL_SLAVE_BUFFER_LENGTH]; |  | ||||||
|  #endif |  | ||||||
|  #if SERIAL_MASTER_BUFFER_LENGTH > 0 |  | ||||||
|  extern volatile uint8_t serial_master_buffer[SERIAL_MASTER_BUFFER_LENGTH]; |  | ||||||
|  #endif |  | ||||||
| 
 |  | ||||||
|  void serial_master_init(void); |  | ||||||
|  void serial_slave_init(void); |  | ||||||
|  int serial_update_buffers(void); |  | ||||||
| 
 |  | ||||||
| #endif // end of USE OLD API
 |  | ||||||
| ////////////////////////////////////////////////////////////////////////////
 |  | ||||||
| 
 |  | ||||||
| // Soft Serial Transaction Descriptor
 |  | ||||||
| typedef struct _SSTD_t  { |  | ||||||
|     uint8_t *status; |  | ||||||
|     uint8_t initiator2target_buffer_size; |  | ||||||
|     uint8_t *initiator2target_buffer; |  | ||||||
|     uint8_t target2initiator_buffer_size; |  | ||||||
|     uint8_t *target2initiator_buffer; |  | ||||||
| } SSTD_t; |  | ||||||
| #define TID_LIMIT( table ) (sizeof(table) / sizeof(SSTD_t)) |  | ||||||
| 
 |  | ||||||
| // initiator is transaction start side
 |  | ||||||
| void soft_serial_initiator_init(SSTD_t *sstd_table, int sstd_table_size); |  | ||||||
| // target is interrupt accept side
 |  | ||||||
| void soft_serial_target_init(SSTD_t *sstd_table, int sstd_table_size); |  | ||||||
| 
 |  | ||||||
| // initiator resullt
 |  | ||||||
| #define TRANSACTION_END 0 |  | ||||||
| #define TRANSACTION_NO_RESPONSE 0x1 |  | ||||||
| #define TRANSACTION_DATA_ERROR  0x2 |  | ||||||
| #define TRANSACTION_TYPE_ERROR  0x4 |  | ||||||
| #ifndef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
| int  soft_serial_transaction(void); |  | ||||||
| #else |  | ||||||
| int  soft_serial_transaction(int sstd_index); |  | ||||||
| #endif |  | ||||||
| 
 |  | ||||||
| // target status
 |  | ||||||
| // *SSTD_t.status has
 |  | ||||||
| //   initiator:
 |  | ||||||
| //       TRANSACTION_END
 |  | ||||||
| //    or TRANSACTION_NO_RESPONSE
 |  | ||||||
| //    or TRANSACTION_DATA_ERROR
 |  | ||||||
| //   target:
 |  | ||||||
| //       TRANSACTION_DATA_ERROR
 |  | ||||||
| //    or TRANSACTION_ACCEPTED
 |  | ||||||
| #define TRANSACTION_ACCEPTED 0x8 |  | ||||||
| #ifdef SERIAL_USE_MULTI_TRANSACTION |  | ||||||
| int  soft_serial_get_and_clean_status(int sstd_index); |  | ||||||
| #endif |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Salicylic-acid3
						Salicylic-acid3