Merge remote-tracking branch 'origin/develop' into xap

This commit is contained in:
QMK Bot 2022-11-08 16:23:14 +00:00
commit 26cfc07723
36 changed files with 1067 additions and 198 deletions

View File

@ -0,0 +1,135 @@
/* Copyright 2022 DOIO
* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
* Copyright 2022 Ryan Anderson <ryan@michonline.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
// OLED animation
#include "lib/layer_status/layer_status.h"
// Each layer gets a name for readability, which is then used in the keymap matrix below.
// The underscores don't mean anything - you can have a layer called STUFF or any other name.
// Layer names don't all need to be of the same length, obviously, and you can also skip them
// entirely and just use numbers.
enum layer_names {
_BASE = 0,
_FN,
_FN1,
_FN2,
};
// enum layer_keycodes { };
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
C-DC-EM-DM-E Ply TO1
5 6 7 8
9 0 Ent
Mut
Fn2
! @ # $
% ^ & *
( )
*/
/* Row: 0 1 2 3 4 5 6 */
[_BASE] = LAYOUT(C(KC_D), C(KC_E), LCMD(KC_D), LCMD(KC_E), KC_MPLY,
KC_5, KC_6, LCTL(LCMD(KC_H)), KC_8, TO(_FN),
KC_9, KC_0, KC_UP, KC_ENT, KC_MUTE,
MO(_FN2), KC_LEFT, KC_DOWN, KC_RIGHT),
/*
*/
/* Row: 0 1 2 3 4 5 6 */
[_FN] = LAYOUT(_______, _______, _______, _______, _______,
_______, _______, _______, _______, TO(_FN1),
_______, _______, _______, _______, _______,
_______, _______, _______, _______),
/*
*/
/* Row: 0 1 2 3 4 5 6 */
[_FN1] = LAYOUT(_______, _______, _______, _______, _______,
_______, _______, _______, _______, TO(_FN2),
_______, _______, _______, _______, _______,
_______, _______, _______, _______),
/*
SpiSpd TO0
SaiSad
TogModHui
VaiHudVad
*/
/* Row: 0 1 2 3 4 5 6 */
[_FN2] = LAYOUT(RGB_SPI, RGB_SPD, _______, QK_BOOT, _______,
RGB_SAI, RGB_SAD, _______, _______, TO(_BASE),
RGB_TOG, RGB_MOD, RGB_HUI, _______, _______,
_______, RGB_VAI, RGB_HUD, RGB_VAD),
};
// clang-format on
#ifdef OLED_ENABLE
bool oled_task_user(void) {
render_layer_status();
return true;
}
#endif
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_BASE] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[_FN] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[_FN2] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[_BASE] = {ENCODER_CCW_CW(KC_MPRV, KC_MNXT), ENCODER_CCW_CW(KC_PGDN, KC_PGUP), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
};
#endif

View File

@ -0,0 +1,10 @@
# pugmajere's Google Meet optimized version of the default keymap
A lightly modified version of the default keymap.
The top row is converted to keys used for muting audio and video in
Google Meet, in both Linux and MacOS. (Yes, they annoyingly have
different conventions.)
The ASCII-art depiction uses "C-E" to mean "ctrl-e", and "M-E" to mean
CMD(GUI) and "e", roughly following Emacs naming conventions.

View File

@ -0,0 +1,2 @@
# Encoder enabled
ENCODER_MAP_ENABLE = yes

View File

@ -1,4 +1,4 @@
/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
*
* 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
@ -18,11 +18,11 @@
#include "config_common.h"
/* key matrix size */
/* Key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 15
/* key matrix pins */
/* Key matrix pins */
#define MATRIX_ROW_PINS { B0, B1, B2, B3, B7 }
#define MATRIX_COL_PINS { D0, D1, D2, D3, D5, D4, D6, D7, B4, F7, F6, F5, F4, F1, F0 }

View File

