forked from mirror/qmk_firmware
Compare commits
32 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
da2e897f55 | ||
|
|
c6a93b5a56 | ||
|
|
9f04023d35 | ||
|
|
ebfa3cdd5c | ||
|
|
53f1f3b6d7 | ||
|
|
a1cb822861 | ||
|
|
edf34315af | ||
|
|
800bc78d26 | ||
|
|
576325e2f4 | ||
|
|
7641359240 | ||
|
|
e83b709169 | ||
|
|
80612c8ec0 | ||
|
|
af141d1a5c | ||
|
|
1388daa0cc | ||
|
|
d99eb01ee4 | ||
|
|
e17878ad15 | ||
|
|
daf6968947 | ||
|
|
f549b30760 | ||
|
|
a0f40d9410 | ||
|
|
575abc48a3 | ||
|
|
0ec96ddd52 | ||
|
|
2645751ce1 | ||
|
|
ca84b57042 | ||
|
|
5f222a3e02 | ||
|
|
f94c8fd766 | ||
|
|
a7ac6e4e68 | ||
|
|
9e775b8e9d | ||
|
|
625d62efdf | ||
|
|
bc42a7ea89 | ||
|
|
49d13595f6 | ||
|
|
d0cfb938ef | ||
|
|
94a9099c38 |
2
.clangd
2
.clangd
@@ -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]
|
||||
Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues, -D__has_include*]
|
||||
Compiler: clang
|
||||
|
||||
2
.github/workflows/format_push.yml
vendored
2
.github/workflows/format_push.yml
vendored
@@ -39,7 +39,7 @@ jobs:
|
||||
qmk format-text -a
|
||||
git diff
|
||||
|
||||
- uses: rlespinasse/github-slug-action@v3.x
|
||||
- uses: rlespinasse/github-slug-action@v5
|
||||
|
||||
- name: Become QMK Bot
|
||||
run: |
|
||||
|
||||
2
.github/workflows/regen_push.yml
vendored
2
.github/workflows/regen_push.yml
vendored
@@ -26,7 +26,7 @@ jobs:
|
||||
util/regen.sh
|
||||
git diff
|
||||
|
||||
- uses: rlespinasse/github-slug-action@v3.x
|
||||
- uses: rlespinasse/github-slug-action@v5
|
||||
|
||||
- name: Become QMK Bot
|
||||
run: |
|
||||
|
||||
@@ -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"}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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": [
|
||||
{
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
],
|
||||
"properties": {
|
||||
"userspace_version": {
|
||||
"type": "string",
|
||||
},
|
||||
"type": "string"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
{"$ref": "qmk.definitions.v1#/keyboard_keymap_tuple"},
|
||||
{"$ref": "qmk.definitions.v1#/json_file_path"}
|
||||
]
|
||||
},
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"userspace_version",
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
{"$ref": "qmk.definitions.v1#/keyboard_keymap_env"},
|
||||
{"$ref": "qmk.definitions.v1#/json_file_path"}
|
||||
]
|
||||
},
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"userspace_version",
|
||||
|
||||
@@ -401,6 +401,7 @@ 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`
|
||||
|
||||
@@ -40,7 +40,7 @@ cd /path/to/your/external/userspace
|
||||
mkdir -p modules
|
||||
# Replace the following {user} and {repo} with the author's community module repository
|
||||
git submodule add https://github.com/{user}/{repo}.git modules/{user}
|
||||
git submdule update --init --recursive
|
||||
git submodule update --init --recursive
|
||||
```
|
||||
|
||||
This will ensure the copy of the module is made in your userspace.
|
||||
|
||||
@@ -227,6 +227,8 @@ 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
|
||||
|
||||
@@ -378,6 +378,10 @@ 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
|
||||
|
||||
@@ -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 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_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_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 |
|
||||
|
||||
@@ -231,7 +231,7 @@ Once you have confirmed that the keyboard is working, if you have used a seperat
|
||||
|
||||
If you found this fullfilling you could experiment by adding additional features such as [in switch LEDs](https://geekhack.org/index.php?topic=94258.0), [in switch RGB](https://www.reddit.com/r/MechanicalKeyboards/comments/5s1l5u/photoskeyboard_science_i_made_a_handwired_rgb/), [RGB underglow](https://medium.com/@DavidNZ/hand-wired-custom-keyboard-cdd14429c7b3#.7a1ovebsk) or even an [OLED display!](https://www.reddit.com/r/olkb/comments/5zy7og/adding_ssd1306_oled_display_to_your_build/)
|
||||
|
||||
There are a lot of possibilities inside the firmware - explore [docs.qmk.fm](https://docs.qmk.fm) for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by [the OLKB subreddit](https://reddit.com/r/olkb) or [QMK Discord](https://discord.gg/qmk) for help!
|
||||
There are a lot of possibilities inside the firmware - explore [the documentation](/) for a full feature list, and dive into the different keyboards to see how people use all of them. You can always stop by [the OLKB subreddit](https://reddit.com/r/olkb) or [QMK Discord](https://discord.gg/qmk) for help!
|
||||
|
||||
## Links to Other Guides
|
||||
|
||||
|
||||
@@ -85,7 +85,7 @@ Reusing the `VID` and `PID` for multiple boards (such as for two variants, wired
|
||||
|
||||
If there is sufficient ambiguity about a board, supporting evidence will need to be presented to the QMK team. This may include impartial third parties who can demonstrate a board's existence and can confirm its feature set, such as well-known content producers; popular review sites or notable video creators may be leveraged. If such evidence is unavailable, as a last resort the vendor may be required to ship a fully functional board in full retail packaging to QMK maintainers for verification. Engineering samples will not be accepted, as one-off boards have been deceptively used in the past.
|
||||
|
||||
PRs submitted to upstream QMK should not expect an instant merge just because source code has been provided -- code from OEMs has historically been of a quality lower than QMK standards, so as per the [PR checklist](https://docs.qmk.fm/pr_checklist) submitters should make the changes as small as possible and be prepared to change their implementation.
|
||||
PRs submitted to upstream QMK should not expect an instant merge just because source code has been provided -- code from OEMs has historically been of a quality lower than QMK standards, so as per the [PR checklist](pr_checklist) submitters should make the changes as small as possible and be prepared to change their implementation.
|
||||
|
||||
## Detection
|
||||
|
||||
|
||||
@@ -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 / 5`
|
||||
* Default: `(led_count + 4) / 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 number of speed adjustment steps.
|
||||
* The value by which to increment the speed.
|
||||
* 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 number of brightness adjustment steps.
|
||||
* The value by which to increment the brightness.
|
||||
* Default: `8`
|
||||
|
||||
## Matrix {#matrix}
|
||||
@@ -549,7 +549,7 @@ Configures the [RGB Lighting](features/rgblight) feature.
|
||||
}
|
||||
```
|
||||
* `brightness_steps` <Badge type="info">Number</Badge>
|
||||
* The number of brightness adjustment steps.
|
||||
* The value by which to increment the brightness.
|
||||
* 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 number of hue adjustment steps.
|
||||
* The value by which to increment the hue.
|
||||
* 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 number of saturation adjustment steps.
|
||||
* The value by which to increment the suturation.
|
||||
* 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 number of hue adjustment steps.
|
||||
* The value by which to increment the hue.
|
||||
* 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 / 5`
|
||||
* Default: `(led_count + 4) / 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 number of saturation adjustment steps.
|
||||
* The value by which to increment the saturation.
|
||||
* 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 number of speed adjustment steps.
|
||||
* The value by which to increment the speed.
|
||||
* 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 number of brightness adjustment steps.
|
||||
* The value by which to increment the brightness.
|
||||
* Default: `16`
|
||||
|
||||
## Secure {#secure}
|
||||
|
||||
@@ -23,7 +23,6 @@
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"knight": true,
|
||||
"christmas": true,
|
||||
"static_gradient": true,
|
||||
"rgb_test": true,
|
||||
"alternating": true,
|
||||
|
||||
27
keyboards/cannonkeys/link/config.h
Normal file
27
keyboards/cannonkeys/link/config.h
Normal file
@@ -0,0 +1,27 @@
|
||||
/* 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
|
||||
7
keyboards/cannonkeys/link/halconf.h
Normal file
7
keyboards/cannonkeys/link/halconf.h
Normal file
@@ -0,0 +1,7 @@
|
||||
// Copyright 2024 Andrew Kannan
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#include_next <halconf.h>
|
||||
135
keyboards/cannonkeys/link/keyboard.json
Normal file
135
keyboards/cannonkeys/link/keyboard.json
Normal file
@@ -0,0 +1,135 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
31
keyboards/cannonkeys/link/keymaps/default/keymap.c
Normal file
31
keyboards/cannonkeys/link/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,31 @@
|
||||
// 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
|
||||
)
|
||||
};
|
||||
93
keyboards/cannonkeys/link/link.c
Normal file
93
keyboards/cannonkeys/link/link.c
Normal file
@@ -0,0 +1,93 @@
|
||||
// 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
|
||||
27
keyboards/cannonkeys/link/readme.md
Normal file
27
keyboards/cannonkeys/link/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# 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
|
||||
9
keyboards/cannonkeys/vida/config.h
Normal file
9
keyboards/cannonkeys/vida/config.h
Normal file
@@ -0,0 +1,9 @@
|
||||
// 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
|
||||
272
keyboards/cannonkeys/vida/hotswap/keyboard.json
Normal file
272
keyboards/cannonkeys/vida/hotswap/keyboard.json
Normal file
@@ -0,0 +1,272 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
27
keyboards/cannonkeys/vida/hotswap/keymaps/default/keymap.c
Normal file
27
keyboards/cannonkeys/vida/hotswap/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,27 @@
|
||||
// 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
|
||||
)
|
||||
};
|
||||
28
keyboards/cannonkeys/vida/info.json
Normal file
28
keyboards/cannonkeys/vida/info.json
Normal file
@@ -0,0 +1,28 @@
|
||||
{
|
||||
"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"
|
||||
}
|
||||
}
|
||||
31
keyboards/cannonkeys/vida/readme.md
Normal file
31
keyboards/cannonkeys/vida/readme.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# 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
|
||||
7
keyboards/cannonkeys/vida/solderable/config.h
Normal file
7
keyboards/cannonkeys/vida/solderable/config.h
Normal file
@@ -0,0 +1,7 @@
|
||||
// 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
|
||||
8
keyboards/cannonkeys/vida/solderable/halconf.h
Normal file
8
keyboards/cannonkeys/vida/solderable/halconf.h
Normal file
@@ -0,0 +1,8 @@
|
||||
// Copyright 2024 Andrew Kannan
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
680
keyboards/cannonkeys/vida/solderable/keyboard.json
Normal file
680
keyboards/cannonkeys/vida/solderable/keyboard.json
Normal file
@@ -0,0 +1,680 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
// 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
|
||||
)
|
||||
};
|
||||
24
keyboards/cannonkeys/vida/solderable/matrix_diagram.md
Normal file
24
keyboards/cannonkeys/vida/solderable/matrix_diagram.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# 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
|
||||
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
|
||||
```
|
||||
9
keyboards/cannonkeys/vida/solderable/mcuconf.h
Normal file
9
keyboards/cannonkeys/vida/solderable/mcuconf.h
Normal file
@@ -0,0 +1,9 @@
|
||||
// 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
|
||||
7
keyboards/coban/pad12a/config.h
Normal file
7
keyboards/coban/pad12a/config.h
Normal file
@@ -0,0 +1,7 @@
|
||||
// Copyright 2025 RyanDam (https://github.com/RyanDam)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
|
||||
50
keyboards/coban/pad12a/keyboard.json
Normal file
50
keyboards/coban/pad12a/keyboard.json
Normal file
@@ -0,0 +1,50 @@
|
||||
{
|
||||
"keyboard_name": "Coban Pad 12A",
|
||||
"name": "Coban Pad 12A",
|
||||
"url": "https://cobanstationery.com",
|
||||
"maintainer": "Coban Stationery",
|
||||
"manufacturer": "Coban Stationery",
|
||||
"usb": {
|
||||
"pid": "0xC12A",
|
||||
"vid": "0xCB3A",
|
||||
"device_version": "1.0.0"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP18", "GP16", "GP11", "GP10"],
|
||||
"rows": ["GP19", "GP17", "GP12"]
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP20", "pin_b": "GP21"}
|
||||
]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3, "y": 1},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3, "y": 2}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
19
keyboards/coban/pad12a/keymaps/default/keymap.c
Normal file
19
keyboards/coban/pad12a/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,19 @@
|
||||
// Copyright 2025 RyanDam (https://github.com/RyanDam)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_MPLY, KC_MPRV, KC_MUTE, KC_MNXT,
|
||||
KC_PGUP, KC_ESC, KC_UP, KC_ENT,
|
||||
KC_PGDN, KC_LEFT, KC_DOWN, KC_RIGHT
|
||||
),
|
||||
};
|
||||
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
};
|
||||
#endif
|
||||
1
keyboards/coban/pad12a/keymaps/default/rules.mk
Normal file
1
keyboards/coban/pad12a/keymaps/default/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
23
keyboards/coban/pad12a/readme.md
Normal file
23
keyboards/coban/pad12a/readme.md
Normal file
@@ -0,0 +1,23 @@
|
||||
# Coban Pad 12A
|
||||
|
||||

