1
0

Compare commits

..

1 Commits

Author SHA1 Message Date
Nick Brassel
4ac847674b Branch point for 2023q2 Breaking Change. 2023-02-28 11:30:58 +11:00
172 changed files with 690 additions and 5630 deletions

1
.github/labeler.yml vendored
View File

@@ -5,7 +5,6 @@ core:
- tests/**/*
- util/**/*
- platforms/**/*
- builddefs/**/*
- Makefile
- '*.mk'
dependencies:

View File

@@ -21,13 +21,9 @@ jobs:
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
with:
submodules: recursive
- name: Install dependencies
run: pip3 install -r requirements-dev.txt
- name: Run tests

View File

@@ -22,9 +22,6 @@ jobs:
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
with:
fetch-depth: 0
@@ -35,7 +32,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v35
uses: tj-actions/changed-files@v34
- name: Run qmk formatters
shell: 'bash {0}'

View File

@@ -16,9 +16,6 @@ jobs:
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
with:
fetch-depth: 0

View File

@@ -15,9 +15,6 @@ jobs:
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
with:
fetch-depth: 0
@@ -27,7 +24,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v35
uses: tj-actions/changed-files@v34
- name: Print info
run: |

View File

@@ -16,9 +16,6 @@ jobs:
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
- name: Run qmk generators

View File

@@ -16,9 +16,6 @@ jobs:
container: qmkfm/qmk_cli
steps:
- name: Disable safe.directory check
run : git config --global --add safe.directory '*'
- uses: actions/checkout@v3
- name: Run qmk generators

View File

@@ -23,7 +23,6 @@
}
},
"type": "object",
"not": { "required": [ "vendorId", "productId" ] }, // reject via keys...
"properties": {
"keyboard_name": {"$ref": "qmk.definitions.v1#/text_identifier"},
"keyboard_folder": {"$ref": "qmk.definitions.v1#/keyboard"},

View File

@@ -34,7 +34,7 @@ The next Breaking Change is scheduled for May 28, 2023.
## What changes will be included?
To see a list of breaking changes merge candidates you can look at the [`core` label](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+label%3Acore+is%3Apr). This label is applied whenever a PR is raised or changed, but only if the PR includes changes to core areas of QMK Firmware. A PR with that label applied is not guaranteed to be merged in the current cycle. New changes might be added between now and when `develop` is closed, and it is generally the responsibility of the submitter to handle conflicts. There is also another label used by QMK Collaborators -- `breaking_change_YYYYqN` -- which signifies to maintainers that it is a strong candidate for inclusion, and should be prioritized for review.
To see a list of breaking changes merge candidates you can look at the [`core` label](https://github.com/qmk/qmk_firmware/pulls?q=is%3Aopen+label%3Acore+is%3Apr). This label is applied whenever a PR is raised or changed, but only if the PR includes changes to core areas of QMK Firmware. A PR with that label applied is not guaranteed to be merged in the current cycle. New changes might be added between now and when `develop` is closed, and it is generally the responsibility of the submitter to handle conflicts. There is also another label used by QMK Collaborators -- `breaking_change_YYYYqN` -- which signifies to maintainers that it is a strong candidate for inclusion, and should be prioritised for review.
If you want your breaking change to be included in this round you need to create a PR and have it accepted by QMK Collaborators before `develop` closes. After `develop` closes, new submissions will be deferred to the next breaking changes cycle.
@@ -127,12 +127,12 @@ This happens immediately after the previous `develop` branch is merged to `maste
* Validate each submodule SHA1 matches the qmk fork, e.g. for ChibiOS:
* Go to [qmk/ChibiOS](https://github.com/qmk/ChibiOS)
* Compare the commit hash in the above output to the commit hash in the repository
* If there's a mismatch, that repository needs to have its `qmk-master` branch updated to match (otherwise Configurator won't work):
* If there's a mismatch, that repository needs to have its `master` branch updated to match (otherwise Configurator won't work):
* `cd lib/chibios`
* `git fetch --all`
* `git checkout qmk-master`
* `git checkout master`
* `git reset --hard <commit hash>`
* `git push origin qmk-master --force-with-lease`
* `git push origin master --force-with-lease`
* Announce that both `master` and `develop` are now unlocked -- message `@Breaking Changes Updates` on `#qmk_firmware` in Discord:
* `@Breaking Changes Updates -- Hey folks, develop has now been merged into master -- newest batch of changes are now available for everyone to use!`

View File

@@ -4,7 +4,7 @@ ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a bra
## Getting ChibiOS
* `svn` Initialization:
* `svn` Initialisation:
* Only needed to be done once
* You might need to separately install `git-svn` package in your OS's package manager
* `git svn init --stdlayout --prefix='svn/' http://svn.osdn.net/svnroot/chibios/`
@@ -21,7 +21,7 @@ ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a bra
## Getting ChibiOS-Contrib
* `git` Initialization:
* `git` Initialisation:
* `git clone git@github.com:qmk/ChibiOS-Contrib`
* `git remote add upstream https://github.com/ChibiOS/ChibiOS-Contrib`
* `git checkout -b chibios-20.3.x upstream/chibios-20.3.x`
@@ -57,16 +57,3 @@ ChibiOS and ChibiOS-Contrib need to be updated in tandem -- the latter has a bra
* `git commit -am 'Update ChibiOS to 99.9.9'`
* `git push --set-upstream origin chibios-version-bump`
* Make a PR to qmk_firmware with the new branch
## When merging a PR containing an upgrade of ChibiOS/ChibiOS-Contrib:
* Update the target branch if the merge target was `master`:
* `git checkout qmk-master`
* `git reset --hard develop_YYYY_qN`
* `git push origin qmk-master --force-with-lease`
* Update the target branch if the merge target was `develop`:
* `git checkout qmk-develop`
* `git reset --hard develop_YYYY_qN`
* `git push origin qmk-develop --force-with-lease`
Note that when merging `develop` to `master`, the first workflow should still be followed.

View File

@@ -79,16 +79,6 @@ If you're using a custom transport (communication method), then you will also ne
SPLIT_TRANSPORT = custom
```
### Layout Macro
Configuring your layout in a split keyboard works slightly differently to a non-split keyboard. Take for example the following layout. The top left numbers refer to the matrix row and column, and the bottom right are the order of the keys in the layout:
![Physical layout](https://i.imgur.com/QeY6kMQ.png)
Since the matrix scanning procedure operates on entire rows, it first populates the left half's rows, then the right half's. Thus, the matrix as QMK views it has double the rows instead of double the columns:
![Matrix](https://i.imgur.com/4wjJzBU.png)
### Setting Handedness
By default, the firmware does not know which side is which; it needs some help to determine that. There are several ways to do this, listed in order of precedence.

View File

@@ -106,9 +106,6 @@ jobs:
steps:
- name: Disable git safe directory checks
run : git config --global --add safe.directory '*'
- name: Checkout QMK
uses: actions/checkout@v3
with:

View File

@@ -150,8 +150,6 @@ In the above example,
* It must conform to the [layout guidelines](hardware_keyboard_guidelines.md#ltkeyboard_namehgt)
* `"matrix": [0, 0]` defines the electrical position
?> See also: [Split Keyboard Layout Macro](https://docs.qmk.fm/#/feature_split_keyboard?id=layout-macro) and [Matrix to Physical Layout](https://docs.qmk.fm/#/understanding_qmk?id=matrix-to-physical-layout-map).
## Additional Configuration
There are a lot of features that can be turned on or off, configured or tuned. Some of these have yet to be migrated over to [Data Driven Configuration](data_driven_config.md). The following sections cover the process for when an `info.json` option is unavailable.

View File

@@ -145,13 +145,7 @@ Also, specific to ChibiOS:
## Core PRs :id=core-pr
- all core PRs must now target `develop` branch, which will subsequently be merged back to `master` on the breaking changes timeline
- as indicated above, the smallest set of changes to core components should be included in each PR
- PRs containing multiple areas of change will be asked to be split up and raised separately
- keyboard and keymap changes should only be included if they affect base keyboard builds, or the default-like `default`, `via`, `default_????` keymaps etc.
- keymap modifications for anything other than the default-like keymaps **should not be included in the initial PR** in order to simplify the review process
- the core PR submitter should submit a followup PR affecting other keymaps after initial PR merge
- large-scale refactoring or consolidation PRs that affect other keymaps (such as renaming keycodes) should always be raised separately
- must now target `develop` branch, which will subsequently be merged back to `master` on the breaking changes timeline
- any new boards adding support for new hardware now requires a corresponding test board under `keyboards/handwired/onekey`
- for new MCUs, a new "child" keyboard should be added that targets your newly-added MCU, so that builds can be verified
- for new hardware support such as display panels, core-side matrix implementations, or other peripherals, an associated keymap should be provided

View File

@@ -252,6 +252,7 @@ The following animations can be enabled:
|Key |Description |
|-----------------|--------------------------------------|
|`all` |Enable all additional animation modes.|
|`alternating` |Enable alternating animation mode. |
|`breathing` |Enable breathing animation mode. |
|`christmas` |Enable christmas animation mode. |

View File

@@ -1,44 +0,0 @@
# Feature support policies
## System Constraints
In general, feature development is encouraged to support as many hardware configurations as possible. Depending on system constraints this may not always be achievable, and is usually bound by microcontroller flash and RAM capabilities.
The most frequently-hit constraint is the amount of code that can be flashed onto an ATmega32U4 -- users almost always need to pick and choose included functionality due to the size constraints.
!> [Squeezing AVR](https://docs.qmk.fm/#/squeezing_avr) has some steps that users can take in order to minimise the overall firmware size, which in some cases enables the ability for users to include other desired features.
## Deprecation & Removal Policy
QMK Firmware strives for innovation wherever possible. With ongoing feature development and other improvements made to the codebase, sometimes the retirement of outdated, under-utilised, or limited-value functionality is selected for deprecation and subsequent removal.
The intent behind feature deprecation is to maintain and/or improve quality. As a result, perpetually supporting under-utilised features would negatively impact the QMK team's ability to improve other areas of QMK Firmware.
There may be several motivations behind the deprecation or removal of functionality (keeping in mind that this list is not exhaustive):
* Better alternatives have already been implemented
* Lack of adherence to standards
* Poor support from code owners or upstream maintainers
* Poor design
* Hardware constraints
* Minimal use within the QMK Firmware repository
* Copyright disputes
* Bit-rot
When a feature is selected for deprecation, future changes to that area will cease to be developed by the QMK team, and Pull Requests submitted against those areas will be declined.
?> As QMK does not gather metrics from its users, the only way the QMK team can gauge the level of usage is to refer to the main QMK Firmware repository -- searching through forks is not practical due to the sheer number of them.
### How much advance notice will be given?
Disregarding emergencies or other high-risk concerns, deprecation of large features or entire subsystems within QMK will be communicated on the `develop` branch at least one breaking changes cycle (3 months) before removal. Advance notice may be extended for higher impact features, and is at the discretion of the QMK team.
Smaller features may be removed within a breaking changes cycle, and will generally be based on the level of use within the repository. Features with minimal use may be selected for removal at any time on the `develop` branch.
Third-party software libraries leveraged by QMK are generally forked to mitigate disappearance upstream. If the upstream repository is removed, it will generally be replaced when practical, or dependent features will be removed as per the normal deprecation policy.
### How will deprecation be communicated?
Every breaking changes merge from `develop` into `master` is accompanied by a changelog document -- intended and completed deprecations will be communicated here.
In addition, wherever possible warnings will be issued during firmware compilation when deprecated features are still being used.

View File

@@ -1,76 +0,0 @@
{
"keyboard_name": "Knobs 3",
"manufacturer": "ANAVI",
"url": "https://github.com/AnaviTechnology/anavi-knobs-3",
"maintainer": "leon-anavi",
"processor": "RP2040",
"bootloader": "rp2040",
"matrix_pins": {
"direct": [
["GP26", "GP29", "GP0"]
]
},
"features": {
"bootmagic": false,
"command": false,
"console": false,
"extrakey": true,
"mousekey": false,
"nkro": true,
"rgblight": true
},
"rgblight": {
"pin": "GP12",
"led_count": 1,
"hue_steps": 10,
"saturation_steps": 17,
"brightness_steps": 17,
"max_brightness": 255,
"animations": {
"alternating": true,
"breathing": true,
"christmas": true,
"knight": true,
"rainbow_mood": true,
"rainbow_swirl": true,
"rgb_test": true,
"snake": true,
"static_gradient": true,
"twinkle": true
}
},
"encoder": {
"enabled": true,
"rotary": [
{
"pin_a": "GP27",
"pin_b": "GP28",
"resolution": 2
},
{
"pin_a": "GP4",
"pin_b": "GP3",
"resolution": 2
},
{
"pin_a": "GP1",
"pin_b": "GP2",
"resolution": 2
}
]
},
"layouts": {
"LAYOUT": {
"layout": [
{ "label":"Mute", "x": 0, "y": 0, "matrix": [0, 0] },
{ "label":"RGB", "x": 0, "y": 1, "matrix": [0, 1] },
{ "label":"Animation", "x": 0, "y": 2, "matrix": [0, 2] }
]
}
},
"usb": {
"device_version": "1.0.0",
"pid": "0x9A25",
"vid": "0xFEED"
}
}

View File

@@ -1,10 +0,0 @@
// Copyright 2022 Leon Anavi <leon@anavi.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_MUTE, RGB_TOG, RGB_MOD
)
};

View File

@@ -1,73 +0,0 @@
// Copyright 2022 Leon Anavi <leon@anavi.org>
// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"
#include <stdio.h>
void keyboard_post_init_kb(void) {
// Enable RGB LED
setPinOutput(GP11);
writePinHigh(GP11);
rgblight_enable();
// Offload to the user func
keyboard_post_init_user();
}
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) { return false; }
if (0 == index) {
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
} else if (1 == index) {
if (clockwise) {
tap_code(KC_UP);
} else {
tap_code(KC_DOWN);
}
} else if (2 == index) {
if (clockwise) {
tap_code(KC_LEFT);
} else {
tap_code(KC_RIGHT);
}
}
return true;
}
#endif
#ifdef OLED_ENABLE
bool oled_task_kb(void) {
if (!oled_task_user()) {
return false;
}
// Host Keyboard Layer Status
oled_write_ln_P(PSTR("ANAVI Knobs 3"), false);
oled_write_ln_P(PSTR("Keymap: Default"), false);
// Host Keyboard LED Status
led_t led_state = host_keyboard_led_state();
oled_write_P(PSTR("Num Lock: "), false);
oled_write_ln_P(led_state.num_lock ? PSTR("On") : PSTR("Off"), false);
oled_write_P(PSTR("Caps Lock: "), false);
oled_write_ln_P(led_state.caps_lock ? PSTR("On") : PSTR("Off"), false);
oled_write_P(PSTR("Scroll Lock: "), false);
oled_write_ln_P(led_state.scroll_lock ? PSTR("On") : PSTR("Off"), false);
#ifdef RGBLIGHT_ENABLE
static char rgbStatusLine1[26] = {0};
snprintf(rgbStatusLine1, sizeof(rgbStatusLine1), "RGB Mode: %d", rgblight_get_mode());
oled_write_ln(rgbStatusLine1, false);
static char rgbStatusLine2[26] = {0};
snprintf(rgbStatusLine2, sizeof(rgbStatusLine2), "h:%d s:%d v:%d", rgblight_get_hue(), rgblight_get_sat(), rgblight_get_val());
oled_write_ln(rgbStatusLine2, false);
#endif
return false;
}
#endif

View File

@@ -1,12 +0,0 @@
// Copyright 2022 Leon Anavi (@leon-anavi)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef RP_I2C_USE_I2C0
#define RP_I2C_USE_I2C0 FALSE
#undef RP_I2C_USE_I2C1
#define RP_I2C_USE_I2C1 TRUE

View File

@@ -1,25 +0,0 @@
# ANAVI Knobs 3
Mini mechanical keyboard with 3 clickable rotary encoders, USB-C, RP2040 microcontroller and I2C slot for mini OLED display.
* Keyboard Maintainer: [Leon Anavi](https://github.com/leon-anavi)
* Hardware Supported: ANAVI Knobs 3
* Hardware Availability: [Crowd Supply](https://www.crowdsupply.com/anavi-technology/anavi-macro-pad-10), [GitHub repository](https://github.com/AnaviTechnology/anavi-knobs-3)
Make example for this keyboard (after setting up your build environment):
make anavi/knobs3:default
Flashing example for this keyboard:
make anavi/knobs3:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the top left key on the left half, or top right key on the right half, and then plug in the USB cable on that keyboard half.
* **Physical reset button**: Double tap the reset button on the XIAO RP2040.
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.

View File

@@ -1,6 +0,0 @@
WS2812_DRIVER = vendor
OLED_ENABLE = yes
OLED_DRIVER = SSD1306 # Enable Support for SSD1306 or SH1106 OLED Displays; Communicating over I2C
OPT_DEFS += -DHAL_USE_I2C=TRUE

View File

@@ -37,9 +37,6 @@
# undef POINTING_DEVICE_CS_PIN
# define POINTING_DEVICE_CS_PIN A15 // b14
# define PMW33XX_LIFTOFF_DISTANCE 0b1111
# define RGB_MATRIX_LED_FLUSH_LIMIT 33
# define RGB_MATRIX_LED_PROCESS_LIMIT 29
#endif
#undef ROTATIONAL_TRANSFORM_ANGLE

View File

@@ -16,7 +16,6 @@
*/
#include "drashna.h"
// clang-format off
#define LAYOUT_charybdis_4x6_wrapper(...) LAYOUT_charybdis_4x6(__VA_ARGS__)
#define LAYOUT_charybdis_4x6_base( \
K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, \
@@ -27,13 +26,14 @@
KC_ESC, ________________NUMBER_LEFT________________, ________________NUMBER_RIGHT_______________, UC_CLUE, \
SH_TT, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, SH_TT, \
LALT_T(KC_TAB), K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, RALT_T(K1B), \
OS_LSFT,CTL_T(K21),ALT_T(K22),GUI_T(K23),K24,K25, K26,K27,RGUI_T(K28),RALT_T(K29),RCTL_T(K2A), OS_RSFT, \
OS_LSFT,CTL_T(K21), K22, K23, K24, K25, K26,K27,RGUI_T(K28),RALT_T(K29),RCTL_T(K2A), OS_RSFT, \
SFT_T(KC_GRV), OS_LALT, OS_LGUI, TT(_MOUSE), KC_ENT, \
KC_SPC, BK_LWER, DL_RAIS \
)
#define LAYOUT_base_wrapper(...) LAYOUT_charybdis_4x6_base(__VA_ARGS__)
// clang-format off
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_DEFAULT_LAYER_1] = LAYOUT_base_wrapper(
_________________QWERTY_L1_________________, _________________QWERTY_R1_________________,
@@ -120,9 +120,13 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
};
// clang-format on
void keyboard_post_init_keymap(void) {
#ifdef RGB_MATRIX_ENABLE
g_led_config.flags[53] = g_led_config.flags[54] = g_led_config.flags[55] = g_led_config.flags[0] = g_led_config.flags[1] = g_led_config.flags[2] = g_led_config.flags[3] = g_led_config.flags[29] = g_led_config.flags[30] = g_led_config.flags[31] = g_led_config.flags[32] = LED_FLAG_MODIFIER;
g_led_config.flags[53] = g_led_config.flags[54] = g_led_config.flags[55] =
g_led_config.flags[0] = g_led_config.flags[1] = g_led_config.flags[2] = g_led_config.flags[3] =
g_led_config.flags[29] = g_led_config.flags[30] = g_led_config.flags[31] = g_led_config.flags[32] =
LED_FLAG_MODIFIER;
#endif
}
@@ -167,8 +171,8 @@ const keypos_t PROGMEM hand_swap_config[MATRIX_ROWS][MATRIX_COLS] = {
{{0, 1}, {1, 1}, {2, 1}, {3, 1}, {4, 1}, {5, 1}},
{{0, 2}, {1, 2}, {2, 2}, {3, 2}, {4, 2}, {5, 2}},
{{0, 3}, {1, 3}, {2, 3}, {3, 3}, {4, 3}, {5, 3}},
{{0, 4}, {3, 4}, {2, 4}, {5, 4}, {4, 4}, {2, 4}}
};
{{0, 4}, {3, 4}, {2, 4}, {5, 4}, {4, 4}, {2, 4}},
};
# ifdef ENCODER_MAP_ENABLE
const uint8_t PROGMEM encoder_hand_swap_config[NUM_ENCODERS] = {1, 0};

View File

@@ -37,7 +37,8 @@ ifeq ($(strip $(OVERLOAD_FEATURES)), yes)
NKRO_ENABLE = yes # Enable N-Key Rollover
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
MOUSE_SHARED_EP = no
KEYBOARD_SHARED_EP = yes
MOUSE_SHARED_EP = yes
AUTOCORRECT_ENABLE = yes
CAPS_WORD_ENABLE = yes

View File

@@ -133,24 +133,14 @@ bool oled_task_keymap(void) {
// render_rgb_hsv(1, 13);
oled_set_cursor(1, 13);
oled_write_P(PSTR("OS: "), false);
extern os_variant_t os_type;
switch (os_type) {
case OS_LINUX:
oled_write_ln_P(PSTR("Linux"), false);
break;
case OS_WINDOWS:
oled_write_ln_P(PSTR("Windows"), false);
break;
case OS_MACOS:
oled_write_ln_P(PSTR("MacOS"), false);
break;
case OS_IOS:
oled_write_ln_P(PSTR("iOS"), false);
break;
default:
break;
}
// oled_write_P(PSTR("Timer:"), false);
// oled_write(get_u8_str((uint8_t)(timer_elapsed32(oled_timer) / 1000), ' '), false);
oled_write_P(PSTR("Status: "), false);
if (is_oled_enabled) {
oled_write_P(PSTR("on "), false);
} else {
oled_write_P(PSTR("off"), false);
}
render_keylogger_status(1, 14);

View File

@@ -1,31 +0,0 @@
/* Copyright 2022 Cole Smith <cole@boardsource.xyz>
* Copyright 2022 David Rambo <davidrambo@mailfence.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
#define MASTER_RIGHT
#define DOUBLE_TAP_SHIFT_TURNS_ON_CAPS_WORD
#define CAPS_WORD_IDLE_TIMEOUT 3000 // 3 seconds.
#define TAPPING_TERM 210
/*#define PERMISSIVE_HOLD*/
#define IGNORE_MOD_TAP_INTERRUPT
#define TAPPING_FORCE_HOLD
#ifdef RGB_MATRIX_ENABLE
#define RGB_DISABLE_WHEN_USB_SUSPENDED // turn off effects when suspended
#endif

View File

@@ -1,201 +0,0 @@
/* Copyright 2022 Cole Smith <cole@boardsource.xyz>
* Copyright 2022 David Rambo <davidrambo@mailfence.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 custom_layers {
_COLEMAK,
_GAME,
_SYMBOL,
_NAVIGATION,
_FKEYS,
};
//keycode shorthands
#define SYM MO(2)
#define NAV LT(3, KC_ESC)
#define FKEY MO(4)
//aliases for clarity in layering
#define SftEnt SFT_T(KC_ENT) // Shift when held, Enter when tapped
#define BSCTL LCTL_T(KC_BSPC) // Ctrl when held, Backspace when tapped
//aliases for clarity in layering
#define C_TAB LCTL(KC_TAB)
#define A_TAB LALT(KC_TAB)
#define G_TAB LGUI(KC_TAB) // Mac: switch applications
#define CBSPC LCTL(KC_BSPC) // delete whole word
#define G_LEFT LGUI(KC_LEFT)
#define G_RGHT LGUI(KC_RGHT)
#define CRGHT LCTL(KC_RGHT)
#define CLEFT LCTL(KC_LEFT)
// Left-hand home row mods
#define HOME_A LALT_T(KC_A)
#define HOME_R LGUI_T(KC_R)
#define HOME_S LSFT_T(KC_S)
#define HOME_T LCTL_T(KC_T)
// Right-hand home row mods
#define HOME_N RCTL_T(KC_N)
#define HOME_E RSFT_T(KC_E)
#define HOME_I LGUI_T(KC_I)
#define HOME_O LALT_T(KC_O)
//internet browser tab shortcuts and window swapping
#define CTLPGDN LCTL(KC_PGDN)
#define CTLPGUP LCTL(KC_PGUP)
#define G_GRV LGUI(KC_GRV)
#define SftEnt SFT_T(KC_ENT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* QWERTY
* ,-----------------------------------------. ,-----------------------------------------.
* | `~ | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | Tab | Q | W | F | P | G | | J | L | U | Y | : | BSP |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* |EscNAV| A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' |
* |------+------+------+------+------+------| NO | | NO |------+------+------+------+------+------|
* |LShift| Z | X | C | V | B |-------| |-------| K | M | , | . | / |EntSft|
* `-----------------------------------------/ / \ \-----------------------------------------'
* | Del | LGUI | LALT | /LCTL/BS/ \Space \ | SYM | FKEY | RALT |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_COLEMAK] = LAYOUT(
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_TAB, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_BSPC,
NAV, HOME_A, HOME_R, HOME_S, HOME_T, KC_D, KC_H, HOME_N, HOME_E, HOME_I, HOME_O, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_NO, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, SftEnt,
MEH_T(KC_DEL), KC_LALT, KC_LGUI, BSCTL, KC_SPC, SYM, FKEY, KC_RALT
),
/* Gaming Layer
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | ESC | T | Q | W | E | R | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | TAB | LSFT | S | A | D | F |-------. ,-------| | | | | | |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | LALT | LCTL | Z | X | C | V |-------| |-------| | | | | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | | | | / / \ \ | | | |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_GAME] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, TO(0),
KC_ESC , KC_T , KC_Q , KC_W , KC_E , KC_R , _______, _______, _______, _______, _______, _______,
KC_TAB , KC_LSFT, KC_A , KC_S , KC_D , KC_F , _______, _______, _______, _______, _______, _______,
KC_LALT, KC_LCTL, KC_Z , KC_X , KC_C , KC_V , _______, _______, _______, _______, _______, _______, _______, _______,
KC_M, KC_I, KC_B, KC_SPC , _______, _______, _______, _______
),
/* Symbol Layer
* ,-----------------------------------------. ,-----------------------------------------.
* | F12 | F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | [ | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ] |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | \| | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | - |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | | HOME | END | [ | ] | |-------| |-------| `~ | _ | PGUP | { | } | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | ____ | ____ | ____ | / ____ / \ ____ \ |RAISE | PGDN | ____ |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_SYMBOL] = LAYOUT(
KC_F12 , KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 ,
KC_LBRC, KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_RBRC,
KC_BSLS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_EQL ,
_______, KC_HOME, KC_END , KC_LBRC, KC_RBRC, _______, _______, _______, KC_GRV , KC_MINS, KC_PGUP, _______, _______, _______,
_______, _______, _______, _______, _______, _______, KC_PGDN, _______
),
/* Navigation
* ,-----------------------------------------. ,-----------------------------------------.
* | | | | | | | | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | | | | | UP | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | | | | | |-------. ,-------| | LEFT | DOWN |RIGHT | | |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | | | | | | |-------| |-------| | | | | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | | | | / / \ \ | | | |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_NAVIGATION] = LAYOUT(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, KC_BTN2, KC_MS_U, KC_BTN1, _______, C_TAB , CLEFT , KC_UP , CRGHT , KC_DEL , _______,
_______, _______, KC_MS_L, KC_MS_D, KC_MS_R, _______, CTLPGUP, KC_LEFT, KC_DOWN, KC_RGHT, CTLPGDN, _______,
_______, _______, _______, KC_WH_U, KC_WH_D, _______, _______, _______, A_TAB , CBSPC , _______, _______, G_GRV , _______,
_______, _______, _______, _______, _______, _______, _______, _______
),
/* Function Keys
* ,-----------------------------------------. ,-----------------------------------------.
* | BOOT | | | | | | | LALT<-->LGUI| | | | BOOT |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | |BRGHT-| SAT- | HUE- |BRGHT+| | | | | | | |
* |------+------+------+------+------+------| |------+------+------+------+------+------|
* | | |RGBMOD| SAT+ | HUE+ |RGBTOG|-------. ,-------| | | | | | |
* |------+------+------+------+------+------| | | |------+------+------+------+------+------|
* | | | |VOL UP|VOL DN| PLAY | |-------| | | | | | |
* `-----------------------------------------/ / \ \-----------------------------------------'
* | | | | / / \ \ | | | |
* | | | |/ / \ \ | | | |
* `----------------------------' '------''--------------------'
*/
[_FKEYS] = LAYOUT(
QK_BOOT, _______, _______, _______, _______, _______, LAG_SWP, LAG_NRM, _______, _______, _______, QK_BOOT,
_______, _______, RGB_VAD, RGB_SAD, RGB_HUD, RGB_VAI, _______, _______, _______, _______, _______, TO(1) ,
_______, _______, RGB_MOD, RGB_SAI, RGB_HUI, RGB_TOG, _______, _______, _______, _______, _______, TO(0) ,
_______, _______, _______, KC_VOLD, KC_VOLU, KC_MPLY, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______
)
};
#ifdef ENCODER_ENABLE
bool encoder_update_user(uint8_t index, bool clockwise) {
if (index == 0) {
// Volume control
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
} else if (index == 1) {
// Page up/Page down
if (clockwise) {
tap_code(KC_WH_U);
} else {
tap_code(KC_WH_D);
}
}
return false;
}
#endif