@ -5,7 +5,7 @@
"maintainer": "HorrorTroll",
"usb": {
"vid": "0x7516",
"pid": "0x6003",
"pid": "0x7000",
"device_version": "0.0.1"
},
"layouts": {

View File

@ -60,7 +60,7 @@ 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_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, 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, MO(_FN),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/*

View File

@ -62,7 +62,7 @@ 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_PGUP,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_PGDN,
KC_LSFT, 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, MO(_FN),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/*

View File

@ -1,9 +1,10 @@
# Black E6.5
A chinese PCB clone of Exclusive E6.5.
A Exclusive E6.5 clone keyboard made by Chinese maker, which controlled by an ATMEGA32U4 chipset. The keyboard features per-key backlight, RGB underglow.
* Keyboard Maintainer: [HorrorTroll](https://github.com/HorrorTroll)
* Hardware Supported: Atmega32u4
* Hardware Supported: ATMEGA32U4
* Hardware Availability: Unknown
Make example for this keyboard (after setting up your build environment):

View File

@ -1,4 +1,4 @@
/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
*
* 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
@ -18,16 +18,16 @@
#include "config_common.h"
/* key matrix size */
/* Key matrix size */
#define MATRIX_ROWS 5
#define MATRIX_COLS 16
/* key matrix pins */
/* Key matrix pins */
#define MATRIX_ROW_PINS { B7, B3, B2, F6, F7 }
#define MATRIX_COL_PINS { B1, B0, B5, B6, C6, C7, E2, D0, D1, D2, D3, D5, D4, D6, D7, B4 }
#define BOOTMAGIC_LITE_ROW 3
#define BOOTMAGIC_LITE_COLUMN 6
#define BOOTMAGIC_LITE_ROW 0
#define BOOTMAGIC_LITE_COLUMN 0
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
@ -43,6 +43,7 @@
#define RGB_MATRIX_MAXIMUM_BRIGHTNESS 200
#define RGB_MATRIX_STARTUP_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS
#define RGB_MATRIX_KEYPRESSES
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
/* RGB Matrix config */
#define RGB_DI_PIN E6
@ -75,8 +76,12 @@
#define ENABLE_RGB_MATRIX_HUE_PENDULUM
#define ENABLE_RGB_MATRIX_HUE_WAVE
#define ENABLE_RGB_MATRIX_PIXEL_RAIN
#define ENABLE_RGB_MATRIX_PIXEL_FLOW
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#define ENABLE_RGB_MATRIX_DIGITAL_RAIN
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE
#define ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE

View File

@ -5,7 +5,7 @@
"maintainer": "HorrorTroll",
"usb": {
"vid": "0x7516",
"pid": "0x6001",
"pid": "0x7001",
"device_version": "0.0.1"
},
"layouts": {

View File

@ -1,4 +1,4 @@
/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
*
* 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
@ -27,26 +27,10 @@
// entirely and just use numbers.
enum layer_names {
_BASE = 0,
_FN = 1
_BASE,
_FN,
};
enum user_rgb_mode {
RGB_MODE_ALL,
RGB_MODE_KEYLIGHT,
RGB_MODE_UNDERGLOW,
RGB_MODE_NONE,
};
typedef union {
uint32_t raw;
struct {
uint8_t rgb_mode :8;
};
} user_config_t;
user_config_t user_config;
// enum layer_keycodes { };
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@ -81,7 +65,7 @@ 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_DEL,
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_PGUP,
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_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/*
@ -97,38 +81,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
AppSpdVadSpi
*/
/* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
/* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
[_FN] = LAYOUT_65_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, QK_BOOT,
_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, _______, RGB_HUI, RGB_MOD,
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, KC_HOME,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, KC_HOME,
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, KC_END,
_______, _______, _______, _______, _______, _______, KC_APP, RGB_SPD, RGB_VAD, RGB_SPI
),
};
void keyboard_post_init_user(void) {
user_config.raw = eeconfig_read_user();
switch (user_config.rgb_mode) {
case RGB_MODE_ALL:
rgb_matrix_set_flags(LED_FLAG_ALL);
rgb_matrix_enable_noeeprom();
break;
case RGB_MODE_KEYLIGHT:
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
rgb_matrix_set_color_all(0, 0, 0);
break;
case RGB_MODE_UNDERGLOW:
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
rgb_matrix_set_color_all(0, 0, 0);
break;
case RGB_MODE_NONE:
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_set_color_all(0, 0, 0);
break;
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case RGB_TOG:
@ -137,33 +99,27 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case LED_FLAG_ALL: {
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
rgb_matrix_set_color_all(0, 0, 0);
user_config.rgb_mode = RGB_MODE_KEYLIGHT;
}
break;
case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
rgb_matrix_set_color_all(0, 0, 0);
user_config.rgb_mode = RGB_MODE_UNDERGLOW;
}
break;
case (LED_FLAG_UNDERGLOW): {
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_set_color_all(0, 0, 0);
user_config.rgb_mode = RGB_MODE_NONE;
}
break;
default: {
rgb_matrix_set_flags(LED_FLAG_ALL);
rgb_matrix_enable_noeeprom();
user_config.rgb_mode = RGB_MODE_ALL;
}
break;
}
eeconfig_update_user(user_config.raw);
}
return false;
}
return true;
}

View File

@ -1,3 +0,0 @@
# Default Layout
Keymap is default 68 qwerty, 65% layout

View File

@ -1,4 +1,4 @@
/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
*
* 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
@ -17,7 +17,3 @@
#pragma once
#define DYNAMIC_KEYMAP_LAYER_COUNT 2
#ifdef RGB_MATRIX_ENABLE
#define VIA_QMK_RGBLIGHT_ENABLE
#endif

View File

@ -1,4 +1,4 @@
/* Copyright 2021 HorrorTroll <https://github.com/HorrorTroll>
/* Copyright 2022 HorrorTroll <https://github.com/HorrorTroll>
*
* 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
@ -27,26 +27,10 @@
// entirely and just use numbers.
enum layer_names {
_BASE = 0,
_FN = 1
_BASE,
_FN,
};
enum user_rgb_mode {
RGB_MODE_ALL,
RGB_MODE_KEYLIGHT,
RGB_MODE_UNDERGLOW,
RGB_MODE_NONE,
};
typedef union {
uint32_t raw;
struct {
uint8_t rgb_mode :8;
};
} user_config_t;
user_config_t user_config;
// enum layer_keycodes { };
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
@ -81,7 +65,7 @@ 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_DEL,
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_PGUP,
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_PGDN,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
),
/*
@ -97,38 +81,16 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
AppSpdVadSpi
*/
/* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 */
/* Row: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 */
[_FN] = LAYOUT_65_ansi(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, QK_BOOT,
_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, _______, _______, RGB_HUI, RGB_MOD,
_______, KC_LEFT, KC_DOWN, KC_RIGHT, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, KC_HOME,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, RGB_TOG, _______, _______, _______, KC_HOME,
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RGB_VAI, KC_END,
_______, _______, _______, _______, _______, _______, KC_APP, RGB_SPD, RGB_VAD, RGB_SPI
),
};
void keyboard_post_init_user(void) {
user_config.raw = eeconfig_read_user();
switch (user_config.rgb_mode) {
case RGB_MODE_ALL:
rgb_matrix_set_flags(LED_FLAG_ALL);
rgb_matrix_enable_noeeprom();
break;
case RGB_MODE_KEYLIGHT:
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
rgb_matrix_set_color_all(0, 0, 0);
break;
case RGB_MODE_UNDERGLOW:
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
rgb_matrix_set_color_all(0, 0, 0);
break;
case RGB_MODE_NONE:
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_set_color_all(0, 0, 0);
break;
}
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case RGB_TOG:
@ -137,33 +99,27 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
case LED_FLAG_ALL: {
rgb_matrix_set_flags(LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR);
rgb_matrix_set_color_all(0, 0, 0);
user_config.rgb_mode = RGB_MODE_KEYLIGHT;
}
break;
case (LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER | LED_FLAG_INDICATOR): {
rgb_matrix_set_flags(LED_FLAG_UNDERGLOW);
rgb_matrix_set_color_all(0, 0, 0);
user_config.rgb_mode = RGB_MODE_UNDERGLOW;
}
break;
case (LED_FLAG_UNDERGLOW): {
rgb_matrix_set_flags(LED_FLAG_NONE);
rgb_matrix_set_color_all(0, 0, 0);
user_config.rgb_mode = RGB_MODE_NONE;
}
break;
default: {
rgb_matrix_set_flags(LED_FLAG_ALL);
rgb_matrix_enable_noeeprom();
user_config.rgb_mode = RGB_MODE_ALL;
}
break;
}
eeconfig_update_user(user_config.raw);
}
return false;
}
return true;
}

