diff --git a/keyboards/40percentclub/foobar/keymaps/mopemope/config.h b/keyboards/40percentclub/foobar/keymaps/mopemope/config.h new file mode 100644 index 000000000000..cbc2f7b0aa44 --- /dev/null +++ b/keyboards/40percentclub/foobar/keymaps/mopemope/config.h @@ -0,0 +1,31 @@ +/* Copyright 2018 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#pragma once + +// place overrides here + +// #define PERMISSIVE_HOLD +#define FORCE_NKRO +#define DEBOUNCE 3 +#define NO_ACTION_ONESHOT +//#define NO_ACTION_TAPPING +#define LAYER_STATE_16BIT +#define TAP_CODE_DELAY 4 +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define USB_POLLING_INTERVAL_MS 1 +#define GPIO_INPUT_PIN_DELAY 0 diff --git a/keyboards/40percentclub/foobar/keymaps/mopemope/keymap.c b/keyboards/40percentclub/foobar/keymaps/mopemope/keymap.c new file mode 100644 index 000000000000..dcb80233c53b --- /dev/null +++ b/keyboards/40percentclub/foobar/keymaps/mopemope/keymap.c @@ -0,0 +1,427 @@ +/* Copyright 2018 + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +#include QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +extern keymap_config_t keymap_config; + +#define QGMLWY 0 +#define LOWER 1 +#define RAISE 2 +#define MISCL 3 +#define MISCR 4 +#define COMBA 5 +#define COMBN 6 +#define COMBE 7 +#define COMBT 8 +#define SF6 9 + +#define CYBER 22 +#define BL3 10 +#define R6S 11 +#define B4B 12 +#define LD 13 +#define APEX 14 +#define SN 15 +#define EFT 16 +#define DIV 17 +#define VAL 18 +#define COD 19 +#define BF 20 +#define KOC 21 + +#define _____ KC_TRNS +#define XXXXX KC_NO + +// #define WRKSP1 LALT(LCTL(KC_UP)) +// #define WRKSP2 LALT(LCTL(KC_DOWN)) +#define WRKSP1 LGUI(KC_PGUP) +#define WRKSP2 LGUI(KC_PGDN) +// #define UWRKSP LSFT(LALT(LCTL(KC_UP))) +// #define DWRKSP LSFT(LALT(LCTL(KC_DOWN))) +#define UWRKSP LSFT(LGUI(KC_PGUP)) +#define DWRKSP LSFT(LGUI(KC_PGDN)) +#define PREVTB LSFT(LCTL(KC_UP)) +#define NEXTTB LSFT(LCTL(KC_DOWN)) +#define CAF2 LALT(LCTL(KC_F2)) +#define CAF7 LALT(LCTL(KC_F7)) +#define PREVW LGUI(LCTL(KC_LEFT)) +#define NEXTW LGUI(LCTL(KC_RIGHT)) + +#define TAB KC_TAB +#define MINS ALT_T(JP_MINS) +#define SMINS SFT_T(JP_MINS) +#define SBSLS SFT_T(JP_BSLS) +#define BSP KC_BSPC +#define DEL KC_DEL +#define SDEL SFT_T(KC_DEL) +#define PSCR KC_PSCR +#define SPSCR LSFT(KC_PSCR) +#define RJ LT(RAISE,KC_J) +#define LK LT(LOWER,KC_K) +#define AC LT(COMBA,KC_A) +#define NC LT(COMBN,KC_N) +#define EC LT(COMBE,KC_E) +#define KC LT(COMBE,KC_K) +#define TC LT(COMBT,KC_T) +#define SPC LT(RAISE,KC_SPC) +#define CSPC LCTL(KC_SPC) +#define CRET LCTL(KC_ENT) +#define ENT LT(LOWER,KC_ENT) +#define CENT CTL_T(KC_ENT) +#define BSPC RCTL_T(KC_BSPC) +#define SBSPC SFT_T(KC_BSPC) +#define ABSPC ALT_T(KC_BSPC) +#define CBSPC CTL_T(KC_BSPC) +#define D_M LT(MISCL,KC_D) +#define D_C CTL_T(KC_D) +#define Z_A ALT_T(KC_Z) +#define Z_C CTL_T(KC_Z) +#define Z_S LSFT_T(KC_Z) +#define I_S LSFT_T(KC_I) +#define X_CT LCTL_T(KC_X) +#define P_AL LALT_T(KC_P) +#define K_AL LALT_T(KC_K) +#define J_C RCTL_T(KC_J) +#define P_C RCTL_T(KC_P) +#define A_C RCTL_T(KC_A) +#define H_M LT(MISCR,KC_H) +#define S_C CTL_T(JP_SLSH) +#define S_S RSFT_T(JP_SLSH) +#define V_A LALT_T(KC_V) +#define O_C CTL_T(KC_O) +#define C_C CTL_T(KC_C) +#define AT_A ALT_T(JP_AT) +#define AT_C CTL_T(JP_AT) +#define GL LGUI(KC_LEFT) +#define GU LGUI(KC_UP) +#define GD LGUI(KC_DOWN) +#define GR LGUI(KC_RIGHT) +#define CLEFT LCTL(KC_LEFT) +#define CUP LCTL(KC_UP) +#define CDOWN LCTL(KC_DOWN) +#define CRIGHT LCTL(KC_RIGHT) +#define MLEFT LALT(KC_LEFT) +#define MUP LALT(KC_UP) +#define MDOWN LALT(KC_DOWN) +#define MRIGHT LALT(KC_RIGHT) +#define MLT LALT(KC_LT) +#define MGT LALT(KC_GT) +#define GH LGUI(KC_H) +#define GTAB TD(G_TAB) +#define DFG TD(D_FG) +#define DVB TD(D_VB) +#define DSV TD(D_SV) +#define EXLM JP_EXLM +#define DQT JP_DQUO +#define HASH JP_HASH +#define DLR JP_DLR +#define PERC JP_PERC +#define AMPR JP_AMPR +#define QUOT JP_QUOT +#define GRV JP_GRV +#define PIPE JP_PIPE +#define YEN JP_YEN +#define AT JP_AT +#define LCBR JP_LCBR +#define RCBR JP_RCBR +#define UNDS JP_UNDS +#define TILD JP_TILD +#define EQL JP_EQL +#define COLN JP_COLN +#define SLSH JP_SLSH +#define ASTR JP_ASTR +#define LPRN JP_LPRN +#define RPRN JP_RPRN +#define BSLS JP_BSLS +#define CIRC CTL_T(JP_CIRC) +#define SCLN JP_SCLN +#define COMM JP_COMM +#define CCOM LCTL(JP_COMM) +#define DOT JP_DOT +#define CDOT LCTL(JP_DOT) +#define MCOM LALT(JP_COMM) +#define MDOT LALT(JP_DOT) +#define PLUS JP_PLUS +#define LBRC JP_LBRC +#define RBRC ALT_T(JP_RBRC) +#define GUI KC_LGUI +#define ZHTG JP_ZKHK +#define C_S SFT_T(KC_C) +#define ESC KC_ESC + +#define DQG DF(QGMLWY) +#define GBL3 DF(BL3) +#define GCYB DF(CYBER) +#define GVAL DF(VAL) +#define GEFT DF(EFT) +#define GR6S DF(R6S) +#define GB4B DF(B4B) +#define GBF DF(BF) +#define GCOD DF(COD) +#define GDV2 DF(DIV) +#define GAPEX DF(APEX) +#define GKOC DF(KOC) +#define GLD DF(LD) +#define GSN DF(SN) +#define GSF6 DF(SF6) + +#define SELA LCTL(KC_A) +#define COPY LCTL(KC_C) +#define PASTE LCTL(KC_V) +#define CZ LCTL(KC_Z) +#define CSL LCTL(JP_SLSH) +#define CMN LALT(LCTL(KC_N)) +#define CMM LALT(LCTL(KC_M)) +#define CMD LALT(LCTL(JP_DOT)) +#define CMY LALT(LCTL(JP_YEN)) +#define CU LCTL(UNDS) +#define AU LALT(UNDS) +#define CG LCTL(KC_G) +#define CQ LCTL(KC_Q) +#define CT LCTL(KC_T) +#define CJ LCTL(KC_J) +#define CC LCTL(KC_C) +#define CS LCTL(KC_S) +#define CX LCTL(KC_X) +#define CL LCTL(KC_L) +#define CK LCTL(KC_K) +#define CE LCTL(KC_E) +#define CP LCTL(KC_P) +#define CN LCTL(KC_N) +#define CF LCTL(KC_F) +#define CB LCTL(KC_B) +#define CAT LCTL(JP_AT) +#define MX LALT(KC_X) +#undef MD +#define MD LALT(KC_D) +#define MSCLN LALT(JP_SCLN) +#define APERC LALT(JP_PERC) +#define CPIPE LCTL(JP_PIPE) +#define CEXLM LCTL(JP_EXLM) + +#define WH_D KC_WH_D +#define WH_U KC_WH_U +#define PGDN KC_PGDN +#define PGUP KC_PGUP +#define MS_L KC_MS_L +#define MS_U KC_MS_U +#define MS_D KC_MS_D +#define MS_R KC_MS_R +#define KLEFT KC_LEFT +#define KUP KC_UP +#define KDOWN KC_DOWN +#define KRIGHT KC_RIGHT +#define MUTE KC_MUTE +#define VOLD KC_VOLD +#define VOLU KC_VOLU +#define BTN2 KC_BTN2 +#define BTN1 KC_BTN1 +#define ASTG KC_ASTG +#define RTOG RGB_TOG +#define RMOD RGB_MOD +#define RRMOD RGB_RMOD +#define RHUI RGB_HUI +#define RHUD RGB_HUD +#define RSAI RGB_SAI +#define RSAD RGB_SAD +#define RVAI RGB_VAI +#define RVAD RGB_VAD +#define CTL OSM(MOD_RCTL) +#define ALT OSM(MOD_LALT) +#define SFTZ SFT_T(JP_ZHTG) +#define C_V LCTL(KC_V) +#define M_V LALT(KC_V) +#define ALTZ LALT(KC_Z) +#define REC LALT(KC_F9) +#define C_LT LCTL(JP_LT) +#define C_GT LCTL(JP_GT) +#define EFTS LT(EFT2,KC_SPC) +#define CP_C LT(CP2,KC_C) +#define R6_C LT(R6S2,KC_C) +#define DI_C LT(DIV2,KC_LCTL) +#define AP_I LT(APEX2,KC_I) +#define GCTL KC_LCTL +#define GALT KC_LALT +#define AQ LALT(KC_Q) +#define AE LALT(KC_E) + +enum custom_keycodes { + CXCF = SAFE_RANGE, + CXCB, + CXCS, + CXCC, + CXCG, + CXO, + CXU, + CCN, + CCP, + CCZ, + CCX, + CCT, + CCC, + CXTT, + CCR, + CCW, +}; + + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [QGMLWY] = LAYOUT_split( + KC_Q, KC_G, KC_M, KC_L, KC_W, KC_Y, KC_F, KC_U, KC_B, BSP, + D_M, KC_S, TC, NC, KC_R, KC_I, AC, EC, KC_O, H_M, + Z_S, X_CT, C_C, V_A, SPC, ENT, J_C, K_AL, P_AL, S_S + ), + [LOWER] = LAYOUT_split( + EXLM, DQT, HASH, DLR, PERC, AMPR, QUOT, GRV, PIPE, YEN, + ESC, LPRN, RPRN, LCBR, RCBR, TILD, DOT, SLSH, EQL, AT, + CIRC, LBRC, RBRC, KC_LT, KC_GT, CIRC, COMM, _____, _____, _____ + ), + [RAISE] = LAYOUT_split( + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, + TAB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F12, KC_F7, KC_F8, AT, + UNDS, KC_F9, KC_F10, KC_F11, _____, DOT, COMM, KC_LT, KC_GT, MINS + ), + [MISCL] = LAYOUT_split( + QK_RBT, _____, GU, _____, WRKSP1, UWRKSP, PGDN, KUP, PGUP, DEL, + _____, GL, GD, GR, WRKSP2, DWRKSP, CLEFT, KDOWN, CRIGHT, GH, + _____, _____, COPY, PASTE, GUI, DOT, M_V, C_V, _____, _____ + ), + [MISCR] = LAYOUT_split( + QK_RBT, _____, GU, _____, PREVW, PREVTB, MLT, KUP, MGT, DEL, + TAB, GL, GD, GR, NEXTW, NEXTTB, KLEFT, KDOWN, KRIGHT, _____, + _____, _____, _____, CXU, KC_SPC, TAB, BSP, AU, _____, _____ + ), + [COMBA] = LAYOUT_split( + CQ, CG, CMM, CL, APERC, _____, CXCF, CXU, CXCB, _____, + MD, CXCS, CT, CMN, MX, _____, _____, CXCC, CXO, _____, + CZ, CX, _____, TAB, ZHTG, CCX, _____, CK, _____, _____ + ), + [COMBN] = LAYOUT_split( + _____, CG, CMM, CL, _____, AMPR, MCOM, CXU, MDOT, MD, + TAB, CS, CT, _____, _____, MSCLN, CLEFT, CCZ, CRIGHT, CAT, + _____, CX, CRET, CSPC, ZHTG, CJ, MDOT, MCOM, _____, _____ + ), + [COMBE] = LAYOUT_split( + CAF7, _____, CUP, _____, CCW, DQG, _____, _____, _____, _____, + CAF2, CLEFT, CDOWN, CRIGHT, CCR, AU, CU, _____, _____, _____, + PSCR, _____, _____, _____, KC_SPC, CJ, DOT, COMM, _____, _____ + ), + [COMBT] = LAYOUT_split( + _____, _____, GSF6, _____, _____, DQT, EXLM, PLUS, ASTR, PIPE, + _____, _____, _____, _____, _____, TILD, EQL, COLN, SCLN, AT, + _____, _____, _____, _____, _____, CIRC, MINS, COMM, DOT, SLSH + ), + [SF6] = LAYOUT_split( + TAB, KC_Q, XXXXX, KC_E, KC_R, ESC, KC_U, KC_I, KC_O, XXXXX, + KC_B, KC_A, KC_S, KC_D, KC_F, KC_G, KC_J, KC_K, KC_L, KC_U, + KC_Z, KC_X, KC_C, KC_H, KC_W, KC_P, KC_H, KC_N, KC_T, DQG + ), + +}; + + +void persistent_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CXCF: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xf")); + } + break; + case CXCB: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xb")); + } + break; + case CXCS: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xs")); + } + break; + case CXCC: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xc")); + } + break; + case CXCG: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xg")); + } + break; + case CXO: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("x") "o"); + } + break; + case CXU: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("x") "u"); + } + break; + case CCN: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "n"); + } + break; + case CCP: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "p"); + } + break; + case CCZ: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "z"); + } + break; + case CCX: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "x"); + } + break; + case CCT: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "t"); + } + break; + case CCC: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "c"); + } + break; + case CXTT: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("x") "t" "t"); + } + break; + case CCR: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "r"); + } + break; + case CCW: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "w"); + } + break; + } + return true; +} diff --git a/keyboards/40percentclub/foobar/keymaps/mopemope/readme.md b/keyboards/40percentclub/foobar/keymaps/mopemope/readme.md new file mode 100644 index 000000000000..7113469e7ec0 --- /dev/null +++ b/keyboards/40percentclub/foobar/keymaps/mopemope/readme.md @@ -0,0 +1 @@ +# The default split keymap for foobar diff --git a/keyboards/40percentclub/foobar/keymaps/mopemope/rules.mk b/keyboards/40percentclub/foobar/keymaps/mopemope/rules.mk new file mode 100644 index 000000000000..971051d43e34 --- /dev/null +++ b/keyboards/40percentclub/foobar/keymaps/mopemope/rules.mk @@ -0,0 +1,16 @@ +TAP_DANCE_ENABLE = no +RGBLIGHT_ENABLE = no +OLED_DRIVER_ENABLE = no +NKRO_ENABLE = yes +FORCE_NKRO = yes +DEBOUNCE_TYPE = asym_eager_defer_pk +#DEBOUNCE_TYPE = sym_defer_g +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = no +LTO_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +#MAGIC_ENABLE = no +MUSIC_ENABLE = no diff --git a/keyboards/maple_computing/minidox/keymaps/mopemope/config.h b/keyboards/maple_computing/minidox/keymaps/mopemope/config.h new file mode 100644 index 000000000000..3caddeb43b1c --- /dev/null +++ b/keyboards/maple_computing/minidox/keymaps/mopemope/config.h @@ -0,0 +1,54 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#ifndef CONFIG_USER_H +#define CONFIG_USER_H + +#include "../../config.h" + +#define USE_SERIAL +#define EE_HANDS +//#define FORCE_NKRO +#define DEBOUNCE 3 +#define NO_ACTION_ONESHOT +#define LAYER_STATE_16BIT +#define TAP_CODE_DELAY 1 +#define NO_MUSIC_MODE + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE + +#define PREVENT_STUCK_MODIFIERS +#define PERMISSIVE_HOLD +#define TAPPING_FORCE_HOLD +//#define TAPPING_TERM 160 + +/* #define RGB_DI_PIN D7 */ +/* #define RGBLIGHT_TIMER */ +/* #undef RGBLED_NUM */ +/* #define RGBLED_NUM 8 */ +/* #define RGBLIGHT_ANIMATIONS */ +/* #define RGBLIGHT_HUE_STEP 10 */ +/* #define RGBLIGHT_SAT_STEP 17 */ +/* #define RGBLIGHT_VAL_STEP 17 */ +#define USB_POLLING_INTERVAL_MS 1 +#define GPIO_INPUT_PIN_DELAY 0 + +#endif diff --git a/keyboards/maple_computing/minidox/keymaps/mopemope/keymap.c b/keyboards/maple_computing/minidox/keymaps/mopemope/keymap.c new file mode 100644 index 000000000000..d95339649c61 --- /dev/null +++ b/keyboards/maple_computing/minidox/keymaps/mopemope/keymap.c @@ -0,0 +1,561 @@ +#include QMK_KEYBOARD_H +#include "keymap_japanese.h" + +extern keymap_config_t keymap_config; + +#define QGMLWY 0 +#define LOWER 1 +#define RAISE 2 +#define MISCL 3 +#define MISCR 4 +#define COMBA 5 +#define COMBN 6 +#define COMBE 7 +#define COMBT 8 +#define SF6 9 + +#define CYBER 22 +#define BL3 10 +#define R6S 11 +#define B4B 12 +#define LD 13 +#define APEX 14 +#define SN 15 +#define EFT 16 +#define DIV 17 +#define VAL 18 +#define COD 19 +#define BF 20 +#define KOC 21 + +#define _____ KC_TRNS +#define XXXXX KC_NO + +// #define WRKSP1 LALT(LCTL(KC_UP)) +// #define WRKSP2 LALT(LCTL(KC_DOWN)) +#define WRKSP1 LGUI(KC_PGUP) +#define WRKSP2 LGUI(KC_PGDN) +// #define UWRKSP LSFT(LALT(LCTL(KC_UP))) +// #define DWRKSP LSFT(LALT(LCTL(KC_DOWN))) +#define UWRKSP LSFT(LGUI(KC_PGUP)) +#define DWRKSP LSFT(LGUI(KC_PGDN)) +#define PREVTB LSFT(LCTL(KC_UP)) +#define NEXTTB LSFT(LCTL(KC_DOWN)) +#define CAF2 LALT(LCTL(KC_F2)) +#define CAF7 LALT(LCTL(KC_F7)) +#define PREVW LGUI(LCTL(KC_LEFT)) +#define NEXTW LGUI(LCTL(KC_RIGHT)) + +#define TAB KC_TAB +#define MINS ALT_T(JP_MINS) +#define SMINS SFT_T(JP_MINS) +#define SBSLS SFT_T(JP_BSLS) +#define BSP KC_BSPC +#define DEL KC_DEL +#define SDEL SFT_T(KC_DEL) +#define PSCR KC_PSCR +#define SPSCR LSFT(KC_PSCR) +#define RJ LT(RAISE,KC_J) +#define LK LT(LOWER,KC_K) +#define AC LT(COMBA,KC_A) +#define NC LT(COMBN,KC_N) +#define EC LT(COMBE,KC_E) +#define KC LT(COMBE,KC_K) +#define TC LT(COMBT,KC_T) +#define SPC LT(RAISE,KC_SPC) +#define CSPC LCTL(KC_SPC) +#define CRET LCTL(KC_ENT) +#define ENT LT(LOWER,KC_ENT) +#define CENT CTL_T(KC_ENT) +#define BSPC RCTL_T(KC_BSPC) +#define SBSPC SFT_T(KC_BSPC) +#define ABSPC ALT_T(KC_BSPC) +#define CBSPC CTL_T(KC_BSPC) +#define D_M LT(MISCL,KC_D) +#define D_C CTL_T(KC_D) +#define Z_A ALT_T(KC_Z) +#define Z_C CTL_T(KC_Z) +#define Z_S LSFT_T(KC_Z) +#define I_S LSFT_T(KC_I) +#define X_CT LCTL_T(KC_X) +#define P_AL LALT_T(KC_P) +#define J_C RCTL_T(KC_J) +#define P_C RCTL_T(KC_P) +#define A_C RCTL_T(KC_A) +#define H_M LT(MISCR,KC_H) +#define S_C CTL_T(JP_SLSH) +#define S_S RSFT_T(JP_SLSH) +#define V_A LALT_T(KC_V) +#define O_C CTL_T(KC_O) +#define AT_A ALT_T(JP_AT) +#define AT_C CTL_T(JP_AT) +#define GL LGUI(KC_LEFT) +#define GU LGUI(KC_UP) +#define GD LGUI(KC_DOWN) +#define GR LGUI(KC_RIGHT) +#define CLEFT LCTL(KC_LEFT) +#define CUP LCTL(KC_UP) +#define CDOWN LCTL(KC_DOWN) +#define CRIGHT LCTL(KC_RIGHT) +#define MLEFT LALT(KC_LEFT) +#define MUP LALT(KC_UP) +#define MDOWN LALT(KC_DOWN) +#define MRIGHT LALT(KC_RIGHT) +#define MLT LALT(KC_LT) +#define MGT LALT(KC_GT) +#define GH LGUI(KC_H) +#define GTAB TD(G_TAB) +#define DFG TD(D_FG) +#define DVB TD(D_VB) +#define DSV TD(D_SV) +#define EXLM JP_EXLM +#define DQT JP_DQUO +#define HASH JP_HASH +#define DLR JP_DLR +#define PERC JP_PERC +#define AMPR JP_AMPR +#define QUOT JP_QUOT +#define GRV JP_GRV +#define PIPE JP_PIPE +#define YEN JP_YEN +#define AT JP_AT +#define LCBR JP_LCBR +#define RCBR JP_RCBR +#define UNDS JP_UNDS +#define TILD JP_TILD +#define EQL JP_EQL +#define COLN JP_COLN +#define SLSH JP_SLSH +#define ASTR JP_ASTR +#define LPRN JP_LPRN +#define RPRN JP_RPRN +#define BSLS JP_BSLS +#define CIRC CTL_T(JP_CIRC) +#define SCLN JP_SCLN +#define COMM JP_COMM +#define CCOM LCTL(JP_COMM) +#define DOT JP_DOT +#define CDOT LCTL(JP_DOT) +#define MCOM LALT(JP_COMM) +#define MDOT LALT(JP_DOT) +#define PLUS JP_PLUS +#define LBRC JP_LBRC +#define RBRC ALT_T(JP_RBRC) +#define GUI KC_LGUI +#define ZHTG JP_ZKHK +#define C_S SFT_T(KC_C) +#define ESC KC_ESC + +#define DQG DF(QGMLWY) +#define GBL3 DF(BL3) +#define GCYB DF(CYBER) +#define GVAL DF(VAL) +#define GEFT DF(EFT) +#define GR6S DF(R6S) +#define GB4B DF(B4B) +#define GBF DF(BF) +#define GCOD DF(COD) +#define GDV2 DF(DIV) +#define GAPEX DF(APEX) +#define GKOC DF(KOC) +#define GLD DF(LD) +#define GSN DF(SN) +#define GSF6 DF(SF6) + +#define SELA LCTL(KC_A) +#define COPY LCTL(KC_C) +#define PASTE LCTL(KC_V) +#define CZ LCTL(KC_Z) +#define CSL LCTL(JP_SLSH) +#define CMN LALT(LCTL(KC_N)) +#define CMM LALT(LCTL(KC_M)) +#define CMD LALT(LCTL(JP_DOT)) +#define CMY LALT(LCTL(JP_YEN)) +#define CU LCTL(UNDS) +#define AU LALT(UNDS) +#define CG LCTL(KC_G) +#define CQ LCTL(KC_Q) +#define CT LCTL(KC_T) +#define CJ LCTL(KC_J) +#define CC LCTL(KC_C) +#define CS LCTL(KC_S) +#define CX LCTL(KC_X) +#define CL LCTL(KC_L) +#define CK LCTL(KC_K) +#define CE LCTL(KC_E) +#define CP LCTL(KC_P) +#define CN LCTL(KC_N) +#define CF LCTL(KC_F) +#define CB LCTL(KC_B) +#define CAT LCTL(JP_AT) +#define MX LALT(KC_X) +#undef MD +#define MD LALT(KC_D) +#define MSCLN LALT(JP_SCLN) +#define APERC LALT(JP_PERC) +#define CPIPE LCTL(JP_PIPE) +#define CEXLM LCTL(JP_EXLM) + +#define WH_D KC_WH_D +#define WH_U KC_WH_U +#define PGDN KC_PGDN +#define PGUP KC_PGUP +#define MS_L KC_MS_L +#define MS_U KC_MS_U +#define MS_D KC_MS_D +#define MS_R KC_MS_R +#define KLEFT KC_LEFT +#define KUP KC_UP +#define KDOWN KC_DOWN +#define KRIGHT KC_RIGHT +#define MUTE KC_MUTE +#define VOLD KC_VOLD +#define VOLU KC_VOLU +#define BTN2 KC_BTN2 +#define BTN1 KC_BTN1 +#define ASTG KC_ASTG +#define RTOG RGB_TOG +#define RMOD RGB_MOD +#define RRMOD RGB_RMOD +#define RHUI RGB_HUI +#define RHUD RGB_HUD +#define RSAI RGB_SAI +#define RSAD RGB_SAD +#define RVAI RGB_VAI +#define RVAD RGB_VAD +#define CTL OSM(MOD_RCTL) +#define ALT OSM(MOD_LALT) +#define SFTZ SFT_T(JP_ZHTG) +#define C_V LCTL(KC_V) +#define M_V LALT(KC_V) +#define ALTZ LALT(KC_Z) +#define REC LALT(KC_F9) +#define C_LT LCTL(JP_LT) +#define C_GT LCTL(JP_GT) +#define EFTS LT(EFT2,KC_SPC) +#define CP_C LT(CP2,KC_C) +#define R6_C LT(R6S2,KC_C) +#define DI_C LT(DIV2,KC_LCTL) +#define AP_I LT(APEX2,KC_I) +#define GCTL KC_LCTL +#define GALT KC_LALT +#define AQ LALT(KC_Q) +#define AE LALT(KC_E) + +enum custom_keycodes { + CXCF = SAFE_RANGE, + CXCB, + CXCS, + CXCC, + CXCG, + CXO, + CXU, + CCN, + CCP, + CCZ, + CCX, + CCT, + CCC, + CXTT, + CCR, + CCW, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { +[SF6] = LAYOUT( \ + TAB, KC_Q, XXXXX, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, XXXXX, \ + KC_B, KC_A, KC_S, KC_D, KC_F, KC_G, KC_J, KC_K, KC_L, KC_U, \ + KC_Z, KC_X, KC_C, KC_V, QK_RBT, DQG, KC_B, KC_N, KC_M, DQG, \ + ESC, KC_B, KC_W, KC_P, KC_H, KC_T \ +), +/* [SF6] = LAYOUT( \ */ +/* TAB, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, XXXXX, \ */ +/* KC_B, KC_A, KC_S, KC_D, KC_F, KC_G, KC_J, KC_K, KC_L, KC_U, \ */ +/* KC_Z, KC_X, KC_C, KC_V, QK_RBT, XXXXX, KC_B, KC_N, KC_M, KC_T, \ */ +/* ESC, KC_B, KC_W, KC_P, KC_H, DQG \ */ +/* ), */ +/* [SF62] = LAYOUT( \ */ +/* TAB, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, XXXXX, \ */ +/* KC_B, KC_A, KC_S, KC_D, KC_F, KC_G, KC_J, KC_K, KC_L, KC_U, \ */ +/* KC_Z, KC_X, KC_C, KC_V, QK_RBT, XXXXX, KC_B, KC_N, KC_M, KC_T, \ */ +/* ESC, KC_B, KC_W, KC_P, KC_H, DQG \ */ +/* ), */ + +[QGMLWY] = LAYOUT( \ + KC_Q, KC_G, KC_M, KC_L, KC_W, KC_Y, KC_F, KC_U, KC_B, BSP, \ + D_M, KC_S, TC, NC, KC_R, KC_I, AC, EC, KC_O, H_M, \ + Z_S, X_CT, KC_C, V_A, GUI, DOT, J_C, KC_K, P_AL, S_S, \ + GCTL, GALT, SPC, ENT, BSPC, QK_RBT \ +), + +[LOWER] = LAYOUT( \ + EXLM, DQT, HASH, DLR, PERC, AMPR, QUOT, GRV, PIPE, YEN, \ + ESC, LPRN, RPRN, LCBR, RCBR, TILD, DOT, SLSH, EQL, AT, \ + CIRC, LBRC, RBRC, KC_LT, KC_GT, CIRC, COMM, _____, _____, _____, \ + ESC, TAB, KC_SPC, _____, _____, _____ \ +), + +[RAISE] = LAYOUT( \ + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \ + TAB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F12, KC_F7, KC_F8, AT, \ + UNDS, KC_F9, KC_F10, KC_F11, _____, EXLM, KC_F6, KC_LT, KC_GT, MINS, \ + _____, _____, _____, DOT, COMM, ASTR \ +), + +[MISCL] = LAYOUT( \ + QK_RBT, _____, GU, _____, WRKSP1, UWRKSP, PGDN, KUP, PGUP, DEL, \ + _____, GL, GD, GR, WRKSP2, DWRKSP, CLEFT, KDOWN, CRIGHT, GH, \ + _____, _____, _____, _____, ENT, MLT, MGT, SPSCR, _____, _____, \ + COPY, PASTE, GUI, TAB, M_V, C_V \ +), + +[MISCR] = LAYOUT( \ + QK_RBT, _____, GU, _____, PREVW, PREVTB, MLT, KUP, MGT, DEL, \ + TAB, GL, GD, GR, NEXTW, NEXTTB, KLEFT, KDOWN, KRIGHT, _____, \ + _____, _____, _____, _____, _____, _____, _____, _____, _____, _____, \ + _____, CXU, KC_SPC, TAB, BSP, AU \ +), + +[COMBA] = LAYOUT( \ + CQ, CG, CMM, CL, APERC, _____, CXCF, CXU, CXCB, _____, \ + MD, CXCS, CT, CMN, MX, _____, _____, CXCC, CXO, CAT, \ + CZ, CX, _____, _____, _____, _____, _____, CK, _____, _____, \ + ESC, TAB, ZHTG, CCX, _____, _____ \ +), + +[COMBN] = LAYOUT( \ + _____, CG, _____, CL, _____, AMPR, MCOM, CXU, MDOT, MD, \ + TAB, CS, CT, _____, _____, MSCLN, CLEFT, CCZ, CRIGHT, CAT, \ + _____, CX, CRET, CSPC, _____, MCOM, MDOT, _____, _____, CXU, \ + _____, _____, _____, CJ, _____, _____ \ +), + +[COMBE] = LAYOUT( \ + CAF7, _____, CUP, _____, CCW, DQG, _____, _____, _____, _____, \ + CAF2, CLEFT, CDOWN, CRIGHT, CCR, AU, CU, _____, _____, _____, \ + PSCR, _____, _____, _____, _____, _____, _____, _____, _____, _____, \ + _____, _____, KC_SPC, DOT, _____, _____ \ +), + +[COMBT] = LAYOUT( \ + _____, _____, GSF6, _____, _____, DQT, EXLM, PLUS, ASTR, PIPE, \ + _____, _____, _____, _____, _____, TILD, EQL, COLN, SCLN, AT, \ + _____, _____, _____, _____, _____, CIRC, MINS, COMM, DOT, SLSH, \ + _____, _____, _____, DOT, QUOT, _____ \ +), + +/* [BL3] = LAYOUT( \ */ +/* TAB, KC_Q, KC_W, KC_E, KC_R, _____, KC_F5, KC_F6, KC_F7, ESC, \ */ +/* KC_LSFT,KC_A, KC_S, KC_D, KC_F, _____, KC_5, KC_6, KC_7, _____, \ */ +/* GCTL, KC_L, KC_M, KC_I, KC_G, KC_Y, KC_T, KC_B, KC_U, _____, \ */ +/* KC_V, KC_C, KC_SPC, DQG, ALTZ, REC \ */ +/* ), */ + +/* [R6S] = LAYOUT( \ */ +/* TAB, KC_Q, KC_W, KC_E, KC_R, _____, KC_F5, KC_F6, KC_F7, ESC, \ */ +/* KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_U, KC_5, KC_6, KC_7, GUI, \ */ +/* GALT, KC_Z, GCTL, KC_X, KC_G, KC_Y, KC_B, _____, _____, _____, \ */ +/* KC_C, KC_V, KC_SPC, DQG, ALTZ, REC \ */ +/* ), */ + +/* [B4B] = LAYOUT( \ */ +/* TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_U, KC_N, KC_Y, ESC, \ */ +/* KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_1, KC_2, KC_3, KC_4, KC_5, \ */ +/* GCTL, KC_I, KC_3, KC_4, KC_5, _____, _____, _____, _____, _____, \ */ +/* KC_C, KC_V, KC_SPC, DQG, ALTZ, REC \ */ +/* ), */ + +/* [COD] = LAYOUT( \ */ +/* TAB, KC_Q, KC_W, KC_E, KC_R, KC_1, KC_2, KC_3, KC_4, ESC, \ */ +/* KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_B, KC_M, KC_7, KC_8, GUI, \ */ +/* GCTL, GALT, KC_Z, KC_X, KC_G, KLEFT, KUP, KDOWN, KRIGHT, _____, \ */ +/* KC_V, KC_C, KC_SPC, DQG, ALTZ, REC \ */ +/* ), */ + +}; + +void persistent_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CXCF: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xf")); + } + break; + case CXCB: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xb")); + } + break; + case CXCS: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xs")); + } + break; + case CXCC: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xc")); + } + break; + case CXCG: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xg")); + } + break; + case CXO: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("x") "o"); + } + break; + case CXU: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("x") "u"); + } + break; + case CCN: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "n"); + } + break; + case CCP: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "p"); + } + break; + case CCZ: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "z"); + } + break; + case CCX: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "x"); + } + break; + case CCT: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "t"); + } + break; + case CCC: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "c"); + } + break; + case CXTT: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("x") "t" "t"); + } + break; + case CCR: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "r"); + } + break; + case CCW: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "w"); + } + break; + } + return true; +} + +/* +bool change; +void post_process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case GVAL: + rgblight_mode(RGBLIGHT_MODE_BREATHING+1); + rgblight_sethsv(HSV_PURPLE); + change = true; + break; + case GEFT: + rgblight_mode(RGBLIGHT_MODE_BREATHING); + rgblight_sethsv(HSV_WHITE); + change = true; + break; + case GR6S: + rgblight_mode(RGBLIGHT_MODE_BREATHING); + rgblight_sethsv(HSV_GREEN); + change = true; + break; + case GDV2: + rgblight_mode(RGBLIGHT_MODE_BREATHING); + rgblight_sethsv(HSV_CYAN); + change = true; + break; + case DQG: + rgblight_sethsv(0xFF, 0xFF, 0xFF); + rgblight_mode(RGBLIGHT_MODE_RAINBOW_MOOD); + change = true; + break; + default: + change = false; + } +} + +bool main_mode = true; +uint32_t layer_state_set_user(uint32_t state) { + uint8_t layer = biton32(state); + switch (layer) { + case QGMLWY: + if (!change) { + rgblight_sethsv(0xFF, 0xFF, 0xFF); + if (main_mode) { + rgblight_mode(RGBLIGHT_MODE_RAINBOW_MOOD); + } else { + rgblight_mode(RGBLIGHT_MODE_TWINKLE+3); + } + main_mode = !main_mode; + } + break; + case LOWER: + rgblight_mode(RGBLIGHT_MODE_KNIGHT+1); + rgblight_sethsv(HSV_BLUE); + break; + case RAISE: + rgblight_mode(RGBLIGHT_MODE_KNIGHT+1); + rgblight_sethsv(HSV_BLUE); + break; + case MISCL: + rgblight_mode(RGBLIGHT_MODE_SNAKE+2); + rgblight_sethsv(HSV_YELLOW); + break; + case MISCR: + rgblight_mode(RGBLIGHT_MODE_SNAKE+2); + rgblight_sethsv(HSV_YELLOW); + break; + case COMBA: + rgblight_mode(RGBLIGHT_MODE_TWINKLE+5); + rgblight_sethsv(HSV_GOLD); + break; + case COMBN: + rgblight_mode(RGBLIGHT_MODE_TWINKLE+5); + rgblight_sethsv(HSV_GOLD); + break; + case COMBE: + rgblight_mode(RGBLIGHT_MODE_BREATHING+2); + rgblight_sethsv(HSV_AZURE); + break; + case COMBT: + rgblight_mode(RGBLIGHT_MODE_BREATHING+2); + rgblight_sethsv(HSV_AZURE); + break; + default: + break; + } + + return state; +} + +void matrix_init_user(void) { +} + +void matrix_scan_user(void) { +} +*/ diff --git a/keyboards/maple_computing/minidox/keymaps/mopemope/rules.mk b/keyboards/maple_computing/minidox/keymaps/mopemope/rules.mk new file mode 100644 index 000000000000..9fd9eb7ffccf --- /dev/null +++ b/keyboards/maple_computing/minidox/keymaps/mopemope/rules.mk @@ -0,0 +1,20 @@ +TAP_DANCE_ENABLE = no +RGBLIGHT_ENABLE = no +OLED_DRIVER_ENABLE = no +NKRO_ENABLE = yes +#FORCE_NKRO = yes +#DEBOUNCE_TYPE = sym_eager_pk +DEBOUNCE_TYPE = asym_eager_defer_pk +#DEBOUNCE_TYPE = sym_defer_g +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = no +LEADER_ENABLE = no +MIDI_ENABLE = no +LTO_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +BOOTMAGIC_ENABLE = yes +MAGIC_ENABLE = yes +MUSIC_ENABLE = no diff --git a/keyboards/totem/config.h b/keyboards/totem/config.h new file mode 100644 index 000000000000..703aa571e393 --- /dev/null +++ b/keyboards/totem/config.h @@ -0,0 +1,52 @@ +/* +Copyright 2022 GEIST <@geigeigeist> + +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 + +/* key matrix size */ +// Rows are doubled-up +#define MATRIX_ROWS 8 +#define MATRIX_COLS 5 + + +// wiring of each half +#define MATRIX_ROW_PINS { GP26, GP27, GP28, GP29 } +#define MATRIX_COL_PINS { GP6, GP7, GP3, GP4, GP2 } +#define DIODE_DIRECTION COL2ROW + + +//#define NO_ACTION_MACRO +//#define NO_ACTION_FUNCTION + +#define DEBOUNCE 3 + +/* Serial settings */ +#define USE_SERIAL +/* serial.c configuration for split keyboard */ +#define SOFT_SERIAL_PIN GP0 +//#define SPLIT_LAYER_STATE_ENABLE +//#define SPLIT_USB_DETECT +#define SERIAL_USE_MULTI_TRANSACTION +/* communication between sides */ +#define SERIAL_PIO_USE_PIO1 + + +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET +#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U + +#define SPLIT_USB_TIMEOUT 5000 +#define SPLIT_USB_TIMEOUT_POLL 25 diff --git a/keyboards/totem/halconf.h b/keyboards/totem/halconf.h new file mode 100644 index 000000000000..58f0849b9762 --- /dev/null +++ b/keyboards/totem/halconf.h @@ -0,0 +1,7 @@ +#pragma once + +#define HAL_USE_I2C TRUE +#define HAL_USE_PWM TRUE +#define HAL_USE_PAL TRUE + +#include_next diff --git a/keyboards/totem/info.json b/keyboards/totem/info.json new file mode 100644 index 000000000000..84f4516b60c5 --- /dev/null +++ b/keyboards/totem/info.json @@ -0,0 +1,17 @@ +{ + "keyboard_name": "TOTEM", + "url": "https://github.com/GEIGEIGEIST/TOTEM", + "manufacturer": "GEIST", + "usb": { + "vid": "0x3A3C", + "pid": "0x0002", + "device_version": "0.3.0" + }, + "layouts": { + "LAYOUT": { + "layout": [ + {"x":3, "y":0.25}, {"x":13, "y":0.25}, {"x":4, "y":0.75}, {"x":12, "y":0.75}, {"x":5, "y":1}, {"x":11, "y":1}, {"x":3, "y":1.25}, {"x":13, "y":1.25}, {"x":4, "y":1.75}, {"x":12, "y":1.75}, {"x":5, "y":2}, {"x":11, "y":2}, {"x":3, "y":2.25}, {"x":13, "y":2.25}, {"x":4, "y":2.75}, {"x":12, "y":2.75}, {"x":5, "y":3}, {"x":11, "y":3}, {"x":-0.4, "y":-0.5999999999999996}, {"x":-0.6, "y":-4.199999999999999}, {"x":-0.5, "y":-6.199999999999999}, {"x":-0.5, "y":-5.199999999999999}, {"x":-0.5, "y":-4.199999999999999}, {"x":-0.25, "y":-5.55}, {"x":-0.25, "y":-4.55}, {"x":0.75, "y":-3.9499999999999993}, {"x":-0.25, "y":-3.5499999999999994}, {"x":-0.4, "y":-7.1499999999999995}, {"x":-0.4, "y":-7.1499999999999995}, {"x":-0.6, "y":-10.749999999999998}, {"x":-0.6, "y":-10.749999999999998}, {"x":-1.0, "y":-12.1}, {"x":-1.0, "y":-11.1}, {"x":-2, "y":-10.499999999999998}, {"x":-1.0, "y":-10.1}, {"x":-0.75, "y":-12.1}, {"x":-0.75, "y":-11.1}, {"x":-0.75, "y":-10.1} + ] + } + } +} \ No newline at end of file diff --git a/keyboards/totem/keymaps/default/config.h b/keyboards/totem/keymaps/default/config.h new file mode 100644 index 000000000000..c63192cb2fc7 --- /dev/null +++ b/keyboards/totem/keymaps/default/config.h @@ -0,0 +1,25 @@ +#pragma once + +/* The way how "handedness" is decided (which half is which), +see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness +for more options. +*/ + +#define MASTER_LEFT +// #define MASTER_RIGHT + +//#define TAPPING_TERM 170 +#define TAPPING_TERM 170 + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +#define TAPPING_FORCE_HOLD + +// Auto Shift +#define NO_AUTO_SHIFT_ALPHA +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM +#define AUTO_SHIFT_NO_SETUP + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define NO_ACTION_ONESHOT + diff --git a/keyboards/totem/keymaps/default/keymap.c b/keyboards/totem/keymaps/default/keymap.c new file mode 100644 index 000000000000..2fcaa5858513 --- /dev/null +++ b/keyboards/totem/keymaps/default/keymap.c @@ -0,0 +1,330 @@ +/* + ▀▀▀▀▀ ▀▀▀▀▀ ▀▀█▀▀ + ▄▀▀▀▄ ▄ ▄▀▀▀▄ ▄ ▄▀▀▀▄ █ ▄▀▀▀▄ + █ █ █ █ █ █ █ █ █ █ █ + ▀▀▀ █ ▀▀▀ █ ▀▀▀ ▀ ▀▀▀ + █ ▄▄▄█▄▄▄ █ █ + ▀ █ █ █ █▄█ + ▀▀▀▀▀ █ █ █ ▀ + ▀ ▀ ▀ D E F A U L T + +▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ +*/ + +#include QMK_KEYBOARD_H +#include +#include "totem.h" + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ D E F I N I T I O N S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e l a y e r s │ +// └─────────────────────────────────────────────────┘ + +enum totem_layers { + _QWERTY, + _COLEMAK, + _LOWER, + _RAISE, + _ADJUST, +}; + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e k e y c o d e s │ +// └─────────────────────────────────────────────────┘ + +enum custom_keycodes { + COLEMAK = SAFE_RANGE, + QWERTY, + LOWER, + RAISE, + ADJUST, + OS_SWAP, + MAKE_H, + SNAP +}; + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e m a c r o n a m e s │ +// └─────────────────────────────────────────────────┘ + +// LEFT HAND HOME ROW MODS QWERTY ├──────────────────┐ + +#define GUI_A MT(MOD_LGUI, KC_A) +#define ALT_S MT(MOD_LALT, KC_S) +#define CTL_D MT(MOD_LCTL, KC_D) +#define SHT_F MT(MOD_LSFT, KC_F) + +// RIGHT HAND HOME ROW MODS QWERTY ├─────────────────┐ + +#define SHT_J MT(MOD_RSFT, KC_J) +#define CTL_K MT(MOD_LCTL, KC_K) +#define ALT_L MT(MOD_LALT, KC_L) +#define GUI_S MT(MOD_LGUI, KC_SCLN) + + +// LEFT HAND HOME ROW MODS COLEMAK ├─────────────────┐ + +#define GUI_A MT(MOD_LGUI, KC_A) +#define ALT_R MT(MOD_LALT, KC_R) +#define CTL_S MT(MOD_LCTL, KC_S) +#define SHT_T MT(MOD_LSFT, KC_T) + +// RIGHT HAND HOME ROW MODS COLEMAK ├────────────────┐ + +#define SHT_N MT(MOD_RSFT, KC_N) +#define CTL_E MT(MOD_LCTL, KC_E) +#define ALT_I MT(MOD_LALT, KC_I) +#define GUI_O MT(MOD_LGUI, KC_O) + + + + +#define LOWER LT(_LOWER, KC_TAB) +#define RAISE LT(_RAISE, KC_ESC) +#define ADJUST MO(_ADJUST) + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ K E Y M A P S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + + /* + ┌─────────────────────────────────────────────────┐ + │ q w e r t y │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ Q │ W │ E │ R │ T ││ Y │ U │ I │ O │ P │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ A │ S │ D │ F │ G ││ H │ J │ K │ L │ ; │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ Q │ Z │ X │ C │ V │ B ││ N │ M │ , │ . │ / │ P │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ CTRL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/ + + [_QWERTY] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + GUI_A, ALT_S, CTL_D, SHT_F, KC_G, KC_H, SHT_J, CTL_K, ALT_L, GUI_S, + KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_P, + KC_DEL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC + ), + +/* + + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ c o l e m a k │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ Q │ W │ F │ P │ G ││ J │ L │ U │ Y │ ; │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ A │ R │ S │ T │ D ││ H │ N │ E │ I │ O │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ Q │ Z │ X │ C │ V │ B ││ K │ M │ , │ . │ / │ ; │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ DEL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/ + + [_COLEMAK] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, + KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, + KC_DEL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC + ), + + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ l o w e r │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ CAPSLCK │ NUMLCK │ ↑ │ = │ { ││ } │ 7 │ 8 │ 9 │ + │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ HOME │ ← │ ↓ │ → │ [ ││ ] │ 4 │ 5 │ 6 │ - │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ SCRNSHT │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ ) │ 1 │ 2 │ 3 │ * │ ▼ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ ││ ▼ │ ADJUST │ 0 │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_LOWER] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_QUOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, + SNAP, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______, + _______, _______, _______, _______, ADJUST, KC_P0 + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ r a i s e │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ ! │ @ │ # │ $ │ % ││ ^ │ & │ Ü │ ° │ / │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ Ä │ è │ SZ │ é │ ││ │ ¥ │ € │ £ │ Ö │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ ` │ ~ │ CUE │ │ ││ │ │ │ DM REC1 │ DM STOP │ DM PLY1 │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ GIPHY │ ADJUST │ ▼ ││ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_RAISE] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, + RALT(KC_A),RALT(KC_F),RALT(KC_S),RALT(KC_G),XXXXXXX, XXXXXXX,LSFT(RALT(KC_4)),RALT(KC_5), RALT(KC_4), RALT(KC_O), + XXXXXXX, LSFT(KC_GRV),KC_TILD, RALT(KC_C),XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1, + _______, ADJUST, _______, _______, _______, _______ + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ a d j u s t │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ RESET │ │ │ │ ││ │ F7 │ F8 │ F9 │ F12 │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ DEBUG │ QWERTY │ │ │ ││ │ F4 │ F5 │ F6 │ F11 │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ MAKE │ OS SWAP │ COLEMAK │ │ │ ││ │ F1 │ F2 │ F3 │ F10 │ F13 │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_ADJUST] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, + DB_TOGG, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F11, + MAKE_H, OS_SWAP, COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F13, + _______, _______, _______, _______, _______, _______ + ) +/* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ t e m p l a t e │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ │ │ │ │ ││ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ││ │ │ │ │ │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ │ │ │ │ ││ │ │ │ │ │ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ │ │ ││ │ │ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + ), +*/ +}; + + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ M A C R O S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + + case OS_SWAP: + if (record->event.pressed) { + if (!keymap_config.swap_lctl_lgui) { + keymap_config.swap_lctl_lgui = true; // ─── MAC + } + else { + keymap_config.swap_lctl_lgui = false; // ─── WIN + } + eeconfig_update_keymap(keymap_config.raw); + clear_keyboard(); // ──── clear to prevent stuck keys + return false; + } + + +// ┌─────────────────────────────────────────────────┐ +// │ l a y e r │ +// └─────────────────────────────────────────────────┘ + + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + +// ┌─────────────────────────────────────────────────┐ +// │ q m k │ +// └─────────────────────────────────────────────────┘ + + case MAKE_H: + if (record->event.pressed) { + SEND_STRING ("qmk compile -kb totem -km default"); + tap_code(KC_ENTER); + } + break; + +// ┌─────────────────────────────────────────────────┐ +// │ p r o d u c t i v i t y │ +// └─────────────────────────────────────────────────┘ + + case SNAP: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + SEND_STRING(SS_LSFT(SS_LCMD(SS_LCTL("4")))); //MAC + } else { + SEND_STRING(SS_LSFT(SS_LWIN("S"))); //WIN + } + } + break; + } + return true; +} +/* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + + ██████ + ██ ▄▄▄▄ + ██ ██▀▀██ + ▀▀ ██▄▄██ + ██████ ▀▀▀▀ + ██ ▄▄▄▄▄▄ + ██ ██▀▀▀▀ + ██ ██████ + ██▄▄▄▄ + ▀▀▀▀▀▀ + ████████ + ██ ██ ██ + ██ ██ ██ + ▀▀ ▀▀ ▀▀ + ████████ + +*/ + + + diff --git a/keyboards/totem/keymaps/default/rules.mk b/keyboards/totem/keymaps/default/rules.mk new file mode 100644 index 000000000000..5f8cb68ad0fb --- /dev/null +++ b/keyboards/totem/keymaps/default/rules.mk @@ -0,0 +1 @@ +DYNAMIC_MACRO_ENABLE = yes \ No newline at end of file diff --git a/keyboards/totem/keymaps/geist/config.h b/keyboards/totem/keymaps/geist/config.h new file mode 100644 index 000000000000..66e65596e4d6 --- /dev/null +++ b/keyboards/totem/keymaps/geist/config.h @@ -0,0 +1,29 @@ +#pragma once + +/* The way how "handedness" is decided (which half is which), +see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness +for more options. +*/ + +#define MASTER_LEFT +// #define MASTER_RIGHT + + +//#define TAPPING_TERM 170 +#define TAPPING_TERM 170 + +// Enable rapid switch from tap to hold, disables double tap hold auto-repeat. +#define TAPPING_FORCE_HOLD + +// Auto Shift +#define NO_AUTO_SHIFT_ALPHA +#define AUTO_SHIFT_TIMEOUT TAPPING_TERM +#define AUTO_SHIFT_NO_SETUP + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define NO_ACTION_ONESHOT +//#define NO_ACTION_TAPPING +//#define NO_MUSIC_MODE + +#define COMBO_COUNT 1 \ No newline at end of file diff --git a/keyboards/totem/keymaps/geist/keymap.c b/keyboards/totem/keymaps/geist/keymap.c new file mode 100644 index 000000000000..9125dbe3e8ca --- /dev/null +++ b/keyboards/totem/keymaps/geist/keymap.c @@ -0,0 +1,339 @@ +/* + ▀▀▀▀▀ ▀▀▀▀▀ ▀▀█▀▀ + ▄▀▀▀▄ ▄ ▄▀▀▀▄ ▄ ▄▀▀▀▄ █ ▄▀▀▀▄ + █ █ █ █ █ █ █ █ █ █ █ + ▀▀▀ █ ▀▀▀ █ ▀▀▀ ▀ ▀▀▀ + █ ▄▄▄█▄▄▄ █ █ + ▀ █ █ █ █▄█ + ▀▀▀▀▀ █ █ █ ▀ ┌─┐┌─╴╷┌──┬─ + ▀ ▀ ▀ │ ┐├─╴│└─┐│ + └─┘└─╴╵╶─┘╵ +▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ +*/ + +#include QMK_KEYBOARD_H +#include +#include "totem.h" + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ D E F I N I T I O N S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e l a y e r s │ +// └─────────────────────────────────────────────────┘ + +enum totem_layers { + _COLEMAK, + _QWERTY, + _LOWER, + _RAISE, + _ADJUST, +}; + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e k e y c o d e s │ +// └─────────────────────────────────────────────────┘ + +enum custom_keycodes { + COLEMAK = SAFE_RANGE, + QWERTY, + LOWER, + RAISE, + ADJUST, + OS_SWAP, + GIPHY, + MAKE_H, + SNAP +}; + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e m a c r o n a m e s │ +// └─────────────────────────────────────────────────┘ + +// LEFT HAND HOME ROW MODS ├───────────────────────────────────┐ + +#define GUI_A MT(MOD_LGUI, KC_A) +#define ALT_R MT(MOD_LALT, KC_R) +#define CTL_S MT(MOD_LCTL, KC_S) +#define SHT_T MT(MOD_LSFT, KC_T) + +// RIGHT HAND HOME ROW MODS ├───────────────────────────────────┐ + +#define SHT_N MT(MOD_RSFT, KC_N) +#define CTL_E MT(MOD_LCTL, KC_E) +#define ALT_I MT(MOD_LALT, KC_I) +#define GUI_O MT(MOD_LGUI, KC_O) + +#define LOWER LT(_LOWER, KC_TAB) +#define RAISE LT(_RAISE, KC_ESC) +#define ADJUST MO(_ADJUST) + + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e c o m b o s │ +// └─────────────────────────────────────────────────┘ + +const uint16_t PROGMEM esc_combo[] = {KC_TAB, KC_Q, COMBO_END}; +combo_t key_combos[COMBO_COUNT] = { + COMBO(esc_combo, KC_ESC) +}; + + +// ┌─────────────────────────────────────────────────┐ +// │ d e f i n e k e y o v e r r i d e s │ +// └─────────────────────────────────────────────────┘ + +const key_override_t sve_key_override = ko_make_basic(MOD_MASK_GUI, KC_S, C(KC_S)); + +// This globally defines all key overrides to be used ├───────────┐ +const key_override_t **key_overrides = (const key_override_t *[]){ + &sve_key_override, + NULL // Null terminate the array of overrides! +}; + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ K E Y M A P S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +/* + ┌─────────────────────────────────────────────────┐ + │ c o l e m a k │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ Q │ W │ F │ P │ G ││ J │ L │ U │ Y │ ; │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ A │ R │ S │ T │ D ││ H │ N │ E │ I │ O │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ Q │ Z │ X │ C │ V │ B ││ K │ M │ , │ . │ / │ \ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ DEL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/ + + [_COLEMAK] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, + GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, + KC_Q, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_DEL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ q w e r t y │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ Q │ W │ E │ R │ T ││ Y │ U │ I │ O │ P │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ A │ S │ D │ F │ G ││ H │ J │ K │ L │ ; │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ SHIFT │ Z │ X │ C │ V │ B ││ N │ M │ , │ . │ / │ \ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ CTRL │ LOWER │ SPACE ││ ENTER │ RAISE │ BSPC │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘*/ + + [_QWERTY] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, + GUI_A, ALT_R, CTL_S, SHT_T, KC_D, KC_H, SHT_N, CTL_E, ALT_I, GUI_O, + KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_BSLS, + KC_LCTL, LOWER, KC_SPC, KC_ENT, RAISE, KC_BSPC + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ l o w e r │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ CAPSLCK │ NUMLCK │ ↑ │ = │ { ││ } │ 7 │ 8 │ 9 │ + │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ HOME │ ← │ ↓ │ → │ [ ││ ] │ 4 │ 5 │ 6 │ - │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ SCRNSHT │ END │ PG↑ │ SAVE │ PG↓ │ ( ││ ) │ 1 │ 2 │ 3 │ * │ ▼ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ ││ ▼ │ ADJUST │ 0 │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_LOWER] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_CAPS, KC_NUM, KC_UP, KC_EQL, KC_LCBR, KC_RCBR, KC_P7, KC_P8, KC_P9, KC_PPLS, + KC_QUOT, KC_LEFT, KC_DOWN, KC_RGHT, KC_LBRC, KC_RBRC, KC_P4, KC_P5, KC_P6, KC_MINS, + SNAP, KC_END, KC_PGUP, C(KC_S), KC_PGDN, KC_LPRN, KC_RPRN, KC_P1, KC_P2, KC_P3, KC_PAST, _______, + _______, _______, _______, _______, ADJUST, KC_P0 + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ r a i s e │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ ! │ @ │ # │ $ │ % ││ ^ │ & │ Ü │ ° │ / │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ Ä │ è │ SZ │ é │ ││ │ ¥ │ € │ £ │ Ö │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ ` │ ~ │ CUE │ │ ││ │ │ │ DM REC1 │ DM STOP │ DM PLY1 │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ GIPHY │ ADJUST │ ▼ ││ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_RAISE] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, RALT(KC_U),RALT(KC_3),KC_BSLS, + RALT(KC_A),RALT(KC_F),RALT(KC_S),RALT(KC_G),XXXXXXX, XXXXXXX,LSFT(RALT(KC_4)),RALT(KC_5), RALT(KC_4), RALT(KC_O), + _______, LSFT(KC_GRV),KC_TILD, RALT(KC_C),XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, DM_REC1, DM_RSTP, DM_PLY1, + GIPHY, ADJUST, _______, _______, _______, _______ + ), + /* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ a d j u s t │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ RESET │ │ │ │ ││ │ F7 │ F8 │ F9 │ F12 │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ DEBUG │ QWERTY │ │ │ ││ │ F4 │ F5 │ F6 │ F11 │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ MAKE │ OS SWAP │ COLEMAK │ │ │ ││ │ F1 │ F2 │ F3 │ F10 │ F13 │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ ▼ │ ▼ │ ▼ ││ ▼ │ ▼ │ ▼ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ */ + + [_ADJUST] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F12, + DB_TOGG, QWERTY, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F4, KC_F5, KC_F6, KC_F11, + MAKE_H, OS_SWAP, COLEMAK, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_F1, KC_F2, KC_F3, KC_F10, KC_F13, + _______, _______, _______, _______, _______, _______ + ) +/* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + ┌─────────────────────────────────────────────────┐ + │ t e m p l a t e │ ╭╮╭╮╭╮╭╮ + └─────────────────────────────────────────────────┘ │╰╯╰╯╰╯│ + ┌─────────┬─────────┬─────────┬─────────┬──────╨──┐┌──╨──────┬─────────┬─────────┬─────────┬─────────┐ + ╌┄┈┈───═╡ │ │ │ │ ││ │ │ │ │ │ + ├─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┤ + │ │ │ │ │ ││ │ │ │ │ │ + ┌─────────┼─────────┼─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┼─────────┼─────────┐ + │ │ │ │ │ │ ││ │ │ │ │ │ │ + └─────────┴─────────┴─────────┼─────────┼─────────┼─────────┤├─────────┼─────────┼─────────┼─────────┴─────────┴─────────┘ + │ │ │ ││ │ │ │ + └─────────┴─────────┴─────────┘└─────────┴─────────┴─────────┘ + + [_TEMPLATE] = LAYOUT( + //╷ ╷ ╷ ╷ ╷ ╷ ╷╷ ╷ ╷ ╷ ╷ ╷ ╷ + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, + _______, _______, _______, _______, _______, _______, + ), +*/ +}; + + + +// ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐ +// │ M A C R O S │ +// └────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘ +// ▝▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▘ + + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + + case OS_SWAP: + if (record->event.pressed) { + if (!keymap_config.swap_lctl_lgui) { + keymap_config.swap_lctl_lgui = true; // ─── MAC + } + else { + keymap_config.swap_lctl_lgui = false; // ─── WIN + } + eeconfig_update_keymap(keymap_config.raw); + clear_keyboard(); // ──── clear to prevent stuck keys + return false; + } + + +// ┌─────────────────────────────────────────────────┐ +// │ l a y e r │ +// └─────────────────────────────────────────────────┘ + + case COLEMAK: + if (record->event.pressed) { + set_single_persistent_default_layer(_COLEMAK); + } + return false; + case QWERTY: + if (record->event.pressed) { + set_single_persistent_default_layer(_QWERTY); + } + return false; + +// ┌─────────────────────────────────────────────────┐ +// │ q m k │ +// └─────────────────────────────────────────────────┘ + + case MAKE_H: + if (record->event.pressed) { + SEND_STRING ("qmk compile -kb totem -km geist"); + tap_code(KC_ENTER); + } + break; + +// ┌─────────────────────────────────────────────────┐ +// │ p r o d u c t i v i t y │ +// └─────────────────────────────────────────────────┘ + + case GIPHY: + if (record->event.pressed) { + SEND_STRING ("@gif "); + } + break; + + case SNAP: + if (record->event.pressed) { + if (keymap_config.swap_lctl_lgui) { + SEND_STRING(SS_LSFT(SS_LCMD(SS_LCTL("4")))); //MAC + } else { + SEND_STRING(SS_LSFT(SS_LWIN("S"))); //WIN + } + } + break; + } + return true; +} +/* + ╺━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╸ + + + ██████ + ██ ▄▄▄▄ + ██ ██▀▀██ + ▀▀ ██▄▄██ + ██████ ▀▀▀▀ + ██ ▄▄▄▄▄▄ + ██ ██▀▀▀▀ + ██ ██████ + ██▄▄▄▄ + ▀▀▀▀▀▀ + ████████ + ██ ██ ██ + ██ ██ ██ + ▀▀ ▀▀ ▀▀ + ████████ + +*/ + + + diff --git a/keyboards/totem/keymaps/geist/rules.mk b/keyboards/totem/keymaps/geist/rules.mk new file mode 100644 index 000000000000..dafd5c565b43 --- /dev/null +++ b/keyboards/totem/keymaps/geist/rules.mk @@ -0,0 +1,3 @@ +DYNAMIC_MACRO_ENABLE = yes +COMBO_ENABLE = yes +KEY_OVERRIDE_ENABLE = yes \ No newline at end of file diff --git a/keyboards/totem/keymaps/mopemope/config.h b/keyboards/totem/keymaps/mopemope/config.h new file mode 100644 index 000000000000..116698a1a18a --- /dev/null +++ b/keyboards/totem/keymaps/mopemope/config.h @@ -0,0 +1,25 @@ +#pragma once + +/* The way how "handedness" is decided (which half is which), +see https://docs.qmk.fm/#/feature_split_keyboard?id=setting-handedness +for more options. +*/ + +#define MASTER_LEFT +// #define MASTER_RIGHT + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE +#define NO_ACTION_ONESHOT +// #define FORCE_NKRO +// #define DEBOUNCE 3 +// #define LAYER_STATE_16BIT +#define TAP_CODE_DELAY 1 +#define USB_POLLING_INTERVAL_MS 1 +#define GPIO_INPUT_PIN_DELAY 0 +#define NO_MUSIC_MODE + +/* #define PREVENT_STUCK_MODIFIERS */ +/* #define PERMISSIVE_HOLD */ +/* #define TAPPING_FORCE_HOLD */ +/* #defineTAPPING_TERM 150 */ diff --git a/keyboards/totem/keymaps/mopemope/keymap.c b/keyboards/totem/keymaps/mopemope/keymap.c new file mode 100644 index 000000000000..4b48170423fc --- /dev/null +++ b/keyboards/totem/keymaps/mopemope/keymap.c @@ -0,0 +1,470 @@ +#include QMK_KEYBOARD_H +#include +#include "totem.h" + +#include "keymap_japanese.h" + +extern keymap_config_t keymap_config; + +#define QGMLWY 0 +#define LOWER 1 +#define RAISE 2 +#define MISCL 3 +#define MISCR 4 +#define COMBA 5 +#define COMBN 6 +#define COMBE 7 +#define COMBT 8 +#define SF6 9 +#define VAL 10 +#define EFT 11 +#define DIV 12 +#define CYBER 13 + +/* #define CYBER 22 */ +/* #define BL3 10 */ +/* #define R6S 11 */ +/* #define B4B 12 */ +/* #define LD 13 */ +/* #define APEX 14 */ +/* #define SN 15 */ +/* #define COD 19 */ +/* #define BF 20 */ +/* #define KOC 21 */ + +#define _____ KC_TRNS +#define XXXXX KC_NO + +// #define WRKSP1 LALT(LCTL(KC_UP)) +// #define WRKSP2 LALT(LCTL(KC_DOWN)) +#define WRKSP1 LGUI(KC_PGUP) +#define WRKSP2 LGUI(KC_PGDN) +// #define UWRKSP LSFT(LALT(LCTL(KC_UP))) +// #define DWRKSP LSFT(LALT(LCTL(KC_DOWN))) +#define UWRKSP LSFT(LGUI(KC_PGUP)) +#define DWRKSP LSFT(LGUI(KC_PGDN)) +#define PREVTB LSFT(LCTL(KC_UP)) +#define NEXTTB LSFT(LCTL(KC_DOWN)) +#define CAF2 LALT(LCTL(KC_F2)) +#define CAF7 LALT(LCTL(KC_F7)) +#define PREVW LGUI(LCTL(KC_LEFT)) +#define NEXTW LGUI(LCTL(KC_RIGHT)) + +#define TAB KC_TAB +#define MINS ALT_T(JP_MINS) +#define SMINS SFT_T(JP_MINS) +#define SBSLS SFT_T(JP_BSLS) +#define BSP KC_BSPC +#define DEL KC_DEL +#define SDEL SFT_T(KC_DEL) +#define PSCR KC_PSCR +#define SPSCR LSFT(KC_PSCR) +#define RJ LT(RAISE,KC_J) +#define LK LT(LOWER,KC_K) +#define AC LT(COMBA,KC_A) +#define NC LT(COMBN,KC_N) +#define EC LT(COMBE,KC_E) +#define KC LT(COMBE,KC_K) +#define TC LT(COMBT,KC_T) +#define SPC LT(RAISE,KC_SPC) +#define CSPC LCTL(KC_SPC) +#define CRET LCTL(KC_ENT) +#define ENT LT(LOWER,KC_ENT) +#define CENT CTL_T(KC_ENT) +#define BSPC RCTL_T(KC_BSPC) +#define SBSPC SFT_T(KC_BSPC) +#define ABSPC ALT_T(KC_BSPC) +#define CBSPC CTL_T(KC_BSPC) +#define D_M LT(MISCL,KC_D) +#define Q_M LT(MISCL,KC_Q) +#define D_C CTL_T(KC_D) +#define Z_A ALT_T(KC_Z) +#define Z_C CTL_T(KC_Z) +#define Z_S LSFT_T(KC_Z) +#define D_S LSFT_T(KC_D) +#define H_S LSFT_T(KC_H) +#define I_S LSFT_T(KC_I) +#define TABC CTL_T(KC_TAB) +#define TABS LSFT_T(KC_TAB) +#define ESCC CTL_T(KC_ESC) +#define ESCS LSFT_T(KC_ESC) +#define X_CT LCTL_T(KC_X) +#define P_AL LALT_T(KC_P) +#define J_C RCTL_T(KC_J) +#define P_C RCTL_T(KC_P) +#define A_C RCTL_T(KC_A) +#define H_M LT(MISCR,KC_H) +#define B_M LT(MISCR,KC_BSPC) +#define DELM LT(MISCR,KC_DEL) +#define S_C CTL_T(JP_SLSH) +#define S_S RSFT_T(JP_SLSH) +#define V_A LALT_T(KC_V) +#define O_C CTL_T(KC_O) +#define AT_A ALT_T(JP_AT) +#define AT_C CTL_T(JP_AT) +#define GL LGUI(KC_LEFT) +#define GU LGUI(KC_UP) +#define GD LGUI(KC_DOWN) +#define GR LGUI(KC_RIGHT) +#define CLEFT LCTL(KC_LEFT) +#define CUP LCTL(KC_UP) +#define CDOWN LCTL(KC_DOWN) +#define CRIGHT LCTL(KC_RIGHT) +#define MLEFT LALT(KC_LEFT) +#define MUP LALT(KC_UP) +#define MDOWN LALT(KC_DOWN) +#define MRIGHT LALT(KC_RIGHT) +#define MLT LALT(KC_LT) +#define MGT LALT(KC_GT) +#define GH LGUI(KC_H) +#define GTAB TD(G_TAB) +#define DFG TD(D_FG) +#define DVB TD(D_VB) +#define DSV TD(D_SV) +#define EXLM JP_EXLM +#define DQT JP_DQUO +#define HASH JP_HASH +#define DLR JP_DLR +#define PERC JP_PERC +#define AMPR JP_AMPR +#define QUOT JP_QUOT +#define GRV JP_GRV +#define PIPE JP_PIPE +#define YEN JP_YEN +#define AT JP_AT +#define LCBR JP_LCBR +#define RCBR JP_RCBR +#define UNDS JP_UNDS +#define TILD JP_TILD +#define EQL JP_EQL +#define COLN JP_COLN +#define SLSH JP_SLSH +#define ASTR JP_ASTR +#define LPRN JP_LPRN +#define RPRN JP_RPRN +#define BSLS JP_BSLS +#define CIRC CTL_T(JP_CIRC) +#define SCLN JP_SCLN +#define COMM JP_COMM +#define CCOM LCTL(JP_COMM) +#define DOT JP_DOT +#define CDOT LCTL(JP_DOT) +#define MCOM LALT(JP_COMM) +#define MDOT LALT(JP_DOT) +#define PLUS JP_PLUS +#define LBRC JP_LBRC +#define RBRC ALT_T(JP_RBRC) +#define GUI KC_LGUI +#define ZHTG JP_ZKHK +#define C_S SFT_T(KC_C) +#define ESC KC_ESC + +#define DQG DF(QGMLWY) +#define GBL3 DF(BL3) +#define GCYB DF(CYBER) +#define GVAL DF(VAL) +#define GEFT DF(EFT) +#define GR6S DF(R6S) +#define GB4B DF(B4B) +#define GBF DF(BF) +#define GCOD DF(COD) +#define GDV2 DF(DIV) +#define GAPEX DF(APEX) +#define GKOC DF(KOC) +#define GLD DF(LD) +#define GSN DF(SN) +#define GSF6 DF(SF6) + +#define SELA LCTL(KC_A) +#define COPY LCTL(KC_C) +#define PASTE LCTL(KC_V) +#define CZ LCTL(KC_Z) +#define CSL LCTL(JP_SLSH) +#define CMN LALT(LCTL(KC_N)) +#define CMM LALT(LCTL(KC_M)) +#define CMD LALT(LCTL(JP_DOT)) +#define CMY LALT(LCTL(JP_YEN)) +#define CU LCTL(UNDS) +#define AU LALT(UNDS) +#define CG LCTL(KC_G) +#define CQ LCTL(KC_Q) +#define CT LCTL(KC_T) +#define CJ LCTL(KC_J) +#define CC LCTL(KC_C) +#define CS LCTL(KC_S) +#define CX LCTL(KC_X) +#define CL LCTL(KC_L) +#define CK LCTL(KC_K) +#define CE LCTL(KC_E) +#define CP LCTL(KC_P) +#define CN LCTL(KC_N) +#define CF LCTL(KC_F) +#define CB LCTL(KC_B) +#define CAT LCTL(JP_AT) +#define MX LALT(KC_X) +#undef MD +#define MD LALT(KC_D) +#define MSCLN LALT(JP_SCLN) +#define APERC LALT(JP_PERC) +#define CPIPE LCTL(JP_PIPE) +#define CEXLM LCTL(JP_EXLM) + +#define WH_D KC_WH_D +#define WH_U KC_WH_U +#define PGDN KC_PGDN +#define PGUP KC_PGUP +#define MS_L KC_MS_L +#define MS_U KC_MS_U +#define MS_D KC_MS_D +#define MS_R KC_MS_R +#define KLEFT KC_LEFT +#define KUP KC_UP +#define KDOWN KC_DOWN +#define KRIGHT KC_RIGHT +#define MUTE KC_MUTE +#define VOLD KC_VOLD +#define VOLU KC_VOLU +#define BTN2 KC_BTN2 +#define BTN1 KC_BTN1 +#define ASTG KC_ASTG +#define RTOG RGB_TOG +#define RMOD RGB_MOD +#define RRMOD RGB_RMOD +#define RHUI RGB_HUI +#define RHUD RGB_HUD +#define RSAI RGB_SAI +#define RSAD RGB_SAD +#define RVAI RGB_VAI +#define RVAD RGB_VAD +#define CTL OSM(MOD_RCTL) +#define ALT OSM(MOD_LALT) +#define SFTZ SFT_T(JP_ZHTG) +#define SFT KC_LSFT +#define C_V LCTL(KC_V) +#define M_V LALT(KC_V) +#define ALTZ LALT(KC_Z) +#define ALTX LALT(KC_X) +#define REC LALT(KC_F9) +#define C_LT LCTL(JP_LT) +#define C_GT LCTL(JP_GT) +#define EFTS LT(EFT2,KC_SPC) +#define CP_C LT(CP2,KC_C) +#define R6_C LT(R6S2,KC_C) +#define DI_C LT(DIV2,KC_LCTL) +#define AP_I LT(APEX2,KC_I) +#define GCTL KC_LCTL +#define GALT KC_LALT +#define AQ LALT(KC_Q) +#define AE LALT(KC_E) + +enum custom_keycodes { + CXCF = SAFE_RANGE, + CXCB, + CXCS, + CXCC, + CXCG, + CXO, + CXU, + CCN, + CCP, + CCZ, + CCX, + CCT, + CCC, + CXTT, + CCR, + CCW, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + +[QGMLWY] = LAYOUT( \ + Q_M, KC_G, KC_M, KC_L, KC_W, KC_Y, KC_F, KC_U, KC_B, XXXXX, \ + D_M, KC_S, TC, NC, KC_R, KC_I, AC, EC, KC_O, H_M, \ + SFT, Z_S, X_CT, KC_C, KC_V, GUI, DOT, KC_J, KC_K, P_AL, S_S, SFT, \ + TABC, GALT, SPC, ENT, BSPC, ESCS \ +), + +[LOWER] = LAYOUT( \ + EXLM, DQT, HASH, DLR, PERC, AMPR, QUOT, GRV, PIPE, YEN, \ + ESC, LPRN, RPRN, LCBR, RCBR, TILD, DOT, SLSH, EQL, AT, \ + XXXXX, CIRC, LBRC, RBRC, KC_LT, KC_GT, CIRC, COMM, XXXXX, XXXXX, XXXXX, XXXXX, \ + ESC, TAB, KC_SPC, XXXXX, XXXXX, XXXXX \ +), + +[RAISE] = LAYOUT( \ + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \ + TAB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F12, KC_F7, KC_F8, AT, \ + XXXXX, UNDS , KC_F9, KC_F10, KC_F11, XXXXX, EXLM, KC_F6, KC_LT, KC_GT, MINS, XXXXX, \ + XXXXX, XXXXX, XXXXX, DOT, COMM, ASTR \ +), + +[MISCL] = LAYOUT( \ + QK_RBT, XXXXX, GU, XXXXX, WRKSP1, UWRKSP, PGDN, KUP, PGUP, DEL, \ + XXXXX, GL, GD, GR, WRKSP2, DWRKSP, CLEFT, KDOWN, CRIGHT, XXXXX, \ + SFT, XXXXX, XXXXX, XXXXX, XXXXX, ENT, MLT, MGT, SPSCR, XXXXX, XXXXX, SFT, \ + COPY, PASTE, GUI, TAB, M_V, C_V \ +), + +[MISCR] = LAYOUT( \ + QK_RBT, XXXXX, GU, XXXXX, PREVW, PREVTB, MLT, KUP, MGT, DEL, \ + TAB, GL, GD, GR, NEXTW, NEXTTB, KLEFT, KDOWN, KRIGHT, XXXXX, \ + SFT, SFT, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, SFT, \ + XXXXX, CXU, KC_SPC, TAB, DEL, AU \ +), + +[COMBA] = LAYOUT( \ + CQ, CG, CMM, CL, APERC, _____, CXCF, CXU, CXCB, _____, \ + MD, CXCS, CT, CMN, MX, _____, _____, CXCC, CXO, CAT, \ + QK_BOOT, CZ, CX, _____, _____, _____, _____, _____, CK, _____, _____, QK_BOOT,\ + ESC, TAB, ZHTG, CCX, _____, _____ \ +), + +[COMBN] = LAYOUT( \ + _____, CG, _____, CL, _____, AMPR, MCOM, CXU, MDOT, MD, \ + TAB, CS, CT, _____, _____, MSCLN, CLEFT, CCZ, CRIGHT, CAT, \ + QK_BOOT, _____, CX, CRET, CSPC, _____, MCOM, MDOT, _____, _____, CXU, QK_BOOT,\ + _____, _____, _____, CJ, _____, _____ \ +), + +[COMBE] = LAYOUT( \ + CAF7, _____, CUP, _____, CCW, DQG, _____, _____, _____, _____, \ + CAF2, CLEFT, CDOWN, CRIGHT, CCR, AU, CU, _____, _____, _____, \ + QK_BOOT, PSCR, _____, _____, _____, _____, _____, _____, _____, _____, _____, QK_BOOT,\ + _____, _____, KC_SPC, DOT, _____, _____ \ +), + +[COMBT] = LAYOUT( \ + GVAL, GEFT, GSF6, GDV2, GCYB, DQT, EXLM, PLUS, ASTR, PIPE, \ + _____, _____, _____, _____, _____, TILD, EQL, COLN, SCLN, AT, \ + QK_BOOT, _____, _____, _____, _____, _____, CIRC, DOT, COMM, XXXXX, XXXXX, QK_BOOT, \ + _____, _____, _____, MINS, UNDS, SLSH \ +), + +[SF6] = LAYOUT( \ + XXXXX, KC_Q, KC_W, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, XXXXX, \ + KC_B, KC_A, KC_S, KC_D, KC_F, KC_G, KC_J, KC_K, KC_L, KC_U, \ + TAB, KC_Z, KC_X, KC_C, XXXXX, XXXXX, XXXXX, XXXXX, KC_N, KC_M, KC_T, DQG, \ + ESC, KC_B, KC_W, KC_G, KC_H, ESC \ +), + +[VAL] = LAYOUT( \ + TAB, KC_Q, KC_W, KC_E, KC_R, KC_F1, KC_F2, KC_F3, KC_4, ALTZ, \ + KC_B, KC_A, KC_S, KC_D, KC_F, KC_5, KC_6, KC_7, KC_8, ALTX, \ + KC_M,KC_Z, KC_X, KC_B, KC_G, KC_C, KC_T, KC_V, KC_V, KC_T, GUI, DQG, \ + KC_4, GCTL, KC_SPC, KC_ENT, KC_H, ESC \ +), + +[EFT] = LAYOUT( \ + TAB, KC_Q, KC_W, KC_E, KC_R, KC_1, KC_2, KC_3 , KC_4, KC_5, \ + SFT, KC_A, KC_S, KC_D, KC_F, KC_6, KC_7, KC_8, KC_9, KC_0, \ + KC_Y,KC_CAPS,KC_X, KC_C, KC_V, KC_G, KC_O, KC_T, KC_B, KC_N, DEL, DQG, \ + GCTL, GALT, KC_SPC, KC_ENT, KC_U, KC_Z \ +), + +[DIV] = LAYOUT( \ + ESC, KC_Q, KC_W, KC_E, KC_R, KC_G, KC_Q, KC_T , KC_Y, ESC, \ + SFT, KC_A, KC_S, KC_D, KC_F, KC_V, KC_I, KC_M, KC_H, KC_J, \ + KC_Z,TAB, KC_X, KC_C, KC_I, KC_G, XXXXX, XXXXX, XXXXX, XXXXX, XXXXX, DQG, \ + KC_V, GCTL, KC_SPC, KC_ENT, KC_U, KC_Z \ +), + +[CYBER] = LAYOUT( \ + TAB, KC_Q, KC_W, KC_E, KC_R, XXXXX, KC_M, KC_J , KC_K, ESC, \ + SFT, KC_A, KC_S, KC_D, KC_F, XXXXX, KC_I, KC_O, KC_P, XXXXX, \ + ESC, KC_Z, KC_X, GALT, KC_V, KC_T, XXXXX, XXXXX, XXXXX, KC_V, KC_N, DQG, \ + KC_Z, KC_C, KC_SPC, KC_ENT, KC_V, KC_Z \ +), + +}; + +void persistent_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CXCF: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xf")); + } + break; + case CXCB: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xb")); + } + break; + case CXCS: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xs")); + } + break; + case CXCC: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xc")); + } + break; + case CXCG: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xg")); + } + break; + case CXO: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("x") "o"); + } + break; + case CXU: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("x") "u"); + } + break; + case CCN: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "n"); + } + break; + case CCP: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "p"); + } + break; + case CCZ: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "z"); + } + break; + case CCX: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "x"); + } + break; + case CCT: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "t"); + } + break; + case CCC: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "c"); + } + break; + case CXTT: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("x") "t" "t"); + } + break; + case CCR: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "r"); + } + break; + case CCW: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "w"); + } + break; + } + return true; +} diff --git a/keyboards/totem/keymaps/mopemope/rules.mk b/keyboards/totem/keymaps/mopemope/rules.mk new file mode 100644 index 000000000000..1152fec3d249 --- /dev/null +++ b/keyboards/totem/keymaps/mopemope/rules.mk @@ -0,0 +1,18 @@ +#WAIT_FOR_USB = yes +DYNAMIC_MACRO_ENABLE = no +TAP_DANCE_ENABLE = no +RGBLIGHT_ENABLE = no +OLED_DRIVER_ENABLE = no +NKRO_ENABLE = yes +FORCT_NKRO = yes +#DEBOUNCE_TYPE = sym_eager_pk +DEBOUNCE_TYPE = asym_eager_defer_pk +#DEBOUNCE_TYPE = sym_defer_g +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = no +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +MUSIC_ENABLE = no +LTO_ENABLE = yes diff --git a/keyboards/totem/mcuconf.h b/keyboards/totem/mcuconf.h new file mode 100644 index 000000000000..c7d2f690bbd6 --- /dev/null +++ b/keyboards/totem/mcuconf.h @@ -0,0 +1,9 @@ +#pragma once + +#include_next + +#undef RP_PWM_USE_PWM4 +#define RP_PWM_USE_PWM4 TRUE + +#undef RP_PWM_USE_TIM1 +#define RP_PWM_USE_TIM1 TRUE diff --git a/keyboards/totem/readme.md b/keyboards/totem/readme.md new file mode 100644 index 000000000000..c83437d0bf48 --- /dev/null +++ b/keyboards/totem/readme.md @@ -0,0 +1,18 @@ +``` + ▀▀▀▀▀ ▀▀▀▀▀ ▀▀█▀▀ + ▄▀▀▀▄ ▄ ▄▀▀▀▄ ▄ ▄▀▀▀▄ █ ▄▀▀▀▄ + █ █ █ █ █ █ █ █ █ █ █ + ▀▀▀ █ ▀▀▀ █ ▀▀▀ ▀ ▀▀▀ + █ ▄▄▄█▄▄▄ █ █ + ▀ █ █ █ █▄█ + ▀▀▀▀▀ █ █ █ ▀ + ▀ ▀ ▀ +▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄ + +``` +# TOTEM split keyboard + +TOTEM is 34 keys column-staggered split keyboard made by @geigeigeist. It uses the Seeed XIAO RP2040. + +You can use this command to compile the firmware +`qmk compile -kb totem -km default` \ No newline at end of file diff --git a/keyboards/totem/rules.mk b/keyboards/totem/rules.mk new file mode 100644 index 000000000000..ff6eab434147 --- /dev/null +++ b/keyboards/totem/rules.mk @@ -0,0 +1,30 @@ +# MCU name +MCU = RP2040 + +# Bootloader selection +BOOTLOADER = rp2040 + +# Ignore some warnings during the build, likely to be fixed before RP2040 PR is merged +ALLOW_WARNINGS = yes + +# LTO must be disabled for RP2040 builds +#LTO_ENABLE = no + +SPLIT_KEYBOARD = yes +SWAP_HANDS_ENABLE = yes + +# PIO serial/WS2812 drivers must be used on RP2040 +SERIAL_DRIVER = vendor +WS2812_DRIVER = vendor + +#SPACE SAVING +EXTRAKEY_ENABLE = no +AUDIO_ENABLE = no +MUSIC_ENABLE = no +LTO_ENABLE = no +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +MOUSEKEY_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +MAGIC_ENABLE = no diff --git a/keyboards/totem/totem.c b/keyboards/totem/totem.c new file mode 100644 index 000000000000..9785fb51af07 --- /dev/null +++ b/keyboards/totem/totem.c @@ -0,0 +1,56 @@ +/* Copyright 2022 + * GEIST @geigeigeist + * + * 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 "totem.h" + + +#ifdef SWAP_HANDS_ENABLE + +__attribute__ ((weak)) +const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = + // The LAYOUT macro could work for this, but it was harder to figure out the + // identity using it. + + // This is the identity layout. +/* +{ \ + { {0, 0}, {1, 0}, {2, 0}, {3, 0}, {4, 0} }, \ + { {0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1} }, \ + { {0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2} }, \ + { {0, 3}, {2, 3}, {3, 3}, {4, 3} }, \ + \ + { {0, 4}, {1, 4}, {2, 4}, {3, 4}, {4, 4} }, \ + { {0, 5}, {1, 5}, {2, 5}, {3, 5}, {4, 5} }, \ + { {0, 6}, {1, 6}, {2, 6}, {3, 6}, {4, 6} }, \ + { {0, 7}, {1, 7}, {2, 7}, {4, 7}, \ +}; +*/ + + // This is the mirror, q <-> p, w <-> o, etc... +{ \ + { {4, 4}, {3, 4}, {2, 4}, {1, 4}, {0, 4} }, \ + { {4, 5}, {3, 5}, {2, 5}, {1, 5}, {0, 5} }, \ + { {4, 6}, {3, 6}, {2, 6}, {1, 6}, {0, 6} }, \ + { {4, 7}, {2, 7}, {1, 7}, {0, 7} }, \ + \ + { {4, 0}, {3, 0}, {2, 0}, {1, 0}, {0, 0} }, \ + { {4, 1}, {3, 1}, {2, 1}, {1, 1}, {0, 1} }, \ + { {4, 2}, {3, 2}, {2, 2}, {1, 2}, {0, 2} }, \ + { {4, 3}, {3, 3}, {2, 3}, {0, 3} }, \ +}; + +#endif //SWAP_HANDS_ENABLE \ No newline at end of file diff --git a/keyboards/totem/totem.h b/keyboards/totem/totem.h new file mode 100644 index 000000000000..4724e0fad0e6 --- /dev/null +++ b/keyboards/totem/totem.h @@ -0,0 +1,55 @@ +/* Copyright 2022 + * GEIST @geigeigeist + * + * 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 +#include "quantum.h" + +/* This a shortcut to help you visually see your layout. + * + * The first section contains all of the arguments representing the physical + * layout of the board and position of the keys. + * + * The second converts the arguments into a two-dimensional array which + * represents the switch matrix. + */ + +// readability +#define ___ KC_NO + +// |SW01|SW02|SW03|SW04|SW05| |SW05|SW04|SW03|SW02|SW01| +// |SW06|SW07|SW08|SW09|SW10| |SW10|SW09|SW08|SW07|SW06| +// |SW16|SW11|SW12|SW13|SW14|SW15| |SW15|SW14|SW13|SW12|SW11|SW16| +// |SW17|SW18|SW19| |SW19|SW18|SW17| + +#define LAYOUT( \ + L00, L01, L02, L03, L04, R00, R01, R02, R03, R04, \ + L10, L11, L12, L13, L14, R10, R11, R12, R13, R14, \ + L30, L20, L21, L22, L23, L24, R20, R21, R22, R23, R24, R34,\ + L32, L33, L34, R30, R31, R32 \ + ) \ + { \ + { L00, L01, L02, L03, L04 }, \ + { L10, L11, L12, L13, L14 }, \ + { L20, L21, L22, L23, L24 }, \ + { L30, ___, L32, L33, L34 }, \ + { R04, R03, R02, R01, R00 }, \ + { R14, R13, R12, R11, R10 }, \ + { R24, R23, R22, R21, R20 }, \ + { R34, ___, R32, R31, R30 }, \ + } + + diff --git a/keyboards/uzu42/keymaps/mopemope/config.h b/keyboards/uzu42/keymaps/mopemope/config.h new file mode 100644 index 000000000000..3c03655445ed --- /dev/null +++ b/keyboards/uzu42/keymaps/mopemope/config.h @@ -0,0 +1,54 @@ +/* +This is the c configuration file for the keymap + +Copyright 2012 Jun Wako +Copyright 2015 Jack Humbert + +This program is free software: you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation, either version 2 of the License, or +(at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program. If not, see . +*/ + +#pragma once + +//#define USE_MATRIX_I2C + +/* Select hand configuration */ + +#define MASTER_LEFT +// #define MASTER_RIGHT +// #define EE_HANDS + +// #define SSD1306OLED + +#define USE_SERIAL_PD2 + +#define DEBOUNCE 3 +#define NO_ACTION_ONESHOT +#define LAYER_STATE_16BIT +#define TAP_CODE_DELAY 1 +#define NO_MUSIC_MODE +#define FORCE_NKRO + +#undef LOCKING_SUPPORT_ENABLE +#undef LOCKING_RESYNC_ENABLE + +#define PREVENT_STUCK_MODIFIERS +#define PERMISSIVE_HOLD +#define TAPPING_FORCE_HOLD + +#define USB_POLLING_INTERVAL_MS 1 +#define GPIO_INPUT_PIN_DELAY 0 + + +// Use the lily version to get the uzu42 logo instead of the qmk logo +//#define OLED_FONT_H "keymaps/default/glcdfont_uzu42.c" diff --git a/keyboards/uzu42/keymaps/mopemope/glcdfont_uzu42.c b/keyboards/uzu42/keymaps/mopemope/glcdfont_uzu42.c new file mode 100644 index 000000000000..5c3fa80d70ba --- /dev/null +++ b/keyboards/uzu42/keymaps/mopemope/glcdfont_uzu42.c @@ -0,0 +1,232 @@ +// This is the 'classic' fixed-space bitmap font for Adafruit_GFX since 1.0. +// See gfxfont.h for newer custom bitmap font info. + +#include "progmem.h" + +// Standard ASCII 5x7 font +const unsigned char font[] PROGMEM = { +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, +0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, +0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, +0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, +0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, +0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, +0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, +0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, +0x00, 0x18, 0x24, 0x18, 0x00, 0x00, +0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, +0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, +0x26, 0x29, 0x79, 0x29, 0x26, 0x00, +0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, +0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, +0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, +0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, +0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, +0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, +0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, +0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, +0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, +0x60, 0x60, 0x60, 0x60, 0x60, 0x00, +0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, +0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, +0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, +0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, +0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, +0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, +0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, +0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, +0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, +0x00, 0x07, 0x00, 0x07, 0x00, 0x00, +0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, +0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, +0x23, 0x13, 0x08, 0x64, 0x62, 0x00, +0x36, 0x49, 0x56, 0x20, 0x50, 0x00, +0x00, 0x08, 0x07, 0x03, 0x00, 0x00, +0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, +0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, +0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, +0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, +0x00, 0x80, 0x70, 0x30, 0x00, 0x00, +0x08, 0x08, 0x08, 0x08, 0x08, 0x00, +0x00, 0x00, 0x60, 0x60, 0x00, 0x00, +0x20, 0x10, 0x08, 0x04, 0x02, 0x00, +0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, +0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, +0x72, 0x49, 0x49, 0x49, 0x46, 0x00, +0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, +0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, +0x27, 0x45, 0x45, 0x45, 0x39, 0x00, +0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, +0x41, 0x21, 0x11, 0x09, 0x07, 0x00, +0x36, 0x49, 0x49, 0x49, 0x36, 0x00, +0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, +0x00, 0x00, 0x14, 0x00, 0x00, 0x00, +0x00, 0x40, 0x34, 0x00, 0x00, 0x00, +0x00, 0x08, 0x14, 0x22, 0x41, 0x00, +0x14, 0x14, 0x14, 0x14, 0x14, 0x00, +0x00, 0x41, 0x22, 0x14, 0x08, 0x00, +0x02, 0x01, 0x59, 0x09, 0x06, 0x00, +0x00, 0x41, 0x5D, 0x59, 0x4E, 0x00, +0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, +0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, +0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, +0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, +0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, +0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, +0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, +0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, +0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, +0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, +0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, +0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, +0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, +0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, +0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, +0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, +0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, +0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, +0x26, 0x49, 0x49, 0x49, 0x32, 0x00, +0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, +0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, +0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, +0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, +0x63, 0x14, 0x08, 0x14, 0x63, 0x00, +0x03, 0x04, 0x78, 0x04, 0x03, 0x00, +0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, +0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, +0x02, 0x04, 0x08, 0x10, 0x20, 0x00, +0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, +0x04, 0x02, 0x01, 0x02, 0x04, 0x00, +0x40, 0x40, 0x40, 0x40, 0x40, 0x00, +0x00, 0x03, 0x07, 0x08, 0x00, 0x00, +0x20, 0x54, 0x54, 0x78, 0x40, 0x00, +0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, +0x38, 0x44, 0x44, 0x44, 0x28, 0x00, +0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, +0x38, 0x54, 0x54, 0x54, 0x18, 0x00, +0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, +0x18, 0x24, 0x24, 0x1C, 0x78, 0x00, +0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, +0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, +0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, +0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, +0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, +0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, +0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, +0x38, 0x44, 0x44, 0x44, 0x38, 0x00, +0x7C, 0x18, 0x24, 0x24, 0x18, 0x00, +0x18, 0x24, 0x24, 0x18, 0x7C, 0x00, +0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, +0x48, 0x54, 0x54, 0x54, 0x24, 0x00, +0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, +0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, +0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, +0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, +0x44, 0x28, 0x10, 0x28, 0x44, 0x00, +0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, +0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, +0x00, 0x08, 0x36, 0x41, 0x00, 0x00, +0x00, 0x00, 0x77, 0x00, 0x00, 0x00, +0x00, 0x41, 0x36, 0x08, 0x00, 0x00, +0x02, 0x01, 0x02, 0x04, 0x02, 0x00, +0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xC0, 0xE0, 0x70, +0x38, 0x18, 0x18, 0x0C, 0x0C, 0x0C, +0x0E, 0x06, 0x06, 0x06, 0x06, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x80, 0x80, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0xC0, 0xC0, 0xC0, 0x00, 0x00, +0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, +0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, +0x00, 0x00, 0xC0, 0xC0, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xC0, 0xC0, 0xC0, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC, +0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00, +0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E, +0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00, +0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, +0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, +0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, +0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x03, 0x07, 0x2E, +0x6C, 0xD8, 0xD8, 0xF8, 0xB0, 0xB0, +0xB0, 0xB0, 0xB0, 0xB0, 0xB0, 0xB0, +0xB0, 0xB0, 0xF8, 0xD8, 0xD8, 0x6C, +0x2E, 0x07, 0x03, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, +0x80, 0x00, 0x00, 0x00, 0x00, 0x00, +0x80, 0xFF, 0xFF, 0xFF, 0x00, 0x00, +0x01, 0x01, 0x81, 0xC1, 0xE1, 0x79, +0x3D, 0x0F, 0x07, 0x03, 0x01, 0x00, +0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x80, +0x00, 0x00, 0x00, 0x00, 0x00, 0x80, +0xFF, 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, +0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F, +0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00, +0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F, +0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00, +0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, +0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, +0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, +0x0F, 0x7F, 0x0F, 0x00, 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, 0x02, 0x06, 0x17, 0x3D, +0x6D, 0x6D, 0x6D, 0x6D, 0x6D, 0x6D, +0x3D, 0x17, 0x06, 0x02, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x01, 0x03, +0x07, 0x07, 0x07, 0x07, 0x07, 0x07, +0x07, 0x03, 0x01, 0x00, 0x00, 0x00, +0x06, 0x07, 0x07, 0x07, 0x07, 0x07, +0x07, 0x07, 0x07, 0x07, 0x07, 0x07, +0x00, 0x00, 0x00, 0x01, 0x03, 0x07, +0x07, 0x07, 0x07, 0x07, 0x07, 0x07, +0x03, 0x01, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +0x00, 0x00, 0x00, 0x00, 0x00, 0x00, +}; diff --git a/keyboards/uzu42/keymaps/mopemope/keymap.c b/keyboards/uzu42/keymaps/mopemope/keymap.c new file mode 100644 index 000000000000..46e04ff9eea2 --- /dev/null +++ b/keyboards/uzu42/keymaps/mopemope/keymap.c @@ -0,0 +1,717 @@ +#include QMK_KEYBOARD_H + +#include "keymap_japanese.h" + +#define QGMLWY 0 +#define LOWER 1 +#define RAISE 2 +#define MISCL 3 +#define MISCR 4 +#define COMBA 5 +#define COMBN 6 +#define COMBE 7 +#define COMBT 8 +#define SF6 9 +#define VAL 10 +#define CYBER 11 +//#define DB3 11 +//#define R6S 12 +#define DIV 13 +#define EFT 14 +#define COD 15 + +/* #define SN 16 */ +/* #define DAD 17 */ +/* #define BL3 22 */ +/* #define B4B 23 */ +/* #define LD 24 */ +/* #define APEX 25 */ +/* #define CH2 26 */ + +#define ______ KC_TRNS +#define XXXXXX KC_NO + +/* #define WRKSP1 LALT(LCTL(KC_UP)) */ +/* #define WRKSP2 LALT(LCTL(KC_DOWN)) */ +/* #define UWRKSP LSFT(LALT(LCTL(KC_UP))) */ +/* #define DWRKSP LSFT(LALT(LCTL(KC_DOWN))) */ +#define WRKSP1 LGUI(KC_PGUP) +#define WRKSP2 LGUI(KC_PGDN) +#define UWRKSP LSFT(LGUI(KC_PGUP)) +#define DWRKSP LSFT(LGUI(KC_PGDN)) +#define PREVTB LSFT(LCTL(KC_UP)) +#define NEXTTB LSFT(LCTL(KC_DOWN)) +#define CAF2 LALT(LCTL(KC_F2)) +#define CAF7 LALT(LCTL(KC_F7)) +#define PREVW LGUI(LCTL(KC_LEFT)) +#define NEXTW LGUI(LCTL(KC_RIGHT)) + +#define TAB KC_TAB +#define MINS ALT_T(JP_MINS) +#define SMINS SFT_T(JP_MINS) +#define SBSLS SFT_T(JP_BSLS) +#define BSP KC_BSPC +#define DEL KC_DEL +#define SDEL SFT_T(KC_DEL) +#define PSCR KC_PSCR +#define SPSCR LSFT(KC_PSCR) +#define RJ LT(RAISE,KC_J) +#define LK LT(LOWER,KC_K) +#define AC LT(COMBA,KC_A) +#define NC LT(COMBN,KC_N) +#define EC LT(COMBE,KC_E) +#define KC LT(COMBE,KC_K) +#define TC LT(COMBT,KC_T) +#define SPC LT(RAISE,KC_SPC) +#define CSPC LCTL(KC_SPC) +#define CRET LCTL(KC_ENT) +#define ENT LT(LOWER,KC_ENT) +#define CENT CTL_T(KC_ENT) +#define GENT KC_ENT +#define BSPC RCTL_T(KC_BSPC) +#define SBSPC SFT_T(KC_BSPC) +#define ABSPC ALT_T(KC_BSPC) +#define CBSPC CTL_T(KC_BSPC) +#define ADEL ALT_T(KC_DEL) +#define D_M LT(MISCL,KC_D) +#define D_C CTL_T(KC_D) +#define Z_A ALT_T(KC_Z) +#define Z_C CTL_T(KC_Z) +#define Z_S LSFT_T(KC_Z) +#define I_S LSFT_T(KC_I) +#define X_CT LCTL_T(KC_X) +#define P_AL LALT_T(KC_P) +#define J_C RCTL_T(KC_J) +#define P_C RCTL_T(KC_P) +#define A_C RCTL_T(KC_A) +#define H_M LT(MISCR,KC_H) +#define S_C CTL_T(JP_SLSH) +#define S_S RSFT_T(JP_SLSH) +#define V_A LALT_T(KC_V) +#define O_C CTL_T(KC_O) +#define AT_A ALT_T(JP_AT) +#define AT_C CTL_T(JP_AT) +#define GL LGUI(KC_LEFT) +#define GU LGUI(KC_UP) +#define GD LGUI(KC_DOWN) +#define GR LGUI(KC_RIGHT) +#define GS LGUI(KC_SPC) +#define CLEFT LCTL(KC_LEFT) +#define CUP LCTL(KC_UP) +#define CDOWN LCTL(KC_DOWN) +#define CRIGHT LCTL(KC_RIGHT) +#define MLEFT LALT(KC_LEFT) +#define MUP LALT(KC_UP) +#define MDOWN LALT(KC_DOWN) +#define MRIGHT LALT(KC_RIGHT) +#define MLT LALT(KC_LT) +#define MGT LALT(KC_GT) +#define GH LGUI(KC_H) +#define EXLM JP_EXLM +#define DQT JP_DQUO +#define HASH JP_HASH +#define DLR JP_DLR +#define PERC JP_PERC +#define AMPR JP_AMPR +#define QUOT JP_QUOT +#define GRV JP_GRV +#define PIPE JP_PIPE +#define YEN JP_YEN +#define AT JP_AT +#define LCBR JP_LCBR +#define RCBR JP_RCBR +#define UNDS JP_UNDS +#define TILD JP_TILD +#define EQL JP_EQL +#define COLN JP_COLN +#define SLSH JP_SLSH +#define ASTR JP_ASTR +#define LPRN JP_LPRN +#define RPRN JP_RPRN +#define BSLS JP_BSLS +#define CIRC CTL_T(JP_CIRC) +#define SCLN JP_SCLN +#define COMM JP_COMM +#define CCOM LCTL(JP_COMM) +#define DOT JP_DOT +#define CDOT LCTL(JP_DOT) +#define MCOM LALT(JP_COMM) +#define MDOT LALT(JP_DOT) +#define PLUS JP_PLUS +#define LBRC JP_LBRC +#define RBRC ALT_T(JP_RBRC) +#define GUI KC_LGUI +#define ZHTG JP_ZKHK +#define C_S SFT_T(KC_C) +#define ESC KC_ESC + +#define DQG DF(QGMLWY) +#define GBL3 DF(BL3) +#define GCYB DF(CYBER) +#define GCH2 DF(CH2) +#define GVAL DF(VAL) +#define GDAD DF(DAD) +#define GEFT DF(EFT) +#define GSF6 DF(SF6) +#define GR6S DF(R6S) +#define GB4B DF(B4B) +#define GCOD DF(COD) +#define GDV2 DF(DIV) +#define GAPEX DF(APEX) +#define GLD DF(LD) +#define GSN DF(SN) +#define GDB3 DF(DB3) + +#define SELA LCTL(KC_A) +#define COPY LCTL(KC_C) +#define PASTE LCTL(KC_V) +#define CZ LCTL(KC_Z) +#define CSL LCTL(JP_SLSH) +#define CMN LALT(LCTL(KC_N)) +#define CMM LALT(LCTL(KC_M)) +#define CMD LALT(LCTL(JP_DOT)) +#define CMY LALT(LCTL(JP_YEN)) +#define CG LCTL(KC_G) +#define CQ LCTL(KC_Q) +#define CT LCTL(KC_T) +#define CJ LCTL(KC_J) +#define CC LCTL(KC_C) +#define CS LCTL(KC_S) +#define CX LCTL(KC_X) +#define CL LCTL(KC_L) +#define CK LCTL(KC_K) +#define CE LCTL(KC_E) +#define CP LCTL(KC_P) +#define CN LCTL(KC_N) +#define CF LCTL(KC_F) +#define CB LCTL(KC_B) +#define CU LCTL(UNDS) +#define AU LALT(UNDS) +#define CAT LCTL(JP_AT) +#define MX LALT(KC_X) +#undef MD +#define MD LALT(KC_D) +#define MSCLN LALT(JP_SCLN) +#define APERC LALT(JP_PERC) +#define CPIPE LCTL(JP_PIPE) +#define CEXLM LCTL(JP_EXLM) + +#define WH_D KC_WH_D +#define WH_U KC_WH_U +#define PGDN KC_PGDN +#define PGUP KC_PGUP +#define MS_L KC_MS_L +#define MS_U KC_MS_U +#define MS_D KC_MS_D +#define MS_R KC_MS_R +#define KLEFT KC_LEFT +#define KUP KC_UP +#define KDOWN KC_DOWN +#define KRIGHT KC_RIGHT +#define MUTE KC_MUTE +#define VOLD KC_VOLD +#define VOLU KC_VOLU +#define BTN2 KC_BTN2 +#define BTN1 KC_BTN1 +#define ASTG KC_ASTG +#define RTOG RGB_TOG +#define RMOD RGB_MOD +#define RRMOD RGB_RMOD +#define RHUI RGB_HUI +#define RHUD RGB_HUD +#define RSAI RGB_SAI +#define RSAD RGB_SAD +#define RVAI RGB_VAI +#define RVAD RGB_VAD +#define CTL OSM(MOD_RCTL) +#define ALT OSM(MOD_LALT) +#define SFTZ SFT_T(JP_ZHTG) +#define C_V LCTL(KC_V) +#define M_V LALT(KC_V) +#define ALTZ LALT(KC_Z) +#define ALTX LALT(KC_X) +#define REC LALT(KC_F9) +#define C_LT LCTL(JP_LT) +#define C_GT LCTL(JP_GT) +#define EFTS LT(EFT2,KC_SPC) +#define R6_C LT(R6S2,KC_C) +#define DI_C LT(DIV2,KC_LCTL) +#define AP_I LT(APEX2,KC_I) +#define GCTL KC_LCTL +#define GALT KC_LALT +#define AQ LALT(KC_Q) +#define AE LALT(KC_E) + +enum custom_keycodes { + CXCF = SAFE_RANGE, + CXCB, + CXCS, + CXCC, + CXCG, + CXO, + CXU, + CCN, + CCP, + CCZ, + CCX, + GG, + NICE, + TY, + NT, + SRY, + LDR, + RDR, +}; + +const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = { + [QGMLWY] = LAYOUT( \ + KC_Q, KC_G, KC_M, KC_L, KC_W, KC_Y, KC_F, KC_U, KC_B, DEL, \ + D_M, KC_S, TC, NC, KC_R, KC_I, AC, EC, KC_O, H_M, \ + Z_S, X_CT, KC_C, V_A, GUI, DOT, J_C, KC_K, P_AL, S_S, \ + TAB, GCTL, ESC, GCTL, GALT, SPC, ENT, BSPC, DEL, ESC, TAB, GUI \ + ), + + [LOWER] = LAYOUT( \ + EXLM, DQT, HASH, DLR, PERC, AMPR, QUOT, GRV, PIPE, YEN, \ + ESC, LPRN, RPRN, LCBR, RCBR, TILD, DOT, SLSH, EQL, AT, \ + CIRC, LBRC, RBRC, KC_LT, KC_GT, CIRC, COMM, ______, ______, ______, \ + TAB, ______, ______, ESC, TAB, KC_SPC, ______, ______, ______, ______, ______, DEL \ + ), + + [RAISE] = LAYOUT( \ + KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, \ + TAB, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F12, KC_F7, KC_F8, AT, \ + UNDS, KC_F9, KC_F10, KC_F11, ______, EXLM, KC_F6, KC_LT, KC_GT, MINS, \ + TAB, ______, ______, ______, ______, ______, DOT, COMM, ASTR, ______, ______, DEL \ + ), + + [MISCL] = LAYOUT( \ + QK_RBT, ______, GU, ______, WRKSP1, UWRKSP, PGDN, KUP, PGUP, DEL, \ + ______, GL, GD, GR, WRKSP2, DWRKSP, CLEFT, KDOWN, CRIGHT, GH, \ + ______, ______, ______, ______, ENT, MLT, MGT, SPSCR, ______, ______, \ + ______, ______, ______, COPY, PASTE, GUI, TAB, M_V, C_V, ______, ______, ______ \ + ), + + [MISCR] = LAYOUT( \ + QK_RBT, ______, GU, ______, PREVW, PREVTB, MLT, KUP, MGT, DEL, \ + TAB, GL, GD, GR, NEXTW, NEXTTB, KLEFT, KDOWN, KRIGHT, ______, \ + ______, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, ______, ______, ______, CXU, KC_SPC, TAB, BSP, AU, ______, ______, ______ \ + ), + + [COMBA] = LAYOUT( \ + CQ, CXCG, CMM, CL, APERC, ______, CXCF, CXU, CXCB, ______, \ + MD, CXCS, CT, CMN, MX, ______, ______, CXCC, CXO, CAT, \ + CZ, CX, ______, ______, ______, ______, ______, CK, ______, ______, \ + CZ, ______, ______, ESC, TAB, ZHTG, CCX, ______, ______, ______, ______, ______ \ + ), + + [COMBN] = LAYOUT( \ + ______, CG, ______, CL, ______, AMPR, MCOM, CXU, MDOT, MD, \ + TAB, CS, CT, ______, ______, MSCLN, CLEFT, CCZ, CRIGHT, CAT, \ + ______, CX, CRET, CSPC, ______, MCOM, MDOT, ______, ______, CXU, \ + ______, ______, ______, ______, ______, ______, CJ, ______, ______, ______, ______, ______ \ + ), + + [COMBE] = LAYOUT( \ + CAF7, ______, CUP, ______, ______, DQG, ______, ______, ______, ______, \ + CAF2, CLEFT, CDOWN, CRIGHT, ______, AU, CU, ______, ______, ______, \ + PSCR, ______, ______, ______, ______, ______, ______, ______, ______, ______, \ + ______, ______, ______, ______, ______, KC_SPC, TAB, BSP, ______, ______, ______, ______ \ + ), + + [COMBT] = LAYOUT( \ + GVAL, GEFT, GSF6, ______, ______, AMPR, EXLM, PLUS, ASTR, PIPE, \ + GDV2, ______, ______, ______, GCOD, TILD, EQL, COLN, SCLN, AT, \ + ______, ______, ______, ______, ______, CIRC, MINS, COMM, DOT, SLSH, \ + ______, ______, ______, ______, ______, ______, TAB, DQT, QUOT, ______, ______, ______ \ + ), + + [VAL] = LAYOUT( \ + TAB, KC_Q, KC_W, KC_E, KC_R, KC_F1, KC_F2, KC_F3, KC_F4, ALTZ, \ + KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_5, KC_6, KC_7, KC_8, ALTX, \ + KC_Z, KC_X, KC_B, KC_G, KC_C, SRY, KC_V, KC_Y, KC_T, GUI, \ + KC_M, KC_T, ESC, KC_4, GCTL, KC_SPC, GENT, NICE, TY, GG, NT, DQG \ + ), + + [EFT] = LAYOUT( \ + TAB, KC_Q, KC_W, KC_E, KC_R, KC_1, KC_2, KC_3, KC_4, KC_5, \ + KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_6, KC_7, KC_8, KC_9, KC_0, \ + KC_CAPS,KC_X, KC_C, KC_V, KC_G, KC_O, KC_T, KC_B, KC_N, DEL, \ + KC_Y, KC_L, KC_U, GCTL, GALT, KC_SPC, ESC, ALTZ, REC, KC_U, KC_Z, DQG \ + ), + + [CYBER] = LAYOUT( \ + TAB, KC_Q, KC_W, KC_E, KC_R, ______, KC_M, KC_J, KC_K, ESC, \ + KC_LSFT,KC_A, KC_S, KC_D, KC_F, ______, KC_I, KC_O, KC_P, ______, \ + KC_Z, KC_X, GALT, KC_V, KC_T, ______, ______, ______, KC_V, KC_N, \ + ______, ______, ______, KC_Z, KC_C, KC_SPC, GENT, ALTZ, REC, ______, ______, DQG \ + ), + + /* [BL3] = LAYOUT( \ */ + /* TAB, KC_Q, KC_W, KC_E, KC_R, ______, KC_F5, KC_F6, KC_F7, ESC, \ */ + /* KC_LSFT,KC_A, KC_S, KC_D, KC_F, ______, KC_5, KC_6, KC_7, ______, \ */ + /* GCTL, KC_L, KC_M, KC_I, KC_G, KC_Y, KC_T, KC_B, KC_U, ______, \ */ + /* KC_X, XXXXXX, XXXXXX, KC_V, KC_C, KC_SPC, GENT, ALTZ, REC, XXXXXX, XXXXXX, DQG \ */ + /* ), */ + + /* [R6S] = LAYOUT( \ */ + /* TAB, KC_Q, KC_W, KC_E, KC_R, ______, KC_F5, KC_F6, KC_F7, ALTZ, \ */ + /* KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_U, KC_5, KC_6, KC_7, ALTX, \ */ + /* GALT, KC_Z, GCTL, KC_X, KC_G, KC_Y, KC_B, ______, ______, GUI, \ */ + /* KC_5, KC_6, KC_B, KC_V, KC_C, KC_SPC, GENT, ESC, REC, XXXXXX, ESC, DQG \ */ + /* ), */ + + /* [CH2] = LAYOUT( \ */ + /* TAB, KC_Q, KC_W, KC_E, KC_R, KC_1, KC_2, KC_3, KC_4, ESC, \ */ + /* KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_M, KC_K, KC_N, XXXXXX, XXXXXX, \ */ + /* KC_V, KC_P, KC_M, KC_G, KC_C, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, \ */ + /* KC_1, KC_2, KC_4, KC_5, GCTL, KC_SPC, GENT, KC_F10, TAB, ESC, XXXXXX, DQG \ */ + /* ), */ + + [COD] = LAYOUT( \ + TAB, KC_Q, KC_W, KC_E, KC_R, KC_1, KC_2, KC_3, KC_4, ESC, \ + KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_5, KC_6, KC_7, KC_8, GUI, \ + GCTL, KC_K, KC_M, KC_X, KC_G, KLEFT, KUP, KDOWN, KRIGHT, ______, \ + KC_5, KC_4, KC_3, KC_V, KC_C, KC_SPC, GENT, ALTZ, REC, KC_Y, KC_B, DQG \ + ), + + /* [DAD] = LAYOUT( \ */ + /* TAB, KC_Q, KC_W, KC_E, KC_R, KC_1, KC_2, KC_3, KC_4, ESC, \ */ + /* KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_5, KC_6, KC_7, KC_8, GUI, \ */ + /* GCTL, KC_K, KC_T, KC_X, KC_G, KLEFT, KUP, KDOWN, KRIGHT, ______, \ */ + /* KC_1, KC_2, KC_3, KC_4, KC_V, KC_SPC, GENT, ALTZ, REC, KC_Y, KC_B, DQG \ */ + /* ), */ + + /* [KOC] = LAYOUT( \ */ + /* TAB, KC_Q, KC_W, KC_E, KC_R, ______, ______, ______, ______, ESC, \ */ + /* KC_LSFT,KC_A, KC_S, KC_D, KC_F, ESC, ______, ______, ______, ______, \ */ + /* GCTL, XXXXXX, XXXXXX, XXXXXX, XXXXXX, KC_X, ______, ______, ______, ______, \ */ + /* XXXXXX, XXXXXX, KC_G, GALT, GCTL, KC_SPC, GENT, ALTZ, REC, XXXXXX, XXXXXX, DQG \ */ + /* ), */ + + /* [APEX] = LAYOUT( \ */ + /* TAB, KC_H, KC_W, KC_E, KC_R, KC_1, KC_2, KC_3, KC_4, ESC, \ */ + /* KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_5, KC_6, KC_7, KC_8, GUI, \ */ + /* GCTL, KC_B, KC_F1, KC_X, KC_3, ______, KC_T, KC_B, KC_N, ______, \ */ + /* KC_5, KC_7, KC_M, KC_V, KC_C, KC_SPC, GENT, ALTZ, REC, ______, ______, DQG \ */ + /* ), */ + + /* [SN] = LAYOUT( \ */ + /* TAB, KC_Q, KC_W, KC_E, KC_R, KC_1, KC_2, KC_3, KC_4, KC_5, \ */ + /* KC_LSFT,KC_A, KC_S, KC_D, KC_F, ______, ESC, ______, ______, ______, \ */ + /* KC_1, KC_2, KC_3, KC_4, KC_5, ______, ______, ______, ______, ______, \ */ + /* ESC, XXXXXX, XXXXXX, XXXXXX, KC_C, KC_SPC, GENT, ALTZ, REC, XXXXXX, XXXXXX, DQG \ */ + /* ), */ + + /* [LD] = LAYOUT( \ */ + /* ESC, KC_Q, KC_W, KC_E, KC_R, KC_1, KC_2, KC_3, KC_4, KC_5, \ */ + /* KC_LSFT,KC_A, KC_S, KC_D, KC_I, ______, ESC, ______, ______, ______, \ */ + /* KC_H, KC_4, KC_3, KC_2, KC_1, ______, ______, ______, ______, ______, \ */ + /* TAB, KC_F, KC_J, KC_M, GCTL, KC_SPC, GENT, ALTZ, REC, XXXXXX, XXXXXX, DQG \ */ + /* ), */ + + /* [B4B] = LAYOUT( \ */ + /* TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_U, KC_N, KC_Y, ESC, \ */ + /* KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_1, KC_2, KC_3, KC_4, KC_5, \ */ + /* GCTL, KC_I, KC_3, KC_4, KC_5, ______, ______, ______, ______, ______, \ */ + /* KC_T, KC_K, KC_X, KC_C, KC_V, KC_SPC, GENT, ALTZ, REC, XXXXXX, XXXXXX, DQG \ */ + /* ), */ + + /* [DIV] = LAYOUT( \ */ + /* ESC, KC_Q, KC_W, KC_E, KC_R, KC_G, KC_Q, KC_T, KC_Y, ESC, \ */ + /* KC_LSFT,KC_A, KC_S, KC_D, KC_F, KC_V, KC_I, KC_M, KC_H, KC_J, \ */ + /* TAB, KC_X, KC_C, KC_I, KC_G, ______, ______, ______, ______, ______, \ */ + /* KC_Z, KC_H, KC_M, KC_V, GCTL, KC_SPC, GENT, ALTZ, ESC, ______, ______, DQG \ */ + /* ), */ + + /* [DB3] = LAYOUT( \ */ + /* KC_1, KC_2, KC_3, KC_4, KC_5, KC_1, KC_2, KC_3, KC_4, KC_5, \ */ + /* KC_L, KC_S, KC_Q, KC_I, KC_F, ______, ESC, ______, ______, ______, \ */ + /* KC_LSFT,KC_Z, KC_M, KC_C, TAB, ______, ______, ______, ______, ______, \ */ + /* ESC, XXXXXX, XXXXXX, KC_V, TAB, KC_SPC, GENT, ALTZ, REC, XXXXXX, XXXXXX, DQG \ */ + /* ), */ + + [SF6] = LAYOUT( \ + XXXXXX, KC_Q, XXXXXX, KC_E, KC_R, KC_Y, KC_U, KC_I, KC_O, XXXXXX, \ + KC_B, KC_A, KC_S, KC_D, KC_F, KC_G, KC_J, KC_K, KC_L, KC_U, \ + KC_Z, KC_X, KC_C, XXXXXX, XXXXXX, XXXXXX, XXXXXX, KC_N, KC_M, KC_T, \ + TAB, XXXXXX, XXXXXX, ESC, KC_B, KC_W, KC_P, KC_H, ALTZ, REC, XXXXXX, DQG \ + ), + +}; + + +void matrix_init_user(void) { +} + +void persistent_default_layer_set(uint16_t default_layer) { + eeconfig_update_default_layer(default_layer); + default_layer_set(default_layer); +} + +bool process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case CXCF: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xf")); + } + break; + case CXCB: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xb")); + } + break; + case CXCS: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xs")); + } + break; + case CXCC: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xc")); + } + break; + case CXCG: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("xg")); + } + break; + case CXO: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("x") "o"); + } + break; + case CXU: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("x") "u"); + } + break; + case CCN: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "n"); + } + break; + case CCP: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "p"); + } + break; + case CCZ: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "z"); + } + break; + case CCX: + if (record->event.pressed) { + SEND_STRING(SS_LCTL("c") "x"); + } + break; + case NICE: + if (record->event.pressed) { + SEND_STRING("n" "c"); + } + break; + case GG: + if (record->event.pressed) { + SEND_STRING("g" "g"); + } + break; + case TY: + if (record->event.pressed) { + SEND_STRING("t" "y"); + } + break; + case NT: + if (record->event.pressed) { + SEND_STRING("n" "t"); + } + break; + case SRY: + if (record->event.pressed) { + SEND_STRING("s" "r" "y"); + } + break; + case RDR: + if (record->event.pressed) { + SEND_STRING(SS_TAP(X_D)); + SEND_STRING(SS_TAP(X_D)); + } + break; + case LDR: + if (record->event.pressed) { + SEND_STRING(SS_TAP(X_A)); + SEND_STRING(SS_TAP(X_A)); + } + break; + } + return true; +} + + +#ifdef OLED_DRIVER_ENABLE +bool change; +void post_process_record_user(uint16_t keycode, keyrecord_t *record) { + switch (keycode) { + case GVAL: + if (!change) { + change = true; + oled_write("VALORANT\n", false); + } + break; + case GDAD: + if (!change) { + change = true; + oled_write("DARK AND DARKER\n", false); + } + break; + case GCH2: + if (!change) { + change = true; + oled_write("CHIVALRY 2\n", false); + } + break; + case GCYB: + if (!change) { + change = true; + oled_write("CYBER PUNK 2077\n", false); + } + break; + case GBL3: + if (!change) { + change = true; + oled_write("BORDERLANDS 3\n", false); + } + break; + case GSN: + if (!change) { + change = true; + oled_write("SUBNAUTICA \n", false); + } + break; + case GEFT: + if (!change) { + change = true; + oled_write("ESCAPE FROM TARKOV\n", false); + } + break; + case GCOD: + if (!change) { + change = true; + oled_write("CALL OF DUTY\n", false); + } + break; + case GR6S: + if (!change) { + change = true; + oled_write("RAIBOW SIX SIEGE \n", false); + } + break; + case GB4B: + if (!change) { + change = true; + oled_write("BACK 4 BLOOD \n", false); + } + break; + case GLD: + if (!change) { + change = true; + oled_write("LONG DARK \n", false); + } + break; + case GDV2: + if (!change) { + change = true; + oled_write("DIVISION 2 \n", false); + } + break; + case GAPEX: + if (!change) { + change = true; + oled_write("APEX LEGENDS\n", false); + } + break; + case GDB3: + if (!change) { + change = true; + oled_write("DIABLO 3\n", false); + } + break; + case GSF6M: + if (!change) { + change = true; + oled_write("STREET FIGHTER 6\n", false); + } + break; + case DQG: + oled_clear(); + change = false; + break; + } +} + + +char layer_state_str[64]; + +const char *read_layer_state(void) { + if (change) { + return ""; + } + uint8_t layer = biton32(layer_state); + switch (layer) + { + case QGMLWY: + if (!change) { + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: QGMLWY\n"); + } + break; + case LOWER: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: LOWER\n"); + break; + case RAISE: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: RAISE\n"); + break; + case MISCR: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: MISCR\n"); + break; + case MISCL: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: MISCL\n"); + break; + case COMBA: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: COMBA\n"); + break; + case COMBN: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: COMBN\n"); + break; + case COMBE: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: COMBE\n"); + break; + case COMBT: + snprintf(layer_state_str, sizeof(layer_state_str), "Layer: COMBT\n"); + break; + default: + oled_clear(); + //snprintf(layer_state_str, sizeof(layer_state_str), "Layer: Undef-%d", layer); + break; + } + + return layer_state_str; +} + +const char *read_logo(void) { + static char logo[] = { + 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f, 0x90, 0x91, 0x92, 0x93, 0x94, + 0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf, 0xb0, 0xb1, 0xb2, 0xb3, 0xb4, + 0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, 0xd0, 0xd1, 0xd2, 0xd3, 0xd4, + 0}; + return logo; +} + +void oled_task_user(void) { + if (is_keyboard_master()) { + oled_write_ln(read_layer_state(), false); + } else { + oled_write_ln(read_layer_state(), false); + } +} +#endif diff --git a/keyboards/uzu42/keymaps/mopemope/rules.mk b/keyboards/uzu42/keymaps/mopemope/rules.mk new file mode 100644 index 000000000000..2e787bb0173c --- /dev/null +++ b/keyboards/uzu42/keymaps/mopemope/rules.mk @@ -0,0 +1,20 @@ +TAP_DANCE_ENABLE = no +RGBLIGHT_ENABLE = no +OLED_DRIVER_ENABLE = no +NKRO_ENABLE = yes +FORCE_NKRO = yes +#DEBOUNCE_TYPE = sym_eager_pk +DEBOUNCE_TYPE = asym_eager_defer_pk +#DEBOUNCE_TYPE = sym_defer_g +MOUSEKEY_ENABLE = no +EXTRAKEY_ENABLE = no +LEADER_ENABLE = no +MIDI_ENABLE = no +LTO_ENABLE = yes +CONSOLE_ENABLE = no +COMMAND_ENABLE = no +SPACE_CADET_ENABLE = no +GRAVE_ESC_ENABLE = no +BOOTMAGIC_ENABLE = yes +MAGIC_ENABLE = yes +MUSIC_ENABLE = no