mirror of
https://github.com/firewalkwithm3/qmk_firmware.git
synced 2024-11-22 03:21:48 +08:00
Merge remote-tracking branch 'upstream/master' into develop
This commit is contained in:
commit
2c191e21c2
|
@ -1,59 +0,0 @@
|
|||
/* Copyright 2020 Vinam Arora <vinam@posteo.de>
|
||||
*
|
||||
* 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 zero_sixty_layers {
|
||||
_DEFAULT,
|
||||
_L1,
|
||||
_L2,
|
||||
_L3,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_DEFAULT] = LAYOUT_1x2uC( /* qwerty */
|
||||
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_ENT ,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_RCTL ,
|
||||
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_LGUI, MO(_L3), MO(_L2), KC_LALT, MO(_L1), KC_SPC, MO(_L1), KC_RALT, MO(_L2), MO(_L3), KC_RGUI
|
||||
),
|
||||
|
||||
[_L1] = LAYOUT_1x2uC(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
|
||||
_______, KC_LBRC, KC_LT, KC_GT, KC_RBRC, KC_TILD, KC_PIPE, KC_GRV, KC_QUOT, KC_DQUO, KC_PGUP, _______ ,
|
||||
_______, KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_DEL, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_PGDN, _______ ,
|
||||
_______, KC_APP, _______, _______, _______, _______, KC_EQL, KC_UNDS, KC_MINS, KC_PLUS, KC_BSLS, _______ ,
|
||||
_______, _______, _______, _______, _______, KC_CAPS, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_L2] = LAYOUT_1x2uC(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______ ,
|
||||
_______, _______, _______, _______, _______, KC_VOLU, _______, KC_7, KC_8, KC_9, KC_F11, _______ ,
|
||||
_______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_4, KC_5, KC_6, KC_F12, _______ ,
|
||||
_______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_MUTE, KC_1, KC_2, KC_3, KC_PSCR, _______ ,
|
||||
_______, _______, KC_CAPS, _______, _______, _______, KC_0, _______, KC_CAPS, _______, _______
|
||||
),
|
||||
|
||||
[_L3] = LAYOUT_1x2uC(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______ ,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_WH_U, KC_MS_U, KC_WH_D, _______, _______ ,
|
||||
_______, _______, KC_ACL2, KC_ACL1, KC_ACL0, _______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, _______ ,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_BTN1, KC_BTN3, KC_BTN2, _______, _______ ,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
};
|
|
@ -1 +0,0 @@
|
|||
# Keymap used by vinam. Keeps changing ofcourse :3
|
|
@ -1 +0,0 @@
|
|||
MOUSEKEY_ENABLE = yes
|
|
@ -1,186 +0,0 @@
|
|||
/*
|
||||
Copyright 2021 0xCB - Conor Burns
|
||||
|
||||
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
|
||||
enum layer_names {
|
||||
_HOME,
|
||||
_MISC,
|
||||
_RGB,
|
||||
_BLED
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_HOME] = LAYOUT(
|
||||
KC_MPRV, KC_MNXT, KC_MPLY,
|
||||
KC_PGUP, KC_PGDN, TO(3),
|
||||
KC_HOME, KC_END, TO(1)
|
||||
),
|
||||
[_MISC] = LAYOUT(
|
||||
_______, _______, _______,
|
||||
_______, _______, TO(0),
|
||||
_______, _______, TO(2)
|
||||
),
|
||||
[_RGB] = LAYOUT(
|
||||
RGB_HUI, RGB_HUD, RGB_MOD,
|
||||
RGB_SAI, RGB_SAD, TO(1),
|
||||
RGB_SPI, RGB_SPD, TO(3)
|
||||
),
|
||||
[_BLED] = LAYOUT(
|
||||
BL_STEP, BL_BRTG, BL_TOGG,
|
||||
BL_ON, BL_OFF, TO(2),
|
||||
BL_UP, BL_DOWN, TO(0)
|
||||
)
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (IS_LAYER_ON(_RGB)) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (clockwise) {
|
||||
rgblight_increase_val();
|
||||
} else {
|
||||
rgblight_decrease_val();
|
||||
}
|
||||
#endif
|
||||
} else if (IS_LAYER_ON(_BLED)) {
|
||||
if (clockwise) {
|
||||
backlight_increase();
|
||||
} else {
|
||||
backlight_decrease();
|
||||
}
|
||||
} else {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* oled stuff :) */
|
||||
#ifdef OLED_ENABLE
|
||||
uint16_t startup_timer;
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
startup_timer = timer_read();
|
||||
return rotation;
|
||||
}
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM raw_logo[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 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,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, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0,
|
||||
0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0,
|
||||
0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
oled_write_raw_P(raw_logo, sizeof(raw_logo));
|
||||
}
|
||||
static void render_logo_font(void) {
|
||||
static const char PROGMEM qmk_logo[] = {
|
||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xCB, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xCB, 0x9C, 0x9D, 0xCB, 0xCB,
|
||||
0xE0, 0xE1, 0xE2, 0xE3, 0xE4, 0xCB, 0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xBB, 0xBC, 0xBD, 0xBE, 0xCB,
|
||||
0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xCB, 0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xDB, 0xDC, 0xDD, 0xDE, 0xCB,
|
||||
0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0xCB, 0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xFA, 0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0x00
|
||||
};
|
||||
|
||||
oled_write_P(qmk_logo, false);
|
||||
}
|
||||
/* Shows the name of the current layer and locks for the host (CAPS etc.) */
|
||||
static void render_info(void) {
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _HOME:
|
||||
oled_write_ln_P(PSTR("HOME"), false);
|
||||
break;
|
||||
case _MISC:
|
||||
oled_write_ln_P(PSTR("MISC"), false);
|
||||
break;
|
||||
case _RGB:
|
||||
oled_write_ln_P(PSTR("RGB"), false);
|
||||
break;
|
||||
case _BLED:
|
||||
oled_write_ln_P(PSTR("Backlight"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_ln_P(PSTR("Undefined"), false);
|
||||
}
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
|
||||
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||
}
|
||||
static void render_rgbled_status(bool) {
|
||||
char string[4];
|
||||
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
||||
uint16_t m = rgblight_get_mode();
|
||||
string[3] = '\0';
|
||||
string[2] = '0' + m % 10;
|
||||
string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' ';
|
||||
string[0] = m / 10 ? '0' + m / 10 : ' ';
|
||||
oled_write_P(PSTR("Conf:"), false);
|
||||
oled_write(string, false);
|
||||
uint16_t h = rgblight_get_hue()/RGBLIGHT_HUE_STEP;
|
||||
string[3] = '\0';
|
||||
string[2] = '0' + h % 10;
|
||||
string[1] = ( h /= 10) % 10 ? '0' + (h) % 10 : (h / 10) % 10 ? '0' : ' ';
|
||||
string[0] = h / 10 ? '0' + h / 10 : ' ';
|
||||
oled_write_P(PSTR(","), false);
|
||||
oled_write(string, false);
|
||||
uint16_t s = rgblight_get_sat()/RGBLIGHT_SAT_STEP;
|
||||
string[3] = '\0';
|
||||
string[2] = '0' + s % 10;
|
||||
string[1] = ( s /= 10) % 10 ? '0' + (s) % 10 : (s / 10) % 10 ? '0' : ' ';
|
||||
string[0] = s / 10 ? '0' + s / 10 : ' ';
|
||||
oled_write_P(PSTR(","), false);
|
||||
oled_write(string, false);
|
||||
uint16_t v = rgblight_get_val()/RGBLIGHT_VAL_STEP;
|
||||
string[3] = '\0';
|
||||
string[2] = '0' + v % 10;
|
||||
string[1] = ( v /= 10) % 10 ? '0' + (v) % 10 : (v / 10) % 10 ? '0' : ' ';
|
||||
string[0] = v / 10 ? '0' + v / 10 : ' ';
|
||||
oled_write_P(PSTR(","), false);
|
||||
oled_write(string, false);
|
||||
oled_write_ln_P(PSTR("\n MOD HUE SAT VAR"), false);
|
||||
} else {
|
||||
oled_write_ln_P(PSTR("\n"), false);
|
||||
}
|
||||
}
|
||||
bool oled_task_user(void) {
|
||||
static bool finished_timer = false;
|
||||
if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
|
||||
render_logo();
|
||||
} else {
|
||||
if (!finished_timer) {
|
||||
oled_clear();
|
||||
finished_timer = true;
|
||||
}
|
||||
render_info();
|
||||
render_rgbled_status(true);
|
||||
render_logo_font();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
|
@ -1,186 +0,0 @@
|
|||
/*
|
||||
Copyright 2021 0xCB - Conor Burns
|
||||
|
||||
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
|
||||
enum layer_names {
|
||||
_HOME,
|
||||
_MISC,
|
||||
_RGB,
|
||||
_BLED
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_HOME] = LAYOUT(
|
||||
KC_MPRV, KC_MNXT, KC_MPLY,
|
||||
KC_PGUP, KC_PGDN, TO(3),
|
||||
KC_HOME, KC_END, TO(1)
|
||||
),
|
||||
[_MISC] = LAYOUT(
|
||||
_______, _______, _______,
|
||||
_______, _______, TO(0),
|
||||
_______, _______, TO(2)
|
||||
),
|
||||
[_RGB] = LAYOUT(
|
||||
RGB_HUI, RGB_HUD, RGB_MOD,
|
||||
RGB_SAI, RGB_SAD, TO(1),
|
||||
RGB_SPI, RGB_SPD, TO(3)
|
||||
),
|
||||
[_BLED] = LAYOUT(
|
||||
BL_STEP, BL_BRTG, BL_TOGG,
|
||||
BL_ON, BL_OFF, TO(2),
|
||||
BL_UP, BL_DOWN, TO(0)
|
||||
)
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
/* rotary encoder (SW3) - add more else if blocks for more granular layer control */
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (IS_LAYER_ON(_RGB)) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (clockwise) {
|
||||
rgblight_increase_val();
|
||||
} else {
|
||||
rgblight_decrease_val();
|
||||
}
|
||||
#endif
|
||||
} else if (IS_LAYER_ON(_BLED)) {
|
||||
if (clockwise) {
|
||||
backlight_increase();
|
||||
} else {
|
||||
backlight_decrease();
|
||||
}
|
||||
} else {
|
||||
if (clockwise) {
|
||||
tap_code16(C(A(KC_UP)));
|
||||
} else {
|
||||
tap_code16(C(A(KC_DOWN)));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* oled stuff :) */
|
||||
#ifdef OLED_ENABLE
|
||||
uint16_t startup_timer;
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
startup_timer = timer_read();
|
||||
return rotation;
|
||||
}
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM raw_logo[] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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,128, 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,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, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 1, 2, 4, 2, 1, 1, 1, 1, 1, 1,255, 0, 0, 0, 0, 0, 0, 0, 0, 0,255, 1, 1, 1, 1, 1, 1, 2, 4, 2, 1, 0, 0, 0, 0, 0, 0,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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0, 0, 0, 0, 0, 0,128,192,192,224,224,112,120, 56, 63, 28, 14, 14, 14,254, 14, 14, 30, 28, 63, 56,120,112,224,224,192,128, 0, 0, 0, 0, 0, 0, 0, 2, 5,248, 5, 2, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64,160, 19,162, 66, 66, 66, 66, 66, 66, 66,255,255,255, 0, 0, 0,252,254,254,192,192,192,192,255, 0, 0, 0, 62, 62, 60, 60, 0, 0, 1,255,255,255, 66, 66, 66, 66, 66, 66, 66,162, 19,160, 64, 0,
|
||||
0, 0, 0,128, 64, 64, 64,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,192, 64, 64,192,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,192, 64,192, 0, 0, 0, 0, 0,128,192, 64, 64,192,128, 0, 0,128,192, 64, 64,192,128, 0, 0, 64, 64, 64, 64, 64,192, 0, 0, 0, 0, 0,249, 8, 8, 8, 8, 8, 8, 8, 8,127,255,255,192,128,128, 15, 31, 31, 1, 1, 1, 1,255, 0, 0, 0, 30, 30, 14, 14,128,192,192,255,255,127, 8, 8, 8, 8, 8, 8, 8, 8,249, 0, 0, 0,
|
||||
0, 0, 31, 49, 64, 78, 64, 49, 31, 0, 0, 97, 22, 8, 22, 97, 0, 0, 31, 49, 96, 64, 64, 96, 32, 0, 0,127, 68, 68,100, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 64,127, 64, 64, 0, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 32,100, 68, 68,110, 59, 0, 0, 0, 0, 0,126, 3, 1, 0, 0, 0, 8, 20, 35, 20, 8, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 7, 15,254, 30, 28, 28, 28,255, 28, 28, 28, 30,254, 15, 7, 3, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 4, 10, 17, 10, 4, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 40, 68, 40, 16, 16, 16, 16, 16, 16, 31, 0, 0, 16, 40, 71, 40, 16, 0, 0, 31, 16, 16, 16, 16, 16, 16, 40, 68, 40, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
};
|
||||
oled_write_raw_P(raw_logo, sizeof(raw_logo));
|
||||
}
|
||||
static void render_logo_font(void) {
|
||||
static const char PROGMEM qmk_logo[] = {
|
||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xC0, 0xC1, 0xC2, 0xC3, 0xC4,
|
||||
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xE0, 0xE1, 0xE2, 0xE3, 0xE4,
|
||||
0x88, 0x89, 0x8A, 0x8B, 0x8A, 0x8B, 0x8C, 0x8D, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0,
|
||||
0xA8, 0xA9, 0xAA, 0xAB, 0xAA, 0xAB, 0xAC, 0xAD, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xCB, 0xEC, 0xED, 0xEE, 0xEF, 0xF0, 0x00
|
||||
};
|
||||
|
||||
oled_write_P(qmk_logo, false);
|
||||
}
|
||||
/* Shows the name of the current layer and locks for the host (CAPS etc.) */
|
||||
static void render_info(void) {
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _HOME:
|
||||
oled_write_ln_P(PSTR("HOME"), false);
|
||||
break;
|
||||
case _MISC:
|
||||
oled_write_ln_P(PSTR("MISC"), false);
|
||||
break;
|
||||
case _RGB:
|
||||
oled_write_ln_P(PSTR("RGB"), false);
|
||||
break;
|
||||
case _BLED:
|
||||
oled_write_ln_P(PSTR("Backlight"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_ln_P(PSTR("Undefined"), false);
|
||||
}
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
oled_write_P(led_state.num_lock ? PSTR("NUM ") : PSTR(" "), false);
|
||||
oled_write_P(led_state.caps_lock ? PSTR("CAP ") : PSTR(" "), false);
|
||||
oled_write_ln_P(led_state.scroll_lock ? PSTR("SCR ") : PSTR(" "), false);
|
||||
}
|
||||
static void render_rgbled_status(bool) {
|
||||
char string[4];
|
||||
if (RGBLIGHT_MODES > 1 && rgblight_is_enabled() && get_highest_layer(layer_state) == _RGB) {
|
||||
uint16_t m = rgblight_get_mode();
|
||||
string[3] = '\0';
|
||||
string[2] = '0' + m % 10;
|
||||
string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' ';
|
||||
string[0] = m / 10 ? '0' + m / 10 : ' ';
|
||||
oled_write_P(PSTR("Conf:"), false);
|
||||
oled_write(string, false);
|
||||
uint16_t h = rgblight_get_hue()/RGBLIGHT_HUE_STEP;
|
||||
string[3] = '\0';
|
||||
string[2] = '0' + h % 10;
|
||||
string[1] = ( h /= 10) % 10 ? '0' + (h) % 10 : (h / 10) % 10 ? '0' : ' ';
|
||||
string[0] = h / 10 ? '0' + h / 10 : ' ';
|
||||
oled_write_P(PSTR(","), false);
|
||||
oled_write(string, false);
|
||||
uint16_t s = rgblight_get_sat()/RGBLIGHT_SAT_STEP;
|
||||
string[3] = '\0';
|
||||
string[2] = '0' + s % 10;
|
||||
string[1] = ( s /= 10) % 10 ? '0' + (s) % 10 : (s / 10) % 10 ? '0' : ' ';
|
||||
string[0] = s / 10 ? '0' + s / 10 : ' ';
|
||||
oled_write_P(PSTR(","), false);
|
||||
oled_write(string, false);
|
||||
uint16_t v = rgblight_get_val()/RGBLIGHT_VAL_STEP;
|
||||
string[3] = '\0';
|
||||
string[2] = '0' + v % 10;
|
||||
string[1] = ( v /= 10) % 10 ? '0' + (v) % 10 : (v / 10) % 10 ? '0' : ' ';
|
||||
string[0] = v / 10 ? '0' + v / 10 : ' ';
|
||||
oled_write_P(PSTR(","), false);
|
||||
oled_write(string, false);
|
||||
oled_write_ln_P(PSTR("\n MOD HUE SAT VAR"), false);
|
||||
} else {
|
||||
oled_write_ln_P(PSTR("\n"), false);
|
||||
}
|
||||
}
|
||||
bool oled_task_user(void) {
|
||||
static bool finished_timer = false;
|
||||
if (!finished_timer && (timer_elapsed(startup_timer) < 1000)) {
|
||||
render_logo();
|
||||
} else {
|
||||
if (!finished_timer) {
|
||||
oled_clear();
|
||||
finished_timer = true;
|
||||
}
|
||||
render_info();
|
||||
render_rgbled_status(true);
|
||||
render_logo_font();
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
|
@ -1 +0,0 @@
|
|||
VIA_ENABLE = yes
|
|
@ -1,17 +0,0 @@
|
|||
// Copyright 2023 Dreipunkteinsvier (@dreipunkteinsvier)
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#pragma once
|
||||
|
||||
#define TAPPING_TERM 180
|
||||
|
||||
#undef LOCKING_SUPPORT_ENABLE
|
||||
#undef LOCKING_RESYNC_ENABLE
|
||||
|
||||
|
||||
#ifdef COMBO_ENABLE
|
||||
#define COMBO_TERM 20
|
||||
#define COMBO_ONLY_FROM_LAYER 0
|
||||
#endif
|
||||
|
||||
#define BOTH_SHIFTS_TURNS_ON_CAPS_WORD
|
|
@ -1,300 +0,0 @@
|
|||
// Copyright 2023 Dreipunkteinsvier (@dreipunkteinsvier)
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
// │ D E F I N I T I O N S │
|
||||
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
|
||||
|
||||
enum splaytoraid40_layers {
|
||||
_QWERTY,
|
||||
_COLEMAK,
|
||||
_NAVIGATION,
|
||||
_MEDIA,
|
||||
_NUMBERS,
|
||||
_FUNCTION,
|
||||
};
|
||||
|
||||
// ┌───────────────────────────────────────────────────────────┐
|
||||
// │ d e f i n e k e y c o d e s │
|
||||
// └───────────────────────────────────────────────────────────┘
|
||||
|
||||
enum custom_keycodes {
|
||||
COLEMAK = SAFE_RANGE,
|
||||
QWERTY
|
||||
};
|
||||
|
||||
// ┌───────────────────────────────────────────────────────────┐
|
||||
// │ d e f i n e m a c r o n a m e s │
|
||||
// └───────────────────────────────────────────────────────────┘
|
||||
|
||||
// LEFT HAND HOME ROW MODS ├───────────────────────────────────┐
|
||||
#define HM_A LGUI_T(KC_A)
|
||||
#define HM_S LALT_T(KC_S)
|
||||
#define HM_D LCTL_T(KC_D)
|
||||
#define HM_F LSFT_T(KC_F)
|
||||
#define HM_G RALT_T(KC_G)
|
||||
|
||||
// RIGHT HAND HOME ROW MODS ├──────────────────────────────────┐
|
||||
#define HM_H RALT_T(KC_H)
|
||||
#define HM_J RSFT_T(KC_J)
|
||||
#define HM_K LCTL_T(KC_K)
|
||||
#define HM_L LALT_T(KC_L)
|
||||
#define HM_SCLN LGUI_T(KC_SCLN)
|
||||
|
||||
// CTRL + ARROWS ├─────────────────────────────────────────────┐
|
||||
#define CT_LEFT LCTL(KC_LEFT)
|
||||
#define CT_DOWN LCTL(KC_DOWN)
|
||||
#define CT_UP LCTL(KC_UP)
|
||||
#define CT_RGHT LCTL(KC_RGHT)
|
||||
|
||||
// THUMB KEY LAYER TAPS ├──────────────────────────────────────┐
|
||||
#define TB_TAB LT(_MEDIA, KC_TAB)
|
||||
#define TB_ENT LT(_NAVIGATION, KC_ENT)
|
||||
#define TB_SPC LT(_NUMBERS, KC_SPC)
|
||||
#define TB_BSPC LT(_FUNCTION, KC_BSPC)
|
||||
|
||||
// ┌───────────────────────────────────────────────────────────┐
|
||||
// │ d e f i n e c o m b o s │
|
||||
// └───────────────────────────────────────────────────────────┘
|
||||
// vertical combos for umlauts
|
||||
const uint16_t PROGMEM ae_combo[] = {KC_Q, HM_A, COMBO_END};
|
||||
const uint16_t PROGMEM ss_combo[] = {KC_W, HM_S, COMBO_END};
|
||||
const uint16_t PROGMEM ue_combo[] = {KC_U, HM_J, COMBO_END};
|
||||
const uint16_t PROGMEM oe_combo[] = {KC_O, HM_L, COMBO_END};
|
||||
// horizontal combos for mods
|
||||
const uint16_t PROGMEM del_combo[] = {HM_H, HM_J, COMBO_END};
|
||||
const uint16_t PROGMEM bsp_combo[] = {HM_J, HM_K, COMBO_END};
|
||||
const uint16_t PROGMEM ent_combo[] = {HM_K, HM_L, COMBO_END};
|
||||
const uint16_t PROGMEM tab_combo[] = {HM_F, HM_D, COMBO_END};
|
||||
const uint16_t PROGMEM esc_combo[] = {HM_D, HM_S, COMBO_END};
|
||||
|
||||
combo_t key_combos[] = {
|
||||
COMBO(ae_combo, RALT(KC_Q)),
|
||||
COMBO(ss_combo, RALT(KC_S)),
|
||||
COMBO(ue_combo, RALT(KC_Y)),
|
||||
COMBO(oe_combo, RALT(KC_P)),
|
||||
COMBO(del_combo, KC_DEL),
|
||||
COMBO(bsp_combo, KC_BSPC),
|
||||
COMBO(ent_combo, KC_ENT),
|
||||
COMBO(tab_combo, KC_TAB),
|
||||
COMBO(esc_combo, KC_ESC)
|
||||
};
|
||||
|
||||
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
// │ K E Y M A P S │
|
||||
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ q w e r t y │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ Q │ W │ E │ R │ T │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ Y │ U │ I │ O │ P │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ A │ S │ D │ F │ G ├─╯ ╰─┤ H │ J │ K │ L │ ; │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ Z │ X │ C │ V │ B ││ ││ ││ N │ M │ , │ . │ / │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ ESC │ TAB │ ENTER │ │ SPACE │ BSPACE │ DEL │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_QWERTY] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
HM_A, HM_S, HM_D, HM_F, HM_G, HM_H, HM_J, HM_K, HM_L, HM_SCLN,
|
||||
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
|
||||
KC_ESC, TB_TAB, TB_ENT, KC_MPLY, TB_SPC, TB_BSPC, KC_DEL
|
||||
),
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ c o l e m a k │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ Q │ W │ F │ P │ G │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ J │ L │ U │ Y │ ; │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ A │ R │ S │ T │ D ├─╯ ╰─┤ H │ N │ E │ I │ O │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ Z │ X │ C │ V │ B ││ ││ ││ K │ M │ , │ . │ / │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ ESC │ TAB │ ENTER │ │ SPACE │ BSPACE │ DEL │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_COLEMAK] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
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_ESC, TB_TAB, TB_ENT, _______, TB_SPC, TB_BSPC, KC_DEL
|
||||
),
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ n a v i g a t i o n │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ │ │ │ │ { │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ } │ CTRL ← │ CTRL ↓ │ CTRL ↑ │ CTRL → │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ │ │ │ │ ( ├─╯ ╰─┤ ) │ ← │ ↓ │ ↑ │ → │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ │ │ │ │ [ ││ ││ ││ ] │ HOME │ PG↓ │ PG↑ │ END │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ │ │ │ │ │ │ │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_NAVIGATION] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
_______, _______, _______, _______, KC_LCBR, KC_RCBR, CT_LEFT, CT_DOWN, CT_UP, CT_RGHT,
|
||||
KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, KC_LPRN, KC_RPRN, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT,
|
||||
_______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_HOME, KC_PGDN, KC_PGUP, KC_END,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ m e d i a & s y m b o l │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ _ │ & │ * │ ( │ ) │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ + │ $ │ % │ ^ │ " ├─╯ ╰─┤ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ ~ │ ! │ @ │ # │ | ││ ││ ││ │ │ │ │ │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ │ │ │ │ │ │ │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_MEDIA] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
KC_UNDS, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, RGB_TOG, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
|
||||
KC_PLUS, KC_DLR, KC_PERC, KC_CIRC, KC_DQUO, RGB_M_P, RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, QWERTY, COLEMAK, _______, _______, QK_BOOTLOADER,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ n u m b e r s │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ - │ 7 │ 8 │ 9 │ 0 │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ = │ 4 │ 5 │ 6 │ ' ├─╯ ╰─┤ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ ` │ 1 │ 2 │ 3 │ \ ││ ││ ││ │ │ │ │ │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ │ │ │ │ │ │ │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_NUMBERS] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
KC_MINS, KC_7, KC_8, KC_9, KC_0, _______, _______, _______, _______, _______,
|
||||
KC_EQL, KC_4, KC_5, KC_6, KC_QUOT, KC_RALT, KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_BSLS, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ f u n t i o n │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ F12 │ F7 │ F8 │ F9 │ PRT SCR │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ F11 │ F4 │ F5 │ F6 │ ├─╯ ╰─┤ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ F10 │ F1 │ F2 │ F3 │ INS ││ ││ ││ │ │ │ │ │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ │ │ │ │ │ │ │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
|
||||
[_FUNCTION] = LAYOUT_36(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, _______, _______, _______, _______, _______,
|
||||
KC_F11, KC_F4, KC_F5, KC_F6, _______, KC_RALT, KC_RSFT, KC_LCTL, KC_LALT, KC_LGUI,
|
||||
KC_F10, KC_F1, KC_F2, KC_F3, KC_INS, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
/*
|
||||
╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸
|
||||
|
||||
┌───────────────────────────────────────────────────────────┐
|
||||
│ t e m p l a t e │
|
||||
└───────────────────────────────────────────────────────────┘
|
||||
┌─────────┬─────────┬─────────┬─────────┬─────────┐ ┌─────────┬─────────┬─────────┬─────────┬─────────┐
|
||||
│ │ │ │ │ │ ╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮╭╮ │ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤ │╰╯╰╯╰╯╰╯╰╯╰╯╰╯╰╯│ ├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ │ │ │ │ ├─╯ ╰─┤ │ │ │ │ │
|
||||
├─────────┼─────────┼─────────┼─────────┼─────────┤╭────────╮╭────────╮├─────────┼─────────┼─────────┼─────────┼─────────┤
|
||||
│ │ │ │ │ ││ ││ ││ │ │ │ │ │
|
||||
└─────────┴─────────┼─────────┼─────────┼─────────┼╰────────╯╰────────╯┼─────────┼─────────┼─────────┼─────────┴─────────┘
|
||||
│ │ │ │ │ │ │ │
|
||||
└─────────┴─────────┴─────────┘ └─────────┴─────────┴─────────┘ */
|
||||
/*
|
||||
[_TEMPLATE] = LAYOUT_saegewerk(
|
||||
//╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
)*/
|
||||
};
|
||||
|
||||
// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
|
||||
// │ D I E S U N D D A S │
|
||||
// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
|
||||
// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘
|
||||
bool caps_word_press_user(uint16_t keycode) {
|
||||
switch (keycode) {
|
||||
// Keycodes that continue Caps Word, with shift applied.
|
||||
case KC_A ... KC_Z:
|
||||
add_weak_mods(MOD_BIT(KC_LSFT)); // Apply shift to the next key.
|
||||
return true;
|
||||
|
||||
// Keycodes that continue Caps Word, without shifting.
|
||||
case KC_1 ... KC_0:
|
||||
case KC_BSPC:
|
||||
case KC_DEL:
|
||||
case KC_MINS:
|
||||
case KC_UNDS:
|
||||
case KC_LSFT:
|
||||
case KC_RSFT:
|
||||
return true;
|
||||
|
||||
default:
|
||||
return false; // Deactivate Caps Word.
|
||||
}
|
||||
}
|
||||
|
||||
// ┌───────────────────────────────────────────────────────────┐
|
||||
// │ e n c o d e r │
|
||||
// └───────────────────────────────────────────────────────────┘
|
||||
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_NAVIGATION] = { ENCODER_CCW_CW(KC_LEFT, KC_RGHT) },
|
||||
[_QWERTY] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_COLEMAK] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_MEDIA] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_NUMBERS] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[_FUNCTION] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
|
||||
};
|
|
@ -1,3 +0,0 @@
|
|||
COMBO_ENABLE = yes
|
||||
CAPS_WORD_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
|
@ -1,298 +0,0 @@
|
|||
/*
|
||||
Copyright 2021 0xCB - Conor Burns
|
||||
|
||||
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
|
||||
enum my_keycodes {
|
||||
WPM = SAFE_RANGE,
|
||||
};
|
||||
enum layer_names {
|
||||
_HOME,
|
||||
_FN2,
|
||||
_FN3,
|
||||
_FN4
|
||||
};
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_HOME] = LAYOUT_all(
|
||||
KC_MPLY,
|
||||
QK_GESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
|
||||
SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, SC_RSPC,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, MO(1), MO(2)
|
||||
),
|
||||
[_FN2] = LAYOUT_all(
|
||||
QK_BOOT,
|
||||
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_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_FN3] = LAYOUT_all(
|
||||
EE_CLR,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_SLSH,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[_FN4] = LAYOUT_all(
|
||||
_______,
|
||||
WPM, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPRV, KC_MNXT, KC_MSTP, KC_INS, KC_HOME, KC_DEL, KC_END, _______,
|
||||
_______, _______, KC_BRID, KC_BRIU, _______, _______, _______, KC_PGUP, KC_UP, KC_PGDN, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
// clang-format on
|
||||
/* WPM toggle key bongocat hehe */
|
||||
bool wpm = false;
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case WPM:
|
||||
if (record->event.pressed) {
|
||||
wpm = !wpm;
|
||||
}
|
||||
return false;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
/*layer switcher */
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
state = update_tri_layer_state(state, _FN2, _FN3, _FN4);
|
||||
return state;
|
||||
}
|
||||
/* rotary encoder (MX12) - add different functions for layers here */
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (IS_LAYER_ON(_FN4)) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
} else if (IS_LAYER_ON(_FN3)) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
} else if (IS_LAYER_ON(_FN2)) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
} else {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* oled stuff :) */
|
||||
#ifdef OLED_ENABLE
|
||||
#define IDLE_FRAMES 5
|
||||
#define IDLE_SPEED 20 // below this wpm value your animation will idle
|
||||
#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 ANIM_SIZE 636 // number of bytes in array
|
||||
|
||||
uint32_t anim_timer = 0;
|
||||
uint32_t anim_sleep = 0;
|
||||
uint8_t current_idle_frame = 0;
|
||||
uint8_t current_tap_frame = 0;
|
||||
|
||||
uint16_t startup_timer = 0;
|
||||
|
||||
oled_rotation_t oled_init_user(oled_rotation_t rotation) {
|
||||
startup_timer = timer_read();
|
||||
return rotation;
|
||||
}
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM raw_logo[] = {
|
||||
0, 8, 0,192,194,192,192, 60, 60, 44, 60,188, 60, 60, 60, 60, 44, 61, 60,192,192,192,208, 1, 0,252,252,180,252, 60, 60, 44, 60,252,253,252,252, 60, 60, 44, 60,244,220,252,252, 0, 0, 16, 0, 0, 0,192,192, 65,192, 60, 60, 52, 60,192,193,192,192, 16, 0, 0,144, 4, 0,252,125,244, 60, 60, 60, 60, 61,252,252,244,252, 60, 60, 60, 61,248,108,252, 0, 0, 61, 60,188, 60, 52,252,252,220,252, 61, 60, 60, 52, 0, 0,192,210, 64,192, 60, 60, 44, 61, 60, 60, 60, 61, 52, 60, 60, 60,192,192, 64,196, 0, 4, 0,
|
||||
0, 16, 0, 61, 63, 55, 63,192, 64,192,196,192,192,192,200,192,196,192,192, 3, 3, 2, 11, 0, 0, 35, 3, 3, 3, 0, 64, 2, 0,255,255,253,247, 0, 0, 0, 32, 1, 0, 1, 65, 8, 0,189,244,252,236, 3,130, 3, 1, 0, 68, 0, 0, 3, 34,131, 3,252,252,236,252, 0, 32, 17, 1, 1, 0, 0, 32, 0, 2,255,255,127,247, 0, 1, 0, 8, 1, 1, 1, 0, 0, 0, 16, 0, 64, 0,255,191,255,251, 0,129, 0, 2, 32, 0,255,255,239,255, 0, 0, 2, 0, 0, 0, 8, 64, 0, 1, 0, 0, 3, 35, 3, 3, 0, 8, 0,
|
||||
1, 16, 0,192, 64,194,192, 3, 67, 3, 3, 9, 3, 3, 3, 3, 2, 83, 3,252,252,188,244, 0, 2, 32, 0, 0, 2, 0,144, 0, 0,255,255,237,255, 0, 16, 0, 0, 0, 64, 2, 0,128, 0,255,123,255,255, 60, 52, 60, 60, 60, 60, 60, 60, 44, 60, 56, 60,239,255,126,255, 0, 2, 32, 0, 0, 34, 0, 0, 16, 0,255,255,255,223, 0, 0, 4, 0, 0, 0, 33, 0, 0, 17, 0, 0, 0, 0,255,255,239,255, 0,128, 0, 0, 72, 0,255,253,247,255, 0, 0, 1, 0,144, 0, 4, 0, 32, 0, 0, 2,192,192,192,200, 0, 16, 0,
|
||||
64, 4, 0, 3, 7, 3, 3, 60, 60, 52,188, 60, 61, 60, 60, 60, 60, 44, 60, 67, 3, 3, 3, 0, 0, 64, 0, 0, 4, 0, 0, 16, 0, 47, 63, 62, 63, 0, 0,132, 0, 0, 0, 0,128, 8, 0,255,255,111,127, 0, 0, 0, 2,128, 0, 0, 0, 64, 4, 0,128,127,127,107,127, 0, 32, 0, 0, 0, 66, 0, 0, 0,136, 55, 63, 61, 63, 0, 0, 0, 2, 0, 64, 0,136, 0, 0, 60, 44,189, 60, 63, 63, 63, 59, 60, 60,172, 60, 0, 64, 3, 2, 3,131, 60, 44, 60, 60, 60, 60,188, 60, 56, 44, 60, 60, 3, 3,131, 2, 0, 32, 2,
|
||||
};
|
||||
oled_write_raw_P(raw_logo, sizeof(raw_logo));
|
||||
}
|
||||
/* Shows the name of the current layer and locks for the host (CAPS etc.) */
|
||||
static void render_layer(void) {
|
||||
led_t led_state = host_keyboard_led_state();
|
||||
// clang-format off
|
||||
static const char PROGMEM logo[][3][7] = {
|
||||
{{0x97, 0x98, 0x99, 0x9A, 0}, {0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0}, {0x9B, 0x9C, 0x9D, 0x9E, 0x9F, 0}}, /* l num CB */
|
||||
{{0xB7, 0xB8, 0xB9, 0xBA, 0}, {0xB1, 0xB2, 0xB3, 0xB4, 0xB5, 0xB6, 0}, {0xBB, 0xBC, 0xBD, 0xBE, 0xBF, 0}}, /* 1 num CB */
|
||||
{{0xD7, 0xD8, 0xD9, 0xDA, 0}, {0xD1, 0xD2, 0xD3, 0xD4, 0xD5, 0xD6, 0}, {0xDB, 0xDC, 0xDD, 0xDE, 0xDF, 0}}, /* 1 cap CB */
|
||||
{{0xF7, 0xF8, 0xF9, 0xFA, 0}, {0xF1, 0xF2, 0xF3, 0xF4, 0xF5, 0xF6, 0}, {0xFB, 0xFC, 0xFD, 0xFE, 0xFF, 0}}, /* l cap CB */
|
||||
{{0xB7, 0xC0, 0xC1, 0xBA, 0}, {0xB7, 0xC2, 0xC3, 0xBA, 0}, {0xB7, 0xC4, 0xC5, 0xBA, 0}}, /* 2 3 4 */
|
||||
{{0xD7, 0xE0, 0xE1, 0xDA, 0}, {0xD7, 0xE2, 0xE3, 0xDA, 0}, {0xD7, 0xE4, 0xE5, 0xDA, 0}}, /* 2 3 4 */
|
||||
};
|
||||
// clang-format on
|
||||
oled_set_cursor(0, 0);
|
||||
oled_write_P(logo[0][0], false);
|
||||
oled_set_cursor(0, 3);
|
||||
oled_write_P(logo[3][0], false);
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case _HOME:
|
||||
oled_set_cursor(0, 1);
|
||||
oled_write_P(logo[1][0], false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(logo[2][0], false);
|
||||
break;
|
||||
case _FN2:
|
||||
oled_set_cursor(0, 1);
|
||||
oled_write_P(logo[4][0], false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(logo[5][0], false);
|
||||
break;
|
||||
case _FN3:
|
||||
oled_set_cursor(0, 1);
|
||||
oled_write_P(logo[4][1], false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(logo[5][1], false);
|
||||
break;
|
||||
case _FN4:
|
||||
oled_set_cursor(0, 1);
|
||||
oled_write_P(logo[4][2], false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(logo[5][2], false);
|
||||
break;
|
||||
default:
|
||||
oled_set_cursor(0, 1);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_set_cursor(0, 2);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
}
|
||||
oled_set_cursor(8, 0);
|
||||
oled_write_P(led_state.num_lock ? logo[0][1] : PSTR(" "), false);
|
||||
oled_set_cursor(8, 1);
|
||||
oled_write_P(led_state.num_lock ? logo[1][1] : PSTR(" "), false);
|
||||
oled_set_cursor(8, 2);
|
||||
oled_write_P(led_state.caps_lock ? logo[2][1] : PSTR(" "), false);
|
||||
oled_set_cursor(8, 3);
|
||||
oled_write_P(led_state.caps_lock ? logo[3][1] : PSTR(" "), false);
|
||||
|
||||
oled_set_cursor(16, 0);
|
||||
oled_write_P(logo[0][2], false);
|
||||
oled_set_cursor(16, 1);
|
||||
oled_write_P(logo[1][2], false);
|
||||
oled_set_cursor(16, 2);
|
||||
oled_write_P(logo[2][2], false);
|
||||
oled_set_cursor(16, 3);
|
||||
oled_write_P(logo[3][2], false);
|
||||
|
||||
/* Fill empty space to clear animation */
|
||||
oled_set_cursor(4, 0);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_set_cursor(4, 1);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_set_cursor(4, 2);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_set_cursor(4, 3);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
|
||||
oled_set_cursor(14, 0);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_set_cursor(14, 1);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_set_cursor(14, 2);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
oled_set_cursor(14, 3);
|
||||
oled_write_P(PSTR(" "), false);
|
||||
}
|
||||
|
||||
static void render_cat(void) {
|
||||
static const char PROGMEM idle[IDLE_FRAMES][ANIM_SIZE] = {
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x82, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x60, 0x60, 0x00, 0x01, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x30, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x86, 0x86, 0x40, 0x40, 0x40, 0x40, 0x21, 0x22, 0x22, 0x20, 0x11, 0x11, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x34, 0xc4, 0x04, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x20, 0x18, 0x04, 0x02, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0d, 0x31, 0xc1, 0x01, 0x01, 0x01, 0x02, 0x02, 0x02, 0x04, 0x04, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||
static const char PROGMEM prep[][ANIM_SIZE] = {
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}};
|
||||
static const char PROGMEM tap[TAP_FRAMES][ANIM_SIZE] = {
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x64, 0x18, 0x04, 0x12, 0xc2, 0xca, 0x24, 0x88, 0xf0, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x41, 0x42, 0x24, 0x98, 0xc0, 0x88, 0x88, 0x8c, 0x9c, 0x1c, 0x1e, 0x0e, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x40, 0x40, 0x20, 0x20, 0x10, 0x08, 0x04, 0x02, 0x04, 0x08, 0x10, 0x10, 0x20, 0x20, 0x40, 0x40, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xc1, 0x01, 0x01, 0x02, 0x02, 0x04, 0x84, 0x44, 0x44, 0x42, 0x82, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x40, 0x80, 0x80, 0x40, 0x00, 0x00, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x04, 0x04, 0x08, 0x08, 0x10, 0x20, 0x40, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x18, 0x06, 0x01, 0x00, 0x00, 0x0c, 0x03, 0x00, 0x02, 0x18, 0x19, 0x00, 0x05, 0xfe, 0x80, 0x83, 0x83, 0x40, 0x40, 0x40, 0x40, 0x20, 0x21, 0x21, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x04, 0x08, 0x30, 0x40, 0x80, 0x80, 0x00, 0x00, 0x01, 0x86, 0x98, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x40, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 0x10, 0x08, 0x0f, 0x08, 0x08, 0x04, 0x04, 0x04, 0x04, 0x02, 0x02, 0x02, 0x02, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0f, 0x0f, 0x07, 0x03, 0x03, 0x61, 0xf0, 0xf8, 0xfc, 0x60, 0x01, 0x01, 0x01, 0x3c, 0x78, 0xf8, 0xf0, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
|
||||
};
|
||||
|
||||
void animation_phase(void) {
|
||||
if (get_current_wpm() <= IDLE_SPEED) {
|
||||
current_idle_frame = (current_idle_frame + 1) % IDLE_FRAMES;
|
||||
oled_write_raw_P(idle[abs((IDLE_FRAMES - 1) - current_idle_frame)], ANIM_SIZE);
|
||||
}
|
||||
if (get_current_wpm() > IDLE_SPEED && get_current_wpm() < TAP_SPEED) {
|
||||
oled_write_raw_P(prep[0], ANIM_SIZE);
|
||||
}
|
||||
if (get_current_wpm() >= TAP_SPEED) {
|
||||
current_tap_frame = (current_tap_frame + 1) % TAP_FRAMES;
|
||||
oled_write_raw_P(tap[abs((TAP_FRAMES - 1) - current_tap_frame)], ANIM_SIZE);
|
||||
}
|
||||
}
|
||||
if (get_current_wpm() != 000) {
|
||||
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
anim_sleep = timer_read32();
|
||||
} else {
|
||||
if (timer_elapsed32(anim_timer) > ANIM_FRAME_DURATION) {
|
||||
anim_timer = timer_read32();
|
||||
animation_phase();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool oled_task_user(void) {
|
||||
static bool finished_timer = false;
|
||||
if (!finished_timer && (timer_elapsed(startup_timer) < 3000)) {
|
||||
render_logo();
|
||||
} else {
|
||||
if (!finished_timer) {
|
||||
oled_clear();
|
||||
finished_timer = true;
|
||||
}
|
||||
if (wpm) {
|
||||
render_cat();
|
||||
oled_set_cursor(0, 0);
|
||||
char string[10];
|
||||
uint16_t m = get_current_wpm();
|
||||
string[3] = '\0';
|
||||
string[2] = '0' + m % 10;
|
||||
string[1] = ( m /= 10) % 10 ? '0' + (m) % 10 : (m / 10) % 10 ? '0' : ' ';
|
||||
string[0] = m / 10 ? '0' + m / 10 : ' ';
|
||||
oled_write_P(PSTR("WPM:"), false);
|
||||
oled_write(string, false);
|
||||
} else {
|
||||
render_layer();
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Resets via on eep reset - thank you drashna! */
|
||||
void eeconfig_init_kb(void) {
|
||||
via_eeprom_set_valid(false);
|
||||
via_init();
|
||||
eeconfig_init_user();
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
VIA_ENABLE = yes
|
||||
WPM_ENABLE = yes
|
|
@ -1,22 +0,0 @@
|
|||
// Copyright 2022 Makoto Kurauchi (@MakotoKurauchi)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
#include "rgblite.h"
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ortho_1x1(
|
||||
KC_MUTE
|
||||
)
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
rgblite_increase_hue();
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
rgblite_increase_hue();
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
// Copyright 2022 Makoto Kurauchi (@MakotoKurauchi)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "ws2812.h"
|
||||
#include "color.h"
|
||||
|
||||
static inline void rgblite_setrgb(RGB rgb) {
|
||||
rgb_led_t leds[RGBLED_NUM] = {{.r = rgb.r, .g = rgb.g, .b = rgb.b}};
|
||||
ws2812_setleds(leds, RGBLED_NUM);
|
||||
}
|
||||
|
||||
static void rgblite_increase_hue(void) {
|
||||
static uint8_t state = 0;
|
||||
|
||||
HSV hsv = { 255, 255, 255 };
|
||||
hsv.h = state;
|
||||
state = (state + 8) % 256;
|
||||
|
||||
rgblite_setrgb(hsv_to_rgb(hsv));
|
||||
|
||||
}
|
|
@ -1,3 +0,0 @@
|
|||
WS2812_DRIVER_REQUIRED = yes
|
||||
SRC += color.c
|
||||
EXTRAKEY_ENABLE = yes
|
|
@ -1,7 +0,0 @@
|
|||
// Copyright 2022 Makoto Kurauchi (@MakotoKurauchi)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define TAPPING_TERM 500
|
||||
#define PERMISSIVE_HOLD
|
|
@ -1,22 +0,0 @@
|
|||
// Copyright 2022 Makoto Kurauchi (@MakotoKurauchi)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers {
|
||||
_BASE = 0,
|
||||
};
|
||||
|
||||
enum {
|
||||
TD_AB = 0
|
||||
};
|
||||
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_AB] = ACTION_TAP_DANCE_DOUBLE(KC_A, KC_B)
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_ortho_1x1(
|
||||
TD(TD_AB)
|
||||
)
|
||||
};
|
|
@ -1 +0,0 @@
|
|||
TAP_DANCE_ENABLE = yes
|
|
@ -1,48 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/*
|
||||
* Layer 0
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | ~ | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | Bksp |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Tab | q | w | e | r | t | y | u | i | o | p | [ | ] | \ |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Esc | a | s | d | f | g | h | j | k | l | ; | ' | Enter |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Shift | z | x | c | v | b | n | m | , | . | / | Shift |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | Ctrl | L1 | Alt | space | Alt | Sup | L1 | Ctrl |
|
||||
* \-----------------------------------------------------------------------------------------/
|
||||
*
|
||||
*/
|
||||
LAYOUT_all(
|
||||
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_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
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_ENT,
|
||||
KC_LSFT, 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_RSFT,
|
||||
KC_LCTL, MO(1), KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(1), KC_RCTL),
|
||||
|
||||
/*
|
||||
* Layer 1
|
||||
* ,-----------------------------------------------------------------------------------------.
|
||||
* | | f1 | f2 | f3 | f4 | f5 | f6 | f7 | f8 | f9 | f10 | f11 | f12 | Del |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | | | | | | | | Ins | | Paus| | | Prnt |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | | | | | | L | D | U | R | | | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | | | | | | Hom | PDn | PUp | End | | |
|
||||
* |-----------------------------------------------------------------------------------------+
|
||||
* | | | | | | | | |
|
||||
* \-----------------------------------------------------------------------------------------/
|
||||
*
|
||||
*/
|
||||
LAYOUT_all(
|
||||
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_TRNS, KC_DEL,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_INS, KC_TRNS, KC_PAUS, KC_TRNS, KC_TRNS, KC_PSCR,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, 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_PGDN, KC_PGUP, KC_END, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||
};
|
|
@ -1,110 +0,0 @@
|
|||
/* Copyright 2020 Sam Reinehr
|
||||
*
|
||||
* 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 my_keycodes {
|
||||
K00 = SAFE_RANGE,
|
||||
K01,
|
||||
K02,
|
||||
K03,
|
||||
K04,
|
||||
K05,
|
||||
K06,
|
||||
K07,
|
||||
K08,
|
||||
K09,
|
||||
K10,
|
||||
K11,
|
||||
K12,
|
||||
K13,
|
||||
K14,
|
||||
K15,
|
||||
};
|
||||
/* just a simple way to give each key a unique code */
|
||||
//clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Base */
|
||||
[0] = LAYOUT_ortho_4x4(
|
||||
K00, K01, K02, K03,
|
||||
K04, K05, K06, K07,
|
||||
K08, K09, K10, K11,
|
||||
K12, K13, K14, K15
|
||||
)
|
||||
};
|
||||
/* flags describing current free square/0 */
|
||||
uint8_t current = 0;
|
||||
/* r g and b describe the colors for the initial map,
|
||||
currently blank for free, and evenly spaced hues with maximum sat/value */
|
||||
const uint8_t r[16] = {
|
||||
0x00, 0xFF, 0xFF, 0xFF,
|
||||
0xCC, 0x66, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x66, 0xCC, 0xFF, 0xFF
|
||||
};
|
||||
const uint8_t g[16] = {
|
||||
0x00, 0x00, 0x66, 0xCC,
|
||||
0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xCC, 0x66, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00
|
||||
};
|
||||
const uint8_t b[16] = {
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x66,
|
||||
0xCC, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xCC, 0x66
|
||||
};
|
||||
/* pos contains the current positions, could technically be compressed to 4 bits per, but not worth it
|
||||
index into pos is the position we're looking at, output is the tile that is currently there */
|
||||
uint8_t tiles[16] = {
|
||||
0, 1, 2, 3,
|
||||
4, 5, 6, 7,
|
||||
8, 9, 10, 11,
|
||||
12, 13, 14, 15
|
||||
};
|
||||
/* default led array for super 16 has them in a snake, so we must do some remapping/flipping of the 2nd and 4th rows */
|
||||
uint8_t remap[16] = {
|
||||
0, 1, 2, 3,
|
||||
7, 6, 5, 4,
|
||||
8, 9, 10, 11,
|
||||
15, 14, 13, 12
|
||||
};
|
||||
//clang-format on
|
||||
/* function to refresh the led coloring with the positions with current tiles */
|
||||
void refresh_leds(void) {
|
||||
for (uint8_t index = 0; index < 16; ++index) {
|
||||
uint8_t tile = tiles[index];
|
||||
setrgb(r[tile], g[tile], b[tile], (rgb_led_t *)&led[remap[index]]);
|
||||
}
|
||||
rgblight_set();
|
||||
}
|
||||
void keyboard_post_init_user(void) {
|
||||
rgblight_mode(RGBLIGHT_MODE_STATIC_LIGHT);
|
||||
rgblight_enable_noeeprom();
|
||||
refresh_leds();
|
||||
}
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
uint8_t offset = keycode - K00;
|
||||
uint8_t x = offset & 0x03;
|
||||
uint8_t y = (offset & 0x0C) >> 2;
|
||||
/* if the adjacent space exists and is empty, */
|
||||
if ((x > 0 && 0 == tiles[offset - 1]) || (y > 0 && 0 == tiles[offset - 4]) || (x < 3 && 0 == tiles[offset + 1]) || (y < 3 && 0 == tiles[offset + 4])) {
|
||||
/* set the currently blank tile to this tile, and make this one blank */
|
||||
tiles[current] = tiles[offset];
|
||||
tiles[offset] = 0;
|
||||
current = offset;
|
||||
}
|
||||
refresh_leds();
|
||||
return false;
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
# Trying to put a game that plays like the 15 puzzle on the super16
|
||||
The 15/16 puzzle consists of a grid where one space is free, and adjacent spaces can be swapped with the free space
|
||||
* future planned features:
|
||||
* fix the start at red
|
||||
* have a cute animation play when the puzzle is solved
|
|
@ -1,2 +0,0 @@
|
|||
RGBLIGHT_ENABLE = yes
|
||||
RGB_MATRIX_ENABLE = no
|
|
@ -1,104 +0,0 @@
|
|||
#Persistent
|
||||
#SingleInstance force
|
||||
|
||||
;=================================================================
|
||||
; Macro Pad Shortcuts ;
|
||||
;=================================================================
|
||||
|
||||
;=================================================================
|
||||
; Layer 0
|
||||
;;=================================================================
|
||||
;Row 1
|
||||
|
||||
F13::Send a
|
||||
F14::Send b
|
||||
F15::Send c
|
||||
F16::Send d
|
||||
|
||||
;Row 2
|
||||
|
||||
F17::Send e
|
||||
F18::Send f
|
||||
F19::Send g
|
||||
F20::Send h
|
||||
|
||||
;Row 3
|
||||
|
||||
F21::Send i
|
||||
F22::Send j
|
||||
F23::Send k
|
||||
F24::Send l
|
||||
|
||||
|
||||
;=================================================================
|
||||
; Layer 1
|
||||
;;=================================================================
|
||||
;Row 1
|
||||
|
||||
!F13::Send m
|
||||
!F14::Send n
|
||||
!F15::Send o
|
||||
!F16::Send p
|
||||
|
||||
;Row 2
|
||||
|
||||
!F17::Send q
|
||||
!F18::Send r
|
||||
!F19::Send s
|
||||
!F20::Send t
|
||||
|
||||
;Row 3
|
||||
|
||||
!F21::Send u
|
||||
!F22::Send v
|
||||
!F23::Send w
|
||||
!F24::Send x
|
||||
|
||||
|
||||
;=================================================================
|
||||
; Layer 2
|
||||
;;=================================================================
|
||||
;Row 1
|
||||
|
||||
+F13::Send y
|
||||
+F14::Send z
|
||||
+F15::Send A
|
||||
+F16::Send B
|
||||
|
||||
;Row 2
|
||||
|
||||
+F17::Send C
|
||||
+F18::Send D
|
||||
+F19::Send E
|
||||
+F20::Send F
|
||||
|
||||
;Row 3
|
||||
|
||||
+F21::Send G
|
||||
+F22::Send H
|
||||
+F23::Send I
|
||||
+F24::Send J
|
||||
|
||||
;=================================================================
|
||||
; Layer 3
|
||||
;;=================================================================
|
||||
;Row 1
|
||||
|
||||
^F13::Send K
|
||||
^F14::Send L
|
||||
^F15::Send M
|
||||
^F16::Send N
|
||||
|
||||
;Row 2
|
||||
|
||||
^F17::Send O
|
||||
^F18::Send P
|
||||
^F19::Send Q
|
||||
^F20::Send R
|
||||
|
||||
;Row 3
|
||||
|
||||
^F21::Send S
|
||||
^F22::Send T
|
||||
^F23::Send U
|
||||
^F24::Send V
|
|
@ -1,19 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
// Time out one shot layers after 3 seconds
|
||||
#define ONESHOT_TIMEOUT 3000
|
||||
|
||||
#define RGBLED_NUM 16
|
||||
|
||||
// Undef and redefine default brightness to half of 255
|
||||
#undef RGBLIGHT_LIMIT_VAL
|
||||
#define RGBLIGHT_LIMIT_VAL 128
|
||||
|
||||
//Define a preview timeout for RGB reviews
|
||||
#define PREVIEW_TIMEOUT 5000
|
||||
#define TAPPING_TERM 200
|
||||
|
||||
// Enable Light Layers implementation
|
||||
#define RGBLIGHT_LAYERS
|
||||
// Allow Light Layers to override RGB off configuration
|
||||
#define RGBLIGHT_LAYERS_OVERRIDE_RGB_OFF
|
|
@ -1,136 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
#if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS)
|
||||
static uint32_t rgb_preview_timer = 0;
|
||||
#endif
|
||||
extern rgblight_config_t rgblight_config;
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//Layer 0 - Base Layer (F13 to F24, and One Shot Layer 1,2,3 or Toggle Layer 4)
|
||||
[0] = LAYOUT_ortho_4x4(
|
||||
KC_F13, KC_F14, KC_F15, KC_F16,
|
||||
KC_F17, KC_F18, KC_F19, KC_F20,
|
||||
KC_F21, KC_F22, KC_F23, KC_F24,
|
||||
OSL(1), OSL(2), OSL(3), TG(4) //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
[1] = LAYOUT_ortho_4x4(
|
||||
LALT(KC_F13), LALT(KC_F14), LALT(KC_F15), LALT(KC_F16),
|
||||
LALT(KC_F17), LALT(KC_F18), LALT(KC_F19), LALT(KC_F20),
|
||||
LALT(KC_F21), LALT(KC_F22), LALT(KC_F23), LALT(KC_F24),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
//Layer 2 - Shift + Function Key Layer
|
||||
[2] = LAYOUT_ortho_4x4(
|
||||
LSFT(KC_F13), LSFT(KC_F14), LSFT(KC_F15), LSFT(KC_F16),
|
||||
LSFT(KC_F17), LSFT(KC_F18), LSFT(KC_F19), LSFT(KC_F20),
|
||||
LSFT(KC_F21), LSFT(KC_F22), LSFT(KC_F23), LSFT(KC_F24),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
//Layer 3 - Control + Function Key
|
||||
[3] = LAYOUT_ortho_4x4(
|
||||
LCTL(KC_F13), LCTL(KC_F14), LCTL(KC_F15), LCTL(KC_F16),
|
||||
LCTL(KC_F17), LCTL(KC_F18), LCTL(KC_F19), LCTL(KC_F20),
|
||||
LCTL(KC_F21), LCTL(KC_F22), LCTL(KC_F23), LCTL(KC_F24),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
//Layer 4 - Multimedia
|
||||
[4] = LAYOUT_ortho_4x4(
|
||||
KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU,
|
||||
KC_NO, KC_NO, KC_NO, KC_MUTE,
|
||||
KC_NO, QK_BOOT, EE_CLR, KC_VOLD,
|
||||
TG(5), KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
//Layer 5 - Keyboard Lights, Programming and Special Functions
|
||||
[5] = LAYOUT_ortho_4x4(
|
||||
RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI,
|
||||
RGB_RMOD, RGB_HUD, RGB_SAD, RGB_VAD,
|
||||
RGB_TOG, EE_CLR, QK_BOOT, KC_LSFT,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
};
|
||||
|
||||
const rgblight_segment_t PROGMEM my_layer0_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0,16,HSV_ORANGE}
|
||||
);
|
||||
const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0,16,HSV_GREEN}
|
||||
);
|
||||
const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0,16,HSV_RED}
|
||||
);
|
||||
const rgblight_segment_t PROGMEM my_layer3_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0,16,HSV_BLUE}
|
||||
);
|
||||
const rgblight_segment_t PROGMEM my_layer4_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0,16,HSV_WHITE}
|
||||
);
|
||||
const rgblight_segment_t PROGMEM my_layer5_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0,16,HSV_TEAL}
|
||||
);
|
||||
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
||||
my_layer0_layer,
|
||||
my_layer1_layer,
|
||||
my_layer2_layer,
|
||||
my_layer3_layer,
|
||||
my_layer4_layer,
|
||||
my_layer5_layer
|
||||
);
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
return true;
|
||||
}
|
||||
|
||||
void post_process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
// Allow for a preview of changes when modifying RGB
|
||||
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS)
|
||||
switch (keycode) {
|
||||
case RGB_TOG ... QK_VELOCIKEY_TOGGLE:
|
||||
for (uint8_t i = 0; i < RGBLIGHT_MAX_LAYERS; i++) {
|
||||
rgblight_set_layer_state(i, false);
|
||||
}
|
||||
rgb_preview_timer = timer_read32();
|
||||
break;
|
||||
}
|
||||
# endif
|
||||
return;
|
||||
}
|
||||
|
||||
//Set the appropriate layer color
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
rgblight_set_layer_state(1, layer_state_cmp(state, 1));
|
||||
rgblight_set_layer_state(2, layer_state_cmp(state, 2));
|
||||
rgblight_set_layer_state(3, layer_state_cmp(state, 3));
|
||||
rgblight_set_layer_state(4, layer_state_cmp(state, 4));
|
||||
rgblight_set_layer_state(5, layer_state_cmp(state, 5));
|
||||
return state;
|
||||
}
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
//Enable the LED layers
|
||||
rgblight_layers = my_rgb_layers;
|
||||
layer_state_set_user(layer_state);
|
||||
}
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
# if defined(RGBLIGHT_ENABLE) && defined(RGBLIGHT_LAYERS)
|
||||
// Allow preview for
|
||||
if (rgb_preview_timer && TIMER_DIFF_32(timer_read32(), rgb_preview_timer) > PREVIEW_TIMEOUT) {
|
||||
rgb_preview_timer = 0;
|
||||
default_layer_state_set_user(default_layer_state);
|
||||
layer_state_set_user(layer_state);
|
||||
led_update_user((led_t) host_keyboard_leds());
|
||||
}
|
||||
# endif
|
||||
}
|
||||
|
||||
//EEPROM Reset Function
|
||||
void eeconfig_init_user(void) {
|
||||
rgblight_enable(); // Enable RGB by default
|
||||
rgblight_sethsv(HSV_ORANGE); // Set it to orange by default
|
||||
}
|
||||
|
|
@ -1,58 +0,0 @@
|
|||
## AutoHotKey Companion ##
|
||||
|
||||
### Overview ###
|
||||
AutoHotKey Companion Keymap for <a href="https://www.1upkeyboards.com/shop/keyboard-kits/macro-pads/super-16-macro-pad/">1upkeyboards Super16</a> is designed be a quick and easy way to get started with AutoHotKey and to provide a foundation for customizing your own macropad. I chose the Super16 because it provided an easy way (RGB) to identify what layer I was on with a quick glance or peripheral vision. The F13 to F24 keys were selected as they are rarely used so you won't run into conflicts with existing application shortcuts and AutoHotKey recognizes them without any issues.
|
||||
|
||||
Same functionality can be accomplished with other similar applications on the host system like Keyboard Maestro, AutoIt, etc.
|
||||
|
||||
* <a href="https://www.autohotkey.com">AutoHotKey</a>(Windows)
|
||||
* <a href="https://www.autoitscript.com/site/autoit/">AutoIT</a> (Windows)
|
||||
* <a href="https://www.keyboardmaestro.com/main/">Keyboard Maestro</a>(Mac)
|
||||
* <a href="https://github.com/autokey/autokey">AutoKey</a>(Linux)
|
||||
|
||||
This keymap allows for a total of 48 Function/Macro keys that are accessible within 2 sequential key presses (or more when extended with your own code and additional layers)
|
||||
|
||||
### Alternate Implementations ###
|
||||
I chose to use <a href="https://docs.qmk.fm/#/feature_layers?id=switching-and-toggling-layers">QMK OSL</a> (One Shot Layer) functionality to avoid having to hold a key while selecting the next key and to have my layers always go back to the default layer as the starting point. This also helps me avoid having to cognitively remember what layer I am on.
|
||||
|
||||
If persistent behavior is prefered, OSL can be swapped for TG which will toggle the layer on/off with a key press instead of clearing the layer once the Function key is pressed. This is useful if a layer contains several keys that need to be used in sequence. I also added a OSL timeout of 3 seconds, so that if the key is not pressed within 3 seconds the layer will go back to default. This can be adjusted in the config.h file by increasing 3000 to a desired value: `#define ONESHOT_TIMEOUT 3000`
|
||||
|
||||
|
||||
|
||||
|
||||
### Layers ###
|
||||
|
||||
While the first 5 layers are accessible with only 1 key press at most, the 5th (less frequently used) layer is accessed by first going to the 4th layer, which makes the TG(5) button available on the bottom left. Space for additional 2 more layer toggles is available on the 2 middle buttons on the bottom row. Please refer to the layer diagrams.
|
||||
|
||||
|
||||
* Layer 0 (Base Layer) - the default layer and functions like sending the F13 to F24 keys along with the bottom row to activate another 4 layers.
|
||||
|
||||
![Image of Base Layer ](https://i.imgur.com/0LhityX.png)
|
||||
|
||||
* Layer 1 (Alt Layer) - Equivalent to Alt+Fxx key being pressed
|
||||
|
||||
![Image of Layer 1 ](https://i.imgur.com/ZblqLZt.png)
|
||||
|
||||
* Layer 2 (Shift Layer) - Equivalent to Shift+Fxx key being pressed
|
||||
|
||||
![Image of Layer 2 ](https://i.imgur.com/ZQHwLC0.png)
|
||||
|
||||
* Layer 3 (Control Layer) - Equivalent to Ctrl+Fxx key being pressed
|
||||
|
||||
![Image of Layer 3 ](https://i.imgur.com/JkM8bqV.png)
|
||||
|
||||
* Layer 4 (Config Layer) - Layer for multimedia. You can replace the KC_TRNS on this layer in keymap.c to TG(x) to enable additional layers.
|
||||
|
||||
![Image of Layer 4 ](https://i.imgur.com/srDp5Lv.png)
|
||||
|
||||
* Layer 5 (RGB Control/QMK) - RGB control layer and Quantum functions (Reset, EEPROM Reset, )
|
||||
|
||||
![Image of Layer 5 ](https://i.imgur.com/Os3n8dx.png)
|
||||
|
||||
### Host Configuration ###
|
||||
|
||||
Once the keymap has been flashed to the Super16, you can download the accompanying AutoHotKey file or create your own and have it start automatically either via a Windows Task or another way. Using AutoHotKey allows adjustment of functionality of the buttons without the need to change your map and reflash the macropad every time.
|
||||
Starting the AHK file can be done either by:
|
||||
* Creating a Windows Task
|
||||
* Adding the AHK to the startup folder
|
||||
* Launch manually
|
|
@ -1,2 +0,0 @@
|
|||
RGB_MATRIX_ENABLE = no
|
||||
RGBLIGHT_ENABLE = yes
|
|
@ -1,13 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
// Time out one shot layers after 3 seconds
|
||||
#define ONESHOT_TIMEOUT 3000
|
||||
|
||||
#define RGBLED_NUM 16
|
||||
|
||||
|
||||
// Undef and redefine default brightness to half of 255
|
||||
#undef RGBLIGHT_LIMIT_VAL
|
||||
#define RGBLIGHT_LIMIT_VAL 128
|
||||
|
||||
#define TAPPING_TERM 200
|
|
@ -1,127 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
uint16_t copy_paste_timer;
|
||||
uint16_t enter_timer;
|
||||
|
||||
extern rgblight_config_t rgblight_config;
|
||||
|
||||
// Define custom keycodes
|
||||
enum my_keycodes {
|
||||
KC_CCCV = SAFE_RANGE,
|
||||
KC_2ENTER
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
//Layer 0 - Base Layer (F13 to F24, and One Shot Layer 1,2,3,4)
|
||||
[0] = LAYOUT_ortho_4x4(
|
||||
KC_F13, KC_F14, KC_F15, KC_F16,
|
||||
KC_F17, KC_CCCV, KC_F19, KC_F20,
|
||||
KC_F21, KC_F22, KC_F23, KC_2ENTER,
|
||||
OSL(1), OSL(2), OSL(3), TG(4) //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
[1] = LAYOUT_ortho_4x4(
|
||||
LALT(KC_F13), LALT(KC_F14), LALT(KC_F15), LALT(KC_F16),
|
||||
LALT(KC_F17), LALT(KC_F18), LALT(KC_F19), LALT(KC_F20),
|
||||
LALT(KC_F21), LALT(KC_F22), LALT(KC_F23), LALT(KC_F24),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
//Layer 2 - Shift + Function Key Layer
|
||||
[2] = LAYOUT_ortho_4x4(
|
||||
LSFT(KC_F13), LSFT(KC_F14), LSFT(KC_F15), LSFT(KC_F16),
|
||||
LSFT(KC_F17), LSFT(KC_F18), LSFT(KC_F19), LSFT(KC_F20),
|
||||
LSFT(KC_F21), LSFT(KC_F22), LSFT(KC_F23), LSFT(KC_F24),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
//Layer 3 - Control + Function Key
|
||||
[3] = LAYOUT_ortho_4x4(
|
||||
LCTL(KC_F13), LCTL(KC_F14), LCTL(KC_F15), LCTL(KC_F16),
|
||||
LCTL(KC_F17), LCTL(KC_F18), LCTL(KC_F19), LCTL(KC_F20),
|
||||
LCTL(KC_F21), LCTL(KC_F22), LCTL(KC_F23), LCTL(KC_F24),
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
|
||||
//Layer 4 - Keyboard Lights. Programming and Special Functions
|
||||
[4] = LAYOUT_ortho_4x4(
|
||||
KC_MPRV, KC_MPLY, KC_MNXT, KC_VOLU,
|
||||
RGB_TOG, RGB_MOD, RGB_RMOD, KC_MUTE,
|
||||
TO(0), QK_BOOT, EE_CLR, KC_VOLD,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS //Transparent to let you go between layers
|
||||
),
|
||||
};
|
||||
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case KC_CCCV: // One key copy/paste
|
||||
if (record->event.pressed) {
|
||||
copy_paste_timer = timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(copy_paste_timer) > TAPPING_TERM) { // Hold, copy
|
||||
tap_code16(LCTL(KC_C));
|
||||
} else { // Tap, paste
|
||||
tap_code16(LCTL(KC_V));
|
||||
}
|
||||
} return true;
|
||||
case KC_2ENTER:
|
||||
if (record->event.pressed) {
|
||||
enter_timer = timer_read();
|
||||
} else {
|
||||
if (timer_elapsed(enter_timer) > TAPPING_TERM) { // Hold, shift+enter
|
||||
tap_code16(LSFT(KC_ENTER));
|
||||
} else { // Tap, enter
|
||||
tap_code16(KC_F24);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
//Enable the LED layers
|
||||
layer_state_set_user(layer_state);
|
||||
}
|
||||
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
rgblight_sethsv_noeeprom(HSV_WHITE);
|
||||
switch(get_highest_layer(state)) {
|
||||
case 1:
|
||||
// Green
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_sethsv_noeeprom(HSV_GREEN);
|
||||
break;
|
||||
case 2:
|
||||
// Red
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_sethsv_noeeprom(HSV_RED);
|
||||
break;
|
||||
case 3:
|
||||
// Blue
|
||||
rgblight_enable_noeeprom();
|
||||
rgblight_sethsv_noeeprom(HSV_BLUE);
|
||||
break;
|
||||
case 4:
|
||||
// Orange
|
||||
rgblight_enable_noeeprom();
|
||||
// rgblight_sethsv_noeeprom(HSV_PURPLE);
|
||||
rgblight_sethsv_noeeprom(HSV_ORANGE);
|
||||
break;
|
||||
default:
|
||||
// White
|
||||
//Read RGB Light State
|
||||
rgblight_config.raw = eeconfig_read_rgblight();
|
||||
//If enabled, set white
|
||||
if (rgblight_config.enable) {
|
||||
rgblight_sethsv_noeeprom(HSV_WHITE);
|
||||
} else { //Otherwise go back to disabled
|
||||
rgblight_disable_noeeprom();
|
||||
}
|
||||
break;
|
||||
}
|
||||
return state;
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
# Nick B's Super16 keymap
|
||||
|
||||
A modification of the default keymap to include layer indicators with RGB
|
||||
* Added a time out of 3 seconds to 1 shot layers
|
||||
* Reduced brightness to half to reduce power draw
|
||||
* Added a one key copy/paste keycode
|
|
@ -1,2 +0,0 @@
|
|||
RGB_MATRIX_ENABLE = no
|
||||
RGBLIGHT_ENABLE = yes
|
|
@ -1,50 +0,0 @@
|
|||
/* Copyright 2022 MechMerlin
|
||||
*
|
||||
* 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_ortho_4x4( /* Base */
|
||||
KC_TRNS, KC_DELETE, KC_BACKSPACE, KC_MUTE,
|
||||
KC_P4, KC_P5, KC_P6, KC_PPLS,
|
||||
KC_P1, KC_P2, KC_P3, KC_PSLS,
|
||||
MO(1), KC_P0, KC_PDOT, KC_BTN3
|
||||
),
|
||||
|
||||
[1] = LAYOUT_ortho_4x4( /* Fn Layer */
|
||||
RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI,
|
||||
RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD,
|
||||
RGB_SPD, RGB_SPI, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
|
||||
),
|
||||
};
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) { /* First encoder */
|
||||
if (clockwise) {
|
||||
tap_code_delay(KC_MS_RIGHT, 10);
|
||||
} else {
|
||||
tap_code_delay(KC_MS_LEFT, 10);
|
||||
}
|
||||
} else if (index == 1) { /* Second encoder */
|
||||
if (clockwise) {
|
||||
tap_code_delay(KC_AUDIO_VOL_UP, 10);
|
||||
} else {
|
||||
tap_code_delay(KC_AUDIO_VOL_DOWN, 10);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -1 +0,0 @@
|
|||
# The default keymap for Super 16 V2
|
|
@ -1,38 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers {
|
||||
num,
|
||||
extra,
|
||||
mouse
|
||||
};
|
||||
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[num] = LAYOUT_numpad_4x4(
|
||||
KC_P7, KC_P8, KC_P9, LT(extra, KC_PPLS),
|
||||
KC_P4, KC_P5, KC_P6,
|
||||
KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
LT(mouse, KC_P0), KC_DOT
|
||||
),
|
||||
|
||||
[extra] = LAYOUT_numpad_4x4(
|
||||
KC_PSLS, KC_PAST, KC_PMNS, KC_TRNS,
|
||||
KC_BSPC, KC_EXECUTE, KC_DEL,
|
||||
KC_LPRN, KC_RPRN, KC_PEQL, KC_PENT,
|
||||
KC_TAB, KC_NUM
|
||||
),
|
||||
|
||||
|
||||
[mouse] = LAYOUT_numpad_4x4(
|
||||
KC_WH_D, KC_MS_U, KC_WH_U, LT(extra, KC_PPLS),
|
||||
KC_MS_L, KC_MS_D, KC_MS_R,
|
||||
KC_BTN1, KC_BTN2, KC_BTN3, KC_PENT,
|
||||
KC_TRNS, KC_DOT
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
# Dale's keymap for the Sweet16
|
||||
|
||||
I wanted to reuse a standard numpad keyset and have the full functionality of an larger numpad with a nod to Excel functionality.
|
|
@ -1,16 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
/* tap dance stuff*/
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 500
|
||||
#define PERMISSIVE_HOLD
|
||||
|
||||
#define TAPPING_TOGGLE 2
|
||||
|
||||
#define EXAMPLESTRING1 "tapdance_1"
|
||||
#define EXAMPLESTRING2 "tapdance_2"
|
||||
#define EXAMPLESTRING3 "tapdance_3"
|
||||
#define EXAMPLESTRING4 "tapdance_4"
|
||||
|
||||
#undef RGBLED_NUM
|
||||
#define RGBLED_NUM 16
|
|
@ -1,215 +0,0 @@
|
|||
/*
|
||||
tap danc eis turned on in the rules now...
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define _EMOJI 0
|
||||
#define _TAPLAND 1
|
||||
#define _LEDCNTL 2
|
||||
|
||||
enum custom_keycodes {
|
||||
SHRUG,
|
||||
DISFACE,
|
||||
FU,
|
||||
TFLIP,
|
||||
TFLIP2,
|
||||
SAD_EYES,
|
||||
TPUT,
|
||||
HAPPYFACE,
|
||||
HEARTFACE,
|
||||
CLOUD,
|
||||
CHANFACE,
|
||||
CMDCLEAR
|
||||
};
|
||||
//Tap Dance Declarations
|
||||
enum {
|
||||
TD_EXAMPLE1 = 0,
|
||||
TD_EXAMPLE2,
|
||||
TD_EXAMPLE3,
|
||||
TD_EXAMPLE4
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* EMOJI Pad
|
||||
* ,-------------------------------.
|
||||
* |TFLIP | TFlIP2|DISFACE| FU |
|
||||
* |------+-------+-------+--------|
|
||||
* | CLOUD| | | CLEAR |
|
||||
* |------+-------+-------+--------|
|
||||
* |SHRUG |DISFACE| HRTFAC| HAPPYF |
|
||||
* |------+-------+-------+--------|
|
||||
* | ENTER| |LEDCNTR| tapland|
|
||||
* `-------------------------------'
|
||||
*/
|
||||
//purple
|
||||
[_EMOJI] = LAYOUT_ortho_4x4(
|
||||
TFLIP, TFLIP2, KC_NO, FU ,
|
||||
CLOUD, KC_NO, KC_NO, CMDCLEAR,
|
||||
SHRUG, DISFACE, HEARTFACE, HAPPYFACE,
|
||||
KC_ENT, RGB_TOG, MO(_LEDCNTL), MO(_TAPLAND)
|
||||
),
|
||||
|
||||
/* TapLand //
|
||||
* ,-------------------------------.
|
||||
* | str1 | str2 | str3 | str4 |
|
||||
* |------+-------+-------+--------|
|
||||
* | | | | |
|
||||
* |------+-------+-------+--------|
|
||||
* | | | | |
|
||||
* |------+-------+-------+--------|
|
||||
* | | | | |
|
||||
* `-------------------------------'
|
||||
*/
|
||||
//blue
|
||||
[_TAPLAND] = LAYOUT_ortho_4x4(
|
||||
TD(TD_EXAMPLE1), TD(TD_EXAMPLE2), TD(TD_EXAMPLE3), TD(TD_EXAMPLE4),
|
||||
KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO
|
||||
),
|
||||
/* LEDControl Pad
|
||||
* ,-------------------------------.
|
||||
* | snake|breathe|rainbow|gradient|
|
||||
* |------+-------+-------+--------|
|
||||
* | xmas | Val+ | Sat+ | HUE+ |
|
||||
* |------+-------+-------+--------|
|
||||
* |kngrdr| Val- | Sat- | HUE- |
|
||||
* |------+-------+-------+--------|
|
||||
* | swirl| PLAIN | | ON/OFF |
|
||||
* `-------------------------------'
|
||||
*/
|
||||
//blue
|
||||
[_LEDCNTL] = LAYOUT_ortho_4x4(
|
||||
RGB_M_SN, RGB_M_B, RGB_M_R, RGB_M_G,
|
||||
RGB_M_X, RGB_VAI, RGB_SAI, RGB_HUI,
|
||||
RGB_M_K, RGB_VAD, RGB_SAD, RGB_HUD,
|
||||
RGB_M_SW, RGB_M_P, KC_NO, RGB_TOG
|
||||
),
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
switch(keycode) {
|
||||
case CLOUD:
|
||||
if(record->event.pressed){
|
||||
send_unicode_string("(っ◕‿◕)っ");
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case FU:
|
||||
if(record->event.pressed){
|
||||
SEND_STRING("t(-_-t)");
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case HAPPYFACE:
|
||||
if(record->event.pressed){
|
||||
send_unicode_string("ʘ‿ʘ");
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case CMDCLEAR:
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_LGUI);
|
||||
tap_code(KC_A);
|
||||
unregister_code(KC_LGUI);
|
||||
tap_code(KC_DEL);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case SHRUG:
|
||||
if (record->event.pressed) {
|
||||
send_unicode_string("¯\\_(ツ)_/¯");
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case HEARTFACE:
|
||||
if(record->event.pressed){
|
||||
send_unicode_string("♥‿♥");
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case DISFACE:
|
||||
if(record->event.pressed){
|
||||
send_unicode_string("ಠ_ಠ");
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case TFLIP:
|
||||
if(record->event.pressed){
|
||||
send_unicode_string("(╯°□°)╯ ︵ ┻━┻");
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case TFLIP2:
|
||||
if(record->event.pressed){
|
||||
send_unicode_string("┻━┻︵ \\(°□°)/ ︵ ┻━┻");
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/* tap dance time */
|
||||
void tdexample1(tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count >= 2) {
|
||||
SEND_STRING(EXAMPLESTRING1);
|
||||
reset_tap_dance (state);
|
||||
}
|
||||
}
|
||||
void tdexample2(tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count >= 2) {
|
||||
SEND_STRING(EXAMPLESTRING2);
|
||||
reset_tap_dance (state);
|
||||
}
|
||||
}
|
||||
void tdexample3(tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count >= 2) {
|
||||
SEND_STRING(EXAMPLESTRING3);
|
||||
reset_tap_dance (state);
|
||||
}
|
||||
}
|
||||
void tdexample4(tap_dance_state_t *state, void *user_data) {
|
||||
if (state->count >= 2) {
|
||||
SEND_STRING(EXAMPLESTRING4);
|
||||
reset_tap_dance (state);
|
||||
}
|
||||
}
|
||||
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_EXAMPLE1] = ACTION_TAP_DANCE_FN(tdexample1),
|
||||
[TD_EXAMPLE2] = ACTION_TAP_DANCE_FN(tdexample2),
|
||||
[TD_EXAMPLE3] = ACTION_TAP_DANCE_FN(tdexample3),
|
||||
[TD_EXAMPLE4] = ACTION_TAP_DANCE_FN(tdexample4)
|
||||
};
|
||||
|
||||
// Runs just one time when the keyboard initializes.
|
||||
void matrix_scan_user(void) {
|
||||
static bool has_ran_yet;
|
||||
if (!has_ran_yet) {
|
||||
has_ran_yet = true;
|
||||
rgblight_setrgb (16, 0, 16);
|
||||
}
|
||||
}
|
||||
layer_state_t layer_state_set_user(layer_state_t state) {
|
||||
switch (get_highest_layer(state)) {
|
||||
case _TAPLAND:
|
||||
rgblight_setrgb(0, 16, 0); //green
|
||||
break;
|
||||
case _LEDCNTL:
|
||||
rgblight_setrgb(0, 0, 16); //blue
|
||||
break;
|
||||
case _EMOJI:
|
||||
rgblight_setrgb (16, 0, 16); //purple
|
||||
break;
|
||||
|
||||
default: // for any other layers, or the default layer
|
||||
rgblight_setrgb (16, 0, 16); //purple
|
||||
break;
|
||||
}
|
||||
return state;
|
||||
}
|
|
@ -1,10 +0,0 @@
|
|||
# Ridingtraffic's examples
|
||||
===
|
||||
This keymap has many features:
|
||||
3 layers
|
||||
Momentary layer switching
|
||||
16 pixel neopixel
|
||||
Unicode Enabled
|
||||
Tap dance enabled
|
||||
|
||||
The rgb also updates depending on what layer you are on, and then flips back when done.
|
|
@ -1,5 +0,0 @@
|
|||
# turning on tap dance
|
||||
TAP_DANCE_ENABLE = yes
|
||||
RGBLIGHT_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = no
|
||||
UNICODE_ENABLE = yes
|
|
@ -1,36 +0,0 @@
|
|||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2018 monksoffunk
|
||||
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
|
||||
|
||||
// place overrides here
|
||||
// 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,368 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
rgblight_config_t RGB_current_config;
|
||||
#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,
|
||||
_COLEMAK,
|
||||
_DVORAK,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
DVORAK,
|
||||
LOWER,
|
||||
RAISE,
|
||||
ADJUST,
|
||||
BACKLIT,
|
||||
KANA,
|
||||
EISU,
|
||||
RGBRST,
|
||||
AQOURS, //サンシャインぴっかぴかモード
|
||||
};
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//9色に変化するLEDのHSV各パラメータ
|
||||
int aqours_h[] = { 26, 340, 150, 0, 199, 220, 53, 265, 322};
|
||||
int aqours_s[] = {255, 165, 255, 255, 255, 350, 255, 255, 255};
|
||||
int aqours_v[] = {255, 255, 255, 255, 255, 255, 255, 255, 255};
|
||||
const int NEXT_COLOR_TIME = 2400; //次の色に切り替わるまでの時間
|
||||
const int NEXT_CHANGE_TARGET_TIME = 100; //次のキーに色が伝播するまでの時間
|
||||
bool aqours_mode = false;
|
||||
int aqours_next_color_timer_count = 0;
|
||||
int aqours_num = 0;
|
||||
int target_col = 0;
|
||||
|
||||
//keyのmatrixの位置とLEDの番号を紐づける
|
||||
int combined_key_to_led[] =
|
||||
{
|
||||
0,1,2,3,4,5,
|
||||
11,10,9,8,7,6,
|
||||
12,13,14,15,16,17,
|
||||
23,22,21,20,19,18
|
||||
};
|
||||
#endif
|
||||
|
||||
enum macro_keycodes {
|
||||
KC_SAMPLEMACRO,
|
||||
};
|
||||
|
||||
//Macros
|
||||
#define M_SAMPLE M(KC_SAMPLEMACRO)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Esc |ADJUST| Win | Alt |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT_ortho_4x12(
|
||||
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_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 ,
|
||||
KC_ESC, ADJUST, KC_LGUI, KC_LALT, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Colemak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | R | S | T | D | | H | N | E | I | O | ' |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | | K | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Esc |ADJUST| Alt | Win |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_COLEMAK] = LAYOUT_ortho_4x12(
|
||||
KC_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ENT ,
|
||||
KC_ESC, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Dvorak
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Tab | ' | , | . | P | Y | | F | G | C | R | L | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | O | E | U | I | | D | H | T | N | S | / |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Esc |ADJUST| Alt | Win |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_DVORAK] = LAYOUT_ortho_4x12(
|
||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_F, KC_G, KC_C, KC_R, KC_L, KC_DEL,
|
||||
KC_LCTL, KC_A, KC_O, KC_E, KC_U, KC_I, KC_D, KC_H, KC_T, KC_N, KC_S, KC_SLSH,
|
||||
KC_LSFT, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_B, KC_M, KC_W, KC_V, KC_Z, KC_ENT ,
|
||||
KC_ESC, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | - | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | Home | End | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT_ortho_4x12(
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_MINS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, KC_HOME, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | | F12 | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT_ortho_4x12(
|
||||
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_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_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | Reset|RGBRST|Aud on|Audoff| | | |Qwerty|Colemk|Dvorak| | Ins |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* |AQOURS|RGB ON| HUE+ | SAT+ | VAL+ | Mac | | Win | - | = |Print |ScLock|Pause |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | MODE | HUE- | SAT- | VAL- | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | EISU | EISU | EISU | | KANA | KANA | Home |PageDn|PageUp| End |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT_ortho_4x12(
|
||||
_______, QK_BOOT, RGBRST, _______, _______, _______, _______, QWERTY, COLEMAK, DVORAK, _______, KC_INS,
|
||||
AQOURS, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, AG_NORM, AG_SWAP, KC_MINS, KC_EQL, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, EISU, EISU, EISU, KANA, KANA, KC_HOME, KC_PGDN, KC_PGUP, KC_END
|
||||
)
|
||||
};
|
||||
|
||||
// define variables for reactive RGB
|
||||
bool TOG_STATUS = false;
|
||||
|
||||
// Setting ADJUST layer RGB back to default
|
||||
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
|
||||
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_mode_noeeprom(RGB_current_config.mode);
|
||||
#endif
|
||||
layer_on(layer3);
|
||||
} else {
|
||||
layer_off(layer3);
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case COLEMAK:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_COLEMAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case DVORAK:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_DVORAK);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
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
|
||||
rgblight_mode_noeeprom(16);
|
||||
#endif
|
||||
}
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_mode_noeeprom(RGB_current_config.mode); // revert RGB to initial mode prior to RGB mode change
|
||||
#endif
|
||||
TOG_STATUS = false;
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
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
|
||||
rgblight_mode_noeeprom(15);
|
||||
#endif
|
||||
}
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_mode_noeeprom(RGB_current_config.mode); // revert RGB to initial mode prior to RGB mode change
|
||||
#endif
|
||||
layer_off(_RAISE);
|
||||
TOG_STATUS = false;
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJUST);
|
||||
} else {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
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_MOD:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode_noeeprom(RGB_current_config.mode);
|
||||
rgblight_step();
|
||||
RGB_current_config.mode = rgblight_config.mode;
|
||||
}
|
||||
#endif
|
||||
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 AQOURS:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
aqours_mode = !aqours_mode;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
case RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGB_current_config = rgblight_config;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
|
||||
void aqours_led(void) {
|
||||
aqours_next_color_timer_count++;
|
||||
//一定間隔で色が変化
|
||||
if (aqours_next_color_timer_count > NEXT_COLOR_TIME) {
|
||||
aqours_num++;
|
||||
aqours_next_color_timer_count = 0;
|
||||
target_col = 0;
|
||||
if (aqours_num == ARRAY_SIZE(aqours_h)) {
|
||||
aqours_num = 0;
|
||||
}
|
||||
}
|
||||
|
||||
//キー毎に時間差で色が変化していく
|
||||
if (aqours_next_color_timer_count % NEXT_CHANGE_TARGET_TIME == 0) {
|
||||
if (target_col < MATRIX_COLS) {
|
||||
sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[target_col]);
|
||||
sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[11 - target_col]);
|
||||
sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[12 + target_col]);
|
||||
sethsv(aqours_h[aqours_num], aqours_s[aqours_num], aqours_v[aqours_num], (rgb_led_t *)&led[23 - target_col]);
|
||||
target_col++;
|
||||
rgblight_set();
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (aqours_mode) {
|
||||
aqours_led();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_init();
|
||||
RGB_current_config = rgblight_config;
|
||||
#endif
|
||||
}
|
|
@ -1,123 +0,0 @@
|
|||
# The Default Zinc Layout
|
||||
## 配列
|
||||
|
||||
### Qwerty配列
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Esc | Fn | Alt | Win |Lower |Space | | Space| Raise| Left | Down | Up | Right|
|
||||
`------------------------------------------ ------------------------------------------'
|
||||
```
|
||||
|
||||
### Colemak
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| Tab | Q | W | F | P | G | | J | L | U | Y | ; | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | R | S | T | D | | H | N | E | I | O | ' |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | | K | M | , | . | / |Enter |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Esc |ADJUST| Alt | Win |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
|
||||
`------------------------------------------ ------------------------------------------'
|
||||
```
|
||||
|
||||
### Dvorak
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| Tab | ' | , | . | P | Y | | F | G | C | R | L | Del |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | O | E | U | I | | D | H | T | N | S | / |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Shift| ; | Q | J | K | X | | B | M | W | V | Z |Enter |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Esc |ADJUST| Alt | Win |LOWER |Space | | Space| RAISE| Left | Down | Up | Right|
|
||||
`-----------------------------------------' `-----------------------------------------'
|
||||
```
|
||||
|
||||
|
||||
## コンパイルの仕方
|
||||
|
||||
コンパイルは、qmk_firmware のトップディレクトリで行います。
|
||||
|
||||
```
|
||||
$ cd qmk_firmware
|
||||
```
|
||||
qmk_firmwareでは各キーボードのコンパイルは、`<キーボード名>:<キーマップ名>`という指定で行います。
|
||||
|
||||
```
|
||||
$ make zinc:default
|
||||
```
|
||||
|
||||
キーボードへの書き込みまで同時に行うには下記のように`:avrdude`を付けます。
|
||||
|
||||
```
|
||||
$ make zinc:default:avrdude
|
||||
```
|
||||
|
||||
コンパイル結果と中間生成物を消去したい場合は以下のようにします。
|
||||
|
||||
```
|
||||
$ make zinc:default:clean
|
||||
```
|
||||
|
||||
## カスタマイズ
|
||||
|
||||
コマンドラインからオプションを指定してビルドすることが出来ます。
|
||||
|
||||
```
|
||||
# Zinc keyboard 'default' keymap: convenient command line option
|
||||
make ZINC=<options> zinc:defualt
|
||||
# option= back | under | na | ios
|
||||
# ex.
|
||||
# make ZINC=under zinc:defualt
|
||||
# make ZINC=under,ios zinc:defualt
|
||||
# make ZINC=back zinc:default
|
||||
# make ZINC=back,na zinc:default
|
||||
# make ZINC=back,ios zinc:default
|
||||
```
|
||||
|
||||
あるいは`qmk_firmware/keyboards/zinc/rev1/keymaps/default/rules.mk` の以下の部分を直接編集して機能を有効化してください。
|
||||
|
||||
```
|
||||
# Zinc keyboard customize
|
||||
LED_BACK_ENABLE = no # LED backlight (Enable SK6812mini backlight)
|
||||
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)
|
||||
|
||||
|
||||
```
|
||||
|
||||
## RGB backlight を有効にする
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
```
|
||||
LED_BACK_ENABLE = yes # LED backlight (Enable SK6812mini backlight)
|
||||
```
|
||||
|
||||
|
||||
## RGB Underglow を有効にする
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
```
|
||||
LED_UNDERGLOW_ENABLE = yes # LED underglow (Enable WS2812 RGB underlight.)
|
||||
```
|
||||
|
||||
|
||||
## iPad/iPhoneサポートを有効にする。
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
RBG Underglow や RGBバックライトの輝度を抑えて、iPad, iPhone にも接続できるようになります。
|
||||
|
||||
```
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
```
|
|
@ -1,112 +0,0 @@
|
|||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
LTO_ENABLE = no # if firmware size over limit, try this option
|
||||
|
||||
define ZINC_CUSTOMISE_MSG
|
||||
$(info Zinc customize)
|
||||
$(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
|
||||
$(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
|
||||
$(info - LED_BOTH_ENABLE=$(LED_BOTH_ENABLE))
|
||||
$(info - LED_RGB_CONT=$(LED_RGB_CONT))
|
||||
$(info - LED_ANIMATION=$(LED_ANIMATIONS))
|
||||
$(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
|
||||
endef
|
||||
|
||||
# Zinc keyboard customize
|
||||
LED_BACK_ENABLE = no # LED backlight (Enable SK6812mini backlight)
|
||||
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight)
|
||||
LED_BOTH_ENABLE = no # LED backlight and underglow
|
||||
LED_RGB_CONT = no # LED continuous backlight or/and underglow between left Zinc and right Zinc
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
|
||||
#### Do not enable these with audio at the same time.
|
||||
|
||||
### Zinc keyboard 'default' keymap: convenient command line option
|
||||
## make ZINC=<options> zinc:defualt
|
||||
## option= back | under | both | cont | na | ios
|
||||
## ex.
|
||||
## make ZINC=under zinc:defualt
|
||||
## make ZINC=under,ios zinc:defualt
|
||||
## make ZINC=back zinc:default
|
||||
## make ZINC=back,na zinc:default
|
||||
## make ZINC=back,ios zinc:default
|
||||
|
||||
ifneq ($(strip $(ZINC)),)
|
||||
ifeq ($(findstring back,$(ZINC)), back)
|
||||
LED_BACK_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(findstring under,$(ZINC)), under)
|
||||
LED_UNDERGLOW_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(findstring both,$(ZINC)), both)
|
||||
LED_BOTH_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(findstring cont,$(ZINC)), cont)
|
||||
LED_RGB_CONT = yes
|
||||
endif
|
||||
ifeq ($(findstring na,$(ZINC)), na)
|
||||
LED_ANIMATIONS = no
|
||||
endif
|
||||
ifeq ($(findstring ios,$(ZINC)), ios)
|
||||
IOS_DEVICE_ENABLE = yes
|
||||
endif
|
||||
$(eval $(call ZINC_CUSTOMISE_MSG))
|
||||
$(info )
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_BACK_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
OPT_DEFS += -DRGBLED_BOTH
|
||||
$(info LED_BOTH_ENABLE option is enabled instead of LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE)
|
||||
else
|
||||
OPT_DEFS += -DRGBLED_BACK
|
||||
endif
|
||||
else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
else
|
||||
RGBLIGHT_ENABLE = no
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_BOTH_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
OPT_DEFS += -DRGBLED_BOTH
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_RGB_CONT)), yes)
|
||||
OPT_DEFS += -DRGBLED_CONT
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_ANIMATIONS)), yes)
|
||||
OPT_DEFS += -DLED_ANIMATIONS
|
||||
endif
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
|
||||
# Uncomment these for debugging
|
||||
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
|
||||
# $(info -- OPT_DEFS=$(OPT_DEFS))
|
||||
# $(info )
|
|
@ -1,36 +0,0 @@
|
|||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2018 monksoffunk
|
||||
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
|
||||
|
||||
// place overrides here
|
||||
// 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,256 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
//Following line allows macro to read current RGB settings
|
||||
extern rgblight_config_t rgblight_config;
|
||||
rgblight_config_t RGB_current_config;
|
||||
#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,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
QWERTY = SAFE_RANGE,
|
||||
COLEMAK,
|
||||
DVORAK,
|
||||
LOWER,
|
||||
RAISE,
|
||||
ADJUST,
|
||||
BACKLIT,
|
||||
KANA,
|
||||
EISU,
|
||||
RGBRST
|
||||
};
|
||||
|
||||
enum macro_keycodes {
|
||||
KC_SAMPLEMACRO,
|
||||
};
|
||||
|
||||
|
||||
//Macros
|
||||
#define M_SAMPLE M(KC_SAMPLEMACRO)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Qwerty
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Esc |ADJUST| Alt | GUI |LOWER |Space | | Space| RAISE| KANA | Left | Down | Right|
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT_ortho_4x12(
|
||||
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_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 ,
|
||||
KC_ESC, ADJUST, KC_LALT, KC_LGUI, LOWER, KC_SPC, KC_SPC, RAISE, KANA, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | - | _ | + | { | } | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | UP | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT_ortho_4x12(
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_MINS, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* Raise
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Del |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F1 | F2 | F3 | F4 | F5 | | F6 | - | = | [ | ] | \ |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | F7 | F8 | F9 | F10 | F11 | | F12 | | | | ? | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | | | | | Next | Vol- | Vol+ | Play |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT_ortho_4x12(
|
||||
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_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, _______, _______, _______, S(KC_SLSH), _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, KC_VOLD, KC_VOLU, KC_MPLY
|
||||
),
|
||||
|
||||
/* Adjust (Lower + Raise)
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | Reset|RGBRST| | | | | | | | | | Ins |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | |RGB ON| HUE+ | SAT+ | VAL+ | Mac | | Win | - | = |Print |ScLock|Pause |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | MODE | HUE- | SAT- | VAL- | | | | | | |PageUp| |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | EISU | EISU | EISU | | KANA | KANA | KANA | Home |PageDn| End |
|
||||
* `-----------------------------------------' `-----------------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT_ortho_4x12(
|
||||
_______, QK_BOOT, RGBRST, _______, _______, _______, _______, _______, _______, _______, _______, KC_INS,
|
||||
_______, RGB_TOG, RGB_HUI, RGB_SAI, RGB_VAI, AG_NORM, AG_SWAP, KC_MINS, KC_EQL, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
_______, RGB_MOD, RGB_HUD, RGB_SAD, RGB_VAD, _______, _______, _______, _______, _______, KC_PGUP, _______,
|
||||
_______, _______, _______, EISU, EISU, EISU, KANA, KANA, KANA, KC_HOME, KC_PGDN, KC_END
|
||||
)
|
||||
};
|
||||
|
||||
// define variables for reactive RGB
|
||||
bool TOG_STATUS = false;
|
||||
|
||||
|
||||
// Setting ADJUST layer RGB back to default
|
||||
void update_tri_layer_RGB(uint8_t layer1, uint8_t layer2, uint8_t layer3) {
|
||||
if (IS_LAYER_ON(layer1) && IS_LAYER_ON(layer2)) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_mode_noeeprom(RGB_current_config.mode);
|
||||
#endif
|
||||
layer_on(layer3);
|
||||
} else {
|
||||
layer_off(layer3);
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case QWERTY:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
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
|
||||
rgblight_mode_noeeprom(16);
|
||||
#endif
|
||||
}
|
||||
layer_on(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_mode_noeeprom(RGB_current_config.mode); // revert RGB to initial mode prior to RGB mode change
|
||||
#endif
|
||||
TOG_STATUS = false;
|
||||
layer_off(_LOWER);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
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
|
||||
rgblight_mode_noeeprom(15);
|
||||
#endif
|
||||
}
|
||||
layer_on(_RAISE);
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
} else {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_mode_noeeprom(RGB_current_config.mode); // revert RGB to initial mode prior to RGB mode change
|
||||
#endif
|
||||
layer_off(_RAISE);
|
||||
TOG_STATUS = false;
|
||||
update_tri_layer_RGB(_LOWER, _RAISE, _ADJUST);
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
case ADJUST:
|
||||
if (record->event.pressed) {
|
||||
layer_on(_ADJUST);
|
||||
} else {
|
||||
layer_off(_ADJUST);
|
||||
}
|
||||
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_MOD:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
rgblight_mode_noeeprom(RGB_current_config.mode);
|
||||
rgblight_step();
|
||||
RGB_current_config.mode = rgblight_config.mode;
|
||||
}
|
||||
#endif
|
||||
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 RGBRST:
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
if (record->event.pressed) {
|
||||
eeconfig_update_rgblight_default();
|
||||
rgblight_enable();
|
||||
RGB_current_config = rgblight_config;
|
||||
}
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
void matrix_init_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
rgblight_init();
|
||||
RGB_current_config = rgblight_config;
|
||||
#endif
|
||||
}
|
|
@ -1,103 +0,0 @@
|
|||
# monksoffunk's personal zinc Layout
|
||||
## 配列
|
||||
|
||||
### Qwerty配列
|
||||
|
||||
```
|
||||
,-----------------------------------------. ,-----------------------------------------.
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Ctrl | A | S | D | F | G | | H | J | K | L | ; | ' |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Shift| Z | X | C | V | B | | N | M | , | . | / |Enter |
|
||||
|------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
| Esc |ADJUST| Alt | GUI |LOWER |Space | | Space| RAISE| KANA | Left | Down | Right|
|
||||
`------------------------------------------ ------------------------------------------'
|
||||
```
|
||||
|
||||
KANAキーを独立させ、UPキーをLOWER+スラッシュに当てています。そのほかデフォルトからレイヤーをかなりいじっています。
|
||||
また、RGB LEDがアンコメントしてありますので、実装していない場合はソースを見て適宜コメントアウトしてください。
|
||||
|
||||
## コンパイルの仕方
|
||||
|
||||
コンパイルは、qmk_firmware のトップディレクトリで行います。
|
||||
|
||||
```
|
||||
$ cd qmk_firmware
|
||||
```
|
||||
qmk_firmwareでは各キーボードのコンパイルは、`<キーボード名>:<キーマップ名>`という指定で行います。
|
||||
|
||||
```
|
||||
$ make zinc:monks
|
||||
```
|
||||
|
||||
キーボードへの書き込みまで同時に行うには下記のように`:avrdude`を付けます。
|
||||
|
||||
```
|
||||
$ make zinc:monks:avrdude
|
||||
```
|
||||
|
||||
コンパイル結果と中間生成物を消去したい場合は以下のようにします。
|
||||
|
||||
```
|
||||
$ make zinc:monks:clean
|
||||
```
|
||||
|
||||
なお、avrdudeではなくQMK Toolbox(GUIツール)を使う方法もあります。
|
||||
|
||||
https://github.com/qmk/qmk_toolbox/releases
|
||||
|
||||
その場合は、$ make zinc:monksでビルドした成果物をQMK Toolboxから指定してください。
|
||||
|
||||
## カスタマイズ
|
||||
|
||||
コマンドラインからオプションを指定してビルドすることが出来ます。
|
||||
|
||||
```
|
||||
# Zinc keyboard 'monks' keymap: convenient command line option
|
||||
make ZINC=<options> zinc:monks
|
||||
# option= back | under | na | ios
|
||||
# ex.
|
||||
# make ZINC=under zinc:monks
|
||||
# make ZINC=under,ios zinc:monks
|
||||
# make ZINC=back zinc:monks
|
||||
# make ZINC=back,na zinc:monks
|
||||
# make ZINC=back,ios zinc:monks
|
||||
```
|
||||
|
||||
あるいは`qmk_firmware/keyboards/zinc/rev1/keymaps/monks/rules.mk` の以下の部分を編集して機能を有効化してください。
|
||||
|
||||
```
|
||||
# Zinc keyboard customize
|
||||
LED_BACK_ENABLE = no # LED backlight (Enable SK6812mini backlight)
|
||||
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)
|
||||
|
||||
|
||||
```
|
||||
|
||||
## RGB backlight を有効にする
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
```
|
||||
LED_BACK_ENABLE = yes # LED backlight (Enable SK6812mini backlight)
|
||||
```
|
||||
|
||||
|
||||
## RGB Underglow を有効にする
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
```
|
||||
LED_UNDERGLOW_ENABLE = yes # LED underglow (Enable WS2812 RGB underlight)
|
||||
```
|
||||
|
||||
|
||||
## iPad/iPhoneサポートを有効にする。
|
||||
|
||||
rules.mk の下記の部分を編集して no を yes に変更してください。
|
||||
RBG Underglow や RGBバックライトの輝度を抑えて、iPad, iPhone にも接続できるようになります。
|
||||
|
||||
```
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
```
|
|
@ -1,111 +0,0 @@
|
|||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
LTO_ENABLE = no # if firmware size over limit, try this option
|
||||
|
||||
define ZINC_CUSTOMISE_MSG
|
||||
$(info Zinc customize)
|
||||
$(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
|
||||
$(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
|
||||
$(info - LED_BOTH_ENABLE=$(LED_BOTH_ENABLE))
|
||||
$(info - LED_RGB_CONT=$(LED_RGB_CONT))
|
||||
$(info - LED_ANIMATION=$(LED_ANIMATIONS))
|
||||
$(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
|
||||
endef
|
||||
|
||||
# Zinc keyboard customize
|
||||
LED_BACK_ENABLE = no # LED backlight (Enable SK6812mini backlight)
|
||||
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight)
|
||||
LED_BOTH_ENABLE = no # LED backlight and underglow
|
||||
LED_RGB_CONT = no # LED continuous backlight or/and underglow between left Zinc and right Zinc
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
|
||||
#### Do not enable these with audio at the same time.
|
||||
|
||||
### Zinc keyboard 'default' keymap: convenient command line option
|
||||
## make ZINC=<options> zinc:defualt
|
||||
## option= back | under | both | cont | na | ios
|
||||
## ex.
|
||||
## make ZINC=under zinc:defualt
|
||||
## make ZINC=under,ios zinc:defualt
|
||||
## make ZINC=back zinc:default
|
||||
## make ZINC=back,na zinc:default
|
||||
## make ZINC=back,ios zinc:default
|
||||
|
||||
ifneq ($(strip $(ZINC)),)
|
||||
ifeq ($(findstring back,$(ZINC)), back)
|
||||
LED_BACK_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(findstring under,$(ZINC)), under)
|
||||
LED_UNDERGLOW_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(findstring both,$(ZINC)), both)
|
||||
LED_BOTH_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(findstring cont,$(ZINC)), cont)
|
||||
LED_RGB_CONT = yes
|
||||
endif
|
||||
ifeq ($(findstring na,$(ZINC)), na)
|
||||
LED_ANIMATIONS = no
|
||||
endif
|
||||
ifeq ($(findstring ios,$(ZINC)), ios)
|
||||
IOS_DEVICE_ENABLE = yes
|
||||
endif
|
||||
$(eval $(call ZINC_CUSTOMISE_MSG))
|
||||
$(info )
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_BACK_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
OPT_DEFS += -DRGBLED_BOTH
|
||||
$(info LED_BOTH_ENABLE option is enabled instead of LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE)
|
||||
else
|
||||
OPT_DEFS += -DRGBLED_BACK
|
||||
endif
|
||||
else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
else
|
||||
RGBLIGHT_ENABLE = no
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_BOTH_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
OPT_DEFS += -DRGBLED_BOTH
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_RGB_CONT)), yes)
|
||||
OPT_DEFS += -DRGBLED_CONT
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_ANIMATIONS)), yes)
|
||||
OPT_DEFS += -DLED_ANIMATIONS
|
||||
endif
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
# Uncomment these for debugging
|
||||
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
|
||||
# $(info -- OPT_DEFS=$(OPT_DEFS))
|
||||
# $(info )
|
|
@ -1,37 +0,0 @@
|
|||
/*
|
||||
This is the c configuration file for the keymap
|
||||
|
||||
Copyright 2019 Toshihiro Suzuki
|
||||
Copyright 2018 monksoffunk
|
||||
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
|
||||
|
||||
// place overrides here
|
||||
// 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,44 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
extern uint8_t is_master;
|
||||
|
||||
enum layer_names {
|
||||
_BASE,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
#define ADJUST MO(_ADJUST)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_ortho_4x12(
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, SFT_T(KC_SCLN), KC_RGUI,
|
||||
KC_SPC, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_RCTL, KC_DOT, KC_RALT, RGUI(KC_RSFT),
|
||||
KC_LGUI, KC_LALT, _______, _______, LOWER, KC_ENT, KC_ENT, RAISE, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_ortho_4x12(
|
||||
KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, RCMD(RALT(KC_O)), RCMD(RALT(KC_L)), _______,
|
||||
_______, KC_LT, KC_GT, KC_LPRN, KC_RPRN, KC_GRV, KC_MINS, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_PIPE,
|
||||
KC_LALT, _______, _______, _______, KC_EQL, KC_QUES, KC_UNDS, KC_PLUS, KC_COMM, _______, KC_SLSH, _______,
|
||||
_______, _______, _______, _______, _______, KC_TRNS, KC_TRNS, KC_RGUI, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_ortho_4x12(
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||
_______, KC_COLN, KC_SCLN, KC_DQT, KC_QUOT, KC_BSLS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, ADJUST, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, KC_LGUI, KC_TRNS, KC_TRNS, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_ortho_4x12(
|
||||
_______, _______, _______, _______, RCMD(LALT(KC_1)), RCMD(LALT(KC_2)), RCMD(LALT(KC_3)), RCMD(LALT(KC_4)), RCMD(LALT(KC_5)), RCMD(LALT(KC_6)), RCMD(LALT(KC_7)), RCMD(LALT(KC_0)),
|
||||
RGB_SAI, RGB_HUI, RGB_MOD, _______, RGB_TOG, RGB_VAI, RGB_VAD, RGB_SAD, RGB_HUD, RGB_RMOD, _______, _______,
|
||||
KC_MUTE, KC_VOLD, KC_VOLU, KC_BRID, KC_BRIU, QK_BOOT, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
|
@ -1,130 +0,0 @@
|
|||
# Build Options
|
||||
# change to "no" to disable the options, or define them in the Makefile in
|
||||
# the appropriate keymap folder that will get included automatically
|
||||
#
|
||||
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = no # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
NKRO_ENABLE = no # Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI controls
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight. Do not enable this with audio at the same time.
|
||||
SWAP_HANDS_ENABLE = no # Enable one-hand typing
|
||||
LTO_ENABLE = no # if firmware size over limit, try this option
|
||||
|
||||
define ZINC_CUSTOMISE_MSG
|
||||
$(info Zinc customize)
|
||||
$(info - LED_BACK_ENABLE=$(LED_BACK_ENABLE))
|
||||
$(info - LED_UNDERGLOW_ENABLE=$(LED_UNDERGLOW_ENABLE))
|
||||
$(info - LED_BOTH_ENABLE=$(LED_BOTH_ENABLE))
|
||||
$(info - LED_RGB_CONT=$(LED_RGB_CONT))
|
||||
$(info - RGB_MATRIX=$(RGB_MATRIX))
|
||||
$(info - LED_ANIMATION=$(LED_ANIMATIONS))
|
||||
$(info - IOS_DEVICE_ENABLE=$(IOS_DEVICE_ENABLE))
|
||||
endef
|
||||
|
||||
# Zinc keyboard customize
|
||||
LED_BACK_ENABLE = no # LED backlight (Enable SK6812mini backlight)
|
||||
LED_UNDERGLOW_ENABLE = no # LED underglow (Enable WS2812 RGB underlight)
|
||||
LED_BOTH_ENABLE = no # LED backlight and underglow
|
||||
LED_RGB_CONT = no # LED continuous backlight or/and underglow between left Zinc and right Zinc
|
||||
RGB_MATRIX = no # RGB LED Matrix
|
||||
RGB_MATRIX_SPLIT_RIGHT = no # RGB Matrix for RIGHT Hand
|
||||
LED_ANIMATIONS = yes # LED animations
|
||||
IOS_DEVICE_ENABLE = no # connect to IOS device (iPad,iPhone)
|
||||
|
||||
#### LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE.
|
||||
#### Do not enable these with audio at the same time.
|
||||
|
||||
### Zinc keyboard 'default' keymap: convenient command line option
|
||||
## make ZINC=<options> zinc:defualt
|
||||
## option= back | under | both | cont | matrix | na | ios
|
||||
## ex.
|
||||
## make ZINC=under zinc:defualt
|
||||
## make ZINC=under,ios zinc:defualt
|
||||
## make ZINC=back zinc:default
|
||||
## make ZINC=back,na zinc:default
|
||||
## make ZINC=back,ios zinc:default
|
||||
|
||||
ifneq ($(strip $(ZINC)),)
|
||||
ifeq ($(findstring back,$(ZINC)), back)
|
||||
LED_BACK_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(findstring under,$(ZINC)), under)
|
||||
LED_UNDERGLOW_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(findstring both,$(ZINC)), both)
|
||||
LED_BOTH_ENABLE = yes
|
||||
endif
|
||||
ifeq ($(findstring cont,$(ZINC)), cont)
|
||||
LED_RGB_CONT = yes
|
||||
endif
|
||||
ifeq ($(findstring matrix,$(ZINC)), matrix)
|
||||
RGB_MATRIX = yes
|
||||
endif
|
||||
ifeq ($(findstring right,$(ZINC)), right)
|
||||
RGB_MATRIX_SPLIT_RIGHT = yes
|
||||
endif
|
||||
ifeq ($(findstring na,$(ZINC)), na)
|
||||
LED_ANIMATIONS = no
|
||||
endif
|
||||
ifeq ($(findstring ios,$(ZINC)), ios)
|
||||
IOS_DEVICE_ENABLE = yes
|
||||
endif
|
||||
$(eval $(call ZINC_CUSTOMISE_MSG))
|
||||
$(info )
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_BACK_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
OPT_DEFS += -DRGBLED_BOTH
|
||||
$(info LED_BOTH_ENABLE option is enabled instead of LED_BACK_ENABLE and LED_UNDERGLOW_ENABLE)
|
||||
else
|
||||
OPT_DEFS += -DRGBLED_BACK
|
||||
endif
|
||||
else ifeq ($(strip $(LED_UNDERGLOW_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
else
|
||||
RGBLIGHT_ENABLE = no
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_BOTH_ENABLE)), yes)
|
||||
RGBLIGHT_ENABLE = yes
|
||||
OPT_DEFS += -DRGBLED_BOTH
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_RGB_CONT)), yes)
|
||||
OPT_DEFS += -DRGBLED_CONT
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX)), yes)
|
||||
RGBLIGHT_ENABLE = no
|
||||
RGB_MATRIX_ENABLE = yes
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(IOS_DEVICE_ENABLE)), yes)
|
||||
OPT_DEFS += -DIOS_DEVICE_ENABLE
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(LED_ANIMATIONS)), yes)
|
||||
OPT_DEFS += -DLED_ANIMATIONS
|
||||
endif
|
||||
|
||||
ifeq ($(strip $(RGB_MATRIX_SPLIT_RIGHT)), yes)
|
||||
OPT_DEFS += -DRGB_MATRIX_SPLIT_RIGHT
|
||||
endif
|
||||
|
||||
# Do not enable SLEEP_LED_ENABLE. it uses the same timer as BACKLIGHT_ENABLE
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend
|
||||
|
||||
|
||||
# Uncomment these for debugging
|
||||
# $(info -- RGBLIGHT_ENABLE=$(RGBLIGHT_ENABLE))
|
||||
# $(info -- OPT_DEFS=$(OPT_DEFS))
|
||||
# $(info )
|
|
@ -1,26 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5,
|
||||
KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENTER),
|
||||
|
||||
};
|
||||
|
||||
void matrix_init_user(void) {
|
||||
debug_config.matrix = 1;
|
||||
debug_config.keyboard = 1;
|
||||
debug_config.enable = 1;
|
||||
}
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) {
|
||||
if (clockwise) {
|
||||
tap_code16(C(KC_T));
|
||||
} else {
|
||||
tap_code16(C(KC_W));
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
|
@ -1,26 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
LAYOUT(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5,
|
||||
KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENTER),
|
||||
|
||||
};
|
||||
|
||||
void matrix_init_user(void) {
|
||||
debug_config.matrix = 1;
|
||||
debug_config.keyboard = 1;
|
||||
debug_config.enable = 1;
|
||||
}
|
||||
|
||||
bool encoder_update_user(uint8_t index, bool clockwise) {
|
||||
if (index == 0) {
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
|
@ -1,18 +0,0 @@
|
|||
CB(open_round_brackets_combo, KC_LPRN, KC_R, KC_T)
|
||||
CB(open_square_brackets_combo, KC_LBRC, KC_F, KC_G)
|
||||
CB(open_curly_brackets_combo, KC_LCBR, KC_V, KC_B)
|
||||
CB(close_round_brackets_combo, KC_RPRN, KC_Y, KC_U)
|
||||
CB(close_square_brackets_combo, KC_RBRC, KC_H, KC_J)
|
||||
CB(close_curly_brackets_combo, KC_RCBR, KC_N, KC_M)
|
||||
|
||||
CB(esc_combo, KC_ESC, KC_Q, KC_A)
|
||||
CB(tab_combo, KC_TAB, KC_A, LSFT_T(KC_Z))
|
||||
|
||||
CB(single_quote_combo, KC_QUOT, KC_P, KC_SCLN)
|
||||
CB(double_quote_combo, KC_DQUO, KC_SCLN, RSFT_T(KC_SLSH))
|
||||
|
||||
CB(plus_combo, KC_PLUS, KC_T, KC_G)
|
||||
CB(asterisk_combo, KC_ASTR, KC_G, KC_B)
|
||||
|
||||
CB(minus_combo, KC_MINS, KC_Y, KC_H)
|
||||
CB(equal_combo, KC_EQL, KC_H, KC_N)
|
|
@ -1,33 +0,0 @@
|
|||
/* Copyright 2021 HellSingCoder
|
||||
*
|
||||
* 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 CB(name, action, ...) C_##name,
|
||||
enum user_combos {
|
||||
#include "combos.def"
|
||||
};
|
||||
#undef CB
|
||||
|
||||
#define CB(name, action, ...) const uint16_t PROGMEM name##_combo[] = {__VA_ARGS__, COMBO_END};
|
||||
#include "combos.def"
|
||||
#undef CB
|
||||
|
||||
combo_t key_combos[] = {
|
||||
#define CB(name, action, ...) COMBO(name##_combo, action),
|
||||
#include "combos.def"
|
||||
#undef CB
|
||||
};
|
|
@ -1,20 +0,0 @@
|
|||
/* Copyright 2021 HellSingCoder
|
||||
*
|
||||
* 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
|
||||
|
||||
/* Combo timer */
|
||||
#define COMBO_TERM 15
|
|
@ -1,168 +0,0 @@
|
|||
/* Copyright 2021 HellSingCoder
|
||||
*
|
||||
* 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
|
||||
|
||||
#ifdef COMBO_ENABLE
|
||||
# include "combos.h"
|
||||
#endif
|
||||
|
||||
enum layers
|
||||
{
|
||||
_ALPHA_QWERTY = 0,
|
||||
_SYM,
|
||||
_NAV,
|
||||
_NUM,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
KC_THUMB_SWAP,
|
||||
};
|
||||
|
||||
/* Space Enter swap */
|
||||
bool swap_space_enter = false;
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/*
|
||||
* QWERTY
|
||||
*
|
||||
* _____________________ _____________________
|
||||
* __|__ | | __|__
|
||||
* _____ | | v v | | _____
|
||||
* .-----| E |-----._____ _____.-----| I |-----.
|
||||
* .-----| W |_____| R | T | __ ( ) __ | Y | U |_____| O |-----.
|
||||
* __ | Q |-----| D |-----|_____| __|--> + - <--|__ |_____|-----| K |-----| P | __
|
||||
* ESC <--|__ |-----| S |_____| F | G | [ ] | H | J |_____| L |-----| __|--> '
|
||||
* __ | A |-----| C |-----|_____| __ __ |_____|-----| , < |-----| ; : | __
|
||||
* TAB <--|__ |-----| X |_____| V | B | __|--> * { } = <--|__ | N | M |_____| . > |-----| __|--> "
|
||||
* | Z |-----' '-----|_____| |_____|-----' '-----| / ? |
|
||||
* '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
|
||||
* | | WIN ||CTRL | / / \ \ | BSp || Del | |
|
||||
* SHIFT '-----':_____|/ ENT / \ SPC \|_____:'-----' SHIFT
|
||||
* | '--.._/ \_..--' | |
|
||||
* NUM NAV SYM
|
||||
*/
|
||||
[_ALPHA_QWERTY] = 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 ,
|
||||
LSFT_T(KC_Z), KC_X , KC_C , KC_V , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , RSFT_T(KC_SLSH),
|
||||
LT(_NUM, KC_LGUI), KC_LCTL, KC_ENT, KC_SPC, LT(_NAV, KC_BSPC), LT(_SYM, KC_DEL)
|
||||
),
|
||||
|
||||
/*
|
||||
* Symbols
|
||||
* _____ _____
|
||||
* .-----| # |-----._____ _____.-----| * |-----.
|
||||
* .-----| @ |_____| $ | % | | ^ | & |_____| ( |-----.
|
||||
* | ! |-----| |-----|_____| |_____|-----| [ { |-----| ) |
|
||||
* |-----| |_____| | | | { | } |_____| ] } |-----|
|
||||
* | ` ~ |-----| |-----|_____| |_____|-----| |-----| ' " |
|
||||
* |-----| |_____| | | | - _ | = + |_____| | |-----|
|
||||
* | ~ |-----' '-----|_____| |_____|-----' '-----| \ | |
|
||||
* '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
|
||||
* SHIFT | ||CTRL | / / \ \ | BSp || | SHIFT
|
||||
* '-----':_____|/ ENT / \ SPC \|_____:'-----'
|
||||
* '--.._/ \_..--'
|
||||
*/
|
||||
[_SYM] = LAYOUT(
|
||||
KC_EXLM, KC_AT , KC_HASH, KC_DLR , KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN ,
|
||||
KC_GRV , XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_QUOT ,
|
||||
LSFT_T(KC_TILD), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL , XXXXXXX, KC_PIPE, RSFT_T(KC_BSLS),
|
||||
XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX
|
||||
),
|
||||
|
||||
/*
|
||||
* Navigation
|
||||
* _____ _____
|
||||
* .-----|Mute |-----._____ _____.-----| Up |-----.
|
||||
* .-----|VDown|_____| VUp | | | |PDown|_____| PUp |-----.
|
||||
* | Esc |-----|Play |-----|_____| |_____|-----|Down |-----| BSp |
|
||||
* |-----|Prev |_____|Next | | |Home |Left |_____|Right|-----|
|
||||
* | Tab |-----|Stop |-----|_____| |_____|-----| |-----| ' " |
|
||||
* |-----| |_____| | | | | |_____| End |-----|
|
||||
* | CPS |-----' '-----|_____| |_____|-----' '-----| Del |
|
||||
* '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
|
||||
* SHIFT | ||CTRL | / / \ \ | BSp || | SHIFT
|
||||
* '-----':_____|/ ENT / \ SPC \|_____:'-----'
|
||||
* '--.._/ \_..--'
|
||||
*/
|
||||
[_NAV] = LAYOUT(
|
||||
KC_ESC , KC_VOLD, KC_MUTE, KC_VOLU, XXXXXXX, XXXXXXX, KC_PGDN, KC_UP , KC_PGUP, KC_BSPC,
|
||||
KC_TAB , KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_QUOT,
|
||||
LSFT_T(KC_CAPS), XXXXXXX, KC_MSTP, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_END , RSFT_T(KC_DEL) ,
|
||||
XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX
|
||||
),
|
||||
|
||||
/*
|
||||
* Numbers
|
||||
* _____ _____
|
||||
* .-----| 3 |-----._____ _____.-----| 8 |-----.
|
||||
* .-----| 2 |_____| 4 | 5 | | 6 | 7 |_____| 9 |-----.
|
||||
* | 1 |-----| F3 |-----|_____| |_____|-----| F8 |-----| 0 |
|
||||
* |-----| F2 |_____| F4 | F5 | | F6 | F7 |_____| F9 |-----|
|
||||
* | F1 |-----| Scr |-----|_____| |_____|-----| |-----| F10 |
|
||||
* |-----| TMg |_____| |Swap | | | |_____| F11 |-----|
|
||||
* |Shift|-----' '-----|_____| |_____|-----' '-----| F12 |
|
||||
* '-----' .-----. _____ .-.._ _..-. _____ .-----. '-----'
|
||||
* | ||CTRL | / / \ \ | BSp || | SHIFT
|
||||
* '-----':_____|/ ENT / \ SPC \|_____:'-----'
|
||||
* '--.._/ \_..--'
|
||||
*/
|
||||
[_NUM] = LAYOUT(
|
||||
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_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 ,
|
||||
KC_LSFT, LCA(KC_DEL), SWIN(KC_S), XXXXXXX, KC_THUMB_SWAP, XXXXXXX, XXXXXXX, XXXXXXX, KC_F11 , RSFT_T(KC_F12) ,
|
||||
XXXXXXX, _______, _______, _______, KC_BSPC, XXXXXXX
|
||||
),
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
|
||||
/* Space Enter swap */
|
||||
case KC_THUMB_SWAP:
|
||||
if (record->event.pressed) {
|
||||
unregister_code(KC_SPC);
|
||||
unregister_code(KC_ENT);
|
||||
swap_space_enter = !swap_space_enter;
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
|
||||
case KC_ENT:
|
||||
if (swap_space_enter) {
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_SPC);
|
||||
} else {
|
||||
unregister_code(KC_SPC);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
case KC_SPC:
|
||||
if (swap_space_enter) {
|
||||
if (record->event.pressed) {
|
||||
register_code(KC_ENT);
|
||||
} else {
|
||||
unregister_code(KC_ENT);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
# Combos
|
||||
COMBO_ENABLE = yes
|
|
@ -1 +0,0 @@
|
|||
# The default macro keymap for 25
|
|
@ -1,23 +0,0 @@
|
|||
/* Copyright 2018
|
||||
*
|
||||
* 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_macro( /* Base */
|
||||
KC_F19, KC_F20, KC_F21,
|
||||
KC_F22, KC_F23, KC_F24
|
||||
),
|
||||
};
|
|
@ -1 +0,0 @@
|
|||
# The default single board macro keymap for 6lit
|
|
@ -1,24 +0,0 @@
|
|||
/* Copyright 2018
|
||||
*
|
||||
* 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_macro( /* Base */
|
||||
KC_F13, KC_F14, KC_F15, KC_F16, KC_INT1,
|
||||
KC_F17, KC_F18, KC_F19, KC_F20, KC_INT2,
|
||||
KC_F21, KC_F22, KC_F23, KC_F14, KC_INT5
|
||||
),
|
||||
};
|
|
@ -1 +0,0 @@
|
|||
# The default single board macro keymap for foobar
|
|
@ -1,19 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#undef WS2812_DI_PIN
|
||||
#undef RGBLED_NUM
|
||||
#define WS2812_DI_PIN D2
|
||||
# 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 RGBLED_NUM 8
|
||||
#define RGBLIGHT_HUE_STEP 8
|
||||
#define RGBLIGHT_SAT_STEP 8
|
||||
#define RGBLIGHT_VAL_STEP 8
|
|
@ -1,145 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
extern rgblight_config_t rgblight_config;
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
#define _PS 0 // This is the Photoshop Layer
|
||||
#define _AI 1 // This is the Illustrator Layer
|
||||
#define _PR 2 // This is the Premier Layer
|
||||
#define _XD 3 // This is the Experience Design Layer
|
||||
|
||||
enum custom_keycodes {
|
||||
PS = SAFE_RANGE,
|
||||
AI,
|
||||
PR,
|
||||
MACRO_0,
|
||||
};
|
||||
|
||||
#define PS TO(0)
|
||||
#define AI TO(1)
|
||||
#define PR TO(2)
|
||||
#define XD TO(3)
|
||||
|
||||
// Mix of Photoshop, Illustrator, Premiere, and Experience Design shortcuts.
|
||||
#define SAVE LCTL(KC_S)
|
||||
#define OPEN LCTL(KC_O)
|
||||
#define COPY LCTL(KC_C)
|
||||
#define PAST LCTL(KC_V)
|
||||
#define CUNDO LCTL(LALT(KC_Z))
|
||||
#define INVERT LCTL(LSFT(KC_I))
|
||||
#define NLAYER LSFT(LCTL(KC_N))
|
||||
#define UNDO LCTL(KC_Z)
|
||||
#define TRANS LCTL(KC_T)
|
||||
#define ALIGNL LCTL(LSFT(KC_L))
|
||||
#define ALIGNC LCTL(LSFT(KC_C))
|
||||
#define ALIGNR LCTL(LSFT(KC_R))
|
||||
#define BRINGF LCTL(KC_RBRC)
|
||||
#define BRINGB LCTL(KC_LBRC)
|
||||
|
||||
// Illustrator layer shortcuts.
|
||||
#define SHAPE LSFT(KC_M)
|
||||
#define RULER LCTL(LALT(KC_R))
|
||||
|
||||
// Premiere layer shortcuts.
|
||||
#define REDO LCTL(LSFT(KC_Z))
|
||||
#define EXPORT LCTL(KC_M)
|
||||
#define IMPORT LCTL(KC_I)
|
||||
#define PCOPY LCTL(KC_V)
|
||||
#define PPASTE LCTL(LSFT(KC_V))
|
||||
|
||||
// Experience Design layer shortcuts. (can be used with others too.)
|
||||
#define NEW LCTL(KC_N)
|
||||
#define LOCK LCTL(KC_L)
|
||||
#define SYMB LCTL(KC_K)
|
||||
#define HIDE LCTL(KC_SCLN)
|
||||
#define REPEAT LCTL(KC_R)
|
||||
#define MASK LCTL(LSFT(KC_M))
|
||||
#define GROUP LCTL(KC_G)
|
||||
#define UNGRP LCTL(LSFT(KC_G))
|
||||
#define VIEW LCTL(KC_TAB)
|
||||
#define HORZ LSFT(KC_C)
|
||||
#define VERT LSFT(KC_M)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
// Photoshop layer
|
||||
[_PS] = LAYOUT_ortho_3x10(
|
||||
SAVE, KC_W, KC_E, KC_T, KC_U, KC_I, KC_P, INVERT, CUNDO, NLAYER,
|
||||
UNDO, KC_H, KC_L, TRANS, ALIGNL, ALIGNC, ALIGNR, BRINGB, BRINGF, OPEN,
|
||||
KC_LSFT, COPY, PAST, KC_Z, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, AI
|
||||
),
|
||||
|
||||
// Illustrator layer
|
||||
[_AI] = LAYOUT_ortho_3x10(
|
||||
_______, MACRO_0, RULER, _______, KC_G, _______, _______, KC_Q, KC_MINS, KC_PLUS,
|
||||
_______, _______, _______, KC_E, _______, _______, _______, SHAPE, KC_O, OPEN,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_M, KC_SLSH, PR
|
||||
),
|
||||
|
||||
// Premiere layer
|
||||
[_PR] = LAYOUT_ortho_3x10(
|
||||
_______, KC_Q, KC_W, KC_I, KC_O, KC_P, IMPORT, EXPORT, KC_MINS, KC_EQL,
|
||||
_______, REDO, KC_D, KC_F, KC_H, KC_M, KC_ENT, KC_LBRC, KC_RBRC, OPEN,
|
||||
_______, PCOPY, PPASTE, KC_SPC, KC_Z, KC_C, KC_V, KC_LEFT, KC_RIGHT, XD
|
||||
),
|
||||
|
||||
// Experience Design layer
|
||||
[_XD] = LAYOUT_ortho_3x10(
|
||||
_______, KC_E, KC_R, KC_T, KC_P, KC_A, KC_L, KC_V, KC_DEL, NEW,
|
||||
_______, REDO, GROUP, UNGRP, VIEW, HORZ, VERT, KC_Z, KC_ENT, OPEN,
|
||||
_______, KC_LCTL, COPY, PAST, SYMB, LOCK, MASK, HIDE, REPEAT, PS
|
||||
),
|
||||
|
||||
};
|
||||
|
||||
void persistent_default_layer_set(uint16_t default_layer) {
|
||||
eeconfig_update_default_layer(default_layer);
|
||||
default_layer_set(default_layer);
|
||||
}
|
||||
|
||||
void matrix_init_user(void) {
|
||||
rgblight_enable();
|
||||
}
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
|
||||
static uint8_t old_layer = 255;
|
||||
uint8_t new_layer = get_highest_layer(layer_state);
|
||||
|
||||
// Color of the Icons.
|
||||
if (old_layer != new_layer) {
|
||||
switch (new_layer) {
|
||||
case _PS:
|
||||
// #31C5F0
|
||||
rgblight_setrgb(49, 197, 240);
|
||||
break;
|
||||
case _AI:
|
||||
// #FF8011
|
||||
rgblight_setrgb(255, 128, 17);
|
||||
break;
|
||||
case _PR:
|
||||
// #E788FF
|
||||
rgblight_setrgb(231, 136, 255);
|
||||
break;
|
||||
case _XD:
|
||||
// #FF2BC2
|
||||
rgblight_setrgb(255, 43, 194);
|
||||
break;
|
||||
}
|
||||
old_layer = new_layer;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
switch(keycode) {
|
||||
case MACRO_0:
|
||||
// Save for Web Macro.
|
||||
SEND_STRING(SS_LSFT(SS_LALT(SS_LCTL("s"))));
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
};
|
|
@ -1,3 +0,0 @@
|
|||
BACKLIGHT_ENABLE = yes
|
||||
AUDIO_ENABLE = no
|
||||
RGBLIGHT_ENABLE = yes
|
|
@ -1,22 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#undef WS2812_DI_PIN
|
||||
#undef RGBLED_NUM
|
||||
#define WS2812_DI_PIN D3
|
||||
# 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 RGBLED_NUM 10
|
||||
|
||||
/* Make layout upside down = USB port on left side */
|
||||
#undef MATRIX_ROW_PINS
|
||||
#undef MATRIX_COL_PINS
|
||||
#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 }
|
||||
#define MATRIX_COL_PINS { D0, D4, C6, D7, E6, B4 }
|
|
@ -1,8 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ortho_3x10(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, LT(1, KC_ENT), LSFT_T(KC_Z), LALT_T(KC_X), LGUI_T(KC_C), KC_V, KC_BSPC, KC_SPC, RGUI_T(KC_B), LT(3, KC_N), LT(2, KC_M), KC_RSFT),
|
||||
[1] = LAYOUT_ortho_3x10(KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, RGB_TOG, RGB_MOD, RGB_HUI, RGB_HUD, RGB_SAI, RGB_SAD, RGB_VAI, RGB_VAD, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT),
|
||||
[2] = LAYOUT_ortho_3x10(KC_ESC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LBRC, KC_NO, KC_SCLN, KC_NO, KC_QUOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT),
|
||||
[3] = LAYOUT_ortho_3x10(KC_TAB, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO)
|
||||
};
|
|
@ -1,3 +0,0 @@
|
|||
BACKLIGHT_ENABLE = no
|
||||
AUDIO_ENABLE = no
|
||||
RGBLIGHT_ENABLE = yes
|
|
@ -1,24 +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
|
||||
|
||||
#undef TAPPING_TERM
|
||||
#define TAPPING_TERM 190
|
||||
|
||||
#define MUSIC_MASK (keycode != KC_NO)
|
||||
#define MIDI_ADVANCED
|
|
@ -1,115 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layer_number {
|
||||
_IONIAN = 0,
|
||||
_DORIAN,
|
||||
_PHRYGIAN,
|
||||
_LYDIAN,
|
||||
_MIXOLYDIAN,
|
||||
_AEOLIAN,
|
||||
_LOCRIAN,
|
||||
_MENU
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
IONIAN = SAFE_RANGE,
|
||||
DORIAN,
|
||||
PHRYGIAN,
|
||||
LYDIAN,
|
||||
MIXOLYDIAN,
|
||||
AEOLIAN,
|
||||
LOCRIAN,
|
||||
};
|
||||
|
||||
#define MENU MO(_MENU)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_IONIAN] = LAYOUT_ortho_3x10(
|
||||
MI_C1, MI_F1, MI_B1, MI_E2, MI_A2, MI_D3, MI_G3, MI_C4, MI_OCTD, MI_OCTU,
|
||||
MI_D1, MI_G1, MI_C2, MI_F2, MI_B2, MI_E3, MI_A3, MI_D4, MI_TRSD, MI_TRSU,
|
||||
MI_E1, MI_A1, MI_D2, MI_G2, MI_C3, MI_F3, MI_B3, MI_E4, MI_SUST, MENU
|
||||
),
|
||||
|
||||
[_DORIAN] = LAYOUT_ortho_3x10(
|
||||
MI_C1, MI_F1, MI_As1, MI_Ds2, MI_A2, MI_D3, MI_G3, MI_C4, _______, _______,
|
||||
MI_D1, MI_G1, MI_C2, MI_F2, MI_As2, MI_Ds3, MI_A3, MI_D4, _______, _______,
|
||||
MI_Ds1, MI_A1, MI_D2, MI_G2, MI_C3, MI_F3, MI_As3, MI_Ds4, _______, _______
|
||||
),
|
||||
|
||||
[_PHRYGIAN] = LAYOUT_ortho_3x10(
|
||||
MI_C1, MI_F1, MI_As1, MI_Ds2, MI_Gs2, MI_Cs3, MI_G3, MI_C4, _______, _______,
|
||||
MI_Cs1, MI_G1, MI_C2, MI_F2, MI_As2, MI_Ds3, MI_Gs3, MI_Cs4, _______, _______,
|
||||
MI_Ds1, MI_Gs1, MI_Cs2, MI_G2, MI_C3, MI_F3, MI_As3, MI_Ds4, _______, _______
|
||||
),
|
||||
|
||||
[_LYDIAN] = LAYOUT_ortho_3x10(
|
||||
MI_C1, MI_Fs1, MI_B1, MI_E2, MI_A2, MI_D3, MI_G3, MI_C4, _______, _______,
|
||||
MI_D1, MI_G1, MI_C2, MI_Fs2, MI_B2, MI_E3, MI_A3, MI_D4, _______, _______,
|
||||
MI_E1, MI_A1, MI_D2, MI_G2, MI_C3, MI_Fs3, MI_B3, MI_E4, _______, _______
|
||||
),
|
||||
|
||||
[_MIXOLYDIAN] = LAYOUT_ortho_3x10(
|
||||
MI_C1, MI_F1, MI_As1, MI_E2, MI_A2, MI_D3, MI_G3, MI_C4, _______, _______,
|
||||
MI_D1, MI_G1, MI_C2, MI_F2, MI_As2, MI_E3, MI_A3, MI_D4, _______, _______,
|
||||
MI_E1, MI_A1, MI_D2, MI_G2, MI_C3, MI_F3, MI_As3, MI_E4, _______, _______
|
||||
),
|
||||
|
||||
[_AEOLIAN] = LAYOUT_ortho_3x10(
|
||||
MI_C1, MI_F1, MI_As1, MI_Ds2, MI_Gs2, MI_D3, MI_G3, MI_C4, _______, _______,
|
||||
MI_D1, MI_G1, MI_C2, MI_F2, MI_As2, MI_Ds3, MI_Gs3, MI_D4, _______, _______,
|
||||
MI_Ds1, MI_Gs1, MI_D2, MI_G2, MI_C3, MI_F3, MI_As3, MI_Ds4, _______, _______
|
||||
),
|
||||
|
||||
[_LOCRIAN] = LAYOUT_ortho_3x10(
|
||||
MI_C1, MI_F1, MI_As1, MI_Ds2, MI_Gs2, MI_Cs3, MI_Fs3, MI_C4, _______, _______,
|
||||
MI_Cs1, MI_Fs1, MI_C2, MI_F2, MI_As2, MI_Ds3, MI_Gs3, MI_Cs4, _______, _______,
|
||||
MI_Ds1, MI_Gs1, MI_Cs2, MI_Fs2, MI_C3, MI_F3, MI_As3, MI_Ds4, _______, _______
|
||||
),
|
||||
|
||||
[_MENU] = LAYOUT_ortho_3x10(
|
||||
IONIAN, LYDIAN, LOCRIAN, _______, _______, _______, _______, _______, _______, _______,
|
||||
DORIAN, MIXOLYDIAN, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
PHRYGIAN, AEOLIAN, _______, _______, _______, _______, _______, _______, QK_BOOT, _______
|
||||
)
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case IONIAN:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_IONIAN);
|
||||
}
|
||||
break;
|
||||
case DORIAN:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_DORIAN);
|
||||
}
|
||||
break;
|
||||
case PHRYGIAN:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_PHRYGIAN);
|
||||
}
|
||||
break;
|
||||
case LYDIAN:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_LYDIAN);
|
||||
}
|
||||
break;
|
||||
case MIXOLYDIAN:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_MIXOLYDIAN);
|
||||
}
|
||||
break;
|
||||
case AEOLIAN:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_AEOLIAN);
|
||||
}
|
||||
break;
|
||||
case LOCRIAN:
|
||||
if (record->event.pressed) {
|
||||
set_single_persistent_default_layer(_LOCRIAN);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
### Gherkin Midi
|
||||
A gherkin midi layout that should cover most midi note playing needs.
|
||||
|
||||
A 3x8 grid of notes written bottom left to right upwards as notes for the selected mode, with octave and transpose note controls at the top. Menu accesses other mode layouts, persisted to keyboard settings, and a reset for firmware programming.
|
||||
|
||||
Modes are set by pressing Menu and their corresponding note from the C Ionian layout. That is, for Aeolian, press Menu and A 1. For Phrygian, press Menu and E 1.
|
||||
|
||||
#### Keyboard Default Layout
|
||||
![](https://i.imgur.com/VNc0GsI.jpg)
|
||||
|
||||
Keyboard Editor Gist [link](https://gist.github.com/scottsheffield/c57859fe1a85d703f5387bf8ce41028c)
|
||||
|
||||
#### Glamour Shot
|
||||
![](https://i.imgur.com/B3Q4JoU.jpg)
|
|
@ -1,8 +0,0 @@
|
|||
BOOTMAGIC_ENABLE = no # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
EXTRAKEY_ENABLE = no # Audio control and System control(+450)
|
||||
CONSOLE_ENABLE = no # Console for debug(+400)
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
|
||||
RGBLIGHT_ENABLE = no
|
||||
MIDI_ENABLE = yes
|
|
@ -1,30 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
/* Make layout the right way:
|
||||
* - USB port on left side
|
||||
* - Switches facing the correct way
|
||||
*/
|
||||
#undef MATRIX_ROW_PINS
|
||||
#undef MATRIX_COL_PINS
|
||||
#define MATRIX_ROW_PINS { B6, B2, B3, B1, F7 }
|
||||
#define MATRIX_COL_PINS { D0, D4, C6, D7, E6, B4 }
|
||||
|
||||
// Set the mouse settings to a comfortable speed/accuracy trade-off
|
||||
// Assume the screen refresh rate is 60 Htz or higher
|
||||
// The default is 50. This makes the mouse ~3 times faster and more accurate
|
||||
#define MOUSEKEY_INTERVAL 16
|
||||
// The default is 20. Since we made the mouse about 3 times faster with the previous setting,
|
||||
// give it more time to accelerate to max speed to retain precise control over short distances.
|
||||
#define MOUSEKEY_TIME_TO_MAX 40
|
||||
// The default is 300. Let's try and make this as low as possible while keeping the cursor responsive
|
||||
#define MOUSEKEY_DELAY 100
|
||||
// It makes sense to use the same delay for the mouseweel
|
||||
#define MOUSEKEY_WHEEL_DELAY 100
|
||||
// The default is 100
|
||||
#define MOUSEKEY_WHEEL_INTERVAL 50
|
||||
// The default is 40
|
||||
#define MOUSEKEY_WHEEL_TIME_TO_MAX 100
|
||||
|
||||
#define TAPPING_TERM 200
|
||||
#define PERMISSIVE_HOLD
|
||||
#define QUICK_TAP_TERM 0
|
|
@ -1 +0,0 @@
|
|||
{"version":1,"notes":"My awesome keymap","documentation":"\"This file is a QMK Configurator export. You can import this at <https://config.qmk.fm>. It can also be used directly with QMK's source code.\n\nTo setup your QMK environment check out the tutorial: <https://docs.qmk.fm/#/newbs>\n\nYou can convert this file to a keymap.c using this command: `qmk json2c {keymap}`\n\nYou can compile this keymap using this command: `qmk compile {keymap}`\"\n","keyboard":"40percentclub/gherkin","keymap":"pierrec83","layout":"LAYOUT_ortho_3x10","layers":[["KC_Q","KC_D","KC_R","KC_W","KC_B","KC_J","KC_F","KC_U","KC_P","KC_BSPC","LSFT_T(KC_A)","LT(5,KC_S)","LT(1,KC_H)","LT(3,KC_T)","KC_G","KC_Y","LT(4,KC_N)","LT(2,KC_E)","LT(6,KC_O)","LSFT_T(KC_I)","KC_Z","KC_X","KC_M","KC_C","KC_V","LT(7,KC_SPC)","KC_L","LALT_T(KC_COMM)","LCTL_T(KC_DOT)","KC_K"],["KC_TRNS","ANY(LCTL(LSFT(KC_C)))","KC_PGUP","ANY(LCTL(LSFT(KC_V)))","KC_TRNS","KC_TRNS","KC_BTN1","KC_WH_U","KC_BTN2","KC_TRNS","KC_TRNS","KC_BTN2","KC_NO","KC_BTN1","KC_TRNS","KC_TRNS","KC_MS_L","KC_MS_D","KC_MS_U","KC_MS_R","KC_TRNS","KC_TRNS","KC_PGDN","KC_TRNS","KC_TRNS","KC_TRNS","KC_MPRV","KC_WH_D","KC_MNXT","TG(1)"],["KC_TRNS","KC_TRNS","KC_PGUP","KC_TRNS","KC_TRNS","BL_BRTG","BL_UP","KC_WH_U","KC_TRNS","KC_TRNS","KC_LEFT","KC_UP","KC_DOWN","KC_RGHT","KC_TRNS","BL_TOGG","KC_LGUI","KC_NO","LCTL(KC_LALT)","LCA(KC_LSFT)","KC_TRNS","KC_HOME","KC_PGDN","KC_END","KC_TRNS","BL_STEP","BL_DOWN","KC_WH_D","KC_TRNS","KC_TRNS"],["KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_UNDS","KC_PIPE","KC_QUOT","KC_TRNS","KC_CIRC","KC_ASTR","KC_AMPR","KC_NO","KC_TRNS","KC_HASH","KC_TILD","KC_SLSH","KC_DQUO","KC_DLR","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_MINS","KC_BSLS","KC_GRV","KC_TRNS"],["KC_TRNS","KC_COLN","KC_LT","KC_GT","KC_SCLN","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_LCBR","KC_RCBR","KC_LPRN","KC_RPRN","KC_AT","KC_TRNS","KC_NO","KC_EQL","KC_PLUS","KC_PERC","KC_TRNS","KC_EXLM","KC_LBRC","KC_RBRC","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_F7","KC_F8","KC_F9","KC_F10","KC_LCTL","KC_NO","KC_LALT","LCTL(KC_LALT)","KC_TRNS","KC_TRNS","KC_F4","KC_F5","KC_F6","KC_F11","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_F1","KC_F2","KC_F3","KC_F12"],["KC_PSLS","KC_7","KC_8","KC_9","KC_PPLS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_0","KC_4","KC_5","KC_6","KC_PMNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_NO","KC_TRNS","KC_PAST","KC_1","KC_2","KC_3","KC_PEQL","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS"],["LT(8,KC_TRNS)","KC_ESC","KC_COLN","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_DEL","KC_TRNS","KC_PERC","KC_SLSH","KC_ENT","KC_EXLM","KC_TRNS","KC_LGUI","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TRNS","KC_TAB","KC_TRNS","KC_TRNS","RALT(KC_TRNS)","RCTL(KC_TRNS)","TG(1)"],["KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","EE_CLR","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","QK_BOOT","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO","KC_NO"]],"author":"Anonymous"}
|
|
@ -1,38 +0,0 @@
|
|||
@pierrec83's keymap for the gherkin
|
||||
===
|
||||
|
||||
A usable keymap for the gherkin's 30 keys layout, somewhat in sync with my Kyria keymap.
|
||||
|
||||
This keymap is more or less an adaptation of my Kyria keymap which sacrifices some convenience but retains most functionality.
|
||||
|
||||
Features
|
||||
---
|
||||
* Mouse keys with constants tuned so the keyboard usable for me as my sole pointing device
|
||||
* Homerow layers activation
|
||||
* Minimal side-index motion thanks to workman base layer and similar principles in other layers
|
||||
* Two symbol layers, both activated with one homerow key and either another key on the same hand's homerow or a key from the other hand
|
||||
* Mousing around, including left and right clicking can be done either one-handed or fully on the homerow with both hands
|
||||
* Easy chaining of common command line or vim patterns, such as `~/`, `()`, `ESC : w ENTER` etc.
|
||||
* Common OS shortcuts like switching workspaces on gnome or MacOS easily accessible (for the shortcuts I use. This may not apply to others)
|
||||
|
||||
Instructions to update the keymap
|
||||
---
|
||||
|
||||
For now, I am still more comfortable updating the keymap through the qmk configurator as I don't trust myself to manually keep comments describing the keymap in sync with the code itself. This means that my keymap.c is generated and not really readable. For a readble view of my keymap, one must import keymap.json into [qmk configurator](https://config.qmk.fm) and use the web UI or print it.
|
||||
|
||||
To update the keymap,
|
||||
* Load keymap.json into qmk configurator
|
||||
* Perform any edits
|
||||
* Export the keymap. This should save a json file in `~/Downloads/pierrec83.json` or equivalent for your OS
|
||||
* From the root of qmk_firmware, move the keymap to its destination:
|
||||
```
|
||||
mv ~/Downloads/pierrec83.json keyboards/40percentclub/gherkin/keymaps/pierrec83/keymap.json
|
||||
```
|
||||
* Flash the firmware (for instance, if left hand is plugged):
|
||||
```
|
||||
qmk flash -kb 40percentclub/gherkin -km pierrec83
|
||||
```
|
||||
|
||||
Author
|
||||
---
|
||||
I am @pierrec83 on Twitter, @pierrechevalier83 on github. I chose the shorter nickname for my keymap.
|
|
@ -1 +0,0 @@
|
|||
BACKLIGHT_ENABLE = yes
|
|
@ -1,46 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
// bootloader (first top leftmost key)
|
||||
#define BOOTMAGIC_LITE_ROW 0
|
||||
#define BOOTMAGIC_LITE_COLUMN 1
|
||||
|
||||
|
||||
// Behaviors That Can Be Configured
|
||||
|
||||
|
||||
#define TAPPING_TERM 250
|
||||
// how long before a tap becomes a hold, if set above 500, a key tapped during the tapping term will turn it into a hold too
|
||||
|
||||
#define PERMISSIVE_HOLD
|
||||
// makes tap and hold keys trigger the hold if another key is pressed before releasing, even if it hasn't hit the TAPPING_TERM
|
||||
|
||||
#define QUICK_TAP_TERM 0
|
||||
// makes it possible to use a dual role key as modifier shortly after having been tapped (see Hold after tap)
|
||||
// Breaks any Tap Toggle functionality (TT or the One Shot Tap Toggle)
|
||||
|
||||
|
||||
/*
|
||||
#define TAPPING_TERM_PER_KEY
|
||||
// enables handling for per key TAPPING_TERM settings
|
||||
#define RETRO_TAPPING
|
||||
// tap anyway, even after TAPPING_TERM, if there was no other key interruption between press and release
|
||||
#define TAPPING_TOGGLE 2
|
||||
// how many taps before triggering the toggle
|
||||
#define LEADER_TIMEOUT 300
|
||||
// how long before the leader key times out
|
||||
// If you're having issues finishing the sequence before it times out, you may need to increase the timeout setting. Or you may want to enable the LEADER_PER_KEY_TIMING option, which resets the timeout after each key is tapped.
|
||||
#define LEADER_PER_KEY_TIMING
|
||||
// sets the timer for leader key chords to run on each key press rather than overall
|
||||
#define LEADER_KEY_STRICT_KEY_PROCESSING
|
||||
// Disables keycode filtering for Mod-Tap and Layer-Tap keycodes. Eg, if you enable this, you would need to specify MT(MOD_CTL, KC_A) if you want to use KC_A.
|
||||
#define ONESHOT_TIMEOUT 300
|
||||
// how long before oneshot times out
|
||||
#define ONESHOT_TAP_TOGGLE 2
|
||||
// how many taps before oneshot toggle is triggered
|
||||
#define COMBO_TERM 200
|
||||
// how long for the Combo keys to be detected. Defaults to TAPPING_TERM if not defined.
|
||||
#define TAP_CODE_DELAY 100
|
||||
// Sets the delay between register_code and unregister_code, if you're having issues with it registering properly (common on VUSB boards). The value is in milliseconds.
|
||||
#define TAP_HOLD_CAPS_DELAY 80
|
||||
// Sets the delay for Tap Hold keys (LT, MT) when using KC_CAPS_LOCK keycode, as this has some special handling on MacOS. The value is in milliseconds, and defaults to 80 ms if not defined. For macOS, you may want to set this to 200 or higher.
|
||||
*/
|
|
@ -1,238 +0,0 @@
|
|||
/* Copyright 2019 Stefano Marago'
|
||||
*
|
||||
* 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/>.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* The 25% SuperMicro keyboard: a pure - full features - "Alpha 26" keymap on Gherkin, compatible also with 28 and 30 keys layouts
|
||||
* See https://github.com/stevexyz/qmk_firmware/blob/master/keyboards/40percentclub/gherkin/keymaps/stevexyz/readme.md for more information
|
||||
*/
|
||||
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers {
|
||||
LAYER_HOME, // home base layer
|
||||
LAYER_FUNC, // function keys and cursors
|
||||
LAYER_NUMSYM, // numbers and other characters
|
||||
LAYER_SYST, // media, mouse and other system keys
|
||||
LAYER_ARROWPAD,
|
||||
LAYER_NUMPAD,
|
||||
LAYER_MEDIAPAD,
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
CK_TRIPLEZERO = SAFE_RANGE,
|
||||
};
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/*
|
||||
* LEGEND:
|
||||
*
|
||||
* ,--------------------------------.
|
||||
* | Top row: shifted character |
|
||||
* | Central row: standard char |
|
||||
* | Bottom row: hold modifier |
|
||||
* `--------------------------------'
|
||||
*
|
||||
* "____" means free to be assigned
|
||||
*
|
||||
*/
|
||||
|
||||
/* Qwerty Home Layer
|
||||
* ,---------------------------------------------------------------------.
|
||||
* | | | | | | | | | | |
|
||||
* | Q | W | E | R | T | Y | U | I | O | P |
|
||||
* | ____ | ____ | ____ | ____ | ____ | FnNav|NumSym| Alt | Ctrl | Shift|
|
||||
* |------+------+------+------+-------------+------+------+------+------|
|
||||
* | | | | | | | | | | |
|
||||
* | A | S | D | F | G | H | J | K | L | Enter|
|
||||
* | Shift| FnNav|NumSym| AltGr| OSkey| OSkey| AltGr| FnNav|NumSym| Shift|
|
||||
* '------+------+------+------+------+------|------+------+------+------'
|
||||
* | | | | | | | | |
|
||||
* | Z | X | C | V | B | N | M | Space|
|
||||
* | Ctrl | Alt | FnNav|NumSym| Shift| Alt | Ctrl | Shift|
|
||||
* '-------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_HOME] = LAYOUT_ortho_3x10(
|
||||
LT(LAYER_ARROWPAD, KC_Q), LT(LAYER_NUMPAD, KC_W), LT(LAYER_MEDIAPAD, KC_E), KC_R, KC_T, LT(LAYER_FUNC, KC_Y), LT(LAYER_NUMSYM, KC_U), MT(MOD_LALT, KC_I), MT(MOD_RCTL, KC_O), MT(MOD_RSFT, KC_P),
|
||||
MT(MOD_LSFT, KC_A), LT(LAYER_FUNC, KC_S), LT(LAYER_NUMSYM, KC_D), MT(MOD_RALT, KC_F), MT(MOD_LGUI, KC_G), MT(MOD_RGUI, KC_H), MT(MOD_RALT, KC_J), LT(LAYER_FUNC, KC_K), LT(LAYER_NUMSYM, KC_L), MT(MOD_RSFT, KC_ENT),
|
||||
KC_DOWN, MT(MOD_LCTL, KC_Z), MT(MOD_LALT, KC_X), LT(LAYER_FUNC, KC_C), LT(LAYER_NUMSYM, KC_V), MT(MOD_LSFT, KC_B), MT(MOD_LALT, KC_N), MT(MOD_RCTL, KC_M), MT(MOD_RSFT, KC_SPC), KC_BSPC
|
||||
),
|
||||
|
||||
/* Function and Navigation Layer
|
||||
* ,---------------------------------------------------------------------.
|
||||
* | | | | | | | | | | |
|
||||
* | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 |
|
||||
* | ____ | ____ | ____ | ____ | ____ | ____ |SysLay| Alt | Ctrl | Shift|
|
||||
* |------+------+------+------+-------------+------+------+------+------|
|
||||
* | | | | | | | | | | |
|
||||
* | ESC | Home | PgDn | PgUp | End | Left | Down | Up | Right|Backsp|
|
||||
* | Shift| ____ |SysLay| AltGr| OSkey| OSkey| AltGr| ____ |SysLay| Shift|
|
||||
* '------+------+------+------+------+------|------+------+------+------'
|
||||
* | | | | | | | | |
|
||||
* | F11 | F12 | | Space|PrnScr|ScrLck|Pause |Backsp|
|
||||
* | Ctrl | Alt | ____ |SysLay| Shift| Alt | Ctrl | Shift|
|
||||
* '-------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_FUNC] = LAYOUT_ortho_3x10(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, LT(LAYER_SYST, KC_F7), MT(MOD_LALT, KC_F8), MT(MOD_RCTL,KC_F9), MT(MOD_RSFT, KC_F10),
|
||||
MT(MOD_LSFT, KC_ESC), KC_HOME, LT(LAYER_SYST, KC_PGDN), MT(MOD_RALT, KC_PGUP), MT(MOD_LGUI, KC_END), MT(MOD_RGUI, KC_LEFT), MT(MOD_RALT, KC_DOWN), KC_UP, LT(LAYER_SYST, KC_RGHT), MT(MOD_RSFT, KC_BSPC),
|
||||
KC_DOWN, MT(KC_LCTL, KC_F11), MT(KC_LALT, KC_F12), KC_NO, LT(LAYER_SYST, KC_SPACE), MT(KC_LSFT, KC_PSCR), MT(KC_LALT, KC_SCRL), MT(KC_RCTL, KC_PAUS), MT(MOD_RSFT, KC_BSPC), KC_UP
|
||||
),
|
||||
|
||||
/* Number and Symbols Layer
|
||||
* ,---------------------------------------------------------------------.
|
||||
* | ! | @ | # | $ | % | ^ | & | * | ( | ) |
|
||||
* | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 |
|
||||
* | ____ | ____ | ____ | ____ | ____ |SysLay| ____ | Alt | Ctrl | Shift|
|
||||
* |------+------+------+------+-------------+------+------+------+------|
|
||||
* | | ~ | _ | + | { | } | | | : | " | |
|
||||
* | TAB | ` | - | = | [ | ] | \ | ; | ' | Del |
|
||||
* | Shift|SysLay| ____ | AltGr| OSkey| OSkey| AltGr|SysLay| ____ | Shift|
|
||||
* ' -----+------+------+------+------+------|------+------+------+------'
|
||||
* | | | | | < | > | ? | |
|
||||
* |BackSp| Del | Enter| | , | . | / | Enter|
|
||||
* | Ctrl | Alt |SysLay| ____ | Shift| Alt | Ctrl | Shift|
|
||||
* '-------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_NUMSYM] = LAYOUT_ortho_3x10(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, LT(LAYER_SYST, KC_6), KC_7, MT(MOD_LALT, KC_8), MT(MOD_RCTL,KC_9), MT(MOD_RSFT, KC_0),
|
||||
MT(MOD_LSFT, KC_TAB), LT(LAYER_SYST, KC_GRV), KC_MINS, MT(MOD_RALT, KC_EQL), MT(MOD_LGUI, KC_LBRC), MT(MOD_RGUI, KC_RBRC), MT(MOD_RALT, KC_BSLS), LT(LAYER_SYST, KC_SCLN), KC_QUOT, MT(MOD_RSFT, KC_DEL),
|
||||
KC_LEFT, MT(KC_LCTL, KC_BSPC), MT(KC_LALT, KC_DEL), LT(LAYER_SYST, KC_ENT), KC_NO, MT(MOD_LSFT, KC_COMM), MT(MOD_LALT, KC_DOT), MT(MOD_RCTL, KC_SLSH), MT(MOD_RSFT, KC_ENT), KC_RGHT
|
||||
),
|
||||
|
||||
/* System Layer
|
||||
* ,---------------------------------------------------------------------.
|
||||
* | | | | | | | | | | |
|
||||
* | Play | Stop | Prev | Next |MsBtn1|MsLeft|MSDown| MsUp |MsRigh|MsBtn2|
|
||||
* | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | Shift|
|
||||
* |------+------+------+------+-------------+------+------+------+------|
|
||||
* | | | | | | | | | | |
|
||||
* |Backsp| Mute | Vol- | Vol+ |MsWhlD| Left | Down | Up | Right|Backsp|
|
||||
* | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |
|
||||
* '------+------+------+------+------+------|------+------+------+------'
|
||||
* | | | | | | | | |
|
||||
* | ____ | ____ | Enter| Space| Mute | Vol- | Vol+ | Space|
|
||||
* | Ctrl | Alt | ____ | ____ | Shift| Alt | Ctrl | ____ |
|
||||
* '-------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_SYST] = LAYOUT_ortho_3x10(
|
||||
KC_MPLY, KC_STOP, KC_MPRV, KC_MNXT, KC_MS_BTN1, KC_MS_LEFT, KC_MS_DOWN, KC_MS_UP, KC_MS_RIGHT, MT(MOD_RSFT, KC_MS_BTN2),
|
||||
KC_BSPC, KC_DEL, KC_PGDN, KC_PGUP, KC_APP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_BSPC,
|
||||
KC_PGDN, MT(KC_LCTL, KC_CAPS), MT(KC_LALT, KC_INS), KC_ENT, KC_SPC, MT(MOD_RSFT, KC_MUTE), MT(MOD_LALT, KC_VOLD), MT(MOD_RCTL, KC_VOLU), KC_SPC, KC_PGUP
|
||||
),
|
||||
|
||||
/* ArrowPad (mod su Q) /------mouse-------\ /-----cursor-------\
|
||||
* ,---------------------------------------------------------------------.
|
||||
* | | | | | | | | | | |
|
||||
* | | | |MsBtn1| MsUp |MsBtn2| Home | Up | PgUp |Backsp|
|
||||
* | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |
|
||||
* |------+------+------+------+-------------+------+------+------+------|
|
||||
* | | | | | | | | | | |
|
||||
* | | | |MsLeft|MsDown|MsRigh| Left | Down | Right| Enter|
|
||||
* | Shift| ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |
|
||||
* '------+------+------+------+------+------|------+------+------+------'
|
||||
* | | | | | | | | |
|
||||
* | | |MsWhlU|MsDown|MsWhlD| End | PgDn | PgDn |
|
||||
* | Ctrl | Alt | ____ | ____ | ____ | ____ | ____ | ____ |
|
||||
* '-------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_ARROWPAD] = LAYOUT_ortho_3x10(
|
||||
KC_NO, KC_NO, KC_NO, KC_MS_BTN1, KC_MS_UP, KC_MS_BTN2, KC_HOME, KC_UP, KC_PGUP, KC_BSPC,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_MS_LEFT, KC_MS_DOWN, KC_MS_RIGHT, KC_LEFT, KC_DOWN, KC_RIGHT, KC_ENT,
|
||||
XXXXXXX, KC_LCTL, KC_LALT, KC_MS_WH_UP, KC_MS_DOWN, KC_MS_WH_DOWN, KC_END, KC_PGDN, KC_PGDN, XXXXXXX
|
||||
),
|
||||
|
||||
/* NumPad (mod su W)
|
||||
* ,---------------------------------------------------------------------.
|
||||
* | | | | | | | | | | |
|
||||
* | | | 3 | * | - |Backsp| 7 | 8 | 9 | 0 |
|
||||
* | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |
|
||||
* |------+------+------+------+-------------+------+------+------+------|
|
||||
* | | | | | | | | | | |
|
||||
* | | | / | = | + | . | 4 | 5 | 6 | Enter|
|
||||
* | Shift| ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |
|
||||
* '------+------+------+------+------+------|------+------+------+------'
|
||||
* | | | | | | | | |
|
||||
* | | | | Tab | , | 1 | 2 | 3 |
|
||||
* | Ctrl | Alt | ____ | ____ | ____ | ____ | ____ | ____ |
|
||||
* '-------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_NUMPAD] = LAYOUT_ortho_3x10(
|
||||
KC_NO, KC_NO, KC_3, KC_KP_ASTERISK, KC_KP_MINUS, KC_BSPC, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_LSFT, KC_NO, KC_KP_SLASH, KC_KP_EQUAL, KC_KP_PLUS, KC_DOT, KC_4, KC_5, KC_6, KC_ENT,
|
||||
XXXXXXX, KC_LCTL, KC_LALT, KC_NO, KC_TAB, KC_COMM, KC_1, KC_2, KC_3, XXXXXXX
|
||||
),
|
||||
|
||||
/* MediaPad (mod su E)
|
||||
* ,---------------------------------------------------------------------.
|
||||
* | | | | | | | | | | |
|
||||
* | | | | | | | | Vol+ | | |
|
||||
* | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |
|
||||
* |------+------+------+------+-------------+------+------+------+------|
|
||||
* | | | | | | | | | | |
|
||||
* | | | | | | | Prev | Play | Next | |
|
||||
* | Shift| ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ | ____ |
|
||||
* '------+------+------+------+------+------|------+------+------+------'
|
||||
* | | | | | | | | |
|
||||
* | | | | | | Mute | Vol- | |
|
||||
* | Ctrl | Alt | ____ | ____ | ____ | ____ | ____ | ____ |
|
||||
* '-------------------------------------------------------'
|
||||
*/
|
||||
[LAYER_MEDIAPAD] = LAYOUT_ortho_3x10(
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_VOLU, KC_NO, KC_NO,
|
||||
KC_LSFT, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_MPRV, KC_MPLY, KC_MNXT, KC_NO,
|
||||
XXXXXXX, KC_LCTL, KC_LALT, KC_NO, KC_NO, KC_NO, KC_MUTE, KC_VOLD, KC_NO, XXXXXXX
|
||||
),
|
||||
|
||||
};
|
||||
|
||||
|
||||
void matrix_init_user(void) {
|
||||
// eeconfig_init(); // reset keyboard to a standard default state; useful when new releases messup with eeprom values
|
||||
// set num lock on at start (for numonly layer to work)
|
||||
if (!host_keyboard_led_state().num_lock) {
|
||||
tap_code(KC_NUM_LOCK);
|
||||
}
|
||||
}
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case CK_TRIPLEZERO:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING("000");
|
||||
} // else { when released }
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
void keyboard_pre_init_user(void) {
|
||||
// Set our LED pins as output
|
||||
setPinOutput(D5);
|
||||
setPinOutput(B0);
|
||||
}
|
||||
|
||||
bool led_update_user(led_t led_state) {
|
||||
writePin(D5, !led_state.num_lock);
|
||||
writePin(B0, !led_state.caps_lock);
|
||||
return false; // prevent keyboard from processing state
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
# The 25% SuperMicro keyboard
|
||||
## A full featured keymap on Gherkin compatible with a pure "Alpha 26" layout
|
||||
|
||||
With this configuration the "SuperMicro" layout first experimented on the plank-like jj40 is being ported to a more proper board, and with the last changes, this layout has been made compatible also to a "26 keys" one. So you can now choose to leave all 30 keys on the keyboard, or remove the two on the bottom line corners to have the "old" and comfortable 28 keys layout, or remove also space and enter to have the simplest "pure alpha" one! And even the intermediate 27 keys one is an interesting compatible option!
|
||||
|
||||
This keymap is for a generic usage, trying to avoid as much gimmick as possible (considering the number of keys) and retain muscle memory from people used to the standard Qwerty 104 keys one. Functions and numbers (with related symbols) are on the first row as expected; other examples of design coherency include the symbols on the central row laid out in the same order as you'll find on a standard full keyboard, and the cursor movement aligned to the common unix vi standard ("hjkl", and for symmetry "sdfg" for home/pgdn/pgup/end). I've personally used this layout for months on my home PC in parallel to my portable work PC.
|
||||
|
||||
Relying just on the alphabetic keys this layout can be also very easily ported and tested on any qmk supported keyboard (ok, butterstick excluded).
|
||||
|
||||
The image below explains the main layers activated respectively with F, N or both modifiers pressed together. In addition to them there are available 5 layers that can be personalized as needed or completely removed without losing any functionality; three of them are currently setup in the default keymap for cursors/mouse, numpad and media (activated with q, w and e respectively).
|
||||
|
||||
![layers](https://github.com/stevexyz/qmk_firmware/blob/master/keyboards/40percentclub/gherkin/keymaps/stevexyz/newlayout26272830.jpg)
|
||||
|
||||
![prototype](https://github.com/stevexyz/qmk_firmware/blob/master/keyboards/40percentclub/gherkin/keymaps/stevexyz/gherkin28.jpeg)
|
||||
|
||||
Happy hacking!
|
||||
_Stefano
|
|
@ -1,17 +0,0 @@
|
|||
# Build Options (yes/no)
|
||||
#
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
||||
MOUSEKEY_ENABLE = yes # Mouse keys
|
||||
EXTRAKEY_ENABLE = yes # Audio control and System control
|
||||
CONSOLE_ENABLE = no # Console for debug
|
||||
COMMAND_ENABLE = no # Commands for debug and configuration
|
||||
BACKLIGHT_ENABLE = yes # Enable keyboard backlight functionality
|
||||
MIDI_ENABLE = no # MIDI support
|
||||
UNICODE_ENABLE = no # Unicode
|
||||
BLUETOOTH_ENABLE = no # Enable Bluetooth with the Adafruit EZ-Key HID
|
||||
AUDIO_ENABLE = no # Audio output on port C6
|
||||
TAP_DANCE_ENABLE = no
|
||||
SLEEP_LED_ENABLE = no # Breathing sleep LED during USB suspend (it uses the same timer as BACKLIGHT_ENABLE)
|
||||
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover - if this doesn't work, see here: https://github.com/tmk/tmk_keyboard/wiki/FAQ#nkro-doesnt-work
|
||||
RGBLIGHT_ENABLE = no
|
|
@ -1,55 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define ST_BOLT QK_STENO_BOLT
|
||||
#define ST_GEM QK_STENO_GEMINI
|
||||
|
||||
enum keyboard_layers {
|
||||
_QWERTY,
|
||||
_RAISE,
|
||||
_LOWER,
|
||||
_PLOVER,
|
||||
_ADJUST
|
||||
};
|
||||
|
||||
#define ADJ_Z LT(_ADJUST, KC_Z)
|
||||
#define RS_BSPC LT(_RAISE, KC_BSPC)
|
||||
#define LW_SPC LT(_LOWER, KC_SPC)
|
||||
#define MO_ADJ MO(_ADJUST)
|
||||
#define TG_PLV TG(_PLOVER)
|
||||
#define OS_LCTL OSM(MOD_LCTL)
|
||||
#define OS_LALT OSM(MOD_LALT)
|
||||
#define OS_LGUI OSM(MOD_LGUI)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_QWERTY] = LAYOUT_ortho_3x10(
|
||||
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_RSFT,
|
||||
ADJ_Z, KC_X, KC_C, KC_V, RS_BSPC, LW_SPC, KC_B, KC_N, KC_M, KC_ENT
|
||||
),
|
||||
|
||||
[_RAISE] = LAYOUT_ortho_3x10(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_ESC, KC_MINS, KC_EQL, _______, KC_LBRC, KC_RBRC, _______, KC_QUOT, KC_SCLN, _______,
|
||||
OS_LCTL, OS_LGUI, OS_LALT, KC_GRV, _______, KC_TAB, KC_BSLS, KC_COMM, KC_DOT, KC_SLSH
|
||||
),
|
||||
|
||||
[_LOWER] = LAYOUT_ortho_3x10(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, XXXXXXX, KC_PGUP, KC_HOME, KC_UP, KC_END, XXXXXXX,
|
||||
KC_F5, KC_F6, KC_F7, KC_F8, XXXXXXX, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, _______,
|
||||
KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______, OS_LALT, OS_LGUI, OS_LCTL, KC_CAPS
|
||||
),
|
||||
|
||||
[_PLOVER] = LAYOUT_ortho_3x10(
|
||||
STN_S1, STN_TL, STN_PL, STN_HL, STN_ST1, STN_FR, STN_PR, STN_LR, STN_TR, STN_DR,
|
||||
STN_S2, STN_KL, STN_WL, STN_RL, STN_ST2, STN_RR, STN_BR, STN_GR, STN_SR, STN_ZR,
|
||||
MO_ADJ, STN_NUM, STN_A, STN_O, STN_NUM, STN_E, STN_U, STN_NUM, STN_NUM, XXXXXXX
|
||||
),
|
||||
|
||||
[_ADJUST] = LAYOUT_ortho_3x10(
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, ST_BOLT, ST_GEM, TG_PLV,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT
|
||||
),
|
||||
|
||||
};
|
|
@ -1,2 +0,0 @@
|
|||
MOUSEKEY_ENABLE = no # Mouse keys(+4700)
|
||||
STENO_ENABLE = yes # Additional protocols for Stenography(+1700), requires VIRTSER
|
|
@ -1,21 +0,0 @@
|
|||
/* Copyright 2019 Boy_314
|
||||
*
|
||||
* 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
|
||||
#define PERMISSIVE_HOLD
|
||||
#define TAPPING_TERM 200
|
|
@ -1,173 +0,0 @@
|
|||
/* Copyright 2019 Boy_314
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Tap Dance Declarations
|
||||
enum {
|
||||
TD_SWAP_LAYERS = 0
|
||||
};
|
||||
|
||||
enum layers {
|
||||
_DVORAK,
|
||||
_QWERTY,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
};
|
||||
|
||||
enum halfnhalf_keycodes {
|
||||
NEWTAB = SAFE_RANGE,
|
||||
ALTF4,
|
||||
CLSTAB,
|
||||
PRVWIN,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* DVORAK
|
||||
* ,-------------------------------------------------------------------------------------------------.
|
||||
* |Tab |' |, |. |P |Y |Brght+|= |F |G |C |R |L |Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |CtlCps|A |O |E |U |I |Brght-|Ctrl+F|D |H |T |N |S |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |LShift|; |Q |J |K |X |LAlt |- |B |M |W |V |Z |RShift|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |TD Swap Layer| |Space |
|
||||
* `-------------' `-------------'
|
||||
*/
|
||||
[_DVORAK] = LAYOUT(/* Base Dvorak */
|
||||
KC_TAB, KC_QUOT, KC_COMM, KC_DOT, KC_P, KC_Y, KC_BRIU, KC_EQL, KC_F, KC_G, KC_C, KC_R, KC_L, KC_BSPC,
|
||||
LCTL_T(KC_CAPS), KC_A, KC_O, KC_E, KC_U, KC_I, KC_BRID, LCTL(KC_F), KC_D, KC_H, KC_T, KC_N, KC_S, KC_ENT,
|
||||
SC_LSPO, KC_SCLN, KC_Q, KC_J, KC_K, KC_X, KC_LALT, KC_MINS, KC_B, KC_M, KC_W, KC_V, KC_Z, SC_RSPC,
|
||||
TD(TD_SWAP_LAYERS), KC_SPC
|
||||
),
|
||||
|
||||
/* QWERTY
|
||||
* ,-------------------------------------------------------------------------------------------------.
|
||||
* |Tab |Q |W |E |R |T |Brght+|' |Y |U |I |O |P |Bksp |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |CtlCps|A |S |D |F |G |Brght-|Ctrl+F|H |J |K |L |; |Enter |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |LShift|Z |X |C |V |B |LAlt |- |N |M |, |. |/ |RShift|
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |TD Swap Layer| |Space |
|
||||
* `-------------' `-------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(/* Base Qwerty */
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_BRIU, KC_QUOT, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
LCTL_T(KC_CAPS), KC_A, KC_S, KC_D, KC_F, KC_G, KC_BRID, LCTL(KC_F), KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
|
||||
SC_LSPO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_MINS, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, SC_RSPC,
|
||||
TD(TD_SWAP_LAYERS), KC_SPC
|
||||
),
|
||||
|
||||
/* LOWER
|
||||
* ,-------------------------------------------------------------------------------------------------.
|
||||
* |Esc |1 |2 |3 |4 |5 | | |6 |7 |8 |9 |0 |/ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |Caps |F1 |F2 |F3 |F4 |F5 |F6 |Vol Up|Play |_ |+ |{ |} || |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | |F7 |F8 |F9 |F10 |F11 |F12 |Vol Dn|Next |Home |PgDn |PgUp |End | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | |
|
||||
* `-------------' `-------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(/* Numbers, Function Row, Media Control, Shifted Symbols, Dvorak Slash Key */
|
||||
QK_GESC, 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_SLSH,
|
||||
KC_CAPS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_VOLU, KC_MPLY, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_VOLD, KC_MNXT, KC_HOME, KC_PGDN, KC_PGUP, KC_END, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
/* RAISE
|
||||
* ,-------------------------------------------------------------------------------------------------.
|
||||
* |Reset | | |Up | | | |PRVWIN|CLSTAB| | | | |Del |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* |` | |Left |Down |Right | | |NEWTAB|ALTF4 |- |= |[ |] |\ |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | |! |@ |# |$ |% | | |^ |& |* |( |) | |
|
||||
* |------+------+------+------+------+------+------+------+------+------+------+------+------+------|
|
||||
* | | | |
|
||||
* `-------------' `-------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(/* Arrows, Shifted Numbers, Symbols, Delete, Macros */
|
||||
QK_BOOT, KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, PRVWIN, CLSTAB, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_DEL,
|
||||
KC_GRV, KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, NEWTAB, ALTF4, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_TRNS, KC_TRNS, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
||||
|
||||
void tap_dance_choose_layer (tap_dance_state_t *state, void *user_data) {
|
||||
switch (state->count) {
|
||||
case 1:
|
||||
layer_on(_LOWER);
|
||||
break;
|
||||
case 2:
|
||||
layer_on(_RAISE);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void tap_dance_choose_layer_reset (tap_dance_state_t *state, void *user_data) {
|
||||
switch (state->count) {
|
||||
case 1:
|
||||
layer_off(_LOWER);
|
||||
break;
|
||||
case 2:
|
||||
layer_off(_RAISE);
|
||||
break;
|
||||
case 3:
|
||||
if (get_highest_layer(default_layer_state) == _DVORAK) {
|
||||
set_single_persistent_default_layer(_QWERTY);
|
||||
}
|
||||
else if (get_highest_layer(default_layer_state) == _QWERTY) {
|
||||
set_single_persistent_default_layer(_DVORAK);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[TD_SWAP_LAYERS] = ACTION_TAP_DANCE_FN_ADVANCED(NULL, tap_dance_choose_layer, tap_dance_choose_layer_reset)
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
// Control + T
|
||||
case NEWTAB:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(SS_LCTL("t"));
|
||||
}
|
||||
break;
|
||||
// Alt + F4
|
||||
case ALTF4:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(SS_DOWN(X_LALT)SS_TAP(X_F4)SS_UP(X_LALT));
|
||||
}
|
||||
break;
|
||||
// Control + W
|
||||
case CLSTAB:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(SS_LCTL("w"));
|
||||
}
|
||||
break;
|
||||
// Control + Shift + N
|
||||
case PRVWIN:
|
||||
if (record->event.pressed) {
|
||||
SEND_STRING(SS_LCTL(SS_LSFT("n")));
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
# Boy_314's keymap for half_n_half
|
||||
# Currently only supports DVORAK. QWERTY Support is on the TODO list.
|
|
@ -1,5 +0,0 @@
|
|||
TAP_DANCE_ENABLE = yes # Enable Tap Dance
|
||||
NKRO_ENABLE = yes # USB Nkey Rollover
|
||||
|
||||
# Enable generic behavior for split boards
|
||||
SPLIT_KEYBOARD = yes
|
|
@ -1,13 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
/* USB Device descriptor parameter */
|
||||
#undef VENDOR_ID
|
||||
#undef PRODUCT_ID
|
||||
#undef DEVICE_VER
|
||||
#undef MANUFACTURER
|
||||
#undef PRODUCT
|
||||
#define VENDOR_ID 0xFEED
|
||||
#define PRODUCT_ID 0x0A0C
|
||||
#define DEVICE_VER 0x0068
|
||||
#define MANUFACTURER "68Keys.io"
|
||||
#define PRODUCT "The 68Keys.io Keyboard"
|
|
@ -1,11 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_68_ansi(
|
||||
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_ESC, 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_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_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
)
|
||||
};
|
|
@ -1,23 +0,0 @@
|
|||
# 68Keys.io
|
||||
|
||||
Custom [68Keys.io](https://68keys.io) DIY keyboard.
|
||||
|
||||
Keymap Maintainer: [sbstjn](https://sbstjn.com)
|
||||
Hardware Supported: mf68
|
||||
Hardware Availability: [DIY Guide](https://68keys.io)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
```bash
|
||||
$ > cd qmk_firmware/
|
||||
$ > make 40percentclub/mf68:68keys
|
||||
```
|
||||
|
||||
Example of flashing this keyboard:
|
||||
|
||||
```bash
|
||||
$ > cd qmk_firmware/
|
||||
$ > make 40percentclub/mf68:68keys:avrdude
|
||||
```
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
|
@ -1,5 +0,0 @@
|
|||
BOOTLOADER = atmel-dfu
|
||||
|
||||
EXTRAKEY_ENABLE = yes
|
||||
CONSOLE_ENABLE = no
|
||||
BACKLIGHT_ENABLE = no
|
|
@ -1,144 +0,0 @@
|
|||
/*
|
||||
Copyright 2020 Andy Jack
|
||||
|
||||
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 {
|
||||
_QWERTY,
|
||||
_L1,
|
||||
_L2
|
||||
};
|
||||
|
||||
#define CTL_ESC LCTL_T(KC_ESC)
|
||||
|
||||
/* these key combos are mapped to shell commands in my .keylaunchrc */
|
||||
#define MUT_IN LALT(KC_F10)
|
||||
#define MUT_OUT LALT(KC_F11)
|
||||
#define MUT_MIC LALT(KC_F12)
|
||||
#define SCN_LCK LCTL(KC_SCRL)
|
||||
|
||||
extern keymap_config_t keymap_config;
|
||||
|
||||
enum custom_keycodes {
|
||||
AJ_FN = SAFE_RANGE,
|
||||
AJ_RCTL,
|
||||
AJ_MSWP,
|
||||
AJ_MLCK,
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT_68_ansi(
|
||||
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_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_PGDN,
|
||||
CTL_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_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, AJ_FN, AJ_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[_L1] = LAYOUT_68_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_BSPC, KC_VOLU, KC_HOME,
|
||||
_______, _______, KC_HOME, KC_UP, KC_END, _______, _______, MUT_IN , MUT_OUT, MUT_MIC, _______, _______, BL_STEP, _______, KC_VOLD, KC_END,
|
||||
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, SCN_LCK, _______, _______, _______,
|
||||
_______, _______, _______, _______, KC_BTN3, _______, _______, KC_MUTE, _______, _______, _______, _______, KC_MUTE,
|
||||
_______, AJ_MLCK, AJ_MSWP, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
|
||||
),
|
||||
[_L2] = LAYOUT_68_ansi(
|
||||
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_BSPC, KC_VOLU, KC_HOME,
|
||||
_______, _______, _______, KC_UP, _______, _______, _______, KC_7, KC_8, KC_9, _______, _______, _______, _______, KC_VOLD, KC_END,
|
||||
_______, _______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, KC_4, KC_5, KC_6, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_0, KC_1, KC_2, KC_3, _______, _______, KC_MUTE,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT
|
||||
)
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
static bool aj_fn_down = false;
|
||||
static bool aj_rctl_down = false;
|
||||
static uint8_t keycode_for_aj_rctl;
|
||||
|
||||
/* My version of:
|
||||
https://www.reddit.com/r/olkb/comments/8eticz/how_to_activate_a_layer_with_a_combination/dxygw0f/
|
||||
* AJ_FN by itself turns on layer 1
|
||||
* AJ_RCTL by itself acts as a control key
|
||||
* pressing FN and RCTL together, in any order, turns on layer 2
|
||||
*/
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case AJ_FN:
|
||||
if (record->event.pressed) {
|
||||
if (aj_rctl_down) {
|
||||
layer_on(_L2);
|
||||
} else {
|
||||
layer_on(_L1);
|
||||
}
|
||||
aj_fn_down = true;
|
||||
} else {
|
||||
layer_off(_L1);
|
||||
layer_off(_L2);
|
||||
aj_fn_down = false;
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case AJ_RCTL:
|
||||
if (record->event.pressed) {
|
||||
if (aj_fn_down) {
|
||||
layer_on(_L2);
|
||||
} else {
|
||||
register_code(keycode_for_aj_rctl);
|
||||
}
|
||||
aj_rctl_down = true;
|
||||
} else {
|
||||
layer_off(_L2);
|
||||
unregister_code(keycode_for_aj_rctl);
|
||||
aj_rctl_down = false;
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
case AJ_MSWP:
|
||||
case AJ_MLCK:
|
||||
if (record->event.pressed) {
|
||||
if (!eeconfig_is_enabled()) {
|
||||
eeconfig_init();
|
||||
}
|
||||
keymap_config.raw = eeconfig_read_keymap();
|
||||
switch (keycode) {
|
||||
case AJ_MSWP:
|
||||
keymap_config.swap_lalt_lgui = !keymap_config.swap_lalt_lgui;
|
||||
keymap_config.swap_ralt_rgui = keymap_config.swap_lalt_lgui;
|
||||
keycode_for_aj_rctl = keymap_config.swap_lalt_lgui ? KC_RALT : KC_RCTL;
|
||||
break;
|
||||
case AJ_MLCK:
|
||||
keymap_config.no_gui = !keymap_config.no_gui;
|
||||
break;
|
||||
}
|
||||
eeconfig_update_keymap(keymap_config.raw);
|
||||
clear_keyboard(); // clear to prevent stuck keys
|
||||
}
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
if (!eeconfig_is_enabled()) {
|
||||
eeconfig_init();
|
||||
}
|
||||
keymap_config.raw = eeconfig_read_keymap();
|
||||
keycode_for_aj_rctl = keymap_config.swap_lalt_lgui ? KC_RALT : KC_RCTL;
|
||||
eeconfig_update_keymap(keymap_config.raw);
|
||||
clear_keyboard(); // clear to prevent stuck keys
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
## Customizations from the `default` keymap
|
||||
|
||||
* caps lock is left ctrl / press & release for escape
|
||||
* keyboard LED brightness control - Fn + ] (same as default)
|
||||
* bootmagic:
|
||||
* ability to swap keys - for moving between mac and win/linux
|
||||
* for win/linux - keys are as labeled in layer 0; AJ_RCTL is right ctl
|
||||
* for mac:
|
||||
* LALT and LGUI swapped
|
||||
* RALT key sends RGUI code
|
||||
* AJ_RCTL key sends RALT code
|
||||
* layer 2 access via Fn + AJ_RCTL pressed in any order
|
||||
* regardless of swapped state
|
||||
* ability to disable left gui
|
||||
* Fn + v sends a middle mouse click - nice for pasting the mouse selection in
|
||||
linux - I always mess up and scroll while clicking
|
||||
* note: the mouse cursor has to be placed at the insert point
|
||||
* mapping some Fn + key combinations to program launch shortcuts
|
||||
|
||||
<!--
|
||||
vim:tw=78
|
||||
-->
|
|
@ -1,2 +0,0 @@
|
|||
MOUSEKEY_ENABLE = yes
|
||||
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
|
|
@ -1,42 +0,0 @@
|
|||
/*
|
||||
* Dan's Magicforce 68 (MF68) QMK Keyboard
|
||||
* Copyright (C) Dan <https://github.com/delivrance>
|
||||
*
|
||||
* This file is part of Dan's MF68 QMK Keyboard.
|
||||
*
|
||||
* Dan's MF68 QMK Keyboard 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.
|
||||
*
|
||||
* Dan's MF68 QMK Keyboard 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 Dan's MF68 QMK Keyboard. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#undef MANUFACTURER
|
||||
#define MANUFACTURER "Dan"
|
||||
|
||||
#undef PRODUCT
|
||||
#define PRODUCT "Magicforce 68 QMK"
|
||||
|
||||
#undef BACKLIGHT_LEVELS
|
||||
#define BACKLIGHT_LEVELS 20
|
||||
|
||||
// Disable backlight breathing
|
||||
#undef BACKLIGHT_BREATHING
|
||||
|
||||
// Set USB polling rate to 1000 Hz
|
||||
#define USB_POLLING_INTERVAL_MS 1
|
||||
|
||||
// Enable NKRO on boot
|
||||
#define FORCE_NKRO
|
||||
|
||||
// Backlight idle timeout in seconds
|
||||
#define BACKLIGHT_IDLE_TIMEOUT 1200
|
|
@ -1,230 +0,0 @@
|
|||
/*
|
||||
* Dan's Magicforce 68 (MF68) QMK Keyboard
|
||||
* Copyright (C) Dan <https://github.com/delivrance>
|
||||
*
|
||||
* This file is part of Dan's MF68 QMK Keyboard.
|
||||
*
|
||||
* Dan's MF68 QMK Keyboard 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.
|
||||
*
|
||||
* Dan's MF68 QMK Keyboard 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 Dan's MF68 QMK Keyboard. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define KC_FN1 MO(_FN)
|
||||
#define KC_FN2 LT(_FN, KC_CAPS)
|
||||
|
||||
#define KC_BLUP BL_UP // Backlight increase
|
||||
#define KC_BLDN BL_DOWN // Backlight decrease
|
||||
#define KC_BLTOG BL_TOGG // Backlight toggle
|
||||
#define KC_REC1 DM_REC1 // Record macro 1
|
||||
#define KC_PLY1 DM_PLY1 // Play macro 1
|
||||
#define KC_REC2 DM_REC2 // Record macro 2
|
||||
#define KC_PLY2 DM_PLY2 // Play macro 1
|
||||
#define KC_RSTP DM_RSTP // Stop macro recording
|
||||
|
||||
enum {
|
||||
_QWERTY,
|
||||
_FN
|
||||
};
|
||||
|
||||
/* ┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━━━━━┓ ┏━━━━┳━━━━┓
|
||||
┃Esc ┃ 1! ┃ 2@ ┃ 3# ┃ 4$ ┃ 5% ┃ 6^ ┃ 7& ┃ 8* ┃ 9( ┃ 0) ┃ -_ ┃ =+ ┃ ←─ ┃ ┃Ins ┃PgUp┃
|
||||
┣━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━━━━━┫ ┣━━━━╋━━━━┫
|
||||
┃ Tab ┃ Q ┃ W ┃ E ┃ R ┃ T ┃ Y ┃ U ┃ I ┃ O ┃ P ┃ [{ ┃ ]} ┃ \| ┃ ┃Del ┃PgDn┃
|
||||
┣━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━┫ ┗━━━━┻━━━━┛
|
||||
┃ Caps ┃ A ┃ S ┃ D ┃ F ┃ G ┃ H ┃ J ┃ K ┃ L ┃ ;: ┃ '" ┃ Enter ┃ Magicforce
|
||||
┣━━━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━━━━┫ ┏━━━━┓
|
||||
┃ Shift ┃ Z ┃ X ┃ C ┃ V ┃ B ┃ N ┃ M ┃ ,< ┃ .> ┃ /? ┃ Shift ┃ ┃ ↑ ┃ Dan
|
||||
┣━━━━━┳━━━━┻┳━━━┻━┳━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━┳┻━━━━╋━━━━┻┳━━━━━┳━━┳━━┻━╋━━━━╋━━━━┓
|
||||
┃Ctrl ┃ GUI ┃ Alt ┃ ━━━━━ ┃ Alt ┃ Fn ┃Ctrl ┃ ┃ ← ┃ ↓ ┃ → ┃
|
||||
┗━━━━━┻━━━━━┻━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━┻━━━━━┻━━━━━┛ ┗━━━━┻━━━━┻━━━━┛ */
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_QWERTY] = LAYOUT_68_ansi( /* Default layer
|
||||
┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━━━━━┓ ┏━━━━┳━━━━┓ */
|
||||
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_INS ,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_PGDN, /*
|
||||
┣━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━┫ ┗━━━━┻━━━━┛ */
|
||||
KC_FN2 , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, KC_ENTER , /*
|
||||
┣━━━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━━━━┫ ┏━━━━┓ */
|
||||
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_SPACE ,KC_RALT , KC_FN1 ,KC_RCTL , KC_LEFT,KC_DOWN,KC_RGHT /*
|
||||
┗━━━━━┻━━━━━┻━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━┻━━━━━┻━━━━━┛ ┗━━━━┻━━━━┻━━━━┛ */),
|
||||
|
||||
[_FN] = LAYOUT_68_ansi( /* FN & CAPS layer
|
||||
┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━━━━━┓ ┏━━━━┳━━━━┓ */
|
||||
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_RSTP , KC_PSCR,KC_HOME, /*
|
||||
┣Esc ┻ 1! ┻ 2@ ┻ 3# ┻ 4$ ┻ 5% ┻ 6^ ┻ 7& ┻ 8* ┻ 9( ┻ 0) ┻ -_ ┻ =+ ┻━┳━ ←─ ━┫ ┣Ins ╋PgUp┫ */
|
||||
_______ ,KC_PLY1,KC_PLY2,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_7 , KC_8 , KC_9 ,KC_BLDN,KC_BLUP,KC_BLTOG ,KC_TRNS ,KC_END , /*
|
||||
┣ Tab ━┻ Q ━┻ W ━┻ E ━┻ R ━┻ T ━┻ Y ━┻ U ━┻ I ━┻ O ━┻ P ━┻ [{ ┻ ]} ┻━ \| ━┫ ┗Del ┻PgDn┛ */
|
||||
_______ ,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS,KC_TRNS, KC_4 , KC_5 , KC_6 ,KC_TRNS, KC_TRNS , /*
|
||||
┣━ Caps ━┻ A ━┻ S ━┻ D ━┻ F ━┻ G ━┻ H ━┻ J ━┻ K ━┻ L ━┻ ;: ┻ '" ┻━ Enter ━┫ ┏━━━━┓ */
|
||||
_______ ,KC_REC1,KC_REC2,KC_TRNS,KC_TRNS,KC_MSTP,KC_TRNS,KC_MUTE, KC_1 , KC_2 , KC_3 ,KC_TRNS , KC_VOLU, /*
|
||||
┣━━ Shift ━┻ Z ━┻ X ━┻ C ━┻ V ━┻ B ━┻ N ━┻ M ━┻ ,< ┻ .> ╋ /? ┻┳━━ Shift ━━┻━╋ ↑ ━╋━━━━┓ */
|
||||
_______,KC_TRNS ,KC_TRNS , KC_MPLY , KC_0 ,KC_TRNS ,KC_TRNS , KC_MPRV,KC_VOLD,KC_MNXT /*
|
||||
┗Ctrl ┻ GUI ┻ Alt ┻━━━━━━━━━━━━ Space ━━━━━━━━━━━━┻ Alt ┻ Fn ━┻Ctrl ┛ ┗ ← ━┻ ↓ ━┻ → ━┛ */)
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
// Initialization code
|
||||
// -------------------
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
backlight_level(2);
|
||||
}
|
||||
|
||||
// Custom backlight driver
|
||||
// -----------------------
|
||||
|
||||
// http://jared.geek.nz/2013/feb/linear-led-pwm
|
||||
float cie1931(float x) {
|
||||
x *= 100.0 / BACKLIGHT_LEVELS;
|
||||
float y;
|
||||
|
||||
if (x < 8) {
|
||||
y = x / 902.3;
|
||||
} else {
|
||||
y = (x + 16.0) / 116.0;
|
||||
y = y * y * y;
|
||||
}
|
||||
|
||||
return round(y * 255);
|
||||
}
|
||||
|
||||
void backlight_init_ports(void) {
|
||||
setPinOutput(BACKLIGHT_PIN);
|
||||
writePinLow(BACKLIGHT_PIN);
|
||||
|
||||
TCCR1A = _BV(COM1A1) | _BV(WGM11);
|
||||
TCCR1B = _BV(WGM13) | _BV(WGM12) | _BV(CS10);
|
||||
|
||||
ICR1 = 0xFFU; // Set PWM levels to 255 (enables high-frequency PWM)
|
||||
}
|
||||
|
||||
void backlight_set(uint8_t level) {
|
||||
if (level > BACKLIGHT_LEVELS) {
|
||||
level = BACKLIGHT_LEVELS;
|
||||
}
|
||||
|
||||
if (level == 0) {
|
||||
TCCR1A &= ~(_BV(COM1A1)); // Disable PWM
|
||||
} else {
|
||||
TCCR1A |= _BV(COM1A1); // Enable PWM
|
||||
}
|
||||
|
||||
OCR1A = cie1931(level);
|
||||
}
|
||||
|
||||
// Custom macro hooks
|
||||
// ------------------
|
||||
|
||||
// Redefine with lower delay
|
||||
void led_blink(void) {
|
||||
backlight_toggle();
|
||||
wait_ms(25);
|
||||
backlight_toggle();
|
||||
}
|
||||
|
||||
void dynamic_macro_record_start_user(int8_t direction) {
|
||||
led_blink();
|
||||
}
|
||||
|
||||
void dynamic_macro_play_user(int8_t direction) {
|
||||
led_blink();
|
||||
}
|
||||
|
||||
void dynamic_macro_record_key_user(int8_t direction, keyrecord_t *record) {
|
||||
led_blink();
|
||||
}
|
||||
|
||||
void dynamic_macro_record_end_user(int8_t direction) {
|
||||
led_blink();
|
||||
}
|
||||
|
||||
// Custom Caps Lock backlight behaviour
|
||||
// ------------------------------------
|
||||
|
||||
bool led_update_user(led_t led_state) {
|
||||
// This exists because I don't like the backlight to turn OFF when the Caps Lock is ON.
|
||||
// That is, this will turn the backlight ON (at half the brightness) when the Caps Lock is ON as well.
|
||||
static bool prev_is_caps_on;
|
||||
bool is_caps_on = led_state.caps_lock;
|
||||
|
||||
if (prev_is_caps_on != is_caps_on) {
|
||||
prev_is_caps_on = is_caps_on;
|
||||
|
||||
if (is_caps_on) {
|
||||
backlight_set(BACKLIGHT_LEVELS / 2);
|
||||
} else {
|
||||
if (is_backlight_enabled()) {
|
||||
backlight_set(get_backlight_level());
|
||||
} else {
|
||||
backlight_set(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Turn on the Pro Micro's on-board LEDs for Caps Lock
|
||||
if (led_state.caps_lock) {
|
||||
// Set to low
|
||||
setPinOutput(B0);
|
||||
writePinLow(B0);
|
||||
setPinOutput(D5);
|
||||
writePinLow(D5);
|
||||
} else {
|
||||
// Set to Hi-Z
|
||||
setPinInput(B0);
|
||||
setPinInput(D5);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Backlight idle timeout feature
|
||||
// ------------------------------
|
||||
|
||||
static uint32_t timer;
|
||||
static bool is_idle;
|
||||
|
||||
void matrix_scan_user(void) {
|
||||
// Check the timer only if the keyboard is not idle
|
||||
if (!is_idle) {
|
||||
if (timer_elapsed32(timer) >= (uint32_t) BACKLIGHT_IDLE_TIMEOUT * 1000) {
|
||||
is_idle = true;
|
||||
|
||||
// Both backlight_level and backlight_level_noeeprom modify the global backlight config (not useful)
|
||||
// Instead, use backlight_set in order to restore the current backlight level later on
|
||||
backlight_set(0);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
// Reset timer on each keypress
|
||||
timer = timer_read32();
|
||||
|
||||
// Enable backlight back only when keyboard is idling (which implies the backlight was turned off previously)
|
||||
if (is_idle) {
|
||||
is_idle = false;
|
||||
|
||||
// Set back the original backlight level only if it is actually enabled globally
|
||||
if (is_backlight_enabled()) {
|
||||
// The current backlight level can be obtained with get_backlight_level
|
||||
backlight_set(get_backlight_level());
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
# Dan's Magicforce 68 (MF68) QMK Keyboard
|
||||
|
||||
> https://github.com/delivrance
|
||||
|
||||
```
|
||||
┏━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━┳━━━━━━━━┓ ┏━━━━┳━━━━┓
|
||||
┃Esc ┃ 1! ┃ 2@ ┃ 3# ┃ 4$ ┃ 5% ┃ 6^ ┃ 7& ┃ 8* ┃ 9( ┃ 0) ┃ -_ ┃ =+ ┃ ←─ ┃ ┃Ins ┃PgUp┃
|
||||
┣━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━━━━━┫ ┣━━━━╋━━━━┫
|
||||
┃ Tab ┃ Q ┃ W ┃ E ┃ R ┃ T ┃ Y ┃ U ┃ I ┃ O ┃ P ┃ [{ ┃ ]} ┃ \| ┃ ┃Del ┃PgDn┃
|
||||
┣━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━┫ ┗━━━━┻━━━━┛
|
||||
┃ Caps ┃ A ┃ S ┃ D ┃ F ┃ G ┃ H ┃ J ┃ K ┃ L ┃ ;: ┃ '" ┃ Enter ┃ Magicforce
|
||||
┣━━━━━━━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━┳━━┻━━━━━━━━━┫ ┏━━━━┓
|
||||
┃ Shift ┃ Z ┃ X ┃ C ┃ V ┃ B ┃ N ┃ M ┃ ,< ┃ .> ┃ /? ┃ Shift ┃ ┃ ↑ ┃ Dan
|
||||
┣━━━━━┳━━━━┻┳━━━┻━┳━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━━┻━━━┳┻━━━━╋━━━━┻┳━━━━━┳━━┳━━┻━╋━━━━╋━━━━┓
|
||||
┃Ctrl ┃ GUI ┃ Alt ┃ ━━━━━ ┃ Alt ┃ Fn ┃Ctrl ┃ ┃ ← ┃ ↓ ┃ → ┃
|
||||
┗━━━━━┻━━━━━┻━━━━━┻━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┻━━━━━┻━━━━━┻━━━━━┛ ┗━━━━┻━━━━┻━━━━┛
|
||||
```
|
||||
|
||||
## Features
|
||||
|
||||
- Right ALT and FN keys swapped.
|
||||
- USB Polling rate set to 1000 Hz (1 ms).
|
||||
- Dynamic macros enabled (2 macros).
|
||||
- Transient EEPROM to avoid wearing (r/w from/to RAM).
|
||||
- NKRO enabled on boot (up to 248 keys at once).
|
||||
- CAPS LOCK key used as alias to the FN key.
|
||||
- Pro Micro's on-board LEDs used for CAPS LOCK status.
|
||||
- Backlight also used as CAPS LOCK status indicator.
|
||||
- Both Grave and Tilde characters embedded in ESC.
|
||||
- Media control keys and extra number keys (numpad).
|
||||
- Flicker-free backlight thanks to high-frequency PWM mode.
|
||||
- Linear backlight brightness intensity (better for human eyes).
|
||||
- Backlight turns off automatically after 20 minutes idle.
|
||||
- Backlight brightness levels set to 20 (5% steps) + 1 (off).
|
||||
- Backlight breathing completely disabled.
|
||||
- Link Time Optimizations to reduce compiled size.
|
||||
- QMK Terminal enabled for fun (pretty useless in practice).
|
||||
- Performing ~1550 matrix scans per second.
|
|
@ -1,9 +0,0 @@
|
|||
BACKLIGHT_DRIVER = custom
|
||||
NKRO_ENABLE = yes
|
||||
DYNAMIC_MACRO_ENABLE = yes
|
||||
|
||||
# Use RAM (fake EEPROM, transient) instead of real EEPROM
|
||||
EEPROM_DRIVER = transient
|
||||
|
||||
# LTO: Link Time Optimizations. Reduce compiled size
|
||||
LTO_ENABLE = yes
|
|
@ -1,3 +0,0 @@
|
|||
#pragma once
|
||||
|
||||
#define GRAVE_ESC_ALT_OVERRIDE
|
|
@ -1,52 +0,0 @@
|
|||
#include QMK_KEYBOARD_H
|
||||
|
||||
#define _QWERTY 0
|
||||
#define _FN1 1
|
||||
#define _FN2 2
|
||||
#define X0 LT(_FN2, KC_CAPS)
|
||||
#define X1 MO(_FN1)
|
||||
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* Default layer */
|
||||
[_QWERTY] = LAYOUT_68_ansi(
|
||||
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_INS ,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_PGDN,
|
||||
X0 , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L ,KC_SCLN,KC_QUOT, KC_ENTER,
|
||||
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_SPACE , X1 ,KC_RALT ,KC_RCTL , KC_LEFT,KC_DOWN,KC_RGHT
|
||||
),
|
||||
/* FN Layer */
|
||||
[_FN1] = LAYOUT_68_ansi(
|
||||
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_BSPC, KC_VOLU,KC_HOME,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_PSCR,KC_SCRL,KC_PAUS,_______, KC_VOLD,KC_END,
|
||||
X0 ,_______,_______,_______,_______,_______,_______,_______,_______,_______,KC_MRWD,KC_MFFD, _______,
|
||||
_______ ,_______,_______,KC_MSTP,KC_MPRV,KC_MNXT,KC_MPLY,KC_VOLD,KC_VOLU,KC_MUTE,_______, _______, _______,
|
||||
_______ ,_______ ,_______ , _______, _______,_______,_______, _______,_______,_______
|
||||
),
|
||||
|
||||
/* CAPS LOCK layer */
|
||||
[_FN2] = LAYOUT_68_ansi(
|
||||
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_BSPC, KC_VOLU,KC_HOME,
|
||||
_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, KC_VOLD,KC_END,
|
||||
_______,_______,_______,_______,_______,_______,KC_LEFT,KC_DOWN, KC_UP ,KC_RGHT,_______,_______, _______,
|
||||
_______ ,_______,_______,_______,_______,_______,_______,_______,_______,_______,_______, _______, _______,
|
||||
_______ ,_______ ,_______ , _______, _______,_______,_______, _______,_______,_______
|
||||
)
|
||||
};
|
||||
|
||||
bool led_update_user(led_t led_state){
|
||||
//turn on the Pro Micro's on board LEDs for CAPS LOCK
|
||||
if(led_state.caps_lock){
|
||||
//set led pins to low
|
||||
setPinOutput(B0);
|
||||
writePinLow(B0);
|
||||
setPinOutput(D5);
|
||||
writePinLow(D5);
|
||||
} else {
|
||||
//set to Hi-Z
|
||||
setPinInput(B0);
|
||||
setPinInput(D5);
|
||||
}
|
||||
return false;
|
||||
}
|
|
@ -1,13 +0,0 @@
|
|||
# emdarcher's MF68 Layout
|
||||
|
||||
A layout mostly based off the factory layout, but with some modifications. Designed for use in a MAC or Unix environment, and has some VIM inspiration.
|
||||
|
||||
- Utilizes the Pro Micro's on board LED's to show the CAPS LOCK status.
|
||||
- Added Caps Lock for an extra FN layer with VIM like control on hjlk keys.
|
||||
- Made the ESC key use GESC for functionality for Grave and Tilde with shift or GUI modifiers.
|
||||
- Added Print Screen, Scroll Lock, and Pause keys on P,[,] keys to add Mac screen brightness control.
|
||||
* On Mac, Scroll Lock is Brightness Down and Pause is Brightness Up, so with this FN+[ = brighness down, FN+] = brightness up
|
||||
- Has Mac Fast-forward and Rewind keys mapped for changing media tracks. FN+; = Rewind, FN+' = Fast-forward
|
||||
- Moved LGUI to the default MAC Command key position.
|
||||
|
||||
Note: By default, this keymap doesn't utilize the backlighting.
|
|
@ -1,3 +0,0 @@
|
|||
|
||||
BACKLIGHT_ENABLE = no
|
||||
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue