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