1
0

Compare commits

..

2 Commits

Author SHA1 Message Date
Nick Brassel
312f42945d Branch point for 2025q2 breaking change. 2025-02-28 09:26:13 +11:00
Nick Brassel
40b9dada5c Merge remote-tracking branch 'upstream/master' into develop 2025-02-28 09:24:51 +11:00
278 changed files with 234 additions and 14124 deletions

View File

@@ -1,4 +1,4 @@
CompileFlags:
Add: [-Wno-unknown-attributes, -Wno-maybe-uninitialized, -Wno-unknown-warning-option]
Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues, -D__has_include*]
Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues]
Compiler: clang

View File

@@ -15,7 +15,6 @@ on:
- quantum/**/*
- tests/**/*
- tmk_core/**/*
- lib/python/**/*
- util/**/*
- Makefile
- '*.mk'

View File

@@ -36,7 +36,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v46
uses: tj-actions/changed-files@v45
with:
use_rest_api: true

View File

@@ -39,7 +39,7 @@ jobs:
qmk format-text -a
git diff
- uses: rlespinasse/github-slug-action@v5
- uses: rlespinasse/github-slug-action@v3.x
- name: Become QMK Bot
run: |

View File

@@ -27,7 +27,7 @@ jobs:
- name: Get changed files
id: file_changes
uses: tj-actions/changed-files@v46
uses: tj-actions/changed-files@v45
with:
use_rest_api: true

View File

@@ -26,7 +26,7 @@ jobs:
util/regen.sh
git diff
- uses: rlespinasse/github-slug-action@v5
- uses: rlespinasse/github-slug-action@v3.x
- name: Become QMK Bot
run: |

View File

@@ -1,7 +1,7 @@
{
"license": "GPL-2.0-or-later",
"devDependencies": {
"vite": "^5.4.15",
"vite": "^5.4.12",
"vitepress": "^1.1.0",
"vitepress-plugin-tabs": "^0.5.0",
"vue": "^3.4.24"

View File

@@ -766,10 +766,10 @@ tabbable@^6.2.0:
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97"
integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
vite@^5.2.9, vite@^5.4.15:
version "5.4.15"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.15.tgz#2941547f10ebb4bf9b0fa0da863c06711eb7e5e5"
integrity sha512-6ANcZRivqL/4WtwPGTKNaosuNJr5tWiftOC7liM7G9+rMb8+oeJeyzymDu4rTN93seySBmbjSfsS3Vzr19KNtA==
vite@^5.2.9, vite@^5.4.12:
version "5.4.12"
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.12.tgz#627d12ff06de3942557dfe8632fd712a12a072c7"
integrity sha512-KwUaKB27TvWwDJr1GjjWthLMATbGEbeWYZIbGZ5qFIsgPP3vWzLu4cVooqhm5/Z2SPDUMjyPVjTztm5tYKwQxA==
dependencies:
esbuild "^0.21.3"
postcss "^8.4.43"

View File

@@ -3,7 +3,7 @@
"$id": "qmk.community_module.v1",
"title": "Community Module Information",
"type": "object",
"required": ["module_name", "maintainer"],
"required": ["module_name", "maintainer"]
"properties": {
"module_name": {"$ref": "qmk.definitions.v1#/text_identifier"},
"maintainer": {"$ref": "qmk.definitions.v1#/text_identifier"},
@@ -12,6 +12,6 @@
"format": "uri"
},
"keycodes": {"$ref": "qmk.definitions.v1#/keycode_decl_array"},
"features": {"$ref": "qmk.keyboard.v1#/definitions/features_config"}
"features": {"$ref": "qmk.keyboard.v1#/definitions/features_config"},
}
}

View File