View File

@@ -1,12 +0,0 @@
#+title: README
This is my configuration for the Lulu received as part of Boardsource's 2022 group buy.
Since I already have a few keyboards configured with QMK, I decided to swap out KMK.
Hopefully this helps others get started.
The base layer is colemak.
I use this keymap on both Linux and MacOS.
To keep muscle memory between the two as similar as possible, it takes advantage of QMK's boot magic keycodes.
The ~_FKEYS~ layer provides access to a Left Alt and GUI switch.
(I use LAlt with yabai on MacOS and GUI with Pop OS's tiling.)

View File

@@ -1,2 +0,0 @@
CAPS_WORD_ENABLE = yes
MOUSEKEY_ENABLE = yes

15
keyboards/contra/config.h Executable file
View File

@@ -0,0 +1,15 @@
#pragma once
/* key matrix pins */
#define MATRIX_ROW_PINS { F6, B3, B2, B6 }
#define MATRIX_COL_PINS { F4, F5, B5, B4, E6, D7, C6, D4, D0, D1, D2, D3 }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION COL2ROW
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

1
keyboards/contra/contra.c Executable file
View File

@@ -0,0 +1 @@
#include "contra.h"

27
keyboards/contra/contra.h Executable file
View File

@@ -0,0 +1,27 @@
#pragma once
#include "quantum.h"
#define LAYOUT_ortho_4x12( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
{ k30, k31, k32, k33, k34, k35, k36, k37, k38, k39, k3A, k3B } \
}
#define LAYOUT_planck_mit( \
k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B, \
k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B, \
k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B, \
k30, k31, k32, k33, k34, k35, k37, k38, k39, k3A, k3B \
) { \
{ k00, k01, k02, k03, k04, k05, k06, k07, k08, k09, k0A, k0B }, \
{ k10, k11, k12, k13, k14, k15, k16, k17, k18, k19, k1A, k1B }, \
{ k20, k21, k22, k23, k24, k25, k26, k27, k28, k29, k2A, k2B }, \
{ k30, k31, k32, k33, k34, k35, k35, k37, k38, k39, k3A, k3B } \
}

View File

