[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
37 changed files with 236 additions and 2136 deletions
|
@ -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…
Reference in a new issue