Initial commit

This commit is contained in:
2023-10-12 17:40:51 -05:00
parent 248dddf937
commit 66594e1270
23 changed files with 1561 additions and 0 deletions

3
.gitmodules vendored Normal file
View File

@@ -0,0 +1,3 @@
[submodule "qmk_firmware"]
path = qmk_firmware
url = https://github.com/qmk/qmk_firmware.git

58
Makefile Normal file
View File

@@ -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/

5
dgvigil/dgvigil.c Normal file
View File

@@ -0,0 +1,5 @@
#include "dgvigil.h"
void my_custom_function(void) {
}

8
dgvigil/dgvigil.h Normal file
View File

@@ -0,0 +1,8 @@
#ifndef USERSPACE
#define USERSPACE
#include "quantum.h"
void my_custom_function(void);
#endif

14
dgvigil/readme.md Normal file
View File

@@ -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 <http://www.gnu.org/licenses/>.

1
dgvigil/rules.mk Normal file
View File

@@ -0,0 +1 @@
SRC += dgvigil.c

30
draculad/config.h Normal file
View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
#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

449
draculad/keymap.c Normal file
View File

@@ -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 <http://www.gnu.org/licenses/>.
*/
#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

12
draculad/rules.mk Normal file
View File

@@ -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

35
iris/config.h Normal file
View File

@@ -0,0 +1,35 @@
/* 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 <http://www.gnu.org/licenses/>.
*/
#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

205
iris/keymap.c Normal file
View File

@@ -0,0 +1,205 @@
/* 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 <http://www.gnu.org/licenses/>.
*/
#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) },
};

127
iris/light_layers.h Normal file
View File

@@ -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
);

137
iris/readme.md Normal file
View File

@@ -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.
<details>
<summary>
keymap
</summary>
<img width="800" alt="colemak layer keymap" src="https://user-images.githubusercontent.com/26116041/173403537-f2222651-c8ea-4c8b-b828-97520a222344.png">
</details>
<details>
<summary>
lightning
</summary>
<img width="800" alt="colemak layer lightning" src="https://user-images.githubusercontent.com/26116041/173681398-cdcff1a5-ae79-4409-950a-1b671c350f07.jpeg">
</details>
### qwerty - alternative default
> Can be set as persistent default layer.
<details>
<summary>
keymap
</summary>
<img width="800" alt="qwerty layer keymap" src="https://user-images.githubusercontent.com/26116041/173403371-1551976a-2f95-4dbd-ba07-96936651871d.png">
</details>
<details>
<summary>
lightning
</summary>
<img width="800" alt="qwerty layer lightning" src="https://user-images.githubusercontent.com/26116041/173681525-aee3c927-995a-4f83-b688-ed8bfd3f8bb6.jpeg">
</details>
### numeric + symbols
<details>
<summary>
keymap
</summary>
<img width="800" alt="numeric and symbols layer keymap" src="https://user-images.githubusercontent.com/26116041/173403164-b0520501-761b-4567-bf04-57f7b6f7dd4d.png">
</details>
<details>
<summary>
lightning
</summary>
<img width="800" alt="numeric and symbols layer lightning" src="https://user-images.githubusercontent.com/26116041/173681689-0b864e35-0e02-4204-a469-6e872e704903.jpeg">
</details>
### navigation
> Layer with arrow navigation.
<details>
<summary>
keymap
</summary>
<img width="800" alt="navigation layer keymap" src="https://user-images.githubusercontent.com/26116041/173408142-1e1c297e-57db-42f8-bc18-a04dd4e202c9.png">
</details>
<details>
<summary>
lightning
</summary>
<img width="800" alt="navigation layer lightning" src="https://user-images.githubusercontent.com/26116041/173681859-fa6f071a-98e9-48f8-a9a0-76d7510b302a.jpeg">
</details>
### mouse
> Layer with mouse navigation on the same keys as arrow navigation.
<details>
<summary>
keymap
</summary>
<img width="800" alt="mouse layer keymap" src="https://user-images.githubusercontent.com/26116041/173402955-050ffd77-7b60-45dc-8e89-54cd43793132.png">
</details>
<details>
<summary>
lightning
</summary>
<img width="800" alt="mouse layer lightning" src="https://user-images.githubusercontent.com/26116041/173682436-07c32e5e-f415-463d-8c93-d2cbd4e406a1.jpeg">
</details>
### media and miscellaneous
> Used for media keys, switching default layer and keyboard reset.
<details>
<summary>
keymap
</summary>
<img width="800" alt="media and miscellaneous layer keymap" src="https://user-images.githubusercontent.com/26116041/173402837-75ce8ab1-7fbe-454b-b165-b22d171f9ad1.png">
</details>
<details>
<summary>
lightning
</summary>
<img width="800" alt="media and miscellaneous layer lightning" src="https://user-images.githubusercontent.com/26116041/173682188-3eab9c09-d466-4729-89ac-48e09f55564c.jpeg">
</details>

7
iris/rules.mk Normal file
View File

@@ -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

22
scottogame/config.h Normal file
View File

@@ -0,0 +1,22 @@
/* 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 <http://www.gnu.org/licenses/>.
*/
#pragma once
// Define options
#define TAPPING_TERM 135
#define PERMISSIVE_HOLD
#define TAPPING_TERM_PER_KEY

48
scottogame/keymap.c Normal file
View File

@@ -0,0 +1,48 @@
/* 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 <http://www.gnu.org/licenses/>.
*/
#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
)
};

2
scottogame/rules.mk Normal file
View File

@@ -0,0 +1,2 @@
OLED_ENABLE = yes
LTO_ENABLE = yes

23
sweep/config.h Normal file
View File

@@ -0,0 +1,23 @@
/* 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 <http://www.gnu.org/licenses/>.
*/
#pragma once
/* Tap Dance */
#define TAPPING_TERM 200
#define TAPPING_TERM_PER_KEY
#define EE_HANDS

143
sweep/keymap.c Normal file
View File

@@ -0,0 +1,143 @@
/* 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 <http://www.gnu.org/licenses/>.
*/
#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;
}

4
sweep/rules.mk Normal file
View File

@@ -0,0 +1,4 @@
TAP_DANCE_ENABLE = yes
LTO_ENABLE = yes
BOOTLOADER = rp2040
CONVERT_TO = promicro_rp2040

44
swoop/config.h Normal file
View File

@@ -0,0 +1,44 @@
/* 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 <http://www.gnu.org/licenses/>.
*/
#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

175
swoop/keymap.c Normal file
View File

@@ -0,0 +1,175 @@
/* 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 <http://www.gnu.org/licenses/>.
*/
#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;
}

9
swoop/rules.mk Normal file
View File

@@ -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