@@ -3,12 +3,6 @@
"manufacturer": "Cartel",
"url": "",
"maintainer": "qmk",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"usb": {
"vid": "0x4354",
"pid": "0x0001",
@@ -16,122 +10,14 @@
},
"processor": "atmega32u4",
"bootloader": "caterina",
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["F4", "F5", "B5", "B4", "E6", "D7", "C6", "D4", "D0", "D1", "D2", "D3"],
"rows": ["F6", "B3", "B2", "B6"]
},
"community_layouts": ["planck_mit", "ortho_4x12"],
"layouts": {
"LAYOUT_ortho_4x12": {
"layout": [
{"label":"Tab", "matrix": [0, 0], "x":0, "y":0},
{"label":"Q", "matrix": [0, 1], "x":1, "y":0},
{"label":"W", "matrix": [0, 2], "x":2, "y":0},
{"label":"E", "matrix": [0, 3], "x":3, "y":0},
{"label":"R", "matrix": [0, 4], "x":4, "y":0},
{"label":"T", "matrix": [0, 5], "x":5, "y":0},
{"label":"Y", "matrix": [0, 6], "x":6, "y":0},
{"label":"U", "matrix": [0, 7], "x":7, "y":0},
{"label":"I", "matrix": [0, 8], "x":8, "y":0},
{"label":"O", "matrix": [0, 9], "x":9, "y":0},
{"label":"P", "matrix": [0, 10], "x":10, "y":0},
{"label":"BackSpace", "matrix": [0, 11], "x":11, "y":0},
{"label":"Esc", "matrix": [1, 0], "x":0, "y":1},
{"label":"A", "matrix": [1, 1], "x":1, "y":1},
{"label":"S", "matrix": [1, 2], "x":2, "y":1},
{"label":"D", "matrix": [1, 3], "x":3, "y":1},
{"label":"F", "matrix": [1, 4], "x":4, "y":1},
{"label":"G", "matrix": [1, 5], "x":5, "y":1},
{"label":"H", "matrix": [1, 6], "x":6, "y":1},
{"label":"J", "matrix": [1, 7], "x":7, "y":1},
{"label":"K", "matrix": [1, 8], "x":8, "y":1},
{"label":"L", "matrix": [1, 9], "x":9, "y":1},
{"label":";", "matrix": [1, 10], "x":10, "y":1},
{"label":"'", "matrix": [1, 11], "x":11, "y":1},
{"label":"Shift", "matrix": [2, 0], "x":0, "y":2},
{"label":"Z", "matrix": [2, 1], "x":1, "y":2},
{"label":"X", "matrix": [2, 2], "x":2, "y":2},
{"label":"C", "matrix": [2, 3], "x":3, "y":2},
{"label":"V", "matrix": [2, 4], "x":4, "y":2},
{"label":"B", "matrix": [2, 5], "x":5, "y":2},
{"label":"N", "matrix": [2, 6], "x":6, "y":2},
{"label":"M", "matrix": [2, 7], "x":7, "y":2},
{"label":",", "matrix": [2, 8], "x":8, "y":2},
{"label":".", "matrix": [2, 9], "x":9, "y":2},
{"label":"/", "matrix": [2, 10], "x":10, "y":2},
{"label":"Return", "matrix": [2, 11], "x":11, "y":2},
{"matrix": [3, 0], "x":0, "y":3},
{"label":"Ctrl", "matrix": [3, 1], "x":1, "y":3},
{"label":"Alt", "matrix": [3, 2], "x":2, "y":3},
{"label":"Super", "matrix": [3, 3], "x":3, "y":3},
{"label":"&dArr;", "matrix": [3, 4], "x":4, "y":3},
{"matrix": [3, 5], "x":5, "y":3},
{"matrix": [3, 6], "x":6, "y":3},
{"label":"&uArr;", "matrix": [3, 7], "x":7, "y":3},
{"label":"&larr;", "matrix": [3, 8], "x":8, "y":3},
{"label":"&darr;", "matrix": [3, 9], "x":9, "y":3},
{"label":"&uarr;", "matrix": [3, 10], "x":10, "y":3},
{"label":"&rarr;", "matrix": [3, 11], "x":11, "y":3}
]
"layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"&dArr;", "x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"label":"&uArr;", "x":7, "y":3}, {"label":"&larr;", "x":8, "y":3}, {"label":"&darr;", "x":9, "y":3}, {"label":"&uarr;", "x":10, "y":3}, {"label":"&rarr;", "x":11, "y":3}]
},
"LAYOUT_planck_mit": {
"layout": [
{"label":"Tab", "matrix": [0, 0], "x":0, "y":0},
{"label":"Q", "matrix": [0, 1], "x":1, "y":0},
{"label":"W", "matrix": [0, 2], "x":2, "y":0},
{"label":"E", "matrix": [0, 3], "x":3, "y":0},
{"label":"R", "matrix": [0, 4], "x":4, "y":0},
{"label":"T", "matrix": [0, 5], "x":5, "y":0},
{"label":"Y", "matrix": [0, 6], "x":6, "y":0},
{"label":"U", "matrix": [0, 7], "x":7, "y":0},
{"label":"I", "matrix": [0, 8], "x":8, "y":0},
{"label":"O", "matrix": [0, 9], "x":9, "y":0},
{"label":"P", "matrix": [0, 10], "x":10, "y":0},
{"label":"BackSpace", "matrix": [0, 11], "x":11, "y":0},
{"label":"Esc", "matrix": [1, 0], "x":0, "y":1},
{"label":"A", "matrix": [1, 1], "x":1, "y":1},
{"label":"S", "matrix": [1, 2], "x":2, "y":1},
{"label":"D", "matrix": [1, 3], "x":3, "y":1},
{"label":"F", "matrix": [1, 4], "x":4, "y":1},
{"label":"G", "matrix": [1, 5], "x":5, "y":1},
{"label":"H", "matrix": [1, 6], "x":6, "y":1},
{"label":"J", "matrix": [1, 7], "x":7, "y":1},
{"label":"K", "matrix": [1, 8], "x":8, "y":1},
{"label":"L", "matrix": [1, 9], "x":9, "y":1},
{"label":";", "matrix": [1, 10], "x":10, "y":1},
{"label":"'", "matrix": [1, 11], "x":11, "y":1},
{"label":"Shift", "matrix": [2, 0], "x":0, "y":2},
{"label":"Z", "matrix": [2, 1], "x":1, "y":2},
{"label":"X", "matrix": [2, 2], "x":2, "y":2},
{"label":"C", "matrix": [2, 3], "x":3, "y":2},
{"label":"V", "matrix": [2, 4], "x":4, "y":2},
{"label":"B", "matrix": [2, 5], "x":5, "y":2},
{"label":"N", "matrix": [2, 6], "x":6, "y":2},
{"label":"M", "matrix": [2, 7], "x":7, "y":2},
{"label":",", "matrix": [2, 8], "x":8, "y":2},
{"label":".", "matrix": [2, 9], "x":9, "y":2},
{"label":"/", "matrix": [2, 10], "x":10, "y":2},
{"label":"Return", "matrix": [2, 11], "x":11, "y":2},
{"matrix": [3, 0], "x":0, "y":3},
{"label":"Ctrl", "matrix": [3, 1], "x":1, "y":3},
{"label":"Alt", "matrix": [3, 2], "x":2, "y":3},
{"label":"Super", "matrix": [3, 3], "x":3, "y":3},
{"label":"&dArr;", "matrix": [3, 4], "x":4, "y":3},
{"matrix": [3, 5], "x":5, "y":3},
{"label":"&uArr;", "matrix": [3, 7], "x":7, "y":3},
{"label":"&larr;", "matrix": [3, 8], "x":8, "y":3},
{"label":"&darr;", "matrix": [3, 9], "x":9, "y":3},
{"label":"&uarr;", "matrix": [3, 10], "x":10, "y":3},
{"label":"&rarr;", "matrix": [3, 11], "x":11, "y":3}
]
"layout": [{"label":"Tab", "x":0, "y":0}, {"label":"Q", "x":1, "y":0}, {"label":"W", "x":2, "y":0}, {"label":"E", "x":3, "y":0}, {"label":"R", "x":4, "y":0}, {"label":"T", "x":5, "y":0}, {"label":"Y", "x":6, "y":0}, {"label":"U", "x":7, "y":0}, {"label":"I", "x":8, "y":0}, {"label":"O", "x":9, "y":0}, {"label":"P", "x":10, "y":0}, {"label":"Back Space", "x":11, "y":0}, {"label":"Esc", "x":0, "y":1}, {"label":"A", "x":1, "y":1}, {"label":"S", "x":2, "y":1}, {"label":"D", "x":3, "y":1}, {"label":"F", "x":4, "y":1}, {"label":"G", "x":5, "y":1}, {"label":"H", "x":6, "y":1}, {"label":"J", "x":7, "y":1}, {"label":"K", "x":8, "y":1}, {"label":"L", "x":9, "y":1}, {"label":";", "x":10, "y":1}, {"label":"'", "x":11, "y":1}, {"label":"Shift", "x":0, "y":2}, {"label":"Z", "x":1, "y":2}, {"label":"X", "x":2, "y":2}, {"label":"C", "x":3, "y":2}, {"label":"V", "x":4, "y":2}, {"label":"B", "x":5, "y":2}, {"label":"N", "x":6, "y":2}, {"label":"M", "x":7, "y":2}, {"label":",", "x":8, "y":2}, {"label":".", "x":9, "y":2}, {"label":"/", "x":10, "y":2}, {"label":"Return", "x":11, "y":2}, {"x":0, "y":3}, {"label":"Ctrl", "x":1, "y":3}, {"label":"Alt", "x":2, "y":3}, {"label":"Super", "x":3, "y":3}, {"label":"&dArr;", "x":4, "y":3}, {"x":5, "y":3, "w":2}, {"label":"&uArr;", "x":7, "y":3}, {"label":"&larr;", "x":8, "y":3}, {"label":"&darr;", "x":9, "y":3}, {"label":"&uarr;", "x":10, "y":3}, {"label":"&rarr;", "x":11, "y":3}]
}
}
}

View File

@@ -1,6 +1,3 @@
// Copyright QMK Community
// SPDX-License-Identifier: GPL-2.0+
#pragma once

View File