|
||||
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
|
||||
@@ -69,7 +69,7 @@
|
||||
{"label": "key_3", "matrix": [0, 4], "x": 2, "y": 1},
|
||||
{"label": "key_4", "matrix": [0, 5], "x": 0, "y": 2},
|
||||
{"label": "key_5", "matrix": [0, 6], "x": 1, "y": 2},
|
||||
{"label": "key_6", "matrix": [0, 7], "x": 2, "y": 3}
|
||||
{"label": "key_6", "matrix": [0, 7], "x": 2, "y": 2}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
55
keyboards/djreisch/lumpy27/keyboard.json
Normal file
55
keyboards/djreisch/lumpy27/keyboard.json
Normal file
@@ -0,0 +1,55 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
76
keyboards/djreisch/lumpy27/keymaps/default/keymap.c
Normal file
76
keyboards/djreisch/lumpy27/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,76 @@
|
||||
/* 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;
|
||||
}
|
||||
29
keyboards/djreisch/lumpy27/readme.md
Normal file
29
keyboards/djreisch/lumpy27/readme.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# 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
|
||||
|
||||
|
||||
363
keyboards/handwired/at101ish/keyboard.json
Normal file
363
keyboards/handwired/at101ish/keyboard.json
Normal file
@@ -0,0 +1,363 @@
|
||||
{
|
||||
"manufacturer": "Henrik O. S\u00f8rensen",
|
||||
"keyboard_name": "AT101ish",
|
||||
"maintainer": "qmk",
|
||||
"bootloader": "halfkay",
|
||||
"diode_direction": "ROW2COL",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": true,
|
||||
"console": true,
|
||||
"extrakey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "D6",
|
||||
"num_lock": "D4",
|
||||
"scroll_lock": "E6"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["D7", "B4", "B5", "B6", "F7", "F6", "F5", "F4", "F1", "F0"],
|
||||
"rows": ["B1", "B0", "B2", "D5", "B3", "C7", "B7", "C6", "D0", "D3", "D1", "D2"]
|
||||
},
|
||||
"processor": "atmega32u4",
|
||||
"tags": ["at101", "at102", "bigfoot"],
|
||||
"url": "https://github.com/henrikosorensen/keyboard_pcbs/tree/master/at101_pcb",
|
||||
"usb": {
|
||||
"device_version": "1.1.0",
|
||||
"pid": "0x0101",
|
||||
"vid": "0xFEED"
|
||||
},
|
||||
"community_layouts": ["fullsize_ansi", "fullsize_iso"],
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "F1", "matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"label": "F2", "matrix": [0, 2], "x": 3, "y": 0},
|
||||
{"label": "F3", "matrix": [0, 3], "x": 4, "y": 0},
|
||||
{"label": "F4", "matrix": [0, 4], "x": 5, "y": 0},
|
||||
{"label": "F5", "matrix": [0, 5], "x": 6.5, "y": 0},
|
||||
{"label": "F6", "matrix": [0, 6], "x": 7.5, "y": 0},
|
||||
{"label": "F7", "matrix": [0, 7], "x": 8.5, "y": 0},
|
||||
{"label": "F8", "matrix": [0, 8], "x": 9.5, "y": 0},
|
||||
{"label": "F9", "matrix": [0, 9], "x": 11, "y": 0},
|
||||
{"label": "F10", "matrix": [1, 0], "x": 12, "y": 0},
|
||||
{"label": "F11", "matrix": [1, 1], "x": 13, "y": 0},
|
||||
{"label": "F12", "matrix": [1, 2], "x": 14, "y": 0},
|
||||
{"label": "PrtSc", "matrix": [1, 3], "x": 15.25, "y": 0},
|
||||
{"label": "Scroll Lock", "matrix": [1, 4], "x": 16.25, "y": 0},
|
||||
{"label": "Pause", "matrix": [1, 5], "x": 17.25, "y": 0},
|
||||
{"label": "\u00ac", "matrix": [2, 0], "x": 0, "y": 1.5},
|
||||
{"label": "!", "matrix": [2, 1], "x": 1, "y": 1.5},
|
||||
{"label": "\"", "matrix": [2, 2], "x": 2, "y": 1.5},
|
||||
{"label": "\u00a3", "matrix": [2, 3], "x": 3, "y": 1.5},
|
||||
{"label": "$", "matrix": [2, 4], "x": 4, "y": 1.5},
|
||||
{"label": "%", "matrix": [2, 5], "x": 5, "y": 1.5},
|
||||
{"label": "^", "matrix": [2, 6], "x": 6, "y": 1.5},
|
||||
{"label": "&", "matrix": [2, 7], "x": 7, "y": 1.5},
|
||||
{"label": "*", "matrix": [2, 8], "x": 8, "y": 1.5},
|
||||
{"label": "(", "matrix": [2, 9], "x": 9, "y": 1.5},
|
||||
{"label": ")", "matrix": [3, 0], "x": 10, "y": 1.5},
|
||||
{"label": "_", "matrix": [3, 1], "x": 11, "y": 1.5},
|
||||
{"label": "+", "matrix": [3, 2], "x": 12, "y": 1.5},
|
||||
{"label": "Backspace", "matrix": [3, 3], "x": 13, "y": 1.5, "w": 2},
|
||||
{"label": "Insert", "matrix": [3, 4], "x": 15.25, "y": 1.5},
|
||||
{"label": "Home", "matrix": [3, 5], "x": 16.25, "y": 1.5},
|
||||
{"label": "PgUp", "matrix": [3, 6], "x": 17.25, "y": 1.5},
|
||||
{"label": "Num Lock", "matrix": [3, 7], "x": 18.5, "y": 1.5},
|
||||
{"label": "/", "matrix": [3, 8], "x": 19.5, "y": 1.5},
|
||||
{"label": "*", "matrix": [3, 9], "x": 20.5, "y": 1.5},
|
||||
{"label": "-", "matrix": [1, 9], "x": 21.5, "y": 1.5},
|
||||
{"label": "Tab", "matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5},
|
||||
{"label": "Q", "matrix": [4, 1], "x": 1.5, "y": 2.5},
|
||||
{"label": "W", "matrix": [4, 2], "x": 2.5, "y": 2.5},
|
||||
{"label": "E", "matrix": [4, 3], "x": 3.5, "y": 2.5},
|
||||
{"label": "R", "matrix": [4, 4], "x": 4.5, "y": 2.5},
|
||||
{"label": "T", "matrix": [4, 5], "x": 5.5, "y": 2.5},
|
||||
{"label": "Y", "matrix": [4, 6], "x": 6.5, "y": 2.5},
|
||||
{"label": "U", "matrix": [4, 7], "x": 7.5, "y": 2.5},
|
||||
{"label": "I", "matrix": [4, 8], "x": 8.5, "y": 2.5},
|
||||
{"label": "O", "matrix": [4, 9], "x": 9.5, "y": 2.5},
|
||||
{"label": "P", "matrix": [5, 0], "x": 10.5, "y": 2.5},
|
||||
{"label": "{", "matrix": [5, 1], "x": 11.5, "y": 2.5},
|
||||
{"label": "}", "matrix": [5, 2], "x": 12.5, "y": 2.5},
|
||||
{"label": "|", "matrix": [5, 3], "x": 13.5, "y": 2.5, "w": 1.5},
|
||||
{"label": "Delete", "matrix": [5, 4], "x": 15.25, "y": 2.5},
|
||||
{"label": "End", "matrix": [5, 5], "x": 16.25, "y": 2.5},
|
||||
{"label": "PgDn", "matrix": [5, 6], "x": 17.25, "y": 2.5},
|
||||
{"label": "7", "matrix": [5, 7], "x": 18.5, "y": 2.5},
|
||||
{"label": "8", "matrix": [5, 8], "x": 19.5, "y": 2.5},
|
||||
{"label": "9", "matrix": [5, 9], "x": 20.5, "y": 2.5},
|
||||
{"label": "+", "matrix": [1, 8], "x": 21.5, "y": 2.5},
|
||||
{"label": "Caps Lock", "matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75},
|
||||
{"label": "A", "matrix": [6, 1], "x": 1.75, "y": 3.5},
|
||||
{"label": "S", "matrix": [6, 2], "x": 2.75, "y": 3.5},
|
||||
{"label": "D", "matrix": [6, 3], "x": 3.75, "y": 3.5},
|
||||
{"label": "F", "matrix": [6, 4], "x": 4.75, "y": 3.5},
|
||||
{"label": "G", "matrix": [6, 5], "x": 5.75, "y": 3.5},
|
||||
{"label": "H", "matrix": [6, 6], "x": 6.75, "y": 3.5},
|
||||
{"label": "J", "matrix": [6, 7], "x": 7.75, "y": 3.5},
|
||||
{"label": "K", "matrix": [6, 8], "x": 8.75, "y": 3.5},
|
||||
{"label": "L", "matrix": [6, 9], "x": 9.75, "y": 3.5},
|
||||
{"label": ":", "matrix": [7, 0], "x": 10.75, "y": 3.5},
|
||||
{"label": "@", "matrix": [7, 1], "x": 11.75, "y": 3.5},
|
||||
{"label": "~", "matrix": [7, 2], "x": 12.75, "y": 3.5},
|
||||
{"label": "Enter", "matrix": [7, 3], "x": 13.75, "y": 3.5, "w": 1.25},
|
||||
{"label": "4", "matrix": [7, 6], "x": 18.5, "y": 3.5},
|
||||
{"label": "5", "matrix": [7, 7], "x": 19.5, "y": 3.5},
|
||||
{"label": "6", "matrix": [7, 8], "x": 20.5, "y": 3.5},
|
||||
{"label": "=", "matrix": [7, 9], "x": 21.5, "y": 3.5},
|
||||
{"label": "Shift", "matrix": [8, 0], "x": 0, "y": 4.5, "w": 1.25},
|
||||
{"label": "|", "matrix": [8, 1], "x": 1.25, "y": 4.5},
|
||||
{"label": "Z", "matrix": [8, 2], "x": 2.25, "y": 4.5},
|
||||
{"label": "X", "matrix": [8, 3], "x": 3.25, "y": 4.5},
|
||||
{"label": "C", "matrix": [8, 4], "x": 4.25, "y": 4.5},
|
||||
{"label": "V", "matrix": [8, 5], "x": 5.25, "y": 4.5},
|
||||
{"label": "B", "matrix": [8, 6], "x": 6.25, "y": 4.5},
|
||||
{"label": "N", "matrix": [8, 7], "x": 7.25, "y": 4.5},
|
||||
{"label": "M", "matrix": [8, 8], "x": 8.25, "y": 4.5},
|
||||
{"label": "<", "matrix": [8, 9], "x": 9.25, "y": 4.5},
|
||||
{"label": ">", "matrix": [9, 0], "x": 10.25, "y": 4.5},
|
||||
{"label": "?", "matrix": [9, 1], "x": 11.25, "y": 4.5},
|
||||
{"label": "Shift", "matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 1.75},
|
||||
{"label": "|", "matrix": [9, 3], "x": 14, "y": 4.5},
|
||||
{"label": "\u2191", "matrix": [9, 4], "x": 16.25, "y": 4.5},
|
||||
{"label": "1", "matrix": [9, 6], "x": 18.5, "y": 4.5},
|
||||
{"label": "2", "matrix": [9, 7], "x": 19.5, "y": 4.5},
|
||||
{"label": "3", "matrix": [9, 8], "x": 20.5, "y": 4.5},
|
||||
{"label": "Enter", "matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2},
|
||||
{"label": "Ctrl", "matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25},
|
||||
{"label": "Win", "matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25},
|
||||
{"label": " ", "matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25},
|
||||
{"label": "AltGr ", "matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25},
|
||||
{"label": "Win", "matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25},
|
||||
{"label": "Menu", "matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25},
|
||||
{"label": "Ctrl", "matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25},
|
||||
{"label": "\u2190", "matrix": [11, 4], "x": 15.25, "y": 5.5},
|
||||
{"label": "\u2193", "matrix": [11, 5], "x": 16.25, "y": 5.5},
|
||||
{"label": "\u2192", "matrix": [11, 6], "x": 17.25, "y": 5.5},
|
||||
{"label": "0", "matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2},
|
||||
{"label": ".", "matrix": [11, 8], "x": 20.5, "y": 5.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_fullsize_ansi": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [0, 2], "x": 3, "y": 0},
|
||||
{"matrix": [0, 3], "x": 4, "y": 0},
|
||||
{"matrix": [0, 4], "x": 5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 6.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 7], "x": 8.5, "y": 0},
|
||||
{"matrix": [0, 8], "x": 9.5, "y": 0},
|
||||
{"matrix": [0, 9], "x": 11, "y": 0},
|
||||
{"matrix": [1, 0], "x": 12, "y": 0},
|
||||
{"matrix": [1, 1], "x": 13, "y": 0},
|
||||
{"matrix": [1, 2], "x": 14, "y": 0},
|
||||
{"matrix": [1, 3], "x": 15.25, "y": 0},
|
||||
{"matrix": [1, 4], "x": 16.25, "y": 0},
|
||||
{"matrix": [1, 5], "x": 17.25, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1.5},
|
||||
{"matrix": [2, 1], "x": 1, "y": 1.5},
|
||||
{"matrix": [2, 2], "x": 2, "y": 1.5},
|
||||
{"matrix": [2, 3], "x": 3, "y": 1.5},
|
||||
{"matrix": [2, 4], "x": 4, "y": 1.5},
|
||||
{"matrix": [2, 5], "x": 5, "y": 1.5},
|
||||
{"matrix": [2, 6], "x": 6, "y": 1.5},
|
||||
{"matrix": [2, 7], "x": 7, "y": 1.5},
|
||||
{"matrix": [2, 8], "x": 8, "y": 1.5},
|
||||
{"matrix": [2, 9], "x": 9, "y": 1.5},
|
||||
{"matrix": [3, 0], "x": 10, "y": 1.5},
|
||||
{"matrix": [3, 1], "x": 11, "y": 1.5},
|
||||
{"matrix": [3, 2], "x": 12, "y": 1.5},
|
||||
{"matrix": [3, 3], "x": 13, "y": 1.5, "w": 2},
|
||||
{"matrix": [3, 4], "x": 15.25, "y": 1.5},
|
||||
{"matrix": [3, 5], "x": 16.25, "y": 1.5},
|
||||
{"matrix": [3, 6], "x": 17.25, "y": 1.5},
|
||||
{"matrix": [3, 7], "x": 18.5, "y": 1.5},
|
||||
{"matrix": [3, 8], "x": 19.5, "y": 1.5},
|
||||
{"matrix": [3, 9], "x": 20.5, "y": 1.5},
|
||||
{"matrix": [1, 9], "x": 21.5, "y": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 2.5},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 2.5},
|
||||
{"matrix": [4, 3], "x": 3.5, "y": 2.5},
|
||||
{"matrix": [4, 4], "x": 4.5, "y": 2.5},
|
||||
{"matrix": [4, 5], "x": 5.5, "y": 2.5},
|
||||
{"matrix": [4, 6], "x": 6.5, "y": 2.5},
|
||||
{"matrix": [4, 7], "x": 7.5, "y": 2.5},
|
||||
{"matrix": [4, 8], "x": 8.5, "y": 2.5},
|
||||
{"matrix": [4, 9], "x": 9.5, "y": 2.5},
|
||||
{"matrix": [5, 0], "x": 10.5, "y": 2.5},
|
||||
{"matrix": [5, 1], "x": 11.5, "y": 2.5},
|
||||
{"matrix": [5, 2], "x": 12.5, "y": 2.5},
|
||||
{"matrix": [5, 3], "x": 13.5, "y": 2.5, "w": 1.5},
|
||||
{"matrix": [5, 4], "x": 15.25, "y": 2.5},
|
||||
{"matrix": [5, 5], "x": 16.25, "y": 2.5},
|
||||
{"matrix": [5, 6], "x": 17.25, "y": 2.5},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 2.5},
|
||||
{"matrix": [5, 8], "x": 19.5, "y": 2.5},
|
||||
{"matrix": [5, 9], "x": 20.5, "y": 2.5},
|
||||
{"matrix": [1, 8], "x": 21.5, "y": 2.5, "h": 2},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75},
|
||||
{"matrix": [6, 1], "x": 1.75, "y": 3.5},
|
||||
{"matrix": [6, 2], "x": 2.75, "y": 3.5},
|
||||
{"matrix": [6, 3], "x": 3.75, "y": 3.5},
|
||||
{"matrix": [6, 4], "x": 4.75, "y": 3.5},
|
||||
{"matrix": [6, 5], "x": 5.75, "y": 3.5},
|
||||
{"matrix": [6, 6], "x": 6.75, "y": 3.5},
|
||||
{"matrix": [6, 7], "x": 7.75, "y": 3.5},
|
||||
{"matrix": [6, 8], "x": 8.75, "y": 3.5},
|
||||
{"matrix": [6, 9], "x": 9.75, "y": 3.5},
|
||||
{"matrix": [7, 0], "x": 10.75, "y": 3.5},
|
||||
{"matrix": [7, 1], "x": 11.75, "y": 3.5},
|
||||
{"matrix": [7, 3], "x": 12.75, "y": 3.5, "w": 2.25},
|
||||
{"matrix": [7, 6], "x": 18.5, "y": 3.5},
|
||||
{"matrix": [7, 7], "x": 19.5, "y": 3.5},
|
||||
{"matrix": [7, 8], "x": 20.5, "y": 3.5},
|
||||
{"matrix": [8, 0], "x": 0, "y": 4.5, "w": 2.25},
|
||||
{"matrix": [8, 2], "x": 2.25, "y": 4.5},
|
||||
{"matrix": [8, 3], "x": 3.25, "y": 4.5},
|
||||
{"matrix": [8, 4], "x": 4.25, "y": 4.5},
|
||||
{"matrix": [8, 5], "x": 5.25, "y": 4.5},
|
||||
{"matrix": [8, 6], "x": 6.25, "y": 4.5},
|
||||
{"matrix": [8, 7], "x": 7.25, "y": 4.5},
|
||||
{"matrix": [8, 8], "x": 8.25, "y": 4.5},
|
||||
{"matrix": [8, 9], "x": 9.25, "y": 4.5},
|
||||
{"matrix": [9, 0], "x": 10.25, "y": 4.5},
|
||||
{"matrix": [9, 1], "x": 11.25, "y": 4.5},
|
||||
{"matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 2.75},
|
||||
{"matrix": [9, 4], "x": 16.25, "y": 4.5},
|
||||
{"matrix": [9, 6], "x": 18.5, "y": 4.5},
|
||||
{"matrix": [9, 7], "x": 19.5, "y": 4.5},
|
||||
{"matrix": [9, 8], "x": 20.5, "y": 4.5},
|
||||
{"matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2},
|
||||
{"matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25},
|
||||
{"matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 4], "x": 15.25, "y": 5.5},
|
||||
{"matrix": [11, 5], "x": 16.25, "y": 5.5},
|
||||
{"matrix": [11, 6], "x": 17.25, "y": 5.5},
|
||||
{"matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2},
|
||||
{"matrix": [11, 8], "x": 20.5, "y": 5.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_fullsize_iso": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 2, "y": 0},
|
||||
{"matrix": [0, 2], "x": 3, "y": 0},
|
||||
{"matrix": [0, 3], "x": 4, "y": 0},
|
||||
{"matrix": [0, 4], "x": 5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 6.5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 7.5, "y": 0},
|
||||
{"matrix": [0, 7], "x": 8.5, "y": 0},
|
||||
{"matrix": [0, 8], "x": 9.5, "y": 0},
|
||||
{"matrix": [0, 9], "x": 11, "y": 0},
|
||||
{"matrix": [1, 0], "x": 12, "y": 0},
|
||||
{"matrix": [1, 1], "x": 13, "y": 0},
|
||||
{"matrix": [1, 2], "x": 14, "y": 0},
|
||||
{"matrix": [1, 3], "x": 15.25, "y": 0},
|
||||
{"matrix": [1, 4], "x": 16.25, "y": 0},
|
||||
{"matrix": [1, 5], "x": 17.25, "y": 0},
|
||||
{"matrix": [2, 0], "x": 0, "y": 1.5},
|
||||
{"matrix": [2, 1], "x": 1, "y": 1.5},
|
||||
{"matrix": [2, 2], "x": 2, "y": 1.5},
|
||||
{"matrix": [2, 3], "x": 3, "y": 1.5},
|
||||
{"matrix": [2, 4], "x": 4, "y": 1.5},
|
||||
{"matrix": [2, 5], "x": 5, "y": 1.5},
|
||||
{"matrix": [2, 6], "x": 6, "y": 1.5},
|
||||
{"matrix": [2, 7], "x": 7, "y": 1.5},
|
||||
{"matrix": [2, 8], "x": 8, "y": 1.5},
|
||||
{"matrix": [2, 9], "x": 9, "y": 1.5},
|
||||
{"matrix": [3, 0], "x": 10, "y": 1.5},
|
||||
{"matrix": [3, 1], "x": 11, "y": 1.5},
|
||||
{"matrix": [3, 2], "x": 12, "y": 1.5},
|
||||
{"matrix": [3, 3], "x": 13, "y": 1.5, "w": 2},
|
||||
{"matrix": [3, 4], "x": 15.25, "y": 1.5},
|
||||
{"matrix": [3, 5], "x": 16.25, "y": 1.5},
|
||||
{"matrix": [3, 6], "x": 17.25, "y": 1.5},
|
||||
{"matrix": [3, 7], "x": 18.5, "y": 1.5},
|
||||
{"matrix": [3, 8], "x": 19.5, "y": 1.5},
|
||||
{"matrix": [3, 9], "x": 20.5, "y": 1.5},
|
||||
{"matrix": [1, 9], "x": 21.5, "y": 1.5},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2.5, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 2.5},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 2.5},
|
||||
{"matrix": [4, 3], "x": 3.5, "y": 2.5},
|
||||
{"matrix": [4, 4], "x": 4.5, "y": 2.5},
|
||||
{"matrix": [4, 5], "x": 5.5, "y": 2.5},
|
||||
{"matrix": [4, 6], "x": 6.5, "y": 2.5},
|
||||
{"matrix": [4, 7], "x": 7.5, "y": 2.5},
|
||||
{"matrix": [4, 8], "x": 8.5, "y": 2.5},
|
||||
{"matrix": [4, 9], "x": 9.5, "y": 2.5},
|
||||
{"matrix": [5, 0], "x": 10.5, "y": 2.5},
|
||||
{"matrix": [5, 1], "x": 11.5, "y": 2.5},
|
||||
{"matrix": [5, 2], "x": 12.5, "y": 2.5},
|
||||
{"matrix": [5, 4], "x": 15.25, "y": 2.5},
|
||||
{"matrix": [5, 5], "x": 16.25, "y": 2.5},
|
||||
{"matrix": [5, 6], "x": 17.25, "y": 2.5},
|
||||
{"matrix": [5, 7], "x": 18.5, "y": 2.5},
|
||||
{"matrix": [5, 8], "x": 19.5, "y": 2.5},
|
||||
{"matrix": [5, 9], "x": 20.5, "y": 2.5},
|
||||
{"matrix": [1, 8], "x": 21.5, "y": 2.5, "h": 2},
|
||||
{"matrix": [6, 0], "x": 0, "y": 3.5, "w": 1.75},
|
||||
{"matrix": [6, 1], "x": 1.75, "y": 3.5},
|
||||
{"matrix": [6, 2], "x": 2.75, "y": 3.5},
|
||||
{"matrix": [6, 3], "x": 3.75, "y": 3.5},
|
||||
{"matrix": [6, 4], "x": 4.75, "y": 3.5},
|
||||
{"matrix": [6, 5], "x": 5.75, "y": 3.5},
|
||||
{"matrix": [6, 6], "x": 6.75, "y": 3.5},
|
||||
{"matrix": [6, 7], "x": 7.75, "y": 3.5},
|
||||
{"matrix": [6, 8], "x": 8.75, "y": 3.5},
|
||||
{"matrix": [6, 9], "x": 9.75, "y": 3.5},
|
||||
{"matrix": [7, 0], "x": 10.75, "y": 3.5},
|
||||
{"matrix": [7, 1], "x": 11.75, "y": 3.5},
|
||||
{"matrix": [7, 2], "x": 12.75, "y": 3.5},
|
||||
{"matrix": [7, 3], "x": 13.75, "y": 2.5, "w": 1.25, "h": 2},
|
||||
{"matrix": [7, 6], "x": 18.5, "y": 3.5},
|
||||
{"matrix": [7, 7], "x": 19.5, "y": 3.5},
|
||||
{"matrix": [7, 8], "x": 20.5, "y": 3.5},
|
||||
{"matrix": [8, 0], "x": 0, "y": 4.5, "w": 1.25},
|
||||
{"matrix": [8, 1], "x": 1.25, "y": 4.5},
|
||||
{"matrix": [8, 2], "x": 2.25, "y": 4.5},
|
||||
{"matrix": [8, 3], "x": 3.25, "y": 4.5},
|
||||
{"matrix": [8, 4], "x": 4.25, "y": 4.5},
|
||||
{"matrix": [8, 5], "x": 5.25, "y": 4.5},
|
||||
{"matrix": [8, 6], "x": 6.25, "y": 4.5},
|
||||
{"matrix": [8, 7], "x": 7.25, "y": 4.5},
|
||||
{"matrix": [8, 8], "x": 8.25, "y": 4.5},
|
||||
{"matrix": [8, 9], "x": 9.25, "y": 4.5},
|
||||
{"matrix": [9, 0], "x": 10.25, "y": 4.5},
|
||||
{"matrix": [9, 1], "x": 11.25, "y": 4.5},
|
||||
{"matrix": [9, 2], "x": 12.25, "y": 4.5, "w": 2.75},
|
||||
{"matrix": [9, 4], "x": 16.25, "y": 4.5},
|
||||
{"matrix": [9, 6], "x": 18.5, "y": 4.5},
|
||||
{"matrix": [9, 7], "x": 19.5, "y": 4.5},
|
||||
{"matrix": [9, 8], "x": 20.5, "y": 4.5},
|
||||
{"matrix": [9, 9], "x": 21.5, "y": 4.5, "h": 2},
|
||||
{"matrix": [10, 0], "x": 0, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 1], "x": 1.25, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 2], "x": 2.5, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [10, 7], "x": 3.75, "y": 5.5, "w": 6.25},
|
||||
{"matrix": [11, 0], "x": 10, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 1], "x": 11.25, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 2], "x": 12.5, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 3], "x": 13.75, "y": 5.5, "w": 1.25},
|
||||
{"matrix": [11, 4], "x": 15.25, "y": 5.5},
|
||||
{"matrix": [11, 5], "x": 16.25, "y": 5.5},
|
||||
{"matrix": [11, 6], "x": 17.25, "y": 5.5},
|
||||
{"matrix": [11, 7], "x": 18.5, "y": 5.5, "w": 2},
|
||||
{"matrix": [11, 8], "x": 20.5, "y": 5.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
27
keyboards/handwired/at101ish/keymaps/default/keymap.c
Normal file
27
keyboards/handwired/at101ish/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,27 @@
|
||||
/* Copyright 2025 Henrik Otte Sørensen (@henrikottesorensen)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT)
|
||||
};
|
||||
59
keyboards/handwired/at101ish/keymaps/osdetect/keymap.c
Normal file
59
keyboards/handwired/at101ish/keymaps/osdetect/keymap.c
Normal file
@@ -0,0 +1,59 @@
|
||||
/* Copyright 2025 Henrik Otte Sørensen (@henrikottesorensen)
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum LAYER {
|
||||
_PC = 0,
|
||||
_MAC,
|
||||
_FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_PC] = LAYOUT_all(
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPACE, KC_RALT, KC_RGUI, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
|
||||
[_MAC] = LAYOUT_all(
|
||||
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_WSCH, KC_LPAD, _______, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_PSCR, KC_SCRL, KC_PAUS,
|
||||
KC_NUBS, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_P4, KC_P5, KC_P6, KC_PEQL,
|
||||
KC_LSFT, KC_GRV, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_BSLS, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPACE, KC_RGUI, KC_RALT, MO(_FN), KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
|
||||
[_FN] = LAYOUT_all(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_VOLU, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, DF(_PC), _______, _______, _______, _______, KC_MUTE, KC_VOLD, _______, _______, _______, _______,
|
||||
_______, _______, _______, DB_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, QK_BOOT, _______, DF(_MAC),_______, _______, _______, _______, _______, KC_MPLY, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_APP, KC_MPRV, KC_MSTP, KC_MNXT, _______, _______)
|
||||
};
|
||||
|
||||
bool process_detected_host_os_user(os_variant_t detected_os) {
|
||||
/* If Apple, swap to macOS layer. */
|
||||
if (detected_os == OS_MACOS || detected_os == OS_IOS) {
|
||||
set_single_default_layer(_MAC);
|
||||
}
|
||||
else /* Else use PC layer */ {
|
||||
set_single_default_layer(_PC);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
1
keyboards/handwired/at101ish/keymaps/osdetect/rules.mk
Normal file
1
keyboards/handwired/at101ish/keymaps/osdetect/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
OS_DETECTION_ENABLE = yes
|
||||
25
keyboards/handwired/at101ish/readme.md
Normal file
25
keyboards/handwired/at101ish/readme.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# AT101(-ish)
|
||||
|
||||
A replacement PCB for Dell AT101 family. (In theory) supports AT101, AT101W, AT102, AT102W, maybe other Bigfoot platform boards.
|
||||
|
||||
Keyboard Maintainer: QMK Community and Henrik O. Sørensen
|
||||
Hardware Supported: AT101(ish) PCB
|
||||
Hardware Availability: https://github.com/henrikosorensen/keyboard_pcbs/tree/master/at101_pcb
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make handwired/at101ish:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make handwired/at101ish:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 2 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
|
||||
* **Physical reset button**: Briefly press the programming button on the teensy 2.0 PCB.
|
||||
|
||||
5
keyboards/handwired/footy/config.h
Normal file
5
keyboards/handwired/footy/config.h
Normal file
@@ -0,0 +1,5 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
|
||||
35
keyboards/handwired/footy/keyboard.json
Normal file
35
keyboards/handwired/footy/keyboard.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
10
keyboards/handwired/footy/keymaps/default/keymap.json
Normal file
10
keyboards/handwired/footy/keymaps/default/keymap.json
Normal file
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"keyboard": "handwired/footy",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"KC_A", "KC_B", "KC_C"
|
||||
]
|
||||
]
|
||||
}
|
||||
15
keyboards/handwired/footy/keymaps/handy/keymap.json
Normal file
15
keyboards/handwired/footy/keymaps/handy/keymap.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"keyboard": "handwired/footy",
|
||||
"keymap": "handy",
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"KC_NO", "MT(MOD_RCTL | MOD_RGUI, KC_NO)", "KC_NO"
|
||||
]
|
||||
],
|
||||
"config": {
|
||||
"tapping": {
|
||||
"term": 50
|
||||
}
|
||||
}
|
||||
}
|
||||
15
keyboards/handwired/footy/keymaps/superwhisper/keymap.json
Normal file
15
keyboards/handwired/footy/keymaps/superwhisper/keymap.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"keyboard": "handwired/footy",
|
||||
"keymap": "superwhisper",
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"KC_NO", "LOPT(KC_SPACE)", "KC_NO"
|
||||
]
|
||||
],
|
||||
"config": {
|
||||
"tapping": {
|
||||
"term": 50
|
||||
}
|
||||
}
|
||||
}
|
||||
42
keyboards/handwired/footy/readme.md
Normal file
42
keyboards/handwired/footy/readme.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Footy
|
||||
|
||||

