forked from mirror/qmk_firmware
Remove userspace keymaps (#22544)
This commit is contained in:
@@ -1,28 +0,0 @@
|
||||
/* Copyright 2021 Alan Pocklington
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#ifndef CONFIG_USER_H
|
||||
#define CONFIG_USER_H
|
||||
|
||||
#include "../../config.h"
|
||||
|
||||
#undef MATRIX_ROW_PINS
|
||||
#undef MATRIX_COL_PINS
|
||||
|
||||
#define MATRIX_ROW_PINS { D4, D5, C7, C6 }
|
||||
#define MATRIX_COL_PINS { F0, F1, F4, F5, F6, D7, D1, B7, D0, B3, B2, B1, B0 }
|
||||
|
||||
#endif
|
||||
@@ -1,222 +0,0 @@
|
||||
/* Copyright 2021 Alan Pocklington
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "keymap_uk.h"
|
||||
#include "ajp10304.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------| |-----------------------------------------.
|
||||
* | Esc | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | A | S | D | F | G | | H | J | K | L | ;: | Enter|
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shft | Z | X | C | V | B | | N | M | ,< | .> | /? | Shft |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Raise | Shift| MENU | Ctrl | Fn2 |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC ,
|
||||
MT(MOD_LSFT, KC_TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, MT(MOD_RSFT, KC_ENT) ,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT ,
|
||||
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, RAISE, KC_LSFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
|
||||
),
|
||||
|
||||
/* Colemak-DHm
|
||||
* ,-----------------------------------------| |-----------------------------------------.
|
||||
* | Esc | Q | W | F | P | B | | J | L | U | Y | ;: | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | A | R | S | T | G | | M | N | E | I | O | Enter|
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shft | Z | X | C | D | V | | K | H | ,< | .> | /? | Shft |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Raise | Shift| MENU | Ctrl | Fn2 |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
LT(_NUMPAD, KC_ESC), KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC ,
|
||||
MT(MOD_LSFT, KC_TAB), KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, MT(MOD_RSFT, KC_ENT) ,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT ,
|
||||
MO(_FUNC), KC_LCTL, KC_LALT, KC_LGUI, LOWER, KC_BSPC, KC_LCTL, KC_LALT, KC_SPC, RAISE, KC_LSFT, KC_BTN2, KC_RCTL, MO(_FUNC2)
|
||||
),
|
||||
|
||||
/* Function
|
||||
* ,------------------------------------------ |-----------------------------------------.
|
||||
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
* |------+------+------+------+------+------- |------+------+------+------+------+------|
|
||||
* | 1! | 2" | 3£ | 4$ | 5% | 6^ | | 7& | 8* | 9( | 0) | ~ |INSERT|
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| \| | `¬ | #~ | * | -_ | | =+ | \| | [{ | ]} | '@ |Shift |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Mouse | MENU | Alt | Ctrl | Fn |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FUNC] = LAYOUT(
|
||||
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, UK_TILD, KC_INSERT ,
|
||||
KC_LSFT, KC_NUBS, KC_GRAVE, KC_NONUS_HASH, KC_PAST, KC_MINS, KC_EQL, KC_BSLS, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) ,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, MO(_MOUSE), _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ,------------------------------------------ |-----------------------------------------.
|
||||
* | 1! | 2" | 3£ | 4$ | 5% | 6^ | | 7& | 8* | 9( | 0) | DEL | Bksp |
|
||||
* |------+------+------+------+------+------- |------+------+------+------+------+------|
|
||||
* | ! | " | £ | $ | % | ^ | | & | * | ( | ) |WrdDel|WrdBks|
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| \| | `¬ | #~ | '@ | -_ | | =+ | #~ | [{ | ]} | '@ |Shift |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | | |Lower | Del | Ctrl | Alt |Space | | Next | Vol- | Vol+ | Play |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL, KC_BSPC ,
|
||||
LSFT(KC_1), LSFT(KC_2), LSFT(KC_3), LSFT(KC_4), LSFT(KC_5), LSFT(KC_6), LSFT(KC_7), LSFT(KC_8), LSFT(KC_9), LSFT(KC_0), LCTL(KC_DEL), LCTL(KC_BSPC) ,
|
||||
SC_LSPO, KC_NUBS, KC_GRAVE, KC_NONUS_HASH, KC_QUOT, KC_MINS, KC_EQL, KC_NONUS_HASH, KC_LBRC, KC_RBRC, KC_QUOT, MT(MOD_RSFT, KC_ENT) ,
|
||||
_______, _______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,------------------------------------------ |-----------------------------------------.
|
||||
* | ` | |WRDSEL| [ | ] | | | | PGUP | HOME |PGDOWN| |PRNTSC|
|
||||
* |------+------+------+------+------+------- |------+------+------+------+------+------|
|
||||
* | ` | | | ( | ) | | | | HOME | UP | END | |ZOOM +|
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | { | } | | | |< | LEFT | DOWN |RIGHT | >| |ZOOM -|
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------+------+------|
|
||||
* | Mouse| | | | | Alt | Ctrl | Alt |Enter |Raise | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
KC_GRV, XXXXXXX, M_WORD_SEL, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX, KC_PGUP, KC_HOME, KC_PGDN, XXXXXXX, KC_PSCR ,
|
||||
KC_GRV, XXXXXXX, XXXXXXX, LSFT(KC_9), LSFT(KC_0), XXXXXXX, XXXXXXX, KC_HOME, KC_UP, KC_END, XXXXXXX, LCTL(LSFT(KC_EQL)) ,
|
||||
_______, XXXXXXX, XXXXXXX, LSFT(KC_LBRC), LSFT(KC_RBRC), XXXXXXX, LCTL(KC_LEFT), KC_LEFT, KC_DOWN, KC_RIGHT, LCTL(KC_RIGHT), LCTL(KC_MINS) ,
|
||||
MO(_MOUSE), _______, _______, _______, _______, KC_LALT, _______, _______, KC_ENT, _______, XXXXXXX, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,------------------------------------------ |------------------------------------------.
|
||||
* | ???? | Reset|Qwerty| | | REC1 | | REC2 | | | | | Del |
|
||||
* |------+------+------+------+------+------- |------+------+------+------+------+-------|
|
||||
* | CAPS | | | | | PLAY1| | PLAY2| Mute | Vol+ | Play | |Qwerty |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+-------|
|
||||
* | PC/MC| | | | | STOP | | STOP | Prev | Vol- | Next | |Colemak|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+-------|
|
||||
* | | | | | | | | | | | | | | |
|
||||
* `--------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
M_CUSTOM, QK_BOOT, QWERTY, _______, _______, DM_REC1, DM_REC2, _______, _______, _______, _______, KC_DEL ,
|
||||
KC_CAPS, _______, _______, _______, _______, DM_PLY1, DM_PLY2, KC_AUDIO_MUTE, KC_AUDIO_VOL_UP, KC_MEDIA_PLAY_PAUSE, _______, QWERTY ,
|
||||
TG(_MAC), _______, _______, _______, _______, DM_RSTP, DM_RSTP, KC_MEDIA_PREV_TRACK, KC_AUDIO_VOL_DOWN, KC_MEDIA_NEXT_TRACK, _______, COLEMAK ,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Mouse
|
||||
* ,------------------------------------------ |-----------------------------------------.
|
||||
* | ESC | | | | | | | WH_L | WH_UP| BTN3 | WH_D | WH_R | |
|
||||
* |------+------+------+------+------+------- |------+------+------+------+------+------|
|
||||
* | ACC0 | ACC1 | ACC2 | | | | | | BTN1 | UP | BTN2 | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | ACC0 | ACC1 | ACC2 | | | | | | LEFT | DOWN |RIGHT | | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_MOUSE] = LAYOUT(
|
||||
KC_ESC , _______, _______, _______, _______, _______, KC_MS_WH_LEFT, KC_MS_WH_UP, KC_MS_BTN3, KC_MS_WH_DOWN, KC_MS_WH_RIGHT, _______ ,
|
||||
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, _______, _______ ,
|
||||
KC_MS_ACCEL0, KC_MS_ACCEL1, KC_MS_ACCEL2, _______, _______, _______, _______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, _______, _______ ,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
|
||||
/* Num Pad
|
||||
* ,------------------------------------------ |-----------------------------------------.
|
||||
* | ESC | | | | | | |NMLOCK| 7 | 8 | 9 | / | |
|
||||
* |------+------+------+------+------+------- |------+------+------+------+------+------|
|
||||
* | | | | | | | | | 4 | 5 | 6 | * | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | 1 | 2 | 3 | + | |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | 0 | . | , | - | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_NUMPAD] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, KC_NUM, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_SLASH, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_KP_4, KC_KP_5, KC_KP_6, KC_KP_ASTERISK, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_PLUS, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_KP_0, KC_KP_DOT, KC_COMM, KC_KP_MINUS, _______
|
||||
),
|
||||
|
||||
|
||||
/* Function 2 (Right hand side)
|
||||
* ,------------------------------------------ |-----------------------------------------.
|
||||
* | | |WRDSEL| | | | | LNDEL| | | | | |
|
||||
* |------+------+------+------+------+------- |------+------+------+------+------+------|
|
||||
* | | | LNSEL| DUP | | | | | |LNJOIN| | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | UNDO | CUT | COPY | PASTE| | | | | | | | MODE |
|
||||
* |------+------+------+------+------+------|------+------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | |
|
||||
* `-------------------------------------------------------------------------------------------------'
|
||||
*/
|
||||
[_FUNC2] = LAYOUT(
|
||||
_______, _______, M_WORD_SEL, _______, _______, _______, M_LINE_DEL, _______, _______, _______, _______, _______,
|
||||
_______, _______, M_LINE_SEL, M_DUP, _______, _______, _______, M_JOIN, _______, _______, _______, _______,
|
||||
_______, LCTL(KC_Z), LCTL(KC_X), LCTL(KC_C), LCTL(KC_V), _______, _______, _______, _______, _______, _______, M_MODE,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_MAC] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
MFNC, _______, _______, _______, MLWR, _______, _______, _______, _______, MRSE, _______, _______, _______, MFNC2
|
||||
),
|
||||
|
||||
[_MLWR] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_MRSE] = LAYOUT(
|
||||
_______, _______, M_WORD_SEL_MAC, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
|
||||
_______, _______, _______, _______, _______, _______, _______, LCTL(KC_A), _______, LCTL(KC_E), _______, LGUI(KC_EQL) ,
|
||||
_______, _______, _______, _______, _______, _______, LALT(KC_LEFT), _______, _______, _______, LALT(KC_RIGHT), LGUI(KC_MINS) ,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_MFNC] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, LGUI(KC_PENT) ,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_MFNC2] = LAYOUT(
|
||||
_______, _______, M_WORD_SEL_MAC, _______, _______, _______, M_LINE_DEL_MAC, _______, _______, _______, _______, _______,
|
||||
_______, _______, M_LINE_SEL_MAC, M_DUP_MAC, _______, _______, _______, M_JOIN_MAC, _______, _______, _______, _______,
|
||||
_______, LGUI(KC_Z), LGUI(KC_X), LGUI(KC_C), LGUI(KC_V), _______, _______, _______, _______, _______, _______, M_MODE_MAC,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
||||
@@ -1,130 +0,0 @@
|
||||
# AJP10304 Custom Atreus50 Layout
|
||||
# Also available for the Planck, Shark, Quark and JJ40
|
||||
|
||||
**Note:** In the tables below where there are two characters on a key,
|
||||
the second is the output when shift is applied.
|
||||
|
||||
**Note:** The below tables assume a UK layout.
|
||||
|
||||
#### Flashing
|
||||
Refer to the README.md of the keyboard you want to flash.
|
||||
|
||||
##### Main Qwerty Layer
|
||||
|
||||
* Tab: when held, operates as shift.
|
||||
* Enter: when held, operates as shift.
|
||||
* MENU: perform right-click
|
||||
|
||||
| | | | | | | | | | | | | | |
|
||||
| ---- |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| ----:|
|
||||
| Esc | Q | W | E | R | T | | | Y | U | I | O | P | Bksp |
|
||||
| Tab | A | S | D | F | G | | | H | J | K | L | ;: | Enter|
|
||||
| Shft | Z | X | C | V | B | | | N | M | ,< | .> | /? | Shft |
|
||||
| Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Raise | Shift| MENU | Ctrl | Fn2 |
|
||||
|
||||
##### Main Colemak-DHm Layer
|
||||
|
||||
| | | | | | | | | | | | | | |
|
||||
| ---- |:----:| :---:|:---:|:-----:|:----:| :---:| :---:|:-----:|:-----:|:-----:|:----:|:----:| ----:|
|
||||
| Esc | Q | W | F | P | B | | | J | L | U | Y | ;: | Bksp |
|
||||
| Tab | A | R | S | T | G | | | M | N | E | I | O | Enter|
|
||||
| Shft | Z | X | C | D | V | | | K | H | ,< | .> | /? | Shft |
|
||||
| Fn | Ctrl | Alt | GUI | Lower | Bksp | Ctrl | Alt | Space | Raise | Shift | MENU | Ctrl | Fn2 |
|
||||
|
||||
|
||||
##### Function Layer
|
||||
Activated when `fn` held in the above `qwerty` layer.
|
||||
|
||||
| | | | | | | | | | | | | | |
|
||||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||
| F1 | F2 | F3 | F4 | F5 | F6 | | | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
| 1! | 2" | 3£ | 4$ | 5% | 6^ | | | 7& | 8* | 9( | 0) | ~ |INSERT|
|
||||
| Shift | \| | `¬ | #~ | * | -_ | | | =+ | \| | [{ | ]} | '@ |Shift |
|
||||
| Fn | Ctrl | Alt | GUI |Lower | Bksp | Ctrl | Alt |Space |Mouse | MENU | Alt | Ctrl | Fn2 |
|
||||
|
||||
##### Lower Layer
|
||||
Activated when `Lower` is held in the above `qwerty` layer.
|
||||
|
||||
* Numbers are along the top row, their shifted counterparts are on row 2.
|
||||
* WrdBks: `backspace` with `ctrl` applied. I.e. delete a word.
|
||||
* WrdDel: `delete` with `ctrl` applied. I.e. forward delete a word.
|
||||
|
||||
| | | | | | | | | | | | | | |
|
||||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||
| 1! | 2" | 3£ | 4$ | 5% | 6^ | | | 7& | 8* | 9( | 0) | DEL | Bksp |
|
||||
| ! | " | £ | $ | % | ^ | | | & | * | ( | ) |WrdDel|WrdBks|
|
||||
| Shift | \| | `¬ | #~ | '@ | -_ | | | =+ | #~ | [{ | ]} | '@ |Shift |
|
||||
| | | | |Lower | Del | Ctrl | Alt |Space | | Next | Vol- | Vol+ | Play |
|
||||
|
||||
##### Raise Layer
|
||||
Activated when `Raise` is held in the above `qwerty` layer.
|
||||
|
||||
* Preferred layer for typing brackets.
|
||||
* Allows for cursor navigation to be used solely with the right hand.
|
||||
* WRDSEL: Select the word where the cursor is.
|
||||
* |< and >|: Apply `ctrl` to `left` and `right` respectively for word jumping.
|
||||
|
||||
| | | | | | | | | | | | | | |
|
||||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---: | :---:| :---:| :---:| :---: | :---:|
|
||||
| ` | |WRDSEL| [ | ] | | | | | PGUP | HOME |PGDOWN| |PRNTSC|
|
||||
| ` | | | ( | ) | | | | | HOME | UP | END | |ZOOM +|
|
||||
| | | | { | } | | | ||<| LEFT | DOWN |RIGHT |>||ZOOM -|
|
||||
| Mouse | | | | | Alt | Ctrl | Alt | Enter |Raise | | | | |
|
||||
|
||||
##### Lower + Raise
|
||||
Activated when `Lower` and `Raise` are held together in the above `qwerty` layer.
|
||||
|
||||
* Audio controls in the same position as cursor keys from the `Raise` layer.
|
||||
* ????: Runs a macro for outputting a text string. Do not use this store passwords.
|
||||
* Reset: Enter bootloader for flashing firmware to the keyboard.
|
||||
* CAPS: Toggle caps lock.
|
||||
* Macro functions: Allows recording of macros. To start recording the macro, press either REC1 or REC2.
|
||||
To finish the recording, press STOP. To replay the macro, press either PLAY1 or PLAY2.
|
||||
* MAC: Toggle MAC OS extensions to layers. This allows MLWR to be enabled with LOWER,
|
||||
MRSE with RAISE, MFNC with FUNC and MFNC2 with FUNC2 respectively.
|
||||
|
||||
| | | | | | | | | | | | | | |
|
||||
| :---: |:----:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|:-------:|
|
||||
| ???? | Reset|Qwerty| | | REC1 | | | REC2 | | | | | Del |
|
||||
| CAPS | | | | | PLAY1| | |PLAY2 | Mute | Vol+ | Play | | Qwerty |
|
||||
| MAC | | | | | STOP1| | |STOP2 | Prev | Vol- | Next | | Colemak |
|
||||
| | | | | | | Ctrl | Alt | | | DYN | | | |
|
||||
|
||||
##### Function 2 Layer
|
||||
Activated when `fn` held in the above `qwerty` layer.
|
||||
* WRDSEL: Select the word where the cursor is.
|
||||
* LNDEL: Delete the line where the cursor is.
|
||||
* LNSEL: Select the line where the cursor is.
|
||||
* DUP: Duplicate the selected text.
|
||||
* LNJOIN: Join the line where the cursor is with the following line.
|
||||
* MODE: Print either `PC` or `OSX` depending on what layer mode is active.
|
||||
|
||||
| | | | | | | | | | | | | | |
|
||||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||
| | |WRDSEL| | | | | | LNDEL| | | | | |
|
||||
| | | LNSEL| DUP | | | | | | |LNJOIN| | | |
|
||||
| | UNDO | CUT | COPY | PASTE| | | | | | | | | MODE |
|
||||
| | | | | | | Ctrl | Alt | | | | | | |
|
||||
|
||||
##### Mouse Layer
|
||||
Activated when `fn` and `raise` held together.
|
||||
|
||||
| | | | | | | | | | | | | | |
|
||||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||
| ESC | | | | | | | | W_L | W_UP | BTN3 | W_DWN| W_R | |
|
||||
| ACC0 | ACC1 | ACC2 | | | | | | | BTN1 | UP | BTN2 | | |
|
||||
| ACC0 | ACC1 | ACC2 | | | | | | | LEFT | DOWN | RIGHT| | |
|
||||
| | | | | | | Ctrl | Alt | | | | | | |
|
||||
|
||||
##### Number Pad Layout
|
||||
Activated when holding `Esc` key.
|
||||
|
||||
| | | | | | | | | | | | | | |
|
||||
| :---: | :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:| :---:|
|
||||
| | | | | | | | |NMLOCK| 7 | 8 | 9 | / | |
|
||||
| | | | | | | | | | 4 | 5 | 6 | * | |
|
||||
| | | | | | | | | | 1 | 2 | 3 | + | |
|
||||
| | | | | | | Ctrl | Alt | | 0 | . | , | - | |
|
||||
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
AUDIO_ENABLE = no
|
||||
MOUSEKEY_ENABLE = yes
|
||||
BOOTLOADER = halfkay
|
||||
@@ -1,40 +0,0 @@
|
||||
/*
|
||||
Copyright 2020 James Smith <bronzegears@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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM 150
|
||||
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
#undef RGBLIGHT_RAINBOW_SWIRL_RANGE
|
||||
#define RGBLIGHT_RAINBOW_SWIRL_RANGE 75
|
||||
#define RGBLIGHT_EFFECT_SNAKE
|
||||
#undef RGBLIGHT_EFFECT_SNAKE_LENGTH
|
||||
#define RGBLIGHT_EFFECT_SNAKE_LENGTH 20
|
||||
#define RGBLIGHT_EFFECT_KNIGHT
|
||||
#undef RGBLIGHT_EFFECT_KNIGHT_LENGTH
|
||||
#define RGBLIGHT_EFFECT_KNIGHT_LENGTH 20
|
||||
|
||||
// #define RGBLIGHT_EFFECT_CHRISTMAS
|
||||
// #define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
||||
// #define RGBLIGHT_EFFECT_RGB_TEST
|
||||
// #define RGBLIGHT_EFFECT_ALTERNATING
|
||||
#define RGBLIGHT_EFFECT_TWINKLE
|
||||
#define RGBLIGHT_EFFECT_TWINKLE_PROBABILITY 1 / 127
|
||||
@@ -1,99 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "klackygears.h"
|
||||
|
||||
//For an explanation of what's going on here with the keymap wrappers, check out drashna's user folder.
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_WINBASE] = LAYOUT_wrapper(
|
||||
_______________DVORAK_L1___________________, KC_ESC, KC_GAMER, _______________DVORAK_R1___________________,
|
||||
RGB_TOG, _______________DVORAK_L2___________________, _______, KC_GAMR1, _______________DVORAK_R2___________________, RGB_TOG,
|
||||
RGB_MOD, _______________WINDVK_L3___________________, _______, KC_GAMR2, _______________WINDVK_R3___________________, RGB_MOD,
|
||||
_______, _______, __________________WIN_THUMB_CLUSTER_V2______________ , _______, _______,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
|
||||
[_MACBASE] = LAYOUT_wrapper(
|
||||
_______________DVORAK_L1___________________, KC_ESC, _______, _______________DVORAK_R1___________________,
|
||||
RGB_TOG, _______________DVORAK_L2___________________, _______, _______, _______________DVORAK_R2___________________, RGB_TOG,
|
||||
RGB_MOD, _______________MACDVK_L3___________________, _______, _______, _______________MACDVK_R3___________________, RGB_MOD,
|
||||
_______, _______, __________________MAC_THUMB_CLUSTER_V2______________ , _______, _______,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
|
||||
|
||||
[_QWERTY] = LAYOUT_wrapper(
|
||||
_________________QWERTY_L1_________________, KC_ESC, _______, _________________QWERTY_R1_________________,
|
||||
KC_CAPS, _________________QWERTY_L2_________________, _______, _______, _________________QWERTY_R2_________________, KC_ENT,
|
||||
KC_LSFT, _________________QWERTY_L3_________________, _______, _______, _________________QWERTY_R3_________________, KC_RSFT,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, MO(_MNMB), MO(_SYMB), MO(_SYMB), MO(_MNMB), KC_RGUI, MO(_MDIA), MO(_FUNC),
|
||||
KC_LSFT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RSFT
|
||||
),
|
||||
//Jedi - Fallen Order
|
||||
[_GAMER] = LAYOUT_wrapper(
|
||||
KC_R, KC_Q, KC_W, KC_E, KC_1, KC_ESC, KC_WINBASE, _________________RGB_1_____________________,
|
||||
KC_TAB, KC_F, KC_A, KC_S, KC_D, KC_2, LSFT(KC_F2), KC_GAMR1, _________________RGB_2_____________________, RGB_TOG,
|
||||
KC_TAB, KC_TAB, KC_X, KC_Z, KC_C, KC_3, KC_M, KC_GAMR2, _________________MEDIA_____________________, RGB_MOD,
|
||||
KC_LCTL, KC_LALT, KC_LCTL, KC_LSFT, KC_SPC, _______, KC_UP, _______, _______, _______,
|
||||
KC_NO, KC_LSFT, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT
|
||||
),
|
||||
//Borderlands
|
||||
[_GAMR1] = LAYOUT_wrapper(
|
||||
KC_R, KC_G, KC_W, KC_E, KC_1, KC_ESC, KC_WINBASE, _________________RGB_1_____________________,
|
||||
KC_TAB, KC_V, KC_A, KC_S, KC_D, KC_2, KC_L, KC_GAMR1, _________________RGB_2_____________________, RGB_TOG,
|
||||
KC_T, KC_I, KC_F, KC_Q, KC_4, KC_3, KC_M, KC_GAMR2, _________________MEDIA_____________________, RGB_MOD,
|
||||
KC_X, KC_K, KC_C, KC_LSFT, KC_SPC, _______, KC_UP, _______, _______, _______,
|
||||
KC_Z, KC_LSFT, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT
|
||||
),
|
||||
//Witcher
|
||||
[_GAMR2] = LAYOUT_wrapper(
|
||||
KC_R, KC_Q, KC_W, KC_E, KC_1, KC_ESC, KC_WINBASE, _________________RGB_1_____________________,
|
||||
KC_TAB, KC_LALT, KC_A, KC_S, KC_D, KC_2, KC_J, KC_GAMR1, _________________RGB_2_____________________, RGB_TOG,
|
||||
KC_X, KC_I, KC_F, KC_C, KC_V, KC_3, KC_M, KC_GAMR2, _________________MEDIA_____________________, RGB_MOD,
|
||||
KC_LCTL, KC_V, KC_HOME, KC_LSFT, KC_SPC, _______, KC_UP, _______, _______, _______,
|
||||
KC_ENT, KC_LCTL, KC_LSFT, KC_LEFT, KC_DOWN, KC_RIGHT
|
||||
),
|
||||
|
||||
[_SYMB] = LAYOUT_wrapper(
|
||||
_________________PUNC_L1_ALT_______________, _______, _______, _________________PUNC_R1___________________,
|
||||
_______, _________________PUNC_L3___________________, _______, _______, _________________PUNC_R2___________________, _______,
|
||||
RGB_MOD, _________________PUNC_L3_ALT_______________, _______, _______, _________________PUNC_R3___________________, _______,
|
||||
_______, _______, _______, _______, KC_DEL, KC_CAPS, _______, _______, _______, _______,
|
||||
_______, _______, KC_DEL, KC_CAPS, _______, _______
|
||||
),
|
||||
|
||||
[_FUNC] = LAYOUT_wrapper(
|
||||
_____________FUNC_L1_______________________, _______, _______, _______, _____________FUNC_1_______________,
|
||||
_______, ________MAC_MISSION_CTRL__________, LGUI(KC_L), _______, _______, _______, _____________FUNC_2_______________, _______,
|
||||
RGB_MOD, _____________FUNC_L3_______________________, _______, _______, _______, _____________FUNC_3_______________, _______,
|
||||
_______, _______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_CAPS, _______, _______
|
||||
),
|
||||
|
||||
[_MNMB] = LAYOUT_wrapper(
|
||||
_________________MACNAV_L1_________________, _______, _______, _________________NUMB_R1___________________,
|
||||
_______, _________________MACNAV_L2_________________, _______, _______, _________________NUMB_R2___________________, _______,
|
||||
RGB_MOD, _________________MACNAV_L3_________________, _______, _______, _________________NUMB_R3_MAC_______________, _______,
|
||||
_______, _______, _______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT, _______, _______,
|
||||
_______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT
|
||||
),
|
||||
|
||||
|
||||
[_NUMB] = LAYOUT_wrapper(
|
||||
_________________WINNAV_L1_________________, _______, _______, _________________NUMB_R1___________________,
|
||||
_______, _________________WINNAV_L2_________________, _______, _______, _________________NUMB_R2___________________, _______,
|
||||
RGB_MOD, _________________WINNAV_L3_________________, _______, _______, _________________NUMB_R3_WIN_______________, _______,
|
||||
_______, _______, _______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT, _______, _______,
|
||||
_______, _______, _______, _______, RSFT_T(KC_ENT), KC_RSFT
|
||||
),
|
||||
|
||||
[_MDIA] = LAYOUT_wrapper(
|
||||
_________________LYOUT_____________________, _______, RGB_TOG, _________________RGB_1_____________________,
|
||||
_______, _________________KC_BLANK__________________, _______, _______, _________________RGB_2_____________________, _______,
|
||||
RGB_MOD, _________________KC_BLANK__________________, _______, _______, _________________MEDIA_____________________, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
||||
@@ -1,3 +0,0 @@
|
||||
|
||||
RGBLIGHT_ENABLE = yes #Enable WS2812 RGB underlight.
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -1,342 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "taphold.h"
|
||||
#include "seq.h"
|
||||
#include "ds1307.h"
|
||||
#include "lightmode.h"
|
||||
#include <stdio.h>
|
||||
|
||||
/* Note: don't forget there's some more code in qmk_firmware/users/anderson dir */
|
||||
|
||||
#define _MAIN 0
|
||||
#define _ALPHA 1
|
||||
#define _BETA 2
|
||||
|
||||
enum custom_keycodes {
|
||||
KC_MAIN = SAFE_RANGE,
|
||||
KC_ALPHA,
|
||||
KC_BETA,
|
||||
#ifdef LIGHTMODE_ENABLE
|
||||
KC_LIGHT_MODE,
|
||||
#endif
|
||||
KC_SEQ,
|
||||
KC_SET_TIME,
|
||||
};
|
||||
#ifdef LIGHTMODE_ENABLE
|
||||
#endif
|
||||
|
||||
/* TapHold is my own implementation of the `LT` macro. It's processed in `process_record_user()`. */
|
||||
#define TAPHOLD_CONFIG_SIZE 3
|
||||
taphold_t taphold_config[TAPHOLD_CONFIG_SIZE] = {
|
||||
{.key=KC_ALPHA, .mode=TAPHOLD_LAYER, .shortAction=KC_ESC, .longAction=_ALPHA},
|
||||
{.key=KC_BETA, .mode=TAPHOLD_LAYER, .shortAction=KC_EQL, .longAction=_BETA},
|
||||
{.key=KC_RCTL, .mode=TAPHOLD_MOD, .shortAction=KC_MINS, .longAction=KC_LCTL},
|
||||
};
|
||||
uint16_t taphold_config_size = TAPHOLD_CONFIG_SIZE;
|
||||
uint32_t taphold_timeout = 90;
|
||||
|
||||
/* Seq is implementation of unicode macros similar to UCIS, but with unicode strings. */
|
||||
#define SEQ_CONFIG_SIZE 3
|
||||
seq_t seq_config[SEQ_CONFIG_SIZE] = {
|
||||
{.sequence="temp", .result="42°C"},
|
||||
{.sequence="table", .result="┳━━┳"},
|
||||
{.sequence="shrug", .result="¯\\_(ツ)_/¯"}
|
||||
};
|
||||
uint16_t seq_config_size = SEQ_CONFIG_SIZE;
|
||||
|
||||
/* Colors */
|
||||
uint32_t layer_colors[3] = {
|
||||
[_MAIN] = 0xFF0010,
|
||||
[_ALPHA] = 0x4020FF,
|
||||
[_BETA] = 0x20FF00,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Main layer
|
||||
│MUTE │ │L_MOD│
|
||||
┏━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┓
|
||||
┃ TAB ┃ Q │ W │ E │ R │ T ┃ Y │ U │ I │ O │ P ┃ BSP ┃
|
||||
┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫
|
||||
┃𝛼/ESC┃ A │ S │ D │ F │ G ┃ H │ J │ K │ L │ ; ┃ RET ┃
|
||||
┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫
|
||||
┃SHIFT┃ Z │ X │ C │ V │ B ┃ N │ M │ , │ . │ / ┃CTL/-┃
|
||||
┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫
|
||||
┃LCTRL┃ │ │ ALT │ GUI │SPACE┃SPACE│ 𝛽/= │ ' │ │ ┃ \ ┃
|
||||
┗━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┛
|
||||
*/
|
||||
[_MAIN] = LAYOUT(
|
||||
KC_MUTE, LCTL(KC_D),
|
||||
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_ALPHA,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RCTL,
|
||||
KC_LCTL, _______, _______, KC_LALT, KC_LGUI, KC_SPC, KC_SPC, KC_BETA, KC_QUOT, _______, _______, KC_BSLS
|
||||
),
|
||||
|
||||
/* Alpha layer (𝛼)
|
||||
│ │ │ │
|
||||
┏━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┓
|
||||
┃ ┃PREV │PLAY │NEXT │ │NUMLK┃ - │ ^^^ │ ^ │ vvv │ ~ ┃ DEL ┃
|
||||
┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫
|
||||
┃ ┃ │VOL -│VOL +│ │CPSLK┃HOME │ <-- │ v │ --> │ ` ┃ \ ┃
|
||||
┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫
|
||||
┃ ┃ │ │ │ │SCRLK┃ END │ = │ [ │ ] │ ( ┃ ) ┃
|
||||
┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫
|
||||
┃ ┃ │ │ │ │ ┃ │ │ │ │ ┃ ┃
|
||||
┗━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┛
|
||||
*/
|
||||
[_ALPHA] = LAYOUT(
|
||||
_______, _______,
|
||||
_______, KC_MPRV, KC_MPLY, KC_MNXT, _______, KC_NUM, KC_MINS, KC_PGUP, KC_UP, KC_PGDN, KC_TILD, KC_DEL,
|
||||
_______, _______, KC_VOLD, KC_VOLU, _______, KC_CAPS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT,KC_GRV, KC_BSLS,
|
||||
_______, _______, _______, _______, _______, KC_SCRL, KC_END, KC_EQL, KC_LBRC, KC_RBRC, KC_LPRN ,KC_RPRN,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Beta layer (𝛽)
|
||||
│ │ │ │
|
||||
┏━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┯━━━━━┯━━━━━┯━━━━━┯━━━━━┳━━━━━┓
|
||||
┃ RGB ┃ 1 │ 2 │ 3 │ 4 │ 5 ┃ 6 │ 7 │ 8 │ 9 │ 0 ┃ F12 ┃
|
||||
┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫
|
||||
┃L_MOD┃ F1 │ F2 │ F3 │ F4 │ F5 ┃ F6 │ F7 │ F8 │ F9 │ F10 ┃ F11 ┃
|
||||
┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫
|
||||
┃ ┃Boot │Debug│ │ │TIME ┃SLEEP│ SEQ │ { │ } │PTSCR┃ ┃
|
||||
┣━━━━━╉─────┼─────┼─────┼─────┼─────╂─────┼─────┼─────┼─────┼─────╊━━━━━┫
|
||||
┃ ┃ │ │ │ │ ┃ │ │ │ │ ┃ ┃
|
||||
┗━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┷━━━━━┷━━━━━┷━━━━━┷━━━━━┻━━━━━┛
|
||||
*/
|
||||
[_BETA] = LAYOUT(
|
||||
_______, _______,
|
||||
RGB_TOG, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12,
|
||||
#ifdef LIGHTMODE_ENABLE
|
||||
KC_LIGHT_MODE,
|
||||
#else
|
||||
_______,
|
||||
#endif
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, QK_BOOT, DB_TOGG, _______, _______, KC_SET_TIME,KC_SLEP,KC_SEQ,KC_LCBR, KC_RCBR, KC_PSCR, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
static bool alpha_pressed = false;
|
||||
static bool beta_pressed = false;
|
||||
|
||||
static bool ctrl_pressed = false;
|
||||
static bool alt_pressed = false;
|
||||
static bool shift_pressed = false;
|
||||
static bool gui_pressed = false;
|
||||
|
||||
static bool is_in_seq = false;
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
/* debug_enable = true; */
|
||||
/* debug_matrix = true; */
|
||||
}
|
||||
|
||||
void eeconfig_init_user(void) {
|
||||
set_unicode_input_mode(UNICODE_MODE_LINUX);
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef LIGHTMODE_ENABLE
|
||||
set_light_mode(SMOOTHLED, layer_colors[_MAIN]);
|
||||
#endif
|
||||
}
|
||||
|
||||
static uint32_t last_update = 0;
|
||||
static uint8_t hours, minutes, seconds;
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
uint32_t now = timer_read32();
|
||||
if (now - last_update > 500) {
|
||||
ds1307_get_time(&hours, &minutes, &seconds);
|
||||
last_update = now;
|
||||
}
|
||||
}
|
||||
|
||||
static bool is_in_set_time = false;
|
||||
static char new_time[6];
|
||||
static uint8_t new_time_index = 0;
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (keycode == KC_SEQ && record->event.pressed) {
|
||||
seq_start();
|
||||
layer_off(_BETA);
|
||||
is_in_seq = true;
|
||||
return false;
|
||||
} else if (is_in_seq) {
|
||||
if (record->event.pressed) {
|
||||
if (!seq_feed(keycode)) {
|
||||
is_in_seq = false;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
if (keycode == KC_SET_TIME && record->event.pressed) {
|
||||
is_in_set_time = true;
|
||||
new_time_index = 0;
|
||||
} else if (is_in_set_time) {
|
||||
if (!record->event.pressed && keycode >= KC_1 && keycode <= KC_0) {
|
||||
new_time[new_time_index++] = (keycode == KC_0) ? 0 : keycode - KC_1 + 1;
|
||||
if (new_time_index == 6) {
|
||||
is_in_set_time = false;
|
||||
ds1307_set_time(
|
||||
(new_time[0]) * 10 + (new_time[1]),
|
||||
(new_time[2]) * 10 + (new_time[3]),
|
||||
(new_time[4]) * 10 + (new_time[5])
|
||||
);
|
||||
for (int i = 0; i < 6; i++) {
|
||||
tap_code(KC_BACKSPACE);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (keycode == KC_LCTL || keycode == KC_RCTL) {
|
||||
ctrl_pressed = record->event.pressed;
|
||||
} else if (keycode == KC_LALT) {
|
||||
alt_pressed = record->event.pressed;
|
||||
} else if (keycode == KC_LSFT) {
|
||||
shift_pressed = record->event.pressed;
|
||||
} else if (keycode == KC_LGUI) {
|
||||
gui_pressed = record->event.pressed;
|
||||
} else if (keycode == KC_ALPHA) {
|
||||
alpha_pressed = record->event.pressed;
|
||||
} else if (keycode == KC_BETA) {
|
||||
beta_pressed = record->event.pressed;
|
||||
}
|
||||
|
||||
if (keycode == QK_BOOT) {
|
||||
rgblight_setrgb(255, 255, 0);
|
||||
}
|
||||
#ifdef LIGHTMODE_ENABLE
|
||||
if (record->event.pressed && keycode == KC_LIGHT_MODE) {
|
||||
next_light_mode(layer_colors[_MAIN]);
|
||||
}
|
||||
#endif
|
||||
if (keycode == KC_LCTL) {
|
||||
/* Some Overlay1_Enable fuckery! */
|
||||
(record->event.pressed ? register_code : unregister_code)(KC_LCTL);
|
||||
return false;
|
||||
}
|
||||
return taphold_process(keycode, record);
|
||||
}
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
#ifdef LIGHTMODE_ENABLE
|
||||
uint8_t layer = get_highest_layer(state);
|
||||
update_light_mode(layer_colors[layer]);
|
||||
#endif
|
||||
return state;
|
||||
}
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) {
|
||||
if (!alpha_pressed) {
|
||||
tap_code(clockwise ? KC_VOLD : KC_VOLU);
|
||||
} else {
|
||||
tap_code(clockwise ? KC_MPRV : KC_MNXT);
|
||||
}
|
||||
} else if (index == 1) {
|
||||
if (!alpha_pressed) {
|
||||
tap_code(clockwise ? KC_UP : KC_DOWN);
|
||||
} else {
|
||||
tap_code(clockwise ? KC_PGUP : KC_PGDN);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_0;
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
/* Host Keyboard Layer Status */
|
||||
uint8_t current_layer = get_highest_layer(layer_state);
|
||||
|
||||
/* Layer */
|
||||
static const char PROGMEM icons[4][3][6] = {
|
||||
{
|
||||
{ 0x80, 0x81, 0x82, 0x83, 0x84, 0 },
|
||||
{ 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0 },
|
||||
{ 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0 }
|
||||
},
|
||||
{
|
||||
{ 0x85, 0x86, 0x87, 0x88, 0x89, 0 },
|
||||
{ 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0 },
|
||||
{ 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0 }
|
||||
},
|
||||
{
|
||||
{ 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0 },
|
||||
{ 0xaa, 0xab, 0xac, 0xad, 0xae, 0 },
|
||||
{ 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0 }
|
||||
},
|
||||
{
|
||||
{ 0x8f, 0x90, 0x91, 0x92, 0x93, 0 },
|
||||
{ 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0 },
|
||||
{ 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0 }
|
||||
}
|
||||
};
|
||||
|
||||
uint8_t icon_index = current_layer == _MAIN ? 3 : current_layer == _ALPHA ? 1 : 2;
|
||||
for (int i = 0; i < 3; i++) {
|
||||
oled_set_cursor(0, i + 1);
|
||||
oled_write_P(icons[icon_index][i], false);
|
||||
}
|
||||
|
||||
/* Time */
|
||||
oled_set_cursor(6, 0);
|
||||
// oled_write_P(PSTR("-D48 Custom-\n"), false);
|
||||
char buf[16];
|
||||
sprintf(
|
||||
buf,
|
||||
"%02d:%02d:%02d", hours, minutes, seconds
|
||||
);
|
||||
oled_write(buf, false);
|
||||
|
||||
/* Modifiers */
|
||||
static const char PROGMEM mods[][2] = {
|
||||
{0x94, 0x95}, // CTL
|
||||
{0x96, 0x97}, // ALT
|
||||
{0x98, 0x99}, // GUI
|
||||
{0x9a, 0x9b}, // SFT
|
||||
/* {0x9c, 0x9d}, // EMPTY */
|
||||
};
|
||||
|
||||
char mod_data[13] = "\x9c\x9d\x9c\x9d\x9c\x9d\x9c\x9d \x07\x07\x07\0";
|
||||
if (ctrl_pressed) strncpy(mod_data, mods[0], 2);
|
||||
if (alt_pressed) strncpy(mod_data + 2, mods[1], 2);
|
||||
if (gui_pressed) strncpy(mod_data + 4, mods[2], 2);
|
||||
if (shift_pressed) strncpy(mod_data + 6, mods[3], 2);
|
||||
led_t led_usb_state = host_keyboard_led_state();
|
||||
if (led_usb_state.num_lock) mod_data[9] = 'N';
|
||||
if (led_usb_state.caps_lock) mod_data[10] = 'C';
|
||||
if (led_usb_state.scroll_lock) mod_data[11] = 'S';
|
||||
|
||||
oled_set_cursor(6, 1);
|
||||
oled_write(mod_data, false);
|
||||
|
||||
/* Matrix */
|
||||
static const char PROGMEM matrix_chars[] = {
|
||||
0xb4, // None
|
||||
0xb5, // Upper
|
||||
0xb6, // Lower
|
||||
0xb7 // Both
|
||||
};
|
||||
|
||||
for (uint8_t row = 1; row < MATRIX_ROWS; row += 2) {
|
||||
// Skip first row because it's used by the encoders.
|
||||
uint16_t bits1 = matrix_get_row(row);
|
||||
uint16_t bits2 = matrix_get_row(row + 1);
|
||||
|
||||
for (uint8_t col = 0; col < MATRIX_COLS; col++) {
|
||||
uint8_t matrix_char = matrix_chars[((bits1 & (1 << col)) ? 1 : 0) | ((bits2 & (1 << col)) ? 2 : 0)];
|
||||
oled_set_cursor(6 + col, 2 + (row - 1) / 2);
|
||||
oled_write_char(matrix_char, false);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
@@ -1,44 +0,0 @@
|
||||
#include "lightmode.h"
|
||||
|
||||
#ifdef LIGHTMODE_ENABLE
|
||||
|
||||
/* Light modes switcher */
|
||||
|
||||
uint8_t light_mode = SMOOTHLED;
|
||||
|
||||
void set_light_mode(light_mode_t value, uint32_t color) {
|
||||
light_mode = value;
|
||||
if (light_mode == SMOOTHLED) {
|
||||
smoothled_set(color);
|
||||
} else {
|
||||
dmc12_start(color, true);
|
||||
}
|
||||
}
|
||||
|
||||
void process_light_mode(void) {
|
||||
if (light_mode == SMOOTHLED) {
|
||||
smoothled_process();
|
||||
} else {
|
||||
dmc12_process();
|
||||
}
|
||||
}
|
||||
|
||||
void update_light_mode(uint32_t color) {
|
||||
if (light_mode == SMOOTHLED) {
|
||||
smoothled_set(color);
|
||||
} else {
|
||||
dmc12_start(color, false);
|
||||
}
|
||||
}
|
||||
|
||||
void next_light_mode(uint32_t color) {
|
||||
light_mode = (light_mode + 1) % LIGHT_MODE_SIZE;
|
||||
set_light_mode(light_mode, color);
|
||||
}
|
||||
|
||||
void matrix_scan_kb(void) {
|
||||
process_light_mode();
|
||||
matrix_scan_user();
|
||||
}
|
||||
|
||||
#endif
|
||||
@@ -1,12 +0,0 @@
|
||||
#include "smoothled.h"
|
||||
#include "dmc12.h"
|
||||
#include "quantum.h"
|
||||
|
||||
/* Light modes */
|
||||
enum light_mode_enum { SMOOTHLED, DMC12, LIGHT_MODE_SIZE };
|
||||
typedef enum light_mode_enum light_mode_t;
|
||||
|
||||
void set_light_mode(light_mode_t value, uint32_t color);
|
||||
void process_light_mode(void);
|
||||
void update_light_mode(uint32_t color);
|
||||
void next_light_mode(uint32_t color);
|
||||
@@ -1,2 +0,0 @@
|
||||
OPT_DEFS += -DLIGHTMODE_ENABLE
|
||||
SRC += smoothled.c dmc12.c seq.c lightmode.c
|
||||
@@ -1,27 +0,0 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
/* Select hand configuration */
|
||||
|
||||
#define MASTER_LEFT
|
||||
// #define MASTER_RIGHT
|
||||
// #define EE_HANDS
|
||||
@@ -1,60 +0,0 @@
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include "ibnuda.h"
|
||||
|
||||
#define TAB KC_TAB
|
||||
#define GUI KC_LGUI
|
||||
#define MIN KC_MINS
|
||||
#define SLS KC_SLSH
|
||||
#define CTL KC_LCTL
|
||||
#define DEL KC_DEL
|
||||
#define QUE KC_QUES
|
||||
#define ___ KC_NO
|
||||
|
||||
// clang-format off
|
||||
#define LAYOUT_dm_base( \
|
||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \
|
||||
KTA, KTB, KTC, KTD, KTE, KTF \
|
||||
) \
|
||||
LAYOUT_wrapper( \
|
||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, \
|
||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, \
|
||||
TAB, KTA, KTF, SLS, \
|
||||
KTB, KTC, KTD, KTE, \
|
||||
CTL, DEL, QUE, CTL, \
|
||||
___, ___, ___, ___ \
|
||||
)
|
||||
|
||||
#define LAYOUT_dm_base_wrapper(...) LAYOUT_dm_base(__VA_ARGS__)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_dm_base_wrapper(
|
||||
LUP, LUR, LUM, LUI, LUII, RUII, RUI, RUM, RUR, RUP,
|
||||
SHLP, CTLR, ALLM, LMI, GULII, GURII, RMI, ALRM, CTRR, SHRP,
|
||||
LLP, LLR, LLM, LLI, LLII, RLII, RLI, RLM, RLR, RLP,
|
||||
CT_ESC, LW_E, SF_BSPC, AL_ENT, RS_SPC, TRAISE
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_dm_base_wrapper(
|
||||
KC_EXLM,KC_AT, KC_UP, KC_LCBR,KC_RCBR, KC_BSLS,KC_7, KC_8, KC_9, KC_ASTR ,
|
||||
KC_HASH,CT_LEFT,AL_DOWN,KC_RGHT,KC_DLR, GU_EQL, KC_4, AL_FIVE,CT_SIX, SH_ZERO ,
|
||||
KC_LBRC,KC_RBRC,KC_LPRN,KC_RPRN,KC_AMPR, KC_GRV, KC_1, KC_2, KC_3, KC_PLUS ,
|
||||
_______,ADDDD ,_______, _______,RS_SPC, _______
|
||||
),
|
||||
[_LOWER] = LAYOUT_dm_base_wrapper(
|
||||
KC_ESC, KC_QUES,KC_UNDS,KC_F1, KC_F2, KC_F3, KC_F4, KC_MINS,KC_SLSH,KC_BSPC ,
|
||||
KC_LSFT,KC_PSCR,KC_PGUP,KC_F5, KC_F6, KC_F7, KC_F8, KC_HOME,KC_LALT,KC_ENT ,
|
||||
KC_CAPS,KC_SCRL,KC_PGDN,KC_F9, KC_F10, KC_F11, KC_F12, KC_END, KC_INS, KC_SLSH ,
|
||||
_______,_______,_______, _______,ADDDD, _______
|
||||
),
|
||||
[_ADJUST] = LAYOUT_dm_base_wrapper(
|
||||
_______,EXPLR, KC_UP, PRVTAB, PRVWIN, NXTWIN, NXTTAB, _______,_______,LCKGUI,
|
||||
TSKMGR, KC_LEFT,KC_DOWN,KC_RGHT,UPTAB, DNTAB, KC_ENT, KC_LGUI,_______,CALDL,
|
||||
_______,CLSGUI, _______,CONPST, QK_BOOT, _______,_______,_______,_______,_______,
|
||||
_______,_______,_______, _______,_______,_______
|
||||
),};
|
||||
// clang-format on
|
||||
|
||||
@@ -1,24 +0,0 @@
|
||||
// Copyright 2019 Manna Harbour
|
||||
// https://github.com/manna-harbour/miryoku
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#define XXX KC_NO
|
||||
|
||||
#define LAYOUT_miryoku(\
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
|
||||
N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\
|
||||
)\
|
||||
LAYOUT( \
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
|
||||
XXX, XXX, XXX, XXX, \
|
||||
K32, K33, K36, K37, \
|
||||
K34, XXX, XXX, K35, \
|
||||
XXX, XXX, XXX, XXX \
|
||||
)
|
||||
@@ -1,4 +0,0 @@
|
||||
// Copyright 2019 Manna Harbour
|
||||
// https://github.com/manna-harbour/miryoku
|
||||
|
||||
// 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/>.
|
||||
@@ -1,24 +0,0 @@
|
||||
// Copyright 2022 Manna Harbour
|
||||
// https://github.com/manna-harbour/miryoku
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#define XXX KC_NO
|
||||
|
||||
#define LAYOUT_miryoku(\
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
|
||||
N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
|
||||
) \
|
||||
LAYOUT( \
|
||||
XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \
|
||||
XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \
|
||||
XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \
|
||||
XXX, XXX, XXX, XXX, \
|
||||
K32, K33, K36, K37, \
|
||||
K34, XXX, XXX, K35, \
|
||||
XXX, XXX, XXX, XXX \
|
||||
)
|
||||
@@ -1,4 +0,0 @@
|
||||
// Copyright 2019 Manna Harbour
|
||||
// https://github.com/manna-harbour/miryoku
|
||||
|
||||
// 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/>.
|
||||
@@ -1,8 +0,0 @@
|
||||
#### compile with
|
||||
|
||||
`make handwired/dactyl_manuform/4x6:scheikled`
|
||||
|
||||
|
||||
#### flash with
|
||||
|
||||
`qmk flash -kb handwired/dactyl_manuform/4x6 -km scheikled`
|
||||
@@ -1,60 +0,0 @@
|
||||
// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#define USE_I2C
|
||||
|
||||
#define SPLIT_HAND_PIN F6
|
||||
|
||||
// WS2812 RGB LED strip input and number of LEDs
|
||||
#undef WS2812_DI_PIN
|
||||
#undef RGBLED_NUM
|
||||
#define WS2812_DI_PIN F4
|
||||
#define RGBLED_NUM 52
|
||||
#define RGBLED_SPLIT {26, 26}
|
||||
#define RGBLIGHT_EFFECT_BREATHING
|
||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
||||
#define RGBLIGHT_EFFECT_RGB_TEST
|
||||
#define RGBLIGHT_EFFECT_SNAKE
|
||||
|
||||
// Amoeba royale PCBs (https://github.com/mtl/keyboard-pcbs/tree/master/amoeba-royale) use row to column layout (current can flow from row pin to column pin).
|
||||
#undef DIODE_DIRECTION
|
||||
#define DIODE_DIRECTION ROW2COL
|
||||
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define AUTO_SHIFT_TIMEOUT 100
|
||||
#define NO_AUTO_SHIFT_SPECIAL
|
||||
#define NO_AUTO_SHIFT_NUMERIC
|
||||
|
||||
// require two taps for a TT layer switch (default 5)
|
||||
#define TAPPING_TOGGLE 2
|
||||
|
||||
// Mouse control
|
||||
// constant mode (velocity)
|
||||
#define MK_3_SPEED
|
||||
// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2
|
||||
|
||||
// Cursor offset per movement (unmodified)
|
||||
#define MK_C_OFFSET_UNMOD 16
|
||||
// Time between cursor movements (unmodified)
|
||||
#define MK_C_INTERVAL_UNMOD 10
|
||||
/* #define MK_C_INTERVAL_UNMOD 16 */
|
||||
|
||||
// Cursor offset per movement (KC_ACL0)
|
||||
#define MK_C_OFFSET_0 1
|
||||
// Time between cursor movements (KC_ACL0)
|
||||
#define MK_C_INTERVAL_0 32
|
||||
|
||||
// Cursor offset per movement (KC_ACL1)
|
||||
#define MK_C_OFFSET_1 4
|
||||
// Time between cursor movements (KC_ACL1)
|
||||
#define MK_C_INTERVAL_1 16
|
||||
|
||||
// Cursor offset per movement (KC_ACL2)
|
||||
#define MK_C_OFFSET_2 20
|
||||
/* #define MK_C_OFFSET_2 32 */
|
||||
// Time between cursor movements (KC_ACL2)
|
||||
#define MK_C_INTERVAL_2 16
|
||||
@@ -1,63 +0,0 @@
|
||||
// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/* A K.O,Y layout for the Dactyl Manuform 4x6 Keyboard */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "koy_keys_on_quertz_de_latin1.h"
|
||||
|
||||
enum custom_layers {
|
||||
_1,
|
||||
_3,
|
||||
_4,
|
||||
_7,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_1] = LAYOUT(
|
||||
KC_TAB , KC_K , KC_DOT , KC_O , KC_COMM , N_Y , KC_V , KC_G , KC_C , KC_L , N_SS , N_Z ,
|
||||
MO(_3) , KC_H , KC_A , KC_E , KC_I , KC_U , KC_D , KC_T , KC_R , KC_N , KC_S , KC_F ,
|
||||
KC_LSFT , KC_X , KC_Q , N_AE , N_UE , N_OE , KC_B , KC_P , KC_W , KC_M , KC_J , KC_RSFT ,
|
||||
KC_LCTL , KC_LGUI , KC_CAPS , TT(_7) ,
|
||||
KC_LALT , KC_SPC , MO(_3) , MO(_4) ,
|
||||
N_COPY , N_CUT , KC_ESC , KC_ENTER ,
|
||||
N_PASTE , N_UNDO , KC_BSPC , KC_DEL
|
||||
),
|
||||
|
||||
[_3] = LAYOUT(
|
||||
|
||||
KC_TAB , N_DOTS , N_USC , N_LSQBR , N_RSQBR , N_CIRC , N_EXKL , N_LT , N_GT , N_EQ , N_AMP , N_ACUT ,
|
||||
KC_TRNS , N_BSLS , N_SLSH , N_LCUBR , N_RCUBR , N_ASTR , N_QUES , N_LPARN , N_RPARN , N_MINS , N_COLN , N_AT ,
|
||||
KC_LSFT , N_HASH , N_DLR , N_PIPE , N_TILD , N_GRAVE , N_PLUS , N_PERC , N_QUOT , N_SING , N_SEMI , KC_RSFT ,
|
||||
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
|
||||
KC_LALT , KC_SPC , KC_TRNS , KC_TRNS ,
|
||||
N_COPY , N_CUT , KC_ESC , KC_ENTER ,
|
||||
N_PASTE , N_UNDO , KC_BSPC , KC_DEL
|
||||
|
||||
),
|
||||
|
||||
[_4] = LAYOUT(
|
||||
|
||||
KC_TAB , KC_PGUP , KC_BSPC , KC_UP , KC_DEL , KC_PGDN , KC_KP_SLASH , KC_7 , KC_8 , KC_9 , KC_KP_MINUS , KC_TRNS ,
|
||||
KC_TRNS , KC_HOME , KC_LEFT , KC_DOWN , KC_RIGHT , KC_END , KC_KP_ASTERISK , KC_4 , KC_5 , KC_6 , KC_KP_PLUS , KC_TRNS ,
|
||||
KC_LSFT , KC_ESC , KC_TAB , KC_INS , KC_ENTER , N_UNDO , KC_KP_ENTER , KC_1 , KC_2 , KC_3 , KC_KP_DOT , KC_RSFT ,
|
||||
KC_TRNS , KC_TRNS , KC_0 , KC_TRNS ,
|
||||
KC_LALT , KC_0 , KC_TRNS , KC_TRNS ,
|
||||
N_COPY , N_CUT , KC_ESC , KC_ENTER ,
|
||||
N_PASTE , N_UNDO , KC_BSPC , KC_DEL
|
||||
|
||||
),
|
||||
|
||||
[_7] = LAYOUT(
|
||||
|
||||
KC_TAB , KC_MS_WH_UP , KC_MS_BTN2 , KC_MS_UP , KC_MS_BTN1 , KC_MS_WH_DOWN , KC_TRNS , KC_F7 , KC_F8 , KC_F9 , RGB_HUI , QK_BOOT ,
|
||||
KC_TRNS , KC_MS_ACCEL0 , KC_MS_LEFT , KC_MS_DOWN , KC_MS_RIGHT , KC_TRNS , KC_TRNS , KC_F4 , KC_F5 , KC_F6 , RGB_SAI , RGB_TOG ,
|
||||
KC_LSFT , KC_MS_ACCEL1 , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_F1 , KC_F2 , KC_F3 , RGB_VAI , RGB_MODE_FORWARD ,
|
||||
KC_TRNS , KC_PSCR , KC_F10 , KC_TRNS ,
|
||||
KC_LALT , KC_F10 , KC_TRNS , KC_TRNS ,
|
||||
N_COPY , N_CUT , KC_ESC , KC_ENTER ,
|
||||
N_PASTE , N_UNDO , KC_BSPC , KC_DEL
|
||||
|
||||
),
|
||||
};
|
||||
@@ -1,11 +0,0 @@
|
||||
# Copyright 2021 Paul Maria Scheikl (@ScheiklP)
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
BOOTLOADER = atmel-dfu
|
||||
AUTO_SHIFT_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = no
|
||||
NKRO_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
DEBOUNCE_TYPE = asym_eager_defer_pk
|
||||
USER_NAME := scheiklp
|
||||
@@ -1,8 +0,0 @@
|
||||
#### compile with
|
||||
|
||||
`make handwired/dactyl_manuform/4x6:scheiklp`
|
||||
|
||||
|
||||
#### flash with
|
||||
|
||||
`qmk flash -kb handwired/dactyl_manuform/4x6 -km scheiklp`
|
||||
@@ -1,47 +0,0 @@
|
||||
// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#define USE_I2C
|
||||
#define SPLIT_HAND_PIN F6
|
||||
|
||||
#undef WS2812_DI_PIN
|
||||
#undef RGBLED_NUM
|
||||
|
||||
#define DEBOUNCE 5
|
||||
|
||||
#define AUTO_SHIFT_TIMEOUT 100
|
||||
#define NO_AUTO_SHIFT_SPECIAL
|
||||
#define NO_AUTO_SHIFT_NUMERIC
|
||||
|
||||
// require two taps for a TT layer switch (default 5)
|
||||
#define TAPPING_TOGGLE 2
|
||||
|
||||
// Mouse control
|
||||
// constant mode (velocity)
|
||||
#define MK_3_SPEED
|
||||
// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2
|
||||
|
||||
// Cursor offset per movement (unmodified)
|
||||
#define MK_C_OFFSET_UNMOD 16
|
||||
// Time between cursor movements (unmodified)
|
||||
#define MK_C_INTERVAL_UNMOD 10
|
||||
/* #define MK_C_INTERVAL_UNMOD 16 */
|
||||
|
||||
// Cursor offset per movement (KC_ACL0)
|
||||
#define MK_C_OFFSET_0 1
|
||||
// Time between cursor movements (KC_ACL0)
|
||||
#define MK_C_INTERVAL_0 32
|
||||
|
||||
// Cursor offset per movement (KC_ACL1)
|
||||
#define MK_C_OFFSET_1 4
|
||||
// Time between cursor movements (KC_ACL1)
|
||||
#define MK_C_INTERVAL_1 16
|
||||
|
||||
// Cursor offset per movement (KC_ACL2)
|
||||
#define MK_C_OFFSET_2 20
|
||||
/* #define MK_C_OFFSET_2 32 */
|
||||
// Time between cursor movements (KC_ACL2)
|
||||
#define MK_C_INTERVAL_2 16
|
||||
@@ -1,64 +0,0 @@
|
||||
// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/* A K.O,Y layout for the Dactyl Manuform 4x6 Keyboard */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "koy_keys_on_quertz_de_latin1.h"
|
||||
|
||||
enum custom_layers {
|
||||
_1,
|
||||
_3,
|
||||
_4,
|
||||
_7,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_1] = LAYOUT(
|
||||
KC_TAB , KC_K , KC_DOT , KC_O , KC_COMM , N_Y , KC_V , KC_G , KC_C , KC_L , N_SS , N_Z ,
|
||||
MO(_3) , KC_H , KC_A , KC_E , KC_I , KC_U , KC_D , KC_T , KC_R , KC_N , KC_S , KC_F ,
|
||||
KC_LSFT , KC_X , KC_Q , N_AE , N_UE , N_OE , KC_B , KC_P , KC_W , KC_M , KC_J , KC_RSFT ,
|
||||
KC_LCTL , KC_LGUI , KC_CAPS , TT(_7) ,
|
||||
KC_LALT , KC_SPC , MO(_3) , MO(_4) ,
|
||||
N_COPY , N_CUT , KC_ESC , KC_ENTER ,
|
||||
N_PASTE , N_UNDO , KC_BSPC , KC_DEL
|
||||
),
|
||||
|
||||
[_3] = LAYOUT(
|
||||
|
||||
KC_TAB , N_DOTS , N_USC , N_LSQBR , N_RSQBR , N_CIRC , N_EXKL , N_LT , N_GT , N_EQ , N_AMP , N_ACUT ,
|
||||
KC_TRNS , N_BSLS , N_SLSH , N_LCUBR , N_RCUBR , N_ASTR , N_QUES , N_LPARN , N_RPARN , N_MINS , N_COLN , N_AT ,
|
||||
KC_LSFT , N_HASH , N_DLR , N_PIPE , N_TILD , N_GRAVE , N_PLUS , N_PERC , N_QUOT , N_SING , N_SEMI , KC_RSFT ,
|
||||
KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS ,
|
||||
KC_LALT , KC_SPC , KC_TRNS , KC_TRNS ,
|
||||
N_COPY , N_CUT , KC_ESC , KC_ENTER ,
|
||||
N_PASTE , N_UNDO , KC_BSPC , KC_DEL
|
||||
|
||||
),
|
||||
|
||||
[_4] = LAYOUT(
|
||||
|
||||
KC_TAB , KC_PGUP , KC_BSPC , KC_UP , KC_DEL , KC_PGDN , KC_KP_SLASH , KC_7 , KC_8 , KC_9 , KC_KP_MINUS , KC_TRNS ,
|
||||
KC_TRNS , KC_HOME , KC_LEFT , KC_DOWN , KC_RIGHT , KC_END , KC_KP_ASTERISK , KC_4 , KC_5 , KC_6 , KC_KP_PLUS , KC_TRNS ,
|
||||
KC_LSFT , KC_ESC , KC_TAB , KC_INS , KC_ENTER , N_UNDO , KC_KP_ENTER , KC_1 , KC_2 , KC_3 , KC_KP_DOT , KC_RSFT ,
|
||||
KC_TRNS , KC_TRNS , KC_0 , KC_TRNS ,
|
||||
KC_LALT , KC_0 , KC_TRNS , KC_TRNS ,
|
||||
N_COPY , N_CUT , KC_ESC , KC_ENTER ,
|
||||
N_PASTE , N_UNDO , KC_BSPC , KC_DEL
|
||||
|
||||
),
|
||||
|
||||
[_7] = LAYOUT(
|
||||
|
||||
KC_TAB , KC_MS_WH_UP , KC_MS_BTN2 , KC_MS_UP , KC_MS_BTN1 , KC_MS_WH_DOWN , KC_TRNS , KC_F7 , KC_F8 , KC_F9 , KC_TRNS , KC_TRNS ,
|
||||
KC_TRNS , KC_MS_ACCEL0 , KC_MS_LEFT , KC_MS_DOWN , KC_MS_RIGHT , KC_TRNS , KC_TRNS , KC_F4 , KC_F5 , KC_F6 , KC_TRNS , KC_TRNS ,
|
||||
KC_LSFT , KC_MS_ACCEL1 , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_TRNS , KC_F1 , KC_F2 , KC_F3 , KC_TRNS , KC_TRNS ,
|
||||
KC_TRNS , KC_PSCR , KC_F10 , KC_TRNS ,
|
||||
KC_LALT , KC_F10 , KC_TRNS , KC_TRNS ,
|
||||
N_COPY , N_CUT , KC_ESC , KC_ENTER ,
|
||||
N_PASTE , N_UNDO , KC_BSPC , KC_DEL
|
||||
|
||||
),
|
||||
|
||||
};
|
||||
@@ -1,9 +0,0 @@
|
||||
# Copyright 2021 Paul Maria Scheikl (@ScheiklP)
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
BOOTLOADER = atmel-dfu
|
||||
AUTO_SHIFT_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = no
|
||||
NKRO_ENABLE = yes
|
||||
DEBOUNCE_TYPE = asym_eager_defer_pk
|
||||
@@ -1,24 +0,0 @@
|
||||
// Copyright 2019 Manna Harbour
|
||||
// https://github.com/manna-harbour/miryoku
|
||||
// generated -*- buffer-read-only: t -*-
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#define XXX KC_NO
|
||||
|
||||
#define LAYOUT_miryoku(\
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09,\
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19,\
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29,\
|
||||
N30, N31, K32, K33, K34, K35, K36, K37, N38, N39\
|
||||
)\
|
||||
LAYOUT( \
|
||||
XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \
|
||||
XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \
|
||||
XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \
|
||||
XXX, XXX, XXX, XXX, \
|
||||
K32, K33, K34, K35, K36, K37, \
|
||||
XXX, XXX, XXX, XXX \
|
||||
)
|
||||
@@ -1,5 +0,0 @@
|
||||
// Copyright 2019 Manna Harbour
|
||||
// https://github.com/manna-harbour/miryoku
|
||||
// generated -*- buffer-read-only: t -*-
|
||||
|
||||
// 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/>.
|
||||
@@ -1,28 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2020 Fred Silberberg
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define EE_HANDS
|
||||
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 200
|
||||
@@ -1,76 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2020 Fred Silberberg
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "333fred.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[BASE] = LAYOUT_5x6(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
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_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
OSM(MOD_LSFT), CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, OSM(MOD_RSFT),
|
||||
KC_F4, KC_F5, TG(CODEFLOW), KC_EQL,
|
||||
KC_LALT, KC_BSPC, KC_SPC, OSL(VIM),
|
||||
TD(TD_COPY_PASTE), TD(TD_SYM_VIM), KC_ENT, KC_RGUI,
|
||||
KC_LCTL, KC_DEL, KC_UP, KC_DOWN
|
||||
),
|
||||
|
||||
[CODEFLOW] = LAYOUT_5x6(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_F7, KC_F8, _______, _______,
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, _______, _______
|
||||
),
|
||||
|
||||
[SYMB] = LAYOUT_5x6(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, _______, KC_7, KC_8, KC_9, _______, KC_F12,
|
||||
_______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, _______, KC_4, KC_5, KC_6, _______, _______,
|
||||
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, KC_1, KC_2, KC_3, _______, _______,
|
||||
KC_F7, KC_F8, KC_0, KC_ENT,
|
||||
_______, _______, KC_MPLY, KC_MNXT,
|
||||
_______, _______, KC_MPRV, _______,
|
||||
_______, _______, KC_VOLU, KC_VOLD
|
||||
),
|
||||
|
||||
[VIM] = LAYOUT_5x6(
|
||||
_______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
|
||||
_______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
tap_dance_process_keycode(keycode);
|
||||
return !try_handle_macro(keycode, record);
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
KEY_LOCK_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
LTO_ENABLE = yes
|
||||
@@ -1,25 +0,0 @@
|
||||
// Copyright 2019 Manna Harbour
|
||||
// https://github.com/manna-harbour/miryoku
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
#pragma once
|
||||
|
||||
#define XXX KC_NO
|
||||
|
||||
#define LAYOUT_miryoku(\
|
||||
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, \
|
||||
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, \
|
||||
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, \
|
||||
N30, N31, K32, K33, K34, K35, K36, K37, N38, N39 \
|
||||
) \
|
||||
LAYOUT_5x6( \
|
||||
XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, XXX, \
|
||||
XXX, K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, XXX, \
|
||||
XXX, K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, XXX, \
|
||||
XXX, K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, XXX, \
|
||||
XXX, XXX, XXX, XXX, \
|
||||
K32, K33, K36, K37, \
|
||||
K34, XXX, XXX, K35, \
|
||||
XXX, XXX, XXX, XXX \
|
||||
)
|
||||
@@ -1,4 +0,0 @@
|
||||
// Copyright 2019 Manna Harbour
|
||||
// https://github.com/manna-harbour/miryoku
|
||||
|
||||
// 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/>.
|
||||
@@ -1,47 +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/>.
|
||||
*/
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
#define USE_I2C
|
||||
// #define MASTER_LEFT
|
||||
// #define MASTER_RIGHT
|
||||
#define EE_HANDS
|
||||
// Rows are doubled-up
|
||||
// #define DEBOUNCE 5
|
||||
#define TAPPING_TOGGLE 3
|
||||
#define ONESHOT_TAP_TOGGLE 3
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM 300
|
||||
#ifdef RGBLED_NUM
|
||||
# undef RGBLED_NUM
|
||||
#endif
|
||||
#define RGBLED_NUM 54
|
||||
#define RGBLIGHT_LIMIT_VAL 200
|
||||
#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
|
||||
#define RGBLIGHT_EFFECT_TWINKLE
|
||||
// #define RGBLIGHT_LED_MAP { 11,10,9,8,7,6,5,4,3,2,1,0,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26 }
|
||||
#define RGBLIGHT_SPLIT 27
|
||||
@@ -1,61 +0,0 @@
|
||||
/* A standard layout for the Dactyl Manuform 5x6 Keyboard */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "rishka.h"
|
||||
|
||||
enum layers {
|
||||
BASE, // default layer
|
||||
WIN, // Switch keys that are needed in windows
|
||||
SYMB, // symbols
|
||||
MDIA // media keys
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[BASE] = LAYOUT_5x6_wrapper(
|
||||
KC_EQL , ________________NUMBERS_L__________________, ________________NUMBERS_R__________________, KC_MINS,
|
||||
KC_ESC , _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSLS,
|
||||
KC_F1 , _____________MOD_QWERTY_L2_________________, _____________MOD_QWERTY_R2_________________, KC_QUOT,
|
||||
OS_LSFT, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, OS_RSFT,
|
||||
KC_LEFT,KC_RGHT, KC_UP, KC_DOWN,
|
||||
KC_BSPC, KC_SPC, KC_TAB, KC_ENT,
|
||||
KC_LGUI, MO(SYMB), MO(SYMB), TT(MDIA),
|
||||
KC_DEL, KC_GRV, TT(WIN), KC_LALT
|
||||
),
|
||||
[WIN] = LAYOUT_5x6_wrapper(
|
||||
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _________________QWERTY_L2_________________, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, _______, _______,
|
||||
KC_LCTL, _______, _______, _______,
|
||||
_______, _______, _______, _______
|
||||
),
|
||||
|
||||
[SYMB] = LAYOUT_5x6_wrapper(
|
||||
KC_F12 , ______________________F_L__________________, ______________________F_R__________________, KC_F11,
|
||||
_______, _________________SYMBOL_L1_________________, _________________SYMBOL_R1_________________, KC_NUM,
|
||||
_______, _________________SYMBOL_L2_________________, _________________SYMBOL_R2_________________, _______,
|
||||
_______, _________________SYMBOL_L3_________________, _________________SYMBOL_R3_________________, _______,
|
||||
_______, _______, KC_P0 , KC_PDOT,
|
||||
_______, _______, _______, _______,
|
||||
QK_BOOT, _______, _______, _______,
|
||||
RGB_TOG, _______, _______, _______
|
||||
),
|
||||
[MDIA] = LAYOUT_5x6_wrapper(
|
||||
|
||||
RGB_MOD, RGB_HUI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
RGB_M_SN, RGB_HUD, _______, KC_MS_U, _______, KC_WH_U, _______, _______, KC_WH_U, _______, _______, _______,
|
||||
RGB_VAI, RGB_SAI, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, MOUSE_L, KC_WH_D, MOUSE_R, _______, _______,
|
||||
RGB_VAD, RGB_SAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______,
|
||||
KC_BTN1, KC_BTN2, _______, _______,
|
||||
KC_BTN3, KC_BTN4, _______, _______,
|
||||
KC_BTN5, _______, _______, _______
|
||||
|
||||
),
|
||||
};
|
||||
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
BOOTLOADER=qmk-dfu
|
||||
RGBLIGHT_ENABLE = yes
|
||||
|
||||
@@ -1,8 +0,0 @@
|
||||
#### compile with
|
||||
|
||||
`make handwired/dactyl_manuform/5x6:scheiklp`
|
||||
|
||||
|
||||
#### flash with
|
||||
|
||||
`qmk flash -kb handwired/dactyl_manuform/5x6 -km scheiklp`
|
||||
@@ -1,47 +0,0 @@
|
||||
// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
#define USE_I2C
|
||||
|
||||
/* #define MASTER_LEFT */
|
||||
/* #define MASTER_RIGHT */
|
||||
#define EE_HANDS
|
||||
// Rows are doubled-up
|
||||
|
||||
#define AUTO_SHIFT_TIMEOUT 125
|
||||
#define NO_AUTO_SHIFT_SPECIAL
|
||||
#define NO_AUTO_SHIFT_NUMERIC
|
||||
|
||||
// require two taps for a TT layer switch (default 5)
|
||||
#define TAPPING_TOGGLE 2
|
||||
|
||||
// Mouse control
|
||||
// constant mode (velocity)
|
||||
#define MK_3_SPEED
|
||||
// KC_ACL0 < KC_ACL1 < unmodified < KC_ACL2
|
||||
|
||||
// Cursor offset per movement (unmodified)
|
||||
#define MK_C_OFFSET_UNMOD 16
|
||||
// Time between cursor movements (unmodified)
|
||||
#define MK_C_INTERVAL_UNMOD 10
|
||||
/* #define MK_C_INTERVAL_UNMOD 16 */
|
||||
|
||||
// Cursor offset per movement (KC_ACL0)
|
||||
#define MK_C_OFFSET_0 1
|
||||
// Time between cursor movements (KC_ACL0)
|
||||
#define MK_C_INTERVAL_0 32
|
||||
|
||||
// Cursor offset per movement (KC_ACL1)
|
||||
#define MK_C_OFFSET_1 4
|
||||
// Time between cursor movements (KC_ACL1)
|
||||
#define MK_C_INTERVAL_1 16
|
||||
|
||||
// Cursor offset per movement (KC_ACL2)
|
||||
#define MK_C_OFFSET_2 20
|
||||
/* #define MK_C_OFFSET_2 32 */
|
||||
// Time between cursor movements (KC_ACL2)
|
||||
#define MK_C_INTERVAL_2 16
|
||||
@@ -1,70 +0,0 @@
|
||||
// Copyright 2021 Paul Maria Scheikl (@ScheiklP)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
/* A K.O,Y layout for the Dactyl Manuform 5x6 Keyboard */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "koy_keys_on_quertz_de_latin1.h"
|
||||
|
||||
|
||||
enum custom_layers {
|
||||
_1,
|
||||
_3,
|
||||
_4,
|
||||
_7,
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_1] = LAYOUT_5x6(
|
||||
KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_BSPC ,
|
||||
KC_TAB , KC_K , KC_DOT , KC_O , KC_COMM , N_Y , KC_V , KC_G , KC_C , KC_L , N_SS , N_Z ,
|
||||
MO(_3) , KC_H , KC_A , KC_E , KC_I , KC_U , KC_D , KC_T , KC_R , KC_N , KC_S , KC_F ,
|
||||
KC_LSFT , KC_X , KC_Q , N_AE , N_UE , N_OE , KC_B , KC_P , KC_W , KC_M , KC_J , KC_RSFT ,
|
||||
KC_LCTL , KC_LGUI , KC_CAPS , TT(_7),
|
||||
KC_LALT, KC_SPC, MO(_3), MO(_4),
|
||||
N_COPY, N_CUT, DM_RSTP, KC_ENTER,
|
||||
N_PASTE, N_UNDO, DM_REC1, DM_PLY1
|
||||
),
|
||||
|
||||
[_3] = LAYOUT_5x6(
|
||||
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC,
|
||||
KC_TAB, N_DOTS, N_USC, N_LSQBR, N_RSQBR, N_CIRC, N_EXKL, N_LT, N_GT, N_EQ, N_AMP, N_ACUT,
|
||||
KC_TRNS, N_BSLS, N_SLSH, N_LCUBR, N_RCUBR, N_ASTR, N_QUES, N_LPARN, N_RPARN, N_MINS, N_COLN, N_AT,
|
||||
KC_LSFT, N_HASH, N_DLR, N_PIPE, N_TILD, N_GRAVE, N_PLUS, N_PERC, N_QUOT, N_SING, N_SEMI, KC_RSFT,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_LALT,KC_SPC, KC_TRNS,KC_TRNS,
|
||||
N_COPY, N_CUT, DM_RSTP, KC_ENTER,
|
||||
N_PASTE, N_UNDO, DM_REC1, DM_PLY1
|
||||
|
||||
),
|
||||
|
||||
[_4] = LAYOUT_5x6(
|
||||
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_BSPC,
|
||||
KC_TAB, KC_PGUP, KC_BSPC, KC_UP, KC_DEL, KC_PGDN, KC_KP_SLASH, KC_7, KC_8, KC_9, KC_KP_MINUS, KC_TRNS,
|
||||
KC_TRNS, KC_HOME, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_KP_ASTERISK, KC_4, KC_5, KC_6, KC_KP_PLUS, KC_TRNS,
|
||||
KC_LSFT, KC_ESC, KC_TAB, KC_INS, KC_ENTER, N_UNDO, KC_KP_ENTER, KC_1, KC_2, KC_3, KC_KP_DOT, KC_RSFT,
|
||||
KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_LALT,KC_0, KC_TRNS,KC_TRNS,
|
||||
N_COPY, N_CUT, DM_RSTP, KC_ENTER,
|
||||
N_PASTE, N_UNDO, DM_REC1, DM_PLY1
|
||||
|
||||
),
|
||||
|
||||
[_7] = LAYOUT_5x6(
|
||||
|
||||
KC_ESC, KC_TRNS, KC_TRNS, KC_MS_BTN3, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT,
|
||||
KC_TAB, KC_MS_WH_UP, KC_MS_BTN2, KC_MS_UP, KC_MS_BTN1, KC_MS_WH_DOWN, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_MS_ACCEL0, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_LSFT, KC_MS_ACCEL1, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS,KC_PSCR, KC_TRNS, KC_TRNS,
|
||||
KC_LALT,KC_0, KC_TRNS,KC_TRNS,
|
||||
N_COPY, N_CUT, DM_RSTP, KC_ENTER,
|
||||
N_PASTE, N_UNDO, DM_REC1, DM_PLY1
|
||||
|
||||
),
|
||||
|
||||
};
|
||||
@@ -1,10 +0,0 @@
|
||||
# Copyright 2021 Paul Maria Scheikl (@ScheiklP)
|
||||
# SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
AUTO_SHIFT_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
COMMAND_ENABLE = no
|
||||
NKRO_ENABLE = yes
|
||||
BOOTLOADER = atmel-dfu
|
||||
DYNAMIC_MACRO_ENABLE = yes
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
// Copyright 2022 Ulrich Spörlein (@uqs)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#define RGBLED_NUM 12
|
||||
#define RGBLED_SPLIT {6,6}
|
||||
#define RGBLIGHT_LIMIT_VAL 127
|
||||
|
||||
#define EE_HANDS
|
||||
@@ -1,170 +0,0 @@
|
||||
// Copyright 2022 Ulrich Spörlein (@uqs)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
// vi:et sw=4 cc=5,15,25,35,45,55,65:
|
||||
|
||||
#include "uqs.h"
|
||||
|
||||
/*
|
||||
* My custom layout macro that allows for easy diff(1) operations between
|
||||
* various keyboards. It probably doesn't make sense to you.
|
||||
*/
|
||||
#define LAYOUT_uqs( \
|
||||
L00, L01, L02, L03, L04, L05, \
|
||||
L10, L11, L12, L13, L14, L15, \
|
||||
L20, L21, L22, L23, L24, L25, \
|
||||
L30, L31, L32, L33, L34, L35, \
|
||||
L42, L43, \
|
||||
L44, L45, L54, \
|
||||
L55, L52, L53, \
|
||||
R00, R01, R02, R03, R04, R05, \
|
||||
R10, R11, R12, R13, R14, R15, \
|
||||
R20, R21, R22, R23, R24, R25, \
|
||||
R30, R31, R32, R33, R34, R35, \
|
||||
R42, R43, \
|
||||
R51, R40, R41, \
|
||||
R50, R52, R53 \
|
||||
) \
|
||||
LAYOUT_5x6( \
|
||||
L00, L01, L02, L03, L04, L05, R00, R01, R02, R03, R04, R05, \
|
||||
L10, L11, L12, L13, L14, L15, R10, R11, R12, R13, R14, R15, \
|
||||
L20, L21, L22, L23, L24, L25, R20, R21, R22, R23, R24, R25, \
|
||||
L30, L31, L32, L33, L34, L35, R30, R31, R32, R33, R34, R35, \
|
||||
L42, L43, R42, R43, \
|
||||
L44, L45, R40, R41, \
|
||||
L54, L55, R50, R51, \
|
||||
L52, L53, R52, R53 \
|
||||
)
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[L_QWER] = LAYOUT_uqs(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B,
|
||||
KC_LBRC, KC_RBRC,
|
||||
/*thumb*/ LT_EXTD_ESC, KC_SPC, LT_MOUSE_ALT_SHIFT_INS,
|
||||
/*aux*/ QK_LEAD, OSM_GUI, KC_LALT,
|
||||
KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINUS,
|
||||
KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_GRV),
|
||||
KC_MINS, KC_EQL,
|
||||
/*thumb*/ LT_FUNC_SHIFT_INS, KC_ENT, LT_NUM_BSPC,
|
||||
/*aux*/ KC_RALT, KC_APP, QK_LEAD
|
||||
),
|
||||
|
||||
[L_WASD] = LAYOUT_uqs(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5,
|
||||
KC_T, KC_TAB, KC_Q, KC_W, KC_E, KC_R,
|
||||
KC_G, KC_LSFT, KC_A, KC_S, KC_D, KC_F,
|
||||
KC_B, KC_GRV, KC_Z, KC_X, KC_C, KC_V,
|
||||
KC_LBRC, KC_RBRC,
|
||||
/*thumb*/ KC_LCTL, KC_SPC, KC_R,
|
||||
/*aux*/ A(KC_M), KC_LGUI, KC_LALT,
|
||||
KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSFT_T(KC_GRV),
|
||||
KC_MINS, KC_EQL,
|
||||
/*thumb*/ DF(L_COLM), KC_ENT, KC_BSPC,
|
||||
/*aux*/ KC_F5, KC_RALT, KC_APP
|
||||
),
|
||||
|
||||
[L_COLM] = LAYOUT_uqs(
|
||||
KC_NO, KC_NO, KC_BTN2, KC_BTN3, KC_BTN1, KC_NO,
|
||||
KC_BTN2, KC_Q, KC_W, KC_F, KC_P, KC_B,
|
||||
KC_BTN1, KC_G_A, KC_A_R, KC_S_S, KC_C_T, KC_G,
|
||||
KC_BTN3, KC_Z, KC_X, KC_C, KC_D, KC_V,
|
||||
MS_WHUP, MS_WHDN,
|
||||
/*thumb*/ LT_EXTD_ESC, SFT_T(KC_SPC), LT(L_MOUSE, KC_TAB),
|
||||
/*aux*/ QK_LEAD, OSM_GUI, KC_LALT,
|
||||
KC_NO, KC_BTN1, KC_BTN2, KC_BTN3, KC_NO, KC_NO,
|
||||
KC_J, KC_L, KC_U, KC_Y, KC_QUOT, KC_NO,
|
||||
KC_M, KC_C_N, KC_S_E, KC_A_I, KC_G_O, KC_NO,
|
||||
KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_NO,
|
||||
KC_NO, KC_NO,
|
||||
/*thumb*/ LT_FUNC_SHIFT_INS, KC_ENT, LT_NUM_BSPC,
|
||||
/*aux*/ QK_LEAD, KC_RALT, KC_APP
|
||||
),
|
||||
|
||||
// Updated with inspiration from https://forum.colemak.com/topic/2014-extend-extra-extreme/
|
||||
// I like the AltGr trick from https://stevep99.github.io/seniply/ and should probably incorporate some stuff from it.
|
||||
[L_EXTD] = LAYOUT_uqs(
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, KC_BTN1, KC_SCTAB, KC_PGUP, KC_CTAB, QK_LEAD,
|
||||
_______, OSM_GUI, OSM_ALT, OSM_SFT, OSM_CTL, KC_RALT,
|
||||
_______, ALT_TAB, MS_WHUP, MS_WHDN, KC_PGDN, INS_HARD,
|
||||
_______, _______,
|
||||
/*thumb*/ _______, _______, _______,
|
||||
/*aux*/ _______, _______, _______,
|
||||
/* ^^^^ can't be used */
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_INS, KC_NO,
|
||||
KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_DEL, KC_NO,
|
||||
WIN_LEFT, WIN_DN, WIN_UP, WIN_RGHT, KC_PSTE, KC_NO, // KC_PSTE works in XTerm to emulate middle-click
|
||||
_______, _______,
|
||||
/*thumb*/ _______, _______, KC_BSPC,
|
||||
/*aux*/ _______, _______, _______
|
||||
/* ^^^^ use these */
|
||||
),
|
||||
|
||||
// TODO: maybe swap # with ;, that way I can roll :w or :wq which I need
|
||||
// often ... probably better to add a combo?
|
||||
[L_NUM] = LAYOUT_uqs(
|
||||
_______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC,
|
||||
_______, KC_SCLN, KC_COLN, KC_LCBR, KC_LPRN, KC_LBRC,
|
||||
_______, KC_CIRC, KC_AMPR, KC_RCBR, KC_RPRN, KC_RBRC,
|
||||
KC_GRV, KC_TILDE,
|
||||
/*thumb*/ KC_ESC, KC_SPC, KC_0,
|
||||
/*aux*/ _______, _______, _______,
|
||||
/* ^^^^ use these */
|
||||
KC_NUM, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_EQUAL, KC_7, KC_8, KC_9, KC_KP_PLUS,_______,
|
||||
KC_KP_ASTERISK,KC_4,KC_5, KC_6, MINS_UNDSCR,_______,
|
||||
KC_COMM, KC_1, KC_2, KC_3, KC_KP_SLASH,KC_KP_ENTER, // Enter here, because thumb is occupied
|
||||
KC_0, KC_KP_DOT,
|
||||
/*thumb*/ _______, _______, _______,
|
||||
/*aux*/ _______, _______, _______
|
||||
/* ^^^^ can't be used */
|
||||
),
|
||||
|
||||
[L_FUNC] = LAYOUT_uqs(
|
||||
_______, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
_______, KC_NO, KC_MUTE, KC_VOLD, KC_VOLU, DF(L_WASD),
|
||||
_______, KC_LGUI, KC_LALT, KC_LSFT, KC_LCTL, DF(L_QWER),
|
||||
_______, KC_NO, KC_NO, KC_NO, KC_NO, DF(L_COLM),
|
||||
KC_NO, KC_NO,
|
||||
/*thumb*/ _______, _______, _______,
|
||||
/*aux*/ _______, _______, _______,
|
||||
/* ^^^^ use these */
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_PSCR, KC_F7, KC_F8, KC_F9, KC_F10, KC_NO,
|
||||
KC_SCRL, KC_F4, KC_F5, KC_F6, KC_F11, KC_NO,
|
||||
KC_PAUS, KC_F1, KC_F2, KC_F3, KC_F12, KC_NO,
|
||||
KC_NO, KC_NO,
|
||||
/*thumb*/ _______, _______, _______,
|
||||
/*aux*/ _______, _______, _______
|
||||
/* ^^^^ can't be used */
|
||||
),
|
||||
|
||||
[L_MOUSE] = LAYOUT_uqs(
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, KC_NO, KC_BTN2, KC_BTN3, KC_BTN1, KC_VOLU,
|
||||
_______, KC_NO, KC_ACL0, KC_ACL1, KC_ACL2, KC_VOLD,
|
||||
_______, KC_NO, KC_NO, KC_NO, KC_NO, KC_MUTE,
|
||||
KC_NO, KC_NO,
|
||||
/*thumb*/ _______, _______, _______,
|
||||
/*aux*/ _______, _______, _______,
|
||||
/* ^^^^ can't be used */
|
||||
_______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_MS_UP, MS_WHUP, _______, _______,
|
||||
MS_WHLEFT,KC_MS_L, KC_MS_D, KC_MS_R, MS_WHRGHT,_______,
|
||||
_______, MS_WHDN, KC_BTN3, KC_BTN4, KC_BTN5, _______,
|
||||
KC_NO, KC_NO,
|
||||
/*thumb*/ KC_NO, KC_BTN1, KC_BTN2,
|
||||
/*aux*/ _______, _______, _______
|
||||
/* use these ^^^^ */
|
||||
),
|
||||
};
|
||||
@@ -1 +0,0 @@
|
||||
#VIA_ENABLE = yes # doesn't fit with 7 layers :/
|
||||
@@ -1,39 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2020 Fred Silberberg
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define EE_HANDS
|
||||
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 200
|
||||
|
||||
#define OLED_DISPLAY_128X64
|
||||
|
||||
#define ENCODERS_PAD_A { F4 }
|
||||
#define ENCODERS_PAD_B { F5 }
|
||||
|
||||
#undef SOFT_SERIAL_PIN
|
||||
#define SOFT_SERIAL_PIN D2
|
||||
|
||||
#undef OLED_TIMEOUT
|
||||
#define OLED_TIMEOUT 240000
|
||||
@@ -1,581 +0,0 @@
|
||||
/*
|
||||
Copyright (c) 2020 Fred Silberberg
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "333fred.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[BASE] = LAYOUT_5x6_5(
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
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_ESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
OSM(MOD_LSFT), CTL_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, CTL_T(KC_SLSH), OSM(MOD_RSFT),
|
||||
KC_F4, KC_LALT, KC_BSPC, TD(TD_SYM_VIM), KC_DEL, KC_UP, KC_ENT, KC_SPC, OSL(VIM), KC_EQL,
|
||||
KC_LGUI, TD(TD_COPY_PASTE), KC_DOWN, OSM(MOD_RCTL)
|
||||
),
|
||||
|
||||
[SYMB] = LAYOUT_5x6_5(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, KC_EXLM, KC_AT, KC_LPRN, KC_RPRN, KC_PIPE, _______, KC_7, KC_8, KC_9, _______, KC_F12,
|
||||
_______, KC_HASH, KC_DLR, KC_LCBR, KC_RCBR, KC_GRV, _______, KC_4, KC_5, KC_6, _______, _______,
|
||||
_______, KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, _______, KC_1, KC_2, KC_3, _______, _______,
|
||||
KC_F7, _______, _______, _______, _______, KC_VOLU, KC_MPRV, KC_MPLY, KC_MNXT, KC_ENT,
|
||||
_______, _______, KC_VOLD, _______
|
||||
),
|
||||
|
||||
[VIM] = LAYOUT_5x6_5(
|
||||
_______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
|
||||
_______, _______, _______, _______, KC_LSFT, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, DLEFT, DRIGHT, KC_LCTL, KC_LGUI, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______,_______, _______, TG(GAME), _______, _______, _______, _______,
|
||||
_______, _______, _______, _______
|
||||
),
|
||||
|
||||
[GAME] = LAYOUT_5x6_5(
|
||||
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_T, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_G, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_B, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
QK_LOCK, KC_LALT, KC_SPC, KC_ENT, KC_GRV, TG(GAME), _______, _______, _______, KC_EQL,
|
||||
KC_BSPC, KC_F5, KC_F6, _______
|
||||
),
|
||||
};
|
||||
|
||||
uint32_t quote_timer;
|
||||
|
||||
void keyboard_post_init_user(void) { quote_timer = 0; }
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
tap_dance_process_keycode(keycode);
|
||||
return !try_handle_macro(keycode, record);
|
||||
}
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM qmk_logo[] = {0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00};
|
||||
|
||||
oled_write_P(qmk_logo, false);
|
||||
}
|
||||
|
||||
void render_led_status(void) {
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
if (led_state.num_lock || led_state.caps_lock || led_state.scroll_lock) {
|
||||
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
|
||||
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||
}
|
||||
}
|
||||
|
||||
void render_mods_status(void) {
|
||||
uint8_t mods = get_mods() | get_oneshot_mods();
|
||||
bool ctrl = mods & MOD_MASK_CTRL;
|
||||
bool shft = mods & MOD_MASK_SHIFT;
|
||||
bool alt = mods & MOD_MASK_ALT;
|
||||
bool gui = mods & MOD_MASK_GUI;
|
||||
|
||||
oled_write_P(ctrl ? PSTR("CTRL ") : PSTR(" "), false);
|
||||
oled_write_P(shft ? PSTR("SHIFT ") : PSTR(" "), false);
|
||||
oled_write_P(alt ? PSTR("ALT ") : PSTR(" "), false);
|
||||
oled_write_ln_P(gui ? PSTR("GUI ") : PSTR(" "), false);
|
||||
}
|
||||
|
||||
#define MAX_LINES 8
|
||||
|
||||
void write_quote(const char* data, const uint8_t num_lines) {
|
||||
uint8_t current_line = 0;
|
||||
for (; current_line < (MAX_LINES - num_lines) / 2; current_line++) {
|
||||
oled_advance_page(true);
|
||||
}
|
||||
|
||||
oled_write_ln_P(data, false);
|
||||
|
||||
for (current_line += num_lines; current_line < MAX_LINES; current_line++)
|
||||
{
|
||||
oled_advance_page(true);
|
||||
}
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
if (is_keyboard_master()) {
|
||||
render_logo();
|
||||
oled_advance_page(/* clearPageRemainder */ true);
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case BASE:
|
||||
oled_write_ln_P(PSTR("Base"), false);
|
||||
break;
|
||||
case SYMB:
|
||||
oled_write_ln_P(PSTR("Symbols"), false);
|
||||
break;
|
||||
case VIM:
|
||||
oled_write_ln_P(PSTR("Vim"), false);
|
||||
break;
|
||||
case GAME:
|
||||
oled_write_ln_P(PSTR("Gaming"), false);
|
||||
break;
|
||||
}
|
||||
|
||||
render_mods_status();
|
||||
render_led_status();
|
||||
} else {
|
||||
if ((quote_timer != 0 && timer_elapsed32(quote_timer) < 300000 /* 5 minutes */) || !is_oled_on()) {
|
||||
return;
|
||||
}
|
||||
|
||||
srand(timer_read32());
|
||||
int currentQuote = rand() % 63;
|
||||
quote_timer = timer_read32();
|
||||
|
||||
// Max character count on my screen is 20 characters per line.
|
||||
// Quotes are from various fantasy books, mostly either from
|
||||
// The Stormlight Archive or from The Wheel of Time.
|
||||
switch (currentQuote) {
|
||||
case 0:
|
||||
write_quote(PSTR(" Life before Death \n"
|
||||
" Strength before \n"
|
||||
" Weakness \n"
|
||||
" Journey before \n"
|
||||
" Destination"),
|
||||
5);
|
||||
break;
|
||||
case 1:
|
||||
write_quote(PSTR(" Honor is dead, but \n"
|
||||
"I'll see what I can \n"
|
||||
" do."),
|
||||
3);
|
||||
break;
|
||||
case 2:
|
||||
write_quote(PSTR(" You cannot have my \n"
|
||||
" pain!"),
|
||||
2);
|
||||
break;
|
||||
case 3:
|
||||
write_quote(PSTR(" Pride doesn't win \n"
|
||||
" battles"),
|
||||
2);
|
||||
break;
|
||||
case 4:
|
||||
write_quote(PSTR(" I have practice \n"
|
||||
" following fools in \n"
|
||||
" their reckless \n"
|
||||
" pursuits."),
|
||||
4);
|
||||
break;
|
||||
case 5:
|
||||
write_quote(PSTR(" What is the most \n"
|
||||
" important step a \n"
|
||||
" man can take?"),
|
||||
3);
|
||||
break;
|
||||
case 6:
|
||||
write_quote(PSTR(" It's the next one. \n"
|
||||
" Always the next \n"
|
||||
" step, Dalinar."),
|
||||
3);
|
||||
break;
|
||||
case 7:
|
||||
write_quote(PSTR(" NO MATING."), 1);
|
||||
break;
|
||||
case 8:
|
||||
write_quote(PSTR(" Inappropriate? \n"
|
||||
"Such as... dividing \n"
|
||||
" by zero?"),
|
||||
3);
|
||||
break;
|
||||
case 9:
|
||||
write_quote(PSTR(" I am a stick!"), 1);
|
||||
break;
|
||||
case 10:
|
||||
write_quote(PSTR(" But you could be \n"
|
||||
" fire!"),
|
||||
1);
|
||||
break;
|
||||
case 11:
|
||||
write_quote(PSTR(" Sometimes a \n"
|
||||
" hyprocrite is \n"
|
||||
" nothing more than \n"
|
||||
" than a man in the \n"
|
||||
"process of changing"),
|
||||
5);
|
||||
break;
|
||||
case 12:
|
||||
write_quote(PSTR(" You surrender when \n"
|
||||
" you are dead. Many \n"
|
||||
"a man has been given\n"
|
||||
" less."),
|
||||
4);
|
||||
break;
|
||||
case 13:
|
||||
write_quote(PSTR(" Kneel and swear to \n"
|
||||
" the Lord Dragon,...\n"
|
||||
" or you will be \n"
|
||||
" knelt."),
|
||||
4);
|
||||
break;
|
||||
case 14:
|
||||
write_quote(PSTR("I'm right, anyway. I\n"
|
||||
"wish I wasn't, but I\n"
|
||||
" am. I bloody am."),
|
||||
3);
|
||||
break;
|
||||
case 15:
|
||||
write_quote(PSTR(" Death rides on my \n"
|
||||
" shoulder,. Death \n"
|
||||
" walks in my \n"
|
||||
" footsteps. I am \n"
|
||||
" death."),
|
||||
5);
|
||||
break;
|
||||
case 16:
|
||||
write_quote(PSTR(" The Golden Crane \n"
|
||||
" flies for Tarmon \n"
|
||||
" Gai'don"),
|
||||
3);
|
||||
break;
|
||||
case 17:
|
||||
write_quote(PSTR("You humans are very \n"
|
||||
" excitable"),
|
||||
2);
|
||||
break;
|
||||
case 18:
|
||||
write_quote(PSTR(" Phaw!"), 1);
|
||||
break;
|
||||
case 19:
|
||||
write_quote(PSTR("I may be a fool, but\n"
|
||||
" I intend to be a \n"
|
||||
" live fool."),
|
||||
3);
|
||||
break;
|
||||
case 20:
|
||||
write_quote(PSTR(" Anyone who claimed \n"
|
||||
" that old age had \n"
|
||||
" brought them \n"
|
||||
"patience was either \n"
|
||||
" lying or senile."),
|
||||
5);
|
||||
break;
|
||||
case 21:
|
||||
write_quote(PSTR("Death is light as a \n"
|
||||
"feather; duty, heavy\n"
|
||||
" as a mountain"),
|
||||
3);
|
||||
break;
|
||||
case 22:
|
||||
write_quote(PSTR("Dovie'andi se tovya \n"
|
||||
" sagain."),
|
||||
2);
|
||||
break;
|
||||
case 23:
|
||||
write_quote(PSTR(" Carai an Caldazar! \n"
|
||||
"Carai an Ellisande! \n"
|
||||
" Al Ellisande!"),
|
||||
3);
|
||||
break;
|
||||
case 24:
|
||||
write_quote(PSTR(" Mia dovienya \n"
|
||||
" nesodhin soende."),
|
||||
2);
|
||||
break;
|
||||
case 25:
|
||||
write_quote(PSTR(" The Wheel of Time \n"
|
||||
"turns, and Ages come\n"
|
||||
" and pass, leaving \n"
|
||||
"memories that become\n"
|
||||
" legend."),
|
||||
5);
|
||||
break;
|
||||
case 26:
|
||||
write_quote(PSTR(" Legend fades to \n"
|
||||
"myth, and even myth \n"
|
||||
" is long forgotten \n"
|
||||
" when the Age that \n"
|
||||
"gave it birth comes \n"
|
||||
" again."),
|
||||
6);
|
||||
break;
|
||||
case 27:
|
||||
write_quote(PSTR(" What is too absurd \n"
|
||||
" to believe is \n"
|
||||
"believed because it \n"
|
||||
"is too absurd to be \n"
|
||||
" a lie."),
|
||||
5);
|
||||
break;
|
||||
case 28:
|
||||
write_quote(PSTR("And you gave me the \n"
|
||||
" way out! Chew on \n"
|
||||
"that bitterness for \n"
|
||||
"lunch, you flaming, \n"
|
||||
"burning, misbegotten\n"
|
||||
" liars!"),
|
||||
6);
|
||||
break;
|
||||
case 29:
|
||||
write_quote(PSTR(" He was going to \n"
|
||||
"start having, 'I am \n"
|
||||
"not a bloody Lord', \n"
|
||||
" embroidered on his \n"
|
||||
" coats."),
|
||||
5);
|
||||
break;
|
||||
case 30:
|
||||
write_quote(PSTR("All was not lost, of\n"
|
||||
" course. All was \n"
|
||||
" never lost as long \n"
|
||||
" as you were alive."),
|
||||
4);
|
||||
break;
|
||||
case 31:
|
||||
write_quote(PSTR(" Everything is just \n"
|
||||
" bloody fine!"),
|
||||
2);
|
||||
break;
|
||||
case 32:
|
||||
write_quote(PSTR("The wheel weaves as \n"
|
||||
" the wheel wills"),
|
||||
2);
|
||||
break;
|
||||
case 33:
|
||||
write_quote(PSTR(" Time to toss the \n"
|
||||
" dice"),
|
||||
2);
|
||||
break;
|
||||
case 34:
|
||||
write_quote(PSTR("Always plan for the \n"
|
||||
" worst, child, that \n"
|
||||
" way all your \n"
|
||||
" surprises are \n"
|
||||
" pleasant ones."),
|
||||
5);
|
||||
break;
|
||||
case 35:
|
||||
write_quote(PSTR("'Pessimism, she is a\n"
|
||||
" fond friend of \n"
|
||||
"yours, yes?' 'That's\n"
|
||||
" uncalled for. I \n"
|
||||
" barely know her. \n"
|
||||
"Mere acquaintances, \n"
|
||||
" at best.'"),
|
||||
7);
|
||||
break;
|
||||
case 36:
|
||||
write_quote(PSTR(" Do not trouble \n"
|
||||
"trouble till trouble\n"
|
||||
" troubles you."),
|
||||
3);
|
||||
break;
|
||||
case 37:
|
||||
write_quote(PSTR("If your enemy offers\n"
|
||||
" you two targets, \n"
|
||||
" strike at a third."),
|
||||
3);
|
||||
break;
|
||||
case 38:
|
||||
write_quote(PSTR("The wind was not the\n"
|
||||
"beginning. There are\n"
|
||||
" neither beginnings \n"
|
||||
" nor endings to the \n"
|
||||
" turning of the \n"
|
||||
" Wheel of Time. But \n"
|
||||
" it was _a_ \n"
|
||||
" beginning."),
|
||||
8);
|
||||
break;
|
||||
case 39:
|
||||
write_quote(PSTR("Bloody flaming ashes"), 1);
|
||||
break;
|
||||
case 40:
|
||||
write_quote(PSTR("Then follow Lord Mat\n"
|
||||
" whenever he calls \n"
|
||||
"To dance with Jak O'\n"
|
||||
" the Shadows."),
|
||||
4);
|
||||
break;
|
||||
case 41:
|
||||
write_quote(PSTR(" There are no \n"
|
||||
" endings, and never \n"
|
||||
"will be endings, to \n"
|
||||
" the turning of the \n"
|
||||
" Wheel of Time. But \n"
|
||||
" it was an ending."),
|
||||
6);
|
||||
break;
|
||||
case 42:
|
||||
write_quote(PSTR(" TAI'SHAR MALKIER!"), 1);
|
||||
break;
|
||||
case 43:
|
||||
write_quote(PSTR("I would not mind you\n"
|
||||
" in my head, if you \n"
|
||||
"were not so clearly \n"
|
||||
" mad."),
|
||||
4);
|
||||
break;
|
||||
case 44:
|
||||
write_quote(PSTR(" ILYENA, MY LOVE, \n"
|
||||
" FORGIVE ME!"),
|
||||
2);
|
||||
break;
|
||||
case 45:
|
||||
write_quote(PSTR(" Oh, Light. That's \n"
|
||||
"impossible! We can't\n"
|
||||
" use it! Cast it \n"
|
||||
"away! That is death \n"
|
||||
" we hold, death and \n"
|
||||
"betrayal. It is HIM."),
|
||||
6);
|
||||
break;
|
||||
case 46:
|
||||
write_quote(PSTR("Nothing ever goes as\n"
|
||||
" you expect. Expect \n"
|
||||
" nothing, and you \n"
|
||||
" will not be \n"
|
||||
" surprised. Expect \n"
|
||||
" nothing. Hope for \n"
|
||||
" nothing. Nothing."),
|
||||
7);
|
||||
break;
|
||||
case 47:
|
||||
write_quote(PSTR(" Distant Weeping"), 1);
|
||||
break;
|
||||
case 48:
|
||||
write_quote(PSTR("Are you real? Am I?"), 1);
|
||||
break;
|
||||
case 49:
|
||||
write_quote(PSTR(" I'm just an old \n"
|
||||
"gleeman, who could I\n"
|
||||
" possibly be \n"
|
||||
" dangerous to?"),
|
||||
4);
|
||||
break;
|
||||
case 50:
|
||||
write_quote(PSTR(" Mat bloody Cauthon \n"
|
||||
" is no bloody hero!"),
|
||||
2);
|
||||
break;
|
||||
case 51:
|
||||
write_quote(PSTR("You are a coward and\n"
|
||||
" a tyrant. I'd name \n"
|
||||
" you Darkfriend as \n"
|
||||
"well, but I suspect \n"
|
||||
" that the Dark One \n"
|
||||
" would perhaps be \n"
|
||||
" embarrassed to \n"
|
||||
"associate with you."),
|
||||
8);
|
||||
break;
|
||||
case 52:
|
||||
write_quote(PSTR(" I win again, Lews \n"
|
||||
" Therin."),
|
||||
2);
|
||||
break;
|
||||
case 53:
|
||||
write_quote(PSTR("May you always find \n"
|
||||
" water and shade."),
|
||||
2);
|
||||
break;
|
||||
case 54:
|
||||
write_quote(PSTR(" I will never serve \n"
|
||||
"you, Father of Lies.\n"
|
||||
"In a thousand lives,\n"
|
||||
"I never have. I know\n"
|
||||
" that. I'm sure of \n"
|
||||
"it. Come. It is time\n"
|
||||
" to die."),
|
||||
7);
|
||||
break;
|
||||
case 55:
|
||||
write_quote(PSTR(" There may be more \n"
|
||||
"than one way to skin\n"
|
||||
" a cat, but the cat \n"
|
||||
"isn't going to like \n"
|
||||
" any of them."),
|
||||
5);
|
||||
break;
|
||||
case 56:
|
||||
write_quote(PSTR("Please see that they\n"
|
||||
" know, although the \n"
|
||||
"word Black may brand\n"
|
||||
"my name forever, my \n"
|
||||
"soul is Brown. Tell \n"
|
||||
" them..."),
|
||||
6);
|
||||
break;
|
||||
case 57:
|
||||
write_quote(PSTR(" 'Your soul is of a \n"
|
||||
"pure white, Verin,' \n"
|
||||
"Egwene said softly. \n"
|
||||
" 'Like the Light \n"
|
||||
" itself.'"),
|
||||
5);
|
||||
break;
|
||||
case 58:
|
||||
write_quote(PSTR(" Asha'man, Kill!"), 1);
|
||||
break;
|
||||
case 59:
|
||||
write_quote(PSTR(" Let the lord of \n"
|
||||
" chaos rule."),
|
||||
2);
|
||||
break;
|
||||
case 60:
|
||||
write_quote(PSTR(" There's always \n"
|
||||
" another secret."),
|
||||
2);
|
||||
break;
|
||||
case 61:
|
||||
write_quote(PSTR(" You see the great \n"
|
||||
"thing about madness \n"
|
||||
"is that it's all in \n"
|
||||
" your head."),
|
||||
4);
|
||||
break;
|
||||
case 62:
|
||||
write_quote(PSTR(" In one Age, called \n"
|
||||
" the Third Age by \n"
|
||||
"some, an Age yet to \n"
|
||||
" come, an Age long \n"
|
||||
" past, a wind rose \n"
|
||||
" above..."),
|
||||
6);
|
||||
break;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
// On the left, control the volume. On the right, scroll the page
|
||||
if (index == 0) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_WH_U);
|
||||
} else {
|
||||
tap_code(KC_WH_D);
|
||||
}
|
||||
} else {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -1,4 +0,0 @@
|
||||
KEY_LOCK_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
OLED_ENABLE = yes
|
||||
ENCODER_ENABLE = yes
|
||||
@@ -1,7 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#undef MATRIX_COL_PINS
|
||||
#define MATRIX_COL_PINS { B3, B7, D0, D1, D2, D3, C6, C7, B5, B6, F7, F6 }
|
||||
|
||||
#undef MATRIX_ROW_PINS
|
||||
#define MATRIX_ROW_PINS { F0, F1, F4, F5 }
|
||||
@@ -1,123 +0,0 @@
|
||||
/* Copyright 2019 George Koenig
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "ridingqwerty.h"
|
||||
|
||||
/* MinOrca
|
||||
┏━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┯━━━━━━━━┓
|
||||
┃ ⎋ │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ ❦ ⌫ ┃
|
||||
┠────────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴─┬──────┴────────┨
|
||||
┃ ¶ ⇥ │ A │ S │ D │ F │ G │ H │ J │ K │ L │ 🔢 ↵ ┃
|
||||
┠──────────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬────┴───┬───────────┨
|
||||
┃ " ⇧ │ Z │ X │ C │ V │ B │ N │ M │ , │ 𝔽 . │ ⇧ / ┃
|
||||
┠──────────┬───┴──────┬─┴────────┼────────┴────────┴──┬─────┴────────┴─────┬──┴───────┬┴───────┬┴───────────┨
|
||||
┃ { ⎈ │ [ ⌘ │ ( ⌥ │ 🔢 ␣ │ ★ ␣ │ ) ⌥ │ ] ⌘ │ } ⎈ ┃
|
||||
┗━━━━━━━━━━┷━━━━━━━━━━┷━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━━━━━━━━━━━┷━━━━━━━━━━┷━━━━━━━━┷━━━━━━━━━━━━┛
|
||||
*/
|
||||
|
||||
#define LAYOUT_minorca( \
|
||||
KA00, KA01, KA02, KA03, KA04, KA05, KA06, KA07, KA08, KA09, KA10, KA11, \
|
||||
KB00, KB01, KB02, KB03, KB04, KB05, KB06, KB07, KB08, KB09, KB11, \
|
||||
KC00, KC02, KC03, KC04, KC05, KC06, KC07, KC08, KC09, KC10, KC11, \
|
||||
KD00, KD02, KD03, KD04, KD07, KD09, KD10, KD11 \
|
||||
) { \
|
||||
{ KA00, KA01, KA02, KA03, KA04, KA05, KA06, KA07, KA08, KA09, KA10, KA11 }, \
|
||||
{ KB00, KB01, KB02, KB03, KB04, KB05, KB06, KB07, KB08, KB09, KC_NO, KB11 }, \
|
||||
{ KC00, KC_NO, KC02, KC03, KC04, KC05, KC06, KC07, KC08, KC09, KC10, KC11 }, \
|
||||
{ KD00, KC_NO, KD02, KD03, KD04, KC_NO, KC_NO, KD07, KC_NO, KD09, KD10, KD11 } \
|
||||
}
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = {
|
||||
{QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, SC(BSPC) },
|
||||
{ED(TAB), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, XXXXXXX, NM(SCLN) },
|
||||
{LS(QUOT), XXXXXXX, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, FK(DOT), RS(SLSH) },
|
||||
{LC(ESC), XXXXXXX, LG(LBRC), LA(RBRC), NM(BSPC), XXXXXXX, XXXXXXX, SM(SPC), XXXXXXX, RA(MINS), RG(EQL), RC(ENT) }
|
||||
/*
|
||||
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
|
||||
//├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
|
||||
//├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
|
||||
//└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
|
||||
*/
|
||||
|
||||
|
||||
},
|
||||
#ifdef UNICODE_H
|
||||
[_RUNE] = {
|
||||
{KC_ESC, UM(INGWZ), UM(WUNJO), UM(EHWAZ), UM(RAIDO), UM(TIWAZ), UM(IWAZ), UM(UR), UM(ISAZ), UM(ETHEL), UM(PERTH), SC(BSPC) },
|
||||
{ED(TAB), UM(ANSUZ), UM(SOWIL), UM(DAGAZ), UM(FE), UM(GEBO), UM(HAGLZ), UM(JERAN), UM(KAUNA), UM(LAUKZ), XXXXXXX, NM(SCLN) },
|
||||
{MT_QUOT, XXXXXXX, UM(ALGIZ), UM(THURS), UM(KAUNA), UM(WUNJO), UM(BEORC), UM(NAUDZ), UM(MANNZ), KC_COMM, FK(DOT), RS(SLSH) },
|
||||
{LC(ESC), XXXXXXX, LG(LBRC), LA(RBRC), NM(BSPC), XXXXXXX, XXXXXXX, SM(SPC), XXXXXXX, RA(MINS), RG(EQL), RC(ENT) }
|
||||
},
|
||||
#endif
|
||||
[_EDITOR] = {
|
||||
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
{KC_GRV, _______, _______, KC_END, _______, KC_F5, _______, _______, KC_INS, _______, KC_PGUP, KC_DEL },
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
|
||||
{_______, KC_HOME, _______, KC_DEL, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, KC_SCLN },
|
||||
//├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
|
||||
{_______, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, KC_PGDN, _______, KC_SCLN, KC_QUOT, KC_BSLS },
|
||||
//├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
|
||||
{_______, XXXXXXX, _______, _______, KC_EQL, XXXXXXX, XXXXXXX, KC_MINS, XXXXXXX, KC_COLN, KC_DQUO, KC_PIPE }
|
||||
//└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
|
||||
},
|
||||
[_NUMBER] = {
|
||||
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
{KC_0, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC },
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
|
||||
{_______, KC_4, KC_5, KC_6, KC_PAST, _______, KC_PPLS, KC_4, KC_5, KC_6, XXXXXXX, _______ },
|
||||
//├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
|
||||
{_______, KC_7, KC_8, KC_9, KC_SLSH, _______, _______, KC_MINS, KC_1, KC_2, KC_3, _______ },
|
||||
//├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
|
||||
{_______, XXXXXXX, KC_0, _______, _______, XXXXXXX, XXXXXXX, KC_0, XXXXXXX, KC_DOT, _______, _______ }
|
||||
//└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
|
||||
},
|
||||
[_SYMBOL] = {
|
||||
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
{KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL },
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, XXXXXXX, _______ },
|
||||
//├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
|
||||
{_______, XXXXXXX, KC_VOLD, KC_VOLU, KC_MUTE, _______, _______, _______, _______, KC_SCLN, KC_QUOT, KC_BSLS },
|
||||
//├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
|
||||
{_______, XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, KC_COLN, KC_DQUO, KC_PIPE }
|
||||
//└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
|
||||
},
|
||||
[_SECRET] = {
|
||||
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
{QK_BOOT, _______, _______, _______, SECRET0, SECRET1, _______, _______, _______, _______, VERSION, _______ },
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
|
||||
{_______, SECRET4, SECRET8, DB_TOGG, _______, _______, _______, _______, _______, SECRET7, XXXXXXX, MAKE },
|
||||
//├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
|
||||
{_______, XXXXXXX, SECRET6, _______, SECRET2, SECRET5, _______, _______, SECRET3, _______, _______, _______ },
|
||||
//├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
|
||||
{_______, XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, _______ }
|
||||
//└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
|
||||
},
|
||||
[_F_KEYS] = {
|
||||
//┌────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┬────────┐
|
||||
{KC_F12, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11 },
|
||||
//├────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┴────────┤
|
||||
{_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, _______ },
|
||||
//├────────┴────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┼────────┬────────┤
|
||||
{_______, XXXXXXX, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ },
|
||||
//├─────────────────┼────────┼────────┼────────┴────────┼────────┴────────┼────────┴────────┼────────┼────────┤
|
||||
{_______, XXXXXXX, _______, _______, _______, XXXXXXX, XXXXXXX, _______, XXXXXXX, _______, _______, _______ }
|
||||
//└─────────────────┴────────┴────────┴─────────────────┴─────────────────┴─────────────────┴────────┴────────┘
|
||||
},
|
||||
};
|
||||
@@ -1 +0,0 @@
|
||||
# Handwire of Minorca using teensy 2.0
|
||||
@@ -1,6 +0,0 @@
|
||||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
UNICODEMAP_ENABLE = yes # Unicode Map
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define TAPPING_TERM 200
|
||||
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
This is the keymap for the reclined keyboard
|
||||
|
||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
||||
Copyright 2015 Jack Humbert
|
||||
Copyright 2017 Art Ortenburger
|
||||
Copyright 2018 Daniel Perrett
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "pdl.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT_wrapper(
|
||||
KC_TAB, _________________QWERTY_L1_________________, _________________QWERTY_R1_________________, KC_BSPC,
|
||||
MY_SESC, _________________QWERTY_L2_________________, _________________QWERTY_R2_________________, MY_SQUO,
|
||||
MY_CBSL, _________________QWERTY_L3_________________, _________________QWERTY_R3_________________, MY_SQUO,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, NUMBRS, NAVIGN, KC_SPC, MY_SSPC, NUMBRS, NAVIGN, MY_AMNU, FUNCTN, MY_CENT
|
||||
),
|
||||
[_PROXIM] = LAYOUT_wrapper(
|
||||
MY_FESC, _________________PROXIM_L1_________________, _________________PROXIM_R1_________________, KC_BSPC,
|
||||
KC_TAB, _________________PROXIM_L2_________________, _________________PROXIM_R2_________________, MY_ASCL,
|
||||
MY_SBSL, _________________PROXIM_L3_________________, _________________PROXIM_R3_________________, MY_SENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, NUMBRS, NAVIGN, KC_SPC, MY_SSPC, NUMBRS, NAVIGN, MY_AMNU, FUNCTN, MY_CENT
|
||||
),
|
||||
[_NAVIGN] = LAYOUT_wrapper(
|
||||
_______, _________________NAVIGN_L1_________________, _______, _______, _______, _______, _______, _______,
|
||||
_______, _________________NAVIGN_L2_________________, _______, _______, _______, _______, _______, _______,
|
||||
_______, _________________NAVIGN_L3_________________, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_PUNCTN] = LAYOUT_wrapper(
|
||||
_______, _______, _______, _______, _______, _______, _________________PUNCTN_R1_________________, _______,
|
||||
_______, _______, _______, _______, _______, _______, _________________PUNCTN_R2_________________, _______,
|
||||
_______, _______, _______, _______, _______, _______, _________________PUNCTN_R3_________________, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_NUMBRS] = LAYOUT_wrapper(
|
||||
_______, _________________NUMBRS_L1_________________, _______, _______, _______, _______, _______, _______,
|
||||
_______, _________________NUMBRS_L2_________________, _______, _______, _______, _______, _______, _______,
|
||||
_______, _________________NUMBRS_L3_________________, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_CODING] = LAYOUT_wrapper(
|
||||
_______, _______, _______, _______, _______, _______, _________________CODING_R1_________________, _______,
|
||||
_______, _______, _______, _______, _______, _______, _________________CODING_R2_________________, _______,
|
||||
_______, _______, _______, _______, _______, _______, _________________CODING_R3_________________, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_FUNCTN] = LAYOUT_wrapper(
|
||||
_______, _________________FUNCTN_L1_________________, _________________FUNCTN_R1_________________, MY_CAD,
|
||||
_______, _________________FUNCTN_L2_________________, _________________FUNCTN_R2_________________, KC_PSCR,
|
||||
_______, _________________FUNCTN_L3_________________, _________________FUNCTN_R3_________________, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Define options
|
||||
#define TAPPING_TERM 135
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
@@ -1,196 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Tap dance declarations
|
||||
enum {
|
||||
TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI,
|
||||
TD_ESC_LCTL_LALT_WINDOWS_EMOJI
|
||||
};
|
||||
|
||||
// Custom tapping term for multi function keys
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case TD(TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI) :
|
||||
case TD(TD_ESC_LCTL_LALT_WINDOWS_EMOJI) :
|
||||
case LGUI_T(KC_SPC) :
|
||||
case LT(1, KC_SPC) :
|
||||
case LT(1, KC_TAB) :
|
||||
case LT(2, KC_ENT) :
|
||||
return 200;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
};
|
||||
|
||||
// Begin quad TD
|
||||
typedef enum {
|
||||
TD_NONE,
|
||||
TD_UNKNOWN,
|
||||
TD_SINGLE_HOLD,
|
||||
TD_DOUBLE_HOLD,
|
||||
TD_TRIPLE_HOLD,
|
||||
TD_SINGLE_TAP,
|
||||
TD_DOUBLE_TAP,
|
||||
TD_TRIPLE_TAP
|
||||
} td_state_t;
|
||||
|
||||
typedef struct {
|
||||
bool is_press_action;
|
||||
td_state_t state;
|
||||
} td_tap_t;
|
||||
|
||||
// Create an instance of 'td_tap_t' for the 'x' tap dance.
|
||||
static td_tap_t xtap_state = {
|
||||
.is_press_action = true,
|
||||
.state = TD_NONE
|
||||
};
|
||||
|
||||
td_state_t cur_dance(tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
return TD_SINGLE_TAP;
|
||||
} else {
|
||||
return TD_SINGLE_HOLD;
|
||||
}
|
||||
} else if (state->count == 2) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
return TD_DOUBLE_TAP;
|
||||
} else {
|
||||
return TD_DOUBLE_HOLD;
|
||||
}
|
||||
} else if (state->count == 3) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
return TD_TRIPLE_TAP;
|
||||
} else {
|
||||
return TD_TRIPLE_HOLD;
|
||||
}
|
||||
}
|
||||
|
||||
return TD_UNKNOWN;
|
||||
}
|
||||
|
||||
void td_esc_lalt_lctl_spotlight_emoji_finished(tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: tap_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: register_code(KC_LALT); break;
|
||||
case TD_DOUBLE_HOLD: register_code(KC_LCTL); break;
|
||||
case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break;
|
||||
case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void td_esc_lalt_lctl_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: unregister_code(KC_LALT); break;
|
||||
case TD_DOUBLE_HOLD: unregister_code(KC_LCTL); break;
|
||||
default: break;
|
||||
}
|
||||
xtap_state.state = TD_NONE;
|
||||
}
|
||||
|
||||
void td_esc_lctl_lalt_windows_emoji_finished(tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: tap_code16(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: register_code(KC_LCTL); break;
|
||||
case TD_DOUBLE_HOLD: register_code(KC_LALT); break;
|
||||
case TD_DOUBLE_TAP: tap_code(KC_LGUI); break;
|
||||
case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void td_esc_lctl_lalt_windows_emoji_reset(tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;
|
||||
case TD_DOUBLE_HOLD: unregister_code(KC_LALT); break;
|
||||
default: break;
|
||||
}
|
||||
xtap_state.state = TD_NONE;
|
||||
}
|
||||
|
||||
// Tap Dance definitions
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_esc_lalt_lctl_spotlight_emoji_finished, td_esc_lalt_lctl_spotlight_emoji_reset),
|
||||
[TD_ESC_LCTL_LALT_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_esc_lctl_lalt_windows_emoji_finished, td_esc_lctl_lalt_windows_emoji_reset)
|
||||
};
|
||||
// For the x tap dance. Put it here so it can be used in any keymap
|
||||
void x_finished(tap_dance_state_t *state, void *user_data);
|
||||
void x_reset(tap_dance_state_t *state, void *user_data);
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_split_3x5_2(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_ESC_LALT_LCTL_SPOTLIGHT_EMOJI), LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT)
|
||||
),
|
||||
[1] = LAYOUT_split_3x5_2(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[2] = LAYOUT_split_3x5_2(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[3] = LAYOUT_split_3x5_2(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0), TO(5), TO(4),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[4] = LAYOUT_split_3x5_2(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_ESC_LCTL_LALT_WINDOWS_EMOJI), KC_SPC, LT(6, KC_TAB), LT(7, KC_ENT)
|
||||
),
|
||||
[5] = LAYOUT_split_3x5_2(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, KC_SLSH,
|
||||
KC_LCTL, KC_SPC, LT(6, KC_TAB), LT(7, KC_ENT)
|
||||
),
|
||||
[6] = LAYOUT_split_3x5_2(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[7] = LAYOUT_split_3x5_2(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(8), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[8] = LAYOUT_split_3x5_2(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4), TO(5), TO(0),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
};
|
||||
@@ -1 +0,0 @@
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Define options
|
||||
#define TAPPING_TERM 135
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
@@ -1,281 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include <stdio.h>
|
||||
char wpm_str[10];
|
||||
|
||||
// Tap Dance declarations
|
||||
enum {
|
||||
TD_ESC_SPOTLIGHT_EMOJI,
|
||||
TD_ESC_WINDOWS_EMOJI
|
||||
};
|
||||
|
||||
void td_esc_spotlight_emoji (tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
tap_code(KC_ESC);
|
||||
} else if (state->count == 2) {
|
||||
tap_code16(G(KC_SPC));
|
||||
} else if (state->count == 3) {
|
||||
tap_code16(C(G(KC_SPC)));
|
||||
}
|
||||
}
|
||||
|
||||
void td_esc_windows_emoji (tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
tap_code(KC_ESC);
|
||||
} else if (state->count == 2) {
|
||||
tap_code(KC_LGUI);
|
||||
} else if (state->count == 3) {
|
||||
tap_code16(G(KC_DOT));
|
||||
}
|
||||
};
|
||||
|
||||
// Tap Dance definitions
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_spotlight_emoji),
|
||||
[TD_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_windows_emoji)
|
||||
};
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case TD(TD_ESC_SPOTLIGHT_EMOJI) :
|
||||
case TD(TD_ESC_WINDOWS_EMOJI) :
|
||||
case LGUI_T(KC_SPC) :
|
||||
case LT(1, KC_TAB) :
|
||||
case LT(2, KC_ENT) :
|
||||
return 200;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
};
|
||||
|
||||
// Layer Names
|
||||
enum layer_names {
|
||||
_MAC_DEFAULT,
|
||||
_MAC_CODE,
|
||||
_MAC_NUM,
|
||||
_MAC_FUNC,
|
||||
_WIN_DEFAULT,
|
||||
_WIN_CODE,
|
||||
_WIN_NUM,
|
||||
_WIN_FUNC
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_split_3x5_3(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[1] = LAYOUT_split_3x5_3(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[2] = LAYOUT_split_3x5_3(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[3] = LAYOUT_split_3x5_3(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[4] = LAYOUT_split_3x5_3(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[5] = LAYOUT_split_3x5_3(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE,KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[6] = LAYOUT_split_3x5_3(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[7] = LAYOUT_split_3x5_3(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI)
|
||||
)
|
||||
};
|
||||
|
||||
// OLED
|
||||
#ifdef OLED_ENABLE
|
||||
// WPM responsiveness
|
||||
#define IDLE_FRAMES 5
|
||||
#define IDLE_SPEED 20 // Speed at which animation goes into idle
|
||||
#define TAP_FRAMES 2
|
||||
#define TAP_SPEED 40 // WPM to trigger Bongo
|
||||
#define ANIM_FRAME_DURATION 200 // Frame MS
|
||||
#define ANIM_SIZE 636 // Number of bytes in array, max 1024
|
||||
|
||||
uint32_t anim_timer = 0;
|
||||
uint32_t anim_sleep = 0;
|
||||
uint8_t current_idle_frame = 0;
|
||||
uint8_t current_tap_frame = 0;
|
||||
|
||||
static void render_animation(void) {
|
||||
static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||
static const char PROGMEM prep[][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||
static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
};
|
||||
|
||||
void animation_phase(void) {
|
||||
if (get_current_wpm() <= IDLE_SPEED) {
|
||||
current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
|
||||
oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
|
||||
}
|
||||
|
||||
if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
|
||||
oled_write_raw_P(prep[0], ANIM_SIZE);
|
||||
}
|
||||
|
||||
if (get_current_wpm() >= TAP_SPEED) {
|
||||
current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
|
||||
oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
|
||||
}
|
||||
}
|
||||
if (get_current_wpm() != 000) {
|
||||
oled_on(); // Enables OLED on any alpha keypress
|
||||
|
||||
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
|
||||
anim_sleep = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
|
||||
oled_off();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Draw to OLED
|
||||
bool oled_task_user(void) {
|
||||
// Render Bongo Cat
|
||||
render_animation();
|
||||
|
||||
// WPM text
|
||||
oled_set_cursor(0, 0);
|
||||
sprintf(wpm_str, "%03d", get_current_wpm()); // %03d defines digits to display
|
||||
oled_write(wpm_str, false);
|
||||
|
||||
// Layer text
|
||||
oled_set_cursor(0, 1);
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _MAC_DEFAULT :
|
||||
oled_write_P(PSTR("MAC"), false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(PSTR("MAIN"), false);
|
||||
break;
|
||||
case _MAC_CODE :
|
||||
oled_write_P(PSTR("MAC"), false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(PSTR("CODE"), false);
|
||||
break;
|
||||
case _MAC_NUM :
|
||||
oled_write_P(PSTR("MAC"), false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(PSTR("NUM"), false);
|
||||
break;
|
||||
case _MAC_FUNC :
|
||||
oled_write_P(PSTR("MAC"), false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(PSTR("FUNC"), false);
|
||||
break;
|
||||
case _WIN_DEFAULT :
|
||||
oled_write_P(PSTR("WIN"), false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(PSTR("MAIN"), false);
|
||||
break;
|
||||
case _WIN_CODE :
|
||||
oled_write_P(PSTR("WIN"), false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(PSTR("CODE"), false);
|
||||
break;
|
||||
case _WIN_NUM :
|
||||
oled_write_P(PSTR("WIN"), false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(PSTR("NUM"), false);
|
||||
break;
|
||||
case _WIN_FUNC :
|
||||
oled_write_P(PSTR("WIN"), false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(PSTR("FUNC"), false);
|
||||
break;
|
||||
}
|
||||
|
||||
// Caps lock text
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
oled_set_cursor(0, 3);
|
||||
oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(""), false);
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
OLED_ENABLE = yes
|
||||
WPM_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Define options
|
||||
#define TAPPING_TERM 135
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
@@ -1,114 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Tap Dance declarations
|
||||
enum {
|
||||
TD_ESC_SPOTLIGHT_EMOJI,
|
||||
TD_ESC_WINDOWS_EMOJI
|
||||
};
|
||||
|
||||
void td_esc_spotlight_emoji (tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
tap_code(KC_ESC);
|
||||
} else if (state->count == 2) {
|
||||
tap_code16(G(KC_SPC));
|
||||
} else if (state->count == 3) {
|
||||
tap_code16(C(G(KC_SPC)));
|
||||
}
|
||||
}
|
||||
|
||||
void td_esc_windows_emoji (tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
tap_code(KC_ESC);
|
||||
} else if (state->count == 2) {
|
||||
tap_code(KC_LGUI);
|
||||
} else if (state->count == 3) {
|
||||
tap_code16(G(KC_DOT));
|
||||
}
|
||||
};
|
||||
|
||||
// Tap Dance definitions
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_spotlight_emoji),
|
||||
[TD_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_windows_emoji)
|
||||
};
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case TD(TD_ESC_SPOTLIGHT_EMOJI) :
|
||||
case TD(TD_ESC_WINDOWS_EMOJI) :
|
||||
case LGUI_T(KC_SPC) :
|
||||
case LT(1, KC_TAB) :
|
||||
case LT(2, KC_ENT) :
|
||||
return 200;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ortho_3x10_7(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[1] = LAYOUT_ortho_3x10_7(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[2] = LAYOUT_ortho_3x10_7(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[3] = LAYOUT_ortho_3x10_7(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[4] = LAYOUT_ortho_3x10_7(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[5] = LAYOUT_ortho_3x10_7(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[6] = LAYOUT_ortho_3x10_7(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[7] = LAYOUT_ortho_3x10_7(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI)
|
||||
)
|
||||
};
|
||||
@@ -1 +0,0 @@
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Define options
|
||||
#define TAPPING_TERM 135
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
@@ -1,174 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Tap dance declarations
|
||||
enum {
|
||||
TD_LCTL_ESC_SPOTLIGHT_EMOJI,
|
||||
TD_LALT_ESC_WINDOWS_EMOJI
|
||||
};
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) :
|
||||
case TD(TD_LALT_ESC_WINDOWS_EMOJI) :
|
||||
case LGUI_T(KC_SPC) :
|
||||
case LT(1, KC_TAB) :
|
||||
case LT(2, KC_ENT) :
|
||||
return 200;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
};
|
||||
|
||||
// Begin quad TD
|
||||
typedef enum {
|
||||
TD_NONE,
|
||||
TD_UNKNOWN,
|
||||
TD_SINGLE_HOLD,
|
||||
TD_SINGLE_TAP,
|
||||
TD_DOUBLE_TAP,
|
||||
TD_TRIPLE_TAP
|
||||
} td_state_t;
|
||||
|
||||
typedef struct {
|
||||
bool is_press_action;
|
||||
td_state_t state;
|
||||
} td_tap_t;
|
||||
|
||||
// Create an instance of 'td_tap_t' for the 'x' tap dance.
|
||||
static td_tap_t xtap_state = {
|
||||
.is_press_action = true,
|
||||
.state = TD_NONE
|
||||
};
|
||||
|
||||
td_state_t cur_dance(tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
return TD_SINGLE_TAP;
|
||||
} else {
|
||||
return TD_SINGLE_HOLD;
|
||||
}
|
||||
} else if (state->count == 2) {
|
||||
return TD_DOUBLE_TAP;
|
||||
} else if (state->count == 3) {
|
||||
return TD_TRIPLE_TAP;
|
||||
}
|
||||
|
||||
return TD_UNKNOWN;
|
||||
}
|
||||
|
||||
void td_lctl_esc_spotlight_emoji_finished(tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: register_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: register_code(KC_LCTL); break;
|
||||
case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break;
|
||||
case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void td_lctl_esc_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;
|
||||
default: break;
|
||||
}
|
||||
xtap_state.state = TD_NONE;
|
||||
}
|
||||
|
||||
void td_lalt_esc_windowr_emoji_finished(tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: register_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: register_code(KC_LALT); break;
|
||||
case TD_DOUBLE_TAP: tap_code(KC_LGUI); break;
|
||||
case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void td_lalt_esc_windowr_emoji_reset(tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: unregister_code(KC_LALT); break;
|
||||
default: break;
|
||||
}
|
||||
xtap_state.state = TD_NONE;
|
||||
}
|
||||
|
||||
// Tap Dance definitions
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_LCTL_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lctl_esc_spotlight_emoji_finished, td_lctl_esc_spotlight_emoji_reset),
|
||||
[TD_LALT_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lalt_esc_windowr_emoji_finished, td_lalt_esc_windowr_emoji_reset),
|
||||
};
|
||||
// For the x tap dance. Put it here so it can be used in any keymap
|
||||
void x_finished(tap_dance_state_t *state, void *user_data);
|
||||
void x_reset(tap_dance_state_t *state, void *user_data);
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ortho_3x10_5(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT)
|
||||
),
|
||||
[1] = LAYOUT_ortho_3x10_5(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS
|
||||
),
|
||||
[2] = LAYOUT_ortho_3x10_5(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS
|
||||
),
|
||||
[3] = LAYOUT_ortho_3x10_5(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS
|
||||
),
|
||||
[4] = LAYOUT_ortho_3x10_5(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT)
|
||||
),
|
||||
[5] = LAYOUT_ortho_3x10_5(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT)
|
||||
),
|
||||
[6] = LAYOUT_ortho_3x10_5(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT)
|
||||
),
|
||||
[7] = LAYOUT_ortho_3x10_5(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT)
|
||||
)
|
||||
};
|
||||
@@ -1 +0,0 @@
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Define options
|
||||
#define TAPPING_TERM 135
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
@@ -1,511 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include <stdio.h>
|
||||
char wpm_str[10];
|
||||
|
||||
// Tap Dance declarations
|
||||
enum {
|
||||
TD_ESC_SPOTLIGHT_EMOJI,
|
||||
TD_ESC_WINDOWS_EMOJI
|
||||
};
|
||||
|
||||
void td_esc_spotlight_emoji (tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
tap_code(KC_ESC);
|
||||
} else if (state->count == 2) {
|
||||
tap_code16(G(KC_SPC));
|
||||
} else if (state->count == 3) {
|
||||
tap_code16(C(G(KC_SPC)));
|
||||
}
|
||||
}
|
||||
|
||||
void td_esc_windows_emoji (tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
tap_code(KC_ESC);
|
||||
} else if (state->count == 2) {
|
||||
tap_code(KC_LGUI);
|
||||
} else if (state->count == 3) {
|
||||
tap_code16(G(KC_DOT));
|
||||
}
|
||||
};
|
||||
|
||||
// Tap Dance definitions
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_spotlight_emoji),
|
||||
[TD_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_windows_emoji)
|
||||
};
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case TD(TD_ESC_SPOTLIGHT_EMOJI) :
|
||||
case TD(TD_ESC_WINDOWS_EMOJI) :
|
||||
case LGUI_T(KC_SPC) :
|
||||
case LT(1, KC_TAB) :
|
||||
case LT(2, KC_ENT) :
|
||||
return 200;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
};
|
||||
|
||||
// Layer Names
|
||||
enum layer_names {
|
||||
_MAC_DEFAULT,
|
||||
_MAC_CODE,
|
||||
_MAC_NUM,
|
||||
_MAC_FUNC,
|
||||
_WIN_DEFAULT,
|
||||
_WIN_CODE,
|
||||
_WIN_NUM,
|
||||
_WIN_FUNC
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ortho_4_3x10_4(
|
||||
KC_LCTL, KC_2, KC_3, TD(TD_ESC_SPOTLIGHT_EMOJI),
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_ENT, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT)
|
||||
),
|
||||
[1] = LAYOUT_ortho_4_3x10_4(
|
||||
KC_LCTL, KC_2, KC_3, TD(TD_ESC_SPOTLIGHT_EMOJI),
|
||||
KC_TAB, KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_ENT, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS
|
||||
),
|
||||
[2] = LAYOUT_ortho_4_3x10_4(
|
||||
KC_LCTL, KC_2, KC_3, TD(TD_ESC_SPOTLIGHT_EMOJI),
|
||||
KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_ENT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS
|
||||
),
|
||||
[3] = LAYOUT_ortho_4_3x10_4(
|
||||
KC_LCTL, KC_2, KC_3, TD(TD_ESC_SPOTLIGHT_EMOJI),
|
||||
KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4),
|
||||
KC_ENT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS
|
||||
),
|
||||
[4] = LAYOUT_ortho_4_3x10_4(
|
||||
KC_1, KC_2, KC_3, TD(TD_ESC_WINDOWS_EMOJI),
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_ENT, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT)
|
||||
),
|
||||
[5] = LAYOUT_ortho_4_3x10_4(
|
||||
KC_1, KC_2, KC_3, TD(TD_ESC_WINDOWS_EMOJI),
|
||||
KC_TAB, KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_ENT, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[6] = LAYOUT_ortho_4_3x10_4(
|
||||
KC_1, KC_2, KC_3, TD(TD_ESC_WINDOWS_EMOJI),
|
||||
KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_ENT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS
|
||||
),
|
||||
[7] = LAYOUT_ortho_4_3x10_4(
|
||||
KC_1, KC_2, KC_3, TD(TD_ESC_WINDOWS_EMOJI),
|
||||
KC_TAB, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0),
|
||||
KC_ENT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
|
||||
// OLED
|
||||
#ifdef OLED_ENABLE
|
||||
// WPM responsiveness
|
||||
#define IDLE_FRAMES 5 // How many idle frames in animation
|
||||
#define IDLE_SPEED 20 // Speed at which animation idles
|
||||
#define TAP_FRAMES 2 // How many tapping frames
|
||||
#define TAP_SPEED 40 // WPM to trigger Bongo
|
||||
#define ANIMATION_FRAME_DURATION 200 // MS duration of each frame
|
||||
#define ANIMATION_SIZE 256 // Number of bytes per animation frame
|
||||
|
||||
uint32_t anim_timer = 0;
|
||||
uint32_t anim_sleep = 0;
|
||||
uint8_t current_idle_frame = 0;
|
||||
uint8_t current_tap_frame = 0;
|
||||
|
||||
static void render_animation(void) {
|
||||
static const char PROGMEM idle[IDLE_FRAMES][ANIMATION_SIZE] = {
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18,
|
||||
0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02,
|
||||
0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
|
||||
0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04,
|
||||
0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21,
|
||||
0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08,
|
||||
0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04,
|
||||
0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10,
|
||||
0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08,
|
||||
0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
|
||||
0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04,
|
||||
0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21,
|
||||
0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08,
|
||||
0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04,
|
||||
0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10,
|
||||
0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08,
|
||||
0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08,
|
||||
0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22,
|
||||
0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08,
|
||||
0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04,
|
||||
0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08,
|
||||
0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04,
|
||||
0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08,
|
||||
0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22,
|
||||
0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08,
|
||||
0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04,
|
||||
0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18,
|
||||
0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04,
|
||||
0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
|
||||
0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04,
|
||||
0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21,
|
||||
0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08,
|
||||
0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04,
|
||||
0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}
|
||||
};
|
||||
static const char PROGMEM prep[][ANIMATION_SIZE] = {
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10,
|
||||
0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04,
|
||||
0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
|
||||
0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64,
|
||||
0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03,
|
||||
0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21,
|
||||
0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02,
|
||||
0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02,
|
||||
0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}
|
||||
};
|
||||
static const char PROGMEM tap[TAP_FRAMES][ANIMATION_SIZE] = {
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10,
|
||||
0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04,
|
||||
0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
|
||||
0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64,
|
||||
0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21,
|
||||
0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02,
|
||||
0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04,
|
||||
0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c,
|
||||
0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10,
|
||||
0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04,
|
||||
0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00,
|
||||
0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04,
|
||||
0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03,
|
||||
0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21,
|
||||
0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08,
|
||||
0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02,
|
||||
0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61,
|
||||
0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00
|
||||
}
|
||||
};
|
||||
|
||||
void animation_phase(void) {
|
||||
// Set cursor to draw from the bottom up
|
||||
oled_set_cursor(128, 0);
|
||||
|
||||
if (get_current_wpm() <= IDLE_SPEED) {
|
||||
current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
|
||||
oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIMATION_SIZE);
|
||||
}
|
||||
|
||||
// Start prep image
|
||||
if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
|
||||
oled_write_raw_P(prep[0], ANIMATION_SIZE);
|
||||
}
|
||||
|
||||
// Start tap animation
|
||||
if (get_current_wpm() >= TAP_SPEED) {
|
||||
current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
|
||||
oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIMATION_SIZE);
|
||||
}
|
||||
}
|
||||
if (get_current_wpm() != 000) {
|
||||
oled_on(); // Enables OLED on any alpha keypress
|
||||
|
||||
if (timer_elapsed32(anim_timer) > ANIMATION_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
|
||||
anim_sleep = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
|
||||
oled_off();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_timer) > ANIMATION_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Draw to OLED
|
||||
bool oled_task_user(void) {
|
||||
// Caps lock text
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
oled_set_cursor(0,1);
|
||||
oled_write_P(led_state.caps_lock ? PSTR(" Caps Lock "): PSTR(" ScottoCMD "), false);
|
||||
|
||||
//WPM text
|
||||
oled_set_cursor(0, 9);
|
||||
oled_write(get_u8_str(get_current_wpm(), '0'), false);
|
||||
oled_write_P(PSTR(" WPM"), false);
|
||||
|
||||
static const char PROGMEM logos[][256] = {
|
||||
// Apple
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x70, 0x78, 0x7c, 0x3e, 0x1f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xc0, 0xf0, 0xfc, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfe,
|
||||
0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3e, 0x0e, 0x04, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xc0, 0x80, 0x80, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0f, 0x1f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x7f,
|
||||
0x7f, 0x7f, 0x7f, 0x7f, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x3f, 0x0f, 0x07, 0x01, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
},
|
||||
|
||||
// Windows
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xf0, 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
|
||||
0xf8, 0xf8, 0x00, 0x80, 0xe0, 0xc0, 0xc0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0x40,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xb8, 0x9f, 0x9f, 0x9f, 0x9f, 0x8f, 0x9f, 0x9f, 0x9f, 0x1f, 0x3f, 0x3f,
|
||||
0x07, 0xc0, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x07, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xe0, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x03, 0xe0,
|
||||
0xfc, 0xfc, 0xf9, 0xf9, 0xf9, 0xf3, 0xf3, 0xf3, 0xfb, 0xfb, 0xf9, 0x19, 0x01, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x02, 0x03, 0x03, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x03, 0x07, 0x01, 0x00, 0x1e, 0x1f,
|
||||
0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x3f, 0x1f, 0x1f, 0x0f, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
},
|
||||
|
||||
// Code
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x80, 0xc0, 0xe0, 0xf0, 0x78, 0x3c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xe0,
|
||||
0xf8, 0xfc, 0x3f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x3c, 0x78, 0xf0, 0xe0, 0xc0, 0x80,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x03, 0x07, 0x0f, 0x3e, 0x3c, 0x38, 0x00, 0x00, 0x00, 0xc0, 0xf0, 0xfc, 0x7e, 0x1f, 0x07,
|
||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x3c, 0x3e, 0x0f, 0x07, 0x03, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
|
||||
// Number
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f,
|
||||
0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1e, 0x1e, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x1e,
|
||||
0x1e, 0x1e, 0xbe, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x1e, 0x1e, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x78, 0x78, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x78, 0x78,
|
||||
0x78, 0xf8, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x78, 0x78, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00,
|
||||
0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
|
||||
},
|
||||
|
||||
// Function
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xf0,
|
||||
0xf8, 0xfc, 0xfe, 0xfe, 0xff, 0x9f, 0x0f, 0x07, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xc0, 0x8f, 0x3f,
|
||||
0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xf8, 0xfc, 0xfe, 0x7f, 0x3f, 0x0f,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x3e,
|
||||
0x1e, 0x0c, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x78, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x3f, 0x1f, 0x0f, 0x07, 0x03, 0x01, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
},
|
||||
|
||||
// Caps Lock
|
||||
{
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xc0, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
|
||||
0xc0, 0xc0, 0xc0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xe0, 0xf8, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xfc, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x01, 0x03, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x1f, 0x1f, 0x3f, 0x3f, 0x3f, 0x7f, 0x7f, 0xff, 0xff,
|
||||
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0xf8, 0xf8, 0xf0, 0xe0, 0xe0, 0xc0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01,
|
||||
0x01, 0x03, 0x03, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x03, 0x03, 0x01, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
||||
}
|
||||
};
|
||||
|
||||
// Layer images
|
||||
oled_set_cursor(32, 0);
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _MAC_DEFAULT :
|
||||
oled_write_raw_P(logos[0], sizeof(logos[0]));
|
||||
break;
|
||||
case _WIN_DEFAULT :
|
||||
oled_write_raw_P(logos[1], sizeof(logos[1]));
|
||||
break;
|
||||
case _MAC_CODE :
|
||||
case _WIN_CODE :
|
||||
oled_write_raw_P(logos[2], sizeof(logos[2]));
|
||||
break;
|
||||
case _MAC_NUM :
|
||||
case _WIN_NUM :
|
||||
oled_write_raw_P(logos[3], sizeof(logos[3]));
|
||||
break;
|
||||
case _MAC_FUNC :
|
||||
case _WIN_FUNC :
|
||||
oled_write_raw_P(logos[4], sizeof(logos[4]));
|
||||
break;
|
||||
}
|
||||
|
||||
// Render Bongo Cat
|
||||
render_animation();
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
@@ -1,2 +0,0 @@
|
||||
WPM_ENABLE = yes
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Define options
|
||||
#define TAPPING_TERM 135
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
@@ -1,174 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Tap dance declarations
|
||||
enum {
|
||||
TD_LCTL_ESC_SPOTLIGHT_EMOJI,
|
||||
TD_LALT_ESC_WINDOWS_EMOJI
|
||||
};
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) :
|
||||
case TD(TD_LALT_ESC_WINDOWS_EMOJI) :
|
||||
case LGUI_T(KC_SPC) :
|
||||
case LT(1, KC_TAB) :
|
||||
case LT(2, KC_ENT) :
|
||||
return 200;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
};
|
||||
|
||||
// Begin quad TD
|
||||
typedef enum {
|
||||
TD_NONE,
|
||||
TD_UNKNOWN,
|
||||
TD_SINGLE_HOLD,
|
||||
TD_SINGLE_TAP,
|
||||
TD_DOUBLE_TAP,
|
||||
TD_TRIPLE_TAP
|
||||
} td_state_t;
|
||||
|
||||
typedef struct {
|
||||
bool is_press_action;
|
||||
td_state_t state;
|
||||
} td_tap_t;
|
||||
|
||||
// Create an instance of 'td_tap_t' for the 'x' tap dance.
|
||||
static td_tap_t xtap_state = {
|
||||
.is_press_action = true,
|
||||
.state = TD_NONE
|
||||
};
|
||||
|
||||
td_state_t cur_dance(tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
return TD_SINGLE_TAP;
|
||||
} else {
|
||||
return TD_SINGLE_HOLD;
|
||||
}
|
||||
} else if (state->count == 2) {
|
||||
return TD_DOUBLE_TAP;
|
||||
} else if (state->count == 3) {
|
||||
return TD_TRIPLE_TAP;
|
||||
}
|
||||
|
||||
return TD_UNKNOWN;
|
||||
}
|
||||
|
||||
void td_lctl_esc_spotlight_emoji_finished(tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: register_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: register_code(KC_LCTL); break;
|
||||
case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break;
|
||||
case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void td_lctl_esc_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;
|
||||
default: break;
|
||||
}
|
||||
xtap_state.state = TD_NONE;
|
||||
}
|
||||
|
||||
void td_lalt_esc_windowr_emoji_finished(tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: register_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: register_code(KC_LALT); break;
|
||||
case TD_DOUBLE_TAP: tap_code(KC_LGUI); break;
|
||||
case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void td_lalt_esc_windowr_emoji_reset(tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: unregister_code(KC_LALT); break;
|
||||
default: break;
|
||||
}
|
||||
xtap_state.state = TD_NONE;
|
||||
}
|
||||
|
||||
// Tap Dance definitions
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_LCTL_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lctl_esc_spotlight_emoji_finished, td_lctl_esc_spotlight_emoji_reset),
|
||||
[TD_LALT_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lalt_esc_windowr_emoji_finished, td_lalt_esc_windowr_emoji_reset),
|
||||
};
|
||||
// For the x tap dance. Put it here so it can be used in any keymap
|
||||
void x_finished(tap_dance_state_t *state, void *user_data);
|
||||
void x_reset(tap_dance_state_t *state, void *user_data);
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_split_3x5_3(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[1] = LAYOUT_split_3x5_3(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[2] = LAYOUT_split_3x5_3(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[3] = LAYOUT_split_3x5_3(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[4] = LAYOUT_split_3x5_3(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[5] = LAYOUT_split_3x5_3(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[6] = LAYOUT_split_3x5_3(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[7] = LAYOUT_split_3x5_3(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
)
|
||||
};
|
||||
@@ -1 +0,0 @@
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Define options
|
||||
#define TAPPING_TERM 135
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
@@ -1,289 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include <stdio.h>
|
||||
|
||||
// Tap Dance declarations
|
||||
enum {
|
||||
TD_ESC_SPOTLIGHT_EMOJI,
|
||||
TD_ESC_WINDOWS_EMOJI
|
||||
};
|
||||
|
||||
void td_esc_spotlight_emoji (tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
tap_code(KC_ESC);
|
||||
} else if (state->count == 2) {
|
||||
tap_code16(G(KC_SPC));
|
||||
} else if (state->count == 3) {
|
||||
tap_code16(C(G(KC_SPC)));
|
||||
}
|
||||
}
|
||||
|
||||
void td_esc_windows_emoji (tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count == 1) {
|
||||
tap_code(KC_ESC);
|
||||
} else if (state->count == 2) {
|
||||
tap_code(KC_LGUI);
|
||||
} else if (state->count == 3) {
|
||||
tap_code16(G(KC_DOT));
|
||||
}
|
||||
};
|
||||
|
||||
// Tap Dance definitions
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_spotlight_emoji),
|
||||
[TD_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN(td_esc_windows_emoji)
|
||||
};
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case TD(TD_ESC_SPOTLIGHT_EMOJI) :
|
||||
case TD(TD_ESC_WINDOWS_EMOJI) :
|
||||
case LGUI_T(KC_SPC) :
|
||||
case LT(1, KC_TAB) :
|
||||
case LT(2, KC_ENT) :
|
||||
return 200;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
};
|
||||
|
||||
// Layer Names
|
||||
enum layer_names {
|
||||
_MAC_DEFAULT,
|
||||
_MAC_CODE,
|
||||
_MAC_NUM,
|
||||
_MAC_FUNC,
|
||||
_WIN_DEFAULT,
|
||||
_WIN_CODE,
|
||||
_WIN_NUM,
|
||||
_WIN_FUNC
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ortho_6_3x10_6(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI),
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[1] = LAYOUT_ortho_6_3x10_6(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI),
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[2] = LAYOUT_ortho_6_3x10_6(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI),
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[3] = LAYOUT_ortho_6_3x10_6(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_SPOTLIGHT_EMOJI),
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[4] = LAYOUT_ortho_6_3x10_6(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI),
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[5] = LAYOUT_ortho_6_3x10_6(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI),
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[6] = LAYOUT_ortho_6_3x10_6(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI),
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[7] = LAYOUT_ortho_6_3x10_6(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, TD(TD_ESC_WINDOWS_EMOJI),
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_LALT, KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_ESC_WINDOWS_EMOJI)
|
||||
)
|
||||
};
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
// WPM responsiveness
|
||||
#define IDLE_FRAMES 5
|
||||
#define IDLE_SPEED 20 // Speed at which animation goes into idle
|
||||
#define TAP_FRAMES 2
|
||||
#define TAP_SPEED 40 // WPM to trigger Bongo
|
||||
#define ANIM_FRAME_DURATION 200 // Frame MS
|
||||
#define ANIM_SIZE 636 // Number of bytes in array, max 1024
|
||||
|
||||
uint32_t anim_timer = 0;
|
||||
uint32_t anim_sleep = 0;
|
||||
uint8_t current_idle_frame = 0;
|
||||
uint8_t current_tap_frame = 0;
|
||||
|
||||
static void render_animation(void) {
|
||||
static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||
static const char PROGMEM prep[][ANIM_SIZE] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||
static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
};
|
||||
|
||||
void animation_phase(void) {
|
||||
if (get_current_wpm() <= IDLE_SPEED) {
|
||||
current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
|
||||
oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
|
||||
}
|
||||
|
||||
if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
|
||||
oled_write_raw_P(prep[0], ANIM_SIZE);
|
||||
}
|
||||
|
||||
if (get_current_wpm() >= TAP_SPEED) {
|
||||
current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
|
||||
oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
|
||||
}
|
||||
}
|
||||
if (get_current_wpm() != 000) {
|
||||
oled_on(); // Enables OLED on any alpha keypress
|
||||
|
||||
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
|
||||
anim_sleep = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_sleep) > OLED_TIMEOUT) {
|
||||
oled_off();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Draw to OLED
|
||||
bool oled_task_user() {
|
||||
oled_set_cursor(0, 0);
|
||||
oled_write(" ScottoGame ", false);
|
||||
|
||||
// Render Bongo Cat
|
||||
oled_set_cursor(86, 0);
|
||||
render_animation();
|
||||
|
||||
// WPM text
|
||||
oled_set_cursor(0,5);
|
||||
oled_write(get_u8_str(get_current_wpm(), '0'), false);
|
||||
|
||||
// Layer text
|
||||
oled_set_cursor(0, 6);
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _MAC_DEFAULT :
|
||||
oled_write_P(PSTR("MAC"), false);
|
||||
oled_set_cursor(0, 7);
|
||||
oled_write_P(PSTR("MAIN"), false);
|
||||
break;
|
||||
case _MAC_CODE :
|
||||
oled_write_P(PSTR("MAC"), false);
|
||||
oled_set_cursor(0, 7);
|
||||
oled_write_P(PSTR("CODE"), false);
|
||||
break;
|
||||
case _MAC_NUM :
|
||||
oled_write_P(PSTR("MAC"), false);
|
||||
oled_set_cursor(0, 7);
|
||||
oled_write_P(PSTR("NUM"), false);
|
||||
break;
|
||||
case _MAC_FUNC :
|
||||
oled_write_P(PSTR("MAC"), false);
|
||||
oled_set_cursor(0, 7);
|
||||
oled_write_P(PSTR("FUNC"), false);
|
||||
break;
|
||||
case _WIN_DEFAULT :
|
||||
oled_write_P(PSTR("WIN"), false);
|
||||
oled_set_cursor(0, 7);
|
||||
oled_write_P(PSTR("MAIN"), false);
|
||||
break;
|
||||
case _WIN_CODE :
|
||||
oled_write_P(PSTR("WIN"), false);
|
||||
oled_set_cursor(0, 7);
|
||||
oled_write_P(PSTR("CODE"), false);
|
||||
break;
|
||||
case _WIN_NUM :
|
||||
oled_write_P(PSTR("WIN"), false);
|
||||
oled_set_cursor(0, 7);
|
||||
oled_write_P(PSTR("NUM"), false);
|
||||
break;
|
||||
case _WIN_FUNC :
|
||||
oled_write_P(PSTR("WIN"), false);
|
||||
oled_set_cursor(0, 7);
|
||||
oled_write_P(PSTR("FUNC"), false);
|
||||
break;
|
||||
}
|
||||
|
||||
// Caps lock text
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
oled_set_cursor(0, 4);
|
||||
oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
@@ -1,2 +0,0 @@
|
||||
WPM_ENABLE = yes
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Define options
|
||||
#define TAPPING_TERM 135
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
@@ -1,174 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Tap dance declarations
|
||||
enum {
|
||||
TD_LCTL_ESC_SPOTLIGHT_EMOJI,
|
||||
TD_LALT_ESC_WINDOWS_EMOJI
|
||||
};
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) :
|
||||
case TD(TD_LALT_ESC_WINDOWS_EMOJI) :
|
||||
case LGUI_T(KC_SPC) :
|
||||
case LT(1, KC_TAB) :
|
||||
case LT(2, KC_ENT) :
|
||||
return 200;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
};
|
||||
|
||||
// Begin quad TD
|
||||
typedef enum {
|
||||
TD_NONE,
|
||||
TD_UNKNOWN,
|
||||
TD_SINGLE_HOLD,
|
||||
TD_SINGLE_TAP,
|
||||
TD_DOUBLE_TAP,
|
||||
TD_TRIPLE_TAP
|
||||
} td_state_t;
|
||||
|
||||
typedef struct {
|
||||
bool is_press_action;
|
||||
td_state_t state;
|
||||
} td_tap_t;
|
||||
|
||||
// Create an instance of 'td_tap_t' for the 'x' tap dance.
|
||||
static td_tap_t xtap_state = {
|
||||
.is_press_action = true,
|
||||
.state = TD_NONE
|
||||
};
|
||||
|
||||
td_state_t cur_dance(tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
return TD_SINGLE_TAP;
|
||||
} else {
|
||||
return TD_SINGLE_HOLD;
|
||||
}
|
||||
} else if (state->count == 2) {
|
||||
return TD_DOUBLE_TAP;
|
||||
} else if (state->count == 3) {
|
||||
return TD_TRIPLE_TAP;
|
||||
}
|
||||
|
||||
return TD_UNKNOWN;
|
||||
}
|
||||
|
||||
void td_lctl_esc_spotlight_emoji_finished(tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: register_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: register_code(KC_LCTL); break;
|
||||
case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break;
|
||||
case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void td_lctl_esc_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;
|
||||
default: break;
|
||||
}
|
||||
xtap_state.state = TD_NONE;
|
||||
}
|
||||
|
||||
void td_lalt_esc_windowr_emoji_finished(tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: register_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: register_code(KC_LALT); break;
|
||||
case TD_DOUBLE_TAP: tap_code(KC_LGUI); break;
|
||||
case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void td_lalt_esc_windowr_emoji_reset(tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: unregister_code(KC_LALT); break;
|
||||
default: break;
|
||||
}
|
||||
xtap_state.state = TD_NONE;
|
||||
}
|
||||
|
||||
// Tap Dance definitions
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_LCTL_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lctl_esc_spotlight_emoji_finished, td_lctl_esc_spotlight_emoji_reset),
|
||||
[TD_LALT_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lalt_esc_windowr_emoji_finished, td_lalt_esc_windowr_emoji_reset),
|
||||
};
|
||||
// For the x tap dance. Put it here so it can be used in any keymap
|
||||
void x_finished(tap_dance_state_t *state, void *user_data);
|
||||
void x_reset(tap_dance_state_t *state, void *user_data);
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_split_3x5_3(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[1] = LAYOUT_split_3x5_3(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[2] = LAYOUT_split_3x5_3(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[3] = LAYOUT_split_3x5_3(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[4] = LAYOUT_split_3x5_3(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[5] = LAYOUT_split_3x5_3(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[6] = LAYOUT_split_3x5_3(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[7] = LAYOUT_split_3x5_3(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
)
|
||||
};
|
||||
@@ -1 +0,0 @@
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -1,26 +0,0 @@
|
||||
/*
|
||||
Copyright 2023 Joe Scotto
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Mouse key speed and acceleration.
|
||||
#define MOUSEKEY_DELAY 0
|
||||
#define MOUSEKEY_INTERVAL 16
|
||||
#define MOUSEKEY_WHEEL_DELAY 0
|
||||
#define MOUSEKEY_MAX_SPEED 6
|
||||
#define MOUSEKEY_TIME_TO_MAX 64
|
||||
|
||||
@@ -1,33 +0,0 @@
|
||||
/*
|
||||
Copyright 2023 Joe Scotto
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM scroll_down[] = {KC_MS_BTN1, KC_MS_BTN2, KC_MS_DOWN, COMBO_END};
|
||||
const uint16_t PROGMEM scroll_up[] = {KC_MS_BTN1, KC_MS_BTN2, KC_MS_UP, COMBO_END};
|
||||
const uint16_t PROGMEM middle_click[] = {KC_MS_BTN1, KC_MS_BTN2, COMBO_END};
|
||||
combo_t key_combos[] = {
|
||||
COMBO(scroll_down, KC_MS_WH_DOWN),
|
||||
COMBO(scroll_up, KC_MS_WH_UP),
|
||||
COMBO(middle_click, KC_MS_BTN3)
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_MS_BTN1, KC_MS_BTN2, KC_MS_LEFT, KC_MS_UP, KC_MS_DOWN, KC_MS_RIGHT
|
||||
)
|
||||
};
|
||||
@@ -1 +0,0 @@
|
||||
COMBO_ENABLE = yes
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Define options
|
||||
#define TAPPING_TERM 135
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
@@ -1,69 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), KC_ESC
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, KC_ESC
|
||||
),
|
||||
[2] = LAYOUT(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, KC_ESC
|
||||
),
|
||||
[3] = LAYOUT(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_ESC, KC_LCTL, KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, KC_ESC
|
||||
),
|
||||
[4] = LAYOUT(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), KC_ESC
|
||||
),
|
||||
[5] = LAYOUT(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), KC_ESC
|
||||
),
|
||||
[6] = LAYOUT(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), KC_ESC
|
||||
),
|
||||
[7] = LAYOUT(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_ESC, KC_LALT, KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), KC_ESC
|
||||
)
|
||||
};
|
||||
@@ -1 +0,0 @@
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -1,23 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// Define options
|
||||
#define TAPPING_TERM 135
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
@@ -1,174 +0,0 @@
|
||||
/*
|
||||
Copyright 2022 Joe Scotto
|
||||
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Tap dance declarations
|
||||
enum {
|
||||
TD_LCTL_ESC_SPOTLIGHT_EMOJI,
|
||||
TD_LALT_ESC_WINDOWS_EMOJI
|
||||
};
|
||||
|
||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI) :
|
||||
case TD(TD_LALT_ESC_WINDOWS_EMOJI) :
|
||||
case LGUI_T(KC_SPC) :
|
||||
case LT(1, KC_TAB) :
|
||||
case LT(2, KC_ENT) :
|
||||
return 200;
|
||||
default:
|
||||
return TAPPING_TERM;
|
||||
}
|
||||
};
|
||||
|
||||
// Begin quad TD
|
||||
typedef enum {
|
||||
TD_NONE,
|
||||
TD_UNKNOWN,
|
||||
TD_SINGLE_HOLD,
|
||||
TD_SINGLE_TAP,
|
||||
TD_DOUBLE_TAP,
|
||||
TD_TRIPLE_TAP
|
||||
} td_state_t;
|
||||
|
||||
typedef struct {
|
||||
bool is_press_action;
|
||||
td_state_t state;
|
||||
} td_tap_t;
|
||||
|
||||
// Create an instance of 'td_tap_t' for the 'x' tap dance.
|
||||
static td_tap_t xtap_state = {
|
||||
.is_press_action = true,
|
||||
.state = TD_NONE
|
||||
};
|
||||
|
||||
td_state_t cur_dance(tap_dance_state_t *state) {
|
||||
if (state->count == 1) {
|
||||
if (state->interrupted || !state->pressed) {
|
||||
return TD_SINGLE_TAP;
|
||||
} else {
|
||||
return TD_SINGLE_HOLD;
|
||||
}
|
||||
} else if (state->count == 2) {
|
||||
return TD_DOUBLE_TAP;
|
||||
} else if (state->count == 3) {
|
||||
return TD_TRIPLE_TAP;
|
||||
}
|
||||
|
||||
return TD_UNKNOWN;
|
||||
}
|
||||
|
||||
void td_lctl_esc_spotlight_emoji_finished(tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: register_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: register_code(KC_LCTL); break;
|
||||
case TD_DOUBLE_TAP: tap_code16(G(KC_SPC)); break;
|
||||
case TD_TRIPLE_TAP: tap_code16(C(G(KC_SPC))); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void td_lctl_esc_spotlight_emoji_reset(tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: unregister_code(KC_LCTL); break;
|
||||
default: break;
|
||||
}
|
||||
xtap_state.state = TD_NONE;
|
||||
}
|
||||
|
||||
void td_lalt_esc_windowr_emoji_finished(tap_dance_state_t *state, void *user_data) {
|
||||
xtap_state.state = cur_dance(state);
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: register_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: register_code(KC_LALT); break;
|
||||
case TD_DOUBLE_TAP: tap_code(KC_LGUI); break;
|
||||
case TD_TRIPLE_TAP: tap_code16(G(KC_DOT)); break;
|
||||
default: break;
|
||||
}
|
||||
}
|
||||
|
||||
void td_lalt_esc_windowr_emoji_reset(tap_dance_state_t *state, void *user_data) {
|
||||
switch (xtap_state.state) {
|
||||
case TD_SINGLE_TAP: unregister_code(KC_ESC); break;
|
||||
case TD_SINGLE_HOLD: unregister_code(KC_LALT); break;
|
||||
default: break;
|
||||
}
|
||||
xtap_state.state = TD_NONE;
|
||||
}
|
||||
|
||||
// Tap Dance definitions
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_LCTL_ESC_SPOTLIGHT_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lctl_esc_spotlight_emoji_finished, td_lctl_esc_spotlight_emoji_reset),
|
||||
[TD_LALT_ESC_WINDOWS_EMOJI] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, td_lalt_esc_windowr_emoji_finished, td_lalt_esc_windowr_emoji_reset),
|
||||
};
|
||||
// For the x tap dance. Put it here so it can be used in any keymap
|
||||
void x_finished(tap_dance_state_t *state, void *user_data);
|
||||
void x_reset(tap_dance_state_t *state, void *user_data);
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_split_3x5_3(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[1] = LAYOUT_split_3x5_3(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[2] = LAYOUT_split_3x5_3(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[3] = LAYOUT_split_3x5_3(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(4),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI), KC_LALT, LGUI_T(KC_SPC), KC_TRNS, KC_TRNS, TD(TD_LCTL_ESC_SPOTLIGHT_EMOJI)
|
||||
),
|
||||
[4] = LAYOUT_split_3x5_3(
|
||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_BSPC,
|
||||
KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O,
|
||||
LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, LT(5, KC_TAB), LT(6, KC_ENT), TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[5] = LAYOUT_split_3x5_3(
|
||||
KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL,
|
||||
KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT,
|
||||
LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[6] = LAYOUT_split_3x5_3(
|
||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC,
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, MO(7), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH),
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
),
|
||||
[7] = LAYOUT_split_3x5_3(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, TO(0),
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
TD(TD_LALT_ESC_WINDOWS_EMOJI), KC_LCTL, KC_SPC, KC_TRNS, KC_TRNS, TD(TD_LALT_ESC_WINDOWS_EMOJI)
|
||||
)
|
||||
};
|
||||
@@ -1 +0,0 @@
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -1,35 +0,0 @@
|
||||
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// #define USE_I2C
|
||||
// #define SELECT_SOFT_SERIAL_SPEED 1
|
||||
#define SPLIT_MODS_ENABLE
|
||||
#define EE_HANDS
|
||||
|
||||
#define TRACKBALL_DPI_OPTIONS { 1200, 1800, 2600, 3400 }
|
||||
|
||||
#define RGBLIGHT_MAX_BRIGHTNESS 60
|
||||
|
||||
#undef DEBOUNCE
|
||||
#define DEBOUNCE 10
|
||||
|
||||
#define SOLENOID_PIN F1
|
||||
#define SOLENOID_DEFAULT_DWELL 8
|
||||
|
||||
#define OLED_DISPLAY_128X64
|
||||
#define OLED_BRIGHTNESS 50
|
||||
@@ -1,117 +0,0 @@
|
||||
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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/>.
|
||||
*/
|
||||
|
||||
#include "drashna.h"
|
||||
|
||||
// clang-format off
|
||||
#define LAYOUT_4x6_right_wrapper(...) LAYOUT_4x6_right(__VA_ARGS__)
|
||||
#define LAYOUT_4x6_right_base( \
|
||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||
) \
|
||||
LAYOUT_4x6_right_wrapper( \
|
||||
SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \
|
||||
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||
OS_LGUI, OS_LALT, OS_RGUI, OS_RALT, \
|
||||
KC_PSCR, KC_GRV, MEH_T(KC_BTN3), \
|
||||
KC_SPC, OS_LGUI, KC_ENT, \
|
||||
BK_LWER, TT(_MOUSE), TT(_MOUSE), DL_RAIS \
|
||||
)
|
||||
#define LAYOUT_base_wrapper(...) LAYOUT_4x6_right_base(__VA_ARGS__)
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_DEFAULT_LAYER_1] = LAYOUT_base_wrapper(
|
||||
_________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
|
||||
_________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
|
||||
_________________QWERTY_L3_________________, _________________QWERTY_R3_________________
|
||||
),
|
||||
|
||||
[_DEFAULT_LAYER_2] = LAYOUT_base_wrapper(
|
||||
______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________,
|
||||
______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________,
|
||||
______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________
|
||||
),
|
||||
[_DEFAULT_LAYER_3] = LAYOUT_base_wrapper(
|
||||
_________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
|
||||
_________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
|
||||
_________________COLEMAK_L3________________, _________________COLEMAK_R3________________
|
||||
),
|
||||
|
||||
[_DEFAULT_LAYER_4] = LAYOUT_base_wrapper(
|
||||
_________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
|
||||
_________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
|
||||
_________________DVORAK_L3_________________, _________________DVORAK_R3_________________
|
||||
),
|
||||
|
||||
[_MOUSE] = LAYOUT_4x6_right(
|
||||
_______, _______, _______, _______, _______, _______, KC_WH_U, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, SNP_TOG,
|
||||
_______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING,
|
||||
_______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______,
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, _______,
|
||||
_______, _______, _______,
|
||||
_______, _______, _______, _______
|
||||
),
|
||||
[_GAMEPAD] = LAYOUT_4x6_right(
|
||||
KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______,
|
||||
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______,
|
||||
KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, _______, _______, _______, _______, _______,
|
||||
KC_I, KC_T, TG_GAME, KC_NO,
|
||||
KC_V, KC_O, _______,
|
||||
KC_SPC, KC_P, _______,
|
||||
KC_H, KC_LGUI, _______, _______
|
||||
),
|
||||
[_DIABLO] = LAYOUT_4x6_right(
|
||||
KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, _______, _______, _______, _______, _______, _______,
|
||||
KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, _______, _______, _______, _______, _______, _______,
|
||||
KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, _______, _______, _______, _______, _______, _______,
|
||||
KC_F, KC_L, KC_NO, TG_DBLO,
|
||||
KC_DIABLO_CLEAR, KC_F, _______,
|
||||
SFT_T(KC_SPC), KC_J, _______,
|
||||
ALT_T(KC_Q), KC_LGUI, _______, _______
|
||||
),
|
||||
[_LOWER] = LAYOUT_4x6_right_wrapper(
|
||||
KC_F12, _________________LOWER_L1__________________, _________________LOWER_R1__________________, KC_F11,
|
||||
_______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
|
||||
_______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______,
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, _______,
|
||||
_______, _______, _______,
|
||||
_______, _______, _______, _______
|
||||
),
|
||||
[_RAISE] = LAYOUT_4x6_right_wrapper(
|
||||
KC_F12, _________________RAISE_L1__________________, _________________RAISE_R1__________________, KC_F11,
|
||||
_______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
|
||||
_______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, _______,
|
||||
_______, _______, _______,
|
||||
_______, _______, _______, _______
|
||||
),
|
||||
[_ADJUST] = LAYOUT_4x6_right_wrapper(
|
||||
QK_MAKE, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, QK_BOOT,
|
||||
VRSN, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, EE_CLR,
|
||||
UC_NEXT, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, TG_MODS,
|
||||
HF_DWLU, HF_DWLD, TG_GAME, TG_DBLO,
|
||||
HF_TOGG, HF_BUZZ, KC_NUKE,
|
||||
_______, _______, _______,
|
||||
_______, _______, KC_NUKE, _______
|
||||
),
|
||||
};
|
||||
// clang-format on
|
||||
@@ -1,8 +0,0 @@
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
AUDIO_ENABLE = yes
|
||||
HAPTIC_ENABLE = no
|
||||
COMMAND_ENABLE = no
|
||||
TAP_DANCE_ENABLE = yes
|
||||
UNICODE_ENABLE = yes
|
||||
OLED_ENABLE = yes
|
||||
WPM_ENABLE = yes
|
||||
@@ -1,36 +0,0 @@
|
||||
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#undef OLED_DISPLAY_128X64
|
||||
#define OLED_DISPLAY_128X128
|
||||
#define OLED_BRIGHTNESS 200
|
||||
|
||||
#define CHARYBDIS_MINIMUM_DEFAULT_DPI 1200
|
||||
#define CHARYBDIS_DEFAULT_DPI_CONFIG_STEP 200
|
||||
#define CHARYBDIS_MINIMUM_SNIPING_DPI 400
|
||||
#define CHARYBDIS_SNIPING_DPI_CONFIG_STEP 200
|
||||
|
||||
#define BOOTMAGIC_LITE_EEPROM_ROW 1
|
||||
#define BOOTMAGIC_LITE_EEPROM_COLUMN 0
|
||||
#define BOOTMAGIC_LITE_EEPROM_ROW_RIGHT 7
|
||||
#define BOOTMAGIC_LITE_EEPROM_COLUMN_RIGHT 5
|
||||
|
||||
|
||||
#define DRV2605L_FB_ERM_LRA 0
|
||||
#define DRV2605L_GREETING DRV2605L_EFFECT_750_MS_ALERT_100
|
||||
#define DRV2605L_DEFAULT_MODE DRV2605L_EFFECT_BUZZ_1_100
|
||||
@@ -1,161 +0,0 @@
|
||||
/* Copyright 2020 Christopher Courtney, aka Drashna Jael're (@drashna) <drashna@live.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/>.
|
||||
*/
|
||||
|
||||
#include "drashna.h"
|
||||
|
||||
// clang-format off
|
||||
#define LAYOUT_5x6_right_wrapper(...) LAYOUT_5x6_right(__VA_ARGS__)
|
||||
#define LAYOUT_5x6_right_base( \
|
||||
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
|
||||
K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, \
|
||||
K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A \
|
||||
) \
|
||||
LAYOUT_5x6_right_wrapper( \
|
||||
KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, UC_CLUE, \
|
||||
SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \
|
||||
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
|
||||
OS_LSFT, CTL_T(K21), K22, K23, K24, K25, K26, K27, K28, K29, RCTL_T(K2A), OS_RSFT, \
|
||||
OS_LALT, OS_LGUI, OS_RGUI, OS_RALT, \
|
||||
KC_MUTE, KC_GRV, KC_BTN3, \
|
||||
KC_SPC, UC_IRNY, KC_ENT, \
|
||||
BK_LWER, TT(_MOUSE), TT(_MOUSE), DL_RAIS \
|
||||
)
|
||||
#define LAYOUT_base_wrapper(...) LAYOUT_5x6_right_base(__VA_ARGS__)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_DEFAULT_LAYER_1] = LAYOUT_base_wrapper(
|
||||
_________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
|
||||
_________________QWERTY_L2_________________, _________________QWERTY_R2_________________,
|
||||
_________________QWERTY_L3_________________, _________________QWERTY_R3_________________
|
||||
),
|
||||
|
||||
[_DEFAULT_LAYER_2] = LAYOUT_base_wrapper(
|
||||
______________COLEMAK_MOD_DH_L1____________, ______________COLEMAK_MOD_DH_R1____________,
|
||||
______________COLEMAK_MOD_DH_L2____________, ______________COLEMAK_MOD_DH_R2____________,
|
||||
______________COLEMAK_MOD_DH_L3____________, ______________COLEMAK_MOD_DH_R3____________
|
||||
),
|
||||
[_DEFAULT_LAYER_3] = LAYOUT_base_wrapper(
|
||||
_________________COLEMAK_L1________________, _________________COLEMAK_R1________________,
|
||||
_________________COLEMAK_L2________________, _________________COLEMAK_R2________________,
|
||||
_________________COLEMAK_L3________________, _________________COLEMAK_R3________________
|
||||
),
|
||||
|
||||
[_DEFAULT_LAYER_4] = LAYOUT_base_wrapper(
|
||||
_________________DVORAK_L1_________________, _________________DVORAK_R1_________________,
|
||||
_________________DVORAK_L2_________________, _________________DVORAK_R2_________________,
|
||||
_________________DVORAK_L3_________________, _________________DVORAK_R3_________________
|
||||
),
|
||||
|
||||
[_GAMEPAD] = LAYOUT_5x6_right(
|
||||
KC_ESC, KC_NO, KC_1, KC_2, KC_3, KC_4, _______, _______, _______, _______, _______, _______,
|
||||
KC_F1, KC_K, KC_Q, KC_W, KC_E, KC_R, _______, _______, _______, _______, _______, _______,
|
||||
KC_TAB, KC_G, KC_A, KC_S, KC_D, KC_F, _______, _______, _______, _______, _______, _______,
|
||||
KC_LCTL, KC_LSFT, KC_Z, KC_X, KC_C, KC_H, _______, _______, _______, _______, _______, _______,
|
||||
KC_I, KC_T, TG_GAME, KC_NO,
|
||||
KC_V, KC_O, _______,
|
||||
KC_SPC, KC_P, _______,
|
||||
KC_H, KC_LGUI, _______, _______
|
||||
),
|
||||
[_DIABLO] = LAYOUT_5x6_right(
|
||||
KC_ESC, KC_V, KC_D, KC_LALT, KC_NO, KC_NO, KC_F9, KC_F10, KC_F11, KC_F12, KC_NO, KC_NO,
|
||||
KC_TAB, KC_S, KC_I, KC_F, KC_M, KC_T, _______, _______, _______, _______, _______, _______,
|
||||
KC_Q, KC_1, KC_2, KC_3, KC_4, KC_G, _______, _______, _______, _______, _______, _______,
|
||||
KC_LCTL, KC_D3_1, KC_D3_2, KC_D3_3, KC_D3_4, KC_Z, _______, _______, _______, _______, _______, _______,
|
||||
KC_F, KC_L, KC_NO, TG_DBLO,
|
||||
KC_DIABLO_CLEAR, KC_F, _______,
|
||||
SFT_T(KC_SPC), KC_J, _______,
|
||||
ALT_T(KC_Q), KC_LGUI, _______, _______
|
||||
),
|
||||
[_DIABLOII] = LAYOUT_5x6_right(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_GRV, _______, _______, _______, _______, _______, _______,
|
||||
KC_TAB, KC_A, KC_T, KC_Q, KC_I, KC_M, _______, _______, _______, _______, _______, _______,
|
||||
KC_S, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, _______, _______, _______, _______,
|
||||
KC_LCTL, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______, _______, _______, _______, _______, _______,
|
||||
KC_F, KC_L, KC_NO, TG(_DIABLOII),
|
||||
_______, KC_G, _______,
|
||||
KC_LSFT, _______, _______,
|
||||
KC_LCTL, KC_V, _______, _______
|
||||
),
|
||||
[_MOUSE] = LAYOUT_5x6_right(
|
||||
_______, _______, _______, _______, _______, _______, _______, DPI_RMOD,DPI_MOD, S_D_RMOD,S_D_MOD, PD_JIGGLER,
|
||||
_______, _______, _______, _______, _______, _______, KC_WH_U, _______, _______, _______, _______, DRGSCRL,
|
||||
_______, _______, _______, _______, _______, _______, KC_WH_D, KC_BTN1, KC_BTN3, KC_BTN2, KC_BTN6, SNIPING,
|
||||
_______, _______, _______, _______, _______, _______, KC_BTN7, KC_BTN4, KC_BTN5, KC_BTN8, _______, _______,
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, KC_BTN3,
|
||||
_______, _______, _______,
|
||||
_______, _______, _______, _______
|
||||
),
|
||||
[_LOWER] = LAYOUT_5x6_right_wrapper(
|
||||
KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11,
|
||||
_______, _________________LOWER_L1__________________, _________________LOWER_R1__________________, _______,
|
||||
_______, _________________LOWER_L2__________________, _________________LOWER_R2__________________, KC_PIPE,
|
||||
_______, _________________LOWER_L3__________________, _________________LOWER_R3__________________, _______,
|
||||
_______, _______, _______, _______,
|
||||
_______, _______, _______,
|
||||
_______, _______, _______,
|
||||
_______, _______, _______, _______
|
||||
),
|
||||
[_RAISE] = LAYOUT_5x6_right_wrapper(
|
||||
KC_F12, _________________FUNC_LEFT_________________, _________________FUNC_RIGHT________________, KC_F11,
|
||||
KC_GRV, _________________RAISE_L1__________________, _________________RAISE_R1__________________, _______,
|
||||
_______, _________________RAISE_L2__________________, _________________RAISE_R2__________________, KC_BSLS,
|
||||
_______, _________________RAISE_L3__________________, _________________RAISE_R3__________________, _______,
|
||||
_______, _______, _______, _______,
|
||||
OL_LOCK, _______, _______,
|
||||
_______, _______, _______,
|
||||
_______, _______, _______, _______
|
||||
),
|
||||
[_ADJUST] = LAYOUT_5x6_right_wrapper(
|
||||
QK_MAKE, KC_WIDE,KC_AUSSIE,KC_SCRIPT,KC_ZALGO,KC_NOMODE, KC_NOMODE,KC_BLOCKS,KC_REGIONAL,_______,_______, QK_BOOT,
|
||||
VRSN, _________________ADJUST_L1_________________, _________________ADJUST_R1_________________, EE_CLR,
|
||||
KEYLOCK, _________________ADJUST_L2_________________, _________________ADJUST_R2_________________, TG_MODS,
|
||||
UC_NEXT, _________________ADJUST_L3_________________, _________________ADJUST_R3_________________, KC_MPLY,
|
||||
TG(_DIABLOII), AUTO_CTN, TG_GAME, TG_DBLO,
|
||||
_______, QK_RBT, KC_NUKE,
|
||||
HF_TOGG, _______, _______,
|
||||
_______, _______, KC_NUKE, _______
|
||||
),
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_DEFAULT_LAYER_1] = { ENCODER_CCW_CW( KC_VOLU, KC_VOLD ), ENCODER_CCW_CW( KC_WH_U, KC_WH_D ) },
|
||||
[_DEFAULT_LAYER_2] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
|
||||
[_DEFAULT_LAYER_3] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
|
||||
[_DEFAULT_LAYER_4] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
|
||||
[_GAMEPAD] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
|
||||
[_DIABLO] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
|
||||
[_MOUSE] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
|
||||
[_MEDIA] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
|
||||
[_RAISE] = { ENCODER_CCW_CW( OL_BINC, OL_BDEC ), ENCODER_CCW_CW( KC_PGDN, KC_PGUP ) },
|
||||
[_LOWER] = { ENCODER_CCW_CW( RGB_MOD, RGB_RMOD), ENCODER_CCW_CW( RGB_HUI, RGB_HUD ) },
|
||||
[_ADJUST] = { ENCODER_CCW_CW( CK_UP, CK_DOWN ), ENCODER_CCW_CW( _______, _______ ) },
|
||||
};
|
||||
// clang-format on
|
||||
#endif
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
oled_rotation_t oled_init_keymap(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_180;
|
||||
}
|
||||
|
||||
void render_oled_title(bool side) {
|
||||
oled_write_P(side ? PSTR(" Tractyl ") : PSTR(" Manuform "), true);
|
||||
}
|
||||
#endif
|
||||
@@ -1,117 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#define RGBLIGHT_EFFECT_BREATHE_TABLE
|
||||
|
||||
// clang-format off
|
||||
|
||||
// Breathing center: 1.85
|
||||
// Breathing max: 100
|
||||
|
||||
const uint8_t PROGMEM rgblight_effect_breathe_table[] = {
|
||||
#if RGBLIGHT_BREATHE_TABLE_SIZE == 256
|
||||
0x0D, 0x0E, 0x0E, 0x0F, 0x0F, 0x10, 0x10, 0x11,
|
||||
0x11, 0x12, 0x13, 0x13, 0x14, 0x14, 0x15, 0x16,
|
||||
0x16, 0x17, 0x18, 0x18, 0x19, 0x19, 0x1A, 0x1B,
|
||||
0x1B, 0x1C, 0x1D, 0x1E, 0x1E, 0x1F, 0x20, 0x20,
|
||||
0x21, 0x22, 0x22, 0x23, 0x24, 0x25, 0x25, 0x26,
|
||||
0x27, 0x28, 0x28, 0x29, 0x2A, 0x2B, 0x2B, 0x2C,
|
||||
0x2D, 0x2E, 0x2E, 0x2F, 0x30, 0x31, 0x31, 0x32,
|
||||
0x33, 0x34, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38,
|
||||
0x39, 0x3A, 0x3B, 0x3B, 0x3C, 0x3D, 0x3D, 0x3E,
|
||||
0x3F, 0x40, 0x40, 0x41, 0x42, 0x42, 0x43, 0x44,
|
||||
0x44, 0x45, 0x46, 0x46, 0x47, 0x48, 0x48, 0x49,
|
||||
0x4A, 0x4A, 0x4B, 0x4B, 0x4C, 0x4C, 0x4D, 0x4D,
|
||||
0x4E, 0x4E, 0x4F, 0x4F, 0x50, 0x50, 0x51, 0x51,
|
||||
0x51, 0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54,
|
||||
0x54, 0x54, 0x55, 0x55, 0x55, 0x55, 0x55, 0x56,
|
||||
0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
|
||||
0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56, 0x56,
|
||||
0x56, 0x55, 0x55, 0x55, 0x55, 0x55, 0x54, 0x54,
|
||||
0x54, 0x54, 0x53, 0x53, 0x53, 0x52, 0x52, 0x51,
|
||||
0x51, 0x51, 0x50, 0x50, 0x4F, 0x4F, 0x4E, 0x4E,
|
||||
0x4D, 0x4D, 0x4C, 0x4C, 0x4B, 0x4B, 0x4A, 0x4A,
|
||||
0x49, 0x48, 0x48, 0x47, 0x46, 0x46, 0x45, 0x44,
|
||||
0x44, 0x43, 0x42, 0x42, 0x41, 0x40, 0x40, 0x3F,
|
||||
0x3E, 0x3D, 0x3D, 0x3C, 0x3B, 0x3B, 0x3A, 0x39,
|
||||
0x38, 0x38, 0x37, 0x36, 0x35, 0x34, 0x34, 0x33,
|
||||
0x32, 0x31, 0x31, 0x30, 0x2F, 0x2E, 0x2E, 0x2D,
|
||||
0x2C, 0x2B, 0x2B, 0x2A, 0x29, 0x28, 0x28, 0x27,
|
||||
0x26, 0x25, 0x25, 0x24, 0x23, 0x22, 0x22, 0x21,
|
||||
0x20, 0x20, 0x1F, 0x1E, 0x1E, 0x1D, 0x1C, 0x1B,
|
||||
0x1B, 0x1A, 0x19, 0x19, 0x18, 0x18, 0x17, 0x16,
|
||||
0x16, 0x15, 0x14, 0x14, 0x13, 0x13, 0x12, 0x11,
|
||||
0x11, 0x10, 0x10, 0x0F, 0x0F, 0x0E, 0x0E, 0x0D
|
||||
#endif
|
||||
|
||||
#if RGBLIGHT_BREATHE_TABLE_SIZE == 128
|
||||
0x0D, 0x0E, 0x0F, 0x10,
|
||||
0x11, 0x13, 0x14, 0x15,
|
||||
0x16, 0x18, 0x19, 0x1A,
|
||||
0x1B, 0x1D, 0x1E, 0x20,
|
||||
0x21, 0x22, 0x24, 0x25,
|
||||
0x27, 0x28, 0x2A, 0x2B,
|
||||
0x2D, 0x2E, 0x30, 0x31,
|
||||
0x33, 0x34, 0x36, 0x38,
|
||||
0x39, 0x3B, 0x3C, 0x3D,
|
||||
0x3F, 0x40, 0x42, 0x43,
|
||||
0x44, 0x46, 0x47, 0x48,
|
||||
0x4A, 0x4B, 0x4C, 0x4D,
|
||||
0x4E, 0x4F, 0x50, 0x51,
|
||||
0x51, 0x52, 0x53, 0x54,
|
||||
0x54, 0x55, 0x55, 0x55,
|
||||
0x56, 0x56, 0x56, 0x56,
|
||||
0x56, 0x56, 0x56, 0x56,
|
||||
0x56, 0x55, 0x55, 0x54,
|
||||
0x54, 0x53, 0x53, 0x52,
|
||||
0x51, 0x50, 0x4F, 0x4E,
|
||||
0x4D, 0x4C, 0x4B, 0x4A,
|
||||
0x49, 0x48, 0x46, 0x45,
|
||||
0x44, 0x42, 0x41, 0x40,
|
||||
0x3E, 0x3D, 0x3B, 0x3A,
|
||||
0x38, 0x37, 0x35, 0x34,
|
||||
0x32, 0x31, 0x2F, 0x2E,
|
||||
0x2C, 0x2B, 0x29, 0x28,
|
||||
0x26, 0x25, 0x23, 0x22,
|
||||
0x20, 0x1F, 0x1E, 0x1C,
|
||||
0x1B, 0x19, 0x18, 0x17,
|
||||
0x16, 0x14, 0x13, 0x12,
|
||||
0x11, 0x10, 0x0F, 0x0E
|
||||
#endif
|
||||
|
||||
#if RGBLIGHT_BREATHE_TABLE_SIZE == 64
|
||||
0x0D, 0x0F,
|
||||
0x11, 0x14,
|
||||
0x16, 0x19,
|
||||
0x1B, 0x1E,
|
||||
0x21, 0x24,
|
||||
0x27, 0x2A,
|
||||
0x2D, 0x30,
|
||||
0x33, 0x36,
|
||||
0x39, 0x3C,
|
||||
0x3F, 0x42,
|
||||
0x44, 0x47,
|
||||
0x4A, 0x4C,
|
||||
0x4E, 0x50,
|
||||
0x51, 0x53,
|
||||
0x54, 0x55,
|
||||
0x56, 0x56,
|
||||
0x56, 0x56,
|
||||
0x56, 0x55,
|
||||
0x54, 0x53,
|
||||
0x51, 0x4F,
|
||||
0x4D, 0x4B,
|
||||
0x49, 0x46,
|
||||
0x44, 0x41,
|
||||
0x3E, 0x3B,
|
||||
0x38, 0x35,
|
||||
0x32, 0x2F,
|
||||
0x2C, 0x29,
|
||||
0x26, 0x23,
|
||||
0x20, 0x1E,
|
||||
0x1B, 0x18,
|
||||
0x16, 0x13,
|
||||
0x11, 0x0F
|
||||
#endif
|
||||
};
|
||||
|
||||
static const int table_scale = 256 / sizeof(rgblight_effect_breathe_table);
|
||||
@@ -1,54 +0,0 @@
|
||||
AUTOCORRECT_ENABLE = no
|
||||
AUDIO_ENABLE = no
|
||||
ENCODER_ENABLE = no
|
||||
CUSTOM_BOOTMAGIC_ENABLE = no
|
||||
CUSTOM_UNICODE_ENABLE = no
|
||||
HAPTIC_ENABLE = no
|
||||
OLED_ENABLE = no
|
||||
RGBLIGHT_ENABLE = no
|
||||
SWAP_HANDS_ENABLE = no
|
||||
TAP_DANCE_ENABLE = no
|
||||
WPM_ENABLE = no
|
||||
|
||||
ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/elite_c)
|
||||
BOOTLOADER = qmk-hid
|
||||
BOOTLOADER_SIZE = 512
|
||||
CUSTOM_SPLIT_TRANSPORT_SYNC = no
|
||||
LTO_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = no
|
||||
endif
|
||||
ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/arduinomicro)
|
||||
BOOTLOADER = qmk-hid
|
||||
BOOTLOADER_SIZE = 512
|
||||
CUSTOM_SPLIT_TRANSPORT_SYNC = no
|
||||
LTO_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = no
|
||||
endif
|
||||
ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/teensy2pp)
|
||||
AUTOCORRECT_ENABLE = no
|
||||
OVERLOAD_FEATURES = yes
|
||||
LTO_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(strip $(KEYBOARD)), handwired/tractyl_manuform/5x6_right/f411)
|
||||
BOOTLOADER = tinyuf2
|
||||
AUTOCORRECT_ENABLE = yes
|
||||
LTO_SUPPORTED = no
|
||||
OVERLOAD_FEATURES = yes
|
||||
HAPTIC_ENABLE = yes
|
||||
HAPTIC_DRIVER = drv2605l
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(OVERLOAD_FEATURES)), yes)
|
||||
AUDIO_ENABLE = yes
|
||||
CAPS_WORD_ENABLE = yes
|
||||
CUSTOM_BOOTMAGIC_ENABLE = yes
|
||||
CUSTOM_UNICODE_ENABLE = yes
|
||||
ENCODER_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
OLED_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
RGBLIGHT_STARTUP_ANIMATION = yes
|
||||
TAP_DANCE_ENABLE = yes
|
||||
SWAP_HANDS_ENABLE = yes
|
||||
WPM_ENABLE = yes
|
||||
endif
|
||||
@@ -1,68 +0,0 @@
|
||||
/*
|
||||
Copyright 2020 Ross Montsinger
|
||||
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/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "rossman360.h"
|
||||
|
||||
#define PGMOD LT(_NUM, KC_PGDN)
|
||||
#define TABMOD LT(_FN1, KC_TAB)
|
||||
#define SPCMOD LT(_FN1, KC_SPACE)
|
||||
#define ENTMOD LT(_FN2, KC_ENTER)
|
||||
#define RSMOD LT(_FN1, KC_MINS)
|
||||
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_DEL,
|
||||
_FN1,
|
||||
_FN2,
|
||||
_NUM,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT(
|
||||
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_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
JUMPBACK,KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, RSMOD , KC_UP,
|
||||
CMDBSP, ALTDEL, CTRLSP, TABMOD, PGMOD , ENTMOD , SPCMOD , MO(_DEL), KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[_DEL] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
REMCAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, BLINE , KC_BSPC, BWORD , KC_NO , KC_NO , _______, _______, _______, _______
|
||||
),
|
||||
[_FN1] = LAYOUT(
|
||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, NTAB,
|
||||
_______, _______, _______, _______, _______, _______, _______, UNDO , _______, _______, _______, _______, _______, KC_SLSH,
|
||||
_______, _______, _______, _______, _______, _______, KC_HOME, KC_LEFT, KC_UP , KC_RIGHT,KC_END , _______, CTAB,
|
||||
_______, _______, XPANDR , _______, PMERGE , _______, _______, PMERGE , KC_DOWN, _______, _______, _______, _______,
|
||||
_______, _______, _______, LWORD , RWORD , KC_NO , _______, KC_NO , _______, _______, _______
|
||||
),
|
||||
[_FN2] = LAYOUT(
|
||||
_______, SPEAK1 , SPEAK2 , SPEAK3 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, PARADOWN, CSPEAK, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_NUM] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_7 , KC_8 , KC_9 , _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_MINS, KC_4 , KC_5 , KC_6 , KC_COLN, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_1 , KC_2 , KC_3 , KC_BSLS, _______, _______,
|
||||
_______, _______, _______, KC_0 , _______, KC_NO , KC_SPC , KC_0 , _______, _______, _______
|
||||
),
|
||||
};
|
||||
Reference in New Issue
Block a user