@@ -1,21 +1,16 @@
# Contra
CONTRA
======
Contra is a low cost 40% keyboard.
![CONTRA](https://cartel.ltd/wp-content/uploads/2018/01/img_3209.jpg)
* Keyboard Maintainer: The QMK Community
* Hardware Supported: [Contra](https://github.com/ai03-2725/Contra)
* Hardware Availability: PCB sold by various vendors
A 40% keyboard by [CARTEL](https://cartel.ltd/)
Keyboard Maintainer: The QMK Community
Hardware Supported: CONTRA
Hardware Availability: [CARTEL](https://cartel.ltd/projects/contra/)
Make example for this keyboard (after setting up your build environment):
make contra:default
make contra:dana
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is configured.
* **Physical reset button**: Briefly press the reset button soldered on the PCB.
* **Bootmagic reset**: Hold down the top left key and plug in the controller.
See [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) then the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information.

View File

@@ -1 +1,18 @@
# This file intentionally left blank
# 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
AUDIO_ENABLE = no # Audio output
LAYOUTS_HAS_RGB = no
# Disable unsupported hardware
RGBLIGHT_SUPPORTED = no
AUDIO_SUPPORTED = no
BACKLIGHT_SUPPORTED = no

View File

@@ -1,65 +0,0 @@
// Copyright 2023 gkeyboard (@gkeyboard)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define DYNAMIC_KEYMAP_LAYER_COUNT 8
#define RGB_DI_PIN GP19
#define RGB_MATRIX_LED_COUNT 16
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES
#define RGB_DISABLE_WHEN_USB_SUSPENDED
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
#define ENABLE_RGB_MATRIX_ALPHAS_MODS
#define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
#define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_BREATHING
#define ENABLE_RGB_MATRIX_BAND_SAT
#define ENABLE_RGB_MATRIX_BAND_VAL
#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_CYCLE_ALL
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
#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_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_FLOW
#define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#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_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_MULTINEXUS
#define ENABLE_RGB_MATRIX_SPLASH
#define ENABLE_RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
#define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE

View File

@@ -1,80 +0,0 @@
{
"manufacturer": "gkeyboard",
"keyboard_name": "GPAD8-2R",
"url": "https://github.com/gkeyboard/GPAD8-2R",
"maintainer": "gkeyboard",
"bootloader": "rp2040",
"processor": "RP2040",
"board": "GENERIC_RP_RP2040",
"usb": {
"vid": "0x474B",
"pid": "0x4202",
"device_version": "1.0.0"
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"matrix_pins": {
"cols": ["GP12", "GP11", "GP10", "GP9"],
"rows": ["GP4", "GP5", "GP6"]
},
"diode_direction": "COL2ROW",
"encoder": {
"enabled": true,
"rotary": [
{
"pin_a": "GP29",
"pin_b": "GP28",
"resolution": 4
},
{
"pin_a": "GP2",
"pin_b": "GP3",
"resolution": 4
}
]
},
"rgb_matrix": {
"driver": "WS2812",
"layout": [
{ "flags": 4, "matrix": [1, 0], "x": 28, "y": 12 },
{ "flags": 4, "matrix": [1, 1], "x": 84, "y": 12 },
{ "flags": 4, "matrix": [1, 2], "x": 140, "y": 12 },
{ "flags": 4, "matrix": [1, 3], "x": 196, "y": 12 },
{ "flags": 4, "matrix": [2, 0], "x": 28, "y": 28 },
{ "flags": 4, "matrix": [2, 1], "x": 84, "y": 28 },
{ "flags": 4, "matrix": [2, 2], "x": 140, "y": 28 },
{ "flags": 4, "matrix": [2, 3], "x": 196, "y": 28 },
{ "flags": 2, "x": 28, "y": 44 },
{ "flags": 2, "x": 84, "y": 44 },
{ "flags": 2, "x": 140, "y": 44 },
{ "flags": 2, "x": 196, "y": 44 },
{ "flags": 2, "x": 28, "y": 60 },
{ "flags": 2, "x": 84, "y": 60 },
{ "flags": 2, "x": 140, "y": 60 },
{ "flags": 2, "x": 196, "y": 60 }
]
},
"layouts": {
"LAYOUT": {
"layout": [
{ "matrix": [0, 0], "x": 0.0, "y": 0.0 },
{ "matrix": [0, 3], "x": 3.0, "y": 0.0 },
{ "matrix": [1, 0], "x": 0.0, "y": 1.25 },
{ "matrix": [1, 1], "x": 1.0, "y": 1.25 },
{ "matrix": [1, 2], "x": 2.0, "y": 1.25 },
{ "matrix": [1, 3], "x": 3.0, "y": 1.25 },
{ "matrix": [2, 0], "x": 0.0, "y": 2.25 },
{ "matrix": [2, 1], "x": 1.0, "y": 2.25 },
{ "matrix": [2, 2], "x": 2.0, "y": 2.25 },
{ "matrix": [2, 3], "x": 3.0, "y": 2.25 }
]
}
}
}

View File

@@ -1,49 +0,0 @@
/* Copyright 2023 gkeyboard
*
* 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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_MUTE, RGB_TOG,
KC_A, KC_B, KC_C, KC_D,
KC_E, KC_F, KC_G, KC_H
),
[1] = LAYOUT(
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT(
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT(
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] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_MOD, RGB_RMOD) },
[1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
};
#endif

View File

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

View File

@@ -1,73 +0,0 @@
/* Copyright 2023 gkeyboard
*
* 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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_MUTE, RGB_TOG,
KC_A, KC_B, KC_C, KC_D,
KC_E, KC_F, KC_G, KC_H
),
[1] = LAYOUT(
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT(
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[3] = LAYOUT(
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[4] = LAYOUT(
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[5] = LAYOUT(
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[6] = LAYOUT(
KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[7] = LAYOUT(
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] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RGB_MOD, RGB_RMOD) },
[1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[4] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[5] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[6] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) },
[7] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
};
#endif

View File

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

View File

@@ -1,27 +0,0 @@
# GPAD8-2R
![GPAD8-2R](https://i.imgur.com/jAaO7gYh.png)
8 Keys Custom Macro Pad, 2 Encoders, with USB Type-C, RGB underglow, RGB Per Key Lighting.
* Keyboard Maintainer: [gkeyboard](https://github.com/gkeyboard)
* Hardware Supported: GPAD8-2R PCB
* Hardware Availability: http://www.mltelectronic.com
Make example for this keyboard (after setting up your build environment):
make gkeyboard/gpad8_2r:default
Flashing example for this keyboard:
make gkeyboard/gpad8_2r:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -1 +0,0 @@
WS2812_DRIVER = vendor

View File

@@ -1,26 +0,0 @@
// Copyright 2023 Gummor (@gumorr)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define MATRIX_ROW_PINS { C6, D7, E6, B4, B5 }
#define MATRIX_COL_PINS { F5, F6, F7, B1, B3, B2 }
#define USE_I2C
/*
* Feature disable options
* These options are also useful to firmware size reduction.
*/
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT

View File

@@ -1,4 +0,0 @@
// Copyright 2023 Gummor (@gumorr)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "gummykey.h"

View File

@@ -1,28 +0,0 @@
// Copyright 2023 Gummor (@gumorr)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include "quantum.h"
#define ___ KC_NO
#define LAYOUT_split_4x6_5( \
L00, L01, L02, L03, L04, L05, R05, R04, R03, R02, R01, R00, \
L10, L11, L12, L13, L14, L15, R15, R14, R13, R12, R11, R10, \
L20, L21, L22, L23, L24, L25, R25, R24, R23, R22, R21, R20, \
L30, L31, L32, L33, L34, L35, R35, R34, R33, R32, R31, R30, \
L40, L41, L42, L44, L45, R45, R44, R42, R41, R40 \
) \
{ \
{ L00, L01, L02, L03, L04, L05 }, \
{ L10, L11, L12, L13, L14, L15 }, \
{ L20, L21, L22, L23, L24, L25 }, \
{ L30, L31, L32, L33, L34, L35 }, \
{ L40, L41, L42, ___, L44, L45 }, \
{ R00, R01, R02, R03, R04, R05 }, \
{ R10, R11, R12, R13, R14, R15 }, \
{ R20, R21, R22, R23, R24, R25 }, \
{ R30, R31, R32, R33, R34, R35 }, \
{ R40, R41, R42, ___, R44, R45 } \
}

View File

@@ -1,89 +0,0 @@
{
"keyboard_name": "GummyKey",
"manufacturer": "Gumorr",
"url": "https://github.com/gumorr/GummyKey",
"maintainer": "Gumorr",
"usb": {
"vid": "0xAA12",
"pid": "0x0001",
"device_version": "1.0.0"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"diode_direction": "ROW2COL",
"layouts": {
"LAYOUT_split_4x6_5": {
"layout":
[
{"x":0.25, "y":0},
{"x":1.25, "y":0},
{"x":2.25, "y":0},
{"x":3.25, "y":0},
{"x":4.25, "y":0.125},
{"x":5.25, "y":0.25},
{"x":0.25, "y":1},
{"x":1.25, "y":1},
{"x":2.25, "y":1},
{"x":3.25, "y":1},
{"x":4.25, "y":1.125},
{"x":5.25, "y":1.25},
{"x":0, "y":2, "w":1.25},
{"x":1.25, "y":2},
{"x":2.25, "y":2},
{"x":3.25, "y":2},
{"x":4.25, "y":2.125},
{"x":5.25, "y":2.25},
{"x":0, "y":3, "w":1.25},
{"x":1.25, "y":3},
{"x":2.25, "y":3},
{"x":3.25, "y":3},
{"x":4.25, "y":3.125},
{"x":5.25, "y":3.25},
{"x":0, "y":4, "w":1.25},
{"x":1.25, "y":4},
{"x":2.25, "y":4},
{"x":3.5, "y":4.25, "w":2.25},
{"x":6.75, "y":4.25},
{"x":13.25, "y":0},
{"x":12.25, "y":0},
{"x":11.25, "y":0},
{"x":10.25, "y":0},
{"x":9.25, "y":0.125},
{"x":8.25, "y":0.25},
{"x":13.25, "y":1},
{"x":12.25, "y":1},
{"x":11.25, "y":1},
{"x":10.25, "y":1},
{"x":9.25, "y":1.125},
{"x":8.25, "y":1.25},
{"x":13.25, "y":2, "w":1.25},
{"x":12.25, "y":2},
{"x":11.25, "y":2},
{"x":10.25, "y":2},
{"x":9.25, "y":2.125},
{"x":8.25, "y":2.25},
{"x":13.25, "y":3, "w":1.25},
{"x":12.25, "y":3},
{"x":11.25, "y":3},
{"x":10.25, "y":3},
{"x":9.25, "y":3.125},
{"x":8.25, "y":3.25},
{"x":13.25, "y":4, "w":1.25},
{"x":12.25, "y":4},
{"x":11.25, "y":4},
{"x":8, "y":4.25, "w":2.25},
{"x":7, "y":4.25}
]
}
}
}

View File

@@ -1,32 +0,0 @@
// Copyright 2023 Gummor (@gumorr)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
_FUNCTION
};
#define FUNCT MO(_FUNCTION)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_split_4x6_5(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_ENT,
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_LCTL, KC_LGUI, KC_LALT, KC_SPC, FUNCT, FUNCT, KC_SPC, KC_RALT, KC_APP, KC_RCTL
),
[_FUNCTION] = LAYOUT_split_4x6_5(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_DEL,
_______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_QUOT, KC_CAPS,
KC_LSFT, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_UP, KC_RSFT,
_______, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_RIGHT
),
};

View File

@@ -1,27 +0,0 @@
# GummyKey
![gummykey](https://i.imgur.com/R6ffs2Bh.png)
a 4x6+5 split keyboard i made
* Keyboard Maintainer: [Gummor](https://github.com/gumorr)
* Hardware Supported: Pro Micro
* Hardware Availability: [Github](https://github.com/gumorr/GummyKey)
Make example for this keyboard (after setting up your build environment):
make gummykey:default
Flashing example for this keyboard:
make gummykey:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -1,13 +0,0 @@
# 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 = no # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
AUDIO_ENABLE = no # Audio output
SPLIT_KEYBOARD = yes

View File

@@ -1,24 +0,0 @@
/* Copyright 2023 PAUL ENRICO N. VIOLA @PollyV1
*
* 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
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
// generated by KBFirmware JSON to QMK Parser
// https://noroadsleft.github.io/kbf_qmk_converter/

View File

@@ -1,77 +0,0 @@
{
"keyboard_name": "polly40 v2",
"manufacturer": "paul",
"url": "https://github.com/PollyV1",
"maintainer": "Paul Enrico N. Viola",
"usb": {
"vid": "0x6532",
"pid": "0x0069",
"device_version": "0.0.1"
},
"processor": "atmega32u4",
"bootloader": "caterina",
"matrix_pins": {
"rows": ["F0", "F1", "F5", "B4"],
"cols": ["F4", "D7", "B5", "B6", "C6", "C7", "D4", "D6", "D5", "D0", "D1", "D2"]
},
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"console": false,
"command": false,
"nkro": true,
"backlight": false,
"rgblight": false,
"audio": false,
"key_lock": false
},
"layouts": {
"LAYOUT": {
"layout": [
{"label": "K00 (F0,F4)", "matrix": [0, 0], "x": 0, "y": 0},
{"label": "K01 (F0,D7)", "matrix": [0, 1], "x": 1, "y": 0},
{"label": "K02 (F0,B5)", "matrix": [0, 2], "x": 2, "y": 0},
{"label": "K03 (F0,B6)", "matrix": [0, 3], "x": 3, "y": 0},
{"label": "K04 (F0,C6)", "matrix": [0, 4], "x": 4, "y": 0},
{"label": "K05 (F0,C7)", "matrix": [0, 5], "x": 5, "y": 0},
{"label": "K06 (F0,D4)", "matrix": [0, 6], "x": 6, "y": 0},
{"label": "K07 (F0,D6)", "matrix": [0, 7], "x": 7, "y": 0},
{"label": "K08 (F0,D5)", "matrix": [0, 8], "x": 8, "y": 0},
{"label": "K09 (F0,D0)", "matrix": [0, 9], "x": 9, "y": 0},
{"label": "K0A (F0,D1)", "matrix": [0, 10], "x": 10, "y": 0},
{"label": "K0B (F0,D2)", "matrix": [0, 11], "x": 11, "y": 0},
{"label": "K10 (F1,F4)", "matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
{"label": "K11 (F1,D7)", "matrix": [1, 1], "x": 1.25, "y": 1},
{"label": "K12 (F1,B5)", "matrix": [1, 2], "x": 2.25, "y": 1},
{"label": "K13 (F1,B6)", "matrix": [1, 3], "x": 3.25, "y": 1},
{"label": "K14 (F1,C6)", "matrix": [1, 4], "x": 4.25, "y": 1},
{"label": "K15 (F1,C7)", "matrix": [1, 5], "x": 5.25, "y": 1},
{"label": "K16 (F1,D4)", "matrix": [1, 6], "x": 6.25, "y": 1},
{"label": "K17 (F1,D6)", "matrix": [1, 7], "x": 7.25, "y": 1},
{"label": "K18 (F1,D5)", "matrix": [1, 8], "x": 8.25, "y": 1},
{"label": "K19 (F1,D0)", "matrix": [1, 9], "x": 9.25, "y": 1},
{"label": "K1B (F1,D2)", "matrix": [1, 11], "x": 10.25, "y": 1, "w": 1.75},
{"label": "K20 (F5,F4)", "matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"label": "K22 (F5,B5)", "matrix": [2, 2], "x": 1.75, "y": 2},
{"label": "K23 (F5,B6)", "matrix": [2, 3], "x": 2.75, "y": 2},
{"label": "K24 (F5,C6)", "matrix": [2, 4], "x": 3.75, "y": 2},
{"label": "K25 (F5,C7)", "matrix": [2, 5], "x": 4.75, "y": 2},
{"label": "K26 (F5,D4)", "matrix": [2, 6], "x": 5.75, "y": 2},
{"label": "K27 (F5,D6)", "matrix": [2, 7], "x": 6.75, "y": 2},
{"label": "K28 (F5,D5)", "matrix": [2, 8], "x": 7.75, "y": 2},
{"label": "K29 (F5,D0)", "matrix": [2, 9], "x": 8.75, "y": 2},
{"label": "K2A (F5,D1)", "matrix": [2, 10], "x": 9.75, "y": 2, "w": 1.25},
{"label": "K2B (F5,D2)", "matrix": [2, 11], "x": 11, "y": 2},
{"label": "K30 (B4,F4)", "matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"label": "K31 (B4,D7)", "matrix": [3, 1], "x": 1.25, "y": 3},
{"label": "K32 (B4,B5)", "matrix": [3, 2], "x": 2.25, "y": 3},
{"label": "K36 (B4,D4)", "matrix": [3, 6], "x": 3.25, "y": 3, "w": 6.25},
{"label": "K3A (B4,D1)", "matrix": [3, 10], "x": 9.5, "y": 3, "w": 1.25},
{"label": "K3B (B4,D2)", "matrix": [3, 11], "x": 10.75, "y": 3, "w": 1.25}
]
}
},
"meta": "https://noroadsleft.github.io/kbf_qmk_converter/"
}

View File

@@ -1,49 +0,0 @@
/* Copyright 2023 PAUL ENRICO N. VIOLA @PollyV1
*
* 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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_RSFT, MO(3),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), MO(1)
),
[1] = LAYOUT(
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
KC_PSCR, KC_MPLY, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_COMM, KC_DOT, KC_SLSH, KC_PGUP, _______,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_PGDN, _______
),
[2] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_INS,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_UP, KC_DEL,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_LEFT, KC_DOWN, KC_RGHT, _______,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, _______, _______
),
[3] = LAYOUT(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS,
_______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, KC_SLSH, KC_RSFT, _______,
_______, _______, _______, _______, _______, _______
),
};

View File

@@ -1,49 +0,0 @@
/* Copyright 2023 PAUL ENRICO N. VIOLA @PollyV1
*
* 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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_DOT, KC_RSFT, MO(3),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, MO(2), MO(1)
),
[1] = LAYOUT(
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_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_ENT,
KC_PSCR, KC_MPLY, KC_VOLD, KC_VOLU, KC_INS, KC_DEL, KC_COMM, KC_DOT, KC_SLSH, KC_PGUP, _______,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_PGDN, _______
),
[2] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_INS,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_UP, KC_DEL,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_LEFT, KC_DOWN, KC_RGHT, _______,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, _______, _______
),
[3] = LAYOUT(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, KC_MINS, KC_EQL, _______,
KC_CAPS, _______, _______, _______, _______, _______, _______, _______, KC_LBRC, KC_RBRC, KC_BSLS,
_______, _______, _______, _______, _______, _______, KC_SCLN, KC_QUOT, KC_SLSH, KC_RSFT, _______,
_______, _______, _______, _______, _______, _______
),
};

View File

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

View File

@@ -1,26 +0,0 @@
# Polly40
![Polly40](https://i.imgur.com/QJCQcFAh.jpg)
A handwired 40% keyboard running a Pro micro Atmega32u4 controller
* Keyboard Maintainer: [Paul Enrico N. Viola](https://github.com/PollyV1)
* Hardware Supported: Atmega32u4 controller
* Hardware Availability: https://shopee.ph/Pro-Micro-ATmega32U4-5V-16MHz-USB-Arduino-Compatible-i.20469516.225455828
Make example for this keyboard (after setting up your build environment):
make handwired/polly40:default
Flashing example for this keyboard:
make handwired/polly40:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Physical reset button**: Short Ground and RST pin
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -1 +0,0 @@
# This file intentionally left blank

View File

@@ -1,39 +0,0 @@
{
"keyboard_name": "EAT-1010R2",
"manufacturer": "Sejin",
"url": "",
"maintainer": "DmNosachev",
"usb": {
"vid": "0x515A",
"pid": "0x4D4D",
"device_version": "0.0.1"
},
"diode_direction": "COL2ROW",
"development_board": "bluepill",
"matrix_pins": {
"cols": ["B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15", "C13", "C14", "C15", "A0", "A1", "A2", "A3", "A4"],
"rows": ["B11", "B12", "B13", "B14", "B15", "A8", "A9", "A10"],
"ghost": true
},
"indicators": {
"caps_lock": "B1",
"num_lock": "B0",
"scroll_lock": "B10"
},
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": false
},
"bootmagic": {
"matrix": [1, 0]
},
"layouts": {
"LAYOUT": {
"layout": [{"label":"Esc", "x":0, "y":0}, {"label":"F1", "x":2, "y":0}, {"label":"F2", "x":3, "y":0}, {"label":"F3", "x":4, "y":0}, {"label":"F4", "x":5, "y":0}, {"label":"F5", "x":6.5, "y":0}, {"label":"F6", "x":7.5, "y":0}, {"label":"F7", "x":8.5, "y":0}, {"label":"F8", "x":9.5, "y":0}, {"label":"F9", "x":11, "y":0}, {"label":"F10", "x":12, "y":0}, {"label":"F11", "x":13, "y":0}, {"label":"F12", "x":14, "y":0}, {"label":"PrtSc", "x":15.25, "y":0}, {"label":"Scroll Lock", "x":16.25, "y":0}, {"label":"Pause", "x":17.25, "y":0}, {"label":"~", "x":0, "y":1.5}, {"label":"!", "x":1, "y":1.5}, {"label":"@", "x":2, "y":1.5}, {"label":"#", "x":3, "y":1.5}, {"label":"$", "x":4, "y":1.5}, {"label":"%", "x":5, "y":1.5}, {"label":"^", "x":6, "y":1.5}, {"label":"&", "x":7, "y":1.5}, {"label":"*", "x":8, "y":1.5}, {"label":"(", "x":9, "y":1.5}, {"label":")", "x":10, "y":1.5}, {"label":"_", "x":11, "y":1.5}, {"label":"+", "x":12, "y":1.5}, {"label":"|", "x":13, "y":1.5}, {"label":"\u2190", "x":14, "y":1.5}, {"label":"Insert", "x":15.25, "y":1.5}, {"label":"Home", "x":16.25, "y":1.5}, {"label":"PgUp", "x":17.25, "y":1.5}, {"label":"Num Lock", "x":18.5, "y":1.5}, {"label":"/", "x":19.5, "y":1.5}, {"label":"*", "x":20.5, "y":1.5}, {"label":"-", "x":21.5, "y":1.5}, {"label":"Tab", "x":0, "y":2.5, "w":1.5}, {"label":"Q", "x":1.5, "y":2.5}, {"label":"W", "x":2.5, "y":2.5}, {"label":"E", "x":3.5, "y":2.5}, {"label":"R", "x":4.5, "y":2.5}, {"label":"T", "x":5.5, "y":2.5}, {"label":"Y", "x":6.5, "y":2.5}, {"label":"U", "x":7.5, "y":2.5}, {"label":"I", "x":8.5, "y":2.5}, {"label":"O", "x":9.5, "y":2.5}, {"label":"P", "x":10.5, "y":2.5}, {"label":"{", "x":11.5, "y":2.5}, {"label":"}", "x":12.5, "y":2.5}, {"label":"Enter", "x":13.5, "y":2.5, "w":1.5, "h":2}, {"label":"Delete", "x":15.25, "y":2.5}, {"label":"End", "x":16.25, "y":2.5}, {"label":"PgDn", "x":17.25, "y":2.5}, {"label":"7", "x":18.5, "y":2.5}, {"label":"8", "x":19.5, "y":2.5}, {"label":"9", "x":20.5, "y":2.5}, {"label":"+", "x":21.5, "y":2.5, "h":2}, {"label":"Caps Lock", "x":0, "y":3.5, "w":1.75}, {"label":"A", "x":1.75, "y":3.5}, {"label":"S", "x":2.75, "y":3.5}, {"label":"D", "x":3.75, "y":3.5}, {"label":"F", "x":4.75, "y":3.5}, {"label":"G", "x":5.75, "y":3.5}, {"label":"H", "x":6.75, "y":3.5}, {"label":"J", "x":7.75, "y":3.5}, {"label":"K", "x":8.75, "y":3.5}, {"label":"L", "x":9.75, "y":3.5}, {"label":":", "x":10.75, "y":3.5}, {"label":"\"", "x":11.75, "y":3.5}, {"label":"4", "x":18.5, "y":3.5}, {"label":"5", "x":19.5, "y":3.5}, {"label":"6", "x":20.5, "y":3.5}, {"label":"Shift", "x":0, "y":4.5, "w":2.25}, {"label":"Z", "x":2.25, "y":4.5}, {"label":"X", "x":3.25, "y":4.5}, {"label":"C", "x":4.25, "y":4.5}, {"label":"V", "x":5.25, "y":4.5}, {"label":"B", "x":6.25, "y":4.5}, {"label":"N", "x":7.25, "y":4.5}, {"label":"M", "x":8.25, "y":4.5}, {"label":"<", "x":9.25, "y":4.5}, {"label":">", "x":10.25, "y":4.5}, {"label":"?", "x":11.25, "y":4.5}, {"label":"Shift", "x":12.25, "y":4.5, "w":2.75}, {"label":"\u2191", "x":16.25, "y":4.5}, {"label":"1", "x":18.5, "y":4.5}, {"label":"2", "x":19.5, "y":4.5}, {"label":"3", "x":20.5, "y":4.5}, {"label":"Enter", "x":21.5, "y":4.5, "h":2}, {"label":"Ctrl", "x":0, "y":5.5, "w":1.5}, {"label":"Alt", "x":2.5, "y":5.5, "w":1.5}, {"x":4, "y":5.5, "w":7}, {"label":"Alt", "x":11, "y":5.5, "w":1.5}, {"label":"Ctrl", "x":13.5, "y":5.5, "w":1.5}, {"label":"\u2190", "x":15.25, "y":5.5}, {"label":"\u2193", "x":16.25, "y":5.5}, {"label":"\u2192", "x":17.25, "y":5.5}, {"label":"0", "x":18.5, "y":5.5, "w":2}, {"label":".", "x":20.5, "y":5.5}]
}
}
}

View File

@@ -1,38 +0,0 @@
/* Copyright 2023 DmNosachev
*
* 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
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base */
[0] = LAYOUT_debug(
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO
)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
// If console is enabled, it will print the matrix position and status of each key pressed
#ifdef CONSOLE_ENABLE
uprintf("row: %u, col: %u, pressed: %u\n", record->event.key.row, record->event.key.col, record->event.pressed);
#endif
return true;
}

View File

@@ -1 +0,0 @@
CONSOLE_ENABLE = yes # Console for debug

View File

@@ -1,48 +0,0 @@
/* Copyright 2023 DmNosachev
*
* 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
// Defines names for use in layer keycodes and the keymap
enum layer_names {
_BASE,
_FN1
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
* ,---------------------------------------------------------------------------------------------------------------------------------------.
* | Esc | | F1 | F2 | F3 | F4 | | F5 | F6 | F7 | F8 | | F9 | F10 | F11 | F12 | |PrnSc|ScrLk|Pause| |
* |---------------------------------------------------------------------------------------------------------------------------------------|
* | ~ ` | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | - | = | \ | Bsp | |Insrt|Home |PgUp | |NumLk| / | * | - |
* |---------------------------------------------------------------------------------------------------------------------------------------|
* | Tab | Q | W | E | R | T | Y | U | I | O | P | [ | ] | | | Del | End |PgDn | | 7 | 8 | 9 | + |
* |-------------------------------------------------------------------------------| | --------------------------------------| |
* | Caps | A | S | D | F | G | H | J | K | L | ;: | '" | Enter | | 4 | 5 | 6 | |
* |---------------------------------------------------------------------------------------------------------------------------------------|
* | Shift | Z | X | C | V | B | N | M | , | . | /? | Shift | | Up | | 1 | 2 | 3 |Enter|
* |-----------------------------------------------------------------------------------------|---------------------------------------| |
* | Ctrl | | Alt | Space | Alt | | Ctr | |Left |Down |Right| | 0 | . | |
* `---------------------------------------------------------------------------------------------------------------------------------------'
*/
[_BASE] = LAYOUT(
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_PSCR, KC_SCRL, KC_PAUS,
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_BSLS, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
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_ENT, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
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_P4, KC_P5, KC_P6,
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_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
)
};

View File

@@ -1,48 +0,0 @@
# QMK-based firmware for Sejin EAT-1010R2 keyboard
* Keyboard Maintainer: [DmNosachev](https://github.com/DmNosachev)
* Hardware Supported: Sejin EAT-1010R2 (membrane keyboard, Sejin
Futaba-mount dome, Asian 101 ISO layout), Blue/Black Pill STM32F103 MCU
oard. Alternatevely you can use any MCU which is supported by QMK and
has 27 or more IO pins
Make example for this keyboard (after setting up your build environment):
make handwired/sejin_eat1010r2:default
Flashing example for this keyboard:
make handwired/sejin_eat1010r2:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools)
and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide)
for more information. Brand new to QMK? Start with our
[Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Additional hardware
* 16 and 8 pin 2.54mm (0.1'') FPC connectors. They can be found at
Aliexpress for 23 USD for 10pcs. Two 8 pin connectors can be glued
together as a replacement for 16 pin.
* Three 5mm LEDs and current limiting resistors (150300Ω, depending on
LED specs). This keyboard has exactly the same spacing between LEDs as
IBM Model M, so a corresponding PCB can be used after adding resistors.
## Membrane
Sejin EAT-1010R2 has 16x8 matrix. There are 16 and 8 pin flex connectors
from membrane sheets. Solder FPC connectors to devboard (numbering from
left to right, see *matrix_pins* in info.json file).
## Bootloader
Burn [STM32duino bootloader](https://github.com/rogerclarkmelbourne/STM32duino-bootloader)
to Blue Pill board.
There are several ways to get into the bootloader:
* STM32duino bootloader waits for 3 seconds in DFU mode before jumping to application.
You just have to start the flashing process, then connect the USB.
* This firmware is configured with [bootmagic feature](https://docs.qmk.fm/#/feature_bootmagic).
Hold the ESC key down when plugging the keyboard in to trigger the bootloader.
## Troubleshooting
There is *debug* layout which has mapping for every matrix position and
prints column and raw numbers to console (hid_listen or QMK toolbox).

View File

@@ -1,2 +0,0 @@
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE

View File

@@ -1,74 +0,0 @@
/* Copyright 2023 DmNosachev
*
* 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"
/* readability */
#define XXX KC_NO
/* This is a shortcut to help you visually see your layout.
*
* The first section contains all of the arguments representing the physical
* layout of the board and position of the keys.
*
* The second converts the arguments into a two-dimensional array which
* represents the switch matrix.
*/
#define LAYOUT( \
K10, K1B, K2B, K27, K17, K15, K25, K14, K13, K24, K35, K26, K16, K1C, K2C, K1D, \
K20, K30, K3B, K37, K21, K11, K12, K22, K45, K34, K23, K33, K44, K06, K46, K36, K3C, K3D, K2D, K3E, K4E, K3F, \
K40, K00, K4B, K47, K41, K31, K32, K42, K55, K04, K43, K03, K54, K07, K05, K4C, K0C, K0D, K4D, K0E, K4F, \
K70, K50, K0B, K67, K51, K01, K02, K52, K65, K64, K53, K63, K5C, K5D, K5E, \
K7A, K6B, K5B, K77, K71, K61, K62, K72, K75, K74, K73, K6A, K56, K6C, K6D, K6E, K5F, \
K79, K78, K7B, K68, K69, K66, K76, K7C, K7E, K7F \
) \
{ \
/* 0 */ { K00, K01, K02, K03, K04, K05, K06, K07, XXX, XXX, XXX, K0B, K0C, K0D, K0E, XXX }, \
/* 1 */ { K10, K11, K12, K13, K14, K15, K16, K17, XXX, XXX, XXX, K1B, K1C, K1D, XXX, XXX }, \
/* 2 */ { K20, K21, K22, K23, K24, K25, K26, K27, XXX, XXX, XXX, K2B, K2C, K2D, XXX, XXX }, \
/* 3 */ { K30, K31, K32, K33, K34, K35, K36, K37, XXX, XXX, XXX, K3B, K3C, K3D, K3E, K3F }, \
/* 4 */ { K40, K41, K42, K43, K44, K45, K46, K47, XXX, XXX, XXX, K4B, K4C, K4D, K4E, K4F }, \
/* 5 */ { K50, K51, K52, K53, K54, K55, K56, XXX, XXX, XXX, XXX, K5B, K5C, K5D, K5E, K5F }, \
/* 6 */ { XXX, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, XXX }, \
/* 7 */ { K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C, XXX, K7E, K7F } \
}
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */
#define LAYOUT_debug( \
K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F, \
K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F, \
K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F, \
K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F, \
K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F, \
K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F, \
K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F, \
K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C, K7D, K7E, K7F \
) \
{ \
/* 0 */ { K00, K01, K02, K03, K04, K05, K06, K07, K08, K09, K0A, K0B, K0C, K0D, K0E, K0F }, \
/* 1 */ { K10, K11, K12, K13, K14, K15, K16, K17, K18, K19, K1A, K1B, K1C, K1D, K1E, K1F }, \
/* 2 */ { K20, K21, K22, K23, K24, K25, K26, K27, K28, K29, K2A, K2B, K2C, K2D, K2E, K2F }, \
/* 3 */ { K30, K31, K32, K33, K34, K35, K36, K37, K38, K39, K3A, K3B, K3C, K3D, K3E, K3F }, \
/* 4 */ { K40, K41, K42, K43, K44, K45, K46, K47, K48, K49, K4A, K4B, K4C, K4D, K4E, K4F }, \
/* 5 */ { K50, K51, K52, K53, K54, K55, K56, K57, K58, K59, K5A, K5B, K5C, K5D, K5E, K5F }, \
/* 6 */ { K60, K61, K62, K63, K64, K65, K66, K67, K68, K69, K6A, K6B, K6C, K6D, K6E, K6F }, \
/* 7 */ { K70, K71, K72, K73, K74, K75, K76, K77, K78, K79, K7A, K7B, K7C, K7D, K7E, K7F } \
}
/* 0 1 2 3 4 5 6 7 8 9 A B C D E F */

View File

@@ -130,26 +130,25 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
_______, _______, KC_NUKE, _______
),
};
// clang-format on
#ifdef ENCODER_ENABLE
# ifdef ENCODER_MAP_ENABLE
// clang-format off
#ifdef ENCODER_MAP_ENABLE
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][2] = {
[_DEFAULT_LAYER_1] = { ENCODER_CCW_CW( KC_VOLD, KC_VOLU ), ENCODER_CCW_CW( KC_WH_D, KC_WH_U ) },
[_DEFAULT_LAYER_2] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_DEFAULT_LAYER_3] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_DEFAULT_LAYER_4] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_GAMEPAD] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_DIABLO] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_MOUSE] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( KC_WH_D, KC_WH_U ) },
[_MEDIA] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( _______, _______ ) },
[_RAISE] = { ENCODER_CCW_CW( _______, _______ ), ENCODER_CCW_CW( KC_PGDN, KC_PGUP ) },
[_LOWER] = { ENCODER_CCW_CW( RGB_MOD, RGB_RMOD), ENCODER_CCW_CW( RGB_HUD, RGB_HUI ) },
[_ADJUST] = { ENCODER_CCW_CW( CK_DOWN, CK_UP ), ENCODER_CCW_CW( _______, _______ ) },
[_DEFAULT_LAYER_1] = { { KC_VOLD, KC_VOLU }, { KC_WH_D, KC_WH_U } },
[_DEFAULT_LAYER_2] = { { _______, _______ }, { _______, _______ } },
[_DEFAULT_LAYER_3] = { { _______, _______ }, { _______, _______ } },
[_DEFAULT_LAYER_4] = { { _______, _______ }, { _______, _______ } },
[_GAMEPAD] = { { _______, _______ }, { _______, _______ } },
[_DIABLO] = { { _______, _______ }, { _______, _______ } },
[_MOUSE] = { { _______, _______ }, { KC_WH_D, KC_WH_U } },
[_MEDIA] = { { _______, _______ }, { _______, _______ } },
[_RAISE] = { { _______, _______ }, { KC_PGDN, KC_PGUP } },
[_LOWER] = { { RGB_MOD, RGB_RMOD}, { RGB_HUD, RGB_HUI } },
[_ADJUST] = { { CK_DOWN, CK_UP }, { _______, _______ } },
};
// clang-format on
# else
#else
deferred_token encoder_token = INVALID_DEFERRED_TOKEN;
static int8_t last_direction = -1;
@@ -161,11 +160,11 @@ static uint32_t encoder_callback(uint32_t trigger_time, void *cb_arg) {
}
bool encoder_update_user(uint8_t index, bool clockwise) {
# ifdef SWAP_HANDS_ENABLE
# ifdef SWAP_HANDS_ENABLE
if (swap_hands) {
index ^= 1;
}
# endif
# endif
if (index == 0) {
tap_code_delay(clockwise ? KC_VOLD : KC_VOLU, 5);
} else if (index == 1) {
@@ -186,7 +185,7 @@ bool encoder_update_user(uint8_t index, bool clockwise) {
}
return false;
}
# endif
#endif
#endif
#ifdef OLED_ENABLE
@@ -215,8 +214,4 @@ void oled_render_large_display(bool side) {
render_unicode_mode(1, 14);
}
}
void render_oled_title(bool side) {
oled_write_P(side ? PSTR(" Tractyl ") : PSTR(" Manuform "), true);
}
#endif