|
||||
|
||||
*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
|
||||
```
|
||||
@@ -2,7 +2,7 @@
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#define ADC_PIN A0
|
||||
#define ADC_PIN A5
|
||||
|
||||
#define SOLENOID_PINS { B12, B13, B14, B15 }
|
||||
#define SOLENOID_PINS_ACTIVE_STATE { high, high, low }
|
||||
|
||||
@@ -3,17 +3,17 @@
|
||||
"processor": "STM32F446",
|
||||
"bootloader": "stm32-dfu",
|
||||
"matrix_pins": {
|
||||
"cols": ["A2"],
|
||||
"cols": ["A0"],
|
||||
"rows": ["A1"]
|
||||
},
|
||||
"backlight": {
|
||||
"pin": "B8"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "A0"
|
||||
"pin": "A4"
|
||||
},
|
||||
"apa102": {
|
||||
"data_pin": "A0",
|
||||
"data_pin": "A4",
|
||||
"clock_pin": "B13"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# STM32 Nucleo-L432 onekey
|
||||
|
||||
To trigger keypress, short together pins *A1* and *A2*.
|
||||
To trigger keypress, short together pins *A0* and *A1*. Note that the pin numbering is relative to the MCU, so that A0 and A1 refer to PA0 and PA1 on the MCU (which are also labelled A0 and A1 on the board, but this isn't true for the other PAx pins).
|
||||
|
||||
You'll also need to connect `VIN`, `GND`, USB `D+` to `PA12`/`D2`, and USB `D-` to `PA11`/`D10`.
|
||||
|
||||
117
keyboards/keyten/ortho_slayer/keyboard.json
Normal file
117
keyboards/keyten/ortho_slayer/keyboard.json
Normal file
@@ -0,0 +1,117 @@
|
||||
{
|
||||
"manufacturer": "keyten x La-Versa",
|
||||
"keyboard_name": "Ortho Slayer",
|
||||
"maintainer": "key10iq",
|
||||
"processor": "STM32F072",
|
||||
"bootloader": "stm32-dfu",
|
||||
"usb": {
|
||||
"vid": "0xEB69",
|
||||
"pid": "0x9001",
|
||||
"device_version": "0.0.1"
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"diode_direction": "ROW2COL",
|
||||
"matrix_pins": {
|
||||
"rows": ["B6", "B4", "A15", "B0", "B1", "A6", "B15", "B11", "A9", "B13"],
|
||||
"cols": ["B7", "B14", "B5", "A8", "B3", "A10", "A14", "B12", "A7", "B2", "B10"]
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{ "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "matrix": [1, 0], "x": 1, "y": 0 },
|
||||
{ "matrix": [0, 1], "x": 2, "y": 0 },
|
||||
{ "matrix": [1, 1], "x": 3, "y": 0 },
|
||||
{ "matrix": [0, 2], "x": 4, "y": 0 },
|
||||
{ "matrix": [1, 2], "x": 5, "y": 0 },
|
||||
{ "matrix": [0, 3], "x": 6, "y": 0 },
|
||||
{ "matrix": [1, 3], "x": 7, "y": 0 },
|
||||
{ "matrix": [0, 4], "x": 8, "y": 0 },
|
||||
{ "matrix": [1, 4], "x": 9, "y": 0 },
|
||||
{ "matrix": [0, 5], "x": 10, "y": 0 },
|
||||
{ "matrix": [1, 5], "x": 11, "y": 0 },
|
||||
{ "matrix": [0, 6], "x": 12, "y": 0 },
|
||||
{ "matrix": [1, 6], "x": 13, "y": 0 },
|
||||
{ "matrix": [0, 7], "x": 14.25, "y": 0 },
|
||||
{ "matrix": [1, 7], "x": 15.25, "y": 0 },
|
||||
{ "matrix": [0, 8], "x": 16.25, "y": 0 },
|
||||
{ "matrix": [1, 8], "x": 17.5, "y": 0 },
|
||||
{ "matrix": [0, 9], "x": 18.5, "y": 0 },
|
||||
{ "matrix": [1, 9], "x": 19.5, "y": 0 },
|
||||
{ "matrix": [0, 10], "x": 20.5, "y": 0 },
|
||||
{ "matrix": [2, 0], "x": 0, "y": 1 },
|
||||
{ "matrix": [3, 0], "x": 1, "y": 1 },
|
||||
{ "matrix": [2, 1], "x": 2, "y": 1 },
|
||||
{ "matrix": [3, 1], "x": 3, "y": 1 },
|
||||
{ "matrix": [2, 2], "x": 4, "y": 1 },
|
||||
{ "matrix": [3, 2], "x": 5, "y": 1 },
|
||||
{ "matrix": [2, 3], "x": 6, "y": 1 },
|
||||
{ "matrix": [3, 3], "x": 7, "y": 1 },
|
||||
{ "matrix": [2, 4], "x": 8, "y": 1 },
|
||||
{ "matrix": [3, 4], "x": 9, "y": 1 },
|
||||
{ "matrix": [2, 5], "x": 10, "y": 1 },
|
||||
{ "matrix": [3, 5], "x": 11, "y": 1 },
|
||||
{ "matrix": [2, 6], "x": 12, "y": 1 },
|
||||
{ "matrix": [3, 6], "x": 13, "y": 1 },
|
||||
{ "matrix": [2, 7], "x": 14.25, "y": 1 },
|
||||
{ "matrix": [3, 7], "x": 15.25, "y": 1 },
|
||||
{ "matrix": [2, 8], "x": 16.25, "y": 1 },
|
||||
{ "matrix": [3, 8], "x": 17.5, "y": 1 },
|
||||
{ "matrix": [2, 9], "x": 18.5, "y": 1 },
|
||||
{ "matrix": [3, 9], "x": 19.5, "y": 1 },
|
||||
{ "h": 2, "matrix": [5, 10], "x": 20.5, "y": 1 },
|
||||
{ "matrix": [4, 0], "x": 0, "y": 2 },
|
||||
{ "matrix": [5, 0], "x": 1, "y": 2 },
|
||||
{ "matrix": [4, 1], "x": 2, "y": 2 },
|
||||
{ "matrix": [5, 1], "x": 3, "y": 2 },
|
||||
{ "matrix": [4, 2], "x": 4, "y": 2 },
|
||||
{ "matrix": [5, 2], "x": 5, "y": 2 },
|
||||
{ "matrix": [4, 3], "x": 6, "y": 2 },
|
||||
{ "matrix": [5, 3], "x": 7, "y": 2 },
|
||||
{ "matrix": [4, 4], "x": 8, "y": 2 },
|
||||
{ "matrix": [5, 4], "x": 9, "y": 2 },
|
||||
{ "matrix": [4, 5], "x": 10, "y": 2 },
|
||||
{ "matrix": [5, 5], "x": 11, "y": 2 },
|
||||
{ "matrix": [4, 6], "x": 12, "y": 2 },
|
||||
{ "matrix": [5, 6], "x": 13, "y": 2 },
|
||||
{ "matrix": [5, 9], "x": 17.5, "y": 2 },
|
||||
{ "matrix": [4, 9], "x": 18.5, "y": 2 },
|
||||
{ "matrix": [4, 10], "x": 19.5, "y": 2 },
|
||||
{ "matrix": [6, 0], "w": 2, "x": 0, "y": 3 },
|
||||
{ "matrix": [7, 0], "x": 2, "y": 3 },
|
||||
{ "matrix": [6, 2], "x": 3, "y": 3 },
|
||||
{ "matrix": [7, 2], "x": 4, "y": 3 },
|
||||
{ "matrix": [6, 3], "x": 5, "y": 3 },
|
||||
{ "matrix": [7, 3], "x": 6, "y": 3 },
|
||||
{ "matrix": [6, 4], "x": 7, "y": 3 },
|
||||
{ "matrix": [7, 4], "x": 8, "y": 3 },
|
||||
{ "matrix": [6, 5], "x": 9, "y": 3 },
|
||||
{ "matrix": [7, 5], "x": 10, "y": 3 },
|
||||
{ "matrix": [7, 6], "x": 11, "y": 3 },
|
||||
{ "matrix": [6, 6], "w": 2, "x": 12, "y": 3 },
|
||||
{ "matrix": [6, 8], "x": 15.25, "y": 3 },
|
||||
{ "matrix": [7, 8], "x": 17.5, "y": 3 },
|
||||
{ "matrix": [6, 9], "x": 18.5, "y": 3 },
|
||||
{ "matrix": [7, 9], "x": 19.5, "y": 3 },
|
||||
{ "h": 2, "matrix": [9, 10], "x": 20.5, "y": 3 },
|
||||
{ "matrix": [8, 0], "w": 1.25, "x": 0, "y": 4 },
|
||||
{ "matrix": [9, 0], "x": 1.25, "y": 4 },
|
||||
{ "matrix": [8, 1], "w": 1.25, "x": 2.25, "y": 4 },
|
||||
{ "matrix": [8, 4], "w": 7, "x": 3.5, "y": 4 },
|
||||
{ "matrix": [9, 4], "w": 1.25, "x": 10.5, "y": 4 },
|
||||
{ "matrix": [8, 6], "x": 11.75, "y": 4 },
|
||||
{ "matrix": [9, 6], "w": 1.25, "x": 12.75, "y": 4 },
|
||||
{ "matrix": [8, 7], "x": 14.25, "y": 4 },
|
||||
{ "matrix": [9, 7], "x": 15.25, "y": 4 },
|
||||
{ "matrix": [8, 8], "x": 16.25, "y": 4 },
|
||||
{ "matrix": [9, 8], "w": 2, "x": 17.5, "y": 4 },
|
||||
{ "matrix": [8, 10], "x": 19.5, "y": 4 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
24
keyboards/keyten/ortho_slayer/keymaps/default/keymap.c
Normal file
24
keyboards/keyten/ortho_slayer/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,24 @@
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT(
|
||||
MO(1), KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_GRV, KC_INS, KC_HOME, KC_PGUP, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_ESC, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSPC, KC_DEL, KC_END, KC_PGDN, KC_P7, KC_P8, KC_KP_9, KC_PPLS,
|
||||
KC_TAB, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_BSLS, KC_ENT, KC_P4, KC_P5, KC_P6,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
|
||||
};
|
||||
27
keyboards/keyten/ortho_slayer/readme.md
Normal file
27
keyboards/keyten/ortho_slayer/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# keyten x La-Versa Ortho Slayer
|
||||
|
||||
Ortho Slayer is a full size FRL ortho keyboard inspired by Berserk
|
||||
|
||||

|
||||
|
||||
* Keyboard Maintainer: [keyten](https://github.com/key10iq)
|
||||
* Hardware Supported: keyten x La-Versa Ortho Slayer
|
||||
* Hardware Availability: private GB
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make keyten/ortho_slayer:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make keyten/ortho_slayer:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* Bootmagic reset: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
|
||||
* Keycode in layout: Press the key mapped to `QK_BOOT` if it is available
|
||||
* Physical reset button: Hold the button on the back of the PCB
|
||||
@@ -201,6 +201,81 @@
|
||||
{"matrix": [4, 13], "x":13.5, "y":4, "w":1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_1x2u": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x":0, "y":0, "w":1.5},
|
||||
{"matrix": [0, 1], "x":1.5, "y":0},
|
||||
{"matrix": [0, 2], "x":2.5, "y":0},
|
||||
{"matrix": [0, 3], "x":3.5, "y":0},
|
||||
{"matrix": [0, 4], "x":4.5, "y":0},
|
||||
{"matrix": [0, 5], "x":5.5, "y":0},
|
||||
{"matrix": [0, 6], "x":6.5, "y":0},
|
||||
{"matrix": [0, 7], "x":7.5, "y":0},
|
||||
{"matrix": [0, 8], "x":8.5, "y":0},
|
||||
{"matrix": [0, 9], "x":9.5, "y":0},
|
||||
{"matrix": [0, 10], "x":10.5, "y":0},
|
||||
{"matrix": [0, 11], "x":11.5, "y":0},
|
||||
{"matrix": [0, 12], "x":12.5, "y":0},
|
||||
{"matrix": [0, 13], "x":13.5, "y":0, "w":1.5},
|
||||
|
||||
{"matrix": [1, 0], "x":0, "y":1, "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, "h":1.5},
|
||||
{"matrix": [1, 7], "x":7.5, "y":1, "h":1.5},
|
||||
{"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.5},
|
||||
{"matrix": [2, 1], "x":1.5, "y":2},
|
||||
{"matrix": [2, 2], "x":2.5, "y":2},
|
||||
{"matrix": [2, 3], "x":3.5, "y":2},
|
||||
{"matrix": [2, 4], "x":4.5, "y":2},
|
||||
{"matrix": [2, 5], "x":5.5, "y":2},
|
||||
{"matrix": [2, 8], "x":8.5, "y":2},
|
||||
{"matrix": [2, 9], "x":9.5, "y":2},
|
||||
{"matrix": [2, 10], "x":10.5, "y":2},
|
||||
{"matrix": [2, 11], "x":11.5, "y":2},
|
||||
{"matrix": [2, 12], "x":12.5, "y":2},
|
||||
{"matrix": [2, 13], "x":13.5, "y":2, "w":1.5},
|
||||
|
||||
{"matrix": [3, 0], "x":0, "y":3, "w":1.5},
|
||||
{"matrix": [3, 1], "x":1.5, "y":3},
|
||||
{"matrix": [3, 2], "x":2.5, "y":3},
|
||||
{"matrix": [3, 3], "x":3.5, "y":3},
|
||||
{"matrix": [3, 4], "x":4.5, "y":3},
|
||||
{"matrix": [3, 5], "x":5.5, "y":3},
|
||||
{"matrix": [3, 6], "x":6.5, "y":2.5, "h":1.5},
|
||||
{"matrix": [3, 7], "x":7.5, "y":2.5, "h":1.5},
|
||||
{"matrix": [3, 8], "x":8.5, "y":3},
|
||||
{"matrix": [3, 9], "x":9.5, "y":3},
|
||||
{"matrix": [3, 10], "x":10.5, "y":3},
|
||||
{"matrix": [3, 11], "x":11.5, "y":3},
|
||||
{"matrix": [3, 12], "x":12.5, "y":3},
|
||||
{"matrix": [3, 13], "x":13.5, "y":3, "w":1.5},
|
||||
|
||||
{"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},
|
||||
{"matrix": [4, 3], "x":3.5, "y":4},
|
||||
{"matrix": [4, 4], "x":4.5, "y":4},
|
||||
{"matrix": [4, 5], "x":5.5, "y":4},
|
||||
{"matrix": [4, 6], "x":6.5, "y":4, "w":2},
|
||||
{"matrix": [4, 8], "x":8.5, "y":4},
|
||||
{"matrix": [4, 9], "x":9.5, "y":4},
|
||||
{"matrix": [4, 10], "x":10.5, "y":4},
|
||||
{"matrix": [4, 11], "x":11.5, "y":4},
|
||||
{"matrix": [4, 12], "x":12.5, "y":4},
|
||||
{"matrix": [4, 13], "x":13.5, "y":4, "w":1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_2x3u": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x":0, "y":0, "w":1.5},
|
||||
|
||||
298
keyboards/phdesign/ph60/multi/keyboard.json
Normal file
298
keyboards/phdesign/ph60/multi/keyboard.json
Normal file
@@ -0,0 +1,298 @@
|
||||
{
|
||||
"manufacturer": "phdesign.cc",
|
||||
"keyboard_name": "ph60_multi",
|
||||
"maintainer": "phdesign",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13"],
|
||||
"rows": ["GP14", "GP15", "GP18", "GP19", "GP20"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"url": "phdesign.cc",
|
||||
"usb": {
|
||||
"device_version": "2.0.1",
|
||||
"pid": "0x0002",
|
||||
"vid": "0x5048"
|
||||
},
|
||||
"community_layouts": ["60_ansi", "60_ansi_tsangan_split_bs_rshift", "60_iso"]
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [2, 13], "x": 14, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_tsangan_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [2, 13], "x": 14, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 13], "x": 14, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 1], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 12.5, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 1], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [1, 13], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 1.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 12], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 13], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
28
keyboards/phdesign/ph60/multi/keymaps/default/keymap.c
Normal file
28
keyboards/phdesign/ph60/multi/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,28 @@
|
||||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum custom_layers {
|
||||
_BASE,
|
||||
_FN1,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// Base Layer (61 keys)
|
||||
[_BASE] = LAYOUT_all(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, _______,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, MO(_FN1), KC_RCTL
|
||||
),
|
||||
// Fn1 Layer (Windows Lock Shifting Layer)
|
||||
[_FN1] = LAYOUT_all(
|
||||
KC_GRV, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, KC_INS, _______, KC_PSCR, KC_SCRL, KC_PAUS, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, KC_HOME, KC_PGUP, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, KC_VOLD, KC_VOLU, KC_MUTE, KC_END, KC_PGDN, _______, _______,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
};
|
||||
28
keyboards/phdesign/ph60/multi/readme.md
Normal file
28
keyboards/phdesign/ph60/multi/readme.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# phdesign/ph60/multi
|
||||
|
||||

|
||||
|
||||
A 60% multi-layout supported keyboard PCB with open source keyboard case.
|
||||
|
||||
* Keyboard Maintainer: [Team PHDesign](https://github.com/ph-design)
|
||||
* Hardware Supported: PH60/Multi PCB
|
||||
* Hardware Availability:
|
||||
- Store: https://e.tb.cn/h.6VMjUgWZkUGwq26?tk=oVyAeD6uPS2
|
||||
- GitHub Repo: https://github.com/ph-design/PH60/tree/Rev.2/PCB_Rev2/Multi
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make phdesign/ph60/multi:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make phdesign/ph60/multi:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
|
||||
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
|
||||
9
keyboards/phdesign/readme.md
Normal file
9
keyboards/phdesign/readme.md
Normal file
@@ -0,0 +1,9 @@
|
||||

|
||||
|
||||
PHDesign is a team focused on making variety kinds of tech stuff,including keyboards and keyboard-like controllers. This directory includes QMK config files for our keyboard products.
|
||||
|
||||
* Maintainer: [Team PHDesign](https://github.com/ph-design)
|
||||
* Supported Hardware:
|
||||
* [`PH60/Multi`](ph60/multi/): PH60 multi-layout PCB
|
||||
* [`PH-AC`](phac/): PH-AC rhythm game controller
|
||||
* Product Availability: [phdesing.cc](https://phdesign.cc/)
|
||||
@@ -20,6 +20,8 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
#define AUDIO_VOICES
|
||||
#define AUDIO_PIN C6
|
||||
|
||||
#define AUDIO_INIT_DELAY
|
||||
|
||||
/*
|
||||
* Feature disable options
|
||||
* These options are also useful to firmware size reduction.
|
||||
|
||||
@@ -13,6 +13,7 @@ This is the modified version of [calculator by MWWorks](https://github.com/MWWor
|
||||
Feel free to fix it! I think it needs to detect the precision of the two operands and then figure out what the precision of the result should be
|
||||
|
||||
*/
|
||||
#include <math.h>
|
||||
#include "rubi.h"
|
||||
|
||||
static uint8_t calc_current_operand = 0;
|
||||
|
||||
@@ -217,34 +217,34 @@
|
||||
{"matrix": [0, 8], "x": 80, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 9], "x": 104, "y": 0, "flags": 4},
|
||||
|
||||
{"matrix": [1, 4], "x": 16, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 0, "y": 13, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 20, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 32, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 6], "x": 48, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 7], "x": 64, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 8], "x": 80, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 9], "x": 96, "y": 13, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 0, "y": 13, "flags": 4},
|
||||
|
||||
|
||||
{"matrix": [3, 4], "x": 0, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 20, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 6], "x": 36, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 7], "x": 52, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 8], "x": 68, "y": 26, "flags": 4},
|
||||
{"matrix": [2, 9], "x": 84, "y": 26, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 0, "y": 26, "flags": 4},
|
||||
|
||||
{"matrix": [4, 4], "x": 0, "y": 39, "flags": 5},
|
||||
{"matrix": [3, 5], "x": 24, "y": 39, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 40, "y": 39, "flags": 4},
|
||||
{"matrix": [3, 7], "x": 56, "y": 39, "flags": 4},
|
||||
{"matrix": [3, 8], "x": 72, "y": 39, "flags": 4},
|
||||
{"matrix": [3, 9], "x": 88, "y": 39, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 0, "y": 39, "flags": 5},
|
||||
|
||||
{"matrix": [5, 4], "x": 0, "y": 51, "flags": 5},
|
||||
{"matrix": [4, 5], "x": 28, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 6], "x": 44, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 7], "x": 60, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 8], "x": 76, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 9], "x": 92, "y": 51, "flags": 4},
|
||||
{"matrix": [5, 4], "x": 0, "y": 51, "flags": 5},
|
||||
|
||||
{"matrix": [5, 5], "x": 0, "y": 64, "flags": 5},
|
||||
{"matrix": [5, 6], "x": 20, "y": 64, "flags": 5},
|
||||
@@ -274,6 +274,7 @@
|
||||
{"matrix": [7, 8], "x": 220, "y": 13, "flags": 4},
|
||||
{"matrix": [7, 9], "x": 224, "y": 13, "flags": 4},
|
||||
|
||||
{"matrix": [9, 0], "x": 100, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 0], "x": 116, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 1], "x": 132, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 2], "x": 148, "y": 26, "flags": 4},
|
||||
@@ -284,23 +285,22 @@
|
||||
{"matrix": [8, 7], "x": 216, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 8], "x": 220, "y": 26, "flags": 4},
|
||||
{"matrix": [8, 9], "x": 224, "y": 26, "flags": 4},
|
||||
{"matrix": [9, 0], "x": 100, "y": 26, "flags": 4},
|
||||
|
||||
|
||||
{"matrix": [10, 0], "x": 104, "y": 39, "flags": 4},
|
||||
{"matrix": [9, 1], "x": 120, "y": 39, "flags": 4},
|
||||
{"matrix": [9, 2], "x": 136, "y": 39, "flags": 4},
|
||||
{"matrix": [9, 3], "x": 152, "y": 39, "flags": 4},
|
||||
{"matrix": [9, 4], "x": 168, "y": 39, "flags": 4},
|
||||
{"matrix": [9, 5], "x": 184, "y": 39, "flags": 4},
|
||||
{"matrix": [9, 6], "x": 200, "y": 39, "flags": 4},
|
||||
{"matrix": [10, 0], "x": 104, "y": 39, "flags": 4},
|
||||
|
||||
|
||||
{"matrix": [11, 0], "x": 108, "y": 51, "flags": 4},
|
||||
{"matrix": [10, 1], "x": 124, "y": 51, "flags": 4},
|
||||
{"matrix": [10, 2], "x": 140, "y": 51, "flags": 4},
|
||||
{"matrix": [10, 3], "x": 156, "y": 51, "flags": 4},
|
||||
{"matrix": [10, 4], "x": 172, "y": 51, "flags": 4},
|
||||
{"matrix": [10, 6], "x": 188, "y": 51, "flags": 5},
|
||||
{"matrix": [10, 8], "x": 216, "y": 51, "flags": 4},
|
||||
{"matrix": [11, 0], "x": 108, "y": 51, "flags": 4},
|
||||
|
||||
{"matrix": [11, 1], "x": 118, "y": 64, "flags": 4},
|
||||
{"matrix": [11, 3], "x": 144, "y": 64, "flags": 5},
|
||||
|
||||
115
keyboards/suikagiken/suika83opti/keyboard.json
Normal file
115
keyboards/suikagiken/suika83opti/keyboard.json
Normal file
@@ -0,0 +1,115 @@
|
||||
{
|
||||
"manufacturer": "suikagiken",
|
||||
"keyboard_name": "suika83opti",
|
||||
"maintainer": "suikagiken",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP0", "GP1", "GP2", "GP3", "GP4", "GP5", "GP6", "GP7", "GP8", "GP9", "GP10", "GP11", "GP12", "GP13", "GP14", "GP15"],
|
||||
"rows": ["GP29", "GP28", "GP27", "GP26", "GP25", "GP24"]
|
||||
},
|
||||
"url": "https://github.com/suikagiken/suika83opti",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"vid": "0x4B48",
|
||||
"pid": "0x0101"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0,0], "x": 0, "y": 0},
|
||||
{"matrix": [0,1], "x": 1.5, "y": 0},
|
||||
{"matrix": [0,2], "x": 2.5, "y": 0},
|
||||
{"matrix": [0,3], "x": 3.5, "y": 0},
|
||||
{"matrix": [0,4], "x": 4.5, "y": 0},
|
||||
{"matrix": [0,5], "x": 7, "y": 0},
|
||||
{"matrix": [0,6], "x": 8, "y": 0},
|
||||
{"matrix": [0,8], "x": 9, "y": 0},
|
||||
{"matrix": [0,9], "x": 10, "y": 0},
|
||||
{"matrix": [0,10], "x": 12.75, "y": 0},
|
||||
{"matrix": [0,11], "x": 13.75, "y": 0},
|
||||
{"matrix": [0,12], "x": 14.75, "y": 0},
|
||||
{"matrix": [0,13], "x": 15.75, "y": 0},
|
||||
{"matrix": [0,15], "x": 17.25, "y": 0},
|
||||
{"matrix": [1,0], "x": 0, "y": 1.5},
|
||||
{"matrix": [1,1], "x": 1, "y": 1.5},
|
||||
{"matrix": [1,2], "x": 2, "y": 1.5},
|
||||
{"matrix": [1,3], "x": 3, "y": 1.5},
|
||||
{"matrix": [1,4], "x": 4, "y": 1.5},
|
||||
{"matrix": [1,5], "x": 5, "y": 1.5},
|
||||
{"matrix": [1,6], "x": 6, "y": 1.5},
|
||||
{"matrix": [1,7], "x": 8.5, "y": 1.5},
|
||||
{"matrix": [1,9], "x": 11.5, "y": 1.5},
|
||||
{"matrix": [1,10], "x": 12.5, "y": 1.5},
|
||||
{"matrix": [1,11], "x": 13.5, "y": 1.5},
|
||||
{"matrix": [1,12], "x": 14.5, "y": 1.5},
|
||||
{"matrix": [1,13], "x": 15.5, "y": 1.5},
|
||||
{"matrix": [1,15], "x": 17.25, "y": 1.5, "h": 1.5},
|
||||
{"matrix": [2,0], "x": 0, "y": 2.5, "w": 1.5},
|
||||
{"matrix": [2,1], "x": 1.5, "y": 2.5},
|
||||
{"matrix": [2,2], "x": 2.5, "y": 2.5},
|
||||
{"matrix": [2,3], "x": 3.5, "y": 2.5},
|
||||
{"matrix": [2,4], "x": 4.5, "y": 2.5},
|
||||
{"matrix": [2,5], "x": 5.5, "y": 2.5},
|
||||
{"matrix": [2,7], "x": 8.5, "y": 2.5},
|
||||
{"matrix": [2,9], "x": 11, "y": 2.5},
|
||||
{"matrix": [2,10], "x": 12, "y": 2.5},
|
||||
{"matrix": [2,11], "x": 13, "y": 2.5},
|
||||
{"matrix": [2,12], "x": 14, "y": 2.5},
|
||||
{"matrix": [2,13], "x": 15, "y": 2.5},
|
||||
{"matrix": [2,14], "x": 16, "y": 2.5},
|
||||
{"matrix": [3,0], "x": 0.25, "y": 3.5, "w": 1.5},
|
||||
{"matrix": [3,1], "x": 1.75, "y": 3.5},
|
||||
{"matrix": [3,2], "x": 2.75, "y": 3.5},
|
||||
{"matrix": [3,3], "x": 3.75, "y": 3.5},
|
||||
{"matrix": [3,4], "x": 4.75, "y": 3.5},
|
||||
{"matrix": [3,5], "x": 5.75, "y": 3.5},
|
||||
{"matrix": [3,6], "x": 8, "y": 3.5},
|
||||
{"matrix": [3,8], "x": 9, "y": 3.5},
|
||||
{"matrix": [3,9], "x": 11.25, "y": 3.5},
|
||||
{"matrix": [3,10], "x": 12.25, "y": 3.5},
|
||||
{"matrix": [3,11], "x": 13.25, "y": 3.5},
|
||||
{"matrix": [3,12], "x": 14.25, "y": 3.5},
|
||||
{"matrix": [3,13], "x": 15.25, "y": 3.5},
|
||||
{"matrix": [3,14], "x": 16.25, "y": 3.5},
|
||||
{"matrix": [3,15], "x": 17.25, "y": 3, "h": 1.5},
|
||||
{"matrix": [4,0], "x": 0.75, "y": 4.5, "w": 1.5},
|
||||
{"matrix": [4,1], "x": 2.25, "y": 4.5},
|
||||
{"matrix": [4,2], "x": 3.25, "y": 4.5},
|
||||
{"matrix": [4,3], "x": 4.25, "y": 4.5},
|
||||
{"matrix": [4,4], "x": 5.25, "y": 4.5},
|
||||
{"matrix": [4,5], "x": 6.25, "y": 4.5},
|
||||
{"matrix": [4,7], "x": 8.5, "y": 4.5},
|
||||
{"matrix": [4,9], "x": 10.75, "y": 4.5},
|
||||
{"matrix": [4,10], "x": 11.75, "y": 4.5},
|
||||
{"matrix": [4,11], "x": 12.75, "y": 4.5},
|
||||
{"matrix": [4,12], "x": 13.75, "y": 4.5},
|
||||
{"matrix": [4,13], "x": 14.75, "y": 4.5},
|
||||
{"matrix": [4,14], "x": 15.75, "y": 4.5},
|
||||
{"matrix": [4,15], "x": 16.75, "y": 4.5},
|
||||
{"matrix": [5,0], "x": 1.25, "y": 5.5, "w": 1.5},
|
||||
{"matrix": [5,1], "x": 2.75, "y": 5.5},
|
||||
{"matrix": [5,2], "x": 3.75, "y": 5.5},
|
||||
{"matrix": [5,3], "x": 4.75, "y": 5.5},
|
||||
{"matrix": [5,4], "x": 5.75, "y": 5.5, "w": 1.5},
|
||||
{"matrix": [5,6], "x": 7.5, "y": 5.5},
|
||||
{"matrix": [5,7], "x": 8.5, "y": 5.5},
|
||||
{"matrix": [5,8], "x": 9.5, "y": 5.5},
|
||||
{"matrix": [5,9], "x": 10.75, "y": 5.5, "w": 1.5},
|
||||
{"matrix": [5,10], "x": 12.25, "y": 5.5},
|
||||
{"matrix": [5,11], "x": 13.25, "y": 5.5},
|
||||
{"matrix": [5,12], "x": 14.25, "y": 5.5},
|
||||
{"matrix": [5,13], "x": 15.25, "y": 5.5, "w": 1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
24
keyboards/suikagiken/suika83opti/keymaps/default/keymap.json
Normal file
24
keyboards/suikagiken/suika83opti/keymaps/default/keymap.json
Normal file
@@ -0,0 +1,24 @@
|
||||
{
|
||||
"author": "suikagiken",
|
||||
"keyboard": "suikagiken/suika83opti",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"KC_ESC" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , "KC_F6" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_F11" , "KC_F12" , "KC_DEL" ,
|
||||
"KC_GRV" , "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5" , "KC_6" , "KC_PSCR", "KC_7" , "KC_8" , "KC_9" , "KC_0" , "KC_MINS", "KC_BSPC",
|
||||
"KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T" , "KC_EQL" , "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_BSLS",
|
||||
"KC_CAPS", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G" , "KC_LBRC", "KC_RBRC", "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_UP" , "KC_B" , "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH", "KC_RSFT",
|
||||
"KC_LCTL", "KC_LWIN", "KC_LOPT", "MO(1)" , "KC_SPC" , "KC_LEFT", "KC_DOWN", "KC_RGHT", "KC_SPC" , "MO(1)" , "KC_ROPT", "KC_APP" , "KC_RCTL"
|
||||
],
|
||||
[
|
||||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
|
||||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
|
||||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
|
||||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
|
||||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_PGUP", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS",
|
||||
"KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_HOME", "KC_PGDN", "KC_END" , "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS", "KC_TRNS"
|
||||
]
|
||||
]
|
||||
}
|
||||
43
keyboards/suikagiken/suika83opti/readme.md
Normal file
43
keyboards/suikagiken/suika83opti/readme.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# suika83opti
|
||||
(English Follows Japanese)
|
||||
|
||||
## 概要
|
||||

|
||||

|
||||
|
||||
suika83optiはロースタッガードの一体型エルゴキーボードです。
|
||||
ファンクションキーや矢印キーなど、コンパクトキーボードでは省略されがちなキーも備えており、フルキーボードからの移行も容易です。
|
||||
|
||||
* 制作 : すいか技研 (Website: https://suikagiken.net GitHub: [suikagiken](https://github.com/suikagiken) )
|
||||
* 販売 : すいか技研の[booth](https://suikagiken.booth.pm/)にて販売予定です
|
||||
|
||||
## ビルドガイド
|
||||
|
||||
[こちら](https://github.com/suikagiken/suika83opti/blob/main/buildguide_1.0.md)からご覧下さい。
|
||||
|
||||
---
|
||||
|
||||
## Overview
|
||||
|
||||
suika83opti is a row-staggered ergonomic keyboard with 85 keys. It has function keys or arrow keys, which are omitted in compact keyboards, making it easy to switch from a conventional full keyboard.
|
||||
|
||||
* Keyboard Maintainer: [suikagiken](https://github.com/suikagiken)
|
||||
* Hardware Availability: Available at [booth](https://suikagiken.booth.pm/).
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make suikagiken/suika83opti:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make suikagiken/suika83opti: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
|
||||
@@ -14,6 +14,7 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <math.h>
|
||||
#include "terrazzo.h"
|
||||
|
||||
#ifdef LED_MATRIX_ENABLE
|
||||
|
||||
29
keyboards/tzarc/kobold/config.h
Normal file
29
keyboards/tzarc/kobold/config.h
Normal file
@@ -0,0 +1,29 @@
|
||||
// Copyright 2025 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
// Hardware-specific definitions
|
||||
#define RGB_ENABLE_PIN C11
|
||||
|
||||
// WS2812 Configuration
|
||||
#define WS2812_PWM_DRIVER PWMD17
|
||||
#define WS2812_PWM_CHANNEL 1
|
||||
#define WS2812_PWM_PAL_MODE 10
|
||||
#define WS2812_PWM_DMA_STREAM STM32_DMA1_STREAM1
|
||||
#define WS2812_PWM_DMA_CHANNEL 1
|
||||
#define WS2812_PWM_DMAMUX_ID STM32_DMAMUX1_TIM17_UP
|
||||
|
||||
// SPI Configuration
|
||||
#define SPI_DRIVER SPID1
|
||||
#define SPI_SCK_PIN A5
|
||||
#define SPI_SCK_PAL_MODE 5
|
||||
#define SPI_MOSI_PIN A7
|
||||
#define SPI_MOSI_PAL_MODE 5
|
||||
#define SPI_MISO_PIN A6
|
||||
#define SPI_MISO_PAL_MODE 5
|
||||
|
||||
// External NOR Flash config
|
||||
#define EXTERNAL_FLASH_SPI_MODE 0
|
||||
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN B10
|
||||
#define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR 4 // (160MHz/4) => 40MHz
|
||||
#define EXTERNAL_FLASH_SIZE (16 * 1024 * 1024) // 128Mb/16MB capacity
|
||||
8
keyboards/tzarc/kobold/halconf.h
Normal file
8
keyboards/tzarc/kobold/halconf.h
Normal file
@@ -0,0 +1,8 @@
|
||||
// Copyright 2025 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
#define HAL_USE_SPI TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
82
keyboards/tzarc/kobold/info.json
Normal file
82
keyboards/tzarc/kobold/info.json
Normal file
@@ -0,0 +1,82 @@
|
||||
{
|
||||
"manufacturer": "Tzarc",
|
||||
"keyboard_name": "Kobold",
|
||||
"url": "https://github.com/tzarc/keyboards/tree/main/Kobold",
|
||||
"maintainer": "tzarc",
|
||||
"bootloader": "stm32-dfu",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 32
|
||||
},
|
||||
"eeprom": {
|
||||
"driver": "wear_leveling",
|
||||
"wear_leveling": {
|
||||
"backing_size": 32768,
|
||||
"driver": "spi_flash"
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"direct": [
|
||||
["B14", "C6", "B9", "B7", "B13", "B15", "C13", "C15", "B12", "B0", "A2", "A0", "B11", "A4", "A3", "A1"]
|
||||
]
|
||||
},
|
||||
"processor": "STM32G431",
|
||||
"rgb_matrix": {
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"x": 0, "y": 0, "flags": 2},
|
||||
{"x": 75, "y": 0, "flags": 2},
|
||||
{"x": 150, "y": 0, "flags": 2},
|
||||
{"x": 224, "y": 0, "flags": 2},
|
||||
{"x": 224, "y": 21, "flags": 2},
|
||||
{"x": 150, "y": 21, "flags": 2},
|
||||
{"x": 75, "y": 21, "flags": 2},
|
||||
{"x": 0, "y": 21, "flags": 2},
|
||||
{"x": 0, "y": 43, "flags": 2},
|
||||
{"x": 75, "y": 43, "flags": 2},
|
||||
{"x": 150, "y": 43, "flags": 2},
|
||||
{"x": 224, "y": 43, "flags": 2},
|
||||
{"x": 224, "y": 64, "flags": 2},
|
||||
{"x": 150, "y": 64, "flags": 2},
|
||||
{"x": 75, "y": 64, "flags": 2},
|
||||
{"x": 0, "y": 64, "flags": 2}
|
||||
]
|
||||
},
|
||||
"usb": {
|
||||
"pid": "0x4921",
|
||||
"vid": "0x1209"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "pwm",
|
||||
"pin": "B5"
|
||||
},
|
||||
"community_layouts": ["ortho_4x4"],
|
||||
"layouts": {
|
||||
"LAYOUT_ortho_4x4": {
|
||||
"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": 0, "y": 1},
|
||||
{"matrix": [0, 5], "x": 1, "y": 1},
|
||||
{"matrix": [0, 6], "x": 2, "y": 1},
|
||||
{"matrix": [0, 7], "x": 3, "y": 1},
|
||||
{"matrix": [0, 8], "x": 0, "y": 2},
|
||||
{"matrix": [0, 9], "x": 1, "y": 2},
|
||||
{"matrix": [0, 10], "x": 2, "y": 2},
|
||||
{"matrix": [0, 11], "x": 3, "y": 2},
|
||||
{"matrix": [0, 12], "x": 0, "y": 3},
|
||||
{"matrix": [0, 13], "x": 1, "y": 3},
|
||||
{"matrix": [0, 14], "x": 2, "y": 3},
|
||||
{"matrix": [0, 15], "x": 3, "y": 3}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
14
keyboards/tzarc/kobold/keymaps/default/keymap.c
Normal file
14
keyboards/tzarc/kobold/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,14 @@
|
||||
// Copyright 2025 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_ortho_4x4(
|
||||
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
|
||||
),
|
||||
};
|
||||
// clang-format on
|
||||
18
keyboards/tzarc/kobold/kobold.c
Normal file
18
keyboards/tzarc/kobold/kobold.c
Normal file
@@ -0,0 +1,18 @@
|
||||
// Copyright 2025 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
void early_hardware_init_post(void) {
|
||||
// Disable RGB LEDs
|
||||
gpio_set_pin_output(RGB_ENABLE_PIN);
|
||||
gpio_write_pin(RGB_ENABLE_PIN, 1);
|
||||
}
|
||||
|
||||
void housekeeping_task_kb() {
|
||||
// Enable RGB LEDs after 200 milliseconds
|
||||
static bool rgb_enabled = false;
|
||||
if (!rgb_enabled && timer_read32() > 200) {
|
||||
gpio_write_pin(RGB_ENABLE_PIN, 0);
|
||||
rgb_enabled = true;
|
||||
}
|
||||
}
|
||||
12
keyboards/tzarc/kobold/mcuconf.h
Normal file
12
keyboards/tzarc/kobold/mcuconf.h
Normal file
@@ -0,0 +1,12 @@
|
||||
// Copyright 2025 Nick Brassel (@tzarc)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#pragma once
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
// Used for SK6812 chain
|
||||
#undef STM32_PWM_USE_TIM17
|
||||
#define STM32_PWM_USE_TIM17 TRUE
|
||||
|
||||
// Used for NOR Flash
|
||||
#undef STM32_SPI_USE_SPI1
|
||||
#define STM32_SPI_USE_SPI1 TRUE
|
||||
5
keyboards/tzarc/kobold/r1/keyboard.json
Normal file
5
keyboards/tzarc/kobold/r1/keyboard.json
Normal file
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"usb": {
|
||||
"device_version": "1.0.0"
|
||||
}
|
||||
}
|
||||
29
keyboards/tzarc/kobold/readme.md
Normal file
29
keyboards/tzarc/kobold/readme.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# Kobold
|
||||
|
||||

|
||||
|
||||
4x4 macropad running QMK, in the same form factor as a bm16s. Non-standard Choc key spacing.
|
||||
|
||||
North-facing RGB, SPI NOR Flash, voltage and current measurement, direct pin matrix, reset to bootloader by holding top 4 keys.
|
||||
|
||||
* Keyboard Maintainer: [tzarc](https://github.com/tzarc)
|
||||
* Hardware Supported: Kobold, r1
|
||||
* Hardware Availability: [KiCad files](https://github.com/tzarc/keyboards/tree/main/Kobold)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make tzarc/kobold/r1:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make tzarc/kobold/r1:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the top left key and plug in the keyboard
|
||||
* **Physical reset button**: Simultaneously press the top four keys, or press the physical button on the back marked 'D'.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
||||
97
keyboards/void/voidhhkb_hotswap/keyboard.json
Normal file
97
keyboards/void/voidhhkb_hotswap/keyboard.json
Normal file
@@ -0,0 +1,97 @@
|
||||
{
|
||||
"manufacturer": "James Wilson",
|
||||
"keyboard_name": "voidhhkb_hotswap",
|
||||
"maintainer": "JamesWilson1996",
|
||||
"bootloader": "stm32-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B12", "B13", "A3", "A4", "B14", "B15", "A8", "A5", "A9", "A10", "A6", "A7", "A15", "B3", "B4"],
|
||||
"rows": ["B11", "B10", "B2", "B1", "B0"]
|
||||
},
|
||||
"processor": "STM32F072",
|
||||
"url": "",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0002",
|
||||
"vid": "0x4A57"
|
||||
},
|
||||
"community_layouts": [ "60_hhkb" ],
|
||||
"layouts": {
|
||||
"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": [0, 14], "x": 14, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 2], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 2], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"matrix": [3, 1], "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, 14], "x": 14.0, "y": 3},
|
||||
|
||||
{"matrix": [4, 2], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 7], "x": 4, "y": 4, "w": 6},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 11.5, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
21
keyboards/void/voidhhkb_hotswap/keymaps/default/keymap.c
Normal file
21
keyboards/void/voidhhkb_hotswap/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,21 @@
|
||||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_60_hhkb(
|
||||
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_BSLS, KC_GRV,
|
||||
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_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_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_LALT, KC_LGUI, KC_SPC, KC_RGUI, KC_RALT
|
||||
),
|
||||
[1] = LAYOUT_60_hhkb(
|
||||
KC_PWR, 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_INS, KC_DEL,
|
||||
KC_CAPS, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PSCR, KC_SCRL, KC_PAUS, KC_UP, KC_NO, KC_CLAG,
|
||||
KC_NO, KC_VOLU, KC_VOLD, KC_MUTE, KC_EJCT, KC_NO, KC_PAST, KC_PSLS, KC_HOME, KC_PGUP, KC_LEFT, KC_RGHT, KC_RETN,
|
||||
KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_NO, KC_PPLS, KC_PMNS, KC_END, KC_PGDN, KC_DOWN, KC_NO, KC_TRNS,
|
||||
KC_NO, KC_NO, KC_NO, KC_MSTP, KC_NO
|
||||
)
|
||||
};
|
||||
29
keyboards/void/voidhhkb_hotswap/readme.md
Normal file
29
keyboards/void/voidhhkb_hotswap/readme.md
Normal file
@@ -0,0 +1,29 @@
|
||||
# VoidHHKB-Hotswap
|
||||
|
||||

|
||||
|
||||
VoidHHKB-Hotswap 60% PCB designed for the [HSKB project](https://github.com/Dev01-D/HSKB).
|
||||
|
||||
* Keyboard Maintainer: [James Wilson](https://github.com/JamesWilson1996)
|
||||
* Hardware Supported: STM32F072CBT6
|
||||
* Hardware Availability: [HSKB](https://github.com/Dev01-D/HSKB)
|
||||
|
||||
# Compiling
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make void/voidhhkb_hotswap:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make void/voidhhkb_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**: 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
|
||||
@@ -14,10 +14,10 @@
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "rgblight.h"
|
||||
#include "rgb_matrix.h"
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
|
||||
#include "rgblight.h"
|
||||
|
||||
#undef WS2812_DI_PIN
|
||||
#define WS2812_DI_PIN RGBLIGHT_DI_PIN
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ from qmk.commands import find_make, get_make_parallel_args, parse_configurator_j
|
||||
from qmk.keyboard import keyboard_folder
|
||||
from qmk.info import keymap_json
|
||||
from qmk.keymap import locate_keymap
|
||||
from qmk.path import is_under_qmk_firmware, is_under_qmk_userspace
|
||||
from qmk.path import is_under_qmk_firmware, is_under_qmk_userspace, unix_style_path
|
||||
|
||||
# These must be kept in the order in which they're applied to $(TARGET) in the makefiles in order to ensure consistency.
|
||||
TARGET_FILENAME_MODIFIERS = ['FORCE_LAYOUT', 'CONVERT_TO']
|
||||
@@ -204,11 +204,11 @@ class KeyboardKeymapBuildTarget(BuildTarget):
|
||||
if is_under_qmk_userspace(keymap_location) and not is_under_qmk_firmware(keymap_location):
|
||||
keymap_directory = keymap_location.parent
|
||||
compile_args.extend([
|
||||
f'MAIN_KEYMAP_PATH_1={keymap_directory}',
|
||||
f'MAIN_KEYMAP_PATH_2={keymap_directory}',
|
||||
f'MAIN_KEYMAP_PATH_3={keymap_directory}',
|
||||
f'MAIN_KEYMAP_PATH_4={keymap_directory}',
|
||||
f'MAIN_KEYMAP_PATH_5={keymap_directory}',
|
||||
f'MAIN_KEYMAP_PATH_1={unix_style_path(keymap_directory)}',
|
||||
f'MAIN_KEYMAP_PATH_2={unix_style_path(keymap_directory)}',
|
||||
f'MAIN_KEYMAP_PATH_3={unix_style_path(keymap_directory)}',
|
||||
f'MAIN_KEYMAP_PATH_4={unix_style_path(keymap_directory)}',
|
||||
f'MAIN_KEYMAP_PATH_5={unix_style_path(keymap_directory)}',
|
||||
])
|
||||
|
||||
return compile_args
|
||||
@@ -267,11 +267,11 @@ class JsonKeymapBuildTarget(BuildTarget):
|
||||
generated_files_path = intermediate_output / 'src'
|
||||
keymap_json = generated_files_path / 'keymap.json'
|
||||
compile_args.extend([
|
||||
f'MAIN_KEYMAP_PATH_1={intermediate_output}',
|
||||
f'MAIN_KEYMAP_PATH_2={intermediate_output}',
|
||||
f'MAIN_KEYMAP_PATH_3={intermediate_output}',
|
||||
f'MAIN_KEYMAP_PATH_4={intermediate_output}',
|
||||
f'MAIN_KEYMAP_PATH_5={intermediate_output}',
|
||||
f'MAIN_KEYMAP_PATH_1={unix_style_path(intermediate_output)}',
|
||||
f'MAIN_KEYMAP_PATH_2={unix_style_path(intermediate_output)}',
|
||||
f'MAIN_KEYMAP_PATH_3={unix_style_path(intermediate_output)}',
|
||||
f'MAIN_KEYMAP_PATH_4={unix_style_path(intermediate_output)}',
|
||||
f'MAIN_KEYMAP_PATH_5={unix_style_path(intermediate_output)}',
|
||||
f'KEYMAP_JSON={keymap_json}',
|
||||
f'KEYMAP_PATH={generated_files_path}',
|
||||
])
|
||||
|
||||
@@ -54,10 +54,13 @@ def _check_arm_gcc_installation():
|
||||
"""Returns OK if the arm-none-eabi-gcc is fully installed and can produce binaries.
|
||||
"""
|
||||
with TemporaryDirectory() as temp_dir:
|
||||
temp_file = Path(temp_dir) / 'test.elf'
|
||||
temp_in = Path(temp_dir) / 'test.c'
|
||||
temp_out = Path(temp_dir) / 'test.elf'
|
||||
|
||||
args = ['arm-none-eabi-gcc', '-mcpu=cortex-m0', '-mthumb', '-mno-thumb-interwork', '--specs=nosys.specs', '--specs=nano.specs', '-x', 'c', '-o', str(temp_file), '-']
|
||||
result = cli.run(args, stdin=None, stdout=None, stderr=None, input='#include <newlib.h>\nint main() { return __NEWLIB__ * __NEWLIB_MINOR__ * __NEWLIB_PATCHLEVEL__; }')
|
||||
temp_in.write_text('#include <newlib.h>\nint main() { return __NEWLIB__ * __NEWLIB_MINOR__ * __NEWLIB_PATCHLEVEL__; }', encoding='utf-8')
|
||||
|
||||
args = ['arm-none-eabi-gcc', '-mcpu=cortex-m0', '-mthumb', '-mno-thumb-interwork', '--specs=nosys.specs', '--specs=nano.specs', '-x', 'c', '-o', str(temp_out), str(temp_in)]
|
||||
result = cli.run(args, stdout=None, stderr=None)
|
||||
if result.returncode == 0:
|
||||
cli.log.info('Successfully compiled using arm-none-eabi-gcc')
|
||||
else:
|
||||
@@ -65,8 +68,8 @@ def _check_arm_gcc_installation():
|
||||
cli.log.error(f'Command: {" ".join(args)}')
|
||||
return CheckStatus.ERROR
|
||||
|
||||
args = ['arm-none-eabi-size', str(temp_file)]
|
||||
result = cli.run(args, stdin=None, stdout=None, stderr=None)
|
||||
args = ['arm-none-eabi-size', str(temp_out)]
|
||||
result = cli.run(args, stdout=None, stderr=None)
|
||||
if result.returncode == 0:
|
||||
cli.log.info('Successfully tested arm-none-eabi-binutils using arm-none-eabi-size')
|
||||
else:
|
||||
@@ -91,10 +94,13 @@ def _check_avr_gcc_installation():
|
||||
"""Returns OK if the avr-gcc is fully installed and can produce binaries.
|
||||
"""
|
||||
with TemporaryDirectory() as temp_dir:
|
||||
temp_file = Path(temp_dir) / 'test.elf'
|
||||
temp_in = Path(temp_dir) / 'test.c'
|
||||
temp_out = Path(temp_dir) / 'test.elf'
|
||||
|
||||
args = ['avr-gcc', '-mmcu=atmega32u4', '-x', 'c', '-o', str(temp_file), '-']
|
||||
result = cli.run(args, stdin=None, stdout=None, stderr=None, input='int main() { return 0; }')
|
||||
temp_in.write_text('int main() { return 0; }', encoding='utf-8')
|
||||
|
||||
args = ['avr-gcc', '-mmcu=atmega32u4', '-x', 'c', '-o', str(temp_out), str(temp_in)]
|
||||
result = cli.run(args, stdout=None, stderr=None)
|
||||
if result.returncode == 0:
|
||||
cli.log.info('Successfully compiled using avr-gcc')
|
||||
else:
|
||||
@@ -102,8 +108,8 @@ def _check_avr_gcc_installation():
|
||||
cli.log.error(f'Command: {" ".join(args)}')
|
||||
return CheckStatus.ERROR
|
||||
|
||||
args = ['avr-size', str(temp_file)]
|
||||
result = cli.run(args, stdin=None, stdout=None, stderr=None)
|
||||
args = ['avr-size', str(temp_out)]
|
||||
result = cli.run(args, stdout=None, stderr=None)
|
||||
if result.returncode == 0:
|
||||
cli.log.info('Successfully tested avr-binutils using avr-size')
|
||||
else:
|
||||
|
||||
@@ -131,6 +131,11 @@ def generate_api(cli):
|
||||
if keymap_rel is None:
|
||||
cli.log.debug('Skipping keymap %s (not in qmk_firmware)', keymap)
|
||||
continue
|
||||
|
||||
if (keymap_rel / 'keymap.c').exists():
|
||||
cli.log.debug('Skipping keymap %s (not pure dd keymap)', keymap)
|
||||
continue
|
||||
|
||||
kb_json['keymaps'][keymap.name] = {
|
||||
# TODO: deprecate 'url' as consumer needs to know its potentially hjson
|
||||
'url': f'https://raw.githubusercontent.com/qmk/qmk_firmware/master/{keymap_rel}/keymap.json',
|
||||
|
||||
@@ -8,7 +8,7 @@ from argcomplete.completers import FilesCompleter
|
||||
from qmk.commands import dump_lines
|
||||
from qmk.keyboard import keyboard_completer, keyboard_folder
|
||||
from qmk.keymap import keymap_completer, locate_keymap
|
||||
from qmk.path import normpath, FileType
|
||||
from qmk.path import normpath, FileType, unix_style_path
|
||||
|
||||
|
||||
@cli.argument('filename', nargs='?', arg_only=True, type=FileType('r'), completer=FilesCompleter('.json'), help='A configurator export JSON.')
|
||||
@@ -53,4 +53,4 @@ def generate_make_dependencies(cli):
|
||||
for file in interesting_files:
|
||||
check_files.append(Path('users') / cli.args.keymap / file)
|
||||
|
||||
dump_lines(cli.args.output, [f'generated-files: $(wildcard {found})\n' for found in check_files])
|
||||
dump_lines(cli.args.output, [f'generated-files: $(wildcard {unix_style_path(found)})\n' for found in check_files])
|
||||
|
||||
@@ -317,10 +317,10 @@ def lint(cli):
|
||||
if isinstance(cli.config.lint.keyboard, str):
|
||||
# if provided via config - string not array
|
||||
keyboard_list = [cli.config.lint.keyboard]
|
||||
elif is_all_keyboards(cli.args.keyboard[0]):
|
||||
elif any(is_all_keyboards(kb) for kb in cli.args.keyboard):
|
||||
keyboard_list = list_keyboards()
|
||||
else:
|
||||
keyboard_list = cli.config.lint.keyboard
|
||||
keyboard_list = list(set(cli.config.lint.keyboard))
|
||||
|
||||
failed = []
|
||||
|
||||
|
||||
@@ -12,6 +12,7 @@ from qmk.constants import QMK_USERSPACE, HAS_QMK_USERSPACE
|
||||
from qmk.json_schema import json_load, validate
|
||||
from qmk.keyboard import keyboard_alias_definitions
|
||||
from qmk.util import maybe_exit
|
||||
from qmk.path import unix_style_path
|
||||
|
||||
|
||||
def find_make():
|
||||
@@ -85,7 +86,7 @@ def build_environment(args):
|
||||
envs = parse_env_vars(args)
|
||||
|
||||
if HAS_QMK_USERSPACE:
|
||||
envs['QMK_USERSPACE'] = Path(QMK_USERSPACE).resolve()
|
||||
envs['QMK_USERSPACE'] = unix_style_path(Path(QMK_USERSPACE).resolve())
|
||||
|
||||
return envs
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
ASSERT_COMMUNITY_MODULES_MIN_API_VERSION(1, 0, 0);
|
||||
|
||||
uint32_t delayed_hello_world(uint32_t trigger_time, void *cb_arg) {
|
||||
printf("Hello, world! I'm a QMK based keyboard! The keymap array size is %d bytes.\n", (int)hello_world_introspection().total_size);
|
||||
dprintf("Hello, world! I'm a QMK based keyboard! The keymap array size is %d bytes.\n", (int)hello_world_introspection().total_size);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,2 +1,8 @@
|
||||
CONVERTER:=platforms/chibios/converters/promicro_to_sparkfun_pm2040
|
||||
ACTIVE_CONVERTER:=sparkfun_pm2040
|
||||
|
||||
$(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)
|
||||
$(info The 'CONVERT_TO=promicro_rp2040' option is now deprecated.)
|
||||
$(info Depending on hardware either 'CONVERT_TO=sparkfun_pm2040' or 'CONVERT_TO=rp2040_ce' should be used instead.)
|
||||
$(info See https://docs.qmk.fm/feature_converters#pro-micro documentation for more information.)
|
||||
$(info @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@)
|
||||
|
||||
Reference in New Issue
Block a user