forked from mirror/qmk_firmware
Compare commits
1 Commits
0.20.1
...
breakpoint
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4ac847674b |
1
.github/labeler.yml
vendored
1
.github/labeler.yml
vendored
@@ -5,7 +5,6 @@ core:
|
||||
- tests/**/*
|
||||
- util/**/*
|
||||
- platforms/**/*
|
||||
- builddefs/**/*
|
||||
- Makefile
|
||||
- '*.mk'
|
||||
dependencies:
|
||||
|
||||
4
.github/workflows/cli.yml
vendored
4
.github/workflows/cli.yml
vendored
@@ -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
|
||||
|
||||
5
.github/workflows/format.yml
vendored
5
.github/workflows/format.yml
vendored
@@ -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}'
|
||||
|
||||
3
.github/workflows/format_push.yml
vendored
3
.github/workflows/format_push.yml
vendored
@@ -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
|
||||
|
||||
5
.github/workflows/lint.yml
vendored
5
.github/workflows/lint.yml
vendored
@@ -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: |
|
||||
|
||||
3
.github/workflows/regen.yml
vendored
3
.github/workflows/regen.yml
vendored
@@ -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
|
||||
|
||||
3
.github/workflows/regen_push.yml
vendored
3
.github/workflows/regen_push.yml
vendored
@@ -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
|
||||
|
||||
@@ -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"},
|
||||
|
||||
@@ -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!`
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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:
|
||||
|
||||

|
||||
|
||||
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:
|
||||
|
||||

|
||||
|
||||
### 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.
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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. |
|
||||
|
||||
@@ -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.
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
)
|
||||
};
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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};
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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.)
|
||||
@@ -1,2 +0,0 @@
|
||||
CAPS_WORD_ENABLE = yes
|
||||
MOUSEKEY_ENABLE = yes
|
||||
15
keyboards/contra/config.h
Executable file
15
keyboards/contra/config.h
Executable 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
1
keyboards/contra/contra.c
Executable file
@@ -0,0 +1 @@
|
||||
#include "contra.h"
|
||||
27
keyboards/contra/contra.h
Executable file
27
keyboards/contra/contra.h
Executable 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 } \
|
||||
}
|
||||
@@ -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":"⇓", "matrix": [3, 4], "x":4, "y":3},
|
||||
{"matrix": [3, 5], "x":5, "y":3},
|
||||
{"matrix": [3, 6], "x":6, "y":3},
|
||||
{"label":"⇑", "matrix": [3, 7], "x":7, "y":3},
|
||||
{"label":"←", "matrix": [3, 8], "x":8, "y":3},
|
||||
{"label":"↓", "matrix": [3, 9], "x":9, "y":3},
|
||||
{"label":"↑", "matrix": [3, 10], "x":10, "y":3},
|
||||
{"label":"→", "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":"⇓", "x":4, "y":3}, {"x":5, "y":3}, {"x":6, "y":3}, {"label":"⇑", "x":7, "y":3}, {"label":"←", "x":8, "y":3}, {"label":"↓", "x":9, "y":3}, {"label":"↑", "x":10, "y":3}, {"label":"→", "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":"⇓", "matrix": [3, 4], "x":4, "y":3},
|
||||
{"matrix": [3, 5], "x":5, "y":3},
|
||||
{"label":"⇑", "matrix": [3, 7], "x":7, "y":3},
|
||||
{"label":"←", "matrix": [3, 8], "x":8, "y":3},
|
||||
{"label":"↓", "matrix": [3, 9], "x":9, "y":3},
|
||||
{"label":"↑", "matrix": [3, 10], "x":10, "y":3},
|
||||
{"label":"→", "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":"⇓", "x":4, "y":3}, {"x":5, "y":3, "w":2}, {"label":"⇑", "x":7, "y":3}, {"label":"←", "x":8, "y":3}, {"label":"↓", "x":9, "y":3}, {"label":"↑", "x":10, "y":3}, {"label":"→", "x":11, "y":3}]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
// Copyright QMK Community
|
||||
// SPDX-License-Identifier: GPL-2.0+
|
||||
|
||||
#pragma once
|
||||
|
||||
|
||||
|
||||
@@ -1,21 +1,16 @@
|
||||
# Contra
|
||||
CONTRA
|
||||
======
|
||||
|
||||
Contra is a low cost 40% keyboard.
|
||||

|
||||
|
||||
* 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.
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -1 +0,0 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
@@ -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
|
||||
@@ -1,2 +0,0 @@
|
||||
VIA_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
@@ -1,27 +0,0 @@
|
||||
# GPAD8-2R
|
||||
|
||||

|
||||
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
WS2812_DRIVER = vendor
|
||||
@@ -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
|
||||
@@ -1,4 +0,0 @@
|
||||
// Copyright 2023 Gummor (@gumorr)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "gummykey.h"
|
||||
@@ -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 } \
|
||||
}
|
||||
@@ -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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
),
|
||||
|
||||
};
|
||||
@@ -1,27 +0,0 @@
|
||||
# GummyKey
|
||||
|
||||

|
||||
|
||||
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
|
||||
@@ -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
|
||||
@@ -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/
|
||||
@@ -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/"
|
||||
}
|
||||
@@ -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, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
};
|
||||
@@ -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, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
};
|
||||
@@ -1,2 +0,0 @@
|
||||
VIA_ENABLE = yes
|
||||
LTO_ENABLE = yes
|
||||
@@ -1,26 +0,0 @@
|
||||
# Polly40
|
||||
|
||||

|
||||
|
||||
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
|
||||
@@ -1 +0,0 @@
|
||||
# This file intentionally left blank
|
||||
@@ -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}]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
@@ -1 +0,0 @@
|
||||
CONSOLE_ENABLE = yes # Console for debug
|
||||
@@ -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
|
||||
)
|
||||
};
|
||||
@@ -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 2–3 USD for 10pcs. Two 8 pin connectors can be glued
|
||||
together as a replacement for 16 pin.
|
||||
* Three 5mm LEDs and current limiting resistors (150–300Ω, 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).
|
||||
@@ -1,2 +0,0 @@
|
||||
# Enter lower-power sleep mode when on the ChibiOS idle thread
|
||||
OPT_DEFS += -DCORTEX_ENABLE_WFI_IDLE=TRUE
|
||||
@@ -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 */
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
@@ -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│ │ │ │ │ │ │ │
|
||||
* └─────┼─────┼─────┼─────┼─────┼─────┤ └─────┘ ├─────┼─────┼─────┼─────┼─────┼─────┘
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* └─────┴─────┴─────┼─────┼─────┼─────┐ ┌─────┼─────┼─────┼─────┴─────┴─────┘
|
||||
* │ │ │ │ │ │ │ │
|
||||
* │ │ │ │ │ │ │ │
|
||||
* └─────┴─────┴─────┘ └─────┴─────┴─────┘
|
||||
*/
|
||||
```
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
TAP_DANCE_ENABLE = yes
|
||||
@@ -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, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
@@ -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
|
||||
@@ -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)
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
|
||||
### 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
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
SERIAL_DRIVER = usart
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -1 +0,0 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
@@ -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;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
VIA_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
|
||||
VPATH += keyboards/keychron/common
|
||||
SRC += keychron_common.c
|
||||
@@ -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
|
||||
@@ -1,2 +0,0 @@
|
||||
VIA_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -1 +0,0 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
@@ -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;
|
||||
}
|
||||
@@ -1,5 +0,0 @@
|
||||
VIA_ENABLE = yes
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
|
||||
VPATH += keyboards/keychron/common
|
||||
SRC += keychron_common.c
|
||||
@@ -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
|
||||
@@ -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
Reference in New Issue
Block a user