summaryrefslogtreecommitdiff
path: root/keyboards/keychron/q1v1/iso/keymaps
diff options
context:
space:
mode:
Diffstat (limited to 'keyboards/keychron/q1v1/iso/keymaps')
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/default/keymap.c61
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/keychron/keymap.c67
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/keychron/rules.mk4
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/kubahorak/README.md16
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/kubahorak/config.h25
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/kubahorak/keymap.c66
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/kubahorak/keymap_user.h28
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/kubahorak/rgb_matrix_user.c76
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/kubahorak/rgb_matrix_user.h24
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/kubahorak/rules.mk6
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/config.h23
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/keymap.c153
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/keymap_user.h33
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/readme.md54
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rgb_matrix_user.c84
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rgb_matrix_user.h26
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rules.mk6
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/via/keymap.c61
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/via/rules.mk1
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/victorsavu3/config.h69
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/victorsavu3/keymap.c146
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/victorsavu3/readme.md4
-rw-r--r--keyboards/keychron/q1v1/iso/keymaps/victorsavu3/rules.mk3
23 files changed, 1036 insertions, 0 deletions
diff --git a/keyboards/keychron/q1v1/iso/keymaps/default/keymap.c b/keyboards/keychron/q1v1/iso/keymaps/default/keymap.c
new file mode 100644
index 0000000000..080e2839c8
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/default/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_iso_83(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_iso_83(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+ };
diff --git a/keyboards/keychron/q1v1/iso/keymaps/keychron/keymap.c b/keyboards/keychron/q1v1/iso/keymaps/keychron/keymap.c
new file mode 100644
index 0000000000..d641f62c3f
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/keychron/keymap.c
@@ -0,0 +1,67 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "keychron_common.h"
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD,MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_iso_83(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_iso_83(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ if (!process_record_keychron(keycode, record)) {
+ return false;
+ }
+
+ return true;
+}
diff --git a/keyboards/keychron/q1v1/iso/keymaps/keychron/rules.mk b/keyboards/keychron/q1v1/iso/keymaps/keychron/rules.mk
new file mode 100644
index 0000000000..495e8907b4
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/keychron/rules.mk
@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c
diff --git a/keyboards/keychron/q1v1/iso/keymaps/kubahorak/README.md b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/README.md
new file mode 100644
index 0000000000..3cfae17543
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/README.md
@@ -0,0 +1,16 @@
+# kubahorak's Keychron Q1 keymap
+
+This ISO layout got heavily inspired by gtg465x's ANSI keymap (rev_0100).
+
+Features:
+- The rightest key column is: Ins, Home, PgUp, PgDn, which differs from the default.
+- RGB lighting turns off when the computer sleeps
+- Caps Lock and alpha keys turn red to indicate when Caps Lock is on
+- When the Fn layer is active, RGB lighting turns off for keys that are not assigned
+
+## Changelog
+
+### 2021-10-17 - 1.0.0
+
+- Initial release
+
diff --git a/keyboards/keychron/q1v1/iso/keymaps/kubahorak/config.h b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/config.h
new file mode 100644
index 0000000000..55dbb74d4a
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/config.h
@@ -0,0 +1,25 @@
+/* Copyright 2021 Jakub Horak (@kubahorak)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#ifdef RGB_MATRIX_ENABLE
+/* from rev_0100/keymaps/gtg465x */
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
+# define CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
+# define FN_LAYER_TRANSPARENT_KEYS_OFF
+#endif
diff --git a/keyboards/keychron/q1v1/iso/keymaps/kubahorak/keymap.c b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/keymap.c
new file mode 100644
index 0000000000..479988dfa9
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/keymap.c
@@ -0,0 +1,66 @@
+/* Copyright 2021 Jakub Horak (@kubahorak)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "keymap_user.h"
+#ifdef RGB_MATRIX_ENABLE
+# include "rgb_matrix_user.h"
+#endif
+
+// clang-format off
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [0] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(1), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [1] = LAYOUT_iso_83(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ ),
+ [2] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_HOME,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(3), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
+ ),
+ [3] = LAYOUT_iso_83(
+ KC_TRNS, KC_BRID, KC_BRIU, LGUI(KC_TAB), LGUI(KC_E), RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P7, KC_P8, KC_P9, KC_PSLS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_P4, KC_P5, KC_P6, KC_PAST, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_P1, KC_P2, KC_P3, KC_PMNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_P0, KC_PDOT, KC_PENT, KC_PPLS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
+ )
+};
+
+// clang-format on
+
+void matrix_init_user(void) {
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_init_user();
+#endif
+}
diff --git a/keyboards/keychron/q1v1/iso/keymaps/kubahorak/keymap_user.h b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/keymap_user.h
new file mode 100644
index 0000000000..728114d556
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/keymap_user.h
@@ -0,0 +1,28 @@
+/* Copyright 2021 @ Grayson Carr
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// clang-format off
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+// clang-format on
diff --git a/keyboards/keychron/q1v1/iso/keymaps/kubahorak/rgb_matrix_user.c b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/rgb_matrix_user.c
new file mode 100644
index 0000000000..638aa77eb0
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/rgb_matrix_user.c
@@ -0,0 +1,76 @@
+/* Copyright 2021 @ Grayson Carr
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "rgb_matrix_user.h"
+#include "keymap_user.h"
+
+keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
+
+void rgb_matrix_init_user(void) {
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ uint8_t led_index = g_led_config.matrix_co[row][col];
+ if (led_index != NO_LED) {
+ led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
+ }
+ }
+ }
+}
+
+bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ uint8_t current_layer = get_highest_layer(layer_state);
+ switch (current_layer) {
+ case MAC_BASE:
+ case WIN_BASE:
+#ifdef CAPS_LOCK_INDICATOR_COLOR
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
+ }
+#endif
+ break;
+ case MAC_FN:
+ case WIN_FN:
+#ifdef FN_LAYER_TRANSPARENT_KEYS_OFF
+ rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
+#endif
+ break;
+ }
+ return false;
+}
+
+void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
+ for (uint8_t i = led_min; i < led_max; i++) {
+ uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
+ if ((*is_keycode)(keycode)) {
+ rgb_matrix_set_color(i, red, green, blue);
+ }
+ }
+}
+
+bool is_caps_lock_indicator(uint16_t keycode) {
+ switch (keycode) {
+#ifdef CAPS_LOCK_INDICATOR_LIGHT_ALPHAS
+ case KC_A ... KC_Z:
+#endif
+ case KC_CAPS:
+ return true;
+ default:
+ return false;
+ }
+}
+
+bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
diff --git a/keyboards/keychron/q1v1/iso/keymaps/kubahorak/rgb_matrix_user.h b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/rgb_matrix_user.h
new file mode 100644
index 0000000000..dead454167
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/rgb_matrix_user.h
@@ -0,0 +1,24 @@
+/* Copyright 2021 @ Grayson Carr
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+void rgb_matrix_init_user(void);
+
+void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
+
+bool is_caps_lock_indicator(uint16_t keycode);
+bool is_transparent(uint16_t keycode);
diff --git a/keyboards/keychron/q1v1/iso/keymaps/kubahorak/rules.mk b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/rules.mk
new file mode 100644
index 0000000000..af720e37ee
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/kubahorak/rules.mk
@@ -0,0 +1,6 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no
+
+ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
+ SRC += rgb_matrix_user.c
+endif \ No newline at end of file
diff --git a/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/config.h b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/config.h
new file mode 100644
index 0000000000..bc9fe405c3
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/config.h
@@ -0,0 +1,23 @@
+/* Copyright 2021 @ Mike Killewald
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+#ifdef RGB_MATRIX_ENABLE
+# define RGB_DISABLE_WHEN_USB_SUSPENDED
+# define CAPS_LOCK_INDICATOR_COLOR RGB_RED
+# define FN_LAYER_COLOR RGB_ORANGE
+#endif \ No newline at end of file
diff --git a/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/keymap.c b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/keymap.c
new file mode 100644
index 0000000000..f86a84e468
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/keymap.c
@@ -0,0 +1,153 @@
+/* Copyright 2021 @ Mike Killewald
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "keymap_user.h"
+#ifdef RGB_MATRIX_ENABLE
+# include "rgb_matrix_user.h"
+#endif
+
+// clang-format off
+
+typedef union {
+ uint32_t raw;
+ struct {
+ bool caps_lock_light_tab :1;
+ bool caps_lock_light_alphas :1;
+ bool fn_layer_transparent_keys_off :1;
+ bool fn_layer_color_enable :1;
+ };
+} user_config_t;
+
+user_config_t user_config;
+
+enum custom_keycodes {
+ KC_LIGHT_TAB_TOGGLE = QK_KB_2, // TECH DEBT: Starts at QK_KB_2 to maintain ordering with VIA definitions. See #19884. Revert to QK_KB_0 when VIA catches up with QMK.
+ KC_LIGHT_ALPHAS_TOGGLE,
+ KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE,
+ KC_FN_LAYER_COLOR_TOGGLE
+};
+
+#define KC_LTTOG KC_LIGHT_TAB_TOGGLE
+#define KC_LATOG KC_LIGHT_ALPHAS_TOGGLE
+#define KC_TKTOG KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE
+#define KC_FCTOG KC_FN_LAYER_COLOR_TOGGLE
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[MAC_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[WIN_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[WIN_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_LTTOG, KC_LATOG, KC_TKTOG, KC_FCTOG, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
+
+};
+
+// clang-format on
+
+void matrix_init_user(void) {
+#ifdef RGB_MATRIX_ENABLE
+ rgb_matrix_init_user();
+#endif
+}
+
+void keyboard_post_init_user(void) {
+ user_config.raw = eeconfig_read_user();
+}
+
+void eeconfig_init_user(void) {
+ user_config.raw = 0;
+ user_config.caps_lock_light_tab = false;
+ user_config.caps_lock_light_alphas = false;
+ user_config.fn_layer_transparent_keys_off = true;
+ user_config.fn_layer_color_enable = false;
+ eeconfig_update_user(user_config.raw);
+}
+
+bool process_record_user(uint16_t keycode, keyrecord_t *record) {
+ switch (keycode) {
+ case KC_LIGHT_TAB_TOGGLE:
+ if (record->event.pressed) {
+ user_config.caps_lock_light_tab ^= 1; // bitwise xor to toggle status bit
+ eeconfig_update_user(user_config.raw);
+ }
+ return false; // Skip all further processing of this key
+ case KC_LIGHT_ALPHAS_TOGGLE:
+ if (record->event.pressed) {
+ user_config.caps_lock_light_alphas ^= 1;
+ eeconfig_update_user(user_config.raw);
+ }
+ return false; // Skip all further processing of this key
+ case KC_FN_LAYER_TRANSPARENT_KEYS_TOGGLE:
+ if (record->event.pressed) {
+ user_config.fn_layer_transparent_keys_off ^= 1;
+ eeconfig_update_user(user_config.raw);
+ }
+ return false; // Skip all further processing of this key
+ case KC_FN_LAYER_COLOR_TOGGLE:
+ if (record->event.pressed) {
+ user_config.fn_layer_color_enable ^= 1;
+ eeconfig_update_user(user_config.raw);
+ }
+ return false; // Skip all further processing of this key
+ default:
+ return true; // Process all other keycodes normally
+ }
+}
+
+bool get_caps_lock_light_tab(void) {
+ return user_config.caps_lock_light_tab;
+}
+
+bool get_caps_lock_light_alphas(void) {
+ return user_config.caps_lock_light_alphas;
+}
+
+bool get_fn_layer_transparent_keys_off(void) {
+ return user_config.fn_layer_transparent_keys_off;
+}
+
+bool get_fn_layer_color_enable(void) {
+ return user_config.fn_layer_color_enable;
+}
diff --git a/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/keymap_user.h b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/keymap_user.h
new file mode 100644
index 0000000000..87b1baf47f
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/keymap_user.h
@@ -0,0 +1,33 @@
+/* Copyright 2021 @ Mike Killewald
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// clang-format off
+
+enum layers {
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+// clang-format on
+
+bool get_caps_lock_light_tab(void);
+bool get_caps_lock_light_alphas(void);
+bool get_fn_layer_transparent_keys_off(void);
+bool get_fn_layer_color_enable(void); \ No newline at end of file
diff --git a/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/readme.md b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/readme.md
new file mode 100644
index 0000000000..25d835b1c0
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/readme.md
@@ -0,0 +1,54 @@
+## mkillewald's Keychron Q1 keymap (ISO rev_0102) v1.0.4
+
+This keymap builds on the keymap by Grayson Carr (gtg465x) but adds a couple options.
+
+## Features:
+- On macOS, F3 opens Mission Control and F4 opens Launchpad without needing to configure shortcuts in System Preferences
+- RGB lighting turns off when the computer sleeps
+- Caps Lock RGB indicator
+ - the Caps Lock key will light when Caps Lock is enabled with the following options:
+ - #define CAPS_LOCK_INDICATOR_COLOR [color] in config.h to set the backlight color used for the indicator when Caps Lock is enabled (default: red)
+ - Fn+Z will toggle lighting the TAB key when Caps Lock is enabled. This is useful with non backlit keycaps/legends. (default: off)
+ - Fn+X will toggle lighting all the alpha keys when Caps Lock is enabled. (default: off)
+
+- Dynamic Fn layer RGB indicator
+ - When the Fn key is held down, any keys defined on the Fn layer in this firmware or in VIA will be highlighted with the following options:
+ - #define FN_LAYER_COLOR [color] in config.h to set a static color for defined keys (default: orange)
+ - Fn+C will toggle turning off RGB for keys with no definition (default: RGB off)
+ - Fn+V will toggle lighting the defined Fn layer keys with the static color set with FN_LAYER_COLOR (default: static color off)
+
+- All custom keycodes can be moved to different keys in VIA by using the ANY key with the following keycodes:
+ - USER(0) (default: F3) macOS Mission Control
+ - USER(1) (default: F4) macOS Launchpad
+ - USER(2) (default: Fn+Z) Caps Lock light Tab toggle
+ - USER(3) (default: Fn+X) Caps Lock light alphas toggle
+ - USER(4) (default: Fn+C) Fn layer non-defined keys RGB toggle
+ - USER(5) (default: Fn+V) Fn layer defined keys static color toggle
+
+RGB must be toggled on for all indicators to function. If you do not want an RGB mode active but still want the indicators, toggle RGB on and turn the brightness all the way off. The indicators will remain at full brightness.
+
+Please make sure to save any customizations you have made in VIA to a .json file before flashing the firmware. Sometimes it has been necessary to re-apply those changes in VIA after flashing the firmware. If that is the case, you will most likely need to manually add the USER(0) through USER(5) custom keycodes after loading your customizations from the saved .json file. Then re-save a new .json file which will have your previous customizations and the custom keycodes for future use as needed.
+
+#### USE AT YOUR OWN RISK
+
+## Changelog:
+
+v1.0.4 October 9, 2021
+- Caps Lock and Fn layer toggles are now stored in eeprom so settings will remain when Q1 is unplugged
+
+v1.0.3 October 8, 2021
+- now using keycode toggles instead of preprocessor directives to set the various Caps Lock and Fn Layer RGB lighting options. This allows for setting the options from user space without having to recompile.
+
+v1.0.2 October 7, 2021
+- adapted Grayson Carr's (gtg465x) Caps Lock alphas and dynamic Fn layer RGB routines
+- added CAPS_LOCK_INDICATOR_LIGHT_TAB config option to enable/disable lighting Tab with Caps Lock indicator
+- added FN_LAYER_COLOR config option to set FN layer static color
+
+v1.0.1 October 7, 2021
+- Mission Control and Launchpad custom keycodes are now defined using the VIA user keycodes range so thay can be labeled properly in VIA (adopted change from gtg465x)
+
+v1.0.0 September 30, 2021
+- Initial release built upon keymap by Grayson Carr (gtg465x)
+- defined Mission Control (F3) and Launchpad (F4) keycodes for macOs
+- RGB backlight turns off when computer sleeps
+- added Caps Lock indicator lighting both the Caps Lock and Tab LEDs for better effect on non-backlit keycaps
diff --git a/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rgb_matrix_user.c b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rgb_matrix_user.c
new file mode 100644
index 0000000000..c6fa5f1f15
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rgb_matrix_user.c
@@ -0,0 +1,84 @@
+/* Copyright 2021 @ Mike Killewald
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+#include "rgb_matrix_user.h"
+#include "keymap_user.h"
+
+keypos_t led_index_key_position[RGB_MATRIX_LED_COUNT];
+
+void rgb_matrix_init_user(void) {
+ for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
+ for (uint8_t col = 0; col < MATRIX_COLS; col++) {
+ uint8_t led_index = g_led_config.matrix_co[row][col];
+ if (led_index != NO_LED) {
+ led_index_key_position[led_index] = (keypos_t){.row = row, .col = col};
+ }
+ }
+ }
+}
+
+bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
+ uint8_t current_layer = get_highest_layer(layer_state);
+ switch (current_layer) {
+ case MAC_BASE:
+ case WIN_BASE:
+#ifdef CAPS_LOCK_INDICATOR_COLOR
+ if (host_keyboard_led_state().caps_lock) {
+ rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_caps_lock_indicator, CAPS_LOCK_INDICATOR_COLOR);
+ }
+#endif
+ break;
+ case MAC_FN:
+ case WIN_FN:
+#ifdef FN_LAYER_COLOR
+ if (get_fn_layer_color_enable()) {
+ rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_not_transparent, FN_LAYER_COLOR);
+ }
+#endif
+ if (get_fn_layer_transparent_keys_off()) {
+ rgb_matrix_set_color_by_keycode(led_min, led_max, current_layer, is_transparent, RGB_OFF);
+ }
+ break;
+ }
+ return false;
+}
+
+void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue) {
+ for (uint8_t i = led_min; i < led_max; i++) {
+ uint16_t keycode = keymap_key_to_keycode(layer, led_index_key_position[i]);
+ if ((*is_keycode)(keycode)) {
+ rgb_matrix_set_color(i, red, green, blue);
+ }
+ }
+}
+
+bool is_caps_lock_indicator(uint16_t keycode) {
+ bool indicator = keycode == KC_CAPS;
+
+ if (get_caps_lock_light_tab()) {
+ indicator = keycode == KC_TAB || keycode == KC_CAPS;
+ }
+
+ if (get_caps_lock_light_alphas()) {
+ return (KC_A <= keycode && keycode <= KC_Z) || indicator;
+ } else {
+ return indicator;
+ }
+}
+
+bool is_transparent(uint16_t keycode) { return keycode == KC_TRNS; }
+bool is_not_transparent(uint16_t keycode) { return keycode != KC_TRNS; }
diff --git a/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rgb_matrix_user.h b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rgb_matrix_user.h
new file mode 100644
index 0000000000..1fb79c0b2a
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rgb_matrix_user.h
@@ -0,0 +1,26 @@
+/* Copyright 2021 @ Mike Killewald
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+void rgb_matrix_init_user(void);
+
+void rgb_matrix_set_color_by_keycode(uint8_t led_min, uint8_t led_max, uint8_t layer, bool (*is_keycode)(uint16_t), uint8_t red, uint8_t green, uint8_t blue);
+
+bool is_caps_lock_indicator(uint16_t keycode);
+bool is_transparent(uint16_t keycode);
+bool is_not_transparent(uint16_t keycode);
+
diff --git a/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rules.mk b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rules.mk
new file mode 100644
index 0000000000..af720e37ee
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/mkillewald_iso/rules.mk
@@ -0,0 +1,6 @@
+VIA_ENABLE = yes
+MOUSEKEY_ENABLE = no
+
+ifeq ($(strip $(RGB_MATRIX_ENABLE)), yes)
+ SRC += rgb_matrix_user.c
+endif \ No newline at end of file
diff --git a/keyboards/keychron/q1v1/iso/keymaps/via/keymap.c b/keyboards/keychron/q1v1/iso/keymaps/via/keymap.c
new file mode 100644
index 0000000000..4d9f158e1e
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/via/keymap.c
@@ -0,0 +1,61 @@
+/* Copyright 2021 @ Keychron (https://www.keychron.com)
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+ [MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [MAC_FN] = LAYOUT_iso_83(
+ _______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
+
+ [WIN_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LWIN, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+ [WIN_FN] = LAYOUT_iso_83(
+ _______, KC_BRID, KC_BRIU, KC_TASK, KC_FLXP, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, _______, _______, _______, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, _______,
+ _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
+};
diff --git a/keyboards/keychron/q1v1/iso/keymaps/via/rules.mk b/keyboards/keychron/q1v1/iso/keymaps/via/rules.mk
new file mode 100644
index 0000000000..1e5b99807c
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/via/rules.mk
@@ -0,0 +1 @@
+VIA_ENABLE = yes
diff --git a/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/config.h b/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/config.h
new file mode 100644
index 0000000000..02f08db4a7
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/config.h
@@ -0,0 +1,69 @@
+/* Copyright 2021 @ Victor-Gabriel Savu
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#pragma once
+
+// disable all default effects
+#undef ENABLE_RGB_MATRIX_BREATHING
+#undef ENABLE_RGB_MATRIX_CYCLE_ALL
+#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
+#undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
+#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
+#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
+#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
+#undef ENABLE_RGB_MATRIX_DUAL_BEACON
+#undef ENABLE_RGB_MATRIX_RAINBOW_BEACON
+#undef ENABLE_RGB_MATRIX_RAINDROPS
+#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+#undef ENABLE_RGB_MATRIX_SPLASH
+#undef ENABLE_RGB_MATRIX_MULTISPLASH
+#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
+#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
+
+// Allow fancy RGB
+#define RGB_MATRIX_KEYPRESSES
+#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
+
+// Simple RGB
+#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
+
+// Reactive RGB
+#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
+
+#define RGB_MATRIX_DEFAULT_MODE RGB_MATRIX_TYPING_HEATMAP
+
+#define RGB_MATRIX_TYPING_HEATMAP_DECREASE_DELAY_MS 50
+
+// Unicode for Linux
+#define UNICODE_SELECTED_MODES UNICODE_MODE_LINUX
+#define UNICODE_KEY_LNX LCTL(LSFT(KC_U))
+
+// Leader config
+#define LEADER_PER_KEY_TIMING
+#define LEADER_TIMEOUT 500
diff --git a/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/keymap.c b/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/keymap.c
new file mode 100644
index 0000000000..5256c97dca
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/keymap.c
@@ -0,0 +1,146 @@
+/* Copyright 2021 @ Victor-Gabriel Savu
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include QMK_KEYBOARD_H
+
+enum layers{
+ MAC_BASE,
+ MAC_FN,
+ WIN_BASE,
+ WIN_FN
+};
+
+#define KC_TASK LGUI(KC_TAB)
+#define KC_FLXP LGUI(KC_E)
+
+enum unicode_names {
+ GRIN,
+ SAD,
+};
+
+const uint32_t unicode_map[] PROGMEM = {
+ [GRIN] = 0x1F600, // ๐Ÿ˜€
+ [SAD] = 0x1F61E, // ๐Ÿ˜ž
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+
+[MAC_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_BRID, KC_BRIU, KC_F3, KC_F4, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_INS,
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_PGUP,
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGDN,
+ KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[MAC_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS),
+
+[WIN_BASE] = LAYOUT_iso_83(
+ KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, UM(SAD),
+ KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, UM(GRIN),
+ KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
+ QK_LEAD, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGDN,
+ KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
+ KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN),KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
+
+[WIN_FN] = LAYOUT_iso_83(
+ KC_TRNS, KC_BRID, KC_BRIU, KC_CALC, KC_FLXP, RGB_VAD, RGB_VAI, KC_TRNS, KC_PSCR, KC_MUTE, KC_VOLD, KC_VOLU, KC_MPLY, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ RGB_TOG, RGB_MOD, RGB_VAI, RGB_HUI, RGB_SAI, RGB_SPI, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_CAPS, RGB_RMOD, RGB_VAD, RGB_HUD, RGB_SAD, RGB_SPD, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP,
+ KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGDN, KC_END)
+
+};
+
+static bool wiggle_mouse;
+static uint16_t wiggle_timer;
+static uint16_t next_wiggle;
+
+void leader_end_user(void) {
+ if (leader_sequence_one_key(QK_LEAD)) {
+ tap_code(KC_CAPS);
+ }
+
+ if (leader_sequence_four_keys(KC_I, KC_D, KC_L, KC_E)) {
+ wiggle_mouse = !wiggle_mouse;
+ wiggle_timer = timer_read();
+ }
+
+ if (leader_sequence_two_keys(KC_O, KC_K)) {
+ send_unicode_string("๐Ÿ‘");
+ }
+
+ if (leader_sequence_three_keys(KC_S, KC_A, KC_D)) {
+ send_unicode_string("๐Ÿ˜ž");
+ }
+
+ if (leader_sequence_five_keys(KC_C, KC_H, KC_E, KC_C, KC_K)) {
+ send_unicode_string("โœ…");
+ }
+
+ if (leader_sequence_five_keys(KC_C, KC_R, KC_O, KC_S, KC_S)) {
+ send_unicode_string("โŽ");
+ }
+
+ if (leader_sequence_five_keys(KC_T, KC_H, KC_A, KC_N, KC_K)) {
+ send_unicode_string("๐Ÿ™");
+ }
+
+ if (leader_sequence_five_keys(KC_S, KC_M, KC_I, KC_L, KC_E)) {
+ send_unicode_string("๐Ÿ˜Š");
+ }
+
+ if (leader_sequence_five_keys(KC_P, KC_A, KC_R, KC_T, KC_Y)) {
+ send_unicode_string("๐ŸŽ‰");
+ }
+
+ if (leader_sequence_four_keys(KC_E, KC_Y, KC_E, KC_S)) {
+ send_unicode_string("(เฒ _เฒ )");
+ }
+
+ if (leader_sequence_five_keys(KC_M, KC_A, KC_G, KC_I, KC_C)) {
+ send_unicode_string("(เฒ _เฒ ) ๐Ÿช„ โ โญ’*.โœซ.*โญ’โ ");
+ }
+
+ if (leader_sequence_five_keys(KC_T, KC_A, KC_B, KC_L, KC_E)) {
+ send_unicode_string("(ใƒŽเฒ ็—Šเฒ )ใƒŽๅฝกโ”ปโ”โ”ป");
+ }
+
+ if (leader_sequence_five_keys(KC_S, KC_H, KC_R, KC_U, KC_G)) {
+ send_unicode_string("ยฏ\\_(ใƒ„)_/ยฏ");
+ }
+}
+
+void matrix_scan_user(void) {
+ if (wiggle_mouse && timer_elapsed(wiggle_timer) > next_wiggle) {
+ wiggle_timer = timer_read();
+
+ uint8_t rval = TCNT0 + TCNT1 + TCNT3 + TCNT4;
+ next_wiggle = rval % 1000;
+
+ if (rval & 1) tap_code(KC_MS_UP);
+ if (rval & 2) tap_code(KC_MS_DOWN);
+ if (rval & 4) tap_code(KC_MS_LEFT);
+ if (rval & 8) tap_code(KC_MS_RIGHT);
+ }
+}
diff --git a/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/readme.md b/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/readme.md
new file mode 100644
index 0000000000..c96130816e
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/readme.md
@@ -0,0 +1,4 @@
+# victorsavu3's Keychron Q1 keymap (ISO)
+
+Very similar to the default layout. Enables reactive and framebuffer RGB, but disables most effects enabled by keychron.
+Uses Caps Lock as a leader key for emojis and to enable a random mouse wiggler to prevent the system from going to sleep.
diff --git a/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/rules.mk b/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/rules.mk
new file mode 100644
index 0000000000..853c414ec7
--- /dev/null
+++ b/keyboards/keychron/q1v1/iso/keymaps/victorsavu3/rules.mk
@@ -0,0 +1,3 @@
+MOUSEKEY_ENABLE = yes
+UNICODEMAP_ENABLE = yes
+LEADER_ENABLE = yes