View File

@ -1,3 +0,0 @@
# Default Layout with VIA
Keymap is default 68 qwerty, 65% layout

View File

@ -1,9 +1,10 @@
# Devil68 Pro
Support Atmega32u4 keyboard.
A 65% keyboard made by Chinese maker, which controlled by an ATMEGA32U4 chipset. The keyboard features per-key RGB, RGB underglow.
* Keyboard Maintainer: [HorrorTroll](https://github.com/HorrorTroll)
* Hardware Supported: Atmega32u4
* Hardware Supported: ATMEGA32U4
* Hardware Availability: Unknown
Make example for this keyboard (after setting up your build environment):
@ -19,6 +20,6 @@ See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_to
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (3,6) in the matrix (B key) and plug in the keyboard
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (Esc key) and plug in the keyboard
* **Reset by wire**: Using a wire, 1 head to GND hole and other one to Reset pin on MCU
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@ -1,14 +0,0 @@
# A folder for some Chinese PCB without source code
This is a folder for collection code of Chinese PCB, where they only sold one-time limited on Taobao and no source code or contact info of Maker. Everything was re-write by using multimeter and sometimes with ISP/ICP flashing!
## List for those keyboard in here:
<details>
<summary>Click to expand!</summary>
| Keyboard name | MCU | Layout | Hotswap | LED | OLED | Other |
| ------------- | ------------- | ------------- | ------- | ------------------------ | ---- | ----- |
| Black E6.5 | Atmega32U4 | 68 Keys (65%) | No | Backlight & RGB Lighting | No | No |
| Devil68 Pro | Atmega32U4 | 68 Keys (65%) | Yes | RGB Matrix | No | No |
| | | | | | | |
</details>

View File

@ -1,29 +1,29 @@
# Welcome to my keyboard folder
# Welcome to my Keyboard Firmwares
In here, you can find:
- Chinese PCB that doesn't have source code (lost contact of Maker, can't found on Taobao, ... etc)
- My keyboard
## Keyboards Released by me:
| Keyboard name | MCU | Layout | Vendor ID | Product ID | Features |
| ---------------- | ------------- | ------------ | --------- | ---------- | -------------------------------------------- |
| Handwired K552 | STM32F103RCT6 | TKL | 0x7516 | 0x5000 | Hotswap, RGB Underglow, OLED 128x32 |
| Paws 60 | ATMEGA32U4 | 60% | 0x7516 | 0x5001 | Hotswap |
## List for my keyboard in here:
<details>
<summary>Click to expand!</summary>
## Keyboards Completed has Collaboration with me:
| Keyboard name | MCU | Layout | Vendor ID | Product ID | Features |
| ---------------- | ------------- | ------------ | --------- | ---------- | -------------------------------------------- |
| Lemon40 | ATMEGA32U4 | 40% Alice | 0x7516 | 0x6000 | Solder, RGB Underglow, OLED 128x32 |
| Keyboard name | MCU | Layout | Hotswap | LED | OLED | Other |
| -------------- | ------------- | ------------- | ------- | ------------ | ---- | ----- |
| Handwired K552 | STM32F103RCT6 | 87 Keys (TKL) | Yes | RGB Lighting | Yes | No |
| Paws 60 | Atmega32U4 | 68 Keys (65%) | Yes | No | No | No |
| | | | | | | |
</details>
## Keyboard Rewrited by me:
| Keyboard name | MCU | Layout | Vendor ID | Product ID | Features |
| ------------------------------------------------------------------------------------------- | ------------- | ------------ | --------- | ---------- | -------------------------------------------- |
| Black E6.5 | ATMEGA32U4 | 65% | 0x7516 | 0x7000 | Solder, Backlight, RGB Underglow |
| Devil68 Pro | ATMEGA32U4 | 65% | 0x7516 | 0x7001 | Hotswap, RGB Matrix & Underglow |
| [IK75](https://github.com/qmk/qmk_firmware/blob/master/keyboards/feker/ik75) | ATMEGA32U4 | 75% Exploded | 0xF2E7 | 0x1226 | Hotswap, RGB Matrix & Underglow, 1 Encoder |
| [Gas75](https://github.com/qmk/qmk_firmware/blob/master/keyboards/ml/gas75) | ATMEGA32U4 | 75% Exploded | 0xC0B0 | 0x6060 | Hotswap, RGB Matrix, 1 Encoder |
| [GG86](https://github.com/qmk/qmk_firmware/tree/master/keyboards/gopolar/gg86) | ATMEGA32U4 | TKL | 0x0007 | 0x0007 | Hotswap, RGB Matrix & Underglow, OLED 128x32 |
| [KB16-01 (Rev 1)](https://github.com/qmk/qmk_firmware/tree/master/keyboards/doio/kb16/rev1) | ATMEGA32U4 | TKL | 0xD010 | 0x1601 | Hotswap, RGB Matrix, 3 Encoder, OLED 128x32 |
| [KB16-01 (Rev 2)](https://github.com/qmk/qmk_firmware/tree/master/keyboards/doio/kb16/rev2) | APM32F103CBT6 | TKL | 0xD010 | 0x1601 | Hotswap, RGB Matrix, 3 Encoder, OLED 128x32 |
| [M63 RGB](https://github.com/qmk/qmk_firmware/blob/master/keyboards/mss_studio/m63_rgb) | STM32F072CBU6 | 60% | 0x4D4B | 0x6063 | Hotswap, RGB Matrix & Underglow |
| [M64 RGB](https://github.com/qmk/qmk_firmware/blob/master/keyboards/mss_studio/m64_rgb) | STM32F072CBU6 | 60% | 0x4D4B | 0x6064 | Hotswap, RGB Matrix & Underglow |
## List for my collab keyboard in here:
<details>
<summary>Click to expand!</summary>
| Keyboard name | MCU | Layout | Hotswap | LED | OLED | Other |
| -------------- | ------------- | ------------------- | ------- | ------------ | ---- | ----- |
| Lemon40 | Atmega32U4 | 47 Keys (40% Alice) | No | RGB Lighting | Yes | No |
| | | | | | | |
</details>
## Contact me if you have any problem

View File

@ -0,0 +1,54 @@
// Copyright 2022 Ryan Anderson <ryan@michonline.com> (@pugmajere)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define USB_MAX_POWER_CONSUMPTION 500
#define RGBLIGHT_LIMIT_VAL 175
#undef ENABLE_RGB_MATRIX_ALPHAS_MODS
#undef ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
#undef ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
#undef ENABLE_RGB_MATRIX_BREATHING
#undef ENABLE_RGB_MATRIX_BAND_SAT
#undef ENABLE_RGB_MATRIX_BAND_VAL
#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_SAT
#undef ENABLE_RGB_MATRIX_BAND_PINWHEEL_VAL
#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_SAT
#undef ENABLE_RGB_MATRIX_BAND_SPIRAL_VAL
#undef ENABLE_RGB_MATRIX_CYCLE_ALL
#undef ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#undef ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
/* #undef ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON */
#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN
#undef ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
#undef ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#undef ENABLE_RGB_MATRIX_CYCLE_SPIRAL
/* #undef ENABLE_RGB_MATRIX_DUAL_BEACON */
/* #undef ENABLE_RGB_MATRIX_RAINBOW_BEACON */
/* #undef ENABLE_RGB_MATRIX_RAINBOW_PINWHEELS */
#undef ENABLE_RGB_MATRIX_RAINDROPS
#undef ENABLE_RGB_MATRIX_JELLYBEAN_RAINDROPS
#undef ENABLE_RGB_MATRIX_HUE_BREATHING
#undef ENABLE_RGB_MATRIX_HUE_PENDULUM
#undef ENABLE_RGB_MATRIX_HUE_WAVE
#undef ENABLE_RGB_MATRIX_PIXEL_RAIN
#undef ENABLE_RGB_MATRIX_PIXEL_FLOW
#undef ENABLE_RGB_MATRIX_PIXEL_FRACTAL
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is undefd
#undef ENABLE_RGB_MATRIX_TYPING_HEATMAP
#undef ENABLE_RGB_MATRIX_DIGITAL_RAIN
// enabled only of RGB_MATRIX_KEYPRESSES or RGB_MATRIX_KEYRELEASES is undefd
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_SIMPLE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_WIDE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTIWIDE
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_CROSS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTICROSS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_NEXUS
#undef ENABLE_RGB_MATRIX_SOLID_REACTIVE_MULTINEXUS
#undef ENABLE_RGB_MATRIX_SPLASH
#undef ENABLE_RGB_MATRIX_MULTISPLASH
#undef ENABLE_RGB_MATRIX_SOLID_SPLASH
#undef ENABLE_RGB_MATRIX_SOLID_MULTISPLASH

View File

@ -0,0 +1,192 @@
/* Copyright 2022 Ryan Anderson <ryan@michonline.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
/* layer constants */
enum {
DEF = 0,
FUN,
};
enum custom_keycode {
MACRO_CTRL_PAGE_UP = SAFE_RANGE,
KC_MT_LCBRC,
KC_MT_RCBRC,
KC_MT_LPAR,
KC_MT_RPAR,
MACRO_KVM_1,
MACRO_KVM_2,
MACRO_KVM_3,
MACRO_KVM_4,
MACRO_KVM_TG,
};
// Work around limitations in mod-tapping
static uint16_t space_cadet_control_timer = 0;
static bool space_cadet_key_pressed_flag = false;
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[DEF] = LAYOUT(
QK_BOOT , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , MACRO_CTRL_PAGE_UP,
KC_GRV , KC_Q , KC_W , KC_E , KC_R , KC_T , RGB_MOD, MACRO_KVM_TG, KC_Y , KC_U , KC_I , KC_O , KC_P , KC_EQL ,
LCTL_T(KC_PGUP), KC_A , KC_S , KC_D , KC_F , KC_G , KC_TAB , KC_ENT , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT,
KC_PGDN, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_ESC , KC_RALT, KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_MINS,
LCTL_T(KC_LBRC), RCTL_T(KC_RBRC),
KC_BSPC, KC_SPC ,
KC_MT_LCBRC, KC_MT_RCBRC,
KC_MT_LPAR, KC_MT_RPAR,
MO(FUN), MO(FUN)
),
[FUN] = LAYOUT(
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 ,
KC_TAB , _______, KC_MS_U, KC_WH_U, KC_BTN3, MACRO_KVM_1, RGB_TOG, KC_MPRV, KC_MNXT, KC_LCBR, KC_RCBR, KC_LBRC, KC_RBRC, KC_F12 ,
KC_HOME, KC_MS_L, KC_MS_D, KC_MS_R, KC_BTN1, MACRO_KVM_2, RGB_SPI, KC_MPLY, KC_LEFT, KC_DOWN, KC_UP , KC_RGHT, _______, _______,
KC_END , KC_PSCR, KC_INS , KC_WH_D, KC_BTN2, MACRO_KVM_4, RGB_SPD, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_BSLS, KC_PIPE,
_______, _______,
KC_DEL , KC_ENT ,
_______, _______,
_______, _______,
_______, _______
)
};
/* template for new layouts:
LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______,
_______, _______,
_______, _______,
_______, _______,
_______, _______
)
*/
// clang-format on
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
space_cadet_key_pressed_flag = true;
}
switch (keycode) {
case MACRO_CTRL_PAGE_UP:
if (record->event.pressed) {
// send some data
SEND_STRING(SS_LCTL(SS_TAP(X_PGUP)));
} else {
// when keycode MACRO_CTRL_PAGE_UP is pressed
}
break;
// These next two cases duplicate mod-tap functionality by hand to
// work around the lack of support for shifted/modded keys as
// "tap" side of things.
case KC_MT_LCBRC:
if (record->event.pressed) {
space_cadet_control_timer = timer_read();
space_cadet_key_pressed_flag = false;
register_mods(MOD_BIT(KC_LGUI));
} else {
unregister_mods(MOD_BIT(KC_LGUI));
if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) {
tap_code16(LSFT(KC_LBRC));
}
}
return false;
break;
case KC_MT_RCBRC:
if (record->event.pressed) {
space_cadet_control_timer = timer_read();
space_cadet_key_pressed_flag = false;
register_mods(MOD_BIT(KC_LALT));
} else {
unregister_mods(MOD_BIT(KC_LALT));
if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) {
tap_code16(LSFT(KC_RBRC));
}
}
return false;
break;
case KC_MT_LPAR:
if (record->event.pressed) {
space_cadet_control_timer = timer_read();
space_cadet_key_pressed_flag = false;
register_mods(MOD_BIT(KC_LSFT));
} else {
unregister_mods(MOD_BIT(KC_LSFT));
if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) {
tap_code16(LSFT(KC_9));
}
}
return false;
break;
case KC_MT_RPAR:
if (record->event.pressed) {
space_cadet_control_timer = timer_read();
space_cadet_key_pressed_flag = false;
register_mods(MOD_BIT(KC_RSFT));
} else {
unregister_mods(MOD_BIT(KC_RSFT));
if (timer_elapsed(space_cadet_control_timer) < TAPPING_TERM && !space_cadet_key_pressed_flag) {
tap_code16(LSFT(KC_0));
}
}
return false;
break;
case MACRO_KVM_1:
if (record->event.pressed) {
tap_code(KC_SCRL);
tap_code(KC_SCRL);
tap_code(KC_1);
}
break;
case MACRO_KVM_2:
if (record->event.pressed) {
tap_code(KC_SCRL);
tap_code(KC_SCRL);
tap_code(KC_2);
}
break;
case MACRO_KVM_3:
if (record->event.pressed) {
tap_code(KC_SCRL);
tap_code(KC_SCRL);
tap_code(KC_3);
}
break;
case MACRO_KVM_4:
if (record->event.pressed) {
tap_code(KC_SCRL);
tap_code(KC_SCRL);
tap_code(KC_4);
}
break;
case MACRO_KVM_TG:
if (record->event.pressed) {
register_code(KC_LSFT);
tap_code(KC_NUMLOCK);
tap_code(KC_NUMLOCK);
unregister_code(KC_LSFT);
tap_code(KC_LCTL);
}
break;
}
return true;
};
/* vim: set ts=2 sw=2 et: */

View File

@ -0,0 +1,20 @@
# pugmajere's fairly modified version of the default keymap
This is fairly modified, but roughly follows the original default
keymap in spirit.
- The num lock layer is removed.
- The "any" key is replace with RALT.
- The thumb keys are converted into combo keys.
- Page-Up is a combo key with LCTRL.
- The NUMLOCK key is replaced with LCTRL-PGUP (for bouncing through
browser tabs)
- Mouse scroll keys are added.
- Some KVM control sequences are worked into a few open slots in the
keymap. (FN-[tgb])
- QMK-standard debouncing is enabled.
- A bunch of RGB Matrix modes are turned off to save space.
Quite possibly something else that I'm forgetting about.

View File

@ -0,0 +1 @@
DEBOUNCE_TYPE = sym_defer_pk

View File

@ -37,17 +37,9 @@
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
/* NKRO */
#define FORCE_NKRO
/* Disable RGB lighting when PC is in suspend */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
/* Allow VIA to edit lighting */
#ifdef VIA_ENABLE
#define VIA_QMK_RGBLIGHT_ENABLE
#endif
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
@ -97,7 +89,5 @@
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
/* Allow VIA to edit lighting */
#ifdef VIA_ENABLE
#define VIA_QMK_RGBLIGHT_ENABLE
#endif
// #define RGB_MATRIX_KEYPRESSES
// #define RGB_MATRIX_FRAMEBUFFER_EFFECTS

View File

@ -0,0 +1,41 @@
/* 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
/* key matrix pins */
#define MATRIX_ROW_PINS { D3, D2, B3, B2, B1, B0 }
#define MATRIX_COL_PINS { D5, D4, D6, D7, B4, B5, B6, C6, C7, F7, F6, F5, F4, F1, F0 }
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID { {0,1} }
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1010000
#define DRIVER_ADDR_2 0b1011111
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 59
#define DRIVER_2_LED_TOTAL 24
#define DRIVER_LED_TOTAL (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
/* Encoder Configuration */
#define ENCODERS_PAD_A { E6 }
#define ENCODERS_PAD_B { B7 }
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 44

View File

@ -0,0 +1,105 @@
{
"keyboard_name": "Keychron Q1",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x0103",
"device_version": "1.0.2"
},
"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}
]
}
}
}

