Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

zigotica userspace #14670

Merged
merged 21 commits into from
Oct 16, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions keyboards/splitkb/kyria/keymaps/zigotica/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
/* Copyright 2020 Sergi Meseguer <[email protected]>

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
zigotica marked this conversation as resolved.
Show resolved Hide resolved

#define SPLIT_LAYER_STATE_ENABLE
#define SPLIT_LED_STATE_ENABLE
#define MASTER_RIGHT// EE_HANDS MASTER_RIGHT

// these should work better for homerow modifiers
#define TAPPING_TERM 350
#define PERMISSIVE_HOLD
#define IGNORE_MOD_TAP_INTERRUPT
#define TAPPING_FORCE_HOLD

#define LEADER_PER_KEY_TIMING
#define LEADER_TIMEOUT 300

#ifdef OLED_ENABLE
#define OLED_DISPLAY_128X64
#define OLED_TIMEOUT 10000
#endif

#ifdef ENCODER_ENABLE
// EC11K encoders have a different resolution than other EC11 encoders.
// When using the default resolution of 4, if you notice your encoder skipping
// every other tick, lower the resolution to 2.
#define ENCODER_RESOLUTION 2
// Also, flip direction
#define ENCODER_DIRECTION_FLIP
#endif
58 changes: 58 additions & 0 deletions keyboards/splitkb/kyria/keymaps/zigotica/keymap.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
/* Copyright 2020 Sergi Meseguer <[email protected]>

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 "zigotica.h"

#define LAYOUT_wrapper(...) LAYOUT(__VA_ARGS__)

const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {

[BASE] = LAYOUT_wrapper(
_______, _STENAI_L1, _STENAI_R1, _______,
_______, _STENAI_L2, _STENAI_R2, _______,
_______, _STENAI_L3, _______, _______, _______, _______, _STENAI_R3, _______,
_______, _______, _STENAI_LT, _______, _______, _STENAI_RT, _______, _______
),

[_NUM] = LAYOUT_wrapper(
_______, ____NUM_L1, ____NUM_R1, _______,
_______, ____NUM_L2, ____NUM_R2, _______,
_______, ____NUM_L3, _______, _______, _______, _______, ____NUM_R3, _______,
_______, _______, ____NUM_LT, _______, _______, ____NUM_RT, _______, _______
),

[_NAV] = LAYOUT_wrapper(
_______, ____NAV_L1, ____NAV_R1, _______,
_______, ____NAV_L2, ____NAV_R2, _______,
_______, ____NAV_L3, _______, _______, _______, _______, ____NAV_R3, _______,
_______, _______, ____NAV_LT, _______, _______, ____NAV_RT, _______, _______
),

[_SYM] = LAYOUT_wrapper(
_______, ____SYM_L1, ____SYM_R1, _______,
_______, ____SYM_L2, ____SYM_R2, _______,
_______, ____SYM_L3, _______, _______, _______, _______, ____SYM_R3, _______,
_______, _______, ____SYM_LT, _______, _______, ____SYM_RT, _______, _______
),

[_FN] = LAYOUT_wrapper(
_______, ____FN_L1, ____FN_R1, _______,
_______, ____FN_L2, ____FN_R2, _______,
_______, ____FN_L3, _______, _______, _______, _______, ____FN_R3, _______,
_______, _______, ____FN_LT, _______, _______, ____FN_RT, _______, _______
),
};

87 changes: 87 additions & 0 deletions keyboards/splitkb/kyria/keymaps/zigotica/oled.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/* Copyright 2020 Sergi Meseguer <[email protected]>

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 "zigotica.h"

oled_rotation_t oled_init_user(oled_rotation_t rotation) {
return OLED_ROTATION_180;
}

static void render_kyria_logo(void) {
static const char PROGMEM kyria_logo[] = {
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,128,128,192,224,240,112,120, 56, 60, 28, 30, 14, 14, 14, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 14, 14, 14, 30, 28, 60, 56,120,112,240,224,192,128,128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0,192,224,240,124, 62, 31, 15, 7, 3, 1,128,192,224,240,120, 56, 60, 28, 30, 14, 14, 7, 7,135,231,127, 31,255,255, 31,127,231,135, 7, 7, 14, 14, 30, 28, 60, 56,120,240,224,192,128, 1, 3, 7, 15, 31, 62,124,240,224,192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0,240,252,255, 31, 7, 1, 0, 0,192,240,252,254,255,247,243,177,176, 48, 48, 48, 48, 48, 48, 48,120,254,135, 1, 0, 0,255,255, 0, 0, 1,135,254,120, 48, 48, 48, 48, 48, 48, 48,176,177,243,247,255,254,252,240,192, 0, 0, 1, 7, 31,255,252,240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0,255,255,255, 0, 0, 0, 0, 0,254,255,255, 1, 1, 7, 30,120,225,129,131,131,134,134,140,140,152,152,177,183,254,248,224,255,255,224,248,254,183,177,152,152,140,140,134,134,131,131,129,225,120, 30, 7, 1, 1,255,255,254, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0,255,255, 0, 0,192,192, 48, 48, 0, 0,240,240, 0, 0, 0, 0, 0, 0,240,240, 0, 0,240,240,192,192, 48, 48, 48, 48,192,192, 0, 0, 48, 48,243,243, 0, 0, 0, 0, 0, 0, 48, 48, 48, 48, 48, 48,192,192, 0, 0, 0, 0, 0,
0, 0, 0,255,255,255, 0, 0, 0, 0, 0,127,255,255,128,128,224,120, 30,135,129,193,193, 97, 97, 49, 49, 25, 25,141,237,127, 31, 7,255,255, 7, 31,127,237,141, 25, 25, 49, 49, 97, 97,193,193,129,135, 30,120,224,128,128,255,255,127, 0, 0, 0, 0, 0,255,255,255, 0, 0, 0, 0, 63, 63, 3, 3, 12, 12, 48, 48, 0, 0, 0, 0, 51, 51, 51, 51, 51, 51, 15, 15, 0, 0, 63, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 48, 63, 63, 48, 48, 0, 0, 12, 12, 51, 51, 51, 51, 51, 51, 63, 63, 0, 0, 0, 0, 0,
0, 0, 0, 0, 15, 63,255,248,224,128, 0, 0, 3, 15, 63,127,255,239,207,141, 13, 12, 12, 12, 12, 12, 12, 12, 30,127,225,128, 0, 0,255,255, 0, 0,128,225,127, 30, 12, 12, 12, 12, 12, 12, 12, 13,141,207,239,255,127, 63, 15, 3, 0, 0,128,224,248,255, 63, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 3, 7, 15, 62,124,248,240,224,192,128, 1, 3, 7, 15, 30, 28, 60, 56,120,112,112,224,224,225,231,254,248,255,255,248,254,231,225,224,224,112,112,120, 56, 60, 28, 30, 15, 7, 3, 1,128,192,224,240,248,124, 62, 15, 7, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 3, 7, 15, 14, 30, 28, 60, 56,120,112,112,112,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,224,112,112,112,120, 56, 60, 28, 30, 14, 15, 7, 3, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
};
oled_write_raw_P(kyria_logo, sizeof(kyria_logo));
}

static void render_qmk_logo(void) {
static const char PROGMEM qmk_logo[] = {
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0};

oled_write_P(qmk_logo, false);
}

static void render_status(void) {
// QMK Logo and version information
render_qmk_logo();
oled_write_P(PSTR("Kyria v1.2\n\n"), false);

// Host Keyboard Layer Status
oled_write_P(PSTR("Layer: "), false);
switch (get_highest_layer(layer_state)) {
case BASE:
oled_write_P(PSTR("STENAI\n"), false);
break;
case _NUM:
oled_write_P(PSTR("NUM\n"), false);
break;
case _NAV:
oled_write_P(PSTR("NAV\n"), false);
break;
case _SYM:
oled_write_P(PSTR("SYM\n"), false);
break;
case _FN:
oled_write_P(PSTR("FN\n"), false);
break;
default:
oled_write_P(PSTR("Undef\n"), false);
}

// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(led_state.num_lock ? PSTR("NUMLCK ") : PSTR(" "), false);
oled_write_P(led_state.caps_lock ? PSTR("CAPLCK ") : PSTR(" "), false);
oled_write_P(led_state.scroll_lock ? PSTR("SCRLCK ") : PSTR(" "), false);
}

void oled_task_user(void) {
if (!is_keyboard_left()) {
render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc)
} else {
render_kyria_logo();
}
}

18 changes: 18 additions & 0 deletions keyboards/splitkb/kyria/keymaps/zigotica/oled.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/* Copyright 2020 Sergi Meseguer <[email protected]>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once
#include "zigotica.h"
10 changes: 10 additions & 0 deletions keyboards/splitkb/kyria/keymaps/zigotica/rules.mk
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
OLED_ENABLE = yes
ENCODER_ENABLE = no
RGBLIGHT_ENABLE = no

COMBO_ENABLE = yes
TAP_DANCE_ENABLE = yes
LEADER_ENABLE = no
UNICODE_ENABLE = no
MOUSEKEY_ENABLE = yes

30 changes: 30 additions & 0 deletions keyboards/z12/keymaps/zigotica/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/* Copyright 2020 Sergi Meseguer <[email protected]>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#include "config_common.h"

#ifdef OLED_ENABLE
#define OLED_DISPLAY_128X32
#endif

// EC11 encoders' resolution.
// Reduce the value to 2 if you feel missing values:
#define ENCODER_RESOLUTION 4

// Allows correct registered values by rotary encoder:
#define TAP_CODE_DELAY 10
114 changes: 114 additions & 0 deletions keyboards/z12/keymaps/zigotica/encoder.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
/* Copyright 2020 Sergi Meseguer <[email protected]>

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 "zigotica.h"

bool encoder_update_user(uint8_t index, bool clockwise) {
switch(get_highest_layer(layer_state)){
case _VIM:
if (index == 0) { // LEFT
// Cycle through buffers
if (clockwise) {
register_code(KC_ESC);
SEND_STRING(":bprevious");
register_code(KC_ENT);
unregister_code(KC_ESC);
unregister_code(KC_ENT);
} else {
register_code(KC_ESC);
SEND_STRING(":bnext");
register_code(KC_ENT);
unregister_code(KC_ESC);
unregister_code(KC_ENT);
}
} else { // RIGHT
// Scroll
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
}
break;
case _BROWSER:
if (index == 0) { // LEFT
// Cycle through Tabs
if (clockwise) {
tap_code16(C(KC_TAB));
/* register_code16(G(KC_RCBR)); */
/* unregister_code16(G(KC_RCBR)); */
} else {
tap_code16(S(C(KC_TAB)));
/* register_code16(G(KC_LCBR)); */
/* unregister_code16(G(KC_LCBR)); */
}
} else { // RIGHT
// Scroll up/down
if (clockwise) {
register_code(KC_WH_U);
unregister_code(KC_WH_U);
} else {
register_code(KC_WH_D);
unregister_code(KC_WH_D);
}
}
break;
case _FIGMA:
if (index == 0) { // LEFT
// Volume control.
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
} else { // RIGHT
// Zoom in/out
if (clockwise) {
register_code(KC_LGUI);
register_code(KC_WH_D);
unregister_code(KC_WH_D);
unregister_code(KC_LGUI);
} else {
register_code(KC_LGUI);
register_code(KC_WH_U);
unregister_code(KC_WH_U);
unregister_code(KC_LGUI);
}
}
break;
case _TERMINAL:
default:
if (index == 0) { // LEFT
// Volume control.
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
} else { // RIGHT
// Scroll
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
}
break;
}
return false;
}


18 changes: 18 additions & 0 deletions keyboards/z12/keymaps/zigotica/encoder.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
/* Copyright 2020 Sergi Meseguer <[email protected]>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once
#include "zigotica.h"
Loading