diff options
| -rw-r--r-- | keyboards/tetris/config.h | 65 | ||||
| -rw-r--r-- | keyboards/tetris/keymaps/default/keymap.c | 848 | ||||
| -rw-r--r-- | keyboards/tetris/readme.md | 15 | ||||
| -rw-r--r-- | keyboards/tetris/rules.mk | 58 | ||||
| -rw-r--r-- | keyboards/tetris/tetris.c | 1 | ||||
| -rw-r--r-- | keyboards/tetris/tetris.h | 18 |
6 files changed, 1005 insertions, 0 deletions
diff --git a/keyboards/tetris/config.h b/keyboards/tetris/config.h new file mode 100644 index 000000000..9c7f525a7 --- /dev/null +++ b/keyboards/tetris/config.h | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | #ifndef CONFIG_H | ||
| 2 | #define CONFIG_H | ||
| 3 | |||
| 4 | #include "config_common.h" | ||
| 5 | |||
| 6 | /* USB Device descriptor parameter */ | ||
| 7 | #define VENDOR_ID 0xFEED | ||
| 8 | #define PRODUCT_ID 0x6060 | ||
| 9 | #define DEVICE_VER 0x0001 | ||
| 10 | #define MANUFACTURER Fengz | ||
| 11 | #define PRODUCT Tetris | ||
| 12 | #define DESCRIPTION Planck mit | ||
| 13 | #define QMK_ESC_OUTPUT B0 | ||
| 14 | #define QMK_ESC_INPUT D7 | ||
| 15 | #define QMK_LED B7 | ||
| 16 | #define QMK_SPEAKER B5 | ||
| 17 | |||
| 18 | /* key matrix size */ | ||
| 19 | #define MATRIX_ROWS 4 | ||
| 20 | #define MATRIX_COLS 12 | ||
| 21 | |||
| 22 | /* key matrix pins */ | ||
| 23 | #define MATRIX_ROW_PINS { B3, B2, B1, B0 } | ||
| 24 | #define MATRIX_COL_PINS { D7, B4, B6, C6, C7, F6, F7, D4, D2, D3, D5, D6 } | ||
| 25 | #define UNUSED_PINS | ||
| 26 | |||
| 27 | /* COL2ROW or ROW2COL */ | ||
| 28 | #define DIODE_DIRECTION COL2ROW | ||
| 29 | |||
| 30 | /* Set 0 if debouncing isn't needed */ | ||
| 31 | #define DEBOUNCING_DELAY 5 | ||
| 32 | |||
| 33 | /* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */ | ||
| 34 | #define LOCKING_SUPPORT_ENABLE | ||
| 35 | |||
| 36 | /* Locking resynchronize hack */ | ||
| 37 | #define LOCKING_RESYNC_ENABLE | ||
| 38 | |||
| 39 | /* key combination for command */ | ||
| 40 | #define IS_COMMAND() ( \ | ||
| 41 | keyboard_report->mods == (MOD_BIT(KC_LSHIFT) | MOD_BIT(KC_RSHIFT)) \ | ||
| 42 | ) | ||
| 43 | |||
| 44 | /* prevent stuck modifiers */ | ||
| 45 | #define PREVENT_STUCK_MODIFIERS | ||
| 46 | |||
| 47 | #define TAPPING_TERM 200 | ||
| 48 | #define PERMISSIVE_HOLD | ||
| 49 | |||
| 50 | #ifdef AUDIO_ENABLE | ||
| 51 | #define B5_AUDIO | ||
| 52 | #define STARTUP_SONG SONG(ONE_UP_SOUND) | ||
| 53 | #define NO_MUSIC_MODE | ||
| 54 | #endif | ||
| 55 | |||
| 56 | #define RGB_DI_PIN F5 | ||
| 57 | #ifdef RGB_DI_PIN | ||
| 58 | #define RGBLIGHT_ANIMATIONS | ||
| 59 | #define RGBLIGHT_SLEEP | ||
| 60 | #define RGBLED_NUM 47 | ||
| 61 | #define RGBLIGHT_EFFECT_KNIGHT_LED_NUM 12 | ||
| 62 | //#define RGBLIGHT_LIMIT_VAL 128 | ||
| 63 | #endif | ||
| 64 | |||
| 65 | #endif \ No newline at end of file | ||
diff --git a/keyboards/tetris/keymaps/default/keymap.c b/keyboards/tetris/keymaps/default/keymap.c new file mode 100644 index 000000000..b0d22c533 --- /dev/null +++ b/keyboards/tetris/keymaps/default/keymap.c | |||
| @@ -0,0 +1,848 @@ | |||
| 1 | #include "tetris.h" | ||
| 2 | #include "action_layer.h" | ||
| 3 | |||
| 4 | #ifdef AUDIO_ENABLE | ||
| 5 | #include "audio.h" | ||
| 6 | float tone_caps[][2] = SONG( CAPS_LOCK_ON_SOUND ); | ||
| 7 | float tone_taps[][2] = SONG( E__NOTE( _A6 ) ); | ||
| 8 | #endif | ||
| 9 | |||
| 10 | /* Fillers to make layering more clear */ | ||
| 11 | #define _______ KC_TRNS | ||
| 12 | #define XXXXXXX KC_NO | ||
| 13 | |||
| 14 | #define _BASE 0 | ||
| 15 | #define _CODE 1 | ||
| 16 | #define _NAVI 2 | ||
| 17 | #define _FUNC 3 | ||
| 18 | #define _SYMB 4 | ||
| 19 | #define _NUMB 5 | ||
| 20 | #define _MARO 6 | ||
| 21 | #define _RGB 7 | ||
| 22 | #define _ADJUST 8 | ||
| 23 | #define _GAME 9 | ||
| 24 | |||
| 25 | /* RGB colors */ | ||
| 26 | #define RGB_Layer_1_Base_Color 0, 128, 0 | ||
| 27 | #define RGB_Layer_2_Base_Color 0,0,0 | ||
| 28 | #define RGB_Layer_3_Base_Color 0,0,0 | ||
| 29 | #define RGB_Layer_4_Base_Color 0,0,0 | ||
| 30 | #define RGB_Layer_5_Base_Color 0,0,0 | ||
| 31 | #define RGB_Layer_6_Base_Color 64, 0, 64 | ||
| 32 | #define RGB_Layer_7_Base_Color 0, 0,0 | ||
| 33 | #define RGB_Layer_8_Base_Color 0,0,0 | ||
| 34 | #define RGB_Layer_9_Base_Color 0,0,0 | ||
| 35 | #define RGB_Caps_Color 6,50,50 | ||
| 36 | #define RGB_TAP_On_Color 0,128,0 | ||
| 37 | #define RGB_TAP_Off_Color 128,0,0 | ||
| 38 | #define RGB_TAP_Base_Color 0,0,0 | ||
| 39 | |||
| 40 | extern rgblight_config_t rgblight_config; | ||
| 41 | bool NUMLAY_STATUS = false; | ||
| 42 | int RGB_LAYER0_mode = 6; | ||
| 43 | bool RGB_TAP_STATE = false; | ||
| 44 | static uint8_t current_layer = 0; | ||
| 45 | static bool has_layer_changed = true; | ||
| 46 | static bool save_rgbmode = true; | ||
| 47 | static bool caps = false; | ||
| 48 | |||
| 49 | /* Tap Dance function */ | ||
| 50 | void dance_cln_finished( qk_tap_dance_state_t* state, void* user_data ) | ||
| 51 | { | ||
| 52 | if ( state->count == 1 ) | ||
| 53 | { | ||
| 54 | register_code( KC_LSFT ); | ||
| 55 | } else { | ||
| 56 | layer_on( _SYMB ); | ||
| 57 | #ifdef AUDIO_ENABLE | ||
| 58 | PLAY_SONG( tone_taps ); | ||
| 59 | #endif | ||
| 60 | } | ||
| 61 | } | ||
| 62 | |||
| 63 | |||
| 64 | void dance_cln_reset( qk_tap_dance_state_t* state, void* user_data ) | ||
| 65 | { | ||
| 66 | if ( state->count == 1 ) | ||
| 67 | { | ||
| 68 | unregister_code( KC_LSFT ); | ||
| 69 | }else { | ||
| 70 | uint8_t layer = biton32( layer_state ); | ||
| 71 | if ( layer == _SYMB ) | ||
| 72 | { | ||
| 73 | layer_off( _SYMB ); | ||
| 74 | rgblight_mode( RGB_LAYER0_mode ); | ||
| 75 | } | ||
| 76 | } | ||
| 77 | } | ||
| 78 | |||
| 79 | enum my_keycodes { | ||
| 80 | RGB_TAP = SAFE_RANGE, | ||
| 81 | KC_00 | ||
| 82 | }; | ||
| 83 | |||
| 84 | /* Tap Dance Declarations */ | ||
| 85 | enum { | ||
| 86 | TD_Mute_Next = 0, | ||
| 87 | TD_SFT, | ||
| 88 | TD_LBRC, | ||
| 89 | TD_RBRC | ||
| 90 | }; | ||
| 91 | |||
| 92 | /* Tap Dance Definitions */ | ||
| 93 | qk_tap_dance_action_t tap_dance_actions[] = { | ||
| 94 | [TD_Mute_Next] = ACTION_TAP_DANCE_DOUBLE( KC_MUTE, KC_MNXT ) | ||
| 95 | ,[TD_SFT] = ACTION_TAP_DANCE_FN_ADVANCED( NULL, dance_cln_finished, dance_cln_reset ) | ||
| 96 | ,[TD_LBRC] = ACTION_TAP_DANCE_DOUBLE( KC_LBRC, KC_LCBR ) | ||
| 97 | ,[TD_RBRC] = ACTION_TAP_DANCE_DOUBLE( KC_RBRC, KC_RCBR ) | ||
| 98 | }; | ||
| 99 | |||
| 100 | |||
| 101 | const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { | ||
| 102 | /* BASE - QWERTY | ||
| 103 | * ,-----------------------------------------------------------------------------------. | ||
| 104 | * | Tab | Q | W | E | R | T | Y | U | I | O | P | BS | | ||
| 105 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 106 | * shift + Esc = ~ --> | Esc | A | S | D | F | G | H | J | K | L | ; | Enter| <-- shift + Enter = " | ||
| 107 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 108 | * | Shift| Z | X | C | V | B | N | M | , | . | / | Mute | | ||
| 109 | * |------+------+------+------+------+------+------+------+------+------+------+------| <-- tap: 1.Mute 2.Next | ||
| 110 | * | Ctrl | GUI | Alt | [ | - | Space | = | ] | Fx | \ | Del | | ||
| 111 | * `-----------------------------------------------------------------------------------' | ||
| 112 | */ | ||
| 113 | |||
| 114 | [_BASE] = LAYOUT_planck_mit( | ||
| 115 | LT( _ADJUST,KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, | ||
| 116 | LT( _NUMB,KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, LT( _RGB, KC_L ), KC_SCLN, KC_ENT, | ||
| 117 | TD( TD_SFT ), KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, TD( TD_Mute_Next ), | ||
| 118 | KC_LCTL, KC_LGUI, KC_LALT, TD( TD_LBRC ), LT( _NAVI, KC_MINS ), LT( _CODE, KC_SPC ), LT( _FUNC, KC_EQL ), TD( TD_RBRC ), KC_LEFT, KC_DOWN, KC_RGHT ), | ||
| 119 | |||
| 120 | /* Code | ||
| 121 | * ,-----------------------------------------------------------------------------------. | ||
| 122 | * | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | Bksp | | ||
| 123 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 124 | * | ` | < | [ | { | ( | & | Left | Down | Up | Down | ; | ' | | ||
| 125 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 126 | * | | > | ] | } | ) | | | | | , | . | / | Play | | ||
| 127 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 128 | * | | | | [ | BkSp | ======= | Del | ] | | \ | | | ||
| 129 | * `-----------------------------------------------------------------------------------' | ||
| 130 | */ | ||
| 131 | |||
| 132 | [_CODE] = LAYOUT_planck_mit( /* 1 - Code */ | ||
| 133 | _______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, | ||
| 134 | KC_GRV, KC_LABK, KC_LBRC, KC_LCBR, KC_LPRN, KC_AMPR, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, KC_QUOT, | ||
| 135 | _______, KC_RABK, KC_RBRC, KC_RCBR, KC_RPRN, KC_PIPE, XXXXXXX, XXXXXXX, _______, _______, KC_SLSH, KC_MPLY, | ||
| 136 | _______, _______, _______, KC_LBRC, KC_BSPC, _______, KC_DEL, KC_RBRC, _______, KC_BSLS, _______ ), | ||
| 137 | |||
| 138 | /* Navi | ||
| 139 | * ,-----------------------------------------------------------------------------------. | ||
| 140 | * | | | | PgUp | | | | |Insert| |Prtsc | | | ||
| 141 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 142 | * | ~ | | Home | PgDn | End | | | | |SrcLck| | | | ||
| 143 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 144 | * | | | | | | Break| | | | | PgUp | | | ||
| 145 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 146 | * | | | | | | | | | Home | PgDn | End | | ||
| 147 | * `-----------------------------------------------------------------------------------' | ||
| 148 | */ | ||
| 149 | |||
| 150 | [_NAVI] = LAYOUT_planck_mit( | ||
| 151 | _______, XXXXXXX, XXXXXXX, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_INS, XXXXXXX, KC_PSCR, _______, | ||
| 152 | KC_TILD, XXXXXXX, KC_HOME, KC_PGDN, KC_END, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_SLCK, _______, _______, | ||
| 153 | _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PAUS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_PGUP, _______, | ||
| 154 | _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_END ), | ||
| 155 | |||
| 156 | /* Func | ||
| 157 | * ,-----------------------------------------------------------------------------------. | ||
| 158 | * | | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | | | ||
| 159 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 160 | * | | F11 | F12 | | | | | | | | | | | ||
| 161 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 162 | * | | | | | | | | | | | | | | ||
| 163 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 164 | * | | | | | | | | | | | | | ||
| 165 | * `-----------------------------------------------------------------------------------' | ||
| 166 | */ | ||
| 167 | |||
| 168 | [_FUNC] = LAYOUT_planck_mit( | ||
| 169 | _______ , KC_F1, KC_F2 , KC_F3, KC_F4, KC_F5, KC_F6 , KC_F7, KC_F8, KC_F9, KC_F10, _______, | ||
| 170 | _______ , KC_F12, KC_F12 , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, | ||
| 171 | _______ , XXXXXXX, XXXXXXX , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, | ||
| 172 | _______ , _______, _______ , _______, _______, _______, _______ , _______, _______, _______, _______ ), | ||
| 173 | |||
| 174 | |||
| 175 | /* Symb - double tap shift | ||
| 176 | * ,-----------------------------------------------------------------------------------. | ||
| 177 | * | | | ! | @ | # | $ | % | ^ | & | * | ( | ) | | | ||
| 178 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 179 | * | | | | | | | | | | | : | " | | ||
| 180 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 181 | * | | | | | | | | | < | > | ? | | | ||
| 182 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 183 | * | | | | { | _ | | + | } | | | | | ||
| 184 | * `-----------------------------------------------------------------------------------' | ||
| 185 | */ | ||
| 186 | |||
| 187 | [_SYMB] = LAYOUT_planck_mit( | ||
| 188 | KC_PIPE, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______, | ||
| 189 | KC_TILD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_COLN, KC_DQUO, | ||
| 190 | _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LABK, KC_RABK, KC_QUES, _______, | ||
| 191 | _______, _______, _______, KC_LCBR, KC_UNDS, _______, KC_PLUS, KC_RCBR, _______, KC_PIPE, _______ ), | ||
| 192 | |||
| 193 | /* Number | ||
| 194 | * ,-----------------------------------------------------------------------------------. | ||
| 195 | * | | + | - | | | | | 7 | 8 | 9 | | | | ||
| 196 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 197 | * | | * | / | = | | | | 4 | 5 | 6 | | | | ||
| 198 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 199 | * | | | | | | | | 1 | 2 | 3 | |Layer0| | ||
| 200 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 201 | * | | | | | | | 0 | 00 | . | | | | ||
| 202 | * `-----------------------------------------------------------------------------------' | ||
| 203 | */ | ||
| 204 | |||
| 205 | [_NUMB] = LAYOUT_planck_mit( /* 5 - Numpad */ | ||
| 206 | _______, KC_PPLS, KC_PMNS, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_7, KC_8, KC_9, XXXXXXX, _______, | ||
| 207 | _______, KC_PAST, KC_PSLS, KC_EQL, XXXXXXX, XXXXXXX, XXXXXXX, KC_4, KC_5, KC_6, XXXXXXX, _______, | ||
| 208 | _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_1, KC_2, KC_3, XXXXXXX, TO( 0 ), | ||
| 209 | _______, _______, _______, _______, _______, XXXXXXX, KC_0, KC_00, KC_DOT, XXXXXXX, _______ ), | ||
| 210 | |||
| 211 | /* MARO Empty | ||
| 212 | * ,-----------------------------------------------------------------------------------. | ||
| 213 | * | | | | | | | | | | | | | | ||
| 214 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 215 | * | | | | | | | | | | | | | | ||
| 216 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 217 | * | | | | | | | | | | | | | | ||
| 218 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 219 | * | | | | | | | | | | | | | ||
| 220 | * `-----------------------------------------------------------------------------------' | ||
| 221 | */ | ||
| 222 | |||
| 223 | [_MARO] = LAYOUT_planck_mit( | ||
| 224 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 225 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 226 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 227 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), | ||
| 228 | |||
| 229 | /* RGB | ||
| 230 | * ,-----------------------------------------------------------------------------------. | ||
| 231 | * | | | | | | _TAP | | | | | | | | ||
| 232 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 233 | * | MOD | M_R | M_SW | M_K | M_X | M_G | | | | | | | | ||
| 234 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 235 | * | HUI | SAI | VAI | | | | | | | | | | | ||
| 236 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 237 | * | HUD | SAD | VAD | | | RGB_TOG | | | | | | | ||
| 238 | * `-----------------------------------------------------------------------------------' | ||
| 239 | */ | ||
| 240 | |||
| 241 | [_RGB] = LAYOUT_planck_mit( | ||
| 242 | _______, _______, _______, _______, _______, RGB_TAP, _______, _______, _______, _______, _______, _______, | ||
| 243 | RGB_MOD, RGB_M_R, RGB_M_SW, RGB_M_K, RGB_M_X, RGB_M_G, _______, _______, _______, _______, _______, _______, | ||
| 244 | RGB_HUI, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, | ||
| 245 | RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, RGB_TOG, _______, _______, _______, _______, _______ ), | ||
| 246 | |||
| 247 | /* Func | ||
| 248 | * ,-----------------------------------------------------------------------------------. | ||
| 249 | * | | | | | | | | | | |Layer0| Rest | | ||
| 250 | * |------+------+------+------+------+-------------+------+------+------+------+------| | ||
| 251 | * | Caps | | | | | Game | | | | | | | | ||
| 252 | * |------+------+------+------+------+------|------+------+------+------+------+------| | ||
| 253 | * | | | | | | | Numb | Music| | | | | | ||
| 254 | * |------+------+------+------+------+------+------+------+------+------+------+------| | ||
| 255 | * | | | | | | | | | | | | | ||
| 256 | * `-----------------------------------------------------------------------------------' | ||
| 257 | */ | ||
| 258 | |||
| 259 | [_ADJUST] = LAYOUT_planck_mit( | ||
| 260 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO( 0 ), RESET , | ||
| 261 | KC_CAPS, _______, _______, _______, _______, TO(_GAME), _______, _______, _______, _______, _______, _______, | ||
| 262 | _______, _______, _______, _______, _______, _______, TO(_NUMB), MU_TOG, _______, _______, _______, _______, | ||
| 263 | _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ), | ||
| 264 | |||
| 265 | [_GAME] = LAYOUT_planck_mit( | ||
| 266 | XXXXXXX,KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, XXXXXXX, | ||
| 267 | XXXXXXX,KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, | ||
| 268 | XXXXXXX,KC_LCTL, KC_A, KC_S, KC_D, KC_B, KC_N, KC_M, XXXXXXX, XXXXXXX, KC_UP, TO( 0 ), | ||
| 269 | XXXXXXX,KC_LSFT, KC_Z, KC_X, KC_C, KC_SPC, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT ), | ||
| 270 | }; | ||
| 271 | |||
| 272 | /* Encoder */ | ||
| 273 | static uint8_t encoder_state = 0; | ||
| 274 | static int8_t encoder_value = 0; | ||
| 275 | static int8_t encoder_LUT[] = { 0, -1, 1, 0, 1, 0, 0, -1, -1, 0, 0, 1, 0, 1, -1, 0 }; | ||
| 276 | |||
| 277 | /* Timer */ | ||
| 278 | static uint16_t TAP_RGB_timer; | ||
| 279 | static uint16_t RGB_encoder_timer; | ||
| 280 | |||
| 281 | /* Encoder state RGB_display */ | ||
| 282 | static uint8_t RGB_encoder_count=6; | ||
| 283 | static bool RGB_encoder_bool = false; | ||
| 284 | |||
| 285 | /* RGB tap HUE */ | ||
| 286 | static uint16_t Type_Hue=270; | ||
| 287 | |||
| 288 | void matrix_init_user( void ) | ||
| 289 | { | ||
| 290 | _delay_ms( 200 ); | ||
| 291 | |||
| 292 | /* Encoder init */ | ||
| 293 | encoder_state = PIND & 0x3; | ||
| 294 | |||
| 295 | /* Timer init */ | ||
| 296 | RGB_encoder_timer= timer_read(); | ||
| 297 | TAP_RGB_timer= timer_read(); | ||
| 298 | } | ||
| 299 | |||
| 300 | |||
| 301 | void matrix_scan_user( void ) | ||
| 302 | { | ||
| 303 | /* Layer */ | ||
| 304 | uint8_t layer = biton32( layer_state ); | ||
| 305 | |||
| 306 | /* Encoder */ | ||
| 307 | encoder_state <<= 2; | ||
| 308 | encoder_state |= (PIND & 0x3); | ||
| 309 | encoder_value += encoder_LUT[encoder_state & 0xF]; | ||
| 310 | |||
| 311 | /* Encoder state RGB display */ | ||
| 312 | if (RGB_encoder_bool){ | ||
| 313 | if (timer_elapsed(RGB_encoder_timer) > 2500) { | ||
| 314 | RGB_encoder_bool=false; | ||
| 315 | if (RGB_TAP_STATE) { | ||
| 316 | rgblight_mode( 1 ); | ||
| 317 | rgblight_setrgb( RGB_TAP_Base_Color ); | ||
| 318 | }else{ | ||
| 319 | rgblight_mode( RGB_LAYER0_mode ); | ||
| 320 | } | ||
| 321 | } | ||
| 322 | } | ||
| 323 | |||
| 324 | /* Display the Caps state */ | ||
| 325 | if (caps==true){ | ||
| 326 | rgblight_setrgb_at(RGB_Caps_Color,12); | ||
| 327 | } | ||
| 328 | |||
| 329 | /* Start of Encoder clockwise */ | ||
| 330 | if ( encoder_value >= 4 ) { | ||
| 331 | |||
| 332 | /* Start of Encoder state RGB_display */ | ||
| 333 | if (!RGB_encoder_bool){ | ||
| 334 | RGB_encoder_timer=timer_read(); | ||
| 335 | RGB_encoder_bool=true; | ||
| 336 | RGB_encoder_count=5; | ||
| 337 | rgblight_mode(1); | ||
| 338 | rgblight_setrgb( 0,0,0 ); | ||
| 339 | }else if (RGB_encoder_bool && timer_elapsed(RGB_encoder_timer) < 800) { | ||
| 340 | RGB_encoder_timer=timer_read(); | ||
| 341 | RGB_encoder_count-=1; | ||
| 342 | if (RGB_encoder_count>5 || RGB_encoder_count<1){ | ||
| 343 | RGB_encoder_count=5; | ||
| 344 | rgblight_setrgb(0, 0, 0); | ||
| 345 | } | ||
| 346 | } | ||
| 347 | rgblight_setrgb_at(0,255,0,5); | ||
| 348 | if (RGB_encoder_count<1) {RGB_encoder_count=1;} | ||
| 349 | switch (RGB_encoder_count) { | ||
| 350 | case 5: | ||
| 351 | rgblight_setrgb_at(0, 255, 0,4); | ||
| 352 | break; | ||
| 353 | case 4: | ||
| 354 | rgblight_setrgb_at(0, 255, 0,3); | ||
| 355 | break; | ||
| 356 | case 3: | ||
| 357 | rgblight_setrgb_at(0, 255, 0,2); | ||
| 358 | break; | ||
| 359 | case 2: | ||
| 360 | rgblight_setrgb_at(0, 255, 0,1); | ||
| 361 | break; | ||
| 362 | case 1: | ||
| 363 | rgblight_setrgb_at(0, 255, 0,0); | ||
| 364 | break; | ||
| 365 | } | ||
| 366 | /* End of Encoder state RGB_display */ | ||
| 367 | |||
| 368 | /* Start of Set Encoder Keycode */ | ||
| 369 | switch ( layer ) | ||
| 370 | { | ||
| 371 | case 0: | ||
| 372 | register_code( KC_VOLD ); | ||
| 373 | unregister_code( KC_VOLD ); | ||
| 374 | break; | ||
| 375 | case _CODE: | ||
| 376 | register_code( KC_LEFT ); | ||
| 377 | unregister_code( KC_LEFT ); | ||
| 378 | break; | ||
| 379 | case _RGB: | ||
| 380 | rgblight_decrease_val(); | ||
| 381 | break; | ||
| 382 | case _NUMB: | ||
| 383 | register_code( KC_LEFT ); | ||
| 384 | unregister_code( KC_LEFT ); | ||
| 385 | break; | ||
| 386 | case _MARO: | ||
| 387 | register_code( KC_UP ); | ||
| 388 | unregister_code( KC_UP ); | ||
| 389 | break; | ||
| 390 | default: | ||
| 391 | register_code( KC_VOLD ); | ||
| 392 | unregister_code( KC_VOLD ); | ||
| 393 | } | ||
| 394 | /* End of Set Encoder Keycode */ | ||
| 395 | |||
| 396 | } | ||
| 397 | |||
| 398 | /* End of Encoder clockwise */ | ||
| 399 | |||
| 400 | /* Start of Encoder anti-clockwise */ | ||
| 401 | if ( encoder_value <= -4 ) | ||
| 402 | { | ||
| 403 | /* Start of Encoder state RGB_display */ | ||
| 404 | if (!RGB_encoder_bool){ | ||
| 405 | RGB_encoder_timer=timer_read(); | ||
| 406 | RGB_encoder_bool=true; | ||
| 407 | RGB_encoder_count=6; | ||
| 408 | rgblight_mode(1); | ||
| 409 | rgblight_setrgb( 0,0,0 ); | ||
| 410 | }else if (RGB_encoder_bool && timer_elapsed(RGB_encoder_timer) < 800) { | ||
| 411 | RGB_encoder_timer=timer_read(); | ||
| 412 | RGB_encoder_count+=1; | ||
| 413 | if (RGB_encoder_count<6 || RGB_encoder_count> 10){ | ||
| 414 | RGB_encoder_count=6; | ||
| 415 | rgblight_setrgb(0, 0, 0); | ||
| 416 | } | ||
| 417 | } | ||
| 418 | rgblight_setrgb_at(0, 0,255,6); | ||
| 419 | if (RGB_encoder_count>11) { | ||
| 420 | RGB_encoder_count=11; | ||
| 421 | } | ||
| 422 | switch (RGB_encoder_count) { | ||
| 423 | case 6: | ||
| 424 | rgblight_setrgb_at(0, 0,255,7); | ||
| 425 | break; | ||
| 426 | case 7: | ||
| 427 | rgblight_setrgb_at(0, 0,255,8); | ||
| 428 | break; | ||
| 429 | case 8: | ||
| 430 | rgblight_setrgb_at(0, 0,255,9); | ||
| 431 | break; | ||
| 432 | case 9: | ||
| 433 | rgblight_setrgb_at(0, 0,255,10); | ||
| 434 | break; | ||
| 435 | case 10: | ||
| 436 | rgblight_setrgb_at(0, 0,128,11); | ||
| 437 | break; | ||
| 438 | } | ||
| 439 | /* End of Encoder state RGB_display */ | ||
| 440 | |||
| 441 | /* Start of Set Encoder Keycode */ | ||
| 442 | switch ( layer ) | ||
| 443 | { | ||
| 444 | case 0: | ||
| 445 | register_code( KC_VOLU ); | ||
| 446 | unregister_code( KC_VOLU ); | ||
| 447 | break; | ||
| 448 | case _CODE: | ||
| 449 | register_code( KC_RGHT ); | ||
| 450 | unregister_code( KC_RGHT ); | ||
| 451 | break; | ||
| 452 | case _RGB: | ||
| 453 | rgblight_increase_val(); | ||
| 454 | break; | ||
| 455 | case _NUMB: | ||
| 456 | register_code( KC_RGHT ); | ||
| 457 | unregister_code( KC_RGHT ); | ||
| 458 | break; | ||
| 459 | case _MARO: | ||
| 460 | register_code( KC_DOWN ); | ||
| 461 | unregister_code( KC_DOWN ); | ||
| 462 | break; | ||
| 463 | default: | ||
| 464 | register_code( KC_VOLU ); | ||
| 465 | unregister_code( KC_VOLU ); | ||
| 466 | } | ||
| 467 | /* End of Set Encoder Keycode */ | ||
| 468 | |||
| 469 | } | ||
| 470 | |||
| 471 | /* End of Encoder anti-clockwise */ | ||
| 472 | |||
| 473 | encoder_value %= 4; | ||
| 474 | |||
| 475 | /* Start of RGB with Layer change */ | ||
| 476 | |||
| 477 | /* Save the Layer0 RGB state */ | ||
| 478 | if ( save_rgbmode == true ) { | ||
| 479 | if (RGB_TAP_STATE==false) | ||
| 480 | { | ||
| 481 | RGB_LAYER0_mode = rgblight_config.mode; | ||
| 482 | } | ||
| 483 | } | ||
| 484 | save_rgbmode = false; | ||
| 485 | |||
| 486 | /* When the layer is changed */ | ||
| 487 | if ( layer != current_layer && caps == false) { | ||
| 488 | has_layer_changed = true; | ||
| 489 | current_layer = layer; /* update layer information */ | ||
| 490 | } | ||
| 491 | /* Check for layer change, and apply color if its changed since last check */ | ||
| 492 | if ( has_layer_changed ) | ||
| 493 | { | ||
| 494 | /* change backlight based on layer. These should be numbers or whatever you defined the layers as */ | ||
| 495 | switch ( layer ) | ||
| 496 | { | ||
| 497 | case 0: | ||
| 498 | |||
| 499 | /* if the key tap RGB effect is enable */ | ||
| 500 | if (RGB_TAP_STATE==true){ | ||
| 501 | rgblight_mode(1); | ||
| 502 | rgblight_setrgb( RGB_TAP_Base_Color ); | ||
| 503 | } | ||
| 504 | else{ | ||
| 505 | rgblight_mode( RGB_LAYER0_mode ); | ||
| 506 | } | ||
| 507 | break; | ||
| 508 | |||
| 509 | case _CODE: //1 | ||
| 510 | /* Save Layer0 RGB state */ | ||
| 511 | RGB_LAYER0_mode = rgblight_config.mode; | ||
| 512 | |||
| 513 | /* set all the RGB color under the switch */ | ||
| 514 | rgblight_mode( 1 ); | ||
| 515 | rgblight_setrgb(RGB_Layer_1_Base_Color); | ||
| 516 | |||
| 517 | /* set each of the RGB led color under the switch */ | ||
| 518 | rgblight_setrgb_at(64, 64, 64,1); // Q | ||
| 519 | rgblight_setrgb_at(64, 64, 64,2); // W | ||
| 520 | rgblight_setrgb_at(64, 64, 64,3); // E | ||
| 521 | rgblight_setrgb_at(64, 64, 64,4); // R | ||
| 522 | rgblight_setrgb_at(64, 64, 64,5); // T | ||
| 523 | rgblight_setrgb_at(64, 64, 64,6); // Y | ||
| 524 | rgblight_setrgb_at(64, 64, 64,7); // U | ||
| 525 | rgblight_setrgb_at(64, 64, 64,8); // I | ||
| 526 | rgblight_setrgb_at(64, 64, 64,9); // O | ||
| 527 | rgblight_setrgb_at(64, 64, 64,10); // P | ||
| 528 | rgblight_setrgb_at(64, 0, 0,40); // - | ||
| 529 | rgblight_setrgb_at(64, 0, 0,42); // = | ||
| 530 | break; | ||
| 531 | |||
| 532 | case _NAVI: //2 | ||
| 533 | RGB_LAYER0_mode = rgblight_config.mode; | ||
| 534 | |||
| 535 | rgblight_mode( 1 ); | ||
| 536 | rgblight_setrgb(RGB_Layer_2_Base_Color); | ||
| 537 | |||
| 538 | rgblight_setrgb_at(64, 0, 64,3); | ||
| 539 | rgblight_setrgb_at(64, 0, 64,14); | ||
| 540 | rgblight_setrgb_at(64, 0, 64,15); | ||
| 541 | rgblight_setrgb_at(64, 0, 64,16); | ||
| 542 | rgblight_setrgb_at(64, 64, 0,8); | ||
| 543 | rgblight_setrgb_at(64, 64, 0,10); | ||
| 544 | rgblight_setrgb_at(64, 64, 0,21); | ||
| 545 | rgblight_setrgb_at(64, 64, 0,29); | ||
| 546 | rgblight_setrgb_at(64, 0, 0,11); | ||
| 547 | rgblight_setrgb_at(0, 0, 64,34); | ||
| 548 | rgblight_setrgb_at(0, 0, 64,44); | ||
| 549 | rgblight_setrgb_at(0, 0, 64,45); | ||
| 550 | rgblight_setrgb_at(0, 0, 64,46); | ||
| 551 | break; | ||
| 552 | case _FUNC: //3 | ||
| 553 | RGB_LAYER0_mode = rgblight_config.mode; | ||
| 554 | |||
| 555 | rgblight_mode( 1 ); | ||
| 556 | rgblight_setrgb(RGB_Layer_3_Base_Color); | ||
| 557 | |||
| 558 | rgblight_setrgb_at(0, 0, 64,1); | ||
| 559 | rgblight_setrgb_at(0, 0, 64,2); | ||
| 560 | rgblight_setrgb_at(0, 0, 64,3); | ||
| 561 | rgblight_setrgb_at(0, 0, 64,4); | ||
| 562 | rgblight_setrgb_at(0, 0, 64,5); | ||
| 563 | rgblight_setrgb_at(0, 0, 64,6); | ||
| 564 | rgblight_setrgb_at(0, 0, 64,7); | ||
| 565 | rgblight_setrgb_at(0, 0, 64,8); | ||
| 566 | rgblight_setrgb_at(0, 0, 64,9); | ||
| 567 | rgblight_setrgb_at(0, 0, 64,10); | ||
| 568 | rgblight_setrgb_at(0, 0, 64,13); | ||
| 569 | rgblight_setrgb_at(0, 0, 64,14); | ||
| 570 | break; | ||
| 571 | |||
| 572 | case _SYMB: //4 | ||
| 573 | RGB_LAYER0_mode = rgblight_config.mode; | ||
| 574 | |||
| 575 | rgblight_mode( 1 ); | ||
| 576 | rgblight_setrgb(RGB_Layer_4_Base_Color); | ||
| 577 | |||
| 578 | rgblight_setrgb_at(0, 64, 64,1); | ||
| 579 | rgblight_setrgb_at(0, 64, 64,2); | ||
| 580 | rgblight_setrgb_at(0, 64, 64,3); | ||
| 581 | rgblight_setrgb_at(0, 64, 64,4); | ||
| 582 | rgblight_setrgb_at(0, 64, 64,5); | ||
| 583 | rgblight_setrgb_at(0, 64, 64,6); | ||
| 584 | rgblight_setrgb_at(0, 64, 64,7); | ||
| 585 | rgblight_setrgb_at(0, 64, 64,8); | ||
| 586 | rgblight_setrgb_at(0, 64, 64,9); | ||
| 587 | rgblight_setrgb_at(0, 64, 64,10); | ||
| 588 | rgblight_setrgb_at(0, 64, 64,12); | ||
| 589 | rgblight_setrgb_at(0, 64, 64,22); | ||
| 590 | rgblight_setrgb_at(0, 64, 64,23); | ||
| 591 | rgblight_setrgb_at(0, 64, 64,32); | ||
| 592 | rgblight_setrgb_at(0, 64, 64,33); | ||
| 593 | rgblight_setrgb_at(0, 64, 64,34); | ||
| 594 | rgblight_setrgb_at(0, 64, 64,39); | ||
| 595 | rgblight_setrgb_at(0, 64, 64,40); | ||
| 596 | rgblight_setrgb_at(0, 64, 64,42); | ||
| 597 | rgblight_setrgb_at(0, 64, 64,43); | ||
| 598 | break; | ||
| 599 | |||
| 600 | case _NUMB: //5 | ||
| 601 | RGB_LAYER0_mode = rgblight_config.mode; | ||
| 602 | |||
| 603 | rgblight_mode( 1 ); | ||
| 604 | rgblight_setrgb(RGB_Layer_5_Base_Color); | ||
| 605 | |||
| 606 | rgblight_setrgb_at(0,64,0,1); | ||
| 607 | rgblight_setrgb_at(0,64,0,2); | ||
| 608 | rgblight_setrgb_at(0,64,0,13); | ||
| 609 | rgblight_setrgb_at(0,64,0,14); | ||
| 610 | rgblight_setrgb_at(0,64,64,15); | ||
| 611 | rgblight_setrgb_at(64,64,64,7); | ||
| 612 | rgblight_setrgb_at(64,64,64,8); | ||
| 613 | rgblight_setrgb_at(64,64,64,9); | ||
| 614 | rgblight_setrgb_at(64,64,64,19); | ||
| 615 | rgblight_setrgb_at(64,64,64,20); | ||
| 616 | rgblight_setrgb_at(64,64,64,21); | ||
| 617 | rgblight_setrgb_at(64,64,64,31); | ||
| 618 | rgblight_setrgb_at(64,64,64,32); | ||
| 619 | rgblight_setrgb_at(64,64,64,33); | ||
| 620 | rgblight_setrgb_at(64,64,64,42); | ||
| 621 | rgblight_setrgb_at(64,64,64,43); | ||
| 622 | rgblight_setrgb_at(0,128,0,44); | ||
| 623 | break; | ||
| 624 | case _MARO: //6 | ||
| 625 | RGB_LAYER0_mode = rgblight_config.mode; | ||
| 626 | |||
| 627 | rgblight_mode( 1 ); | ||
| 628 | rgblight_setrgb(RGB_Layer_6_Base_Color); | ||
| 629 | break; | ||
| 630 | |||
| 631 | case _RGB: //7 | ||
| 632 | RGB_LAYER0_mode = rgblight_config.mode; | ||
| 633 | |||
| 634 | rgblight_mode( 1 ); | ||
| 635 | rgblight_setrgb(RGB_Layer_7_Base_Color); | ||
| 636 | |||
| 637 | rgblight_setrgb_at(1,143,225,0); | ||
| 638 | rgblight_setrgb_at(39,21,107,1); | ||
| 639 | rgblight_setrgb_at(208,0,0,2); | ||
| 640 | rgblight_setrgb_at(64,64,64,21); | ||
| 641 | break; | ||
| 642 | case _ADJUST: //8 | ||
| 643 | RGB_LAYER0_mode = rgblight_config.mode; | ||
| 644 | |||
| 645 | rgblight_mode( 1 ); | ||
| 646 | rgblight_setrgb(RGB_Layer_8_Base_Color); | ||
| 647 | |||
| 648 | rgblight_setrgb_at(0,64,0,10); | ||
| 649 | rgblight_setrgb_at(64,0,0,11); | ||
| 650 | rgblight_setrgb_at(0,64,0,17); | ||
| 651 | rgblight_setrgb_at(0,64,0,30); | ||
| 652 | rgblight_setrgb_at(6,50,50,12); | ||
| 653 | break; | ||
| 654 | |||
| 655 | case _GAME: //9 | ||
| 656 | RGB_LAYER0_mode = rgblight_config.mode; | ||
| 657 | |||
| 658 | rgblight_mode( 1 ); | ||
| 659 | rgblight_setrgb(RGB_Layer_9_Base_Color); | ||
| 660 | |||
| 661 | rgblight_setrgb_at(0,0,64,15); | ||
| 662 | rgblight_setrgb_at(0,0,64,26); | ||
| 663 | rgblight_setrgb_at(0,0,64,27); | ||
| 664 | rgblight_setrgb_at(0,0,64,28); | ||
| 665 | rgblight_setrgb_at(64,0,0,35); | ||
| 666 | break; | ||
| 667 | |||
| 668 | default: | ||
| 669 | rgblight_mode( RGB_LAYER0_mode ); | ||
| 670 | } | ||
| 671 | has_layer_changed = false; | ||
| 672 | } | ||
| 673 | /* End of RGB with Layer change */ | ||
| 674 | |||
| 675 | } // End of matrix_scan_user | ||
| 676 | |||
| 677 | |||
| 678 | |||
| 679 | /* shift + enter = " from:https://github.com/qmk/qmk_firmware/blob/e899cb8940da04fa2610604f0aab417db7fac119/keyboards/mitosis/keymaps/datagrok/keymap.c */ | ||
| 680 | |||
| 681 | bool comm_shifted = false; | ||
| 682 | bool ques_shifted = false; | ||
| 683 | static uint8_t key_index = 0; | ||
| 684 | uint8_t shifted; | ||
| 685 | uint16_t s_keycode; | ||
| 686 | bool *k_shifted; | ||
| 687 | |||
| 688 | bool process_record_user( uint16_t keycode, keyrecord_t *record ){ | ||
| 689 | |||
| 690 | /* Start of key tap RGB effect */ | ||
| 691 | if ( RGB_TAP_STATE ==true ) { | ||
| 692 | key_index=(record->event.key.col)+(record->event.key.row)*12; | ||
| 693 | |||
| 694 | /* Change the Hue of the RGB color with the type speed */ | ||
| 695 | if (timer_elapsed(TAP_RGB_timer) >10000){ | ||
| 696 | TAP_RGB_timer=timer_read(); | ||
| 697 | Type_Hue=270; | ||
| 698 | }else if (timer_elapsed(TAP_RGB_timer) >1000){ | ||
| 699 | Type_Hue+=30; | ||
| 700 | if (Type_Hue>270) { | ||
| 701 | Type_Hue=270;} | ||
| 702 | }else{ | ||
| 703 | TAP_RGB_timer=timer_read(); | ||
| 704 | Type_Hue-=10; | ||
| 705 | if (Type_Hue<10) { | ||
| 706 | Type_Hue=10;} | ||
| 707 | } | ||
| 708 | if (key_index>42){ //fix the RGB index of the MIT layout position | ||
| 709 | key_index=key_index-1; | ||
| 710 | } | ||
| 711 | if ( record->event.pressed ) { | ||
| 712 | rgblight_sethsv_at(Type_Hue,255,255,key_index); | ||
| 713 | } else { | ||
| 714 | rgblight_setrgb_at(RGB_TAP_Base_Color,key_index); | ||
| 715 | } | ||
| 716 | } | ||
| 717 | /* End of key tap RGB effect */ | ||
| 718 | |||
| 719 | switch ( keycode ) | ||
| 720 | { | ||
| 721 | /* save the RGB state when set the new */ | ||
| 722 | case RGB_M_R: | ||
| 723 | save_rgbmode = true; | ||
| 724 | break; | ||
| 725 | case RGB_M_SW: | ||
| 726 | save_rgbmode = true; | ||
| 727 | break; | ||
| 728 | case RGB_M_X: | ||
| 729 | save_rgbmode = true; | ||
| 730 | break; | ||
| 731 | case RGB_M_G: | ||
| 732 | save_rgbmode = true; | ||
| 733 | break; | ||
| 734 | case RGB_MODE_KNIGHT: | ||
| 735 | save_rgbmode = true; | ||
| 736 | break; | ||
| 737 | |||
| 738 | /* Define a New Keycode: double zero */ | ||
| 739 | case KC_00: | ||
| 740 | if (record->event.pressed) { | ||
| 741 | // Do something when pressed | ||
| 742 | } else { | ||
| 743 | register_code( KC_0 ); // send 0 | ||
| 744 | unregister_code( KC_0 ); | ||
| 745 | |||
| 746 | register_code( KC_0 ); // send 0 twice without macro | ||
| 747 | unregister_code( KC_0 ); | ||
| 748 | } | ||
| 749 | return false; // Skip all further processing of this key | ||
| 750 | |||
| 751 | /* when the REST key is pressed the 'R' key will RED,the "Bottom Left"(esc of qmk-dfu) will be GREEN */ | ||
| 752 | case RESET: | ||
| 753 | rgblight_mode( 1 ); | ||
| 754 | rgblight_setrgb( 0, 0, 0 ); | ||
| 755 | rgblight_setrgb_at(128, 0, 0,4); // R | ||
| 756 | rgblight_setrgb_at(6, 128, 24,36); // Bottom Left key | ||
| 757 | break; | ||
| 758 | |||
| 759 | /* Define a New Keycode: key tap RGB effect toggle */ | ||
| 760 | case RGB_TAP: | ||
| 761 | if ( !(record->event.pressed)) { | ||
| 762 | /* If enable,the 'On' key will be green */ | ||
| 763 | if (RGB_TAP_STATE) { | ||
| 764 | RGB_TAP_STATE=false; | ||
| 765 | rgblight_mode( 1 ); | ||
| 766 | rgblight_setrgb( RGB_TAP_Base_Color ); | ||
| 767 | rgblight_setrgb_at(RGB_TAP_Off_Color,16); // O - on | ||
| 768 | }else{ | ||
| 769 | /* If disenable,the 'oFf' key will be red */ | ||
| 770 | RGB_TAP_STATE=true; | ||
| 771 | rgblight_mode( 1 ); | ||
| 772 | rgblight_setrgb( RGB_TAP_Base_Color ); | ||
| 773 | rgblight_setrgb_at(RGB_TAP_On_Color,9); // F - off | ||
| 774 | } | ||
| 775 | } | ||
| 776 | break; | ||
| 777 | |||
| 778 | /* special shift keys */ | ||
| 779 | case KC_ENT: | ||
| 780 | s_keycode = KC_QUOT; | ||
| 781 | k_shifted = &ques_shifted; | ||
| 782 | break; | ||
| 783 | case KC_UP: | ||
| 784 | s_keycode = KC_SLSH; | ||
| 785 | k_shifted = &ques_shifted; | ||
| 786 | break; | ||
| 787 | case KC_DOWN: | ||
| 788 | s_keycode = KC_BSLS; | ||
| 789 | k_shifted = &ques_shifted; | ||
| 790 | break; | ||
| 791 | default: | ||
| 792 | return(true); | ||
| 793 | } | ||
| 794 | |||
| 795 | shifted = get_mods() & (MOD_BIT( KC_LSHIFT ) | MOD_BIT( KC_RSHIFT ) ); | ||
| 796 | |||
| 797 | /* Keydown. If shift is currently pressed, register its alternate keycode. */ | ||
| 798 | if ( record->event.pressed && shifted ) | ||
| 799 | { | ||
| 800 | *k_shifted = true; | ||
| 801 | register_code( s_keycode ); | ||
| 802 | return(false); | ||
| 803 | /* | ||
| 804 | * Keyup. If shift was pressed back when the key was pressed, unregister | ||
| 805 | * its alternate keycode. | ||
| 806 | */ | ||
| 807 | } else if ( !(record->event.pressed) && *k_shifted ) { | ||
| 808 | *k_shifted = false; | ||
| 809 | unregister_code( s_keycode ); | ||
| 810 | return(false); | ||
| 811 | /* Otherwise, behave as normal. */ | ||
| 812 | } else { | ||
| 813 | return(true); | ||
| 814 | } | ||
| 815 | |||
| 816 | } // End ofprocess_record_user | ||
| 817 | |||
| 818 | |||
| 819 | void led_set_user( uint8_t usb_led ) | ||
| 820 | { | ||
| 821 | static uint8_t old_usb_led = 0; | ||
| 822 | _delay_ms( 10 ); /* gets rid of tick */ | ||
| 823 | |||
| 824 | if ( (usb_led & (1 << USB_LED_CAPS_LOCK) ) && !(old_usb_led & (1 << USB_LED_CAPS_LOCK) ) ) { | ||
| 825 | /* CAPS on */ | ||
| 826 | caps= true; | ||
| 827 | rgblight_setrgb( 0,0,0 ); | ||
| 828 | rgblight_setrgb_at(RGB_Caps_Color,12); // caps key | ||
| 829 | #ifdef AUDIO_ENABLE | ||
| 830 | PLAY_SONG( tone_caps ); | ||
| 831 | #endif | ||
| 832 | }else if ( !(usb_led & (1 << USB_LED_CAPS_LOCK) ) && (old_usb_led & (1 << USB_LED_CAPS_LOCK) ) ) { | ||
| 833 | |||
| 834 | /* CAPS off */ | ||
| 835 | caps= false; | ||
| 836 | if (RGB_TAP_STATE==false){ | ||
| 837 | rgblight_mode( RGB_LAYER0_mode ); | ||
| 838 | }else{ | ||
| 839 | rgblight_mode(1); | ||
| 840 | rgblight_setrgb( 0,0,0 ); | ||
| 841 | } | ||
| 842 | #ifdef AUDIO_ENABLE | ||
| 843 | PLAY_SONG( tone_caps ); | ||
| 844 | #endif | ||
| 845 | } | ||
| 846 | old_usb_led = usb_led; | ||
| 847 | } // End of led_set_user | ||
| 848 | |||
diff --git a/keyboards/tetris/readme.md b/keyboards/tetris/readme.md new file mode 100644 index 000000000..b74740854 --- /dev/null +++ b/keyboards/tetris/readme.md | |||
| @@ -0,0 +1,15 @@ | |||
| 1 | Tetris | ||
| 2 | === | ||
| 3 | A compact 40% (12x4) ortholinear keyboard (Planck Mit layout) with per switch RGB and encoder made by Fengz. | ||
| 4 | |||
| 5 |  | ||
| 6 | |||
| 7 | More: [Imgur](https://imgur.com/gallery/Azq2zUm). | ||
| 8 | |||
| 9 | Keyboard Maintainer: [Fengz](https://github.com/ycf) | ||
| 10 | |||
| 11 | Make example for this keyboard (after setting up your build environment): | ||
| 12 | |||
| 13 | make tetris:default | ||
| 14 | |||
| 15 | See [build environment setup](https://docs.qmk.fm/build_environment_setup.html) then the [make instructions](https://docs.qmk.fm/make_instructions.html) for more information. \ No newline at end of file | ||
diff --git a/keyboards/tetris/rules.mk b/keyboards/tetris/rules.mk new file mode 100644 index 000000000..40b098ae6 --- /dev/null +++ b/keyboards/tetris/rules.mk | |||
| @@ -0,0 +1,58 @@ | |||
| 1 | # MCU name | ||
| 2 | MCU = atmega32u4 | ||
| 3 | |||
| 4 | # Processor frequency. | ||
| 5 | # This will define a symbol, F_CPU, in all source code files equal to the | ||
| 6 | # processor frequency in Hz. You can then use this symbol in your source code to | ||
| 7 | # calculate timings. Do NOT tack on a 'UL' at the end, this will be done | ||
| 8 | # automatically to create a 32-bit value in your source code. | ||
| 9 | # | ||
| 10 | # This will be an integer division of F_USB below, as it is sourced by | ||
| 11 | # F_USB after it has run through any CPU prescalers. Note that this value | ||
| 12 | # does not *change* the processor frequency - it should merely be updated to | ||
| 13 | # reflect the processor speed set externally so that the code can use accurate | ||
| 14 | # software delays. | ||
| 15 | F_CPU = 16000000 | ||
| 16 | |||
| 17 | # | ||
| 18 | # LUFA specific | ||
| 19 | # | ||
| 20 | # Target architecture (see library "Board Types" documentation). | ||
| 21 | ARCH = AVR8 | ||
| 22 | |||
| 23 | # Input clock frequency. | ||
| 24 | # This will define a symbol, F_USB, in all source code files equal to the | ||
| 25 | # input clock frequency (before any prescaling is performed) in Hz. This value may | ||
| 26 | # differ from F_CPU if prescaling is used on the latter, and is required as the | ||
| 27 | # raw input clock is fed directly to the PLL sections of the AVR for high speed | ||
| 28 | # clock generation for the USB and other AVR subsections. Do NOT tack on a 'UL' | ||
| 29 | # at the end, this will be done automatically to create a 32-bit value in your | ||
| 30 | # source code. | ||
| 31 | # | ||
| 32 | # If no clock division is performed on the input clock inside the AVR (via the | ||
| 33 | # CPU clock adjust registers or the clock division fuses), this will be equal to F_CPU. | ||
| 34 | F_USB = $(F_CPU) | ||
| 35 | |||
| 36 | # Interrupt driven control endpoint task(+60) | ||
| 37 | OPT_DEFS += -DINTERRUPT_CONTROL_ENDPOINT | ||
| 38 | |||
| 39 | # Boot Section Size in *bytes* | ||
| 40 | #OPT_DEFS += -DBOOTLOADER_SIZE=4096 | ||
| 41 | |||
| 42 | BOOTLOADER =qmk-dfu | ||
| 43 | |||
| 44 | # Build Options | ||
| 45 | # comment out to disable the options. | ||
| 46 | # | ||
| 47 | BOOTMAGIC_ENABLE ?= no # Virtual DIP switch configuration(+1000) | ||
| 48 | MOUSEKEY_ENABLE ?= no # Mouse keys(+4700) | ||
| 49 | EXTRAKEY_ENABLE ?= yes # Audio control and System control(+450) | ||
| 50 | CONSOLE_ENABLE ?= no # Console for debug(+400) | ||
| 51 | COMMAND_ENABLE ?= no # Commands for debug and configuration | ||
| 52 | SLEEP_LED_ENABLE ?= no # Breathing sleep LED during USB suspend | ||
| 53 | NKRO_ENABLE ?= yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work | ||
| 54 | BACKLIGHT_ENABLE ?= no # Enable keyboard backlight functionality | ||
| 55 | AUDIO_ENABLE ?= yes | ||
| 56 | RGBLIGHT_ENABLE ?= yes | ||
| 57 | TAP_DANCE_ENABLE = yes | ||
| 58 | EXTRAFLAGS += -flto # Make the hex smaller \ No newline at end of file | ||
diff --git a/keyboards/tetris/tetris.c b/keyboards/tetris/tetris.c new file mode 100644 index 000000000..8d494c17f --- /dev/null +++ b/keyboards/tetris/tetris.c | |||
| @@ -0,0 +1 @@ | |||
| #include "tetris.h" | |||
diff --git a/keyboards/tetris/tetris.h b/keyboards/tetris/tetris.h new file mode 100644 index 000000000..0a036ec3b --- /dev/null +++ b/keyboards/tetris/tetris.h | |||
| @@ -0,0 +1,18 @@ | |||
| 1 | #ifndef TETRIS_H | ||
| 2 | #define TETRIS_H | ||
| 3 | |||
| 4 | #include "quantum.h" | ||
| 5 | |||
| 6 | #define LAYOUT_planck_mit( \ | ||
| 7 | K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011, \ | ||
| 8 | K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111, \ | ||
| 9 | K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211, \ | ||
| 10 | K300, K301, K302, K303, K304, K305, K307, K308, K309, K310, K311 \ | ||
| 11 | ) { \ | ||
| 12 | { K000, K001, K002, K003, K004, K005, K006, K007, K008, K009, K010, K011 }, \ | ||
| 13 | { K100, K101, K102, K103, K104, K105, K106, K107, K108, K109, K110, K111 }, \ | ||
| 14 | { K200, K201, K202, K203, K204, K205, K206, K207, K208, K209, K210, K211 }, \ | ||
| 15 | { K300, K301, K302, K303, K304, K305, KC_NO, K307, K308, K309, K310, K311 } \ | ||
| 16 | } | ||
| 17 | |||
| 18 | #endif \ No newline at end of file | ||