View File

@@ -1,18 +0,0 @@
// Copyright 2023 Robert Mills (@robcmills)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define DIRECT_PINS {{NO_PIN, A15,A8, B15, B14, B13}, \
{B10, B1, B0, A7, A6, A5 }, \
{NO_PIN, B3, B4, B5, B8, B9 }, \
{A4, A3, A2, NO_PIN, NO_PIN, NO_PIN}}
#define DIRECT_PINS_RIGHT {{B13, B14, B15, A8, A15, NO_PIN}, \
{A5, A6, A7, B0, B1, B10}, \
{B9, B8, B5, B4, B3, NO_PIN}, \
{A2, A3, A4, NO_PIN, NO_PIN, NO_PIN}}
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
#define SERIAL_USART_TX_PIN B6 // USART TX pin
#define SERIAL_USART_RX_PIN B7 // USART RX pin

View File

@@ -1,8 +0,0 @@
// Copyright 2023 Robert Mills (@robcmills)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define HAL_USE_SERIAL TRUE
#include_next <halconf.h>

View File

@@ -1,75 +0,0 @@
{
"manufacturer": "Robert Mills",
"keyboard_name": "karn",
"maintainer": "robcmills",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"development_board": "blackpill_f401",
"url": "https://github.com/robcmills/karn-keyboard",
"usb": {
"device_version": "1.0.0",
"pid": "0x0000",
"vid": "0xFEED"
},
"bootmagic": {
"matrix": [0, 1]
},
"split": {
"enabled": true
},
"community_layouts": ["split_3x6_3"],
"layouts": {
"LAYOUT_split_3x6_3": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [0, 1], "x": 1, "y": 0 },
{ "matrix": [0, 2], "x": 2, "y": 0 },
{ "matrix": [0, 3], "x": 3, "y": 0 },
{ "matrix": [0, 4], "x": 4, "y": 0 },
{ "matrix": [0, 5], "x": 5, "y": 0},
{ "matrix": [4, 0], "x": 8, "y": 0},
{ "matrix": [4, 1], "x": 9, "y": 0 },
{ "matrix": [4, 2], "x": 10, "y": 0 },
{ "matrix": [4, 3], "x": 11, "y": 0 },
{ "matrix": [4, 4], "x": 12, "y": 0},
{ "matrix": [4, 5], "x": 13, "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": [5, 0], "x": 8, "y": 1},
{ "matrix": [5, 1], "x": 9, "y": 1 },
{ "matrix": [5, 2], "x": 10, "y": 1 },
{ "matrix": [5, 3], "x": 11, "y": 1 },
{ "matrix": [5, 4], "x": 12, "y": 1},
{ "matrix": [5, 5], "x": 13, "y": 1},
{ "matrix": [2, 0], "x": 0, "y": 2},
{ "matrix": [2, 1], "x": 1, "y": 2},
{ "matrix": [2, 2], "x": 2, "y": 2 },
{ "matrix": [2, 3], "x": 3, "y": 2 },
{ "matrix": [2, 4], "x": 4, "y": 2 },
{ "matrix": [2, 5], "x": 5, "y": 2},
{ "matrix": [6, 0], "x": 8, "y": 2},
{ "matrix": [6, 1], "x": 9, "y": 2 },
{ "matrix": [6, 2], "x": 10, "y": 2 },
{ "matrix": [6, 3], "x": 11, "y": 2 },
{ "matrix": [6, 4], "x": 12, "y": 2},
{ "matrix": [6, 5], "x": 13, "y": 2},
{ "matrix": [3, 0], "x": 3.5, "y": 3.25 },
{ "matrix": [3, 1], "x": 4.5, "y": 3.5 },
{ "matrix": [3, 2], "x": 5.5, "y": 3.75 },
{ "matrix": [7, 0], "x": 7.5, "y": 3.75 },
{ "matrix": [7, 1], "x": 8.5, "y": 3.5 },
{ "matrix": [7, 2], "x": 9.5, "y": 3.25 }
]
}
}
}

