mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-27 19:41:16 +00:00
Merge remote-tracking branch 'upstream/master' into bootstrap
This commit is contained in:
commit
1e80179941
1
.github/workflows/auto_tag.yml
vendored
1
.github/workflows/auto_tag.yml
vendored
@ -15,6 +15,7 @@ on:
|
||||
- quantum/**/*
|
||||
- tests/**/*
|
||||
- tmk_core/**/*
|
||||
- lib/python/**/*
|
||||
- util/**/*
|
||||
- Makefile
|
||||
- '*.mk'
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"license": "GPL-2.0-or-later",
|
||||
"devDependencies": {
|
||||
"vite": "^5.4.12",
|
||||
"vite": "^5.4.15",
|
||||
"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.12:
|
||||
version "5.4.12"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.12.tgz#627d12ff06de3942557dfe8632fd712a12a072c7"
|
||||
integrity sha512-KwUaKB27TvWwDJr1GjjWthLMATbGEbeWYZIbGZ5qFIsgPP3vWzLu4cVooqhm5/Z2SPDUMjyPVjTztm5tYKwQxA==
|
||||
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==
|
||||
dependencies:
|
||||
esbuild "^0.21.3"
|
||||
postcss "^8.4.43"
|
||||
|
@ -40,7 +40,7 @@ cd /path/to/your/external/userspace
|
||||
mkdir -p modules
|
||||
# Replace the following {user} and {repo} with the author's community module repository
|
||||
git submodule add https://github.com/{user}/{repo}.git modules/{user}
|
||||
git submdule update --init --recursive
|
||||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
This will ensure the copy of the module is made in your userspace.
|
||||
|
@ -444,7 +444,7 @@ This setting implies that `RGBLIGHT_SPLIT` is enabled, and will forcibly enable
|
||||
#define SPLIT_USB_DETECT
|
||||
```
|
||||
|
||||
Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and theres's USB communication, then that half assumes it is the master, otherwise it assumes it is the slave.
|
||||
Enabling this option changes the startup behavior to listen for an active USB communication to delegate which part is master and which is slave. With this option enabled and active USB communication, then that half assumes it is the master, otherwise it assumes it is the slave.
|
||||
|
||||
Without this option, the master is the half that can detect voltage on the physical USB connection (VBUS detection).
|
||||
|
||||
|
34
keyboards/5keys/keyboard.json
Normal file
34
keyboards/5keys/keyboard.json
Normal file
@ -0,0 +1,34 @@
|
||||
{
|
||||
"manufacturer": "mikiya418",
|
||||
"keyboard_name": "5keys",
|
||||
"maintainer": "mikiya418",
|
||||
"development_board": "promicro",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": false
|
||||
},
|
||||
"matrix_pins": {
|
||||
"direct": [
|
||||
["F4","F5","F6","F7","B1"]
|
||||
]
|
||||
},
|
||||
"url": "",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0001",
|
||||
"vid": "0x4D4B"
|
||||
},
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
21
keyboards/5keys/keymaps/default/keymap.c
Normal file
21
keyboards/5keys/keymaps/default/keymap.c
Normal file
@ -0,0 +1,21 @@
|
||||
/* Copylight 2024 mikiya418.
|
||||
*
|
||||
* 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 <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
KC_WBAK, KC_WFWD, LSG_T(KC_S), G(KC_L), MO(1)
|
||||
)
|
||||
};
|
27
keyboards/5keys/readme.md
Normal file
27
keyboards/5keys/readme.md
Normal file
@ -0,0 +1,27 @@
|
||||
# 5keys
|
||||
|
||||

|
||||
|
||||
This keyboard is a macro keyboard with five keys.
|
||||
|
||||
* Keyboard Maintainer: [mikiya418](https://github.com/mikiya418)
|
||||
* Hardware Supported: 5keys PCBs, Pro Micro
|
||||
* Hardware Availability: [Thingiverse](https://www.thingiverse.com/thing:6834908)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make 5keys:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make 5keys: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
|
53
keyboards/adafruit/pico_pad/keyboard.json
Normal file
53
keyboards/adafruit/pico_pad/keyboard.json
Normal file
@ -0,0 +1,53 @@
|
||||
{
|
||||
"manufacturer": "Raspberry Pi",
|
||||
"keyboard_name": "DirectPins Pico Pad 21 keys RP2040",
|
||||
"maintainer": "icyavocado",
|
||||
"bootloader": "rp2040",
|
||||
"usb": {
|
||||
"vid": "0x2326",
|
||||
"pid": "0xFEED",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
"extrakey": true
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"matrix_pins": {
|
||||
"direct": [
|
||||
[ "GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6" ],
|
||||
[ "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13"],
|
||||
[ "GP14", "GP16", "GP17", "GP18", "GP19", "GP20", "GP21"]
|
||||
]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label": "GP0", "x": 0, "y": 0, "matrix": [0, 0]},
|
||||
{"label": "GP1", "x": 0, "y": 1, "matrix": [0, 1]},
|
||||
{"label": "GP2", "x": 0, "y": 2, "matrix": [0, 2]},
|
||||
{"label": "GP3", "x": 0, "y": 3, "matrix": [0, 3]},
|
||||
{"label": "GP4", "x": 0, "y": 4, "matrix": [0, 4]},
|
||||
{"label": "GP5", "x": 0, "y": 5, "matrix": [0, 5]},
|
||||
{"label": "GP6", "x": 0, "y": 6, "matrix": [0, 6]},
|
||||
|
||||
{"label": "GP7", "x": 1, "y": 0, "matrix": [1, 0]},
|
||||
{"label": "GP8", "x": 1, "y": 1, "matrix": [1, 1]},
|
||||
{"label": "GP9", "x": 1, "y": 2, "matrix": [1, 2]},
|
||||
{"label": "GP10", "x": 1, "y": 3, "matrix": [1, 3]},
|
||||
{"label": "GP11", "x": 1, "y": 4, "matrix": [1, 4]},
|
||||
{"label": "GP12", "x": 1, "y": 5, "matrix": [1, 5]},
|
||||
{"label": "GP13", "x": 1, "y": 6, "matrix": [1, 6]},
|
||||
|
||||
{"label": "GP14", "x": 2, "y": 0, "matrix": [2, 0]},
|
||||
{"label": "GP16", "x": 2, "y": 1, "matrix": [2, 1]},
|
||||
{"label": "GP17", "x": 2, "y": 2, "matrix": [2, 2]},
|
||||
{"label": "GP18", "x": 2, "y": 3, "matrix": [2, 3]},
|
||||
{"label": "GP19", "x": 2, "y": 4, "matrix": [2, 4]},
|
||||
{"label": "GP20", "x": 2, "y": 5, "matrix": [2, 5]},
|
||||
{"label": "GP21", "x": 2, "y": 6, "matrix": [2, 6]}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
12
keyboards/adafruit/pico_pad/keymaps/default/keymap.json
Normal file
12
keyboards/adafruit/pico_pad/keymaps/default/keymap.json
Normal file
@ -0,0 +1,12 @@
|
||||
{
|
||||
"keyboard": "adafruit/pico_pad",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"KC_A", "KC_B", "KC_C", "KC_D", "KC_E", "KC_F", "KC_G",
|
||||
"KC_H", "KC_I", "KC_J", "KC_K", "KC_L", "KC_M", "KC_N",
|
||||
"KC_O", "KC_P", "KC_Q", "KC_R", "KC_S", "KC_T", "KC_U"
|
||||
]
|
||||
]
|
||||
}
|
25
keyboards/adafruit/pico_pad/readme.md
Normal file
25
keyboards/adafruit/pico_pad/readme.md
Normal file
@ -0,0 +1,25 @@
|
||||
# PICO PAD
|
||||
|
||||

|
||||
|
||||
A RP2040 powered direct pins QMK keyboard in 3x7 layout.
|
||||
|
||||
A guide can be found here: [Pico Mechanical Keyboard](https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython/overview)
|
||||
|
||||
* Keyboard Maintainer: [IcyAvocado](https://github.com/icyavocado)
|
||||
* Hardware Supported: [Pico 1 Microcontrollers - RP2040](https://www.raspberrypi.com/documentation/microcontrollers/pico-series.html#pico-1-family)
|
||||
* Hardware Availability: [The PiHut](https://thepihut.com/products/raspberry-pi-pico) | [Adafruit Parts](https://learn.adafruit.com/diy-pico-mechanical-keyboard-with-fritzing-circuitpython/overview)
|
||||
|
||||
Make example for this board (after setting up your build environment):
|
||||
|
||||
```sh
|
||||
qmk compile -kb adafruit/pico_pad -km 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).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader:
|
||||
* **Physical reset button**: Briefly press the reset button on the left of the PCB - some may have pads you must short instead
|
||||
* **Boot button**: Press and hold the BOOTSEL button on the pico when powered on
|
@ -48,6 +48,11 @@ ble_capslock_t ble_capslock = {._dummy = {0}, .caps_lock = false};
|
||||
static uint8_t led_enabled = 1;
|
||||
#endif
|
||||
|
||||
void mcu_reset(void) {
|
||||
__disable_irq();
|
||||
NVIC_SystemReset();
|
||||
}
|
||||
|
||||
void bootloader_jump(void) {
|
||||
// Send msg to shine to boot into IAP
|
||||
ap2_set_IAP();
|
||||
|
@ -12,8 +12,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_ESC, 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_GRV, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(1), KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
KC_LSFT, 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_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_all(
|
||||
|
@ -11,8 +11,8 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_ESC, 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_GRV, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(1), KC_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_LALT, MO(1), KC_LGUI, KC_LCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
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_UP,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(1), KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
[_FN1] = LAYOUT_all(
|
||||
|
@ -235,6 +235,75 @@
|
||||
{"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, 13], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 12], "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, 5], "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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
70
keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c
Normal file
70
keyboards/ducky/one2mini/keymaps/ansi_tsangan/keymap.c
Normal file
@ -0,0 +1,70 @@
|
||||
/* Copyright 2019 /u/KeepItUnder
|
||||
*
|
||||
* 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
|
||||
|
||||
// LAYERS
|
||||
enum Layer {
|
||||
_QWERTY = 0, // Standard QWERTY layer
|
||||
_FUNCTION, // Function key layer
|
||||
_COLOUR // RGB key layer
|
||||
};
|
||||
#define _QW _QWERTY
|
||||
#define _FN _FUNCTION
|
||||
#define _CLR _COLOUR
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬────────┐
|
||||
* │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp │
|
||||
* ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬──────┤
|
||||
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
|
||||
* ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴──────┤
|
||||
* │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │
|
||||
* ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬────┤
|
||||
* │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift│ Fn │
|
||||
* ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴───┴───┼───┴┬────┬┴────┤
|
||||
* │Ctrl│GUI │Alt │ │Alt │GUI │Ctrl │
|
||||
* └────┴────┴────┴─────────────────────────────┴────┴────┴─────┘
|
||||
*/
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[_QWERTY] = LAYOUT_60_ansi_tsangan(
|
||||
// 2 3 4 5 6 7 8 9 10 11 12 13 14
|
||||
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_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, MO(_FN),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
|
||||
),
|
||||
|
||||
[_FUNCTION] = LAYOUT_60_ansi_tsangan(
|
||||
// 2 3 4 5 6 7 8 9 10 11 12 13 14
|
||||
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_BTN1, KC_MS_U, KC_BTN2, KC_WH_U, _______, KC_INS, _______, KC_UP, KC_PAUS, KC_PGUP, KC_HOME, KC_PSCR, _______,
|
||||
_______, KC_MS_L, KC_MS_D, KC_MS_R, KC_WH_D, _______, KC_SCRL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_END, KC_ENT,
|
||||
_______, _______, KC_APP, _______, _______, _______, KC_CALC, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, _______,
|
||||
_______, KC_APP, MO(_CLR), _______, KC_APP, _______, _______
|
||||
),
|
||||
|
||||
[_COLOUR] = LAYOUT_60_ansi_tsangan(
|
||||
// 2 3 4 5 6 7 8 9 10 11 12 13 14
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, RM_NEXT, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, RM_HUEU, RM_SATU, RM_VALU, RM_SPDU, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, RM_HUED, RM_SATD, RM_VALD, RM_SPDD, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, RM_TOGG, _______, _______, _______
|
||||
),
|
||||
};
|
363
keyboards/handwired/at101ish/keyboard.json
Normal file
363
keyboards/handwired/at101ish/keyboard.json
Normal file
@ -0,0 +1,363 @@
|
||||
{
|
||||
"manufacturer": "Henrik O. S\u00f8rensen",
|
||||
"keyboard_name": "AT101ish",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "halfkay",
|
||||
"diode_direction": "ROW2COL",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": true,
|
||||
"console": true,
|
||||
"extrakey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "D6",
|
||||
"num_lock": "D4",
|
||||
"scroll_lock": "E6"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["D7", "B4", "B5", "B6", "F7", "F6", "F5", "F4", "F1", "F0"],
|
||||
"rows": ["B1", "B0", "B2", "D5", "B3", "C7", "B7", "C6", "D0", "D3", "D1", "D2"]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"tags": ["at101", "at102", "bigfoot"],
|
||||
"url": "https://github.com/henrikosorensen/keyboard_pcbs/tree/master/at101_pcb",
|
||||
"usb": {
|
||||
"device_version": "1.1.0",
|
||||
"pid": "0x0101",
|
||||
"vid": "0xFEED"
|
||||
},
|
||||
"community_layouts": ["fullsize_ansi", "fullsize_iso"],
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
|
||||
{"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
|
||||
{"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
|
||||
{"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
|
||||
{"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
|
||||
{"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
|
||||
{"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
|
||||
{"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
|
||||
{"label": "F10", "matrix": [1, 0], "x": 12, "y": 0},
|
||||
{"label": "F11", "matrix": [1, 1], "x": 13, "y": 0},
|
||||
{"label": "F12", "matrix": [1, 2], "x": 14, "y": 0},
|
||||
{"label": "PrtSc", "matrix": [1, 3], "x": 15.25, "y": 0},
|
||||
{"label": "Scroll Lock", "matrix": [1, 4], "x": 16.25, "y": 0},
|
||||
{"label": "Pause", "matrix": [1, 5], "x": 17.25, "y": 0},
|
||||
{"label": "\u00ac", "matrix": [2, 0], "x": 0, "y": 1.5},
|
||||
{"label": "!", "matrix": [2, 1], "x": 1, "y": 1.5},
|
||||
{"label": "\"", "matrix": [2, 2], "x": 2, "y": 1.5},
|
||||
{"label": "\u00a3", "matrix": [2, 3], "x": 3, "y": 1.5},
|
||||
{"label": "$", "matrix": [2, 4], "x": 4, "y": 1.5},
|
||||
{"label": "%", "matrix": [2, 5], "x": 5, "y": 1.5},
|
||||
{"label": "^", "matrix": [2, 6], "x": 6, "y": 1.5},
|
||||
{"label": "&", "matrix": [2, 7], "x": 7, "y": 1.5},
|
||||
{"label": "*", "matrix": [2, 8], "x": 8, "y": 1.5},
|
||||
{"label": "(", "matrix": [2, 9], "x": 9, "y": 1.5},
|
||||
{"label": ")", "matrix": [3, 0], "x": 10, "y": 1.5},
|
||||
{"label": "_", "matrix": [3, 1], "x": 11, "y": 1.5},
|
||||
{"label": "+", "matrix": [3, 2], "x": 12, "y": 1.5},
|
||||
{"label": "Backspace", "matrix": [3, 3], "x": 13, "y": 1.5, "w": 2},
|
||||
{"label": "Insert", "matrix": [3, 4], "x": 15.25, "y": 1.5},
|
||||
{"label": "Home", "matrix": [3, 5], "x": 16.25, "y": 1.5},
|
||||
{"label": "PgUp", "matrix": [3, 6], "x": 17.25, "y": 1.5},
|
||||
{"label": "Num Lock", "matrix": [3, 7], "x": 18.5, "y": 1.5},
|
||||
{"label": "/", "matrix": [3, 8], "x": 19.5, "y": 1.5},
|
||||
{"label": "*", "matrix": [3, 9], "x": 20.5, "y": 1.5},
|
||||
{"label": "-", "matrix": [1, 9], "x": 21.5, "y": 1.5},
|
||||
{"label": "Tab", "matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5},
|
||||
{"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 2.5},
|
||||
{"label": "W", "matrix": [4, 2], "x": 2.5, "y": 2.5},
|
||||
{"label": "E", "matrix": [4, 3], "x": 3.5, "y": 2.5},
|
||||
{"label": "R", "matrix": [4, 4], "x": 4.5, "y": 2.5},
|
||||
{"label": "T", "matrix": [4, 5], "x": 5.5, "y": 2.5},
|
||||
{"label": "Y", "matrix": [4, 6], "x": 6.5, "y": 2.5},
|
||||
{"label": "U", "matrix": [4, 7], "x": 7.5, "y": 2.5},
|
||||
{"label": "I", "matrix": [4, 8], "x": 8.5, "y": 2.5},
|
||||
{"label": "O", "matrix": [4, 9], "x": 9.5, "y": 2.5},
|
||||
{"label": "P", "matrix": [5, 0], "x": 10.5, "y": 2.5},
|
||||
{"label": "{", "matrix": [5, 1], "x": 11.5, "y": 2.5},
|
||||
{"label": "}", "matrix": [5, 2], "x": 12.5, "y": 2.5},
|
||||
{"label": "|", "matrix": [5, 3], "x": 13.5, "y": 2.5, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [5, 4], "x": 15.25, "y": 2.5},
|
||||
{"label": "End", "matrix": [5, 5], "x": 16.25, "y": 2.5},
|
||||
{"label": "PgDn", "matrix": [5, 6], "x": 17.25, "y": 2.5},
|
||||
{"label": "7", "matrix": [5, 7], "x": 18.5, "y": 2.5},
|
||||
{"label": "8", "matrix": [5, 8], "x": 19.5, "y": 2.5},
|
||||
{"label": "9", "matrix": [5, 9], "x": 20.5, "y": 2.5},
|
||||
{"label": "+", "matrix": [1, 8], "x": 21.5, "y": 2.5},
|
||||
{"label": "Caps Lock", "matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75},
|
||||
{"label": "A", "matrix": [6, 1], "x": 1.75, "y": 3.5},
|
||||
{"label": "S", "matrix": [6, 2], "x": 2.75, "y": 3.5},
|
||||
{"label": "D", "matrix": [6, 3], "x": 3.75, "y": 3.5},
|
||||
{"label": "F", "matrix": [6, 4], "x": 4.75, "y": 3.5},
|
||||
{"label": "G", "matrix": [6, 5], "x": 5.75, "y": 3.5},
|
||||
{"label": "H", "matrix": [6, 6], "x": 6.75, "y": 3.5},
|
||||
{"label": "J", "matrix": [6, 7], "x": 7.75, "y": 3.5},
|
||||
{"label": "K", "matrix": [6, 8], "x": 8.75, "y": 3.5},
|
||||
{"label": "L", "matrix": [6, 9], "x": 9.75, "y": 3.5},
|
||||
{"label": ":", "matrix": [7, 0], "x": 10.75, "y": 3.5},
|
||||
{"label": "@", "matrix": [7, 1], "x": 11.75, "y": 3.5},
|
||||
{"label": "~", "matrix": [7, 2], "x": 12.75, "y": 3.5},
|
||||
{"label": "Enter", "matrix": [7, 3], "x": 13.75, "y": 3.5, "w": 1.25},
|
||||
{"label": "4", "matrix": [7, 6], "x": 18.5, "y": 3.5},
|
||||
{"label": "5", "matrix": [7, 7], "x": 19.5, "y": 3.5},
|
||||
{"label": "6", "matrix": [7, 8], "x": 20.5, "y": 3.5},
|
||||
{"label": "=", "matrix": [7, 9], "x": 21.5, "y": 3.5},
|
||||
{"label": "Shift", "matrix": [8, 0], "x": 0, "y": 4.5, "w": 1.25},
|
||||
{"label": "|", "matrix": [8, 1], "x": 1.25, "y": 4.5},
|
||||
{"label": "Z", "matrix": [8, 2], "x": 2.25, "y": 4.5},
|
||||
{"label": "X", "matrix": [8, 3], "x": 3.25, "y": 4.5},
|
||||
{"label": "C", "matrix": [8, 4], "x": 4.25, "y": 4.5},
|
||||
{"label": "V", "matrix": [8, 5], "x": 5.25, "y": 4.5},
|
||||
{"label": "B", "matrix": [8, 6], "x": 6.25, "y": 4.5},
|
||||
{"label": "N", "matrix": [8, 7], "x": 7.25, "y": 4.5},
|
||||
{"label": "M", "matrix": [8, 8], "x": 8.25, "y": 4.5},
|
||||
{"label": "<", "matrix": [8, 9], "x": 9.25, "y": 4.5},
|
||||
{"label": ">", "matrix": [9, 0], "x": 10.25, "y": 4.5},
|
||||
{"label": "?", "matrix": [9, 1], "x": 11.25, "y": 4.5},
|
||||
{"label": "Shift", "matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 1.75},
|
||||
{"label": "|", "matrix": [9, 3], "x": 14, "y": 4.5},
|
||||
{"label": "\u2191", "matrix": [9, 4], "x": 16.25, "y": 4.5},
|
||||
{"label": "1", "matrix": [9, 6], "x": 18.5, "y": 4.5},
|
||||
{"label": "2", "matrix": [9, 7], "x": 19.5, "y": 4.5},
|
||||
{"label": "3", "matrix": [9, 8], "x": 20.5, "y": 4.5},
|
||||
{"label": "Enter", "matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2},
|
||||
{"label": "Ctrl", "matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25},
|
||||
{"label": "Win", "matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25},
|
||||
{"label": " ", "matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25},
|
||||
{"label": "AltGr ", "matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25},
|
||||
{"label": "Win", "matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25},
|
||||
{"label": "\u2190", "matrix": [11, 4], "x": 15.25, "y": 5.5},
|
||||
{"label": "\u2193", "matrix": [11, 5], "x": 16.25, "y": 5.5},
|
||||
{"label": "\u2192", "matrix": [11, 6], "x": 17.25, "y": 5.5},
|
||||
{"label": "0", "matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2},
|
||||
{"label": ".", "matrix": [11, 8], "x": 20.5, "y": 5.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_fullsize_ansi": {
|
||||
"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.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 7], "x": 8.5, "y": 0},
|
||||
{"matrix": [0, 8], "x": 9.5, "y": 0},
|
||||
{"matrix": [0, 9], "x": 11, "y": 0},
|
||||
{"matrix": [1, 0], "x": 12, "y": 0},
|
||||
{"matrix": [1, 1], "x": 13, "y": 0},
|
||||
{"matrix": [1, 2], "x": 14, "y": 0},
|
||||
{"matrix": [1, 3], "x": 15.25, "y": 0},
|
||||
{"matrix": [1, 4], "x": 16.25, "y": 0},
|
||||
{"matrix": [1, 5], "x": 17.25, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1.5},
|
||||
{"matrix": [2, 1], "x": 1, "y": 1.5},
|
||||
{"matrix": [2, 2], "x": 2, "y": 1.5},
|
||||
{"matrix": [2, 3], "x": 3, "y": 1.5},
|
||||
{"matrix": [2, 4], "x": 4, "y": 1.5},
|
||||
{"matrix": [2, 5], "x": 5, "y": 1.5},
|
||||
{"matrix": [2, 6], "x": 6, "y": 1.5},
|
||||
{"matrix": [2, 7], "x": 7, "y": 1.5},
|
||||
{"matrix": [2, 8], "x": 8, "y": 1.5},
|
||||
{"matrix": [2, 9], "x": 9, "y": 1.5},
|
||||
{"matrix": [3, 0], "x": 10, "y": 1.5},
|
||||
{"matrix": [3, 1], "x": 11, "y": 1.5},
|
||||
{"matrix": [3, 2], "x": 12, "y": 1.5},
|
||||
{"matrix": [3, 3], "x": 13, "y": 1.5, "w": 2},
|
||||
{"matrix": [3, 4], "x": 15.25, "y": 1.5},
|
||||
{"matrix": [3, 5], "x": 16.25, "y": 1.5},
|
||||
{"matrix": [3, 6], "x": 17.25, "y": 1.5},
|
||||
{"matrix": [3, 7], "x": 18.5, "y": 1.5},
|
||||
{"matrix": [3, 8], "x": 19.5, "y": 1.5},
|
||||
{"matrix": [3, 9], "x": 20.5, "y": 1.5},
|
||||
{"matrix": [1, 9], "x": 21.5, "y": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 2.5},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 2.5},
|
||||
{"matrix": [4, 3], "x": 3.5, "y": 2.5},
|
||||
{"matrix": [4, 4], "x": 4.5, "y": 2.5},
|
||||
{"matrix": [4, 5], "x": 5.5, "y": 2.5},
|
||||
{"matrix": [4, 6], "x": 6.5, "y": 2.5},
|
||||
{"matrix": [4, 7], "x": 7.5, "y": 2.5},
|
||||
{"matrix": [4, 8], "x": 8.5, "y": 2.5},
|
||||
{"matrix": [4, 9], "x": 9.5, "y": 2.5},
|
||||
{"matrix": [5, 0], "x": 10.5, "y": 2.5},
|
||||
{"matrix": [5, 1], "x": 11.5, "y": 2.5},
|
||||
{"matrix": [5, 2], "x": 12.5, "y": 2.5},
|
||||
{"matrix": [5, 3], "x": 13.5, "y": 2.5, "w": 1.5},
|
||||
{"matrix": [5, 4], "x": 15.25, "y": 2.5},
|
||||
{"matrix": [5, 5], "x": 16.25, "y": 2.5},
|
||||
{"matrix": [5, 6], "x": 17.25, "y": 2.5},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 2.5},
|
||||
{"matrix": [5, 8], "x": 19.5, "y": 2.5},
|
||||
{"matrix": [5, 9], "x": 20.5, "y": 2.5},
|
||||
{"matrix": [1, 8], "x": 21.5, "y": 2.5, "h": 2},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75},
|
||||
{"matrix": [6, 1], "x": 1.75, "y": 3.5},
|
||||
{"matrix": [6, 2], "x": 2.75, "y": 3.5},
|
||||
{"matrix": [6, 3], "x": 3.75, "y": 3.5},
|
||||
{"matrix": [6, 4], "x": 4.75, "y": 3.5},
|
||||
{"matrix": [6, 5], "x": 5.75, "y": 3.5},
|
||||
{"matrix": [6, 6], "x": 6.75, "y": 3.5},
|
||||
{"matrix": [6, 7], "x": 7.75, "y": 3.5},
|
||||
{"matrix": [6, 8], "x": 8.75, "y": 3.5},
|
||||
{"matrix": [6, 9], "x": 9.75, "y": 3.5},
|
||||
{"matrix": [7, 0], "x": 10.75, "y": 3.5},
|
||||
{"matrix": [7, 1], "x": 11.75, "y": 3.5},
|
||||
{"matrix": [7, 3], "x": 12.75, "y": 3.5, "w": 2.25},
|
||||
{"matrix": [7, 6], "x": 18.5, "y": 3.5},
|
||||
{"matrix": [7, 7], "x": 19.5, "y": 3.5},
|
||||
{"matrix": [7, 8], "x": 20.5, "y": 3.5},
|
||||
{"matrix": [8, 0], "x": 0, "y": 4.5, "w": 2.25},
|
||||
{"matrix": [8, 2], "x": 2.25, "y": 4.5},
|
||||
{"matrix": [8, 3], "x": 3.25, "y": 4.5},
|
||||
{"matrix": [8, 4], "x": 4.25, "y": 4.5},
|
||||
{"matrix": [8, 5], "x": 5.25, "y": 4.5},
|
||||
{"matrix": [8, 6], "x": 6.25, "y": 4.5},
|
||||
{"matrix": [8, 7], "x": 7.25, "y": 4.5},
|
||||
{"matrix": [8, 8], "x": 8.25, "y": 4.5},
|
||||
{"matrix": [8, 9], "x": 9.25, "y": 4.5},
|
||||
{"matrix": [9, 0], "x": 10.25, "y": 4.5},
|
||||
{"matrix": [9, 1], "x": 11.25, "y": 4.5},
|
||||
{"matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 2.75},
|
||||
{"matrix": [9, 4], "x": 16.25, "y": 4.5},
|
||||
{"matrix": [9, 6], "x": 18.5, "y": 4.5},
|
||||
{"matrix": [9, 7], "x": 19.5, "y": 4.5},
|
||||
{"matrix": [9, 8], "x": 20.5, "y": 4.5},
|
||||
{"matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2},
|
||||
{"matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25},
|
||||
{"matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 4], "x": 15.25, "y": 5.5},
|
||||
{"matrix": [11, 5], "x": 16.25, "y": 5.5},
|
||||
{"matrix": [11, 6], "x": 17.25, "y": 5.5},
|
||||
{"matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2},
|
||||
{"matrix": [11, 8], "x": 20.5, "y": 5.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_fullsize_iso": {
|
||||
"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.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 7], "x": 8.5, "y": 0},
|
||||
{"matrix": [0, 8], "x": 9.5, "y": 0},
|
||||
{"matrix": [0, 9], "x": 11, "y": 0},
|
||||
{"matrix": [1, 0], "x": 12, "y": 0},
|
||||
{"matrix": [1, 1], "x": 13, "y": 0},
|
||||
{"matrix": [1, 2], "x": 14, "y": 0},
|
||||
{"matrix": [1, 3], "x": 15.25, "y": 0},
|
||||
{"matrix": [1, 4], "x": 16.25, "y": 0},
|
||||
{"matrix": [1, 5], "x": 17.25, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1.5},
|
||||
{"matrix": [2, 1], "x": 1, "y": 1.5},
|
||||
{"matrix": [2, 2], "x": 2, "y": 1.5},
|
||||
{"matrix": [2, 3], "x": 3, "y": 1.5},
|
||||
{"matrix": [2, 4], "x": 4, "y": 1.5},
|
||||
{"matrix": [2, 5], "x": 5, "y": 1.5},
|
||||
{"matrix": [2, 6], "x": 6, "y": 1.5},
|
||||
{"matrix": [2, 7], "x": 7, "y": 1.5},
|
||||
{"matrix": [2, 8], "x": 8, "y": 1.5},
|
||||
{"matrix": [2, 9], "x": 9, "y": 1.5},
|
||||
{"matrix": [3, 0], "x": 10, "y": 1.5},
|
||||
{"matrix": [3, 1], "x": 11, "y": 1.5},
|
||||
{"matrix": [3, 2], "x": 12, "y": 1.5},
|
||||
{"matrix": [3, 3], "x": 13, "y": 1.5, "w": 2},
|
||||
{"matrix": [3, 4], "x": 15.25, "y": 1.5},
|
||||
{"matrix": [3, 5], "x": 16.25, "y": 1.5},
|
||||
{"matrix": [3, 6], "x": 17.25, "y": 1.5},
|
||||
{"matrix": [3, 7], "x": 18.5, "y": 1.5},
|
||||
{"matrix": [3, 8], "x": 19.5, "y": 1.5},
|
||||
{"matrix": [3, 9], "x": 20.5, "y": 1.5},
|
||||
{"matrix": [1, 9], "x": 21.5, "y": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 2.5},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 2.5},
|
||||
{"matrix": [4, 3], "x": 3.5, "y": 2.5},
|
||||
{"matrix": [4, 4], "x": 4.5, "y": 2.5},
|
||||
{"matrix": [4, 5], "x": 5.5, "y": 2.5},
|
||||
{"matrix": [4, 6], "x": 6.5, "y": 2.5},
|
||||
{"matrix": [4, 7], "x": 7.5, "y": 2.5},
|
||||
{"matrix": [4, 8], "x": 8.5, "y": 2.5},
|
||||
{"matrix": [4, 9], "x": 9.5, "y": 2.5},
|
||||
{"matrix": [5, 0], "x": 10.5, "y": 2.5},
|
||||
{"matrix": [5, 1], "x": 11.5, "y": 2.5},
|
||||
{"matrix": [5, 2], "x": 12.5, "y": 2.5},
|
||||
{"matrix": [5, 4], "x": 15.25, "y": 2.5},
|
||||
{"matrix": [5, 5], "x": 16.25, "y": 2.5},
|
||||
{"matrix": [5, 6], "x": 17.25, "y": 2.5},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 2.5},
|
||||
{"matrix": [5, 8], "x": 19.5, "y": 2.5},
|
||||
{"matrix": [5, 9], "x": 20.5, "y": 2.5},
|
||||
{"matrix": [1, 8], "x": 21.5, "y": 2.5, "h": 2},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75},
|
||||
{"matrix": [6, 1], "x": 1.75, "y": 3.5},
|
||||
{"matrix": [6, 2], "x": 2.75, "y": 3.5},
|
||||
{"matrix": [6, 3], "x": 3.75, "y": 3.5},
|
||||
{"matrix": [6, 4], "x": 4.75, "y": 3.5},
|
||||
{"matrix": [6, 5], "x": 5.75, "y": 3.5},
|
||||
{"matrix": [6, 6], "x": 6.75, "y": 3.5},
|
||||
{"matrix": [6, 7], "x": 7.75, "y": 3.5},
|
||||
{"matrix": [6, 8], "x": 8.75, "y": 3.5},
|
||||
{"matrix": [6, 9], "x": 9.75, "y": 3.5},
|
||||
{"matrix": [7, 0], "x": 10.75, "y": 3.5},
|
||||
{"matrix": [7, 1], "x": 11.75, "y": 3.5},
|
||||
{"matrix": [7, 2], "x": 12.75, "y": 3.5},
|
||||
{"matrix": [7, 3], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2},
|
||||
{"matrix": [7, 6], "x": 18.5, "y": 3.5},
|
||||
{"matrix": [7, 7], "x": 19.5, "y": 3.5},
|
||||
{"matrix": [7, 8], "x": 20.5, "y": 3.5},
|
||||
{"matrix": [8, 0], "x": 0, "y": 4.5, "w": 1.25},
|
||||
{"matrix": [8, 1], "x": 1.25, "y": 4.5},
|
||||
{"matrix": [8, 2], "x": 2.25, "y": 4.5},
|
||||
{"matrix": [8, 3], "x": 3.25, "y": 4.5},
|
||||
{"matrix": [8, 4], "x": 4.25, "y": 4.5},
|
||||
{"matrix": [8, 5], "x": 5.25, "y": 4.5},
|
||||
{"matrix": [8, 6], "x": 6.25, "y": 4.5},
|
||||
{"matrix": [8, 7], "x": 7.25, "y": 4.5},
|
||||
{"matrix": [8, 8], "x": 8.25, "y": 4.5},
|
||||
{"matrix": [8, 9], "x": 9.25, "y": 4.5},
|
||||
{"matrix": [9, 0], "x": 10.25, "y": 4.5},
|
||||
{"matrix": [9, 1], "x": 11.25, "y": 4.5},
|
||||
{"matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 2.75},
|
||||
{"matrix": [9, 4], "x": 16.25, "y": 4.5},
|
||||
{"matrix": [9, 6], "x": 18.5, "y": 4.5},
|
||||
{"matrix": [9, 7], "x": 19.5, "y": 4.5},
|
||||
{"matrix": [9, 8], "x": 20.5, "y": 4.5},
|
||||
{"matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2},
|
||||
{"matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25},
|
||||
{"matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 4], "x": 15.25, "y": 5.5},
|
||||
{"matrix": [11, 5], "x": 16.25, "y": 5.5},
|
||||
{"matrix": [11, 6], "x": 17.25, "y": 5.5},
|
||||
{"matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2},
|
||||
{"matrix": [11, 8], "x": 20.5, "y": 5.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
27
keyboards/handwired/at101ish/keymaps/default/keymap.c
Normal file
27
keyboards/handwired/at101ish/keymaps/default/keymap.c
Normal file
@ -0,0 +1,27 @@
|
||||
/* Copyright 2025 Henrik Otte Sørensen (@henrikottesorensen)
|
||||
*
|
||||
* 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(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT)
|
||||
};
|
59
keyboards/handwired/at101ish/keymaps/osdetect/keymap.c
Normal file
59
keyboards/handwired/at101ish/keymaps/osdetect/keymap.c
Normal file
@ -0,0 +1,59 @@
|
||||
/* Copyright 2025 Henrik Otte Sørensen (@henrikottesorensen)
|
||||
*
|
||||
* 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 {
|
||||
_PC = 0,
|
||||
_MAC,
|
||||
_FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_PC] = LAYOUT_all(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
|
||||
[_MAC] = LAYOUT_all(
|
||||
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_WSCH, KC_LPAD, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_NUBS, 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_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
|
||||
KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPACE, KC_RGUI, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
|
||||
[_FN] = LAYOUT_all(
|
||||
_______, 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_VOLU, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DF(_PC), _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______,
|
||||
_______, _______, _______, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, QK_BOOT, _______, DF(_MAC),_______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_APP, KC_MPRV, KC_MSTP, KC_MNXT, _______, _______)
|
||||
};
|
||||
|
||||
bool process_detected_host_os_user(os_variant_t detected_os) {
|
||||
/* If Apple, swap to macOS layer. */
|
||||
if (detected_os == OS_MACOS || detected_os == OS_IOS) {
|
||||
set_single_default_layer(_MAC);
|
||||
}
|
||||
else /* Else use PC layer */ {
|
||||
set_single_default_layer(_PC);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
1
keyboards/handwired/at101ish/keymaps/osdetect/rules.mk
Normal file
1
keyboards/handwired/at101ish/keymaps/osdetect/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
OS_DETECTION_ENABLE = yes
|
25
keyboards/handwired/at101ish/readme.md
Normal file
25
keyboards/handwired/at101ish/readme.md
Normal file
@ -0,0 +1,25 @@
|
||||
# AT101(-ish)
|
||||
|
||||
A replacement PCB for Dell AT101 family. (In theory) supports AT101, AT101W, AT102, AT102W, maybe other Bigfoot platform boards.
|
||||
|
||||
Keyboard Maintainer: QMK Community and Henrik O. Sørensen
|
||||
Hardware Supported: AT101(ish) PCB
|
||||
Hardware Availability: https://github.com/henrikosorensen/keyboard_pcbs/tree/master/at101_pcb
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make handwired/at101ish:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make handwired/at101ish: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 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 programming button on the teensy 2.0 PCB.
|
||||
|
13
keyboards/handwired/erikpeyronson/erkbd/config.h
Normal file
13
keyboards/handwired/erikpeyronson/erkbd/config.h
Normal file
@ -0,0 +1,13 @@
|
||||
// Copyright 2025 Erik Peyronson @erikpeyronson
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
|
||||
|
||||
#define I2C_DRIVER I2CD1
|
||||
#define OLED_IC OLED_IC_SH1106
|
||||
#define OLED_COLUMN_OFFSET 2
|
||||
|
||||
#define OLED_DISPLAY_128X64
|
63
keyboards/handwired/erikpeyronson/erkbd/erkbd.c
Normal file
63
keyboards/handwired/erikpeyronson/erkbd/erkbd.c
Normal file
@ -0,0 +1,63 @@
|
||||
// Copyright 2025 Erik Peyronson @erikpeyronson
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
static void oled_render_logo(void) {
|
||||
// clang-format off
|
||||
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
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
oled_write_P(qmk_logo, false);
|
||||
}
|
||||
|
||||
static void render_layer(void) {
|
||||
oled_write_P(PSTR("Layer: "), false);
|
||||
oled_write_ln(get_u8_str(get_highest_layer(layer_state), ' '), false);
|
||||
}
|
||||
|
||||
static void render_locks(void) {
|
||||
led_t led_config = host_keyboard_led_state();
|
||||
oled_write_P(PSTR("Caps "), led_config.caps_lock);
|
||||
oled_write_P(PSTR("Scrl "), led_config.scroll_lock);
|
||||
oled_write_P(PSTR("Num "), led_config.num_lock);
|
||||
#ifdef CAPS_WORD_ENABLE
|
||||
oled_write_P(PSTR("Word "), is_caps_word_on());
|
||||
#endif
|
||||
oled_advance_page(true);
|
||||
}
|
||||
|
||||
static void render_mods(void) {
|
||||
uint8_t mod_state = get_mods();
|
||||
oled_write_P("Ctrl ", mod_state & MOD_MASK_CTRL);
|
||||
oled_write_P("Shift ", mod_state & MOD_MASK_SHIFT);
|
||||
oled_write_P("Alt ", mod_state & MOD_MASK_ALT);
|
||||
oled_write_P("Gui", mod_state & MOD_MASK_GUI);
|
||||
oled_advance_page(true);
|
||||
}
|
||||
|
||||
static void render_delimeter(void) {
|
||||
oled_write_ln_P(PSTR("------------------"), false);
|
||||
}
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
if (!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
if (is_keyboard_left()) {
|
||||
oled_render_logo();
|
||||
} else {
|
||||
render_delimeter();
|
||||
render_locks();
|
||||
render_delimeter();
|
||||
render_mods();
|
||||
render_delimeter();
|
||||
render_layer();
|
||||
render_delimeter();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
107
keyboards/handwired/erikpeyronson/erkbd/keyboard.json
Normal file
107
keyboards/handwired/erikpeyronson/erkbd/keyboard.json
Normal file
@ -0,0 +1,107 @@
|
||||
{
|
||||
"manufacturer": "Erik Peyronson",
|
||||
"keyboard_name": "erkbd",
|
||||
"maintainer": "erikpeyronson",
|
||||
"bootloader": "rp2040",
|
||||
"bootloader_instructions": "Double tap the reset button on the controller board if accessable. If not hold down bootmagic key while powering on. Left side: row 0 column 0. (The tab key on regular keyboard). Right side: row 5 column 4 (the Backspace key on regular keyboard)",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP7", "pin_b": "GP8"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"oled": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP8", "GP9", "GP10", "GP11", "GP12", "GP13"],
|
||||
"rows": ["GP4", "GP5", "GP6", "GP7"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"split": {
|
||||
"bootmagic": {
|
||||
"matrix": [4, 5]
|
||||
},
|
||||
"enabled": true,
|
||||
"encoder": {
|
||||
"right": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP7", "pin_b": "GP8"}
|
||||
]
|
||||
}
|
||||
},
|
||||
"handedness": {
|
||||
"pin": "GP1"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"right": {
|
||||
"cols": ["GP9", "GP10", "GP11", "GP12", "GP13", "GP14"],
|
||||
"rows": ["GP28", "GP27", "GP26", "GP15"]
|
||||
}
|
||||
},
|
||||
"serial": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP0"
|
||||
}
|
||||
},
|
||||
"url": "https://github.com/erikpeyronson/erkbd",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x1234",
|
||||
"vid": "0xFEED"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_split_3x6_5": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0.4},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0.3},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0.1},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0.1},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0.2},
|
||||
{"matrix": [4, 0], "x": 9, "y": 0.2},
|
||||
{"matrix": [4, 1], "x": 10, "y": 0.1},
|
||||
{"matrix": [4, 2], "x": 11, "y": 0},
|
||||
{"matrix": [4, 3], "x": 12, "y": 0.1},
|
||||
{"matrix": [4, 4], "x": 13, "y": 0.3},
|
||||
{"matrix": [4, 5], "x": 14, "y": 0.4},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1.4},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1.3},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1.1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4, "y": 1.1},
|
||||
{"matrix": [1, 5], "x": 5, "y": 1.2},
|
||||
{"matrix": [5, 0], "x": 9, "y": 1.2},
|
||||
{"matrix": [5, 1], "x": 10, "y": 1.1},
|
||||
{"matrix": [5, 2], "x": 11, "y": 1},
|
||||
{"matrix": [5, 3], "x": 12, "y": 1.1},
|
||||
{"matrix": [5, 4], "x": 13, "y": 1.3},
|
||||
{"matrix": [5, 5], "x": 14, "y": 1.4},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2.4},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2.3},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2.1},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4, "y": 2.1},
|
||||
{"matrix": [2, 5], "x": 5, "y": 2.2},
|
||||
{"matrix": [6, 0], "x": 9, "y": 2.2},
|
||||
{"matrix": [6, 1], "x": 10, "y": 2.1},
|
||||
{"matrix": [6, 2], "x": 11, "y": 2},
|
||||
{"matrix": [6, 3], "x": 12, "y": 2.1},
|
||||
{"matrix": [6, 4], "x": 13, "y": 2.3},
|
||||
{"matrix": [6, 5], "x": 14, "y": 2.4},
|
||||
{"matrix": [3, 1], "x": 3, "y": 3.4},
|
||||
{"matrix": [3, 2], "x": 4, "y": 3.4},
|
||||
{"matrix": [3, 3], "x": 5, "y": 3.5},
|
||||
{"matrix": [3, 4], "x": 6, "y": 3.7},
|
||||
{"matrix": [3, 5], "x": 6, "y": 2.7},
|
||||
{"matrix": [7, 0], "x": 8, "y": 2.7},
|
||||
{"matrix": [7, 1], "x": 8, "y": 3.7},
|
||||
{"matrix": [7, 2], "x": 9, "y": 3.5},
|
||||
{"matrix": [7, 3], "x": 10, "y": 3.4},
|
||||
{"matrix": [7, 4], "x": 11, "y": 3.4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,52 @@
|
||||
// Copyright 2025 Qmk, Erik Peyronson @erikpeyronson
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// NOTE: This keymap is for debugging purposes to have firmware to test the matrix when building the keyboard. If you intend to build this keyboard
|
||||
// you should copy this to your fork or userspace repository and create your own.
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_split_3x6_5(
|
||||
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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LBRC, KC_RBRC, KC_LGUI, KC_BSPC, KC_SPC, KC_SPC, KC_ENT, KC_RALT, KC_LPRN, KC_RPRN
|
||||
)
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
void keyboard_post_init_user(void) {
|
||||
#ifdef CONSOLE_ENABLE
|
||||
debug_enable = true;
|
||||
debug_matrix = true;
|
||||
#endif
|
||||
}
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
// If console is enabled, it will print the matrix position and status of each key pressed
|
||||
#ifdef CONSOLE_ENABLE
|
||||
uprintf("KL: kc: 0x%04X, col: %2u, row: %2u, pressed: %u, time: %5u, int: %u, count: %u\n", keycode, record->event.key.col, record->event.key.row, record->event.pressed, record->event.time, record->tap.interrupted, record->tap.count);
|
||||
#endif
|
||||
return true;
|
||||
}
|
||||
|
||||
// This function prints which half the keyboard considers itself to be which is
|
||||
// useful for verify if the handedness pin and display is correctly set up when building
|
||||
#ifdef OLED_ENABLE
|
||||
bool oled_task_user(void) {
|
||||
if (is_keyboard_left()) {
|
||||
oled_write_P(PSTR("left"), false);
|
||||
} else {
|
||||
oled_write_P(PSTR("right"), false);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = {ENCODER_CCW_CW(KC_UP, KC_DOWN), ENCODER_CCW_CW(KC_RIGHT, KC_LEFT)}
|
||||
};
|
||||
#endif
|
@ -0,0 +1,2 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
CONSOLE_ENABLE = yes
|
@ -0,0 +1,24 @@
|
||||
{
|
||||
"keyboard": "handwired/erikpeyronson/erkbd",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT_split_3x6_5",
|
||||
"layers": [
|
||||
[
|
||||
"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_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "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_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_RSFT",
|
||||
"KC_LBRC", "KC_RBRC", "KC_LGUI", "KC_BSPC", "KC_SPC", "KC_SPC", "KC_ENT", "KC_RALT", "KC_LPRN", "KC_RPRN"
|
||||
]
|
||||
],
|
||||
"config": {
|
||||
"features": {
|
||||
"encoder_map": true
|
||||
}
|
||||
},
|
||||
"encoders": [
|
||||
[
|
||||
{ "ccw": "KC_UP", "cw": "KC_DOWN" },
|
||||
{ "ccw": "KC_RIGHT", "cw": "KC_LEFT" }
|
||||
]
|
||||
]
|
||||
}
|
28
keyboards/handwired/erikpeyronson/erkbd/readme.md
Normal file
28
keyboards/handwired/erikpeyronson/erkbd/readme.md
Normal file
@ -0,0 +1,28 @@
|
||||
# handwired/erikpeyronson/erkbd
|
||||
|
||||

|
||||
|
||||
3D printed, handwired 44 key split keyboard featuring two encoders, two 1.3" 128x64 oled displays using the waveshare rp2040zero development board.
|
||||
|
||||
* Keyboard Maintainer: [Erik Peyronson](https://github.com/erikpeyronson)
|
||||
* Hardware Supported: See keyboard repository on [github](https://github.com/erikpeyronson/erkbd)
|
||||
* Hardware Availability: See keyboard repository on [github](https://github.com/erikpeyronson/erkbd)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make handwired/erikpeyronson/erkbd:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
Enter bootloader, drag and drop .uft2 file on the removable storage
|
||||
|
||||
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**: For left half hold down the key at (0,0) in the matrix (correspons with the tab key) and plug in the keyboard.
|
||||
For left half half the key is (4,5) (corresponds with the backspace key)
|
||||
* **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
|
||||
Enter the bootloader in 3 ways:
|
21
keyboards/handwired/franky36/config.h
Normal file
21
keyboards/handwired/franky36/config.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* Copyright 2024-2025 Grigory Avdyushin
|
||||
*
|
||||
* 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 I2C_DRIVER I2CD0
|
||||
#define I2C1_SDA_PIN GP0
|
||||
#define I2C1_SCL_PIN GP1
|
68
keyboards/handwired/franky36/franky36.c
Normal file
68
keyboards/handwired/franky36/franky36.c
Normal file
@ -0,0 +1,68 @@
|
||||
/* Copyright 2024-2025 Grigory Avdyushin
|
||||
*
|
||||
* 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
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
|
||||
static void render_logo(void) {
|
||||
static const char PROGMEM qmk_logo[] = {
|
||||
0x80, 0x81, 0x82, 0x83, 0x84,
|
||||
0xA0, 0xA1, 0xA2, 0xA3, 0xA4,
|
||||
0xC0, 0xC1, 0xC2, 0xC3, 0xC4, 0x00, 0x0A, 0x0A
|
||||
};
|
||||
|
||||
oled_write_P(qmk_logo, false);
|
||||
}
|
||||
|
||||
static void render_mod_status(uint8_t modifiers) {
|
||||
oled_write_P(PSTR("MODS:"), false);
|
||||
oled_write_P(PSTR("S"), (modifiers & MOD_MASK_SHIFT));
|
||||
oled_write_P(PSTR("C"), (modifiers & MOD_MASK_CTRL));
|
||||
oled_write_P(PSTR("A"), (modifiers & MOD_MASK_ALT));
|
||||
oled_write_ln_P(PSTR("G"), (modifiers & MOD_MASK_GUI));
|
||||
oled_write_ln_P(PSTR(" "), false);
|
||||
}
|
||||
|
||||
static void render_layer_state(void) {
|
||||
oled_write_ln_P(PSTR(" "), false);
|
||||
oled_write_P("BASE ", layer_state_is(0));
|
||||
oled_write_P("LOWER", layer_state_is(1));
|
||||
oled_write_P("RAISE", layer_state_is(2));
|
||||
oled_write_P("NAV ", layer_state_is(3));
|
||||
oled_write_ln_P(PSTR(" "), false);
|
||||
}
|
||||
|
||||
static void render_capsword_state(bool on) {
|
||||
oled_write_ln_P("CAPSW", on);
|
||||
}
|
||||
|
||||
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_270;
|
||||
}
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
if (!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
render_logo();
|
||||
render_layer_state();
|
||||
render_mod_status(get_mods() | get_oneshot_mods());
|
||||
render_capsword_state(is_caps_word_on());
|
||||
return false;
|
||||
}
|
||||
|
||||
#endif
|
21
keyboards/handwired/franky36/halconf.h
Normal file
21
keyboards/handwired/franky36/halconf.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* Copyright 2024-2025 Grigory Avdyushin
|
||||
*
|
||||
* 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>
|
72
keyboards/handwired/franky36/keyboard.json
Normal file
72
keyboards/handwired/franky36/keyboard.json
Normal file
@ -0,0 +1,72 @@
|
||||
{
|
||||
"manufacturer": "Grigory Avdyushin",
|
||||
"keyboard_name": "franky36",
|
||||
"maintainer": "Grigory Avdyushin",
|
||||
"bootloader": "rp2040",
|
||||
"caps_word": {
|
||||
"both_shifts_turns_on": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"caps_word": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"oled": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15", "GP26", "GP27", "GP28"],
|
||||
"rows": ["GP5", "GP4", "GP3", "GP2"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"url": "https://github.com/avdyushin/franky36",
|
||||
"usb": {
|
||||
"device_version": "0.2.0",
|
||||
"pid": "0x0001",
|
||||
"vid": "0xFEED"
|
||||
},
|
||||
"community_layouts": ["split_3x5_3"],
|
||||
"layouts": {
|
||||
"LAYOUT_split_3x5_3": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [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": [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": [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": [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, 6], "x": 6, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7, "y": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
123
keyboards/handwired/franky36/keymaps/default/keymap.c
Normal file
123
keyboards/handwired/franky36/keymaps/default/keymap.c
Normal file
@ -0,0 +1,123 @@
|
||||
/* Copyright 2024-2025 Grigory Avdyushin
|
||||
*
|
||||
* 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 my_layers {
|
||||
_BASE = 0,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_NAV,
|
||||
};
|
||||
|
||||
#define LOWER MO(_LOWER)
|
||||
#define RAISE MO(_RAISE)
|
||||
#define NAV MO(_NAV)
|
||||
|
||||
#define OSM_LSFT OSM(MOD_LSFT) // One Shot Right Shift
|
||||
|
||||
#define KC_SFT_Z SFT_T(KC_Z) // Left Shift when held, Z when tapped
|
||||
#define KC_SFT_SL RSFT_T(KC_SLSH) // Right Shift when held, / when tapped
|
||||
|
||||
#define KC_SFT_BSLS RSFT_T(KC_BSLS) // Right Shift when held, \ when tapped
|
||||
|
||||
#define KC_LWR_SPC LT(_LOWER, KC_SPC) // Lower layer when held, Space when tapped
|
||||
#define KC_RSE_BSPC LT(_RAISE, KC_BSPC) // Raise layer when held, Backspace when tapped
|
||||
#define KC_NAV_A LT(_NAV,KC_A) // Navigation layer when held, A when tapped
|
||||
|
||||
#define KC_CMD_TAB CMD_T(KC_TAB) // Left Command when held, Tab when tapped
|
||||
#define KC_CMD_ENT RCMD_T(KC_ENT) // Right Command when held, Enter when tapped
|
||||
|
||||
#define KC_CTL_ESC CTL_T(KC_ESC) // Left Control when held, Escape when tapped
|
||||
#define KC_OPT_OSM_SFT ROPT_T(OSM_LSFT) // Right Option when held, One Shot Shift when tapped
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
|
||||
* │ Q │ W │ E │ R │ T │ │ Y │ U │ I │ O │ P │
|
||||
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
|
||||
* │ A │ S │ D │ F │ G │ │ H │ J │ K │ L │ ;:│
|
||||
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
|
||||
* │⇧/Z│ X │ C │ V │ B │ │ N │ M │ ,<│ .>│⇧/?│
|
||||
* └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
|
||||
* ┌───┬───┬───┐ ┌───┬───┬───┐
|
||||
* │CTL│CMD│SPC│ │ENT│CMD│OPT│
|
||||
* └───┴───┴───┘ └───┴───┴───┘
|
||||
*/
|
||||
[_BASE] = LAYOUT_split_3x5_3(
|
||||
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
|
||||
KC_NAV_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN,
|
||||
KC_SFT_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SFT_SL,
|
||||
KC_CTL_ESC, KC_CMD_TAB, KC_LWR_SPC, KC_RSE_BSPC, KC_CMD_ENT, KC_ROPT
|
||||
),
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
|
||||
* │ 1!│ 2@│ 3#│ 4$│ 5%│ │ 6^│ 7&│ 8*│ 9(│ 0)│
|
||||
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
|
||||
* │ `~│ │ │ │ │ │ ← │ ↓ │ ↑ │ → │ '"│
|
||||
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
|
||||
* │ ⇧ │ │ │ │ │ │ -_│ =+│ [{│ ]}│ \|│
|
||||
* └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
|
||||
* ┌───┬───┬───┐ ┌───┬───┬───┐
|
||||
* │ │ │ │ │ │ │ │
|
||||
* └───┴───┴───┘ └───┴───┴───┘
|
||||
*/
|
||||
[_LOWER] = LAYOUT_split_3x5_3(
|
||||
KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0,
|
||||
KC_GRV, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, KC_QUOT,
|
||||
KC_LSFT, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_SFT_BSLS,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
|
||||
* │ F1│ F2│ F3│ F4│ F5│ │ F6│ F7│ F8│ F9│F10│
|
||||
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
|
||||
* │ │ │ │ │ │ │ │ │ │ │ │
|
||||
* └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
|
||||
* ┌───┬───┬───┐ ┌───┬───┬───┐
|
||||
* │ │ │ │ │ │ │ │
|
||||
* └───┴───┴───┘ └───┴───┴───┘
|
||||
*/
|
||||
[_RAISE] = LAYOUT_split_3x5_3(
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
),
|
||||
|
||||
/*
|
||||
* ┌───┬───┬───┬───┬───┐ ┌───┬───┬───┬───┬───┐
|
||||
* │ │ │ │ │ │ │HOM│ │ │END│ │
|
||||
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
|
||||
* │ │ │ │ │ │ │ ← │ ↓ │ ↑ │ → │ │
|
||||
* ├───┼───┼───┼───┼───┤ ├───┼───┼───┼───┼───┤
|
||||
* │ │ │ │ │ │ │PUP│ │ │PDN│ │
|
||||
* └───┴───┴───┴───┴───┘ └───┴───┴───┴───┴───┘
|
||||
* ┌───┬───┬───┐ ┌───┬───┬───┐
|
||||
* │ │ │ │ │ │ │ │
|
||||
* └───┴───┴───┘ └───┴───┴───┘
|
||||
*/
|
||||
[_NAV] = LAYOUT_split_3x5_3(
|
||||
_______, _______, _______, _______, _______, KC_HOME, _______, _______, KC_END, _______,
|
||||
_______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RIGHT, _______,
|
||||
_______, _______, _______, _______, _______, KC_PGUP, _______, _______, KC_PGDN, _______,
|
||||
_______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
24
keyboards/handwired/franky36/mcuconf.h
Normal file
24
keyboards/handwired/franky36/mcuconf.h
Normal file
@ -0,0 +1,24 @@
|
||||
/* Copyright 2024-2025 Grigory Avdyushin
|
||||
*
|
||||
* 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 RP_I2C_USE_I2C0
|
||||
#define RP_I2C_USE_I2C0 TRUE
|
||||
#undef RP_I2C_USE_I2C1
|
||||
#define RP_I2C_USE_I2C1 FALSE
|
25
keyboards/handwired/franky36/readme.md
Normal file
25
keyboards/handwired/franky36/readme.md
Normal file
@ -0,0 +1,25 @@
|
||||
# franky36
|
||||
|
||||
Franky36 is 36 key compact handwired split keyboard that uses single RP2040-Zero controller.
|
||||
|
||||
* Keyboard Maintainer: [Grigory Avdyushin](https://github.com/avdyushin)
|
||||
* Hardware Supported: RP2040-Zero
|
||||
* Hardware Availability: Handwired [franky36](https://github.com/avdyushin/franky36)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make franky36:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make franky36: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**: Hold down the reset button on the controller and plug in the keyboard
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
@ -2,7 +2,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#define ADC_PIN A0
|
||||
#define ADC_PIN A5
|
||||
|
||||
#define SOLENOID_PINS { B12, B13, B14, B15 }
|
||||
#define SOLENOID_PINS_ACTIVE_STATE { high, high, low }
|
||||
|
@ -3,17 +3,17 @@
|
||||
"processor": "STM32F446",
|
||||
"bootloader": "stm32-dfu",
|
||||
"matrix_pins": {
|
||||
"cols": ["A2"],
|
||||
"cols": ["A0"],
|
||||
"rows": ["A1"]
|
||||
},
|
||||
"backlight": {
|
||||
"pin": "B8"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "A0"
|
||||
"pin": "A4"
|
||||
},
|
||||
"apa102": {
|
||||
"data_pin": "A0",
|
||||
"data_pin": "A4",
|
||||
"clock_pin": "B13"
|
||||
}
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
# STM32 Nucleo-L432 onekey
|
||||
|
||||
To trigger keypress, short together pins *A1* and *A2*.
|
||||
To trigger keypress, short together pins *A0* and *A1*. Note that the pin numbering is relative to the MCU, so that A0 and A1 refer to PA0 and PA1 on the MCU (which are also labelled A0 and A1 on the board, but this isn't true for the other PAx pins).
|
||||
|
||||
You'll also need to connect `VIN`, `GND`, USB `D+` to `PA12`/`D2`, and USB `D-` to `PA11`/`D10`.
|
||||
|
188
keyboards/large_lad/keyboard.json
Normal file
188
keyboards/large_lad/keyboard.json
Normal file
@ -0,0 +1,188 @@
|
||||
{
|
||||
"manufacturer": "DIY (open source)",
|
||||
"keyboard_name": "Large Lad",
|
||||
"maintainer": "Hyphen-ated",
|
||||
"bootmagic": {
|
||||
"matrix": [11, 12]
|
||||
},
|
||||
"development_board": "blackpill_f411",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B7", "pin_b": "A0"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"encoder": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A2", "A1", "C13", "C14", "C15", "A5", "A6", "B0", "B3", "B8", "A15", "A8", "B15"],
|
||||
"rows": ["B5", "B6", "B4", "B9", "A4", "A3", "A7", "B1", "B10", "B12", "B13", "B14"]
|
||||
},
|
||||
"url": "https://github.com/Hyphen-ated/large-lad-keyboard",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0000",
|
||||
"vid": "0xFEED"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label": "L1", "matrix": [11, 12], "x": 0, "y": 0},
|
||||
{"label": "L2", "matrix": [11, 11], "x": 1, "y": 0},
|
||||
{"label": "L3", "matrix": [11, 6], "x": 2, "y": 0},
|
||||
{"label": "F13", "matrix": [11, 5], "x": 5.25, "y": 0},
|
||||
{"label": "F14", "matrix": [11, 4], "x": 6.25, "y": 0},
|
||||
{"label": "F15", "matrix": [11, 3], "x": 7.25, "y": 0},
|
||||
{"label": "F16", "matrix": [11, 2], "x": 8.25, "y": 0},
|
||||
{"label": "F17", "matrix": [11, 1], "x": 9.75, "y": 0},
|
||||
{"label": "F18", "matrix": [11, 0], "x": 10.75, "y": 0},
|
||||
{"label": "F19", "matrix": [0, 12], "x": 11.75, "y": 0},
|
||||
{"label": "F20", "matrix": [0, 11], "x": 12.75, "y": 0},
|
||||
{"label": "F21", "matrix": [0, 10], "x": 14.25, "y": 0},
|
||||
{"label": "F22", "matrix": [0, 9], "x": 15.25, "y": 0},
|
||||
{"label": "F23", "matrix": [0, 8], "x": 16.25, "y": 0},
|
||||
{"label": "F24", "matrix": [0, 7], "x": 17.25, "y": 0},
|
||||
{"label": "R1", "matrix": [0, 6], "x": 18.5, "y": 0},
|
||||
{"label": "R2", "matrix": [0, 5], "x": 19.5, "y": 0},
|
||||
{"label": "R3", "matrix": [0, 4], "x": 20.5, "y": 0},
|
||||
{"label": "R4", "matrix": [0, 3], "x": 21.75, "y": 0},
|
||||
{"label": "R5", "matrix": [0, 2], "x": 22.75, "y": 0},
|
||||
{"label": "R6", "matrix": [0, 1], "x": 23.75, "y": 0},
|
||||
{"label": "R7", "matrix": [0, 0], "x": 24.75, "y": 0},
|
||||
{"label": "L4", "matrix": [11, 7], "x": 0, "y": 1},
|
||||
{"label": "L5", "matrix": [10, 12], "x": 1, "y": 1},
|
||||
{"label": "L6", "matrix": [10, 11], "x": 2, "y": 1},
|
||||
{"label": "Esc", "matrix": [10, 6], "x": 3.25, "y": 1},
|
||||
{"label": "F1", "matrix": [10, 5], "x": 5.25, "y": 1},
|
||||
{"label": "F2", "matrix": [10, 4], "x": 6.25, "y": 1},
|
||||
{"label": "F3", "matrix": [10, 3], "x": 7.25, "y": 1},
|
||||
{"label": "F4", "matrix": [10, 2], "x": 8.25, "y": 1},
|
||||
{"label": "F5", "matrix": [10, 1], "x": 9.75, "y": 1},
|
||||
{"label": "F6", "matrix": [10, 0], "x": 10.75, "y": 1},
|
||||
{"label": "F7", "matrix": [1, 12], "x": 11.75, "y": 1},
|
||||
{"label": "F8", "matrix": [1, 11], "x": 12.75, "y": 1},
|
||||
{"label": "F9", "matrix": [1, 10], "x": 14.25, "y": 1},
|
||||
{"label": "F10", "matrix": [1, 9], "x": 15.25, "y": 1},
|
||||
{"label": "F11", "matrix": [1, 8], "x": 16.25, "y": 1},
|
||||
{"label": "F12", "matrix": [1, 7], "x": 17.25, "y": 1},
|
||||
{"label": "PrtSc", "matrix": [1, 6], "x": 18.5, "y": 1},
|
||||
{"label": "Scroll Lock", "matrix": [1, 5], "x": 19.5, "y": 1},
|
||||
{"label": "Pause", "matrix": [1, 4], "x": 20.5, "y": 1},
|
||||
{"label": "R8", "matrix": [1, 3], "x": 21.75, "y": 1},
|
||||
{"label": "R9", "matrix": [1, 2], "x": 22.75, "y": 1},
|
||||
{"label": "R10", "matrix": [1, 1], "x": 23.75, "y": 1},
|
||||
{"label": "R11", "matrix": [1, 0], "x": 24.75, "y": 1},
|
||||
{"label": "L7", "matrix": [11, 8], "x": 0, "y": 2.25},
|
||||
{"label": "L8", "matrix": [10, 7], "x": 1, "y": 2.25},
|
||||
{"label": "L9", "matrix": [9, 12], "x": 2, "y": 2.25},
|
||||
{"label": "~", "matrix": [9, 11], "x": 3.25, "y": 2.5},
|
||||
{"label": "!", "matrix": [9, 6], "x": 4.25, "y": 2.5},
|
||||
{"label": "@", "matrix": [9, 5], "x": 5.25, "y": 2.5},
|
||||
{"label": "#", "matrix": [9, 4], "x": 6.25, "y": 2.5},
|
||||
{"label": "$", "matrix": [9, 3], "x": 7.25, "y": 2.5},
|
||||
{"label": "%", "matrix": [9, 2], "x": 8.25, "y": 2.5},
|
||||
{"label": "^", "matrix": [9, 1], "x": 9.25, "y": 2.5},
|
||||
{"label": "&", "matrix": [9, 0], "x": 10.25, "y": 2.5},
|
||||
{"label": "*", "matrix": [2, 12], "x": 11.25, "y": 2.5},
|
||||
{"label": "(", "matrix": [2, 11], "x": 12.25, "y": 2.5},
|
||||
{"label": ")", "matrix": [2, 10], "x": 13.25, "y": 2.5},
|
||||
{"label": "_", "matrix": [2, 9], "x": 14.25, "y": 2.5},
|
||||
{"label": "+", "matrix": [2, 8], "x": 15.25, "y": 2.5},
|
||||
{"label": "Backspace", "matrix": [2, 7], "x": 16.25, "y": 2.5, "w": 2},
|
||||
{"label": "Insert", "matrix": [2, 6], "x": 18.5, "y": 2.5},
|
||||
{"label": "Home", "matrix": [2, 5], "x": 19.5, "y": 2.5},
|
||||
{"label": "PgUp", "matrix": [2, 4], "x": 20.5, "y": 2.5},
|
||||
{"label": "Num Lock", "matrix": [2, 3], "x": 21.75, "y": 2.5},
|
||||
{"label": "/", "matrix": [2, 2], "x": 22.75, "y": 2.5},
|
||||
{"label": "*", "matrix": [2, 1], "x": 23.75, "y": 2.5},
|
||||
{"label": "-", "matrix": [2, 0], "x": 24.75, "y": 2.5},
|
||||
{"label": "L10", "matrix": [10, 8], "x": 0, "y": 3.25},
|
||||
{"label": "L11", "matrix": [9, 7], "x": 1, "y": 3.25},
|
||||
{"label": "L12", "matrix": [8, 12], "x": 2, "y": 3.25},
|
||||
{"label": "Tab", "matrix": [8, 11], "x": 3.25, "y": 3.5, "w": 1.5},
|
||||
{"label": "Q", "matrix": [8, 6], "x": 4.75, "y": 3.5},
|
||||
{"label": "W", "matrix": [8, 5], "x": 5.75, "y": 3.5},
|
||||
{"label": "E", "matrix": [8, 4], "x": 6.75, "y": 3.5},
|
||||
{"label": "R", "matrix": [8, 3], "x": 7.75, "y": 3.5},
|
||||
{"label": "T", "matrix": [8, 2], "x": 8.75, "y": 3.5},
|
||||
{"label": "Y", "matrix": [8, 1], "x": 9.75, "y": 3.5},
|
||||
{"label": "U", "matrix": [8, 0], "x": 10.75, "y": 3.5},
|
||||
{"label": "I", "matrix": [3, 12], "x": 11.75, "y": 3.5},
|
||||
{"label": "O", "matrix": [3, 11], "x": 12.75, "y": 3.5},
|
||||
{"label": "P", "matrix": [3, 10], "x": 13.75, "y": 3.5},
|
||||
{"label": "{", "matrix": [3, 9], "x": 14.75, "y": 3.5},
|
||||
{"label": "}", "matrix": [3, 8], "x": 15.75, "y": 3.5},
|
||||
{"label": "|", "matrix": [3, 7], "x": 16.75, "y": 3.5, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [3, 6], "x": 18.5, "y": 3.5},
|
||||
{"label": "End", "matrix": [3, 5], "x": 19.5, "y": 3.5},
|
||||
{"label": "PgDn", "matrix": [3, 4], "x": 20.5, "y": 3.5},
|
||||
{"label": "7", "matrix": [3, 3], "x": 21.75, "y": 3.5},
|
||||
{"label": "8", "matrix": [3, 2], "x": 22.75, "y": 3.5},
|
||||
{"label": "9", "matrix": [3, 1], "x": 23.75, "y": 3.5},
|
||||
{"label": "+", "matrix": [3, 0], "x": 24.75, "y": 3.5, "h": 2},
|
||||
{"label": "L13", "matrix": [9, 8], "x": 0, "y": 4.25},
|
||||
{"label": "L14", "matrix": [8, 7], "x": 1, "y": 4.25},
|
||||
{"label": "L15", "matrix": [7, 12], "x": 2, "y": 4.25},
|
||||
{"label": "Caps Lock", "matrix": [7, 6], "x": 3.25, "y": 4.5, "w": 1.75},
|
||||
{"label": "A", "matrix": [7, 5], "x": 5, "y": 4.5},
|
||||
{"label": "S", "matrix": [7, 4], "x": 6, "y": 4.5},
|
||||
{"label": "D", "matrix": [7, 3], "x": 7, "y": 4.5},
|
||||
{"label": "F", "matrix": [7, 2], "x": 8, "y": 4.5},
|
||||
{"label": "G", "matrix": [7, 1], "x": 9, "y": 4.5},
|
||||
{"label": "H", "matrix": [7, 0], "x": 10, "y": 4.5},
|
||||
{"label": "J", "matrix": [4, 12], "x": 11, "y": 4.5},
|
||||
{"label": "K", "matrix": [4, 11], "x": 12, "y": 4.5},
|
||||
{"label": "L", "matrix": [4, 10], "x": 13, "y": 4.5},
|
||||
{"label": ":", "matrix": [4, 9], "x": 14, "y": 4.5},
|
||||
{"label": "\"", "matrix": [4, 8], "x": 15, "y": 4.5},
|
||||
{"label": "Enter", "matrix": [4, 7], "x": 16, "y": 4.5, "w": 2.25},
|
||||
{"label": "4", "matrix": [4, 3], "x": 21.75, "y": 4.5},
|
||||
{"label": "5", "matrix": [4, 2], "x": 22.75, "y": 4.5},
|
||||
{"label": "6", "matrix": [4, 1], "x": 23.75, "y": 4.5},
|
||||
{"label": "L16", "matrix": [8, 8], "x": 0, "y": 5.5},
|
||||
{"label": "L17", "matrix": [7, 7], "x": 1, "y": 5.5},
|
||||
{"label": "L18", "matrix": [6, 12], "x": 2, "y": 5.5},
|
||||
{"label": "Shift", "matrix": [7, 11], "x": 3.25, "y": 5.5, "w": 2.25},
|
||||
{"label": "Z", "matrix": [6, 5], "x": 5.5, "y": 5.5},
|
||||
{"label": "X", "matrix": [6, 3], "x": 6.5, "y": 5.5},
|
||||
{"label": "C", "matrix": [6, 2], "x": 7.5, "y": 5.5},
|
||||
{"label": "V", "matrix": [6, 1], "x": 8.5, "y": 5.5},
|
||||
{"label": "B", "matrix": [6, 0], "x": 9.5, "y": 5.5},
|
||||
{"label": "N", "matrix": [5, 12], "x": 10.5, "y": 5.5},
|
||||
{"label": "M", "matrix": [5, 11], "x": 11.5, "y": 5.5},
|
||||
{"label": "<", "matrix": [5, 10], "x": 12.5, "y": 5.5},
|
||||
{"label": ">", "matrix": [5, 9], "x": 13.5, "y": 5.5},
|
||||
{"label": "?", "matrix": [5, 8], "x": 14.5, "y": 5.5},
|
||||
{"label": "Shift", "matrix": [5, 7], "x": 15.5, "y": 5.5, "w": 2.75},
|
||||
{"label": "Up", "matrix": [4, 5], "x": 19.5, "y": 5.5},
|
||||
{"label": "1", "matrix": [5, 3], "x": 21.75, "y": 5.5},
|
||||
{"label": "2", "matrix": [5, 2], "x": 22.75, "y": 5.5},
|
||||
{"label": "3", "matrix": [5, 1], "x": 23.75, "y": 5.5},
|
||||
{"label": "Enter", "matrix": [4, 0], "x": 24.75, "y": 5.5, "h": 2},
|
||||
{"label": "L19", "matrix": [7, 8], "x": 0, "y": 6.5},
|
||||
{"label": "L20", "matrix": [8, 9], "x": 1, "y": 6.5},
|
||||
{"label": "L21", "matrix": [7, 9], "x": 2, "y": 6.5},
|
||||
{"label": "Ctrl", "matrix": [6, 11], "x": 3.25, "y": 6.5, "w": 1.25},
|
||||
{"label": "Win", "matrix": [6, 6], "x": 4.5, "y": 6.5, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [6, 4], "x": 5.75, "y": 6.5, "w": 1.25},
|
||||
{"label": "Space", "matrix": [6, 10], "x": 7, "y": 6.5, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [6, 9], "x": 13.25, "y": 6.5, "w": 1.25},
|
||||
{"label": "Win", "matrix": [6, 8], "x": 14.5, "y": 6.5, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [6, 7], "x": 15.75, "y": 6.5, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [5, 6], "x": 17, "y": 6.5, "w": 1.25},
|
||||
{"label": "Left", "matrix": [4, 6], "x": 18.5, "y": 6.5},
|
||||
{"label": "Down", "matrix": [5, 5], "x": 19.5, "y": 6.5},
|
||||
{"label": "Right", "matrix": [4, 4], "x": 20.5, "y": 6.5},
|
||||
{"label": "0", "matrix": [5, 4], "x": 21.75, "y": 6.5, "w": 2},
|
||||
{"label": ".", "matrix": [5, 0], "x": 23.75, "y": 6.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
42
keyboards/large_lad/keymaps/default/keymap.c
Normal file
42
keyboards/large_lad/keymaps/default/keymap.c
Normal file
@ -0,0 +1,42 @@
|
||||
// Copyright 2024 Hyphen-ated (@Hyphen-ated)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/*
|
||||
* ┌───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┬───┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
|
||||
* │ │ │ │ │F13│F14│F15│F16│ │F17│F18│F19│F20│ │F21│F22│F23│F24│ │ │ │ │ │ │ │ │ │
|
||||
* ├───┼───┼───┤ ┌───┐ ├───┼───┼───┤───┤ ├───┼───┼───┤───┤ ├───┼───┼───┤───┤ ├───┼───┼───┤ ├───┼───┼───┤───┤
|
||||
* │ │ │ │ │Esc│ │F1 │F2 │F3 │F4 │ │F5 │F6 │F7 │F8 │ │F9 │F10│F11│F12│ │PSc│Scr│Pse│ │ │ │ │ │
|
||||
* └───┴───┴───┘ └───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┴───┘ └───┴───┴───┘ └───┴───┴───┴───┘
|
||||
* ┌───┬───┬───┐ ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───────┐ ┌───┬───┬───┐ ┌───┬───┬───┬───┐
|
||||
* │ │ │ │ │ ` │ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │ Backsp│ │Ins│Hom│PgU│ │Num│ / │ * │ - │
|
||||
* ├───┼───┼───┤ ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─────┤ ├───┼───┼───┤ ├───┼───┼───┼───┤
|
||||
* │ │ │ │ │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │ │Del│End│PgD│ │ 7 │ 8 │ 9 │ │
|
||||
* ├───┼───┼───┤ ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ └───┴───┴───┘ ├───┼───┼───┤ + │
|
||||
* │ │ │ │ │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ Enter │ │ 4 │ 5 │ 6 │ │
|
||||
* ├───┼───┼───┤ ├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────────┤ ┌───┐ ├───┼───┼───┼───┤
|
||||
* │ │ │ │ │ Shift │ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │ Shift │ │ ↑ │ │ 1 │ 2 │ 3 │ │
|
||||
* ├───┼───┼───┤ ├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬────┤ ┌───┼───┼───┐ ├───┴───┼───┤Ent│
|
||||
* │ │ │ │ │Ctrl│GUI │Alt │ │ Alt│ GUI│Menu│Ctrl│ │ ← │ ↓ │ → │ │ 0 │ . │ │
|
||||
* └───┴───┴───┘ └────┴────┴────┴────────────────────────┴────┴────┴────┴────┘ └───┴───┴───┘ └───────┴───┴───┘
|
||||
*/
|
||||
[0] = LAYOUT(
|
||||
KC_NO,KC_NO,KC_NO, KC_F13, KC_F14, KC_F15, KC_F16, KC_F17, KC_F18, KC_F19, KC_F20, KC_F21, KC_F22, KC_F23, KC_F24, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
KC_NO,KC_NO,KC_NO, KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS, KC_NO, KC_NO, KC_NO, KC_NO,
|
||||
|
||||
KC_NO,KC_NO,KC_NO, 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_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_NO,KC_NO,KC_NO, KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_NO,KC_NO,KC_NO, 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_P4, KC_P5, KC_P6,
|
||||
KC_NO,KC_NO,KC_NO, KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_NO,KC_NO,KC_NO, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
|
||||
)
|
||||
};
|
||||
|
||||
// encoder controls volume by default
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
|
||||
};
|
||||
#endif
|
1
keyboards/large_lad/keymaps/default/rules.mk
Normal file
1
keyboards/large_lad/keymaps/default/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
23
keyboards/large_lad/readme.md
Normal file
23
keyboards/large_lad/readme.md
Normal file
@ -0,0 +1,23 @@
|
||||
# large_lad
|
||||
|
||||

|
||||
|
||||
Starts with the standard US 104 key layout and adds more keys on top and on the left. Total of 148 keys, one of which is a rotary encoder. Includes two rows of function keys and a 3x7 grid of keys on the left. No LEDs.
|
||||
|
||||
* Keyboard Maintainer: [Hyphen-ated](https://github.com/Hyphen-ated)
|
||||
* Hardware Supported: Custom open source PCB.
|
||||
* Hardware Availability: DIY. PCB and plate design files available at https://github.com/Hyphen-ated/large-lad-keyboard
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make large_lad:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make large_lad: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, there's two buttons to press on the blackpill board. Press and hold BOOT, press and release NRST, then release BOOT. Sometimes this randomly fails and you have to try again.
|
@ -9,10 +9,10 @@
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"nkro": true,
|
||||
"rgblight": true,
|
||||
"key_lock": true,
|
||||
"leader": true
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"qmk": {
|
||||
"locking": {
|
||||
|
@ -1,3 +1,18 @@
|
||||
/* Copyright 2019 Max Rumpf (@Maxr1998)
|
||||
*
|
||||
* 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 RSPC_KEYS KC_RSFT, KC_RALT, KC_7
|
||||
|
@ -1,3 +1,18 @@
|
||||
/* Copyright 2019 Max Rumpf (@Maxr1998)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
#include "keymap_german.h"
|
||||
@ -35,7 +50,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
KC_GRV, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, DE_PLUS, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_UP, SC_RSPC,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, QK_LEAD, KC_SC, KC_SPC, KC_ALGR, KC_FN, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_BTN1, KC_SC, KC_SPC, KC_ALGR, KC_FN, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
|
||||
/* Special characters
|
||||
@ -77,7 +92,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
_______, _______, _______, _______, _______, _______, _______, DE_UDIA, KC_F9, DE_ODIA, KC_PSCR, KC_DEL,
|
||||
QK_LOCK, DE_ADIA, DE_SS, _______, _______, G_1, _______, RGB_M_P, RGB_M_SW,RGB_M_SN,_______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, UG_HUED, UG_TOGG, UG_HUEU, KC_PGUP, _______,
|
||||
XXXXXXX, _______, XXXXXXX, XXXXXXX, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END
|
||||
XXXXXXX, _______, XXXXXXX, KC_BTN2, XXXXXXX, _______, XXXXXXX, XXXXXXX, KC_HOME, KC_PGDN, KC_END
|
||||
),
|
||||
|
||||
/* Gaming
|
||||
@ -128,13 +143,4 @@ bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
};
|
||||
|
||||
void leader_end_user(void) {
|
||||
if (leader_sequence_two_keys(KC_G, KC_P)) {
|
||||
SEND_STRING("git push");
|
||||
}
|
||||
if (leader_sequence_three_keys(KC_G, KC_F, KC_P)) {
|
||||
SEND_STRING("git push --force-with-lease");
|
||||
}
|
||||
}
|
||||
|
@ -1,3 +1,18 @@
|
||||
/* Copyright 2019 Max Rumpf (@Maxr1998)
|
||||
*
|
||||
* 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"
|
||||
|
||||
const uint8_t RGBLED_SNAKE_INTERVALS[] PROGMEM = {50, 50, 50};
|
||||
|
6
keyboards/mechboards/crkbd/pro/config.h
Normal file
6
keyboards/mechboards/crkbd/pro/config.h
Normal file
@ -0,0 +1,6 @@
|
||||
// Copyright 2025 Dasky (@daskygit)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "keyboards/mechboards/common/rgb_effects.h"
|
171
keyboards/mechboards/crkbd/pro/keyboard.json
Normal file
171
keyboards/mechboards/crkbd/pro/keyboard.json
Normal file
@ -0,0 +1,171 @@
|
||||
{
|
||||
"manufacturer": "Mechboards",
|
||||
"keyboard_name": "CRKBD Pro",
|
||||
"maintainer": "dasky",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"development_board": "promicro",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B6", "pin_b": "B2"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"oled": true,
|
||||
"os_detection": true,
|
||||
"rgb_matrix": true,
|
||||
"wpm": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["F4", "F5", "F6", "F7", "B1", "B3"],
|
||||
"rows": ["D4", "C6", "D7", "E6"]
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"cycle_left_right": true
|
||||
},
|
||||
"default": {
|
||||
"animation": "cycle_left_right"
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"x": 85, "y": 16, "flags": 2},
|
||||
{"x": 50, "y": 13, "flags": 2},
|
||||
{"x": 16, "y": 20, "flags": 2},
|
||||
{"x": 16, "y": 38, "flags": 2},
|
||||
{"x": 50, "y": 48, "flags": 2},
|
||||
{"x": 85, "y": 52, "flags": 2},
|
||||
{"matrix": [3, 5], "x": 95, "y": 63, "flags": 1},
|
||||
{"matrix": [2, 5], "x": 85, "y": 39, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 85, "y": 21, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 85, "y": 4, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 68, "y": 2, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 68, "y": 19, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 68, "y": 37, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 80, "y": 58, "flags": 1},
|
||||
{"matrix": [3, 3], "x": 60, "y": 55, "flags": 1},
|
||||
{"matrix": [2, 3], "x": 50, "y": 35, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 50, "y": 13, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 50, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 33, "y": 3, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 33, "y": 20, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 33, "y": 37, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 16, "y": 42, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 16, "y": 24, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 16, "y": 7, "flags": 4},
|
||||
{"matrix": [0, 0], "x": 0, "y": 7, "flags": 1},
|
||||
{"matrix": [1, 0], "x": 0, "y": 24, "flags": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 41, "flags": 1},
|
||||
{"x": 139, "y": 16, "flags": 2},
|
||||
{"x": 174, "y": 13, "flags": 2},
|
||||
{"x": 208, "y": 20, "flags": 2},
|
||||
{"x": 208, "y": 38, "flags": 2},
|
||||
{"x": 174, "y": 48, "flags": 2},
|
||||
{"x": 139, "y": 52, "flags": 2},
|
||||
{"matrix": [7, 5], "x": 129, "y": 63, "flags": 1},
|
||||
{"matrix": [6, 5], "x": 139, "y": 39, "flags": 4},
|
||||
{"matrix": [5, 5], "x": 139, "y": 21, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 139, "y": 4, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 156, "y": 2, "flags": 4},
|
||||
{"matrix": [5, 4], "x": 156, "y": 19, "flags": 4},
|
||||
{"matrix": [6, 4], "x": 156, "y": 37, "flags": 4},
|
||||
{"matrix": [7, 4], "x": 144, "y": 58, "flags": 1},
|
||||
{"matrix": [7, 3], "x": 164, "y": 55, "flags": 1},
|
||||
{"matrix": [6, 3], "x": 174, "y": 35, "flags": 4},
|
||||
{"matrix": [5, 3], "x": 174, "y": 13, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 174, "y": 0, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 191, "y": 3, "flags": 4},
|
||||
{"matrix": [5, 2], "x": 191, "y": 20, "flags": 4},
|
||||
{"matrix": [6, 2], "x": 191, "y": 37, "flags": 4},
|
||||
{"matrix": [6, 1], "x": 208, "y": 42, "flags": 4},
|
||||
{"matrix": [5, 1], "x": 208, "y": 24, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 208, "y": 7, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 224, "y": 7, "flags": 1},
|
||||
{"matrix": [5, 0], "x": 224, "y": 24, "flags": 1},
|
||||
{"matrix": [6, 0], "x": 224, "y": 41, "flags": 1}
|
||||
],
|
||||
"max_brightness": 120,
|
||||
"split_count": [27, 27]
|
||||
},
|
||||
"rgblight": {
|
||||
"led_count": 54,
|
||||
"max_brightness": 120,
|
||||
"split_count": [27, 27]
|
||||
},
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"serial": {
|
||||
"pin": "D2"
|
||||
},
|
||||
"transport": {
|
||||
"sync": {
|
||||
"matrix_state": true,
|
||||
"oled": true,
|
||||
"wpm": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"url": "mechboards.co.uk",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0003",
|
||||
"vid": "0x7171"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "D3"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_split_3x6_3": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0.25},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0.25},
|
||||
{"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": [4, 5], "x": 8, "y": 0.25},
|
||||
{"matrix": [4, 4], "x": 9, "y": 0.125},
|
||||
{"matrix": [4, 3], "x": 10, "y": 0},
|
||||
{"matrix": [4, 2], "x": 11, "y": 0.125},
|
||||
{"matrix": [4, 1], "x": 12, "y": 0.25},
|
||||
{"matrix": [4, 0], "x": 13, "y": 0.25},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1.25},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1.25},
|
||||
{"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": [5, 5], "x": 8, "y": 1.25},
|
||||
{"matrix": [5, 4], "x": 9, "y": 1.125},
|
||||
{"matrix": [5, 3], "x": 10, "y": 1},
|
||||
{"matrix": [5, 2], "x": 11, "y": 1.125},
|
||||
{"matrix": [5, 1], "x": 12, "y": 1.25},
|
||||
{"matrix": [5, 0], "x": 13, "y": 1.25},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2.25},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2.25},
|
||||
{"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": [6, 5], "x": 8, "y": 2.25},
|
||||
{"matrix": [6, 4], "x": 9, "y": 2.125},
|
||||
{"matrix": [6, 3], "x": 10, "y": 2},
|
||||
{"matrix": [6, 2], "x": 11, "y": 2.125},
|
||||
{"matrix": [6, 1], "x": 12, "y": 2.25},
|
||||
{"matrix": [6, 0], "x": 13, "y": 2.25},
|
||||
{"matrix": [3, 3], "x": 3.5, "y": 3.25},
|
||||
{"matrix": [3, 4], "x": 4.5, "y": 3.5},
|
||||
{"matrix": [3, 5], "x": 5.5, "y": 3.75},
|
||||
{"matrix": [7, 5], "x": 7.5, "y": 3.75},
|
||||
{"matrix": [7, 4], "x": 8.5, "y": 3.5},
|
||||
{"matrix": [7, 3], "x": 9.5, "y": 3.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
47
keyboards/mechboards/crkbd/pro/keymaps/default/keymap.c
Normal file
47
keyboards/mechboards/crkbd/pro/keymaps/default/keymap.c
Normal file
@ -0,0 +1,47 @@
|
||||
// Copyright 2025 Dasky (@daskygit)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_split_3x6_3(
|
||||
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_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, 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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_ESC,
|
||||
KC_LGUI, MO(1), KC_SPC, KC_ENT, MO(2), KC_RALT
|
||||
|
||||
),
|
||||
|
||||
[1] = LAYOUT_split_3x6_3(
|
||||
KC_TAB, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX, XXXXXXX,
|
||||
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
KC_LGUI, _______, KC_SPC, KC_ENT, MO(3), KC_RALT
|
||||
),
|
||||
|
||||
[2] = LAYOUT_split_3x6_3(
|
||||
KC_TAB, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_BSPC,
|
||||
KC_LCTL, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS, KC_GRV,
|
||||
KC_LSFT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE, KC_TILD,
|
||||
KC_LGUI, MO(3), KC_SPC, KC_ENT, _______, KC_RALT
|
||||
),
|
||||
|
||||
[3] = LAYOUT_split_3x6_3(
|
||||
QK_BOOT, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
RM_TOGG, RM_HUEU, RM_SATU, RM_VALU, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
RM_NEXT, RM_HUED, RM_SATD, RM_VALD, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX, XXXXXXX,
|
||||
KC_LGUI, _______, KC_SPC, KC_ENT, _______, KC_RALT
|
||||
)
|
||||
};
|
||||
|
||||
#ifdef ENCODER_MAP_ENABLE
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(KC_MPRV, KC_MNXT)},
|
||||
[1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS)},
|
||||
[2] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS)},
|
||||
[3] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS)}
|
||||
};
|
||||
#endif
|
||||
|
||||
// clang-format on
|
1
keyboards/mechboards/crkbd/pro/keymaps/default/rules.mk
Normal file
1
keyboards/mechboards/crkbd/pro/keymaps/default/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
1
keyboards/mechboards/crkbd/pro/post_rules.mk
Normal file
1
keyboards/mechboards/crkbd/pro/post_rules.mk
Normal file
@ -0,0 +1 @@
|
||||
include keyboards/mechboards/common/post_rules.mk
|
15
keyboards/mechboards/crkbd/pro/pro.c
Normal file
15
keyboards/mechboards/crkbd/pro/pro.c
Normal file
@ -0,0 +1,15 @@
|
||||
// Copyright 2025 Dasky (@daskygit)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef OLED_ENABLE
|
||||
void render_logo(void) {
|
||||
static const char PROGMEM pro_logo[] = {
|
||||
252, 254, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 31, 31, 31, 31, 31, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 254, 252, 0, 0, 0, 248, 248, 24, 24, 24, 24, 24, 24, 0, 0, 248, 248, 24, 24, 24, 24, 248, 240, 0, 0, 248, 248, 0, 0, 0, 128, 248, 248, 0, 0, 248, 248, 24, 24, 24, 24, 248, 240, 0, 0, 248, 248, 24, 24, 24, 24, 248, 240, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 7, 7, 7, 7, 7, 255, 7, 7, 7, 7, 7, 255, 7, 7, 7, 7, 7, 255, 7, 7, 7, 7, 7, 255, 7, 7, 7, 7, 7, 255, 255, 255, 4, 4, 4, 4, 4, 255,
|
||||
7, 7, 7, 7, 7, 255, 7, 7, 7, 7, 7, 255, 255, 255, 255, 255, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 6, 6, 6, 6, 255, 251, 0, 0, 255, 255, 6, 6, 15, 31, 249, 240, 0, 0, 255, 255, 6, 6, 6, 6, 255, 251, 0, 0, 255, 255, 0, 0, 0, 0, 255, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 255, 65, 65, 65, 65, 65, 255, 255, 255, 255, 255, 255, 255, 65, 65, 65, 65, 65, 255, 255, 255, 255, 255, 255, 255, 65, 65, 65, 65, 65, 255, 255, 255, 65, 65, 65, 65, 65, 255, 127, 127, 127, 127, 127, 255, 65, 65, 65, 65, 65, 255, 255, 255, 255, 255, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 3, 3, 0, 0, 0, 0, 3, 3, 0, 0, 3, 3, 0, 0,
|
||||
0, 0, 3, 3, 0, 0, 3, 3, 3, 3, 3, 3, 3, 1, 0, 0, 3, 3, 3, 3, 3, 3, 227, 241, 48, 176, 176, 112, 240, 48, 176, 176, 112, 240, 112, 176, 176, 112, 240, 224, 0, 0, 63, 127, 255, 255, 255, 240, 240, 240, 240, 240, 255, 255, 255, 255, 255, 255, 255, 240, 240, 240, 240, 240, 255, 255, 255, 255, 255, 255, 255, 240, 240, 240, 240, 240, 255, 255, 255, 240, 240, 240, 240, 240, 255, 240, 240, 240, 240, 240, 255, 240, 240, 240, 240, 240, 255, 255, 255, 127, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 63, 48, 61, 61, 62, 63, 48, 61, 61, 50, 63, 56, 55, 55, 56, 63, 31, 0, 0,
|
||||
};
|
||||
oled_write_raw_P(pro_logo, sizeof(pro_logo));
|
||||
}
|
||||
#endif
|
25
keyboards/mechboards/crkbd/pro/readme.md
Normal file
25
keyboards/mechboards/crkbd/pro/readme.md
Normal file
@ -0,0 +1,25 @@
|
||||
# CRKBD Pro
|
||||
|
||||
A refreshed CRKBD (Corne) PCB with RGB, battery, power switch and encoder support.
|
||||
|
||||
* Keyboard Maintainer: [dasky](https://github.com/daskygit)
|
||||
* Hardware Supported: Controllers using promicro footprint.
|
||||
* Hardware Availability: https://mechboards.co.uk
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
qmk compile -kb mechboards/crkbd/pro -km default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
qmk flash -kb mechboards/crkbd/pro -km 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).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the top left key/encoder or the top right key/encoder depending on which side you're connecting to usb.
|
||||
* **Physical reset button**: Double press the button below the TRRS socket.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
@ -49,7 +49,16 @@
|
||||
"driver": "snled27351",
|
||||
"max_brightness": 180,
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"gradient_up_down": true,
|
||||
"gradient_left_right": true,
|
||||
"breathing": true,
|
||||
"band_sat": true,
|
||||
"band_val": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_up_down": true,
|
||||
@ -60,12 +69,29 @@
|
||||
"cycle_spiral": true,
|
||||
"dual_beacon": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"jellybean_raindrops": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"pixel_rain": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"typing_heatmap": true,
|
||||
"digital_rain": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_cross": true,
|
||||
"multisplash": true
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"splash": true,
|
||||
"multisplash": true,
|
||||
"solid_splash": true,
|
||||
"solid_multisplash": true
|
||||
},
|
||||
"layout":[
|
||||
{ "flags": 4, "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
|
@ -26,5 +26,5 @@
|
||||
/* PMW33XX Settings */
|
||||
#define PMW33XX_CS_PIN B0
|
||||
|
||||
#define ENCODER_A_PINS { F0 }
|
||||
#define ENCODER_B_PINS { F4 }
|
||||
#define ENCODER_A_PINS { F4 }
|
||||
#define ENCODER_B_PINS { F0 }
|
||||
|
17
keyboards/salane/starryfrl/config.h
Normal file
17
keyboards/salane/starryfrl/config.h
Normal file
@ -0,0 +1,17 @@
|
||||
/*
|
||||
Copyright 2024 Salane
|
||||
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 RP2040_FLASH_GENERIC_03H
|
143
keyboards/salane/starryfrl/keyboard.json
Normal file
143
keyboards/salane/starryfrl/keyboard.json
Normal file
@ -0,0 +1,143 @@
|
||||
{
|
||||
"keyboard_name": "Starry FRL",
|
||||
"manufacturer": "Salane",
|
||||
"url": "",
|
||||
"maintainer": "Mai The San",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"usb": {
|
||||
"vid": "0x534C",
|
||||
"pid": "0x0A01",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"rows": ["GP25", "GP0", "GP18", "GP23", "GP24"],
|
||||
"cols": ["GP27", "GP26", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6", "GP5", "GP4", "GP3", "GP2", "GP1", "GP22", "GP21", "GP20"]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"mousekey": true,
|
||||
"extrakey": true,
|
||||
"console": false,
|
||||
"command": false,
|
||||
"nkro": false,
|
||||
"rgblight": true,
|
||||
"encoder": true
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP29", "pin_b": "GP28"}
|
||||
]
|
||||
},
|
||||
"rgblight": {
|
||||
"led_count": 2,
|
||||
"saturation_steps": 8,
|
||||
"brightness_steps": 8,
|
||||
"sleep": true,
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
}
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "GP19",
|
||||
"driver": "vendor"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label": "K00", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "K01", "matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"label": "K02", "matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"label": "K03", "matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"label": "K04", "matrix": [0, 4], "x": 4.25, "y": 0},
|
||||
{"label": "K05", "matrix": [0, 5], "x": 5.25, "y": 0},
|
||||
{"label": "K06", "matrix": [0, 6], "x": 6.25, "y": 0},
|
||||
{"label": "K07", "matrix": [0, 7], "x": 7.25, "y": 0},
|
||||
{"label": "K08", "matrix": [0, 8], "x": 8.25, "y": 0},
|
||||
{"label": "K09", "matrix": [0, 9], "x": 9.25, "y": 0},
|
||||
{"label": "K0A", "matrix": [0, 10], "x": 10.25, "y": 0},
|
||||
{"label": "K0B", "matrix": [0, 11], "x": 11.25, "y": 0},
|
||||
{"label": "K0C", "matrix": [0, 12], "x": 12.25, "y": 0},
|
||||
{"label": "K0D", "matrix": [0, 13], "x": 13.25, "y": 0},
|
||||
{"label": "K0E", "matrix": [0, 14], "x": 14.25, "y": 0},
|
||||
{"label": "K0F", "matrix": [0, 15], "x": 15.25, "y": 0},
|
||||
{"label": "K2F", "matrix": [2, 15], "x": 16.25, "y": 0},
|
||||
{"label": "K0G", "matrix": [0, 16], "x": 17.5, "y": 0},
|
||||
{"label": "K0H", "matrix": [0, 17], "x": 18.5, "y": 0},
|
||||
{"label": "K0I", "matrix": [0, 18], "x": 19.5, "y": 0},
|
||||
{"label": "K12", "matrix": [1, 2], "x": 2.25, "y": 1, "w": 1.5},
|
||||
{"label": "K13", "matrix": [1, 3], "x": 3.75, "y": 1},
|
||||
{"label": "K14", "matrix": [1, 4], "x": 4.75, "y": 1},
|
||||
{"label": "K15", "matrix": [1, 5], "x": 5.75, "y": 1},
|
||||
{"label": "K16", "matrix": [1, 6], "x": 6.75, "y": 1},
|
||||
{"label": "K17", "matrix": [1, 7], "x": 7.75, "y": 1},
|
||||
{"label": "K18", "matrix": [1, 8], "x": 8.75, "y": 1},
|
||||
{"label": "K19", "matrix": [1, 9], "x": 9.75, "y": 1},
|
||||
{"label": "K1A", "matrix": [1, 10], "x": 10.75, "y": 1},
|
||||
{"label": "K1B", "matrix": [1, 11], "x": 11.75, "y": 1},
|
||||
{"label": "K1C", "matrix": [1, 12], "x": 12.75, "y": 1},
|
||||
{"label": "K1D", "matrix": [1, 13], "x": 13.75, "y": 1},
|
||||
{"label": "K1E", "matrix": [1, 14], "x": 14.75, "y": 1},
|
||||
{"label": "K1F", "matrix": [1, 15], "x": 15.75, "y": 1, "w": 1.5},
|
||||
{"label": "K1G", "matrix": [1, 16], "x": 17.5, "y": 1},
|
||||
{"label": "K1H", "matrix": [1, 17], "x": 18.5, "y": 1},
|
||||
{"label": "K1I", "matrix": [1, 18], "x": 19.5, "y": 1},
|
||||
{"label": "K21", "matrix": [2, 1], "x": 0.25, "y": 1.25, "w": 1.5, "h": 1.5},
|
||||
{"label": "K22", "matrix": [2, 2], "x": 2.25, "y": 2, "w": 1.75},
|
||||
{"label": "K23", "matrix": [2, 3], "x": 4, "y": 2},
|
||||
{"label": "K24", "matrix": [2, 4], "x": 5, "y": 2},
|
||||
{"label": "K25", "matrix": [2, 5], "x": 6, "y": 2},
|
||||
{"label": "K26", "matrix": [2, 6], "x": 7, "y": 2},
|
||||
{"label": "K27", "matrix": [2, 7], "x": 8, "y": 2},
|
||||
{"label": "K28", "matrix": [2, 8], "x": 9, "y": 2},
|
||||
{"label": "K29", "matrix": [2, 9], "x": 10, "y": 2},
|
||||
{"label": "K2A", "matrix": [2, 10], "x": 11, "y": 2},
|
||||
{"label": "K2B", "matrix": [2, 11], "x": 12, "y": 2},
|
||||
{"label": "K2C", "matrix": [2, 12], "x": 13, "y": 2},
|
||||
{"label": "K2D", "matrix": [2, 13], "x": 14, "y": 2},
|
||||
{"label": "K2E", "matrix": [2, 14], "x": 15, "y": 2, "w": 2.25},
|
||||
{"label": "K30", "matrix": [3, 0], "x": 0, "y": 3},
|
||||
{"label": "K31", "matrix": [3, 1], "x": 1, "y": 3},
|
||||
{"label": "K32", "matrix": [3, 2], "x": 2.25, "y": 3, "w": 1.25},
|
||||
{"label": "K33", "matrix": [3, 3], "x": 3.5, "y": 3},
|
||||
{"label": "K34", "matrix": [3, 4], "x": 4.5, "y": 3},
|
||||
{"label": "K35", "matrix": [3, 5], "x": 5.5, "y": 3},
|
||||
{"label": "K36", "matrix": [3, 6], "x": 6.5, "y": 3},
|
||||
{"label": "K37", "matrix": [3, 7], "x": 7.5, "y": 3},
|
||||
{"label": "K38", "matrix": [3, 8], "x": 8.5, "y": 3},
|
||||
{"label": "K39", "matrix": [3, 9], "x": 9.5, "y": 3},
|
||||
{"label": "K3A", "matrix": [3, 10], "x": 10.5, "y": 3},
|
||||
{"label": "K3B", "matrix": [3, 11], "x": 11.5, "y": 3},
|
||||
{"label": "K3C", "matrix": [3, 12], "x": 12.5, "y": 3},
|
||||
{"label": "K3D", "matrix": [3, 13], "x": 13.5, "y": 3},
|
||||
{"label": "K3E", "matrix": [3, 14], "x": 14.5, "y": 3, "w": 1.75},
|
||||
{"label": "K3F", "matrix": [3, 15], "x": 16.25, "y": 3},
|
||||
{"label": "K3H", "matrix": [3, 17], "x": 18.5, "y": 3},
|
||||
{"label": "K40", "matrix": [4, 0], "x": 0, "y": 4},
|
||||
{"label": "K41", "matrix": [4, 1], "x": 1, "y": 4},
|
||||
{"label": "K42", "matrix": [4, 2], "x": 2.25, "y": 4, "w": 1.5},
|
||||
{"label": "K43", "matrix": [4, 3], "x": 3.75, "y": 4},
|
||||
{"label": "K44", "matrix": [4, 4], "x": 4.75, "y": 4, "w": 1.5},
|
||||
{"label": "K47", "matrix": [4, 7], "x": 6.25, "y": 4, "w": 3},
|
||||
{"label": "K49", "matrix": [4, 9], "x": 9.25, "y": 4},
|
||||
{"label": "K4B", "matrix": [4, 11], "x": 10.25, "y": 4, "w": 2},
|
||||
{"label": "K4C", "matrix": [4, 12], "x": 12.25, "y": 4},
|
||||
{"label": "K4D", "matrix": [4, 13], "x": 13.25, "y": 4, "w": 1.5},
|
||||
{"label": "K4E", "matrix": [4, 14], "x": 14.75, "y": 4},
|
||||
{"label": "K4F", "matrix": [4, 15], "x": 15.75, "y": 4, "w": 1.5},
|
||||
{"label": "K4G", "matrix": [4, 16], "x": 17.5, "y": 4},
|
||||
{"label": "K4H", "matrix": [4, 17], "x": 18.5, "y": 4},
|
||||
{"label": "K4I", "matrix": [4, 18], "x": 19.5, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
46
keyboards/salane/starryfrl/keymaps/default/keymap.c
Normal file
46
keyboards/salane/starryfrl/keymaps/default/keymap.c
Normal file
@ -0,0 +1,46 @@
|
||||
/* Copyright 2023 SawnsProjects
|
||||
*
|
||||
* 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 {
|
||||
_BASE,
|
||||
_FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT(
|
||||
KC_F1, KC_F2, 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_BSPC, KC_INS, KC_HOME, KC_PGUP,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN,
|
||||
KC_MUTE, 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_F3, KC_F4, KC_LSFT, KC_NO, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_LSFT, MO(_FN), KC_UP,
|
||||
KC_F5, KC_F6, KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_SPC, KC_RGUI, KC_MENU, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
),
|
||||
[_FN] = LAYOUT(
|
||||
KC_F7, KC_F8, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, UG_PREV, UG_TOGG, UG_NEXT,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_F9, KC_F10, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_BASE] = { ENCODER_CCW_CW(KC_PGDN, KC_PGUP) },
|
||||
[_FN] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) }
|
||||
};
|
||||
#endif // ENCODER_MAP_ENABLE
|
1
keyboards/salane/starryfrl/keymaps/default/rules.mk
Normal file
1
keyboards/salane/starryfrl/keymaps/default/rules.mk
Normal file
@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
29
keyboards/salane/starryfrl/readme.md
Normal file
29
keyboards/salane/starryfrl/readme.md
Normal file
@ -0,0 +1,29 @@
|
||||
# Starry FRL
|
||||
|
||||

|
||||
|
||||
This firmware support for both Solder and Hotswap PCB of Starry FRL
|
||||
|
||||
**Firmware files are SPECIFIC to each board. Firmware files from one, will not work on the other.** Please use the `uf2` appropriate for your board.
|
||||
|
||||
* Keyboard Maintainer: [Mai The San](https://github.com/MaiTheSan)
|
||||
* Hardware Supported: Starry FRL
|
||||
* Hardware Availability: [Waifu.works Discord](https://discord.gg/waifuworks)
|
||||
|
||||
Make examples for this keyboard (after setting up your build environment):
|
||||
|
||||
make salane/starryfrl:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make salane/starryfrl:default:flash
|
||||
|
||||
## 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**: Press the key `BOOT` in the back of PCB and plug in keyboard
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
||||
|
||||
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).
|
@ -4,7 +4,7 @@
|
||||
"url": "https://github.com/nrtkbb/Keyboards/tree/master/uzu42",
|
||||
"maintainer": "nrtkbb",
|
||||
"usb": {
|
||||
"vid": "0xFEED",
|
||||
"vid": "0x6E74",
|
||||
"pid": "0x3060",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
|
@ -48,8 +48,8 @@
|
||||
{"x": 19.5, "y": 1.25},
|
||||
{"x": 20.5, "y": 1.25},
|
||||
{"x": 21.5, "y": 1.25},
|
||||
{"x": 0, "y": 2.25, "w": 1.5},
|
||||
|
||||
{"x": 0, "y": 2.25, "w": 1.5},
|
||||
{"x": 1.5, "y": 2.25},
|
||||
{"x": 2.5, "y": 2.25},
|
||||
{"x": 3.5, "y": 2.25},
|
||||
@ -62,7 +62,7 @@
|
||||
{"x": 10.5, "y": 2.25},
|
||||
{"x": 11.5, "y": 2.25},
|
||||
{"x": 12.5, "y": 2.25},
|
||||
{"x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
|
||||
|
||||
{"x": 15.25, "y": 2.25},
|
||||
{"x": 16.25, "y": 2.25},
|
||||
{"x": 17.25, "y": 2.25},
|
||||
@ -84,6 +84,7 @@
|
||||
{"x": 10.75, "y": 3.25},
|
||||
{"x": 11.75, "y": 3.25},
|
||||
{"x": 12.75, "y": 3.25},
|
||||
{"x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
|
||||
{"x": 18.5, "y": 3.25},
|
||||
{"x": 19.5, "y": 3.25},
|
||||
{"x": 20.5, "y": 3.25},
|
||||
|
@ -44,8 +44,8 @@
|
||||
{"x": 19.5, "y": 1.25},
|
||||
{"x": 20.5, "y": 1.25},
|
||||
{"x": 21.5, "y": 1.25},
|
||||
{"x": 0, "y": 2.25, "w": 1.5},
|
||||
|
||||
{"x": 0, "y": 2.25, "w": 1.5},
|
||||
{"x": 1.5, "y": 2.25},
|
||||
{"x": 2.5, "y": 2.25},
|
||||
{"x": 3.5, "y": 2.25},
|
||||
@ -58,7 +58,6 @@
|
||||
{"x": 10.5, "y": 2.25},
|
||||
{"x": 11.5, "y": 2.25},
|
||||
{"x": 12.5, "y": 2.25},
|
||||
{"x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
|
||||
{"x": 15.25, "y": 2.25},
|
||||
{"x": 16.25, "y": 2.25},
|
||||
{"x": 17.25, "y": 2.25},
|
||||
@ -80,6 +79,7 @@
|
||||
{"x": 10.75, "y": 3.25},
|
||||
{"x": 11.75, "y": 3.25},
|
||||
{"x": 12.75, "y": 3.25},
|
||||
{"x": 13.75, "y": 2.25, "w": 1.25, "h": 2},
|
||||
{"x": 18.5, "y": 3.25},
|
||||
{"x": 19.5, "y": 3.25},
|
||||
{"x": 20.5, "y": 3.25},
|
||||
|
@ -10,7 +10,7 @@ from qmk.info import info_json, get_modules
|
||||
from qmk.json_schema import json_load
|
||||
from qmk.keyboard import keyboard_completer, keyboard_folder
|
||||
from qmk.commands import dump_lines, parse_configurator_json
|
||||
from qmk.path import normpath, FileType
|
||||
from qmk.path import normpath, unix_style_path, FileType
|
||||
from qmk.constants import GPL2_HEADER_SH_LIKE, GENERATED_HEADER_SH_LIKE
|
||||
from qmk.community_modules import find_module_path, load_module_jsons
|
||||
|
||||
@ -63,7 +63,7 @@ def generate_modules_rules(keyboard, filename):
|
||||
lines.append('')
|
||||
lines.append('OPT_DEFS += -DCOMMUNITY_MODULES_ENABLE=TRUE')
|
||||
for module in modules:
|
||||
module_path = find_module_path(module)
|
||||
module_path = unix_style_path(find_module_path(module))
|
||||
if not module_path:
|
||||
raise FileNotFoundError(f"Module '{module}' not found.")
|
||||
lines.append('')
|
||||
|
@ -3,7 +3,7 @@
|
||||
import logging
|
||||
import os
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
from pathlib import Path, PureWindowsPath, PurePosixPath
|
||||
|
||||
from qmk.constants import MAX_KEYBOARD_SUBFOLDERS, QMK_FIRMWARE, QMK_USERSPACE, HAS_QMK_USERSPACE
|
||||
from qmk.errors import NoSuchKeyboardError
|
||||
@ -146,6 +146,28 @@ def normpath(path):
|
||||
return Path(os.environ['ORIG_CWD']) / path
|
||||
|
||||
|
||||
def unix_style_path(path):
|
||||
"""Converts a Windows-style path with drive letter to a Unix path.
|
||||
|
||||
Path().as_posix() normally returns the path with drive letter and forward slashes, so is inappropriate for `Makefile` paths.
|
||||
|
||||
Passes through unadulterated if the path is not a Windows-style path.
|
||||
|
||||
Args:
|
||||
|
||||
path
|
||||
The path to convert.
|
||||
|
||||
Returns:
|
||||
The input path converted to Unix format.
|
||||
"""
|
||||
if isinstance(path, PureWindowsPath):
|
||||
p = list(path.parts)
|
||||
p[0] = f'/{p[0][0].lower()}' # convert from `X:/` to `/x`
|
||||
path = PurePosixPath(*p)
|
||||
return path
|
||||
|
||||
|
||||
class FileType(argparse.FileType):
|
||||
def __init__(self, *args, **kwargs):
|
||||
# Use UTF8 by default for stdin
|
||||
|
@ -7,7 +7,7 @@
|
||||
ASSERT_COMMUNITY_MODULES_MIN_API_VERSION(1, 0, 0);
|
||||
|
||||
uint32_t delayed_hello_world(uint32_t trigger_time, void *cb_arg) {
|
||||
printf("Hello, world! I'm a QMK based keyboard! The keymap array size is %d bytes.\n", (int)hello_world_introspection().total_size);
|
||||
dprintf("Hello, world! I'm a QMK based keyboard! The keymap array size is %d bytes.\n", (int)hello_world_introspection().total_size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
10
modules/qmk/super_alt_tab/qmk_module.json
Normal file
10
modules/qmk/super_alt_tab/qmk_module.json
Normal file
@ -0,0 +1,10 @@
|
||||
{
|
||||
"module_name": "Super Alt Tab",
|
||||
"maintainer": "QMK Maintainers",
|
||||
"keycodes": [
|
||||
{
|
||||
"key": "COMMUNITY_MODULE_SUPER_ALT_TAB",
|
||||
"aliases": ["CM_S_AT"]
|
||||
}
|
||||
]
|
||||
}
|
50
modules/qmk/super_alt_tab/super_alt_tab.c
Normal file
50
modules/qmk/super_alt_tab/super_alt_tab.c
Normal file
@ -0,0 +1,50 @@
|
||||
// Copyright 2025 Christopher Courtney, aka Drashna Jael're (@drashna)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
ASSERT_COMMUNITY_MODULES_MIN_API_VERSION(1, 0, 0);
|
||||
|
||||
static bool is_alt_tab_active = false;
|
||||
static uint16_t alt_tab_timer = 0;
|
||||
|
||||
#ifndef COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT
|
||||
# define COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT 1000
|
||||
#endif // COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT
|
||||
#ifndef COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER
|
||||
# define COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER MOD_LALT
|
||||
#endif // COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER
|
||||
#ifndef COMMUNITY_MODULE_SUPER_ALT_TAB_KEY
|
||||
# define COMMUNITY_MODULE_SUPER_ALT_TAB_KEY KC_TAB
|
||||
#endif // COMMUNITY_MODULE_SUPER_ALT_TAB_KEY
|
||||
|
||||
bool process_record_super_alt_tab(uint16_t keycode, keyrecord_t *record) {
|
||||
if (!process_record_super_alt_tab_kb(keycode, record)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (keycode) { // This will do most of the grunt work with the keycodes.
|
||||
case COMMUNITY_MODULE_SUPER_ALT_TAB:
|
||||
if (record->event.pressed) {
|
||||
if (!is_alt_tab_active) {
|
||||
is_alt_tab_active = true;
|
||||
register_mods(COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER);
|
||||
}
|
||||
alt_tab_timer = timer_read();
|
||||
register_code(COMMUNITY_MODULE_SUPER_ALT_TAB_KEY);
|
||||
} else {
|
||||
unregister_code(COMMUNITY_MODULE_SUPER_ALT_TAB_KEY);
|
||||
}
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void housekeeping_task_super_alt_tab(void) {
|
||||
if (is_alt_tab_active) {
|
||||
if (timer_elapsed(alt_tab_timer) > COMMUNITY_MODULE_SUPER_ALT_TAB_TIMEOUT) {
|
||||
unregister_mods(COMMUNITY_MODULE_SUPER_ALT_TAB_MODIFIER);
|
||||
is_alt_tab_active = false;
|
||||
}
|
||||
}
|
||||
}
|
2
platforms/chibios/vendors/RP/RP2040.mk
vendored
2
platforms/chibios/vendors/RP/RP2040.mk
vendored
@ -78,7 +78,7 @@ PICOSDKINTRINSICSSRC = $(PICOSDKROOT)/src/rp2_common/pico_divider/divider.S \
|
||||
$(PICOSDKROOT)/src/rp2_common/pico_int64_ops/pico_int64_ops_aeabi.S
|
||||
|
||||
PICOSDKINTRINSICSINC = $(PICOSDKROOT)/src/common/pico_base/include \
|
||||
$(PICOSDKROOT)/src/rp2_common/pico_platfrom/include \
|
||||
$(PICOSDKROOT)/src/rp2_common/pico_platform/include \
|
||||
$(PICOSDKROOT)/src/rp2_common/hardware_divider/include
|
||||
|
||||
# integer division intrinsics utilizing the RP2040 hardware divider
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
/* Remove these once we transitioned to C23 across all platfroms */
|
||||
/* Remove these once we transitioned to C23 across all platforms */
|
||||
#define UINT32_WIDTH 32
|
||||
#define UINT64_WIDTH 64
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user