فهرست منبع

Update Q1 and Q2 for keychron (#18713)

Co-authored-by: Drashna Jaelre <drashna@live.com>
Co-authored-by: jpe230 <pablin.123.ra@gmail.com>
lalalademaxiya1 2 سال پیش
والد
کامیت
1215fc2a78
100فایلهای تغییر یافته به همراه1077 افزوده شده و 1089 حذف شده
  1. 7 0
      keyboards/keychron/common/keychron_common.h
  2. 28 21
      keyboards/keychron/q1/ansi/ansi.c
  3. 19 0
      keyboards/keychron/q1/ansi/ansi.h
  4. 0 0
      keyboards/keychron/q1/ansi/config.h
  5. 104 0
      keyboards/keychron/q1/ansi/info.json
  6. 61 0
      keyboards/keychron/q1/ansi/keymaps/default/keymap.c
  7. 0 0
      keyboards/keychron/q1/ansi/keymaps/gtg465x/README.md
  8. 0 0
      keyboards/keychron/q1/ansi/keymaps/gtg465x/config.h
  9. 0 0
      keyboards/keychron/q1/ansi/keymaps/gtg465x/keymap.c
  10. 0 0
      keyboards/keychron/q1/ansi/keymaps/gtg465x/keymap_user.h
  11. 0 0
      keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.c
  12. 0 0
      keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.h
  13. 0 0
      keyboards/keychron/q1/ansi/keymaps/gtg465x/rules.mk
  14. 23 45
      keyboards/keychron/q1/ansi/keymaps/keychron/keymap.c
  15. 4 0
      keyboards/keychron/q1/ansi/keymaps/keychron/rules.mk
  16. 0 0
      keyboards/keychron/q1/ansi/keymaps/mkillewald/config.h
  17. 0 0
      keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap.c
  18. 0 0
      keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap_user.h
  19. 0 0
      keyboards/keychron/q1/ansi/keymaps/mkillewald/readme.md
  20. 0 0
      keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.c
  21. 0 0
      keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.h
  22. 0 0
      keyboards/keychron/q1/ansi/keymaps/mkillewald/rules.mk
  23. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/config.h
  24. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/keymap.c
  25. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/keymap_user.h
  26. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/readme.md
  27. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.c
  28. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.h
  29. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/rules.mk
  30. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.c
  31. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.h
  32. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.c
  33. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.h
  34. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_user.c
  35. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.c
  36. 0 0
      keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.h
  37. 61 0
      keyboards/keychron/q1/ansi/keymaps/via/keymap.c
  38. 1 0
      keyboards/keychron/q1/ansi/keymaps/via/rules.mk
  39. 0 0
      keyboards/keychron/q1/ansi/readme.md
  40. 1 0
      keyboards/keychron/q1/ansi/rules.mk
  41. 30 38
      keyboards/keychron/q1/ansi_encoder/ansi_encoder.c
  42. 19 0
      keyboards/keychron/q1/ansi_encoder/ansi_encoder.h
  43. 0 0
      keyboards/keychron/q1/ansi_encoder/config.h
  44. 104 0
      keyboards/keychron/q1/ansi_encoder/info.json
  45. 67 0
      keyboards/keychron/q1/ansi_encoder/keymaps/default/keymap.c
  46. 0 0
      keyboards/keychron/q1/ansi_encoder/keymaps/default/rules.mk
  47. 19 41
      keyboards/keychron/q1/ansi_encoder/keymaps/keychron/keymap.c
  48. 5 0
      keyboards/keychron/q1/ansi_encoder/keymaps/keychron/rules.mk
  49. 67 0
      keyboards/keychron/q1/ansi_encoder/keymaps/via/keymap.c
  50. 2 0
      keyboards/keychron/q1/ansi_encoder/keymaps/via/rules.mk
  51. 0 0
      keyboards/keychron/q1/ansi_encoder/readme.md
  52. 2 1
      keyboards/keychron/q1/ansi_encoder/rules.mk
  53. 10 10
      keyboards/keychron/q1/config.h
  54. 0 0
      keyboards/keychron/q1/iso/config.h
  55. 105 0
      keyboards/keychron/q1/iso/info.json
  56. 26 21
      keyboards/keychron/q1/iso/iso.c
  57. 19 0
      keyboards/keychron/q1/iso/iso.h
  58. 61 0
      keyboards/keychron/q1/iso/keymaps/default/keymap.c
  59. 21 43
      keyboards/keychron/q1/iso/keymaps/keychron/keymap.c
  60. 4 0
      keyboards/keychron/q1/iso/keymaps/keychron/rules.mk
  61. 0 0
      keyboards/keychron/q1/iso/keymaps/kubahorak/README.md
  62. 0 0
      keyboards/keychron/q1/iso/keymaps/kubahorak/config.h
  63. 0 0
      keyboards/keychron/q1/iso/keymaps/kubahorak/keymap.c
  64. 0 0
      keyboards/keychron/q1/iso/keymaps/kubahorak/keymap_user.h
  65. 0 0
      keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.c
  66. 0 0
      keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.h
  67. 0 0
      keyboards/keychron/q1/iso/keymaps/kubahorak/rules.mk
  68. 0 0
      keyboards/keychron/q1/iso/keymaps/mkillewald_iso/config.h
  69. 0 0
      keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap.c
  70. 0 0
      keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap_user.h
  71. 0 0
      keyboards/keychron/q1/iso/keymaps/mkillewald_iso/readme.md
  72. 0 0
      keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.c
  73. 0 0
      keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.h
  74. 0 0
      keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rules.mk
  75. 61 0
      keyboards/keychron/q1/iso/keymaps/via/keymap.c
  76. 1 0
      keyboards/keychron/q1/iso/keymaps/via/rules.mk
  77. 0 0
      keyboards/keychron/q1/iso/keymaps/victorsavu3/config.h
  78. 0 0
      keyboards/keychron/q1/iso/keymaps/victorsavu3/keymap.c
  79. 0 0
      keyboards/keychron/q1/iso/keymaps/victorsavu3/readme.md
  80. 0 0
      keyboards/keychron/q1/iso/keymaps/victorsavu3/rules.mk
  81. 0 0
      keyboards/keychron/q1/iso/readme.md
  82. 2 1
      keyboards/keychron/q1/iso/rules.mk
  83. 4 1
      keyboards/keychron/q1/q1.c
  84. 6 6
      keyboards/keychron/q1/q1.h
  85. 2 2
      keyboards/keychron/q1/readme.md
  86. 0 97
      keyboards/keychron/q1/rev_0100/info.json
  87. 0 107
      keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c
  88. 0 2
      keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk
  89. 0 37
      keyboards/keychron/q1/rev_0100/rev_0100.h
  90. 0 197
      keyboards/keychron/q1/rev_0101/info.json
  91. 0 98
      keyboards/keychron/q1/rev_0101/keymaps/via/keymap.c
  92. 0 52
      keyboards/keychron/q1/rev_0101/rev_0101.h
  93. 0 105
      keyboards/keychron/q1/rev_0102/info.json
  94. 0 107
      keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c
  95. 0 2
      keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk
  96. 0 37
      keyboards/keychron/q1/rev_0102/rev_0102.h
  97. 24 18
      keyboards/keychron/q2/ansi/ansi.c
  98. 19 0
      keyboards/keychron/q2/ansi/ansi.h
  99. 0 0
      keyboards/keychron/q2/ansi/config.h
  100. 88 0
      keyboards/keychron/q2/ansi/info.json

+ 7 - 0
keyboards/keychron/common/keychron_common.h

@@ -15,10 +15,17 @@
  */
 
 #include "stdint.h"
+#ifdef VIA_ENABLE
+#    include "via.h"
+#endif
 #include "quantum_keycodes.h"
 
 enum custom_keycodes {
+#ifdef VIA_ENABLE
+    KC_MISSION_CONTROL = USER00,
+#else
     KC_MISSION_CONTROL = SAFE_RANGE,
+#endif
     KC_LAUNCHPAD,
     KC_LOPTN,
     KC_ROPTN,

+ 28 - 21
keyboards/keychron/q1/rev_0100/rev_0100.c → keyboards/keychron/q1/ansi/ansi.c

@@ -14,8 +14,9 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "quantum.h"
+#include "ansi.h"
 
+#ifdef RGB_MATRIX_ENABLE
 
 const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
 /* Refer to IS31 manual for these locations
@@ -114,30 +115,36 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
 
 };
 
+#define __ NO_LED
+
 led_config_t g_led_config = {
 	{
-		{   0,     NO_LED,  1,      2,      3,      4,      5,      6,      7,      8,      9,     10,     11,      12,     14   },
-		{  15,     16,     17,     18,     19,     20,     21,     22,     23,     24,     25,     26,     27,      28,     29   },
-		{  30,     31,     32,     33,     34,     35,     36,     37,     38,     39,     40,     41,     42,      43,     44   },
-		{  45,     46,     47,     48,     49,     50,     51,     52,     53,     54,     55,     56,     71,      57,     58   },
-		{  59,     NO_LED, 60,     61,     62,     63,     64,     65,     66,     67,     68,     69,     80,      70,     13   },
-		{  72,     73,     74,     NO_LED, NO_LED, NO_LED, 75,     NO_LED, NO_LED, NO_LED, 76,     77,     78,      79,     81   }
+        // Key Matrix to LED Index
+		{  0, __,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 14 },
+		{ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+		{ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
+		{ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
+		{ 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
+		{ 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 81 }
 	},
 	{
-		{0,0},           {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0},
-	    {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13},           {224,13},
-	    {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26}, {195,26},           {224,26},
-	    {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39},           {195,39},           {224,39},
-	    {0,52},          {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52},           {195,52}, {210,52},
-	    {0,64}, {15,64}, {30,64},                            {90,64},                               {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64},
-	},
+        // LED Index to Physical Position
+        {0,0},           {18,0},  {33,0},  {48,0},  {62,0},  {81,0},  {95,0},   {110,0},  {125,0},  {143,0},  {158,0},  {173,0},  {187,0},  {206,0},  {224,0},
+        {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15},           {224,15},
+        {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {202,26},           {224,26},
+        {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38},           {196,38},           {224,38},
+        {9,49},          {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49},           {185,49}, {209,52},
+        {2,61}, {20,61}, {39,61},                            {94,61},                               {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
+    },
 	{
-		4,			4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,
-		4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,		  4,
-		4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,		  4,
-		4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,		  4,		  4,
-		4,			4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,		  4,	4,
-		4,	  4,	4,						4,						4,	  4,	4,	  4,	4,	  4
-
+        // RGB LED Index to Flag
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,    1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,    1,
+        1,    4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1, 1,
+        1, 1, 1,          4,          1, 1, 1, 1, 1, 1
 	}
 };
+
+#endif // RGB_MATRIX_ENABLE

+ 19 - 0
keyboards/keychron/q1/ansi/ansi.h

@@ -0,0 +1,19 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"

+ 0 - 0
keyboards/keychron/q1/rev_0100/config.h → keyboards/keychron/q1/ansi/config.h


+ 104 - 0
keyboards/keychron/q1/ansi/info.json

@@ -0,0 +1,104 @@
+{
+    "keyboard_name": "Q1",
+    "manufacturer": "Keychron",
+    "url": "https://github.com/Keychron",
+    "maintainer": "lalalademaxiya1",
+    "usb": {
+    	"vid": "0x3434",
+    	"pid": "0x0100",
+    	"device_version": "1.0.0"
+    },
+    "layouts": {
+        "LAYOUT_ansi_82": {
+            "layout": [
+                {"matrix":[0, 0], "x":0, "y":0},
+                {"matrix":[0, 2], "x":1.25, "y":0},
+                {"matrix":[0, 3], "x":2.25, "y":0},
+                {"matrix":[0, 4], "x":3.25, "y":0},
+                {"matrix":[0, 5], "x":4.25, "y":0},
+                {"matrix":[0, 6], "x":5.5, "y":0},
+                {"matrix":[0, 7], "x":6.5, "y":0},
+                {"matrix":[0, 8], "x":7.5, "y":0},
+                {"matrix":[0, 9], "x":8.5, "y":0},
+                {"matrix":[0,10], "x":9.75, "y":0},
+                {"matrix":[0,11], "x":10.75, "y":0},
+                {"matrix":[0,12], "x":11.75, "y":0},
+                {"matrix":[0,13], "x":12.75, "y":0},
+                {"matrix":[0,14], "x":14, "y":0},
+                {"matrix":[4,14], "x":15.25, "y":0},
+
+                {"matrix":[1, 0], "x":0, "y":1},
+                {"matrix":[1, 1], "x":1, "y":1},
+                {"matrix":[1, 2], "x":2, "y":1},
+                {"matrix":[1, 3], "x":3, "y":1},
+                {"matrix":[1, 4], "x":4, "y":1},
+                {"matrix":[1, 5], "x":5, "y":1},
+                {"matrix":[1, 6], "x":6, "y":1},
+                {"matrix":[1, 7], "x":7, "y":1},
+                {"matrix":[1, 8], "x":8, "y":1},
+                {"matrix":[1, 9], "x":9, "y":1},
+                {"matrix":[1,10], "x":10, "y":1},
+                {"matrix":[1,11], "x":11, "y":1},
+                {"matrix":[1,12], "x":12, "y":1},
+                {"matrix":[1,13], "x":13, "y":1, "w":2},
+                {"matrix":[1,14], "x":15.25, "y":1},
+
+                {"matrix":[2, 0], "x":0, "y":2, "w":1.5},
+                {"matrix":[2, 1], "x":1.5, "y":2},
+                {"matrix":[2, 2], "x":2.5, "y":2},
+                {"matrix":[2, 3], "x":3.5, "y":2},
+                {"matrix":[2, 4], "x":4.5, "y":2},
+                {"matrix":[2, 5], "x":5.5, "y":2},
+                {"matrix":[2, 6], "x":6.5, "y":2},
+                {"matrix":[2, 7], "x":7.5, "y":2},
+                {"matrix":[2, 8], "x":8.5, "y":2},
+                {"matrix":[2, 9], "x":9.5, "y":2},
+                {"matrix":[2,10], "x":10.5, "y":2},
+                {"matrix":[2,11], "x":11.5, "y":2},
+                {"matrix":[2,12], "x":12.5, "y":2},
+                {"matrix":[2,13], "x":13.5, "y":2, "w":1.5},
+                {"matrix":[2,14], "x":15.25, "y":2},
+
+                {"matrix":[3, 0], "x":0, "y":3, "w":1.75},
+                {"matrix":[3, 1], "x":1.75, "y":3},
+                {"matrix":[3, 2], "x":2.75, "y":3},
+                {"matrix":[3, 3], "x":3.75, "y":3},
+                {"matrix":[3, 4], "x":4.75, "y":3},
+                {"matrix":[3, 5], "x":5.75, "y":3},
+                {"matrix":[3, 6], "x":6.75, "y":3},
+                {"matrix":[3, 7], "x":7.75, "y":3},
+                {"matrix":[3, 8], "x":8.75, "y":3},
+                {"matrix":[3, 9], "x":9.75, "y":3},
+                {"matrix":[3,10], "x":10.75, "y":3},
+                {"matrix":[3,11], "x":11.75, "y":3},
+                {"matrix":[3,13], "x":12.75, "y":3, "w":2.25},
+                {"matrix":[3,14], "x":15.25, "y":3},
+
+                {"matrix":[4, 0], "x":0, "y":4, "w":2.25},
+                {"matrix":[4, 2], "x":2.25, "y":4},
+                {"matrix":[4, 3], "x":3.25, "y":4},
+                {"matrix":[4, 4], "x":4.25, "y":4},
+                {"matrix":[4, 5], "x":5.25, "y":4},
+                {"matrix":[4, 6], "x":6.25, "y":4},
+                {"matrix":[4, 7], "x":7.25, "y":4},
+                {"matrix":[4, 8], "x":8.25, "y":4},
+                {"matrix":[4, 9], "x":9.25, "y":4},
+                {"matrix":[4,10], "x":10.25, "y":4},
+                {"matrix":[4,11], "x":11.25, "y":4},
+                {"matrix":[4,13], "x":12.25, "y":4, "w":1.75},
+                {"matrix":[3,12], "x":14.25, "y":4.25},
+
+                {"matrix":[5, 0], "x":0, "y":5, "w":1.25},
+                {"matrix":[5, 1], "x":1.25, "y":5, "w":1.25},
+                {"matrix":[5, 2], "x":2.5, "y":5, "w":1.25},
+                {"matrix":[5, 6], "x":3.75,"y":5, "w":6.25},
+                {"matrix":[5,10], "x":10, "y":5},
+                {"matrix":[5,11], "x":11, "y":5},
+                {"matrix":[5,12], "x":12, "y":5},
+                {"matrix":[5,13], "x":13.25, "y":5.25},
+                {"matrix":[4,12], "x":14.25, "y":5.25},
+                {"matrix":[5,14], "x":15.25, "y":5.25}
+            ]
+        }
+    }
+}

+ 61 - 0
keyboards/keychron/q1/ansi/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_ansi_82(
+        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_BSLS,            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_ENT,             KC_HOME,
+        KC_LSFT,            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_ansi_82(
+        _______,            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,  _______,  _______,  _______,  _______,  _______,  _______,            _______,            _______,
+        _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,  _______,
+        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______),
+
+    [WIN_BASE] = LAYOUT_ansi_82(
+        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_BSLS,            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_ENT,             KC_HOME,
+        KC_LSFT,            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_ansi_82(
+        _______,            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,  _______,  _______,  _______,  _______,  _______,  _______,            _______,            _______,
+        _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,  _______,
+        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______)
+};

+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/gtg465x/README.md → keyboards/keychron/q1/ansi/keymaps/gtg465x/README.md


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/gtg465x/config.h → keyboards/keychron/q1/ansi/keymaps/gtg465x/config.h


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/gtg465x/keymap.c → keyboards/keychron/q1/ansi/keymaps/gtg465x/keymap.c


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/gtg465x/keymap_user.h → keyboards/keychron/q1/ansi/keymaps/gtg465x/keymap_user.h


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rgb_matrix_user.c → keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.c


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rgb_matrix_user.h → keyboards/keychron/q1/ansi/keymaps/gtg465x/rgb_matrix_user.h


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/gtg465x/rules.mk → keyboards/keychron/q1/ansi/keymaps/gtg465x/rules.mk


+ 23 - 45
keyboards/keychron/q1/rev_0100/keymaps/default/keymap.c → keyboards/keychron/q1/ansi/keymaps/keychron/keymap.c

@@ -15,24 +15,15 @@
  */
 
 #include QMK_KEYBOARD_H
+#include "keychron_common.h"
 
 enum layers{
-    MAC_BASE,
-    MAC_FN,
-    WIN_BASE,
-    WIN_FN
+  MAC_BASE,
+  MAC_FN,
+  WIN_BASE,
+  WIN_FN
 };
 
-enum custom_keycodes {
-    KC_MISSION_CONTROL = SAFE_RANGE,
-    KC_LAUNCHPAD
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-#define KC_MCTL KC_MISSION_CONTROL
-#define KC_LPAD KC_LAUNCHPAD
-
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     [MAC_BASE] = LAYOUT_ansi_82(
         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,
@@ -40,15 +31,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         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_BSLS,            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_ENT,             KC_HOME,
         KC_LSFT,            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),
+        KC_LCTL,  KC_LOPTN, KC_LCMMD,                               KC_SPC,                                 KC_RCMMD,MO(MAC_FN),KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT),
 
     [MAC_FN] = LAYOUT_ansi_82(
-        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,
-        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_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,  _______,  _______,  _______,  _______,  _______,  _______,            _______,            _______,
+        _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,  _______,
+        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______),
 
     [WIN_BASE] = LAYOUT_ansi_82(
         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,
@@ -56,34 +47,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         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_BSLS,            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_ENT,             KC_HOME,
         KC_LSFT,            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),
+        KC_LCTL,  KC_LWIN,  KC_LALT,                                KC_SPC,                                 KC_RALT, MO(WIN_FN),KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT),
 
     [WIN_FN] = LAYOUT_ansi_82(
-        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,
-        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_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,  _______,  _______,  _______,  _______,  _______,  _______,            _______,            _______,
+        _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,  _______,
+        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______)
 };
 
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    switch (keycode) {
-        case KC_MISSION_CONTROL:
-            if (record->event.pressed) {
-                host_consumer_send(0x29F);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        case KC_LAUNCHPAD:
-            if (record->event.pressed) {
-                host_consumer_send(0x2A0);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        default:
-            return true;  // Process all other keycodes normally
+    if(!process_record_keychron(keycode, record)) {
+        return false;
     }
+
+    return true;
 }

+ 4 - 0
keyboards/keychron/q1/ansi/keymaps/keychron/rules.mk

@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c

+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/mkillewald/config.h → keyboards/keychron/q1/ansi/keymaps/mkillewald/config.h


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/mkillewald/keymap.c → keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap.c


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/mkillewald/keymap_user.h → keyboards/keychron/q1/ansi/keymaps/mkillewald/keymap_user.h


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/mkillewald/readme.md → keyboards/keychron/q1/ansi/keymaps/mkillewald/readme.md


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rgb_matrix_user.c → keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.c


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rgb_matrix_user.h → keyboards/keychron/q1/ansi/keymaps/mkillewald/rgb_matrix_user.h


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/mkillewald/rules.mk → keyboards/keychron/q1/ansi/keymaps/mkillewald/rules.mk


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/config.h → keyboards/keychron/q1/ansi/keymaps/teimor/config.h


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/keymap.c → keyboards/keychron/q1/ansi/keymaps/teimor/keymap.c


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/keymap_user.h → keyboards/keychron/q1/ansi/keymaps/teimor/keymap_user.h


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/readme.md → keyboards/keychron/q1/ansi/keymaps/teimor/readme.md


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/rgb_matrix_user.c → keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.c


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/rgb_matrix_user.h → keyboards/keychron/q1/ansi/keymaps/teimor/rgb_matrix_user.h


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/rules.mk → keyboards/keychron/q1/ansi/keymaps/teimor/rules.mk


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_mac_caps.c → keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.c


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_mac_caps.h → keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_mac_caps.h


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_setup.c → keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.c


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_setup.h → keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_setup.h


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_user.c → keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_user.c


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_win_caps.c → keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.c


+ 0 - 0
keyboards/keychron/q1/rev_0100/keymaps/teimor/tap_dance_win_caps.h → keyboards/keychron/q1/ansi/keymaps/teimor/tap_dance_win_caps.h


+ 61 - 0
keyboards/keychron/q1/ansi/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_ansi_82(
+        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_BSLS,            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_ENT,             KC_HOME,
+        KC_LSFT,            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_ansi_82(
+        _______,            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,  _______,  _______,  _______,  _______,  _______,  _______,            _______,            _______,
+        _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,  _______,
+        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______),
+
+    [WIN_BASE] = LAYOUT_ansi_82(
+        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_BSLS,            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_ENT,             KC_HOME,
+        KC_LSFT,            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_ansi_82(
+        _______,            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,  _______,  _______,  _______,  _______,  _______,  _______,            _______,            _______,
+        _______,            _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,  _______,
+        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______)
+};

+ 1 - 0
keyboards/keychron/q1/ansi/keymaps/via/rules.mk

@@ -0,0 +1 @@
+VIA_ENABLE = yes

+ 0 - 0
keyboards/keychron/q1/rev_0100/readme.md → keyboards/keychron/q1/ansi/readme.md


+ 1 - 0
keyboards/keychron/q1/rev_0100/rules.mk → keyboards/keychron/q1/ansi/rules.mk

@@ -19,3 +19,4 @@ AUDIO_ENABLE = no           # Audio output
 DIP_SWITCH_ENABLE = yes
 RGB_MATRIX_ENABLE = yes
 RGB_MATRIX_DRIVER = IS31FL3733
+LTO_ENABLE = yes

+ 30 - 38
keyboards/keychron/q1/rev_0101/rev_0101.c → keyboards/keychron/q1/ansi_encoder/ansi_encoder.c

@@ -14,7 +14,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "quantum.h"
+#include "ansi_encoder.h"
 
 #ifdef RGB_MATRIX_ENABLE
 const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
@@ -113,44 +113,36 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
     {1, F_16,   D_16,   E_16}
 };
 
+#define __ NO_LED
+
 led_config_t g_led_config = {
-    {
-        {   0,     NO_LED,  1,      2,      3,      4,      5,      6,      7,      8,      9,     10,     11,      12,     14   },
-        {  15,     16,     17,     18,     19,     20,     21,     22,     23,     24,     25,     26,     27,      28,     29   },
-        {  30,     31,     32,     33,     34,     35,     36,     37,     38,     39,     40,     41,     42,      43,     44   },
-        {  45,     46,     47,     48,     49,     50,     51,     52,     53,     54,     55,     56,     71,      57,     58   },
-        {  59,     NO_LED, 60,     61,     62,     63,     64,     65,     66,     67,     68,     69,     80,      70,     13   },
-        {  72,     73,     74,     NO_LED, NO_LED, NO_LED, 75,     NO_LED, NO_LED, NO_LED, 76,     77,     78,      79,     81   }
-    },
-    {
-        {0, 0},          {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0},
-        {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13},           {224,13},
-        {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26}, {195,26},           {224,26},
-        {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39},           {195,39},           {224,39},
-        {0,52},          {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52},           {195,52}, {210,52},
-        {0,64}, {15,64}, {30,64},                            {90,64},                               {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64}
+	{
+        // Key Matrix to LED Index
+		{  0, __,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 14 },
+		{ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+		{ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44 },
+		{ 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 71, 57, 58 },
+		{ 59, __, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 80, 70, 13 },
+		{ 72, 73, 74, __, __, __, 75, __, __, __, 76, 77, 78, 79, 81 }
+	},
+	{
+        // LED Index to Physical Position
+        {0,0},           {18,0},  {33,0},  {48,0},  {62,0},  {81,0},  {95,0},   {110,0},  {125,0},  {143,0},  {158,0},  {173,0},  {187,0},  {206,0},  {224,0},
+        {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15},           {224,15},
+        {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26}, {202,26},           {224,26},
+        {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38},           {196,38},           {224,38},
+        {9,49},          {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49},           {185,49}, {209,52},
+        {2,61}, {20,61}, {39,61},                            {94,61},                               {147,61}, {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
     },
-    {
-        4,              4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,
-        4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,              4,
-        4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,              4,
-        4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,      4,              4,              4,
-        4,              4,      4,      4,      4,      4,      4,      4,      4,      4,      4,              4,      4,
-        4,      4,      4,                              4,                              4,      4,      4,      4,      4,      4
-    }
+	{
+        // RGB LED Index to Flag
+        1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,    1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,    1,
+        1,    4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1, 1,
+        1, 1, 1,          4,          1, 1, 1, 1, 1, 1
+	}
 };
-#endif
 
-#ifdef ENCODER_ENABLE
-bool encoder_update_kb(uint8_t index, bool clockwise) {
-    if (!encoder_update_user(index, clockwise)) { return false; }
-    if (index == 0) {
-        if (clockwise) {
-            tap_code(KC_VOLU);
-        } else {
-            tap_code(KC_VOLD);
-        }
-    }
-    return true;
-}
-#endif
+#endif // RGB_MATRIX_ENABLE

+ 19 - 0
keyboards/keychron/q1/ansi_encoder/ansi_encoder.h

@@ -0,0 +1,19 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"

+ 0 - 0
keyboards/keychron/q1/rev_0101/config.h → keyboards/keychron/q1/ansi_encoder/config.h


+ 104 - 0
keyboards/keychron/q1/ansi_encoder/info.json

@@ -0,0 +1,104 @@
+{
+    "keyboard_name": "Q1",
+    "manufacturer": "Keychron",
+    "url": "https://github.com/Keychron",
+    "maintainer": "lalalademaxiya1",
+    "usb": {
+        "vid": "0x3434",
+        "pid": "0x0101",
+        "device_version": "1.0.0"
+    },
+    "layouts": {
+        "LAYOUT_ansi_82": {
+            "layout": [
+                {"matrix":[0, 0], "x":0, "y":0},
+                {"matrix":[0, 2], "x":1.25, "y":0},
+                {"matrix":[0, 3], "x":2.25, "y":0},
+                {"matrix":[0, 4], "x":3.25, "y":0},
+                {"matrix":[0, 5], "x":4.25, "y":0},
+                {"matrix":[0, 6], "x":5.5, "y":0},
+                {"matrix":[0, 7], "x":6.5, "y":0},
+                {"matrix":[0, 8], "x":7.5, "y":0},
+                {"matrix":[0, 9], "x":8.5, "y":0},
+                {"matrix":[0,10], "x":9.75, "y":0},
+                {"matrix":[0,11], "x":10.75, "y":0},
+                {"matrix":[0,12], "x":11.75, "y":0},
+                {"matrix":[0,13], "x":12.75, "y":0},
+                {"matrix":[0,14], "x":14, "y":0},
+                {"matrix":[4,14], "x":15.25, "y":0},
+
+                {"matrix":[1, 0], "x":0, "y":1},
+                {"matrix":[1, 1], "x":1, "y":1},
+                {"matrix":[1, 2], "x":2, "y":1},
+                {"matrix":[1, 3], "x":3, "y":1},
+                {"matrix":[1, 4], "x":4, "y":1},
+                {"matrix":[1, 5], "x":5, "y":1},
+                {"matrix":[1, 6], "x":6, "y":1},
+                {"matrix":[1, 7], "x":7, "y":1},
+                {"matrix":[1, 8], "x":8, "y":1},
+                {"matrix":[1, 9], "x":9, "y":1},
+                {"matrix":[1,10], "x":10, "y":1},
+                {"matrix":[1,11], "x":11, "y":1},
+                {"matrix":[1,12], "x":12, "y":1},
+                {"matrix":[1,13], "x":13, "y":1, "w":2},
+                {"matrix":[1,14], "x":15.25, "y":1},
+
+                {"matrix":[2, 0], "x":0, "y":2, "w":1.5},
+                {"matrix":[2, 1], "x":1.5, "y":2},
+                {"matrix":[2, 2], "x":2.5, "y":2},
+                {"matrix":[2, 3], "x":3.5, "y":2},
+                {"matrix":[2, 4], "x":4.5, "y":2},
+                {"matrix":[2, 5], "x":5.5, "y":2},
+                {"matrix":[2, 6], "x":6.5, "y":2},
+                {"matrix":[2, 7], "x":7.5, "y":2},
+                {"matrix":[2, 8], "x":8.5, "y":2},
+                {"matrix":[2, 9], "x":9.5, "y":2},
+                {"matrix":[2,10], "x":10.5, "y":2},
+                {"matrix":[2,11], "x":11.5, "y":2},
+                {"matrix":[2,12], "x":12.5, "y":2},
+                {"matrix":[2,13], "x":13.5, "y":2, "w":1.5},
+                {"matrix":[2,14], "x":15.25, "y":2},
+
+                {"matrix":[3, 0], "x":0, "y":3, "w":1.75},
+                {"matrix":[3, 1], "x":1.75, "y":3},
+                {"matrix":[3, 2], "x":2.75, "y":3},
+                {"matrix":[3, 3], "x":3.75, "y":3},
+                {"matrix":[3, 4], "x":4.75, "y":3},
+                {"matrix":[3, 5], "x":5.75, "y":3},
+                {"matrix":[3, 6], "x":6.75, "y":3},
+                {"matrix":[3, 7], "x":7.75, "y":3},
+                {"matrix":[3, 8], "x":8.75, "y":3},
+                {"matrix":[3, 9], "x":9.75, "y":3},
+                {"matrix":[3,10], "x":10.75, "y":3},
+                {"matrix":[3,11], "x":11.75, "y":3},
+                {"matrix":[3,13], "x":12.75, "y":3, "w":2.25},
+                {"matrix":[3,14], "x":15.25, "y":3},
+
+                {"matrix":[4, 0], "x":0, "y":4, "w":2.25},
+                {"matrix":[4, 2], "x":2.25, "y":4},
+                {"matrix":[4, 3], "x":3.25, "y":4},
+                {"matrix":[4, 4], "x":4.25, "y":4},
+                {"matrix":[4, 5], "x":5.25, "y":4},
+                {"matrix":[4, 6], "x":6.25, "y":4},
+                {"matrix":[4, 7], "x":7.25, "y":4},
+                {"matrix":[4, 8], "x":8.25, "y":4},
+                {"matrix":[4, 9], "x":9.25, "y":4},
+                {"matrix":[4,10], "x":10.25, "y":4},
+                {"matrix":[4,11], "x":11.25, "y":4},
+                {"matrix":[4,13], "x":12.25, "y":4, "w":1.75},
+                {"matrix":[3,12], "x":14.25, "y":4.25},
+
+                {"matrix":[5, 0], "x":0, "y":5, "w":1.25},
+                {"matrix":[5, 1], "x":1.25, "y":5, "w":1.25},
+                {"matrix":[5, 2], "x":2.5, "y":5, "w":1.25},
+                {"matrix":[5, 6], "x":3.75,"y":5, "w":6.25},
+                {"matrix":[5,10], "x":10, "y":5},
+                {"matrix":[5,11], "x":11, "y":5},
+                {"matrix":[5,12], "x":12, "y":5},
+                {"matrix":[5,13], "x":13.25, "y":5.25},
+                {"matrix":[4,12], "x":14.25, "y":5.25},
+                {"matrix":[5,14], "x":15.25, "y":5.25}
+            ]
+        }
+    }
+}

+ 67 - 0
keyboards/keychron/q1/ansi_encoder/keymaps/default/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
+
+enum layers{
+    MAC_BASE,
+    MAC_FN,
+    WIN_BASE,
+    WIN_FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [MAC_BASE] = LAYOUT_ansi_82(
+        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_MUTE,
+        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_BSLS,            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_ENT,             KC_HOME,
+        KC_LSFT,            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_ROPT, MO(MAC_FN),KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT),
+
+    [MAC_FN] = LAYOUT_ansi_82(
+        _______,            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_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_ansi_82(
+        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_MUTE,
+        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_BSLS,            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_ENT,             KC_HOME,
+        KC_LSFT,            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_ansi_82(
+        _______,            KC_BRID,  KC_BRIU,  _______,  _______,  RGB_VAD,  RGB_VAI,  KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,  RGB_TOG,
+        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,
+        RGB_TOG,  RGB_MOD,  RGB_VAI,  RGB_HUI,  RGB_SAI,  RGB_SPI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,
+        _______,  RGB_RMOD, RGB_VAD,  RGB_HUD,  RGB_SAD,  RGB_SPD,  _______,  _______,  _______,  _______,  _______,  _______,            _______,            _______,
+        _______,            _______,  _______,  _______,  _______,  _______,  NK_TOGG,  _______,  _______,  _______,  _______,            _______,  _______,
+        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+    [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+    [MAC_FN]   = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+    [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+    [WIN_FN]   = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+};
+#endif

+ 0 - 0
keyboards/keychron/q1/rev_0101/keymaps/default/rules.mk → keyboards/keychron/q1/ansi_encoder/keymaps/default/rules.mk


+ 19 - 41
keyboards/keychron/q1/rev_0101/keymaps/default/keymap.c → keyboards/keychron/q1/ansi_encoder/keymaps/keychron/keymap.c

@@ -15,6 +15,7 @@
  */
 
 #include QMK_KEYBOARD_H
+#include "keychron_common.h"
 
 enum layers{
     MAC_BASE,
@@ -23,16 +24,6 @@ enum layers{
     WIN_FN
 };
 
-enum custom_keycodes {
-    KC_MISSION_CONTROL = SAFE_RANGE,
-    KC_LAUNCHPAD
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-#define KC_MCTL KC_MISSION_CONTROL
-#define KC_LPAD KC_LAUNCHPAD
-
 const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
     [MAC_BASE] = LAYOUT_ansi_82(
         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_MUTE,
@@ -40,15 +31,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         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_BSLS,            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_ENT,             KC_HOME,
         KC_LSFT,            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),
+        KC_LCTL,  KC_LOPTN, KC_LCMMD,                               KC_SPC,                                 KC_RCMMD,MO(MAC_FN),KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT),
 
     [MAC_FN] = LAYOUT_ansi_82(
-        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,
-        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_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_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_ansi_82(
         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_MUTE,
@@ -56,15 +47,15 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         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_BSLS,            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_ENT,             KC_HOME,
         KC_LSFT,            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),
+        KC_LCTL,  KC_LWIN,  KC_LALT,                                KC_SPC,                                 KC_RALT, MO(WIN_FN),KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT),
 
     [WIN_FN] = LAYOUT_ansi_82(
-        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,
-        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_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_TOG,  RGB_MOD,  RGB_VAI,  RGB_HUI,  RGB_SAI,  RGB_SPI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,
+        _______,  RGB_RMOD, RGB_VAD,  RGB_HUD,  RGB_SAD,  RGB_SPD,  _______,  _______,  _______,  _______,  _______,  _______,            _______,            _______,
+        _______,            _______,  _______,  _______,  _______,  _______,  NK_TOGG,  _______,  _______,  _______,  _______,            _______,  _______,
+        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______)
 };
 
 #if defined(ENCODER_MAP_ENABLE)
@@ -77,22 +68,9 @@ const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
 #endif
 
 bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    switch (keycode) {
-        case KC_MISSION_CONTROL:
-            if (record->event.pressed) {
-                host_consumer_send(0x29F);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        case KC_LAUNCHPAD:
-            if (record->event.pressed) {
-                host_consumer_send(0x2A0);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        default:
-            return true;  // Process all other keycodes normally
+    if (!process_record_keychron(keycode, record)) {
+        return false;
     }
+
+    return true;
 }

+ 5 - 0
keyboards/keychron/q1/ansi_encoder/keymaps/keychron/rules.mk

@@ -0,0 +1,5 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes
+
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c

+ 67 - 0
keyboards/keychron/q1/ansi_encoder/keymaps/via/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
+
+enum layers{
+    MAC_BASE,
+    MAC_FN,
+    WIN_BASE,
+    WIN_FN
+};
+
+const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
+    [MAC_BASE] = LAYOUT_ansi_82(
+        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_MUTE,
+        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_BSLS,            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_ENT,             KC_HOME,
+        KC_LSFT,            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_ansi_82(
+        _______,            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_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_ansi_82(
+        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_MUTE,
+        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_BSLS,            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_ENT,             KC_HOME,
+        KC_LSFT,            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_ansi_82(
+        _______,            KC_BRID,  KC_BRIU,  _______,  _______,  RGB_VAD,  RGB_VAI,  KC_MPRV,  KC_MPLY,  KC_MNXT,  KC_MUTE,  KC_VOLD,  KC_VOLU,  _______,  RGB_TOG,
+        _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,
+        RGB_TOG,  RGB_MOD,  RGB_VAI,  RGB_HUI,  RGB_SAI,  RGB_SPI,  _______,  _______,  _______,  _______,  _______,  _______,  _______,  _______,            _______,
+        _______,  RGB_RMOD, RGB_VAD,  RGB_HUD,  RGB_SAD,  RGB_SPD,  _______,  _______,  _______,  _______,  _______,  _______,            _______,            _______,
+        _______,            _______,  _______,  _______,  _______,  _______,  NK_TOGG,  _______,  _______,  _______,  _______,            _______,  _______,
+        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______)
+};
+
+#if defined(ENCODER_MAP_ENABLE)
+const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
+    [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+    [MAC_FN]   = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+    [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
+    [WIN_FN]   = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
+};
+#endif

+ 2 - 0
keyboards/keychron/q1/ansi_encoder/keymaps/via/rules.mk

@@ -0,0 +1,2 @@
+VIA_ENABLE = yes
+ENCODER_MAP_ENABLE = yes

+ 0 - 0
keyboards/keychron/q1/rev_0101/readme.md → keyboards/keychron/q1/ansi_encoder/readme.md


+ 2 - 1
keyboards/keychron/q1/rev_0101/rules.mk → keyboards/keychron/q1/ansi_encoder/rules.mk

@@ -19,4 +19,5 @@ AUDIO_ENABLE = no           # Audio output
 ENCODER_ENABLE = yes        # Enable Encoder
 DIP_SWITCH_ENABLE = yes
 RGB_MATRIX_ENABLE = yes
-RGB_MATRIX_DRIVER = IS31FL3733
+RGB_MATRIX_DRIVER = IS31FL3733
+LTO_ENABLE = yes

+ 10 - 10
keyboards/keychron/q1/config.h

@@ -55,7 +55,7 @@
 // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
 // #define ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
 // #define ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
-// #define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
+#define ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
 #define ENABLE_RGB_MATRIX_CYCLE_ALL
 #define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
 #define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
@@ -67,12 +67,12 @@
 #define ENABLE_RGB_MATRIX_DUAL_BEACON
 #define ENABLE_RGB_MATRIX_RAINBOW_BEACON
 // #define ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS
-#define ENABLE_RGB_MATRIX_RAINDROPS
-// #define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
+// #define ENABLE_RGB_MATRIX_RAINDROPS
+#define ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
 // #define ENABLE_RGB_MATRIX_HUE_BREATHING
 // #define ENABLE_RGB_MATRIX_HUE_PENDULUM
 // #define ENABLE_RGB_MATRIX_HUE_WAVE
-// #define ENABLE_RGB_MATRIX_PIXEL_RAIN
+#define ENABLE_RGB_MATRIX_PIXEL_RAIN
 // #define ENABLE_RGB_MATRIX_PIXEL_FLOW
 // #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
 // enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
@@ -80,14 +80,14 @@
 #define ENABLE_RGB_MATRIX_DIGITAL_RAIN
 // enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
 #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
 #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
-#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
+// #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
 #define ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
 #define ENABLE_RGB_MATRIX_SPLASH
-#define ENABLE_RGB_MATRIX_MULTISPLASH
+// #define ENABLE_RGB_MATRIX_MULTISPLASH
 #define ENABLE_RGB_MATRIX_SOLID_SPLASH
 #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH

+ 0 - 0
keyboards/keychron/q1/rev_0102/config.h → keyboards/keychron/q1/iso/config.h


+ 105 - 0
keyboards/keychron/q1/iso/info.json

@@ -0,0 +1,105 @@
+{
+    "keyboard_name": "Q1",
+    "manufacturer": "Keychron",
+    "url": "https://github.com/Keychron",
+    "maintainer": "lalalademaxiya1",
+    "usb": {
+        "vid": "0x3434",
+        "pid": "0x0102",
+        "device_version": "1.0.0"
+    },
+    "layouts": {
+        "LAYOUT_iso_83": {
+            "layout": [
+                {"matrix":[0, 0], "x":0, "y":0},
+                {"matrix":[0, 2], "x":1.25, "y":0},
+                {"matrix":[0, 3], "x":2.25, "y":0},
+                {"matrix":[0, 4], "x":3.25, "y":0},
+                {"matrix":[0, 5], "x":4.25, "y":0},
+                {"matrix":[0, 6], "x":5.5, "y":0},
+                {"matrix":[0, 7], "x":6.5, "y":0},
+                {"matrix":[0, 8], "x":7.5, "y":0},
+                {"matrix":[0, 9], "x":8.5, "y":0},
+                {"matrix":[0,10], "x":9.75, "y":0},
+                {"matrix":[0,11], "x":10.75, "y":0},
+                {"matrix":[0,12], "x":11.75, "y":0},
+                {"matrix":[0,13], "x":12.75, "y":0},
+                {"matrix":[4,14], "x":14, "y":0},
+                {"matrix":[0,14], "x":15.25, "y":0},
+
+                {"matrix":[1, 0], "x":0, "y":1.25},
+                {"matrix":[1, 1], "x":1, "y":1.25},
+                {"matrix":[1, 2], "x":2, "y":1.25},
+                {"matrix":[1, 3], "x":3, "y":1.25},
+                {"matrix":[1, 4], "x":4, "y":1.25},
+                {"matrix":[1, 5], "x":5, "y":1.25},
+                {"matrix":[1, 6], "x":6, "y":1.25},
+                {"matrix":[1, 7], "x":7, "y":1.25},
+                {"matrix":[1, 8], "x":8, "y":1.25},
+                {"matrix":[1, 9], "x":9, "y":1.25},
+                {"matrix":[1,10], "x":10, "y":1.25},
+                {"matrix":[1,11], "x":11, "y":1.25},
+                {"matrix":[1,12], "x":12, "y":1.25},
+                {"matrix":[1,13], "x":13, "y":1.25, "w":2},
+                {"matrix":[1,14], "x":15.25, "y":1.25},
+
+                {"matrix":[2, 0], "x":0, "y":2.25, "w":1.5},
+                {"matrix":[2, 1], "x":1.5, "y":2.25},
+                {"matrix":[2, 2], "x":2.5, "y":2.25},
+                {"matrix":[2, 3], "x":3.5, "y":2.25},
+                {"matrix":[2, 4], "x":4.5, "y":2.25},
+                {"matrix":[2, 5], "x":5.5, "y":2.25},
+                {"matrix":[2, 6], "x":6.5, "y":2.25},
+                {"matrix":[2, 7], "x":7.5, "y":2.25},
+                {"matrix":[2, 8], "x":8.5, "y":2.25},
+                {"matrix":[2, 9], "x":9.5, "y":2.25},
+                {"matrix":[2,10], "x":10.5, "y":2.25},
+                {"matrix":[2,11], "x":11.5, "y":2.25},
+                {"matrix":[2,12], "x":12.5, "y":2.25},
+                {"matrix":[2,14], "x":15.25, "y":2.25},
+
+                {"matrix":[3, 0], "x":0, "y":3.25, "w":1.75},
+                {"matrix":[3, 1], "x":1.75, "y":3.25},
+                {"matrix":[3, 2], "x":2.75, "y":3.25},
+                {"matrix":[3, 3], "x":3.75, "y":3.25},
+                {"matrix":[3, 4], "x":4.75, "y":3.25},
+                {"matrix":[3, 5], "x":5.75, "y":3.25},
+                {"matrix":[3, 6], "x":6.75, "y":3.25},
+                {"matrix":[3, 7], "x":7.75, "y":3.25},
+                {"matrix":[3, 8], "x":8.75, "y":3.25},
+                {"matrix":[3, 9], "x":9.75, "y":3.25},
+                {"matrix":[3,10], "x":10.75, "y":3.25},
+                {"matrix":[3,11], "x":11.75, "y":3.25},
+                {"matrix":[3,13], "x":12.75, "y":3.25},
+                {"matrix":[2,13], "x":13.75, "y":2.25, "w":1.25, "h":2},
+                {"matrix":[3,14], "x":15.25, "y":3.25},
+
+                {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+                {"matrix":[4, 1], "x":1.25, "y":4.25},
+                {"matrix":[4, 2], "x":2.25, "y":4.25},
+                {"matrix":[4, 3], "x":3.25, "y":4.25},
+                {"matrix":[4, 4], "x":4.25, "y":4.25},
+                {"matrix":[4, 5], "x":5.25, "y":4.25},
+                {"matrix":[4, 6], "x":6.25, "y":4.25},
+                {"matrix":[4, 7], "x":7.25, "y":4.25},
+                {"matrix":[4, 8], "x":8.25, "y":4.25},
+                {"matrix":[4, 9], "x":9.25, "y":4.25},
+                {"matrix":[4,10], "x":10.25, "y":4.25},
+                {"matrix":[4,11], "x":11.25, "y":4.25},
+                {"matrix":[4,13], "x":12.25, "y":4.25, "w":1.75},
+                {"matrix":[3,12], "x":14.25, "y":4.5},
+
+                {"matrix":[5, 0], "x":0, "y":5.25, "w":1.25},
+                {"matrix":[5, 1], "x":1.25, "y":5.25, "w":1.25},
+                {"matrix":[5, 2], "x":2.5, "y":5.25, "w":1.25},
+                {"matrix":[5, 6], "x":3.75, "y":5.25, "w":6.25},
+                {"matrix":[5,10], "x":10, "y":5.25},
+                {"matrix":[5,11], "x":11, "y":5.25},
+                {"matrix":[5,12], "x":12, "y":5.25},
+                {"matrix":[5,13], "x":13.25, "y":5.5},
+                {"matrix":[4,12], "x":14.25, "y":5.5},
+                {"matrix":[5,14], "x":15.25, "y":5.5}
+            ]
+        }
+    }
+}

+ 26 - 21
keyboards/keychron/q1/rev_0102/rev_0102.c → keyboards/keychron/q1/iso/iso.c

@@ -14,7 +14,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "quantum.h"
+#include "iso.h"
 
 #ifdef RGB_MATRIX_ENABLE
 const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
@@ -114,31 +114,36 @@ const is31_led PROGMEM g_is31_leds[RGB_MATRIX_LED_COUNT] = {
     {1, F_16,   D_16,   E_16}
 };
 
+#define __ NO_LED
+
 led_config_t g_led_config = {
 	{
-		{   0, NO_LED,      1,      2,      3,      4,      5,      6,      7,      8,      9,     10,     11,      12,     14   },
-		{  15,     16,     17,     18,     19,     20,     21,     22,     23,     24,     25,     26,     27,      28,     29   },
-		{  30,     31,     32,     33,     34,     35,     36,     37,     38,     39,     40,     41,     42,      57,     43   },
-		{  44,     45,     46,     47,     48,     49,     50,     51,     52,     53,     54,     55,     72,      56,     58   },
-		{  59,     60,     61,     62,     63,     64,     65,     66,     67,     68,     69,     70,     81,      71,     13   },
-		{  73,     74,     75, NO_LED, NO_LED, NO_LED,     76, NO_LED, NO_LED, NO_LED,     77,     78,     79,      80,     82   }
+         // Key Matrix to LED Index
+		{  0, __,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12, 14 },
+		{ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+		{ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 57, 43 },
+		{ 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 72, 56, 58 },
+		{ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 81, 71, 13 },
+		{ 73, 74, 75, __, __, __, 76, __, __, __, 77, 78, 79, 80, 82 }
 	},
 	{
-		{0,0},           {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0}, {210, 0}, {224, 0},
-	    {0,13}, {15,13}, {30,13}, {45,13}, {60,13}, {75,13}, {90,13}, {105,13}, {120,13}, {135,13}, {150,13}, {165,13}, {180,13}, {195,13},           {224,13},
-	    {0,26}, {15,26}, {30,26}, {45,26}, {60,26}, {75,26}, {90,26}, {105,26}, {120,26}, {135,26}, {150,26}, {165,26}, {180,26},                     {224,26},
-	    {0,39}, {15,39}, {30,39}, {45,39}, {60,39}, {75,39}, {90,39}, {105,39}, {120,39}, {135,39}, {150,39}, {165,39}, {180,39}, {195,26},           {224,39},
-	    {0,52}, {15,52}, {30,52}, {45,52}, {60,52}, {75,52}, {90,52}, {105,52}, {120,52}, {135,52}, {150,52}, {165,52},           {180,52}, {210,52},
-	    {0,64}, {15,64}, {30,64},                            {90,64},                               {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64},
+        // LED Index to Physical Position
+        {0,0},           {18,0},  {33,0},  {48,0},  {62,0},  {81,0},  {95,0},   {110,0},  {125,0},  {143,0},  {158,0},  {173,0},  {187,0},  {206,0},  {224,0},
+        {0,15}, {15,15}, {29,15}, {44,15}, {59,15}, {73,15}, {88,15}, {103,15}, {118,15}, {132,15}, {147,15}, {162,15}, {176,15}, {198,15},           {224,15},
+        {4,26}, {22,26}, {37,26}, {51,26}, {66,26}, {81,26}, {95,26}, {110,26}, {125,26}, {140,26}, {154,26}, {169,26}, {184,26},                     {224,26},
+        {6,38}, {26,38}, {40,38}, {55,38}, {70,38}, {84,38}, {99,38}, {114,38}, {129,38}, {143,38}, {158,38}, {173,38}, {187,38}, {203,32},           {224,38},
+        {2,49}, {18,49}, {33,49}, {48,49}, {62,49}, {77,49}, {92,49}, {106,49}, {121,49}, {136,49}, {151,49}, {165,49},           {185,49}, {209,52},
+        {2,61}, {20,61}, {39,61}, {94,61},                            {147,61},                               {162,61}, {176,61}, {195,64}, {209,64}, {224,64}
 	},
 	{
-		4,			4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,
-		4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,		  4,
-		4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	     		  4,
-		4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,		  4,
-		4,	  4,    4,	  4,	4,	  4,	4,	  4,	4,	  4,	4,	  4,		  4,	4,
-		4,	  4,	4,						4,						4,	  4,	4,	  4,	4,	  4
-
+        // RGB LED Index to Flag
+        1,    1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,       1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1, 1,
+        1, 1, 1,           4,         1, 1, 1, 1, 1, 1
 	}
 };
-#endif
+
+#endif // RGB_MATRIX_ENABLE

+ 19 - 0
keyboards/keychron/q1/iso/iso.h

@@ -0,0 +1,19 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"

+ 61 - 0
keyboards/keychron/q1/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,  _______,  _______,  _______,  _______,            _______,  _______,
+        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______)
+    };

+ 21 - 43
keyboards/keychron/q1/rev_0102/keymaps/default/keymap.c → keyboards/keychron/q1/iso/keymaps/keychron/keymap.c

@@ -15,6 +15,7 @@
  */
 
 #include QMK_KEYBOARD_H
+#include "keychron_common.h"
 
 enum layers{
   MAC_BASE,
@@ -23,32 +24,22 @@ enum layers{
   WIN_FN
 };
 
-enum custom_keycodes {
-    KC_MISSION_CONTROL = SAFE_RANGE,
-    KC_LAUNCHPAD
-};
-
-#define KC_TASK LGUI(KC_TAB)
-#define KC_FLXP LGUI(KC_E)
-#define KC_MCTL KC_MISSION_CONTROL
-#define KC_LPAD KC_LAUNCHPAD
-
 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_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_LALT,  KC_LGUI,                                KC_SPC,                                 KC_RGUI, MO(MAC_FN),KC_RCTL,  KC_LEFT,  KC_DOWN,  KC_RGHT),
+        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_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),
+        _______,            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,
@@ -56,34 +47,21 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
         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),
+        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_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_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_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) {
-    switch (keycode) {
-        case KC_MISSION_CONTROL:
-            if (record->event.pressed) {
-                host_consumer_send(0x29F);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        case KC_LAUNCHPAD:
-            if (record->event.pressed) {
-                host_consumer_send(0x2A0);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        default:
-            return true;  // Process all other keycodes normally
+    if (!process_record_keychron(keycode, record)) {
+        return false;
     }
+
+    return true;
 }

+ 4 - 0
keyboards/keychron/q1/iso/keymaps/keychron/rules.mk

@@ -0,0 +1,4 @@
+VIA_ENABLE = yes
+
+VPATH += keyboards/keychron/common
+SRC += keychron_common.c

+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/kubahorak/README.md → keyboards/keychron/q1/iso/keymaps/kubahorak/README.md


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/kubahorak/config.h → keyboards/keychron/q1/iso/keymaps/kubahorak/config.h


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap.c → keyboards/keychron/q1/iso/keymaps/kubahorak/keymap.c


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/kubahorak/keymap_user.h → keyboards/keychron/q1/iso/keymaps/kubahorak/keymap_user.h


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.c → keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.c


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rgb_matrix_user.h → keyboards/keychron/q1/iso/keymaps/kubahorak/rgb_matrix_user.h


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/kubahorak/rules.mk → keyboards/keychron/q1/iso/keymaps/kubahorak/rules.mk


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/config.h → keyboards/keychron/q1/iso/keymaps/mkillewald_iso/config.h


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/keymap.c → keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap.c


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/keymap_user.h → keyboards/keychron/q1/iso/keymaps/mkillewald_iso/keymap_user.h


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/readme.md → keyboards/keychron/q1/iso/keymaps/mkillewald_iso/readme.md


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rgb_matrix_user.c → keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.c


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rgb_matrix_user.h → keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rgb_matrix_user.h


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/mkillewald_iso/rules.mk → keyboards/keychron/q1/iso/keymaps/mkillewald_iso/rules.mk


+ 61 - 0
keyboards/keychron/q1/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,  _______,  _______,  _______,  _______,            _______,  _______,
+        _______,  _______,  _______,                                _______,                                _______,  _______,  _______,  _______,  _______,  _______)
+};

+ 1 - 0
keyboards/keychron/q1/iso/keymaps/via/rules.mk

@@ -0,0 +1 @@
+VIA_ENABLE = yes

+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/config.h → keyboards/keychron/q1/iso/keymaps/victorsavu3/config.h


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/keymap.c → keyboards/keychron/q1/iso/keymaps/victorsavu3/keymap.c


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/readme.md → keyboards/keychron/q1/iso/keymaps/victorsavu3/readme.md


+ 0 - 0
keyboards/keychron/q1/rev_0102/keymaps/victorsavu3/rules.mk → keyboards/keychron/q1/iso/keymaps/victorsavu3/rules.mk


+ 0 - 0
keyboards/keychron/q1/rev_0102/readme.md → keyboards/keychron/q1/iso/readme.md


+ 2 - 1
keyboards/keychron/q1/rev_0102/rules.mk → keyboards/keychron/q1/iso/rules.mk

@@ -18,4 +18,5 @@ RGBLIGHT_ENABLE = no        # Enable keyboard RGB underglow
 AUDIO_ENABLE = no           # Audio output
 DIP_SWITCH_ENABLE = yes
 RGB_MATRIX_ENABLE = yes
-RGB_MATRIX_DRIVER = IS31FL3733
+RGB_MATRIX_DRIVER = IS31FL3733
+LTO_ENABLE = yes

+ 4 - 1
keyboards/keychron/q1/q1.c

@@ -16,7 +16,6 @@
 
 #include "q1.h"
 
-
 const matrix_row_t matrix_mask[] = {
     0b0111111111111101,
     0b0111111111111111,
@@ -26,6 +25,8 @@ const matrix_row_t matrix_mask[] = {
     0b0111111111111111,
 };
 
+#ifdef DIP_SWITCH_ENABLE
+
 bool dip_switch_update_kb(uint8_t index, bool active) {
     if (!dip_switch_update_user(index, active)) { return false;}
     if (index == 0) {
@@ -33,3 +34,5 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
     }
     return true;
 }
+
+#endif // DIP_SWITCH_ENABLE

+ 6 - 6
keyboards/keychron/q1/q1.h

@@ -18,12 +18,12 @@
 
 #include "quantum.h"
 
-#if   defined(KEYBOARD_keychron_q1_rev_0100)
-#    include "rev_0100.h"
-#elif defined(KEYBOARD_keychron_q1_rev_0101)
-#    include "rev_0101.h"
-#elif defined(KEYBOARD_keychron_q1_rev_0102)
-#    include "rev_0102.h"
+#if   defined(KEYBOARD_keychron_q1_ansi)
+#    include "ansi.h"
+#elif defined(KEYBOARD_keychron_q1_ansi_encoder)
+#    include "ansi_encoder.h"
+#elif defined(KEYBOARD_keychron_q1_iso)
+#    include "iso.h"
 #elif defined(KEYBOARD_keychron_q1_iso_encoder)
 #    include "iso_encoder.h"
 #endif

+ 2 - 2
keyboards/keychron/q1/readme.md

@@ -10,11 +10,11 @@ A customizable 75% keyboard.
 
 Make example for this keyboard (after setting up your build environment):
 
-    make keychron/q1/rev_0100:default
+  make keychron/q1/ansi:default
 
 Flashing example for this keyboard:
 
-    make keychron/q1/rev_0100:default:flash
+  make keychron/q1/ansi:default:flash
 
 **Reset Key**: Hold down the key located at *K00*, commonly programmed as *Esc* while plugging in the keyboard.
 

+ 0 - 97
keyboards/keychron/q1/rev_0100/info.json

@@ -1,97 +0,0 @@
-{
-    "keyboard_name": "Q1", 
-    "manufacturer": "Keychron",
-    "url": "https://github.com/Keychron", 
-    "maintainer": "lalalademaxiya1", 
-    "usb": {
-    	"vid": "0x3434",
-    	"pid": "0x0100",
-    	"device_version": "1.0.0"
-    },
-    "layouts": {
-        "LAYOUT_ansi_82": {
-            "layout": [{"label":"Esc", "x":0, "y":0}, 
-	    {"label":"F1", "x":1.25, "y":0}, 
-	    {"label":"F2", "x":2.25, "y":0}, 
-	    {"label":"F3", "x":3.25, "y":0},
-	    {"label":"F4", "x":4.25, "y":0},
-	    {"label":"F5", "x":5.5, "y":0}, 
-	    {"label":"F6", "x":6.5, "y":0},
-	    {"label":"F7", "x":7.5, "y":0},
-	    {"label":"F8", "x":8.5, "y":0},
-	    {"label":"F9", "x":9.75, "y":0},
-	    {"label":"F10", "x":10.75, "y":0}, 
-	    {"label":"F11", "x":11.75, "y":0}, 
-	    {"label":"F12", "x":12.75, "y":0}, 
-	    {"label":"Delete", "x":14, "y":0}, 
-	    {"label":"Insert", "x":15.25, "y":0}, 
-	    {"label":"~", "x":0, "y":1},
-	    {"label":"!", "x":1, "y":1}, 
-	    {"label":"@", "x":2, "y":1}, 
-	    {"label":"#", "x":3, "y":1}, 
-	    {"label":"$", "x":4, "y":1}, 
-	    {"label":"%", "x":5, "y":1}, 
-	    {"label":"^", "x":6, "y":1}, 
-	    {"label":"&", "x":7, "y":1}, 
-	    {"label":"*", "x":8, "y":1},
-	    {"label":"(", "x":9, "y":1}, 
-	    {"label":")", "x":10, "y":1},
-	    {"label":"_", "x":11, "y":1}, 
-	    {"label":"+", "x":12, "y":1}, 
-	    {"label":"Backspace", "x":13, "y":1, "w":2}, 
-	    {"label":"Page Up", "x":15.25, "y":1}, 
-	    {"label":"Tab", "x":0, "y":2, "w":1.5},
-	    {"label":"Q", "x":1.5, "y":2},
-	    {"label":"W", "x":2.5, "y":2}, 
-	    {"label":"E", "x":3.5, "y":2}, 
-	    {"label":"R", "x":4.5, "y":2}, 
-	    {"label":"T", "x":5.5, "y":2}, 
-	    {"label":"Y", "x":6.5, "y":2}, 
-	    {"label":"U", "x":7.5, "y":2}, 
-	    {"label":"I", "x":8.5, "y":2}, 
-	    {"label":"O", "x":9.5, "y":2}, 
-	    {"label":"P", "x":10.5, "y":2}, 
-	    {"label":"{", "x":11.5, "y":2}, 
-	    {"label":"}", "x":12.5, "y":2},
-	    {"label":"|", "x":13.5, "y":2, "w":1.5}, 
-	    {"label":"Page Down", "x":15.25, "y":2}, 
-	    {"label":"Caps Lock", "x":0, "y":3, "w":1.75}, 
-	    {"label":"A", "x":1.75, "y":3}, 
-	    {"label":"S", "x":2.75, "y":3},
-	    {"label":"D", "x":3.75, "y":3}, 
-	    {"label":"F", "x":4.75, "y":3}, 
-	    {"label":"G", "x":5.75, "y":3}, 
-	    {"label":"H", "x":6.75, "y":3}, 
-	    {"label":"J", "x":7.75, "y":3}, 
-	    {"label":"K", "x":8.75, "y":3}, 
-	    {"label":"L", "x":9.75, "y":3}, 
-	    {"label":":", "x":10.75, "y":3},
-	    {"label":"\"", "x":11.75, "y":3}, 
-	    {"label":"Enter", "x":12.75, "y":3, "w":2.25}, 
-	    {"label":"Home", "x":15.25, "y":3}, 
-	    {"label":"Shift", "x":0, "y":4, "w":2.25}, 
-	    {"label":"Z", "x":2.25, "y":4}, 
-	    {"label":"X", "x":3.25, "y":4}, 
-	    {"label":"C", "x":4.25, "y":4}, 
-	    {"label":"V", "x":5.25, "y":4}, 
-	    {"label":"B", "x":6.25, "y":4}, 
-	    {"label":"N", "x":7.25, "y":4}, 
-	    {"label":"M", "x":8.25, "y":4},
-	    {"label":"<", "x":9.25, "y":4}, 
-	    {"label":">", "x":10.25, "y":4}, 
-	    {"label":"?", "x":11.25, "y":4}, 
-	    {"label":"Shift", "x":12.25, "y":4, "w":1.75},
-	    {"label":"\u2191", "x":14.25, "y":4.25}, 
-	    {"label":"Ctrl", "x":0, "y":5, "w":1.25}, 
-	    {"label":"Win", "x":1.25, "y":5, "w":1.25},
-	    {"label":"Alt", "x":2.5, "y":5, "w":1.25}, 
-	    {"x":3.75, "y":5, "w":6.25}, 
-	    {"label":"Alt", "x":10, "y":5}, 
-	    {"label":"Fn", "x":11, "y":5}, 
-	    {"label":"Ctrl", "x":12, "y":5}, 
-	    {"label":"\u2190", "x":13.25, "y":5.25}, 
-	    {"label":"\u2193", "x":14.25, "y":5.25}, 
-	    {"label":"\u2192", "x":15.25, "y":5.25}]
-        }
-    }
-}

+ 0 - 107
keyboards/keychron/q1/rev_0100/keymaps/via/keymap.c

@@ -1,107 +0,0 @@
-/* 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
-};
-
-enum custom_keycodes {
-    KC_MISSION_CONTROL = USER00,
-    KC_LAUNCHPAD,
-    KC_TASK,
-    KC_FLXP
-};
-
-#define KC_MCTL KC_MISSION_CONTROL
-#define KC_LPAD KC_LAUNCHPAD
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    [MAC_BASE] = LAYOUT_ansi_82(
-        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_BSLS,            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_ENT,             KC_HOME,
-        KC_LSFT,            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_ansi_82(
-        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,
-        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),
-
-    [WIN_BASE] = LAYOUT_ansi_82(
-        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_BSLS,            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_ENT,             KC_HOME,
-        KC_LSFT,            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_ansi_82(
-        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,
-        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)
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    switch (keycode) {
-        case KC_MISSION_CONTROL:
-            if (record->event.pressed) {
-                host_consumer_send(0x29F);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        case KC_LAUNCHPAD:
-            if (record->event.pressed) {
-                host_consumer_send(0x2A0);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        case KC_TASK:
-            if (record->event.pressed) {
-                register_code(KC_LWIN);
-                register_code(KC_TAB);
-            } else {
-                unregister_code(KC_LWIN);
-                unregister_code(KC_TAB);
-            }
-            return false;  // Skip all further processing of this key
-        case KC_FLXP:
-            if (record->event.pressed) {
-                register_code(KC_LWIN);
-                register_code(KC_E);
-            } else {
-                unregister_code(KC_LWIN);
-                unregister_code(KC_E);
-            }
-            return false;  // Skip all further processing of this key
-        default:
-            return true;  // Process all other keycodes normally
-    }
-}

+ 0 - 2
keyboards/keychron/q1/rev_0100/keymaps/via/rules.mk

@@ -1,2 +0,0 @@
-VIA_ENABLE = yes
-MOUSEKEY_ENABLE = no

+ 0 - 37
keyboards/keychron/q1/rev_0100/rev_0100.h

@@ -1,37 +0,0 @@
-/* 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/>.
- */
-
-#pragma once
-
-#include "quantum.h"
-
-#define xxx KC_NO
-
-#define LAYOUT_ansi_82( \
-	K00,       K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4E, K0E, \
-	K10, K11,  K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,      K1E, \
-	K20, K21,  K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D,      K2E, \
-	K30, K31,  K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B,      K3D,      K3E, \
-	K40,       K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B,      K4D, K3C,      \
-	K50, K51,  K52,                K56,                K5A, K5B, K5C, K5D, K4C, K5E  \
-) { \
-	{ K00, xxx,  K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B,  K0C, K0D, K0E }, \
-	{ K10, K11,  K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B,  K1C, K1D, K1E }, \
-	{ K20, K21,  K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,  K2C, K2D, K2E }, \
-	{ K30, K31,  K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B,  K3C, K3D, K3E }, \
-	{ K40, xxx,  K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B,  K4C, K4D, K4E }, \
-	{ K50, K51,  K52, xxx, xxx, xxx, K56, xxx, xxx, xxx, K5A, K5B,  K5C, K5D, K5E }  \
-}

+ 0 - 197
keyboards/keychron/q1/rev_0101/info.json

@@ -1,197 +0,0 @@
-{
-    "keyboard_name": "Q1",
-    "manufacturer": "Keychron",
-    "url": "https://github.com/Keychron",
-    "maintainer": "lalalademaxiya1",
-    "usb": {
-        "vid": "0x3434",
-        "pid": "0x0101",
-        "device_version": "1.0.0"
-    },
-    "layouts": {
-        "LAYOUT_ansi_82": {
-            "layout": [
-                {"label":"Esc", "x":0, "y":0},
-                {"label":"F1", "x":1.25, "y":0},
-                {"label":"F2", "x":2.25, "y":0},
-                {"label":"F3", "x":3.25, "y":0},
-                {"label":"F4", "x":4.25, "y":0},
-                {"label":"F5", "x":5.5, "y":0},
-                {"label":"F6", "x":6.5, "y":0},
-                {"label":"F7", "x":7.5, "y":0},
-                {"label":"F8", "x":8.5, "y":0},
-                {"label":"F9", "x":9.75, "y":0},
-                {"label":"F10", "x":10.75, "y":0},
-                {"label":"F11", "x":11.75, "y":0},
-                {"label":"F12", "x":12.75, "y":0},
-                {"label":"Delete", "x":14, "y":0},
-                {"label":"Mute", "x":15.25, "y":0},
-
-                {"label":"`~", "x":0, "y":1.25},
-                {"label":"1!", "x":1, "y":1.25},
-                {"label":"2@", "x":2, "y":1.25},
-                {"label":"3#", "x":3, "y":1.25},
-                {"label":"4$", "x":4, "y":1.25},
-                {"label":"5%", "x":5, "y":1.25},
-                {"label":"6^", "x":6, "y":1.25},
-                {"label":"7&", "x":7, "y":1.25},
-                {"label":"8*", "x":8, "y":1.25},
-                {"label":"9(", "x":9, "y":1.25},
-                {"label":"0)", "x":10, "y":1.25},
-                {"label":"-_", "x":11, "y":1.25},
-                {"label":"=+", "x":12, "y":1.25},
-                {"label":"Backspace", "x":13, "y":1.25, "w":2},
-                {"label":"Page Up", "x":15.25, "y":1.25},
-
-                {"label":"Tab", "x":0, "y":2.25, "w":1.5},
-                {"label":"Q", "x":1.5, "y":2.25},
-                {"label":"W", "x":2.5, "y":2.25},
-                {"label":"E", "x":3.5, "y":2.25},
-                {"label":"R", "x":4.5, "y":2.25},
-                {"label":"T", "x":5.5, "y":2.25},
-                {"label":"Y", "x":6.5, "y":2.25},
-                {"label":"U", "x":7.5, "y":2.25},
-                {"label":"I", "x":8.5, "y":2.25},
-                {"label":"O", "x":9.5, "y":2.25},
-                {"label":"P", "x":10.5, "y":2.25},
-                {"label":"[{", "x":11.5, "y":2.25},
-                {"label":"]}", "x":12.5, "y":2.25},
-                {"label":"\\|", "x":13.5, "y":2.25, "w":1.5},
-                {"label":"Page Down", "x":15.25, "y":2.25},
-
-                {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
-                {"label":"A", "x":1.75, "y":3.25},
-                {"label":"S", "x":2.75, "y":3.25},
-                {"label":"D", "x":3.75, "y":3.25},
-                {"label":"F", "x":4.75, "y":3.25},
-                {"label":"G", "x":5.75, "y":3.25},
-                {"label":"H", "x":6.75, "y":3.25},
-                {"label":"J", "x":7.75, "y":3.25},
-                {"label":"K", "x":8.75, "y":3.25},
-                {"label":"L", "x":9.75, "y":3.25},
-                {"label":";:", "x":10.75, "y":3.25},
-                {"label":"'\"", "x":11.75, "y":3.25},
-                {"label":"Enter", "x":12.75, "y":3.25, "w":2.25},
-                {"label":"Home", "x":15.25, "y":3.25},
-
-                {"label":"Shift", "x":0, "y":4.25, "w":2.25},
-                {"label":"Z", "x":2.25, "y":4.25},
-                {"label":"X", "x":3.25, "y":4.25},
-                {"label":"C", "x":4.25, "y":4.25},
-                {"label":"V", "x":5.25, "y":4.25},
-                {"label":"B", "x":6.25, "y":4.25},
-                {"label":"N", "x":7.25, "y":4.25},
-                {"label":"M", "x":8.25, "y":4.25},
-                {"label":",<", "x":9.25, "y":4.25},
-                {"label":".>", "x":10.25, "y":4.25},
-                {"label":"/?", "x":11.25, "y":4.25},
-                {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
-                {"label":"Up", "x":14.25, "y":4.5},
-
-                {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
-                {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
-                {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
-                {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
-                {"label":"Alt", "x":10, "y":5.25},
-                {"label":"Fn", "x":11, "y":5.25},
-                {"label":"Ctrl", "x":12, "y":5.25},
-                {"label":"Left", "x":13.25, "y":5.5},
-                {"label":"Down", "x":14.25, "y":5.5},
-                {"label":"Right", "x":15.25, "y":5.5}
-            ]
-        },
-        "LAYOUT_all": {
-            "layout": [
-                {"label":"Esc", "x":0, "y":0.5},
-                {"label":"F1", "x":1.25, "y":0.5},
-                {"label":"F2", "x":2.25, "y":0.5},
-                {"label":"F3", "x":3.25, "y":0.5},
-                {"label":"F4", "x":4.25, "y":0.5},
-                {"label":"F5", "x":5.5, "y":0.5},
-                {"label":"F6", "x":6.5, "y":0.5},
-                {"label":"F7", "x":7.5, "y":0.5},
-                {"label":"F8", "x":8.5, "y":0.5},
-                {"label":"F9", "x":9.75, "y":0.5},
-                {"label":"F10", "x":10.75, "y":0.5},
-                {"label":"F11", "x":11.75, "y":0.5},
-                {"label":"F12", "x":12.75, "y":0.5},
-                {"label":"Delete", "x":14, "y":0.5},
-                {"label":"CCW", "x":15.15, "y":0, "w":0.6, "h":0.5},
-                {"label":"Mute", "x":15.25, "y":0.5},
-                {"label":"CW", "x":15.75, "y":0, "w":0.6, "h":0.5},
-
-                {"label":"`~", "x":0, "y":1.75},
-                {"label":"1!", "x":1, "y":1.75},
-                {"label":"2@", "x":2, "y":1.75},
-                {"label":"3#", "x":3, "y":1.75},
-                {"label":"4$", "x":4, "y":1.75},
-                {"label":"5%", "x":5, "y":1.75},
-                {"label":"6^", "x":6, "y":1.75},
-                {"label":"7&", "x":7, "y":1.75},
-                {"label":"8*", "x":8, "y":1.75},
-                {"label":"9(", "x":9, "y":1.75},
-                {"label":"0)", "x":10, "y":1.75},
-                {"label":"-_", "x":11, "y":1.75},
-                {"label":"=+", "x":12, "y":1.75},
-                {"label":"Backspace", "x":13, "y":1.75, "w":2},
-                {"label":"Page Up", "x":15.25, "y":1.75},
-
-                {"label":"Tab", "x":0, "y":2.75, "w":1.5},
-                {"label":"Q", "x":1.5, "y":2.75},
-                {"label":"W", "x":2.5, "y":2.75},
-                {"label":"E", "x":3.5, "y":2.75},
-                {"label":"R", "x":4.5, "y":2.75},
-                {"label":"T", "x":5.5, "y":2.75},
-                {"label":"Y", "x":6.5, "y":2.75},
-                {"label":"U", "x":7.5, "y":2.75},
-                {"label":"I", "x":8.5, "y":2.75},
-                {"label":"O", "x":9.5, "y":2.75},
-                {"label":"P", "x":10.5, "y":2.75},
-                {"label":"[{", "x":11.5, "y":2.75},
-                {"label":"]}", "x":12.5, "y":2.75},
-                {"label":"\\|", "x":13.5, "y":2.75, "w":1.5},
-                {"label":"Page Down", "x":15.25, "y":2.75},
-
-                {"label":"Caps Lock", "x":0, "y":3.75, "w":1.75},
-                {"label":"A", "x":1.75, "y":3.75},
-                {"label":"S", "x":2.75, "y":3.75},
-                {"label":"D", "x":3.75, "y":3.75},
-                {"label":"F", "x":4.75, "y":3.75},
-                {"label":"G", "x":5.75, "y":3.75},
-                {"label":"H", "x":6.75, "y":3.75},
-                {"label":"J", "x":7.75, "y":3.75},
-                {"label":"K", "x":8.75, "y":3.75},
-                {"label":"L", "x":9.75, "y":3.75},
-                {"label":";:", "x":10.75, "y":3.75},
-                {"label":"'\"", "x":11.75, "y":3.75},
-                {"label":"Enter", "x":12.75, "y":3.75, "w":2.25},
-                {"label":"Home", "x":15.25, "y":3.75},
-
-                {"label":"Shift", "x":0, "y":4.75, "w":2.25},
-                {"label":"Z", "x":2.25, "y":4.75},
-                {"label":"X", "x":3.25, "y":4.75},
-                {"label":"C", "x":4.25, "y":4.75},
-                {"label":"V", "x":5.25, "y":4.75},
-                {"label":"B", "x":6.25, "y":4.75},
-                {"label":"N", "x":7.25, "y":4.75},
-                {"label":"M", "x":8.25, "y":4.75},
-                {"label":",<", "x":9.25, "y":4.75},
-                {"label":".>", "x":10.25, "y":4.75},
-                {"label":"/?", "x":11.25, "y":4.75},
-                {"label":"Shift", "x":12.25, "y":4.75, "w":1.75},
-                {"label":"Up", "x":14.25, "y":5},
-
-                {"label":"Ctrl", "x":0, "y":5.75, "w":1.25},
-                {"label":"Win", "x":1.25, "y":5.75, "w":1.25},
-                {"label":"Alt", "x":2.5, "y":5.75, "w":1.25},
-                {"label":"Space", "x":3.75, "y":5.75, "w":6.25},
-                {"label":"Alt", "x":10, "y":5.75},
-                {"label":"Fn", "x":11, "y":5.75},
-                {"label":"Ctrl", "x":12, "y":5.75},
-                {"label":"Left", "x":13.25, "y":6},
-                {"label":"Down", "x":14.25, "y":6},
-                {"label":"Right", "x":15.25, "y":6}
-            ]
-        }
-    }
-}

+ 0 - 98
keyboards/keychron/q1/rev_0101/keymaps/via/keymap.c

@@ -1,98 +0,0 @@
-/* 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
-};
-
-enum custom_keycodes {
-    KC_MISSION_CONTROL = USER00,
-    KC_LAUNCHPAD
-};
-
-#define KC_MCTL KC_MISSION_CONTROL
-#define KC_LPAD KC_LAUNCHPAD
-#define KC_TASK G(KC_TAB)
-#define KC_FLXP G(KC_E)
-
-const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
-    [MAC_BASE] = LAYOUT_all(
-        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_VOLD,  KC_MUTE,  KC_VOLU,
-        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_BSLS,            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_ENT,             KC_HOME,
-        KC_LSFT,            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_all(
-        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,  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,
-        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),
-
-    [WIN_BASE] = LAYOUT_all(
-        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_VOLD,  KC_MUTE,  KC_VOLU,
-        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_BSLS,            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_ENT,             KC_HOME,
-        KC_LSFT,            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_all(
-        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,  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,
-        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)
-};
-
-#if defined(ENCODER_MAP_ENABLE)
-const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
-    [MAC_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
-    [MAC_FN]   = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
-    [WIN_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
-    [WIN_FN]   = { ENCODER_CCW_CW(RGB_VAD, RGB_VAI) },
-};
-#endif
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    switch (keycode) {
-        case KC_MISSION_CONTROL:
-            if (record->event.pressed) {
-                host_consumer_send(0x29F);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        case KC_LAUNCHPAD:
-            if (record->event.pressed) {
-                host_consumer_send(0x2A0);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        default:
-            return true;  // Process all other keycodes normally
-    }
-}

+ 0 - 52
keyboards/keychron/q1/rev_0101/rev_0101.h

@@ -1,52 +0,0 @@
-/* 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/>.
- */
-
-#pragma once
-
-#include "quantum.h"
-
-#define xxx KC_NO
-
-#define LAYOUT_all( \
-        K00,       K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4E,   K57, K0E, K58, \
-        K10, K11,  K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,      K1E, \
-        K20, K21,  K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D,      K2E, \
-        K30, K31,  K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B,      K3D,      K3E, \
-        K40,       K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B,      K4D, K3C,      \
-        K50, K51,  K52,                K56,                K5A, K5B, K5C, K5D, K4C, K5E  \
-    ) { \
-        { K00, xxx,  K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B,  K0C, K0D, K0E }, \
-        { K10, K11,  K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B,  K1C, K1D, K1E }, \
-        { K20, K21,  K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,  K2C, K2D, K2E }, \
-        { K30, K31,  K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B,  K3C, K3D, K3E }, \
-        { K40, xxx,  K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B,  K4C, K4D, K4E }, \
-        { K50, K51,  K52, xxx, xxx, xxx, K56, K57, K58, xxx, K5A, K5B,  K5C, K5D, K5E }  \
-    }
-#define LAYOUT_ansi_82( \
-        K00,       K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4E, K0E, \
-        K10, K11,  K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,      K1E, \
-        K20, K21,  K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D,      K2E, \
-        K30, K31,  K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B,      K3D,      K3E, \
-        K40,       K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B,      K4D, K3C,      \
-        K50, K51,  K52,                K56,                K5A, K5B, K5C, K5D, K4C, K5E  \
-    ) { \
-        { K00, xxx,  K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B,  K0C, K0D, K0E }, \
-        { K10, K11,  K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B,  K1C, K1D, K1E }, \
-        { K20, K21,  K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,  K2C, K2D, K2E }, \
-        { K30, K31,  K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B,  K3C, K3D, K3E }, \
-        { K40, xxx,  K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B,  K4C, K4D, K4E }, \
-        { K50, K51,  K52, xxx, xxx, xxx, K56, xxx, xxx, xxx, K5A, K5B,  K5C, K5D, K5E }  \
-    }

+ 0 - 105
keyboards/keychron/q1/rev_0102/info.json

@@ -1,105 +0,0 @@
-{
-    "keyboard_name": "Q1", 
-    "manufacturer": "Keychron",
-    "url": "https://github.com/Keychron", 
-    "maintainer": "lalalademaxiya1", 
-    "usb": {
-        "vid": "0x3434",
-        "pid": "0x0102",
-        "device_version": "1.0.0"
-    },
-    "layouts": {
-        "LAYOUT_iso_83": {
-            "layout": [
-                {"label":"Esc", "x":0, "y":0},
-                {"label":"F1", "x":1.25, "y":0},
-                {"label":"F2", "x":2.25, "y":0},
-                {"label":"F3", "x":3.25, "y":0},
-                {"label":"F4", "x":4.25, "y":0},
-                {"label":"F5", "x":5.5, "y":0},
-                {"label":"F6", "x":6.5, "y":0},
-                {"label":"F7", "x":7.5, "y":0},
-                {"label":"F8", "x":8.5, "y":0},
-                {"label":"F9", "x":9.75, "y":0},
-                {"label":"F10", "x":10.75, "y":0},
-                {"label":"F11", "x":11.75, "y":0},
-                {"label":"F12", "x":12.75, "y":0},
-                {"label":"Delete", "x":14, "y":0},
-                {"label":"Insert", "x":15.25, "y":0},
-
-                {"label":"~", "x":0, "y":1.25},
-                {"label":"!", "x":1, "y":1.25},
-                {"label":"@", "x":2, "y":1.25},
-                {"label":"#", "x":3, "y":1.25},
-                {"label":"$", "x":4, "y":1.25},
-                {"label":"%", "x":5, "y":1.25},
-                {"label":"^", "x":6, "y":1.25},
-                {"label":"&", "x":7, "y":1.25},
-                {"label":"*", "x":8, "y":1.25},
-                {"label":"(", "x":9, "y":1.25},
-                {"label":")", "x":10, "y":1.25},
-                {"label":"_", "x":11, "y":1.25},
-                {"label":"+", "x":12, "y":1.25},
-                {"label":"Backspace", "x":13, "y":1.25, "w":2},
-                {"label":"Page Up", "x":15.25, "y":1.25},
-
-                {"label":"Tab", "x":0, "y":2.25, "w":1.5},
-                {"label":"Q", "x":1.5, "y":2.25},
-                {"label":"W", "x":2.5, "y":2.25},
-                {"label":"E", "x":3.5, "y":2.25},
-                {"label":"R", "x":4.5, "y":2.25},
-                {"label":"T", "x":5.5, "y":2.25},
-                {"label":"Y", "x":6.5, "y":2.25},
-                {"label":"U", "x":7.5, "y":2.25},
-                {"label":"I", "x":8.5, "y":2.25},
-                {"label":"O", "x":9.5, "y":2.25},
-                {"label":"P", "x":10.5, "y":2.25},
-                {"label":"{", "x":11.5, "y":2.25},
-                {"label":"}", "x":12.5, "y":2.25},
-                {"label":"Page Down", "x":15.25, "y":2.25},
-
-                {"label":"Caps Lock", "x":0, "y":3.25, "w":1.75},
-                {"label":"A", "x":1.75, "y":3.25},
-                {"label":"S", "x":2.75, "y":3.25},
-                {"label":"D", "x":3.75, "y":3.25},
-                {"label":"F", "x":4.75, "y":3.25},
-                {"label":"G", "x":5.75, "y":3.25},
-                {"label":"H", "x":6.75, "y":3.25},
-                {"label":"J", "x":7.75, "y":3.25},
-                {"label":"K", "x":8.75, "y":3.25},
-                {"label":"L", "x":9.75, "y":3.25},
-                {"label":":", "x":10.75, "y":3.25},
-                {"label":"\"", "x":11.75, "y":3.25},
-                {"label":"#~", "x":12.75, "y":3.25},
-                {"label":"Enter", "x":13.75, "y":2.25, "w":1.25, "h":2},
-                {"label":"Home", "x":15.25, "y":3.25},
-
-                {"label":"Shift", "x":0, "y":4.25, "w":1.25},
-                {"label":"\\|", "x":1.25, "y":4.25},
-                {"label":"Z", "x":2.25, "y":4.25},
-                {"label":"X", "x":3.25, "y":4.25},
-                {"label":"C", "x":4.25, "y":4.25},
-                {"label":"V", "x":5.25, "y":4.25},
-                {"label":"B", "x":6.25, "y":4.25},
-                {"label":"N", "x":7.25, "y":4.25},
-                {"label":"M", "x":8.25, "y":4.25},
-                {"label":"<", "x":9.25, "y":4.25},
-                {"label":">", "x":10.25, "y":4.25},
-                {"label":"?", "x":11.25, "y":4.25},
-                {"label":"Shift", "x":12.25, "y":4.25, "w":1.75},
-                {"label":"\u2191", "x":14.25, "y":4.5},
-
-                {"label":"Ctrl", "x":0, "y":5.25, "w":1.25},
-                {"label":"Win", "x":1.25, "y":5.25, "w":1.25},
-                {"label":"Alt", "x":2.5, "y":5.25, "w":1.25},
-                {"label":"Space", "x":3.75, "y":5.25, "w":6.25},
-                {"label":"Alt", "x":10, "y":5.25},
-                {"label":"Fn", "x":11, "y":5.25},
-                {"label":"Ctrl", "x":12, "y":5.25},
-                {"label":"\u2190", "x":13.25, "y":5.5},
-                {"label":"\u2193", "x":14.25, "y":5.5},
-                {"label":"\u2192", "x":15.25, "y":5.5}
-            ]
-        }
-    }
-}

+ 0 - 107
keyboards/keychron/q1/rev_0102/keymaps/via/keymap.c

@@ -1,107 +0,0 @@
-/* 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
-};
-
-enum custom_keycodes {
-    KC_MISSION_CONTROL = USER00,
-    KC_LAUNCHPAD,
-    KC_TASK,
-    KC_FLXP
-};
-
-#define KC_MCTL KC_MISSION_CONTROL
-#define KC_LPAD KC_LAUNCHPAD
-
-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_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,   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_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)
-};
-
-bool process_record_user(uint16_t keycode, keyrecord_t *record) {
-    switch (keycode) {
-        case KC_MISSION_CONTROL:
-            if (record->event.pressed) {
-                host_consumer_send(0x29F);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        case KC_LAUNCHPAD:
-            if (record->event.pressed) {
-                host_consumer_send(0x2A0);
-            } else {
-                host_consumer_send(0);
-            }
-            return false;  // Skip all further processing of this key
-        case KC_TASK:
-            if (record->event.pressed) {
-                register_code(KC_LWIN);
-                register_code(KC_TAB);
-            } else {
-                unregister_code(KC_LWIN);
-                unregister_code(KC_TAB);
-            }
-            return false;  // Skip all further processing of this key
-        case KC_FLXP:
-            if (record->event.pressed) {
-                register_code(KC_LWIN);
-                register_code(KC_E);
-            } else {
-                unregister_code(KC_LWIN);
-                unregister_code(KC_E);
-            }
-            return false;  // Skip all further processing of this key
-        default:
-            return true;  // Process all other keycodes normally
-    }
-}

+ 0 - 2
keyboards/keychron/q1/rev_0102/keymaps/via/rules.mk

@@ -1,2 +0,0 @@
-VIA_ENABLE = yes
-MOUSEKEY_ENABLE = no

+ 0 - 37
keyboards/keychron/q1/rev_0102/rev_0102.h

@@ -1,37 +0,0 @@
-/* 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/>.
- */
-
-#pragma once
-
-#include "quantum.h"
-
-#define xxx KC_NO
-
-#define LAYOUT_iso_83( \
-	K00,       K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K4E, K0E, \
-	K10, K11,  K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D,      K1E, \
-	K20, K21,  K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C,           K2E, \
-	K30, K31,  K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3D, K2D,      K3E, \
-	K40, K41,  K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B,      K4D, K3C,      \
-	K50, K51,  K52,                K56,                K5A, K5B, K5C, K5D, K4C, K5E  \
-) { \
-	{ K00, xxx,  K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B,  K0C, K0D, K0E }, \
-	{ K10, K11,  K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B,  K1C, K1D, K1E }, \
-	{ K20, K21,  K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B,  K2C, K2D, K2E }, \
-	{ K30, K31,  K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B,  K3C, K3D, K3E }, \
-	{ K40, K41,  K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B,  K4C, K4D, K4E }, \
-	{ K50, K51,  K52, xxx, xxx, xxx, K56, xxx, xxx, xxx, K5A, K5B,  K5C, K5D, K5E }  \
-}

+ 24 - 18
keyboards/keychron/q2/rev_0110/rev_0110.c → keyboards/keychron/q2/ansi/ansi.c

@@ -14,7 +14,7 @@
  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
  */
 
-#include "quantum.h"
+#include "ansi.h"
 
 #ifdef RGB_MATRIX_ENABLE
 const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
@@ -97,27 +97,33 @@ const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
     {1, F_16,   D_16,   E_16},
 };
 
+#define __ NO_LED
+
 led_config_t g_led_config = {
-     {
-        {   0,      1,      2,      3,      4,      5,      6,      7,      8,      9,     10,     11,     12,     13,     14  },
-        {  15,     16,     17,     18,     19,     20,     21,     22,     23,     24,     25,     26,     27,     28,     29  },
-        {  30,     31,     32,     33,     34,     35,     36,     37,     38,     39,     40,     41,     65,     42,     43  },
-        {  44, NO_LED,     45,     46,     47,     48,     49,     50,     51,     52,     53,     54, NO_LED,     55,     56  },
-        {  57,     58,     59, NO_LED, NO_LED, NO_LED,     60, NO_LED, NO_LED, NO_LED,     61,     62,     63,     64,     66  },
+    {
+        // Key Matrix to LED Index
+        { 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,  10, 11, 12, 13, 14 },
+        { 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
+        { 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 65, 42, 43 },
+        { 44, __, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, __, 55, 56 },
+        { 57, 58, 59, __, __, __, 60, __, __, __, 61, 62, 63, 64, 66 }
     },
     {
-        {0, 0}, {15, 0}, {30, 0}, {45, 0}, {60, 0}, {75, 0}, {90, 0}, {105, 0}, {120, 0}, {135, 0}, {150, 0}, {165, 0}, {180, 0}, {195, 0},           {224, 0},
-        {0,16}, {15,16}, {30,16}, {45,16}, {60,16}, {75,16}, {90,16}, {105,16}, {120,16}, {135,16}, {150,16}, {165,16}, {180,16}, {195,16},           {224,16},
-        {0,32}, {15,32}, {30,32}, {45,32}, {60,32}, {75,32}, {90,32}, {105,32}, {120,32}, {135,32}, {150,32}, {165,32},           {195,32},           {224,32},
-        {0,48},          {30,48}, {45,48}, {60,48}, {75,48}, {90,48}, {105,48}, {120,48}, {135,48}, {150,48}, {165,48},           {180,48}, {210,48},
-        {0,64}, {15,64}, {30,64},                            {90,64},                               {150,64}, {165,64}, {180,64}, {195,64}, {210,64}, {224,64},
+        // LED Index to Physical Position
+        {0,0},  {15,0},  {29,0},  {44,0},  {59,0},  {73,0},  {88,0},  {103,0},  {118,0},  {132,0},  {147,0},  {162,0},  {176,0},  {198,0},            {224,0},
+        {4,15}, {22,15}, {37,15}, {51,15}, {66,15}, {81,15}, {95,15}, {110,15}, {125,15}, {140,15}, {154,15}, {169,15}, {184,15}, {202,15},           {224,15},
+        {6,30}, {26,30}, {40,30}, {55,30}, {70,30}, {84,30}, {99,30}, {114,30}, {129,30}, {143,30}, {158,30}, {173,30},           {196,30},           {224,30},
+        {9,45},          {33,45}, {48,45}, {62,45}, {77,45}, {92,45}, {106,45}, {121,45}, {136,45}, {151,45}, {165,45},           {185,45}, {209,49},
+        {2,60}, {20,60}, {39,60},                            {94,60},                               {147,60}, {162,60}, {176,60}, {195,64}, {209,64}, {224,64}
     },
     {
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,          4,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,          4,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,    4,          4,          4,
-        4,          4,    4,    4,    4,    4,    4,    4,    4,    4,    4,          4,    4,
-        4,    4,    4,                      4,                      4,    4,    4,    4,    4,    4,
+        // RGB LED Index to Flag
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,    1,
+        1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1,    1,
+        1,    4, 4, 4, 4, 4, 4, 4, 4, 4, 4,    1, 1,
+        1, 1, 1,          4,          1, 1, 1, 1, 1, 1
     }
 };
-#endif
+
+#endif // RGB_MATRIX_ENABLE

+ 19 - 0
keyboards/keychron/q2/ansi/ansi.h

@@ -0,0 +1,19 @@
+/* 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/>.
+ */
+
+#pragma once
+
+#include "quantum.h"

+ 0 - 0
keyboards/keychron/q2/rev_0110/config.h → keyboards/keychron/q2/ansi/config.h


+ 88 - 0
keyboards/keychron/q2/ansi/info.json

@@ -0,0 +1,88 @@
+{
+    "keyboard_name": "Q2",
+    "manufacturer": "Keychron",
+    "url": "https://github.com/Keychron",
+    "maintainer": "lalalademaxiya1",
+    "usb": {
+        "vid": "0x3434",
+        "pid": "0x0110",
+        "device_version": "1.0.0"
+    },
+    "layouts": {
+        "LAYOUT_ansi_67": {
+            "layout": [
+                {"matrix":[0, 0], "x":0, "y":0.25},
+                {"matrix":[0, 1], "x":1, "y":0.25},
+                {"matrix":[0, 2], "x":2, "y":0.25},
+                {"matrix":[0, 3], "x":3, "y":0.25},
+                {"matrix":[0, 4], "x":4, "y":0.25},
+                {"matrix":[0, 5], "x":5, "y":0.25},
+                {"matrix":[0, 6], "x":6, "y":0.25},
+                {"matrix":[0, 7], "x":7, "y":0.25},
+                {"matrix":[0, 8], "x":8, "y":0.25},
+                {"matrix":[0, 9], "x":9, "y":0.25},
+                {"matrix":[0,10], "x":10, "y":0.25},
+                {"matrix":[0,11], "x":11, "y":0.25},
+                {"matrix":[0,12], "x":12, "y":0.25},
+                {"matrix":[0,13], "x":13, "y":0.25, "w":2},
+                {"matrix":[0,14], "x":15.25, "y":0},
+
+                {"matrix":[1, 0], "x":0, "y":1.25, "w":1.5},
+                {"matrix":[1, 1], "x":1.5, "y":1.25},
+                {"matrix":[1, 2], "x":2.5, "y":1.25},
+                {"matrix":[1, 3], "x":3.5, "y":1.25},
+                {"matrix":[1, 4], "x":4.5, "y":1.25},
+                {"matrix":[1, 5], "x":5.5, "y":1.25},
+                {"matrix":[1, 6], "x":6.5, "y":1.25},
+                {"matrix":[1, 7], "x":7.5, "y":1.25},
+                {"matrix":[1, 8], "x":8.5, "y":1.25},
+                {"matrix":[1, 9], "x":9.5, "y":1.25},
+                {"matrix":[1,10], "x":10.5, "y":1.25},
+                {"matrix":[1,11], "x":11.5, "y":1.25},
+                {"matrix":[1,12], "x":12.5, "y":1.25},
+                {"matrix":[1,13], "x":13.5, "y":1.25, "w":1.5},
+                {"matrix":[1,14], "x":15.25, "y":1.25},
+
+                {"matrix":[2, 0], "x":0, "y":2.25, "w":1.75},
+                {"matrix":[2, 1], "x":1.75, "y":2.25},
+                {"matrix":[2, 2], "x":2.75, "y":2.25},
+                {"matrix":[2, 3], "x":3.75, "y":2.25},
+                {"matrix":[2, 4], "x":4.75, "y":2.25},
+                {"matrix":[2, 5], "x":5.75, "y":2.25},
+                {"matrix":[2, 6], "x":6.75, "y":2.25},
+                {"matrix":[2, 7], "x":7.75, "y":2.25},
+                {"matrix":[2, 8], "x":8.75, "y":2.25},
+                {"matrix":[2, 9], "x":9.75, "y":2.25},
+                {"matrix":[2,10], "x":10.75, "y":2.25},
+                {"matrix":[2,11], "x":11.75, "y":2.25},
+                {"matrix":[2,13], "x":12.75, "y":2.25, "w":2.25},
+                {"matrix":[2,14], "x":15.25, "y":2.25},
+
+                {"matrix":[3, 0], "x":0, "y":3.25, "w":2.25},
+                {"matrix":[3, 2], "x":2.25, "y":3.25},
+                {"matrix":[3, 3], "x":3.25, "y":3.25},
+                {"matrix":[3, 4], "x":4.25, "y":3.25},
+                {"matrix":[3, 5], "x":5.25, "y":3.25},
+                {"matrix":[3, 6], "x":6.25, "y":3.25},
+                {"matrix":[3, 7], "x":7.25, "y":3.25},
+                {"matrix":[3, 8], "x":8.25, "y":3.25},
+                {"matrix":[3, 9], "x":9.25, "y":3.25},
+                {"matrix":[3,10], "x":10.25, "y":3.25},
+                {"matrix":[3,11], "x":11.25, "y":3.25},
+                {"matrix":[3,13], "x":12.25, "y":3.25, "w":1.75},
+                {"matrix":[3,14], "x":14.25, "y":3.5},
+
+                {"matrix":[4, 0], "x":0, "y":4.25, "w":1.25},
+                {"matrix":[4, 1], "x":1.25, "y":4.25, "w":1.25},
+                {"matrix":[4, 2], "x":2.5, "y":4.25, "w":1.25},
+                {"matrix":[4, 6], "x":3.75, "y":4.25, "w":6.25},
+                {"matrix":[4,10], "x":10, "y":4.25},
+                {"matrix":[4,11], "x":11, "y":4.25},
+                {"matrix":[4,12], "x":12, "y":4.25},
+                {"matrix":[4,13], "x":13.25, "y":4.5},
+                {"matrix":[2,12], "x":14.25, "y":4.5},
+                {"matrix":[4,14], "x":15.25, "y":4.5}
+            ]
+        }
+    }
+}

برخی فایل ها در این مقایسه diff نمایش داده نمی شوند زیرا تعداد فایل ها بسیار زیاد است