View File

@@ -1,13 +0,0 @@
// Copyright 2023 Robert Mills (@robcmills)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
// Equivalent to zmk behavior-hold-tap tap-preferred flavor
// Do not force the mod-tap key press to be handled as a modifier
// if any other key was pressed while the mod-tap key is held down.
#define IGNORE_MOD_TAP_INTERRUPT_PER_KEY
// Equivalent to zmk behavior-hold-tap hold-preferred flavor
#define HOLD_ON_OTHER_KEY_PRESS_PER_KEY

View File

@@ -1,96 +0,0 @@
// Copyright 2023 Robert Mills (@robcmills)
// SPDX-License-Identifier: GPL-2.0
#include QMK_KEYBOARD_H
// Tap Dance declarations
enum {
TD_F1_F11,
TD_F2_F12,
};
// Tap Dance definitions
qk_tap_dance_action_t tap_dance_actions[] = {
// Tap once for F1, twice for F11
[TD_F1_F11] = ACTION_TAP_DANCE_DOUBLE(KC_F1, KC_F11),
[TD_F2_F12] = ACTION_TAP_DANCE_DOUBLE(KC_F2, KC_F12),
};
bool get_hold_on_other_key_press(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case SFT_T(KC_Z): // Special case for Shift
return true; // Immediately select the hold action when another key is pressed.
case SFT_T(KC_ESC):
return true;
default:
return false; // Do not select the hold action when another key is pressed.
}
}
bool get_ignore_mod_tap_interrupt(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case CTL_T(KC_X):
return true;
case ALT_T(KC_C):
return true;
case CMD_T(KC_V):
return true;
case CMD_T(KC_M):
return true;
case ALT_T(KC_COMM):
return true;
case CTL_T(KC_DOT):
return true;
case KC_X:
return true;
case KC_C:
return true;
case KC_V:
return true;
case KC_M:
return true;
case KC_COMM:
return true;
case KC_DOT:
return true;
default:
return false;
}
}
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// default (colemak)
[0] = LAYOUT_split_3x6_3(
KC_NO, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_NO,
HYPR_T(KC_TAB),KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, HYPR_T(KC_ENT),
KC_NO, SFT_T(KC_Z),CTL_T(KC_X),ALT_T(KC_C),CMD_T(KC_V),KC_B, KC_K, CMD_T(KC_M),ALT_T(KC_COMM),CTL_T(KC_DOT),RSFT_T(KC_SLSH),KC_NO,
MO(1), SFT_T(KC_ESC),MO(3), KC_BSPC,KC_SPC,MO(2)
),
// symbols
[1] = LAYOUT_split_3x6_3(
_______, KC_BSLS, KC_GRV, KC_QUOT, KC_DQT, KC_LCBR, KC_RCBR, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_DEL, _______, _______
),
// nav
[2] = LAYOUT_split_3x6_3(
_______, _______, KC_Q, _______, _______, KC_VOLU, _______, _______, _______, KC_SCLN, _______, _______,
_______, C(KC_UP),C(KC_DOWN),G(KC_GRV), G(KC_TAB), KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS, _______,
_______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
),
// numbers
[3] = LAYOUT_split_3x6_3(
_______, TD(TD_F1_F11), TD(TD_F2_F12), KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
)
};

View File

@@ -1,58 +0,0 @@
```
/*
* ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
* │ Q │ W │ F │ P │ G │ BASE │ J │ L │ U │ Y │ ; │
* │ │ │ │ │ │ LAYER │ │ │ │ │ │
* ┌─────┼─────┼─────┼─────┼─────┼─────┤ ┌─────┐ ├─────┼─────┼─────┼─────┼─────┼─────┐
* │ TAB │ A │ R │ S │ T │ D │ │ TAP │ │ H │ N │ E │ I │ O │ ENT │
* │ HYP │ │ │ │ │ │ │ HOLD│ │ │ │ │ │ │ HYP │
* └─────┼─────┼─────┼─────┼─────┼─────┤ └─────┘ ├─────┼─────┼─────┼─────┼─────┼─────┘
* │ Z │ X │ C │ V │ B │ │ K │ M │ , │ . │ / │
* │ SFT │ CTL │ ALT │ CMD │ │ │ │ CMD │ ALT │ CTL │ SFT │
* └─────┴─────┴─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┴─────┴─────┘
* │ │ ESC │ │ │ BAK │ SPC │ │
* │ SYM │ SFT │ NUM │ │ │ │ NAV │
* └─────┴─────┴─────┘ └─────┴─────┴─────┘
* ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
* │ \ │ ` │ ' │ " │ { │ SYM │ } │ - │ = │ [ │ ] │
* │ │ │ │ │ │ LAYER │ │ │ │ │ │
* ┌─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┐
* │ │ ! │ @ │ # │ $ │ % │ │ ^ │ & │ * │ ( │ ) │ │
* │ │ │ │ │ │ │ │ │ │ │ │ │ │
* └─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┘
* │ │ │ │ │ │ │ │ │ │ │ │
* │ │ │ │ │ │ │ │ │ │ │ │
* └─────┴─────┴─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┴─────┴─────┘
* │ │ │ │ │ DEL │ │ │
* │ │ │ │ │ │ │ │
* └─────┴─────┴─────┘ └─────┴─────┴─────┘
* ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
* │ │ │ │ │ VOL │ NAV │ │ │ │ │ │
* │ │ │ │ │ UP │ LAYER │ │ │ │ │ │
* ┌─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┐
* │ │ CTL │ CTL │ CMD │ CMD │ VOL │ │ ← │ ↓ │ ↑ │ → │CAPS │ │
* │ │ + ↓ │ + ↑ │ + ` │ +TAB│ DOWN│ │ │ │ │ │LOCK │ │
* └─────┼─────┼─────┼─────┼─────┼─────┤ ├─────┼─────┼─────┼─────┼─────┼─────┘
* │ │ │ │ │ MUTE│ │ │ │ │ │ │
* │ │ │ │ │ │ │ │ │ │ │ │
* └─────┴─────┴─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┴─────┴─────┘
* │ │ │ │ │ │ │ │
* │ │ │ │ │ │ │ │
* └─────┴─────┴─────┘ └─────┴─────┴─────┘
* ┌─────┬─────┬─────┬─────┬─────┐ ┌─────┬─────┬─────┬─────┬─────┐
* │ F1 │ F2 │ F3 │ F4 │ F5 │ NUM │ F6 │ F7 │ F8 │ F9 │ F10 │
* │ F11 │ F12 │ │ │ │ LAYER │ │ │ │ │ │
* ┌─────┼─────┼─────┼─────┼─────┼─────┤ ┌─────┐ ├─────┼─────┼─────┼─────┼─────┼─────┐
* │ │ 1 │ 2 │ 3 │ 4 │ 5 │ │ TAP │ │ 6 │ 7 │ 8 │ 9 │ 0 │ │
* │ │ │ │ │ │ │ │TAPx2│ │ │ │ │ │ │ │
* └─────┼─────┼─────┼─────┼─────┼─────┤ └─────┘ ├─────┼─────┼─────┼─────┼─────┼─────┘
* │ │ │ │ │ │ │ │ │ │ │ │
* │ │ │ │ │ │ │ │ │ │ │ │
* └─────┴─────┴─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┴─────┴─────┘
* │ │ │ │ │ │ │ │
* │ │ │ │ │ │ │ │
* └─────┴─────┴─────┘ └─────┴─────┴─────┘
*/
```

View File

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

View File

@@ -1,41 +0,0 @@
// Copyright 2023 Robert Mills (@robcmills)
// SPDX-License-Identifier: GPL-2.0
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// default (qwerty)
[0] = LAYOUT_split_3x6_3(
KC_NO, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_NO,
HYPR_T(KC_TAB),KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, HYPR_T(KC_ENT),
KC_NO, SFT_T(KC_Z),CTL_T(KC_X),ALT_T(KC_C),CMD_T(KC_V),KC_B, KC_N, CMD_T(KC_M),ALT_T(KC_COMM),CTL_T(KC_DOT),RSFT_T(KC_SLSH),KC_NO,
MO(1), SFT_T(KC_ESC),MO(3), KC_BSPC,KC_SPC,MO(2)
),
// symbols
[1] = LAYOUT_split_3x6_3(
_______, KC_BSLS, KC_GRV, KC_QUOT, KC_DQT, KC_LCBR, KC_RCBR, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, _______,
_______, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, KC_DEL, _______, _______
),
// nav
[2] = LAYOUT_split_3x6_3(
_______, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______, _______, _______,
_______, C(KC_UP),C(KC_DOWN),G(KC_GRV), G(KC_TAB), KC_VOLD, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_CAPS, _______,
_______, _______, _______, _______, _______, KC_MUTE, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
),
// numbers
[3] = LAYOUT_split_3x6_3(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, _______,
_______, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______
)
};

View File

@@ -1,9 +0,0 @@
// Copyright 2022 Robert Mills (@robcmills)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef STM32_SERIAL_USE_USART1
#define STM32_SERIAL_USE_USART1 TRUE

View File

