1
0

Compare commits

...

11 Commits

Author SHA1 Message Date
Joel Challis
2645751ce1 Add warning when deprecated 'promicro_rp2040' is used (#25112) 2025-04-08 12:35:43 +10:00
Joel Challis
ca84b57042 Remove direct docs.qmk.fm links from docs (#25113) 2025-04-08 12:31:17 +10:00
sudo pacman -Syu
5f222a3e02 Fix coban pad9a wrong layout in keyboard.json (#25100) 2025-04-07 11:03:05 -06:00
Ivan Gromov
f94c8fd766 [Keyboard] Add Ortho Slayer (#25099)
* Add Ortho Slayer

* Update keyboards/keyten/ortho_slayer/keymaps/default/keymap.c

Co-authored-by: jack <jack@pngu.org>

* Update keyboards/keyten/ortho_slayer/readme.md

Co-authored-by: jack <jack@pngu.org>

---------

Co-authored-by: jack <jack@pngu.org>
2025-04-07 00:29:37 -06:00
nonameCCC
a7ac6e4e68 [Keyboard] Add PHDesign PH60/Multi Keyboard PCB (#25086)
* Add PH60/Multi Support

* Add PCB PIcture for README

* Remove MO(_FN2)

* README Typo Fix

* Layout and README Adjustment

* Add README for PHDesign Main Folder

* Keymap Improvement

* Update README.md
2025-04-06 22:03:24 -06:00
Dam Vu Duy
9e775b8e9d Add Coban Pad 12A (#25039)
Co-authored-by: jack <jack@pngu.org>
2025-04-06 10:56:19 -07:00
Joel Challis
625d62efdf Fix 'qmk lint -kb' argument handling (#25093) 2025-04-06 07:21:04 +10:00
henrikosorensen
bc42a7ea89 At101ish (#25072)
* Dell AT101 replacement pcb support

* Update keyboards/at101ish/readme.md

Co-Authored-By: fauxpark <fauxpark@gmail.com>

* remove empty src clause in makefile

* feature: Update at101ish to qmk v0.28

* feature: Add osdetecting keymap variant.

* refactor: Move at101ish keyboard to handwired folder.

* fix: Adjust at101ish readme-

* fix: review changes.

* chore: Remove unneeded feature.

---------

Co-authored-by: fauxpark <fauxpark@gmail.com>
2025-03-29 18:17:38 -06:00
Nick Brassel
49d13595f6 Fix lockups on AVR with qmk/hello_world module (#25074)
Fix lockups on AVR.
2025-03-30 00:19:38 +11:00
フィルターペーパー
d0cfb938ef Module documentation typo correction (#25073) 2025-03-28 20:47:26 -06:00
Ben Green
94a9099c38 Update onekey example for nucleo f446re (#25067)
* use accessible pins for nucleo f446re onekey example

* remove pin collision with matrix in keyboard.json

* use accessible pins for LED

* remove pin collision with matrix

* Update readme.md to reflect pin changes
2025-03-29 00:38:24 +11:00
27 changed files with 1124 additions and 12 deletions

View File

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

View File

@@ -231,7 +231,7 @@ Once you have confirmed that the keyboard is working, if you have used a seperat
If you found this fullfilling you could experiment by adding additional features such as [in switch LEDs](https://geekhack.org/index.php?topic=94258.0), [in switch RGB](https://www.reddit.com/r/MechanicalKeyboards/comments/5s1l5u/photoskeyboard_science_i_made_a_handwired_rgb/), [RGB underglow](https://medium.com/@DavidNZ/hand-wired-custom-keyboard-cdd14429c7b3#.7a1ovebsk) or even an [OLED display!](https://www.reddit.com/r/olkb/comments/5zy7og/adding_ssd1306_oled_display_to_your_build/)
There are a lot of possibilities inside the firmware - explore [docs.qmk.fm](https://docs.qmk.fm) for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by [the OLKB subreddit](https://reddit.com/r/olkb) or [QMK Discord](https://discord.gg/qmk) for help!
There are a lot of possibilities inside the firmware - explore [the documentation](/) for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by [the OLKB subreddit](https://reddit.com/r/olkb) or [QMK Discord](https://discord.gg/qmk) for help!
## Links to Other Guides

View File

@@ -85,7 +85,7 @@ Reusing the `VID` and `PID` for multiple boards (such as for two variants, wired
If there is sufficient ambiguity about a board, supporting evidence will need to be presented to the QMK team. This may include impartial third parties who can demonstrate a board's existence and can confirm its feature set, such as well-known content producers; popular review sites or notable video creators may be leveraged. If such evidence is unavailable, as a last resort the vendor may be required to ship a fully functional board in full retail packaging to QMK maintainers for verification. Engineering samples will not be accepted, as one-off boards have been deceptively used in the past.
PRs submitted to upstream QMK should not expect an instant merge just because source code has been provided -- code from OEMs has historically been of a quality lower than QMK standards, so as per the [PR checklist](https://docs.qmk.fm/pr_checklist) submitters should make the changes as small as possible and be prepared to change their implementation.
PRs submitted to upstream QMK should not expect an instant merge just because source code has been provided -- code from OEMs has historically been of a quality lower than QMK standards, so as per the [PR checklist](pr_checklist) submitters should make the changes as small as possible and be prepared to change their implementation.
## Detection

View File

@@ -0,0 +1,7 @@
// Copyright 2025 RyanDam (https://github.com/RyanDam)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U

View File

@@ -0,0 +1,50 @@
{
"keyboard_name": "Coban Pad 12A",
"name": "Coban Pad 12A",
"url": "https://cobanstationery.com",
"maintainer": "Coban Stationery",
"manufacturer": "Coban Stationery",
"usb": {
"pid": "0xC12A",
"vid": "0xCB3A",
"device_version": "1.0.0"
},
"matrix_pins": {
"cols": ["GP18", "GP16", "GP11", "GP10"],
"rows": ["GP19", "GP17", "GP12"]
},
"diode_direction": "ROW2COL",
"encoder": {
"rotary": [
{"pin_a": "GP20", "pin_b": "GP21"}
]
},
"processor": "RP2040",
"bootloader": "rp2040",
"features": {
"bootmagic": true,
"encoder": true,
"extrakey": true,
"mousekey": true
},
"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": [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": [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}
]
}
}
}

View File

@@ -0,0 +1,19 @@
// Copyright 2025 RyanDam (https://github.com/RyanDam)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_MPLY, KC_MPRV, KC_MUTE, KC_MNXT,
KC_PGUP, KC_ESC, KC_UP, KC_ENT,
KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT
),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
};
#endif

View File

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

View File

@@ -0,0 +1,23 @@
# Coban Pad 12A
![Coban Pad 12A](https://i.imgur.com/PTIaQld.jpeg)
Small ortho keyboard with 11 hotswapable buttons and 1 encoder
* Keyboard Maintainer: [RyanDam](https://github.com/RyanDam)
* Hardware Supported: Coban Pad 12A
Make example for this keyboard (after setting up your build environment):
make coban/pad12a:default
Flashing example for this keyboard:
make coban/pad12a: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:
* **boot button**: Hold the BOOT button on the back of the PCB while plug in usb cable

View File

@@ -69,7 +69,7 @@
{"label": "key_3", "matrix": [0, 4], "x": 2, "y": 1},
{"label": "key_4", "matrix": [0, 5], "x": 0, "y": 2},
{"label": "key_5", "matrix": [0, 6], "x": 1, "y": 2},
{"label": "key_6", "matrix": [0, 7], "x": 2, "y": 3}
{"label": "key_6", "matrix": [0, 7], "x": 2, "y": 2}
]
}
}

View 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}
]
}
}
}

View 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)
};

View 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;
}

View File

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

View 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.

View File

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

View File

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

View File

@@ -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`.

View File

@@ -0,0 +1,117 @@
{
"manufacturer": "keyten x La-Versa",
"keyboard_name": "Ortho Slayer",
"maintainer": "key10iq",
"processor": "STM32F072",
"bootloader": "stm32-dfu",
"usb": {
"vid": "0xEB69",
"pid": "0x9001",
"device_version": "0.0.1"
},
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"diode_direction": "ROW2COL",
"matrix_pins": {
"rows": ["B6", "B4", "A15", "B0", "B1", "A6", "B15", "B11", "A9", "B13"],
"cols": ["B7", "B14", "B5", "A8", "B3", "A10", "A14", "B12", "A7", "B2", "B10"]
},
"layouts": {
"LAYOUT": {
"layout": [
{ "matrix": [0, 0], "x": 0, "y": 0 },
{ "matrix": [1, 0], "x": 1, "y": 0 },
{ "matrix": [0, 1], "x": 2, "y": 0 },
{ "matrix": [1, 1], "x": 3, "y": 0 },
{ "matrix": [0, 2], "x": 4, "y": 0 },
{ "matrix": [1, 2], "x": 5, "y": 0 },
{ "matrix": [0, 3], "x": 6, "y": 0 },
{ "matrix": [1, 3], "x": 7, "y": 0 },
{ "matrix": [0, 4], "x": 8, "y": 0 },
{ "matrix": [1, 4], "x": 9, "y": 0 },
{ "matrix": [0, 5], "x": 10, "y": 0 },
{ "matrix": [1, 5], "x": 11, "y": 0 },
{ "matrix": [0, 6], "x": 12, "y": 0 },
{ "matrix": [1, 6], "x": 13, "y": 0 },
{ "matrix": [0, 7], "x": 14.25, "y": 0 },
{ "matrix": [1, 7], "x": 15.25, "y": 0 },
{ "matrix": [0, 8], "x": 16.25, "y": 0 },
{ "matrix": [1, 8], "x": 17.5, "y": 0 },
{ "matrix": [0, 9], "x": 18.5, "y": 0 },
{ "matrix": [1, 9], "x": 19.5, "y": 0 },
{ "matrix": [0, 10], "x": 20.5, "y": 0 },
{ "matrix": [2, 0], "x": 0, "y": 1 },
{ "matrix": [3, 0], "x": 1, "y": 1 },
{ "matrix": [2, 1], "x": 2, "y": 1 },
{ "matrix": [3, 1], "x": 3, "y": 1 },
{ "matrix": [2, 2], "x": 4, "y": 1 },
{ "matrix": [3, 2], "x": 5, "y": 1 },
{ "matrix": [2, 3], "x": 6, "y": 1 },
{ "matrix": [3, 3], "x": 7, "y": 1 },
{ "matrix": [2, 4], "x": 8, "y": 1 },
{ "matrix": [3, 4], "x": 9, "y": 1 },
{ "matrix": [2, 5], "x": 10, "y": 1 },
{ "matrix": [3, 5], "x": 11, "y": 1 },
{ "matrix": [2, 6], "x": 12, "y": 1 },
{ "matrix": [3, 6], "x": 13, "y": 1 },
{ "matrix": [2, 7], "x": 14.25, "y": 1 },
{ "matrix": [3, 7], "x": 15.25, "y": 1 },
{ "matrix": [2, 8], "x": 16.25, "y": 1 },
{ "matrix": [3, 8], "x": 17.5, "y": 1 },
{ "matrix": [2, 9], "x": 18.5, "y": 1 },
{ "matrix": [3, 9], "x": 19.5, "y": 1 },
{ "h": 2, "matrix": [5, 10], "x": 20.5, "y": 1 },
{ "matrix": [4, 0], "x": 0, "y": 2 },
{ "matrix": [5, 0], "x": 1, "y": 2 },
{ "matrix": [4, 1], "x": 2, "y": 2 },
{ "matrix": [5, 1], "x": 3, "y": 2 },
{ "matrix": [4, 2], "x": 4, "y": 2 },
{ "matrix": [5, 2], "x": 5, "y": 2 },
{ "matrix": [4, 3], "x": 6, "y": 2 },
{ "matrix": [5, 3], "x": 7, "y": 2 },
{ "matrix": [4, 4], "x": 8, "y": 2 },
{ "matrix": [5, 4], "x": 9, "y": 2 },
{ "matrix": [4, 5], "x": 10, "y": 2 },
{ "matrix": [5, 5], "x": 11, "y": 2 },
{ "matrix": [4, 6], "x": 12, "y": 2 },
{ "matrix": [5, 6], "x": 13, "y": 2 },
{ "matrix": [5, 9], "x": 17.5, "y": 2 },
{ "matrix": [4, 9], "x": 18.5, "y": 2 },
{ "matrix": [4, 10], "x": 19.5, "y": 2 },
{ "matrix": [6, 0], "w": 2, "x": 0, "y": 3 },
{ "matrix": [7, 0], "x": 2, "y": 3 },
{ "matrix": [6, 2], "x": 3, "y": 3 },
{ "matrix": [7, 2], "x": 4, "y": 3 },
{ "matrix": [6, 3], "x": 5, "y": 3 },
{ "matrix": [7, 3], "x": 6, "y": 3 },
{ "matrix": [6, 4], "x": 7, "y": 3 },
{ "matrix": [7, 4], "x": 8, "y": 3 },
{ "matrix": [6, 5], "x": 9, "y": 3 },
{ "matrix": [7, 5], "x": 10, "y": 3 },
{ "matrix": [7, 6], "x": 11, "y": 3 },
{ "matrix": [6, 6], "w": 2, "x": 12, "y": 3 },
{ "matrix": [6, 8], "x": 15.25, "y": 3 },
{ "matrix": [7, 8], "x": 17.5, "y": 3 },
{ "matrix": [6, 9], "x": 18.5, "y": 3 },
{ "matrix": [7, 9], "x": 19.5, "y": 3 },
{ "h": 2, "matrix": [9, 10], "x": 20.5, "y": 3 },
{ "matrix": [8, 0], "w": 1.25, "x": 0, "y": 4 },
{ "matrix": [9, 0], "x": 1.25, "y": 4 },
{ "matrix": [8, 1], "w": 1.25, "x": 2.25, "y": 4 },
{ "matrix": [8, 4], "w": 7, "x": 3.5, "y": 4 },
{ "matrix": [9, 4], "w": 1.25, "x": 10.5, "y": 4 },
{ "matrix": [8, 6], "x": 11.75, "y": 4 },
{ "matrix": [9, 6], "w": 1.25, "x": 12.75, "y": 4 },
{ "matrix": [8, 7], "x": 14.25, "y": 4 },
{ "matrix": [9, 7], "x": 15.25, "y": 4 },
{ "matrix": [8, 8], "x": 16.25, "y": 4 },
{ "matrix": [9, 8], "w": 2, "x": 17.5, "y": 4 },
{ "matrix": [8, 10], "x": 19.5, "y": 4 }
]
}
}
}

View File

@@ -0,0 +1,24 @@
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
MO(1), 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_GRV, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
KC_ESC, 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_BSPC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_KP_9, KC_PPLS,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_P4, KC_P5, KC_P6,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
),
[1] = LAYOUT(
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
)
};

View File

@@ -0,0 +1,27 @@
# keyten x La-Versa Ortho Slayer
Ortho Slayer is a full size FRL ortho keyboard inspired by Berserk
![Ortho Slayer image](https://i.imgur.com/CGYysPM.jpeg)
* Keyboard Maintainer: [keyten](https://github.com/key10iq)
* Hardware Supported: keyten x La-Versa Ortho Slayer
* Hardware Availability: private GB
Make example for this keyboard (after setting up your build environment):
make keyten/ortho_slayer:default
Flashing example for this keyboard:
make keyten/ortho_slayer: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
* Keycode in layout: Press the key mapped to `QK_BOOT` if it is available
* Physical reset button: Hold the button on the back of the PCB

View File

@@ -0,0 +1,298 @@
{
"manufacturer": "phdesign.cc",
"keyboard_name": "ph60_multi",
"maintainer": "phdesign",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13"],
"rows": ["GP14", "GP15", "GP18", "GP19", "GP20"]
},
"processor": "RP2040",
"qmk": {
"locking": {
"enabled": true,
"resync": true
}
},
"url": "phdesign.cc",
"usb": {
"device_version": "2.0.1",
"pid": "0x0002",
"vid": "0x5048"
},
"community_layouts": ["60_ansi", "60_ansi_tsangan_split_bs_rshift", "60_iso"]
"layouts": {
"LAYOUT_all": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [2, 13], "x": 14, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_tsangan_split_bs_rshift": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [2, 13], "x": 14, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 12.5, "y": 4},
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_iso": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 12], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
}
}
}

View File

@@ -0,0 +1,28 @@
// Copyright 2023 QMK
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum custom_layers {
_BASE,
_FN1,
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
// Base Layer (61 keys)
[_BASE] = LAYOUT_all(
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_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______,
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL
),
// Fn1 Layer (Windows Lock Shifting Layer)
[_FN1] = LAYOUT_all(
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_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______,
_______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, _______, _______,
_______, GU_TOGG, _______, _______, _______, _______, _______, _______
),
};

View File

@@ -0,0 +1,28 @@
# phdesign/ph60/multi
![PromoImage](https://i.imgur.com/sUwC9mk.jpg)
A 60% multi-layout supported keyboard PCB with open source keyboard case.
* Keyboard Maintainer: [Team PHDesign](https://github.com/ph-design)
* Hardware Supported: PH60/Multi PCB
* Hardware Availability:
- Store: https://e.tb.cn/h.6VMjUgWZkUGwq26?tk=oVyAeD6uPS2
- GitHub Repo: https://github.com/ph-design/PH60/tree/Rev.2/PCB_Rev2/Multi
Make example for this keyboard (after setting up your build environment):
make phdesign/ph60/multi:default
Flashing example for this keyboard:
make phdesign/ph60/multi: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

View File

@@ -0,0 +1,9 @@
![PHDesign Logo](https://i.imgur.com/zkiyChR.png)
PHDesign is a team focused on making variety kinds of tech stuff,including keyboards and keyboard-like controllers. This directory includes QMK config files for our keyboard products.
* Maintainer: [Team PHDesign](https://github.com/ph-design)
* Supported Hardware:
* [`PH60/Multi`](ph60/multi/): PH60 multi-layout PCB
* [`PH-AC`](phac/): PH-AC rhythm game controller
* Product Availability: [phdesing.cc](https://phdesign.cc/)

View File

@@ -317,10 +317,10 @@ def lint(cli):
if isinstance(cli.config.lint.keyboard, str):
# if provided via config - string not array
keyboard_list = [cli.config.lint.keyboard]
elif is_all_keyboards(cli.args.keyboard[0]):
elif any(is_all_keyboards(kb) for kb in cli.args.keyboard):
keyboard_list = list_keyboards()
else:
keyboard_list = cli.config.lint.keyboard
keyboard_list = list(set(cli.config.lint.keyboard))
failed = []

View File

@@ -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;
}

View File

@@ -1,2 +1,8 @@
CONVERTER:=platforms/chibios/converters/promicro_to_sparkfun_pm2040
ACTIVE_CONVERTER:=sparkfun_pm2040
$(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)
$(info The 'CONVERT_TO=promicro_rp2040' option is now deprecated.)
$(info Depending on hardware either 'CONVERT_TO=sparkfun_pm2040' or 'CONVERT_TO=rp2040_ce' should be used instead.)
$(info See https://docs.qmk.fm/feature_converters#pro-micro documentation for more information.)
$(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)