Manual user keymap removal (#23104)
parent
db1df185c9
commit
e26e12402b
|
@ -1,11 +0,0 @@
|
||||||
// List any combo dictionaries you want loaded to your device below!
|
|
||||||
|
|
||||||
// QMK wide includes
|
|
||||||
//#include "combos/germ-vim-helpers.def"
|
|
||||||
#include "combos/germ-mouse-keys.def"
|
|
||||||
|
|
||||||
// User includes
|
|
||||||
#include "gergoplex.def"
|
|
||||||
|
|
||||||
// Word completion
|
|
||||||
// #include "combos/eng-combos.def"
|
|
|
@ -1,31 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
|
||||||
Copyright 2013 Oleg Kostyuk <cub.uanic@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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Copy and worked on with love from the EZ team
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY
|
|
||||||
|
|
||||||
#undef DEBOUNCE
|
|
||||||
#define DEBOUNCE 25
|
|
||||||
|
|
||||||
#define COMBO_ALLOW_ACTION_KEYS
|
|
||||||
#define COMBO_VARIABLE_LEN
|
|
||||||
|
|
||||||
#define TAPPING_TERM_PER_KEY
|
|
|
@ -1,7 +0,0 @@
|
||||||
// Gergoplex specfic combos
|
|
||||||
|
|
||||||
COMB(hjEnt, KC_ENT, KC_H, KC_J)
|
|
||||||
COMB(loDel, KC_DEL, KC_L, KC_O)
|
|
||||||
COMB(pscBspace, KC_BSPC, KC_P, KC_SCLN)
|
|
||||||
COMB(sdEsc, KC_ESC, KC_D, KC_F)
|
|
||||||
COMB(fgEsc, KC_ESC, KC_F, KC_G)
|
|
|
@ -1,212 +0,0 @@
|
||||||
/* Copyright 2021 Jane Bernhardt
|
|
||||||
*
|
|
||||||
* 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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
/* Good on you for modifying your layout! if you don't have
|
|
||||||
* time to read the QMK docs, a list of keycodes can be found at
|
|
||||||
* https://github.com/qmk/qmk_firmware/blob/master/docs/keycodes.md
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "g/keymap_combo.h"
|
|
||||||
|
|
||||||
enum {
|
|
||||||
_ALPHA, // default
|
|
||||||
_GAME, // gaming
|
|
||||||
_SPECIAL, // special characters
|
|
||||||
_NUMBERS // numbers/function/motion
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef enum {
|
|
||||||
TD_NONE,
|
|
||||||
TD_UNKNOWN,
|
|
||||||
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;
|
|
||||||
|
|
||||||
enum {
|
|
||||||
GAME
|
|
||||||
};
|
|
||||||
|
|
||||||
td_state_t cur_dance(tap_dance_state_t *state);
|
|
||||||
|
|
||||||
void ql_finished(tap_dance_state_t *state, void *user_data);
|
|
||||||
void ql_reset(tap_dance_state_t *state, void *user_data);
|
|
||||||
|
|
||||||
#define KC_CTL_A MT(MOD_LCTL, KC_A) // Tap for A, hold for Control
|
|
||||||
#define KC_SFT_Z MT(MOD_RSFT, KC_Z) // Tap for Z, hold for Shift
|
|
||||||
#define KC_SFT_SL MT(MOD_RSFT, KC_SLSH) // Tap for slash, hold for Shift
|
|
||||||
#define KC_SPE_SPC LT(_SPECIAL, KC_SPC) // Tap for Space, hold for Special layer
|
|
||||||
#define KC_NUM_SPC LT(_NUMBERS, KC_SPC) // Tap for Space, hold for Numbers layer
|
|
||||||
|
|
||||||
/* Combomap
|
|
||||||
*
|
|
||||||
* ,-------------------------------. ,-------------------------------.
|
|
||||||
* | | | | | | | | | | | |
|
|
||||||
* |-------+-----+-----+-----+-----| |-----+-----+-----+-DEL-+-BSPC--|
|
|
||||||
* | | | ESC ESC | | ENT | | | |
|
|
||||||
* |-------+-----+-----+-RMB-+-LMB-| |-----+-----+-----+-----+-------|
|
|
||||||
* | | | | | | | | | | | |
|
|
||||||
* `-------------------------------' `-------------------------------'
|
|
||||||
* .-----------------. .-----------------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* '-----------------' '-----------------'
|
|
||||||
*/
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Alpha layer
|
|
||||||
*
|
|
||||||
* ,-------------------------------. ,-------------------------------.
|
|
||||||
* | Q | W | E | R | T | | Y | U | I | O | P |
|
|
||||||
* |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | CTRL A| S | D | F | G | | H | J | K | L | ; |
|
|
||||||
* |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | SHFT Z| X | C | V | B | | N | M | , | . |SHFT / |
|
|
||||||
* `-------------------------------' `-------------------------------'
|
|
||||||
* .----------------------. .----------------------.
|
|
||||||
* | META | ALT | SPC SPE | | SPC NUM | TAB | SHFT |
|
|
||||||
* '----------------------' '----------------------'
|
|
||||||
*/
|
|
||||||
[_ALPHA] = LAYOUT_split_3x5_3(
|
|
||||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
|
||||||
KC_CTL_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
|
|
||||||
KC_SFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, TD(GAME), KC_DOT, KC_SFT_SL,
|
|
||||||
KC_LGUI, KC_LALT, KC_SPE_SPC, KC_NUM_SPC, KC_TAB, KC_RSFT),
|
|
||||||
|
|
||||||
/* Gaming layer
|
|
||||||
*
|
|
||||||
* ,-------------------------------. ,-------------------------------.
|
|
||||||
* | ~ | Q | W | E | R | | Y | U | I | O | P |
|
|
||||||
* |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | CTRL | A | S | D | F | | H | J | K | L | ; |
|
|
||||||
* |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | SHFT | Z | X | C | V | | N | M | , | . |SHFT / |
|
|
||||||
* `-------------------------------' `-------------------------------'
|
|
||||||
* .------------------. .----------------------.
|
|
||||||
* | META | ALT | SPC | | SPC NUM | TAB | SHFT |
|
|
||||||
* '------------------' '----------------------'
|
|
||||||
*/
|
|
||||||
[_GAME] = LAYOUT_split_3x5_3(
|
|
||||||
KC_TILD, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
|
||||||
KC_LCTL , KC_A, KC_S, KC_D, KC_F, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_N, KC_M, TD(GAME), KC_DOT, KC_SFT_SL,
|
|
||||||
KC_LGUI, KC_LALT, KC_SPC, KC_NUM_SPC, KC_TAB, KC_RSFT),
|
|
||||||
|
|
||||||
/* Special characters layer
|
|
||||||
*
|
|
||||||
* ,-------------------------------. ,-------------------------------.
|
|
||||||
* | ! | @ | { | } | | | | ` | - | = | / | \ |
|
|
||||||
* |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | # | $ | ( | ) | | | LFT | DWN | UP | RGT | ' |
|
|
||||||
* |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | % | ^ | [ | ] | | | & | ~ | + | * | |
|
|
||||||
* `-------------------------------' `-------------------------------'
|
|
||||||
* .-------------------. .-----------------.
|
|
||||||
* | | | | | | " | _ |
|
|
||||||
* '-------------------' '-----------------'
|
|
||||||
*/
|
|
||||||
[_SPECIAL] = LAYOUT_split_3x5_3(
|
|
||||||
KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV, KC_MINS, KC_EQL , KC_SLSH, KC_BSLS,
|
|
||||||
KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, KC_QUOT,
|
|
||||||
KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TRNS, KC_AMPR, KC_TILD, KC_PLUS, KC_ASTR, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, LSFT(KC_QUOTE), LSFT(KC_MINS)),
|
|
||||||
|
|
||||||
/* Numbers/Function/Motion layer
|
|
||||||
*
|
|
||||||
* ,-------------------------------. ,-------------------------------.
|
|
||||||
* | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|
|
||||||
* |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | F1 | F2 | F3 | F4 | F5 | | | | | | |
|
|
||||||
* |-------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | F6 | F7 | F8 | F9 | F10 | | MLFT| MDWN| MUP | MRGT| |
|
|
||||||
* `-------------------------------' `-------------------------------'
|
|
||||||
* .-----------------. .-----------------.
|
|
||||||
* | F11 | F12 | | | | | |
|
|
||||||
* '-----------------' '-----------------'
|
|
||||||
*/
|
|
||||||
[_NUMBERS] = LAYOUT_split_3x5_3(
|
|
||||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
|
||||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, KC_TRNS,
|
|
||||||
KC_F11, KC_F12, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
|
||||||
};
|
|
||||||
|
|
||||||
bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case KC_CTL_A:
|
|
||||||
return false;
|
|
||||||
default:
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
td_state_t cur_dance(tap_dance_state_t *state) {
|
|
||||||
if (state->count == 1)
|
|
||||||
return TD_SINGLE_TAP;
|
|
||||||
if (state->count == 2)
|
|
||||||
return TD_DOUBLE_TAP;
|
|
||||||
else if (state->count == 3)
|
|
||||||
return TD_TRIPLE_TAP;
|
|
||||||
return TD_UNKNOWN;
|
|
||||||
}
|
|
||||||
|
|
||||||
static td_tap_t ql_tap_state = {
|
|
||||||
.is_press_action = true,
|
|
||||||
.state = TD_NONE
|
|
||||||
};
|
|
||||||
|
|
||||||
void ql_finished(tap_dance_state_t *state, void *user_data) {
|
|
||||||
ql_tap_state.state = cur_dance(state);
|
|
||||||
switch (ql_tap_state.state) {
|
|
||||||
case TD_SINGLE_TAP:
|
|
||||||
tap_code(KC_COMMA);
|
|
||||||
break;
|
|
||||||
case TD_DOUBLE_TAP:
|
|
||||||
tap_code(KC_COMMA);
|
|
||||||
tap_code(KC_COMMA);
|
|
||||||
break;
|
|
||||||
case TD_TRIPLE_TAP:
|
|
||||||
if (layer_state_is(_GAME))
|
|
||||||
layer_off(_GAME);
|
|
||||||
else
|
|
||||||
layer_on(_GAME);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void ql_reset(tap_dance_state_t *state, void *user_data) {
|
|
||||||
ql_tap_state.state = TD_NONE;
|
|
||||||
}
|
|
||||||
|
|
||||||
tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
[GAME] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, ql_finished, ql_reset)
|
|
||||||
};
|
|
||||||
|
|
||||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case QK_TAP_DANCE ... QK_TAP_DANCE_MAX:
|
|
||||||
return 275;
|
|
||||||
default:
|
|
||||||
return TAPPING_TERM;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
# George Petri's Gergoplex layout
|
|
||||||
Vim and programming focused layout.
|
|
||||||
```
|
|
||||||
qmk compile -kb gboards/gergoplex -km georgepetri
|
|
||||||
qmk flash -kb gboards/gergoplex -km georgepetri
|
|
||||||
```
|
|
|
@ -1,20 +0,0 @@
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
# make gboards/gergoplex:default:flash
|
|
||||||
# Make sure you have dfu-programmer installed!
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#Debug options
|
|
||||||
VERBOSE = no
|
|
||||||
DEBUG_MATRIX_SCAN_RATE = no
|
|
||||||
DEBUG_MATRIX = no
|
|
||||||
CONSOLE_ENABLE = no
|
|
||||||
|
|
||||||
#Combos!
|
|
||||||
COMBO_ENABLE = yes
|
|
||||||
VPATH += keyboards/gboards/
|
|
||||||
|
|
||||||
ifeq ($(strip $(DEBUG_MATRIX)), yes)
|
|
||||||
OPT_DEFS += -DDEBUG_MATRIX
|
|
||||||
endif
|
|
||||||
|
|
||||||
TAP_DANCE_ENABLE = yes
|
|
|
@ -1,11 +0,0 @@
|
||||||
// List any combo dictionaries you want loaded to your device below!
|
|
||||||
|
|
||||||
// QMK wide includes
|
|
||||||
//#include "combos/germ-vim-helpers.def"
|
|
||||||
//#include "combos/germ-mouse-keys.def"
|
|
||||||
|
|
||||||
// User includes
|
|
||||||
#include "gergoplex.def"
|
|
||||||
|
|
||||||
// Word completion
|
|
||||||
// #include "combos/eng-combos.def"
|
|
|
@ -1,4 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#define COMBO_ALLOW_ACTION_KEYS
|
|
||||||
#define COMBO_VARIABLE_LEN
|
|
|
@ -1,17 +0,0 @@
|
||||||
// Gergoplex specfic combos
|
|
||||||
|
|
||||||
COMB(qwGrav, KC_GRV, KC_W, KC_Q)
|
|
||||||
COMB(wsEsc, KC_ESC, KC_W, KC_S)
|
|
||||||
COMB(sdBackspace, KC_BSPC, KC_S, KC_D)
|
|
||||||
COMB(dfTab, KC_TAB, KC_D, KC_F)
|
|
||||||
COMB(cvEnter, KC_ENT, KC_C, KC_V)
|
|
||||||
|
|
||||||
COMB(ioMinus, KC_MINS, KC_I, KC_O)
|
|
||||||
COMB(opBackslash, KC_BSLS, KC_O, KC_P)
|
|
||||||
COMB(hjLess, KC_LT, KC_H, KC_J)
|
|
||||||
COMB(klGreat, KC_GT, KC_K, KC_L)
|
|
||||||
COMB(jkColon, KC_COLN, KC_J, KC_K)
|
|
||||||
COMB(mcUnder, KC_UNDS, KC_M, KC_COMM)
|
|
||||||
COMB(nmQuote, KC_QUOT, KC_N, KC_M)
|
|
||||||
|
|
||||||
SUBS(pasta, "I'd just like to interject for a moment.", KC_H, KC_J, KC_K, KC_L)
|
|
|
@ -1,286 +0,0 @@
|
||||||
/* Copyright 2022 Tony Grosinger
|
|
||||||
*
|
|
||||||
* 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 "g/keymap_combo.h"
|
|
||||||
|
|
||||||
enum {
|
|
||||||
_ALPHA, // Default
|
|
||||||
_SYMB, // Symbols
|
|
||||||
_NUMB, // Numbers
|
|
||||||
_ARROWS, // Arrows and OS
|
|
||||||
_TMUX, // TMUX Nav layer
|
|
||||||
_POPOS, // Gnome Shell, aka PopOS
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// Macros
|
|
||||||
enum custom_keycodes {
|
|
||||||
TMUX_NEW = SAFE_RANGE,
|
|
||||||
TMUX_ZOOM,
|
|
||||||
TMUX_SCROLL,
|
|
||||||
TMUX_PN_LT,
|
|
||||||
TMUX_PN_UP,
|
|
||||||
TMUX_PN_DN,
|
|
||||||
TMUX_PN_RT,
|
|
||||||
TMUX_WN_LT,
|
|
||||||
TMUX_WN_RT,
|
|
||||||
TMUX_SP_VT,
|
|
||||||
TMUX_SP_HZ,
|
|
||||||
VIM_CLIP_CP,
|
|
||||||
VIM_CLIP_PST,
|
|
||||||
VIM_MACRO,
|
|
||||||
};
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case TMUX_NEW:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(C(KC_B));
|
|
||||||
SEND_STRING("c");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TMUX_ZOOM:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(C(KC_B));
|
|
||||||
SEND_STRING("z");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TMUX_SCROLL:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(C(KC_B));
|
|
||||||
SEND_STRING("[");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TMUX_PN_LT:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(C(KC_B));
|
|
||||||
tap_code(KC_LEFT);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TMUX_PN_DN:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(C(KC_B));
|
|
||||||
tap_code(KC_DOWN);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TMUX_PN_UP:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(C(KC_B));
|
|
||||||
tap_code(KC_UP);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TMUX_PN_RT:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(C(KC_B));
|
|
||||||
tap_code(KC_RIGHT);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TMUX_WN_LT:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(C(KC_B));
|
|
||||||
SEND_STRING("p");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TMUX_WN_RT:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(C(KC_B));
|
|
||||||
SEND_STRING("n");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TMUX_SP_VT:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(C(KC_B));
|
|
||||||
SEND_STRING("%");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TMUX_SP_HZ:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(C(KC_B));
|
|
||||||
SEND_STRING("\"");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case VIM_CLIP_CP:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(S(KC_QUOTE));
|
|
||||||
tap_code16(S(KC_EQUAL));
|
|
||||||
tap_code(KC_Y);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case VIM_CLIP_PST:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(S(KC_QUOTE));
|
|
||||||
tap_code16(S(KC_EQUAL));
|
|
||||||
tap_code(KC_P);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case VIM_MACRO:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(S(KC_2));
|
|
||||||
tap_code(KC_Q);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
/*
|
|
||||||
case LAYRMOD:
|
|
||||||
// Act as a mod key if held, or toggle a layer if tapped
|
|
||||||
// replace KC_LCTL with desired mod, and _TARGET with desired layer name / number
|
|
||||||
if (record->event.pressed) {
|
|
||||||
uint8_t key_timer = timer_read();
|
|
||||||
register_mods(MOD_BIT(KC_LCTL));
|
|
||||||
} else {
|
|
||||||
unregister_mods(MOD_BIT(KC_LCTL));
|
|
||||||
if (timer_elapsed(key_timer) < 200) {
|
|
||||||
layer_invert(_TARGET);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Combos
|
|
||||||
*
|
|
||||||
* ,-----------------------------. ,-----------------------------.
|
|
||||||
* | ` | | | | | | MINS | BSLH |
|
|
||||||
* |-----+----ESC----+-----+-----| |-----+-----+-----+-----------|
|
|
||||||
* | | BSPC TAB | | | LES COLN GRT | |
|
|
||||||
* |-----+-----+-----+--RMB+-LMB-| |-----+-----+-----+-----------|
|
|
||||||
* | | | ENT | | | QUO UNDR | | |
|
|
||||||
* `-----+-----+-----+-----+-----' `-----------------------------'
|
|
||||||
* .-------------------------. .-------------------.
|
|
||||||
* | | | | | | | |
|
|
||||||
* '-------------------------' '-------------------'
|
|
||||||
*/
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap 0: Default layer
|
|
||||||
* ,------------------------------. ,----------------------------------.
|
|
||||||
* | Q | W | E | R | T | | Y | U | I | O | P |
|
|
||||||
* |------+-----+-----+-----+-----| |-----+-----+-----+-------+--------|
|
|
||||||
* |CTRL/A| S | D | F | G | | H | J | K | L | CTRL/; |
|
|
||||||
* |------+-----+-----+-----+-----| |-----+-----+-----+-------+--------|
|
|
||||||
* |SHFT/Z|ALT/X| C | V | B | | N | M | < | ALT/> | SHFT/? |
|
|
||||||
* `------+-----+-----+------+----' `----------------------------------'
|
|
||||||
* .-----------------. .----------------------.
|
|
||||||
* | |GUI |SPC(NUM)| |SPC(SYM)|TMUX | PopOS |
|
|
||||||
* '-----------------' '----------------------'
|
|
||||||
*/
|
|
||||||
[_ALPHA] = LAYOUT_split_3x5_3(
|
|
||||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
|
||||||
MT(MOD_LCTL, KC_A),KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, MT(MOD_LCTL, KC_SCLN),
|
|
||||||
MT(MOD_LSFT, KC_Z),MT(MOD_LALT, KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, MT(MOD_LALT, KC_DOT), MT(MOD_RSFT, KC_SLSH),
|
|
||||||
|
|
||||||
KC_NO, KC_LGUI, LT(_NUMB, KC_SPC), // Left
|
|
||||||
LT(_SYMB, KC_SPC), MO(_TMUX), MO(_POPOS) // Right
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap 1: Symbols layer
|
|
||||||
* ,------------------------------. ,-------------------------------.
|
|
||||||
* | ! | @ | # | $ | % | | ^ | & | * | + | = |
|
|
||||||
* |------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 |
|
|
||||||
* |------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | | | | | | | | | | F11 | F12 |
|
|
||||||
* `------+-----+-----+-----+-----' `-------------------------------'
|
|
||||||
* .-----------------. .-----------------.
|
|
||||||
* | | DEL | MO3 | | HLD | SPC | |
|
|
||||||
* '-----------------' '-----------------'
|
|
||||||
*/
|
|
||||||
[_SYMB] = LAYOUT_split_3x5_3(
|
|
||||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_PLUS, KC_EQL,
|
|
||||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F11, KC_F12,
|
|
||||||
KC_NO, KC_DEL, MO(_ARROWS), KC_TRNS, KC_SPC, KC_NO
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap 2: Number layer
|
|
||||||
* ,------------------------------. ,-------------------------------.
|
|
||||||
* | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 |
|
|
||||||
* |------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | CTRL | | ( | ) | | | | 4 | 7 | 6 | |
|
|
||||||
* |------+-----+-----+-----+-----| |-----+-----+-----+-----+-------|
|
|
||||||
* | SHFT | | [ | ] | | | | 1 | 2 | 3 | . |
|
|
||||||
* `------+-----+-----+-----+-----' `-------------------------------'
|
|
||||||
* .-----------------. .-----------------.
|
|
||||||
* | | | HLD | | MO3 | 0 | |
|
|
||||||
* '-----------------' '-----------------'
|
|
||||||
*/
|
|
||||||
[_NUMB] = LAYOUT_split_3x5_3(
|
|
||||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
|
||||||
KC_LCTL, KC_NO, KC_LPRN, KC_RPRN, KC_NO, KC_NO, KC_4, KC_5, KC_6, KC_NO,
|
|
||||||
KC_LSFT, KC_NO, KC_LBRC, KC_RBRC, KC_NO, KC_NO, KC_1, KC_2, KC_3, KC_DOT,
|
|
||||||
KC_NO,KC_NO,KC_TRNS, MO(_ARROWS),KC_0,KC_NO
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap 3: Arrows and OS
|
|
||||||
* ,------------------------------. ,------------------------------------.
|
|
||||||
* | | | | | | | | | | | |
|
|
||||||
* |------+-----+-----+-----+-----| |-------+-------+------+-------+-----|
|
|
||||||
* | CTRL |HOME | PUP | | | | LEFT | DOWN | UP | RIGHT | |
|
|
||||||
* |------+-----+-----+-----+-----| |-------+-------+------+-------+-----|
|
|
||||||
* | SHFT |END | PDN | | | | | | | | |
|
|
||||||
* `------+-----+-----+-----+-----' `------------------------------------'
|
|
||||||
* .-----------------. .-----------------.
|
|
||||||
* | | | HLD | | HLD | | |
|
|
||||||
* '-----------------' '-----------------'
|
|
||||||
*/
|
|
||||||
[_ARROWS] = LAYOUT_split_3x5_3(
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_LCTL, KC_HOME, KC_PGUP, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO,
|
|
||||||
KC_LSFT, KC_END, KC_PGDN, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO,KC_NO,KC_TRNS, KC_TRNS,KC_NO,KC_NO
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap 4: Tmux navigation layer
|
|
||||||
* ,----------------------------------. ,---------------------------------------.
|
|
||||||
* | Vi Mcr | | | | SP VT | | Vi Ynk| | | | Vi PT |
|
|
||||||
* |--------+-----+-----+-----+-------| |-------+-------+-------+-------+-------|
|
|
||||||
* | | SCRL| | | | | PN LT | PN DN | PN UP | PN RT | SP HZ |
|
|
||||||
* |--------+-----+-----+-----+-------| |-------+-------+-------+-------+-------|
|
|
||||||
* | ZOOM | KILL| NEW | | | | W LT | | | W RT | |
|
|
||||||
* `--------+-----+-----+-----+-------' `---------------------------------------'
|
|
||||||
* .-----------------. .-----------------.
|
|
||||||
* | | | | | | HLD | |
|
|
||||||
* '-----------------' '-----------------'
|
|
||||||
*/
|
|
||||||
[_TMUX] = LAYOUT_split_3x5_3(
|
|
||||||
VIM_MACRO, KC_NO, KC_NO, KC_NO, TMUX_SP_VT, VIM_CLIP_CP, KC_NO, KC_NO, KC_NO, VIM_CLIP_PST,
|
|
||||||
KC_NO, TMUX_SCROLL, KC_NO, KC_NO, KC_NO, TMUX_PN_LT, TMUX_PN_DN, TMUX_PN_UP, TMUX_PN_RT, TMUX_SP_HZ,
|
|
||||||
TMUX_ZOOM, KC_NO, TMUX_NEW, KC_NO, KC_NO, TMUX_WN_LT, KC_NO, KC_NO, TMUX_WN_RT, KC_NO,
|
|
||||||
KC_NO,KC_NO,KC_NO, KC_NO,KC_TRNS,KC_NO
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap 5: Gnome Shell (PopOS)
|
|
||||||
* ,------------------------------. ,--------------------------------------.
|
|
||||||
* | | | | | | | MV-DWN| D-DWN | D-UP | MV-UP | Flip |
|
|
||||||
* |------+-----+-----+-----+-----| |-------+-------+-------+-------+------|
|
|
||||||
* | | | | | | | W-L | W-DWN | W-UP | W-R | |
|
|
||||||
* |------+-----+-----+-----+-----| |-------+-------+-------+-------+------|
|
|
||||||
* | | | | | | | Scrns | Apps | Close | | |
|
|
||||||
* `------+-----+-----+-----+-----' `--------------------------------------'
|
|
||||||
* .-----------------. .-----------------.
|
|
||||||
* | | | | | | | HLD |
|
|
||||||
* '-----------------' '-----------------'
|
|
||||||
*/
|
|
||||||
[_POPOS] = LAYOUT_split_3x5_3(
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, SGUI(KC_J), LCTL(LGUI(KC_J)), LCTL(LGUI(KC_K)), SGUI(KC_K), LGUI(KC_O),
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LGUI(KC_H), LGUI(KC_J), LGUI(KC_K), LGUI(KC_L), KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, LGUI(KC_D), LGUI(KC_A), LGUI(KC_Q), KC_NO, KC_NO,
|
|
||||||
KC_NO,KC_NO,KC_NO, KC_NO,KC_NO,KC_TRNS
|
|
||||||
),
|
|
||||||
};
|
|
|
@ -1,12 +0,0 @@
|
||||||
# GergoPlex
|
|
||||||
|
|
||||||
This keymap I created for the GergoPlex with a focus on:
|
|
||||||
|
|
||||||
- Keeping keys close to their normal locations when possible (number/symbol rows)
|
|
||||||
- Work well for vim, tmux, and Ubuntu default desktop shortcuts
|
|
||||||
- Work okay for OSx shortcuts
|
|
||||||
|
|
||||||
## Firmware Building
|
|
||||||
|
|
||||||
util/docker_build.sh gboards/gergoplex:tgrosinger
|
|
||||||
util/docker_build.sh gboards/gergoplex:tgrosinger:flash
|
|
|
@ -1,18 +0,0 @@
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
# make gboards/gergoplex:default:flash
|
|
||||||
# Make sure you have dfu-programmer installed!
|
|
||||||
#----------------------------------------------------------------------------
|
|
||||||
|
|
||||||
#Debug options
|
|
||||||
VERBOSE = no
|
|
||||||
DEBUG_MATRIX_SCAN_RATE = no
|
|
||||||
DEBUG_MATRIX = no
|
|
||||||
CONSOLE_ENABLE = no
|
|
||||||
|
|
||||||
#Combos!
|
|
||||||
COMBO_ENABLE = yes
|
|
||||||
VPATH += keyboards/gboards/
|
|
||||||
|
|
||||||
ifeq ($(strip $(DEBUG_MATRIX)), yes)
|
|
||||||
OPT_DEFS += -DDEBUG_MATRIX
|
|
||||||
endif
|
|
|
@ -1,119 +0,0 @@
|
||||||
/* Copyright 2021 Zhi Quan
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
enum custom_keycodes {
|
|
||||||
KC_P00 = SAFE_RANGE
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[0] = LAYOUT_all( /* Base */
|
|
||||||
KC_F1, KC_F2, 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_EQL, KC_BSPC, KC_DEL, TG(2), KC_PSLS, KC_PAST, KC_PMNS,
|
|
||||||
KC_F3, KC_F4, 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, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
|
||||||
KC_F5, KC_F6, KC_ESC, 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_P4, KC_P5, KC_P6, KC_PPLS,
|
|
||||||
KC_F7, KC_F8, KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1), KC_P1, KC_P2, KC_P3, KC_PENT,
|
|
||||||
KC_F9, KC_F10, KC_LCTL, KC_LCMD, KC_SPC, KC_ROPT, MO(1), KC_P0, KC_P00, KC_PDOT, KC_PENT),
|
|
||||||
|
|
||||||
[1] = LAYOUT_all( /* FN */
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, 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_DEL, KC_TRNS, KC_TRNS, KC_MPRV, KC_MNXT, KC_VOLD,
|
|
||||||
KC_TRNS, 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, QK_BOOT, KC_HOME, KC_UP, KC_PGUP, KC_VOLU,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_MUTE, KC_RGHT, KC_VOLU,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_DOWN, KC_PGDN, KC_MPLY,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MPLY),
|
|
||||||
|
|
||||||
[2] = LAYOUT_all( /* Numpad */
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_UP, KC_PGUP, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, XXXXXXX, KC_RGHT, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_DOWN, KC_PGDN, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
|
||||||
|
|
||||||
[3] = LAYOUT_all( /* Empty for dynamic keymaps */
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
|
||||||
};
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch(keycode) {
|
|
||||||
case KC_P00:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code(KC_P0);
|
|
||||||
tap_code(KC_P0);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case KC_ESC:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
// Turn on capslock indicator.
|
|
||||||
writePin(LED_CAPS_LOCK_PIN, LED_PIN_ON_STATE);
|
|
||||||
} else {
|
|
||||||
// Turn off capslock indicator.
|
|
||||||
writePin(LED_CAPS_LOCK_PIN, !LED_PIN_ON_STATE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Customized function so that numlock and capslock indicator are no longer controlled by the host.
|
|
||||||
bool led_update_user(led_t led_state) {
|
|
||||||
#if defined(LED_NUM_LOCK_PIN) || defined(LED_CAPS_LOCK_PIN) || defined(LED_SCROLL_LOCK_PIN) || defined(LED_COMPOSE_PIN) || defined(LED_KANA_PIN)
|
|
||||||
# if LED_PIN_ON_STATE == 0
|
|
||||||
// invert the whole thing to avoid having to conditionally !led_state.x later
|
|
||||||
led_state.raw = ~led_state.raw;
|
|
||||||
# endif
|
|
||||||
|
|
||||||
// # ifdef LED_NUM_LOCK_PIN
|
|
||||||
// writePin(LED_NUM_LOCK_PIN, led_state.num_lock);
|
|
||||||
// # endif
|
|
||||||
// # ifdef LED_CAPS_LOCK_PIN
|
|
||||||
// writePin(LED_CAPS_LOCK_PIN, led_state.caps_lock);
|
|
||||||
// # endif
|
|
||||||
# ifdef LED_SCROLL_LOCK_PIN
|
|
||||||
writePin(LED_SCROLL_LOCK_PIN, led_state.scroll_lock);
|
|
||||||
# endif
|
|
||||||
# ifdef LED_COMPOSE_PIN
|
|
||||||
writePin(LED_COMPOSE_PIN, led_state.compose);
|
|
||||||
# endif
|
|
||||||
# ifdef LED_KANA_PIN
|
|
||||||
writePin(LED_KANA_PIN, led_state.kana);
|
|
||||||
# endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Return false to let led_update_kb fall through.
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Customized function to manage numlock indicator based on layer.
|
|
||||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
|
||||||
switch (get_highest_layer(state)) {
|
|
||||||
// Base layer
|
|
||||||
case 0:
|
|
||||||
// Turn on numlock indicator.
|
|
||||||
writePin(LED_NUM_LOCK_PIN, LED_PIN_ON_STATE);
|
|
||||||
break;
|
|
||||||
|
|
||||||
// Numpad navigation layer
|
|
||||||
case 2:
|
|
||||||
// Turn off numlock indicator.
|
|
||||||
writePin(LED_NUM_LOCK_PIN, !LED_PIN_ON_STATE);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
return state;
|
|
||||||
}
|
|
|
@ -1,21 +0,0 @@
|
||||||
# Personal W1-AT keymap
|
|
||||||
The main highlights are as follows:
|
|
||||||
* VIA support enabled
|
|
||||||
* Enter bootloader mode using Fn + \
|
|
||||||
* Grave key (` and ~) in place of Esc key
|
|
||||||
* Esc in place of CapsLock key
|
|
||||||
* Use NumLock LED indicator on layers: ON in layer 0, OFF in layer 2 (workaround for macOS since there is no NumLock key)
|
|
||||||
* Use CapsLock LED indicator on Esc key
|
|
||||||
|
|
||||||
|
|
||||||
## Layer 0 (Base)
|
|
||||||
---
|
|
||||||
![Layer 0](https://i.imgur.com/l1OKSBB.png)
|
|
||||||
|
|
||||||
## Layer 1 (Function)
|
|
||||||
---
|
|
||||||
![Layer 1](https://i.imgur.com/RdzVyvb.png)
|
|
||||||
|
|
||||||
## Layer 2 (Numpad Navigation)
|
|
||||||
---
|
|
||||||
![Layer 2](https://i.imgur.com/xKVnQaK.png)
|
|
|
@ -1 +0,0 @@
|
||||||
VIA_ENABLE = yes
|
|
|
@ -1,56 +0,0 @@
|
||||||
/* Copyright 2022 Eugenio Pastoral
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
|
||||||
enum custom_layers {
|
|
||||||
_BL,
|
|
||||||
_FL,
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap _BL: Base Layer (Default Layer)
|
|
||||||
*/
|
|
||||||
[_BL] = LAYOUT(
|
|
||||||
QK_GESC, 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_HOME,
|
|
||||||
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, KC_END,
|
|
||||||
KC_CAPS, 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_PGUP,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
|
||||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
|
||||||
|
|
||||||
/* Keymap _FL: Function Layer
|
|
||||||
*/
|
|
||||||
[_FL] = LAYOUT(
|
|
||||||
KC_GRV, 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_DEL, RGB_TOG,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, RGB_VAI, _______,
|
|
||||||
EE_CLR, _______, _______, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD)
|
|
||||||
};
|
|
||||||
|
|
||||||
// Turns side LEDs to white for caps lock and layer indicators.
|
|
||||||
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
|
||||||
if (host_keyboard_led_state().caps_lock || get_highest_layer(layer_state | default_layer_state)) {
|
|
||||||
for (uint8_t i = led_min; i < led_max; i++) {
|
|
||||||
if (HAS_FLAGS(g_led_config.flags[i], 0x02)) { // 0x02 == LED_FLAG_UNDERGLOW
|
|
||||||
rgb_matrix_set_color(i, 0xff, 0xff, 0xff);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
};
|
|
|
@ -1 +0,0 @@
|
||||||
# ANSI GMMKV2 65% Layout
|
|
|
@ -1,72 +0,0 @@
|
||||||
/* Copyright 2022 Eugenio Pastoral
|
|
||||||
*
|
|
||||||
* 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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
RGB_MATRIX_EFFECT(SOLID_UNDERGLOW)
|
|
||||||
RGB_MATRIX_EFFECT(HOLOGRAPHICS_UNDERGLOW)
|
|
||||||
|
|
||||||
#ifdef RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
|
||||||
|
|
||||||
// This is a side lights only configuration where the solid color is following the current HSV setting.
|
|
||||||
static bool SOLID_UNDERGLOW(effect_params_t* params) {
|
|
||||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
|
||||||
|
|
||||||
RGB rgb = rgb_matrix_hsv_to_rgb(rgb_matrix_config.hsv);
|
|
||||||
for (uint8_t i = led_min; i < led_max; i++) {
|
|
||||||
if (HAS_FLAGS(g_led_config.flags[i], 0x02)) { // 0x02 == LED_FLAG_UNDERGLOW
|
|
||||||
rgb_matrix_set_color(i, rgb.r, rgb.g, rgb.b);
|
|
||||||
} else {
|
|
||||||
rgb_matrix_set_color(i, 0x00, 0x00, 0x00);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return rgb_matrix_check_finished_leds(led_max);
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is a side lights only configuration where the color is set to a static gradient.
|
|
||||||
static bool HOLOGRAPHICS_UNDERGLOW(effect_params_t* params) {
|
|
||||||
RGB_MATRIX_USE_LIMITS(led_min, led_max);
|
|
||||||
|
|
||||||
for (uint8_t i = led_min; i < led_max; i++) {
|
|
||||||
if (HAS_FLAGS(g_led_config.flags[i], 0x02)) { // 0x02 == LED_FLAG_UNDERGLOW
|
|
||||||
// RIGHT-HAND SIDE LEDS || LEFT-HAND SIDE LEDS
|
|
||||||
if (i == 67 || i == 77) {
|
|
||||||
rgb_matrix_set_color(i, 0xff, 0x00, 0xee);
|
|
||||||
} else if (i == 68 || i == 78) {
|
|
||||||
rgb_matrix_set_color(i, 0xcc, 0x00, 0xff);
|
|
||||||
} else if (i == 69 || i == 79) {
|
|
||||||
rgb_matrix_set_color(i, 0x9e, 0x00, 0xff);
|
|
||||||
} else if (i == 70 || i == 80) {
|
|
||||||
rgb_matrix_set_color(i, 0x70, 0x00, 0xff);
|
|
||||||
} else if (i == 71 || i == 81) {
|
|
||||||
rgb_matrix_set_color(i, 0x52, 0x00, 0xff);
|
|
||||||
} else if (i == 72 || i == 82) {
|
|
||||||
rgb_matrix_set_color(i, 0x33, 0x00, 0xff);
|
|
||||||
} else if (i == 73 || i == 83) {
|
|
||||||
rgb_matrix_set_color(i, 0x00, 0x38, 0xff);
|
|
||||||
} else if (i == 74 || i == 84) {
|
|
||||||
rgb_matrix_set_color(i, 0x00, 0x57, 0xff);
|
|
||||||
} else if (i == 75 || i == 85) {
|
|
||||||
rgb_matrix_set_color(i, 0x00, 0x85, 0xff);
|
|
||||||
} else if (i == 76 || i == 86) {
|
|
||||||
rgb_matrix_set_color(i, 0x00, 0xb2, 0xff);
|
|
||||||
} else {
|
|
||||||
rgb_matrix_set_color(i, 0x00, 0x00, 0x00);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return rgb_matrix_check_finished_leds(led_max);
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // RGB_MATRIX_CUSTOM_EFFECT_IMPLS
|
|
|
@ -1 +0,0 @@
|
||||||
RGB_MATRIX_CUSTOM_USER = yes
|
|
|
@ -1,44 +0,0 @@
|
||||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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 QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
|
||||||
enum custom_layers {
|
|
||||||
_BL,
|
|
||||||
_FL,
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap _BL: Base Layer (Default Layer)
|
|
||||||
*/
|
|
||||||
[_BL] = LAYOUT(
|
|
||||||
QK_GESC, 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_HOME,
|
|
||||||
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, KC_PGUP,
|
|
||||||
KC_CAPS, 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_PGDN,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_LEFT, KC_DOWN, KC_RGHT),
|
|
||||||
|
|
||||||
/* Keymap _FL: Function Layer
|
|
||||||
*/
|
|
||||||
[_FL] = LAYOUT(
|
|
||||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KC_INS,
|
|
||||||
RGB_M_P, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, RGB_HUI, RGB_HUD, RGB_SPD, RGB_SPI, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, _______, RGB_VAI, RGB_TOG,
|
|
||||||
KC_MUTE, KC_VOLU, KC_VOLD, QK_BOOT, _______, _______, RGB_RMOD, RGB_VAD, RGB_MOD)
|
|
||||||
};
|
|
|
@ -1 +0,0 @@
|
||||||
# ANSI GMMKV2 65% Layout
|
|
|
@ -1,107 +0,0 @@
|
||||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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 QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
// clang-format off
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
|
||||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
|
||||||
// Tab Q W E R T Y U I O P [ ] PgUp
|
|
||||||
// Caps A S D F G H J K L ; " # Enter PgDn
|
|
||||||
// Sh_L / Z X C V B N M , . ? Sh_R Up End
|
|
||||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
|
||||||
|
|
||||||
|
|
||||||
// The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT key (to put the board into bootloader mode). Without
|
|
||||||
// this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
|
|
||||||
// cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
|
|
||||||
// if that's your preference.
|
|
||||||
//
|
|
||||||
// To put the keyboard in bootloader mode, use FN+backspace. If you accidentally put it into bootloader, you can just unplug the USB cable and
|
|
||||||
// it'll be back to normal when you plug it back in.
|
|
||||||
//
|
|
||||||
// This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
|
|
||||||
// Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
|
|
||||||
// Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
|
|
||||||
[0] = LAYOUT(
|
|
||||||
KC_ESC, 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_HOME, KC_MUTE,
|
|
||||||
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_EQL, KC_BSPC, KC_DEL,
|
|
||||||
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_PGUP,
|
|
||||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
|
|
||||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
),
|
|
||||||
|
|
||||||
[1] = LAYOUT(
|
|
||||||
_______, KC_MYCM, KC_WHOM, KC_CALC, KC_MSEL, KC_MPRV, KC_MNXT, KC_MPLY, KC_MSTP, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_PSCR, _______,
|
|
||||||
_______, RGB_TOG, RGB_M_P, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
|
|
||||||
_______, RGB_SAI, RGB_VAI, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS, _______, _______,
|
|
||||||
_______, _______, _______, RGB_HUI, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
|
|
||||||
),
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
#ifdef ENCODER_ENABLE
|
|
||||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
|
||||||
if (clockwise) {
|
|
||||||
tap_code(KC_VOLU);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_VOLD);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
|
||||||
static uint32_t cycle_led_timer = 0;
|
|
||||||
static uint8_t current_value = 0;
|
|
||||||
static uint8_t left_side_leds[8] = {68, 71, 74, 77, 81, 84, 88, 92};
|
|
||||||
static uint8_t right_side_leds[8] = {69, 72, 75, 78, 82, 85, 89, 93};
|
|
||||||
|
|
||||||
if (host_keyboard_led_state().caps_lock) {
|
|
||||||
if (timer_elapsed32(cycle_led_timer) > 500) {
|
|
||||||
current_value = current_value == 0 ? 255 : 0;
|
|
||||||
cycle_led_timer = timer_read32();
|
|
||||||
}
|
|
||||||
HSV tempHSV = {.h = 0, .s = 255, .v = current_value};
|
|
||||||
RGB tempRGB = hsv_to_rgb(tempHSV);
|
|
||||||
for (uint8_t i = 0; i < ARRAY_SIZE(left_side_leds); i++) {
|
|
||||||
rgb_matrix_set_color(left_side_leds[i], tempRGB.r, tempRGB.g, tempRGB.b);
|
|
||||||
rgb_matrix_set_color(right_side_leds[i], tempRGB.r, tempRGB.g, tempRGB.b);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static uint8_t l2_functions[26] = {6, 7, 8, 12, 13, 14, 15, 16, 18, 23, 28, 34, 38, 39, 44, 50, 56, 61, 66, 70, 80, 86, 94, 95, 96, 98};
|
|
||||||
switch(get_highest_layer(layer_state)){ // special handling per layer
|
|
||||||
case 2: //layer one
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
for (uint8_t i = 0; i < ARRAY_SIZE(l2_functions); i++) {
|
|
||||||
RGB_MATRIX_INDICATOR_SET_COLOR(l2_functions[i], 255, 0, 0);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
|
@ -1,8 +0,0 @@
|
||||||
# chofstede GMMK Pro layout
|
|
||||||
|
|
||||||
- Added Print-Screen to FN+POS1
|
|
||||||
- Added Insert to FN+#
|
|
||||||
- The LED bars on the left and right side of the keyboard blink red when CAPS Lock is enabled
|
|
||||||
- All mapped keys light up red when FN is being pressed
|
|
||||||
|
|
||||||
|
|
|
@ -1,72 +0,0 @@
|
||||||
/* Copyright 2021 Glorious, LLC <salman@pcgamingrace.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 QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
// clang-format off
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
// ESC F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Prt Rotary(Mute)
|
|
||||||
// ~ 1 2 3 4 5 6 7 8 9 0 - (=) BackSpc Del
|
|
||||||
// Tab Q W E R T Y U I O P [ ] PgUp
|
|
||||||
// Caps A S D F G H J K L ; " # Enter PgDn
|
|
||||||
// Sh_L / Z X C V B N M , . ? Sh_R Up End
|
|
||||||
// Ct_L Win_L Alt_L SPACE Alt_R FN Ct_R Left Down Right
|
|
||||||
|
|
||||||
|
|
||||||
// The FN key by default maps to a momentary toggle to layer 1 to provide access to the QK_BOOT key (to put the board into bootloader mode). Without
|
|
||||||
// this mapping, you have to open the case to hit the button on the bottom of the PCB (near the USB cable attachment) while plugging in the USB
|
|
||||||
// cable to get the board into bootloader mode - definitely not fun when you're working on your QMK builds. Remove this and put it back to KC_RGUI
|
|
||||||
// if that's your preference.
|
|
||||||
//
|
|
||||||
// To put the keyboard in bootloader mode, use FN+backspace. If you accidentally put it into bootloader, you can just unplug the USB cable and
|
|
||||||
// it'll be back to normal when you plug it back in.
|
|
||||||
//
|
|
||||||
// This keyboard defaults to 6KRO instead of NKRO for compatibility reasons (some KVMs and BIOSes are incompatible with NKRO).
|
|
||||||
// Since this is, among other things, a "gaming" keyboard, a key combination to enable NKRO on the fly is provided for convenience.
|
|
||||||
// Press Fn+N to toggle between 6KRO and NKRO. This setting is persisted to the EEPROM and thus persists between restarts.
|
|
||||||
[0] = LAYOUT(
|
|
||||||
KC_ESC, 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_DEL, KC_MPLY,
|
|
||||||
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_EQL, KC_BSPC, KC_HOME,
|
|
||||||
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_PGUP,
|
|
||||||
MO(1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
|
|
||||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_END,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
),
|
|
||||||
|
|
||||||
[1] = LAYOUT(
|
|
||||||
_______, KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_MSTP, KC_MNXT,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT, _______,
|
|
||||||
_______, KC_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, RGB_VAD, RGB_TOG, RGB_VAI, RGB_HUI, _______, NK_TOGG, _______, _______, _______, _______, _______, RGB_MOD, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, RGB_SPD, RGB_RMOD, RGB_SPI
|
|
||||||
),
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
// clang-format on
|
|
||||||
|
|
||||||
#ifdef ENCODER_ENABLE
|
|
||||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
|
||||||
if (clockwise) {
|
|
||||||
tap_code(KC_VOLU);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_VOLD);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -1,8 +0,0 @@
|
||||||
# Falke Carlsen keymap for GMMK PRO ISO
|
|
||||||
Based on the default keymap, inheriting rotary encoder and LED configs without modification.
|
|
||||||
|
|
||||||
## Changes:
|
|
||||||
- Fixes layer 1 of top-row to correspond to 'Keychron ISO Q1 & K2 Dye-Sub PBT Nordic' printed legend multimedia keys.
|
|
||||||
- Adds early 2010s Ducky layer 1 mouse-emulation to WASD with left+right click and scroll in the 2x4 cluster.
|
|
||||||
- Remaps default keymaps LED-handling to 2nd-row due to addition of mouse-emulation.
|
|
||||||
- Swap layer 0 rotary encoder click to play/pause, and layer 1 click to next.
|
|
|
@ -1,232 +0,0 @@
|
||||||
/* Copyright 2021 Qiaowei Tang
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* LED ranges for Think6.5v2 2U
|
|
||||||
* These values were derived from manual testing. Derived from keymaps/rys.
|
|
||||||
* ┌───────┬───────┬─────────────┬───────────────────────────────────────────┐
|
|
||||||
* │ 00 01 │ 02 03 │ 04 05 06 07 │ 08 09 10 11 12 13 14 15 16 17 18 19 20 21 │
|
|
||||||
* │ badge │ badge │ (?) │ underglow (?) │
|
|
||||||
* │ bar │ icon │ │ │
|
|
||||||
* └───────┴───────┴─────────────┴───────────────────────────────────────────┘
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Define the LED ranges start, end
|
|
||||||
#define THINK65_LED_RANGE_OFF 0, 0
|
|
||||||
#define THINK65_LED_RANGE_CAPS 0, 2
|
|
||||||
#define THINK65_LED_RANGE_BADGE 0, 4
|
|
||||||
#define THINK65_LED_RANGE_UNDERGLOW 4, 22
|
|
||||||
#define THINK65_LED_RANGE_ALL 0, 22
|
|
||||||
|
|
||||||
// Turn the LEDs off by setting HSV to 0, 0, 0
|
|
||||||
#define THINK65_LEDS_OFF 0, 0, 0
|
|
||||||
|
|
||||||
// Caps Lock indicator LED
|
|
||||||
#define THINK65_LEDS_CAPS 0, 0, 255
|
|
||||||
|
|
||||||
#define THINK65_LED_STATE_OFF 0x0 // 0b00000000
|
|
||||||
#define THINK65_LED_STATE_CAPS 0x1 // 0b00000001
|
|
||||||
#define THINK65_LED_STATE_BADGE 0x2 // 0b00000010
|
|
||||||
#define THINK65_LED_STATE_CAPS_AND_BADGE 0x3 // 0b00000011
|
|
||||||
|
|
||||||
// Define each LED range as a bit flag
|
|
||||||
#define THINK65_LED_CAPS_RANGE_BIT 0
|
|
||||||
#define THINK65_LED_BADGE_RANGE_BIT 1
|
|
||||||
|
|
||||||
// Setup some keycodes to control cycling and range toggling
|
|
||||||
enum {
|
|
||||||
KVM_SW1 = SAFE_RANGE,
|
|
||||||
KVM_SW2,
|
|
||||||
CYC_LED,
|
|
||||||
TOG_BDG
|
|
||||||
};
|
|
||||||
|
|
||||||
// setup the user EEPROM space we need
|
|
||||||
typedef union {
|
|
||||||
uint8_t raw;
|
|
||||||
struct {
|
|
||||||
uint8_t current_led_state:8;
|
|
||||||
};
|
|
||||||
} user_config_t;
|
|
||||||
|
|
||||||
user_config_t user_config;
|
|
||||||
|
|
||||||
// toggle one of the range flag bits
|
|
||||||
void toggle_led_state(unsigned int led_range) {
|
|
||||||
if (led_range >= THINK65_LED_CAPS_RANGE_BIT && led_range <= THINK65_LED_BADGE_RANGE_BIT) {
|
|
||||||
user_config.current_led_state ^= 1 << led_range;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// set one of the range flag bits
|
|
||||||
void set_led_state(unsigned int led_range) {
|
|
||||||
if (led_range >= THINK65_LED_CAPS_RANGE_BIT && led_range <= THINK65_LED_BADGE_RANGE_BIT) {
|
|
||||||
user_config.current_led_state |= 1 << led_range;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// clear one of the range flag bits
|
|
||||||
void clear_led_state(unsigned int led_range) {
|
|
||||||
if (led_range >= THINK65_LED_CAPS_RANGE_BIT && led_range <= THINK65_LED_BADGE_RANGE_BIT) {
|
|
||||||
user_config.current_led_state &= ~(1 << led_range);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// cycle LED states: Off -> Esc -> Badge -> Underglow -> Esc+Badge -> Esc+Underglow -> Badge+Underglow -> All
|
|
||||||
void cycle_led_state(void) {
|
|
||||||
switch(user_config.current_led_state) {
|
|
||||||
case THINK65_LED_STATE_OFF:
|
|
||||||
user_config.current_led_state = THINK65_LED_STATE_CAPS;
|
|
||||||
break;
|
|
||||||
case THINK65_LED_STATE_CAPS:
|
|
||||||
user_config.current_led_state = THINK65_LED_STATE_BADGE;
|
|
||||||
break;
|
|
||||||
case THINK65_LED_STATE_BADGE:
|
|
||||||
user_config.current_led_state = THINK65_LED_STATE_CAPS_AND_BADGE;
|
|
||||||
break;
|
|
||||||
case THINK65_LED_STATE_CAPS_AND_BADGE:
|
|
||||||
user_config.current_led_state = THINK65_LED_STATE_OFF;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void apply_led_state(void) {
|
|
||||||
uint8_t h = rgblight_get_hue();
|
|
||||||
uint8_t s = rgblight_get_sat();
|
|
||||||
uint8_t v = rgblight_get_val();
|
|
||||||
|
|
||||||
// Set the RGB ranges based on the current state
|
|
||||||
switch(user_config.current_led_state) {
|
|
||||||
case THINK65_LED_STATE_OFF:
|
|
||||||
rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_ALL);
|
|
||||||
break;
|
|
||||||
case THINK65_LED_STATE_CAPS:
|
|
||||||
rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_BADGE);
|
|
||||||
rgblight_sethsv_range(THINK65_LEDS_CAPS, THINK65_LED_RANGE_CAPS);
|
|
||||||
break;
|
|
||||||
case THINK65_LED_STATE_BADGE:
|
|
||||||
rgblight_sethsv_range(THINK65_LEDS_OFF, THINK65_LED_RANGE_CAPS);
|
|
||||||
rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_BADGE);
|
|
||||||
break;
|
|
||||||
case THINK65_LED_STATE_CAPS_AND_BADGE:
|
|
||||||
rgblight_sethsv_range(h, s, v, THINK65_LED_RANGE_BADGE);
|
|
||||||
rgblight_sethsv_range(THINK65_LEDS_CAPS, THINK65_LED_RANGE_CAPS);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void keyboard_post_init_user(void) {
|
|
||||||
user_config.raw = eeconfig_read_user();
|
|
||||||
|
|
||||||
if (user_config.current_led_state >= THINK65_LED_STATE_OFF && user_config.current_led_state <= THINK65_LED_STATE_CAPS_AND_BADGE) {
|
|
||||||
// If the current state read from user EEPROM is valid, apply it
|
|
||||||
apply_led_state();
|
|
||||||
} else {
|
|
||||||
// Setup a new default state of off
|
|
||||||
user_config.current_led_state = THINK65_LED_STATE_OFF;
|
|
||||||
apply_led_state();
|
|
||||||
eeconfig_update_user(user_config.raw);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case KVM_SW1:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING(SS_TAP(X_RCTL) SS_TAP(X_RCTL) "1");
|
|
||||||
} else {}
|
|
||||||
break;
|
|
||||||
case KVM_SW2:
|
|
||||||
if(record->event.pressed) {
|
|
||||||
SEND_STRING(SS_TAP(X_RCTL) SS_TAP(X_RCTL) "2");
|
|
||||||
} else {}
|
|
||||||
break;
|
|
||||||
case CYC_LED:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
cycle_led_state();
|
|
||||||
apply_led_state();
|
|
||||||
eeconfig_update_user(user_config.raw);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TOG_BDG:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
toggle_led_state(THINK65_LED_BADGE_RANGE_BIT);
|
|
||||||
apply_led_state();
|
|
||||||
eeconfig_update_user(user_config.raw);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case KC_CAPS:
|
|
||||||
if (!record->event.pressed) {
|
|
||||||
// connect capslock LED control to the badge LEDs
|
|
||||||
host_keyboard_led_state().caps_lock ? set_led_state(THINK65_LED_CAPS_RANGE_BIT) : clear_led_state(THINK65_LED_CAPS_RANGE_BIT);
|
|
||||||
apply_led_state();
|
|
||||||
eeconfig_update_user(user_config.raw);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Base Layer
|
|
||||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
|
||||||
* │Esc│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ Bckspc│` ~│
|
|
||||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
|
||||||
* │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│| \│Del│
|
|
||||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
|
||||||
* │HyCaps│ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter│ │
|
|
||||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ │
|
|
||||||
* │Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift│ Up│ │
|
|
||||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼───┼───┤
|
|
||||||
* │Ctrl│ Opt│ Cmd│ Space │Cmd │FnPy│ │Lef│Dow│Rig│
|
|
||||||
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴───┴───┘
|
|
||||||
*/
|
|
||||||
[0] = LAYOUT_65_ansi_blocker(
|
|
||||||
QK_GESC, 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_GRV,
|
|
||||||
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, KC_DEL,
|
|
||||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, XXXXXXX,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, XXXXXXX,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
),
|
|
||||||
/*
|
|
||||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────────┬───┐
|
|
||||||
* │RST│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ │SW1│
|
|
||||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┼───┤
|
|
||||||
* │ TOG │PLN│MOD│HU+│HU-│SA+│SA-│VA+│VA-│ │ │Hom│End│ │SW2│
|
|
||||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┼───┤
|
|
||||||
* │ │CYC│BDG│UGL│CAP│ │ │ │ │ │ │ │ │ │
|
|
||||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬────┤ │
|
|
||||||
* │ │ │ │ │ │ │ │ │ │ │ │ │Vol+│ │
|
|
||||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼────┼───┤
|
|
||||||
* │ │ │ │ │ │ │ │ │Vol-│ │
|
|
||||||
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴────┴───┘
|
|
||||||
*/
|
|
||||||
[1] = LAYOUT_65_ansi_blocker(
|
|
||||||
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, KVM_SW1,
|
|
||||||
TOG_BDG, RGB_M_P, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, KC_HOME, KC_END, _______, KVM_SW2,
|
|
||||||
_______, CYC_LED, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, KC_VOLD, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,9 +0,0 @@
|
||||||
# dangjoeltang's Think6.5v2 keymap
|
|
||||||
|
|
||||||
My personal keymap for the Think6.5v2. Using the `LAYOUT_65_ansi_blocker` LAYOUT for a 2U blocker version. I added functionality to enable the Caps-lock indicator LED above the badge. This functionality shipped with the original board; however, for those who reflash their boards using the default `gray_studio/think65/solder` keymaps that functionality disappeared.
|
|
||||||
|
|
||||||
## [Base Layer](http://www.keyboard-layout-editor.com/#/gists/9c6a905a643b77249958f28662348f53)
|
|
||||||
![Base Layer](https://imgur.com/Gyim08a)
|
|
||||||
|
|
||||||
## [Function Layer](http://www.keyboard-layout-editor.com/#/gists/1c061d3664ea5caf5cb64c759339278d)
|
|
||||||
![Function Layer](https://imgur.com/H2Yqnv3)
|
|
|
@ -1,19 +0,0 @@
|
||||||
/* Copyright 2022 Yt Liu
|
|
||||||
*
|
|
||||||
* 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 RGBLIGHT_LAYERS
|
|
|
@ -1,139 +0,0 @@
|
||||||
/* Copyright 2021 Qiaowei Tang
|
|
||||||
*
|
|
||||||
* 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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* LED ranges for Think6.5v2 2U
|
|
||||||
* These values were derived from manual testing. Derived from keymaps/rys.
|
|
||||||
* ┌───────┬───────┬─────────────┬───────────────────────────────────────────┐
|
|
||||||
* │ 00 01 │ 02 03 │ 04 05 06 07 │ 08 09 10 11 12 13 14 15 16 17 18 19 20 21 │
|
|
||||||
* │ badge │ badge │ (?) │ underglow (?) │
|
|
||||||
* │ bar │ icon │ │ │
|
|
||||||
* └───────┴───────┴─────────────┴───────────────────────────────────────────┘
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
// Setup some layers to control mac/win layouts
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
enum bs_layers {
|
|
||||||
_WIN,
|
|
||||||
_MAC,
|
|
||||||
_FN,
|
|
||||||
_BLANC
|
|
||||||
};
|
|
||||||
|
|
||||||
// Setup some keycodes to control cycling and range toggling
|
|
||||||
enum bs_keycodes {
|
|
||||||
WIN = SAFE_RANGE,
|
|
||||||
MAC
|
|
||||||
};
|
|
||||||
|
|
||||||
// Light LEDs 6 to 9 and 12 to 15 red when caps lock is active. Hard to ignore!
|
|
||||||
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
|
||||||
{0, 4, HSV_WHITE} // Light 4 LEDs, starting with LED 12
|
|
||||||
);
|
|
||||||
|
|
||||||
// Now define the array of layers. Later layers take precedence
|
|
||||||
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
|
||||||
my_capslock_layer // Overrides other layers
|
|
||||||
);
|
|
||||||
|
|
||||||
void keyboard_post_init_user(void) {
|
|
||||||
// Enable the LED layers
|
|
||||||
rgblight_layers = my_rgb_layers;
|
|
||||||
};
|
|
||||||
|
|
||||||
bool led_update_user(led_t led_state) {
|
|
||||||
rgblight_set_layer_state(0, led_state.caps_lock);
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
layer_state_t default_layer_state_set_user(layer_state_t state) {
|
|
||||||
if (get_highest_layer(state) == _MAC) {
|
|
||||||
rgblight_mode_noeeprom(6);
|
|
||||||
} else {
|
|
||||||
rgblight_mode_noeeprom(9);
|
|
||||||
}
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Win Layer
|
|
||||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
|
||||||
* │Esc│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ Bckspc│pup│
|
|
||||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
|
||||||
* │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│| \│pdw│
|
|
||||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
|
||||||
* │lTCap │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter│ │
|
|
||||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ │
|
|
||||||
* │Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift│ Up│ │
|
|
||||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴───┴┬─┬───┼───┼───┤
|
|
||||||
* │Ctrl│ win│ alt│ Space │ Func │ │Lef│Dow│Rig│
|
|
||||||
* └────┴────┴────┴────────────────────────┴─────────┴─┴───┴───┴───┘
|
|
||||||
*/
|
|
||||||
[_WIN] = LAYOUT_65_ansi_blocker(
|
|
||||||
QK_GESC, 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_PGUP,
|
|
||||||
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, KC_PGDN,
|
|
||||||
LT(_FN, KC_CAPS), 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, KC_RSFT, KC_UP, _______,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_1, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
),
|
|
||||||
/* Mac Layer
|
|
||||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┬───┐
|
|
||||||
* │Esc│! 1│@ 2│# 3│$ 4│% 5│^ 6│& 7│* 8│( 9│) 0│_ -│+ =│ Bckspc│pup│
|
|
||||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┼───┤
|
|
||||||
* │Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │{ [│} ]│| \│pdw│
|
|
||||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┼───┤
|
|
||||||
* │lTCap │ A │ S │ D │ F │ G │ H │ J │ K │ L │: ;│" '│ Enter│ │
|
|
||||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ │
|
|
||||||
* │Shift │ Z │ X │ C │ V │ B │ N │ M │< ,│> .│? /│ Shift│ Up│ │
|
|
||||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┴───┴┬─┬───┼───┼───┤
|
|
||||||
* │Ctrl│ Opt│ Cmd│ Space │ Func │ │Lef│Dow│Rig│
|
|
||||||
* └────┴────┴────┴────────────────────────┴─────────┴─┴───┴───┴───┘
|
|
||||||
*/
|
|
||||||
[_MAC] = LAYOUT_65_ansi_blocker(
|
|
||||||
QK_GESC, 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_PGUP,
|
|
||||||
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, KC_PGDN,
|
|
||||||
LT(_FN, KC_CAPS), 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, KC_RSFT, KC_UP, _______,
|
|
||||||
KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_1, MO(_FN), KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
),
|
|
||||||
/* Fn Layer
|
|
||||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────────┬───┐
|
|
||||||
* │lck│ F1│ F2│ F3│ F4│ F5│ F6│ F7│ F8│ F9│F10│F11│F12│ delete │mac│
|
|
||||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┼───┤
|
|
||||||
* │ TOG │MB1│MSU│MB2│MDU│ │ │ │UP │ │Hom│pgu│End│ │win│
|
|
||||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┼───┤
|
|
||||||
* │MO(2) │MSL│MSD│MSR│MWD│ │ │Lft│Dwn│rgt│END│pgd│ reset │ │
|
|
||||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬────┤ │
|
|
||||||
* │ RGB_mod│F13│F14│F15│F16│F17│F18│F19│F20│F21│F22│F23 │Bri+│ │
|
|
||||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬─┬───┼────┼───┤
|
|
||||||
* │Vold│Mute│Volu│ │ │ │ │ │Bri-│ │
|
|
||||||
* └────┴────┴────┴────────────────────────┴────┴────┴─┴───┴────┴───┘
|
|
||||||
*/
|
|
||||||
[_FN] = LAYOUT_65_ansi_blocker(
|
|
||||||
QK_LOCK, 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_DEL, MAC,
|
|
||||||
RGB_TOG, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_MS_WH_UP, _______, _______, _______, KC_UP, _______, KC_HOME, KC_PGUP, _______, _______, WIN,
|
|
||||||
_______, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_MS_WH_DOWN, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT, KC_END, KC_PGDN, QK_BOOT, _______,
|
|
||||||
RGB_MOD, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_BRIU, _______,
|
|
||||||
KC_VOLD, KC_MUTE, KC_VOLU, _______, _______, _______, _______, KC_BRID, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
# YT45's Think6.5v2 keymap
|
|
||||||
|
|
||||||
My personal keymap for the Think6.5v2. Using the dangjoeltang as a the base and adding a quick switch from mac to win layouts. also with indication of the current layer with RGB lights.
|
|
|
@ -1,5 +0,0 @@
|
||||||
LTO_ENABLE = yes
|
|
||||||
VIA_ENABLE = yes
|
|
||||||
MOUSEKEY_ENABLE = yes
|
|
||||||
KEY_LOCK_ENABLE = yes
|
|
||||||
CONSOLE_ENABLE = no
|
|
|
@ -1,43 +0,0 @@
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
LAYOUT(
|
|
||||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_PSCR,
|
|
||||||
KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_P7, KC_P8, KC_P9,
|
|
||||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_SCLN, KC_P4, KC_P5, KC_P6,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, KC_SLSH, KC_P1, KC_P2, KC_P3,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, MO(1), KC_SPC, KC_SPC, KC_SPC, MO(1), KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
|
|
||||||
/* Primary
|
|
||||||
* ,------+------+------+------+------+------------------------------------------------.
|
|
||||||
* | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | PRTSN|
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+--------------------.
|
|
||||||
* | ˜ | Q | W | E | R | T | Y | U | I | O | P | BKSP | 7 | 8 | 9 |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Tab | A | S | D | F | G | H | J | K | L | ' | ; | 4 | 5 | 6 |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Shift| Z | X | C | V | B | N | M | , | . | Up | /? | 1 | 2 | 3 |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Ctrl | Alt | GUI | Raise| Space | Raise| Ctrl | Left | Down |Right | 0 | . | Enter|
|
|
||||||
* `--------------------------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
LAYOUT(
|
|
||||||
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11, KC_F12, KC_TRNS, KC_HOME, KC_INS, KC_PGUP,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_DEL, KC_PGDN,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLU, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_VOLD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
|
|
||||||
/* Secondary
|
|
||||||
* ,------+------+------+------+------+------------------------------------------------.
|
|
||||||
* | Esc | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+--------------------.
|
|
||||||
* | | | | | | | | | | F11 | F12 | | Home | Ins | PgUP |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | | | | | | | | | | | | | End | Del | PgDN |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | | | | | | | | | | | Vol+ | | | | |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | | | | | | | | | | | Vol- | | | | |
|
|
||||||
* `--------------------------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
![Hadron v3 Layout Image](https://i.imgur.com/Mi5L57j.png)
|
|
||||||
|
|
||||||
# My Custome Hadron Layout
|
|
||||||
|
|
||||||
+ Moved numpad to the right
|
|
||||||
+ changed F row to standard numbers
|
|
||||||
+ Bottom row subject to change
|
|
|
@ -1,42 +0,0 @@
|
||||||
/* Copyright 2021 Matteo Bonora
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
#define CTESC LCTL_T(KC_ESC)
|
|
||||||
|
|
||||||
enum layer_names {
|
|
||||||
BL,
|
|
||||||
FL
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[BL] = LAYOUT(
|
|
||||||
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_GRV, 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_RGUI,
|
|
||||||
CTESC, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, 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,
|
|
||||||
LT(FL, KC_SPC)
|
|
||||||
),
|
|
||||||
|
|
||||||
[FL] = 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_DEL,
|
|
||||||
KC_TAB, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______
|
|
||||||
)
|
|
||||||
};
|
|
|
@ -1,99 +0,0 @@
|
||||||
/* Copyright 2021 Fernando "ManoShu" Rodrigues
|
|
||||||
*
|
|
||||||
* 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_brazilian_abnt2.h"
|
|
||||||
#include "sendstring_brazilian_abnt2.h"
|
|
||||||
|
|
||||||
enum {
|
|
||||||
LAYER_BASE,
|
|
||||||
LAYER_FUNCTIONS
|
|
||||||
};
|
|
||||||
|
|
||||||
#define L_FUNCT MO(LAYER_FUNCTIONS)
|
|
||||||
#define W_CHOLD LGUI_T(KC_CAPS)
|
|
||||||
|
|
||||||
//Combination keycodes
|
|
||||||
#define KC_PSBR C(KC_PAUSE) // Ctrl+Pause/Break
|
|
||||||
#define KC_SNIP SGUI(BR_S) // Screen Snip (GUI + Shift + S)
|
|
||||||
#define KC_WRUN G(BR_R) // Run (GUI + R)
|
|
||||||
#define KC_WLCK G(BR_L) // Lock (GUI + L)
|
|
||||||
#define KC_WDSK G(BR_D) // Desktop (GUI + D)
|
|
||||||
#define KC_WEXP G(BR_E) // Explorer (GUI + E)
|
|
||||||
#define KC_WPSE G(KC_PAUSE) // System Properties (GUI + Pause)
|
|
||||||
#define KC_WMGP G(BR_EQL) // Magnify (+)
|
|
||||||
#define KC_WMGM G(BR_MINS) // Magnify (-)
|
|
||||||
|
|
||||||
enum custom_keycodes {
|
|
||||||
KC_WPRN = SAFE_RANGE, // Project (P)
|
|
||||||
KC_WSPC // Input Select (Space)
|
|
||||||
};
|
|
||||||
|
|
||||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
|
||||||
if (get_highest_layer(state) == LAYER_BASE) {
|
|
||||||
unregister_mods(MOD_MASK_GUI);
|
|
||||||
}
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
if(keycode == KC_WPRN || keycode == KC_WSPC) {
|
|
||||||
if (record->event.pressed) {
|
|
||||||
|
|
||||||
register_code(KC_LGUI);
|
|
||||||
|
|
||||||
if(keycode == KC_WPRN) {
|
|
||||||
tap_code(KC_P);
|
|
||||||
} else if (keycode == KC_WSPC) {
|
|
||||||
tap_code(KC_SPACE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[LAYER_BASE] = LAYOUT(
|
|
||||||
/* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
|
|
||||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
|
||||||
/* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */
|
|
||||||
BR_QUOT, BR_1, BR_2, BR_3, BR_4, BR_5, BR_6, BR_7, BR_8, BR_9, BR_0, BR_MINS, BR_EQL, KC_BSPC,
|
|
||||||
/* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */
|
|
||||||
KC_TAB, BR_Q, BR_W, BR_E, BR_R, BR_T, BR_Y, BR_U, BR_I, BR_O, BR_P, BR_ACUT, BR_LBRC, KC_ENT,
|
|
||||||
/* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ┤ */
|
|
||||||
W_CHOLD, BR_A, BR_S, BR_D, BR_F, BR_G, BR_H, BR_J, BR_K, BR_L, BR_CCED, BR_TILD, BR_RBRC,
|
|
||||||
/* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */
|
|
||||||
KC_LSFT, BR_BSLS, BR_Z, BR_X, BR_C, BR_V, BR_B, BR_N, BR_M, BR_COMM, BR_DOT, BR_SCLN, BR_SLSH, KC_UP,
|
|
||||||
/* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */
|
|
||||||
KC_LCTL, L_FUNCT, KC_LALT, KC_SPC, KC_APP, KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
/* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
|
|
||||||
),
|
|
||||||
[LAYER_FUNCTIONS] = LAYOUT(
|
|
||||||
/* ┌─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┬─────────┐ */
|
|
||||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSBR, KC_SNIP,
|
|
||||||
/* ├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┼─────────┴─────────┤ */
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_WMGM, KC_WMGP, _______,
|
|
||||||
/* ├─────────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬────┴────┬──────────────┤ */
|
|
||||||
_______, KC_MPLY, KC_MUTE, KC_WEXP, KC_WRUN, _______, _______, _______, _______, _______, KC_WPRN, _______, _______, _______,
|
|
||||||
/* ├──────────────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬──────┴──┬ ┤ */
|
|
||||||
_______, KC_MPRV, KC_MNXT, KC_WDSK, _______, _______, _______, _______, _______, KC_WLCK, _______, _______, _______,
|
|
||||||
/* ├───────────┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴───┬─────┴─────────┴─┬─────────┤ */
|
|
||||||
_______, _______, KC_VOLU, KC_VOLD, KC_CALC, _______, _______, _______, _______, _______, _______, _______, _______, KC_PGUP,
|
|
||||||
/* ├───────────┼─────────┴─┬───────┴───┬─────┴─────────┴─────────┴─────────┴─────────┴─────────┴───────┬─┴───────┬─┴───────┬─┴───────┬─────────┼─────────┤ */
|
|
||||||
_______, _______, _______, KC_WSPC, _______, KC_INS, KC_HOME, KC_PGDN, KC_END
|
|
||||||
/* └───────────┴───────────┴───────────┴───────────────────────────────────────────────────────────────┴─────────┴─────────┴─────────┴─────────┴─────────┘ */
|
|
||||||
)
|
|
||||||
};
|
|
|
@ -1,16 +0,0 @@
|
||||||
![BareDev Layout Image](https://i.imgur.com/FXye4Hn.png)
|
|
||||||
|
|
||||||
# ManoShu's custom layout
|
|
||||||
|
|
||||||
Has all the functions of a ABNT TKL keyboard, sans right shift.
|
|
||||||
|
|
||||||
Basic media functions also included.
|
|
||||||
|
|
||||||
Trying to emulate where notebooks/smaller OEM keyboard put the function key, for this reason the GUI key was moved and it can be used by holding the Caps Lock key.
|
|
||||||
|
|
||||||
To not use the new GUI position very often, commonly used GUI + [X] commands are sent using `SEND_STRING()`, `(un)register_code()` and `tap_code()`.
|
|
||||||
|
|
||||||
## Why you didn't used `LT(FUNCTIONS, KC_LGUI)` on the GUI/FN key?
|
|
||||||
Because I don't want rely on the tapping term to determine I will send either KC_HOME or snap the active window to the left.
|
|
||||||
|
|
||||||
If there is a better way to solve this, please let me know.
|
|
|
@ -1,42 +0,0 @@
|
||||||
/* Copyright 2019 cbc02009
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
|
|
||||||
/* LAYER 1
|
|
||||||
* ,---------------+-------.
|
|
||||||
* |KC_MPRV|KC_MNXT|KC_MUTE|
|
|
||||||
* |-------+-------+-------,
|
|
||||||
* |KC_MPLY|KC_MSTP|KC_MUTE|
|
|
||||||
* `-------+-------+-------'
|
|
||||||
*/
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[0] = LAYOUT(KC_MPRV, KC_MNXT, KC_MUTE, KC_MPLY, KC_MSTP, KC_MUTE)
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef ENCODER_ENABLE
|
|
||||||
#include "encoder.h"
|
|
||||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
|
||||||
if (index == 0) { /* First encoder */
|
|
||||||
if (clockwise) {
|
|
||||||
tap_code(KC_VOLU);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_VOLD);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -1,89 +0,0 @@
|
||||||
// Copyright 2022 Shem Sedrick (@ssedrick)
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "print.h"
|
|
||||||
|
|
||||||
enum key_layers {
|
|
||||||
_BASE,
|
|
||||||
_COLEMAK,
|
|
||||||
_RAISE,
|
|
||||||
_LOWER
|
|
||||||
};
|
|
||||||
|
|
||||||
enum layer_keycodes {
|
|
||||||
QWERTY = SAFE_RANGE,
|
|
||||||
COLEMAK,
|
|
||||||
};
|
|
||||||
|
|
||||||
#define RAISE TT(_RAISE)
|
|
||||||
#define LOWER MO(_LOWER)
|
|
||||||
#define SH_ESC SFT_T(KC_ESC)
|
|
||||||
#define UNDSC RSFT(KC_MINS)
|
|
||||||
#define MAC_LOCK C(G(KC_D))
|
|
||||||
#define ____ KC_TRANSPARENT
|
|
||||||
|
|
||||||
#undef TAPPING_TOGGLE
|
|
||||||
#define TAPPING_TOGGLE 2
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[_BASE] = LAYOUT(
|
|
||||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
|
||||||
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
|
|
||||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
|
||||||
KC_LCBR, KC_RCBR, KC_QUOT, KC_GRV,
|
|
||||||
SH_ESC, KC_LGUI, KC_TAB, KC_RSFT, KC_SPC, KC_ENT,
|
|
||||||
RAISE, KC_LCTL, KC_BSPC, LOWER
|
|
||||||
),
|
|
||||||
|
|
||||||
[_COLEMAK] = LAYOUT(
|
|
||||||
KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN,
|
|
||||||
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_COMM, KC_DOT, KC_SLSH,
|
|
||||||
KC_LCBR, KC_RCBR, KC_QUOT, KC_GRV,
|
|
||||||
____, ____, ____, ____, ____, ____,
|
|
||||||
____, ____, ____, ____
|
|
||||||
),
|
|
||||||
|
|
||||||
[_RAISE] = LAYOUT(
|
|
||||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
|
||||||
S(KC_9), S(KC_0), KC_LBRC, KC_RBRC, KC_EQL, KC_MINS, KC_4, KC_5, KC_6, KC_QUOT,
|
|
||||||
QK_RBT, QK_BOOT, ____, ____, ____, ____, KC_1, KC_2, KC_3, ____,
|
|
||||||
MAC_LOCK, ____, KC_0, KC_DOT,
|
|
||||||
____, ____, ____, ____, ____, ____,
|
|
||||||
____, ____, ____, ____
|
|
||||||
),
|
|
||||||
|
|
||||||
[_LOWER] = LAYOUT(
|
|
||||||
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
|
|
||||||
S(KC_9), S(KC_0), KC_LBRC, KC_RBRC, KC_EQL, UNDSC, KC_MINS, KC_EQL, KC_BSLS, KC_PIPE,
|
|
||||||
KC_MNXT, KC_MPLY, KC_VOLU, KC_VOLD, ____, ____, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
|
|
||||||
____, ____, QWERTY, COLEMAK,
|
|
||||||
____, ____, ____, ____, ____, ____,
|
|
||||||
____, ____, ____, ____
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
// If console is enabled, it will print the matrix position and status of each key pressed
|
|
||||||
#ifdef CONSOLE_ENABLE
|
|
||||||
uprintf("KL: kc: 0x%04X, col: %u, row: %u, pressed: %d, time: %u, interrupt: %d, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
|
|
||||||
#endif
|
|
||||||
switch (keycode) {
|
|
||||||
case QWERTY:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
set_single_persistent_default_layer(_BASE);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case COLEMAK:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
set_single_persistent_default_layer(_COLEMAK);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,21 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2022 Nabos <nabos at glargh dot fr>
|
|
||||||
|
|
||||||
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 EE_HANDS
|
|
||||||
|
|
|
@ -1,75 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2022 Nabos <nabos at glargh dot fr>
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
enum layer_names {
|
|
||||||
_QWERTY,
|
|
||||||
_FUNCTIONS,
|
|
||||||
_NUMPAD,
|
|
||||||
_GAMING
|
|
||||||
};
|
|
||||||
|
|
||||||
#define FUNCTIONS MO(_FUNCTIONS)
|
|
||||||
#define NUMPAD MO(_NUMPAD)
|
|
||||||
#define GAMING TG(_GAMING)
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[_QWERTY] = LAYOUT_5x6(
|
|
||||||
QK_GESC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 ,KC_RBRC,
|
|
||||||
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_PGUP, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT,
|
|
||||||
KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT,KC_SLSH,_______,
|
|
||||||
KC_LEFT,KC_RIGHT, KC_DOWN,KC_UP ,
|
|
||||||
KC_LSFT,KC_SPC , KC_ENT ,KC_BSPC,
|
|
||||||
KC_LGUI,KC_LALT, FUNCTIONS,KC_RALT,
|
|
||||||
KC_DEL ,GAMING , NUMPAD ,KC_RCTL
|
|
||||||
),
|
|
||||||
|
|
||||||
[_FUNCTIONS] = LAYOUT_5x6(
|
|
||||||
KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 ,KC_F10 ,KC_F11 ,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
),
|
|
||||||
|
|
||||||
[_NUMPAD] = LAYOUT_5x6(
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,KC_NUM ,_______,_______,KC_MINS,KC_EQL ,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,KC_KP_7,KC_KP_8,KC_KP_9,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,KC_KP_4,KC_KP_5,KC_KP_6,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,KC_KP_1,KC_KP_2,KC_KP_3,_______,KC_PSCR,
|
|
||||||
_______,_______, KC_KP_0,KC_PDOT,
|
|
||||||
_______,_______, KC_PENT,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
),
|
|
||||||
|
|
||||||
[_GAMING] = LAYOUT_5x6(
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
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_LCTL, KC_Z , KC_X , KC_C , KC_V , _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,49 +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 MASTER_LEFT
|
|
||||||
// #define MASTER_RIGHT
|
|
||||||
//#define EE_HANDS
|
|
||||||
|
|
||||||
// Mouse
|
|
||||||
#undef MOUSEKEY_INTERVAL
|
|
||||||
#define MOUSEKEY_INTERVAL 15
|
|
||||||
#undef MOUSEKEY_TIME_TO_MAX
|
|
||||||
#define MOUSEKEY_TIME_TO_MAX 60
|
|
||||||
#undef MOUSEKEY_WHEEL_MAX_SPEED
|
|
||||||
#define MOUSEKEY_WHEEL_MAX_SPEED 3
|
|
||||||
|
|
||||||
// RGB backlight
|
|
||||||
#undef WS2812_DI_PIN
|
|
||||||
#define WS2812_DI_PIN D3
|
|
||||||
#undef RGBLED_NUM
|
|
||||||
#define RGBLED_NUM 30
|
|
||||||
#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_LIMIT_VAL 95
|
|
||||||
#define RGBLIGHT_SPLIT
|
|
|
@ -1,106 +0,0 @@
|
||||||
/* A standard layout for the Dactyl Manuform 5x6 Keyboard */
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
enum layer_names {
|
|
||||||
_MAC,
|
|
||||||
_WINDOWS,
|
|
||||||
_MOUSE,
|
|
||||||
_ARROWS,
|
|
||||||
_SYMBOLS,
|
|
||||||
_NUMBERS,
|
|
||||||
_MEDIA,
|
|
||||||
};
|
|
||||||
|
|
||||||
#define RAISE MO(_RAISE)
|
|
||||||
#define LOWER MO(_LOWER)
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
[_MAC] = 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_GRAVE,
|
|
||||||
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P ,KC_MINS,
|
|
||||||
KC_BSPC, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT,
|
|
||||||
KC_LSFT, CTL_T(KC_Z) , KC_X , KC_C , KC_V , KC_B , KC_N , KC_M ,KC_COMM,KC_DOT ,KC_SLSH,KC_BSLS,
|
|
||||||
KC_LALT,KC_LCTL, KC_DEL, KC_PMNS,
|
|
||||||
KC_SPC, MO(_ARROWS), MO(_MOUSE), KC_ENT,
|
|
||||||
KC_LCMD, MO(_SYMBOLS), KC_EQL, KC_RALT,
|
|
||||||
KC_LALT, MO(_NUMBERS), MO(_MEDIA), KC_EJCT
|
|
||||||
),
|
|
||||||
|
|
||||||
[_WINDOWS] = LAYOUT_5x6(
|
|
||||||
|
|
||||||
_______,_______, _______ ,_______,_______ ,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______, _______ , _______ , _______ ,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______ ,_______, _______, _______ , _______ , _______ ,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______, _______ , _______ , _______ ,_______ ,_______,
|
|
||||||
KC_LCMD,KC_LALT, _______, _______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
KC_LCTL,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
|
|
||||||
),
|
|
||||||
|
|
||||||
[_MOUSE] = LAYOUT_5x6(
|
|
||||||
|
|
||||||
KC_F11,KC_F1, KC_F2 ,KC_F3,KC_F4 ,KC_F5, KC_F6,KC_F7,KC_F8,KC_F9,KC_F10,KC_F12,
|
|
||||||
_______,_______,_______,KC_WH_U,_______,_______, _______, _______ , KC_MS_U , _______ ,_______,_______,
|
|
||||||
_______,_______,KC_WH_L,KC_WH_D,KC_WH_R ,_______, KC_BTN1, KC_MS_L , KC_MS_D , KC_MS_R ,_______,_______,
|
|
||||||
_______,_______,KC_ACL0,KC_ACL1,KC_ACL2,_______, _______, KC_BTN2 , _______ , _______ ,_______ ,_______,
|
|
||||||
_______,_______, _______, QK_BOOT,
|
|
||||||
KC_BTN1,KC_BTN2, _______,_______,
|
|
||||||
_______,KC_BTN2, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
|
|
||||||
),
|
|
||||||
[_ARROWS] = LAYOUT_5x6(
|
|
||||||
|
|
||||||
QK_BOOT,_______, _______ ,_______,_______ ,TG(_WINDOWS), _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______, KC_HOME , KC_UP , KC_END ,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______ ,_______, KC_HOME, KC_LEFT , KC_DOWN , KC_RIGHT ,KC_END,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______, KC_PGDN , _______ , KC_PGUP ,_______ ,_______,
|
|
||||||
QK_BOOT,_______, _______, _______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
|
|
||||||
),
|
|
||||||
[_SYMBOLS] = LAYOUT_5x6(
|
|
||||||
|
|
||||||
_______,_______, _______ ,_______,_______ ,_______, KC_CIRC,KC_CIRC,KC_LABK,KC_RABK,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, KC_LABK, KC_AT , KC_LCBR , KC_RCBR ,KC_HASH,KC_RABK,
|
|
||||||
_______,_______,_______,_______,_______ ,_______, KC_PERC, KC_EQL , KC_LPRN , KC_RPRN ,KC_DLR,KC_AMPR,
|
|
||||||
_______,_______,_______,_______,_______,_______, KC_TILD, KC_GRAVE , KC_LBRC , KC_RBRC ,KC_PIPE ,KC_EXLM,
|
|
||||||
_______,_______, KC_PPLS, KC_PMNS,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
|
|
||||||
),
|
|
||||||
[_NUMBERS] = LAYOUT_5x6(
|
|
||||||
|
|
||||||
QK_BOOT,_______, _______ ,_______,_______ ,_______, KC_PSLS,KC_PAST,KC_PPLS,KC_PMNS,_______,_______,
|
|
||||||
_______,_______,_______,KC_PSLS,KC_PAST,_______, _______, KC_7 , KC_8 , KC_9 ,_______,_______,
|
|
||||||
_______,_______,_______,KC_PMNS,KC_PPLS ,_______, _______, KC_4 , KC_5 , KC_6 ,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______, KC_1 , KC_2 , KC_3 ,_______ ,_______,
|
|
||||||
_______,_______, KC_0, KC_DOT,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
|
|
||||||
),
|
|
||||||
[_MEDIA] = LAYOUT_5x6(
|
|
||||||
|
|
||||||
KC_MSTP,KC_MPRV, KC_MPLY ,KC_MNXT,_______ ,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,KC_VOLU,_______, RGB_SPI, _______ , _______ , _______ ,_______,_______,
|
|
||||||
_______,_______,_______,_______,KC_VOLD ,_______, RGB_TOG, RGB_MODE_FORWARD , RGB_HUI , RGB_SAI ,RGB_VAI,_______,
|
|
||||||
_______,_______,_______,_______,KC_MUTE,_______, RGB_SPD, RGB_MODE_REVERSE , RGB_HUD , RGB_SAD ,RGB_VAD ,_______,
|
|
||||||
_______,_______, _______, _______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
RGBLIGHT_ENABLE = yes
|
|
|
@ -1,167 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2021 Raphael Megzari <raphael@megzari.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 QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
enum custom_layers {
|
|
||||||
_COLEMAK_DH,
|
|
||||||
_LEFT,
|
|
||||||
_LEFT_UP,
|
|
||||||
_RIGHT,
|
|
||||||
_RIGHT_UP,
|
|
||||||
_QWERTY
|
|
||||||
};
|
|
||||||
|
|
||||||
#define COLMAK TO(_COLEMAK_DH)
|
|
||||||
#define QWERTY TO(_QWERTY)
|
|
||||||
|
|
||||||
enum custom_keycodes {
|
|
||||||
EQ_SUP = SAFE_RANGE,
|
|
||||||
INF_EQ,
|
|
||||||
SUP_EQ,
|
|
||||||
INF_MIN,
|
|
||||||
MIN_SUP,
|
|
||||||
PIPE_R,
|
|
||||||
SUP_SUP,
|
|
||||||
INF_INF,
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
[_COLEMAK_DH] = LAYOUT_6x6(
|
|
||||||
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
QWERTY ,KC_Q ,KC_W ,KC_F ,KC_P ,KC_K , KC_Z ,KC_L ,KC_U ,KC_Y ,KC_COLN,_______,
|
|
||||||
_______,KC_A ,KC_R ,KC_S ,KC_T ,KC_G , KC_M ,KC_N ,KC_E ,KC_I ,KC_O ,_______,
|
|
||||||
KC_LSFT,KC_J ,KC_B ,KC_C ,KC_D ,KC_V , KC_X ,KC_H ,KC_COMM,KC_DOT ,KC_QUES,KC_RSFT,
|
|
||||||
KC_K ,KC_V , KC_X ,KC_Z ,
|
|
||||||
LT(_RIGHT_UP,KC_BSPC),LSFT_T(KC_ESC), LT(_LEFT, KC_ENT),LT(_LEFT_UP,KC_SPC),
|
|
||||||
_______,LCTL_T(KC_DEL), LGUI_T(KC_TAB),_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
),
|
|
||||||
|
|
||||||
[_QWERTY] = LAYOUT_6x6(
|
|
||||||
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
COLMAK ,KC_Q ,KC_W ,KC_E ,KC_R ,KC_T , KC_Y ,KC_U ,KC_I ,KC_O ,KC_P ,_______,
|
|
||||||
_______,KC_A ,KC_S ,KC_D ,KC_F ,KC_G , KC_H ,KC_J ,KC_K ,KC_L ,KC_COLN,_______,
|
|
||||||
KC_LSFT,KC_Z ,KC_X ,KC_C ,KC_V ,KC_B , KC_N ,KC_M ,KC_COMM,KC_DOT ,KC_QUES,KC_RSFT,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
LT(_RIGHT_UP,KC_BSPC),LSFT_T(KC_ESC), LT(_LEFT, KC_ENT),LT(_LEFT_UP,KC_SPC),
|
|
||||||
_______,LCTL_T(KC_DEL), LGUI_T(KC_TAB),_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
),
|
|
||||||
|
|
||||||
[_LEFT] = LAYOUT_6x6(
|
|
||||||
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,KC_PLUS,KC_CIRC,KC_AMPR,_______, _______,KC_EQL ,KC_PERC,KC_HASH,_______,_______,
|
|
||||||
_______,_______,KC_TILD,KC_DQUO,KC_PIPE,_______, _______,KC_LPRN,KC_LCBR,KC_LBRC,_______,_______,
|
|
||||||
_______,_______,KC_BSLS,KC_ASTR,KC_SLSH,_______, _______,KC_RPRN,KC_RCBR,KC_RBRC,_______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
),
|
|
||||||
|
|
||||||
[_LEFT_UP] = LAYOUT_6x6(
|
|
||||||
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,KC_LABK,KC_MINS,KC_RABK,_______, _______,KC_7 ,KC_8 ,KC_9 ,_______,_______,
|
|
||||||
_______,_______,KC_UNDS,KC_QUOT,KC_DLR ,KC_GRV , _______,KC_4 ,KC_5 ,KC_6 ,KC_0 ,_______,
|
|
||||||
_______,_______,KC_SCLN,KC_AT ,KC_EXLM,_______, _______,KC_1 ,KC_2 ,KC_3 ,_______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
),
|
|
||||||
|
|
||||||
[_RIGHT] = LAYOUT_6x6(
|
|
||||||
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______,_______,_______,_______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
),
|
|
||||||
|
|
||||||
[_RIGHT_UP] = LAYOUT_6x6(
|
|
||||||
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______ ,_______ ,_______ ,_______,_______,
|
|
||||||
_______,_______,_______,_______,_______,_______, _______,_______ ,_______ ,_______ ,_______,_______,
|
|
||||||
_______,_______,INF_INF,_______,SUP_SUP,_______, _______,LCTL(KC_LEFT),KC_UP ,LCTL(KC_RGHT),_______,_______,
|
|
||||||
_______,_______,MIN_SUP,EQ_SUP ,PIPE_R ,_______, _______,KC_LEFT ,KC_DOWN ,KC_RGHT ,LGUI(KC_UP),_______,
|
|
||||||
_______,_______,INF_MIN,INF_EQ ,_______,_______, _______,_______ ,KC_CAPS ,_______ ,_______,_______,
|
|
||||||
_______,_______, _______ ,_______ ,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______,
|
|
||||||
_______,_______, _______,_______
|
|
||||||
),
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch(keycode) {
|
|
||||||
case PIPE_R:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("|> ");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case EQ_SUP:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("=> ");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case INF_EQ:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("<= ");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case MIN_SUP:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("-> ");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case INF_MIN:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("<- ");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case INF_INF:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING("<<");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case SUP_SUP:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
SEND_STRING(">>");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
|
@ -1,61 +0,0 @@
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
//Tap Dance Declarations
|
|
||||||
enum {
|
|
||||||
TD_DOT_COMMAS = 0
|
|
||||||
};
|
|
||||||
|
|
||||||
//Tap Dance Definitions
|
|
||||||
tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
//Tap once for Esc, twice for Caps Lock
|
|
||||||
[TD_DOT_COMMAS] = ACTION_TAP_DANCE_DOUBLE(KC_DOT, KC_COMMA)
|
|
||||||
// Other declarations would go here, separated by commas, if you have them
|
|
||||||
};
|
|
||||||
|
|
||||||
//In Layer declaration, add tap dance item in place of a key code
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/*
|
|
||||||
* ,-------------------.
|
|
||||||
* |bcsp| / | * | - |
|
|
||||||
* |----|----|----|----|
|
|
||||||
* | 7 | 8 | 9 | |
|
|
||||||
* |----|----|----| + |
|
|
||||||
* | 4 | 5 | 6 | |
|
|
||||||
* |----|----|----|----|
|
|
||||||
* | 1 | 2 | 3 | |
|
|
||||||
* |----|----|----| En |
|
|
||||||
* | FN/0 | . | |
|
|
||||||
* `-------------------'
|
|
||||||
*/
|
|
||||||
|
|
||||||
[0] = LAYOUT_numpad_5x4(
|
|
||||||
KC_BSPC, KC_PSLS, KC_PAST, KC_PMNS,
|
|
||||||
KC_P7, KC_P8, KC_P9,
|
|
||||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
|
||||||
KC_P1, KC_P2, KC_P3,
|
|
||||||
LT(1, KC_P0), TD(TD_DOT_COMMAS), KC_PENT
|
|
||||||
),
|
|
||||||
/*
|
|
||||||
* ,-------------------.
|
|
||||||
* | F10| F11| F12| - |
|
|
||||||
* |----|----|----|----|
|
|
||||||
* | F7 | F8 | F9 | |
|
|
||||||
* |----|----|----| vol|
|
|
||||||
* | F4 | F5 | F6 | + |
|
|
||||||
* |----|----|----|----|
|
|
||||||
* | F1 | F2 | F3 | vol|
|
|
||||||
* |----|----|----| - |
|
|
||||||
* | FN | . | |
|
|
||||||
* `-------------------'
|
|
||||||
*/
|
|
||||||
[1] = LAYOUT_numpad_5x4(
|
|
||||||
KC_F10, KC_F11, KC_F12, KC_NO,
|
|
||||||
KC_F7, KC_F8, KC_F9,
|
|
||||||
KC_F4, KC_F5, KC_F6, KC_VOLU,
|
|
||||||
KC_F1, KC_F2, KC_F3,
|
|
||||||
KC_NO, KC_PDOT, KC_VOLD
|
|
||||||
)
|
|
||||||
};
|
|
|
@ -1 +0,0 @@
|
||||||
TAP_DANCE_ENABLE = yes
|
|
|
@ -1,22 +0,0 @@
|
||||||
/* Copyright 2020 Dimitris Papavasiliou <dpapavas@protonmail.ch>
|
|
||||||
*
|
|
||||||
* 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 3 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 <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#undef TAPPING_TERM
|
|
||||||
#define TAPPING_TERM 175
|
|
||||||
#define TAPPING_TERM_PER_KEY
|
|
||||||
#define PERMISSIVE_HOLD_PER_KEY
|
|
|
@ -1,202 +0,0 @@
|
||||||
/* Copyright 2020 Dimitris Papavasiliou <dpapavas@protonmail.ch>
|
|
||||||
*
|
|
||||||
* 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 3 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 <https://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
#define CAPS_SFT MT(MOD_LSFT, KC_CAPS)
|
|
||||||
#define QUOT_SFT MT(MOD_RSFT, KC_QUOT)
|
|
||||||
#define PSCR_SFT MT(MOD_LSFT, KC_PSCR)
|
|
||||||
#define PAUSE_SFT MT(MOD_RSFT, KC_PAUSE)
|
|
||||||
#define F_SFT MT(MOD_LSFT, KC_F)
|
|
||||||
#define J_SFT MT(MOD_RSFT, KC_J)
|
|
||||||
#define PGUP_GUI MT(MOD_LGUI, KC_PGUP)
|
|
||||||
#define END_GUI MT(MOD_LGUI, KC_END)
|
|
||||||
#define UP_GUI MT(MOD_RGUI, KC_UP)
|
|
||||||
#define LEFT_GUI MT(MOD_RGUI, KC_LEFT)
|
|
||||||
#define EQL_CTL MT(MOD_RCTL, KC_EQL)
|
|
||||||
#define MINS_CTL MT(MOD_LCTL, KC_MINS)
|
|
||||||
#define BSPC_ALT LALT_T(KC_BSPC)
|
|
||||||
#define ENT_ALT LALT_T(KC_ENT)
|
|
||||||
#define SPC_ALT RALT_T(KC_SPC)
|
|
||||||
#define DEL_ALT RALT_T(KC_DEL)
|
|
||||||
|
|
||||||
enum tapdance_keycodes {
|
|
||||||
TD_LEFT,
|
|
||||||
TD_RGHT,
|
|
||||||
TD_C_X
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[0] = LAYOUT(
|
|
||||||
/* Left hand */ /* Right hand */
|
|
||||||
|
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ESC,
|
|
||||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
|
||||||
CAPS_SFT, KC_A, KC_S, KC_D, F_SFT, KC_G, KC_H, J_SFT, KC_K, KC_L, KC_SCLN, QUOT_SFT,
|
|
||||||
PSCR_SFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, PAUSE_SFT,
|
|
||||||
|
|
||||||
TD(TD_LEFT), KC_INS, KC_LBRC, MINS_CTL, BSPC_ALT, DEL_ALT, TD(TD_C_X), TD(TD_C_X), ENT_ALT, SPC_ALT, EQL_CTL, KC_RBRC, KC_DEL, TD(TD_RGHT),
|
|
||||||
KC_HOME, PGUP_GUI, END_GUI, LEFT_GUI, UP_GUI, KC_RGHT,
|
|
||||||
KC_PGDN, KC_DOWN
|
|
||||||
),
|
|
||||||
|
|
||||||
[1] = LAYOUT(
|
|
||||||
/* Left hand */ /* Right hand */
|
|
||||||
|
|
||||||
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F11,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_F12,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT, QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
};
|
|
||||||
|
|
||||||
/* The following helper macros define tap dances that support
|
|
||||||
* separated press, release, tap and double-tap functions. */
|
|
||||||
|
|
||||||
#define STEPS(DANCE) [DANCE] = ACTION_TAP_DANCE_FN_ADVANCED( \
|
|
||||||
NULL, \
|
|
||||||
dance_ ## DANCE ## _finished, \
|
|
||||||
dance_ ## DANCE ## _reset)
|
|
||||||
|
|
||||||
#define CHOREOGRAPH(DANCE, PRESS, RELEASE, TAP, DOUBLETAP) \
|
|
||||||
static bool dance_ ## DANCE ## _pressed; \
|
|
||||||
\
|
|
||||||
void dance_ ## DANCE ## _finished(tap_dance_state_t *state, void *user_data) { \
|
|
||||||
if (state->count == 1) { \
|
|
||||||
if (state->pressed) { \
|
|
||||||
dance_ ## DANCE ## _pressed = true; \
|
|
||||||
PRESS; \
|
|
||||||
} else { \
|
|
||||||
TAP; \
|
|
||||||
} \
|
|
||||||
} else if (state->count == 2) { \
|
|
||||||
if (!state->pressed) { \
|
|
||||||
DOUBLETAP; \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
\
|
|
||||||
void dance_ ## DANCE ## _reset(tap_dance_state_t *state, void *user_data) { \
|
|
||||||
if (state->count == 1) { \
|
|
||||||
if (dance_ ## DANCE ## _pressed) { \
|
|
||||||
RELEASE; \
|
|
||||||
dance_ ## DANCE ## _pressed = false; \
|
|
||||||
} \
|
|
||||||
} \
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Define dance for left palm key. */
|
|
||||||
|
|
||||||
CHOREOGRAPH(TD_LEFT,
|
|
||||||
layer_invert(1), /* Temporarily toggle layer when held. */
|
|
||||||
layer_invert(1),
|
|
||||||
|
|
||||||
/* Press and release both shifts on tap, to change
|
|
||||||
* keyboard layout (i.e. language). */
|
|
||||||
|
|
||||||
SEND_STRING(SS_DOWN(X_LSFT) SS_DOWN(X_RSFT)
|
|
||||||
SS_UP(X_LSFT) SS_UP(X_RSFT)),
|
|
||||||
|
|
||||||
layer_invert(1)); /* Toggle layer (permanently) on
|
|
||||||
* double-tap. */
|
|
||||||
|
|
||||||
/* Define dance for right palm key. */
|
|
||||||
|
|
||||||
CHOREOGRAPH(TD_RGHT,
|
|
||||||
layer_invert(1), /* Same as above */
|
|
||||||
layer_invert(1),
|
|
||||||
/* Send a complex macro: C-x C-s Mod-t up. (Save in
|
|
||||||
* Emacs, switch to terminal and recall previous command,
|
|
||||||
* hopefully a compile command.) */
|
|
||||||
SEND_STRING(SS_DOWN(X_LCTL) SS_TAP(X_X) SS_TAP(X_S) SS_UP(X_LCTL)
|
|
||||||
SS_DOWN(X_LGUI) SS_TAP(X_T) SS_UP(X_LGUI) SS_TAP(X_UP)),
|
|
||||||
layer_invert(1));
|
|
||||||
|
|
||||||
/* This facilitates C-x chords in Emacs. Used as a modifier along
|
|
||||||
* with, say, the s-key, it saves, by sending C-x C-s. When tapped it
|
|
||||||
* just sends C-x. */
|
|
||||||
|
|
||||||
CHOREOGRAPH(TD_C_X,
|
|
||||||
SEND_STRING(SS_DOWN(X_LCTL) SS_TAP(X_X)),
|
|
||||||
SEND_STRING(SS_UP(X_LCTL)),
|
|
||||||
SEND_STRING(SS_DOWN(X_LCTL) SS_TAP(X_X) SS_UP(X_LCTL)),);
|
|
||||||
|
|
||||||
tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
STEPS(TD_LEFT), STEPS(TD_RGHT), STEPS(TD_C_X)
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Set a longer tapping term for palm keys to allow comfortable
|
|
||||||
* permanent layer toggle. Also set an essentially infinite tapping
|
|
||||||
* term for certain mod-tap keys one tends to keep pressed (such as
|
|
||||||
* space, backspace, etc.). This prevents sending the modifier
|
|
||||||
* keycode by accident (allowing re-tap to get repeated key-press)
|
|
||||||
* and, in combination with permissive hold, they can still be used
|
|
||||||
* fine as modifiers. */
|
|
||||||
|
|
||||||
uint16_t get_tapping_term(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case TD(TD_LEFT):
|
|
||||||
case TD(TD_RGHT):
|
|
||||||
return 250;
|
|
||||||
case BSPC_ALT:
|
|
||||||
case UP_GUI:
|
|
||||||
case LEFT_GUI:
|
|
||||||
return 5000;
|
|
||||||
default:
|
|
||||||
return TAPPING_TERM;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool get_permissive_hold(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case TD(TD_LEFT):
|
|
||||||
case TD(TD_RGHT):
|
|
||||||
case BSPC_ALT:
|
|
||||||
case UP_GUI:
|
|
||||||
case LEFT_GUI:
|
|
||||||
return true;
|
|
||||||
default:
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Use the first LED to indicate the active layer. */
|
|
||||||
|
|
||||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
|
||||||
writePin(D0, (get_highest_layer(state) > 0));
|
|
||||||
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Cycle through the LEDs after initialization. */
|
|
||||||
|
|
||||||
void keyboard_post_init_user(void) {
|
|
||||||
const pin_t pins[] = {D0, D1, D2};
|
|
||||||
uint8_t i, j;
|
|
||||||
|
|
||||||
for (i = 0 ; i < ARRAY_SIZE(pins) + 2 ; i += 1) {
|
|
||||||
for (j = 0 ; j < ARRAY_SIZE(pins); j += 1) {
|
|
||||||
setPinOutput(pins[j]);
|
|
||||||
writePin(pins[j], (j == i || j == i - 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
wait_ms(100);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
# Enable additional features.
|
|
||||||
|
|
||||||
DEBOUNCE_TYPE = sym_defer_pk
|
|
||||||
TAP_DANCE_ENABLE = yes
|
|
|
@ -1,199 +0,0 @@
|
||||||
/* Copyright 2021 BB-66
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
bool is_alt_tab_active = false;
|
|
||||||
uint16_t alt_tab_timer = 0;
|
|
||||||
|
|
||||||
char wpm_str[4];
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[0] = LAYOUT(
|
|
||||||
KC_ESC, 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_PAUS, KC_PSCR, KC_SCRL, KC_ESC,
|
|
||||||
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_EQL, KC_BSPC, KC_NUM, KC_KP_SLASH, KC_KP_ASTERISK, KC_KP_MINUS,
|
|
||||||
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, KC_KP_7, KC_KP_8, KC_KP_9, KC_KP_PLUS,
|
|
||||||
KC_CAPS, 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_KP_4, KC_KP_5, KC_KP_6,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_KP_1, KC_KP_2, KC_KP_3, KC_KP_ENTER,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_KP_0, KC_KP_DOT
|
|
||||||
),
|
|
||||||
[1] = LAYOUT(
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
|
||||||
),
|
|
||||||
[2] = LAYOUT(
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
|
||||||
),
|
|
||||||
[3] = LAYOUT(
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
|
||||||
),
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef OLED_ENABLE
|
|
||||||
// WPM-responsive animation stuff here
|
|
||||||
# define IDLE_FRAMES 5
|
|
||||||
# define IDLE_SPEED 20 // below this wpm value your animation will idle
|
|
||||||
|
|
||||||
// #define PREP_FRAMES 1 // uncomment if >1
|
|
||||||
|
|
||||||
# define TAP_FRAMES 2
|
|
||||||
# define TAP_SPEED 40 // above this wpm value typing animation to trigger
|
|
||||||
|
|
||||||
# define ANIM_FRAME_DURATION 200 // how long each frame lasts in ms
|
|
||||||
// #define SLEEP_TIMER 60000 // should sleep after this period of 0 wpm, needs fixing
|
|
||||||
# define ANIM_SIZE 610 // number of bytes in array, minimize for adequate firmware size, max is 1024
|
|
||||||
|
|
||||||
uint32_t anim_timer = 0;
|
|
||||||
uint32_t anim_sleep = 0;
|
|
||||||
uint8_t current_idle_frame = 0;
|
|
||||||
// uint8_t current_prep_frame = 0; // uncomment if PREP_FRAMES >1
|
|
||||||
uint8_t current_tap_frame = 0;
|
|
||||||
|
|
||||||
// Code containing pixel art, contains:
|
|
||||||
// 5 idle frames, 1 prep frame, and 2 tap frames
|
|
||||||
|
|
||||||
// To make your own pixel art:
|
|
||||||
// save a png/jpeg of an 128x32 image (resource: https://www.pixilart.com/draw )
|
|
||||||
// follow this guide up to and including "CONVERT YOUR IMAGE" https://docs.splitkb.com/hc/en-us/articles/360013811280-How-do-I-convert-an-image-for-use-on-an-OLED-display-
|
|
||||||
// replace numbers in brackets with your own
|
|
||||||
// if you start getting errors when compiling make sure you didn't accedentally delete a bracket
|
|
||||||
static void render_anim(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},
|
|
||||||
};
|
|
||||||
|
|
||||||
// assumes 1 frame prep stage
|
|
||||||
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[abs((PREP_FRAMES-1)-current_prep_frame)], ANIM_SIZE); // uncomment if IDLE_FRAMES >1
|
|
||||||
oled_write_raw_P(prep[0], ANIM_SIZE); // remove if IDLE_FRAMES >1
|
|
||||||
}
|
|
||||||
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(); // not essential but turns on animation OLED with 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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Used to draw on to the oled screen
|
|
||||||
bool oled_task_user(void) {
|
|
||||||
render_anim(); // renders pixelart
|
|
||||||
|
|
||||||
oled_set_cursor(0, 0); // sets cursor to (row, column) using charactar spacing (4 rows, 21 full columns on a 128x32 screen, anything more will overflow back to the top)
|
|
||||||
uint8_t n = get_current_wpm();
|
|
||||||
wpm_str[3] = '\0';
|
|
||||||
wpm_str[2] = '0' + n % 10;
|
|
||||||
wpm_str[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' ';
|
|
||||||
wpm_str[0] = n / 10 ? '0' + n / 10 : ' ';
|
|
||||||
oled_write_P(PSTR("WPM:"), false);
|
|
||||||
oled_write(wpm_str, false);
|
|
||||||
|
|
||||||
led_t led_state = host_keyboard_led_state(); // caps lock stuff, prints CAPS on new line if caps led is on
|
|
||||||
oled_set_cursor(0, 1);
|
|
||||||
oled_write_P(led_state.caps_lock ? PSTR("CAPS") : PSTR(" "), false);
|
|
||||||
oled_set_cursor(0, 2);
|
|
||||||
oled_write_P(led_state.num_lock ? PSTR("NUM") : PSTR(" "), false);
|
|
||||||
oled_set_cursor(4, 2);
|
|
||||||
oled_write_P(led_state.scroll_lock ? PSTR("SCLK") : PSTR(" "), false);
|
|
||||||
oled_set_cursor(0, 3);
|
|
||||||
switch (get_highest_layer(layer_state)) {
|
|
||||||
case 0:
|
|
||||||
oled_write_P(PSTR("Base Layer\n"), false);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
oled_write_P(PSTR("Base Enhanced\n"), false);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
oled_write_P(PSTR("Gaming\n"), false);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
oled_write_P(PSTR("Gaming Enh\n"), false);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
oled_write_ln_P(PSTR("Undefined"), false);
|
|
||||||
}
|
|
||||||
oled_set_cursor(17, 3);
|
|
||||||
oled_write_P(PSTR("NKRO"), keymap_config.nkro);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -1,3 +0,0 @@
|
||||||
VIA_ENABLE = yes
|
|
||||||
OLED_ENABLE = yes
|
|
||||||
WPM_ENABLE = yes # WPM counting Enable
|
|
|
@ -1,116 +0,0 @@
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
enum pteron_layers {
|
|
||||||
_QWERTY,
|
|
||||||
_LOWER,
|
|
||||||
_RAISE,
|
|
||||||
_ADJUST
|
|
||||||
};
|
|
||||||
|
|
||||||
#define LOWER MO(_LOWER)
|
|
||||||
#define RAISE MO(_RAISE)
|
|
||||||
|
|
||||||
// alt gr
|
|
||||||
#undef G
|
|
||||||
#define G(kc) RALT(kc)
|
|
||||||
|
|
||||||
// custom keycodes
|
|
||||||
// use F_ prefix to avoid problems
|
|
||||||
|
|
||||||
// NB! I use Norwegian keyboard layout on my machines, so the keymap probably
|
|
||||||
// doesn't make much sense for US/ANSI users
|
|
||||||
|
|
||||||
#define F_FSLH S(KC_7) // forward slash
|
|
||||||
#define F_BSLH KC_EQL // backward slash
|
|
||||||
#define F_EQL S(KC_0) // equals sign
|
|
||||||
#define F_APOS KC_BSLS // '
|
|
||||||
#define F_TIMES S(KC_BSLS) // *
|
|
||||||
#define F_PLUS KC_MINS // +
|
|
||||||
#define F_QUEST S(KC_MINS) // ?
|
|
||||||
#define F_HAT S(KC_RBRC) // ^
|
|
||||||
#define F_TILD G(KC_RBRC) // ~
|
|
||||||
#define F_UML KC_RBRC // ¨ (umlaut)
|
|
||||||
#define F_SECT S(KC_GRV) // section sign ("law sign") (shifted key below esc)
|
|
||||||
#define F_GRAVE S(KC_EQL)
|
|
||||||
#define F_ACUTE G(KC_EQL)
|
|
||||||
|
|
||||||
#define KC_AA KC_LBRC
|
|
||||||
#define KC_OE KC_SCLN
|
|
||||||
#define KC_AE KC_QUOT
|
|
||||||
|
|
||||||
// brackets
|
|
||||||
#define F_SBRL G(KC_8) // square bracket left
|
|
||||||
#define F_SBRR G(KC_9) // square bracket right
|
|
||||||
#define F_CBRL G(KC_7) // curly bracket left
|
|
||||||
#define F_CBRR G(KC_0) // curly bracket right
|
|
||||||
#define F_RBRL S(KC_8) // round bracket left
|
|
||||||
#define F_RBRR S(KC_9) // round bracket right
|
|
||||||
#define F_ABRL KC_NUBS // angle bracket left
|
|
||||||
#define F_ABRR S(KC_NUBS) // angle bracket right
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
/* QWERTY
|
|
||||||
* +-----------------------------------------+ +-----------------------------------------+
|
|
||||||
* | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Å |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | Ctrl | A | S | D | F | G | | H | J | K | L | Ø | Æ |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | Shft | Z | X | C | V | B | | N | M | , | . | - | Shft |
|
|
||||||
* +---------------------------+------+------+-------------+ +-------------+------+------+---------------------------+
|
|
||||||
* | LOWR | Spc | Alt | Win | | Win | Alt | Spc | RISE |
|
|
||||||
* +---------------------------+ +---------------------------+
|
|
||||||
*/
|
|
||||||
|
|
||||||
[_QWERTY] = LAYOUT(
|
|
||||||
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_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_AA,
|
|
||||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_OE, KC_AE,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
||||||
LOWER, KC_SPC, KC_LALT, KC_LGUI, KC_RGUI, KC_RALT, KC_ENT, RAISE
|
|
||||||
),
|
|
||||||
|
|
||||||
/* LOWER
|
|
||||||
* +-----------------------------------------+ +-----------------------------------------+
|
|
||||||
* | | | | | | | | | | | | | |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | | | | | | | | \ | / | [ | ] | = | Del |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | | F1 | F2 | F3 | F4 | F5 | | < | > | ( | ) | * | ~ |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | | F6 | F7 | F8 | F9 | F10 | | F11 | F12 | { | } | + | |
|
|
||||||
* +---------------------------+------+------+-------------+ +-------------+------+------+---------------------------+
|
|
||||||
* | | | | | | | | | |
|
|
||||||
* +---------------------------+ +---------------------------+
|
|
||||||
*/
|
|
||||||
|
|
||||||
[_LOWER] = LAYOUT(
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, F_BSLH, F_FSLH, F_SBRL, F_SBRR, F_EQL, KC_DEL,
|
|
||||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, F_ABRL, F_ABRR, F_RBRL, F_RBRR, F_TIMES, F_TILD,
|
|
||||||
_______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, F_CBRL, F_CBRR, F_PLUS, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
[_RAISE] = LAYOUT(
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_AA,
|
|
||||||
F_SECT, S(KC_1), S(KC_2), S(KC_3), S(KC_4), S(KC_5), F_QUEST, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, F_APOS,
|
|
||||||
_______, S(KC_6), G(KC_2), G(KC_3), G(KC_4), G(KC_5), F_HAT, KC_HOME, KC_PGDN, KC_PGUP, KC_END, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
[_ADJUST] = LAYOUT(
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, F_UML, F_GRAVE, F_ACUTE, _______, QK_BOOT, _______, _______, _______, _______, KC_PSCR, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
|
||||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
/* Copyright 2021 Fidel Coria
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
/* override diode direction from keyboard config */
|
|
||||||
/* COL2ROW or ROW2COL */
|
|
||||||
#undef DIODE_DIRECTION
|
|
||||||
#define DIODE_DIRECTION COL2ROW
|
|
|
@ -1,120 +0,0 @@
|
||||||
/* Copyright 2021 Fidel Coria
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
enum pteron_layers {
|
|
||||||
_QWERTY,
|
|
||||||
_LOWER,
|
|
||||||
_RAISE,
|
|
||||||
_ADJUST
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
#define LOWER MO(_LOWER)
|
|
||||||
#define RAISE MO(_RAISE)
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
/* Qwerty
|
|
||||||
* +-----------------------------------------+ +-----------------------------------------+
|
|
||||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Del |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | Esc | A | S | D | F | G | | H | J | K | L | ; | " |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
|
||||||
* +-------------+------+------+------+------| |------+------+------+------+-------------+
|
|
||||||
* |Lower | SPC | Alt | GUI | | Alt | GUI | SPC |Raise |
|
|
||||||
* +---------------------------+ +---------------------------+
|
|
||||||
*/
|
|
||||||
[_QWERTY] = LAYOUT(
|
|
||||||
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_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL,
|
|
||||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT,
|
|
||||||
LOWER, KC_SPC, KC_LALT, KC_LGUI, KC_RALT, KC_RGUI, KC_SPC, RAISE
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Lower
|
|
||||||
* +-----------------------------------------+ +-----------------------------------------+
|
|
||||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Bksp |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | Del |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | Del | F1 | F2 | F3 | F4 | F5 | | F6 | _ | + | { | } | | |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | | F7 | F8 | F9 | F10 | F11 | | F12 |ISO ~ |ISO | | | | |
|
|
||||||
* +-------------+------+------+------+------| |------+------+------+------+-------------+
|
|
||||||
* | | | | | | Next | Vol- | Vol+ | Play |
|
|
||||||
* +---------------------------+ +---------------------------+
|
|
||||||
*/
|
|
||||||
[_LOWER] = LAYOUT(
|
|
||||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
|
||||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_DEL,
|
|
||||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
|
||||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,S(KC_NUHS),S(KC_NUBS),KC_HOME, KC_END, _______,
|
|
||||||
_______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Raise
|
|
||||||
* +-----------------------------------------+ +-----------------------------------------+
|
|
||||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Bksp |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | Del | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | | F7 | F8 | F9 | F10 | F11 | | F12 |ISO # |ISO / | | | |
|
|
||||||
* +-------------+------+------+------+------| |------+------+------+------+-------------+
|
|
||||||
* | | | | | | Next | Vol- | Vol+ | Play |
|
|
||||||
* +---------------------------+ +---------------------------+
|
|
||||||
*/
|
|
||||||
[_RAISE] = LAYOUT(
|
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
|
||||||
KC_DEL, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
|
||||||
_______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_NUHS, KC_NUBS, KC_PGUP, KC_PGDN, _______,
|
|
||||||
_______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Adjust (Lower + Raise)
|
|
||||||
* +-----------------------------------------+ +-----------------------------------------+
|
|
||||||
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | | Reset| | | | | | | | | | | Del |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | | | |Aud on|AudOff|AGnorm| |AGswap|Qwerty|Colemk|Dvorak| | |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | |Voice-|Voice+|Mus on|MusOff|MidiOn| |MidOff| | | | | |
|
|
||||||
* +-------------+------+------+------+------| |------+------+------+------+-------------+
|
|
||||||
* | | | | | | | | | |
|
|
||||||
* +---------------------------+ +---------------------------+
|
|
||||||
*/
|
|
||||||
[_ADJUST] = 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,
|
|
||||||
_______, QK_BOOT, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______
|
|
||||||
)
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
|
||||||
return update_tri_layer_state(state, _LOWER, _RAISE, _ADJUST);
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
# alzafacon pteron layout
|
|
||||||
|
|
||||||
This keymap is for builds with elite-c controllers.
|
|
||||||
Also notice `DIODE_DIRECTION COL2ROW`. I prefer to hand-wire this way.
|
|
|
@ -1,2 +0,0 @@
|
||||||
# for elite-c
|
|
||||||
BOOTLOADER = atmel-dfu
|
|
|
@ -1,43 +0,0 @@
|
||||||
/* Copyright 2020 Bpendragon
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
enum custom_keycodes {
|
|
||||||
DBL_0 = SAFE_RANGE,
|
|
||||||
};
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case DBL_0:
|
|
||||||
if(record->event.pressed) {
|
|
||||||
SEND_STRING("00");
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[0] = LAYOUT (
|
|
||||||
KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS, KC_MUTE, KC_MPRV, KC_MNXT, KC_MPLY,
|
|
||||||
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_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
|
||||||
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, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
|
||||||
KC_CAPS, 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_P4, KC_P5, KC_P6,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, DBL_0, KC_PDOT
|
|
||||||
)
|
|
||||||
};
|
|
|
@ -1,64 +0,0 @@
|
||||||
/* Copyright 2019 John M Daly <jmdaly@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/>.
|
|
||||||
*/
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
|
||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
|
||||||
// entirely and just use numbers.
|
|
||||||
|
|
||||||
enum {
|
|
||||||
// Layers
|
|
||||||
_L1,
|
|
||||||
_L2,
|
|
||||||
_L3,
|
|
||||||
_L4,
|
|
||||||
_L5
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[_L1] = LAYOUT_standard( /* Qwerty */
|
|
||||||
LT(_L5, KC_TAB), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
|
||||||
CTL_T(KC_ESC), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, LT(_L2, KC_QUOT),
|
|
||||||
SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_RSPC,
|
|
||||||
MO(_L2), KC_LGUI, MO(_L3), KC_ENT, LT(_L2, KC_SPC), KC_RALT, KC_BSLS, MO(_L4)
|
|
||||||
),
|
|
||||||
[_L2] = LAYOUT_standard( /* LAYER 2 */
|
|
||||||
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_BSLS, KC_QUOT, KC_MINS, KC_EQL, KC_LBRC, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
|
|
||||||
_______, KC_ESC, _______, KC_PSCR, _______, _______, _______, KC_MSTP, KC_LBRC, KC_RBRC, KC_MNXT, _______,
|
|
||||||
_______, KC_LGUI, _______, _______, _______, _______, _______, MO(_L4)
|
|
||||||
),
|
|
||||||
[_L3] = LAYOUT_standard( /* LAYER 3 */
|
|
||||||
KC_MINS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
|
||||||
KC_EQL, KC_PIPE, KC_TILD, KC_UNDS, KC_PLUS, LSFT(KC_LBRC), LSFT(KC_RBRC), KC_4, KC_5, KC_6, KC_VOLU, KC_INS,
|
|
||||||
_______, RGB_TOG, RGB_MOD, RGB_RMOD, KC_DQUO, _______, KC_0, KC_1, KC_2, KC_3, KC_VOLD, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______
|
|
||||||
),
|
|
||||||
[_L4] = LAYOUT_standard( /* LAYER 4 */
|
|
||||||
QK_BOOT, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_PGUP, _______,
|
|
||||||
KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_HOME, KC_END, _______,
|
|
||||||
KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_PGDN, KC_F12, _______,
|
|
||||||
_______, KC_LSFT, KC_B, KC_SPC, KC_C, _______, _______, _______
|
|
||||||
),
|
|
||||||
[_L5] = LAYOUT_standard( /* LAYER 5 */
|
|
||||||
_______, LGUI(KC_1), LGUI(KC_2), LGUI(KC_3), LGUI(KC_4), LGUI(KC_5), LGUI(KC_6), LGUI(KC_7), LGUI(KC_8), LGUI(KC_9), LGUI(KC_0), LGUI(KC_MINS),
|
|
||||||
KC_ESC, _______, _______, _______, _______, _______, _______, KC_F5, KC_F6, KC_HOME, KC_END, _______,
|
|
||||||
KC_LSFT, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_F9, KC_F10, KC_PGDN, KC_F12, _______,
|
|
||||||
_______, KC_LSFT, KC_B, KC_SPC, KC_C, _______, _______, _______
|
|
||||||
)
|
|
||||||
};
|
|
|
@ -1 +0,0 @@
|
||||||
# jmdaly's keymap for the steamvan
|
|
|
@ -1,65 +0,0 @@
|
||||||
/* Copyright 2020 DmNosachev
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
// Defines names for use in layer keycodes and the keymap
|
|
||||||
enum layer_names {
|
|
||||||
_BASE,
|
|
||||||
_FN1
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/*
|
|
||||||
* ,---------------------------------------------------------------------------------------------------------------------------.
|
|
||||||
* | F1 | F2 | Esc | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = |Backspace| ~` | ScrLk | FN1 |
|
|
||||||
* |---------------------------------------------------------------------------------------------------------------------------|
|
|
||||||
* | F3 | F4 | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | |Home | ↑ |PgUp |PrnSc|
|
|
||||||
* |--------------------------------------------------------------------------------------------- ------------------------|
|
|
||||||
* | F5 | F6 | Ctrl | A | S | D | F | G | H | J | K | L | ;: | '" | Enter | ← | ↓ | → | wh+ |
|
|
||||||
* |---------------------------------------------------------------------------------------------------------------------------|
|
|
||||||
* | F7 | F8 | Shift | Z | X | C | V | B | N | M | , | . | /? | Shift | |\ |End | |PgDn | wh- |
|
|
||||||
* |---------------------------------------------------------------------------------------------------------------------- |
|
|
||||||
* | F9 | F10 | Alt |FN1 | Space | Alt | Ins | Del | |
|
|
||||||
* `---------------------------------------------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_BASE] = LAYOUT(
|
|
||||||
KC_F1, KC_F2, 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_GRV, KC_SCRL, MO(_FN1),
|
|
||||||
KC_F3, KC_F4, 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_HOME, KC_UP, KC_PGUP, KC_PSCR,
|
|
||||||
KC_F5, KC_F6, KC_LCTL, 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_LEFT, KC_DOWN, KC_RGHT, KC_WH_U,
|
|
||||||
KC_F7, KC_F8, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_END, KC_NO, KC_PGDN, KC_WH_D,
|
|
||||||
KC_F9, KC_F10,KC_LALT, MO(_FN1), KC_SPC, KC_RALT, KC_INS, KC_DEL
|
|
||||||
),
|
|
||||||
/*
|
|
||||||
* ,---------------------------------------------------------------------------------------------------------------------------.
|
|
||||||
* |reset| | | F11 | F12 | au+ | au- | clk | clk+| clk-| clkr| | | | | Delete |NumLk| / | FN1 |
|
|
||||||
* |---------------------------------------------------------------------------------------------------------------------------|
|
|
||||||
* | | | | | mlb | m↑ | mrb | | | | | | | | | | 7 | 8 | 9 | * |
|
|
||||||
* |--------------------------------------------------------------------------------------------- ------------------------|
|
|
||||||
* | | | | | m← | m↓ | m→ | | | | | | | | | 4 | 5 | 6 | - |
|
|
||||||
* |---------------------------------------------------------------------------------------------------------------------------|
|
|
||||||
* | | | | | | | | | | | | | | | | 1 | 2 | 3 | + |
|
|
||||||
* |---------------------------------------------------------------------------------------------------------------------- |
|
|
||||||
* | | | |FN1 | | CapsLock| 0 Ins | . Del | |
|
|
||||||
* `---------------------------------------------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_FN1] = LAYOUT(
|
|
||||||
QK_BOOT, _______, _______, KC_F11, KC_F12, AU_ON, AU_OFF, CK_TOGG, CK_UP, CK_DOWN, CK_RST, _______, _______, _______, _______, KC_DEL, KC_NUM, KC_PSLS, _______,
|
|
||||||
_______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, _______, _______, _______, _______, _______, _______, _______, _______, KC_P7, KC_P8, KC_P9, KC_PAST,
|
|
||||||
_______, _______, _______ , _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______, _______, _______, _______, _______, _______, _______, KC_P4, KC_P5, KC_P6, KC_PMNS,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PPLS,
|
|
||||||
_______, _______, _______, _______, _______, KC_CAPS, KC_P0, KC_PDOT
|
|
||||||
)
|
|
||||||
};
|
|
|
@ -1,64 +0,0 @@
|
||||||
/*
|
|
||||||
This is the c configuration file for the keymap
|
|
||||||
|
|
||||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
|
||||||
Copyright 2015 Jack Humbert
|
|
||||||
Copyright 2021 Franco Rosi <fraanrosi@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
|
|
||||||
|
|
||||||
// place overrides here
|
|
||||||
|
|
||||||
// If you need more program area, try select and reduce rgblight modes to use.
|
|
||||||
|
|
||||||
#ifndef LED_ANIMATIONS
|
|
||||||
# define LED_ANIMATIONS
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Selection of RGBLIGHT MODE to use.
|
|
||||||
#if defined(LED_ANIMATIONS)
|
|
||||||
#define RGBLIGHT_EFFECT_BREATHING
|
|
||||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
|
||||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
|
||||||
#define RGBLIGHT_EFFECT_SNAKE
|
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT
|
|
||||||
#define RGBLIGHT_EFFECT_CHRISTMAS
|
|
||||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
|
||||||
#define RGBLIGHT_EFFECT_RGB_TEST
|
|
||||||
#define RGBLIGHT_EFFECT_ALTERNATING
|
|
||||||
#define RGBLIGHT_EFFECT_TWINKLE
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef RGBLIGHT_HUE_STEP
|
|
||||||
#define RGBLIGHT_HUE_STEP 4
|
|
||||||
|
|
||||||
#ifdef MOUSEKEY_ENABLE
|
|
||||||
#undef MOUSEKEY_INTERVAL
|
|
||||||
#define MOUSEKEY_INTERVAL 20
|
|
||||||
|
|
||||||
#undef MOUSEKEY_TIME_TO_MAX
|
|
||||||
#define MOUSEKEY_TIME_TO_MAX 40
|
|
||||||
|
|
||||||
#undef MOUSEKEY_MAX_SPEED
|
|
||||||
#define MOUSEKEY_MAX_SPEED 6
|
|
||||||
|
|
||||||
#undef MOUSEKEY_MOVE_DELTA
|
|
||||||
#define MOUSEKEY_MOVE_DELTA 5
|
|
||||||
|
|
||||||
#undef MOUSEKEY_DELAY
|
|
||||||
#define MOUSEKEY_DELAY 0
|
|
||||||
#endif
|
|
|
@ -1,288 +0,0 @@
|
||||||
/*
|
|
||||||
This is the c configuration file for the keymap
|
|
||||||
|
|
||||||
Copyright 2012 Jun Wako <wakojun@gmail.com>
|
|
||||||
Copyright 2015 Jack Humbert
|
|
||||||
Copyright 2021 Franco Rosi <fraanrosi@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/>.
|
|
||||||
*/
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
// Following line allows macro to read current RGB settings
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
uint8_t RGB_current_mode;
|
|
||||||
HSV CURRENT_COLOR;
|
|
||||||
bool caps_is_active = false;
|
|
||||||
/*Here I set the first rgb mode*/
|
|
||||||
void keyboard_post_init_user(void) {
|
|
||||||
rgblight_enable(); // Enables RGB, without saving settings
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 3);
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
rgblight_sethsv(HSV_RED);
|
|
||||||
CURRENT_COLOR = rgblight_get_hsv();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
extern uint8_t is_master;
|
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
|
||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
|
||||||
// entirely and just use numbers.
|
|
||||||
enum layer_number {
|
|
||||||
_QWERTY = 0,
|
|
||||||
_LOWER,
|
|
||||||
_RAISE
|
|
||||||
};
|
|
||||||
|
|
||||||
enum custom_keycodes {
|
|
||||||
QWERTY = SAFE_RANGE,
|
|
||||||
LOWER,
|
|
||||||
RAISE,
|
|
||||||
RGBRST,
|
|
||||||
RGB_1,
|
|
||||||
RGB_2,
|
|
||||||
RGB_3,
|
|
||||||
RGB_4,
|
|
||||||
RGB_5,
|
|
||||||
RGB_6,
|
|
||||||
RGB_7,
|
|
||||||
RGB_8,
|
|
||||||
RGB_9
|
|
||||||
};
|
|
||||||
|
|
||||||
#define LOWER MO(1)
|
|
||||||
#define RAISE MO(2)
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
/* Qwerty
|
|
||||||
* ,-----------------------------------------. ,-----------------------------------------.
|
|
||||||
* | | | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | CAPS | A | S | D | F | G | | H | J | K | L | Ñ |Enter |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* |Shift | Z | X | C | V | B | { | } | N | M | , | . | - |Shift |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | Ctrl | Esc | Win | Alt |Raise |Lower |Space |Space |Alt Gr| Left | Up | Down |Right | Ctrl |
|
|
||||||
* `-------------------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_QWERTY] = LAYOUT(
|
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_DEL,
|
|
||||||
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_CAPS, 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_QUOT, KC_NUHS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
||||||
KC_LCTL, KC_ESC, KC_LGUI, KC_LALT, MO(2), MO(1), KC_SPC, KC_SPC, KC_RALT, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, KC_RCTL
|
|
||||||
),
|
|
||||||
|
|
||||||
/*Lower
|
|
||||||
* ,-----------------------------------------. ,-----------------------------------------.
|
|
||||||
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | | Mute | Play |Mouse1|Mouse2| | |Print | |Insert|' ? \ | ¿ ¡ | |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | |Shine+|Shine-| Vol -| Vol +| | | |Mouse↑| | ´ ¨ |+ * ~ | |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | | < > | | | | | | |Mouse←|Mouse↓|Mouse→| | | |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | | | | | | | | | | Home |PageUp|PageDn| End | |
|
|
||||||
* `-------------------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_LOWER] = 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_TRNS, KC_MUTE, KC_MPLY, KC_BTN1, KC_BTN2, KC_TRNS, KC_PSCR, KC_TRNS, KC_INS, KC_MINS, KC_EQL, KC_TRNS,
|
|
||||||
KC_NO, KC_BRID, KC_BRIU, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS, KC_MS_U, KC_TRNS, KC_LBRC, KC_RBRC, KC_TRNS,
|
|
||||||
KC_TRNS, KC_NUBS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_MS_L, KC_MS_D, KC_MS_R, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_PGDN, KC_END, KC_TRNS
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Raise
|
|
||||||
* ,-----------------------------------------. ,-----------------------------------------.
|
|
||||||
* | | | | | | | | | | | | | |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | RGB1 | RGB2 | RGB3 | RGB4 |RGB ON| | | | MODE+| MODE-| | | |
|
|
||||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
|
||||||
* | RGB5 | RGB6 | RGB7 | RGB8 | RGB9 | | | | HUE+ | HUE- | | | |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | | MODE+| MODE-| HUE+ | HUE- | | Reset| | | | | | | |
|
|
||||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
|
||||||
* | | | | | | | | | | | | | | |
|
|
||||||
* `-------------------------------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_RAISE] = LAYOUT(
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
RGB_1, RGB_2, RGB_3, RGB_4, RGB_TOG, KC_NO, KC_NO, RGB_MOD, RGB_RMOD,KC_NO, KC_NO, KC_NO,
|
|
||||||
RGB_5, RGB_6, RGB_7, RGB_8, RGB_9, KC_NO, KC_NO, RGB_HUI, RGB_HUD, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, RGB_MOD, RGB_RMOD,RGB_HUI, RGB_HUD, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
// define variables for reactive RGB
|
|
||||||
bool TOG_STATUS = false;
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case LOWER:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
// not sure how to have keyboard check mode and set it to a variable, so my work around
|
|
||||||
// uses another variable that would be set to true after the first time a reactive key is pressed.
|
|
||||||
if (TOG_STATUS) { // TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
|
|
||||||
} else {
|
|
||||||
TOG_STATUS = !TOG_STATUS;
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (!caps_is_active) {
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
CURRENT_COLOR = rgblight_get_hsv();
|
|
||||||
}
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
|
|
||||||
rgblight_sethsv(HSV_BLUE);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
layer_on(_LOWER);
|
|
||||||
} else {
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (!caps_is_active) {
|
|
||||||
rgblight_mode(RGB_current_mode);
|
|
||||||
rgblight_sethsv(CURRENT_COLOR.h, CURRENT_COLOR.s, CURRENT_COLOR.v);
|
|
||||||
} else {
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_ALTERNATING);
|
|
||||||
rgblight_sethsv(HSV_WHITE);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
TOG_STATUS = false;
|
|
||||||
layer_off(_LOWER);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case RAISE:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
// not sure how to have keyboard check mode and set it to a variable, so my work around
|
|
||||||
// uses another variable that would be set to true after the first time a reactive key is pressed.
|
|
||||||
if (TOG_STATUS) { // TOG_STATUS checks is another reactive key currently pressed, only changes RGB mode if returns false
|
|
||||||
} else {
|
|
||||||
TOG_STATUS = !TOG_STATUS;
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (!caps_is_active) {
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
CURRENT_COLOR = rgblight_get_hsv();
|
|
||||||
}
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
|
|
||||||
rgblight_sethsv(HSV_RED);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
layer_on(_RAISE);
|
|
||||||
} else {
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (!caps_is_active) {
|
|
||||||
rgblight_mode(RGB_current_mode);
|
|
||||||
rgblight_sethsv(CURRENT_COLOR.h, CURRENT_COLOR.s, CURRENT_COLOR.v);
|
|
||||||
} else {
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_ALTERNATING);
|
|
||||||
rgblight_sethsv(HSV_WHITE);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
layer_off(_RAISE);
|
|
||||||
TOG_STATUS = false;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
//led operations - RGB mode change now updates the RGB_current_mode to allow the right RGB mode to be set after reactive keys are released
|
|
||||||
case RGB_1 ... RGB_9:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_sethsv(CURRENT_COLOR.h, CURRENT_COLOR.s, CURRENT_COLOR.v);
|
|
||||||
//this to have each custom mode separately, but sharing logic
|
|
||||||
switch(keycode){
|
|
||||||
case RGB_1:
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_MOOD + 1);
|
|
||||||
break;
|
|
||||||
case RGB_2:
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_KNIGHT);
|
|
||||||
break;
|
|
||||||
case RGB_3:
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_SNAKE);
|
|
||||||
break;
|
|
||||||
case RGB_4:
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 3);
|
|
||||||
break;
|
|
||||||
case RGB_5:
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_TWINKLE + 5);
|
|
||||||
break;
|
|
||||||
case RGB_6:
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_BREATHING + 3);
|
|
||||||
break;
|
|
||||||
case RGB_7:
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
|
|
||||||
break;
|
|
||||||
case RGB_8:
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_STATIC_GRADIENT + 5);
|
|
||||||
break;
|
|
||||||
case RGB_9:
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_CHRISTMAS);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
CURRENT_COLOR = rgblight_get_hsv();
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case RGB_TOG ... RGB_HUD:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_sethsv(CURRENT_COLOR.h, CURRENT_COLOR.s, CURRENT_COLOR.v);
|
|
||||||
rgblight_mode(RGB_current_mode);
|
|
||||||
process_rgb(keycode, record);
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
CURRENT_COLOR = rgblight_get_hsv();
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case KC_CAPS:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
register_code(KC_CAPS);
|
|
||||||
caps_is_active = !caps_is_active;
|
|
||||||
if (caps_is_active) {
|
|
||||||
CURRENT_COLOR = rgblight_get_hsv();
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_ALTERNATING);
|
|
||||||
rgblight_sethsv(HSV_WHITE);
|
|
||||||
} else if (!caps_is_active) {
|
|
||||||
unregister_code(KC_CAPS);
|
|
||||||
rgblight_mode(RGB_current_mode);
|
|
||||||
rgblight_sethsv(CURRENT_COLOR.h, CURRENT_COLOR.s, CURRENT_COLOR.v);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case RGBRST:
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
eeconfig_update_rgblight_default();
|
|
||||||
rgblight_enable();
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
CURRENT_COLOR = rgblight_get_hsv();
|
|
||||||
#endif
|
|
||||||
}
|
|
|
@ -1,40 +0,0 @@
|
||||||
<!---Copyright 2021 Franco Rosi <fraanrosi@gmail.com> -->
|
|
||||||
## Fraanrosi
|
|
||||||
A **Latin American Spanish** keymap for Helix/rev2/under, 5 rows.
|
|
||||||
Designed to be as simple and more touch typing oriented as possible.
|
|
||||||
It was inspired by a DELL Latitude E5470.
|
|
||||||
|
|
||||||
## Layers
|
|
||||||
|
|
||||||
The Helix obviously does not have enough keys compared to a typical keyboard.
|
|
||||||
The keymap has multiple layers, moving extra keys to different layers.
|
|
||||||
|
|
||||||
|Priority|Layer ID|Layer Name|Contents|
|
|
||||||
| ---- | ---- | --- | --- |
|
|
||||||
||0|Qwerty|Qwerty layout (Base)|
|
|
||||||
||1|Lower|Symbols, media, function keys and mouse.(Blue)|
|
|
||||||
||2|Raise|Underglow RGB config(Red)|
|
|
||||||
|
|
||||||
Keymap : http://www.keyboard-layout-editor.com/#/gists/4cd7b4ccda1de5cf9edc56d29b64da30
|
|
||||||
### First layer (qwerty).
|
|
||||||
|
|
||||||
It contains the "**Ñ**" letter.
|
|
||||||
"Caps Lock" key toggle an RGB mode, to alert.
|
|
||||||
@ is typed with AltGr+q
|
|
||||||
![first-layer](https://i.imgur.com/BaVDVdB.png)
|
|
||||||
### Second layer (Lower).
|
|
||||||
|
|
||||||
While "Lower" key is pressed, the RBG mode remains BLUE.
|
|
||||||
It has the "Symbols, media, function keys and mouse" features.
|
|
||||||
It completes the rest of the needed qwerty and F keys.
|
|
||||||
![second-layer](https://i.imgur.com/HbDVTfp.png)
|
|
||||||
### Third layer (Raise).
|
|
||||||
|
|
||||||
While "Raise" key is pressed, the RBG mode remains RED.
|
|
||||||
This is the underglow RGB's layer , where can be controlled the modes and hue.
|
|
||||||
With reset button for the micros.
|
|
||||||
![third-layer](https://i.imgur.com/MF8jjbu.png)
|
|
||||||
### All the layers.
|
|
||||||
![all-the-layers](https://i.imgur.com/jn1VI4V.png)
|
|
||||||
|
|
||||||
<!---![Keyboard](https://i.imgur.com/Onwmsss.png) -->
|
|
|
@ -1,24 +0,0 @@
|
||||||
# QMK Standard 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
|
|
||||||
#
|
|
||||||
# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
|
|
||||||
# See TOP/docs/config_options.md for more information.
|
|
||||||
#
|
|
||||||
SPLIT_KEYBOARD = yes
|
|
||||||
LTO_ENABLE = yes # if firmware size over limit, try this option
|
|
||||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
# AUDIO_ENABLE = yes # Audio output on port C6
|
|
||||||
# Helix Spacific Build Options
|
|
||||||
# you can uncomment and edit follows 7 Variables
|
|
||||||
# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
|
|
||||||
# OLED_ENABLE = no # OLED_ENABLE
|
|
||||||
# LOCAL_GLCDFONT = no # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
|
|
||||||
# LED_BACK_ENABLE = no # LED backlight (Enable WS2812 RGB underlight.)
|
|
||||||
# LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
|
||||||
LED_ANIMATIONS = yes # LED animations
|
|
||||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
|
||||||
|
|
||||||
LED_BACK_ENABLE = no
|
|
||||||
LED_UNDERGLOW_ENABLE = yes
|
|
|
@ -1,50 +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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef CONFIG_USER_H
|
|
||||||
#define CONFIG_USER_H
|
|
||||||
|
|
||||||
#undef TAPPING_TERM
|
|
||||||
#define TAPPING_TERM 200
|
|
||||||
#define ONESHOT_TAP_TOGGLE 5 /* Tapping this number of times holds the key until tapped this number of times again. */
|
|
||||||
#define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */
|
|
||||||
|
|
||||||
// the froggy keymap does not use the right hand side, so sync_timer is not needed
|
|
||||||
#define DISABLE_SYNC_TIMER
|
|
||||||
// For the same reason, the following are also not needed
|
|
||||||
#undef SPLIT_LAYER_STATE_ENABLE
|
|
||||||
#undef SPLIT_LED_STATE_ENABLE
|
|
||||||
|
|
||||||
// If you need more program area, try select and reduce rgblight modes to use.
|
|
||||||
|
|
||||||
// Selection of RGBLIGHT MODE to use.
|
|
||||||
#if defined(LED_ANIMATIONS)
|
|
||||||
#define RGBLIGHT_EFFECT_BREATHING
|
|
||||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
|
||||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
|
||||||
#define RGBLIGHT_EFFECT_SNAKE
|
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT
|
|
||||||
#define RGBLIGHT_EFFECT_CHRISTMAS
|
|
||||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
|
||||||
//#define RGBLIGHT_EFFECT_RGB_TEST
|
|
||||||
//#define RGBLIGHT_EFFECT_ALTERNATING
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif /* CONFIG_USER_H */
|
|
|
@ -1,235 +0,0 @@
|
||||||
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
|
|
||||||
// See gfxfont.h for newer custom bitmap font info.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "progmem.h"
|
|
||||||
|
|
||||||
// Standard ASCII 5x7 font
|
|
||||||
|
|
||||||
static const unsigned char font[] PROGMEM = {
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
|
|
||||||
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
|
|
||||||
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
|
|
||||||
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
|
|
||||||
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
|
|
||||||
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
|
|
||||||
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
|
|
||||||
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
|
|
||||||
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
|
|
||||||
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
|
|
||||||
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
|
|
||||||
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
|
|
||||||
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
|
|
||||||
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
|
|
||||||
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
|
|
||||||
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
|
|
||||||
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
|
|
||||||
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
|
|
||||||
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
|
|
||||||
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
|
|
||||||
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
|
|
||||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
|
|
||||||
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
|
|
||||||
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
|
|
||||||
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
|
|
||||||
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
|
|
||||||
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
|
|
||||||
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
|
|
||||||
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
|
|
||||||
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
|
|
||||||
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
|
|
||||||
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
|
|
||||||
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
|
|
||||||
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
|
|
||||||
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
|
|
||||||
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
|
|
||||||
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
|
|
||||||
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
|
|
||||||
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
|
|
||||||
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
|
|
||||||
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
|
|
||||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
|
|
||||||
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
|
|
||||||
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
|
|
||||||
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
|
|
||||||
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
|
|
||||||
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
|
|
||||||
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
|
|
||||||
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
|
|
||||||
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
|
|
||||||
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
|
|
||||||
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
|
|
||||||
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
|
|
||||||
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
|
|
||||||
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
|
|
||||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
|
|
||||||
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
|
|
||||||
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
|
|
||||||
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
|
|
||||||
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
|
|
||||||
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
|
|
||||||
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
|
||||||
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
|
|
||||||
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
|
|
||||||
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
|
|
||||||
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
|
|
||||||
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
|
|
||||||
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
|
|
||||||
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
|
|
||||||
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
|
|
||||||
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
|
||||||
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
|
|
||||||
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
|
|
||||||
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
|
|
||||||
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
|
|
||||||
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
|
|
||||||
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
|
|
||||||
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
|
|
||||||
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
|
|
||||||
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
|
|
||||||
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
|
|
||||||
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
|
|
||||||
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
|
|
||||||
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
|
|
||||||
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
|
|
||||||
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
|
|
||||||
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
|
|
||||||
0xFC, 0xFE, 0x02, 0x82, 0x82, 0x82,
|
|
||||||
0x82, 0x82, 0x82, 0xC2, 0x82, 0x02,
|
|
||||||
0x02, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
|
||||||
0x02, 0x62, 0x62, 0x62, 0x62, 0xE2,
|
|
||||||
0x62, 0x62, 0xE2, 0x02, 0x02, 0xFC,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
|
|
||||||
0x30, 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, 0x80, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x40, 0x00, 0x00, 0x24, 0xA4,
|
|
||||||
0xA4, 0xBC, 0xA4, 0x24, 0x24, 0x00,
|
|
||||||
0x00, 0x00, 0x24, 0xA4, 0x24, 0x24,
|
|
||||||
0x3C, 0x04, 0x04, 0x00, 0x00, 0x00,
|
|
||||||
0xB8, 0xA4, 0xA4, 0xA4, 0xBC, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC,
|
|
||||||
0x00, 0x44, 0x44, 0x44, 0xDC, 0x44,
|
|
||||||
0x04, 0x3C, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xFC, 0xFE, 0xFE, 0x7E, 0x7E, 0x7E,
|
|
||||||
0x7E, 0x7E, 0x7E, 0x3E, 0x7E, 0xFE,
|
|
||||||
0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
|
||||||
0xFE, 0x9E, 0x9E, 0x9E, 0x9E, 0x1E,
|
|
||||||
0x9E, 0x9E, 0x1E, 0xFE, 0xFE, 0xFC,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
|
|
||||||
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
|
|
||||||
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
|
|
||||||
0x7F, 0x7F, 0x40, 0x41, 0x41, 0x41,
|
|
||||||
0x41, 0x41, 0x41, 0x41, 0x41, 0x40,
|
|
||||||
0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
|
||||||
0x40, 0x40, 0x40, 0x40, 0x40, 0x41,
|
|
||||||
0x40, 0x40, 0x43, 0x40, 0x40, 0x7F,
|
|
||||||
0x00, 0x00, 0x00, 0xF0, 0xFB, 0xFB,
|
|
||||||
0x00, 0x50, 0x60, 0xFF, 0xFC, 0x3C,
|
|
||||||
0x1E, 0x0E, 0x0C, 0xFC, 0xF8, 0xE8,
|
|
||||||
0xE8, 0xE8, 0x30, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x02, 0x02, 0x0D, 0x02,
|
|
||||||
0x02, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x57, 0x50,
|
|
||||||
0x57, 0x54, 0x57, 0x10, 0x50, 0x00,
|
|
||||||
0x00, 0x00, 0x97, 0x94, 0x97, 0x94,
|
|
||||||
0xF7, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xE4, 0x14, 0xF4, 0x94, 0xF7, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF,
|
|
||||||
0x00, 0x38, 0xA4, 0xA4, 0xA5, 0x3C,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E,
|
|
||||||
0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F,
|
|
||||||
0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
|
||||||
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E,
|
|
||||||
0x7F, 0x7F, 0x7C, 0x7F, 0x7F, 0x7F,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xFE, 0xFE, 0x02, 0x62, 0x62, 0x62,
|
|
||||||
0xE2, 0x62, 0x62, 0x62, 0xC2, 0x02,
|
|
||||||
0x02, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
|
||||||
0x02, 0x82, 0xC2, 0xE2, 0xF2, 0x82,
|
|
||||||
0x82, 0x82, 0x82, 0x02, 0x02, 0xFE,
|
|
||||||
0x00, 0x00, 0x00, 0x07, 0x7F, 0xDF,
|
|
||||||
0x00, 0x05, 0x03, 0x7F, 0x1F, 0x1E,
|
|
||||||
0x3C, 0x38, 0x18, 0x1F, 0x0F, 0x0D,
|
|
||||||
0x0D, 0x0D, 0x06, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x20, 0x20, 0x50,
|
|
||||||
0x8C, 0x50, 0x20, 0x20, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
|
|
||||||
0x40, 0x30, 0x40, 0x80, 0x89, 0x09,
|
|
||||||
0x06, 0x09, 0x09, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x1C, 0x12, 0x12, 0x12,
|
|
||||||
0x1E, 0x10, 0x10, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xFF, 0x00, 0x73,
|
|
||||||
0x84, 0xE7, 0x94, 0x94, 0x94, 0x67,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xFE, 0xFE, 0xFE, 0x9E, 0x9E, 0x9E,
|
|
||||||
0x1E, 0x9E, 0x9E, 0x9E, 0x3E, 0xFE,
|
|
||||||
0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
|
||||||
0xFE, 0x7E, 0x3E, 0x1E, 0x0E, 0x7E,
|
|
||||||
0x7E, 0x7E, 0x7E, 0xFE, 0xFE, 0xFE,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
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, 0x7F, 0x40, 0x46, 0x46, 0x46,
|
|
||||||
0x47, 0x46, 0x46, 0x46, 0x43, 0x40,
|
|
||||||
0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
|
||||||
0x40, 0x41, 0x43, 0x47, 0x4F, 0x41,
|
|
||||||
0x41, 0x41, 0x41, 0x40, 0x40, 0x3F,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
|
|
||||||
0x06, 0x01, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x01, 0x06, 0x01, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x08,
|
|
||||||
0x36, 0x08, 0x08, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x1F, 0x00, 0x0E,
|
|
||||||
0x10, 0x1C, 0x12, 0x12, 0x12, 0x12,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x3F, 0x7F, 0x7F, 0x79, 0x79, 0x79,
|
|
||||||
0x78, 0x79, 0x79, 0x79, 0x7C, 0x7F,
|
|
||||||
0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
|
||||||
0x7F, 0x7E, 0x7C, 0x78, 0x70, 0x7E,
|
|
||||||
0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x3F,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
|
|
||||||
};
|
|
|
@ -1,696 +0,0 @@
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#define MIN(x, y) (((x) < (y)) ? (x) : (y))
|
|
||||||
#define MAX(x, y) (((x) > (y)) ? (x) : (y))
|
|
||||||
|
|
||||||
#define LAYOUT_half( \
|
|
||||||
L00, L01, L02, L03, L04, L05, \
|
|
||||||
L10, L11, L12, L13, L14, L15, \
|
|
||||||
L20, L21, L22, L23, L24, L25, \
|
|
||||||
L30, L31, L32, L33, L34, L35, L36, \
|
|
||||||
L40, L41, L42, L43, L44, L45, L46 \
|
|
||||||
) { \
|
|
||||||
{ L00, L01, L02, L03, L04, L05, KC_NO }, \
|
|
||||||
{ L10, L11, L12, L13, L14, L15, KC_NO }, \
|
|
||||||
{ L20, L21, L22, L23, L24, L25, KC_NO }, \
|
|
||||||
{ L30, L31, L32, L33, L34, L35, L36 }, \
|
|
||||||
{ L40, L41, L42, L43, L44, L45, L46 }, \
|
|
||||||
{ _______, _______, _______, _______, _______, _______, KC_NO }, \
|
|
||||||
{ _______, _______, _______, _______, _______, _______, KC_NO }, \
|
|
||||||
{ _______, _______, _______, _______, _______, _______, KC_NO }, \
|
|
||||||
{ _______, _______, _______, _______, _______, _______, _______ }, \
|
|
||||||
{ _______, _______, _______, _______, _______, _______, _______ } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DELAY_TIME 75
|
|
||||||
static uint16_t key_timer;
|
|
||||||
static uint16_t tap_timer;
|
|
||||||
static uint16_t delay_registered_code;
|
|
||||||
static uint8_t delay_mat_row;
|
|
||||||
static uint8_t delay_mat_col;
|
|
||||||
static bool delay_key_stat;
|
|
||||||
static bool delay_key_pressed;
|
|
||||||
static bool tapping_key;
|
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
|
||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
|
||||||
// entirely and just use numbers.
|
|
||||||
#define _BASE 0
|
|
||||||
#define _OPT 1
|
|
||||||
#define _FUNC 2
|
|
||||||
#define _SYM 3
|
|
||||||
#define _NUM 4
|
|
||||||
|
|
||||||
bool RGBAnimation = false; //Flag for LED Layer color Refresh.
|
|
||||||
|
|
||||||
enum custom_keycodes {
|
|
||||||
QWERTY = SAFE_RANGE,
|
|
||||||
EISU,
|
|
||||||
KANA,
|
|
||||||
RGBRST,
|
|
||||||
RGBOFF,
|
|
||||||
RGB1,
|
|
||||||
RGB2,
|
|
||||||
RGB3,
|
|
||||||
OPT_TAP_SP,
|
|
||||||
DESKTOP,
|
|
||||||
MAC,
|
|
||||||
WIN,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum macro_keycodes {
|
|
||||||
KC_SAMPLEMACRO,
|
|
||||||
};
|
|
||||||
|
|
||||||
//Macros
|
|
||||||
#define M_SAMPLE M(KC_SAMPLEMACRO)
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
/* Base
|
|
||||||
* ,-----------------------------------------.
|
|
||||||
* | C+z | ; | [ | ( | < | { |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | KANA | P | K | R | A | F |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | BS | D | T | H | E | O |
|
|
||||||
* |------+------+------+------+------+------+------.
|
|
||||||
* | Shift| Y | S | N | I | U |Space |
|
|
||||||
* |------+------+------+------+------+------+------|
|
|
||||||
* | Ctrl | Alt | Gui | Sym | Num | OPT | Ent |
|
|
||||||
* `------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_BASE] = LAYOUT_half(
|
|
||||||
LCTL(KC_Z), KC_SCLN, KC_LBRC, KC_LPRN, KC_LT, KC_LCBR,
|
|
||||||
KANA, KC_P, KC_K, KC_R, KC_A, KC_F,
|
|
||||||
KC_BSPC, KC_D, KC_T, KC_H, KC_E, KC_O,
|
|
||||||
OSM(MOD_LSFT), KC_Y, KC_S, KC_N, KC_I, KC_U, KC_SPC,
|
|
||||||
OSM(MOD_LCTL), OSM(MOD_LALT), OSM(MOD_LGUI), MO(_SYM), MO(_NUM), OPT_TAP_SP, KC_ENT ),
|
|
||||||
|
|
||||||
/* Opt
|
|
||||||
* ,-----------------------------------------.
|
|
||||||
* | Esc | : | ] | ) | > | } |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | EISU| J | M | B | ' | Tab |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | . | V | C | L | Z | Q |
|
|
||||||
* |------+------+------+------+------+------+------.
|
|
||||||
* | | X | G | W | - | Del | Esc |
|
|
||||||
* |------+------+------+------+------+------+------|
|
|
||||||
* | | | | , | DTOP | | |
|
|
||||||
* `------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_OPT] = LAYOUT_half(
|
|
||||||
KC_ESC, KC_COLN,KC_RBRC, KC_RPRN,KC_GT, KC_RCBR,
|
|
||||||
EISU, KC_J, KC_M, KC_B, KC_QUOT, KC_TAB,
|
|
||||||
KC_DOT, KC_V, KC_C, KC_L, KC_Z, KC_Q,
|
|
||||||
_______, KC_X, KC_G, KC_W, KC_MINUS, KC_DEL, KC_ESC,
|
|
||||||
_______, _______,_______, KC_COMM,DESKTOP, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Func
|
|
||||||
* ,-----------------------------------------.
|
|
||||||
* |RGBRST| Hue | | RST | Mac | Win |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | RGB1 | VAL+ | F7 | F8 | F9 | |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | RGB2 | VAL- | F4 | F5 | F6 | F12 |
|
|
||||||
* |------+------+------+------+------+------+------.
|
|
||||||
* | RGB3 | F10 | F1 | F2 | F3 | F11 | |
|
|
||||||
* |------+------+------+------+------+------+------|
|
|
||||||
* |RGBOFF| | | | | | |
|
|
||||||
* `------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_FUNC] = LAYOUT_half(
|
|
||||||
RGBRST,RGB_HUI, _______, QK_BOOT, MAC, WIN,
|
|
||||||
RGB1, RGB_VAI, KC_F7, KC_F8, KC_F9, _______,
|
|
||||||
RGB2, RGB_VAD, KC_F4, KC_F5, KC_F6, KC_F12,
|
|
||||||
RGB3, KC_F10, KC_F1, KC_F2, KC_F3, KC_F11, _______,
|
|
||||||
RGBOFF,_______, _______, _______, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Sym
|
|
||||||
* ,-----------------------------------------.
|
|
||||||
* | Ins | GRV | | PU | PD | ^ |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | | \ | # | = | ? | % |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | | $ | upA | @ | ! | | |
|
|
||||||
* |------+------+------+------+------+------+------.
|
|
||||||
* | CL | <- | dwA | -> | _ | & | |
|
|
||||||
* |------+------+------+------+------+------+------|
|
|
||||||
* | | | PS | | ~ | | |
|
|
||||||
* `------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_SYM] = LAYOUT_half(
|
|
||||||
KC_INS, KC_GRV, _______, KC_PGUP, KC_PGDN, KC_CIRC,
|
|
||||||
_______, KC_BSLS, KC_HASH, KC_EQL, KC_QUES, KC_PERC,
|
|
||||||
_______, KC_DLR, KC_UP, KC_AT, KC_EXLM, KC_PIPE,
|
|
||||||
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT,KC_UNDS, KC_AMPR, _______,
|
|
||||||
_______, _______, KC_PSCR, _______, KC_TILD, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Raise
|
|
||||||
* ,-----------------------------------------.
|
|
||||||
* | | | Func | home | End | |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | | * | 7 | 8 | 9 | - |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | . | / | 4 | 5 | 6 | + |
|
|
||||||
* |------+------+------+------+------+------+------.
|
|
||||||
* | LN | 0 | 1 | 2 | 3 |C+S+F1| |
|
|
||||||
* |------+------+------+------+------+------+------|
|
|
||||||
* | | | | , | | | |
|
|
||||||
* `------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_NUM] = LAYOUT_half(
|
|
||||||
_______, _______, OSL(_FUNC), KC_HOME, KC_END, _______,
|
|
||||||
_______, KC_ASTR, KC_P7, KC_P8, KC_P9, KC_MINS,
|
|
||||||
KC_PDOT, KC_SLSH, KC_P4, KC_P5, KC_P6, KC_PLUS,
|
|
||||||
KC_NUM, KC_P0, KC_P1, KC_P2, KC_P3, LCTL(S(KC_F1)), _______,
|
|
||||||
_______, _______, KC_PDOT, KC_COMM, _______, _______, _______
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
|
|
||||||
float tone_qwerty[][2] = SONG(QWERTY_SOUND);
|
|
||||||
float tone_dvorak[][2] = SONG(DVORAK_SOUND);
|
|
||||||
float tone_colemak[][2] = SONG(COLEMAK_SOUND);
|
|
||||||
float tone_plover[][2] = SONG(PLOVER_SOUND);
|
|
||||||
float tone_plover_gb[][2] = SONG(PLOVER_GOODBYE_SOUND);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// define variables for reactive RGB
|
|
||||||
//bool TOG_STATUS = false;
|
|
||||||
int RGB_current_mode;
|
|
||||||
|
|
||||||
void persistent_default_layer_set(uint16_t default_layer) {
|
|
||||||
eeconfig_update_default_layer(default_layer);
|
|
||||||
default_layer_set(default_layer);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool find_mairix(uint16_t keycode, uint8_t *row, uint8_t *col){
|
|
||||||
for(uint8_t i=0; i<MATRIX_ROWS; i++){
|
|
||||||
for(uint8_t j=0; j<MATRIX_COLS; j++){
|
|
||||||
if( pgm_read_word(&(keymaps[_BASE][i][j]))==keycode){
|
|
||||||
*row = i;
|
|
||||||
*col = j;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void unregister_delay_code(void){
|
|
||||||
if(delay_registered_code){
|
|
||||||
unregister_code(delay_registered_code);
|
|
||||||
if (delay_registered_code & QK_LSFT){
|
|
||||||
unregister_code(KC_LSFT);
|
|
||||||
}
|
|
||||||
if (delay_registered_code & QK_LCTL){
|
|
||||||
unregister_code(KC_LCTL);
|
|
||||||
}
|
|
||||||
if (delay_registered_code & QK_LALT){
|
|
||||||
unregister_code(KC_LALT);
|
|
||||||
}
|
|
||||||
if (delay_registered_code & QK_LGUI){
|
|
||||||
unregister_code(KC_LGUI);
|
|
||||||
}
|
|
||||||
delay_registered_code=0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void register_delay_code(uint8_t layer){
|
|
||||||
if(delay_key_stat){
|
|
||||||
unregister_delay_code();
|
|
||||||
|
|
||||||
uint16_t code = pgm_read_word(&(keymaps[layer][delay_mat_row][delay_mat_col]));
|
|
||||||
if (code & QK_LSFT){
|
|
||||||
register_code(KC_LSFT);
|
|
||||||
}
|
|
||||||
if (code & QK_LCTL){
|
|
||||||
register_code(KC_LCTL);
|
|
||||||
}
|
|
||||||
if (code & QK_LALT){
|
|
||||||
register_code(KC_LALT);
|
|
||||||
}
|
|
||||||
if (code & QK_LGUI){
|
|
||||||
register_code(KC_LGUI);
|
|
||||||
}
|
|
||||||
register_code(code);
|
|
||||||
delay_registered_code = code;
|
|
||||||
delay_key_stat = false;
|
|
||||||
tapping_key = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
struct keybuf {
|
|
||||||
char col, row;
|
|
||||||
char frame;
|
|
||||||
};
|
|
||||||
struct keybuf keybufs[256];
|
|
||||||
unsigned char keybuf_begin, keybuf_end;
|
|
||||||
|
|
||||||
int col, row;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
col = record->event.key.col;
|
|
||||||
row = record->event.key.row;
|
|
||||||
if (record->event.pressed && ((row < 5 && is_keyboard_master()) || (row >= 5 && !is_keyboard_master()))) {
|
|
||||||
int end = keybuf_end;
|
|
||||||
keybufs[end].col = col;
|
|
||||||
keybufs[end].row = row % 5;
|
|
||||||
keybufs[end].frame = 0;
|
|
||||||
keybuf_end ++;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if(tap_timer&&keycode!=OPT_TAP_SP){
|
|
||||||
tapping_key = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(keycode==delay_registered_code){
|
|
||||||
if (!record->event.pressed){
|
|
||||||
unregister_delay_code();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (keycode) {
|
|
||||||
case KC_SCLN:
|
|
||||||
case KC_LBRC:
|
|
||||||
case KC_LPRN:
|
|
||||||
case KC_LT:
|
|
||||||
case KC_LCBR:
|
|
||||||
case KC_P:
|
|
||||||
case KC_K:
|
|
||||||
case KC_R:
|
|
||||||
case KC_A:
|
|
||||||
case KC_F:
|
|
||||||
case KC_BSPC:
|
|
||||||
case KC_D:
|
|
||||||
case KC_T:
|
|
||||||
case KC_H:
|
|
||||||
case KC_E:
|
|
||||||
case KC_O:
|
|
||||||
case KC_Y:
|
|
||||||
case KC_S:
|
|
||||||
case KC_N:
|
|
||||||
case KC_I:
|
|
||||||
case KC_U:
|
|
||||||
case LCTL(KC_Z):
|
|
||||||
case KC_SPC:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
register_delay_code(_BASE);
|
|
||||||
if(find_mairix(keycode, &delay_mat_row, &delay_mat_col)){
|
|
||||||
key_timer = timer_read();
|
|
||||||
delay_key_stat = true;
|
|
||||||
delay_key_pressed = true;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
delay_key_pressed = false;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case OPT_TAP_SP:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tapping_key = false;
|
|
||||||
register_delay_code(_OPT);
|
|
||||||
layer_on(_OPT);
|
|
||||||
tap_timer = timer_read();
|
|
||||||
}else{
|
|
||||||
layer_off(_OPT);
|
|
||||||
if(tapping_key==false && timer_elapsed(tap_timer) < TAPPING_TERM){
|
|
||||||
SEND_STRING(" ");
|
|
||||||
}
|
|
||||||
tap_timer = 0;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case EISU:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if(keymap_config.swap_lalt_lgui==false){
|
|
||||||
register_code(KC_LNG2);
|
|
||||||
}else{
|
|
||||||
SEND_STRING(SS_LALT("`"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_LNG2);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case KANA:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if(keymap_config.swap_lalt_lgui==false){
|
|
||||||
register_code(KC_LNG1);
|
|
||||||
}else{
|
|
||||||
SEND_STRING(SS_LALT("`"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_LNG1);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case DESKTOP:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if(keymap_config.swap_lalt_lgui==false){
|
|
||||||
register_code(KC_F11);
|
|
||||||
}else{
|
|
||||||
SEND_STRING(SS_LGUI("d"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_F11);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case RGBRST:
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
eeconfig_update_rgblight_default();
|
|
||||||
rgblight_enable();
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
RGBAnimation = false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case RGBOFF:
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_disable();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case RGB1:
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
RGBAnimation = true;
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_MOOD);
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case RGB2:
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
RGBAnimation = true;
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 1);
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case RGB3:
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
RGBAnimation = true;
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_KNIGHT);
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case MAC:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
keymap_config.swap_lalt_lgui = false;
|
|
||||||
keymap_config.swap_ralt_rgui = false;
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
PLAY_SONG(ag_norm_song);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WIN:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
keymap_config.swap_lalt_lgui = true;
|
|
||||||
keymap_config.swap_ralt_rgui = true;
|
|
||||||
#ifdef AUDIO_ENABLE
|
|
||||||
PLAY_SONG(ag_swap_song);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//keyboard start-up code. Runs once when the firmware starts up.
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
RGB_current_mode = rgblight_get_mode();
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//assign the right code to your layers for OLED display
|
|
||||||
#define L_BASE 0
|
|
||||||
#define L_OPT 2
|
|
||||||
#define L_FUNC 4
|
|
||||||
#define L_SYM 8
|
|
||||||
#define L_NUM 16
|
|
||||||
#define L_FNLAYER 64
|
|
||||||
#define L_NUMLAY 128
|
|
||||||
#define L_NLOWER 136
|
|
||||||
#define L_NFNLAYER 192
|
|
||||||
#define L_MOUSECURSOR 256
|
|
||||||
|
|
||||||
// LED Effect
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
unsigned char rgb[7][5][3];
|
|
||||||
void led_ripple_effect(char r, char g, char b) {
|
|
||||||
static int scan_count = -10;
|
|
||||||
static int keys[] = { 6, 6, 6, 7, 7 };
|
|
||||||
static int keys_sum[] = { 0, 6, 12, 18, 25 };
|
|
||||||
|
|
||||||
if (scan_count == -1) {
|
|
||||||
rgblight_enable_noeeprom();
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
|
|
||||||
} else if (scan_count >= 0 && scan_count < 5) {
|
|
||||||
for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) {
|
|
||||||
int i = c;
|
|
||||||
// FIXME:
|
|
||||||
|
|
||||||
int y = scan_count;
|
|
||||||
int dist_y = abs(y - keybufs[i].row);
|
|
||||||
for (int x=0; x<keys[y]; x++) {
|
|
||||||
int dist = abs(x - keybufs[i].col) + dist_y;
|
|
||||||
if (dist <= keybufs[i].frame) {
|
|
||||||
int elevation = MAX(0, (8 + dist - keybufs[i].frame)) << 2;
|
|
||||||
if (elevation) {
|
|
||||||
if ((rgb[x][y][0] != 255) && r) { rgb[x][y][0] = MIN(255, elevation + rgb[x][y][0]); }
|
|
||||||
if ((rgb[x][y][1] != 255) && g) { rgb[x][y][1] = MIN(255, elevation + rgb[x][y][1]); }
|
|
||||||
if ((rgb[x][y][2] != 255) && b) { rgb[x][y][2] = MIN(255, elevation + rgb[x][y][2]); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (scan_count == 5) {
|
|
||||||
for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) {
|
|
||||||
int i = c;
|
|
||||||
if (keybufs[i].frame < 18) {
|
|
||||||
keybufs[i].frame ++;
|
|
||||||
} else {
|
|
||||||
keybuf_begin ++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (scan_count >= 6 && scan_count <= 10) {
|
|
||||||
int y = scan_count - 6;
|
|
||||||
for (int x=0; x<keys[y]; x++) {
|
|
||||||
int at = keys_sum[y] + ((y & 1) ? x : (keys[y] - x - 1));
|
|
||||||
led[at].r = rgb[x][y][0];
|
|
||||||
led[at].g = rgb[x][y][1];
|
|
||||||
led[at].b = rgb[x][y][2];
|
|
||||||
}
|
|
||||||
rgblight_set();
|
|
||||||
} else if (scan_count == 11) {
|
|
||||||
memset(rgb, 0, sizeof(rgb));
|
|
||||||
}
|
|
||||||
scan_count++;
|
|
||||||
if (scan_count >= 12) { scan_count = 0; }
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
uint8_t layer_state_old;
|
|
||||||
|
|
||||||
//runs every scan cycle (a lot)
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
if(delay_key_stat && (timer_elapsed(key_timer) > DELAY_TIME)){
|
|
||||||
register_delay_code(_BASE);
|
|
||||||
if(!delay_key_pressed){
|
|
||||||
unregister_delay_code();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(layer_state_old != layer_state){
|
|
||||||
switch (layer_state) {
|
|
||||||
case L_BASE:
|
|
||||||
break;
|
|
||||||
case L_OPT:
|
|
||||||
register_delay_code(_OPT);
|
|
||||||
break;
|
|
||||||
case L_NUM:
|
|
||||||
register_delay_code(_NUM);
|
|
||||||
break;
|
|
||||||
case L_SYM:
|
|
||||||
register_delay_code(_SYM);
|
|
||||||
break;
|
|
||||||
case L_FUNC:
|
|
||||||
register_delay_code(_FUNC);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
layer_state_old = layer_state;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if(!RGBAnimation){
|
|
||||||
switch (layer_state) {
|
|
||||||
case L_BASE:
|
|
||||||
#ifdef RGBLED_BACK
|
|
||||||
led_ripple_effect(0,112,127);
|
|
||||||
#else
|
|
||||||
rgblight_setrgb(0,112,127);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case L_OPT:
|
|
||||||
#ifdef RGBLED_BACK
|
|
||||||
led_ripple_effect(127,0,100);
|
|
||||||
#else
|
|
||||||
rgblight_setrgb(127,0,100);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case L_NUM:
|
|
||||||
#ifdef RGBLED_BACK
|
|
||||||
led_ripple_effect(127,23,0);
|
|
||||||
#else
|
|
||||||
rgblight_setrgb(127,23,0);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case L_SYM:
|
|
||||||
#ifdef RGBLED_BACK
|
|
||||||
led_ripple_effect(0,127,0);
|
|
||||||
#else
|
|
||||||
rgblight_setrgb(0,127,0);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case L_FUNC:
|
|
||||||
#ifdef RGBLED_BACK
|
|
||||||
led_ripple_effect(127,0,61);
|
|
||||||
#else
|
|
||||||
rgblight_setrgb(127,0,61);
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
//OLED update loop
|
|
||||||
#ifdef OLED_ENABLE
|
|
||||||
|
|
||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
|
||||||
return OLED_ROTATION_0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Render to OLED
|
|
||||||
void render_status(void) {
|
|
||||||
|
|
||||||
// froggy logo
|
|
||||||
static char logo[4][1][17]=
|
|
||||||
{
|
|
||||||
{
|
|
||||||
{0x65,0x66,0x67,0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
static char indctr[8][2][4]=
|
|
||||||
{
|
|
||||||
// white icon
|
|
||||||
{
|
|
||||||
{0x60,0x61,0x62,0},
|
|
||||||
{0x63,0x64,0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0x80,0x81,0x82,0},
|
|
||||||
{0x83,0x84,0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xa0,0xa1,0xa2,0},
|
|
||||||
{0xa3,0xa4,0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xc0,0xc1,0xc2,0},
|
|
||||||
{0xc3,0xc4,0}
|
|
||||||
},
|
|
||||||
// Black icon
|
|
||||||
{
|
|
||||||
{0x75,0x76,0x77,0},
|
|
||||||
{0x78,0x79,0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0x95,0x96,0x97,0},
|
|
||||||
{0x98,0x99,0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xb5,0xb6,0xb7,0},
|
|
||||||
{0xb8,0xb9,0}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xd5,0xd6,0xd7,0},
|
|
||||||
{0xd8,0xd9,0}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
int rown = 0;
|
|
||||||
int rowf = 0;
|
|
||||||
int rowa = 0;
|
|
||||||
int rows = 0;
|
|
||||||
|
|
||||||
//Set Indicator icon
|
|
||||||
led_t led_state = host_keyboard_led_state();
|
|
||||||
if (led_state.num_lock) { rown = 4; } else { rown = 0; }
|
|
||||||
if (led_state.caps_lock) { rowa = 4; } else { rowa = 0; }
|
|
||||||
if (led_state.scroll_lock) { rows = 4; } else { rows = 0; }
|
|
||||||
if (layer_state == L_FUNC) { rowf = 4; }
|
|
||||||
|
|
||||||
oled_write(indctr[rown] [0], false);
|
|
||||||
oled_write(indctr[rowf] [1], false);
|
|
||||||
oled_write(logo [0] [0], false);
|
|
||||||
oled_write(indctr[rown+1][0], false);
|
|
||||||
oled_write(indctr[rowf+1][1], false);
|
|
||||||
oled_write(logo [1] [0], false);
|
|
||||||
oled_write(indctr[rowa+2][0], false);
|
|
||||||
oled_write(indctr[rows+2][1], false);
|
|
||||||
oled_write(logo [2] [0], false);
|
|
||||||
oled_write(indctr[rowa+3][0], false);
|
|
||||||
oled_write(indctr[rows+3][1], false);
|
|
||||||
oled_write(logo [3] [0], false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool oled_task_user(void) {
|
|
||||||
|
|
||||||
#if DEBUG_TO_SCREEN
|
|
||||||
if (debug_enable) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (is_keyboard_master()) {
|
|
||||||
render_status();
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // end of OLED_ENABLE
|
|
|
@ -1,83 +0,0 @@
|
||||||
Froggy -one hand Helix-
|
|
||||||
======
|
|
||||||
|
|
||||||
![Imgur](https://i.imgur.com/S1Dw3XW.jpg)
|
|
||||||
|
|
||||||
## Features
|
|
||||||
It is a one-handed keyboard with reference to Frogpad. Layout Designed by タクマ ([@humid](https://twitter.com/humid)).
|
|
||||||
|
|
||||||
## Layout
|
|
||||||
### Base
|
|
||||||
```
|
|
||||||
,-----------------------------------------.
|
|
||||||
| C+z | ; | [ | ( | < | { |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| KANA | P | K | R | A | F |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| BS | D | T | H | E | O |
|
|
||||||
|------+------+------+------+------+------+------.
|
|
||||||
| Shift| Y | S | N | I | U | Space|
|
|
||||||
|------+------+------+------+------+------+------|
|
|
||||||
| Ctrl | Alt | win | Sym | Num | OPT | Ent |
|
|
||||||
`------------------------------------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Opt
|
|
||||||
```
|
|
||||||
,-----------------------------------------.
|
|
||||||
| Esc | : | ] | ) | > | } |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| EISU | J | M | B | ' | Tab |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| . | V | C | L | Z | Q |
|
|
||||||
|------+------+------+------+------+------+------.
|
|
||||||
| | X | G | W | - | Del | Esc |
|
|
||||||
|------+------+------+------+------+------+------|
|
|
||||||
| | | | , | DTOP | | |
|
|
||||||
`------------------------------------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Num
|
|
||||||
```
|
|
||||||
,-----------------------------------------.
|
|
||||||
| | | Func | home | End | |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| | * | 7 | 8 | 9 | - |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| . | / | 4 | 5 | 6 | + |
|
|
||||||
|------+------+------+------+------+------+------.
|
|
||||||
| LN | 0 | 1 | 2 | 3 |C+S+F1| |
|
|
||||||
|------+------+------+------+------+------+------|
|
|
||||||
| | | | , | | | |
|
|
||||||
`------------------------------------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Sym
|
|
||||||
```
|
|
||||||
,-----------------------------------------.
|
|
||||||
| Ins | GRV | | PU | PD | ^ |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| | \ | # | = | ? | % |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| | $ | upA | @ | ! | | |
|
|
||||||
|------+------+------+------+------+------+------.
|
|
||||||
| CL | <- | dwA | -> | _ | & | |
|
|
||||||
|------+------+------+------+------+------+------|
|
|
||||||
| | | PS | | ~ | | |
|
|
||||||
`-----------------------------------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Func
|
|
||||||
```
|
|
||||||
,-----------------------------------------.
|
|
||||||
|RGBRST| Hue | | RST | Mac | Win |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| RGB1 | VAL+ | F7 | F8 | F9 | |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| RGB2 | VAL- | F4 | F5 | F6 | F12 |
|
|
||||||
|------+------+------+------+------+------+------.
|
|
||||||
| RGB3 | F10 | F1 | F2 | F3 | F11 | |
|
|
||||||
|------+------+------+------+------+------+------|
|
|
||||||
|RGBOFF| | | | | | |
|
|
||||||
`------------------------------------------------'
|
|
||||||
```
|
|
|
@ -1,27 +0,0 @@
|
||||||
# QMK Standard 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
|
|
||||||
#
|
|
||||||
# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
|
|
||||||
# See TOP/docs/config_options.md for more information.
|
|
||||||
#
|
|
||||||
LTO_ENABLE = no # if firmware size over limit, try this option
|
|
||||||
SPLIT_KEYBOARD = yes
|
|
||||||
|
|
||||||
# Helix Spacific Build Options
|
|
||||||
# you can uncomment and edit follows 7 Variables
|
|
||||||
# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
|
|
||||||
OLED_ENABLE = yes # OLED_ENABLE
|
|
||||||
LOCAL_GLCDFONT = yes # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
|
|
||||||
LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
|
|
||||||
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
|
||||||
LED_ANIMATIONS = yes # LED animations
|
|
||||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
|
||||||
|
|
||||||
# OLED_ENABLE が yes のとき
|
|
||||||
# OLED_SELECT が core ならば QMK 標準の oled_dirver.c を使用します。
|
|
||||||
# OLED_SELECT が core 以外ならば従来どおり helix/local_drivers/ssd1306.c を使用します。
|
|
||||||
# If OLED_ENABLE is 'yes'
|
|
||||||
# If OLED_SELECT is 'core', use QMK standard oled_dirver.c.
|
|
||||||
# If OLED_SELECT is other than 'core', use helix/local_drivers/ssd1306.c.
|
|
||||||
OLED_SELECT = core
|
|
|
@ -1,47 +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
|
|
||||||
|
|
||||||
#undef TAPPING_TERM
|
|
||||||
#define TAPPING_TERM 200
|
|
||||||
#define ONESHOT_TAP_TOGGLE 5 /* Tapping this number of times holds the key until tapped this number of times again. */
|
|
||||||
#define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */
|
|
||||||
|
|
||||||
// the froggy keymap does not use the right hand side, so sync_timer is not needed
|
|
||||||
#define DISABLE_SYNC_TIMER
|
|
||||||
// For the same reason, the following are also not needed
|
|
||||||
#undef SPLIT_LAYER_STATE_ENABLE
|
|
||||||
#undef SPLIT_LED_STATE_ENABLE
|
|
||||||
|
|
||||||
// If you need more program area, try select and reduce rgblight modes to use.
|
|
||||||
|
|
||||||
// Selection of RGBLIGHT MODE to use.
|
|
||||||
#if defined(LED_ANIMATIONS)
|
|
||||||
#define RGBLIGHT_EFFECT_BREATHING
|
|
||||||
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
|
|
||||||
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL
|
|
||||||
#define RGBLIGHT_EFFECT_SNAKE
|
|
||||||
#define RGBLIGHT_EFFECT_KNIGHT
|
|
||||||
#define RGBLIGHT_EFFECT_CHRISTMAS
|
|
||||||
#define RGBLIGHT_EFFECT_STATIC_GRADIENT
|
|
||||||
//#define RGBLIGHT_EFFECT_RGB_TEST
|
|
||||||
//#define RGBLIGHT_EFFECT_ALTERNATING
|
|
||||||
#endif
|
|
|
@ -1,235 +0,0 @@
|
||||||
// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0.
|
|
||||||
// See gfxfont.h for newer custom bitmap font info.
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "progmem.h"
|
|
||||||
|
|
||||||
// Standard ASCII 5x7 font
|
|
||||||
|
|
||||||
static const unsigned char font[] PROGMEM = {
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
|
|
||||||
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
|
|
||||||
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
|
|
||||||
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
|
|
||||||
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
|
|
||||||
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
|
|
||||||
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
|
|
||||||
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
|
|
||||||
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
|
|
||||||
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
|
|
||||||
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
|
|
||||||
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
|
|
||||||
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
|
|
||||||
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
|
|
||||||
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
|
|
||||||
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
|
|
||||||
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
|
|
||||||
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
|
|
||||||
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
|
|
||||||
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
|
|
||||||
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
|
|
||||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
|
|
||||||
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
|
|
||||||
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
|
|
||||||
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
|
|
||||||
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
|
|
||||||
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
|
|
||||||
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
|
|
||||||
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
|
|
||||||
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
|
|
||||||
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
|
|
||||||
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
|
|
||||||
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
|
|
||||||
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
|
|
||||||
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
|
|
||||||
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
|
|
||||||
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
|
|
||||||
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
|
|
||||||
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
|
|
||||||
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
|
|
||||||
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
|
|
||||||
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
|
|
||||||
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
|
|
||||||
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
|
|
||||||
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
|
|
||||||
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
|
|
||||||
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
|
|
||||||
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
|
|
||||||
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
|
|
||||||
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
|
|
||||||
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
|
|
||||||
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
|
|
||||||
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
|
|
||||||
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
|
|
||||||
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
|
|
||||||
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
|
|
||||||
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
|
|
||||||
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
|
|
||||||
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
|
|
||||||
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
|
|
||||||
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
|
|
||||||
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
|
||||||
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
|
|
||||||
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
|
|
||||||
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
|
|
||||||
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
|
|
||||||
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
|
|
||||||
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
|
|
||||||
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
|
|
||||||
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
|
|
||||||
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
|
|
||||||
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
|
|
||||||
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
|
|
||||||
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
|
|
||||||
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
|
|
||||||
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
|
|
||||||
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
|
|
||||||
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
|
|
||||||
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
|
|
||||||
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
|
|
||||||
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
|
|
||||||
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
|
|
||||||
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
|
|
||||||
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
|
|
||||||
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
|
|
||||||
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
|
|
||||||
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
|
|
||||||
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
|
|
||||||
0xFC, 0xFE, 0x02, 0x82, 0x82, 0x82,
|
|
||||||
0x82, 0x82, 0x82, 0xC2, 0x82, 0x02,
|
|
||||||
0x02, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
|
||||||
0x02, 0x62, 0x62, 0x62, 0x62, 0xE2,
|
|
||||||
0x62, 0x62, 0xE2, 0x02, 0x02, 0xFC,
|
|
||||||
0x00, 0x00, 0x00, 0xF0, 0xFC, 0xFC,
|
|
||||||
0xFC, 0x00, 0xFC, 0xFC, 0xF0, 0x80,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
|
|
||||||
0x30, 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, 0x20, 0x00, 0x00, 0x24, 0xA4,
|
|
||||||
0xA4, 0xBC, 0xA4, 0x24, 0x24, 0x00,
|
|
||||||
0x00, 0x00, 0x24, 0xA4, 0x24, 0x24,
|
|
||||||
0x3C, 0x04, 0x04, 0x00, 0x00, 0x00,
|
|
||||||
0xB8, 0xA4, 0xA4, 0xA4, 0xBC, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xFC, 0x00, 0xFC,
|
|
||||||
0x00, 0x44, 0x44, 0x44, 0xDC, 0x44,
|
|
||||||
0x04, 0x3C, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xFC, 0xFE, 0xFE, 0x7E, 0x7E, 0x7E,
|
|
||||||
0x7E, 0x7E, 0x7E, 0x3E, 0x7E, 0xFE,
|
|
||||||
0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
|
||||||
0xFE, 0x9E, 0x9E, 0x9E, 0x9E, 0x1E,
|
|
||||||
0x9E, 0x9E, 0x1E, 0xFE, 0xFE, 0xFC,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
|
|
||||||
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
|
|
||||||
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
|
|
||||||
0x7F, 0x7F, 0x40, 0x41, 0x41, 0x41,
|
|
||||||
0x41, 0x41, 0x41, 0x41, 0x41, 0x40,
|
|
||||||
0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
|
||||||
0x40, 0x40, 0x40, 0x40, 0x40, 0x41,
|
|
||||||
0x40, 0x40, 0x43, 0x40, 0x40, 0x7F,
|
|
||||||
0x00, 0x20, 0x3C, 0x3E, 0x3E, 0x3E,
|
|
||||||
0x3E, 0x00, 0x3E, 0x3E, 0x3E, 0x3E,
|
|
||||||
0x38, 0x00, 0x00, 0xF0, 0xFB, 0xFB,
|
|
||||||
0x00, 0x50, 0x60, 0xFF, 0xFC, 0x3C,
|
|
||||||
0x1E, 0x0E, 0x0C, 0xFC, 0xF8, 0xE8,
|
|
||||||
0xE8, 0xE8, 0x30, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x02, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x04, 0x04, 0x1B, 0x04, 0x04,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x57, 0x50,
|
|
||||||
0x57, 0x54, 0x57, 0x10, 0x50, 0x00,
|
|
||||||
0x00, 0x00, 0x97, 0x94, 0x97, 0x94,
|
|
||||||
0xF7, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xE4, 0x14, 0xF4, 0x94, 0xF7, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF,
|
|
||||||
0x00, 0x38, 0xA4, 0xA4, 0xA5, 0x3C,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x7F, 0x7F, 0x7F, 0x7E, 0x7E, 0x7E,
|
|
||||||
0x7E, 0x7E, 0x7E, 0x7E, 0x7E, 0x7F,
|
|
||||||
0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
|
||||||
0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7E,
|
|
||||||
0x7F, 0x7F, 0x7C, 0x7F, 0x7F, 0x7F,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xFE, 0xFE, 0x02, 0x62, 0x62, 0x62,
|
|
||||||
0xE2, 0x62, 0x62, 0x62, 0xC2, 0x02,
|
|
||||||
0x02, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
|
||||||
0x02, 0x82, 0xC2, 0xE2, 0xF2, 0x82,
|
|
||||||
0x82, 0x82, 0x82, 0x02, 0x02, 0xFE,
|
|
||||||
0x00, 0x00, 0x00, 0x3C, 0x66, 0x66,
|
|
||||||
0x66, 0x66, 0x66, 0x66, 0x66, 0x66,
|
|
||||||
0x00, 0x00, 0x00, 0x07, 0x7F, 0xDF,
|
|
||||||
0x00, 0x05, 0x03, 0x7F, 0x1F, 0x1E,
|
|
||||||
0x3C, 0x38, 0x18, 0x1F, 0x0F, 0x0D,
|
|
||||||
0x0D, 0x0D, 0x06, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x20, 0x20, 0x50,
|
|
||||||
0x8C, 0x50, 0x20, 0x20, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x09, 0x09,
|
|
||||||
0x06, 0x09, 0x09, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x1C, 0x12, 0x12, 0x12,
|
|
||||||
0x1E, 0x10, 0x10, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0xFF, 0x00, 0x73,
|
|
||||||
0x84, 0xE7, 0x94, 0x94, 0x94, 0x67,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0xFE, 0xFE, 0xFE, 0x9E, 0x9E, 0x9E,
|
|
||||||
0x1E, 0x9E, 0x9E, 0x9E, 0x3E, 0xFE,
|
|
||||||
0xFE, 0xFE, 0x00, 0x00, 0xFE, 0xFE,
|
|
||||||
0xFE, 0x7E, 0x3E, 0x1E, 0x0E, 0x7E,
|
|
||||||
0x7E, 0x7E, 0x7E, 0xFE, 0xFE, 0xFE,
|
|
||||||
0x00, 0x00, 0x00, 0x3C, 0x66, 0x66,
|
|
||||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
|
||||||
0x00, 0x00, 0x00, 0x07, 0x7F, 0xDF,
|
|
||||||
0x00, 0x00, 0xE0, 0xF8, 0xFC, 0xFC,
|
|
||||||
0xFC, 0xFC, 0xFC, 0xFC, 0xF0, 0x80,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xF0,
|
|
||||||
0x3F, 0x7F, 0x40, 0x46, 0x46, 0x46,
|
|
||||||
0x47, 0x46, 0x46, 0x46, 0x43, 0x40,
|
|
||||||
0x40, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
|
||||||
0x40, 0x41, 0x43, 0x47, 0x4F, 0x41,
|
|
||||||
0x41, 0x41, 0x41, 0x40, 0x40, 0x3F,
|
|
||||||
0x00, 0x00, 0x00, 0x3E, 0x73, 0x60,
|
|
||||||
0x70, 0x3E, 0x07, 0x03, 0x67, 0x3E,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
|
|
||||||
0x06, 0x01, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x04, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x08, 0x08,
|
|
||||||
0x36, 0x08, 0x08, 0x00, 0x00, 0x00,
|
|
||||||
0x00, 0x00, 0x00, 0x1F, 0x00, 0x0E,
|
|
||||||
0x10, 0x1C, 0x12, 0x12, 0x12, 0x12,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
|
||||||
0x3F, 0x7F, 0x7F, 0x79, 0x79, 0x79,
|
|
||||||
0x78, 0x79, 0x79, 0x79, 0x7C, 0x7F,
|
|
||||||
0x7F, 0x7F, 0x00, 0x00, 0x7F, 0x7F,
|
|
||||||
0x7F, 0x7E, 0x7C, 0x78, 0x70, 0x7E,
|
|
||||||
0x7E, 0x7E, 0x7E, 0x7F, 0x7F, 0x3F,
|
|
||||||
0x00, 0x00, 0x00, 0x03, 0x03, 0x03,
|
|
||||||
0x03, 0x3F, 0x63, 0x63, 0x63, 0x3F,
|
|
||||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x07,
|
|
||||||
0x00, 0x00, 0x07, 0x1F, 0x3F, 0x0F,
|
|
||||||
0x07, 0x0F, 0x3F, 0x3F, 0x0F, 0x00,
|
|
||||||
0x03, 0x06, 0x00, 0xF0, 0xFB, 0xFB,
|
|
||||||
};
|
|
|
@ -1,810 +0,0 @@
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
#include "keymap_japanese.h"
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#define LAYOUT_half( \
|
|
||||||
L00, L01, L02, L03, L04, L05, \
|
|
||||||
L10, L11, L12, L13, L14, L15, \
|
|
||||||
L20, L21, L22, L23, L24, L25, \
|
|
||||||
L30, L31, L32, L33, L34, L35, L36, \
|
|
||||||
L40, L41, L42, L43, L44, L45, L46 \
|
|
||||||
) { \
|
|
||||||
{ L00, L01, L02, L03, L04, L05, KC_NO }, \
|
|
||||||
{ L10, L11, L12, L13, L14, L15, KC_NO }, \
|
|
||||||
{ L20, L21, L22, L23, L24, L25, KC_NO }, \
|
|
||||||
{ L30, L31, L32, L33, L34, L35, L36 }, \
|
|
||||||
{ L40, L41, L42, L43, L44, L45, L46 }, \
|
|
||||||
{ _______, _______, _______, _______, _______, _______, KC_NO }, \
|
|
||||||
{ _______, _______, _______, _______, _______, _______, KC_NO }, \
|
|
||||||
{ _______, _______, _______, _______, _______, _______, KC_NO }, \
|
|
||||||
{ _______, _______, _______, _______, _______, _______, _______ }, \
|
|
||||||
{ _______, _______, _______, _______, _______, _______, _______ } \
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DELAY_TIME 75
|
|
||||||
static uint16_t key_timer;
|
|
||||||
static uint16_t tap_timer;
|
|
||||||
static uint16_t delay_registered_code;
|
|
||||||
static uint8_t delay_registered_layer;
|
|
||||||
static uint8_t delay_mat_row;
|
|
||||||
static uint8_t delay_mat_col;
|
|
||||||
static bool delay_key_stat;
|
|
||||||
static bool delay_key_pressed;
|
|
||||||
static bool tapping_key;
|
|
||||||
|
|
||||||
// Each layer gets a name for readability, which is then used in the keymap matrix below.
|
|
||||||
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
|
|
||||||
// Layer names don't all need to be of the same length, obviously, and you can also skip them
|
|
||||||
// entirely and just use numbers.
|
|
||||||
enum layer_number {
|
|
||||||
_BASE = 0,
|
|
||||||
_BASE_106,
|
|
||||||
_OPT,
|
|
||||||
_OPT_106,
|
|
||||||
_SYM,
|
|
||||||
_SYM_106,
|
|
||||||
_NUM,
|
|
||||||
_NUM_106,
|
|
||||||
_FUNC,
|
|
||||||
_LAYER_NUM,
|
|
||||||
};
|
|
||||||
bool RGBAnimation = false; //Flag for LED Layer color Refresh.
|
|
||||||
|
|
||||||
typedef union {
|
|
||||||
uint32_t raw;
|
|
||||||
struct {
|
|
||||||
bool mac_mode:1;
|
|
||||||
};
|
|
||||||
} user_config_t;
|
|
||||||
user_config_t user_config;
|
|
||||||
|
|
||||||
#define IS_MODE_106() ((default_layer_state & (1UL << _BASE_106)) != 0)
|
|
||||||
#define IS_MODE_MAC() (user_config.mac_mode)
|
|
||||||
#ifndef MAX
|
|
||||||
#define MAX(X, Y) ((X) > (Y) ? (X) : (Y))
|
|
||||||
#endif
|
|
||||||
#ifndef MIN
|
|
||||||
#define MIN(X, Y) ((X) < (Y) ? (X) : (Y))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
enum custom_keycodes {
|
|
||||||
QWERTY = SAFE_RANGE,
|
|
||||||
EISU,
|
|
||||||
KANA,
|
|
||||||
RGBRST,
|
|
||||||
RGBOFF,
|
|
||||||
RGB1,
|
|
||||||
RGB2,
|
|
||||||
RGB3,
|
|
||||||
OPT_TAP_SP,
|
|
||||||
DESKTOP,
|
|
||||||
MAC,
|
|
||||||
WIN,
|
|
||||||
L_SYM,
|
|
||||||
L_NUM,
|
|
||||||
TO_106,
|
|
||||||
TO_101,
|
|
||||||
};
|
|
||||||
|
|
||||||
enum macro_keycodes {
|
|
||||||
KC_SAMPLEMACRO,
|
|
||||||
};
|
|
||||||
|
|
||||||
//Macros
|
|
||||||
#define M_SAMPLE M(KC_SAMPLEMACRO)
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
/* Base
|
|
||||||
* ,-----------------------------------------.
|
|
||||||
* | C+z | ; | [ | ( | < | { |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | KANA | P | K | R | A | F |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | BS | D | T | H | E | O |
|
|
||||||
* |------+------+------+------+------+------+------.
|
|
||||||
* | Shift| Y | S | N | I | U |Space |
|
|
||||||
* |------+------+------+------+------+------+------|
|
|
||||||
* | Ctrl | Alt | Gui | Sym | Num | OPT | Ent |
|
|
||||||
* `------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_BASE] = LAYOUT_half(
|
|
||||||
LCTL(KC_Z), KC_SCLN, KC_LBRC, KC_LPRN, KC_LT, KC_LCBR,
|
|
||||||
KANA, KC_P, KC_K, KC_R, KC_A, KC_F,
|
|
||||||
KC_BSPC, KC_D, KC_T, KC_H, KC_E, KC_O,
|
|
||||||
OSM(MOD_LSFT), KC_Y, KC_S, KC_N, KC_I, KC_U, KC_SPC,
|
|
||||||
OSM(MOD_LCTL), OSM(MOD_LALT), OSM(MOD_LGUI), L_SYM, L_NUM, OPT_TAP_SP, KC_ENT
|
|
||||||
),
|
|
||||||
[_BASE_106] = LAYOUT_half(
|
|
||||||
LCTL(KC_Z), JP_SCLN, JP_LBRC, JP_LPRN, JP_LABK, JP_LCBR,
|
|
||||||
KANA, KC_P, KC_K, KC_R, KC_A, KC_F,
|
|
||||||
KC_BSPC, KC_D, KC_T, KC_H, KC_E, KC_O,
|
|
||||||
OSM(MOD_LSFT), KC_Y, KC_S, KC_N, KC_I, KC_U, KC_SPC,
|
|
||||||
OSM(MOD_LCTL), OSM(MOD_LALT), OSM(MOD_LGUI), L_SYM, L_NUM, OPT_TAP_SP, KC_ENT
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Opt
|
|
||||||
* ,-----------------------------------------.
|
|
||||||
* | Esc | : | ] | ) | > | } |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | EISU| J | M | B | ' | Tab |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | . | V | C | L | Z | Q |
|
|
||||||
* |------+------+------+------+------+------+------.
|
|
||||||
* | | X | G | W | - | Del | Esc |
|
|
||||||
* |------+------+------+------+------+------+------|
|
|
||||||
* | | | | , | DTOP | | |
|
|
||||||
* `------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_OPT] = LAYOUT_half(
|
|
||||||
KC_ESC, KC_COLN,KC_RBRC, KC_RPRN,KC_GT, KC_RCBR,
|
|
||||||
EISU, KC_J, KC_M, KC_B, KC_QUOT, KC_TAB,
|
|
||||||
KC_DOT, KC_V, KC_C, KC_L, KC_Z, KC_Q,
|
|
||||||
_______, KC_X, KC_G, KC_W, KC_MINUS, KC_DEL, KC_ESC,
|
|
||||||
_______, _______,_______, KC_COMM,DESKTOP, _______, _______
|
|
||||||
),
|
|
||||||
[_OPT_106] = LAYOUT_half(
|
|
||||||
KC_ESC, JP_COLN,JP_RBRC, JP_RPRN,JP_RABK, JP_RCBR,
|
|
||||||
EISU, KC_J, KC_M, KC_B, JP_QUOT, KC_TAB,
|
|
||||||
KC_DOT, KC_V, KC_C, KC_L, KC_Z, KC_Q,
|
|
||||||
_______, KC_X, KC_G, KC_W, JP_MINS, KC_DEL, KC_ESC,
|
|
||||||
_______, _______,_______, KC_COMM,DESKTOP, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Sym
|
|
||||||
* ,-----------------------------------------.
|
|
||||||
* | Ins | GRV | | PU | PD | ^ |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | | \ | # | = | ? | % |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | | $ | upA | @ | ! | | |
|
|
||||||
* |------+------+------+------+------+------+------.
|
|
||||||
* | CL | <- | dwA | -> | _ | & | |
|
|
||||||
* |------+------+------+------+------+------+------+
|
|
||||||
* | | | PS | | ~ | | |
|
|
||||||
* `------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_SYM] = LAYOUT_half(
|
|
||||||
KC_INS, KC_GRV, _______, KC_PGUP, KC_PGDN, KC_CIRC,
|
|
||||||
_______, KC_BSLS, KC_HASH, KC_EQL, KC_QUES, KC_PERC,
|
|
||||||
_______, KC_DLR, KC_UP, KC_AT, KC_EXLM, KC_PIPE,
|
|
||||||
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT,KC_UNDS, KC_AMPR, _______,
|
|
||||||
_______, _______, KC_PSCR, _______, KC_TILD, _______, _______
|
|
||||||
),
|
|
||||||
[_SYM_106] = LAYOUT_half(
|
|
||||||
KC_INS, JP_GRV, _______, KC_PGUP, KC_PGDN, JP_CIRC,
|
|
||||||
_______, JP_BSLS, JP_HASH, JP_EQL, JP_QUES, JP_PERC,
|
|
||||||
_______, JP_DLR, KC_UP, JP_AT, JP_EXLM, JP_PIPE,
|
|
||||||
KC_CAPS, KC_LEFT, KC_DOWN, KC_RIGHT,JP_UNDS, JP_AMPR, _______,
|
|
||||||
_______, _______, KC_PSCR, _______, JP_TILD, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Raise
|
|
||||||
* ,-----------------------------------------.
|
|
||||||
* | | | Func | home | End | |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | | * | 7 | 8 | 9 | - |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | . | / | 4 | 5 | 6 | + |
|
|
||||||
* |------+------+------+------+------+------+------.
|
|
||||||
* | LN | 0 | 1 | 2 | 3 |C+S+F1| |
|
|
||||||
* |------+------+------+------+------+------+------|
|
|
||||||
* | | | . | , | | | |
|
|
||||||
* `------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_NUM] = LAYOUT_half(
|
|
||||||
_______, _______, OSL(_FUNC), KC_HOME, KC_END, _______,
|
|
||||||
_______, KC_ASTR, KC_P7, KC_P8, KC_P9, KC_MINS,
|
|
||||||
KC_DOT, KC_SLSH, KC_P4, KC_P5, KC_P6, KC_PLUS,
|
|
||||||
KC_NUM, KC_P0, KC_P1, KC_P2, KC_P3, LCTL(S(KC_F1)), _______,
|
|
||||||
_______, _______, KC_PDOT, KC_COMM, _______, _______, _______
|
|
||||||
),
|
|
||||||
[_NUM_106] = LAYOUT_half(
|
|
||||||
_______, _______, OSL(_FUNC), KC_HOME, KC_END, _______,
|
|
||||||
_______, JP_ASTR, KC_P7, KC_P8, KC_P9, JP_MINS,
|
|
||||||
KC_DOT, JP_SLSH, KC_P4, KC_P5, KC_P6, JP_PLUS,
|
|
||||||
KC_NUM, KC_P0, KC_P1, KC_P2, KC_P3, LCTL(S(KC_F1)), _______,
|
|
||||||
_______, _______, KC_PDOT, JP_COMM, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Func
|
|
||||||
* ,-----------------------------------------.
|
|
||||||
* |RGBRST| Hue |To101 | RST | Mac | Win |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | RGB1 | VAL+ | F7 | F8 | F9 |To106 |
|
|
||||||
* |------+------+------+------+------+------|
|
|
||||||
* | RGB2 | VAL- | F4 | F5 | F6 | F12 |
|
|
||||||
* |------+------+------+------+------+------+------.
|
|
||||||
* | RGB3 | F10 | F1 | F2 | F3 | F11 | |
|
|
||||||
* |------+------+------+------+------+------+------|
|
|
||||||
* |RGBOFF| | | | | | |
|
|
||||||
* `------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[_FUNC] = LAYOUT_half(
|
|
||||||
RGBRST,RGB_HUI, TO_101, QK_BOOT, MAC, WIN,
|
|
||||||
RGB1, RGB_VAI, KC_F7, KC_F8, KC_F9, TO_106,
|
|
||||||
RGB2, RGB_VAD, KC_F4, KC_F5, KC_F6, KC_F12,
|
|
||||||
RGB3, KC_F10, KC_F1, KC_F2, KC_F3, KC_F11, _______,
|
|
||||||
RGBOFF,_______, _______, _______, _______, _______, _______
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
void set_mac_mode(bool enable) {
|
|
||||||
if(enable){
|
|
||||||
user_config.mac_mode = true;
|
|
||||||
keymap_config.swap_lalt_lgui = false;
|
|
||||||
keymap_config.swap_ralt_rgui = false;
|
|
||||||
}else{
|
|
||||||
user_config.mac_mode = false;
|
|
||||||
keymap_config.swap_lalt_lgui = true;
|
|
||||||
keymap_config.swap_ralt_rgui = true;
|
|
||||||
}
|
|
||||||
eeconfig_update_user(user_config.raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
void eeconfig_init_user(void) {
|
|
||||||
user_config.raw = 0;
|
|
||||||
eeconfig_update_user(user_config.raw);
|
|
||||||
}
|
|
||||||
|
|
||||||
void keyboard_post_init_user(void) {
|
|
||||||
user_config.raw = eeconfig_read_user();
|
|
||||||
set_mac_mode(user_config.mac_mode);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool find_mairix(uint16_t keycode, uint8_t *row, uint8_t *col){
|
|
||||||
int base_keymap = IS_MODE_106() ? _BASE_106 : _BASE;
|
|
||||||
for(uint8_t i=0; i<MATRIX_ROWS; i++){
|
|
||||||
for(uint8_t j=0; j<MATRIX_COLS; j++){
|
|
||||||
if( pgm_read_word(&(keymaps[base_keymap][i][j]))==keycode){
|
|
||||||
*row = i;
|
|
||||||
*col = j;
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void unregister_delay_code(void){
|
|
||||||
if(delay_registered_code){
|
|
||||||
unregister_code(delay_registered_code);
|
|
||||||
if (delay_registered_code & QK_LSFT){
|
|
||||||
unregister_code(KC_LSFT);
|
|
||||||
}
|
|
||||||
if (delay_registered_code & QK_LCTL){
|
|
||||||
unregister_code(KC_LCTL);
|
|
||||||
}
|
|
||||||
if (delay_registered_code & QK_LALT){
|
|
||||||
unregister_code(KC_LALT);
|
|
||||||
}
|
|
||||||
if (delay_registered_code & QK_LGUI){
|
|
||||||
unregister_code(KC_LGUI);
|
|
||||||
}
|
|
||||||
delay_registered_code=0;
|
|
||||||
delay_registered_layer=0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void register_delay_code(uint8_t layer){
|
|
||||||
if(delay_key_stat){
|
|
||||||
unregister_delay_code();
|
|
||||||
|
|
||||||
uint16_t code = pgm_read_word(&(keymaps[layer][delay_mat_row][delay_mat_col]));
|
|
||||||
if (code & QK_LSFT){
|
|
||||||
register_code(KC_LSFT);
|
|
||||||
}
|
|
||||||
if (code & QK_LCTL){
|
|
||||||
register_code(KC_LCTL);
|
|
||||||
}
|
|
||||||
if (code & QK_LALT){
|
|
||||||
register_code(KC_LALT);
|
|
||||||
}
|
|
||||||
if (code & QK_LGUI){
|
|
||||||
register_code(KC_LGUI);
|
|
||||||
}
|
|
||||||
register_code(code);
|
|
||||||
delay_registered_code = code;
|
|
||||||
delay_registered_layer = layer;
|
|
||||||
delay_key_stat = false;
|
|
||||||
tapping_key = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
struct keybuf {
|
|
||||||
char col, row;
|
|
||||||
char frame;
|
|
||||||
};
|
|
||||||
struct keybuf keybufs[256];
|
|
||||||
unsigned char keybuf_begin, keybuf_end;
|
|
||||||
|
|
||||||
int col, row;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
col = record->event.key.col;
|
|
||||||
row = record->event.key.row;
|
|
||||||
if (record->event.pressed && ((row < 5 && is_keyboard_master()) || (row >= 5 && !is_keyboard_master()))) {
|
|
||||||
int end = keybuf_end;
|
|
||||||
keybufs[end].col = col;
|
|
||||||
keybufs[end].row = row % 5;
|
|
||||||
keybufs[end].frame = 0;
|
|
||||||
keybuf_end ++;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if(tap_timer&&keycode!=OPT_TAP_SP){
|
|
||||||
tapping_key = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(keycode==delay_registered_code){
|
|
||||||
if (!record->event.pressed){
|
|
||||||
unregister_delay_code();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (keycode) {
|
|
||||||
case KC_SCLN:
|
|
||||||
case KC_LBRC:
|
|
||||||
case KC_LPRN:
|
|
||||||
case KC_LT:
|
|
||||||
case KC_LCBR:
|
|
||||||
case KC_P:
|
|
||||||
case KC_K:
|
|
||||||
case KC_R:
|
|
||||||
case KC_A:
|
|
||||||
case KC_F:
|
|
||||||
case KC_BSPC:
|
|
||||||
case KC_D:
|
|
||||||
case KC_T:
|
|
||||||
case KC_H:
|
|
||||||
case KC_E:
|
|
||||||
case KC_O:
|
|
||||||
case KC_Y:
|
|
||||||
case KC_S:
|
|
||||||
case KC_N:
|
|
||||||
case KC_I:
|
|
||||||
case KC_U:
|
|
||||||
case LCTL(KC_Z):
|
|
||||||
case KC_SPC:
|
|
||||||
//case JP_SCLN: // == KC_SCLN
|
|
||||||
case JP_LBRC:
|
|
||||||
case JP_LPRN:
|
|
||||||
//case JP_LABK: // == KC_LT
|
|
||||||
case JP_LCBR:
|
|
||||||
if (IS_MODE_106()) {
|
|
||||||
if (keycode == KC_LBRC || keycode == KC_LPRN || keycode == KC_LCBR)
|
|
||||||
break;
|
|
||||||
}else{
|
|
||||||
if (keycode == JP_LBRC || keycode == JP_LPRN || keycode == JP_LCBR)
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if (IS_MODE_106())
|
|
||||||
register_delay_code(_BASE_106);
|
|
||||||
else
|
|
||||||
register_delay_code(_BASE);
|
|
||||||
if(find_mairix(keycode, &delay_mat_row, &delay_mat_col)){
|
|
||||||
key_timer = timer_read();
|
|
||||||
delay_key_stat = true;
|
|
||||||
delay_key_pressed = true;
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
delay_key_pressed = false;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case L_SYM:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if (IS_MODE_106()) {
|
|
||||||
register_delay_code(_SYM_106);
|
|
||||||
layer_on(_SYM_106);
|
|
||||||
}else{
|
|
||||||
register_delay_code(_SYM);
|
|
||||||
layer_on(_SYM);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
layer_off(_SYM);
|
|
||||||
layer_off(_SYM_106);
|
|
||||||
if(delay_registered_layer == _SYM || delay_registered_layer == _SYM_106) {
|
|
||||||
unregister_delay_code();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case L_NUM:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if (IS_MODE_106()) {
|
|
||||||
register_delay_code(_NUM_106);
|
|
||||||
layer_on(_NUM_106);
|
|
||||||
}else{
|
|
||||||
register_delay_code(_NUM);
|
|
||||||
layer_on(_NUM);
|
|
||||||
}
|
|
||||||
}else{
|
|
||||||
layer_off(_NUM);
|
|
||||||
layer_off(_NUM_106);
|
|
||||||
if(delay_registered_layer == _NUM || delay_registered_layer == _NUM_106) {
|
|
||||||
unregister_delay_code();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case OPT_TAP_SP:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tapping_key = false;
|
|
||||||
if (IS_MODE_106()) {
|
|
||||||
register_delay_code(_OPT_106);
|
|
||||||
layer_on(_OPT_106);
|
|
||||||
}else{
|
|
||||||
register_delay_code(_OPT);
|
|
||||||
layer_on(_OPT);
|
|
||||||
}
|
|
||||||
tap_timer = timer_read();
|
|
||||||
}else{
|
|
||||||
layer_off(_OPT);
|
|
||||||
layer_off(_OPT_106);
|
|
||||||
if(tapping_key==false && timer_elapsed(tap_timer) < TAPPING_TERM){
|
|
||||||
SEND_STRING(" ");
|
|
||||||
}else if(delay_registered_layer == _OPT || delay_registered_layer == _OPT_106) {
|
|
||||||
unregister_delay_code();
|
|
||||||
}
|
|
||||||
tap_timer = 0;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case EISU:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if(IS_MODE_MAC()){
|
|
||||||
register_code(KC_LNG2);
|
|
||||||
}else{
|
|
||||||
SEND_STRING(SS_LALT("`"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_LNG2);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case KANA:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if(IS_MODE_MAC()){
|
|
||||||
register_code(KC_LNG1);
|
|
||||||
}else{
|
|
||||||
SEND_STRING(SS_LALT("`"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_LNG1);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case DESKTOP:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if(IS_MODE_MAC()){
|
|
||||||
register_code(KC_F11);
|
|
||||||
}else{
|
|
||||||
SEND_STRING(SS_LGUI("d"));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unregister_code(KC_F11);
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
break;
|
|
||||||
case RGBRST:
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
eeconfig_update_rgblight_default();
|
|
||||||
rgblight_enable();
|
|
||||||
RGBAnimation = false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case RGBOFF:
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
rgblight_disable();
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case RGB1:
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
RGBAnimation = true;
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_MOOD);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case RGB2:
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
RGBAnimation = true;
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_RAINBOW_SWIRL + 1);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case RGB3:
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if (record->event.pressed) {
|
|
||||||
RGBAnimation = true;
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_KNIGHT);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
break;
|
|
||||||
case MAC:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
set_mac_mode(true);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case WIN:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
set_mac_mode(false);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TO_101:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if (IS_MODE_106()) {
|
|
||||||
set_single_persistent_default_layer(_BASE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case TO_106:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
if (!IS_MODE_106()) {
|
|
||||||
set_single_persistent_default_layer(_BASE_106);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
// LED Effect
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
unsigned char rgb[7][5][3];
|
|
||||||
void led_ripple_effect(char r, char g, char b) {
|
|
||||||
static int scan_count = -10;
|
|
||||||
static int keys[] = { 6, 6, 6, 7, 7 };
|
|
||||||
static int keys_sum[] = { 0, 6, 12, 18, 25 };
|
|
||||||
|
|
||||||
if (scan_count == -1) {
|
|
||||||
rgblight_enable_noeeprom();
|
|
||||||
rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
|
|
||||||
} else if (scan_count >= 0 && scan_count < 5) {
|
|
||||||
for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) {
|
|
||||||
int i = c;
|
|
||||||
// FIXME:
|
|
||||||
|
|
||||||
int y = scan_count;
|
|
||||||
int dist_y = abs(y - keybufs[i].row);
|
|
||||||
for (int x=0; x<keys[y]; x++) {
|
|
||||||
int dist = abs(x - keybufs[i].col) + dist_y;
|
|
||||||
if (dist <= keybufs[i].frame) {
|
|
||||||
int elevation = MAX(0, (8 + dist - keybufs[i].frame)) << 2;
|
|
||||||
if (elevation) {
|
|
||||||
if ((rgb[x][y][0] != 255) && r) { rgb[x][y][0] = MIN(255, elevation + rgb[x][y][0]); }
|
|
||||||
if ((rgb[x][y][1] != 255) && g) { rgb[x][y][1] = MIN(255, elevation + rgb[x][y][1]); }
|
|
||||||
if ((rgb[x][y][2] != 255) && b) { rgb[x][y][2] = MIN(255, elevation + rgb[x][y][2]); }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (scan_count == 5) {
|
|
||||||
for (unsigned char c=keybuf_begin; c!=keybuf_end; c++) {
|
|
||||||
int i = c;
|
|
||||||
if (keybufs[i].frame < 18) {
|
|
||||||
keybufs[i].frame ++;
|
|
||||||
} else {
|
|
||||||
keybuf_begin ++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (scan_count >= 6 && scan_count <= 10) {
|
|
||||||
int y = scan_count - 6;
|
|
||||||
for (int x=0; x<keys[y]; x++) {
|
|
||||||
int at = keys_sum[y] + ((y & 1) ? x : (keys[y] - x - 1));
|
|
||||||
led[at].r = rgb[x][y][0];
|
|
||||||
led[at].g = rgb[x][y][1];
|
|
||||||
led[at].b = rgb[x][y][2];
|
|
||||||
}
|
|
||||||
rgblight_set();
|
|
||||||
} else if (scan_count == 11) {
|
|
||||||
memset(rgb, 0, sizeof(rgb));
|
|
||||||
}
|
|
||||||
scan_count++;
|
|
||||||
if (scan_count >= 12) { scan_count = 0; }
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
layer_state_t layer_state_old;
|
|
||||||
|
|
||||||
//runs every scan cycle (a lot)
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
if(delay_key_stat && (timer_elapsed(key_timer) > DELAY_TIME)){
|
|
||||||
if (IS_MODE_106())
|
|
||||||
register_delay_code(_BASE_106);
|
|
||||||
else
|
|
||||||
register_delay_code(_BASE);
|
|
||||||
if(!delay_key_pressed){
|
|
||||||
unregister_delay_code();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(layer_state_old != layer_state){
|
|
||||||
for (int8_t i = _LAYER_NUM-1; i > _BASE_106; i--) {
|
|
||||||
if(IS_LAYER_ON(i)){
|
|
||||||
register_delay_code(i);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
layer_state_old = layer_state;
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef RGBLIGHT_ENABLE
|
|
||||||
if(!RGBAnimation){
|
|
||||||
if(IS_LAYER_ON(_FUNC)){
|
|
||||||
#ifdef RGBLED_BACK
|
|
||||||
led_ripple_effect(127,23,0);
|
|
||||||
#else
|
|
||||||
rgblight_setrgb(127,23,0);
|
|
||||||
#endif
|
|
||||||
}else if(IS_LAYER_ON(_NUM)||IS_LAYER_ON(_NUM_106)){
|
|
||||||
#ifdef RGBLED_BACK
|
|
||||||
led_ripple_effect(127,0,61);
|
|
||||||
#else
|
|
||||||
rgblight_setrgb(127,0,61);
|
|
||||||
#endif
|
|
||||||
}else if(IS_LAYER_ON(_SYM)||IS_LAYER_ON(_SYM_106)){
|
|
||||||
#ifdef RGBLED_BACK
|
|
||||||
led_ripple_effect(0,127,0);
|
|
||||||
#else
|
|
||||||
rgblight_setrgb(0,127,0);
|
|
||||||
#endif
|
|
||||||
}else if(IS_LAYER_ON(_OPT)||IS_LAYER_ON(_OPT_106)){
|
|
||||||
#ifdef RGBLED_BACK
|
|
||||||
led_ripple_effect(127,0,100);
|
|
||||||
#else
|
|
||||||
rgblight_setrgb(127,0,100);
|
|
||||||
#endif
|
|
||||||
} else {
|
|
||||||
#ifdef RGBLED_BACK
|
|
||||||
led_ripple_effect(0,112,127);
|
|
||||||
#else
|
|
||||||
rgblight_setrgb(0,112,127);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
//OLED update loop
|
|
||||||
#ifdef OLED_ENABLE
|
|
||||||
|
|
||||||
// Render to OLED
|
|
||||||
void render_status(void) {
|
|
||||||
|
|
||||||
// froggy logo
|
|
||||||
static char logo[4][17]=
|
|
||||||
{
|
|
||||||
{0x68,0x69,0x6a,0x6b,0x6c,0x6d,0x6e,0x6f,0x70,0x71,0x72,0x73,0x74,0},
|
|
||||||
{0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,0},
|
|
||||||
{0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,0},
|
|
||||||
{0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0},
|
|
||||||
};
|
|
||||||
|
|
||||||
static char modectl[4][2][4]=
|
|
||||||
{
|
|
||||||
{
|
|
||||||
{0x65,0x66,0x67,0}, //WIN
|
|
||||||
{0x85,0x86,0x87,0}, //WIN
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xa5,0xa6,0xa7,0}, //US(101)
|
|
||||||
{0xc5,0xc6,0xc7,0}, //US(101)
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xbd,0xbe,0xbf,0}, //MAC
|
|
||||||
{0xdd,0xde,0xdf,0}, //MAC
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xba,0xbb,0xbc,0}, //JP(106)
|
|
||||||
{0xda,0xdb,0xdc,0}, //JP(106)
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
static char indctr[8][2][4]=
|
|
||||||
{
|
|
||||||
// white icon
|
|
||||||
{
|
|
||||||
{0x60,0x61,0x62,0}, //NUM
|
|
||||||
{0x63,0x64,0} //FUNC
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0x80,0x81,0x82,0}, //NUM
|
|
||||||
{0x83,0x84,0} //FUNC
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xa0,0xa1,0xa2,0}, //CAPS
|
|
||||||
{0xa3,0xa4,0} //SCLK
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xc0,0xc1,0xc2,0}, //CAPS
|
|
||||||
{0xc3,0xc4,0} //SCLK
|
|
||||||
},
|
|
||||||
// Black icon
|
|
||||||
{
|
|
||||||
{0x75,0x76,0x77,0}, //NUM
|
|
||||||
{0x78,0x79,0} //FUNC
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0x95,0x96,0x97,0}, //NUM
|
|
||||||
{0x98,0x99,0} //FUNC
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xb5,0xb6,0xb7,0}, //CAPS
|
|
||||||
{0xb8,0xb9,0} //SCLK
|
|
||||||
},
|
|
||||||
{
|
|
||||||
{0xd5,0xd6,0xd7,0}, //CAPS
|
|
||||||
{0xd8,0xd9,0} //SCLK
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
int rown = 0;
|
|
||||||
int rowf = 0;
|
|
||||||
int rowa = 0;
|
|
||||||
int rows = 0;
|
|
||||||
int rowm = 0;
|
|
||||||
int rowj = 1;
|
|
||||||
|
|
||||||
//Set Indicator icon
|
|
||||||
led_t led_state = host_keyboard_led_state();
|
|
||||||
if (led_state.num_lock) { rown = 4; }
|
|
||||||
if (led_state.caps_lock) { rowa = 4; }
|
|
||||||
if (led_state.scroll_lock) { rows = 4; }
|
|
||||||
if (IS_LAYER_ON(_FUNC)) { rowf = 4; }
|
|
||||||
|
|
||||||
//Set Mode icon
|
|
||||||
if (IS_MODE_MAC()) { rowm = 2; }
|
|
||||||
if (IS_MODE_106()) { rowj = 3; }
|
|
||||||
|
|
||||||
oled_write(indctr[rown] [0], false);
|
|
||||||
oled_write(indctr[rowf] [1], false);
|
|
||||||
oled_write(modectl[rowm] [0], false);
|
|
||||||
oled_write(logo[0], false);
|
|
||||||
oled_write(indctr[rown+1][0], false);
|
|
||||||
oled_write(indctr[rowf+1][1], false);
|
|
||||||
oled_write(modectl[rowm] [1], false);
|
|
||||||
oled_write(logo[1], false);
|
|
||||||
oled_write(indctr[rowa+2][0], false);
|
|
||||||
oled_write(indctr[rows+2][1], false);
|
|
||||||
oled_write(modectl[rowj] [0], false);
|
|
||||||
oled_write(logo[2], false);
|
|
||||||
oled_write(indctr[rowa+3][0], false);
|
|
||||||
oled_write(indctr[rows+3][1], false);
|
|
||||||
oled_write(modectl[rowj] [1], false);
|
|
||||||
oled_write(logo[3], false);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool oled_task_user(void) {
|
|
||||||
|
|
||||||
#if DEBUG_TO_SCREEN
|
|
||||||
if (debug_enable) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
if (is_keyboard_master()) {
|
|
||||||
render_status();
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // end of OLED_ENABLE
|
|
||||||
|
|
||||||
// Local Variables:
|
|
||||||
// mode: c++
|
|
||||||
// truncate-lines: t
|
|
||||||
// indent-tabs-mode: nil
|
|
||||||
// End:
|
|
|
@ -1,85 +0,0 @@
|
||||||
Froggy -one hand Helix- with 106-key mode
|
|
||||||
======
|
|
||||||
|
|
||||||
![Imgur](https://i.imgur.com/S1Dw3XW.jpg)
|
|
||||||
|
|
||||||
## Features
|
|
||||||
It is a one-handed keyboard with reference to Frogpad. Layout Designed by タクマ ([@humid](https://twitter.com/humid)).
|
|
||||||
|
|
||||||
This keymap has 106-key mode, This is usable when keyboard setting of OS is OADG 106/109 keyboard.
|
|
||||||
|
|
||||||
## Layout
|
|
||||||
### Base
|
|
||||||
```
|
|
||||||
,-----------------------------------------.
|
|
||||||
| C+z | ; | [ | ( | < | { |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| KANA | P | K | R | A | F |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| BS | D | T | H | E | O |
|
|
||||||
|------+------+------+------+------+------+------.
|
|
||||||
| Shift| Y | S | N | I | U | Space|
|
|
||||||
|------+------+------+------+------+------+------|
|
|
||||||
| Ctrl | Alt | win | Sym | Num | OPT | Ent |
|
|
||||||
`------------------------------------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Opt
|
|
||||||
```
|
|
||||||
,-----------------------------------------.
|
|
||||||
| Esc | : | ] | ) | > | } |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| EISU | J | M | B | ' | Tab |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| . | V | C | L | Z | Q |
|
|
||||||
|------+------+------+------+------+------+------.
|
|
||||||
| | X | G | W | - | Del | Esc |
|
|
||||||
|------+------+------+------+------+------+------|
|
|
||||||
| | | | , | DTOP | | |
|
|
||||||
`------------------------------------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Num
|
|
||||||
```
|
|
||||||
,-----------------------------------------.
|
|
||||||
| | | Func | home | End | |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| | * | 7 | 8 | 9 | - |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| . | / | 4 | 5 | 6 | + |
|
|
||||||
|------+------+------+------+------+------+------.
|
|
||||||
| LN | 0 | 1 | 2 | 3 |C+S+F1| |
|
|
||||||
|------+------+------+------+------+------+------|
|
|
||||||
| | | | , | | | |
|
|
||||||
`------------------------------------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Sym
|
|
||||||
```
|
|
||||||
,-----------------------------------------.
|
|
||||||
| Ins | GRV | | PU | PD | ^ |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| | \ | # | = | ? | % |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| | $ | upA | @ | ! | | |
|
|
||||||
|------+------+------+------+------+------+------.
|
|
||||||
| CL | <- | dwA | -> | _ | & | |
|
|
||||||
|------+------+------+------+------+------+------|
|
|
||||||
| | | PS | | ~ | | |
|
|
||||||
`-----------------------------------------------'
|
|
||||||
```
|
|
||||||
|
|
||||||
### Func
|
|
||||||
```
|
|
||||||
,-----------------------------------------.
|
|
||||||
|RGBRST| Hue | to101| RST | Mac | Win |
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| RGB1 | VAL+ | F7 | F8 | F9 | to106|
|
|
||||||
|------+------+------+------+------+------|
|
|
||||||
| RGB2 | VAL- | F4 | F5 | F6 | F12 |
|
|
||||||
|------+------+------+------+------+------+------.
|
|
||||||
| RGB3 | F10 | F1 | F2 | F3 | F11 | |
|
|
||||||
|------+------+------+------+------+------+------|
|
|
||||||
|RGBOFF| | | | | | |
|
|
||||||
`------------------------------------------------'
|
|
||||||
```
|
|
|
@ -1,27 +0,0 @@
|
||||||
# QMK Standard 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
|
|
||||||
#
|
|
||||||
# See TOP/keyboards/helix/rules.mk for a list of options that can be set.
|
|
||||||
# See TOP/docs/config_options.md for more information.
|
|
||||||
#
|
|
||||||
LTO_ENABLE = yes # if firmware size over limit, try this option
|
|
||||||
SPLIT_KEYBOARD = yes
|
|
||||||
|
|
||||||
# Helix Spacific Build Options
|
|
||||||
# you can uncomment and edit follows 7 Variables
|
|
||||||
# jp: 以下の7つの変数を必要に応じて編集し、コメントアウトをはずします。
|
|
||||||
OLED_ENABLE = yes # OLED_ENABLE
|
|
||||||
LOCAL_GLCDFONT = yes # use each keymaps "helixfont.h" insted of "common/glcdfont.c"
|
|
||||||
LED_BACK_ENABLE = yes # LED backlight (Enable WS2812 RGB underlight.)
|
|
||||||
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight.)
|
|
||||||
LED_ANIMATIONS = yes # LED animations
|
|
||||||
# IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
|
||||||
|
|
||||||
# OLED_ENABLE が yes のとき
|
|
||||||
# OLED_SELECT が core ならば QMK 標準の oled_dirver.c を使用します。
|
|
||||||
# OLED_SELECT が core 以外ならば従来どおり helix/local_drivers/ssd1306.c を使用します。
|
|
||||||
# If OLED_ENABLE is 'yes'
|
|
||||||
# If OLED_SELECT is 'core', use QMK standard oled_dirver.c.
|
|
||||||
# If OLED_SELECT is other than 'core', use helix/local_drivers/ssd1306.c.
|
|
||||||
OLED_SELECT = core
|
|
|
@ -1,6 +0,0 @@
|
||||||
// Copyright 2023 Travis Reed (@dancxjo)
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#pragma once
|
|
||||||
#define DYNAMIC_KEYMAP_LAYER_COUNT 5
|
|
||||||
#define EE_HANDS
|
|
|
@ -1,177 +0,0 @@
|
||||||
// Copyright 2023 Travis Reed (@dancxjo)
|
|
||||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
||||||
|
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
enum layer {
|
|
||||||
_ENGRAM = 0,
|
|
||||||
_QWERTY,
|
|
||||||
_ENGRAM_SHIFT,
|
|
||||||
_FUNCTION,
|
|
||||||
_MEDIA
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Combines the compose key (right super) and the AltGr */
|
|
||||||
#define KC_COMP MT(MOD_RALT, KC_RGUI)
|
|
||||||
#define KC_SCMP MT(MOD_RSFT | MOD_RALT, KC_RGUI)
|
|
||||||
|
|
||||||
#define KC_STAB MT(MOD_LSFT, KC_TAB)
|
|
||||||
|
|
||||||
/* Use a fake shift layer since Engram switches level 2 assignments */
|
|
||||||
#define KC_PSFT MO(_ENGRAM_SHIFT)
|
|
||||||
|
|
||||||
#define KC_FUNC TT(_FUNCTION)
|
|
||||||
#define KC_MEDI TT(_MEDIA)
|
|
||||||
|
|
||||||
/* Easily switch between MacOS & other OSes*/
|
|
||||||
#define KC_HLM1 LM(1, MOD_LCTL)
|
|
||||||
#define KC_HLM2 LM(1, MOD_LGUI)
|
|
||||||
#define KC_SHM1 LM(1, MOD_LCTL | MOD_LSFT)
|
|
||||||
#define KC_SHM2 LM(1, MOD_LGUI | MOD_LSFT)
|
|
||||||
#define KC_STRN RSFT(KC_TRNS)
|
|
||||||
|
|
||||||
#define KC_FORW LGUI(KC_TAB)
|
|
||||||
#define KC_BACK LGUI(LSFT(KC_TAB))
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Differs slightly from official Engram in that {} are the level 1 and [] are the level 2 */
|
|
||||||
[_ENGRAM] = LAYOUT_ergodox_pretty(
|
|
||||||
KC_LCBR, KC_1, KC_2, KC_3, KC_4, KC_5, CG_NORM, KC_PAUSE, KC_6, KC_7, KC_8, KC_9, KC_0, KC_RCBR,
|
|
||||||
KC_TAB, KC_B, KC_Y, KC_O, KC_U, KC_QUOT, KC_AT, KC_HASH, KC_DQUO, KC_L, KC_D, KC_W, KC_V, KC_Z,
|
|
||||||
KC_CAPS, KC_C, KC_I, KC_E, KC_A, KC_COMM, KC_DOT, KC_H, KC_T, KC_S, KC_N, KC_Q,
|
|
||||||
KC_PSFT, KC_G, KC_X, KC_J, KC_K, KC_MINS, KC_SLSH, KC_PSCR, KC_QUES, KC_R, KC_M, KC_F, KC_P, KC_PSFT,
|
|
||||||
KC_HLM1, KC_FUNC, KC_MEDI, KC_LALT, KC_HLM2, KC_RGUI, KC_RALT, KC_MEDI, KC_FUNC,KC_HLM1,
|
|
||||||
KC_INS, KC_HOME, KC_END, KC_DEL,
|
|
||||||
KC_PGUP, KC_PGDN,
|
|
||||||
KC_ENT, KC_ESC, KC_LSFT, KC_RSFT, KC_BSPC, KC_SPC
|
|
||||||
),
|
|
||||||
[_ENGRAM_SHIFT] = LAYOUT_ergodox_pretty(
|
|
||||||
KC_LBRC, KC_PIPE, KC_EQL, KC_TILD, KC_PLUS, KC_LT, CG_SWAP, KC_STRN, KC_GT, KC_CIRC, KC_AMPR, KC_PERC, KC_ASTR, KC_RBRC,
|
|
||||||
KC_STRN, RSFT(KC_B), RSFT(KC_Y), RSFT(KC_O), RSFT(KC_U), KC_LPRN, KC_GRV, KC_DLR, KC_RPRN, RSFT(KC_L), RSFT(KC_D), RSFT(KC_W), RSFT(KC_V), RSFT(KC_Z),
|
|
||||||
KC_STRN, RSFT(KC_C), RSFT(KC_I), RSFT(KC_E), RSFT(KC_A), KC_SCLN, KC_COLN, RSFT(KC_H), RSFT(KC_T), RSFT(KC_S), RSFT(KC_N), RSFT(KC_Q),
|
|
||||||
KC_TRNS, RSFT(KC_G), RSFT(KC_X), RSFT(KC_J), RSFT(KC_K), KC_UNDS, KC_BSLS, KC_STRN, KC_EXLM, RSFT(KC_R), RSFT(KC_M), RSFT(KC_F), RSFT(KC_P), KC_TRNS,
|
|
||||||
KC_SHM1, KC_STRN, KC_STRN, KC_STRN, KC_SHM2, KC_STRN, KC_STRN, KC_STRN, KC_STRN, KC_SHM1,
|
|
||||||
KC_STRN, KC_STRN, KC_HYPR, KC_STRN,
|
|
||||||
KC_STRN, KC_STRN,
|
|
||||||
KC_SHM1, KC_STRN, KC_STRN, KC_SHM2, KC_STRN, KC_STRN
|
|
||||||
),
|
|
||||||
[_QWERTY] = LAYOUT_ergodox_pretty(
|
|
||||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_TRNS, KC_TRNS, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
|
||||||
KC_TRNS, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
|
||||||
KC_TRNS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_EQL, KC_TRNS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
|
||||||
),
|
|
||||||
[_FUNCTION] = LAYOUT_ergodox_pretty(
|
|
||||||
KC_PSCR, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_BRID, KC_BRIU, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_PWR,
|
|
||||||
KC_APP, KC_F11, KC_F12, KC_F13, KC_F14, KC_F15, TG(1), TG(1), KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_SLEP,
|
|
||||||
KC_SCRL, KC_F21, KC_F22, KC_F23, KC_F24, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WAKE,
|
|
||||||
KC_PAUS, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, KC_NO, CG_SWAP, CG_NORM, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
RGB_SAD, RGB_HUD, RGB_HUI, RGB_SAI,
|
|
||||||
RGB_RMOD, RGB_MOD,
|
|
||||||
RGB_SPD, RGB_VAD, KC_TRNS, KC_TRNS, RGB_VAI, RGB_SPI
|
|
||||||
),
|
|
||||||
[_MEDIA] = LAYOUT_ergodox_pretty(
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_WREF, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_WREF, KC_NO, KC_NO, KC_NO, KC_NO, KC_PGUP, KC_UP, KC_PGDN, KC_MSEL, KC_NO,
|
|
||||||
KC_NO, KC_NO, KC_WSTP, KC_MYCM, KC_WSCH, KC_FIND, KC_WHOM, KC_LEFT, KC_DOWN, KC_RIGHT, KC_NO, KC_NO,
|
|
||||||
KC_LSFT, KC_NO, KC_NO, KC_CALC, KC_NO, KC_WFAV, KC_NO, KC_NO, KC_NO, KC_HOME, KC_MAIL, KC_END, KC_NO, KC_NO,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_MUTE, KC_EJCT, KC_MSTP, KC_MPLY,
|
|
||||||
KC_MPRV, KC_MNXT,
|
|
||||||
KC_MRWD, KC_VOLD, KC_TRNS, KC_TRNS, KC_VOLU, KC_MFFD
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
char* get_layer_name(uint8_t layer, bool capitalized) {
|
|
||||||
char *layer_name = "Unknown ";
|
|
||||||
|
|
||||||
switch (layer) {
|
|
||||||
case _ENGRAM:
|
|
||||||
case _ENGRAM_SHIFT:
|
|
||||||
if (capitalized) {
|
|
||||||
layer_name = "ENGRAM ";
|
|
||||||
} else {
|
|
||||||
layer_name = "engram ";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case _QWERTY:
|
|
||||||
if (capitalized) {
|
|
||||||
layer_name = "QWERTY ";
|
|
||||||
} else {
|
|
||||||
layer_name = "qwerty ";
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
case _MEDIA:
|
|
||||||
layer_name = "Media+ ";
|
|
||||||
break;
|
|
||||||
case _FUNCTION:
|
|
||||||
layer_name = "Function";
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return layer_name;
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_locks(led_t led_state) {
|
|
||||||
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
|
|
||||||
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
|
||||||
oled_write_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
|
||||||
}
|
|
||||||
|
|
||||||
void render_mods(uint8_t modifiers, uint8_t layer) {
|
|
||||||
oled_write_P(modifiers & MOD_MASK_GUI ? PSTR("Super") : PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(modifiers & MOD_MASK_ALT ? PSTR("Alt") : PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
oled_write_P(modifiers & MOD_MASK_CTRL ? PSTR("Ctl") : PSTR(" "), false);
|
|
||||||
oled_write_P(PSTR(" "), false);
|
|
||||||
|
|
||||||
if (layer == _ENGRAM_SHIFT) {
|
|
||||||
oled_write_P(PSTR("Pseudo"), false);
|
|
||||||
} else {
|
|
||||||
oled_write_P(modifiers & MOD_MASK_SHIFT ? PSTR("Shift ") : PSTR(" "), false);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
char* get_helm_key(void) {
|
|
||||||
if (keymap_config.swap_lctl_lgui) {
|
|
||||||
return "Super";
|
|
||||||
} else {
|
|
||||||
return "Control";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool oled_task_user(void) {
|
|
||||||
uint8_t layer = get_highest_layer(layer_state);
|
|
||||||
uint8_t modifiers = get_mods()|get_oneshot_mods();
|
|
||||||
led_t led_state = host_keyboard_led_state();
|
|
||||||
|
|
||||||
bool real_shifted = modifiers & MOD_MASK_SHIFT;
|
|
||||||
bool pseudo_shifted = layer == _ENGRAM_SHIFT;
|
|
||||||
bool shifted = real_shifted || pseudo_shifted;
|
|
||||||
bool caps = led_state.caps_lock;
|
|
||||||
bool capitalized = (caps && !shifted) || (!caps && shifted);
|
|
||||||
|
|
||||||
oled_write_P(PSTR("Layer: "), false);
|
|
||||||
oled_write(get_layer_name(layer, capitalized), false);
|
|
||||||
oled_write_P(PSTR("\n"), false);
|
|
||||||
|
|
||||||
// Only the master knows if we've swapped the gui and ctl key
|
|
||||||
if (is_keyboard_master()) {
|
|
||||||
oled_write_P(PSTR(" Helm: "), false);
|
|
||||||
oled_write(get_helm_key(), false);
|
|
||||||
}
|
|
||||||
|
|
||||||
oled_write_P(PSTR("\n"), false);
|
|
||||||
|
|
||||||
render_mods(modifiers, layer);
|
|
||||||
oled_write_P(PSTR("\n"), false);
|
|
||||||
|
|
||||||
render_locks(led_state);
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
|
@ -1,4 +0,0 @@
|
||||||
COMMAND_ENABLE = yes
|
|
||||||
VIA_ENABLE = yes
|
|
||||||
EXTRAKEY_ENABLE = no
|
|
||||||
MOUSEKEY_ENABLE = no
|
|
|
@ -1,22 +0,0 @@
|
||||||
/*
|
|
||||||
Copyright 2018 Yiancar
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
/* Include overwrites for specific keymap */
|
|
||||||
|
|
||||||
#undef RGB_BACKLIGHT_CAPS_LOCK_INDICATOR
|
|
||||||
#define RGB_BACKLIGHT_CAPS_LOCK_INDICATOR { .color = { .h = 0, .s = 255 }, .index = 3-1 } //red
|
|
|
@ -1,71 +0,0 @@
|
||||||
/* Copyright 2018 Yiancar
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
//This is the HHKB version of the PCB
|
|
||||||
|
|
||||||
enum macro_keys {
|
|
||||||
KC_EML = SAFE_RANGE
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[0] = LAYOUT_60_hhkb( /* Base */
|
|
||||||
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_GRV, KC_BSLS,
|
|
||||||
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_BSPC,
|
|
||||||
KC_LCTL, 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, KC_RSFT, MO(1),
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL ),
|
|
||||||
|
|
||||||
[1] = LAYOUT_60_hhkb( /* FN */
|
|
||||||
QK_BOOT, 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_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, EF_DEC, EF_INC, H1_DEC, H1_INC, H2_DEC, H2_INC, BR_DEC, BR_INC, ES_DEC, ES_INC, KC_UP, KC_TRNS, KC_DEL,
|
|
||||||
KC_TRNS, KC_VOLD, KC_VOLU, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, S1_DEC, S1_INC, S2_DEC, S2_INC, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
|
|
||||||
|
|
||||||
[2] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
|
|
||||||
|
|
||||||
[3] = LAYOUT_60_hhkb( /* Empty for dynamic keymaps */
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
|
||||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS ),
|
|
||||||
};
|
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
//user initialization
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
//user matrix
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case KC_EML: //use "KC_EML" as keycode in layers above to call macro
|
|
||||||
if (!record->event.pressed) {
|
|
||||||
send_string_with_delay_P(PSTR("example@email.com"), 10); //change email value here
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
|
@ -1,6 +0,0 @@
|
||||||
The default keymap for HHKB HS60 V2. VIA support enabled.
|
|
||||||
=========================================================
|
|
||||||
|
|
||||||
![Layout image](https://imgur.com/usbrQWL.png)
|
|
||||||
|
|
||||||
Default layer is normal HHKB with 7U space. Fn layer is used for RGB functions, Volume control and arrow cluster
|
|
|
@ -1 +0,0 @@
|
||||||
VIA_ENABLE = yes
|
|
|
@ -1,23 +0,0 @@
|
||||||
/* Copyright 2021 LAZYDESIGNERS
|
|
||||||
*
|
|
||||||
* 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_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC, KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, RSFT(KC_SLSH), KC_DEL, KC_ESC, KC_LALT, KC_SPC, LT(1,KC_SPC), KC_RALT, KC_RGUI, KC_LCTL),
|
|
||||||
[1] = LAYOUT(KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, QK_BOOT, RGB_SPI, RGB_SPD, RGB_M_P, RGB_M_B, RGB_M_SW, RGB_M_SN, RGB_M_K, RGB_M_X, RGB_M_G, KC_SCLN, KC_NO, KC_LSFT, RGB_TOG, RGB_MOD, RGB_RMOD, RGB_HUI, RGB_HUD, RGB_VAI, RGB_VAD, KC_NO, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, MO(2), KC_NO, KC_LEFT, KC_DOWN, KC_RGHT),
|
|
||||||
[2] = 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_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO)
|
|
||||||
};
|
|
|
@ -1,136 +0,0 @@
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
enum keymap_layout {
|
|
||||||
VANILLA = 0, // matches MF68 layout
|
|
||||||
CS_GO, // 0x08
|
|
||||||
FUNC, // 0x10
|
|
||||||
SETTINGS, // 0x20
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
|
||||||
TD_ESC_FUNC = 0,
|
|
||||||
TD_ESC_CTRL,
|
|
||||||
TD_SPC_SPAM
|
|
||||||
};
|
|
||||||
|
|
||||||
bool spam_space = false;
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap BASE: (Base Layer) Default Layer
|
|
||||||
* ,---------. ,------------------------------------------------------------. ,---------.
|
|
||||||
* |Vol-|Vol+| |Esc~| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backspa| | Ins|PgUp|
|
|
||||||
* |---------| |------------------------------------------------------------| |---------|
|
|
||||||
* | F3 | F4 | |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del|PgDn|
|
|
||||||
* |---------| |------------------------------------------------------------| `---------'
|
|
||||||
* | F5 | F6 | |Control | A| S| D| F| G| H| J| K| L| ;| '|Return |
|
|
||||||
* |---------| |------------------------------------------------------------| ,----.
|
|
||||||
* | F7 | F8 | |Shift | Z| X| C| V| B| N| M| ,| .| /| Shift | | Up |
|
|
||||||
* |---------| |-------------------------------------------------------------------------.
|
|
||||||
* | F9 | F10| |Func|Alt |Cmd | Space |Cmd |Alt |Func | |Lft| Dn |Rig |
|
|
||||||
* `---------' `------------------------------------------------------' `-------------'
|
|
||||||
*/
|
|
||||||
[VANILLA] = LAYOUT_split_rshift(
|
|
||||||
KC_VOLD, KC_VOLU, QK_GESC, 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, LALT(KC_F5), KC_PGUP,
|
|
||||||
KC_F3, KC_F4, 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, KC_DEL, KC_PGDN,
|
|
||||||
KC_F5, KC_F6, TD(TD_ESC_FUNC), 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_F7, KC_F8, 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(CS_GO), KC_UP,
|
|
||||||
KC_F9, KC_F10, KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
),
|
|
||||||
|
|
||||||
[CS_GO] = LAYOUT_split_rshift(
|
|
||||||
_______, _______, QK_GESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap FUNCTION: Function Layer
|
|
||||||
* ,---------. ,-------------------------------------------------------------. ,---------.
|
|
||||||
* | V- | V+ | | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete | | Ins|Home|
|
|
||||||
* |---------| |-------------------------------------------------------------| |---------|
|
|
||||||
* | | | |Tab | |PgU| | | | | | Up| | | | | | | Del|End |
|
|
||||||
* |---------| |-------------------------------------------------------------| `---------'
|
|
||||||
* | | | |Control|Hme|PgD|End| | | |Lft|Dwn|Rgt| | | |
|
|
||||||
* |---------| |-------------------------------------------------------------| ,----.
|
|
||||||
* | | | |Shift | |Del| | | | |Mute|V- |V+ | |TG(SETTINGS)| | Up |
|
|
||||||
* |---------| |--------------------------------------------------------------------------.
|
|
||||||
* | | F10| |Func|Win |Alt | PgD |Alt |Ctrl |Func | |Lft| Dn |Rig |
|
|
||||||
* `---------' `------------------------------------------------------' `-------------'
|
|
||||||
*/
|
|
||||||
[FUNC] = LAYOUT_split_rshift(
|
|
||||||
_______, _______, KC_GRV, 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_DEL, TO(CS_GO), KC_HOME,
|
|
||||||
_______, _______, XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_END,
|
|
||||||
_______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX,
|
|
||||||
_______, _______, _______, XXXXXXX, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), XXXXXXX, _______,
|
|
||||||
_______, _______, _______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap SETTINGS: Settings Layer
|
|
||||||
* ,---------. ,-----------------------------------------------------------. ,-------------.
|
|
||||||
* | | | |FN0 |BL0|BL1|BL2|BL3| | | | | | |BL-|BL+|BL Togl| |RGB Tog |Val+|
|
|
||||||
* |---------| |-----------------------------------------------------------| |-------------|
|
|
||||||
* | | | |Debug| | | | | | | | | | | | |RGBTst| |RGB Mode|Val-|
|
|
||||||
* |---------| |-----------------------------------------------------------| `-------------'
|
|
||||||
* | | | |LayrClr|Hz+|MS+| | | | | | | | | | RST |
|
|
||||||
* |---------| |-----------------------------------------------------------| ,----.
|
|
||||||
* | | | |ClickTgl|Hz-|MS-| | | | | | | | |Layer Clr | |Hue+|
|
|
||||||
* |---------| |------------------------------------------------------------------------.
|
|
||||||
* | | | | | | | Print Debug | | | | |Sat-|Hue-|Sat+|
|
|
||||||
* `---------' `------------------------------------------------------' `--------------'
|
|
||||||
*/
|
|
||||||
[SETTINGS] = LAYOUT_split_rshift(
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DOWN, BL_UP, BL_TOGG, RGB_TOG, RGB_VAI,
|
|
||||||
XXXXXXX, XXXXXXX, DB_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
void tap_space_spam_finished(tap_dance_state_t *state, void *user_data) {
|
|
||||||
if (get_mods() & (MOD_BIT(KC_LGUI))) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (state->pressed) {
|
|
||||||
spam_space = true;
|
|
||||||
}
|
|
||||||
tap_code(KC_SPC);
|
|
||||||
}
|
|
||||||
|
|
||||||
void tap_space_spam_reset(tap_dance_state_t *state, void *user_data) {
|
|
||||||
spam_space = false;
|
|
||||||
unregister_code(KC_SPC);
|
|
||||||
}
|
|
||||||
|
|
||||||
void tap_esc_func_finished(tap_dance_state_t *state, void *user_data) {
|
|
||||||
if (state->pressed) {
|
|
||||||
layer_on(FUNC);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_ESC);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void tap_esc_func_reset(tap_dance_state_t *state, void *user_data) {
|
|
||||||
layer_off(FUNC);
|
|
||||||
}
|
|
||||||
|
|
||||||
tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
[TD_ESC_FUNC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_esc_func_finished, tap_esc_func_reset),
|
|
||||||
[TD_SPC_SPAM] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_space_spam_finished, tap_space_spam_reset),
|
|
||||||
};
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
if (spam_space && !(get_mods() & (MOD_BIT(KC_LGUI)))) {
|
|
||||||
tap_code(KC_SPC);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
if ((layer_state & (1 << CS_GO)) && (keycode == 44)) {
|
|
||||||
if (get_mods() & (MOD_BIT(KC_LGUI))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
# The default keymap for bluepad
|
|
|
@ -1,3 +0,0 @@
|
||||||
AUDIO_ENABLE = no
|
|
||||||
TAP_DANCE_ENABLE = yes
|
|
||||||
WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms
|
|
|
@ -1,170 +0,0 @@
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
enum keymap_layout {
|
|
||||||
VANILLA = 0, // matches MF68 layout
|
|
||||||
DEFAULT_WKL, // 0x02 Function in CapsLock location, gui key disabled
|
|
||||||
DEFAULT_OSX, // 0x04 Function in CapsLock location, gui/alt swapped for OSX
|
|
||||||
CS_GO, // 0x08 Function in CapsLock location, gui/alt swapped for OSX
|
|
||||||
FUNC, // 0x10
|
|
||||||
SETTINGS, // 0x20
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
|
||||||
TD_ESC_FUNC = 0,
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap VANILLA: (Base Layer) Default Layer
|
|
||||||
* ,-----------------------------------------------------------------------------.
|
|
||||||
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus|
|
|
||||||
* |-----------------------------------------------------------| |--------------|
|
|
||||||
* | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp|
|
|
||||||
* |-----------------------------------------------------------| |--------------|
|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del| End|PgDn|
|
|
||||||
* |-----------------------------------------------------------| `--------------'
|
|
||||||
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
|
|
||||||
* |-----------------------------------------------------------| ,----.
|
|
||||||
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
|
||||||
* |-----------------------------------------------------------| ,-------------.
|
|
||||||
* |Ctrl|Gui |Alt | Space |ALT |GUI |CTRL |Func| |Lft| Dn |Rig |
|
|
||||||
* `-----------------------------------------------------------' `-------------'
|
|
||||||
*/
|
|
||||||
[VANILLA] = LAYOUT_tkl_ansi(
|
|
||||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_0, KC_1, KC_2, KC_3, KC_4, KC_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_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
|
||||||
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, KC_DEL, KC_END, KC_PGDN,
|
|
||||||
KC_CAPS, 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, KC_RSFT, KC_UP,
|
|
||||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RCTL, MO(FUNC), MO(SETTINGS), KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap DEFAULT_TKL: (Base Layer) Default Layer
|
|
||||||
* ,-----------------------------------------------------------------------------.
|
|
||||||
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus|
|
|
||||||
* |-----------------------------------------------------------| |--------------|
|
|
||||||
* | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp|
|
|
||||||
* |-----------------------------------------------------------| |--------------|
|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del| End|PgDn|
|
|
||||||
* |-----------------------------------------------------------| `--------------'
|
|
||||||
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
|
|
||||||
* |-----------------------------------------------------------| ,----.
|
|
||||||
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
|
||||||
* |-----------------------------------------------------------| ,-------------.
|
|
||||||
* |Ctrl| |Alt | Space |ALT | |CTRL |Func| |Lft| Dn |Rig |
|
|
||||||
* `-----------------------------------------------------------' `-------------'
|
|
||||||
*/
|
|
||||||
[DEFAULT_WKL] = LAYOUT_tkl_ansi(
|
|
||||||
KC_ESC, 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_PSCR, KC_SCRL, KC_PAUS,
|
|
||||||
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_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
|
||||||
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, KC_DEL, KC_END, KC_PGDN,
|
|
||||||
KC_CAPS, 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, KC_RSFT, KC_UP,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap DEFAULT_OSX: (Base Layer) Default Layer
|
|
||||||
* ,-----------------------------------------------------------------------------.
|
|
||||||
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus|
|
|
||||||
* |-----------------------------------------------------------| |--------------|
|
|
||||||
* | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp|
|
|
||||||
* |-----------------------------------------------------------| |--------------|
|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del| End|PgDn|
|
|
||||||
* |-----------------------------------------------------------| `--------------'
|
|
||||||
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
|
|
||||||
* |-----------------------------------------------------------| ,----.
|
|
||||||
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
|
||||||
* |-----------------------------------------------------------| ,-------------.
|
|
||||||
* |Ctrl| Opt |Cmd | Space |Cmd |Opt |CTRL |Func| |Lft| Dn |Rig |
|
|
||||||
* `-----------------------------------------------------------' `-------------'
|
|
||||||
*/
|
|
||||||
[DEFAULT_OSX] = LAYOUT_tkl_ansi(
|
|
||||||
KC_ESC, 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_SCRL, KC_PAUS, LALT(KC_F5),
|
|
||||||
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_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
|
||||||
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, KC_DEL, KC_END, KC_PGDN,
|
|
||||||
TD(TD_ESC_FUNC), 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, KC_RSFT, KC_UP,
|
|
||||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RCTL, MO(FUNC), MO(SETTINGS), KC_LEFT, KC_DOWN, KC_RGHT
|
|
||||||
),
|
|
||||||
|
|
||||||
[CS_GO] = LAYOUT_tkl_ansi(
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
KC_LCTL, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap FUNCTION: Function Layer
|
|
||||||
* ,-------------------------------------------------------------. ,--------------.
|
|
||||||
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12 | |Prnt|ScLk|Paus|
|
|
||||||
* |-------------------------------------------------------------| |--------------|
|
|
||||||
* | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete | | | | |
|
|
||||||
* |-------------------------------------------------------------| |--------------|
|
|
||||||
* |Tab | |PgU| | | | | | Up| | | | | | | | | |
|
|
||||||
* |-------------------------------------------------------------| `--------------'
|
|
||||||
* |Control|Hme|PgD|End| | | |Lft|Dwn|Rgt| | | |
|
|
||||||
* |-------------------------------------------------------------| ,----.
|
|
||||||
* |Shift | |Del| | | | |Mute|V- |V+ | |TG(SETTINGS)| | Up |
|
|
||||||
* |-------------------------------------------------------------' ,-------------.
|
|
||||||
* |Func|Win |Alt | PgD |Alt |Ctrl |Func | |Lft| Dn |Rig |
|
|
||||||
* `------------------------------------------------------' `-------------'
|
|
||||||
*/
|
|
||||||
[FUNC] = LAYOUT_tkl_ansi(
|
|
||||||
KC_ESC, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_PSCR, KC_SCRL, KC_PAUS,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_DEL, TO(CS_GO), _______, _______,
|
|
||||||
XXXXXXX, KC_PGUP, KC_UP, KC_PGDN, KC_HOME, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______,
|
|
||||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX,
|
|
||||||
_______, XXXXXXX, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______,
|
|
||||||
_______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap SETTINGS: Settings Layer
|
|
||||||
* ,-----------------------------------------------------------. ,-------------.
|
|
||||||
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12 | |Prnt|ScLk|Paus|
|
|
||||||
* |-------------------------------------------------------------| |--------------|
|
|
||||||
* |LayClr| | | | | | | | | | |BL-|BL+|BL Togl| |RGB Tog |Val+|
|
|
||||||
* |-----------------------------------------------------------| |-------------|
|
|
||||||
* |Debug| | | | | | | | | | | | |LEDTst| |RGB Mode|Val-|
|
|
||||||
* |-----------------------------------------------------------| `-------------'
|
|
||||||
* |AU_TOGG|Hz+|MS+| | | | | | | | | | RST |
|
|
||||||
* |-----------------------------------------------------------| ,----.
|
|
||||||
* |ClickTgl|Hz-|MS-| | | | | | | | |Layer Clr | |Hue+|
|
|
||||||
* |------------------------------------------------------------------------.
|
|
||||||
* | | | | Print Debug | | | | |Sat-|Hue-|Sat+|
|
|
||||||
* `------------------------------------------------------' `--------------'
|
|
||||||
*/
|
|
||||||
[SETTINGS] = LAYOUT_tkl_ansi(
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DOWN, XXXXXXX, XXXXXXX, XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DOWN, BL_UP, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX,
|
|
||||||
MU_NEXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD, XXXXXXX,
|
|
||||||
AU_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, RGB_SAD, RGB_HUD, RGB_SAI
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
void tap_esc_func_finished(tap_dance_state_t *state, void *user_data) {
|
|
||||||
if (state->pressed) {
|
|
||||||
layer_on(FUNC);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_ESC);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void tap_esc_func_reset(tap_dance_state_t *state, void *user_data) {
|
|
||||||
layer_off(FUNC);
|
|
||||||
}
|
|
||||||
|
|
||||||
tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
[TD_ESC_FUNC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_esc_func_finished, tap_esc_func_reset),
|
|
||||||
};
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
if ((layer_state & (1 << CS_GO)) && (keycode == 44)) {
|
|
||||||
if (get_mods() & (MOD_BIT(KC_LGUI))) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
# The default keymap for LFK87
|
|
|
@ -1,2 +0,0 @@
|
||||||
TAP_DANCE_ENABLE = yes
|
|
||||||
WATCHDOG_ENABLE = yes # Resets keyboard if matrix_scan isn't run every 250ms
|
|
|
@ -1,108 +0,0 @@
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
enum keymap_layout {
|
|
||||||
VANILLA = 0, // matches MF68 layout
|
|
||||||
FUNC, // 0x08
|
|
||||||
SETTINGS, // 0x10
|
|
||||||
};
|
|
||||||
|
|
||||||
enum {
|
|
||||||
TD_ESC_FUNC = 0,
|
|
||||||
TD_ESC_CTRL,
|
|
||||||
TD_SPC_SPAM
|
|
||||||
};
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
/* Keymap VANILLA: (Base Layer) Default Layer
|
|
||||||
* ,-----------------------------------------------------------------------------.
|
|
||||||
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12| |Prnt|ScLk|Paus|
|
|
||||||
* |-----------------------------------------------------------| |--------------|
|
|
||||||
* | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0| - | = |Backsp | | Ins|Home|PgUp|
|
|
||||||
* |-----------------------------------------------------------| |--------------|
|
|
||||||
* |Tab | Q| W| E| R| T| Y| U| I| O| P| [| ]| \| | Del| End|PgDn|
|
|
||||||
* |-----------------------------------------------------------| `--------------'
|
|
||||||
* |CAPS | A| S| D| F| G| H| J| K| L| ;| '|Return |
|
|
||||||
* |-----------------------------------------------------------| ,----.
|
|
||||||
* |Shift | Z| X| C| V| B| N| M| ,| .| /|Shift | | Up |
|
|
||||||
* |-----------------------------------------------------------| ,-------------.
|
|
||||||
* |Ctrl|Gui |Alt | Space |ALT |GUI |Func|CTRL | |Lft| Dn |Rig |
|
|
||||||
* `-----------------------------------------------------------' `-------------'
|
|
||||||
*/
|
|
||||||
[VANILLA] = LAYOUT(
|
|
||||||
QK_GESC, 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_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
|
||||||
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, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
|
||||||
TD(TD_ESC_FUNC), 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_P4, KC_P5, KC_P6, LALT(KC_F5),
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
|
||||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RCTL, MO(FUNC), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap FUNCTION: Function Layer
|
|
||||||
* ,-------------------------------------------------------------. ,--------------.
|
|
||||||
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12 | |Prnt|ScLk|Paus|
|
|
||||||
* |-------------------------------------------------------------| |--------------|
|
|
||||||
* | ` |F1 |F2 |F3 |F4 |F5 |F6 |F7 |F8 |F9 |F10|F11|F12|Delete | | | | |
|
|
||||||
* |-------------------------------------------------------------| |--------------|
|
|
||||||
* |Tab | |PgU| | | | | | Up| | | | | | | | | |
|
|
||||||
* |-------------------------------------------------------------| `--------------'
|
|
||||||
* |Control|Hme|PgD|End| | | |Lft|Dwn|Rgt| | | |
|
|
||||||
* |-------------------------------------------------------------| ,----.
|
|
||||||
* |Shift | |Del| | | | |Mute|V- |V+ | |TG(SETTINGS)| | Up |
|
|
||||||
* |-------------------------------------------------------------' ,-------------.
|
|
||||||
* |Func|Win |Alt | PgD |Alt |Ctrl |Func | |Lft| Dn |Rig |
|
|
||||||
* `------------------------------------------------------' `-------------'
|
|
||||||
*/
|
|
||||||
[FUNC] = LAYOUT(
|
|
||||||
KC_GRV, 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_DEL, _______, _______, _______, _______,
|
|
||||||
XXXXXXX, KC_HOME, KC_UP, KC_END, KC_PGUP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
|
|
||||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, _______, _______,
|
|
||||||
_______, XXXXXXX, KC_DEL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MUTE, KC_VOLD, KC_VOLU, XXXXXXX, TG(SETTINGS), _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, KC_PGDN, _______, _______, _______, _______, _______, _______, _______, _______
|
|
||||||
),
|
|
||||||
|
|
||||||
/* Keymap SETTINGS: Settings Layer
|
|
||||||
* ,-----------------------------------------------------------. ,-------------.
|
|
||||||
* |Esc |f1| f2| f3| f4| | f5| f6| f7| f8| | f9|f10|f11|f12 | |Prnt|ScLk|Paus|
|
|
||||||
* |-------------------------------------------------------------| |--------------|
|
|
||||||
* |FN0 | | | | | | | | | | |BL-|BL+|BL Togl| |RGB Tog |Val+|
|
|
||||||
* |-----------------------------------------------------------| |-------------|
|
|
||||||
* |MuMode| | | | | | | | | | | | |LEDTst| |RGB Mode|Val-|
|
|
||||||
* |-----------------------------------------------------------| `-------------'
|
|
||||||
* |AudTgl |Hz+|MS+| | | | | | | | | | RST |
|
|
||||||
* |-----------------------------------------------------------| ,----.
|
|
||||||
* |ClickTgl|Hz-|MS-| | | | | | | | |Layer Clr | |Hue+|
|
|
||||||
* |--------------------------------------------------------------------------.
|
|
||||||
* | | | | | | | | | |Sat-|Hue-|Sat+|
|
|
||||||
* `----------------------------------------------------------------------------'
|
|
||||||
*/
|
|
||||||
[SETTINGS] = LAYOUT(
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BL_DOWN, BL_UP, BL_TOGG, RGB_TOG, RGB_VAI, XXXXXXX, XXXXXXX,
|
|
||||||
MU_NEXT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_VAD, XXXXXXX, XXXXXXX,
|
|
||||||
AU_TOGG, KC_F1, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, MU_TOGG, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_HUI, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
|
||||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_SAD, RGB_HUD, RGB_SAI, XXXXXXX, XXXXXXX
|
|
||||||
)
|
|
||||||
};
|
|
||||||
|
|
||||||
void tap_esc_func_finished(tap_dance_state_t *state, void *user_data) {
|
|
||||||
if (state->pressed) {
|
|
||||||
layer_on(FUNC);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_ESC);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void tap_esc_func_reset(tap_dance_state_t *state, void *user_data) {
|
|
||||||
layer_off(FUNC);
|
|
||||||
}
|
|
||||||
|
|
||||||
tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
[TD_ESC_FUNC] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_esc_func_finished, tap_esc_func_reset),
|
|
||||||
};
|
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
// This keymap only has a single base layer, so reset the default if needed
|
|
||||||
if (eeconfig_read_default_layer() > 1) {
|
|
||||||
eeconfig_update_default_layer(1);
|
|
||||||
default_layer_set(1);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1 +0,0 @@
|
||||||
TAP_DANCE_ENABLE = yes
|
|
|
@ -1,28 +0,0 @@
|
||||||
/* Copyright 2022 Fearless Spiff
|
|
||||||
*
|
|
||||||
* 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 180
|
|
||||||
|
|
||||||
#define MK_KINETIC_SPEED
|
|
||||||
#define MOUSEKEY_DELAY 8
|
|
||||||
#define MOUSEKEY_INTERVAL 5
|
|
||||||
#define MOUSEKEY_MOVE_DELTA 1
|
|
||||||
#define MOUSEKEY_INITIAL_SPEED 3
|
|
||||||
#define MOUSEKEY_BASE_SPEED 120
|
|
||||||
#define MOUSEKEY_DECELERATED_SPEED 100
|
|
||||||
#define MOUSEKEY_ACCELERATED_SPEED 1000
|
|
|
@ -1,301 +0,0 @@
|
||||||
/* Copyright 2021 Kyle McCreery
|
|
||||||
* Copyright 2021 Jonavin Eng
|
|
||||||
* Copyright 2022 Fearless Spiff
|
|
||||||
*
|
|
||||||
* 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_german.h"
|
|
||||||
|
|
||||||
// OLED setup for bongocat
|
|
||||||
#define IDLE_FRAMES 5
|
|
||||||
#define IDLE_SPEED 30
|
|
||||||
#define TAP_FRAMES 2
|
|
||||||
#define TAP_SPEED 40
|
|
||||||
#define ANIM_FRAME_DURATION 200
|
|
||||||
#define ANIM_SIZE 512
|
|
||||||
|
|
||||||
#define LABEL_LENGTH 8
|
|
||||||
|
|
||||||
#define KC_CAD LALT(LCTL(KC_DEL))
|
|
||||||
#define KC_TEAMS_CAM C(S(KC_O))
|
|
||||||
#define KC_TEAMS_MUTE C(S(KC_M))
|
|
||||||
|
|
||||||
enum layers {
|
|
||||||
QWERT,
|
|
||||||
FN_1,
|
|
||||||
FN_2,
|
|
||||||
FN_MOUSE
|
|
||||||
};
|
|
||||||
|
|
||||||
enum custom_user_keycodes {
|
|
||||||
KC_ENC = SAFE_RANGE
|
|
||||||
};
|
|
||||||
|
|
||||||
static long int oled_timeout = 1800000; // 30 minutes
|
|
||||||
bool gui_on = true;
|
|
||||||
char wpm_str[10];
|
|
||||||
uint32_t anim_timer = 0;
|
|
||||||
uint32_t anim_sleep = 0;
|
|
||||||
uint8_t current_idle_frame = 0;
|
|
||||||
uint8_t current_tap_frame = 0;
|
|
||||||
|
|
||||||
// Tap Dance declarations
|
|
||||||
enum {
|
|
||||||
TD_TAB_ESC,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Tap Dance definitions
|
|
||||||
tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
// Tap once for Tab, twice for Esc
|
|
||||||
[TD_TAB_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, KC_ESC),
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
char label_top[LABEL_LENGTH];
|
|
||||||
char label_mid[LABEL_LENGTH];
|
|
||||||
char label_bottom[LABEL_LENGTH];
|
|
||||||
uint16_t keycode;
|
|
||||||
} encoder_key;
|
|
||||||
|
|
||||||
static const encoder_key PROGMEM encoder_keys[] = {
|
|
||||||
// list of key codes that will be scrolled through by encoder and description
|
|
||||||
// Be aware that it only works when using one char less than defined. In this case 7 max. No idea why?
|
|
||||||
{"Teams", "Toggle", "Mic", KC_TEAMS_MUTE},
|
|
||||||
{"Teams", "Toggle", "Cam", KC_TEAMS_CAM},
|
|
||||||
{"Ctrl", "Alt", "Del", KC_CAD},
|
|
||||||
{"Caps", "Lock", "", KC_CAPS_LOCK},
|
|
||||||
{"Pause", "", "", KC_PAUSE},
|
|
||||||
{"PrtScr", "", "", KC_PSCR},
|
|
||||||
{"Insert", "", "", KC_INS},
|
|
||||||
{"Play", "", "", KC_MEDIA_PLAY_PAUSE}
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NUMBER_OF_ENCODER_KEYS ARRAY_SIZE(encoder_keys)
|
|
||||||
|
|
||||||
static uint8_t selected_encoder_key_id = 0;
|
|
||||||
static encoder_key selected_encoder_key;
|
|
||||||
|
|
||||||
static void set_selected_encoder_key(uint8_t idx) {
|
|
||||||
// make a copy from PROGMEM
|
|
||||||
memcpy_P (&selected_encoder_key, &encoder_keys[idx], sizeof selected_encoder_key);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case KC_ENC:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(selected_encoder_key.keycode);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[QWERT] = LAYOUT_all(
|
|
||||||
KC_ENC,
|
|
||||||
TD(TD_TAB_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, DE_Z, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
|
||||||
MO(FN_1), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_PLUS, KC_ENT,
|
|
||||||
KC_LSFT, DE_LABK, DE_Y, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, LT(FN_2,KC_SPC), LT(FN_2,KC_SPC), LT(FN_2,KC_SPC), KC_RALT, DE_MINS, KC_RCTL ),
|
|
||||||
|
|
||||||
[FN_1] = LAYOUT_all(
|
|
||||||
KC_MUTE,
|
|
||||||
QK_GESC, _______, _______, _______, DE_LCBR, DE_RCBR, _______, DE_UDIA, KC_UP, DE_ODIA, DE_QUES, KC_DEL,
|
|
||||||
_______, DE_ADIA, DE_SS, _______, DE_LPRN, DE_RPRN, _______, KC_LEFT, KC_DOWN, KC_RIGHT, DE_HASH, _______,
|
|
||||||
_______, _______, DE_CIRC, DE_ACUT, _______, DE_LBRC, DE_RBRC, KC_HOME, KC_END, DE_QUOT, DE_DQUO, DE_EQL,
|
|
||||||
_______, _______, _______, MO(FN_MOUSE), MO(FN_MOUSE), MO(FN_MOUSE), DE_BSLS, DE_SLSH, DE_TILD ),
|
|
||||||
|
|
||||||
[FN_2] = LAYOUT_all(
|
|
||||||
_______,
|
|
||||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_BSPC,
|
|
||||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_COMM, KC_DOT, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______ ),
|
|
||||||
|
|
||||||
[FN_MOUSE] = LAYOUT_all(
|
|
||||||
_______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_U, KC_BTN2, KC_BTN3, _______,
|
|
||||||
_______, _______, _______, _______, KC_ACL0, _______, KC_WH_U, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______ )
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef ENCODER_ENABLE
|
|
||||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
|
||||||
if (clockwise) {
|
|
||||||
if (IS_LAYER_ON(QWERT) && selected_encoder_key_id < NUMBER_OF_ENCODER_KEYS-1) {
|
|
||||||
selected_encoder_key_id ++;
|
|
||||||
set_selected_encoder_key(selected_encoder_key_id);
|
|
||||||
}
|
|
||||||
if (IS_LAYER_ON(FN_1)) {
|
|
||||||
tap_code16(KC_PGDN);
|
|
||||||
}
|
|
||||||
if (IS_LAYER_ON(FN_2)) {
|
|
||||||
tap_code(KC_VOLU);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (IS_LAYER_ON(QWERT) && selected_encoder_key_id > 0) {
|
|
||||||
selected_encoder_key_id --;
|
|
||||||
set_selected_encoder_key(selected_encoder_key_id);
|
|
||||||
}
|
|
||||||
if (IS_LAYER_ON(FN_1)) {
|
|
||||||
tap_code16(KC_PGUP);
|
|
||||||
}
|
|
||||||
if (IS_LAYER_ON(FN_2)) {
|
|
||||||
tap_code(KC_VOLD);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef OLED_ENABLE
|
|
||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
|
||||||
set_selected_encoder_key(selected_encoder_key_id);
|
|
||||||
|
|
||||||
return OLED_ROTATION_180; // flips the display 180 degrees
|
|
||||||
}
|
|
||||||
|
|
||||||
static void render_anim(void) {
|
|
||||||
|
|
||||||
// Idle animation
|
|
||||||
static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
|
|
||||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
|
|
||||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
|
|
||||||
7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32,
|
|
||||||
32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
|
|
||||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
|
|
||||||
7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,
|
|
||||||
32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// Prep animation
|
|
||||||
static const char PROGMEM prep[][ANIM_SIZE] = {
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,
|
|
||||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// Typing animation
|
|
||||||
static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159,
|
|
||||||
95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,
|
|
||||||
1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32,
|
|
||||||
32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
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();
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool oled_task_user(void) {
|
|
||||||
|
|
||||||
render_anim();
|
|
||||||
|
|
||||||
oled_set_cursor(0,0);
|
|
||||||
oled_write(selected_encoder_key.label_top, false);
|
|
||||||
|
|
||||||
oled_set_cursor(0,1);
|
|
||||||
oled_write(selected_encoder_key.label_mid, false);
|
|
||||||
|
|
||||||
oled_set_cursor(0,2);
|
|
||||||
oled_write(selected_encoder_key.label_bottom, false);
|
|
||||||
|
|
||||||
/* hide wpm display for now
|
|
||||||
oled_set_cursor(13,3);
|
|
||||||
oled_write_P(PSTR("WPM: "), false);
|
|
||||||
oled_write(get_u8_str(get_current_wpm(), ' '), false);
|
|
||||||
*/
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void suspend_power_down_user(void) {
|
|
||||||
oled_off();
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -1,29 +0,0 @@
|
||||||
Fearless Spiff's Custom Mercutio Keymap
|
|
||||||
- "Programmer"-centric and German layout based keymap
|
|
||||||
- Based on Bongocat and Jonavin keymap
|
|
||||||
|
|
||||||
Features
|
|
||||||
- Fancy Bongocat! Yay! (borrowed from bongocat obviously)
|
|
||||||
- Encoder selectable key codes and displayed on OLED (borrowed and multi-line-enhanced from Jonavin)
|
|
||||||
- Change encoder_keys in keymap.c to assign your desired key selection
|
|
||||||
- Additional encoder functionality
|
|
||||||
- While holding FN_1, page up and down
|
|
||||||
- While holding FN_2, volume up and down
|
|
||||||
- Mouse controls by holding Caps-Space
|
|
||||||
- Use my templates for your own layout overview at [Keyboard Layout Editor](http://www.keyboard-layout-editor.com) using my gist [here](https://gist.github.com/FearlessSpiff)
|
|
||||||
- Shout out to [KMonad](https://github.com/kmonad/kmonad) which enabled my laptop keyboard to behave like my Mercutio!
|
|
||||||
|
|
||||||
QWERT Layer
|
|
||||||
![image](https://user-images.githubusercontent.com/1927259/148683284-04932e15-a34d-451e-b657-335780033f36.png)
|
|
||||||
|
|
||||||
FN_1 Layer
|
|
||||||
![image](https://user-images.githubusercontent.com/1927259/157032746-8aa68e1c-27b9-4cf5-88ed-a071d8238f56.png)
|
|
||||||
|
|
||||||
FN_2 layer
|
|
||||||
![image](https://user-images.githubusercontent.com/1927259/148683306-364bc59c-b41b-4092-b93b-d7b4fc58567b.png)
|
|
||||||
|
|
||||||
FN_MOUSE layer
|
|
||||||
![image](https://user-images.githubusercontent.com/1927259/157032817-83922578-8932-42bf-a2d2-f785136b4d4e.png)
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +0,0 @@
|
||||||
WPM_ENABLE = yes
|
|
||||||
TAP_DANCE_ENABLE = yes
|
|
||||||
VIA_ENABLE = no
|
|
||||||
MOUSEKEY_ENABLE = yes
|
|
||||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
|
||||||
KEY_LOCK_ENABLE = no
|
|
||||||
CONSOLE_ENABLE = no
|
|
|
@ -1,19 +0,0 @@
|
||||||
/* Copyright 2022 Fearless Spiff
|
|
||||||
*
|
|
||||||
* 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 180
|
|
|
@ -1,293 +0,0 @@
|
||||||
/* Copyright 2021 Kyle McCreery
|
|
||||||
* Copyright 2021 Jonavin Eng
|
|
||||||
* Copyright 2022 Fearless Spiff
|
|
||||||
*
|
|
||||||
* 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_german.h"
|
|
||||||
|
|
||||||
// OLED setup for bongocat
|
|
||||||
#define IDLE_FRAMES 5
|
|
||||||
#define IDLE_SPEED 30
|
|
||||||
#define TAP_FRAMES 2
|
|
||||||
#define TAP_SPEED 40
|
|
||||||
#define ANIM_FRAME_DURATION 200
|
|
||||||
#define ANIM_SIZE 512
|
|
||||||
|
|
||||||
#define LABEL_LENGTH 8
|
|
||||||
|
|
||||||
#define KC_CAD LALT(LCTL(KC_DEL))
|
|
||||||
#define KC_TEAMS_CAM C(S(KC_O))
|
|
||||||
#define KC_TEAMS_MUTE C(S(KC_M))
|
|
||||||
|
|
||||||
enum layers {
|
|
||||||
QWERT,
|
|
||||||
FN_1,
|
|
||||||
FN_2
|
|
||||||
};
|
|
||||||
|
|
||||||
enum custom_user_keycodes {
|
|
||||||
KC_ENC = SAFE_RANGE
|
|
||||||
};
|
|
||||||
|
|
||||||
static long int oled_timeout = 1800000; // 30 minutes
|
|
||||||
bool gui_on = true;
|
|
||||||
char wpm_str[10];
|
|
||||||
uint32_t anim_timer = 0;
|
|
||||||
uint32_t anim_sleep = 0;
|
|
||||||
uint8_t current_idle_frame = 0;
|
|
||||||
uint8_t current_tap_frame = 0;
|
|
||||||
|
|
||||||
// Tap Dance declarations
|
|
||||||
enum {
|
|
||||||
TD_TAB_ESC,
|
|
||||||
};
|
|
||||||
|
|
||||||
// Tap Dance definitions
|
|
||||||
tap_dance_action_t tap_dance_actions[] = {
|
|
||||||
// Tap once for Tab, twice for Esc
|
|
||||||
[TD_TAB_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_TAB, KC_ESC),
|
|
||||||
};
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
char label_top[LABEL_LENGTH];
|
|
||||||
char label_mid[LABEL_LENGTH];
|
|
||||||
char label_bottom[LABEL_LENGTH];
|
|
||||||
uint16_t keycode;
|
|
||||||
} encoder_key;
|
|
||||||
|
|
||||||
static const encoder_key PROGMEM encoder_keys[] = {
|
|
||||||
// list of key codes that will be scrolled through by encoder and description
|
|
||||||
// Be aware that it only works when using one char less than defined. In this case 7 max. No idea why?
|
|
||||||
{"Teams", "Toggle", "Mic", KC_TEAMS_MUTE},
|
|
||||||
{"Teams", "Toggle", "Cam", KC_TEAMS_CAM},
|
|
||||||
{"Ctrl", "Alt", "Del", KC_CAD},
|
|
||||||
{"Caps", "Lock", "", KC_CAPS_LOCK},
|
|
||||||
{"Pause", "", "", KC_PAUSE},
|
|
||||||
{"PrtScr", "", "", KC_PSCR},
|
|
||||||
{"Insert", "", "", KC_INS},
|
|
||||||
{"Play", "", "", KC_MEDIA_PLAY_PAUSE}
|
|
||||||
};
|
|
||||||
|
|
||||||
#define NUMBER_OF_ENCODER_KEYS ARRAY_SIZE(encoder_keys)
|
|
||||||
|
|
||||||
static uint8_t selected_encoder_key_id = 0;
|
|
||||||
static encoder_key selected_encoder_key;
|
|
||||||
|
|
||||||
static void set_selected_encoder_key(uint8_t idx) {
|
|
||||||
// make a copy from PROGMEM
|
|
||||||
memcpy_P (&selected_encoder_key, &encoder_keys[idx], sizeof selected_encoder_key);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
switch (keycode) {
|
|
||||||
case KC_ENC:
|
|
||||||
if (record->event.pressed) {
|
|
||||||
tap_code16(selected_encoder_key.keycode);
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[QWERT] = LAYOUT_all(
|
|
||||||
KC_ENC,
|
|
||||||
TD(TD_TAB_ESC), KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
|
||||||
LT(1,KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_PLUS, KC_ENT,
|
|
||||||
KC_LSFT, KC_LABK, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_RSFT,
|
|
||||||
KC_LCTL, KC_LGUI, LT(2,KC_LALT), KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(2), KC_RCTL ),
|
|
||||||
|
|
||||||
[FN_1] = LAYOUT_all(
|
|
||||||
KC_MUTE,
|
|
||||||
QK_GESC, _______, KC_UP, _______, KC_LCBR, KC_RCBR, _______, _______, KC_UP, _______, KC_QUES, KC_DEL,
|
|
||||||
_______, KC_LEFT, KC_DOWN, KC_RIGHT, KC_LPRN, KC_RPRN, KC_QUES, KC_LEFT, KC_DOWN, KC_LABK, KC_RABK, _______,
|
|
||||||
_______, KC_BSLS, KC_SLSH, KC_PIPE, _______, KC_LBRC, KC_RBRC, KC_HOME, KC_END, KC_QUOT, KC_DQUO, KC_EQL,
|
|
||||||
_______, _______, _______, _______, _______, _______, KC_BSLS, KC_SLSH, KC_TILD ),
|
|
||||||
|
|
||||||
[FN_2] = LAYOUT_all(
|
|
||||||
_______,
|
|
||||||
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_EXLM, KC_AT, KC_HASH, KC_DLR, KC_AMPR, KC_PERC, KC_ASTR, KC_LPRN, KC_RPRN, _______, _______,
|
|
||||||
_______, _______, KC_MINS, KC_PLUS, KC_BSLS, KC_SLSH, KC_SCLN, KC_COLN, KC_QUES, KC_LBRC, KC_RBRC, KC_DOT,
|
|
||||||
KC_DQUO, KC_QUOT, KC_DQUO, _______, _______, _______, _______, _______, KC_PIPE )
|
|
||||||
};
|
|
||||||
|
|
||||||
#ifdef ENCODER_ENABLE
|
|
||||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
|
||||||
if (clockwise) {
|
|
||||||
if (IS_LAYER_ON(QWERT) && selected_encoder_key_id < NUMBER_OF_ENCODER_KEYS-1) {
|
|
||||||
selected_encoder_key_id ++;
|
|
||||||
set_selected_encoder_key(selected_encoder_key_id);
|
|
||||||
}
|
|
||||||
if (IS_LAYER_ON(FN_1)) {
|
|
||||||
tap_code16(KC_PGDN);
|
|
||||||
}
|
|
||||||
if (IS_LAYER_ON(FN_2)) {
|
|
||||||
tap_code(KC_VOLU);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (IS_LAYER_ON(QWERT) && selected_encoder_key_id > 0) {
|
|
||||||
selected_encoder_key_id --;
|
|
||||||
set_selected_encoder_key(selected_encoder_key_id);
|
|
||||||
}
|
|
||||||
if (IS_LAYER_ON(FN_1)) {
|
|
||||||
tap_code16(KC_PGUP);
|
|
||||||
}
|
|
||||||
if (IS_LAYER_ON(FN_2)) {
|
|
||||||
tap_code(KC_VOLD);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef OLED_ENABLE
|
|
||||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
|
||||||
set_selected_encoder_key(selected_encoder_key_id);
|
|
||||||
|
|
||||||
return OLED_ROTATION_180; // flips the display 180 degrees
|
|
||||||
}
|
|
||||||
|
|
||||||
static void render_anim(void) {
|
|
||||||
|
|
||||||
// Idle animation
|
|
||||||
static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
|
|
||||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,16,8,8,4,4,4,8,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,100,130,2,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
|
|
||||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,56,4,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
|
|
||||||
7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,64,64,64,64,32,32,32,32,16,8,4,2,2,4,24,96,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,194,1,1,2,2,4,4,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,96,0,129,130,130,132,8,16,32,64,128,0,0,0,0,128,128,128,128,64,64,64,64,32,
|
|
||||||
32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,25,6,0,0,0,0,0,0,0,24,24,24,27,3,0,64,160,34,36,20,18,18,18,11,8,8,8,8,5,5,9,9,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,0,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,
|
|
||||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,
|
|
||||||
7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,8,4,2,2,2,4,56,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,28,226,1,1,2,2,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,192,193,193,194,4,8,16,32,64,128,0,0,0,128,128,128,128,64,64,64,64,
|
|
||||||
32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,12,12,12,13,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,2,2,4,4,8,8,8,8,8,7,0,0,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// Prep animation
|
|
||||||
static const char PROGMEM prep[][ANIM_SIZE] = {
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,
|
|
||||||
64,64,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,195,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,1,1,1,0,0,0,0,0,0,0,0,0,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
// Typing animation
|
|
||||||
static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,248,248,248,248,0,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,129,128,128,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,1,2,4,8,16,32,67,135,7,1,0,184,188,190,159,
|
|
||||||
95,95,79,76,32,32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,24,6,5,152,153,132,67,124,65,65,64,64,32,33,34,18,17,17,17,9,8,8,8,8,4,4,8,8,16,16,16,16,16,17,15,1,61,124,252,252,252,252,252,60,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,2,2,1,1,1,
|
|
||||||
1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
},
|
|
||||||
|
|
||||||
{
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,0,0,0,0,0,128,64,64,32,32,32,32,16,16,16,16,8,4,2,1,1,2,12,48,64,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,225,0,0,1,1,2,2,1,0,0,0,0,128,128,0,0,0,0,0,0,0,0,0,128,0,48,48,0,0,1,225,26,6,9,49,53,1,138,124,0,0,128,128,128,128,64,64,64,64,32,
|
|
||||||
32,32,32,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,112,12,3,0,0,0,0,0,0,0,0,0,0,1,1,0,64,160,33,34,18,17,17,17,9,8,8,8,8,4,4,4,4,4,4,2,2,2,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,128,128,128,128,64,64,64,64,64,32,32,32,32,32,16,16,16,16,16,8,8,8,8,8,4,4,4,4,4,2,3,122,122,121,121,121,121,57,49,2,2,4,4,8,8,8,136,136,135,128,
|
|
||||||
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
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();
|
|
||||||
|
|
||||||
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();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
bool oled_task_user(void) {
|
|
||||||
|
|
||||||
render_anim();
|
|
||||||
|
|
||||||
oled_set_cursor(0,0);
|
|
||||||
oled_write(selected_encoder_key.label_top, false);
|
|
||||||
|
|
||||||
oled_set_cursor(0,1);
|
|
||||||
oled_write(selected_encoder_key.label_mid, false);
|
|
||||||
|
|
||||||
oled_set_cursor(0,2);
|
|
||||||
oled_write(selected_encoder_key.label_bottom, false);
|
|
||||||
|
|
||||||
/* hide wpm display for now
|
|
||||||
oled_set_cursor(13,3);
|
|
||||||
oled_write_P(PSTR("WPM: "), false);
|
|
||||||
oled_write(get_u8_str(get_current_wpm(), ' '), false);
|
|
||||||
*/
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
void suspend_power_down_user(void) {
|
|
||||||
oled_off();
|
|
||||||
}
|
|
||||||
#endif
|
|
|
@ -1,22 +0,0 @@
|
||||||
Fearless Spiff's Custom Mercutio Keymap
|
|
||||||
- "Programmer"-centric and German layout based keymap
|
|
||||||
- Based on Bongocat and Jonavin keymap
|
|
||||||
|
|
||||||
Features
|
|
||||||
- Fancy Bongocat! Yay! (borrowed from bongocat obviously)
|
|
||||||
- Encoder selectable key codes and displayed on OLED (borrowed and multi-line-enhanced from Jonavin)
|
|
||||||
- Change encoder_keys in keymap.c to assign your desired key selection
|
|
||||||
- Additional encoder functionality
|
|
||||||
- While holding FN_1, page up and down
|
|
||||||
- While holding FN_2, volume up and down
|
|
||||||
- Use my templates for your own layout overview at [Keyboard Layout Editor](http://www.keyboard-layout-editor.com) using my gist [here](https://gist.github.com/FearlessSpiff)
|
|
||||||
|
|
||||||
QWERT Layer
|
|
||||||
![image](https://user-images.githubusercontent.com/1927259/148683284-04932e15-a34d-451e-b657-335780033f36.png)
|
|
||||||
|
|
||||||
FN_1 Layer
|
|
||||||
![image](https://user-images.githubusercontent.com/1927259/148683299-f2c80403-3f29-4ba8-9fc4-957729f30b05.png)
|
|
||||||
|
|
||||||
FN_2 layer
|
|
||||||
![image](https://user-images.githubusercontent.com/1927259/148683306-364bc59c-b41b-4092-b93b-d7b4fc58567b.png)
|
|
||||||
|
|
|
@ -1,3 +0,0 @@
|
||||||
WPM_ENABLE = yes
|
|
||||||
TAP_DANCE_ENABLE = yes
|
|
||||||
MOUSEKEY_ENABLE = no
|
|
|
@ -1,80 +0,0 @@
|
||||||
#include QMK_KEYBOARD_H
|
|
||||||
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
|
|
||||||
/* Layer 0, default layer
|
|
||||||
____________________________________________________________________________________________________________________________________________________________________________
|
|
||||||
| | | | | | | | | | | | | | | | | | | |
|
|
||||||
| ESC* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 | P SCN | HOME | DEL | INSERT | P Up | P Down |
|
|
||||||
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
|
|
||||||
| | | | | | | | | | | | | | | BACK | NUM | | | Play |
|
|
||||||
| ~` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | _ - | = + | \ | SPACE | LOCK | / | * | Pause |
|
|
||||||
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
|
|
||||||
| | | | | | | | | | | | [ | ] | | | | | |
|
|
||||||
| TAB | Q | W | E | R | T | Y | U | I | O | P | { | } | | \ | 7 | 8 | 9 | Next |
|
|
||||||
|____________|________|________|________|________|________|________|________|________|________|________|________|________|_____________|________|________|________|________|
|
|
||||||
| | | | | | | | | | | ; | ' | | | | | |
|
|
||||||
| CAPS LOCK | A | S | D | F | G | H | J | K | L | : | " | ENTER | 4 | 5 | 6 | - |
|
|
||||||
|______________|________|________|________|________|________|________|________|________|________|________|________|____________________|________|________|________|________|
|
|
||||||
| | | | | | | | | , | . | / | | | | | | |
|
|
||||||
| SHIFT | Z | X | C | V | B | N | M | < | > | ? | SHIFT | UP | 1 | 2 | 3 | + |
|
|
||||||
|__________________|________|________|________|________|________|________|________|________|________|________|________________|________|________|________|________|________|
|
|
||||||
| | | | | | | MO | | | | | | |
|
|
||||||
| CTRL | LGUI | L ALT | SPACE | R ALT | RGUI | _FN | LEFT | DOWN | RIGHT | 0 | . | ENTER |
|
|
||||||
|__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________|
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
LAYOUT(
|
|
||||||
KC_ESC, 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_PSCR, KC_HOME, KC_DEL, KC_INS, KC_PGUP, KC_PGDN,
|
|
||||||
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_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_MPLY,
|
|
||||||
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, KC_P7, KC_P8, KC_P9, KC_MNXT,
|
|
||||||
KC_CAPS, 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_P4, KC_P5, KC_P6, KC_PMNS,
|
|
||||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PPLS,
|
|
||||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT, KC_PENT),
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* Layer 1, function layer
|
|
||||||
____________________________________________________________________________________________________________________________________________________________________________
|
|
||||||
| | | | | | | | | | | | | | | VOL | VOL | | | |
|
|
||||||
| QK_BOOT | | | | | | | | | | | | | MUTE | DOWN | UP | | | |
|
|
||||||
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
|
|
||||||
| | | | | | | | | | | | | | | | | | | |
|
|
||||||
| | | | | | | | | | | | | | | | | | | |
|
|
||||||
|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|________|
|
|
||||||
| | RGB | | RGB | HUE | HUE | SATUR. | SATUR. | VALUE | VALUE | | | | | | | | |
|
|
||||||
| | TOGGLE | | MODE |INCREASE| DCRSE |INCREASE| DCRSE |INCREASE| DCRSE | | | | | | | | |
|
|
||||||
|____________|________|________|________|________|________|________|________|________|________|________|________|________|_____________|________|________|________|________|
|
|
||||||
| BACKLIGHT | | | | | | | | | | | | | | | | |
|
|
||||||
| TOGGLE | | | | | | | | | | | | | | | | |
|
|
||||||
|______________|________|________|________|________|________|________|________|________|________|________|________|____________________|________|________|________|________|
|
|
||||||
| | | | |BACKLHT |BACKLHT |BACKLHT | | | | | | | | | | | |
|
|
||||||
| | | | | DCRSE |TOGGLE |INCREASE| | | | | | | | | | | |
|
|
||||||
|_________|________|________|________|________|________|________|________|________|________|________|________|________________|________|________|________|________|________|
|
|
||||||
| | | | | | | | | | | | | |
|
|
||||||
| | | | | | | | | | | | | |
|
|
||||||
|__________|__________|__________|________________________________________________________|________|________|________|________|________|________|________|________|________|
|
|
||||||
BL_TOGG, BL_DOWN,BL_UP changes the in-switch LEDs
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
LAYOUT(
|
|
||||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, RGB_TOG, _______, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______ , _______, _______, BL_DOWN, BL_TOGG, BL_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
|
||||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
|
|
||||||
};
|
|
||||||
|
|
||||||
void matrix_init_user(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void matrix_scan_user(void) {
|
|
||||||
}
|
|
||||||
|
|
||||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
|
||||||
return true;
|
|
||||||
}
|
|
|
@ -1,63 +0,0 @@
|
||||||
/* Copyright 2020 dezlidezlidezli
|
|
||||||
*
|
|
||||||
* 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
|
|
||||||
|
|
||||||
enum layers {
|
|
||||||
_MAIN,
|
|
||||||
};
|
|
||||||
|
|
||||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
|
||||||
if (index == 0) { /* First encoder*/
|
|
||||||
if (clockwise) {
|
|
||||||
tap_code(KC_VOLU);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_VOLD);
|
|
||||||
}
|
|
||||||
} else if (index == 1) { /* Second encoder*/
|
|
||||||
if (clockwise) {
|
|
||||||
tap_code(KC_3);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_4);
|
|
||||||
}
|
|
||||||
} else if (index == 2) { /* Third encoder*/
|
|
||||||
if (clockwise) {
|
|
||||||
tap_code(KC_5);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_6);
|
|
||||||
}
|
|
||||||
} else if (index == 3) { /* Fourth encoder*/
|
|
||||||
if (clockwise) {
|
|
||||||
tap_code(KC_7);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_8);
|
|
||||||
}
|
|
||||||
} else if (index == 4) { /* Fifth encoder*/
|
|
||||||
if (clockwise) {
|
|
||||||
tap_code(KC_VOLU);
|
|
||||||
} else {
|
|
||||||
tap_code(KC_VOLD);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
//
|
|
||||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
|
||||||
[_MAIN] = LAYOUT_ortho_1x5(
|
|
||||||
KC_CAPS, KC_MNXT, KC_MPLY, KC_MPRV, KC_CAPS
|
|
||||||
)
|
|
||||||
};
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue