From 66594e127019a83059a6d3ff662bdf8ebf3082d3 Mon Sep 17 00:00:00 2001 From: Dave G Vigil Sr Date: Thu, 12 Oct 2023 17:40:51 -0500 Subject: [PATCH] Initial commit --- .gitmodules | 3 + Makefile | 58 ++++++ dgvigil/dgvigil.c | 5 + dgvigil/dgvigil.h | 8 + dgvigil/readme.md | 14 ++ dgvigil/rules.mk | 1 + draculad/config.h | 30 +++ draculad/keymap.c | 449 ++++++++++++++++++++++++++++++++++++++++++++ draculad/rules.mk | 12 ++ iris/config.h | 35 ++++ iris/keymap.c | 205 ++++++++++++++++++++ iris/light_layers.h | 127 +++++++++++++ iris/readme.md | 137 ++++++++++++++ iris/rules.mk | 7 + scottogame/config.h | 22 +++ scottogame/keymap.c | 48 +++++ scottogame/rules.mk | 2 + sweep/config.h | 23 +++ sweep/keymap.c | 143 ++++++++++++++ sweep/rules.mk | 4 + swoop/config.h | 44 +++++ swoop/keymap.c | 175 +++++++++++++++++ swoop/rules.mk | 9 + 23 files changed, 1561 insertions(+) create mode 100644 .gitmodules create mode 100644 Makefile create mode 100644 dgvigil/dgvigil.c create mode 100644 dgvigil/dgvigil.h create mode 100644 dgvigil/readme.md create mode 100644 dgvigil/rules.mk create mode 100644 draculad/config.h create mode 100644 draculad/keymap.c create mode 100644 draculad/rules.mk create mode 100644 iris/config.h create mode 100644 iris/keymap.c create mode 100644 iris/light_layers.h create mode 100644 iris/readme.md create mode 100644 iris/rules.mk create mode 100644 scottogame/config.h create mode 100644 scottogame/keymap.c create mode 100644 scottogame/rules.mk create mode 100644 sweep/config.h create mode 100644 sweep/keymap.c create mode 100644 sweep/rules.mk create mode 100644 swoop/config.h create mode 100644 swoop/keymap.c create mode 100644 swoop/rules.mk diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..8ad46ee --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "qmk_firmware"] + path = qmk_firmware + url = https://github.com/qmk/qmk_firmware.git diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..18df9eb --- /dev/null +++ b/Makefile @@ -0,0 +1,58 @@ +USER = dgvigil + +KEYBOARDS = draculad iris scottogame sweep swoop +NAME_draculad = draculad +NAME_iris = keebio/iris/rev8 +NAME_scottogame = handwired/scottokeebs/scottogame +NAME_sweep = ferris/sweep +NAME_swoop = bluebell/swoop + + +all: $(KEYBOARDS) + +.PHONY: $(KEYBOARDS) +$(KEYBOARDS): + # init submodule + git submodule update --init --recursive + + # cleanup old symlinks + rm -rf qmk_firmware/keyboards/draculad/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/keebio/iris/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/handwired/scottokeebs/scottogame/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/bluebell/swoop/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/ferris/keymaps/$(USER) + rm -rf qmk_firmware/users/$(USER) + + + # add new symlinks + ln -s $(shell pwd)/draculad qmk_firmware/keyboards/draculad/keymaps/$(USER) + ln -s $(shell pwd)/iris qmk_firmware/keyboards/keebio/iris/keymaps/$(USER) + ln -s $(shell pwd)/sweep qmk_firmware/keyboards/ferris/keymaps/$(USER) + ln -s $(shell pwd)/scottogame qmk_firmware/keyboards/handwired/scottokeebs/scottogame/keymaps/$(USER) + ln -s $(shell pwd)/swoop qmk_firmware/keyboards/bluebell/swoop/keymaps/$(USER) + ln -s $(shell pwd)/user qmk_firmware/users/$(USER) + + # run lint check + cd qmk_firmware; qmk lint -km $(USER) -kb $(NAME_$@) + + # run build + make BUILD_DIR=$(shell pwd)/build -j1 -C qmk_firmware $(NAME_$@):$(USER) + + # cleanup symlinks + rm -rf qmk_firmware/keyboards/draculad/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/keebio/iris/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/handwired/scottokeebs/scottogame/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/bluebell/swoop/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/ferris/keymaps/$(USER) + rm -rf qmk_firmware/users/$(USER) + +clean: + rm -rf qmk_firmware/keyboards/draculad/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/keebio/iris/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/handwired/scottokeebs/scottogame/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/bluebell/swoop/keymaps/$(USER) + rm -rf qmk_firmware/keyboards/ferris/keymaps/$(USER) + rm -rf qmk_firmware/users/$(USER) + rm -rf ./build/ + rm -rf ./qmk-config-totem/ + rm -rf ./qmk_firmware/ \ No newline at end of file diff --git a/dgvigil/dgvigil.c b/dgvigil/dgvigil.c new file mode 100644 index 0000000..5ebac1b --- /dev/null +++ b/dgvigil/dgvigil.c @@ -0,0 +1,5 @@ +#include "dgvigil.h" + +void my_custom_function(void) { + +} diff --git a/dgvigil/dgvigil.h b/dgvigil/dgvigil.h new file mode 100644 index 0000000..f7c7990 --- /dev/null +++ b/dgvigil/dgvigil.h @@ -0,0 +1,8 @@ +#ifndef USERSPACE +#define USERSPACE + +#include "quantum.h" + +void my_custom_function(void); + +#endif \ No newline at end of file diff --git a/dgvigil/readme.md b/dgvigil/readme.md new file mode 100644 index 0000000..79f6976 --- /dev/null +++ b/dgvigil/readme.md @@ -0,0 +1,14 @@ +Copyright 2023 dave vigil dgvigil@gmail.com @dgvigil + +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 . diff --git a/dgvigil/rules.mk b/dgvigil/rules.mk new file mode 100644 index 0000000..245757d --- /dev/null +++ b/dgvigil/rules.mk @@ -0,0 +1 @@ +SRC += dgvigil.c diff --git a/draculad/config.h b/draculad/config.h new file mode 100644 index 0000000..ed4ed82 --- /dev/null +++ b/draculad/config.h @@ -0,0 +1,30 @@ +/* +Copyright 2021 @mangoiv + +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 . +*/ + +#define POINTING_DEVICE_ROTATION_90 + +//comment that out if your trackball is on the left side +#define TRACKBALL_LEFT + +#ifdef TRACKBALL_LEFT + #define POINTING_DEVICE_INVERT_X + #define POINTING_DEVICE_INVERT_Y +#endif + +/* Tap Dance */ +#define TAPPING_TERM 200 +#define TAPPING_TERM_PER_KEY diff --git a/draculad/keymap.c b/draculad/keymap.c new file mode 100644 index 0000000..3cc3cc2 --- /dev/null +++ b/draculad/keymap.c @@ -0,0 +1,449 @@ +/* +Copyright 2021 @mangoiv + +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 . +*/ + +#include QMK_KEYBOARD_H + +enum layer_number { + _BASE, + _NAV, + _NUM, + _SYM, + _FUN, + _MUS, + _ADJ +}; + +enum custom_keycodes { + BALL_HUI = SAFE_RANGE, //cycles hue + BALL_WHT, //cycles white + BALL_DEC, //decreased color + BALL_SCR, //scrolls + BALL_NCL, //left click + BALL_RCL, //right click + BALL_MCL, //middle click + M_PASS1, + M_PASS2 +}; + +//Tap Dance Declarations +enum { + TD_ESC_Q, + TD_ESC_A, +}; + +//Tap Dance Definitions +tap_dance_action_t tap_dance_actions[] = { + //Tap once for Q, twice for Esc + [TD_ESC_Q] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC), + //Tap once for A, twice for Tab + [TD_ESC_A] = ACTION_TAP_DANCE_DOUBLE(KC_A, KC_TAB) +}; + + +// LEFT THUMB KEYS +#define MUSIC_ESC LT(_MUS, KC_ESC) +#define NAV_BKSP LT(_NAV, KC_BSPC) +#define ADJ_TAB LT(_ADJ, KC_TAB) +// RIGHT THUMB KEYS +#define SYM_ENTER LT(_SYM, KC_ENTER) +#define NUM_SPC LT(_NUM, KC_SPC) +#define FUN_DEL LT(_FUN, KC_DEL) + +// LEFT HOME KEY MODS +#define GUIA MT(MOD_LGUI,KC_A) +#define ALTS MT(MOD_LALT,KC_S) +#define CTLD MT(MOD_LCTL,KC_D) +#define SHTF MT(MOD_LSFT,KC_F) +// RIGHT HOME KEY MODS +#define SHTJ MT(MOD_LSFT | MOD_RSFT,KC_J) +#define CTLK MT(MOD_LCTL | MOD_RCTL,KC_K) +#define ALTL MT(MOD_LALT | MOD_RALT,KC_L) +#define GUIQUOT MT(MOD_LGUI | MOD_RGUI,KC_QUOT) + +// Tap Dance +#define KC_EscTap TD(TD_ESC_Q) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_EscTap,KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + GUIA, ALTS, CTLD, SHTF, KC_G, KC_H, SHTJ, CTLK, ALTL, GUIQUOT, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + KC_MUTE, TG(_ADJ), +// ┌────────┬────────┼────────┼ ┼────────┼────────┬────────┐ + MUSIC_ESC,NAV_BKSP,ADJ_TAB, SYM_ENTER,NUM_SPC,FUN_DEL + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + [_NAV] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, KC_PSTE, KC_COPY, KC_CUT, KC_UNDO, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, M_PASS2, M_PASS1, _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + _______, _______, +// ┌────────┬────────┼────────┼ ┼────────┼────────┬────────┐ + _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + + ), + [_NUM] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, _______, _______, _______, _______, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, _______, _______, _______, _______, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_DOT, KC_1, KC_2, KC_3, KC_MINS, _______, _______, _______, _______, _______, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + _______, _______, +// ┌────────┬────────┼────────┼ ┼────────┼────────┬────────┐ + KC_0, KC_MINUS, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + [_SYM] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RBRC, _______, _______, _______, _______, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, KC_LPRN, KC_RPRN, _______, _______, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, KC_LPRN, KC_RPRN, _______, _______, _______, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + _______, _______, +// ┌────────┬────────┼────────┼ ┼────────┼────────┬────────┐ + KC_RPRN, KC_UNDS, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + [_FUN] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, KC_F11, KC_F4, KC_F5, KC_F6, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, KC_F10, KC_F1, KC_F2, KC_F3, _______, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + _______, _______, +// ┌────────┬────────┼────────┼ ┼────────┼────────┬────────┐ + KC_RPRN, KC_UNDS, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + [_MUS] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_LALT, KC_BTN3, KC_BTN2, KC_BTN1, BALL_SCR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + _______, _______, +// ┌────────┬────────┼────────┼ ┼────────┼────────┬────────┐ + _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + [_ADJ] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, BALL_HUI, BALL_WHT, BALL_DEC, XXXXXXX, XXXXXXX, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + EE_CLR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_MOD, RGB_HUI, RGB_SAI, RGB_VAI, RGB_TOG, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, RGB_RMOD,RGB_HUD, RGB_SAD, RGB_VAD, _______, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + _______, _______, +// ┌────────┬────────┼────────┼ ┼────────┼────────┬────────┐ + _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ) +}; + + +#ifdef OLED_ENABLE +oled_rotation_t oled_init_user(oled_rotation_t rotation) { + + if (is_keyboard_master()) { + if(is_keyboard_left()){ + return OLED_ROTATION_270; + } + else { + return OLED_ROTATION_90; + } + } else { + return OLED_ROTATION_0; + } +} +static void render_logo(void) { + static const char PROGMEM drac_logo[] = { + // drac_logo, 128x64px + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x80, 0x80, 0x80, 0x80, 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, 0x04, 0x04, 0x0c, 0x18, 0x78, 0xf0, 0xf0, 0xe0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x03, 0x07, 0x3e, 0xfc, 0xf0, 0x00, 0x00, 0x00, + 0xf0, 0xf0, 0x60, 0x30, 0x30, 0x30, 0x00, 0x00, 0xe0, 0xe0, 0x30, 0x30, 0x30, 0x30, 0x30, 0xe0, + 0xe0, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0x70, 0x30, 0x30, 0x30, 0x70, 0xe0, 0xc0, 0x00, 0x00, + 0xf0, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xe0, 0xe0, 0xe0, 0xc0, + 0x80, 0x00, 0x00, 0x00, 0x80, 0xe0, 0xf8, 0xf0, 0x80, 0xc0, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x3f, 0xff, 0xff, + 0xff, 0xff, 0xfe, 0xfc, 0xf8, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xe0, 0x7c, 0x3f, 0x0f, 0x00, 0x00, 0x00, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0xcc, 0x8c, 0x84, 0x86, 0x86, 0xc6, 0xff, + 0xff, 0x80, 0x80, 0x00, 0x3f, 0x7f, 0xe0, 0xc0, 0x80, 0x80, 0x80, 0xc0, 0xf0, 0x71, 0x00, 0x00, + 0x1f, 0xff, 0xff, 0x80, 0x80, 0x80, 0x80, 0xc0, 0xf8, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x03, 0x03, 0x03, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, + 0x7f, 0x7f, 0x3e, 0x3e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xf8, 0xf8, 0xfc, + 0xfc, 0xfe, 0xfe, 0x7e, 0x7c, 0x78, 0xe0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, + 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc0, 0xe0, 0xf0, 0xf8, 0xfe, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0x60, 0x60, + 0x60, 0x60, 0x60, 0xc0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xc0, 0xe0, 0x60, 0x60, 0x60, 0xc0, + 0xc0, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x07, + 0x0f, 0x3e, 0x7c, 0xfc, 0xf8, 0xf8, 0xf8, 0xf8, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf8, + 0xf8, 0xf8, 0xfc, 0xfc, 0xfc, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x7f, 0x3f, 0x1f, 0x0f, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xf1, 0x99, 0x18, 0x08, + 0x0c, 0x0c, 0x8c, 0xff, 0xff, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xc1, 0x80, 0x00, 0x00, 0x00, 0x80, + 0xc3, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x03, 0x07, 0x07, 0x0f, 0x0f, 0x0f, 0x1f, 0x1f, 0x1f, 0x1f, + 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x1f, 0x0f, 0x0f, 0x07, 0x07, 0x03, 0x03, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x03, 0x03, 0x03, + 0x03, 0x03, 0x01, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03, 0x03, 0x03, 0x01, + 0x01, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; + oled_write_raw_P(drac_logo, sizeof(drac_logo)); +} + +static void render_status(void) { + oled_write_P(PSTR("This is\n~~~~~~~~~\nDracu\nLad\n~~~~~~~~~\nv1.0\n~~~~~~~~~\n"), false); + uint8_t n = get_current_wpm(); + char wpm_counter[4]; + wpm_counter[3] = '\0'; + wpm_counter[2] = '0' + n % 10; + wpm_counter[1] = (n /= 10) % 10 ? '0' + (n) % 10 : (n / 10) % 10 ? '0' : ' '; + wpm_counter[0] = n / 10 ? '0' + n / 10 : ' '; + oled_write_P(PSTR("WPM:"), false); + oled_write(wpm_counter, false); + led_t led_state = host_keyboard_led_state(); + oled_write_P(PSTR("\nCaps: "), false); + oled_write_P(led_state.caps_lock ? PSTR("on ") : PSTR("off"), false); + oled_write_P(PSTR("\n"), false); + switch (get_highest_layer(layer_state)) { + case _BASE: + oled_write_P(PSTR("Base "), false); + break; + case _NAV: + oled_write_P(PSTR("Navigat"), false); + break; + case _NUM: + oled_write_P(PSTR("Numbers"), false); + break; + case _SYM: + oled_write_P(PSTR("Symbols"), false); + break; + case _ADJ: + oled_write_P(PSTR("Adjust "), false); + break; + case _MUS: + oled_write_P(PSTR("Mouse "), false); + break; + case _FUN: + oled_write_P(PSTR("Functio"), false); + break; + default: + oled_write_P(PSTR("Unkn "), false); + break; + } +} + +bool oled_task_user(void) { + if (is_keyboard_master()) { + render_status(); // Renders the current keyboard state (layer, lock, caps, scroll, etc) + } else { + render_logo(); + } + return false; +} + +#endif //OLED_ENABLE + +uint8_t white = 0; +uint8_t red = 255; +uint8_t green = 0; +uint8_t blue = 0; + +bool set_scrolling = false; +report_mouse_t pointing_device_task_user(report_mouse_t mouse_report) { + if (set_scrolling) { + mouse_report.h = mouse_report.x; + mouse_report.v = mouse_report.y; + mouse_report.x = mouse_report.y = 0; + } + return mouse_report; +} + +void ball_increase_hue(void){ + if(red!=255&&green!=255&&blue!=255){ + red =255; + } + if (red==255&&green<255&&blue==0){ + green += 15; + } else if(green==255&&blue==0&&red>0){ + red-=15; + } else if(red==0&&blue<255&&green==255){ + blue+=15; + } else if(blue==255&&green>0&&red==0){ + green -= 15; + } else if(green == 0&&blue==255&&red<255){ + red +=15; + } else if(green ==0&&blue>0&&red==255){ + blue -=15; + } + pimoroni_trackball_set_rgbw(red,green,blue,white); +} + +void decrease_color(void){ + if (green>0){ + green-=15; + } + if (red>0){ + red-=15; + } + if (blue>0){ + blue-=15; + } + pimoroni_trackball_set_rgbw(red,green,blue,white); +} + +void cycle_white(void){ + if (white<255){ + white +=15; + } else{ + white=0; + } + pimoroni_trackball_set_rgbw(red,green,blue,white); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record){ + switch (keycode){ + case M_PASS1: + if (record->event.pressed) { + SEND_STRING("T3lg3Ranch!2023"); + } + return false; + case M_PASS2: + if (record->event.pressed) { + SEND_STRING("C0pperfield!2023"); + } + return false; + case BALL_HUI: + if(record->event.pressed){ + ball_increase_hue(); + } + break; + + case BALL_WHT: + if(record-> event.pressed){ + cycle_white(); + } + break; + + case BALL_DEC: + if(record-> event.pressed){ + decrease_color(); + } + break; + + case BALL_SCR: + if(record->event.pressed){ + set_scrolling = true; + } else{ + set_scrolling = false; + } + break; + + case BALL_NCL: + record->event.pressed?register_code(KC_BTN1):unregister_code(KC_BTN1); + break; + case BALL_RCL: + record->event.pressed?register_code(KC_BTN2):unregister_code(KC_BTN2); + break; + case BALL_MCL: + record->event.pressed?register_code(KC_BTN3):unregister_code(KC_BTN3); + break; + } + return true; +} + +#ifdef ENCODER_ENABLE +bool encoder_update_user(uint8_t index, bool clockwise) { + if (index == 0) { + // Volume control + if (clockwise) { + tap_code(KC_VOLU); + } else { + tap_code(KC_VOLD); + } + } + else if (index == 2) { + switch (get_highest_layer(layer_state)) { + case _ADJ: + clockwise?ball_increase_hue():cycle_white(); + break; + case _MUS: + clockwise?tap_code(KC_WH_U):tap_code(KC_WH_D); + break; + default: + clockwise?tap_code(KC_PGUP):tap_code(KC_PGDN); + break; + } + } + // I only have 2 encoders on the the pimoroni example board, just add else ifs for your other encoders... + // the missing ones are encoder 1 on the right side and encoder 3 on the left side + return true; +} +#endif // ENCODER_ENABLE diff --git a/draculad/rules.mk b/draculad/rules.mk new file mode 100644 index 0000000..6d050e5 --- /dev/null +++ b/draculad/rules.mk @@ -0,0 +1,12 @@ +# only uncomment on the side you have your trackball on +POINTING_DEVICE_ENABLE = yes +POINTING_DEVICE_DRIVER = pimoroni_trackball +OLED_ENABLE = yes +MOUSEKEY_ENABLE = yes + +ENCODER_ENABLE = yes + +TAP_DANCE_ENABLE = yes +LTO_ENABLE = yes +BOOTLOADER = rp2040 +CONVERT_TO = promicro_rp2040 diff --git a/iris/config.h b/iris/config.h new file mode 100644 index 0000000..ad743b6 --- /dev/null +++ b/iris/config.h @@ -0,0 +1,35 @@ +/* Copyright 2023 Dave Vigil dgvigil + * + * 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 . + */ +#pragma once + +#define AUTO_SHIFT_TIMEOUT 150 + +#define SPLIT_LAYER_STATE_ENABLE + +#define MOUSEKEY_DELAY 20 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_MAX_SPEED 5 +#define MOUSEKEY_TIME_TO_MAX 40 +#define MOUSEKEY_WHEEL_MAX_SPEED 10 + +// Tapping Term +#define TAPPING_TERM 200 +#define TAPPING_TERM_PER_KEY + + +#define COMBO_TERM 25 // how quickly all combo keys must be pressed in succession to trigger +#define COMBO_MUST_HOLD_MODS // if a combo triggers a modifier, only trigger when the combo is held +#define COMBO_HOLD_TERM 175 // how long at least one of the combo keys must be held to trigger diff --git a/iris/keymap.c b/iris/keymap.c new file mode 100644 index 0000000..5db400e --- /dev/null +++ b/iris/keymap.c @@ -0,0 +1,205 @@ +/* Copyright 2023 Dave Vigil dgvigil + * + * 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 . + */ +#include QMK_KEYBOARD_H + +enum layer_number { + _BASE, + _NAV, + _NUM, + _SYM, + _FUN, + _MUS, + _MOUSE +}; + +enum custom_keycodes { + M_PASS1 = SAFE_RANGE, + M_PASS2 +}; + +// Tap Dance declarations +enum { + TD_Q_ESC, +}; + +// Tap Dance definitions +tap_dance_action_t tap_dance_actions[] = { + // Tap once for Q, twice for Escape + [TD_Q_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC), +}; + +enum combos { + FA_GUI, + FS_ALT, + FD_CTL, + JQUOT_GUI, + JL_ALT, + JK_CTL +}; + +const uint16_t PROGMEM fa_combo[] = {KC_F, KC_A, COMBO_END}; +const uint16_t PROGMEM fs_combo[] = {KC_F, KC_S, COMBO_END}; +const uint16_t PROGMEM fd_combo[] = {KC_F, KC_D, COMBO_END}; +const uint16_t PROGMEM jquote_combo[] = {KC_J, KC_QUOT, COMBO_END}; +const uint16_t PROGMEM jl_combo[] = {KC_J, KC_L, COMBO_END}; +const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END}; + +combo_t key_combos[] = { + [FA_GUI] = COMBO(fa_combo, KC_LGUI), + [FS_ALT] = COMBO(fs_combo, KC_LALT), + [FD_CTL] = COMBO(fd_combo, KC_LCTL), + [JQUOT_GUI] = COMBO(jquote_combo, KC_RGUI), + [JL_ALT] = COMBO(jl_combo, KC_RALT), + [JK_CTL] = COMBO(jk_combo, KC_RCTL), +}; + +// LEFT THUMB KEYS +#define MUS_ESC LT(_MUS, KC_ESC) +#define NAV_BKSP LT(_NAV, KC_BSPC) +#define MOUSE_TAB LT(_MOUSE, KC_TAB) +// RIGHT THUMB KEYS +#define SYM_ENTER LT(_SYM, KC_ENTER) +#define NUM_SPC LT(_NUM, KC_SPC) +#define FUN_DEL LT(_FUN, KC_DEL) +// TAP DANCE +#define Q_ESC TD(TD_Q_ESC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MUTE, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LPAD, Q_ESC, 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_QUOT, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, QK_CAPS_WORD_TOGGLE, _______, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + MUS_ESC, NAV_BKSP,MOUSE_TAB, SYM_ENTER,NUM_SPC,FUN_DEL + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + [_NAV] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, KC_LPAD, KC_PSCR, _______, _______, _______, _______, RGB_TOG, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_PSTE, KC_COPY, KC_CUT, KC_UNDO, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, M_PASS2, M_PASS1, QK_LEAD, _______, _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END, _______, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + [_NUM] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, KC_LPAD, KC_PSCR, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_DOT, KC_1, KC_2, KC_3, KC_BSLS, KC_LPRN, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + KC_DOT, KC_0, KC_MINUS, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + [_SYM] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, KC_LPAD, KC_PSCR, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RCBR, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + KC_LPRN, KC_RPRN, KC_UNDS, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + [_FUN] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, KC_LPAD, KC_PSCR, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_F11, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______, KC_F10, KC_F1, KC_F2, KC_F3, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + [_MUS] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, KC_LPAD, KC_PSCR, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, _______, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + _______, _______, _______, KC_MSTP, KC_MPLY, KC_MUTE + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + + [_MOUSE] = LAYOUT( + //┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, KC_LPAD, KC_PSCR, _______, _______, _______, _______, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, KC_PSTE, KC_COPY, KC_CUT, KC_UNDO, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, KC_BTN1, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, _______, + //├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, _______, + //└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ) +}; + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case M_PASS1: + if (record->event.pressed) { + SEND_STRING("T3lg3Ranch!2023"); + } + return false; + case M_PASS2: + if (record->event.pressed) { + SEND_STRING("C0pperfield!2023"); + } + return false; + } + return true; +} + +const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = { + [_BASE] = { ENCODER_CCW_CW(KC_PGUP, KC_PGDN), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, + [_NAV] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(RGB_MOD, RGB_RMOD) }, + [_NUM] = { ENCODER_CCW_CW(C(KC_LEFT), C(KC_RIGHT)), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(RGB_SAD, RGB_SAI), ENCODER_CCW_CW(KC_B, KC_B) }, + [_SYM] = { ENCODER_CCW_CW(C(KC_TAB), S(C(KC_TAB))), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) }, + [_MOUSE] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) }, + [_FUN] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) }, + [_MUS] = { ENCODER_CCW_CW(RGB_SPD, RGB_SPI), ENCODER_CCW_CW(KC_A, KC_A), ENCODER_CCW_CW(KC_LEFT, KC_RIGHT), ENCODER_CCW_CW(KC_B, KC_B) }, +}; diff --git a/iris/light_layers.h b/iris/light_layers.h new file mode 100644 index 0000000..0223ed6 --- /dev/null +++ b/iris/light_layers.h @@ -0,0 +1,127 @@ +// Copyright 2022 Ignacy Radliński (@radlinskii) +// SPDX-License-Identifier: GPL-2.0-or-later + +#pragma once + +/* + +LED index mapping: + + (31) (32) (33) (67) (66) (65) +┌────────┬────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┬────────┐ +│0 │1 │2 │3 │4 │5 │ │39 │38 │37 │36 │35 │34 │ +├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ +│11 │10 │9 │8 │7 │6 │ │40 │41 │42 │43 │44 │45 │ +├────────┼────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┼────────┤ +│12 │13 │14 │15 │16 │17 │ │51 │50 │49 │48 │47 │46 │ +├────────┼────────┼────────┼────────┼────────┼────────┼────────┐ ┌────────┼────────┼────────┼────────┼────────┼────────┼────────┤ +│23 │22 │21 │20 │19 │18 │27 │ │61 │52 │53 │54 │55 │56 │57 │ +└────────┴────────┴────────┴───┬────┴───┬────┴───┬────┴───┬────┘ └───┬────┴───┬────┴───┬────┴───┬────┴────────┴────────┴────────┘ + │24 │25 │26 │ │60 │59 │58 │ + └────────┴────────┴────────┘ └────────┴────────┴────────┘ + (30) (29) (28) (62) (63) (64) + +*/ + +const rgblight_segment_t PROGMEM COLEMAK_LIGHT_LAYER[] = RGBLIGHT_LAYER_SEGMENTS( + // left side + {0, 1, HSV_GREEN}, // Computer + {1, 1, 0, 55, 140}, + {2, 1, HSV_ORANGE}, // B-WING + {3, 1, HSV_WHITE}, // X-WING + {4, 1, HSV_YELLOW}, // Y-WING + {5, 1, 160, 160, 160}, // M FALCON + {6, 1, HSV_BLUE}, // R2-D2 + {7, 1, 0, 55, 140}, + {8, 1, HSV_YELLOW}, // C3PO + {9, 1, 0, 55, 140}, + {10, 1, HSV_ORANGE}, // BB8 + {11, 1, 0, 55, 140}, + {12, 6, 0, 55, 140}, + {18, 6, 0, 55, 140}, + {24, 1, 0, 55, 140}, + {25, 1, HSV_BLUE}, // Thumb/Jedi + {26, 1, 0, 55, 140}, + {27, 1, HSV_BLUE}, // Rebel + {28, 3, HSV_BLUE}, // underglow + {31, 3, HSV_BLUE}, // underglow + // right side + {34, 3, 0, 55, 140}, + {37, 3, 160, 160, 160}, // AT-AT, AT-ST, Tie fighter + {40, 1, HSV_GREEN}, // Boba Fett + {41, 1, 0, 55, 140}, + {42, 1, HSV_WHITE}, // Storm Trooper + {43, 1, 0, 55, 140}, + {44, 1, 160, 160, 160}, // Death Star + {45, 1, 0, 55, 140}, + {46, 6, 0, 55, 140}, + {52, 6, 0, 55, 140}, + {58, 1, 0, 55, 140}, + {59, 1, HSV_RED}, // Thumb / Empire + {60, 1, 0, 55, 140}, + {61, 1, 32, 32, 32}, // Vader + {62, 3, HSV_RED}, // underglow + {65, 3, HSV_RED} // underglow +); + +const rgblight_segment_t PROGMEM QWERTY_LIGHT_LAYER[] = RGBLIGHT_LAYER_SEGMENTS( + // left side + {0, 6, HSV_RED}, + {6, 6, HSV_RED}, + {12, 6, HSV_RED}, + {18, 6, HSV_RED}, + {24, 1, HSV_RED}, + {25, 1, HSV_WHITE}, // THUMB + {26, 2, HSV_RED}, + {28, 3, HSV_RED}, // underglow + {31, 3, HSV_RED}, // underglow + // right side + {34, 6, HSV_RED}, + {40, 6,HSV_RED}, + {46, 6, HSV_RED}, + {52, 6, HSV_RED}, + {58, 1, HSV_RED}, + {59, 1, HSV_WHITE}, // THUMB + {60, 2, HSV_RED}, + {62, 3, HSV_RED}, // underglow + {65, 3, HSV_RED} // underglow +); + +const rgblight_segment_t PROGMEM NAV_LIGHT_LAYER[] = RGBLIGHT_LAYER_SEGMENTS( + // left side + {0, 3, HSV_RED}, // F1-F3 + {3, 3, HSV_BLACK}, + {6, 1, HSV_ORANGE}, // KC_GRV + {7, 2, HSV_BLUE}, // Macro 1 & 2 + {9, 2, HSV_RED}, // F4-F6 + {12, 3, HSV_RED}, // F7-F9 + {15, 3, HSV_ORANGE},// L/R and bracket + {18, 1, HSV_WHITE}, // bracket + {19, 2, HSV_BLACK}, + {21, 3, HSV_RED}, // F10-F12 + {24, 1, HSV_BLACK}, + {25, 1, HSV_BLACK}, // THUMB + {26, 2, HSV_BLACK}, + {28, 3, HSV_WHITE}, // underglow + {31, 3, HSV_WHITE}, // underglow + // right side + {34, 3, HSV_WHITE}, // NUM 7-9 + {37, 3, HSV_BLACK}, + {40, 3, HSV_BLACK}, + {43, 3, HSV_WHITE}, // NUM 4-6 + {46, 3, HSV_WHITE}, // NUM 1-3 + {49, 3, HSV_ORANGE}, // U/D and bracket + {52, 1, HSV_ORANGE}, // bracket + {53, 2, HSV_BLACK}, + {55, 1, HSV_WHITE}, // NUM 0 + {56, 2, HSV_YELLOW}, // Dot and Enter + {58, 3, HSV_BLACK}, + {62, 3, HSV_WHITE}, // underglow + {65, 3, HSV_WHITE} // underglow +); + +const rgblight_segment_t* const PROGMEM MY_LIGHT_LAYERS[] = RGBLIGHT_LAYERS_LIST( + COLEMAK_LIGHT_LAYER, + QWERTY_LIGHT_LAYER, + NAV_LIGHT_LAYER +); diff --git a/iris/readme.md b/iris/readme.md new file mode 100644 index 0000000..5a0e929 --- /dev/null +++ b/iris/readme.md @@ -0,0 +1,137 @@ +# Iris rev. 6 keymap by radlinskii + +![iris rev. 6 by radlinskii lightning demo](https://user-images.githubusercontent.com/26116041/171883033-3c5ababe-88ae-4c9d-8436-3d6ab83dbf4b.gif) + +## Features: + +- [RGB Lightning layers](https://docs.qmk.fm/#/feature_rgblight?id=lighting-layers) +- [MOUSE KEYS](https://docs.qmk.fm/#/keycodes?id=mouse-keys) +- [MOD-TAPS](https://docs.qmk.fm/#/mod_tap) + +## Layers: + +### colemak - default + +> [Colemak DH](https://colemakmods.github.io/mod-dh/) keyboard layout. + +
+ + keymap + + +colemak layer keymap + +
+
+ + lightning + + + +colemak layer lightning + +
+ +### qwerty - alternative default + +> Can be set as persistent default layer. + +
+ + keymap + + +qwerty layer keymap + +
+
+ + lightning + + +qwerty layer lightning + +
+ +### numeric + symbols + +
+ + keymap + + +numeric and symbols layer keymap + +
+
+ + lightning + + +numeric and symbols layer lightning + +
+ +### navigation + +> Layer with arrow navigation. + +
+ + keymap + + +navigation layer keymap + +
+
+ + lightning + + +navigation layer lightning + +
+ +### mouse + +> Layer with mouse navigation on the same keys as arrow navigation. + +
+ + keymap + + +mouse layer keymap + +
+
+ + lightning + + +mouse layer lightning + +
+ +### media and miscellaneous + +> Used for media keys, switching default layer and keyboard reset. + +
+ + keymap + + +media and miscellaneous layer keymap + +
+
+ + lightning + + +media and miscellaneous layer lightning + +
+ diff --git a/iris/rules.mk b/iris/rules.mk new file mode 100644 index 0000000..a85d301 --- /dev/null +++ b/iris/rules.mk @@ -0,0 +1,7 @@ +AUTO_SHIFT_ENABLE = yes +CAPS_WORD_ENABLE = yes +COMBO_ENABLE = yes +TAP_DANCE_ENABLE = yes + +ENCODER_ENABLE = yes +ENCODER_MAP_ENABLE = yes diff --git a/scottogame/config.h b/scottogame/config.h new file mode 100644 index 0000000..42caf59 --- /dev/null +++ b/scottogame/config.h @@ -0,0 +1,22 @@ +/* Copyright 2023 Dave Vigil dgvigil + * + * 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 . + */ + +#pragma once + +// Define options +#define TAPPING_TERM 135 +#define PERMISSIVE_HOLD +#define TAPPING_TERM_PER_KEY diff --git a/scottogame/keymap.c b/scottogame/keymap.c new file mode 100644 index 0000000..8272d43 --- /dev/null +++ b/scottogame/keymap.c @@ -0,0 +1,48 @@ +/* Copyright 2023 Dave Vigil dgvigil + * + * 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 . + */ + +#include QMK_KEYBOARD_H + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [0] = LAYOUT_ortho_6_3x10_6( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, + 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_BSPC, + LSFT_T(KC_Z), KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMMA, KC_DOT, RSFT_T(KC_SLSH), + KC_LCTL, KC_LALT, LGUI_T(KC_SPC), LT(1, KC_TAB), LT(2, KC_ENT), KC_ESC + ), + [1] = LAYOUT_ortho_6_3x10_6( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_UNDS, KC_MINS, KC_PLUS, KC_EQL, KC_COLN, KC_GRV, KC_MRWD, KC_MPLY, KC_MFFD, KC_DEL, + KC_LCBR, KC_LPRN, KC_RPRN, KC_RCBR, KC_PIPE, KC_ESC, KC_LEFT, KC_UP, KC_DOWN, KC_RGHT, + LSFT_T(KC_LBRC), KC_QUOT, KC_DQUO, KC_RBRC, KC_SCLN, KC_TILDE, KC_VOLD, KC_MUTE, KC_VOLU, RSFT_T(KC_BSLS), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [2] = LAYOUT_ortho_6_3x10_6( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_CAPS, KC_BSPC, + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + KC_LSFT, KC_NO, KC_NO, KC_NO, MO(3), KC_NO, KC_NO, KC_COMM, KC_DOT, RSFT_T(KC_SLSH), + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ), + [3] = LAYOUT_ortho_6_3x10_6( + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, + KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, + KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, + KC_F11, KC_NO, KC_NO, QK_BOOT, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12, + KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS + ) +}; \ No newline at end of file diff --git a/scottogame/rules.mk b/scottogame/rules.mk new file mode 100644 index 0000000..9f00574 --- /dev/null +++ b/scottogame/rules.mk @@ -0,0 +1,2 @@ +OLED_ENABLE = yes +LTO_ENABLE = yes diff --git a/sweep/config.h b/sweep/config.h new file mode 100644 index 0000000..7e07bd3 --- /dev/null +++ b/sweep/config.h @@ -0,0 +1,23 @@ +/* Copyright 2023 Dave Vigil dgvigil + * + * 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 . + */ + +#pragma once + +/* Tap Dance */ +#define TAPPING_TERM 200 +#define TAPPING_TERM_PER_KEY + +#define EE_HANDS diff --git a/sweep/keymap.c b/sweep/keymap.c new file mode 100644 index 0000000..0b0d48f --- /dev/null +++ b/sweep/keymap.c @@ -0,0 +1,143 @@ +/* Copyright 2023 Dave Vigil dgvigil + * + * 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 . + */ +#include QMK_KEYBOARD_H + +#define _BASE 0 +#define _NAV 1 +#define _NUM 2 +#define _SYM 3 +#define _FUN 4 + +//Tap Dance Declarations +enum { + TD_ESC_Q, + TD_ESC_A, +}; + +//Tap Dance Definitions +tap_dance_action_t tap_dance_actions[] = { + //Tap once for Q, twice for Esc + [TD_ESC_Q] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC), + //Tap once for A, twice for Tab + [TD_ESC_A] = ACTION_TAP_DANCE_DOUBLE(KC_A, KC_TAB) +}; + +enum custom_keycodes { + M_PASS1 = SAFE_RANGE, + M_PASS2 +}; + +// LEFT THUMB KEYS +#define NAV_BKSP LT(_NAV, KC_BSPC) +#define FUN_TAB LT(_FUN, KC_TAB) +// RIGHT THUMB KEYS +#define SYM_ENTER LT(_SYM, KC_ENTER) +#define NUM_SPC LT(_NUM, KC_SPC) + +// QWERTY mods +// LEFT HOME KEY MODS +#define GUIA MT(MOD_LGUI,KC_A) +#define ALTS MT(MOD_LALT,KC_S) +#define CTLD MT(MOD_LCTL,KC_D) +#define SHTF MT(MOD_LSFT,KC_F) +// RIGHT HOME KEY MODS +#define SHTJ MT(MOD_LSFT | MOD_RSFT,KC_J) +#define CTLK MT(MOD_LCTL | MOD_RCTL,KC_K) +#define ALTL MT(MOD_LALT | MOD_RALT,KC_L) +#define GUIQUOT MT(MOD_LGUI | MOD_RGUI,KC_QUOT) + +// Tap Dance +#define KC_EscTap TD(TD_ESC_Q) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_EscTap,KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + GUIA, ALTS, CTLD, SHTF, KC_G, KC_H, SHTJ, CTLK, ALTL, GUIQUOT, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, + // ├────────┼────────┼────────┼────┬───┴────┬───┴───┐ ┌────┴───┬────────┼────────┼────────┼─────────┘ + NAV_BKSP,FUN_TAB, SYM_ENTER,NUM_SPC + // └────────┴───────┘ └────────┴────────┘ + ), + + [_NAV] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, KC_PSTE, KC_COPY, KC_CUT, KC_UNDO, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______,M_PASS2, M_PASS1, _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END, + // ├────────┼────────┼────────┼────┬───┴────┬───┴───┐ ┌────┴───┬────────┼────────┼────────┼─────────┘ + _______, _______, _______, _______ + // └────────┴───────┘ └────────┴────────┘ + ), + + [_NUM] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, _______, _______, _______, _______, _______, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, _______, _______, _______, _______, _______, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_DOT, KC_1, KC_2, KC_3, KC_MINS, _______, _______, _______, _______, _______, + // ├────────┼────────┼────────┼────┬───┴────┬───┴───┐ ┌────┴───┬────────┼────────┼────────┼─────────┘ + KC_0, KC_MINUS, _______, _______ + // └────────┴───────┘ └────────┴────────┘ + ), + + [_SYM] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RBRC, _______, _______, _______, _______, _______, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, KC_LPRN, KC_RPRN, _______, _______, _______, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, KC_LPRN, KC_RPRN, _______, _______, _______, + // ├────────┼────────┼────────┼────┬───┴────┬───┴───┐ ┌────┴───┬────────┼────────┼────────┼─────────┘ + KC_RPRN, KC_UNDS, _______, _______ + // └────────┴───────┘ └────────┴────────┘ + ), + + [_FUN] = LAYOUT( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, KC_F11, KC_F4, KC_F5, KC_F6, _______, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, KC_F10, KC_F1, KC_F2, KC_F3, _______, + // ├────────┼────────┼────────┼────┬───┴────┬───┴───┐ ┌────┴───┬────────┼────────┼────────┼─────────┘ + _______, _______, _______, _______ + // └────────┴───────┘ └────────┴────────┘ + ) + +}; + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case M_PASS1: + if (record->event.pressed) { + SEND_STRING("T3lg3Ranch!2023"); + } + return false; + case M_PASS2: + if (record->event.pressed) { + SEND_STRING("C0pperfield!2023"); + } + return false; + } + return true; +} diff --git a/sweep/rules.mk b/sweep/rules.mk new file mode 100644 index 0000000..75fa6e4 --- /dev/null +++ b/sweep/rules.mk @@ -0,0 +1,4 @@ +TAP_DANCE_ENABLE = yes +LTO_ENABLE = yes +BOOTLOADER = rp2040 +CONVERT_TO = promicro_rp2040 diff --git a/swoop/config.h b/swoop/config.h new file mode 100644 index 0000000..7aa7f1d --- /dev/null +++ b/swoop/config.h @@ -0,0 +1,44 @@ +/* Copyright 2023 Dave Vigil dgvigil + * + * 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 . + */ +#pragma once + +#define EE_HANDS + +// OLED driver +#ifdef OLED_DRIVER_ENABLE + #define OLED_DISPLAY_128X32 + #define OLED_TIMEOUT 30000 +#endif + +#define AUTO_SHIFT_TIMEOUT 150 +#define NO_AUTO_SHIFT_SPECIAL + +#define SPLIT_LAYER_STATE_ENABLE + +#define MOUSEKEY_DELAY 20 +#define MOUSEKEY_INTERVAL 20 +#define MOUSEKEY_MAX_SPEED 5 +#define MOUSEKEY_TIME_TO_MAX 40 +#define MOUSEKEY_WHEEL_MAX_SPEED 10 + +// Tapping Term +#define TAPPING_TERM 200 +#define TAPPING_TERM_PER_KEY + + +#define COMBO_TERM 25 // how quickly all combo keys must be pressed in succession to trigger +#define COMBO_MUST_HOLD_MODS // if a combo triggers a modifier, only trigger when the combo is held +#define COMBO_HOLD_TERM 175 // how long at least one of the combo keys must be held to trigger diff --git a/swoop/keymap.c b/swoop/keymap.c new file mode 100644 index 0000000..f75b80b --- /dev/null +++ b/swoop/keymap.c @@ -0,0 +1,175 @@ +/* Copyright 2023 Dave Vigil dgvigil + * + * 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 . + */ +#include QMK_KEYBOARD_H + +enum layer_number { + _BASE, + _NAV, + _NUM, + _SYM, + _FUN, + _MUS, + _MOUSE +}; + +enum custom_keycodes { + M_PASS1 = SAFE_RANGE, + M_PASS2 +}; + +// Tap Dance declarations +enum { + TD_Q_ESC, +}; + +// Tap Dance definitions +tap_dance_action_t tap_dance_actions[] = { + // Tap once for Q, twice for Escape + [TD_Q_ESC] = ACTION_TAP_DANCE_DOUBLE(KC_Q, KC_ESC), +}; + +enum combos { + FA_GUI, + FS_ALT, + FD_CTL, + JQUOT_GUI, + JL_ALT, + JK_CTL +}; + +const uint16_t PROGMEM fa_combo[] = {KC_F, KC_A, COMBO_END}; +const uint16_t PROGMEM fs_combo[] = {KC_F, KC_S, COMBO_END}; +const uint16_t PROGMEM fd_combo[] = {KC_F, KC_D, COMBO_END}; +const uint16_t PROGMEM jquote_combo[] = {KC_J, KC_QUOT, COMBO_END}; +const uint16_t PROGMEM jl_combo[] = {KC_J, KC_L, COMBO_END}; +const uint16_t PROGMEM jk_combo[] = {KC_J, KC_K, COMBO_END}; + +combo_t key_combos[] = { + [FA_GUI] = COMBO(fa_combo, KC_LGUI), + [FS_ALT] = COMBO(fs_combo, KC_LALT), + [FD_CTL] = COMBO(fd_combo, KC_LCTL), + [JQUOT_GUI] = COMBO(jquote_combo, KC_RGUI), + [JL_ALT] = COMBO(jl_combo, KC_RALT), + [JK_CTL] = COMBO(jk_combo, KC_RCTL), +}; + +// LEFT THUMB KEYS +#define MUS_ESC LT(_MUS, KC_ESC) +#define NAV_BKSP LT(_NAV, KC_BSPC) +#define MOUSE_TAB LT(_MOUSE, KC_TAB) +// RIGHT THUMB KEYS +#define SYM_ENTER LT(_SYM, KC_ENTER) +#define NUM_SPC LT(_NUM, KC_SPC) +#define FUN_DEL LT(_FUN, KC_DEL) +// TAP DANCE +#define Q_ESC TD(TD_Q_ESC) + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [_BASE] = LAYOUT_split_3x5_3( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + Q_ESC, 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_QUOT, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + MUS_ESC, NAV_BKSP,MOUSE_TAB, SYM_ENTER,NUM_SPC,FUN_DEL + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + [_NAV] = LAYOUT_split_3x5_3( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, KC_PSTE, KC_COPY, KC_CUT, KC_UNDO, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, KC_CAPS, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, + // ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, M_PASS2, M_PASS1, _______, KC_HOME, KC_PGUP, KC_PGDN, KC_END, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + + ), + [_NUM] = LAYOUT_split_3x5_3( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_LBRC, KC_7, KC_8, KC_9, KC_RBRC, _______, _______, _______, _______, QK_BOOT, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_SCLN, KC_4, KC_5, KC_6, KC_EQL, _______, _______, _______, _______, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_DOT, KC_1, KC_2, KC_3, KC_MINS, _______, _______, _______, _______, _______, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + KC_DOT, KC_0, KC_MINUS, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + [_SYM] = LAYOUT_split_3x5_3( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_LCBR, KC_AMPR, KC_ASTR, KC_LPRN, KC_RBRC, _______, _______, _______, _______, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_COLN, KC_DLR, KC_PERC, KC_CIRC, KC_PLUS, KC_LPRN, KC_RPRN, _______, _______, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_TILD, KC_EXLM, KC_AT, KC_HASH, KC_PIPE, KC_LPRN, KC_RPRN, _______, _______, _______, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + KC_LPRN, KC_RPRN, KC_UNDS, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + [_FUN] = LAYOUT_split_3x5_3( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + KC_F12, KC_F7, KC_F8, KC_F9, KC_PSCR, _______, _______, _______, _______, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_F11, KC_F4, KC_F5, KC_F6, _______, _______, _______, _______, _______, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + KC_F10, KC_F1, KC_F2, KC_F3, _______, _______, _______, _______, _______, _______, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + KC_RPRN, KC_UNDS, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + [_MUS] = LAYOUT_split_3x5_3( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, _______, KC_MPRV, KC_VOLD, KC_VOLU, KC_MNXT, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, KC_MSTP, KC_MPLY, KC_MUTE + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ), + [_MOUSE] = LAYOUT_split_3x5_3( +// ┌────────┬────────┬────────┬────────┬────────┐ ┌────────┬────────┬────────┬────────┬────────┐ + _______, _______, _______, _______, _______, _______, KC_PSTE, KC_COPY, KC_CUT, KC_UNDO, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, KC_BTN1, KC_MS_L, KC_MS_D, KC_MS_U, KC_MS_R, +// ├────────┼────────┼────────┼────────┼────────┤ ├────────┼────────┼────────┼────────┼────────┤ + _______, _______, _______, _______, _______, KC_BTN2, KC_WH_L, KC_WH_D, KC_WH_U, KC_WH_R, +// └────────┴────────┴────────┴────────┼────────┤ ├────────┼────────┴────────┴────────┴────────┘ + _______, _______, _______, _______, _______, _______ + // └────────┴────────┴────────┘ └────────┴────────┴────────┘ + ) +}; + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case M_PASS1: + if (record->event.pressed) { + SEND_STRING("T3lg3Ranch!2023"); + } + return false; + case M_PASS2: + if (record->event.pressed) { + SEND_STRING("C0pperfield!2023"); + } + return false; + } + return true; +} diff --git a/swoop/rules.mk b/swoop/rules.mk new file mode 100644 index 0000000..458c617 --- /dev/null +++ b/swoop/rules.mk @@ -0,0 +1,9 @@ +AUTO_SHIFT_ENABLE = yes +CAPS_WORD_ENABLE = yes +COMBO_ENABLE = yes +TAP_DANCE_ENABLE = yes + +RGBLIGHT_ENABLE = yes # rgb leds underlight + +# To shrink the size of hex file +LTO_ENABLE = yes