@@ -1,42 +0,0 @@
# Karn 2
Split, ortholinear, non-staggered, diodeless, 38 key keyboard, with a unique set of 1.5u thumb arc keys and 1.5u pinky reach keys.
* Keyboard Maintainer: [Robert Mills](https://github.com/robcmills)
* Hardware Supported: Blackpill STM32F401
Based on the excellent [cantor](https://github.com/diepala/cantor), and inspired by the popular [corne](https://github.com/foostan/crkbd), [ferris](https://github.com/pierrechevalier83/ferris) and [sweep](https://github.com/davidphilipbarr/Sweep) keyboards.
[https://github.com/robcmills/karn-keyboard](https://github.com/robcmills/karn-keyboard)
![karn-2-left](https://i.imgur.com/vm6XFyIh.jpeg)
![karn-2-full](https://i.imgur.com/R7WnlC3h.jpeg)
![karn-2-pcb](https://i.imgur.com/EQqyyEDh.png)
### Make
Make example for this keyboard (after setting up your build environment):
make karn:default
Flashing example for this keyboard:
make karn:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
### Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the top left key and plug in the keyboard. For the right side, hold the top right key and plug the keyboard.
* **Physical reset button**:
* Press and hold the BOOT0 button.
* Press and release the NRST button.
* Release the BOOT0 button.
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -1 +0,0 @@
SERIAL_DRIVER = usart

View File

@@ -20,7 +20,7 @@
#define TT_MDIA TT(_MEDIA)
// enum more_custom_keycodes {
// KC_P00 = USER_SAFE_RANGE
// KC_P00 = NEW_SAFE_RANGE
//};
// clang-format off

View File

@@ -1,170 +0,0 @@
/* Copyright 2023 @ 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 "quantum.h"
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
// {0, I_1, G_1, H_1}
{0, I_2, G_2, H_2}, // F13
{0, I_3, G_3, H_3}, // F14
{0, I_4, G_4, H_4}, // F15
{0, I_5, G_5, H_5}, // Esc
{0, I_6, G_6, H_6}, // F1
{0, I_7, G_7, H_7}, // F2
{0, I_8, G_8, H_8}, // F3
{0, I_9, G_9, H_9}, // F4
{0, I_10, G_10, H_10}, // F5
{0, I_11, G_11, H_11}, // F6
{0, I_12, G_12, H_12}, // F7
{0, I_13, G_13, H_13}, // F8
{0, I_14, G_14, H_14}, // F9
{0, I_15, G_15, H_15}, // F10
{0, I_16, G_16, H_16}, // F11
{0, L_16, J_16, K_16}, // F12
{0, L_15, J_15, K_15}, // DEL
{0, L_14, J_14, K_14}, // Light
{0, C_1, A_1, B_1}, // num_lock
{0, C_2, A_2, B_2}, // /
{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}, // 1!
{0, C_7, A_7, B_7}, // 2@
{0, C_8, A_8, B_8}, // 3#
{0, C_9, A_9, B_9}, // 4$
{0, C_10, A_10, B_10}, // 5%
{0, C_11, A_11, B_11}, // 6^
{0, C_12, A_12, B_12}, // 7&
{0, C_13, A_13, B_13}, // 8*
{0, C_14, A_14, B_14}, // 9(
{0, C_15, A_15, B_15}, // 0)
{0, C_16, A_16, B_16}, // -_
{0, L_13, J_13, K_13}, // =+
{0, L_12, J_12, K_12}, // BackSpace
{0, L_11, J_11, K_11}, // PgUp
{0, F_1, D_1, E_1}, // 7
{0, F_2, D_2, E_2}, // 8
{0, F_3, D_3, E_3}, // 9
{0, F_4, D_4, E_4}, // +
{0, F_5, D_5, E_5}, // TAB
{0, F_6, D_6, E_6}, // Q
{0, F_7, D_7, E_7}, // W
{0, F_8, D_8, E_8}, // E
{0, F_9, D_9, E_9}, // R
{0, F_10, D_10, E_10}, // T
{0, F_11, D_11, E_11}, // Y
{0, F_12, D_12, E_12}, // U
{0, F_13, D_13, E_13}, // I
{0, F_14, D_14, E_14}, // O
{0, F_15, D_15, E_15}, // P
{0, F_16, D_16, E_16}, // [
{0, L_10, J_10, K_10}, // ]
{0, L_9, J_9, K_9}, // \|
{0, L_8, J_8, K_8}, // PgDn
{1, C_16, A_16, B_16}, // 4
{1, C_15, A_15, B_15}, // 5
{1, C_14, A_14, B_14}, // 6
// {0, F_4, D_4, E_4}, // +
{1, C_12, A_12, B_12}, // CapsLock
{1, C_11, A_11, B_11}, // A
{1, C_10, A_10, B_10}, // S
{1, C_9, A_9, B_9}, // D
{1, C_8, A_8, B_8}, // F
{1, C_7, A_7, B_7}, // G
{1, C_6, A_6, B_6}, // H
{1, C_5, A_5, B_5}, // J
{1, C_4, A_4, B_4}, // k
{1, C_3, A_3, B_3}, // l
{1, C_2, A_2, B_2}, //
{1, C_1, A_1, B_1}, // '
{1, L_1, J_1, K_1}, // Enter
{1, L_2, J_2, K_2}, // Home
{1, I_16, G_16, H_16}, // 1
{1, I_15, G_15, H_15}, // 2
{1, I_14, G_14, H_14}, // 3
{1, I_13, G_13, H_13}, // Enter
{1, I_12, G_12, H_12}, //Shift_L
{1, I_10, G_10, H_10}, // Z
{1, I_9, G_9, H_9}, // X
{1, I_8, G_8, H_8}, // C
{1, I_7, G_7, H_7}, // V
{1, I_6, G_6, H_6}, // B
{1, I_5, G_5, H_5}, // N
{1, I_4, G_4, H_4}, // M
{1, I_3, G_3, H_3}, // ,
{1, I_2, G_2, H_2}, // .
{1, I_1, G_1, H_1}, // ?
{1, L_3, J_3, K_3}, // Shift_R
{1, L_4, J_4, K_4}, // Up
{1, F_16, D_16, E_16}, // 0
{1, F_14, D_14, E_14}, // .
{1, F_12, D_12, E_12}, // Ctrl_L
{1, F_11, D_11, E_11}, // Win_L
{1, F_10, D_10, E_10}, // Alt_L
{1, F_6, D_6, E_6}, // Space
{1, F_3, D_3, E_3}, // Alt_R
{1, F_2, D_2, E_2}, // Fn
{1, F_1, D_1, E_1}, // Ctrl_R
{1, L_5, J_5, K_5}, // Left
{1, L_6, J_6, K_6}, // Down
{1, L_7, J_7, K_7}, // Right
};
#define __ NO_LED
led_config_t g_led_config = {
{
// Key Matrix to LED Index
{ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, __, 0, 1 },
{ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 18, 19, 20 },
{ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 37, 38, 39 },
{ 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 76, 71, 72, 56, 57, 58 },
{ 77, __, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, __, 88, 89, 73, 74, 75 },
{ 92, 93, 94, __, __, 21, 95, 40, __, 96, 97, 98, 99, 100, 101, 90, 2, 91 },
},
{
// LED Index to Physical Position
{11,0}, {23,0}, {34,0}, {49,0}, {63,0}, {75,0}, {86,0}, {98,0}, {112,0}, {123,0}, {135,0}, {146,0}, {161,0}, {172,0}, {184,0}, {195,0}, {209,0}, {224,0},
{0,15}, {11,15}, {23,15}, {34,15}, {49,15}, {60,15}, {72,15}, {83,15}, {95,15}, {106,15}, {118,15}, {129,15}, {141,15}, {152,15}, {164,15}, {175,15}, {186,15}, {204,15}, {224,15},
{0,26}, {11,26}, {23,26}, {34,32}, {52,26}, {66,26}, {78,26}, {89,26}, {101,26}, {112,26}, {123,26}, {135,26}, {146,26}, {158,26}, {169,26}, {181,26}, {192,26}, {207,26}, {224,26},
{0,38}, {11,38}, {23,38}, {53,38}, {69,38}, {81,38}, {92,38}, {103,38}, {115,38}, {126,38}, {138,38}, {149,38}, {161,38}, {172,38}, {184,38}, {202,38}, {224,38},
{0,49}, {11,49}, {23,49}, {34,55}, {56,49}, {75,49}, {86,49}, {98,49}, {109,49}, {121,49}, {132,49}, {144,49}, {155,49}, {166,49}, {178,49}, {194,49}, {213,52},
{6,61}, {23,61}, {50,61}, {65,61}, {79,61}, {122,61}, {163,61}, {175,61}, {186,61}, {201,64}, {213,64}, {224,64},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
4, 4, 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
}
};
#endif

View File

@@ -1,30 +0,0 @@
/* Copyright 2023 @ 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
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 56
#define DRIVER_2_LED_TOTAL 46
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 59
/* Enable num-lock LED */
#define NUM_LOCK_LED_INDEX 18

View File

@@ -1,132 +0,0 @@
{
"keyboard_name": "Keychron Q12",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x01D1",
"device_version": "1.0.0"
},
"encoder": {
"rotary": [
{"pin_a": "A2", "pin_b": "C14"}
]
},
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_ansi_103": {
"layout": [
{"matrix":[0,15], "x":0, "y":0},
{"matrix":[0,16], "x":1, "y":0},
{"matrix":[0,17], "x":2, "y":0},
{"matrix":[5,16], "x":3, "y":0},
{"matrix":[0,0], "x":4.25, "y":0},
{"matrix":[0,1], "x":5.5, "y":0},
{"matrix":[0,2], "x":6.5, "y":0},
{"matrix":[0,3], "x":7.5, "y":0},
{"matrix":[0,4], "x":8.5, "y":0},
{"matrix":[0,5], "x":9.75, "y":0},
{"matrix":[0,6], "x":10.75, "y":0},
{"matrix":[0,7], "x":11.75, "y":0},
{"matrix":[0,8], "x":12.75, "y":0},
{"matrix":[0,9], "x":14, "y":0},
{"matrix":[0,10], "x":15, "y":0},
{"matrix":[0,11], "x":16, "y":0},
{"matrix":[0,12], "x":17, "y":0},
{"matrix":[0,13], "x":18.25, "y":0},
{"matrix":[0,14], "x":19.5, "y":0},
{"matrix":[1,15], "x":0, "y":1.25},
{"matrix":[1,16], "x":1, "y":1.25},
{"matrix":[1,17], "x":2, "y":1.25},
{"matrix":[5,5], "x":3, "y":1.25},
{"matrix":[1,0], "x":4.25, "y":1.25},
{"matrix":[1,1], "x":5.25, "y":1.25},
{"matrix":[1,2], "x":6.25, "y":1.25},
{"matrix":[1,3], "x":7.25, "y":1.25},
{"matrix":[1,4], "x":8.25, "y":1.25},
{"matrix":[1,5], "x":9.25, "y":1.25},
{"matrix":[1,6], "x":10.25, "y":1.25},
{"matrix":[1,7], "x":11.25, "y":1.25},
{"matrix":[1,8], "x":12.25, "y":1.25},
{"matrix":[1,9], "x":13.25, "y":1.25},
{"matrix":[1,10], "x":14.25, "y":1.25},
{"matrix":[1,11], "x":15.25, "y":1.25},
{"matrix":[1,12], "x":16.25, "y":1.25},
{"matrix":[1,13], "x":17.25, "y":1.25, "w":2},
{"matrix":[1,14], "x":19.5, "y":1.25},
{"matrix":[2,15], "x":0, "y":2.25},
{"matrix":[2,16], "x":1, "y":2.25},
{"matrix":[2,17], "x":2, "y":2.25},
{"matrix":[5,7], "x":3, "y":2.25, "h":2},
{"matrix":[2,0], "x":4.25, "y":2.25, "w":1.5},
{"matrix":[2,1], "x":5.75, "y":2.25},
{"matrix":[2,2], "x":6.75, "y":2.25},
{"matrix":[2,3], "x":7.75, "y":2.25},
{"matrix":[2,4], "x":8.75, "y":2.25},
{"matrix":[2,5], "x":9.75, "y":2.25},
{"matrix":[2,6], "x":10.75, "y":2.25},
{"matrix":[2,7], "x":11.75, "y":2.25},
{"matrix":[2,8], "x":12.75, "y":2.25},
{"matrix":[2,9], "x":13.75, "y":2.25},
{"matrix":[2,10], "x":14.75, "y":2.25},
{"matrix":[2,11], "x":15.75, "y":2.25},
{"matrix":[2,12], "x":16.75, "y":2.25},
{"matrix":[2,13], "x":17.75, "y":2.25, "w":1.5},
{"matrix":[2,14], "x":19.5, "y":2.25},
{"matrix":[3,15], "x":0, "y":3.25},
{"matrix":[3,16], "x":1, "y":3.25},
{"matrix":[3,17], "x":2, "y":3.25},
{"matrix":[3,0], "x":4.25, "y":3.25, "w":1.75},
{"matrix":[3,1], "x":6, "y":3.25},
{"matrix":[3,2], "x":7, "y":3.25},
{"matrix":[3,3], "x":8, "y":3.25},
{"matrix":[3,4], "x":9, "y":3.25},
{"matrix":[3,5], "x":10, "y":3.25},
{"matrix":[3,6], "x":11, "y":3.25},
{"matrix":[3,7], "x":12, "y":3.25},
{"matrix":[3,8], "x":13, "y":3.25},
{"matrix":[3,9], "x":14, "y":3.25},
{"matrix":[3,10], "x":15, "y":3.25},
{"matrix":[3,11], "x":16, "y":3.25},
{"matrix":[3,13], "x":17, "y":3.25, "w":2.25},
{"matrix":[3,14], "x":19.5, "y":3.25},
{"matrix":[4,15], "x":0, "y":4.25},
{"matrix":[4,16], "x":1, "y":4.25},
{"matrix":[4,17], "x":2, "y":4.25},
{"matrix":[3,12], "x":3, "y":4.25, "h":2},
{"matrix":[4,0], "x":4.25, "y":4.25, "w":2.25},
{"matrix":[4,2], "x":6.5, "y":4.25},
{"matrix":[4,3], "x":7.5, "y":4.25},
{"matrix":[4,4], "x":8.5, "y":4.25},
{"matrix":[4,5], "x":9.5, "y":4.25},
{"matrix":[4,6], "x":10.5, "y":4.25},
{"matrix":[4,7], "x":11.5, "y":4.25},
{"matrix":[4,8], "x":12.5, "y":4.25},
{"matrix":[4,9], "x":13.5, "y":4.25},
{"matrix":[4,10], "x":14.5, "y":4.25},
{"matrix":[4,11], "x":15.5, "y":4.25},
{"matrix":[4,13], "x":16.5, "y":4.25, "w":1.75},
{"matrix":[4,14], "x":18.5, "y":4.5},
{"matrix":[5,15], "x":0, "y":5.25, "w":2},
{"matrix":[5,17], "x":2, "y":5.25},
{"matrix":[5,0], "x":4.25, "y":5.25, "w":1.25},
{"matrix":[5,1], "x":5.5, "y":5.25, "w":1.25},
{"matrix":[5,2], "x":6.75, "y":5.25, "w":1.25},
{"matrix":[5,6], "x":8, "y":5.25, "w":6.25},
{"matrix":[5,9], "x":14.25, "y":5.25},
{"matrix":[5,10], "x":15.25, "y":5.25},
{"matrix":[5,11], "x":16.25, "y":5.25},
{"matrix":[5,12], "x":17.5, "y":5.5},
{"matrix":[5,13], "x":18.5, "y":5.5},
{"matrix":[5,14], "x":19.5, "y":5.5}
]
}
}
}

View File

@@ -1,69 +0,0 @@
/* Copyright 2023 @ 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
};
#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_103(
KC_MUTE, KC_F13, KC_F14, KC_F15, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_103(
RGB_TOG, _______, _______, _______, _______, 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_103(
KC_MUTE, _______, _______, _______, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_103(
RGB_TOG, _______, _______, _______, _______, 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

View File

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

View File

@@ -1,80 +0,0 @@
/* Copyright 2023 @ 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_ansi_103(
KC_MUTE, KC_F13, KC_F14, KC_F15, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_103(
RGB_TOG, _______, _______, _______, _______, 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_103(
KC_MUTE, _______, _______, _______, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_103(
RGB_TOG, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
#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
void housekeeping_task_user(void) {
housekeeping_task_keychron();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
return true;
}

View File

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

View File

@@ -1,69 +0,0 @@
/* Copyright 2023 @ 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
};
#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_103(
KC_MUTE, KC_F13, KC_F14, KC_F15, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_103(
RGB_TOG, _______, _______, _______, _______, 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_103(
KC_MUTE, _______, _______, _______, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_103(
RGB_TOG, _______, _______, _______, _______, 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

View File

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

View File

@@ -1,26 +0,0 @@
# 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 USB 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 = CKLED2001
EEPROM_DRIVER = wear_leveling
WEAR_LEVELING_DRIVER = embedded_flash
# Enter lower-power sleep mode when on the ChibiOS idle thread
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
# custom matrix setup
CUSTOM_MATRIX = lite
SRC += matrix.c

View File

@@ -1,110 +0,0 @@
/* Copyright 2023 @ 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 \
{ B5, B4, B3, A15, A14, A13 }
#define MATRIX_COL_PINS \
{ A10, A9, A8, B1, B0, A7, A6, A5, A4, A3, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN, NO_PIN }
/* COL2ROW or ROW2COL */
#define DIODE_DIRECTION ROW2COL
/* RGB Matrix Driver Configuration */
#define DRIVER_COUNT 2
#define DRIVER_ADDR_1 0b1110111
#define DRIVER_ADDR_2 0b1110100
/* Increase I2C speed to 1000 KHz */
#define I2C1_TIMINGR_PRESC 0U
#define I2C1_TIMINGR_SCLDEL 3U
#define I2C1_TIMINGR_SDADEL 0U
#define I2C1_TIMINGR_SCLH 15U
#define I2C1_TIMINGR_SCLL 51U
#define CKLED2001_CURRENT_TUNE \
{ 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55, 0xAD, 0xAD, 0x55 }
/* DIP switch */
#define DIP_SWITCH_MATRIX_GRID \
{ \
{ 5, 4 } \
}
#define SCAN_COUNT_MAX 100
/* Disable DIP switch in matrix data */
#define MATRIX_MASKED
/* turn off effects when suspended */
#define RGB_DISABLE_WHEN_USB_SUSPENDED
/* EEPROM Driver Configuration */
// #define WEAR_LEVELING_LOGICAL_SIZE 2048 // default
// #define WEAR_LEVELING_BACKING_SIZE (WEAR_LEVELING_LOGICAL_SIZE * 2) // default
// RGB Matrix Animation modes. Explicitly enabled
// For full list of effects, see:
// https://docs.qmk.fm/#/feature_rgb_matrix?id=rgb-matrix-effects
// #define ENABLE_RGB_MATRIX_ALPHAS_MODS
// #define ENABLE_RGB_MATRIX_GRADIENT_UP_DOWN
// #define ENABLE_RGB_MATRIX_GRADIENT_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_BREATHING
// #define ENABLE_RGB_MATRIX_BAND_SAT
// #define ENABLE_RGB_MATRIX_BAND_VAL
// #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_CYCLE_ALL
#define ENABLE_RGB_MATRIX_CYCLE_LEFT_RIGHT
#define ENABLE_RGB_MATRIX_CYCLE_UP_DOWN
#define ENABLE_RGB_MATRIX_RAINBOW_MOVING_CHEVRON
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN
#define ENABLE_RGB_MATRIX_CYCLE_OUT_IN_DUAL
#define ENABLE_RGB_MATRIX_CYCLE_PINWHEEL
#define ENABLE_RGB_MATRIX_CYCLE_SPIRAL
#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_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_FLOW
// #define ENABLE_RGB_MATRIX_PIXEL_FRACTAL
// enabled only if RGB_MATRIX_FRAMEBUFFER_EFFECTS is defined
#define ENABLE_RGB_MATRIX_TYPING_HEATMAP
#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_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_MULTINEXUS
#define ENABLE_RGB_MATRIX_SPLASH
// #define ENABLE_RGB_MATRIX_MULTISPLASH
#define ENABLE_RGB_MATRIX_SOLID_SPLASH
// #define ENABLE_RGB_MATRIX_SOLID_MULTISPLASH
#define RGB_MATRIX_FRAMEBUFFER_EFFECTS
#define RGB_MATRIX_KEYPRESSES

View File

@@ -1,22 +0,0 @@
/* Copyright 2020 QMK
*
* 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
#define HAL_USE_I2C TRUE
#define PAL_USE_CALLBACKS TRUE
#include_next <halconf.h>

View File

@@ -1,30 +0,0 @@
/* Copyright 2023 @ 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
/* RGB Matrix Configuration */
#define DRIVER_1_LED_TOTAL 56
#define DRIVER_2_LED_TOTAL 47
#define RGB_MATRIX_LED_COUNT (DRIVER_1_LED_TOTAL + DRIVER_2_LED_TOTAL)
#define ENCODER_DEFAULT_POS 0x3
/* Enable caps-lock LED */
#define CAPS_LOCK_LED_INDEX 58
/* Enable num-lock LED */
#define NUM_LOCK_LED_INDEX 18

View File

@@ -1,133 +0,0 @@
{
"keyboard_name": "Keychron Q12",
"manufacturer": "Keychron",
"url": "https://github.com/Keychron",
"maintainer": "lalalademaxiya1",
"usb": {
"vid": "0x3434",
"pid": "0x01D3",
"device_version": "1.0.0"
},
"encoder": {
"rotary": [
{"pin_a": "A2", "pin_b": "C14"}
]
},
"processor": "STM32L432",
"bootloader": "stm32-dfu",
"layouts": {
"LAYOUT_iso_104": {
"layout": [
{"matrix":[0,15], "x":0, "y":0},
{"matrix":[0,16], "x":1, "y":0},
{"matrix":[0,17], "x":2, "y":0},
{"matrix":[5,16], "x":3, "y":0},
{"matrix":[0,0], "x":4.25, "y":0},
{"matrix":[0,1], "x":5.5, "y":0},
{"matrix":[0,2], "x":6.5, "y":0},
{"matrix":[0,3], "x":7.5, "y":0},
{"matrix":[0,4], "x":8.5, "y":0},
{"matrix":[0,5], "x":9.75, "y":0},
{"matrix":[0,6], "x":10.75, "y":0},
{"matrix":[0,7], "x":11.75, "y":0},
{"matrix":[0,8], "x":12.75, "y":0},
{"matrix":[0,9], "x":14, "y":0},
{"matrix":[0,10], "x":15, "y":0},
{"matrix":[0,11], "x":16, "y":0},
{"matrix":[0,12], "x":17, "y":0},
{"matrix":[0,13], "x":18.25, "y":0},
{"matrix":[0,14], "x":19.5, "y":0},
{"matrix":[1,15], "x":0, "y":1.25},
{"matrix":[1,16], "x":1, "y":1.25},
{"matrix":[1,17], "x":2, "y":1.25},
{"matrix":[5,5], "x":3, "y":1.25},
{"matrix":[1,0], "x":4.25, "y":1.25},
{"matrix":[1,1], "x":5.25, "y":1.25},
{"matrix":[1,2], "x":6.25, "y":1.25},
{"matrix":[1,3], "x":7.25, "y":1.25},
{"matrix":[1,4], "x":8.25, "y":1.25},
{"matrix":[1,5], "x":9.25, "y":1.25},
{"matrix":[1,6], "x":10.25, "y":1.25},
{"matrix":[1,7], "x":11.25, "y":1.25},
{"matrix":[1,8], "x":12.25, "y":1.25},
{"matrix":[1,9], "x":13.25, "y":1.25},
{"matrix":[1,10], "x":14.25, "y":1.25},
{"matrix":[1,11], "x":15.25, "y":1.25},
{"matrix":[1,12], "x":16.25, "y":1.25},
{"matrix":[1,13], "x":17.25, "y":1.25, "w":2},
{"matrix":[1,14], "x":19.5, "y":1.25},
{"matrix":[2,15], "x":0, "y":2.25},
{"matrix":[2,16], "x":1, "y":2.25},
{"matrix":[2,17], "x":2, "y":2.25},
{"matrix":[5,7], "x":3, "y":2.25, "h":2},
{"matrix":[2,0], "x":4.25, "y":2.25, "w":1.5},
{"matrix":[2,1], "x":5.75, "y":2.25},
{"matrix":[2,2], "x":6.75, "y":2.25},
{"matrix":[2,3], "x":7.75, "y":2.25},
{"matrix":[2,4], "x":8.75, "y":2.25},
{"matrix":[2,5], "x":9.75, "y":2.25},
{"matrix":[2,6], "x":10.75, "y":2.25},
{"matrix":[2,7], "x":11.75, "y":2.25},
{"matrix":[2,8], "x":12.75, "y":2.25},
{"matrix":[2,9], "x":13.75, "y":2.25},
{"matrix":[2,10], "x":14.75, "y":2.25},
{"matrix":[2,11], "x":15.75, "y":2.25},
{"matrix":[2,12], "x":16.75, "y":2.25},
{"matrix":[2,14], "x":19.5, "y":2.25},
{"matrix":[3,15], "x":0, "y":3.25},
{"matrix":[3,16], "x":1, "y":3.25},
{"matrix":[3,17], "x":2, "y":3.25},
{"matrix":[3,0], "x":4.25, "y":3.25, "w":1.75},
{"matrix":[3,1], "x":6, "y":3.25},
{"matrix":[3,2], "x":7, "y":3.25},
{"matrix":[3,3], "x":8, "y":3.25},
{"matrix":[3,4], "x":9, "y":3.25},
{"matrix":[3,5], "x":10, "y":3.25},
{"matrix":[3,6], "x":11, "y":3.25},
{"matrix":[3,7], "x":12, "y":3.25},
{"matrix":[3,8], "x":13, "y":3.25},
{"matrix":[3,9], "x":14, "y":3.25},
{"matrix":[3,10], "x":15, "y":3.25},
{"matrix":[3,11], "x":16, "y":3.25},
{"matrix":[3,13], "x":17, "y":3.25},
{"matrix":[2,13], "x":18, "y":2.25, "w":1.25, "h":2},
{"matrix":[3,14], "x":19.5, "y":3.25},
{"matrix":[4,15], "x":0, "y":4.25},
{"matrix":[4,16], "x":1, "y":4.25},
{"matrix":[4,17], "x":2, "y":4.25},
{"matrix":[3,12], "x":3, "y":4.25, "h":2},
{"matrix":[4,0], "x":4.25, "y":4.25, "w":1.25},
{"matrix":[4,1], "x":5.5, "y":4.25},
{"matrix":[4,2], "x":6.5, "y":4.25},
{"matrix":[4,3], "x":7.5, "y":4.25},
{"matrix":[4,4], "x":8.5, "y":4.25},
{"matrix":[4,5], "x":9.5, "y":4.25},
{"matrix":[4,6], "x":10.5, "y":4.25},
{"matrix":[4,7], "x":11.5, "y":4.25},
{"matrix":[4,8], "x":12.5, "y":4.25},
{"matrix":[4,9], "x":13.5, "y":4.25},
{"matrix":[4,10], "x":14.5, "y":4.25},
{"matrix":[4,11], "x":15.5, "y":4.25},
{"matrix":[4,13], "x":16.5, "y":4.25, "w":1.75},
{"matrix":[4,14], "x":18.5, "y":4.5},
{"matrix":[5,15], "x":0, "y":5.25, "w":2},
{"matrix":[5,17], "x":2, "y":5.25},
{"matrix":[5,0], "x":4.25, "y":5.25, "w":1.25},
{"matrix":[5,1], "x":5.5, "y":5.25, "w":1.25},
{"matrix":[5,2], "x":6.75, "y":5.25, "w":1.25},
{"matrix":[5,6], "x":8, "y":5.25, "w":6.25},
{"matrix":[5,9], "x":14.25, "y":5.25},
{"matrix":[5,10], "x":15.25, "y":5.25},
{"matrix":[5,11], "x":16.25, "y":5.25},
{"matrix":[5,12], "x":17.5, "y":5.5},
{"matrix":[5,13], "x":18.5, "y":5.5},
{"matrix":[5,14], "x":19.5, "y":5.5}
]
}
}
}

View File

@@ -1,173 +0,0 @@
/* Copyright 2023 @ 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 "quantum.h"
#ifdef RGB_MATRIX_ENABLE
const ckled2001_led PROGMEM g_ckled2001_leds[RGB_MATRIX_LED_COUNT] = {
/* Refer to IS31 manual for these locations
* driver
* | R location
* | | G location
* | | | B location
* | | | | */
// {0, I_1, G_1, H_1}
{0, I_2, G_2, H_2}, // F13
{0, I_3, G_3, H_3}, // F14
{0, I_4, G_4, H_4}, // F15
{0, I_5, G_5, H_5}, // Esc
{0, I_6, G_6, H_6}, // F1
{0, I_7, G_7, H_7}, // F2
{0, I_8, G_8, H_8}, // F3
{0, I_9, G_9, H_9}, // F4
{0, I_10, G_10, H_10}, // F5
{0, I_11, G_11, H_11}, // F6
{0, I_12, G_12, H_12}, // F7
{0, I_13, G_13, H_13}, // F8
{0, I_14, G_14, H_14}, // F9
{0, I_15, G_15, H_15}, // F10
{0, I_16, G_16, H_16}, // F11
{0, L_16, J_16, K_16}, // F12
{0, L_15, J_15, K_15}, // DEL
{0, L_14, J_14, K_14}, // Light
{0, C_1, A_1, B_1}, // num_lock
{0, C_2, A_2, B_2}, // /
{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}, // 1!
{0, C_7, A_7, B_7}, // 2@
{0, C_8, A_8, B_8}, // 3#
{0, C_9, A_9, B_9}, // 4$
{0, C_10, A_10, B_10}, // 5%
{0, C_11, A_11, B_11}, // 6^
{0, C_12, A_12, B_12}, // 7&
{0, C_13, A_13, B_13}, // 8*
{0, C_14, A_14, B_14}, // 9(
{0, C_15, A_15, B_15}, // 0)
{0, C_16, A_16, B_16}, // -_
{0, L_13, J_13, K_13}, // =+
{0, L_12, J_12, K_12}, // BackSpace
{0, L_11, J_11, K_11}, // PgUp
{0, F_1, D_1, E_1}, // 7
{0, F_2, D_2, E_2}, // 8
{0, F_3, D_3, E_3}, // 9
{0, F_4, D_4, E_4}, // +
{0, F_5, D_5, E_5}, // TAB
{0, F_6, D_6, E_6}, // Q
{0, F_7, D_7, E_7}, // W
{0, F_8, D_8, E_8}, // E
{0, F_9, D_9, E_9}, // R
{0, F_10, D_10, E_10}, // T
{0, F_11, D_11, E_11}, // Y
{0, F_12, D_12, E_12}, // U
{0, F_13, D_13, E_13}, // I
{0, F_14, D_14, E_14}, // O
{0, F_15, D_15, E_15}, // P
{0, F_16, D_16, E_16}, // [
{0, L_10, J_10, K_10}, // ]
// {0, L_9, J_9, K_9}, // \|
{0, L_8, J_8, K_8}, // PgDn
{1, C_16, A_16, B_16}, // 4
{1, C_15, A_15, B_15}, // 5
{1, C_14, A_14, B_14}, // 6
// {0, F_4, D_4, E_4}, // +
{1, C_12, A_12, B_12}, // CapsLock
{1, C_11, A_11, B_11}, // A
{1, C_10, A_10, B_10}, // S
{1, C_9, A_9, B_9}, // D
{1, C_8, A_8, B_8}, // F
{1, C_7, A_7, B_7}, // G
{1, C_6, A_6, B_6}, // H
{1, C_5, A_5, B_5}, // J
{1, C_4, A_4, B_4}, // k
{1, C_3, A_3, B_3}, // l
{1, C_2, A_2, B_2}, //
{1, C_1, A_1, B_1}, // '
{1, L_1, J_1, K_1}, // #~
{0, L_9, J_9, K_9}, // Enter
{1, L_2, J_2, K_2}, // Home
{1, I_16, G_16, H_16}, // 1
{1, I_15, G_15, H_15}, // 2
{1, I_14, G_14, H_14}, // 3
{1, I_13, G_13, H_13}, // Enter
{1, I_12, G_12, H_12}, //Shift_L
{1, I_11, G_11, H_11}, // |
{1, I_10, G_10, H_10}, // Z
{1, I_9, G_9, H_9}, // X
{1, I_8, G_8, H_8}, // C
{1, I_7, G_7, H_7}, // V
{1, I_6, G_6, H_6}, // B
{1, I_5, G_5, H_5}, // N
{1, I_4, G_4, H_4}, // M
{1, I_3, G_3, H_3}, // ,
{1, I_2, G_2, H_2}, // .
{1, I_1, G_1, H_1}, // ?
{1, L_3, J_3, K_3}, // Shift_R
{1, L_4, J_4, K_4}, // Up
{1, F_16, D_16, E_16}, // 0
{1, F_14, D_14, E_14}, // .
{1, F_12, D_12, E_12}, // Ctrl_L
{1, F_11, D_11, E_11}, // Win_L
{1, F_10, D_10, E_10}, // Alt_L
{1, F_6, D_6, E_6}, // Space
{1, F_3, D_3, E_3}, // Alt_R
{1, F_2, D_2, E_2}, // Fn
{1, F_1, D_1, E_1}, // Ctrl_R
{1, L_5, J_5, K_5}, // Left
{1, L_6, J_6, K_6}, // Down
{1, L_7, J_7, K_7}, // Right
};
#define __ NO_LED
led_config_t g_led_config = {
{
// Key Matrix to LED Index
{ 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, __, 0, 1 },
{ 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 18, 19, 20 },
{ 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 71, 54, 37, 38, 39 },
{ 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 76, 70, 72, 55, 56, 57 },
{ 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, __, 89, 90, 73, 74, 75 },
{ 93, 94, 95, __, __, 21, 96, 40, __, 97, 98, 99, 100, 101, 102, 91, 2, 92 },
},
{
// LED Index to Physical Position
{11,0}, {23,0}, {34,0}, {49,0}, {63,0}, {75,0}, {86,0}, {98,0}, {112,0}, {123,0}, {135,0}, {146,0}, {160,0}, {172,0}, {183,0}, {194,0}, {209,0}, {224,0},
{0,15}, {11,15}, {23,15}, {34,15}, {49,15}, {60,15}, {72,15}, {83,15}, {95,15}, {106,15}, {117,15}, {129,15}, {140,15}, {152,15}, {163,15}, {175,15}, {186,15}, {204,15}, {224,15},
{0,26}, {11,26}, {23,26}, {34,32}, {52,26}, {66,26}, {77,26}, {89,26}, {100,26}, {112,26}, {123,26}, {135,26}, {146,26}, {158,26}, {169,26}, {180,26}, {192,26}, {224,26},
{0,38}, {11,38}, {23,38}, {53,38}, {69,38}, {80,38}, {92,38}, {103,38}, {115,38}, {126,38}, {137,38}, {149,38}, {160,38}, {172,38}, {183,38}, {195,38}, {210,34}, {224,38},
{0,49}, {11,49}, {23,49}, {34,55}, {50,49}, {63,49}, {75,49}, {86,49}, {97,49}, {109,49}, {120,49}, {132,49}, {143,49}, {155,49}, {166,49}, {177,49}, {193,49}, {212,52},
{6,61}, {23,61}, {50,61}, {65,61}, {79,61}, {122,61}, {163,61}, {174,61}, {186,61}, {201,64}, {212,64}, {223,64},
},
{
// RGB LED Index to Flag
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
4, 4, 4, 8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1, 1,
4, 4, 4, 4, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
4, 4, 1, 1, 1, 4, 1, 4, 1, 1, 1, 1,
}
};
#endif

View File

@@ -1,69 +0,0 @@
/* Copyright 2023 @ 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
};
#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_104(
KC_MUTE, KC_F13, KC_F14, KC_F15, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_104(
RGB_TOG, _______, _______, _______, _______, 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_104(
KC_MUTE, _______, _______, _______, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_104(
RGB_TOG, _______, _______, _______, _______, 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

View File

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

View File

@@ -1,80 +0,0 @@
/* Copyright 2023 @ 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_104(
KC_MUTE, KC_F13, KC_F14, KC_F15, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_104(
RGB_TOG, _______, _______, _______, _______, 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_104(
KC_MUTE, _______, _______, _______, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_104(
RGB_TOG, _______, _______, _______, _______, 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, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______),
};
// clang-format on
#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
void housekeeping_task_user(void) {
housekeeping_task_keychron();
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (!process_record_keychron(keycode, record)) {
return false;
}
return true;
}

View File

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

View File

@@ -1,69 +0,0 @@
/* Copyright 2023 @ 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
};
#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_104(
KC_MUTE, KC_F13, KC_F14, KC_F15, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_104(
RGB_TOG, _______, _______, _______, _______, 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_104(
KC_MUTE, _______, _______, _______, 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, RGB_MOD,
KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, 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_P7, KC_P8, KC_P9, KC_PPLS, 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_P4, KC_P5, KC_P6, 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_P1, KC_P2, KC_P3, KC_PENT, 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_P0, KC_PDOT, 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_104(
RGB_TOG, _______, _______, _______, _______, 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

View File

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

Some files were not shown because too many files have changed in this diff Show More