mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-27 03:21:15 +00:00
Merge remote-tracking branch 'upstream/master' into bootstrap
This commit is contained in:
commit
92bc5ec044
2
.github/workflows/format_push.yml
vendored
2
.github/workflows/format_push.yml
vendored
@ -39,7 +39,7 @@ jobs:
|
||||
qmk format-text -a
|
||||
git diff
|
||||
|
||||
- uses: rlespinasse/github-slug-action@v3.x
|
||||
- uses: rlespinasse/github-slug-action@v5
|
||||
|
||||
- name: Become QMK Bot
|
||||
run: |
|
||||
|
2
.github/workflows/regen_push.yml
vendored
2
.github/workflows/regen_push.yml
vendored
@ -26,7 +26,7 @@ jobs:
|
||||
util/regen.sh
|
||||
git diff
|
||||
|
||||
- uses: rlespinasse/github-slug-action@v3.x
|
||||
- uses: rlespinasse/github-slug-action@v5
|
||||
|
||||
- name: Become QMK Bot
|
||||
run: |
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"license": "GPL-2.0-or-later",
|
||||
"devDependencies": {
|
||||
"vite": "^5.4.15",
|
||||
"vite": "^5.4.18",
|
||||
"vitepress": "^1.1.0",
|
||||
"vitepress-plugin-tabs": "^0.5.0",
|
||||
"vue": "^3.4.24"
|
||||
|
@ -766,10 +766,10 @@ tabbable@^6.2.0:
|
||||
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97"
|
||||
integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
|
||||
|
||||
vite@^5.2.9, vite@^5.4.15:
|
||||
version "5.4.15"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.15.tgz#2941547f10ebb4bf9b0fa0da863c06711eb7e5e5"
|
||||
integrity sha512-6ANcZRivqL/4WtwPGTKNaosuNJr5tWiftOC7liM7G9+rMb8+oeJeyzymDu4rTN93seySBmbjSfsS3Vzr19KNtA==
|
||||
vite@^5.2.9, vite@^5.4.18:
|
||||
version "5.4.18"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.18.tgz#b5af357f9d5ebb2e0c085779b7a37a77f09168a4"
|
||||
integrity sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==
|
||||
dependencies:
|
||||
esbuild "^0.21.3"
|
||||
postcss "^8.4.43"
|
||||
|
12
docs/cli.md
12
docs/cli.md
@ -18,6 +18,18 @@ export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
|
||||
qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
|
||||
```
|
||||
|
||||
### Install Using uv {#install-using-uv}
|
||||
|
||||
If you have installed [uv](https://docs.astral.sh/uv/), the QMK CLI can be installed and managed as a uv tool:
|
||||
|
||||
```
|
||||
uv tool install qmk
|
||||
export QMK_HOME='~/qmk_firmware' # Optional, set the location for `qmk_firmware`
|
||||
qmk setup # This will clone `qmk/qmk_firmware` and optionally set up your build environment
|
||||
```
|
||||
|
||||
This installation can be updated via `uv tool upgrade qmk`. See [Upgrading tools](https://docs.astral.sh/uv/guides/tools/#upgrading-tools) for more information.
|
||||
|
||||
### Install Using pip {#install-using-easy_install-or-pip}
|
||||
|
||||
If your system is not listed above you can install QMK manually. First ensure that you have Python 3.7 (or later) installed and have installed pip. Then install QMK with this command:
|
||||
|
67
keyboards/amptrics/0422/0422.c
Normal file
67
keyboards/amptrics/0422/0422.c
Normal file
@ -0,0 +1,67 @@
|
||||
/* Copyright 2024 Vinod Chowl (@vchowl)
|
||||
*
|
||||
* 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.0 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
|
||||
|
||||
#define LED_LAYER_0 B3
|
||||
#define LED_LAYER_1 B4
|
||||
#define LED_LAYER_2 B5
|
||||
#define LED_LAYER_3 B6
|
||||
|
||||
#define LED_PINS_COUNT 4
|
||||
|
||||
pin_t pins[LED_PINS_COUNT] = {LED_LAYER_0, LED_LAYER_1, LED_LAYER_2, LED_LAYER_3};
|
||||
|
||||
|
||||
// Function to turn on all LEDs
|
||||
void turn_on_all_leds(void) {
|
||||
for (int i = 0; i < LED_PINS_COUNT; i++) {
|
||||
gpio_write_pin_high(pins[i]); // Turn on LED
|
||||
}
|
||||
}
|
||||
|
||||
// Function to turn off all LEDs
|
||||
void turn_off_all_leds(void) {
|
||||
for (int i = 0; i < LED_PINS_COUNT; i++) {
|
||||
gpio_write_pin_low(pins[i]); // Turn off LED
|
||||
}
|
||||
}
|
||||
|
||||
void update_leds_for_layer(uint8_t layer) {
|
||||
turn_off_all_leds();
|
||||
gpio_write_pin_high(pins[layer]);
|
||||
}
|
||||
|
||||
void keyboard_post_init_kb(void) {
|
||||
for (int i = 0; i < LED_PINS_COUNT; i++) {
|
||||
gpio_set_pin_output(pins[i]);
|
||||
gpio_write_pin_low(pins[i]);
|
||||
}
|
||||
|
||||
// Blink all LEDs
|
||||
turn_on_all_leds();
|
||||
wait_ms(500); // Keep LEDs on for 500ms
|
||||
turn_off_all_leds();
|
||||
|
||||
update_leds_for_layer(0); // Update LEDs to indicate the default layer
|
||||
keyboard_post_init_user();
|
||||
}
|
||||
|
||||
layer_state_t layer_state_set_kb(layer_state_t state) {
|
||||
uint8_t layer = get_highest_layer(state);
|
||||
update_leds_for_layer(layer);
|
||||
return layer_state_set_user(state);
|
||||
}
|
5
keyboards/amptrics/0422/config.h
Normal file
5
keyboards/amptrics/0422/config.h
Normal file
@ -0,0 +1,5 @@
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#define DYNAMIC_KEYMAP_MACRO_COUNT 36
|
40
keyboards/amptrics/0422/keyboard.json
Normal file
40
keyboards/amptrics/0422/keyboard.json
Normal file
@ -0,0 +1,40 @@
|
||||
{
|
||||
"manufacturer": "Amptrics Technologies",
|
||||
"keyboard_name": "Amptrics 0422",
|
||||
"maintainer": "vchowl",
|
||||
"bootloader": "stm32-dfu",
|
||||
"diode_direction": "ROW2COL",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["C8", "C7", "C6"],
|
||||
"rows": ["A14", "A13", "A10", "A9"]
|
||||
},
|
||||
"processor": "STM32F072",
|
||||
"url": "",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x01A6",
|
||||
"vid": "0x616D"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
58
keyboards/amptrics/0422/keymaps/default/keymap.c
Normal file
58
keyboards/amptrics/0422/keymaps/default/keymap.c
Normal file
@ -0,0 +1,58 @@
|
||||
/* Copyright 2024 Vinod Chowl (@vchowl)
|
||||
*
|
||||
* 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.0 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] = {
|
||||
/*
|
||||
* ┌───┐
|
||||
* │Tog│
|
||||
* ├───┼───┬───┐
|
||||
* │ 7 │ 8 │ 9 │
|
||||
* ├───┼───┼───┤
|
||||
* │ 4 │ 5 │ 6 │
|
||||
* ├───┼───┼───┤
|
||||
* │ 1 │ 2 │ 3 │
|
||||
* └───┴───┴───┘
|
||||
*/
|
||||
[0] = LAYOUT(
|
||||
TO(1),
|
||||
KC_7, KC_8, KC_9,
|
||||
KC_4, KC_5, KC_6,
|
||||
KC_1, KC_2, KC_3
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
TO(2),
|
||||
KC_A, KC_B, KC_C,
|
||||
KC_D, KC_E, KC_F,
|
||||
KC_G, KC_H, KC_I
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
TO(3),
|
||||
KC_J, KC_K, KC_L,
|
||||
KC_M, KC_N, KC_O,
|
||||
KC_P, KC_Q, KC_R
|
||||
),
|
||||
|
||||
[3] = LAYOUT(
|
||||
TO(0),
|
||||
KC_S, KC_T, KC_U,
|
||||
KC_V, KC_W, KC_X,
|
||||
KC_Y, KC_Z, KC_ENT
|
||||
)
|
||||
};
|
25
keyboards/amptrics/0422/readme.md
Normal file
25
keyboards/amptrics/0422/readme.md
Normal file
@ -0,0 +1,25 @@
|
||||
# Amptrics 0422 Programmable Keypad
|
||||
|
||||

|
||||
|
||||
* Keyboard Maintainer: [vchowl](https://github.com/vchowl)
|
||||
* Hardware Supported: STM32F072RBT6
|
||||
* Hardware Availability: Not yet available.
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make amptrics/0422:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make amptrics/0422: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
|
@ -4,7 +4,7 @@ ARMV = 6
|
||||
USE_FPU = no
|
||||
MCU_FAMILY = HT32
|
||||
MCU_SERIES = HT32F523xx
|
||||
MCU_LDSCRIPT = HT32F52342_ANNEPRO2
|
||||
MCU_LDSCRIPT = HT32F52342_ANNEPRO2_C15
|
||||
MCU_STARTUP = ht32f523xx
|
||||
|
||||
BOARD = ANNEPRO2_C15
|
||||
|
@ -4,7 +4,7 @@ ARMV = 6
|
||||
USE_FPU = no
|
||||
MCU_FAMILY = HT32
|
||||
MCU_SERIES = HT32F523xx
|
||||
MCU_LDSCRIPT = HT32F52342_ANNEPRO2
|
||||
MCU_LDSCRIPT = HT32F52352_ANNEPRO2_C18
|
||||
MCU_STARTUP = ht32f523xx
|
||||
|
||||
BOARD = ANNEPRO2_C18
|
||||
|
92
keyboards/annepro2/ld/HT32F52352_ANNEPRO2_C18.ld
Normal file
92
keyboards/annepro2/ld/HT32F52352_ANNEPRO2_C18.ld
Normal file
@ -0,0 +1,92 @@
|
||||
/*
|
||||
* Copyright (c) 2013-2016 Fabio UJonathan A. Kollaschtzig, http://fabioutzig.com
|
||||
* (c) 2020 Yaotian Feng (Codetector) <codetector@codetector.cn>
|
||||
* (c) 2025 Michał Kopeć <michal@nozomi.space>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining
|
||||
* a copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
/*
|
||||
* HT32F52342 w/ Anne Pro 2 bootloader memory setup.
|
||||
*/
|
||||
MEMORY {
|
||||
flash0 : org = 0x00004000, len = 64k - 16k /* firmware */
|
||||
flash1 : org = 0x00000000, len = 0
|
||||
flash2 : org = 0x00000000, len = 0
|
||||
flash3 : org = 0x00000000, len = 0
|
||||
flash4 : org = 0x00000000, len = 0
|
||||
flash5 : org = 0x00000000, len = 0
|
||||
flash6 : org = 0x00000000, len = 0
|
||||
flash7 : org = 0x00000000, len = 0
|
||||
ram0 : org = 0x20000000, len = 16k /* RAM */
|
||||
ram1 : org = 0x00000000, len = 0
|
||||
ram2 : org = 0x00000000, len = 0
|
||||
ram3 : org = 0x00000000, len = 0
|
||||
ram4 : org = 0x00000000, len = 0
|
||||
ram5 : org = 0x00000000, len = 0
|
||||
ram6 : org = 0x00000000, len = 0
|
||||
ram7 : org = 0x00000000, len = 0
|
||||
}
|
||||
|
||||
/* For each data/text section two region are defined, a virtual region
|
||||
and a load region (_LMA suffix).*/
|
||||
|
||||
/* Flash region to be used for exception vectors.*/
|
||||
REGION_ALIAS("VECTORS_FLASH", flash0);
|
||||
REGION_ALIAS("VECTORS_FLASH_LMA", flash0);
|
||||
|
||||
/* Flash region to be used for constructors and destructors.*/
|
||||
REGION_ALIAS("XTORS_FLASH", flash0);
|
||||
REGION_ALIAS("XTORS_FLASH_LMA", flash0);
|
||||
|
||||
/* Flash region to be used for code text.*/
|
||||
REGION_ALIAS("TEXT_FLASH", flash0);
|
||||
REGION_ALIAS("TEXT_FLASH_LMA", flash0);
|
||||
|
||||
/* Flash region to be used for read only data.*/
|
||||
REGION_ALIAS("RODATA_FLASH", flash0);
|
||||
REGION_ALIAS("RODATA_FLASH_LMA", flash0);
|
||||
|
||||
/* Flash region to be used for various.*/
|
||||
REGION_ALIAS("VARIOUS_FLASH", flash0);
|
||||
REGION_ALIAS("VARIOUS_FLASH_LMA", flash0);
|
||||
|
||||
/* Flash region to be used for RAM(n) initialization data.*/
|
||||
REGION_ALIAS("RAM_INIT_FLASH_LMA", flash0);
|
||||
|
||||
/* RAM region to be used for Main stack. This stack accommodates the processing
|
||||
of all exceptions and interrupts.*/
|
||||
REGION_ALIAS("MAIN_STACK_RAM", ram0);
|
||||
|
||||
/* RAM region to be used for the process stack. This is the stack used by
|
||||
the main() function.*/
|
||||
REGION_ALIAS("PROCESS_STACK_RAM", ram0);
|
||||
|
||||
/* RAM region to be used for data segment.*/
|
||||
REGION_ALIAS("DATA_RAM", ram0);
|
||||
REGION_ALIAS("DATA_RAM_LMA", flash0);
|
||||
|
||||
/* RAM region to be used for BSS segment.*/
|
||||
REGION_ALIAS("BSS_RAM", ram0);
|
||||
|
||||
/* RAM region to be used for the default heap.*/
|
||||
REGION_ALIAS("HEAP_RAM", ram0);
|
||||
|
||||
/* Generic rules inclusion.*/
|
||||
INCLUDE rules.ld
|
37
keyboards/binepad/kn01/keyboard.json
Executable file
37
keyboards/binepad/kn01/keyboard.json
Executable file
@ -0,0 +1,37 @@
|
||||
{
|
||||
"manufacturer": "Binepad",
|
||||
"keyboard_name": "KN01",
|
||||
"maintainer": "Binpad",
|
||||
"bootloader": "stm32duino",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B3", "pin_b": "B4"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A15"],
|
||||
"rows": ["A8"]
|
||||
},
|
||||
"processor": "STM32F103",
|
||||
"url": "http://binepad.com",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x4040",
|
||||
"vid": "0x4249"
|
||||
},
|
||||
"community_layouts": ["ortho_1x1"],
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_1x1": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "w": 2, "h": 2}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
29
keyboards/binepad/kn01/keymaps/default/keymap.json
Normal file
29
keyboards/binepad/kn01/keymaps/default/keymap.json
Normal file
@ -0,0 +1,29 @@
|
||||
{
|
||||
"config": {
|
||||
"features": {
|
||||
"encoder_map": true
|
||||
}
|
||||
},
|
||||
"encoders": [
|
||||
[
|
||||
{
|
||||
"ccw": "KC_VOLD",
|
||||
"cw": "KC_VOLU"
|
||||
}
|
||||
],
|
||||
[
|
||||
{
|
||||
"ccw": "KC_MS_WH_DOWN",
|
||||
"cw": "KC_MS_WH_UP"
|
||||
}
|
||||
]
|
||||
],
|
||||
"keyboard": "binepad/kn01",
|
||||
"keymap": "default",
|
||||
"layers": [
|
||||
["LT(1, KC_MUTE)"],
|
||||
["_______"]
|
||||
],
|
||||
"layout": "LAYOUT_ortho_1x1",
|
||||
"version": 1
|
||||
}
|
29
keyboards/binepad/kn01/readme.md
Executable file
29
keyboards/binepad/kn01/readme.md
Executable file
@ -0,0 +1,29 @@
|
||||
# BINEPAD NEOKNOB KN01
|
||||
|
||||

|
||||
|
||||
The KN01 is a multifunction knob, which can be rotated, pressed, and rotated while pressed.
|
||||
|
||||
* Keyboard Maintainer: [Binpad](https://github.com/binepad)
|
||||
* Hardware Supported: **NEOKNOB KN01**
|
||||
* Hardware Availability: [Binepad.com](https://www.binepad.com/products/kn01)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make binepad/kn01:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make binepad/kn01: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 knob while plugging in the keyboard's USB cable
|
||||
* **Physical reset button**: Briefly press the button on the underside of the PCB
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
69
keyboards/binepad/knobx1/keyboard.json
Normal file
69
keyboards/binepad/knobx1/keyboard.json
Normal file
@ -0,0 +1,69 @@
|
||||
{
|
||||
"manufacturer": "Binepad",
|
||||
"keyboard_name": "KnobX1",
|
||||
"maintainer": "binepad",
|
||||
"bootloader": "stm32duino",
|
||||
"bootloader_instructions": "Hold down the layer button (small button on the bottom left) and plug in the keyboard.",
|
||||
"diode_direction": "COL2ROW",
|
||||
"eeprom": {
|
||||
"wear_leveling": {
|
||||
"backing_size": 1024
|
||||
}
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B12", "pin_b": "B13", "resolution": 2}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"direct": [
|
||||
["A7", "A15"]
|
||||
]
|
||||
},
|
||||
"processor": "STM32F103",
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"gradient": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"default": {
|
||||
"hue": 198,
|
||||
"speed": 2,
|
||||
"val": 204
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"led_count": 2,
|
||||
"sleep": true
|
||||
},
|
||||
"url": "https://binepad.com/products/knobx1",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x4249",
|
||||
"vid": "0x5831"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "C13"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0, "w": 3, "h": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
22
keyboards/binepad/knobx1/keymaps/default/keymap.json
Normal file
22
keyboards/binepad/knobx1/keymaps/default/keymap.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"config": {
|
||||
"features": {
|
||||
"encoder_map": true
|
||||
}
|
||||
},
|
||||
"encoders": [
|
||||
[
|
||||
{
|
||||
"ccw": "KC_VOLD",
|
||||
"cw": "KC_VOLU"
|
||||
}
|
||||
]
|
||||
],
|
||||
"keyboard": "binepad/knobx1",
|
||||
"keymap": "default",
|
||||
"layers": [
|
||||
["X1_LYRU", "KC_MUTE"]
|
||||
],
|
||||
"layout": "LAYOUT",
|
||||
"version": 1
|
||||
}
|
76
keyboards/binepad/knobx1/knobx1.c
Normal file
76
keyboards/binepad/knobx1/knobx1.c
Normal file
@ -0,0 +1,76 @@
|
||||
// (c) 2025 Binepad (@binpad)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "knobx1.h"
|
||||
|
||||
#ifdef DYNAMIC_KEYMAP_LAYER_COUNT
|
||||
# define X1_KEYMAP_LAYER_COUNT DYNAMIC_KEYMAP_LAYER_COUNT
|
||||
#else
|
||||
# define X1_KEYMAP_LAYER_COUNT 4
|
||||
#endif
|
||||
|
||||
void keyboard_pre_init_kb(void) {
|
||||
const pin_t indicator_leds[4] = {IND1_LED, IND2_LED, IND3_LED, IND4_LED};
|
||||
for (int i = 0; i < 4; i++) {
|
||||
gpio_set_pin_output(indicator_leds[i]); // Set Indicators as output
|
||||
gpio_write_pin_low(indicator_leds[i]); // Set initial indicator low / OFF
|
||||
}
|
||||
|
||||
// Call the user pre-init function if needed
|
||||
// Do it after ._kb incase the user wants to change pin stuff
|
||||
keyboard_pre_init_user();
|
||||
}
|
||||
|
||||
layer_state_t layer_state_set_kb(layer_state_t state) {
|
||||
state = layer_state_set_user(state);
|
||||
uint8_t layer = get_highest_layer(state);
|
||||
x1_layer_led(layer);
|
||||
return state;
|
||||
}
|
||||
|
||||
void matrix_init_kb(void) {
|
||||
// Direct PINS use; gpio -> switch -> ground.
|
||||
// Setting Row 0 to ground makes it work like a direct pin
|
||||
gpio_set_pin_output(ROW0_PIN); // Set Col0 as an output
|
||||
gpio_write_pin_low(ROW0_PIN); // Set Col0 to low / ground
|
||||
|
||||
matrix_init_user();
|
||||
}
|
||||
|
||||
bool process_x1_layer_up(keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
uint8_t current_layer = get_highest_layer(layer_state);
|
||||
// Cycle through layers
|
||||
uint8_t next_layer = (current_layer + 1) % X1_KEYMAP_LAYER_COUNT;
|
||||
layer_move(next_layer);
|
||||
x1_layer_led(next_layer); // Update LED indicators
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool process_x1_layer_down(keyrecord_t *record) {
|
||||
if (record->event.pressed) {
|
||||
uint8_t current_layer = get_highest_layer(layer_state);
|
||||
// Reverse through layers
|
||||
uint8_t prev_layer = (current_layer == 0) ? (X1_KEYMAP_LAYER_COUNT - 1) : (current_layer - 1);
|
||||
layer_move(prev_layer);
|
||||
x1_layer_led(prev_layer);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
|
||||
if (!process_record_user(keycode, record)) {
|
||||
return false;
|
||||
}
|
||||
switch (keycode) {
|
||||
case X1_LAYER_SELECTOR_UP:
|
||||
return process_x1_layer_up(record);
|
||||
|
||||
case X1_LAYER_SELECTOR_DOWN:
|
||||
return process_x1_layer_down(record);
|
||||
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
49
keyboards/binepad/knobx1/knobx1.h
Normal file
49
keyboards/binepad/knobx1/knobx1.h
Normal file
@ -0,0 +1,49 @@
|
||||
// (c) 2025 Binepad (@binpad)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
// PCB has a 1x2 matrix. Set the ROW0 to ground for faster direct pin access.
|
||||
#define ROW0_PIN B8
|
||||
|
||||
#define IND1_LED A6
|
||||
#define IND2_LED A5
|
||||
#define IND3_LED A4
|
||||
#define IND4_LED A3
|
||||
|
||||
// clang-format off
|
||||
enum x1_keycodes {
|
||||
X1_LAYER_SELECTOR_UP = QK_USER,
|
||||
X1_LAYER_SELECTOR_DOWN
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
#define X1_LYRU X1_LAYER_SELECTOR_UP
|
||||
#define X1_LYRD X1_LAYER_SELECTOR_DOWN
|
||||
|
||||
// clang-format off
|
||||
static inline void x1_led_1(bool on) { gpio_write_pin(IND1_LED, on); }
|
||||
static inline void x1_led_2(bool on) { gpio_write_pin(IND2_LED, on); }
|
||||
static inline void x1_led_3(bool on) { gpio_write_pin(IND3_LED, on); }
|
||||
static inline void x1_led_4(bool on) { gpio_write_pin(IND4_LED, on); }
|
||||
static inline void x1_led_1_on(void) { gpio_write_pin_high(IND1_LED); }
|
||||
static inline void x1_led_2_on(void) { gpio_write_pin_high(IND2_LED); }
|
||||
static inline void x1_led_3_on(void) { gpio_write_pin_high(IND3_LED); }
|
||||
static inline void x1_led_4_on(void) { gpio_write_pin_high(IND4_LED); }
|
||||
static inline void x1_led_1_off(void) { gpio_write_pin_low(IND1_LED); }
|
||||
static inline void x1_led_2_off(void) { gpio_write_pin_low(IND2_LED); }
|
||||
static inline void x1_led_3_off(void) { gpio_write_pin_low(IND3_LED); }
|
||||
static inline void x1_led_4_off(void) { gpio_write_pin_low(IND4_LED); }
|
||||
// clang-format on
|
||||
|
||||
static inline void x1_layer_led(uint8_t lyr) {
|
||||
gpio_write_pin(IND1_LED, lyr >= 0);
|
||||
gpio_write_pin(IND2_LED, lyr >= 1);
|
||||
gpio_write_pin(IND3_LED, lyr >= 2);
|
||||
gpio_write_pin(IND4_LED, lyr >= 3);
|
||||
}
|
||||
|
||||
bool process_x1_layer_up(keyrecord_t *record);
|
||||
bool process_x1_layer_down(keyrecord_t *record);
|
26
keyboards/binepad/knobx1/readme.md
Normal file
26
keyboards/binepad/knobx1/readme.md
Normal file
@ -0,0 +1,26 @@
|
||||
# Binepad KnobX1
|
||||
|
||||

|
||||
|
||||
*A fully customizable knob designed to enhance your PC experience*
|
||||
|
||||
* Keyboard Maintainer: [binepad](https://github.com/binepad)
|
||||
* Hardware Supported: *Binepad knobX1*
|
||||
* Hardware Availability: [binepad.com](https://binepad.com/products/knobx1)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make binepad/knobx1:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make binepad/knobx1: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 2 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the layer button (small button on the bottom left) and plug in the keyboard.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
25
keyboards/cipulot/ok_1/config.h
Normal file
25
keyboards/cipulot/ok_1/config.h
Normal file
@ -0,0 +1,25 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 3 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
|
||||
|
||||
// PWM driver with direct memory access (DMA) support
|
||||
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
|
||||
#define WS2812_PWM_DRIVER PWMD1
|
||||
#define WS2812_PWM_CHANNEL 1
|
||||
#define WS2812_PWM_PAL_MODE 2
|
||||
#define WS2812_DMA_STREAM STM32_DMA1_STREAM5
|
||||
#define WS2812_DMA_CHANNEL 6
|
22
keyboards/cipulot/ok_1/halconf.h
Normal file
22
keyboards/cipulot/ok_1/halconf.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 3 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_PAL TRUE
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
#include_next <halconf.h>
|
255
keyboards/cipulot/ok_1/keyboard.json
Normal file
255
keyboards/cipulot/ok_1/keyboard.json
Normal file
@ -0,0 +1,255 @@
|
||||
{
|
||||
"manufacturer": "Cipulot",
|
||||
"keyboard_name": "OK-1",
|
||||
"maintainer": "Cipulot",
|
||||
"bootloader": "stm32-dfu",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B10", "B2", "B1", "B0", "A7", "A6", "A5", "A1", "A0", "F1", "F0", "C15", "A4", "A3"],
|
||||
"rows": ["B11", "A2", "B9", "B8", "B7", "B6"]
|
||||
},
|
||||
"processor": "STM32F072",
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"digital_rain": true,
|
||||
"dual_beacon": true,
|
||||
"fractal": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"multisplash": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"default": {
|
||||
"animation": "rainbow_moving_chevron"
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"matrix": [0, 13], "x": 205, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 12], "x": 187, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 11], "x": 172, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 10], "x": 157, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 9], "x": 142, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 8], "x": 127, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 6], "x": 97, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 82, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 67, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 52, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 37, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 22, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 0], "x": 4, "y": 0, "flags": 1},
|
||||
{"matrix": [1, 0], "x": 0, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 15, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 30, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 45, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 60, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 75, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 6], "x": 90, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 7], "x": 105, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 8], "x": 119, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 9], "x": 134, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 10], "x": 149, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 11], "x": 164, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 12], "x": 179, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 13], "x": 202, "y": 13, "flags": 1},
|
||||
{"matrix": [2, 13], "x": 205, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 12], "x": 187, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 11], "x": 172, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 10], "x": 157, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 9], "x": 142, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 8], "x": 127, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 7], "x": 112, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 6], "x": 97, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 82, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 67, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 52, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 37, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 22, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 4, "y": 26, "flags": 1},
|
||||
{"matrix": [3, 0], "x": 6, "y": 38, "flags": 8},
|
||||
{"matrix": [3, 1], "x": 26, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 41, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 56, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 71, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 86, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 101, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 7], "x": 116, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 8], "x": 131, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 9], "x": 146, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 10], "x": 161, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 11], "x": 175, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 12], "x": 200, "y": 38, "flags": 1},
|
||||
{"matrix": [4, 12], "x": 209, "y": 51, "flags": 1},
|
||||
{"matrix": [4, 11], "x": 189, "y": 51, "flags": 1},
|
||||
{"matrix": [4, 10], "x": 168, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 9], "x": 153, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 8], "x": 138, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 7], "x": 123, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 6], "x": 108, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 93, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 78, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 63, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 49, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 34, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 9, "y": 51, "flags": 4},
|
||||
{"matrix": [5, 0], "x": 0, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 1], "x": 15, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 2], "x": 30, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 3], "x": 47, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 6], "x": 103, "y": 64, "flags": 4},
|
||||
{"matrix": [5, 9], "x": 159, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 10], "x": 177, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 11], "x": 194, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 12], "x": 209, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 13], "x": 224, "y": 64, "flags": 1}
|
||||
],
|
||||
"sleep": true
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x6BCA",
|
||||
"shared_endpoint": {
|
||||
"keyboard": true
|
||||
},
|
||||
"vid": "0x6369"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "pwm",
|
||||
"pin": "B13"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "w": 1.5},
|
||||
{"matrix": [0, 1], "x": 1.5, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2.5, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3.5, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4.5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6.5, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8.5, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9.5, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10.5, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11.5, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12.5, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13.5, "y": 0, "w": 1.5},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13, "y": 1, "w": 2},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.5},
|
||||
{"matrix": [2, 1], "x": 1.5, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.5, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.5, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.5, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.5, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.5, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.5, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.5, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.5, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.5, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.5, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.5, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.5, "y": 2, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 1], "x": 1.75, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.75, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.75, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.75, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.75, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.75, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.75, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.75, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.75, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.75, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.75, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.75, "y": 3, "w": 2.25},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 2.25},
|
||||
{"matrix": [4, 1], "x": 2.25, "y": 4},
|
||||
{"matrix": [4, 2], "x": 3.25, "y": 4},
|
||||
{"matrix": [4, 3], "x": 4.25, "y": 4},
|
||||
{"matrix": [4, 4], "x": 5.25, "y": 4},
|
||||
{"matrix": [4, 5], "x": 6.25, "y": 4},
|
||||
{"matrix": [4, 6], "x": 7.25, "y": 4},
|
||||
{"matrix": [4, 7], "x": 8.25, "y": 4},
|
||||
{"matrix": [4, 8], "x": 9.25, "y": 4},
|
||||
{"matrix": [4, 9], "x": 10.25, "y": 4},
|
||||
{"matrix": [4, 10], "x": 11.25, "y": 4},
|
||||
{"matrix": [4, 11], "x": 12.25, "y": 4, "w": 1.75},
|
||||
{"matrix": [4, 12], "x": 14, "y": 4},
|
||||
{"matrix": [5, 0], "x": 0, "y": 5},
|
||||
{"matrix": [5, 1], "x": 1, "y": 5},
|
||||
{"matrix": [5, 2], "x": 2, "y": 5},
|
||||
{"matrix": [5, 3], "x": 3, "y": 5, "w": 1.25},
|
||||
{"matrix": [5, 6], "x": 4.25, "y": 5, "w": 6.25},
|
||||
{"matrix": [5, 9], "x": 10.5, "y": 5, "w": 1.25},
|
||||
{"matrix": [5, 10], "x": 11.75, "y": 5, "w": 1.25},
|
||||
{"matrix": [5, 11], "x": 13, "y": 5},
|
||||
{"matrix": [5, 12], "x": 14, "y": 5},
|
||||
{"matrix": [5, 13], "x": 15, "y": 5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
90
keyboards/cipulot/ok_1/keymaps/default/keymap.c
Normal file
90
keyboards/cipulot/ok_1/keymaps/default/keymap.c
Normal file
@ -0,0 +1,90 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 3 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
|
||||
};
|
||||
|
||||
enum custom_keycodes {
|
||||
SNIP = SAFE_RANGE,
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
#define MAC PDF(_MAC_BASE)
|
||||
#define WIN PDF(_WIN_BASE)
|
||||
|
||||
#define MACFN MO(_MAC_FN)
|
||||
#define WINFN MO(_WIN_FN)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// clang-format off
|
||||
[_MAC_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_DEL,
|
||||
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_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_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_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,
|
||||
MACFN, KC_LCTL, KC_LOPT, KC_LCMD, KC_SPC, KC_RCMD, KC_ROPT, KC_LEFT, KC_DOWN, KC_RIGHT
|
||||
),
|
||||
[_MAC_FN] = LAYOUT(
|
||||
_______, KC_BRID, KC_BRIU, KC_MCTL, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, SNIP,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, WIN, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, NK_TOGG, _______, _______, _______, _______, _______, RM_VALU,
|
||||
_______, _______, _______, _______, _______, _______, _______, RM_PREV, RM_VALD, RM_PREV
|
||||
),
|
||||
[_WIN_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_DEL,
|
||||
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_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_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_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,
|
||||
WINFN, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_LEFT, KC_DOWN, KC_RIGHT
|
||||
),
|
||||
[_WIN_FN] = LAYOUT(
|
||||
_______, KC_BRID, KC_BRIU, _______, _______, _______, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, SNIP,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, NK_TOGG, MAC, _______, _______, _______, _______, RM_VALU,
|
||||
_______, _______, _______, _______, _______, _______, _______, RM_PREV, RM_VALD, RM_PREV
|
||||
),
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
switch (keycode) {
|
||||
case SNIP:
|
||||
if (record->event.pressed) {
|
||||
if (IS_LAYER_ON(_WIN_FN)) {
|
||||
tap_code(KC_PSCR);
|
||||
} else if (IS_LAYER_ON(_MAC_FN)) {
|
||||
tap_code16(LSFT(LGUI(KC_3)));
|
||||
}
|
||||
}
|
||||
return false;
|
||||
|
||||
default:
|
||||
return true;
|
||||
}
|
||||
}
|
22
keyboards/cipulot/ok_1/mcuconf.h
Normal file
22
keyboards/cipulot/ok_1/mcuconf.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* Copyright 2024 Cipulot
|
||||
*
|
||||
* 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 3 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_next <mcuconf.h>
|
||||
|
||||
#undef STM32_PWM_USE_TIM1
|
||||
#define STM32_PWM_USE_TIM1 TRUE
|
25
keyboards/cipulot/ok_1/readme.md
Normal file
25
keyboards/cipulot/ok_1/readme.md
Normal file
@ -0,0 +1,25 @@
|
||||
# OK-1
|
||||
|
||||
OK-1 is a low profile keyboard.
|
||||
|
||||
* Keyboard Maintainer: [cipulot](https://github.com/cipulot)
|
||||
* Hardware Supported: OK-1
|
||||
* Hardware Availability: TBD
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cipulot/ok_1:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cipulot/ok_1: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:
|
||||
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is configured.
|
||||
* **Physical reset button**: Long press the reset button soldered on the PCB.
|
||||
* **Bootmagic reset**: Hold down the top left key and plug in the controller.
|
2
keyboards/cipulot/ok_1/rules.mk
Normal file
2
keyboards/cipulot/ok_1/rules.mk
Normal file
@ -0,0 +1,2 @@
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
@ -21,8 +21,8 @@
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "F5", "pin_b": "F6"},
|
||||
{"pin_a": "E6", "pin_b": "F0"},
|
||||
{"pin_a": "F5", "pin_b": "F6", "resolution": 4},
|
||||
{"pin_a": "E6", "pin_b": "F0", "resolution": 4},
|
||||
{"pin_a": "B3", "pin_b": "B2", "resolution": 2}
|
||||
]
|
||||
},
|
||||
|
@ -11,14 +11,14 @@ enum my_layers {
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_BASE] = LAYOUT(
|
||||
KC_PSCR, KC_CUT, KC_COPY, KC_PSTE, MS_BTN3, RM_TOGG,
|
||||
KC_CALC, KC_UNDO, KC_MPLY, KC_MNXT, KC_MUTE,
|
||||
KC_ESC, C(KC_X), C(KC_C), C(KC_V), MS_BTN3, RM_TOGG,
|
||||
KC_PSCR,C(KC_Z), KC_CALC, KC_MNXT, KC_MPLY,
|
||||
MO(1), KC_LGUI, KC_DEL, KC_APP
|
||||
),
|
||||
|
||||
[_RGBL] = LAYOUT(
|
||||
RM_NEXT, RM_SATU, KC_INS, KC_DEL, _______, _______,
|
||||
RM_PREV, RM_SATD, KC_PGUP, KC_HOME, _______,
|
||||
RM_NEXT, RM_SATU, KC_INS, KC_DEL, _______, _______,
|
||||
RM_PREV, RM_SATD, KC_PGUP, KC_HOME, KC_MUTE,
|
||||
_______, QK_BOOT, KC_PGDN, KC_END
|
||||
),
|
||||
};
|
||||
|
95
keyboards/green_keys/gravity_45/keyboard.json
Normal file
95
keyboards/green_keys/gravity_45/keyboard.json
Normal file
@ -0,0 +1,95 @@
|
||||
{
|
||||
"manufacturer": "GreenKeys",
|
||||
"keyboard_name": "Gravity-45",
|
||||
"maintainer": "takashicompany",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP14", "GP15", "GP26", "GP27", "GP28", "GP29", "GP5", "GP4", "GP3", "GP2", "GP1", "GP0"],
|
||||
"rows": ["GP10", "GP11", "GP12", "GP13"]
|
||||
},
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"led_count": 1,
|
||||
"max_brightness": 120
|
||||
},
|
||||
"url": "https://green-keys.info",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x9121",
|
||||
"vid": "0x1209"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP8"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"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": [0, 6], "x": 9.5, "y": 0},
|
||||
{"matrix": [0, 7], "x": 10.5, "y": 0},
|
||||
{"matrix": [0, 8], "x": 11.5, "y": 0},
|
||||
{"matrix": [0, 9], "x": 12.5, "y": 0},
|
||||
{"matrix": [0, 10], "x": 13.5, "y": 0},
|
||||
{"matrix": [0, 11], "x": 14.5, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0.25, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1.25, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.25, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.25, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.25, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.25, "y": 1},
|
||||
{"matrix": [3, 11], "x": 7.625, "y": 1.5},
|
||||
{"matrix": [1, 6], "x": 9.75, "y": 1},
|
||||
{"matrix": [1, 7], "x": 10.75, "y": 1},
|
||||
{"matrix": [1, 8], "x": 11.75, "y": 1},
|
||||
{"matrix": [1, 9], "x": 12.75, "y": 1},
|
||||
{"matrix": [1, 10], "x": 13.75, "y": 1},
|
||||
{"matrix": [1, 11], "x": 14.75, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0.5, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1.5, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.5, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.5, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.5, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.5, "y": 2},
|
||||
{"matrix": [2, 6], "x": 10, "y": 2},
|
||||
{"matrix": [2, 7], "x": 11, "y": 2},
|
||||
{"matrix": [2, 8], "x": 12, "y": 2},
|
||||
{"matrix": [2, 9], "x": 13, "y": 2},
|
||||
{"matrix": [2, 10], "x": 14, "y": 2},
|
||||
{"matrix": [2, 11], "x": 15, "y": 2},
|
||||
{"matrix": [3, 2], "x": 2.5, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.5, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 4], "x": 4.75, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 5], "x": 6, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 6], "x": 9.75, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 7], "x": 11, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 8], "x": 12.25, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 9], "x": 13.5, "y": 3, "w": 1.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
70
keyboards/green_keys/gravity_45/keymaps/default/keymap.c
Normal file
70
keyboards/green_keys/gravity_45/keymaps/default/keymap.c
Normal file
@ -0,0 +1,70 @@
|
||||
// Copyright 2025 takashicompany (@takashicompany)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, LT(7, KC_Q), KC_W, KC_E, LT(6, KC_R), KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, RGB_TOG, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_ENT,
|
||||
KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_DEL,
|
||||
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_RALT, KC_RGUI
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_TRNS, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3, KC_TRNS,
|
||||
KC_TRNS, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3), KC_TRNS,
|
||||
KC_TRNS, KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_TRNS, KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[3] = LAYOUT(
|
||||
KC_TRNS, LT(7, KC_Q), KC_W, KC_E, LT(6, KC_R), KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS,
|
||||
KC_TRNS, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_TRNS, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_TRNS,
|
||||
KC_TRNS, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_TRNS,
|
||||
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LNG1), KC_RALT, KC_RGUI
|
||||
),
|
||||
|
||||
[4] = LAYOUT(
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_TRNS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3, KC_TRNS,
|
||||
KC_TRNS, LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[5] = LAYOUT(
|
||||
KC_TRNS, KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS, KC_TRNS,
|
||||
KC_TRNS, KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_TRNS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
|
||||
KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[6] = LAYOUT(
|
||||
KC_TRNS, KC_ESC, KC_TAB, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[7] = LAYOUT(
|
||||
KC_TRNS, KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
|
||||
KC_TRNS, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9), KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[8] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, DF(0), DF(3), KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
37
keyboards/green_keys/gravity_45/readme.md
Normal file
37
keyboards/green_keys/gravity_45/readme.md
Normal file
@ -0,0 +1,37 @@
|
||||
# Gravity-45
|
||||
|
||||

|
||||
|
||||
Gravity-45 is a 45-key integrated keyboard.
|
||||
It uses the Waveshare RP2040-Zero MCU.
|
||||
Keyswitch sockets are used for easy keyswitch replacement.
|
||||
The tight PCB outline lines allow for easy case design.
|
||||
|
||||
---
|
||||
|
||||
Gravity-45 は 45キーの一体型のキーボードだ。
|
||||
MCUにはWaveshare RP2040-Zeroを採用している。
|
||||
キースイッチソケットを使用するためキースイッチの交換が容易に行える。
|
||||
PCBの外形線がタイトなので、ケースの設計が容易だ。
|
||||
|
||||
* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany)
|
||||
* Hardware Supported: PCB, Waveshare RP2040-Zero
|
||||
* Hardware Availability: [GreenKeys](https://green-keys.info/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make green_keys/gravity_45:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make green_keys/gravity_45: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
|
107
keyboards/handwired/hen_des/epssp75/keyboard.json
Normal file
107
keyboards/handwired/hen_des/epssp75/keyboard.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"manufacturer": "Henning Cordes",
|
||||
"keyboard_name": "epssp75",
|
||||
"maintainer": "hen-des",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP16", "GP17", "GP18", "GP19", "GP20", "GP21", "GP22"],
|
||||
"rows": ["GP1", "GP2", "GP3", "GP4", "GP5"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"url": "https://hen-des.github.io/epssp75/",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0075",
|
||||
"vid": "0x6863"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"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": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 9], "x": 8.5, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"matrix": [0, 15], "x": 15, "y": 0},
|
||||
{"matrix": [0, 16], "x": 16, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6, "y": 1},
|
||||
{"matrix": [1, 8], "x": 7.25, "y": 1, "w": 2.5},
|
||||
{"matrix": [1, 10], "x": 10, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13, "y": 1},
|
||||
{"matrix": [1, 14], "x": 14, "y": 1},
|
||||
{"matrix": [1, 15], "x": 15, "y": 1},
|
||||
{"matrix": [1, 16], "x": 16, "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": [2, 6], "x": 6, "y": 2, "h": 2},
|
||||
{"matrix": [2, 7], "x": 7, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10, "y": 2, "h": 2},
|
||||
{"matrix": [2, 11], "x": 11, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13, "y": 2},
|
||||
{"matrix": [2, 14], "x": 14, "y": 2},
|
||||
{"matrix": [2, 15], "x": 15, "y": 2},
|
||||
{"matrix": [2, 16], "x": 16, "y": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12, "y": 3},
|
||||
{"matrix": [3, 13], "x": 13, "y": 3},
|
||||
{"matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"matrix": [3, 15], "x": 15, "y": 3},
|
||||
{"matrix": [3, 16], "x": 16, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4},
|
||||
{"matrix": [4, 1], "x": 1, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2, "y": 4},
|
||||
{"matrix": [4, 3], "x": 3, "y": 4},
|
||||
{"matrix": [4, 5], "x": 4, "y": 4, "w": 2},
|
||||
{"matrix": [4, 6], "x": 6, "y": 4, "h": 2},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "h": 2},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 2},
|
||||
{"matrix": [4, 13], "x": 13, "y": 4},
|
||||
{"matrix": [4, 14], "x": 14, "y": 4},
|
||||
{"matrix": [4, 15], "x": 15, "y": 4},
|
||||
{"matrix": [4, 16], "x": 16, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
21
keyboards/handwired/hen_des/epssp75/keymaps/default/keymap.c
Normal file
21
keyboards/handwired/hen_des/epssp75/keymaps/default/keymap.c
Normal file
@ -0,0 +1,21 @@
|
||||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_F22, KC_RBRC, KC_PSCR, KC_F23, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_F20, KC_ENT, KC_F21, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL, KC_HOME, KC_UP, KC_END, KC_BSPC, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_RSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LEFT, KC_DOWN, KC_RGHT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_NUBS, KC_SPC, KC_LSFT, KC_ENT, KC_SPC, KC_RALT, MO(1), RGUI_T(KC_APP), KC_RCTL
|
||||
),
|
||||
[1] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F22, KC_PAUS, KC_PSCR, KC_F23, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
KC_TAB, KC_PGUP, LCTL(KC_LEFT), KC_UP, LCTL(KC_RGHT), KC_PGDN, KC_F20, KC_ENT, KC_F21, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_F12,
|
||||
KC_CAPS, KC_HOME, KC_LEFT, KC_DOWN, KC_RGHT, KC_END, KC_DEL, KC_HOME, KC_VOLU, KC_END, KC_BSPC, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_RSFT, LCA(KC_F2), KC_TAB, KC_F2, KC_F5, KC_F23, KC_MUTE, KC_VOLD, KC_MUTE, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_RSFT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_NUBS, KC_SPC, KC_LSFT, KC_ENT, KC_SPC, KC_RALT, _______, KC_APP, KC_RCTL
|
||||
)
|
||||
};
|
18
keyboards/handwired/hen_des/epssp75/readme.md
Normal file
18
keyboards/handwired/hen_des/epssp75/readme.md
Normal file
@ -0,0 +1,18 @@
|
||||
# epssp75
|
||||
|
||||
Ergonomic PSeudo SPlit 75-key Keyboard. Desinged after two years of working with a [Truly Ergonomic CLEAVE Keyboard](https://trulyergonomic.com) and also inspired by the [Redox Keyboard](https://github.com/mattdibi/redox-keyboard).
|
||||
I am using and the [NOTED](https://neo-layout.org/Layouts/noted/) layout and the [ReNeo](https://neo-layout.org/Einrichtung/reneo/) software which offers additional possible key functions and layers.
|
||||
|
||||
* Keyboard Maintainer: [Henning Cordes](https://github.com/hen-des)
|
||||
* Files: [https://github.com/hen-des/epssp75](https://github.com/hen-des/epssp75)
|
||||
|
||||
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).
|
||||
|
||||
Detailed [description](https://hen-des.github.io/epssp75/index.html) and expiriences of the conception and manufacturing.
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 2 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
|
94
keyboards/handwired/lumawing/keyboard.json
Normal file
94
keyboards/handwired/lumawing/keyboard.json
Normal file
@ -0,0 +1,94 @@
|
||||
{
|
||||
"keyboard_name": "LuMaWing",
|
||||
"manufacturer": "Lucas Mateijsen",
|
||||
"url": "",
|
||||
"maintainer": "qmk",
|
||||
"usb": {
|
||||
"vid": "0xBB80",
|
||||
"pid": "0x050D",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": true,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false
|
||||
},
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B1", "B3", "B2", "B6", "B5", "B4", "E6", "D7", "C6", "D4", "D0", "D1", "D2", "D3"],
|
||||
"rows": ["F4", "F5", "F6", "F7"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"development_board": "promicro",
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"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": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "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": [1, 6], "x": 6, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13, "y": 1},
|
||||
|
||||
{"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": [2, 6], "x": 6, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13, "y": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4, "y": 3},
|
||||
{"matrix": [3, 6], "x": 5, "y": 3, "w": 2},
|
||||
{"matrix": [3, 7], "x": 7, "y": 3, "w": 2},
|
||||
{"matrix": [3, 9], "x": 9, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12, "y": 3},
|
||||
{"matrix": [3, 13], "x": 13, "y": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
70
keyboards/handwired/lumawing/keymaps/default/keymap.c
Normal file
70
keyboards/handwired/lumawing/keymaps/default/keymap.c
Normal file
@ -0,0 +1,70 @@
|
||||
/* Copyright 2021 Richard Nunez <l.mateijsen@outlook.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
|
||||
|
||||
#define KC_COPY LCTL(KC_C)
|
||||
#define KC_CUT LCTL(KC_X)
|
||||
#define KC_PSTE LCTL(KC_V)
|
||||
|
||||
#define KC_UNDO LCTL(KC_Z)
|
||||
#define KC_AGIN LCTL(KC_Y)
|
||||
|
||||
enum layer_names {
|
||||
_COLEMAKDH,
|
||||
_QWERTY,
|
||||
_NUMBERS,
|
||||
_FUNCTIONAL,
|
||||
_ADMIN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_COLEMAKDH] = LAYOUT(
|
||||
KC_ESC, KC_Q, KC_W, KC_F, KC_P, KC_B, XXXXXXX, XXXXXXX, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_DEL,
|
||||
KC_TAB, KC_A, KC_R, KC_S, KC_T, KC_G, XXXXXXX, XXXXXXX, KC_M, KC_N, KC_E, KC_I, KC_O, KC_BSPC,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_D, KC_V, XXXXXXX, XXXXXXX, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, MO(3), KC_SPC, KC_ENT, MO(2), KC_RALT, KC_RGUI, XXXXXXX, KC_ENT
|
||||
),
|
||||
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, XXXXXXX, XXXXXXX, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, XXXXXXX, XXXXXXX, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_DEL,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, XXXXXXX, XXXXXXX, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, XXXXXXX, KC_LGUI, KC_LALT, MO(3), KC_SPC, KC_ENT, MO(2), KC_RALT, KC_RGUI, XXXXXXX, KC_ENT
|
||||
),
|
||||
|
||||
[_NUMBERS] = LAYOUT(
|
||||
KC_ESC, 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,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_QUOT, KC_LBRC, KC_RBRC, XXXXXXX, XXXXXXX,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
_______, XXXXXXX, XXXXXXX, _______, MO(4), _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
[_FUNCTIONAL] = LAYOUT(
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UP, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, KC_UNDO, KC_CUT, KC_COPY, KC_PSTE, KC_AGIN, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_RGHT, XXXXXXX, XXXXXXX,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
_______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
|
||||
[_ADMIN] = LAYOUT(
|
||||
QK_BOOT, DF(0), DF(1), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, XXXXXXX, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
_______, XXXXXXX, XXXXXXX, _______, _______, _______, _______, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
)
|
||||
};
|
15
keyboards/handwired/lumawing/readme.md
Normal file
15
keyboards/handwired/lumawing/readme.md
Normal file
@ -0,0 +1,15 @@
|
||||
# LuMaWing handwired
|
||||
|
||||
Custom handwired LuMaWing keyboard.
|
||||
|
||||
* Keyboard Maintainer: [Lucas Mateijsen](https://github.com/LucasMateijsen/)
|
||||
* Hardware Supported: Handwired LuMaWing 14x4 ortho keyboard Pro-Micro
|
||||
* Hardware Availability:
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make handwired/ortho4x14:default
|
||||
|
||||
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).
|
||||
|
||||
To get into the Bootloader, simply hold down the top-left key (pos 0, 0) and power the board.
|
18
keyboards/hazel/bad_wings_v2/config.h
Normal file
18
keyboards/hazel/bad_wings_v2/config.h
Normal file
@ -0,0 +1,18 @@
|
||||
// Copyright 2023 Jason Hazel (@jasonhazel)
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define SPI_DRIVER SPID1
|
||||
#define SPI_SCK_PIN A5
|
||||
#define SPI_SCK_PAL_MODE 0
|
||||
#define SPI_MOSI_PIN A7
|
||||
#define SPI_MOSI_PAL_MODE 0
|
||||
#define SPI_MISO_PIN A6
|
||||
#define SPI_MISO_PAL_MODE 0
|
||||
#define CIRQUE_PINNACLE_SPI_DIVISOR 8
|
||||
#define CIRQUE_PINNACLE_SPI_CS_PIN A4
|
||||
|
||||
#define POINTING_DEVICE_CS_PIN A4
|
||||
#define CIRQUE_PINNACLE_DIAMETER_MM 35
|
||||
#define POINTING_DEVICE_ROTATION_90
|
10
keyboards/hazel/bad_wings_v2/halconf.h
Normal file
10
keyboards/hazel/bad_wings_v2/halconf.h
Normal file
@ -0,0 +1,10 @@
|
||||
// Copyright 2023 Jason Hazel (@jasonhazel)
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_SPI TRUE
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
|
||||
#include_next <halconf.h>
|
67
keyboards/hazel/bad_wings_v2/keyboard.json
Normal file
67
keyboards/hazel/bad_wings_v2/keyboard.json
Normal file
@ -0,0 +1,67 @@
|
||||
{
|
||||
"manufacturer": "Hazel",
|
||||
"keyboard_name": "Bad Wings v2",
|
||||
"maintainer": "jasonhazel",
|
||||
"bootloader": "stm32-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"pointing_device": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["F1", "F0", "C15", "C14", "C13"],
|
||||
"rows": ["B11", "B10", "B2", "B1", "B3", "B4", "B5", "B6"]
|
||||
},
|
||||
"processor": "STM32F072",
|
||||
"url": "https://github.com/hazels-garage/bad-wings/tree/master/v2",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x4258",
|
||||
"vid": "0x4A48"
|
||||
},
|
||||
"community_layouts": ["split_3x5_3"],
|
||||
"layouts": {
|
||||
"LAYOUT_split_3x5_3": {
|
||||
"layout": [
|
||||
{"label": "00", "matrix": [0, 0], "x": 0, "y": 0.75, "w": 1},
|
||||
{"label": "01", "matrix": [0, 1], "x": 1, "y": 0.5, "w": 1},
|
||||
{"label": "02", "matrix": [0, 2], "x": 2, "y": 0, "w": 1},
|
||||
{"label": "03", "matrix": [0, 3], "x": 3, "y": 0.25, "w": 1},
|
||||
{"label": "04", "matrix": [0, 4], "x": 4, "y": 0.36, "w": 1},
|
||||
{"label": "44", "matrix": [4, 4], "x": 8, "y": 0.36, "w": 1},
|
||||
{"label": "43", "matrix": [4, 3], "x": 9, "y": 0.25, "w": 1},
|
||||
{"label": "42", "matrix": [4, 2], "x": 10, "y": 0, "w": 1},
|
||||
{"label": "41", "matrix": [4, 1], "x": 11, "y": 0.5, "w": 1},
|
||||
{"label": "40", "matrix": [4, 0], "x": 12, "y": 0.75, "w": 1},
|
||||
{"label": "10", "matrix": [1, 0], "x": 0, "y": 1.75, "w": 1},
|
||||
{"label": "11", "matrix": [1, 1], "x": 1, "y": 1.5, "w": 1},
|
||||
{"label": "12", "matrix": [1, 2], "x": 2, "y": 1, "w": 1},
|
||||
{"label": "13", "matrix": [1, 3], "x": 3, "y": 1.25, "w": 1},
|
||||
{"label": "14", "matrix": [1, 4], "x": 4, "y": 1.36, "w": 1},
|
||||
{"label": "54", "matrix": [5, 4], "x": 8, "y": 1.36, "w": 1},
|
||||
{"label": "53", "matrix": [5, 3], "x": 9, "y": 1.25, "w": 1},
|
||||
{"label": "52", "matrix": [5, 2], "x": 10, "y": 1, "w": 1},
|
||||
{"label": "51", "matrix": [5, 1], "x": 11, "y": 1.5, "w": 1},
|
||||
{"label": "50", "matrix": [5, 0], "x": 12, "y": 1.75, "w": 1},
|
||||
{"label": "20", "matrix": [2, 0], "x": 0, "y": 2.75, "w": 1},
|
||||
{"label": "21", "matrix": [2, 1], "x": 1, "y": 2.5, "w": 1},
|
||||
{"label": "22", "matrix": [2, 2], "x": 2, "y": 2, "w": 1},
|
||||
{"label": "23", "matrix": [2, 3], "x": 3, "y": 2.25, "w": 1},
|
||||
{"label": "24", "matrix": [2, 4], "x": 4, "y": 2.36, "w": 1},
|
||||
{"label": "64", "matrix": [6, 4], "x": 8, "y": 2.36, "w": 1},
|
||||
{"label": "63", "matrix": [6, 3], "x": 9, "y": 2.25, "w": 1},
|
||||
{"label": "62", "matrix": [6, 2], "x": 10, "y": 2, "w": 1},
|
||||
{"label": "61", "matrix": [6, 1], "x": 11, "y": 2.5, "w": 1},
|
||||
{"label": "60", "matrix": [6, 0], "x": 12, "y": 2.75, "w": 1},
|
||||
{"label": "32", "matrix": [3, 2], "x": 3, "y": 3.25, "w": 1},
|
||||
{"label": "33", "matrix": [3, 3], "x": 4, "y": 3.36, "w": 1},
|
||||
{"label": "34", "matrix": [3, 4], "x": 5, "y": 3.47, "w": 1},
|
||||
{"label": "74", "matrix": [7, 4], "x": 7, "y": 3.47, "w": 1},
|
||||
{"label": "73", "matrix": [7, 3], "x": 8, "y": 3.36, "w": 1},
|
||||
{"label": "72", "matrix": [7, 2], "x": 9, "y": 3.25, "w": 1}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
11
keyboards/hazel/bad_wings_v2/keymaps/default/config.h
Normal file
11
keyboards/hazel/bad_wings_v2/keymaps/default/config.h
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright 2023 Jason Hazel (@jasonhazel)
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define PERMISSIVE_HOLD
|
||||
#define ONESHOT_TAP_TOGGLE 10
|
||||
#define ONESHOT_TIMEOUT 500
|
||||
#define CIRQUE_PINNACLE_TAP_ENABLE
|
||||
#define CIRQUE_PINNACLE_POSITION_MODE CIRQUE_PINNACLE_ABSOLUTE_MODE
|
||||
#define CIRQUE_DEVICE_GESTURES_SCROLL_ENABLE
|
32
keyboards/hazel/bad_wings_v2/keymaps/default/keymap.json
Normal file
32
keyboards/hazel/bad_wings_v2/keymaps/default/keymap.json
Normal file
@ -0,0 +1,32 @@
|
||||
{
|
||||
"keyboard": "hazel/bad_wings_v2",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT_split_3x5_3",
|
||||
"layers": [
|
||||
[
|
||||
"KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P",
|
||||
"KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_QUOT",
|
||||
"KC_Z", "LGUI_T(KC_X)", "LALT_T(KC_C)", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH",
|
||||
"KC_LCTL", "OSL(1)", "OSM(MOD_LSFT)", "LT(3,KC_SPC)", "LT(2,KC_BSPC)", "KC_ENT"
|
||||
],
|
||||
[
|
||||
"KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_RBRC", "KC_RCBR", "KC_RPRN", "KC_GT", "KC_NO",
|
||||
"KC_GRV", "KC_TILD", "KC_UNDS", "KC_EQL", "KC_NO", "KC_LBRC", "KC_LCBR", "KC_LPRN", "KC_LT", "KC_BSLS",
|
||||
"KC_NO", "KC_NO", "KC_PLUS", "KC_MINS", "KC_NO", "KC_NO", "KC_NO", "KC_COLN", "KC_DOT", "KC_SCLN",
|
||||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
|
||||
],
|
||||
[
|
||||
"KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_PIPE", "KC_NO",
|
||||
"KC_1", "KC_2", "KC_3", "KC_4", "KC_5", "KC_6", "KC_7", "KC_8", "KC_9", "KC_0",
|
||||
"KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO", "KC_NO",
|
||||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
|
||||
],
|
||||
[
|
||||
"KC_ESC", "KC_F1", "KC_F4", "KC_F7", "KC_F10", "KC_NO", "KC_HOME", "KC_UP", "KC_END", "KC_NO",
|
||||
"KC_TAB", "KC_F2", "KC_F5", "KC_F8", "KC_F11", "KC_NO", "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_NO",
|
||||
"KC_NO", "KC_F3", "KC_F6", "KC_F9", "KC_F12", "KC_NO", "KC_MRWD", "KC_MPLY", "KC_MFFD", "KC_DEL",
|
||||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
|
||||
]
|
||||
],
|
||||
"author": "Jason Hazel"
|
||||
}
|
9
keyboards/hazel/bad_wings_v2/mcuconf.h
Normal file
9
keyboards/hazel/bad_wings_v2/mcuconf.h
Normal file
@ -0,0 +1,9 @@
|
||||
// Copyright 2022 Kyle McCreery (@kylemccreery)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_SPI_USE_SPI1
|
||||
#define STM32_SPI_USE_SPI1 TRUE
|
27
keyboards/hazel/bad_wings_v2/readme.md
Normal file
27
keyboards/hazel/bad_wings_v2/readme.md
Normal file
@ -0,0 +1,27 @@
|
||||
# Bad Wings v2
|
||||
|
||||

|
||||
|
||||
36 key unibody split
|
||||
|
||||
* Keyboard Maintainer: [Jason Hazel](https://github.com/jasonhazel)
|
||||
* Hardware Supported: Bad Wings v2
|
||||
* Hardware Availability: [Hazel's Garage GitHub](https://github.com/hazels-garage/bad-wings/tree/master/v2)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make hazel/bad_wings_v2:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make hazel/bad_wings_v2: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
|
||||
* **Physical reset button**: Briefly press the button on the back of the PCB
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
1
keyboards/hazel/bad_wings_v2/rules.mk
Normal file
1
keyboards/hazel/bad_wings_v2/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
|
20
keyboards/jcpm2/config.h
Normal file
20
keyboards/jcpm2/config.h
Normal file
@ -0,0 +1,20 @@
|
||||
/* Copyright 2025 Jeremy Cook Consulting LLC <info@jeremyscook.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.
|
||||
*
|
||||
* If you did not receive a copy of the GNU General Public License
|
||||
* along with this program, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define OLED_DISPLAY_128X64
|
||||
#define OLED_TIMEOUT 2000000
|
46
keyboards/jcpm2/jcpm2.c
Normal file
46
keyboards/jcpm2/jcpm2.c
Normal file
@ -0,0 +1,46 @@
|
||||
/* Copyright 2025 Jeremy Cook Consulting LLC <info@jeremyscook.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 OLED_ENABLE
|
||||
static uint32_t logo_timer = 0;
|
||||
|
||||
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
|
||||
logo_timer = timer_read();
|
||||
return OLED_ROTATION_180;
|
||||
}
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM qmk_logo[] = {
|
||||
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x89, 0x8A, 0x8B, 0x8C, 0x8D, 0x8E, 0x8F, 0x90, 0x91, 0x92, 0x93, 0x94,
|
||||
0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5, 0xA6, 0xA7, 0xA8, 0xA9, 0xAA, 0xAB, 0xAC, 0xAD, 0xAE, 0xAF, 0xB0, 0xB1, 0xB2, 0xB3, 0xB4,
|
||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0xC5, 0xC6, 0xC7, 0xC8, 0xC9, 0xCA, 0xCB, 0xCC, 0xCD, 0xCE, 0xCF, 0xD0, 0xD1, 0xD2, 0xD3, 0xD4, 0x00
|
||||
};
|
||||
oled_write_P(qmk_logo, false);
|
||||
}
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
if (timer_elapsed32(logo_timer) < 1000) {
|
||||
render_logo();
|
||||
return false;
|
||||
}
|
||||
if (!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
#endif
|
79
keyboards/jcpm2/keyboard.json
Normal file
79
keyboards/jcpm2/keyboard.json
Normal file
@ -0,0 +1,79 @@
|
||||
{
|
||||
"manufacturer": "jeremyscook",
|
||||
"keyboard_name": "jcpm2",
|
||||
"maintainer": "jeremyscook",
|
||||
"development_board": "promicro",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "D2", "pin_b": "D3"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"oled": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"direct": [
|
||||
["D4", null, "F4", "B3"],
|
||||
["B4", null, "F5", "B2"],
|
||||
["B1", "F7", "F6", "B6"]
|
||||
]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"digital_rain": true,
|
||||
"hue_breathing": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"default": {
|
||||
"animation": "typing_heatmap",
|
||||
"val": 180
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"matrix": [2, 0], "x": 0, "y": 64, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 75, "y": 64, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 150, "y": 64, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 150, "y": 32, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 150, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 224, "y": 0, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 224, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 224, "y": 64, "flags": 4},
|
||||
{"x": 224, "y": 0, "flags": 2},
|
||||
{"x": 224, "y": 64, "flags": 2},
|
||||
{"x": 112, "y": 64, "flags": 2},
|
||||
{"x": 0, "y": 64, "flags": 2}
|
||||
],
|
||||
"sleep": true
|
||||
},
|
||||
"url": "https://github.com/JeremySCook/JC-Pro-Macro-2",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0000",
|
||||
"vid": "0xFEED"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "C6"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
132
keyboards/jcpm2/keymaps/default/keymap.c
Normal file
132
keyboards/jcpm2/keymaps/default/keymap.c
Normal file
@ -0,0 +1,132 @@
|
||||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// Define the layers
|
||||
enum layer_names {
|
||||
_LAYER0,
|
||||
_LAYER0_MOD,
|
||||
_LAYER1,
|
||||
_LAYER2
|
||||
};
|
||||
|
||||
#define UNDERGLOW 60
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/*
|
||||
* ┌───┬───┬───┬───┐
|
||||
* │ E │ n │ 6 │ 7 │
|
||||
* ├───┼───┼───┼───┤
|
||||
* │ B │ n │ 5 │ 8 │
|
||||
* ├───┼───┼───┼───┤
|
||||
* │ 2 │ 3 │ 4 │ 9 │
|
||||
* └───┴───┴───┴───┘
|
||||
*/
|
||||
[_LAYER0] = LAYOUT( // default
|
||||
KC_MUTE, LSFT(KC_COMM), LSFT(KC_DOT),
|
||||
DF(_LAYER1), KC_J, KC_L,
|
||||
KC_MPRV, KC_MPLY, KC_MNXT, TG(_LAYER0_MOD) // btm-right one shot mod layer
|
||||
),
|
||||
[_LAYER0_MOD] = LAYOUT( // default MOD
|
||||
_______, RM_VALU, RM_NEXT, // _______ transparent, goes to above layer
|
||||
_______, RM_VALD, RM_TOGG,
|
||||
LCTL(LGUI(KC_SPC)), _______, _______, TG(_LAYER0_MOD)
|
||||
),
|
||||
[_LAYER1] = LAYOUT( // FCPX
|
||||
LSFT(LGUI(KC_B)), LGUI(KC_B), LGUI(KC_EQL),
|
||||
DF(_LAYER2), LALT(KC_K), LGUI(KC_MINS),
|
||||
KC_J, KC_K, KC_L, KC_BSPC
|
||||
),
|
||||
[_LAYER2] = LAYOUT( // KICAD
|
||||
KC_E, KC_ESC, KC_M,
|
||||
DF(_LAYER0), LGUI(KC_Z), KC_X,
|
||||
KC_V, KC_D, KC_U, KC_BSPC
|
||||
)
|
||||
};
|
||||
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_LAYER0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }, // default
|
||||
[_LAYER0_MOD] = { ENCODER_CCW_CW(_______, _______) }, // default MOD
|
||||
[_LAYER1] = { ENCODER_CCW_CW(KC_LEFT, KC_RIGHT) }, // FCPX
|
||||
[_LAYER2] = { ENCODER_CCW_CW(KC_R, S(KC_R)) } // KICAD
|
||||
};
|
||||
#endif
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
// Function to display the current layer and information on the OLED
|
||||
bool oled_task_user(void) {
|
||||
switch (get_highest_layer(layer_state | default_layer_state)) {
|
||||
case _LAYER0:
|
||||
oled_write_ln_P(PSTR("(VOL- VOL+) LAYER0"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("MUTE SLOW FAST"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("LAYR RSET 10BK 10FW"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("MREV MPLA MFWD +OPT"), false);
|
||||
break;
|
||||
case _LAYER0_MOD:
|
||||
oled_write_ln_P(PSTR("____ ____ 0-MOD"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("____ BRI+ ANIM"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("____ ____ BRI- TOGG"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("EMOJ ____ ____ -OPT"), false);
|
||||
break;
|
||||
case _LAYER1:
|
||||
oled_write_ln_P(PSTR("(FRA- FRA+) FCPX"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("XXXX BRAK ZOM+"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("LAYR RSET KFRA ZOM-"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("BACK STOP FORW DELT"), false);
|
||||
break;
|
||||
case _LAYER2:
|
||||
oled_write_ln_P(PSTR("(RO L RO R) KICAD"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("EDIT ESCP MOVE"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("LAYR RSET UNDO TRAK"), false);
|
||||
oled_write_ln_P(PSTR(""), false);
|
||||
oled_write_ln_P(PSTR("VIA DRAG SALL DELT"), false);
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
bool rgb_matrix_indicators_user(void) {
|
||||
switch(get_highest_layer(layer_state|default_layer_state)) {
|
||||
case _LAYER2:
|
||||
rgb_matrix_set_color(11, 0, 0, UNDERGLOW);
|
||||
rgb_matrix_set_color(10, 0, 0, UNDERGLOW);
|
||||
rgb_matrix_set_color(9, 0, 0, UNDERGLOW);
|
||||
rgb_matrix_set_color(8, 0, 0, UNDERGLOW);
|
||||
break;
|
||||
case _LAYER1:
|
||||
rgb_matrix_set_color(11, 0, UNDERGLOW, 0);
|
||||
rgb_matrix_set_color(10, 0, UNDERGLOW, 0);
|
||||
rgb_matrix_set_color(9, 0, UNDERGLOW, 0);
|
||||
rgb_matrix_set_color(8, 0, UNDERGLOW, 0);
|
||||
break;
|
||||
case _LAYER0_MOD:
|
||||
rgb_matrix_set_color(11, UNDERGLOW/2, 0, UNDERGLOW/2);
|
||||
rgb_matrix_set_color(10, UNDERGLOW/2, 0, UNDERGLOW/2);
|
||||
rgb_matrix_set_color(9, UNDERGLOW/2, 0, UNDERGLOW/2);
|
||||
rgb_matrix_set_color(8, UNDERGLOW/2, 0, UNDERGLOW/2);
|
||||
break;
|
||||
case _LAYER0:
|
||||
rgb_matrix_set_color(11, UNDERGLOW, 0, 0);
|
||||
rgb_matrix_set_color(10, UNDERGLOW, 0, 0);
|
||||
rgb_matrix_set_color(9, UNDERGLOW, 0, 0);
|
||||
rgb_matrix_set_color(8, UNDERGLOW, 0, 0);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
return false;
|
||||
}
|
1
keyboards/jcpm2/keymaps/default/rules.mk
Normal file
1
keyboards/jcpm2/keymaps/default/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
27
keyboards/jcpm2/readme.md
Normal file
27
keyboards/jcpm2/readme.md
Normal file
@ -0,0 +1,27 @@
|
||||
# jcpm2
|
||||
|
||||

|
||||
|
||||
An 8-key macro pad with rotary encoder, RGB backlighting and underlighting. Made and sold by JCC LLC.
|
||||
|
||||
* Keyboard Maintainer: [jeremyscook](https://github.com/jeremyscook)
|
||||
* Hardware Supported: JCPM2 PCB, Pro Micro
|
||||
* Hardware Availability: [Tindie.com](https://www.tindie.com/products/25414)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make jcpm2:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make jcpm2: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 rotary encoder and plug in the keyboard
|
||||
* **Physical reset button**: Double-click the small inside button on top of the PCB
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
8
keyboards/keychron/x0/board.h
Normal file
8
keyboards/keychron/x0/board.h
Normal file
@ -0,0 +1,8 @@
|
||||
// Copyright 2023 @ Keychron(https://www.keychron.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#include_next <board.h>
|
||||
|
||||
#undef STM32_HSECLK
|
||||
#define STM32_HSECLK 16000000U
|
23
keyboards/keychron/x0/config.h
Normal file
23
keyboards/keychron/x0/config.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* 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
|
||||
|
||||
/* I2C Driver Configuration */
|
||||
#define I2C1_SCL_PIN B8
|
||||
#define I2C1_SDA_PIN B9
|
||||
#define I2C1_CLOCK_SPEED 400000
|
||||
#define I2C1_DUTY_CYCLE FAST_DUTY_CYCLE_2
|
21
keyboards/keychron/x0/halconf.h
Normal file
21
keyboards/keychron/x0/halconf.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* 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
|
||||
|
||||
#include_next <halconf.h>
|
73
keyboards/keychron/x0/info.json
Normal file
73
keyboards/keychron/x0/info.json
Normal file
@ -0,0 +1,73 @@
|
||||
{
|
||||
"manufacturer": "Keychron",
|
||||
"keyboard_name": "Lemokey X0",
|
||||
"maintainer": "lalalademaxiya1",
|
||||
"bootloader": "stm32-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"eeprom": {
|
||||
"wear_leveling": {
|
||||
"backing_size": 4096
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "A3"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["C6", "C7", "C8", "A14", "A15", "C10", "C11"],
|
||||
"rows": ["C12", "D2", "B3", "B4", "B5", "B6"]
|
||||
},
|
||||
"processor": "STM32F401",
|
||||
"url": "https://www.lemokey.com/products/lemokey-x0-qmk-wired-mechanical-gaming-keypad",
|
||||
"usb": {
|
||||
"device_version": "1.1.0",
|
||||
"pid": "0x0200",
|
||||
"vid": "0x362D"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [0, 2], "x": 3, "y": 0},
|
||||
{"matrix": [0, 3], "x": 4, "y": 0},
|
||||
{"matrix": [0, 4], "x": 5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 6, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1.25},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1.25},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1.25},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1.25},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1.25},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1.25},
|
||||
{"matrix": [1, 6], "x": 6, "y": 1.25},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
|
||||
{"matrix": [2, 1], "x": 1.5, "y": 2.25},
|
||||
{"matrix": [2, 2], "x": 2.5, "y": 2.25},
|
||||
{"matrix": [2, 3], "x": 3.5, "y": 2.25},
|
||||
{"matrix": [2, 4], "x": 4.5, "y": 2.25},
|
||||
{"matrix": [2, 5], "x": 5.5, "y": 2.25, "w": 1.5},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
|
||||
{"matrix": [3, 1], "x": 1.75, "y": 3.25},
|
||||
{"matrix": [3, 2], "x": 2.75, "y": 3.25},
|
||||
{"matrix": [3, 3], "x": 3.75, "y": 3.25},
|
||||
{"matrix": [3, 4], "x": 4.75, "y": 3.25},
|
||||
{"matrix": [3, 5], "x": 5.75, "y": 3.25, "w": 1.25},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
|
||||
{"matrix": [4, 2], "x": 2.25, "y": 4.25},
|
||||
{"matrix": [4, 3], "x": 3.25, "y": 4.25},
|
||||
{"matrix": [4, 4], "x": 4.25, "y": 4.25},
|
||||
{"matrix": [4, 5], "x": 5.25, "y": 4.25, "w": 1.75},
|
||||
{"matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.5},
|
||||
{"matrix": [5, 2], "x": 2.75, "y": 5.25},
|
||||
{"matrix": [5, 3], "x": 3.75, "y": 5.25},
|
||||
{"matrix": [5, 4], "x": 4.75, "y": 5.25},
|
||||
{"matrix": [5, 5], "x": 6, "y": 5.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
25
keyboards/keychron/x0/mcuconf.h
Normal file
25
keyboards/keychron/x0/mcuconf.h
Normal file
@ -0,0 +1,25 @@
|
||||
/* 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
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_PLLM_VALUE
|
||||
#define STM32_PLLM_VALUE 8
|
||||
|
||||
#undef STM32_I2C_USE_I2C1
|
||||
#define STM32_I2C_USE_I2C1 TRUE
|
23
keyboards/keychron/x0/readme.md
Normal file
23
keyboards/keychron/x0/readme.md
Normal file
@ -0,0 +1,23 @@
|
||||
# Lemokey X0
|
||||
|
||||

|
||||
|
||||
A one-handed gaming keypad.
|
||||
|
||||
* Keyboard Maintainer: [Keychron](https://github.com/keychron)
|
||||
* Hardware Supported: Lemokey X0
|
||||
* Hardware Availability: [Keychron](https://www.lemokey.com/products/lemokey-x0-qmk-wired-mechanical-gaming-keypad)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make keychron/x0/red:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make keychron/x0/red: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
|
||||
|
||||
To enter the bootloader, hold down the key located at **K00**, labelled and commonly programmed as **Esc**, while plugging in the keyboard.
|
25
keyboards/keychron/x0/red/config.h
Normal file
25
keyboards/keychron/x0/red/config.h
Normal file
@ -0,0 +1,25 @@
|
||||
/* 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
|
||||
|
||||
#ifdef LED_MATRIX_ENABLE
|
||||
# define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
|
||||
|
||||
# define SNLED27351_PHASE_CHANNEL SNLED27351_SCAN_PHASE_6_CHANNEL
|
||||
# define SNLED27351_CURRENT_TUNE \
|
||||
{ 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 }
|
||||
#endif
|
60
keyboards/keychron/x0/red/keyboard.json
Normal file
60
keyboards/keychron/x0/red/keyboard.json
Normal file
@ -0,0 +1,60 @@
|
||||
{
|
||||
"features": {
|
||||
"led_matrix": true
|
||||
},
|
||||
"led_matrix": {
|
||||
"animations": {
|
||||
"band_pinwheel": true,
|
||||
"band_spiral": true,
|
||||
"breathing": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_up_down": true,
|
||||
"dual_beacon": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_splash": true,
|
||||
"wave_left_right": true,
|
||||
"wave_up_down": true
|
||||
},
|
||||
"driver": "snled27351",
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 1], "x": 37, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 2], "x": 75, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 3], "x": 112, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 4], "x": 149, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 5], "x": 187, "y": 0, "flags": 1},
|
||||
{"matrix": [1, 0], "x": 0, "y": 13, "flags": 1},
|
||||
{"matrix": [1, 1], "x": 37, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 75, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 112, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 149, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 187, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 6], "x": 224, "y": 13, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 0, "y": 26, "flags": 1},
|
||||
{"matrix": [2, 1], "x": 37, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 75, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 112, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 149, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 187, "y": 26, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 0, "y": 38, "flags": 1},
|
||||
{"matrix": [3, 1], "x": 37, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 75, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 112, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 149, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 187, "y": 38, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 0, "y": 51, "flags": 1},
|
||||
{"matrix": [4, 2], "x": 75, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 112, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 149, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 187, "y": 51, "flags": 4},
|
||||
{"matrix": [5, 0], "x": 0, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 2], "x": 75, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 3], "x": 112, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 4], "x": 149, "y": 64, "flags": 1}
|
||||
],
|
||||
"sleep": true
|
||||
}
|
||||
}
|
41
keyboards/keychron/x0/red/keymaps/default/keymap.c
Normal file
41
keyboards/keychron/x0/red/keymaps/default/keymap.c
Normal file
@ -0,0 +1,41 @@
|
||||
/* 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
|
||||
|
||||
enum layers {
|
||||
WIN_BASE,
|
||||
WIN_FN,
|
||||
};
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[WIN_BASE] = LAYOUT(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V,
|
||||
KC_LCTL, KC_LALT, MO(WIN_FN), MO(WIN_FN), KC_SPC),
|
||||
|
||||
[WIN_FN] = LAYOUT(
|
||||
_______, KC_BRID, KC_BRIU, LGUI(KC_TAB), LGUI(KC_E), _______,
|
||||
_______, _______, _______, _______, _______, _______, _______,
|
||||
LM_TOGG, LM_PREV, LM_BRIU, LM_NEXT, _______, _______,
|
||||
_______, LM_SPDD, LM_BRID, LM_SPDU, _______, _______,
|
||||
_______, _______, _______, _______, NK_TOGG,
|
||||
_______, _______, _______, _______, _______),
|
||||
};
|
61
keyboards/keychron/x0/red/red.c
Normal file
61
keyboards/keychron/x0/red/red.c
Normal file
@ -0,0 +1,61 @@
|
||||
/* 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 LED_MATRIX_ENABLE
|
||||
// clang-format off
|
||||
const snled27351_led_t PROGMEM g_snled27351_leds[LED_MATRIX_LED_COUNT] = {
|
||||
/* Refer to SNLED27351 manual for these locations
|
||||
* driver
|
||||
* | LED address
|
||||
* | | */
|
||||
{0, CB6_CA1 },
|
||||
{0, CB6_CA2 },
|
||||
{0, CB6_CA3 },
|
||||
{0, CB6_CA4 },
|
||||
{0, CB6_CA5 },
|
||||
{0, CB6_CA6 },
|
||||
{0, CB5_CA1 },
|
||||
{0, CB5_CA2 },
|
||||
{0, CB5_CA3 },
|
||||
{0, CB5_CA4 },
|
||||
{0, CB5_CA5 },
|
||||
{0, CB5_CA6 },
|
||||
{0, CB5_CA7 },
|
||||
{0, CB4_CA1 },
|
||||
{0, CB4_CA2 },
|
||||
{0, CB4_CA3 },
|
||||
{0, CB4_CA4 },
|
||||
{0, CB4_CA5 },
|
||||
{0, CB4_CA6 },
|
||||
{0, CB3_CA1 },
|
||||
{0, CB3_CA2 },
|
||||
{0, CB3_CA3 },
|
||||
{0, CB3_CA4 },
|
||||
{0, CB3_CA5 },
|
||||
{0, CB3_CA6 },
|
||||
{0, CB2_CA1 },
|
||||
{0, CB2_CA3 },
|
||||
{0, CB2_CA4 },
|
||||
{0, CB2_CA5 },
|
||||
{0, CB2_CA6 },
|
||||
{0, CB1_CA1 },
|
||||
{0, CB1_CA3 },
|
||||
{0, CB1_CA4 },
|
||||
{0, CB1_CA5 },
|
||||
};
|
||||
#endif
|
600
keyboards/keycult/keycult60/keyboard.json
Executable file
600
keyboards/keycult/keycult60/keyboard.json
Executable file
@ -0,0 +1,600 @@
|
||||
{
|
||||
"keyboard_name": "Keycult 60",
|
||||
"manufacturer": "Yiancar-Designs",
|
||||
"url": "https://yiancar-designs.com",
|
||||
"maintainer": "Yiancar-Designs",
|
||||
"usb": {
|
||||
"vid": "0x8968",
|
||||
"pid": "0x6339",
|
||||
"device_version": "1.0.0"
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
"extrakey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "B6",
|
||||
"on_state": 0
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A1", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "B2", "B10", "B11", "B12", "B13", "B14"],
|
||||
"rows": ["A2", "B9", "B8", "B5", "B4"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"processor": "STM32F072",
|
||||
"bootloader": "stm32-dfu",
|
||||
"community_layouts": [
|
||||
"60_ansi",
|
||||
"60_ansi_split_bs_rshift",
|
||||
"60_ansi_tsangan",
|
||||
"60_ansi_tsangan_split_bs_rshift",
|
||||
"60_iso",
|
||||
"60_iso_split_bs_rshift",
|
||||
"60_iso_tsangan"
|
||||
],
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"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": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [2, 12], "x": 14, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi": {
|
||||
"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": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_split_bs_rshift": {
|
||||
"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": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [2, 12], "x": 14, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_tsangan": {
|
||||
"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": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso": {
|
||||
"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": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [1, 13], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_split_bs_rshift": {
|
||||
"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": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [2, 12], "x": 14, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [1, 13], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_tsangan": {
|
||||
"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": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [1, 13], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_tsangan_split_bs_rshift": {
|
||||
"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": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [2, 12], "x": 14, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
21
keyboards/keycult/keycult60/keycult60.c
Executable file
21
keyboards/keycult/keycult60/keycult60.c
Executable file
@ -0,0 +1,21 @@
|
||||
/* Copyright 2025 Yiancar-Designs
|
||||
*
|
||||
* 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"
|
||||
|
||||
void led_init_ports(void) {
|
||||
// Set our LED pins as open drain outputs
|
||||
gpio_set_pin_output_open_drain(LED_CAPS_LOCK_PIN);
|
||||
}
|
32
keyboards/keycult/keycult60/keymaps/default/keymap.c
Normal file
32
keyboards/keycult/keycult60/keymaps/default/keymap.c
Normal file
@ -0,0 +1,32 @@
|
||||
/* Copyright 2025 Yiancar-Designs
|
||||
*
|
||||
* 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_all( /* Base */
|
||||
QK_GESC, 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_DEL,
|
||||
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_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_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, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_APP, KC_RCTL),
|
||||
|
||||
[1] = LAYOUT_all( /* FN */
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_UP, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_END, KC_PGDN, KC_DOWN, KC_TRNS, KC_TRNS,
|
||||
KC_VOLU, KC_VOLD, KC_MUTE, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS)
|
||||
};
|
32
keyboards/keycult/keycult60/readme.md
Executable file
32
keyboards/keycult/keycult60/readme.md
Executable file
@ -0,0 +1,32 @@
|
||||
# Keycult 60
|
||||
|
||||
This is a standard 60% layout PCB.
|
||||
|
||||
* Keyboard Maintainer: [Yiancar](http://yiancar-designs.com/) and on [GitHub](https://github.com/yiancar)
|
||||
* Hardware Supported: A 60% keyboard with STM32F072CB
|
||||
* Hardware Availability: https://novelkeys.com/
|
||||
|
||||
## Instructions
|
||||
|
||||
### Build
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make keycult/keycult60:default
|
||||
|
||||
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).
|
||||
|
||||
### Reset
|
||||
|
||||
- Unplug
|
||||
- Hold Escape
|
||||
- Plug In
|
||||
- Unplug
|
||||
- Release Escape
|
||||
|
||||
### Flash
|
||||
|
||||
- Unplug
|
||||
- Hold Escape
|
||||
- Plug In
|
||||
- Flash using QMK Toolbox or CLI (`make keycult/keycult60:<keymap>:flash`)
|
2
keyboards/keycult/keycult60/rules.mk
Normal file
2
keyboards/keycult/keycult60/rules.mk
Normal file
@ -0,0 +1,2 @@
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
@ -49,7 +49,8 @@
|
||||
"pin": "A7"
|
||||
},
|
||||
"layout_aliases": {
|
||||
"LAYOUT_all": "LAYOUT_60_ansi_split_bs_rshift"
|
||||
"LAYOUT_all": "LAYOUT_60_ansi_split_bs_rshift",
|
||||
"LAYOUT_60_tsangan_hhkb": "LAYOUT_60_ansi_tsangan_split_bs_rshift"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_60_ansi": {
|
||||
@ -250,7 +251,7 @@
|
||||
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_tsangan_hhkb": {
|
||||
"LAYOUT_60_ansi_tsangan_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
@ -312,7 +313,7 @@
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12, "y": 4},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
}
|
||||
|
10
keyboards/mzmkb/slimdash/info.json
Normal file
10
keyboards/mzmkb/slimdash/info.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"manufacturer": "mzmkb",
|
||||
"maintainer": "mizma",
|
||||
"bootloader": "rp2040",
|
||||
"processor": "RP2040",
|
||||
"split": {
|
||||
"enabled": true
|
||||
},
|
||||
"url": "https://github.com/mizma/slimdash"
|
||||
}
|
41
keyboards/mzmkb/slimdash/readme.md
Normal file
41
keyboards/mzmkb/slimdash/readme.md
Normal file
@ -0,0 +1,41 @@
|
||||
# Slimdash
|
||||
|
||||

|
||||
|
||||
__SlimDash__ is a slim low profile split ortho-staggered keyboard inspired by omkbd/ErgoDash
|
||||
with following key highlights:
|
||||
|
||||
* Ortho-Staggered Split keyboard layout
|
||||
* Slim body (20-22mm depending on key caps and rubber feet used)
|
||||
* Rigid body structure
|
||||
* Per-Key RGB LED Matrix lighting
|
||||
* USB-C connector
|
||||
* Easy build utilizing PCBA service for the harder SMT components
|
||||
* Keyboard Maintainer: [mizma](https://github.com/mizma)
|
||||
* Hardware Supported: [SlimDash](https://github.com/mizma/SlimDash/)
|
||||
* Hardware Availability: Build your own using design data at [SlimDash](https://github.com/mizma/SlimDash/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make mzmkb/slimdash/rev1:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make mzmkb/slimdash/rev1:default:flash
|
||||
|
||||
You may also enter Bootloader on your keyboard, and copy the `mzmkb_slimdash_*_*.uf2`
|
||||
file into the `RPI-RP2` drive shown in your PC.
|
||||
|
||||
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:
|
||||
|
||||
* __Reset button__: Double-tap the RESET button on the side of the keyboard near
|
||||
TRRS jack.
|
||||
* __Physical reset button__: Hold BOOT_SW and press RESET on the side of the keyboard
|
||||
near TRRS jack.
|
||||
* __Keycode in layout__: Press the key mapped to `QK_BOOT` if it is available
|
28
keyboards/mzmkb/slimdash/rev1/config.h
Normal file
28
keyboards/mzmkb/slimdash/rev1/config.h
Normal file
@ -0,0 +1,28 @@
|
||||
/* Copyright 2025 mizma (@mizma)
|
||||
*
|
||||
* 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
|
||||
|
||||
// Make it easier to enter the bootloader
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
|
||||
|
||||
// UART1, communication between the two halves
|
||||
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode
|
||||
#define SERIAL_USART_TX_PIN GP17 // USART TX pin
|
||||
#define SERIAL_USART_RX_PIN GP18 // USART RX pin
|
||||
#define SERIAL_PIO_USE_PIO1 // Use PIO1 as PIO0 is used for WS2812 driver
|
||||
|
239
keyboards/mzmkb/slimdash/rev1/keyboard.json
Normal file
239
keyboards/mzmkb/slimdash/rev1/keyboard.json
Normal file
@ -0,0 +1,239 @@
|
||||
{
|
||||
"keyboard_name": "slimdash rev1.0",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true,
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP0", "GP1", "GP3", "GP5", "GP8", "GP7", "GP9"],
|
||||
"rows": ["GP2", "GP4", "GP6", "GP11", "GP10"]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"digital_rain": true,
|
||||
"dual_beacon": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"multisplash": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"solid_color": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"matrix": [3, 6], "x": 105, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 6], "x": 105, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 90, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 75, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 45, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 30, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 15, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 0, "y": 51, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 0, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 1], "x": 15, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 30, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 45, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 60, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 75, "y": 38, "flags": 4},
|
||||
{"matrix": [2, 6], "x": 90, "y": 26, "flags": 4},
|
||||
{"matrix": [1, 6], "x": 90, "y": 13, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 75, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 60, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 45, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 30, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 15, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 0, "y": 26, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 0, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 15, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 30, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 45, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 60, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 75, "y": 13, "flags": 4},
|
||||
{"matrix": [0, 6], "x": 90, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 75, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 60, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 45, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 30, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 15, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
|
||||
{"matrix": [8, 6], "x": 119, "y": 51, "flags": 4},
|
||||
{"matrix": [9, 6], "x": 119, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 5], "x": 134, "y": 51, "flags": 4},
|
||||
{"matrix": [9, 4], "x": 149, "y": 51, "flags": 4},
|
||||
{"matrix": [9, 3], "x": 179, "y": 51, "flags": 4},
|
||||
{"matrix": [9, 2], "x": 194, "y": 51, "flags": 4},
|
||||
{"matrix": [9, 1], "x": 209, "y": 51, "flags": 4},
|
||||
{"matrix": [9, 0], "x": 224, "y": 51, "flags": 4},
|
||||
{"matrix": [8, 0], "x": 224, "y": 38, "flags": 4},
|
||||
{"matrix": [8, 1], "x": 209, "y": 38, "flags": 4},
|
||||
{"matrix": [8, 2], "x": 194, "y": 38, "flags": 4},
|
||||
{"matrix": [8, 3], "x": 179, "y": 38, "flags": 4},
|
||||
{"matrix": [8, 4], "x": 164, "y": 38, "flags": 4},
|
||||
{"matrix": [8, 5], "x": 149, "y": 38, "flags": 4},
|
||||
{"matrix": [7, 6], "x": 134, "y": 26, "flags": 4},
|
||||
{"matrix": [6, 6], "x": 134, "y": 13, "flags": 4},
|
||||
{"matrix": [7, 5], "x": 149, "y": 26, "flags": 4},
|
||||
{"matrix": [7, 4], "x": 164, "y": 26, "flags": 4},
|
||||
{"matrix": [7, 3], "x": 179, "y": 26, "flags": 4},
|
||||
{"matrix": [7, 2], "x": 194, "y": 26, "flags": 4},
|
||||
{"matrix": [7, 1], "x": 209, "y": 26, "flags": 4},
|
||||
{"matrix": [7, 0], "x": 224, "y": 26, "flags": 4},
|
||||
{"matrix": [6, 0], "x": 224, "y": 13, "flags": 4},
|
||||
{"matrix": [6, 1], "x": 209, "y": 13, "flags": 4},
|
||||
{"matrix": [6, 2], "x": 194, "y": 13, "flags": 4},
|
||||
{"matrix": [6, 3], "x": 179, "y": 13, "flags": 4},
|
||||
{"matrix": [6, 4], "x": 164, "y": 13, "flags": 4},
|
||||
{"matrix": [6, 5], "x": 149, "y": 13, "flags": 4},
|
||||
{"matrix": [5, 6], "x": 134, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 5], "x": 149, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 4], "x": 164, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 3], "x": 179, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 2], "x": 194, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 1], "x": 209, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 0], "x": 224, "y": 0, "flags": 4}
|
||||
],
|
||||
"max_brightness": 128,
|
||||
"sleep": true,
|
||||
"split_count": [35, 35]
|
||||
},
|
||||
"split": {
|
||||
"matrix_pins": {
|
||||
"right": {
|
||||
"cols": ["GP0", "GP1", "GP3", "GP5", "GP8", "GP7", "GP9"],
|
||||
"rows": ["GP2", "GP4", "GP6", "GP11", "GP10"]
|
||||
}
|
||||
},
|
||||
"serial": {
|
||||
"driver": "vendor"
|
||||
},
|
||||
"transport": {
|
||||
"sync": {
|
||||
"matrix_state": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x7344",
|
||||
"vid": "0x4D5A"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP20"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0.375},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0.375},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0.125},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0.125},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0.25},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0.75},
|
||||
{"matrix": [5, 6], "x": 11.5, "y": 0.75},
|
||||
{"matrix": [5, 5], "x": 12.5, "y": 0.25},
|
||||
{"matrix": [5, 4], "x": 13.5, "y": 0.125},
|
||||
{"matrix": [5, 3], "x": 14.5, "y": 0},
|
||||
{"matrix": [5, 2], "x": 15.5, "y": 0.125},
|
||||
{"matrix": [5, 1], "x": 16.5, "y": 0.375},
|
||||
{"matrix": [5, 0], "x": 17.5, "y": 0.375},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1.375},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1.375},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1.125},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1.125},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1.25},
|
||||
{"matrix": [1, 6], "x": 6, "y": 1.75},
|
||||
{"matrix": [6, 6], "x": 11.5, "y": 1.75},
|
||||
{"matrix": [6, 5], "x": 12.5, "y": 1.25},
|
||||
{"matrix": [6, 4], "x": 13.5, "y": 1.125},
|
||||
{"matrix": [6, 3], "x": 14.5, "y": 1},
|
||||
{"matrix": [6, 2], "x": 15.5, "y": 1.125},
|
||||
{"matrix": [6, 1], "x": 16.5, "y": 1.375},
|
||||
{"matrix": [6, 0], "x": 17.5, "y": 1.375},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2.375},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2.375},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2.125},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2.125},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2.25},
|
||||
{"matrix": [2, 6], "x": 6, "y": 2.75},
|
||||
{"matrix": [7, 6], "x": 11.5, "y": 2.75},
|
||||
{"matrix": [7, 5], "x": 12.5, "y": 2.25},
|
||||
{"matrix": [7, 4], "x": 13.5, "y": 2.125},
|
||||
{"matrix": [7, 3], "x": 14.5, "y": 2},
|
||||
{"matrix": [7, 2], "x": 15.5, "y": 2.125},
|
||||
{"matrix": [7, 1], "x": 16.5, "y": 2.375},
|
||||
{"matrix": [7, 0], "x": 17.5, "y": 2.375},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3.375},
|
||||
{"matrix": [3, 1], "x": 1, "y": 3.375},
|
||||
{"matrix": [3, 2], "x": 2, "y": 3.125},
|
||||
{"matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4, "y": 3.125},
|
||||
{"matrix": [3, 5], "x": 5, "y": 3.25},
|
||||
{"matrix": [3, 6], "x": 7.25, "y": 4},
|
||||
{"matrix": [8, 6], "x": 10.25, "y": 4},
|
||||
{"matrix": [8, 5], "x": 12.5, "y": 3.25},
|
||||
{"matrix": [8, 4], "x": 13.5, "y": 3.125},
|
||||
{"matrix": [8, 3], "x": 14.5, "y": 3},
|
||||
{"matrix": [8, 2], "x": 15.5, "y": 3.125},
|
||||
{"matrix": [8, 1], "x": 16.5, "y": 3.375},
|
||||
{"matrix": [8, 0], "x": 17.5, "y": 3.375},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4.375},
|
||||
{"matrix": [4, 1], "x": 1, "y": 4.375},
|
||||
{"matrix": [4, 2], "x": 2, "y": 4.125},
|
||||
{"matrix": [4, 3], "x": 3, "y": 4},
|
||||
{"matrix": [4, 4], "x": 5.25, "y": 5},
|
||||
{"matrix": [4, 5], "x": 6.25, "y": 4, "h": 2},
|
||||
{"matrix": [4, 6], "x": 7.25, "y": 5},
|
||||
{"matrix": [9, 6], "x": 10.25, "y": 5},
|
||||
{"matrix": [9, 5], "x": 11.25, "y": 4, "h": 2},
|
||||
{"matrix": [9, 4], "x": 12.25, "y": 5},
|
||||
{"matrix": [9, 3], "x": 14.5, "y": 4},
|
||||
{"matrix": [9, 2], "x": 15.5, "y": 4.125},
|
||||
{"matrix": [9, 1], "x": 16.5, "y": 4.375},
|
||||
{"matrix": [9, 0], "x": 17.5, "y": 4.375}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
126
keyboards/mzmkb/slimdash/rev1/keymaps/default/keymap.c
Normal file
126
keyboards/mzmkb/slimdash/rev1/keymaps/default/keymap.c
Normal file
@ -0,0 +1,126 @@
|
||||
/* Copyright 2025 mizma (@mizma)
|
||||
*
|
||||
* 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 layer_names {
|
||||
_QWERTY,
|
||||
_GAMEMODE,
|
||||
_LOWER,
|
||||
_RAISE
|
||||
};
|
||||
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
#define GAMEM TG(_GAMEMODE)
|
||||
|
||||
#define EISU LALT(KC_GRV)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
/* Qwerty
|
||||
* ,------------------------------------------------. .------------------------------------------------.
|
||||
* | ESC | 1 | 2 | 3 | 4 | 5 | - | | = | 6 | 7 | 8 | 9 | 0 | Bksp |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | [ | | ] | Y | U | I | O | P | \ |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | LCTL | A | S | D | F | G | Del | | Ins | H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------+------. .------+------+------+------+------+------+------|
|
||||
* | LSFT | Z | X | C | V | B | | N | M | , | . | / | RSFT |
|
||||
* |------+------+------+------+------+--+---+--+------. .------+--+---+--+------+------+------+------+------|
|
||||
* | RM_DN| RM_UP| GAMEM| GUI | | | LALT | | RALT | | | HOME | END |PageUp|PageDn|
|
||||
* .---------------------------. .------| Space|------| |------| Enter|------. .---------------------------.
|
||||
* | Lower| | LSFT | | RCTL | | Raise|
|
||||
* .--------------------. .--------------------.
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_MINS, KC_EQL, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_LBRC, KC_RBRC, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSLS,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_DEL , KC_INS, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LALT, KC_RALT, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
RM_VALD, RM_VALU, GAMEM, KC_LGUI, LOWER, KC_SPC, KC_LSFT, KC_RCTL, KC_ENT, RAISE, KC_HOME, KC_END, KC_PGUP, KC_PGDN
|
||||
),
|
||||
|
||||
/* Game Mode Toggle: sample toggle layer. turn off GUI key and add arrows
|
||||
* ,------------------------------------------------. .------------------------------------------------.
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------+------. .------+------+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+--+---+--+------. .------+--+---+--+------+------+------+------+------|
|
||||
* | | | | NOOP | | | | | | | | ← | ↓ | ↑ | → |
|
||||
* .---------------------------. .------| |------| |------| |------. .---------------------------.
|
||||
* | | | | | | | |
|
||||
* .--------------------. .--------------------.
|
||||
*/
|
||||
[_GAMEMODE] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, KC_NO, _______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
|
||||
),
|
||||
|
||||
/* Lower: NUMPAD, App/Media keys and RGM Matrix
|
||||
* ,------------------------------------------------. .------------------------------------------------.
|
||||
* | ` | | | | | Mute | Vol- | | Vol+ | | NumL | / | * | - | |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | | | | |RGBTGL| | BrDn | | BrUp | | 7 | 8 | 9 | + | |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | CAPS | | |RM_HUD|RM_HUU| |RM_PRV| |RM_NXT| | 4 | 5 | 6 | , | |
|
||||
* |------+------+------+------+------+------+------. .------+------+------+------+------+------+------|
|
||||
* | | | |RM_SPD|RM_SPU| | | | 1 | 2 | 3 | = | |
|
||||
* |------+------+------+------+------+--+---+--+------. .------+--+---+--+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | 0 | . | | |
|
||||
* .---------------------------. .------| |------| |------| PENT |------. .---------------------------.
|
||||
* | | | | | | | |
|
||||
* .--------------------. .--------------------.
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
KC_GRV, _______, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS, _______,
|
||||
_______, _______, _______, _______, RM_TOGG, _______, KC_BRID, KC_BRIU, _______, KC_P7, KC_P8, KC_P9, KC_PPLS, _______,
|
||||
KC_CAPS, _______, _______, RM_HUED, RM_HUEU, _______, RM_PREV, RM_NEXT, _______, KC_P4, KC_P5, KC_P6, KC_PCMM, _______,
|
||||
_______, _______, _______, RM_SPDD, RM_SPDU, _______, _______, _______, _______, KC_P1, KC_P2, KC_P3, KC_PEQL, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, KC_PENT, _______, KC_P0, KC_PDOT, _______, _______
|
||||
),
|
||||
|
||||
/* Raise: Functions and Mouse
|
||||
* ,------------------------------------------------. .------------------------------------------------.
|
||||
* | ` | F1 | F2 | F3 | F4 | F5 | | | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | | | |WheelL|WheelR| | | | | | | Pause|ScrolL| PrnSc| F12 |
|
||||
* |------+------+------+------+------+------+------| |------+------+------+------+------+------+------|
|
||||
* | CAPS | |Mouse3|Mouse2|Mouse1|WheelU| | | | ← | ↓ | ↑ | → | | |
|
||||
* |------+------+------+------+------+------+------. .------+------+------+------+------+------+------|
|
||||
* | |Accel0|Accel1|Accel2| |WheelD| |MouseL|MouseD|MouseU|MouseR| | |
|
||||
* |------+------+------+------+------+--+---+--+------. .------+--+---+--+------+------+------+------+------|
|
||||
* | | | | | | | | | | | | | | | |
|
||||
* .---------------------------. .------| |------| |------| |------. .---------------------------.
|
||||
* | | | | | | | |
|
||||
* .--------------------. .--------------------.
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, _______, _______, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
_______, _______, _______, MS_WHLL, MS_WHLR, _______, _______, _______, _______, _______, KC_PAUS, KC_SCRL, KC_PSCR, KC_F12,
|
||||
KC_CAPS, _______, MS_BTN3, MS_BTN2, MS_BTN1, MS_WHLU, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, _______, _______,
|
||||
_______, MS_ACL0, MS_ACL1, MS_ACL2, _______, MS_WHLD, _______, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
@ -67,7 +67,7 @@ enum sofle_layers {
|
||||
_DEFAULTS = 0,
|
||||
_QWERTY = 0,
|
||||
_COLEMAK,
|
||||
_COLEMAKDH,
|
||||
_COLEMAKDH,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
@ -87,231 +87,62 @@ enum custom_keycodes {
|
||||
#define KC_COLEMAKDH PDF(_COLEMAKDH)
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/*
|
||||
* QWERTY
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | TAB | Q | W | E | R | T | | Y | U | I | O | P | Bspc |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* |LShift| A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------| MUTE | |DISCORD|------+------+------+------+------+------|
|
||||
* | LCTR | Z | X | C | V | B |-------| |-------| N | M | , | . | / |LShift|
|
||||
* `-----------------------------------------/ / \ \-----------------------------------------'
|
||||
* | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
|
||||
* | | | | |/ / \ \ | | | | |
|
||||
* `----------------------------------' '------''---------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
//,------------------------------------------------. ,---------------------------------------------------.
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, KC_GRV,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
LT(_NUMPAD,KC_TAB),KC_Q,KC_W,KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_D_MUTE,KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
KC_BSPC, KC_LGUI, KC_LOWER, KC_SPC, KC_ENT , KC_SPC, KC_ENT , KC_RAISE, KC_RCTL, KC_RALT
|
||||
// \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, KC_GRV,
|
||||
LT(_NUMPAD,KC_TAB),KC_Q,KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LSFT, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LCTL, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_D_MUTE, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT,
|
||||
KC_BSPC, KC_LGUI, KC_LOWER, KC_SPC, KC_ENT, KC_SPC, KC_ENT, KC_RAISE,KC_RCTL, KC_RALT
|
||||
),
|
||||
|
||||
/*
|
||||
* COLEMAK
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | TAB | Q | W | F | P | G | | J | L | U | Y | ; | Bspc |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* |LShift| A | R | S | T | D |-------. ,-------| H | N | E | I | O | ' |
|
||||
* |------+------+------+------+------+------| MUTE | |DISCORD|------+------+------+------+------+------|
|
||||
* | LCTR | Z | X | C | V | B |-------| |-------| K | M | , | . | / |LShift|
|
||||
* `-----------------------------------------/ / \ \-----------------------------------------'
|
||||
* | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
|
||||
* | | | | |/ / \ \ | | | | |
|
||||
* `----------------------------------' '------''---------------------------'
|
||||
*/
|
||||
[_COLEMAK] = LAYOUT(
|
||||
//,------------------------------------------------. ,---------------------------------------------------.
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
KC_TRNS, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TRNS,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
KC_TRNS, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, KC_TRNS,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
KC_TRNS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_TRNS, KC_TRNS,KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
// \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, _______,
|
||||
_______, KC_Q, KC_W, KC_F, KC_P, KC_G, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, _______,
|
||||
_______, KC_A, KC_R, KC_S, KC_T, KC_D, KC_H, KC_N, KC_E, KC_I, KC_O, _______,
|
||||
_______, KC_Z, KC_X, KC_C, KC_V, KC_B, _______, _______, KC_K, KC_M, KC_COMM, KC_DOT, KC_SLSH, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
* COLEMAK-DH
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | TAB | Q | W | F | P | B | | J | L | U | Y | ; | Bspc |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* |LShift| A | R | S | T | G |-------. ,-------| M | N | E | I | O | ' |
|
||||
* |------+------+------+------+------+------| MUTE | |DISCORD|------+------+------+------+------+------|
|
||||
* | LCTR | Z | X | C | D | V |-------| |-------| K | H | , | . | / |LShift|
|
||||
* `-----------------------------------------/ / \ \-----------------------------------------'
|
||||
* | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
|
||||
* | | | | |/ / \ \ | | | | |
|
||||
* `----------------------------------' '------''---------------------------'
|
||||
*/
|
||||
[_COLEMAKDH] = LAYOUT(
|
||||
//,------------------------------------------------. ,---------------------------------------------------.
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
KC_TRNS, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, KC_TRNS,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
KC_TRNS, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, KC_TRNS,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
KC_TRNS, KC_Z, KC_X, KC_C, KC_D, KC_V, KC_TRNS, KC_TRNS,KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, KC_TRNS,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
// \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
|
||||
_______, KC_1, KC_2, KC_3, KC_4, KC_5, LT(_SWITCH,KC_6), KC_7, KC_8, KC_9, KC_0, _______,
|
||||
_______, KC_Q, KC_W, KC_F, KC_P, KC_B, KC_J, KC_L, KC_U, KC_Y, KC_SCLN, _______,
|
||||
_______, KC_A, KC_R, KC_S, KC_T, KC_G, KC_M, KC_N, KC_E, KC_I, KC_O, _______,
|
||||
_______, KC_Z, KC_X, KC_C, KC_D, KC_V, _______, _______, KC_K, KC_H, KC_COMM, KC_DOT, KC_SLSH, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/* LOWER
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | trans| F1 | F2 | F3 | F4 | F5 | | F6 | F7 | F8 | F9 | F10 | F11 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | trans| ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | | |
|
||||
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
|
||||
* | trans| = | - | + | { | } |-------| |-------| [ | ] | ; | : | \ | Shift|
|
||||
* `-----------------------------------------/ / \ \-----------------------------------------'
|
||||
* | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE |RAISE | RCTR | RAlt |
|
||||
* | | | | |/ / \ \ | | | | |
|
||||
* `----------------------------------' '------''---------------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
//,------------------------------------------------. ,---------------------------------------------------.
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
_______, KC_NO, KC_NO, KC_NO, KC_WH_U, KC_PGUP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, KC_NO, KC_DEL,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
_______, KC_NO, KC_NO, KC_NO, KC_WH_D, KC_PGDN,_______, _______,KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, _______,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
// \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_U, KC_PGUP, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, KC_DEL,
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, KC_WH_D, KC_PGDN, _______, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
/* RAISE
|
||||
* ,----------------------------------------. ,-----------------------------------------.
|
||||
* | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Esc | Ins | Pscr | Menu | | | | | PWrd | Up | NWrd | DLine| Bspc |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | LAt | LCtl |LShift| | Caps |-------. ,-------| | Left | Down | Rigth| Del | Bspc |
|
||||
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
|
||||
* |Shift | Undo | Cut | Copy | Paste| |-------| |-------| | LStr | | LEnd | | Shift|
|
||||
* `-----------------------------------------/ / \ \-----------------------------------------'
|
||||
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
|
||||
* | | | | |/ / \ \ | | | | |
|
||||
* `----------------------------------' '------''---------------------------'
|
||||
*/
|
||||
[_RAISE] = LAYOUT(
|
||||
//,------------------------------------------------. ,---------------------------------------------------.
|
||||
_______, _______ , _______ , _______ , _______ , _______, _______, _______ , _______, _______ , _______ ,_______,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
_______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_CIRC, KC_AMPR,KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
_______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
_______,KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX,_______, _______,KC_UNDS, KC_PLUS,KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
// \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_INS, KC_PSCR, KC_APP, XXXXXXX, XXXXXXX, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||
_______, KC_LALT, KC_LCTL, KC_LSFT, XXXXXXX, KC_CAPS, KC_MINS, KC_EQL, KC_LCBR, KC_RCBR, KC_PIPE, KC_GRV,
|
||||
_______, KC_UNDO, KC_CUT, KC_COPY, KC_PASTE, XXXXXXX, _______, _______, KC_UNDS, KC_PLUS, KC_LBRC, KC_RBRC, KC_BSLS, KC_TILD,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
/* ADJUST
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | QK_BOOT| | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* |UG_TOGG|hue^ |sat ^ | bri ^| |COLEMAK|-------. ,-------|desk <| | |desk >| | |
|
||||
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
|
||||
* | mode | hue dn|sat d|bri dn| |QWERTY|-------| |-------| | PREV | PLAY | NEXT | | |
|
||||
* `-----------------------------------------/ / \ \-----------------------------------------'
|
||||
* | LGUI | LAlt | LCTR |LOWER | /Enter / \Space \ |RAISE | RCTR | RAlt | RGUI |
|
||||
* | | | | |/ / \ \ | | | | |
|
||||
* `----------------------------------' '------''---------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
//,------------------------------------------------. ,---------------------------------------------------.
|
||||
EE_CLR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
QK_BOOT, XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
UG_TOGG, UG_HUEU,UG_SATU, UG_VALU, KC_COLEMAKDH,KC_COLEMAK, C(G(KC_LEFT)),KC_NO,KC_NO,C(G(KC_RGHT)),XXXXXXX, XXXXXXX,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
UG_NEXT, UG_HUED,UG_SATD, UG_VALD, XXXXXXX,KC_QWERTY,XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
// \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
|
||||
[_ADJUST] = LAYOUT(
|
||||
EE_CLR, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
UG_TOGG, UG_HUEU, UG_SATU, UG_VALU,KC_COLEMAKDH,KC_COLEMAK, C(G(KC_LEFT)), XXXXXXX, XXXXXXX,C(G(KC_RGHT)),XXXXXXX,XXXXXXX,
|
||||
UG_NEXT, UG_HUED, UG_SATD, UG_VALD, XXXXXXX,KC_QWERTY,XXXXXXX, XXXXXXX, XXXXXXX, KC_MPRV, KC_MPLY, KC_MNXT, XXXXXXX, XXXXXXX,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
/* NUMPAD
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | trans| | | | | | | |NumLck| | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | ` | | | | | | | ^ | 7 | 8 | 9 | * | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | trans| | | | | |-------. ,-------| - | 4 | 5 | 6 | | | |
|
||||
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
|
||||
* | trans| | | | | |-------| |-------| + | 1 | 2 | 3 | \ | Shift|
|
||||
* `-----------------------------------------/ / \ \-----------------------------------------'
|
||||
* | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE | 0 | . | RAlt |
|
||||
* | | | | |/ / \ \ | | | | |
|
||||
* `----------------------------------' '------''---------------------------'
|
||||
*/
|
||||
[_NUMPAD] = LAYOUT(
|
||||
//,------------------------------------------------. ,---------------------------------------------------.
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_NUM, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CIRC, KC_P7, KC_P8, KC_P9, KC_ASTR, XXXXXXX,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_P4, KC_P5, KC_P6, KC_EQL, KC_PIPE,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,_______, _______,KC_PLUS, KC_P1, KC_P2, KC_P3, KC_SLSH, _______,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
_______, OSM(MOD_MEH), _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______
|
||||
// \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, KC_NUM, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_CIRC, KC_P7, KC_P8, KC_P9, KC_ASTR, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_P4, KC_P5, KC_P6, KC_EQL, KC_PIPE,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, _______, _______, KC_PLUS, KC_P1, KC_P2, KC_P3, KC_SLSH, _______,
|
||||
_______, OSM(MOD_MEH), _______, _______, _______, _______, _______, KC_P0, KC_PDOT, _______
|
||||
),
|
||||
|
||||
/* SWITCH
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | qwer | cole |col_dh| low | raise| adj | |numpad| | | | |QK_BOOT |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | | | | | | |-------. ,-------| | | | | |EE_CLR|
|
||||
* |------+------+------+------+------+------| MUTE | | |------+------+------+------+------+------|
|
||||
* | SLEEP| | | | | |-------| |-------| | | | | | |
|
||||
* `-----------------------------------------/ / \ \-----------------------------------------'
|
||||
* | Bspc | WIN |LOWER | Enter| /Space / \Enter \ |SPACE | 0 | . | RAlt |
|
||||
* | | | | |/ / \ \ | | | | |
|
||||
* `----------------------------------' '------''---------------------------'
|
||||
*/
|
||||
// layer switcher
|
||||
[_SWITCH] = LAYOUT(
|
||||
//,------------------------------------------------. ,---------------------------------------------------.
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,XXXXXXX, XXXXXXX,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), TO(6), KC_NO, KC_NO, KC_NO, KC_NO, QK_BOOT,
|
||||
//|------+-------+--------+--------+--------+------| |--------+-------+--------+--------+--------+---------|
|
||||
KC_NO, KC_NO, KC_BRIU, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, EE_CLR,
|
||||
//|------+-------+--------+--------+--------+------| === | | === |--------+-------+--------+--------+--------+---------|
|
||||
KC_SYSTEM_SLEEP,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
|
||||
// \--------+--------+--------+---------+-------| |--------+---------+--------+---------+-------/
|
||||
|
||||
),
|
||||
_______, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
TO(0), TO(1), TO(2), TO(3), TO(4), TO(5), TO(6), XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, QK_BOOT,
|
||||
XXXXXXX, XXXXXXX, KC_BRIU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, EE_CLR,
|
||||
KC_SYSTEM_SLEEP,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX,XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX
|
||||
),
|
||||
};
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
|
1
keyboards/spleeb/rules.mk
Normal file
1
keyboards/spleeb/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
POINTING_DEVICE_DRIVER = cirque_pinnacle_i2c
|
@ -8,6 +8,10 @@
|
||||
# include "print.h"
|
||||
#endif // CONSOLE_ENABLE
|
||||
|
||||
#ifdef POINTING_DEVICE_ENABLE
|
||||
# include "drivers/sensors/cirque_pinnacle_gestures.h"
|
||||
#endif // POINTING_DEVICE_ENABLE
|
||||
|
||||
#if defined(POINTING_DEVICE_ENABLE) || defined(SPLEEB_ENCODER_MODE_MAP_ENABLE)
|
||||
typedef union {
|
||||
uint16_t raw;
|
||||
|
@ -54,31 +54,16 @@
|
||||
]
|
||||
],
|
||||
"config": {
|
||||
"features": {
|
||||
"oled": true,
|
||||
"rgb_matrix": true,
|
||||
"rgblight": false
|
||||
"mousekey": {
|
||||
"interval": 16,
|
||||
"time_to_max": 40,
|
||||
"delay": 100,
|
||||
"wheel_delay": 100
|
||||
},
|
||||
"encoder": {
|
||||
"enabled": true
|
||||
},
|
||||
"rgblight": {
|
||||
"hue_steps": 8,
|
||||
"saturation_steps": 8,
|
||||
"brightness_steps": 8,
|
||||
"sleep": true
|
||||
"tapping": {
|
||||
"term": 200,
|
||||
"permissive_hold": true,
|
||||
"force_hold": true
|
||||
}
|
||||
},
|
||||
"mouse_key": {
|
||||
"enabled": true,
|
||||
"interval": 16,
|
||||
"time_to_max": 40,
|
||||
"delay": 100,
|
||||
"wheel_delay": 100
|
||||
},
|
||||
"tapping": {
|
||||
"term": 200,
|
||||
"permissive_hold": true,
|
||||
"force_hold": true
|
||||
}
|
||||
}
|
||||
|
80
keyboards/splitkb/halcyon/elora/info.json
Normal file
80
keyboards/splitkb/halcyon/elora/info.json
Normal file
@ -0,0 +1,80 @@
|
||||
{
|
||||
"manufacturer": "splitkb.com",
|
||||
"maintainer": "splitkb",
|
||||
"url": "https://splitkb.com",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"vid": "0x8D1D"
|
||||
},
|
||||
"layout_aliases": {
|
||||
"LAYOUT": "LAYOUT_split_4x6_5"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_split_4x6_5": {
|
||||
"layout": [
|
||||
{"label": "L06", "matrix": [0, 6], "x": 0, "y": 0.75},
|
||||
{"label": "L05", "matrix": [0, 5], "x": 1, "y": 0.75},
|
||||
{"label": "L04", "matrix": [0, 4], "x": 2, "y": 0.25},
|
||||
{"label": "L03", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "L02", "matrix": [0, 2], "x": 4, "y": 0.25},
|
||||
{"label": "L01", "matrix": [0, 1], "x": 5, "y": 0.5},
|
||||
{"label": "R01", "matrix": [5, 1], "x": 10.5, "y": 0.5},
|
||||
{"label": "R02", "matrix": [5, 2], "x": 11.5, "y": 0.25},
|
||||
{"label": "R03", "matrix": [5, 3], "x": 12.5, "y": 0},
|
||||
{"label": "R04", "matrix": [5, 4], "x": 13.5, "y": 0.25},
|
||||
{"label": "R05", "matrix": [5, 5], "x": 14.5, "y": 0.75},
|
||||
{"label": "R06", "matrix": [5, 6], "x": 15.5, "y": 0.75},
|
||||
{"label": "L12", "matrix": [1, 6], "x": 0, "y": 1.75},
|
||||
{"label": "L11", "matrix": [1, 5], "x": 1, "y": 1.75},
|
||||
{"label": "L10", "matrix": [1, 4], "x": 2, "y": 1.25},
|
||||
{"label": "L09", "matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"label": "L08", "matrix": [1, 2], "x": 4, "y": 1.25},
|
||||
{"label": "L07", "matrix": [1, 1], "x": 5, "y": 1.5},
|
||||
{"label": "R07", "matrix": [6, 1], "x": 10.5, "y": 1.5},
|
||||
{"label": "R08", "matrix": [6, 2], "x": 11.5, "y": 1.25},
|
||||
{"label": "R09", "matrix": [6, 3], "x": 12.5, "y": 1},
|
||||
{"label": "R10", "matrix": [6, 4], "x": 13.5, "y": 1.25},
|
||||
{"label": "R11", "matrix": [6, 5], "x": 14.5, "y": 1.75},
|
||||
{"label": "R12", "matrix": [6, 6], "x": 15.5, "y": 1.75},
|
||||
{"label": "L18", "matrix": [2, 6], "x": 0, "y": 2.75},
|
||||
{"label": "L17", "matrix": [2, 5], "x": 1, "y": 2.75},
|
||||
{"label": "L16", "matrix": [2, 4], "x": 2, "y": 2.25},
|
||||
{"label": "L15", "matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"label": "L14", "matrix": [2, 2], "x": 4, "y": 2.25},
|
||||
{"label": "L13", "matrix": [2, 1], "x": 5, "y": 2.5},
|
||||
{"label": "R13", "matrix": [7, 1], "x": 10.5, "y": 2.5},
|
||||
{"label": "R14", "matrix": [7, 2], "x": 11.5, "y": 2.25},
|
||||
{"label": "R15", "matrix": [7, 3], "x": 12.5, "y": 2},
|
||||
{"label": "R16", "matrix": [7, 4], "x": 13.5, "y": 2.25},
|
||||
{"label": "R17", "matrix": [7, 5], "x": 14.5, "y": 2.75},
|
||||
{"label": "R18", "matrix": [7, 6], "x": 15.5, "y": 2.75},
|
||||
{"label": "L26", "matrix": [3, 6], "x": 0, "y": 3.75},
|
||||
{"label": "L25", "matrix": [3, 5], "x": 1, "y": 3.75},
|
||||
{"label": "L24", "matrix": [3, 4], "x": 2, "y": 3.25},
|
||||
{"label": "L23", "matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"label": "L22", "matrix": [3, 2], "x": 4, "y": 3.25},
|
||||
{"label": "L21", "matrix": [3, 1], "x": 5, "y": 3.5},
|
||||
{"label": "L20", "matrix": [4, 3], "x": 6, "y": 4},
|
||||
{"label": "L19", "matrix": [3, 0], "x": 7, "y": 4.25},
|
||||
{"label": "R19", "matrix": [8, 0], "x": 8.5, "y": 4.25},
|
||||
{"label": "R20", "matrix": [9, 3], "x": 9.5, "y": 4},
|
||||
{"label": "R21", "matrix": [8, 1], "x": 10.5, "y": 3.5},
|
||||
{"label": "R22", "matrix": [8, 2], "x": 11.5, "y": 3.25},
|
||||
{"label": "R23", "matrix": [8, 3], "x": 12.5, "y": 3},
|
||||
{"label": "R24", "matrix": [8, 4], "x": 13.5, "y": 3.25},
|
||||
{"label": "R26", "matrix": [8, 5], "x": 14.5, "y": 3.75},
|
||||
{"label": "R27", "matrix": [8, 6], "x": 15.5, "y": 3.75},
|
||||
{"label": "L31", "matrix": [4, 4], "x": 2.5, "y": 4.25},
|
||||
{"label": "L30", "matrix": [4, 2], "x": 3.5, "y": 4.25},
|
||||
{"label": "L29", "matrix": [4, 1], "x": 4.5, "y": 4.5},
|
||||
{"label": "L28", "matrix": [4, 5], "x": 5.5, "y": 5},
|
||||
{"label": "L27", "matrix": [4, 0], "x": 6.5, "y": 5.25},
|
||||
{"label": "R27", "matrix": [9, 0], "x": 9, "y": 5.25},
|
||||
{"label": "R28", "matrix": [9, 5], "x": 10, "y": 5},
|
||||
{"label": "R29", "matrix": [9, 1], "x": 11, "y": 4.5},
|
||||
{"label": "R30", "matrix": [9, 2], "x": 12, "y": 4.25},
|
||||
{"label": "R31", "matrix": [9, 4], "x": 13, "y": 4.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
241
keyboards/splitkb/halcyon/elora/keymaps/default/keymap.c
Normal file
241
keyboards/splitkb/halcyon/elora/keymaps/default/keymap.c
Normal file
@ -0,0 +1,241 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layers {
|
||||
_QWERTY = 0,
|
||||
_DVORAK,
|
||||
_COLEMAK_DH,
|
||||
_NAV,
|
||||
_SYM,
|
||||
_FUNCTION,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
// Aliases for readability
|
||||
#define QWERTY DF(_QWERTY)
|
||||
#define COLEMAK DF(_COLEMAK_DH)
|
||||
#define DVORAK DF(_DVORAK)
|
||||
|
||||
#define SYM MO(_SYM)
|
||||
#define NAV MO(_NAV)
|
||||
#define FKEYS MO(_FUNCTION)
|
||||
#define ADJUST MO(_ADJUST)
|
||||
|
||||
#define CTL_ESC MT(MOD_LCTL, KC_ESC)
|
||||
#define CTL_QUOT MT(MOD_RCTL, KC_QUOTE)
|
||||
#define CTL_MINS MT(MOD_RCTL, KC_MINUS)
|
||||
#define ALT_ENT MT(MOD_LALT, KC_ENT)
|
||||
|
||||
// Note: LAlt/Enter (ALT_ENT) is not the same thing as the keyboard shortcut Alt+Enter.
|
||||
// The notation `mod/tap` denotes a key that activates the modifier `mod` when held down, and
|
||||
// produces the key `tap` when tapped (i.e. pressed and released).
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/*
|
||||
* Base Layer: QWERTY
|
||||
*
|
||||
* ,-------------------------------------------. ,-------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Esc |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* |Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "|
|
||||
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
* | LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift |
|
||||
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
* |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
|
||||
* | | | Enter| | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_ESC ,
|
||||
KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y, KC_U , KC_I , KC_O , KC_P , KC_BSPC,
|
||||
CTL_ESC , KC_A , KC_S , KC_D , KC_F , KC_G , KC_H, KC_J , KC_K , KC_L ,KC_SCLN,CTL_QUOT,
|
||||
KC_LSFT , KC_Z , KC_X , KC_C , KC_V , KC_B , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_N, KC_M ,KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT,
|
||||
ADJUST , KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP
|
||||
),
|
||||
|
||||
/*
|
||||
* Base Layer: Dvorak
|
||||
*
|
||||
* ,-------------------------------------------. ,-------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Esc |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | Tab | ' " | , < | . > | P | Y | | F | G | C | R | L | Bksp |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* |Ctrl/Esc| A | O | E | U | I | | D | H | T | N | S |Ctrl/- _|
|
||||
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
* | LShift | ; : | Q | J | K | X | [ { |CapsLk| |F-keys| ] } | B | M | W | V | Z | RShift |
|
||||
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
* |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
|
||||
* | | | Enter| | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_DVORAK] = LAYOUT(
|
||||
KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_ESC ,
|
||||
KC_TAB ,KC_QUOTE,KC_COMM, KC_DOT, KC_P , KC_Y , KC_F, KC_G , KC_C , KC_R , KC_L , KC_BSPC,
|
||||
CTL_ESC , KC_A , KC_O , KC_E , KC_U , KC_I , KC_D, KC_H , KC_T , KC_N , KC_S , CTL_MINS,
|
||||
KC_LSFT ,KC_SCLN, KC_Q , KC_J , KC_K , KC_X , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_B, KC_M , KC_W , KC_V , KC_Z , KC_RSFT,
|
||||
ADJUST, KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP
|
||||
),
|
||||
|
||||
/*
|
||||
* Base Layer: Colemak DH
|
||||
*
|
||||
* ,-------------------------------------------. ,-------------------------------------------.
|
||||
* | Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Esc |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | Tab | Q | W | F | P | B | | J | L | U | Y | ; : | Bksp |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* |Ctrl/Esc| A | R | S | T | G | | M | N | E | I | O |Ctrl/' "|
|
||||
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
* | LShift | Z | X | C | D | V | [ { |CapsLk| |F-keys| ] } | K | H | , < | . > | / ? | RShift |
|
||||
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
* |Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
|
||||
* | | | Enter| | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_COLEMAK_DH] = LAYOUT(
|
||||
KC_ESC , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_ESC ,
|
||||
KC_TAB , KC_Q , KC_W , KC_F , KC_P , KC_B , KC_J, KC_L , KC_U , KC_Y ,KC_SCLN, KC_BSPC,
|
||||
CTL_ESC , KC_A , KC_R , KC_S , KC_T , KC_G , KC_M, KC_N , KC_E , KC_I , KC_O , CTL_QUOT,
|
||||
KC_LSFT , KC_Z , KC_X , KC_C , KC_D , KC_V , KC_LBRC,KC_CAPS, FKEYS , KC_RBRC, KC_K, KC_H ,KC_COMM, KC_DOT ,KC_SLSH, KC_RSFT,
|
||||
ADJUST, KC_LGUI, ALT_ENT, KC_SPC , NAV , SYM , KC_SPC ,KC_RALT, KC_RGUI, KC_APP
|
||||
),
|
||||
|
||||
/*
|
||||
* Nav Layer: Media, navigation
|
||||
*
|
||||
* ,-------------------------------------------. ,-------------------------------------------.
|
||||
* | | | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | | GUI | Alt | Ctrl | Shift| | | PgDn | ← | ↓ | → | VolDn| Insert |
|
||||
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
* | | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc |
|
||||
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
* | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_NAV] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_VOLU, KC_DEL,
|
||||
_______, KC_LGUI, KC_LALT, KC_LCTL, KC_LSFT, _______, KC_PGDN, KC_LEFT, KC_DOWN, KC_RGHT, KC_VOLD, KC_INS,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_SCRL, _______, _______,KC_PAUSE, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_PSCR,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
* Sym Layer: Numbers and symbols
|
||||
*
|
||||
* ,-------------------------------------------. ,-------------------------------------------.
|
||||
* | | | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + |
|
||||
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
* | | | \ | : | ; | - | [ | { | | | | } | ] | _ | , | . | / | ? |
|
||||
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
* | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_SYM] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_6 , KC_7 , KC_8 , KC_9 , KC_0 , KC_EQL ,
|
||||
KC_TILD , KC_EXLM, KC_AT , KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PLUS,
|
||||
KC_PIPE , KC_BSLS, KC_COLN, KC_SCLN, KC_MINS, KC_LBRC, KC_LCBR, _______, _______, KC_RCBR, KC_RBRC, KC_UNDS, KC_COMM, KC_DOT, KC_SLSH, KC_QUES,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
* Function Layer: Function keys
|
||||
*
|
||||
* ,-------------------------------------------. ,-------------------------------------------.
|
||||
* | | | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | | F9 | F10 | F11 | F12 | | | | | | | | |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | |
|
||||
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
* | | F1 | F2 | F3 | F4 | | | | | | | | | | | | |
|
||||
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
* | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_FUNCTION] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_F9 , KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_F5 , KC_F6 , KC_F7 , KC_F8 , _______, _______, KC_RSFT, KC_RCTL, KC_LALT, KC_RGUI, _______,
|
||||
_______, KC_F1 , KC_F2 , KC_F3 , KC_F4 , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
* Adjust Layer: Default layer settings, RGB
|
||||
*
|
||||
* ,-------------------------------------------. ,-------------------------------------------.
|
||||
* | Reset | | | | | | | | | | | | |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | | | |QWERTY| | | | | | | | | |
|
||||
* |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
* | | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | |
|
||||
* |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
* | | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | |
|
||||
* `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
* | | | | | | | | | | | |
|
||||
* | | | | | | | | | | | |
|
||||
* `----------------------------------' `----------------------------------'
|
||||
*/
|
||||
[_ADJUST] = LAYOUT(
|
||||
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, QWERTY , _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, DVORAK , _______, _______, RM_TOGG, RM_SATU, RM_HUEU, RM_VALU, RM_NEXT, _______,
|
||||
_______, _______, _______, COLEMAK, _______, _______,_______, _______, _______, _______, _______, RM_SATD, RM_HUED, RM_VALD, RM_PREV, _______,
|
||||
_______, _______, _______,_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
// /*
|
||||
// * Layer template
|
||||
// *
|
||||
// * ,-------------------------------------------. ,-------------------------------------------.
|
||||
// * | | | | | | | | | | | | | |
|
||||
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
// * | | | | | | | | | | | | | |
|
||||
// * |--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
// * | | | | | | | | | | | | | |
|
||||
// * |--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
// * | | | | | | | | | | | | | | | | | |
|
||||
// * `----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
// * | | | | | | | | | | | |
|
||||
// * | | | | | | | | | | | |
|
||||
// * `----------------------------------' `----------------------------------'
|
||||
// */
|
||||
// [_LAYERINDEX] = LAYOUT(
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
// _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
// ),
|
||||
//
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD), ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
|
||||
[1] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
|
||||
[2] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
|
||||
[3] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
|
||||
[4] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
|
||||
[5] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
|
||||
[6] = { ENCODER_CCW_CW(_______, _______), ENCODER_CCW_CW(_______, _______) },
|
||||
};
|
||||
#endif
|
262
keyboards/splitkb/halcyon/elora/keymaps/default/readme.md
Normal file
262
keyboards/splitkb/halcyon/elora/keymaps/default/readme.md
Normal file
@ -0,0 +1,262 @@
|
||||
# Halcyon Elora's Default Keymap
|
||||
|
||||
The default keymap contains 5 layers which allows it to include all keys found on an ANSI layout TKL keyboard plus media keys.
|
||||
Hardware features of the Elora such as rotary encoders and underglow are also supported.
|
||||
|
||||
The Elora keymap is in essence identical to the Kyria keymap, just with an additional number row. A deep dive into the keymap is provided there.
|
||||
|
||||
The five different layers are the following:
|
||||
1. Base layer (QWERTY, Colemak-DH or Dvorak)
|
||||
2. Navigation layer
|
||||
3. Symbols/Numbers layer
|
||||
4. Function layer
|
||||
5. Adjust layer
|
||||
|
||||
## Base layer(s)
|
||||
```
|
||||
Base Layer: -
|
||||
|
||||
,-------------------------------------------. ,-------------------------------------------.
|
||||
| Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Esc |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| Tab | - | - | - | - | - | | - | - | - | - | - | Bksp |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
|Ctrl/Esc| - | - | - | - | - | | - | - | - | - | - |Ctrl/ - |
|
||||
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
| LShift | - | - | - | - | - | [ { |CapsLk| |F-Keys| ] } | - | - | - | - | - | RShift |
|
||||
`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
|Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
|
||||
| | | Enter| | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
```
|
||||
Three different well-known keyboard layouts are provided to fill in the placeholder `-` keys: QWERTY, Colemak-DH, and Dvorak. The default layer can be changed at runtime, more info on that in the section on the [adjust layer](#adjust-layer).
|
||||
|
||||
For the rest of this write-up, the base layer will be assumed to be QWERTY and will be used as a reference to describe physical keys, e.g. “<kbd>B</kbd> key” vs, the much more verbose, “lower inner index key”.
|
||||
|
||||
```
|
||||
Base Layer: QWERTY
|
||||
|
||||
,-------------------------------------------. ,-------------------------------------------.
|
||||
| Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Esc |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "|
|
||||
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift |
|
||||
`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
|Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
|
||||
| | | Enter| | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
```
|
||||
|
||||
Aside from variations in the alpha cluster, the rest of the base keys remain the same and are designed to feel familiar.
|
||||
|
||||

|
||||
|
||||
<details>
|
||||
After making transformations to the classic ANSI US QWERTY TKL 60% to arrive to the layout of the Elora, as illustrated in the animation above, the result looks like this:
|
||||
|
||||
```
|
||||
,-------------------------------------------. ,-------------------------------------------.
|
||||
| Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Esc |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| Cap Lk | A | S | D | F | G | | H | J | K | L | ; : | ' " |
|
||||
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
| LShift | Z | X | C | V | B | | | | | | N | M | , < | . > | / ? | RShift |
|
||||
`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
| LCtrl| LGUI | LAlt | Space| | | | Space| AltGr| RGUI | Menu |
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' '----------------------------------'
|
||||
```
|
||||
|
||||
First thing to notice is the presence of blank keys. To fill in the blank keys above the <kbd>Space</kbd> keys, we can take inspiration from other split keyboards featuring an extra inner index column on each half. A common mapping for those kind of keys are the bracket keys that got removed in the fourth step of the animated transformation. The thumb keys besides <kbd>Space</kbd>s is prime real estate for dedicated layer-switching keys. It doesn't matter on which side is assigned the sym-layer-switch key but it helps to keep the nav-layer-switch on the left in order to keep the arrow keys on the right side like on a classic keyboard, so we'll put nav on the left and sym on the right. We'll address the remaining blank thumb keys later.
|
||||
|
||||
The base layer is starting to form but there remains some flaws. One glaring issue is the position of Control. Control is a very commonly used function but the key on which it sits right now is way too tucked in under the hand to be able to press it comfortably with either the thumb or the pinky from resting position. In fact, installing a rotary encoder there is a common move among Elora users and I guarantee you that activating Control by holding down a rotary encoder does not spark joy. Instead, let's employ a popular trick that involves remapping the current Caps Lock key, which is positioned at a comfortable position on the keyboard, to Control.
|
||||
|
||||
We can go further though; a variant of this trick makes the Control key produce Escape when tapped. This is called a “modtap”. There is no use to tapping Control by itself without chording it with another key and there is no use to holding down the Esc key so why not combine the two into a single key?
|
||||
|
||||
All of this leaves us with three blank keys.
|
||||
|
||||
```
|
||||
,-------------------------------------------. ,-------------------------------------------.
|
||||
| Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Esc |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " |
|
||||
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
| LShift | Z | X | C | V | B | [ { | | | | ] } | N | M | , < | . > | / ? | RShift |
|
||||
`--------+-------------+--------------------+------+------| |------+------+--------------------+------+---------------'
|
||||
| | LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' '----------------------------------'
|
||||
```
|
||||
|
||||
These keys are not easily reachable while touch typing (that is, not reachable without picking up your hand) and should thus be associated with functions that you are not likely to be typed within a stream of text. The idea is that if you have to pick up your hand to hit a key, you want it to be at a time when you are likely to be pausing your interaction with the machine, rather than in the midst of a flurry of typing. They're thus well suited for accessing the adjust layer and the function layer. We can also toss in Caps Lock even though it is an editing-type function that gets used within a stream of text because shouting in ALL-CAPS should be a deliberate action.
|
||||
|
||||
```
|
||||
,-------------------------------------------. ,-------------------------------------------.
|
||||
| Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Esc |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : | ' " |
|
||||
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift |
|
||||
`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
|Adjust| LGUI | LAlt | Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
```
|
||||
|
||||
The next glaring issue is the absence of an Enter key on the current base layer this far. Enter is a very frequently used key so it deserves to be placed at a good spot in the keymap. The best way to insert it in the keymap with minimal changes to the current layout is to use modtaps. A tempting solution is to turn the <kbd>RShift</kbd> key into a <kbd>RShift/Enter</kbd> modtap but that can result in chat messages sent too frustratingly early when you're not used to it. Using GUI is also sub-optimal because tapping the GUI modifier actually has a use as opposed to taps of the Control or the Shift key. Pressing and releasing the GUI key by itself opens the App menu in many desktop environments. The natural choice is thus <kbd>LAlt/Enter</kbd>. That way, Enter is 1u away from resting thumb position and is unlikely to get accidentally activated because Alt is very rarely used in the midst of prose.
|
||||
|
||||
Finally, we're one Quality-Of-Life update away from the actual base layer. <kbd>Ctrl/' "</kbd> not only preserves symmetry in the keymap with <kbd>Ctrl/Esc</kbd> but also helps balance the load between your pinkies and invites you to use both hands instead of contortions. Perhaps more importantly, it also frees you from the necessity of picking up your hand, breaking touch typing position and pressing a pinky key with your ring finger in order to execute Ctrl+A or Ctrl+Z. That becomes even more important on a board with such an aggressive pinky columnar stagger like the Elora.
|
||||
|
||||
|
||||
```
|
||||
,-------------------------------------------. ,-------------------------------------------.
|
||||
| Esc | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | Esc |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| Tab | Q | W | E | R | T | | Y | U | I | O | P | Bksp |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
|Ctrl/Esc| A | S | D | F | G | | H | J | K | L | ; : |Ctrl/' "|
|
||||
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
| LShift | Z | X | C | V | B | [ { |CapsLk| |F-keys| ] } | N | M | , < | . > | / ? | RShift |
|
||||
`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
|Adjust| LGUI | LAlt/| Space| Nav | | Sym | Space| AltGr| RGUI | Menu |
|
||||
| | | Enter| | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
```
|
||||
|
||||
</details>
|
||||
|
||||
## Navigation layer
|
||||
|
||||
```
|
||||
Nav Layer: Media, navigation
|
||||
|
||||
,-------------------------------------------. ,-------------------------------------------.
|
||||
| | | | | | | | | | | | | |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| | | | | | | | PgUp | Home | ↑ | End | VolUp| Delete |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| | GUI | Alt | Ctrl | Shift| | | PgDn | ← | ↓ | → | VolDn| Insert |
|
||||
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
| | | | | | | |ScLck | | | | Pause|M Prev|M Play|M Next|VolMut| PrtSc |
|
||||
`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
| | | | | | | | | | | |
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
```
|
||||
|
||||
This is where you'll find all the keys that are generally between the main block of a classic keyboard and the numpad in addition to media controls and modifiers on easy access on the home row for fast and comfortable chording with navigation keys.
|
||||
|
||||
Useful mnemonics:
|
||||
- “GACS” to remember the order of the modifiers on the left-hand home row
|
||||
- <kbd>Scroll Lock</kbd> is on the same key as <kbd>Caps Lock</kbd> because they're both locks
|
||||
- <kbd>Delete</kbd> is on the same key as <kbd>Backspace</kbd> because they both erase characters
|
||||
- <kbd>Home</kbd> is the leftmost position on the current line so it is above <kbd>←</kbd>. Same logic applies for <kbd>End</kbd>.
|
||||
- <kbd>Media Previous</kbd> = ⏮, <kbd>Media Next</kbd> = ⏭
|
||||
- <kbd>Page Up</kbd>, <kbd>Page Down</kbd> and <kbd>Volume Up</kbd>, <kbd>Volume Down</kbd> are positioned like the main <kbd>Up</kbd> and <kbd>Down</kbd> keys.
|
||||
|
||||
## Sym layer
|
||||
```
|
||||
Sym Layer: Numbers, symbols
|
||||
|
||||
,-------------------------------------------. ,-------------------------------------------.
|
||||
| | | | | | | | | | | | | |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | = |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| ~ | ! | @ | # | $ | % | | ^ | & | * | ( | ) | + |
|
||||
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
| | | \ | : | ; | - | [ | { | | | | } | ] | _ | , | . | / | ? |
|
||||
`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
| | | | | | | | | | | |
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
```
|
||||
The top row is the unshifted num row, the home row of the layer is the shifted num row and the bottom row contains the hyphen `-` and the underscore `_` on the best lower row spot because of how frequent they are as well as redundant symbols that are already present on the base layer but are reproduced here to avoid juggling back and forth between base, shift, and sym when typing a string of symbols.
|
||||
|
||||
The layout of the first two rows needs no introduction, you're already used to them but it's worth looking into the structure of the bottom row.
|
||||
|
||||
The two halves are mirrored in a sense. On the right, you can find <kbd>,</kbd> <kbd>.</kbd> <kbd>/</kbd> at their usual spots with the addition of <kbd>Shift</kbd>+<kbd>/</kbd>=<kbd>?</kbd> to the right of the <kbd>/</kbd> key to remove the need to press simultaneously <kbd>Sym</kbd> and a <kbd>Shift</kbd> key to access `?`.
|
||||
|
||||
Now, if you look at the left side, you'll notice that the mirror of <kbd>,</kbd> is <kbd>;</kbd>, the mirror of <kbd>.</kbd> is <kbd>:</kbd> and the mirror of <kbd>/</kbd> is <kbd>\\</kbd>. The same logic used for <kbd>Shift</kbd>+<kbd>/</kbd>=<kbd>?</kbd> also applies to <kbd>Shift</kbd>+<kbd>\\</kbd>=<kbd>|</kbd>.
|
||||
|
||||
In case you wish to combine <kbd>Shift</kbd> with a symbol key anyways, you can hold down <kbd>Shift</kbd> on the base layer with your pinky, activate <kbd>Sym</kbd> with your right thumb and while still holding down the <kbd>Shift</kbd> key, tap your desired symbol key. Same thing if you need <kbd>Ctrl</kbd>+<kbd>Digit</kbd>.
|
||||
|
||||
## Function layer
|
||||
```
|
||||
Function Layer: Function keys
|
||||
|
||||
,-------------------------------------------. ,-------------------------------------------.
|
||||
| | | | | | | | | | | | | |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| | F9 | F10 | F11 | F12 | | | | | | | | |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| | F5 | F6 | F7 | F8 | | | | Shift| Ctrl | Alt | GUI | |
|
||||
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
| | F1 | F2 | F3 | F4 | | | | | | | | | | | | |
|
||||
`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
| | | | | | | | | | | |
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
```
|
||||
In a similar fashion to the nav layer, pressing down `FKEYS` with the right thumb enables a numpad of function keys on the opposite hand and modifiers on the right-hand home row. Once again, mirror symmetry is leveraged in this keymap for the order of the right-hand modifiers.
|
||||
|
||||
The <kbd>Alt</kbd> modifier, despite being situated on the right half of the keyboard is *not* `KC_RALT`, it is `KC_LALT`. `KC_RALT` is actually the <kbd>AltGr</kbd> key which generally acts very differently to the left <kbd>Alt</kbd> key. Keyboard shortcuts involving <kbd>AltGr</kbd>+<kbd>F#</kbd> are rare and infrequent as opposed to the much more common <kbd>Alt</kbd>+<kbd>F#</kbd> shortcuts. Consequently, `KC_LALT` was chosen for the function layer.
|
||||
|
||||
Since there are more than 10 function keys, the cluster of F-keys does not follow the usual 3×3+1 numpad arrangement.
|
||||
|
||||
|
||||
## Adjust layer
|
||||
```
|
||||
Adjust Layer: Default layer settings, RGB
|
||||
|
||||
,-------------------------------------------. ,-------------------------------------------.
|
||||
| | | | | | | | | | | | | |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| | | |QWERTY| | | | | | | | | |
|
||||
|--------+------+------+------+------+------| |------+------+------+------+------+--------|
|
||||
| | | |Dvorak| | | | TOG | SAI | HUI | VAI | MOD | |
|
||||
|--------+------+------+------+------+------+-------------. ,-------------+------+------+------+------+------+--------|
|
||||
| | | |Colmak| | | | | | | | | SAD | HUD | VAD | RMOD | |
|
||||
`----------------------+------+------+------+------+------| |------+------+------+------+------+----------------------'
|
||||
| | | | | | | | | | | |
|
||||
| | | | | | | | | | | |
|
||||
`----------------------------------' `----------------------------------'
|
||||
```
|
||||
|
||||
Default layer settings on the left and various RGB underglow controls on the right.
|
||||
|
||||
The default layer settings are lined up on the middle finger column because the home middle finger key is <kbd>D</kbd> on QWERTY (like the “D” in “Dvorak”) and the lower middle finger key is <kbd>C</kbd> on QWERTY (like the “C” in “Colemak”). I can hear you say that “QWERTY” doesn't start with “E” but Dvorak and Colemak were already aligned in a column so the QWERTY may as well join the formation.
|
||||
|
||||
NOTE: The default layer settings set by those keys are *NOT* stored in EEPROM and thus do not persist through boots. If you wish to change the default layer in a non-volatile manner, either change the order of the layers in the firmware, for example like so if you want to set Dvorak as the new default:
|
||||
```c
|
||||
enum layers {
|
||||
_DVORAK = 0,
|
||||
_QWERTY,
|
||||
_COLEMAK_DH,
|
||||
_NAV,
|
||||
_SYM,
|
||||
_FUNCTION,
|
||||
_ADJUST
|
||||
};
|
||||
```
|
||||
or re-define the `QWERTY`, `COLEMAK` and `DVORAK` keys to point to custom keycodes starting on `SAFE_RANGE` and calling the `set_single_persistent_default_layer` function inside of `process_record_user`.
|
||||
|
||||
## Hardware Features
|
||||
|
||||
### Rotary Encoder
|
||||
The left rotary encoder is programmed to control the volume whereas the right encoder sends <kbd>PgUp</kbd> or <kbd>PgDn</kbd> on every turn.
|
||||
|
||||
## Going further…
|
||||
|
||||
This default keymap can be used as is, unchanged, as a daily driver for your Elora but you're invited to treat your keymap like a bonsai. At the beginning, it's just like the default keymap but from time to time, you can tweak it a little. Cut a little key here, let another combo grow there. Slowly but surely it will be a unique keymap that will fit you like a glove.
|
||||
|
||||
Check out the #keymap-ideas channel on the official SplitKB Discord server for inspiration.
|
1
keyboards/splitkb/halcyon/elora/keymaps/default/rules.mk
Normal file
1
keyboards/splitkb/halcyon/elora/keymaps/default/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
31
keyboards/splitkb/halcyon/elora/readme.md
Normal file
31
keyboards/splitkb/halcyon/elora/readme.md
Normal file
@ -0,0 +1,31 @@
|
||||
# Halcyon Elora
|
||||
|
||||

|
||||
|
||||
The Halcyon Elora rev2 is the second Elora revision and the second keyboard in our Halcyon range. Similar to Aurora, all keyboards in the series share the same feature set. The key highlights:
|
||||
|
||||
- Halcyon keyboards come preassembled! You won't need a soldering iron.
|
||||
- You'll be able to install [VIK](https://github.com/sadekbaroudi/vik) modules.
|
||||
- It'll come fully documented, which includes the unboxing, assembly (with only a screwdriver), first installation and some advanced use cases.
|
||||
- Both the connection to the host device as well as the interconnect between the keyboard halves use USB C.
|
||||
- The controller has full ESD protection on all USB C ports, as well as all switch matrix GPIO!
|
||||
- The controller is interchangable. If part of your keyboard ever breaks, we can replace just the bits that need replacing.
|
||||
|
||||
* Keyboard Maintainer: [splitkb.com](https://github.com/splitkb.com)
|
||||
* Hardware Availability: [splitkb.com](https://splitkb.com).
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make splitkb/halcyon/elora/rev2:default
|
||||
|
||||
The keyboard can be flashed by copying the resulting `.uf2` file onto the `RPI-RP2` flash drive.
|
||||
|
||||
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:
|
||||
|
||||
* **Reset button**: Double-tap the reset button at the top of the controller, right above the USB-C port.
|
||||
* **Bootloader reset**: Hold down the "Boot" button and plug in the keyboard.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
|
32
keyboards/splitkb/halcyon/elora/rev2/config.h
Normal file
32
keyboards/splitkb/halcyon/elora/rev2/config.h
Normal file
@ -0,0 +1,32 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
// Make it easier to enter the bootloader
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
|
||||
|
||||
// UART1, communication between the two halves
|
||||
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
|
||||
#define SERIAL_USART_TX_PIN GP28 // USART TX pin
|
||||
#define SERIAL_USART_RX_PIN GP29 // USART RX pin
|
||||
#define SERIAL_PIO_USE_PIO1 // Use PIO1 as PIO0 is used for WS2812 driver
|
||||
|
||||
// VBUS detection
|
||||
#define USB_VBUS_PIN GP1
|
||||
|
||||
//// VIK
|
||||
|
||||
// GPIO1 = GP27
|
||||
// GPIO2 = GP26
|
||||
// CS = GP13
|
||||
|
||||
#define I2C_DRIVER I2C0
|
||||
#define I2C1_SDA_PIN GP16
|
||||
#define I2C1_SCL_PIN GP17
|
||||
|
||||
#define SPI_DRIVER SPID1
|
||||
#define SPI_SCK_PIN GP14
|
||||
#define SPI_MOSI_PIN GP15
|
||||
#define SPI_MISO_PIN GP12
|
14
keyboards/splitkb/halcyon/elora/rev2/halconf.h
Normal file
14
keyboards/splitkb/halcyon/elora/rev2/halconf.h
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
//// VIK
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
|
||||
#define HAL_USE_SPI TRUE
|
||||
#define SPI_USE_WAIT TRUE
|
||||
#define SPI_SELECT_MODE SPI_SELECT_MODE_PAD
|
||||
|
||||
#include_next <halconf.h>
|
177
keyboards/splitkb/halcyon/elora/rev2/keyboard.json
Normal file
177
keyboards/splitkb/halcyon/elora/rev2/keyboard.json
Normal file
@ -0,0 +1,177 @@
|
||||
{
|
||||
"keyboard_name": "Halcyon Elora rev2",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP22", "pin_b": "GP18", "resolution": 2}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP24", "GP19", "GP20", "GP25", "GP4", "GP9", "GP10"],
|
||||
"rows": ["GP8", "GP11", "GP7", "GP6", "GP5"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"digital_rain": true,
|
||||
"dual_beacon": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"multisplash": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"solid_color": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"x": 75, "y": 2, "flags": 2},
|
||||
{"x": 50, "y": 1, "flags": 2},
|
||||
{"x": 14, "y": 4, "flags": 2},
|
||||
{"x": 25, "y": 45, "flags": 2},
|
||||
{"x": 58, "y": 49, "flags": 2},
|
||||
{"x": 94, "y": 53, "flags": 2},
|
||||
{"matrix": [4, 0], "x": 94, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 79, "y": 61, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 65, "y": 55, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 51, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 36, "y": 52, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 101, "y": 52, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 87, "y": 49, "flags": 4},
|
||||
{"matrix": [3, 1], "x": 72, "y": 43, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 58, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 43, "y": 37, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 29, "y": 40, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 14, "y": 46, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 0, "y": 46, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 72, "y": 30, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 58, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 43, "y": 24, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 29, "y": 27, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 14, "y": 34, "flags": 4},
|
||||
{"matrix": [2, 6], "x": 0, "y": 34, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 72, "y": 18, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 58, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 43, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 29, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 14, "y": 21, "flags": 4},
|
||||
{"matrix": [1, 6], "x": 0, "y": 21, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 72, "y": 6, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 48, "y": 3, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 43, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 29, "y": 3, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 14, "y": 9, "flags": 4},
|
||||
{"matrix": [0, 6], "x": 0, "y": 9, "flags": 4},
|
||||
{"x": 149, "y": 2, "flags": 2},
|
||||
{"x": 174, "y": 1, "flags": 2},
|
||||
{"x": 210, "y": 4, "flags": 2},
|
||||
{"x": 199, "y": 45, "flags": 2},
|
||||
{"x": 166, "y": 49, "flags": 2},
|
||||
{"x": 130, "y": 53, "flags": 2},
|
||||
{"matrix": [9, 0], "x": 130, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 5], "x": 145, "y": 61, "flags": 4},
|
||||
{"matrix": [9, 1], "x": 159, "y": 55, "flags": 4},
|
||||
{"matrix": [9, 2], "x": 173, "y": 52, "flags": 4},
|
||||
{"matrix": [9, 4], "x": 188, "y": 52, "flags": 4},
|
||||
{"matrix": [8, 0], "x": 123, "y": 52, "flags": 4},
|
||||
{"matrix": [9, 3], "x": 137, "y": 49, "flags": 4},
|
||||
{"matrix": [8, 1], "x": 152, "y": 43, "flags": 4},
|
||||
{"matrix": [8, 2], "x": 166, "y": 40, "flags": 4},
|
||||
{"matrix": [8, 3], "x": 181, "y": 37, "flags": 4},
|
||||
{"matrix": [8, 4], "x": 195, "y": 40, "flags": 4},
|
||||
{"matrix": [8, 5], "x": 210, "y": 46, "flags": 4},
|
||||
{"matrix": [8, 6], "x": 224, "y": 46, "flags": 4},
|
||||
{"matrix": [7, 1], "x": 152, "y": 30, "flags": 4},
|
||||
{"matrix": [7, 2], "x": 166, "y": 27, "flags": 4},
|
||||
{"matrix": [7, 3], "x": 181, "y": 24, "flags": 4},
|
||||
{"matrix": [7, 4], "x": 195, "y": 27, "flags": 4},
|
||||
{"matrix": [7, 5], "x": 210, "y": 34, "flags": 4},
|
||||
{"matrix": [7, 6], "x": 224, "y": 34, "flags": 4},
|
||||
{"matrix": [6, 1], "x": 152, "y": 18, "flags": 4},
|
||||
{"matrix": [6, 2], "x": 166, "y": 15, "flags": 4},
|
||||
{"matrix": [6, 3], "x": 181, "y": 12, "flags": 4},
|
||||
{"matrix": [6, 4], "x": 195, "y": 15, "flags": 4},
|
||||
{"matrix": [6, 5], "x": 210, "y": 21, "flags": 4},
|
||||
{"matrix": [6, 6], "x": 224, "y": 21, "flags": 4},
|
||||
{"matrix": [5, 1], "x": 152, "y": 6, "flags": 4},
|
||||
{"matrix": [5, 2], "x": 166, "y": 3, "flags": 4},
|
||||
{"matrix": [5, 3], "x": 181, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 4], "x": 195, "y": 3, "flags": 4},
|
||||
{"matrix": [5, 5], "x": 210, "y": 9, "flags": 4},
|
||||
{"matrix": [5, 6], "x": 224, "y": 9, "flags": 4}
|
||||
],
|
||||
"max_brightness": 128,
|
||||
"sleep": true,
|
||||
"split_count": [37, 37]
|
||||
},
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"handedness": {
|
||||
"pin": "GP23"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"right": {
|
||||
"cols": ["GP10", "GP9", "GP4", "GP25", "GP20", "GP19", "GP24"],
|
||||
"rows": ["GP8", "GP11", "GP7", "GP6", "GP5"]
|
||||
}
|
||||
},
|
||||
"serial": {
|
||||
"driver": "vendor"
|
||||
},
|
||||
"transport": {
|
||||
"sync": {
|
||||
"matrix_state": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"usb": {
|
||||
"pid": "0xA392"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP3"
|
||||
}
|
||||
}
|
14
keyboards/splitkb/halcyon/elora/rev2/mcuconf.h
Normal file
14
keyboards/splitkb/halcyon/elora/rev2/mcuconf.h
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
//// VIK
|
||||
|
||||
#undef RP_I2C_USE_I2C0
|
||||
#define RP_I2C_USE_I2C0 TRUE
|
||||
|
||||
#undef RP_SPI_USE_SPI1
|
||||
#define RP_SPI_USE_SPI1 TRUE
|
28
keyboards/splitkb/halcyon/elora/rev2/rev2.c
Normal file
28
keyboards/splitkb/halcyon/elora/rev2/rev2.c
Normal file
@ -0,0 +1,28 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||
if (!encoder_update_user(index, clockwise)) {
|
||||
return false;
|
||||
}
|
||||
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_PGDN);
|
||||
} else {
|
||||
tap_code(KC_PGUP);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
73
keyboards/takashicompany/mirageix/keyboard.json
Normal file
73
keyboards/takashicompany/mirageix/keyboard.json
Normal file
@ -0,0 +1,73 @@
|
||||
{
|
||||
"manufacturer": "takashicompany",
|
||||
"keyboard_name": "MirageiX",
|
||||
"maintainer": "takashicompany",
|
||||
"development_board": "promicro",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["D4", "C6", "D7", "E6", "B4", "B5"],
|
||||
"rows": ["F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6"]
|
||||
},
|
||||
"url": "",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0065",
|
||||
"vid": "0x7463"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 1.25},
|
||||
{"matrix": [1, 0], "x": 1, "y": 1.25},
|
||||
{"matrix": [2, 0], "x": 2, "y": 0.25},
|
||||
{"matrix": [3, 0], "x": 3, "y": 0},
|
||||
{"matrix": [4, 0], "x": 4, "y": 0.25},
|
||||
{"matrix": [5, 0], "x": 5, "y": 0.5},
|
||||
{"matrix": [0, 3], "x": 8, "y": 0.5},
|
||||
{"matrix": [1, 3], "x": 9, "y": 0.25},
|
||||
{"matrix": [2, 3], "x": 10, "y": 0},
|
||||
{"matrix": [3, 3], "x": 11, "y": 0.25},
|
||||
{"matrix": [4, 3], "x": 12, "y": 1.25},
|
||||
{"matrix": [5, 3], "x": 13, "y": 1.25},
|
||||
{"matrix": [0, 1], "x": 0, "y": 2.25},
|
||||
{"matrix": [1, 1], "x": 1, "y": 2.25},
|
||||
{"matrix": [2, 1], "x": 2, "y": 1.25},
|
||||
{"matrix": [3, 1], "x": 3, "y": 1},
|
||||
{"matrix": [4, 1], "x": 4, "y": 1.25},
|
||||
{"matrix": [5, 1], "x": 5, "y": 1.5},
|
||||
{"matrix": [0, 4], "x": 8, "y": 1.5},
|
||||
{"matrix": [1, 4], "x": 9, "y": 1.25},
|
||||
{"matrix": [2, 4], "x": 10, "y": 1},
|
||||
{"matrix": [3, 4], "x": 11, "y": 1.25},
|
||||
{"matrix": [4, 4], "x": 12, "y": 2.25},
|
||||
{"matrix": [5, 4], "x": 13, "y": 2.25},
|
||||
{"matrix": [0, 2], "x": 0, "y": 3.25},
|
||||
{"matrix": [1, 2], "x": 1, "y": 3.25},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2.25},
|
||||
{"matrix": [3, 2], "x": 3, "y": 2},
|
||||
{"matrix": [4, 2], "x": 4, "y": 2.25},
|
||||
{"matrix": [5, 2], "x": 5, "y": 2.5},
|
||||
{"matrix": [0, 5], "x": 8, "y": 2.5},
|
||||
{"matrix": [1, 5], "x": 9, "y": 2.25},
|
||||
{"matrix": [2, 5], "x": 10, "y": 2},
|
||||
{"matrix": [3, 5], "x": 11, "y": 2.25},
|
||||
{"matrix": [4, 5], "x": 12, "y": 3.25},
|
||||
{"matrix": [5, 5], "x": 13, "y": 3.25},
|
||||
{"matrix": [6, 0], "x": 2.5, "y": 4},
|
||||
{"matrix": [6, 1], "x": 3.5, "y": 4},
|
||||
{"matrix": [6, 2], "x": 4.5, "y": 4},
|
||||
{"matrix": [6, 3], "x": 5.5, "y": 4},
|
||||
{"matrix": [7, 2], "x": 7.5, "y": 4},
|
||||
{"matrix": [7, 3], "x": 8.5, "y": 4},
|
||||
{"matrix": [7, 4], "x": 9.5, "y": 4},
|
||||
{"matrix": [7, 5], "x": 10.5, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
70
keyboards/takashicompany/mirageix/keymaps/default/keymap.c
Normal file
70
keyboards/takashicompany/mirageix/keymaps/default/keymap.c
Normal file
@ -0,0 +1,70 @@
|
||||
// Copyright 2025 takashicompany (@takashicompany)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, LT(7, KC_Q), KC_W, KC_E, LT(6, KC_R), KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_LCTL, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_ENT,
|
||||
KC_LSFT, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_DEL,
|
||||
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(2, KC_SPC), LT(1, KC_LNG1), KC_RALT, KC_RGUI
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, LCTL_T(KC_EQL), KC_LBRC, KC_SLSH, KC_MINS, KC_INT1, KC_SCLN, KC_QUOT, KC_RBRC, KC_NUHS, KC_INT3, KC_TRNS,
|
||||
KC_TRNS, LSFT_T(KC_PLUS), KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
KC_TRNS, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, LGUI(KC_INT3), KC_TRNS,
|
||||
KC_TRNS, KC_PLUS, KC_LCBR, KC_QUES, KC_UNDS, LSFT(KC_INT1), KC_COLN, KC_DQUO, KC_RCBR, LSFT(KC_NUHS), LSFT(KC_INT3), KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[3] = LAYOUT(
|
||||
KC_TRNS, LT(7, KC_Q), KC_W, KC_E, LT(6, KC_R), KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_TRNS,
|
||||
KC_TRNS, KC_A, KC_S, LT(6, KC_D), KC_F, KC_G, KC_H, KC_J, LT(6, KC_K), KC_L, KC_ENT, KC_TRNS,
|
||||
KC_TRNS, LSFT_T(KC_Z), LGUI_T(KC_X), KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, LCTL_T(KC_DOT), KC_BSPC, KC_TRNS,
|
||||
KC_LCTL, KC_LGUI, LALT_T(KC_LNG2), LSFT_T(KC_TAB), LT(5, KC_SPC), LT(4, KC_LNG1), KC_RALT, KC_RGUI
|
||||
),
|
||||
|
||||
[4] = LAYOUT(
|
||||
KC_TRNS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_TRNS,
|
||||
KC_TRNS, KC_CIRC, KC_AT, KC_SLSH, KC_MINS, KC_UNDS, KC_SCLN, KC_COLN, KC_LBRC, KC_RBRC, KC_INT3, KC_TRNS,
|
||||
KC_TRNS, LT(5, KC_TILD), KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[5] = LAYOUT(
|
||||
KC_TRNS, KC_EXLM, KC_DQUO, KC_HASH, KC_DLR, KC_PERC, KC_AMPR, KC_QUOT, KC_LPRN, KC_RPRN, KC_BSLS, KC_TRNS,
|
||||
KC_TRNS, KC_TILD, KC_GRV, KC_QUES, KC_EQL, KC_UNDS, KC_PLUS, KC_ASTR, KC_LCBR, KC_RCBR, KC_PIPE, KC_TRNS,
|
||||
KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_LSFT, KC_SPC, KC_LNG1, KC_TRNS, KC_TRNS, KC_DEL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[6] = LAYOUT(
|
||||
KC_TRNS, KC_ESC, KC_TAB, KC_UP, KC_NO, KC_NO, KC_NO, KC_NO, KC_UP, KC_NO, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_NO, KC_LEFT, KC_DOWN, KC_RGHT, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_LSFT, KC_LGUI, KC_LALT, KC_LNG2, KC_TRNS, KC_NO, KC_LNG1, KC_NO, KC_NO, KC_DEL, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[7] = LAYOUT(
|
||||
KC_TRNS, KC_NO, KC_TAB, KC_NO, KC_NO, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_TRNS,
|
||||
KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_TRNS,
|
||||
KC_TRNS, KC_LSFT, KC_NO, KC_NO, KC_NO, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, MO(8), MO(9), KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
),
|
||||
|
||||
[8] = LAYOUT(
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, DF(0), DF(3), KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_NO, KC_NO, KC_NO, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
39
keyboards/takashicompany/mirageix/readme.md
Normal file
39
keyboards/takashicompany/mirageix/readme.md
Normal file
@ -0,0 +1,39 @@
|
||||
# MirageiX
|
||||
|
||||

|
||||
|
||||
MirageiX is a 44-key integrated keyboard.
|
||||
The PCB has been trimmed to the limit to create a visual appearance in which only the keycaps seem to float.
|
||||
By using a transparent acrylic case, you can enjoy a mirage-like keyboard expression.
|
||||
The key layout is based on the TRON keyboard layout, making typing smoother than it looks.
|
||||
|
||||
Keyswitches are fixed with sockets, allowing easy replacement of keyswitches.
|
||||
|
||||
MirageiXは44キーの一体型キーボードです。
|
||||
PCBを極限まで切り詰めたことでキーキャップのみが浮き出るようなビジュアルを実現しました。
|
||||
透明なアクリルケースを用いることで蜃気楼のようなキーボード表現が楽しめます。
|
||||
キー配列もTRONというキーボードの配置を参考にしているため、見た目以上にスムーズなタイピングを実現します。
|
||||
|
||||
キースイッチはソケットで固定されるため、キースイッチの交換を容易に行えます。
|
||||
|
||||
* Keyboard Maintainer: [takashicompany](https://github.com/takashicompany)
|
||||
* Hardware Supported: MirageiX PCB, Pro Micro
|
||||
* Hardware Availability: https://github.com/takashicompany/mirageix
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make takashicompany/mirageix:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make takashicompany/mirageix: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
|
33
keyboards/typek/config.h
Normal file
33
keyboards/typek/config.h
Normal file
@ -0,0 +1,33 @@
|
||||
/*
|
||||
Copyright 2022 Gondolindrim
|
||||
|
||||
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 WS2812_PWM_COMPLEMENTARY_OUTPUT
|
||||
#define WS2812_PWM_DRIVER PWMD1
|
||||
#define WS2812_PWM_CHANNEL 3
|
||||
#define WS2812_PWM_PAL_MODE 1
|
||||
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
|
||||
#define WS2812_DMA_CHANNEL 6
|
||||
|
||||
/* LED MAP
|
||||
0 , 1 , 2 Three indicators
|
||||
3 , 4 , 5 Three RGBs on left side
|
||||
66, 67, 68 Three RGBs on right side
|
||||
35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6 Left RGB wing (30 LEDs)
|
||||
36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65 Right RGB wing (30 LEDs)
|
||||
*/
|
21
keyboards/typek/halconf.h
Normal file
21
keyboards/typek/halconf.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* 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_PWM TRUE
|
||||
|
||||
#include_next <halconf.h>
|
197
keyboards/typek/keyboard.json
Normal file
197
keyboards/typek/keyboard.json
Normal file
@ -0,0 +1,197 @@
|
||||
{
|
||||
"manufacturer": "gok",
|
||||
"keyboard_name": "TypeK-S Rev. Zeta-RC2",
|
||||
"maintainer": "Gondolindrim",
|
||||
"bootloader": "stm32-dfu",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"eeprom": {
|
||||
"wear_leveling": {
|
||||
"backing_size": 4096
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A3", "B12", "A0", "A10", "B0", "B1", "B10", "B3", "C15", "C14", "C13", "B9", "B8", "B5"],
|
||||
"rows": ["A7", "A8", "A15", "A1", "A2"]
|
||||
},
|
||||
"processor": "STM32F411",
|
||||
"rgblight": {
|
||||
"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
|
||||
},
|
||||
"default": {
|
||||
"animation": "rainbow_swirl",
|
||||
"val": 200
|
||||
},
|
||||
"led_count": 69,
|
||||
"led_map": [0, 1, 2, 3, 4, 5, 66, 67, 68, 35, 34, 33, 32, 31, 30, 29, 28, 27, 26, 25, 24, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65]
|
||||
},
|
||||
"url": "https://www.gok.design/type-k",
|
||||
"usb": {
|
||||
"device_version": "6.2.0",
|
||||
"pid": "0x8475",
|
||||
"vid": "0x7179"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "pwm",
|
||||
"pin": "B15"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0.75, "y": 0},
|
||||
{"label": "`~", "matrix": [0, 1], "x": 2.5, "y": 0},
|
||||
{"label": "1!", "matrix": [0, 2], "x": 3.5, "y": 0},
|
||||
{"label": "2@", "matrix": [0, 3], "x": 5, "y": 0},
|
||||
{"label": "3#", "matrix": [0, 4], "x": 6, "y": 0},
|
||||
{"label": "4$", "matrix": [0, 5], "x": 7, "y": 0},
|
||||
{"label": "5%", "matrix": [0, 6], "x": 8, "y": 0},
|
||||
{"label": "7&", "matrix": [0, 7], "x": 12.75, "y": 0},
|
||||
{"label": "8*", "matrix": [0, 8], "x": 13.75, "y": 0},
|
||||
{"label": "9(", "matrix": [0, 9], "x": 14.75, "y": 0},
|
||||
{"label": "0)", "matrix": [0, 10], "x": 15.75, "y": 0},
|
||||
{"label": "-_", "matrix": [0, 11], "x": 17, "y": 0},
|
||||
{"label": "=+", "matrix": [0, 12], "x": 18, "y": 0},
|
||||
{"label": "\\|", "matrix": [0, 13], "x": 19, "y": 0},
|
||||
{"label": "Page Up", "matrix": [1, 0], "x": 0.5, "y": 1},
|
||||
{"label": "Tab", "matrix": [1, 1], "x": 2.25, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 2], "x": 3.75, "y": 1},
|
||||
{"label": "W", "matrix": [1, 3], "x": 5.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 4], "x": 6.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 5], "x": 7.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 6], "x": 8.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 7], "x": 12, "y": 1},
|
||||
{"label": "U", "matrix": [1, 8], "x": 13, "y": 1},
|
||||
{"label": "I", "matrix": [1, 9], "x": 14, "y": 1},
|
||||
{"label": "O", "matrix": [1, 10], "x": 15, "y": 1},
|
||||
{"label": "P", "matrix": [1, 11], "x": 16.75, "y": 1},
|
||||
{"label": "[{", "matrix": [1, 12], "x": 17.75, "y": 1},
|
||||
{"label": "]}", "matrix": [1, 13], "x": 18.75, "y": 1},
|
||||
{"label": "Page Down", "matrix": [2, 0], "x": 0.25, "y": 2},
|
||||
{"label": "Caps Lock", "matrix": [2, 1], "x": 2.25, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 2], "x": 4, "y": 2},
|
||||
{"label": "S", "matrix": [2, 3], "x": 5.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 4], "x": 6.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 5], "x": 7.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 6], "x": 8.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 7], "x": 12.25, "y": 2},
|
||||
{"label": "J", "matrix": [2, 8], "x": 13.25, "y": 2},
|
||||
{"label": "K", "matrix": [2, 9], "x": 14.25, "y": 2},
|
||||
{"label": "L", "matrix": [2, 10], "x": 15.25, "y": 2},
|
||||
{"label": ";:", "matrix": [2, 11], "x": 17.25, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 12], "x": 18.25, "y": 2},
|
||||
{"label": "Del", "matrix": [2, 13], "x": 20, "y": 0},
|
||||
{"label": "End", "matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 3.75, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 6, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 7, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 8, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 9, "y": 3},
|
||||
{"label": "B", "matrix": [3, 7], "x": 11.75, "y": 3},
|
||||
{"label": "N", "matrix": [3, 8], "x": 12.75, "y": 3},
|
||||
{"label": "M", "matrix": [3, 9], "x": 13.75, "y": 3},
|
||||
{"label": ",<", "matrix": [3, 10], "x": 14.75, "y": 3},
|
||||
{"label": ".>", "matrix": [3, 11], "x": 17, "y": 3},
|
||||
{"label": "/?", "matrix": [3, 12], "x": 18, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 13], "x": 19, "y": 3, "w": 1.25},
|
||||
{"label": "Control", "matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 6, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 4], "x": 7.5, "y": 4, "w": 2},
|
||||
{"label": "Left GUI", "matrix": [4, 5], "x": 9.5, "y": 4},
|
||||
{"label": "^6", "matrix": [4, 6], "x": 9, "y": 0},
|
||||
{"label": "Space", "matrix": [4, 7], "x": 11.25, "y": 4},
|
||||
{"label": "Space", "matrix": [4, 8], "x": 12.25, "y": 4, "w": 2},
|
||||
{"label": "Alt", "matrix": [4, 9], "x": 14.25, "y": 4, "w": 1.5},
|
||||
{"label": "Backspace", "matrix": [4, 10], "x": 19.75, "y": 1, "w": 1.5},
|
||||
{"label": "Enter", "matrix": [4, 11], "x": 19.25, "y": 2, "w": 2.25},
|
||||
{"label": "MO(1)", "matrix": [4, 12], "x": 20.25, "y": 3},
|
||||
{"label": "Control", "matrix": [4, 13], "x": 19.25, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_nosplits": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0.75, "y": 0},
|
||||
{"label": "`~", "matrix": [0, 1], "x": 2.5, "y": 0},
|
||||
{"label": "1!", "matrix": [0, 2], "x": 3.5, "y": 0},
|
||||
{"label": "2@", "matrix": [0, 3], "x": 5, "y": 0},
|
||||
{"label": "3#", "matrix": [0, 4], "x": 6, "y": 0},
|
||||
{"label": "4$", "matrix": [0, 5], "x": 7, "y": 0},
|
||||
{"label": "5%", "matrix": [0, 6], "x": 8, "y": 0},
|
||||
{"label": "7&", "matrix": [0, 7], "x": 12.75, "y": 0},
|
||||
{"label": "8*", "matrix": [0, 8], "x": 13.75, "y": 0},
|
||||
{"label": "9(", "matrix": [0, 9], "x": 14.75, "y": 0},
|
||||
{"label": "0)", "matrix": [0, 10], "x": 15.75, "y": 0},
|
||||
{"label": "-_", "matrix": [0, 11], "x": 17, "y": 0},
|
||||
{"label": "=+", "matrix": [0, 12], "x": 18, "y": 0},
|
||||
{"label": "Backspace", "matrix": [0, 13], "x": 19, "y": 0, "w": 2},
|
||||
{"label": "Page Up", "matrix": [1, 0], "x": 0.5, "y": 1},
|
||||
{"label": "Tab", "matrix": [1, 1], "x": 2.25, "y": 1, "w": 1.5},
|
||||
{"label": "Q", "matrix": [1, 2], "x": 3.75, "y": 1},
|
||||
{"label": "W", "matrix": [1, 3], "x": 5.5, "y": 1},
|
||||
{"label": "E", "matrix": [1, 4], "x": 6.5, "y": 1},
|
||||
{"label": "R", "matrix": [1, 5], "x": 7.5, "y": 1},
|
||||
{"label": "T", "matrix": [1, 6], "x": 8.5, "y": 1},
|
||||
{"label": "Y", "matrix": [1, 7], "x": 12, "y": 1},
|
||||
{"label": "U", "matrix": [1, 8], "x": 13, "y": 1},
|
||||
{"label": "I", "matrix": [1, 9], "x": 14, "y": 1},
|
||||
{"label": "O", "matrix": [1, 10], "x": 15, "y": 1},
|
||||
{"label": "P", "matrix": [1, 11], "x": 16.75, "y": 1},
|
||||
{"label": "[{", "matrix": [1, 12], "x": 17.75, "y": 1},
|
||||
{"label": "]}", "matrix": [1, 13], "x": 18.75, "y": 1},
|
||||
{"label": "Page Down", "matrix": [2, 0], "x": 0.25, "y": 2},
|
||||
{"label": "Caps Lock", "matrix": [2, 1], "x": 2.25, "y": 2, "w": 1.75},
|
||||
{"label": "A", "matrix": [2, 2], "x": 4, "y": 2},
|
||||
{"label": "S", "matrix": [2, 3], "x": 5.75, "y": 2},
|
||||
{"label": "D", "matrix": [2, 4], "x": 6.75, "y": 2},
|
||||
{"label": "F", "matrix": [2, 5], "x": 7.75, "y": 2},
|
||||
{"label": "G", "matrix": [2, 6], "x": 8.75, "y": 2},
|
||||
{"label": "H", "matrix": [2, 7], "x": 12.25, "y": 2},
|
||||
{"label": "J", "matrix": [2, 8], "x": 13.25, "y": 2},
|
||||
{"label": "K", "matrix": [2, 9], "x": 14.25, "y": 2},
|
||||
{"label": "L", "matrix": [2, 10], "x": 15.25, "y": 2},
|
||||
{"label": ";:", "matrix": [2, 11], "x": 17.25, "y": 2},
|
||||
{"label": "\"", "matrix": [2, 12], "x": 18.25, "y": 2},
|
||||
{"label": "End", "matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 1], "x": 1.5, "y": 3, "w": 2.25},
|
||||
{"label": "Z", "matrix": [3, 2], "x": 3.75, "y": 3},
|
||||
{"label": "X", "matrix": [3, 3], "x": 6, "y": 3},
|
||||
{"label": "C", "matrix": [3, 4], "x": 7, "y": 3},
|
||||
{"label": "V", "matrix": [3, 5], "x": 8, "y": 3},
|
||||
{"label": "B", "matrix": [3, 6], "x": 9, "y": 3},
|
||||
{"label": "B", "matrix": [3, 7], "x": 11.75, "y": 3},
|
||||
{"label": "N", "matrix": [3, 8], "x": 12.75, "y": 3},
|
||||
{"label": "M", "matrix": [3, 9], "x": 13.75, "y": 3},
|
||||
{"label": ",<", "matrix": [3, 10], "x": 14.75, "y": 3},
|
||||
{"label": ".>", "matrix": [3, 11], "x": 17, "y": 3},
|
||||
{"label": "/?", "matrix": [3, 12], "x": 18, "y": 3},
|
||||
{"label": "Shift", "matrix": [3, 13], "x": 19, "y": 3, "w": 2.25},
|
||||
{"label": "Control", "matrix": [4, 1], "x": 1.5, "y": 4, "w": 1.5},
|
||||
{"label": "Alt", "matrix": [4, 2], "x": 6, "y": 4, "w": 1.5},
|
||||
{"label": "Space", "matrix": [4, 4], "x": 7.5, "y": 4, "w": 3},
|
||||
{"label": "^6", "matrix": [4, 6], "x": 9, "y": 0},
|
||||
{"label": "Space", "matrix": [4, 8], "x": 11.25, "y": 4, "w": 3},
|
||||
{"label": "Alt", "matrix": [4, 9], "x": 14.25, "y": 4, "w": 1.5},
|
||||
{"label": "Backspace", "matrix": [4, 10], "x": 19.75, "y": 1, "w": 1.5},
|
||||
{"label": "Enter", "matrix": [4, 11], "x": 19.25, "y": 2, "w": 2.25},
|
||||
{"label": "Control", "matrix": [4, 13], "x": 19.25, "y": 4, "w": 1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
34
keyboards/typek/keymaps/default/keymap.c
Normal file
34
keyboards/typek/keymaps/default/keymap.c
Normal file
@ -0,0 +1,34 @@
|
||||
/* Copyright 2023 Gondolindrim
|
||||
*
|
||||
* 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_all( /* Base */
|
||||
KC_ESC , KC_GRV , KC_1 , KC_2 , KC_3 , KC_4 , KC_5 , KC_7 , KC_8 , KC_9 , KC_0 , KC_MINS, KC_EQL, KC_BSLS,
|
||||
KC_PGUP, KC_TAB , KC_Q , KC_W , KC_E , KC_R , KC_T , KC_Y , KC_U , KC_I , KC_O , KC_P , KC_LBRC, KC_RBRC,
|
||||
KC_PGDN, KC_CAPS, KC_A , KC_S , KC_D , KC_F , KC_G , KC_H , KC_J , KC_K , KC_L , KC_SCLN, KC_QUOT, KC_DEL ,
|
||||
MO(1) , KC_LSFT, KC_Z , KC_X , KC_C , KC_V , KC_B , KC_B , KC_N , KC_M , KC_COMM, KC_DOT , KC_SLSH, KC_RSFT,
|
||||
KC_LCTL, KC_LALT, KC_SPC , KC_LGUI, KC_6 , KC_SPC , KC_SPC , KC_RALT, KC_BSPC, KC_ENT , MO(1) , KC_RCTL
|
||||
),
|
||||
[1] = LAYOUT_all(
|
||||
QK_BOOT, KC_F1 , KC_F2 , KC_F3 , KC_F4 , KC_F5 , KC_F6 , KC_F7 , KC_F8 , KC_F9 , KC_F10 , KC_F11 , KC_F12 , KC_TRNS,
|
||||
KC_HOME, KC_TRNS, KC_TRNS, KC_UP , KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_END , KC_TRNS, KC_LEFT, KC_DOWN, KC_RGHT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
|
||||
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
|
||||
)
|
||||
};
|
21
keyboards/typek/mcuconf.h
Normal file
21
keyboards/typek/mcuconf.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* 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
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_PWM_USE_TIM1
|
||||
#define STM32_PWM_USE_TIM1 TRUE
|
30
keyboards/typek/readme.md
Normal file
30
keyboards/typek/readme.md
Normal file
@ -0,0 +1,30 @@
|
||||
# gok TypeK QMK Firmware Folder
|
||||
|
||||

|
||||
|
||||
## Introduction
|
||||
|
||||
This is the QMK Firmware repository for the Type K, the tented ergo by Gok. The TypeK went through GB on August, 2023. It is supported by a proprietary PCB ecosystem.
|
||||
|
||||
## How to flash
|
||||
|
||||
### Enter bootloader
|
||||
|
||||
The DFU state in the bootloader can be accessed in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key, escape in the default keymap) and plug in the keyboard;
|
||||
* **Physical reset button**: press the button on the front of the PCB, next to caps lock, for at least five seconds;
|
||||
* **Keycode in layout**: Press the key mapped to `RESET`; in the default layout, that is top left key ('escape') in layer 1.
|
||||
|
||||
### How to compile and flash
|
||||
|
||||
|
||||
After setting up your build environment, you can compile the Iron 165R2 default keymap by using one of the options below.
|
||||
|
||||
make typek:default
|
||||
|
||||
And use dfu-util in the command line or through a GUI like QMK toolbox to upload the firmware to the PCB. To directly flash the PCB after it is put into a DFU state, use:
|
||||
|
||||
make typek: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).
|
44
keyboards/typek/typek.c
Normal file
44
keyboards/typek/typek.c
Normal file
@ -0,0 +1,44 @@
|
||||
/* Copyright 2023 Gondolindrim <gondolindrim@acheronproject.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"
|
||||
|
||||
// This function gets called when caps, num, scroll change
|
||||
bool led_update_kb(led_t led_state) {
|
||||
bool res = led_update_user(led_state);
|
||||
if (res) {
|
||||
led_state.caps_lock? rgblight_setrgb_at(RGB_RED, 0) : rgblight_setrgb_at(RGB_OFF, 0);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
// This function is called when layers change
|
||||
layer_state_t layer_state_set_kb(layer_state_t state) {
|
||||
state = layer_state_set_user(state);
|
||||
switch(get_highest_layer(state)) {
|
||||
case 1:
|
||||
rgblight_setrgb_at(RGB_GREEN, 1);
|
||||
break;
|
||||
case 2:
|
||||
rgblight_setrgb_at(RGB_BLUE, 2);
|
||||
break;
|
||||
default:
|
||||
rgblight_setrgb_at(RGB_OFF, 1);
|
||||
rgblight_setrgb_at(RGB_OFF, 2);
|
||||
break;
|
||||
}
|
||||
return state;
|
||||
}
|
20
keyboards/umbra/hotswap/config.h
Normal file
20
keyboards/umbra/hotswap/config.h
Normal file
@ -0,0 +1,20 @@
|
||||
/*
|
||||
Copyright 2024 Joseph Williams IV "IV Works" <josephawilliamsiv@gmail.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 WS2812_EXTERNAL_PULLUP
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user