View File

@ -0,0 +1,150 @@
/* 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 "iso_encoder.h"
#ifdef RGB_MATRIX_ENABLE
const is31_led PROGMEM g_is31_leds[DRIVER_LED_TOTAL] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
{0, C_1, A_1, B_1},
{0, C_3, A_3, B_3},
{0, C_4, A_4, B_4},
{0, C_5, A_5, B_5},
{0, C_6, A_6, B_6},
{0, C_7, A_7, B_7},
{0, C_8, A_8, B_8},
{0, C_9, A_9, B_9},
{0, C_10, A_10, B_10},
{0, C_11, A_11, B_11},
{0, C_12, A_12, B_12},
{0, C_13, A_13, B_13},
{0, C_14, A_14, B_14},
{0, C_15, A_15, B_15},
{0, C_16, A_16, B_16},
{0, F_1, D_1, E_1},
{0, F_2, D_2, E_2},
{0, F_3, D_3, E_3},
{0, F_4, D_4, E_4},
{0, F_5, D_5, E_5},
{0, F_6, D_6, E_6},
{0, F_7, D_7, E_7},
{0, F_8, D_8, E_8},
{0, F_9, D_9, E_9},
{0, F_10, D_10, E_10},
{0, F_11, D_11, E_11},
{0, F_12, D_12, E_12},
{0, F_13, D_13, E_13},
{0, F_14, D_14, E_14},
{0, F_16, D_16, E_16},
{0, I_1, G_1, H_1},
{0, I_2, G_2, H_2},
{0, I_3, G_3, H_3},
{0, I_4, G_4, H_4},
{0, I_5, G_5, H_5},
{0, I_6, G_6, H_6},
{0, I_7, G_7, H_7},
{0, I_8, G_8, H_8},
{0, I_9, G_9, H_9},
{0, I_10, G_10, H_10},
{0, I_11, G_11, H_11},
{0, I_12, G_12, H_12},
{0, I_13, G_13, H_13},
{0, I_16, G_16, H_16},
{0, L_1, J_1, K_1},
{0, L_2, J_2, K_2},
{0, L_3, J_3, K_3},
{0, L_4, J_4, K_4},
{0, L_5, J_5, K_5},
{0, L_6, J_6, K_6},
{0, L_7, J_7, K_7},
{0, L_8, J_8, K_8},
{0, L_9, J_9, K_9},
{0, L_10, J_10, K_10},
{0, L_11, J_11, K_11},
{0, L_12, J_12, K_12},
{0, L_14, J_14, K_14},
{0, I_14, G_14, H_14},
{0, L_16, J_16, K_16},
{1, C_1, A_1, B_1},
{1, C_2, A_2, B_2},
{1, C_3, A_3, B_3},
{1, C_4, A_4, B_4},
{1, C_5, A_5, B_5},
{1, C_6, A_6, B_6},
{1, C_7, A_7, B_7},
{1, C_8, A_8, B_8},
{1, C_9, A_9, B_9},
{1, C_10, A_10, B_10},
{1, C_11, A_11, B_11},
{1, C_12, A_12, B_12},
{1, C_14, A_14, B_14},
{1, C_15, A_15, B_15},
{1, F_1, D_1, E_1},
{1, F_2, D_2, E_2},
{1, F_3, D_3, E_3},
{1, F_7, D_7, E_7},
{1, F_11, D_11, E_11},
{1, F_12, D_12, E_12},
{1, F_13, D_13, E_13},
{1, F_14, D_14, E_14},
{1, F_15, D_15, E_15},
{1, F_16, D_16, E_16}
};
#define __ NO_LED
led_config_t g_led_config = {
{
// 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 }
},
{
// 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}
},
{
// 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,
9, 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 // RGB_MATRIX_ENABLE

View File

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

View File

@ -0,0 +1,68 @@
/* Copyright 2022 @ 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_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_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_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_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_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_BRID, KC_BRIU, KC_NO, KC_NO, 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#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

View File

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

View File

@ -0,0 +1,78 @@
/* Copyright 2021 @ Keychron (https://www.keychron.com)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
#include "keychron_common.h"
// clang-format off
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
WIN_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, 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_PGDN,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_HOME,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP,
KC_LCTL, KC_LOPTN, KC_LCMMD, KC_SPC, KC_RCMMD, MO(MAC_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT),
[MAC_FN] = LAYOUT_iso_83(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, RGB_TOG,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
RGB_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_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_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_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)
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) {
if (!process_record_keychron(keycode, record)) {
return false;
}
return true;
}

View File

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

View File

@ -0,0 +1,69 @@
/* 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
// clang-format off
enum layers{
MAC_BASE,
MAC_FN,
WIN_BASE,
WIN_FN
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[MAC_BASE] = LAYOUT_iso_83(
KC_ESC, KC_BRID, KC_BRIU, KC_NO, KC_NO, RGB_VAD, RGB_VAI, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_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_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_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_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_BRID, KC_BRIU, KC_NO, KC_NO, 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
};
#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

View File

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

View File

@ -0,0 +1,5 @@
# The ISO variant of the Keychron Q1
- Enables EC11 rotary encoder.
- Turn clockwise to increase volume and turn counter-clockwise to decrease volume.
- Press top right button to mute.

View File

@ -0,0 +1,25 @@
# MCU name
MCU = atmega32u4
# Bootloader selection
BOOTLOADER = atmel-dfu
# Build Options
# change yes to no to disable
#
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
MOUSEKEY_ENABLE = yes # Mouse keys
EXTRAKEY_ENABLE = yes # Audio control and System control
CONSOLE_ENABLE = no # Console for debug
COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
ENCODER_ENABLE = yes # Enable Encoder
DIP_SWITCH_ENABLE = yes
RGB_MATRIX_ENABLE = yes
RGB_MATRIX_DRIVER = IS31FL3733
RAW_ENABLE = yes
LTO_ENABLE = yes

View File

@ -24,4 +24,6 @@
# include "rev_0101.h"
#elif defined(KEYBOARD_keychron_q1_rev_0102)
# include "rev_0102.h"
#elif defined(KEYBOARD_keychron_q1_iso_encoder)
# include "iso_encoder.h"
#endif