@@ -30,12 +30,12 @@
"properties": {
"pins": {"$ref": "qmk.definitions.v1#/mcu_pin_array"}
}
},
}
"features_config": {
"$ref": "qmk.definitions.v1#/boolean_array",
"propertyNames": {"$ref": "qmk.definitions.v1#/snake_case"},
"not": {"required": ["lto"]}
}
},
},
"type": "object",
"not": {"required": ["vendorId", "productId"]}, // reject via keys...
@@ -354,7 +354,7 @@
"axis_resolution": {"$ref": "qmk.definitions.v1#/unsigned_int"},
"axes": {
"type": "object",
"propertyNames": {"enum": ["x", "y", "z", "rx", "ry", "rz"]},
"propertyNames": {"enum": ["x", "y", "z", "rx", "ry", "rz"]}
"additionalProperties": {
"oneOf": [
{

View File

@@ -8,7 +8,7 @@
],
"properties": {
"userspace_version": {
"type": "string"
}
"type": "string",
},
}
}

View File

@@ -9,7 +9,7 @@
{"$ref": "qmk.definitions.v1#/keyboard_keymap_tuple"},
{"$ref": "qmk.definitions.v1#/json_file_path"}
]
}
},
},
"required": [
"userspace_version",

View File

@@ -10,7 +10,7 @@
{"$ref": "qmk.definitions.v1#/keyboard_keymap_env"},
{"$ref": "qmk.definitions.v1#/json_file_path"}
]
}
},
},
"required": [
"userspace_version",

View File

@@ -401,7 +401,6 @@ This is a [make](https://www.gnu.org/software/make/manual/make.html) file that i
* `atmel-dfu`
* `lufa-dfu`
* `qmk-dfu`
* `qmk-hid`
* `halfkay`
* `caterina`
* `bootloadhid`

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 submodule update --init --recursive
git submdule update --init --recursive
```
This will ensure the copy of the module is made in your userspace.

View File

@@ -227,8 +227,6 @@ For inspiration and examples, check out the built-in effects under `quantum/led_
#define LED_MATRIX_DEFAULT_MODE LED_MATRIX_SOLID // Sets the default mode, if none has been set
#define LED_MATRIX_DEFAULT_VAL LED_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
#define LED_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set
#define LED_MATRIX_VAL_STEP 8 // The value by which to increment the brightness per adjustment action
#define LED_MATRIX_SPD_STEP 16 // The value by which to increment the animation speed per adjustment action
#define LED_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL // Sets the default LED flags, if none has been set
#define LED_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR

View File

@@ -378,10 +378,6 @@ These are defined in [`color.h`](https://github.com/qmk/qmk_firmware/blob/master
#define RGB_MATRIX_DEFAULT_SAT 255 // Sets the default saturation value, if none has been set
#define RGB_MATRIX_DEFAULT_VAL RGB_MATRIX_MAXIMUM_BRIGHTNESS // Sets the default brightness value, if none has been set
#define RGB_MATRIX_DEFAULT_SPD 127 // Sets the default animation speed, if none has been set
#define RGB_MATRIX_HUE_STEP 8 // The value by which to increment the hue per adjustment action
#define RGB_MATRIX_SAT_STEP 16 // The value by which to increment the saturation per adjustment action
#define RGB_MATRIX_VAL_STEP 16 // The value by which to increment the brightness per adjustment action
#define RGB_MATRIX_SPD_STEP 16 // The value by which to increment the animation speed per adjustment action
#define RGB_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL // Sets the default LED flags, if none has been set
#define RGB_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR

View File

@@ -97,9 +97,9 @@ Your RGB lighting can be configured by placing these `#define`s in your `config.
|Define |Default |Description |
|---------------------------|----------------------------|---------------------------------------------------------------------------------------------------------------------------|
|`RGBLIGHT_HUE_STEP` |`8` |The value by which to increment the hue per adjustment action |
|`RGBLIGHT_SAT_STEP` |`17` |The value by which to increment the saturation per adjustment action |
|`RGBLIGHT_VAL_STEP` |`17` |The value by which to increment the brightness per adjustment action |
|`RGBLIGHT_HUE_STEP` |`8` |The number of steps to cycle through the hue by |
|`RGBLIGHT_SAT_STEP` |`17` |The number of steps to increment the saturation by |
|`RGBLIGHT_VAL_STEP` |`17` |The number of steps to increment the brightness by |
|`RGBLIGHT_LIMIT_VAL` |`255` |The maximum brightness level |
|`RGBLIGHT_SLEEP` |*Not defined* |If defined, the RGB lighting will be switched off when the host goes to sleep |
|`RGBLIGHT_SPLIT` |*Not defined* |If defined, synchronization functionality for split keyboards is added |

View File

@@ -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 active 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 theres's 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).

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 [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!
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!
## Links to Other Guides

View File

@@ -19,13 +19,9 @@ If you own a board from one of the following vendors already, consider asking th
| Vendor | Reason |
|------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Ajazz | Selling tri-mode boards based on QMK without sources. |
| Alpaca / Apos | Selling wireless boards with "open" source code, but linking against closed-source wireless libraries. Crippled source code already unknowingly merged to QMK. |
| Attack Shark | Selling tri-mode boards based on QMK without sources. (Clones of Ajazz?) |
| BBB Keyboard | Selling tri-mode boards based on QMK without sources, attempted upstreaming crippled firmware without wireless. |
| Chosfox | Selling L75 wired/wireless boards based on QMK without sources, just `via.json` provided. Raised on discord over multiple weeks without response. |
| CIDOO | Selling wired boards based on QMK without sources, just `via.json` provided. |
| ColorReco | Selling tri-mode boards based on QMK without sources. |
| Darmoshark | Selling wired boards based on QMK without sources, just `via.json` provided. |
| Epomaker | Lots of historical keyboards with `via.json` but no corresponding sources. Wireless code for a small handful provided, pending core cleanup for QMK upstreaming. Most other boards have source nowhere to be seen. |
| Ergokbd (IFKB) | At least their crkbd clone ships with QMK+Vial, seemingly refuses to disclose sources despite multiple customers requesting them. |
@@ -40,7 +36,6 @@ If you own a board from one of the following vendors already, consider asking th
| pressplayid | Selling wired and tri-mode boards based on QMK without sources, just `via.json` provided |
| qwertykeys | Selling wired and tri-mode boards based on QMK without sources, just `via.json` provided. |
| Redragon | Selling tri-mode boards based on QMK without sources, attempted upstreaming crippled firmware without wireless. |
| Riccks | Selling tri-mode boards based on QMK without sources. |
| Royal Kludge | PRs for fake boards in order to attain VIA compatibility identified. Lots of other keyboards with `via.json` but no corresponding sources, attempted upstreaming crippled firmware without wireless. Wireless code for some provided, pending core cleanup for QMK upstreaming. PRs including different manufacturer names as well. |
| Shenzhen Hangsheng | PR submissions with crippled firmware, debating with maintainers about wireless despite marketing material clearly stating tri-mode. |
| Tacworks | Selling tri-mode boards based on QMK, crippled firmware already merged into QMK without wireless without QMK team realising. |
@@ -50,7 +45,6 @@ If you own a board from one of the following vendors already, consider asking th
| Womier | Selling tri-mode boards based on QMK without sources, attempted upstreaming crippled firmware without wireless. |
| Wuque Studio | Selling wired and tri-mode boards based on QMK without sources, just `via.json` provided. |
| XVX | Ambiguity on PRs -- marketing says wireless, PR author said wired-only. Seemingly intentionally deceptive. |
| Yunzii | Selling tri-mode boards based on QMK without sources, just `via.json` provided. |
| Zuoya | Selling tri-mode boards based on QMK without sources, just `via.json` provided. |
::: danger Violations
@@ -85,7 +79,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](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](https://docs.qmk.fm/pr_checklist) submitters should make the changes as small as possible and be prepared to change their implementation.
## Detection

View File

@@ -884,7 +884,7 @@ static painter_image_handle_t my_image;
void keyboard_post_init_kb(void) {
my_image = qp_load_image_mem(gfx_my_image);
if (my_image != NULL) {
qp_drawimage(display, (240 - my_image->width), (320 - my_image->height), my_image);
qp_drawimage(display, (239 - my_image->width), (319 - my_image->height), my_image);
}
}
```
@@ -909,7 +909,7 @@ static deferred_token my_anim;
void keyboard_post_init_kb(void) {
my_image = qp_load_image_mem(gfx_my_image);
if (my_image != NULL) {
my_anim = qp_animate(display, (240 - my_image->width), (320 - my_image->height), my_image);
my_anim = qp_animate(display, (239 - my_image->width), (319 - my_image->height), my_image);
}
}
```
@@ -1001,7 +1001,7 @@ void keyboard_post_init_kb(void) {
if (my_font != NULL) {
static const char *text = "Hello from QMK!";
int16_t width = qp_textwidth(my_font, text);
qp_drawtext(display, (240 - width), (320 - my_font->line_height), my_font, text);
qp_drawtext(display, (239 - width), (319 - my_font->line_height), my_font, text);
}
}
```

View File

@@ -413,7 +413,7 @@ Configures the [LED Matrix](features/led_matrix) feature.
* Default: `16`
* `led_process_limit` <Badge type="info">Number</Badge>
* Limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness).
* Default: `(led_count + 4) / 5`
* Default: `led_count / 5`
* `max_brightness` <Badge type="info">Number</Badge>
* The maximum value which brightness is scaled to, from 0 to 255.
* Default: `255`
@@ -424,7 +424,7 @@ Configures the [LED Matrix](features/led_matrix) feature.
* Turn off the LEDs when the host goes to sleep.
* Default: `false`
* `speed_steps` <Badge type="info">Number</Badge>
* The value by which to increment the speed.
* The number of speed adjustment steps.
* Default: `16`
* `split_count` <Badge type="info">Array: Number</Badge>
* For split keyboards, the number of LEDs on each half.
@@ -433,7 +433,7 @@ Configures the [LED Matrix](features/led_matrix) feature.
* The LED activity timeout in milliseconds.
* Default: `0` (no timeout)
* `val_steps` <Badge type="info">Number</Badge>
* The value by which to increment the brightness.
* The number of brightness adjustment steps.
* Default: `8`
## Matrix {#matrix}
@@ -549,7 +549,7 @@ Configures the [RGB Lighting](features/rgblight) feature.
}
```
* `brightness_steps` <Badge type="info">Number</Badge>
* The value by which to increment the brightness.
* The number of brightness adjustment steps.
* Default: `17`
* `default`
* `animation` <Badge type="info">String</Badge>
@@ -574,7 +574,7 @@ Configures the [RGB Lighting](features/rgblight) feature.
* The driver to use. Must be one of `apa102`, `custom`, `ws2812`.
* Default: `"ws2812"`
* `hue_steps` <Badge type="info">Number</Badge>
* The value by which to increment the hue.
* The number of hue adjustment steps.
* Default: `8`
* `layers`
* `blink` <Badge type="info">Boolean</Badge>
@@ -593,7 +593,7 @@ Configures the [RGB Lighting](features/rgblight) feature.
* The maximum value which the HSV "V" component is scaled to, from 0 to 255.
* Default: `255`
* `saturation_steps` <Badge type="info">Number</Badge>
* The value by which to increment the suturation.
* The number of saturation adjustment steps.
* Default: `17`
* `sleep` <Badge type="info">Boolean</Badge>
* Turn off the LEDs when the host goes to sleep.
@@ -645,7 +645,7 @@ Configures the [RGB Matrix](features/rgb_matrix) feature.
* `driver` <Badge type="info">String</Badge> <Badge>Required</Badge>
* The driver to use. Must be one of `aw20216s`, `custom`, `is31fl3218`, `is31fl3236`, `is31fl3729`, `is31fl3731`, `is31fl3733`, `is31fl3736`, `is31fl3737`, `is31fl3741`, `is31fl3742a`, `is31fl3743a`, `is31fl3745`, `is31fl3746a`, `snled27351`, `ws2812`.
* `hue_steps` <Badge type="info">Number</Badge>
* The value by which to increment the hue.
* The number of hue adjustment steps.
* Default: `8`
* `layout` <Badge type="info">Array: Object</Badge> <Badge>Required</Badge>
* List of LED configuration dictionaries. Each dictionary contains:
@@ -664,7 +664,7 @@ Configures the [RGB Matrix](features/rgb_matrix) feature.
* Default: `16`
* `led_process_limit` <Badge type="info">Number</Badge>
* Limits the number of LEDs to process in an animation per task run (increases keyboard responsiveness).
* Default: `(led_count + 4) / 5`
* Default: `led_count / 5`
* `max_brightness` <Badge type="info">Number</Badge>
* The maximum value which the HSV "V" component is scaled to, from 0 to 255.
* Default: `255`
@@ -672,13 +672,13 @@ Configures the [RGB Matrix](features/rgb_matrix) feature.
* Animations react to keyup instead of keydown.
* Default: `false`
* `sat_steps` <Badge type="info">Number</Badge>
* The value by which to increment the saturation.
* The number of saturation adjustment steps.
* Default: `16`
* `sleep` <Badge type="info">Boolean</Badge>
* Turn off the LEDs when the host goes to sleep.
* Default: `false`
* `speed_steps` <Badge type="info">Number</Badge>
* The value by which to increment the speed.
* The number of speed adjustment steps.
* Default: `16`
* `split_count` <Badge type="info">Array: Number</Badge>
* For split keyboards, the number of LEDs on each half.
@@ -687,7 +687,7 @@ Configures the [RGB Matrix](features/rgb_matrix) feature.
* The LED activity timeout in milliseconds.
* Default: `0` (no timeout)
* `val_steps` <Badge type="info">Number</Badge>
* The value by which to increment the brightness.
* The number of brightness adjustment steps.
* Default: `16`
## Secure {#secure}

View File

@@ -1,34 +0,0 @@
{
"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}
]
}
}
}

View File

@@ -1,21 +0,0 @@
/* 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)
)
};

View File

@@ -1,27 +0,0 @@
# 5keys
![5keys](https://imgur.com/yOkI4HT)
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

View File

@@ -1,53 +0,0 @@
{
"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]}
]
}
}
}

View File

@@ -1,12 +0,0 @@
{
"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"
]
]
}

View File

@@ -1,25 +0,0 @@
# PICO PAD
![PICO PAD](https://imgur.com/Nl4tZPl.jpg)
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

View File

@@ -23,6 +23,7 @@
"rainbow_swirl": true,
"snake": true,
"knight": true,
"christmas": true,
"static_gradient": true,
"rgb_test": true,
"alternating": true,

View File

@@ -48,11 +48,6 @@ 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();

View File

@@ -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_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
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
),
[_FN1] = LAYOUT_all(

View File

@@ -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_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
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
),
[_FN1] = LAYOUT_all(

View File

@@ -1,27 +0,0 @@
/* Copyright 2024 CannonKeys */
/* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
/* VBUS-routed pin for upstream detection */
#define USB_VBUS_PIN GP27
#define SPLIT_HAND_PIN_LOW_IS_LEFT
// Configure full duplex split comms over PIO
#define SERIAL_USART_FULL_DUPLEX
#define SERIAL_USART_TX_PIN GP28
#define SERIAL_USART_RX_PIN GP29
#define SERIAL_USART_PIN_SWAP
/* RP2040- and hardware-specific config */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64
/* I2C for OLEDs */
#define I2C_DRIVER I2CD1
#define I2C1_SDA_PIN GP14
#define I2C1_SCL_PIN GP15
#define OLED_DISPLAY_64X128

View File

@@ -1,7 +0,0 @@
// Copyright 2024 Andrew Kannan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define HAL_USE_I2C TRUE
#include_next <halconf.h>

View File

@@ -1,135 +0,0 @@
{
"manufacturer": "CannonKeys",
"keyboard_name": "Link",
"maintainer": "awkannan",
"bootloader": "rp2040",
"bootmagic": {
"matrix": [0, 5]
},
"build": {
"debounce_type": "asym_eager_defer_pk"
},
"diode_direction": "COL2ROW",
"dynamic_keymap": {
"layer_count": 6
},
"encoder": {
"rotary": [
{"pin_a": "GP12", "pin_b": "GP13", "resolution": 2}
]
},
"features": {
"bootmagic": true,
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"oled": true
},
"matrix_pins": {
"cols": ["GP17", "GP18", "GP19", "GP20", "GP21", "GP24"],
"rows": ["GP25", "GP26", "GP16", "GP11", "GP10"]
},
"processor": "RP2040",
"qmk": {
"tap_keycode_delay": 10
},
"split": {
"bootmagic": {
"matrix": [5, 5]
},
"enabled": true,
"handedness": {
"pin": "GP8"
},
"matrix_pins": {
"right": {
"cols": ["GP16", "GP11", "GP10", "GP3", "GP2", "GP1"],
"rows": ["GP9", "GP0", "GP17", "GP18", "GP19"]
}
},
"serial": {
"driver": "vendor"
},
"transport": {
"sync": {
"layer_state": true,
"matrix_state": true,
"oled": true,
"wpm": true
}
}
},
"url": "https://cannonkeys.com/",
"usb": {
"device_version": "0.0.1",
"pid": "0x0038",
"vid": "0xCA04"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 5], "x": 0, "y": 0},
{"matrix": [0, 4], "x": 1, "y": 0},
{"matrix": [0, 3], "x": 2, "y": 0},
{"matrix": [0, 2], "x": 3, "y": 0},
{"matrix": [0, 1], "x": 4, "y": 0},
{"matrix": [0, 0], "x": 5, "y": 0},
{"matrix": [5, 0], "x": 11, "y": 0},
{"matrix": [5, 1], "x": 12, "y": 0},
{"matrix": [5, 2], "x": 13, "y": 0},
{"matrix": [5, 3], "x": 14, "y": 0},
{"matrix": [5, 4], "x": 15, "y": 0},
{"matrix": [5, 5], "x": 16, "y": 0},
{"matrix": [1, 5], "x": 0, "y": 1},
{"matrix": [1, 4], "x": 1, "y": 1},
{"matrix": [1, 3], "x": 2, "y": 1},
{"matrix": [1, 2], "x": 3, "y": 1},
{"matrix": [1, 1], "x": 4, "y": 1},
{"matrix": [1, 0], "x": 5, "y": 1},
{"matrix": [6, 0], "x": 11, "y": 1},
{"matrix": [6, 1], "x": 12, "y": 1},
{"matrix": [6, 2], "x": 13, "y": 1},
{"matrix": [6, 3], "x": 14, "y": 1},
{"matrix": [6, 4], "x": 15, "y": 1},
{"matrix": [6, 5], "x": 16, "y": 1},
{"matrix": [2, 5], "x": 0, "y": 2},
{"matrix": [2, 4], "x": 1, "y": 2},
{"matrix": [2, 3], "x": 2, "y": 2},
{"matrix": [2, 2], "x": 3, "y": 2},
{"matrix": [2, 1], "x": 4, "y": 2},
{"matrix": [2, 0], "x": 5, "y": 2},
{"matrix": [7, 0], "x": 11, "y": 2},
{"matrix": [7, 1], "x": 12, "y": 2},
{"matrix": [7, 2], "x": 13, "y": 2},
{"matrix": [7, 3], "x": 14, "y": 2},
{"matrix": [7, 4], "x": 15, "y": 2},
{"matrix": [7, 5], "x": 16, "y": 2},
{"matrix": [3, 5], "x": 0, "y": 3},
{"matrix": [3, 4], "x": 1, "y": 3},
{"matrix": [3, 3], "x": 2, "y": 3},
{"matrix": [3, 2], "x": 3, "y": 3},
{"matrix": [3, 1], "x": 4, "y": 3},
{"matrix": [3, 0], "x": 5, "y": 3},
{"matrix": [4, 5], "x": 6, "y": 3},
{"matrix": [9, 5], "x": 10, "y": 3},
{"matrix": [8, 0], "x": 11, "y": 3},
{"matrix": [8, 1], "x": 12, "y": 3},
{"matrix": [8, 2], "x": 13, "y": 3},
{"matrix": [8, 3], "x": 14, "y": 3},
{"matrix": [8, 4], "x": 15, "y": 3},
{"matrix": [8, 5], "x": 16, "y": 3},
{"matrix": [4, 4], "x": 2, "y": 4},
{"matrix": [4, 3], "x": 3, "y": 4},
{"matrix": [4, 2], "x": 4, "y": 4},
{"matrix": [4, 1], "x": 5, "y": 4},
{"matrix": [4, 0], "x": 6, "y": 4, "h": 1.5},
{"matrix": [9, 0], "x": 10, "y": 4, "h": 1.5},
{"matrix": [9, 1], "x": 11, "y": 4},
{"matrix": [9, 2], "x": 12, "y": 4},
{"matrix": [9, 3], "x": 13, "y": 4},
{"matrix": [9, 4], "x": 14, "y": 4}
]
}
}
}

View File

@@ -1,31 +0,0 @@
// Copyright 2025 Andrew Kannan (awkannan)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS,
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_MUTE, KC_MPLY, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
KC_LGUI, KC_LALT, KC_LCTL, MO(1), KC_ENT, KC_SPC, MO(2), KC_RCTL, KC_RALT, KC_RGUI
),
[1] = LAYOUT(
KC_TRNS, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11,
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_F12,
KC_WREF, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_PIPE,
KC_TRNS, KC_EQL, KC_MINS, KC_PLUS, KC_LCBR, KC_RCBR, KC_TRNS, KC_TRNS, KC_LBRC, KC_RBRC, KC_DOT, KC_COLN, KC_BSLS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
),
[2] = LAYOUT(
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS,
QK_BOOT, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGUP, KC_HOME, KC_UP, KC_END, KC_INS, KC_DEL,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_CAPS, KC_PGUP, KC_MPRV, KC_MNXT, KC_PSCR, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS
)
};

View File

@@ -1,93 +0,0 @@
// Copyright 2025 Andrew Kannan (awkannan)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"
#ifdef OLED_ENABLE
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
if (is_keyboard_master()) {
return OLED_ROTATION_0;
} else {
return OLED_ROTATION_90;
}
return rotation;
}
static void render_logo(void) {
static const char PROGMEM qmk_logo[] = {
0x80,0x81,0x82,0x83,0x84,0x85,0x86,0x87,0x88,0x89,0x8a,0x8b,0x8c,0x8d,0x8e,0x8f,0x90,0x91,0x92,0x93,0x94,
0xa0,0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0,0xb1,0xb2,0xb3,0xb4,
0xc0,0xc1,0xc2,0xc3,0xc4,0xc5,0xc6,0xc7,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce,0xcf,0xd0,0xd1,0xd2,0xd3,0xd4,0
};
oled_write_P(qmk_logo, false);
}
void print_status_narrow(void) {
oled_write_P(PSTR("\n\n"), false);
switch (get_highest_layer(layer_state)) {
case 0:
oled_write_ln_P(PSTR("Qwrt"), false);
break;
case 1:
oled_write_ln_P(PSTR("Clmk"), false);
break;
default:
oled_write_P(PSTR("Mod\n"), false);
break;
}
oled_write_P(PSTR("\n\n"), false);
oled_write_ln_P(PSTR("LAYER"), false);
switch (get_highest_layer(layer_state)) {
case 0:
case 1:
oled_write_P(PSTR("Base\n"), false);
break;
case 2:
oled_write_P(PSTR("Raise"), false);
break;
case 3:
oled_write_P(PSTR("Lower"), false);
break;
default:
oled_write_ln_P(PSTR("Undef"), false);
}
oled_write_P(PSTR("\n\n"), false);
led_t led_usb_state = host_keyboard_led_state();
oled_write_ln_P(PSTR("CPSLK"), led_usb_state.caps_lock);
}
bool oled_task_kb(void) {
if (!oled_task_user()) {
return false;
}
if (is_keyboard_master()) {
print_status_narrow();
} else {
render_logo();
}
return true;
}
#endif
#ifdef ENCODER_ENABLE
bool encoder_update_kb(uint8_t index, bool clockwise) {
if (!encoder_update_user(index, clockwise)) {
return false;
}
if (index == 0) {
if (clockwise) {
tap_code(KC_VOLU);
} else {
tap_code(KC_VOLD);
}
} else if (index == 1) {
if (clockwise) {
tap_code(KC_PGDN);
} else {
tap_code(KC_PGUP);
}
}
return true;
}
#endif

View File

@@ -1,27 +0,0 @@
# Link
The Link is a Sofle58 inspired Ergo Split keyboard from CannonKeys.
It uses 1.3" SH1107 screens and ALPS EC11 compatible encoders.
* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
* Hardware Supported: RP2040
* Hardware Availability: [CannonKeys](https://cannonkeys.com)
Make example for this keyboard (after setting up your build environment):
make cannonkeys/link:default
Flashing example for this keyboard:
make cannonkeys/link:default:flash
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the top-most and outer-most key in the matrix and plug in the keyboard
* **Physical reset button**: Hold the "BOOTMODE" button on the back of the PCB and briefly press the "RESET" button on the back of the PCB
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -1,9 +0,0 @@
// Copyright 2024 Andrew Kannan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
#define PICO_XOSC_STARTUP_DELAY_MULTIPLIER 64

View File

@@ -1,272 +0,0 @@
{
"keyboard_name": "Vida HS",
"usb": {
"pid": "0x0035"
},
"community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_ansi_tsangan", "60_hhkb"],
"layout_aliases": {
"LAYOUT_60_ansi_split_bs_rshift": "LAYOUT_all"
},
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_tsangan": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 12.5, "y": 4},
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_hhkb": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [2, 12], "x": 14, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [4, 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}
]
},
"LAYOUT_all": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [2, 12], "x": 14, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
}
}
}

View File

@@ -1,27 +0,0 @@
// Copyright 2023 Andrew Kannan
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_FN1
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_all(
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL
),
[_FN1] = LAYOUT_all(
QK_GESC, 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_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_GRV, _______, _______, _______, _______, _______, _______, QK_BOOT
)
};

View File

@@ -1,28 +0,0 @@
{
"manufacturer": "CannonKeys",
"maintainer": "awkannan",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"command": false,
"console": false,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"indicators": {
"caps_lock": "GP29",
"on_state": 0
},
"matrix_pins": {
"cols": ["GP28", "GP8", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP6", "GP5", "GP4", "GP3", "GP2", "GP1"],
"rows": ["GP26", "GP27", "GP15", "GP16", "GP17"]
},
"processor": "RP2040",
"url": "https://cannonkeys.com",
"usb": {
"device_version": "0.0.1",
"vid": "0xCA04"
}
}

View File

@@ -1,31 +0,0 @@
# Vida Keyboard PCB
Vida PCB from CannonKeys
This folder has files for both the wired hotswap and solderable versions of the Vida PCB
The hotswap version does not have as much layout support as the solderable version (no ISO, no split space)
The hotswap version does not support per key LED backlighting
* Keyboard Maintainer: [Andrew Kannan](https://github.com/awkannan)
* Hardware Supported: RP2040
* Hardware Availability: [CannonKeys](https://cannonkeys.com)
Make example for this keyboard (after setting up your build environment):
make cannonkeys/vida:hotswap:default
Flashing example for this keyboard:
make cannonkeys/vida:hotswap: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 the "BOOTMODE" button on the back of the PCB and briefly press the "RESET" button on the back of the PCB
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -1,7 +0,0 @@
// Copyright 2024 Andrew Kannan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A

View File

@@ -1,8 +0,0 @@
// Copyright 2024 Andrew Kannan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define HAL_USE_PWM TRUE
#include_next <halconf.h>

View File

@@ -1,680 +0,0 @@
{
"keyboard_name": "Vida",
"backlight": {
"breathing": true,
"breathing_period": 5,
"levels": 15,
"pin": "GP22"
},
"features": {
"backlight": true
},
"usb": {
"pid": "0x0032"
},
"community_layouts": ["60_ansi", "60_ansi_split_bs_rshift", "60_ansi_tsangan", "60_hhkb", "60_iso", "60_iso_split_bs_rshift", "60_iso_tsangan"],
"layouts": {
"LAYOUT_60_ansi": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_split_bs_rshift": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [2, 12], "x": 14, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_ansi_tsangan": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 12.5, "y": 4},
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_hhkb": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [2, 12], "x": 14, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [4, 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}
]
},
"LAYOUT_60_iso": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_iso_split_bs_rshift": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [2, 12], "x": 14, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
]
},
"LAYOUT_60_iso_tsangan": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 12.5, "y": 4},
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_60_iso_tsangan_split_bs_rshift": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [2, 12], "x": 14, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [1, 13], "x": 12.75, "y": 2},
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.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_tsangan_hhkb": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [2, 12], "x": 14, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
{"matrix": [4, 1], "x": 1.5, "y": 4},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
{"matrix": [4, 12], "x": 12.5, "y": 4},
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
]
},
"LAYOUT_all": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [0, 6], "x": 6, "y": 0},
{"matrix": [0, 7], "x": 7, "y": 0},
{"matrix": [0, 8], "x": 8, "y": 0},
{"matrix": [0, 9], "x": 9, "y": 0},
{"matrix": [0, 10], "x": 10, "y": 0},
{"matrix": [0, 11], "x": 11, "y": 0},
{"matrix": [0, 12], "x": 12, "y": 0},
{"matrix": [0, 13], "x": 13, "y": 0},
{"matrix": [2, 12], "x": 14, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1},
{"matrix": [1, 2], "x": 2.5, "y": 1},
{"matrix": [1, 3], "x": 3.5, "y": 1},
{"matrix": [1, 4], "x": 4.5, "y": 1},
{"matrix": [1, 5], "x": 5.5, "y": 1},
{"matrix": [1, 6], "x": 6.5, "y": 1},
{"matrix": [1, 7], "x": 7.5, "y": 1},
{"matrix": [1, 8], "x": 8.5, "y": 1},
{"matrix": [1, 9], "x": 9.5, "y": 1},
{"matrix": [1, 10], "x": 10.5, "y": 1},
{"matrix": [1, 11], "x": 11.5, "y": 1},
{"matrix": [1, 12], "x": 12.5, "y": 1},
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2},
{"matrix": [2, 2], "x": 2.75, "y": 2},
{"matrix": [2, 3], "x": 3.75, "y": 2},
{"matrix": [2, 4], "x": 4.75, "y": 2},
{"matrix": [2, 5], "x": 5.75, "y": 2},
{"matrix": [2, 6], "x": 6.75, "y": 2},
{"matrix": [2, 7], "x": 7.75, "y": 2},
{"matrix": [2, 8], "x": 8.75, "y": 2},
{"matrix": [2, 9], "x": 9.75, "y": 2},
{"matrix": [2, 10], "x": 10.75, "y": 2},
{"matrix": [2, 11], "x": 11.75, "y": 2},
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
{"matrix": [3, 1], "x": 1.25, "y": 3},
{"matrix": [3, 2], "x": 2.25, "y": 3},
{"matrix": [3, 3], "x": 3.25, "y": 3},
{"matrix": [3, 4], "x": 4.25, "y": 3},
{"matrix": [3, 5], "x": 5.25, "y": 3},
{"matrix": [3, 6], "x": 6.25, "y": 3},
{"matrix": [3, 7], "x": 7.25, "y": 3},
{"matrix": [3, 8], "x": 8.25, "y": 3},
{"matrix": [3, 9], "x": 9.25, "y": 3},
{"matrix": [3, 10], "x": 10.25, "y": 3},
{"matrix": [3, 11], "x": 11.25, "y": 3},
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
{"matrix": [3, 13], "x": 14, "y": 3},
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
{"matrix": [4, 5], "x": 3.75, "y": 4, "w": 2.25},
{"matrix": [4, 6], "x": 6, "y": 4, "w": 1.25},
{"matrix": [4, 9], "x": 7.25, "y": 4, "w": 2.75},
{"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

@@ -1,27 +0,0 @@
// Copyright 2023 Andrew Kannan
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_FN1
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_all(
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(_FN1),
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL
),
[_FN1] = LAYOUT_all(
QK_GESC, 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, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_BRTG, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
BL_UP, _______, BL_DOWN, BL_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
KC_GRV, _______, _______, _______, _______, _______, _______, _______, _______, QK_BOOT
)
};

View File

@@ -1,24 +0,0 @@
# Matrix Diagram for CannonKeys Vida
```
┌───────┐
2u Backspace │0D │
└───────┘
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │2C │
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤ ┌─────┐
│10 │11 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │ │ │
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤ ┌──┴┐2D │ ISO Enter
│20 │21 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2D │ │1D │ │
├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤ └───┴────┘
│30 │31 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3C │3D │
├────┼───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
│40 │41 │42 │46 │4A │4B │4C │4D │
└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
┌────────┐ ┌──────────┐
│30 │ 2.25u LShift 2.75u RShift │3C │
└────────┘ └──────────┘
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
│40 │41 │42 │46 │4B │4C │4D │ Tsangan/WKL/HHKB
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
```

View File

@@ -1,9 +0,0 @@
// Copyright 2024 Andrew Kannan
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#include_next <mcuconf.h>
#undef RP_PWM_USE_PWM3
#define RP_PWM_USE_PWM3 TRUE

View File

@@ -30,7 +30,8 @@
"rgb_matrix": {
"animations": {
"breathing": true,
"cycle_left_right": true
"cycle_left_right": true,
"solid_color": true
},
"driver": "ws2812",
"layout": [

View File

@@ -1,7 +0,0 @@
// 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

@@ -1,50 +0,0 @@
{
"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

@@ -1,19 +0,0 @@
// 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

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

View File

@@ -1,23 +0,0 @@
# 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": 2}
{"label": "key_6", "matrix": [0, 7], "x": 2, "y": 3}
]
}
}

View File

@@ -1,55 +0,0 @@
{
"manufacturer": "djreisch",
"keyboard_name": "LumPy27",
"maintainer": "djreisch",
"board": "GENERIC_RP_RP2040",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true
},
"matrix_pins": {
"cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5"],
"rows": ["GP14", "GP15", "GP16", "GP17", "GP18"]
},
"processor": "RP2040",
"usb": {
"device_version": "1.0.0",
"pid": "0x2326",
"vid": "0xFEED"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [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": [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": [3, 0], "x": 0, "y": 3},
{"matrix": [3, 1], "x": 1, "y": 3},
{"matrix": [3, 2], "x": 2, "y": 3},
{"matrix": [3, 3], "x": 3, "y": 3},
{"matrix": [3, 4], "x": 4, "y": 3},
{"matrix": [3, 5], "x": 5, "y": 3},
{"matrix": [4, 3], "x": 3, "y": 4},
{"matrix": [4, 4], "x": 4, "y": 4},
{"matrix": [4, 5], "x": 5, "y": 4}
]
}
}
}

View File

@@ -1,76 +0,0 @@
/* Copyright 2024 Daniel Reisch (djreisch)
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
enum custom_keycodes { MACRO_GG = QK_USER };
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/*
Main
,-----------------------------------------.
| ESC | 1 | 2 | 3 | 4 | 5 |
|------+------+------+------+------+------|
| Tab | G | Q | W | E | R |
|------+------+------+------+------+------|
| LSHIFT | A | S | D | F |
|------+------+------+------+------+------|
| LCTL | B | Z | X | C | V |-------|
`-----------------------------------------/ /
| LAlt | FN | / Space /
| | |/ /
`---------------------'
*/
[0] = LAYOUT(KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5,
KC_TAB, KC_G, KC_Q, KC_W, KC_E, KC_R,
KC_LSFT, KC_A, KC_S, KC_D, KC_F,
KC_LCTL, KC_B, KC_Z, KC_X, KC_C, KC_V,
KC_LALT, MO(1), KC_SPACE),
/*
Alt
,-----------------------------------------.
| ESC | 0 | 9 | 8 | 7 | 6 |
|------+------+------+------+------+------|
| F1 | F2 | F3 | F4 | F5 | F6 |
|------+------+------+------+------+------|
| LSHIFT | A | S | Y | H |
|------+------+------+------+------+------|
| LCTL | B | Z | X | C | M |-------|
`-----------------------------------------/ /
| LAlt | FN | / Enter /
| | |/ /
`---------------------'
*/
[1] = LAYOUT(KC_ESC, KC_0, KC_9, KC_8, KC_7, KC_6,
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6,
KC_LSFT, KC_A, KC_S, KC_Y, KC_H,
KC_LCTL, MACRO_GG, KC_Z, KC_X, KC_C, KC_M,
KC_LALT, KC_TRNS, KC_ENTER)
};
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
switch (keycode) {
case MACRO_GG:
if (record->event.pressed) {
// when keycode MACRO_GG is pressed, press shift+enter, send string "gg" and press enter
SEND_STRING(SS_DOWN(X_LSFT) SS_DELAY(10) SS_TAP(X_ENTER) SS_UP(X_LSFT) "gg" SS_TAP(X_ENTER));
}
break;
}
return true;
}

View File

@@ -1,29 +0,0 @@
# LumPy27
The Lightweight User-Modifiable Pi/Python keyboard is a 26-key ergonomic gaming keyboard running on an RP2040. Originally designed to run CircuitPython and KMK, since QMK supports the RP2040 bootloader this is now an additional option for firmware.
Q: Why is it named the LumPy27 even though it has 26 keys?
A: When originally designing the PCB and coming up with a name, I miscounted the switches. With the name emblazoned on the silkscreen I figured it sounded better than LumPy26.
Q: Why are the keys in the wrong place?
A: For certain games I found it easier instead of remapping them to just change where they are. That's why keys like B and G are not in the right spots.
* Keyboard Maintainer: [djreisch](https://github.com/djreisch)
* Hardware Availability: [DuckyDebug.org](https://duckydebug.org/products/lumpy27-ergonomic-gaming-keyboard)
qmk compile example for this keyboard (after setting up your build environment):
qmk compile -kb djreisch/lumpy27 -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 2 ways:
* **Bootloader Reset**: Hold down the bootload button and press the reset button
* **Bootloader Power On**: Hold down the bootloader button and plug in the keyboard

View File

@@ -1,115 +0,0 @@
{
"manufacturer": "dnlnm",
"keyboard_name": "Cloak",
"maintainer": "dnlnm",
"bootloader": "stm32-dfu",
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "A9", "pin_b": "A10", "resolution": 2},
{"pin_a": "B4", "pin_b": "B6", "resolution": 2}
]
},
"features": {
"bootmagic": true,
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgblight": true
},
"matrix_pins": {
"cols": ["A8", "B15", "B14", "B13", "B11", "B10", "B2", "B1", "B0", "A7", "A6", "A5", "A4", "B8"],
"rows": ["B3", "B12", "A15", "B7", "B9"]
},
"processor": "STM32F072",
"rgblight": {
"default": {
"on": false
},
"driver": "ws2812",
"layers": {
"blink": true,
"enabled": true,
"override_rgb": true
},
"led_count": 12
},
"url": "https://github.com/dnlnm/cloak-xt-stm32",
"usb": {
"device_version": "1.0.0",
"pid": "0xFCD4",
"vid": "0x7E7E"
},
"ws2812": {
"pin": "B5"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1.25, "y": 0},
{"matrix": [0, 2], "x": 2.25, "y": 0},
{"matrix": [0, 3], "x": 3.25, "y": 0},
{"matrix": [0, 4], "x": 4.25, "y": 0},
{"matrix": [0, 5], "x": 5.63, "y": 0},
{"matrix": [0, 6], "x": 6.63, "y": 0},
{"matrix": [0, 7], "x": 7.63, "y": 0},
{"matrix": [0, 8], "x": 8.63, "y": 0},
{"matrix": [0, 9], "x": 10, "y": 0},
{"matrix": [0, 10], "x": 11, "y": 0},
{"matrix": [0, 11], "x": 12, "y": 0},
{"matrix": [0, 12], "x": 13, "y": 0},
{"matrix": [0, 13], "x": 14.25, "y": 0},
{"matrix": [1, 0], "x": 0, "y": 1.25, "w": 1.5},
{"matrix": [1, 1], "x": 1.5, "y": 1.25},
{"matrix": [1, 2], "x": 2.5, "y": 1.25},
{"matrix": [1, 3], "x": 3.5, "y": 1.25},
{"matrix": [1, 4], "x": 4.5, "y": 1.25},
{"matrix": [1, 5], "x": 5.5, "y": 1.25},
{"matrix": [1, 6], "x": 6.5, "y": 1.25},
{"matrix": [1, 7], "x": 7.5, "y": 1.25},
{"matrix": [1, 8], "x": 8.5, "y": 1.25},
{"matrix": [1, 9], "x": 9.5, "y": 1.25},
{"matrix": [1, 10], "x": 10.5, "y": 1.25},
{"matrix": [1, 11], "x": 11.5, "y": 1.25},
{"matrix": [1, 12], "x": 12.5, "y": 1.25, "w": 1.5},
{"matrix": [1, 13], "x": 14.25, "y": 1.25},
{"matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.75},
{"matrix": [2, 1], "x": 1.75, "y": 2.25},
{"matrix": [2, 2], "x": 2.75, "y": 2.25},
{"matrix": [2, 3], "x": 3.75, "y": 2.25},
{"matrix": [2, 4], "x": 4.75, "y": 2.25},
{"matrix": [2, 5], "x": 5.75, "y": 2.25},
{"matrix": [2, 6], "x": 6.75, "y": 2.25},
{"matrix": [2, 7], "x": 7.75, "y": 2.25},
{"matrix": [2, 8], "x": 8.75, "y": 2.25},
{"matrix": [2, 9], "x": 9.75, "y": 2.25},
{"matrix": [2, 10], "x": 10.75, "y": 2.25},
{"matrix": [2, 11], "x": 11.75, "y": 2.25, "w": 2.25},
{"matrix": [2, 12], "x": 14.25, "y": 2.25},
{"matrix": [3, 0], "x": 0, "y": 3.25, "w": 2.25},
{"matrix": [3, 1], "x": 2.25, "y": 3.25},
{"matrix": [3, 2], "x": 3.25, "y": 3.25},
{"matrix": [3, 3], "x": 4.25, "y": 3.25},
{"matrix": [3, 4], "x": 5.25, "y": 3.25},
{"matrix": [3, 5], "x": 6.25, "y": 3.25},
{"matrix": [3, 6], "x": 7.25, "y": 3.25},
{"matrix": [3, 7], "x": 8.25, "y": 3.25},
{"matrix": [3, 8], "x": 9.25, "y": 3.25},
{"matrix": [3, 9], "x": 10.25, "y": 3.25},
{"matrix": [3, 10], "x": 11.25, "y": 3.25},
{"matrix": [3, 11], "x": 12.25, "y": 3.25, "w": 1.75},
{"matrix": [3, 12], "x": 14.25, "y": 3.25},
{"matrix": [4, 0], "x": 0, "y": 4.25, "w": 1.25},
{"matrix": [4, 1], "x": 1.25, "y": 4.25},
{"matrix": [4, 2], "x": 2.25, "y": 4.25, "w": 1.25},
{"matrix": [4, 6], "x": 3.5, "y": 4.25, "w": 7},
{"matrix": [4, 10], "x": 10.5, "y": 4.25, "w": 1.25},
{"matrix": [4, 11], "x": 11.75, "y": 4.25},
{"matrix": [4, 12], "x": 12.75, "y": 4.25, "w": 1.25},
{"matrix": [4, 13], "x": 14.25, "y": 4.25}
]
}
}
}

View File

@@ -1,68 +0,0 @@
// Copyright (C) 2025 dnlnm
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_MPLY,
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_DEL, KC_BSPC, KC_VOLU,
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_QUOT, KC_ENT, KC_VOLD,
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_MUTE,
KC_LCTL, KC_LGUI, MO(1), KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_PSCR),
[1] = LAYOUT(
QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______),
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = {ENCODER_CCW_CW(MS_WHLU, MS_WHLD), ENCODER_CCW_CW(KC_VOLD, KC_VOLU)},
[1] = {ENCODER_CCW_CW(UG_HUED, UG_HUEU), ENCODER_CCW_CW(UG_SATD, UG_SATU)},
};
#endif
#ifdef RGBLIGHT_ENABLE
// Light LEDs 10 & 11 in blue when caps lock is active.
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{10, 2, HSV_BLUE} // Light 4 LEDs, starting with LED 6
);
// Light LEDs 0 & 1 in blue when keyboard layer 1 is active
const rgblight_segment_t PROGMEM my_layer1_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{0, 2, HSV_BLUE}
);
// Light LEDs 4 & 5 in blue when keyboard layer 2 is active
const rgblight_segment_t PROGMEM my_layer2_layer[] = RGBLIGHT_LAYER_SEGMENTS(
{4, 2, HSV_BLUE}
);
// Now define the array of layers. Later layers take precedence
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
my_capslock_layer,
my_layer1_layer, // Overrides caps lock layer
my_layer2_layer // Overrides other layers
);
void keyboard_post_init_user(void) {
// Enable the LED layers
rgblight_layers = my_rgb_layers;
}
bool led_update_user(led_t led_state) {
rgblight_set_layer_state(0, led_state.caps_lock);
return true;
}
layer_state_t layer_state_set_user(layer_state_t state) {
rgblight_set_layer_state(1, layer_state_cmp(state, 1));
rgblight_set_layer_state(2, layer_state_cmp(state, 2));
return state;
}
#endif

View File

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

View File

@@ -1,25 +0,0 @@
# dnlnm/cloak
![dnlnm/cloak](https://i.imgur.com/eZCUPvK.jpeg)
* Keyboard Maintainer: [Daniel Naim](https://github.com/dnlnm)
* Hardware Supported: Cloak-XT
* Hardware Availability: https://github.com/dnlnm/cloak-xt-stm32
Make example for this keyboard (after setting up your build environment):
make dnlnm/cloak:default
Flashing example for this keyboard:
make dnlnm/cloak: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 the boot button and tap the reset button on the back of the PCB
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -235,75 +235,6 @@
{"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}
]
}
}
}

View File

@@ -1,70 +0,0 @@
/* 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, _______, _______, _______
),
};

View File

@@ -1,8 +0,0 @@
// Copyright 2024 Hyojin Bak (@eerraa)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
/* Reset */
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U

View File

@@ -1,120 +0,0 @@
{
"manufacturer": "SIRIND",
"keyboard_name": "ChickPad",
"maintainer": "eerraa",
"bootloader": "rp2040",
"build": {
"debounce_type": "sym_defer_pk"
},
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"matrix_pins": {
"cols": ["GP23", "GP25", "GP3", "GP5", "GP4"],
"rows": ["GP18", "GP24", "GP22"]
},
"processor": "RP2040",
"rgb_matrix": {
"animations": {
"alphas_mods": true,
"band_pinwheel_sat": true,
"band_pinwheel_val": true,
"band_sat": true,
"band_spiral_sat": true,
"band_spiral_val": true,
"band_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_spiral": true,
"cycle_up_down": true,
"digital_rain": true,
"dual_beacon": true,
"flower_blooming": true,
"gradient_left_right": true,
"gradient_up_down": true,
"hue_breathing": true,
"hue_pendulum": true,
"hue_wave": true,
"jellybean_raindrops": true,
"multisplash": true,
"pixel_flow": true,
"pixel_fractal": true,
"pixel_rain": true,
"rainbow_beacon": true,
"rainbow_moving_chevron": true,
"rainbow_pinwheels": true,
"raindrops": true,
"riverflow": true,
"solid_multisplash": true,
"solid_reactive": true,
"solid_reactive_cross": true,
"solid_reactive_multicross": true,
"solid_reactive_multinexus": true,
"solid_reactive_multiwide": true,
"solid_reactive_nexus": true,
"solid_reactive_simple": true,
"solid_reactive_wide": true,
"solid_splash": true,
"splash": true,
"starlight": true,
"starlight_dual_hue": true,
"starlight_dual_sat": true,
"typing_heatmap": true
},
"driver": "ws2812",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 56, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 112, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 168, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 224, "y": 16, "flags": 1},
{"matrix": [1, 3], "x": 168, "y": 32, "flags": 4},
{"matrix": [1, 2], "x": 112, "y": 32, "flags": 4},
{"matrix": [1, 1], "x": 56, "y": 32, "flags": 4},
{"matrix": [1, 0], "x": 0, "y": 32, "flags": 4},
{"matrix": [2, 0], "x": 28, "y": 64, "flags": 1},
{"matrix": [2, 2], "x": 112, "y": 64, "flags": 4},
{"matrix": [2, 3], "x": 168, "y": 64, "flags": 4},
{"matrix": [2, 4], "x": 224, "y": 64, "flags": 4}
],
"sleep": true
},
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0x0015",
"vid": "0x4552"
},
"ws2812": {
"driver": "vendor",
"pin": "GP19"
},
"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.25, "y": 0, "w": 1.25, "h": 2},
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.25},
{"matrix": [1, 1], "x": 1.25, "y": 1},
{"matrix": [1, 2], "x": 2.25, "y": 1},
{"matrix": [1, 3], "x": 3.25, "y": 1},
{"matrix": [2, 0], "x": 0, "y": 2, "w": 2.25},
{"matrix": [2, 2], "x": 2.25, "y": 2},
{"matrix": [2, 3], "x": 3.25, "y": 2},
{"matrix": [2, 4], "x": 4.25, "y": 2}
]
}
}
}

View File

@@ -1,13 +0,0 @@
// Copyright 2024 QMK (@qmk)
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT(
KC_1 , KC_2 , KC_3 , KC_4 , KC_ENT ,
KC_LSFT, KC_VOLU, KC_VOLD, KC_UP ,
KC_SPC , KC_LEFT, KC_DOWN, KC_RGHT
)
};

View File

@@ -1,25 +0,0 @@
# ChickPad Unified
![Chickpad](https://i.imgur.com/RAH7dyl.jpeg)
* Keyboard Maintainer: [ERA](https://github.com/eerraa)
* Hardware supported: Chickpad PCB w/ RP2040
* Hardware availability: [Syryan](https://srind.mysoho.com/)
Make example for this keyboard (after setting up your build environment):
make era/sirind/chickpad:default
Flashing example for this keyboard:
make era/sirind/chickpad: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 ESC(0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Physical reset button**: Briefly short the `RESET` and `GND` pads on the SWD header twice, or short the `BOOT` header and plug in keyboard
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View File

@@ -62,6 +62,7 @@
"rainbow_moving_chevron": true,
"rainbow_pinwheels": true,
"raindrops": true,
"solid_color": true,
"solid_multisplash": true,
"solid_reactive": true,
"solid_reactive_cross": true,

View File

@@ -1,363 +0,0 @@
{
"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

@@ -1,27 +0,0 @@
/* 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

@@ -1,59 +0,0 @@
/* 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

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

View File

@@ -1,25 +0,0 @@
# 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

@@ -1,13 +0,0 @@
// 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

View File

@@ -1,63 +0,0 @@
// 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;
}

View File

@@ -1,107 +0,0 @@
{
"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}
]
}
}
}

View File

@@ -1,52 +0,0 @@
// 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

View File

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

View File

@@ -1,24 +0,0 @@
{
"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" }
]
]
}

View File

@@ -1,28 +0,0 @@
# handwired/erikpeyronson/erkbd
![Erkbd](https://i.imgur.com/VViiXIN.jpeg)
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:

View File

@@ -1,5 +0,0 @@
// 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

@@ -1,35 +0,0 @@
{
"manufacturer": "CJ Pais",
"keyboard_name": "Footy",
"maintainer": "cjpais",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true
},
"bootmagic": {
"matrix": [0, 1]
},
"matrix_pins": {
"cols": ["GP11", "GP10", "GP15"],
"rows": ["GP14"]
},
"processor": "RP2040",
"url": "https://workshop.cjpais.com/projects/footy",
"usb": {
"device_version": "1.0.0",
"pid": "0x0001",
"vid": "0x636A"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0}
]
}
}
}

View File

@@ -1,10 +0,0 @@
{
"keyboard": "handwired/footy",
"keymap": "default",
"layout": "LAYOUT",
"layers": [
[
"KC_A", "KC_B", "KC_C"
]
]
}

View File

@@ -1,15 +0,0 @@
{
"keyboard": "handwired/footy",
"keymap": "handy",
"layout": "LAYOUT",
"layers": [
[
"KC_NO", "MT(MOD_RCTL | MOD_RGUI, KC_NO)", "KC_NO"
]
],
"config": {
"tapping": {
"term": 50
}
}
}

View File

@@ -1,15 +0,0 @@
{
"keyboard": "handwired/footy",
"keymap": "superwhisper",
"layout": "LAYOUT",
"layers": [
[
"KC_NO", "LOPT(KC_SPACE)", "KC_NO"
]
],
"config": {
"tapping": {
"term": 50
}
}
}

View File

@@ -1,42 +0,0 @@
# Footy
![Footy Foot Pedal](https://i.imgur.com/ZdvlgRB.jpeg)
*Footy is a foot pedal intended to be used with a speech to text application like 'handy' or superwhisper. Initially developed as an assistive technology device for those with limited typing abilities.*
* Keyboard Maintainer: [CJ Pais](https://github.com/cjpais)
* Hardware Supported: [Keebio Stampy](https://keeb.io/products/stampy-rp2040-usb-c-controller-board-for-handwiring)
* Hardware Availability: [3D printed case](https://makerworld.com/en/models/1185240-footy)
Make example for this keyboard (after setting up your build environment):
make handwired/footy:default
Flashing example for this keyboard (enter the bootloader first):
make handwired/footy:default:flash
or drag and drop .uf2 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:
* **Physical reset button**: Briefly double press the button on the back of the PCB
## Keymaps
Right now there are two primary keymaps, one for 'handy' and one for 'superwhisper'.
Handy's default keymap is for the center switch to be RCTRL + RGUI.
Superwhisper's default keymap is for the center switch to be LOPT + SPACE.
You can build either of these firmware images by running the following commands:
```
make handwired/footy:handy
make handwired/footy:superwhisper
```

View File

@@ -1,21 +0,0 @@
/* 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

View File

@@ -1,68 +0,0 @@
/* 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

View File

@@ -1,21 +0,0 @@
/* 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>

View File

@@ -1,72 +0,0 @@
{
"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}
]
}
}
}

View File

@@ -1,123 +0,0 @@
/* 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, _______,
_______, _______, _______, _______, _______, _______
)
};

View File

@@ -1,24 +0,0 @@
/* 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

View File

@@ -1,25 +0,0 @@
# 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

View File

@@ -2,7 +2,7 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define ADC_PIN A5
#define ADC_PIN A0
#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": ["A0"],
"cols": ["A2"],
"rows": ["A1"]
},
"backlight": {
"pin": "B8"
},
"ws2812": {
"pin": "A4"
"pin": "A0"
},
"apa102": {
"data_pin": "A4",
"data_pin": "A0",
"clock_pin": "B13"
}
}

View File

@@ -1,5 +1,5 @@
# STM32 Nucleo-L432 onekey
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).
To trigger keypress, short together pins *A1* and *A2*.
You'll also need to connect `VIN`, `GND`, USB `D+` to `PA12`/`D2`, and USB `D-` to `PA11`/`D10`.

View File

@@ -1,104 +0,0 @@
{
"manufacturer": "Cherry",
"keyboard_name": "Protype Display Typewriter",
"maintainer": "nooges",
"bootloader": "rp2040",
"diode_direction": "COL2ROW",
"features": {
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"matrix_pins": {
"rows": ["GP29", "GP28", "GP27", "GP26", "GP22", "GP20", "GP23", "GP21"],
"cols": ["GP12", "GP9", "GP10", "GP0", "GP1", "GP5", "GP6", "GP2", "GP3", "GP4"]
},
"processor": "RP2040",
"url": "",
"usb": {
"device_version": "1.0.0",
"pid": "0xB7D7",
"vid": "0x046A"
},
"layouts": {
"LAYOUT": {
"layout": [
{ "label": "F1", "matrix": [0, 0], "w": 1.5, "x": 0, "y": 0 },
{ "label": "F2", "matrix": [0, 1], "w": 1.5, "x": 1.5, "y": 0 },
{ "label": "`", "matrix": [0, 2], "x": 3.5, "y": 0 },
{ "label": "1", "matrix": [0, 3], "x": 4.5, "y": 0 },
{ "label": "2", "matrix": [0, 4], "x": 5.5, "y": 0 },
{ "label": "3", "matrix": [0, 5], "x": 6.5, "y": 0 },
{ "label": "4", "matrix": [0, 6], "x": 7.5, "y": 0 },
{ "label": "5", "matrix": [0, 7], "x": 8.5, "y": 0 },
{ "label": "6", "matrix": [0, 8], "x": 9.5, "y": 0 },
{ "label": "7", "matrix": [0, 9], "x": 10.5, "y": 0 },
{ "label": "8", "matrix": [4, 8], "x": 11.5, "y": 0 },
{ "label": "9", "matrix": [4, 7], "x": 12.5, "y": 0 },
{ "label": "0", "matrix": [4, 6], "x": 13.5, "y": 0 },
{ "label": "-", "matrix": [4, 5], "x": 14.5, "y": 0 },
{ "label": "=", "matrix": [4, 4], "x": 15.5, "y": 0 },
{ "label": "Backspace", "matrix": [4, 3], "w": 2, "x": 16.5, "y": 0 },
{ "label": "Pg Up", "matrix": [4, 2], "x": 18.5, "y": 0 },
{ "label": "F8", "matrix": [4, 1], "w": 1.5, "x": 20, "y": 0 },
{ "label": "F9", "matrix": [4, 0], "w": 1.5, "x": 21.5, "y": 0 },
{ "label": "F3", "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
{ "label": "F4", "matrix": [1, 1], "w": 1.5, "x": 1.5, "y": 1 },
{ "label": "Tab", "matrix": [1, 2], "w": 1.5, "x": 3.5, "y": 1 },
{ "label": "Q", "matrix": [1, 3], "x": 5, "y": 1 },
{ "label": "W", "matrix": [1, 4], "x": 6, "y": 1 },
{ "label": "E", "matrix": [1, 5], "x": 7, "y": 1 },
{ "label": "R", "matrix": [1, 6], "x": 8, "y": 1 },
{ "label": "T", "matrix": [1, 7], "x": 9, "y": 1 },
{ "label": "Y", "matrix": [1, 8], "x": 10, "y": 1 },
{ "label": "U", "matrix": [5, 9], "x": 11, "y": 1 },
{ "label": "I", "matrix": [5, 8], "x": 12, "y": 1 },
{ "label": "O", "matrix": [5, 7], "x": 13, "y": 1 },
{ "label": "P", "matrix": [5, 6], "x": 14, "y": 1 },
{ "label": "[", "matrix": [5, 5], "x": 15, "y": 1 },
{ "label": "]", "matrix": [5, 4], "x": 16, "y": 1 },
{ "label": "\\", "matrix": [5, 3], "w": 1.5, "x": 17, "y": 1 },
{ "label": "Pg Dn", "matrix": [5, 2], "x": 18.5, "y": 1 },
{ "label": "F10", "matrix": [5, 1], "w": 1.5, "x": 20, "y": 1 },
{ "label": "F11", "matrix": [5, 0], "w": 1.5, "x": 21.5, "y": 1 },
{ "label": "F5", "matrix": [2, 0], "w": 1.5, "x": 0, "y": 2 },
{ "label": "F6", "matrix": [2, 1], "w": 1.5, "x": 1.5, "y": 2 },
{ "label": "Caps Lock", "matrix": [2, 2], "w": 1.75, "x": 3.5, "y": 2 },
{ "label": "A", "matrix": [2, 3], "x": 5.25, "y": 2 },
{ "label": "S", "matrix": [2, 4], "x": 6.25, "y": 2 },
{ "label": "D", "matrix": [2, 5], "x": 7.25, "y": 2 },
{ "label": "F", "matrix": [2, 6], "x": 8.25, "y": 2 },
{ "label": "G", "matrix": [2, 7], "x": 9.25, "y": 2 },
{ "label": "H", "matrix": [2, 8], "x": 10.25, "y": 2 },
{ "label": "J", "matrix": [2, 9], "x": 11.25, "y": 2 },
{ "label": "K", "matrix": [6, 8], "x": 12.25, "y": 2 },
{ "label": "L", "matrix": [6, 7], "x": 13.25, "y": 2 },
{ "label": ";", "matrix": [6, 6], "x": 14.25, "y": 2 },
{ "label": "'", "matrix": [6, 5], "x": 15.25, "y": 2 },
{ "label": "Enter", "matrix": [6, 4], "w": 2.25, "x": 16.25, "y": 2 },
{ "label": "Up", "matrix": [6, 2], "x": 18.5, "y": 2 },
{ "label": "F12", "matrix": [6, 1], "w": 1.5, "x": 20, "y": 2 },
{ "label": "F13", "matrix": [6, 0], "w": 1.5, "x": 21.5, "y": 2 },
{ "label": "F7", "matrix": [3, 0], "w": 3, "x": 0, "y": 3 },
{ "label": "Ctrl", "matrix": [3, 2], "x": 3.5, "y": 3 },
{ "label": "Shift", "matrix": [3, 3], "w": 1.25, "x": 4.5, "y": 3 },
{ "label": "Z", "matrix": [3, 4], "x": 5.75, "y": 3 },
{ "label": "X", "matrix": [3, 5], "x": 6.75, "y": 3 },
{ "label": "C", "matrix": [3, 6], "x": 7.75, "y": 3 },
{ "label": "V", "matrix": [3, 7], "x": 8.75, "y": 3 },
{ "label": "B", "matrix": [3, 8], "x": 9.75, "y": 3 },
{ "label": "N", "matrix": [7, 9], "x": 10.75, "y": 3 },
{ "label": "M", "matrix": [7, 8], "x": 11.75, "y": 3 },
{ "label": ",", "matrix": [7, 7], "x": 12.75, "y": 3 },
{ "label": ".", "matrix": [7, 6], "x": 13.75, "y": 3 },
{ "label": "/", "matrix": [7, 5], "x": 14.75, "y": 3 },
{ "label": "Shift", "matrix": [7, 4], "w": 2.75, "x": 15.75, "y": 3 },
{ "label": "Down", "matrix": [7, 2], "x": 18.5, "y": 3 },
{ "label": "F14", "matrix": [7, 1], "w": 1.5, "x": 20, "y": 3 },
{ "label": "F15", "matrix": [7, 0], "w": 1.5, "x": 21.5, "y": 3 },
{ "matrix": [3, 1], "w": 9, "x": 6.75, "y": 4 }
]
}
}
}

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