From 2a2f8a5bb7d609deb8228cd41c5e3842d0438c23 Mon Sep 17 00:00:00 2001 From: Takeshi Nishio Date: Sat, 19 Sep 2020 17:35:03 +0900 Subject: [PATCH] =?UTF-8?q?Update=20FA=E3=81=A7=E4=BD=BF=E7=94=A8=E3=81=99?= =?UTF-8?q?=E3=82=8BAudio=E3=80=81RotaryEncoder=E3=81=AE=E6=A9=9F=E8=83=BD?= =?UTF-8?q?=E8=BF=BD=E5=8A=A0=E3=80=82=E6=A9=9F=E8=83=BD=E5=89=8A=E6=B8=9B?= =?UTF-8?q?=E3=81=A7=E3=83=95=E3=82=A1=E3=83=BC=E3=83=A0=E3=82=A6=E3=82=A7?= =?UTF-8?q?=E3=82=A2=E3=82=B5=E3=82=A4=E3=82=BA=E7=B8=AE=E5=B0=8F=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyboards/jones/v.0.3/config.h | 7 +- .../jones/v.0.3/keymaps/default_fa/keymap.c | 322 ++---------------- .../jones/v.0.3/keymaps/default_fa/rules.mk | 16 + 3 files changed, 58 insertions(+), 287 deletions(-) create mode 100644 keyboards/jones/v.0.3/keymaps/default_fa/rules.mk diff --git a/keyboards/jones/v.0.3/config.h b/keyboards/jones/v.0.3/config.h index 3030faa081d..0521660efe1 100644 --- a/keyboards/jones/v.0.3/config.h +++ b/keyboards/jones/v.0.3/config.h @@ -50,10 +50,13 @@ along with this program. If not, see . //#define DIODE_DIRECTION COL2ROW /* Rotary Encoder */ -#define ENCODERS_PAD_A { F6, B2 } -#define ENCODERS_PAD_B { F7, B3 } +#define ENCODERS_PAD_A { F6, B2, B5, B4 } +#define ENCODERS_PAD_B { F7, B3, D3, D2 } #define ENCODER_RESOLUTION 4 //the default & suggested is 4 +/* Audio */ +#define C6_AUDIO + /* * Split Keyboard specific options, make sure you have 'SPLIT_KEYBOARD = yes' in your rules.mk, and define SOFT_SERIAL_PIN. */ diff --git a/keyboards/jones/v.0.3/keymaps/default_fa/keymap.c b/keyboards/jones/v.0.3/keymaps/default_fa/keymap.c index c66d2f1fc82..4c33bf6274c 100644 --- a/keyboards/jones/v.0.3/keymaps/default_fa/keymap.c +++ b/keyboards/jones/v.0.3/keymaps/default_fa/keymap.c @@ -25,89 +25,24 @@ extern rgblight_config_t rgblight_config; // Defines names for use in layer keycodes and the keymap enum layer_number { _MAC = 0, - _WIN, - _NUM, _LOWER, _RAISE, - _NUM_RAISE, _ADJUST }; // Defines the keycodes used by our macros in process_record_user enum custom_keycodes { MAC = SAFE_RANGE, - WIN, - NUM, LOWER, RAISE, - NUM_RAISE, ADJUST, - ALT_US, - ALT_JP, - MAC_IME, - WIN_IME, A_IME_M, A_IME_W, - DBG_LAY, }; -// Tap Dance -enum tap_dances{ - TD_GRV_ESC = 0 , - TD_Y_LBRC, - TD_LSFT_CAPS, - TD_LBRC_RBRC, - TD_ESC_NUM, - TD_MINS_MAC_IME, - TD_MINS_WIN_IME, - TD_SCLN_MINS, -}; - -// Tap Dance state -// for toggle layer by ESC -enum { - SINGLE_TAP = 1, - DOUBLE_TAP, - TRIPLE_TAP, - TAP_HOLD, -}; - -// Declare the functions to be used with your tap dance key(s) -// Function associated with all tap dances -uint8_t cur_dance(qk_tap_dance_state_t *state); -// Functions associated with individual tap dances -void ql_finished(qk_tap_dance_state_t *state, void *user_data); -void ql_reset(qk_tap_dance_state_t *state, void *user_data); -void ql_each(qk_tap_dance_state_t *state, void *user_data); - -// Tap Dance definitions -qk_tap_dance_action_t tap_dance_actions[] = { - [TD_Y_LBRC] = ACTION_TAP_DANCE_DOUBLE(KC_Y, KC_LBRC), - [TD_LSFT_CAPS] = ACTION_TAP_DANCE_DOUBLE(KC_LSFT, KC_CAPS), - [TD_LBRC_RBRC] = ACTION_TAP_DANCE_DOUBLE(KC_LBRC, KC_RBRC), - [TD_ESC_NUM] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275), - [TD_MINS_MAC_IME] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 275), - [TD_MINS_WIN_IME] = ACTION_TAP_DANCE_DOUBLE(KC_MINS, WIN_IME), - [TD_SCLN_MINS] = ACTION_TAP_DANCE_FN_ADVANCED_TIME(NULL, ql_finished, ql_reset, 500), -}; - -#define ESC_NUM TD(TD_ESC_NUM) -#define Y_LBRC TD(TD_Y_LBRC) -#define S_CAP TD(TD_LSFT_CAPS) -#define L_R_BRC TD(TD_LBRC_RBRC) -#define M_M_IME TD(TD_MINS_MAC_IME) -#define M_W_IME TD(TD_MINS_WIN_IME) -#define SCLN_M TD(TD_SCLN_MINS) -#define SP_LOW LT(_LOWER, KC_SPC) #define SP_RAI LT(_RAISE, KC_SPC) -#define SP_NRAI LT(_NUM_RAISE, KC_SPC) -#define SP_ADJ LT(_ADJUST, KC_SPC) -#define SP_GUI MT(MOD_LGUI, KC_SPC) #define SP_SFT MT(MOD_LSFT, KC_SPC) #define S_SLS RSFT_T(KC_SLSH) -#define C_SCLN RCTL_T(KC_SCLN) -#define C_QUOT RCTL_T(KC_QUOT) -#define C_MINS RCTL_T(KC_MINS) #define C_SLSH RCTL_T(KC_SLSH) #define CT_E LCTL(KC_E) #define CT_A LCTL(KC_A) @@ -116,10 +51,10 @@ qk_tap_dance_action_t tap_dance_actions[] = { const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { [_MAC] = LAYOUT_FA( - ESC_NUM,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSLS,KC_GRV, \ + KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSLS,KC_GRV, \ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_LBRC,KC_RBRC, \ - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SCLN_M, KC_ENT, KC_QUOT,KC_QUOT, \ - S_CAP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, C_SLSH, KC_RSFT,KC_UP, LOWER, \ + KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_QUOT,KC_QUOT, \ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, C_SLSH, KC_RSFT,KC_UP, LOWER, \ KC_MUTE,XXXXXXX,KC_LALT,KC_LGUI, SP_SFT, SP_RAI, KC_RGUI,A_IME_M,XXXXXXX,KC_LEFT,KC_DOWN,KC_RGHT, \ KC_NLCK, KC_PSLS, KC_PAST, KC_PEQL, KC_VOLD, KC_VOLU, KC_VOLD, KC_VOLU, \ KC_P7, KC_P8, KC_P9, KC_PMNS, \ @@ -127,30 +62,6 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { KC_P1, KC_P2, KC_P3, \ KC_P0, KC_PDOT, KC_PENT \ ), - [_WIN] = LAYOUT_FA( - _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, \ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______,_______, \ - _______, _______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ - _______,_______,KC_LGUI,KC_LALT, _______, _______, A_IME_W,KC_APP, _______,_______,_______,_______, \ - _______,_______,_______,_______, _______,_______,_______,_______, \ - _______,_______,_______,_______, \ - _______,_______,_______,_______, \ - _______,_______,_______, \ - _______, _______,_______ \ - ), - [_NUM] = LAYOUT_FA( - _______,_______,_______,_______,_______,_______,_______,XXXXXXX,KC_PSLS,KC_PSLS,KC_PAST,_______,_______,_______,_______, \ - _______, _______,_______,_______,_______,_______,_______,KC_P7, KC_P8, KC_P9, KC_PPLS,_______, _______,_______, \ - _______, _______,_______,_______,_______,_______,_______,KC_P4, KC_P5, KC_P6, XXXXXXX,_______, _______,_______, \ - _______, _______,_______,_______,_______,_______,_______,KC_P1, KC_P2, KC_P3, KC_PENT,_______,_______,_______, \ - _______,_______,_______,_______, _______, SP_NRAI, KC_P0, KC_PDOT,_______,_______,_______,_______, \ - _______,_______,_______,_______, _______,_______,_______,_______, \ - _______,_______,_______,_______, \ - _______,_______,_______,_______, \ - _______,_______,_______, \ - _______, _______,_______ \ - ), [_LOWER] = LAYOUT_FA( KC_PAUS,KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_INS, KC_DEL, \ KC_PSCR, _______,_______,_______,_______,_______,_______,_______,_______,_______,KC_HOME,KC_UP, KC_END, KC_VOLU, \ @@ -175,23 +86,11 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { _______,_______,_______, \ _______, _______,_______ \ ), - [_NUM_RAISE] = LAYOUT_FA( - KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,KC_EQL, KC_BSLS,KC_GRV, \ - KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_LBRC,KC_RBRC, \ - KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT, KC_QUOT,KC_QUOT, \ - S_CAP, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM,KC_DOT, S_SLS, KC_RSFT,XXXXXXX,ADJUST, \ - _______,_______,_______,_______, _______, _______, _______,_______,_______,_______,_______,_______, \ - _______,_______,_______,_______, _______,_______,_______,_______, \ - _______,_______,_______,_______, \ - _______,_______,_______,_______, \ - _______,_______,_______, \ - _______, _______,_______ \ - ), [_ADJUST] = LAYOUT_FA( _______,RGB_HUI,RGB_SAI,RGB_VAI,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, \ - _______, _______,WIN, _______,RESET, _______,_______,_______,_______,_______,_______,_______, _______,_______, \ + _______, _______,_______,_______,RESET, _______,_______,_______,_______,_______,_______,_______, _______,_______, \ _______, _______,_______,_______,_______,_______,_______,_______,RGB_M_P,RGB_TOG,RGB_MOD,_______, _______,_______, \ - _______, _______,_______,_______,_______,_______,TG(_NUM),MAC, _______,_______,_______,_______,_______,_______, \ + _______, _______,_______,_______,_______,_______,_______,MAC, _______,_______,_______,_______,_______,_______, \ _______,_______,_______,_______, _______, _______, _______,_______,_______,_______,_______,_______, \ _______,_______,_______,_______, _______,_______,_______,_______, \ _______,_______,_______,_______, \ @@ -215,28 +114,12 @@ static uint16_t current_default_layer = 0; bool process_record_user(uint16_t keycode, keyrecord_t *record) { switch (keycode) { - case DBG_LAY: - if (current_default_layer == _MAC) { - SEND_STRING("L-MAC"); - } else if (current_default_layer == _WIN) { - SEND_STRING("L-WIN"); - } else { - SEND_STRING("L-NO"); - } - return false; - break; case MAC: // Write default layer to EEPROM if (record->event.pressed) { set_single_persistent_default_layer(_MAC); } return false; break; - case WIN: // Write default layer to EEPROM - if (record->event.pressed) { - set_single_persistent_default_layer(_WIN); - } - return false; - break; case LOWER: if (record->event.pressed) { lower_pressed = true; @@ -343,28 +226,6 @@ switch (keycode) { } return false; break; - case MAC_IME: - if (record->event.pressed) { - // when pressed - register_code(KC_LCTL); - register_code(KC_SPC); - } else { - // when released - unregister_code(KC_SPC); - unregister_code(KC_LCTL); - } - break; - case WIN_IME: - if (record->event.pressed) { - // when pressed - register_code(KC_LALT); - register_code(KC_GRV); - } else { - // when released - unregister_code(KC_GRV); - unregister_code(KC_LALT); - } - break; default: if (record->event.pressed) { // reset the flags @@ -386,12 +247,6 @@ switch (keycode) { const rgblight_segment_t PROGMEM my_mac_layer[] = RGBLIGHT_LAYER_SEGMENTS( {0, 1, HSV_WHITE} ); -const rgblight_segment_t PROGMEM my_win_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 1, HSV_BLUE} -); -const rgblight_segment_t PROGMEM my_num_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {0, 1, HSV_YELLOW} -); // 2nd LED const rgblight_segment_t PROGMEM my_caps_layer[] = RGBLIGHT_LAYER_SEGMENTS( @@ -406,10 +261,6 @@ const rgblight_segment_t PROGMEM my_raise_layer[] = RGBLIGHT_LAYER_SEGMENTS( {1, 1, HSV_CYAN} ); -const rgblight_segment_t PROGMEM my_num_raise_layer[] = RGBLIGHT_LAYER_SEGMENTS( - {1, 1, HSV_GOLD} -); - const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS( {1, 1, HSV_RED} ); @@ -418,12 +269,9 @@ const rgblight_segment_t PROGMEM my_adjust_layer[] = RGBLIGHT_LAYER_SEGMENTS( // Define the array of layers. Later layers take precedence const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST( my_mac_layer, - my_win_layer, - my_num_layer, my_caps_layer, my_lower_layer, my_raise_layer, - my_num_raise_layer, my_adjust_layer ); @@ -434,10 +282,8 @@ void keyboard_post_init_user(void) { // Enabling and disabling lighting layers layer_state_t layer_state_set_user(layer_state_t state) { - rgblight_set_layer_state(2, layer_state_cmp(state, _NUM)); rgblight_set_layer_state(4, layer_state_cmp(state, _LOWER)); rgblight_set_layer_state(5, layer_state_cmp(state, _RAISE)); - rgblight_set_layer_state(6, layer_state_cmp(state, _NUM_RAISE)); rgblight_set_layer_state(7, layer_state_cmp(state, _ADJUST)); return state; @@ -446,13 +292,9 @@ layer_state_t layer_state_set_user(layer_state_t state) { // Enabling and disabling lighting layers for default layer layer_state_t default_layer_state_set_user(layer_state_t state) { rgblight_set_layer_state(0, layer_state_cmp(state, _MAC)); - rgblight_set_layer_state(1, layer_state_cmp(state, _WIN)); - rgblight_set_layer_state(2, layer_state_cmp(state, _NUM)); if (layer_state_cmp(state, _MAC)) { current_default_layer = _MAC; - } else if (layer_state_cmp(state, _WIN)) { - current_default_layer = _WIN; } return state; @@ -474,7 +316,7 @@ bool led_update_user(led_t led_state) { //------------------------------------------------------------------------------ // Rotary Encoder void encoder_update_user(uint8_t index, bool clockwise) { - if (index == 0) { /* First encoder, Right side */ + if (index == 0) { /* First encoder, Right side or EXT1*/ if (clockwise) { tap_code(KC_VOLD); } else { @@ -488,136 +330,46 @@ void encoder_update_user(uint8_t index, bool clockwise) { tap_code(KC_VOLU); } } + if (index == 2) { /* Third encoder, EXT2 */ + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } + if (index == 3) { /* Fourth encoder, EXT3 */ + if (clockwise) { + tap_code(KC_VOLD); + } else { + tap_code(KC_VOLU); + } + } } //------------------------------------------------------------------------------ -// Tap Dance function -// ESCキーの動作を、次のようにする設定 -// シングルタップ:ESC -// シングルタップしてホールド:NUMレイヤー -// トリプルタップ:Numレイヤーをトグル -// NOTE:ESCを連打(=タブルタップ)して、Numレイヤーになるのを防止するためトリプルに。 +#ifdef OLED_DRIVER_ENABLE +void oled_task_user(void) { + // Host Keyboard Layer Status + oled_write_P(PSTR("Layer: "), false); -typedef struct { - bool is_press_action; - uint8_t state; -} tap; - -// Determine the current tap dance state -uint8_t cur_dance(qk_tap_dance_state_t *state) { - if (state->count == 1) { - if (!state->pressed) return SINGLE_TAP; - else return TAP_HOLD; - } else if (state->count == 2) { - if (!state->pressed) return DOUBLE_TAP; - else return TAP_HOLD; - } else if (state->count == 3) return TRIPLE_TAP; - else return 8; // Magic number. At some point this method will expand to work for more presses -} - -// Initialize tap structure associated with example tap dance key -static tap ql_tap_state = { - .is_press_action = true, - .state = 0 -}; - -// Functions that control what our tap dance key does -void ql_each(qk_tap_dance_state_t *state, void *user_data) { -} - -void ql_finished(qk_tap_dance_state_t *state, void *user_data) { - ql_tap_state.state = cur_dance(state); - - switch(state->keycode) { - case TD(TD_ESC_NUM): - switch (ql_tap_state.state) { - case SINGLE_TAP: - case DOUBLE_TAP: - tap_code(KC_ESC); - break; - case TAP_HOLD: - layer_on(_NUM); - break; - case TRIPLE_TAP: - // Check to see if the layer is already set - if (layer_state_is(_NUM)) { - // If already set, then switch it off - layer_off(_NUM); - } else { - // If not already set, then switch the layer on - layer_on(_NUM); - } - break; - } - break; - - case TD(TD_MINS_MAC_IME): - switch (ql_tap_state.state) { - case SINGLE_TAP: - case TAP_HOLD: - register_code(KC_MINS); - break; - case DOUBLE_TAP: - //TODO デフォルトレイヤーが何かを読み取り、MAC or WINで処理を変える - register_code(KC_LCTL); - register_code(KC_SPC); - break; - } - break; - - case TD(TD_SCLN_MINS): - switch (ql_tap_state.state) { - case SINGLE_TAP: - case TAP_HOLD: - register_code(KC_SCLN); - break; - case DOUBLE_TAP: - register_code(KC_MINS); - break; - } - break; - } -} - -void ql_reset(qk_tap_dance_state_t *state, void *user_data) { - switch(state->keycode) { - case TD(TD_ESC_NUM): - // If the key was held down and now is released then switch off the layer - if (ql_tap_state.state == TAP_HOLD) { - layer_off(_NUM); - } - ql_tap_state.state = 0; - break; - - case TD(TD_MINS_MAC_IME): - switch (ql_tap_state.state) { - case SINGLE_TAP: - case TAP_HOLD: - unregister_code(KC_MINS); - break; - case DOUBLE_TAP: - //TODO デフォルトレイヤーが何かを読み取り、MAC or WINで処理を変える - unregister_code(KC_LCTL); - unregister_code(KC_SPC); - break; - } - break; - - case TD(TD_SCLN_MINS): - switch (ql_tap_state.state) { - case SINGLE_TAP: - case TAP_HOLD: - unregister_code(KC_SCLN); - break; - case DOUBLE_TAP: - unregister_code(KC_MINS); - break; - } + switch (get_highest_layer(layer_state)) { + case _MAC: + oled_write_P(PSTR("Mac\n"), false); break; + default: + // Or use the write_ln shortcut over adding '\n' to the end of your string + oled_write_ln_P(PSTR("Undefined"), false); } + + // Host Keyboard LED Status + led_t led_state = host_keyboard_led_state(); + oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false); + oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false); + oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false); } +#endif //------------------------------------------------------------------------------ /* diff --git a/keyboards/jones/v.0.3/keymaps/default_fa/rules.mk b/keyboards/jones/v.0.3/keymaps/default_fa/rules.mk new file mode 100644 index 00000000000..102827673b0 --- /dev/null +++ b/keyboards/jones/v.0.3/keymaps/default_fa/rules.mk @@ -0,0 +1,16 @@ +# Enabling options for FA (Full Armor) version. +# Disabling options to reduce firmware size. +# Add Link Time Optimization option. + +# Build Options +# change yes to no to disable +# + +MOUSEKEY_ENABLE = no # Mouse keys +AUDIO_ENABLE = yes # Audio output +TAP_DANCE_ENABLE = no # Tap Dance +OLED_DRIVER_ENABLE = yes +# EXTRAKEY_ENABLE = no # reduce 500 bytes + + +EXTRAFLAGS += -flto