mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-09-10 17:15:43 +00:00
Compare commits
41 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
90b5c17034 | ||
|
|
da7811f82a | ||
|
|
9e103614f8 | ||
|
|
177e461d90 | ||
|
|
b42191a2dd | ||
|
|
36636205dd | ||
|
|
89e39b9858 | ||
|
|
4ae2b4f371 | ||
|
|
6e55870a82 | ||
|
|
e15d9ca4b3 | ||
|
|
5354ec5791 | ||
|
|
235d18f360 | ||
|
|
de5fd5d4e2 | ||
|
|
f5b02fbc11 | ||
|
|
611460c9db | ||
|
|
1ac255fd1c | ||
|
|
664c0bc4c3 | ||
|
|
6626084cb8 | ||
|
|
bb27c69675 | ||
|
|
03a53e29af | ||
|
|
096696d86d | ||
|
|
7f9ceef3dd | ||
|
|
7ecdb57414 | ||
|
|
dcdd037276 | ||
|
|
8ae01715d6 | ||
|
|
f4aa8ae845 | ||
|
|
0516cf5ed8 | ||
|
|
802a199bbd | ||
|
|
1a54ecf246 | ||
|
|
319844407c | ||
|
|
e57226d9a2 | ||
|
|
1646000c9b | ||
|
|
824ad46e5d | ||
|
|
0d477bf570 | ||
|
|
2e3664d2c0 | ||
|
|
fad44ae10c | ||
|
|
8525ab03de | ||
|
|
faf77f1651 | ||
|
|
2b8aeed02b | ||
|
|
9e2d8999bf | ||
|
|
c8a39b69a0 |
35
.clangd
35
.clangd
@@ -1,4 +1,33 @@
|
||||
CompileFlags:
|
||||
Add: [-Wno-unknown-attributes, -Wno-maybe-uninitialized, -Wno-unknown-warning-option]
|
||||
Remove: [-W*, -mmcu=*, -mcpu=*, -mfpu=*, -mfloat-abi=*, -mno-unaligned-access, -mno-thumb-interwork, -mcall-prologues, -D__has_include*]
|
||||
Compiler: clang
|
||||
Add:
|
||||
[
|
||||
-Wno-unknown-attributes,
|
||||
-Wno-maybe-uninitialized,
|
||||
-Wno-unknown-warning-option,
|
||||
-Wno-pointer-to-int-cast,
|
||||
-Wno-int-to-void-pointer-cast,
|
||||
-DPROGMEM=,
|
||||
]
|
||||
Remove:
|
||||
[
|
||||
-W*,
|
||||
-mmcu=*,
|
||||
-mcpu=*,
|
||||
-mfpu=*,
|
||||
-mfloat-abi=*,
|
||||
-mno-unaligned-access,
|
||||
-mno-thumb-interwork,
|
||||
-mcall-prologues,
|
||||
-D__has_include*,
|
||||
-mlra,
|
||||
]
|
||||
Compiler: clang
|
||||
Diagnostics:
|
||||
UnusedIncludes: None
|
||||
Suppress:
|
||||
[
|
||||
asm_invalid_output_constraint,
|
||||
asm_invalid_input_constraint,
|
||||
invalid_asm_value_for_constraint,
|
||||
anyx86_interrupt_attribute,
|
||||
]
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"license": "GPL-2.0-or-later",
|
||||
"devDependencies": {
|
||||
"vite": "^5.4.18",
|
||||
"vite": "^5.4.19",
|
||||
"vitepress": "^1.1.0",
|
||||
"vitepress-plugin-tabs": "^0.5.0",
|
||||
"vue": "^3.4.24"
|
||||
|
||||
@@ -766,10 +766,10 @@ tabbable@^6.2.0:
|
||||
resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97"
|
||||
integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==
|
||||
|
||||
vite@^5.2.9, vite@^5.4.18:
|
||||
version "5.4.18"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.18.tgz#b5af357f9d5ebb2e0c085779b7a37a77f09168a4"
|
||||
integrity sha512-1oDcnEp3lVyHCuQ2YFelM4Alm2o91xNoMncRm1U7S+JdYfYOvbiGZ3/CxGttrOu2M/KcGz7cRC2DoNUA6urmMA==
|
||||
vite@^5.2.9, vite@^5.4.19:
|
||||
version "5.4.19"
|
||||
resolved "https://registry.yarnpkg.com/vite/-/vite-5.4.19.tgz#20efd060410044b3ed555049418a5e7d1998f959"
|
||||
integrity sha512-qO3aKv3HoQC8QKiNSTuUM1l9o/XX3+c+VTgLHbJWHZGeTPVAg2XwazI9UWzoxjIJCGCV2zU60uqMzjeLZuULqA==
|
||||
dependencies:
|
||||
esbuild "^0.21.3"
|
||||
postcss "^8.4.43"
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
SPI 18x12 LED matrix driver by Awinic. Supports a maximum of four drivers, each controlling up to 216 single-color LEDs, or 72 RGB LEDs.
|
||||
|
||||
[AW20216S Datasheet](https://doc.awinic.com/doc/20230609wm/b6a9c70b-e1bd-495b-925f-bcbed3fc2620.pdf)
|
||||
[AW20216S Datasheet](https://doc.awinic.com/doc/202412/a055779b-49c0-4d09-8f04-73029f44b72b.pdf)
|
||||
|
||||
## Usage {#usage}
|
||||
|
||||
|
||||
@@ -36,8 +36,8 @@ The following `#define`s apply only to the `adc` driver:
|
||||
|-----------------------------|--------------|--------------------------------------------------------------|
|
||||
|`BATTERY_PIN` |*Not defined* |The GPIO pin connected to the voltage divider. |
|
||||
|`BATTERY_REF_VOLTAGE_MV` |`3300` |The ADC reverence voltage, in millivolts. |
|
||||
|`BATTERY_VOLTAGE_DIVIDER_R1` |`100000` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|
||||
|`BATTERY_VOLTAGE_DIVIDER_R1` |`100000` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|
||||
|`BATTERY_VOLTAGE_DIVIDER_R1` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|
||||
|`BATTERY_VOLTAGE_DIVIDER_R2` |`100` |The voltage divider resistance, in kOhm. Set to 0 to disable. |
|
||||
|`BATTERY_ADC_RESOLUTION` |`10` |The ADC resolution configured for the ADC Driver. |
|
||||
|
||||
## Functions
|
||||
|
||||
@@ -2,29 +2,40 @@
|
||||
|
||||
These allow you to combine a modifier with a keycode. When pressed, the keydown event for the modifier, then `kc` will be sent. On release, the keyup event for `kc`, then the modifier will be sent.
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|----------|----------------------------------|------------------------------------------------------|
|
||||
|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` |
|
||||
|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` |
|
||||
|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` |
|
||||
|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` |
|
||||
|`RCTL(kc)`| |Hold Right Control and press `kc` |
|
||||
|`RSFT(kc)`| |Hold Right Shift and press `kc` |
|
||||
|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` |
|
||||
|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` |
|
||||
|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and GUI and press `kc` |
|
||||
|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` |
|
||||
|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` |
|
||||
|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` |
|
||||
|`LCA(kc)` | |Hold Left Control and Alt and press `kc` |
|
||||
|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` |
|
||||
|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt (AltGr) and press `kc` |
|
||||
|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` |
|
||||
|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` |
|
||||
|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` |
|
||||
|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc` |
|
||||
|Key |Aliases |Description |
|
||||
|----------|----------------------------------|-------------------------------------------------------------------------------|
|
||||
|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` |
|
||||
|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` |
|
||||
|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` |
|
||||
|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` |
|
||||
|`LCS(kc)` | |Hold Left Control and Left Shift and press `kc` |
|
||||
|`LCA(kc)` | |Hold Left Control and Left Alt and press `kc` |
|
||||
|`LCG(kc)` | |Hold Left Control and Left GUI and press `kc` |
|
||||
|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` |
|
||||
|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and Left GUI and press `kc` |
|
||||
|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` |
|
||||
|`LCSG(kc)`| |Hold Left Control, Left Shift and Left GUI and press `kc` |
|
||||
|`LCAG(kc)`| |Hold Left Control, Left Alt and Left GUI and press `kc` |
|
||||
|`LSAG(kc)`| |Hold Left Shift, Left Alt and Left GUI and press `kc` |
|
||||
|`RCTL(kc)`| |Hold Right Control and press `kc` |
|
||||
|`RSFT(kc)`| |Hold Right Shift and press `kc` |
|
||||
|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` |
|
||||
|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` |
|
||||
|`RCA(kc)` | |Hold Right Control and Right Alt and press `kc` |
|
||||
|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` |
|
||||
|`RCG(kc)` | |Hold Right Control and Right GUI and press `kc` |
|
||||
|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt and press `kc` |
|
||||
|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` |
|
||||
|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` |
|
||||
|`RCSG(kc)`| |Hold Right Control, Right Shift and Right GUI and press `kc` |
|
||||
|`RCAG(kc)`| |Hold Right Control, Right Alt and Right GUI and press `kc` |
|
||||
|`RSAG(kc)`| |Hold Right Shift, Right Alt and Right GUI and press `kc` |
|
||||
|`MEH(kc)` | |Hold Left Control, Left Shift and Left Alt and press `kc` |
|
||||
|`HYPR(kc)`| |Hold Left Control, Left Shift, Left Alt and Left GUI and press `kc`<sup>1</sup>|
|
||||
|
||||
You can also chain them, for example `LCTL(LALT(KC_DEL))` or `C(A(KC_DEL))` makes a key that sends Control+Alt+Delete with a single keypress.
|
||||
<sup>1. More information on the Hyper key can be found on [this blog post by Brett Terpstra](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/).</sup>
|
||||
|
||||
You can also chain them, for example `LCTL(LALT(KC_DEL))`, `C(A(KC_DEL))`, or `LCA(KC_DEL)` all make a key that sends Control+Alt+Delete with a single keypress.
|
||||
|
||||
# Checking Modifier State {#checking-modifier-state}
|
||||
|
||||
|
||||
@@ -119,7 +119,7 @@ This is ideal for when you want ensure everything compiles successfully when pre
|
||||
## Examples
|
||||
|
||||
For a brief example, checkout [`/users/_example/`](https://github.com/qmk/qmk_firmware/tree/master/users/_example).
|
||||
For a more complicated example, checkout [`/users/drashna/`](https://github.com/qmk/qmk_firmware/tree/master/users/drashna)'s userspace.
|
||||
For more complicated examples, checkout the [`awesome-qmk` colletion](https://github.com/qmk/awesome-qmk).
|
||||
|
||||
|
||||
### Customized Functions
|
||||
|
||||
@@ -135,11 +135,11 @@ bool momentary_layer(bool key_down, void *layer) {
|
||||
return false;
|
||||
}
|
||||
|
||||
const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), //
|
||||
const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RALT), //
|
||||
.layers = ~(1 << LAYER_FN), //
|
||||
.suppressed_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), //
|
||||
.suppressed_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RALT), //
|
||||
.options = ko_option_no_unregister_on_other_key_down, //
|
||||
.negative_mod_mask = (uint8_t) ~(MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL)), //
|
||||
.negative_mod_mask = (uint8_t) ~(MOD_BIT(KC_RGUI) | MOD_BIT(KC_RALT)), //
|
||||
.custom_action = momentary_layer, //
|
||||
.context = (void *)LAYER_FN, //
|
||||
.trigger = KC_NO, //
|
||||
|
||||
@@ -23,8 +23,11 @@ MODULE 5+ --------+--+--------- PWR CONTROLLER
|
||||
CLK ------+------------ PIN
|
||||
```
|
||||
|
||||
## Driver Configuration {#driver-configuration}
|
||||
|
||||
## Busywait Version {#busywait-version}
|
||||
Driver selection can be configured in `rules.mk` as `PS2_DRIVER`, or in `info.json` as `ps2.driver`. Valid values are `busywait` (default), `interrupt`, `usart`, or `vendor`. See below for information on individual drivers.
|
||||
|
||||
### Busywait Driver {#busywait-driver}
|
||||
|
||||
Note: This is not recommended, you may encounter jerky movement or unsent inputs. Please use interrupt or USART version if possible.
|
||||
|
||||
@@ -45,7 +48,7 @@ In your keyboard config.h:
|
||||
#endif
|
||||
```
|
||||
|
||||
### Interrupt Version (AVR/ATMega32u4) {#interrupt-version-avr}
|
||||
### Interrupt Driver (AVR/ATMega32u4) {#interrupt-driver-avr}
|
||||
|
||||
The following example uses D2 for clock and D5 for data. You can use any INT or PCINT pin for clock, and any pin for data.
|
||||
|
||||
@@ -78,7 +81,7 @@ In your keyboard config.h:
|
||||
#endif
|
||||
```
|
||||
|
||||
### Interrupt Version (ARM chibios) {#interrupt-version-chibios}
|
||||
### Interrupt Driver (ARM chibios) {#interrupt-driver-chibios}
|
||||
|
||||
Pretty much any two pins can be used for the (software) interrupt variant on ARM cores. The example below uses A8 for clock, and A9 for data.
|
||||
|
||||
@@ -107,7 +110,7 @@ And in the ChibiOS specific `halconf.h`:
|
||||
#include_next <halconf.h>
|
||||
```
|
||||
|
||||
### USART Version {#usart-version}
|
||||
### USART Driver {#usart-driver}
|
||||
|
||||
To use USART on the ATMega32u4, you have to use PD5 for clock and PD2 for data. If one of those are unavailable, you need to use interrupt version.
|
||||
|
||||
@@ -159,7 +162,7 @@ In your keyboard config.h:
|
||||
#endif
|
||||
```
|
||||
|
||||
### RP2040 PIO Version {#rp2040-pio-version}
|
||||
### RP2040 PIO Driver {#rp2040-pio-driver}
|
||||
|
||||
The `PIO` subsystem is a Raspberry Pi RP2040 specific implementation, using the integrated PIO peripheral and is therefore only available on this MCU.
|
||||
|
||||
|
||||
@@ -486,7 +486,7 @@ This example sets the modifiers to be a specific color based on the layer state.
|
||||
bool rgb_matrix_indicators_advanced_user(uint8_t led_min, uint8_t led_max) {
|
||||
hsv_t hsv = {0, 255, 255};
|
||||
|
||||
if (layer_state_is(layer_state, 2)) {
|
||||
if (get_highest_layer(layer_state|default_layer_state) == 2) {
|
||||
hsv = (hsv_t){130, 255, 255};
|
||||
} else {
|
||||
hsv = (hsv_t){30, 255, 255};
|
||||
|
||||
@@ -170,20 +170,6 @@ typedef struct {
|
||||
uint16_t held;
|
||||
} tap_dance_tap_hold_t;
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
tap_dance_action_t *action;
|
||||
|
||||
switch (keycode) {
|
||||
case TD(CT_CLN): // list all tap dance keycodes with tap-hold configurations
|
||||
action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)];
|
||||
if (!record->event.pressed && action->state.count && !action->state.finished) {
|
||||
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
|
||||
tap_code16(tap_hold->tap);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
void tap_dance_tap_hold_finished(tap_dance_state_t *state, void *user_data) {
|
||||
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)user_data;
|
||||
|
||||
@@ -211,12 +197,29 @@ void tap_dance_tap_hold_reset(tap_dance_state_t *state, void *user_data) {
|
||||
}
|
||||
}
|
||||
|
||||
#define ACTION_TAP_DANCE_TAP_HOLD(tap, hold) \
|
||||
{ .fn = {NULL, tap_dance_tap_hold_finished, tap_dance_tap_hold_reset}, .user_data = (void *)&((tap_dance_tap_hold_t){tap, hold, 0}), }
|
||||
#define ACTION_TAP_DANCE_TAP_HOLD(tap, hold) \
|
||||
{ \
|
||||
.fn = {NULL, tap_dance_tap_hold_finished, tap_dance_tap_hold_reset}, \
|
||||
.user_data = (void *)&((tap_dance_tap_hold_t){tap, hold, 0}), \
|
||||
}
|
||||
|
||||
tap_dance_action_t tap_dance_actions[] = {
|
||||
[CT_CLN] = ACTION_TAP_DANCE_TAP_HOLD(KC_COLN, KC_SCLN),
|
||||
};
|
||||
|
||||
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
|
||||
tap_dance_action_t *action;
|
||||
|
||||
switch (keycode) {
|
||||
case TD(CT_CLN): // list all tap dance keycodes with tap-hold configurations
|
||||
action = &tap_dance_actions[QK_TAP_DANCE_GET_INDEX(keycode)];
|
||||
if (!record->event.pressed && action->state.count && !action->state.finished) {
|
||||
tap_dance_tap_hold_t *tap_hold = (tap_dance_tap_hold_t *)action->user_data;
|
||||
tap_code16(tap_hold->tap);
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
```
|
||||
|
||||
#### Example 4: 'Quad Function Tap-Dance' {#example-4}
|
||||
|
||||
114
docs/keycodes.md
114
docs/keycodes.md
@@ -176,11 +176,11 @@ See also: [Basic Keycodes](keycodes_basic)
|
||||
|`KC_LEFT_CTRL` |`KC_LCTL` |Left Control |✔ |✔ |✔ |
|
||||
|`KC_LEFT_SHIFT` |`KC_LSFT` |Left Shift |✔ |✔ |✔ |
|
||||
|`KC_LEFT_ALT` |`KC_LALT`, `KC_LOPT` |Left Alt (Option) |✔ |✔ |✔ |
|
||||
|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
|
||||
|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Super key) |✔ |✔ |✔ |
|
||||
|`KC_RIGHT_CTRL` |`KC_RCTL` |Right Control |✔ |✔ |✔ |
|
||||
|`KC_RIGHT_SHIFT` |`KC_RSFT` |Right Shift |✔ |✔ |✔ |
|
||||
|`KC_RIGHT_ALT` |`KC_RALT`, `KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) |✔ |✔ |✔ |
|
||||
|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta key) |✔ |✔ |✔ |
|
||||
|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Super key) |✔ |✔ |✔ |
|
||||
|`KC_SYSTEM_POWER` |`KC_PWR` |System Power Down |✔ |✔<sup>3</sup>|✔ |
|
||||
|`KC_SYSTEM_SLEEP` |`KC_SLEP` |System Sleep |✔ |✔<sup>3</sup>|✔ |
|
||||
|`KC_SYSTEM_WAKE` |`KC_WAKE` |System Wake | |✔<sup>3</sup>|✔ |
|
||||
@@ -658,58 +658,74 @@ See also: [Mouse Keys](features/mouse_keys)
|
||||
|
||||
See also: [Modifier Keys](feature_advanced_keycodes#modifier-keys)
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|----------|----------------------------------|------------------------------------------------------|
|
||||
|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` |
|
||||
|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` |
|
||||
|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` |
|
||||
|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` |
|
||||
|`RCTL(kc)`| |Hold Right Control and press `kc` |
|
||||
|`RSFT(kc)`| |Hold Right Shift and press `kc` |
|
||||
|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt (AltGr) and press `kc` |
|
||||
|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` |
|
||||
|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and Left GUI and press `kc` |
|
||||
|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` |
|
||||
|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` |
|
||||
|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` |
|
||||
|`LCA(kc)` | |Hold Left Control and Alt and press `kc` |
|
||||
|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` |
|
||||
|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt (AltGr) and press `kc` |
|
||||
|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` |
|
||||
|`LCAG(kc)`| |Hold Left Control, Alt and GUI and press `kc` |
|
||||
|`MEH(kc)` | |Hold Left Control, Shift and Alt and press `kc` |
|
||||
|`HYPR(kc)`| |Hold Left Control, Shift, Alt and GUI and press `kc` |
|
||||
|`KC_MEH` | |Left Control, Shift and Alt |
|
||||
|`KC_HYPR` | |Left Control, Shift, Alt and GUI |
|
||||
|Key |Aliases |Description |
|
||||
|----------|----------------------------------|-------------------------------------------------------------------|
|
||||
|`LCTL(kc)`|`C(kc)` |Hold Left Control and press `kc` |
|
||||
|`LSFT(kc)`|`S(kc)` |Hold Left Shift and press `kc` |
|
||||
|`LALT(kc)`|`A(kc)`, `LOPT(kc)` |Hold Left Alt and press `kc` |
|
||||
|`LGUI(kc)`|`G(kc)`, `LCMD(kc)`, `LWIN(kc)` |Hold Left GUI and press `kc` |
|
||||
|`LCS(kc)` | |Hold Left Control and Left Shift and press `kc` |
|
||||
|`LCA(kc)` | |Hold Left Control and Left Alt and press `kc` |
|
||||
|`LCG(kc)` | |Hold Left Control and Left GUI and press `kc` |
|
||||
|`LSA(kc)` | |Hold Left Shift and Left Alt and press `kc` |
|
||||
|`LSG(kc)` |`SGUI(kc)`, `SCMD(kc)`, `SWIN(kc)`|Hold Left Shift and Left GUI and press `kc` |
|
||||
|`LAG(kc)` | |Hold Left Alt and Left GUI and press `kc` |
|
||||
|`LCSG(kc)`| |Hold Left Control, Left Shift and Left GUI and press `kc` |
|
||||
|`LCAG(kc)`| |Hold Left Control, Left Alt and Left GUI and press `kc` |
|
||||
|`LSAG(kc)`| |Hold Left Shift, Left Alt and Left GUI and press `kc` |
|
||||
|`RCTL(kc)`| |Hold Right Control and press `kc` |
|
||||
|`RSFT(kc)`| |Hold Right Shift and press `kc` |
|
||||
|`RALT(kc)`|`ROPT(kc)`, `ALGR(kc)` |Hold Right Alt and press `kc` |
|
||||
|`RGUI(kc)`|`RCMD(kc)`, `RWIN(kc)` |Hold Right GUI and press `kc` |
|
||||
|`RCS(kc)` | |Hold Right Control and Right Shift and press `kc` |
|
||||
|`RCA(kc)` | |Hold Right Control and Right Alt and press `kc` |
|
||||
|`RCG(kc)` | |Hold Right Control and Right GUI and press `kc` |
|
||||
|`RSA(kc)` |`SAGR(kc)` |Hold Right Shift and Right Alt and press `kc` |
|
||||
|`RSG(kc)` | |Hold Right Shift and Right GUI and press `kc` |
|
||||
|`RAG(kc)` | |Hold Right Alt and Right GUI and press `kc` |
|
||||
|`RCSG(kc)`| |Hold Right Control, Right Shift and Right GUI and press `kc` |
|
||||
|`RCAG(kc)`| |Hold Right Control, Right Alt and Right GUI and press `kc` |
|
||||
|`RSAG(kc)`| |Hold Right Shift, Right Alt and Right GUI and press `kc` |
|
||||
|`MEH(kc)` | |Hold Left Control, Left Shift and Left Alt and press `kc` |
|
||||
|`HYPR(kc)`| |Hold Left Control, Left Shift, Left Alt and Left GUI and press `kc`|
|
||||
|`KC_MEH` | |Left Control, Left Shift and Left Alt |
|
||||
|`KC_HYPR` | |Left Control, Left Shift, Left Alt and Left GUI |
|
||||
|
||||
## Mod-Tap Keys {#mod-tap-keys}
|
||||
|
||||
See also: [Mod-Tap](mod_tap)
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|-------------|-----------------------------------------------------------------|--------------------------------------------------------------|
|
||||
|`MT(mod, kc)`| |`mod` when held, `kc` when tapped |
|
||||
|`LCTL_T(kc)` |`CTL_T(kc)` |Left Control when held, `kc` when tapped |
|
||||
|`LSFT_T(kc)` |`SFT_T(kc)` |Left Shift when held, `kc` when tapped |
|
||||
|`LALT_T(kc)` |`LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` |Left Alt when held, `kc` when tapped |
|
||||
|`LGUI_T(kc)` |`LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)`|Left GUI when held, `kc` when tapped |
|
||||
|`RCTL_T(kc)` | |Right Control when held, `kc` when tapped |
|
||||
|`RSFT_T(kc)` | |Right Shift when held, `kc` when tapped |
|
||||
|`RALT_T(kc)` |`ROPT_T(kc)`, `ALGR_T(kc)` |Right Alt (AltGr) when held, `kc` when tapped |
|
||||
|`RGUI_T(kc)` |`RCMD_T(kc)`, `RWIN_T(kc)` |Right GUI when held, `kc` when tapped |
|
||||
|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and GUI when held, `kc` when tapped |
|
||||
|`LAG_T(kc)` | |Left Alt and GUI when held, `kc` when tapped |
|
||||
|`RSG_T(kc)` | |Right Shift and GUI when held, `kc` when tapped |
|
||||
|`RAG_T(kc)` | |Right Alt and GUI when held, `kc` when tapped |
|
||||
|`LCA_T(kc)` | |Left Control and Alt when held, `kc` when tapped |
|
||||
|`LSA_T(kc)` | |Left Shift and Left Alt when held, `kc` when tapped |
|
||||
|`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt (AltGr) when held, `kc` when tapped |
|
||||
|`RCS_T(kc)` | |Right Control and Right Shift when held, `kc` when tapped |
|
||||
|`LCAG_T(kc)` | |Left Control, Alt and GUI when held, `kc` when tapped |
|
||||
|`RCAG_T(kc)` | |Right Control, Alt and GUI when held, `kc` when tapped |
|
||||
|`C_S_T(kc)` | |Left Control and Shift when held, `kc` when tapped |
|
||||
|`MEH_T(kc)` | |Left Control, Shift and Alt when held, `kc` when tapped |
|
||||
|`HYPR_T(kc)` |`ALL_T(kc)` |Left Control, Shift, Alt and GUI when held, `kc` when tapped - more info [here](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)|
|
||||
|Key |Aliases |Description |
|
||||
|-------------|-----------------------------------------------------------------|---------------------------------------------------------------------------|
|
||||
|`MT(mod, kc)`| |`mod` when held, `kc` when tapped |
|
||||
|`LCTL_T(kc)` |`CTL_T(kc)` |Left Control when held, `kc` when tapped |
|
||||
|`LSFT_T(kc)` |`SFT_T(kc)` |Left Shift when held, `kc` when tapped |
|
||||
|`LALT_T(kc)` |`ALT_T(kc)`, `LOPT_T(kc)`, `OPT_T(kc)` |Left Alt when held, `kc` when tapped |
|
||||
|`LGUI_T(kc)` |`GUI_T(kc)`, `LCMD_T(kc)`, `LWIN_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)`|Left GUI when held, `kc` when tapped |
|
||||
|`LCS_T(kc)` | |Left Control and Left Shift when held, `kc` when tapped |
|
||||
|`LCA_T(kc)` | |Left Control and Left Alt when held, `kc` when tapped |
|
||||
|`LCG_T(kc)` | |Left Control and Left GUI when held, `kc` when tapped |
|
||||
|`LSA_T(kc)` | |Left Shift and Left Alt when held, `kc` when tapped |
|
||||
|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and Left GUI when held, `kc` when tapped |
|
||||
|`LAG_T(kc)` | |Left Alt and Left GUI when held, `kc` when tapped |
|
||||
|`LCSG_T(kc)` | |Left Control, Left Shift and Left GUI when held, `kc` when tapped |
|
||||
|`LCAG_T(kc)` | |Left Control, Left Alt and Left GUI when held, `kc` when tapped |
|
||||
|`LSAG_T(kc)` | |Left Shift, Left Alt and Left GUI when held, `kc` when tapped |
|
||||
|`RCTL_T(kc)` | |Right Control when held, `kc` when tapped |
|
||||
|`RSFT_T(kc)` | |Right Shift when held, `kc` when tapped |
|
||||
|`RALT_T(kc)` |`ROPT_T(kc)`, `ALGR_T(kc)` |Right Alt when held, `kc` when tapped |
|
||||
|`RGUI_T(kc)` |`RCMD_T(kc)`, `RWIN_T(kc)` |Right GUI when held, `kc` when tapped |
|
||||
|`RCS_T(kc)` | |Right Control and Right Shift when held, `kc` when tapped |
|
||||
|`RCA_T(kc)` | |Right Control and Right Alt when held, `kc` when tapped |
|
||||
|`RCG_T(kc)` | |Right Control and Right GUI when held, `kc` when tapped |
|
||||
|`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt when held, `kc` when tapped |
|
||||
|`RSG_T(kc)` | |Right Shift and Right GUI when held, `kc` when tapped |
|
||||
|`RAG_T(kc)` | |Right Alt and Right GUI when held, `kc` when tapped |
|
||||
|`RCSG_T(kc)` | |Right Control, Right Shift and Right GUI when held, `kc` when tapped |
|
||||
|`RCAG_T(kc)` | |Right Control, Right Alt and Right GUI when held, `kc` when tapped |
|
||||
|`RSAG_T(kc)` | |Right Shift, Right Alt and Right GUI when held, `kc` when tapped |
|
||||
|`MEH_T(kc)` | |Left Control, Left Shift and Left Alt when held, `kc` when tapped |
|
||||
|`HYPR_T(kc)` |`ALL_T(kc)` |Left Control, Left Shift, Left Alt and Left GUI when held, `kc` when tapped|
|
||||
|
||||
## Tapping Term Keys {#tapping-term-keys}
|
||||
|
||||
|
||||
@@ -108,16 +108,16 @@ The basic set of keycodes are based on the [HID Keyboard/Keypad Usage Page (0x07
|
||||
|
||||
## Modifiers
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|----------------|-------------------------------|------------------------------------|
|
||||
|`KC_LEFT_CTRL` |`KC_LCTL` |Left Control |
|
||||
|`KC_LEFT_SHIFT` |`KC_LSFT` |Left Shift |
|
||||
|`KC_LEFT_ALT` |`KC_LALT`, `KC_LOPT` |Left Alt (Option) |
|
||||
|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Meta key) |
|
||||
|`KC_RIGHT_CTRL` |`KC_RCTL` |Right Control |
|
||||
|`KC_RIGHT_SHIFT`|`KC_RSFT` |Right Shift |
|
||||
|`KC_RIGHT_ALT` |`KC_RALT`, `KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) |
|
||||
|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta key)|
|
||||
|Key |Aliases |Description |
|
||||
|----------------|-------------------------------|-------------------------------------|
|
||||
|`KC_LEFT_CTRL` |`KC_LCTL` |Left Control |
|
||||
|`KC_LEFT_SHIFT` |`KC_LSFT` |Left Shift |
|
||||
|`KC_LEFT_ALT` |`KC_LALT`, `KC_LOPT` |Left Alt (Option) |
|
||||
|`KC_LEFT_GUI` |`KC_LGUI`, `KC_LCMD`, `KC_LWIN`|Left GUI (Windows/Command/Super key) |
|
||||
|`KC_RIGHT_CTRL` |`KC_RCTL` |Right Control |
|
||||
|`KC_RIGHT_SHIFT`|`KC_RSFT` |Right Shift |
|
||||
|`KC_RIGHT_ALT` |`KC_RALT`, `KC_ROPT`, `KC_ALGR`|Right Alt (Option/AltGr) |
|
||||
|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Super key)|
|
||||
|
||||
## International
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ If you own a board from one of the following vendors already, consider asking th
|
||||
| Chosfox | Selling L75 wired/wireless boards based on QMK without sources, just `via.json` provided. Raised on discord over multiple weeks without response. |
|
||||
| CIDOO | Selling wired boards based on QMK without sources, just `via.json` provided. |
|
||||
| ColorReco | Selling tri-mode boards based on QMK without sources. |
|
||||
| CrossDIY | Selling wired boards based on QMK without sources. |
|
||||
| Darmoshark | Selling wired boards based on QMK without sources, just `via.json` provided. |
|
||||
| Epomaker | Lots of historical keyboards with `via.json` but no corresponding sources. Wireless code for a small handful provided, pending core cleanup for QMK upstreaming. Most other boards have source nowhere to be seen. |
|
||||
| Ergokbd (IFKB) | At least their crkbd clone ships with QMK+Vial, seemingly refuses to disclose sources despite multiple customers requesting them. |
|
||||
@@ -50,7 +51,7 @@ If you own a board from one of the following vendors already, consider asking th
|
||||
| Womier | Selling tri-mode boards based on QMK without sources, attempted upstreaming crippled firmware without wireless. |
|
||||
| Wuque Studio | Selling wired and tri-mode boards based on QMK without sources, just `via.json` provided. |
|
||||
| XVX | Ambiguity on PRs -- marketing says wireless, PR author said wired-only. Seemingly intentionally deceptive. |
|
||||
| Yunzii | Selling tri-mode boards based on QMK without sources, just `via.json` provided. |
|
||||
| Yunzii | Selling tri-mode boards based on QMK without sources, just `via.json` provided. Refuses to release sources due to proprietary wireless driver, in direct violation of the GPL. |
|
||||
| Zuoya | Selling tri-mode boards based on QMK without sources, just `via.json` provided. |
|
||||
|
||||
::: danger Violations
|
||||
|
||||
@@ -9,11 +9,11 @@ The modifiers (`mod`) argument to the `MT()` macro are prefixed with `MOD_`, not
|
||||
|`MOD_LCTL`|Left Control |
|
||||
|`MOD_LSFT`|Left Shift |
|
||||
|`MOD_LALT`|Left Alt |
|
||||
|`MOD_LGUI`|Left GUI (Windows/Command/Meta key) |
|
||||
|`MOD_LGUI`|Left GUI (Windows/Command/Super key) |
|
||||
|`MOD_RCTL`|Right Control |
|
||||
|`MOD_RSFT`|Right Shift |
|
||||
|`MOD_RALT`|Right Alt (AltGr) |
|
||||
|`MOD_RGUI`|Right GUI (Windows/Command/Meta key) |
|
||||
|`MOD_RGUI`|Right GUI (Windows/Command/Super key) |
|
||||
|`MOD_HYPR`|Hyper (Left Control, Shift, Alt and GUI)|
|
||||
|`MOD_MEH` |Meh (Left Control, Shift, and Alt) |
|
||||
|
||||
@@ -27,29 +27,38 @@ This key would activate Left Control and Left Shift when held, and send Escape w
|
||||
|
||||
For convenience, QMK includes some Mod-Tap shortcuts to make common combinations more compact in your keymap:
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|------------|-----------------------------------------------------------------|--------------------------------------------------------------|
|
||||
|`LCTL_T(kc)`|`CTL_T(kc)` |Left Control when held, `kc` when tapped |
|
||||
|`LSFT_T(kc)`|`SFT_T(kc)` |Left Shift when held, `kc` when tapped |
|
||||
|`LALT_T(kc)`|`LOPT_T(kc)`, `ALT_T(kc)`, `OPT_T(kc)` |Left Alt when held, `kc` when tapped |
|
||||
|`LGUI_T(kc)`|`LCMD_T(kc)`, `LWIN_T(kc)`, `GUI_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)`|Left GUI when held, `kc` when tapped |
|
||||
|`RCTL_T(kc)`| |Right Control when held, `kc` when tapped |
|
||||
|`RSFT_T(kc)`| |Right Shift when held, `kc` when tapped |
|
||||
|`RALT_T(kc)`|`ROPT_T(kc)`, `ALGR_T(kc)` |Right Alt when held, `kc` when tapped |
|
||||
|`RGUI_T(kc)`|`RCMD_T(kc)`, `RWIN_T(kc)` |Right GUI when held, `kc` when tapped |
|
||||
|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and GUI when held, `kc` when tapped |
|
||||
|`LAG_T(kc)` | |Left Alt and GUI when held, `kc` when tapped |
|
||||
|`RSG_T(kc)` | |Right Shift and GUI when held, `kc` when tapped |
|
||||
|`RAG_T(kc)` | |Right Alt and GUI when held, `kc` when tapped |
|
||||
|`LCA_T(kc)` | |Left Control and Alt when held, `kc` when tapped |
|
||||
|`LSA_T(kc)` | |Left Shift and Alt when held, `kc` when tapped |
|
||||
|`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt (AltGr) when held, `kc` when tapped |
|
||||
|`RCS_T(kc)` | |Right Control and Right Shift when held, `kc` when tapped |
|
||||
|`LCAG_T(kc)`| |Left Control, Alt and GUI when held, `kc` when tapped |
|
||||
|`RCAG_T(kc)`| |Right Control, Alt and GUI when held, `kc` when tapped |
|
||||
|`C_S_T(kc)` | |Left Control and Shift when held, `kc` when tapped |
|
||||
|`MEH_T(kc)` | |Left Control, Shift and Alt when held, `kc` when tapped |
|
||||
|`HYPR_T(kc)`|`ALL_T(kc)` |Left Control, Shift, Alt and GUI when held, `kc` when tapped - more info [here](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/)|
|
||||
|Key |Aliases |Description |
|
||||
|------------|-----------------------------------------------------------------|---------------------------------------------------------------------------------------|
|
||||
|`LCTL_T(kc)`|`CTL_T(kc)` |Left Control when held, `kc` when tapped |
|
||||
|`LSFT_T(kc)`|`SFT_T(kc)` |Left Shift when held, `kc` when tapped |
|
||||
|`LALT_T(kc)`|`ALT_T(kc)`, `LOPT_T(kc)`, `OPT_T(kc)` |Left Alt when held, `kc` when tapped |
|
||||
|`LGUI_T(kc)`|`GUI_T(kc)`, `LCMD_T(kc)`, `LWIN_T(kc)`, `CMD_T(kc)`, `WIN_T(kc)`|Left GUI when held, `kc` when tapped |
|
||||
|`LCS_T(kc)` | |Left Control and Left Shift when held, `kc` when tapped |
|
||||
|`LCA_T(kc)` | |Left Control and Left Alt when held, `kc` when tapped |
|
||||
|`LCG_T(kc)` | |Left Control and Left GUI when held, `kc` when tapped |
|
||||
|`LSA_T(kc)` | |Left Shift and Left Alt when held, `kc` when tapped |
|
||||
|`LSG_T(kc)` |`SGUI_T(kc)`, `SCMD_T(kc)`, `SWIN_T(kc)` |Left Shift and Left GUI when held, `kc` when tapped |
|
||||
|`LAG_T(kc)` | |Left Alt and Left GUI when held, `kc` when tapped |
|
||||
|`LCSG_T(kc)`| |Left Control, Left Shift and Left GUI when held, `kc` when tapped |
|
||||
|`LCAG_T(kc)`| |Left Control, Left Alt and Left GUI when held, `kc` when tapped |
|
||||
|`LSAG_T(kc)`| |Left Shift, Left Alt and Left GUI when held, `kc` when tapped |
|
||||
|`RCTL_T(kc)`| |Right Control when held, `kc` when tapped |
|
||||
|`RSFT_T(kc)`| |Right Shift when held, `kc` when tapped |
|
||||
|`RALT_T(kc)`|`ROPT_T(kc)`, `ALGR_T(kc)` |Right Alt when held, `kc` when tapped |
|
||||
|`RGUI_T(kc)`|`RCMD_T(kc)`, `RWIN_T(kc)` |Right GUI when held, `kc` when tapped |
|
||||
|`RCS_T(kc)` | |Right Control and Right Shift when held, `kc` when tapped |
|
||||
|`RCA_T(kc)` | |Right Control and Right Alt when held, `kc` when tapped |
|
||||
|`RCG_T(kc)` | |Right Control and Right GUI when held, `kc` when tapped |
|
||||
|`RSA_T(kc)` |`SAGR_T(kc)` |Right Shift and Right Alt when held, `kc` when tapped |
|
||||
|`RSG_T(kc)` | |Right Shift and Right GUI when held, `kc` when tapped |
|
||||
|`RAG_T(kc)` | |Right Alt and Right GUI when held, `kc` when tapped |
|
||||
|`RCSG_T(kc)`| |Right Control, Right Shift and Right GUI when held, `kc` when tapped |
|
||||
|`RCAG_T(kc)`| |Right Control, Right Alt and Right GUI when held, `kc` when tapped |
|
||||
|`RSAG_T(kc)`| |Right Shift, Right Alt and Right GUI when held, `kc` when tapped |
|
||||
|`MEH_T(kc)` | |Left Control, Left Shift and Left Alt when held, `kc` when tapped |
|
||||
|`HYPR_T(kc)`|`ALL_T(kc)` |Left Control, Left Shift, Left Alt and Left GUI when held, `kc` when tapped<sup>1</sup>|
|
||||
|
||||
<sup>1. More information on the Hyper key can be found on [this blog post by Brett Terpstra](https://brettterpstra.com/2012/12/08/a-useful-caps-lock-key/).</sup>
|
||||
|
||||
## Caveats
|
||||
|
||||
|
||||
@@ -602,7 +602,7 @@ either `"L"`, `"R"`, or `"*"`. Note that if `"layouts"` contains multiple
|
||||
layouts, only the first one is read. For example:
|
||||
|
||||
```json
|
||||
{"matrix": [5, 6], "x": 0, "y": 5.5, "w": 1.25, "hand", "*"},
|
||||
{"matrix": [5, 6], "x": 0, "y": 5.5, "w": 1.25, "hand": "*"},
|
||||
```
|
||||
|
||||
Alternatively, handedness may be defined functionally with
|
||||
|
||||
@@ -33,6 +33,9 @@ enum {
|
||||
#ifdef RGB_MATRIX_CUSTOM_USER
|
||||
# include "rgb_matrix_user.inc"
|
||||
#endif
|
||||
#if defined(COMMUNITY_MODULES_ENABLE) && __has_include("rgb_matrix_community_modules.inc")
|
||||
# include "rgb_matrix_community_modules.inc"
|
||||
#endif
|
||||
};
|
||||
|
||||
#define RGB_MATRIX_EFFECT(x) \
|
||||
@@ -49,6 +52,9 @@ const char* rgb_matrix_name(uint8_t effect) {
|
||||
#endif
|
||||
#ifdef RGB_MATRIX_CUSTOM_USER
|
||||
# include "rgb_matrix_user.inc"
|
||||
#endif
|
||||
#if defined(COMMUNITY_MODULES_ENABLE) && __has_include("rgb_matrix_community_modules.inc")
|
||||
# include "rgb_matrix_community_modules.inc"
|
||||
#endif
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
|
||||
@@ -6,8 +6,8 @@ The lulu is what the ergo community has needed for a long time, a high-end aesth
|
||||
|
||||
|
||||
* Keyboard Maintainer: [Boardsource](https://github.com/daysgobye)
|
||||
* Hardware Supported: lulu v1
|
||||
* Hardware Availability: this keyboard is available from the [Boardsource store](https://boardsource.xyz/store/61d0b772319a1f3cc53ba2fb)
|
||||
* Hardware Supported: lulu v1/v2, lily pad v2
|
||||
* Hardware Availability: this keyboard is available from the [Boardsource store](https://boardsource.xyz/products/lily-pad-pcb)
|
||||
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
@@ -21,7 +21,7 @@ Flashing example for this keyboard:
|
||||
make boardsource/lulu/avr:default:flash
|
||||
|
||||
|
||||
Compile `rp2040` firmware if you purchased PCB in lulu group buy (integrated microcontroller).
|
||||
Compile `rp2040` firmware if you purchased PCB in lulu group buy or lily pad (integrated microcontroller).
|
||||
Compile `avr` firmware if your PCB uses a drop-in microcontroller like Pro Micro.
|
||||
|
||||
|
||||
|
||||
@@ -30,13 +30,13 @@
|
||||
"layouts": {
|
||||
"LAYOUT_wkl": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 5.25, "y": 0},
|
||||
{"matrix": [0, 0], "x": 0, "y": 0.25},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0.25},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0.25},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0.25},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0.25},
|
||||
|
||||
{"matrix": [0, 1], "x": 0, "y": 0.25},
|
||||
{"matrix": [0, 2], "x": 1, "y": 0.25},
|
||||
{"matrix": [0, 3], "x": 2, "y": 0.25},
|
||||
{"matrix": [0, 4], "x": 3, "y": 0.25},
|
||||
{"matrix": [0, 5], "x": 4, "y": 0.25},
|
||||
{"matrix": [0, 5], "x": 5.25, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1.25},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1.25},
|
||||
@@ -55,13 +55,13 @@
|
||||
},
|
||||
"LAYOUT_bar": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 5.25, "y": 0},
|
||||
{"matrix": [0, 0], "x": 0, "y": 0.25},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0.25},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0.25},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0.25},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0.25},
|
||||
|
||||
{"matrix": [0, 1], "x": 0, "y": 0.25},
|
||||
{"matrix": [0, 2], "x": 1, "y": 0.25},
|
||||
{"matrix": [0, 3], "x": 2, "y": 0.25},
|
||||
{"matrix": [0, 4], "x": 3, "y": 0.25},
|
||||
{"matrix": [0, 5], "x": 4, "y": 0.25},
|
||||
{"matrix": [0, 5], "x": 5.25, "y": 0},
|
||||
|
||||
{"matrix": [1, 0], "x": 0, "y": 1.25},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1.25},
|
||||
@@ -71,7 +71,7 @@
|
||||
|
||||
{"matrix": [1, 5], "x": 5.25, "y": 1.25},
|
||||
|
||||
{"matrix": [2, 0], "x": 0, "y": 2.25, "w": 2.75},
|
||||
{"matrix": [2, 1], "x": 0, "y": 2.25, "w": 2.75},
|
||||
{"matrix": [2, 3], "x": 2.75, "y": 2.25, "w": 2.25},
|
||||
|
||||
{"matrix": [2, 5], "x": 5.25, "y": 2.25}
|
||||
|
||||
@@ -204,26 +204,26 @@ led_config_t g_led_config = {{
|
||||
{196, 64}, // 65 Down
|
||||
{210, 64}, // 66 Right
|
||||
|
||||
{0, 0}, // 69 LED 1
|
||||
{0, 7}, // 70 LED 2
|
||||
{0, 14}, // 71 LED 3
|
||||
{0, 21}, // 72 LED 4
|
||||
{0, 28}, // 73 LED 5
|
||||
{0, 35}, // 74 LED 6
|
||||
{0, 42}, // 75 LED 7
|
||||
{0, 49}, // 76 LED 8
|
||||
{0, 56}, // 77 LED 9
|
||||
{0, 64}, // 78 LED 10
|
||||
{224, 0 }, // 79 LED 11
|
||||
{224, 7 }, // 80 LED 12
|
||||
{224, 14}, // 81 LED 13
|
||||
{224, 21}, // 82 LED 14
|
||||
{224, 28}, // 83 LED 15
|
||||
{224, 35}, // 84 LED 16
|
||||
{224, 42}, // 85 LED 17
|
||||
{224, 49}, // 86 LED 18
|
||||
{224, 56}, // 87 LED 19
|
||||
{224, 64}, // 88 LED 20
|
||||
{224, 0 }, // 69 LED 1
|
||||
{224, 7 }, // 70 LED 2
|
||||
{224, 14}, // 71 LED 3
|
||||
{224, 21}, // 72 LED 4
|
||||
{224, 28}, // 73 LED 5
|
||||
{224, 35}, // 74 LED 6
|
||||
{224, 42}, // 75 LED 7
|
||||
{224, 49}, // 76 LED 8
|
||||
{224, 56}, // 77 LED 9
|
||||
{224, 64}, // 78 LED 10
|
||||
{0, 0 }, // 79 LED 11
|
||||
{0, 7 }, // 80 LED 12
|
||||
{0, 14}, // 81 LED 13
|
||||
{0, 21}, // 82 LED 14
|
||||
{0, 28}, // 83 LED 15
|
||||
{0, 35}, // 84 LED 16
|
||||
{0, 42}, // 85 LED 17
|
||||
{0, 49}, // 86 LED 18
|
||||
{0, 56}, // 87 LED 19
|
||||
{0, 64}, // 88 LED 20
|
||||
}, {
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
|
||||
@@ -206,26 +206,26 @@ led_config_t g_led_config = {{
|
||||
{196, 64}, // 66 Down
|
||||
{210, 64}, // 67 Right
|
||||
|
||||
{0, 0}, // 68 LED 1
|
||||
{0, 7}, // 69 LED 2
|
||||
{0, 14}, // 70 LED 3
|
||||
{0, 21}, // 71 LED 4
|
||||
{0, 28}, // 72 LED 5
|
||||
{0, 35}, // 73 LED 6
|
||||
{0, 42}, // 74 LED 7
|
||||
{0, 49}, // 75 LED 8
|
||||
{0, 56}, // 76 LED 9
|
||||
{0, 64}, // 77 LED 10
|
||||
{224, 0 }, // 78 LED 11
|
||||
{224, 7 }, // 79 LED 12
|
||||
{224, 14}, // 80 LED 13
|
||||
{224, 21}, // 81 LED 14
|
||||
{224, 28}, // 82 LED 15
|
||||
{224, 35}, // 83 LED 16
|
||||
{224, 42}, // 84 LED 17
|
||||
{224, 49}, // 85 LED 18
|
||||
{224, 56}, // 86 LED 19
|
||||
{224, 64}, // 87 LED 20
|
||||
{224, 0 }, // 68 LED 1
|
||||
{224, 7 }, // 69 LED 2
|
||||
{224, 14}, // 70 LED 3
|
||||
{224, 21}, // 71 LED 4
|
||||
{224, 28}, // 72 LED 5
|
||||
{224, 35}, // 73 LED 6
|
||||
{224, 42}, // 74 LED 7
|
||||
{224, 49}, // 75 LED 8
|
||||
{224, 56}, // 76 LED 9
|
||||
{224, 64}, // 77 LED 10
|
||||
{0, 0 }, // 78 LED 11
|
||||
{0, 7 }, // 79 LED 12
|
||||
{0, 14}, // 80 LED 13
|
||||
{0, 21}, // 81 LED 14
|
||||
{0, 28}, // 82 LED 15
|
||||
{0, 35}, // 83 LED 16
|
||||
{0, 42}, // 84 LED 17
|
||||
{0, 49}, // 85 LED 18
|
||||
{0, 56}, // 86 LED 19
|
||||
{0, 64}, // 87 LED 20
|
||||
}, {
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
|
||||
|
||||
33
keyboards/handwired/yodadistro/macro/keyboard.json
Normal file
33
keyboards/handwired/yodadistro/macro/keyboard.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"manufacturer": "Raspberry Pi",
|
||||
"keyboard_name": "KBP 8-Key Macro Pad",
|
||||
"maintainer": "yodadistro",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"matrix_pins": {
|
||||
"direct": [
|
||||
["GP3", "GP5", "GP7", "GP9"],
|
||||
["GP2", "GP4", "GP6", "GP8"]
|
||||
]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x2044",
|
||||
"vid": "0x1209"
|
||||
},
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"keyboard": "handwired/yodadistro/macro",
|
||||
"keymap": "default",
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"KC_A", "KC_B", "KC_C", "KC_D",
|
||||
"KC_E", "KC_F", "KC_G", "KC_H"
|
||||
]
|
||||
]
|
||||
}
|
||||
25
keyboards/handwired/yodadistro/macro/readme.md
Normal file
25
keyboards/handwired/yodadistro/macro/readme.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Yoda Distro
|
||||
|
||||

|
||||
|
||||
Scratch made direct wire pin 8-Key (4x2) Macro Pad using a Raspberry Pi Pico (2040).
|
||||
|
||||
* Keyboard Maintainer: [YodaDistro](https://github.com/YodaDistro)
|
||||
* Hardware Supported: Raspberry Pi Pico (2040)
|
||||
* Hardware Availability: 3D Printed Design (https://github.com/YodaDistro/MacroPad)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make handwired/yodadistro/macro:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make handwired/yodadistro/macro: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
|
||||
|
||||
* **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
|
||||
@@ -313,11 +313,7 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
|
||||
return false;
|
||||
}
|
||||
if (index == 0) {
|
||||
default_layer_set(1UL << (active ? 2 : 0));
|
||||
}
|
||||
if(active){
|
||||
keymap_config.no_gui = 0;
|
||||
eeconfig_update_keymap(&keymap_config);
|
||||
default_layer_set(1UL << (active ? MAC_B : WIN_B));
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B14", "pin_b": "B13", "resolution": 4}
|
||||
{"pin_a": "B13", "pin_b": "B14", "resolution": 4}
|
||||
]
|
||||
},
|
||||
"qmk": {
|
||||
|
||||
@@ -64,10 +64,10 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[WIN_B] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
|
||||
[WIN_FN] = { ENCODER_CCW_CW(RM_SATU, RM_SATD) },
|
||||
[MAC_B] = { ENCODER_CCW_CW(KC_VOLU, KC_VOLD) },
|
||||
[MAC_FN] = { ENCODER_CCW_CW(RM_SATU, RM_SATD) },
|
||||
[WIN_B] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[WIN_FN] = { ENCODER_CCW_CW(RM_SATD, RM_SATU) },
|
||||
[MAC_B] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[MAC_FN] = { ENCODER_CCW_CW(RM_SATD, RM_SATU) },
|
||||
};
|
||||
#endif
|
||||
|
||||
|
||||
1
keyboards/inland/kb83/keymaps/default/rules.mk
Normal file
1
keyboards/inland/kb83/keymaps/default/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
28
keyboards/kinesis/kint32/chconf.h
Normal file
28
keyboards/kinesis/kint32/chconf.h
Normal file
@@ -0,0 +1,28 @@
|
||||
/* Copyright 2020 QMK
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/*
|
||||
* This file was auto-generated by:
|
||||
* `qmk chibios-confmigrate -i keyboards/kinesis/kint32/chconf.h -r platforms/chibios/common/configs/chconf.h`
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define CH_CFG_ST_TIMEDELTA 0
|
||||
|
||||
#define CH_CFG_TIME_QUANTUM 20
|
||||
|
||||
#include_next <chconf.h>
|
||||
19
keyboards/kinesis/kint32/config.h
Normal file
19
keyboards/kinesis/kint32/config.h
Normal file
@@ -0,0 +1,19 @@
|
||||
/* Copyright 2020 QMK
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define EEPROM_SIZE 2048
|
||||
125
keyboards/kinesis/kint32/keyboard.json
Normal file
125
keyboards/kinesis/kint32/keyboard.json
Normal file
@@ -0,0 +1,125 @@
|
||||
{
|
||||
"manufacturer": "https://github.com/stapelberg",
|
||||
"keyboard_name": "kinT (kint32)",
|
||||
"bootloader": "halfkay",
|
||||
"build": {
|
||||
"debounce_type": "sym_eager_pk"
|
||||
},
|
||||
"debounce": 20,
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"command": false,
|
||||
"console": false,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "C7",
|
||||
"on_state": 0
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B3", "D1", "C0", "D5", "C1", "B2", "D4"],
|
||||
"rows": ["D3", "C3", "C4", "C6", "D2", "B0", "D7", "A12", "A13", "B17", "B16", "D0", "B1", "C2", "D6"]
|
||||
},
|
||||
"processor": "MK20DX256",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"max_power": 100,
|
||||
"pid": "0x345C",
|
||||
"vid": "0x1209"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [12, 0], "x": 0, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [13, 0], "x": 0.7, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [14, 0], "x": 1.39, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [12, 1], "x": 2.09, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [13, 1], "x": 2.78, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [14, 1], "x": 3.48, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [12, 2], "x": 4.17, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [13, 2], "x": 4.87, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [14, 2], "x": 5.56, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [12, 3], "x": 9.25, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [13, 3], "x": 9.95, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [14, 3], "x": 10.64, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [12, 4], "x": 11.34, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [13, 4], "x": 12.03, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [14, 4], "x": 12.73, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [12, 5], "x": 13.42, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [14, 5], "x": 14.12, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [13, 5], "x": 14.81, "y": 0, "w": 0.69, "h": 0.85},
|
||||
{"matrix": [0, 0], "x": 0, "y": 1.25, "w": 1.25},
|
||||
{"matrix": [1, 0], "x": 1.25, "y": 1.25},
|
||||
{"matrix": [2, 0], "x": 2.25, "y": 1},
|
||||
{"matrix": [3, 0], "x": 3.25, "y": 1},
|
||||
{"matrix": [4, 0], "x": 4.25, "y": 1},
|
||||
{"matrix": [5, 0], "x": 5.25, "y": 1},
|
||||
{"matrix": [6, 0], "x": 9.25, "y": 1},
|
||||
{"matrix": [7, 0], "x": 10.25, "y": 1},
|
||||
{"matrix": [8, 0], "x": 11.25, "y": 1},
|
||||
{"matrix": [9, 0], "x": 12.25, "y": 1},
|
||||
{"matrix": [10, 0], "x": 13.25, "y": 1.25},
|
||||
{"matrix": [11, 0], "x": 14.25, "y": 1.25, "w": 1.25},
|
||||
{"matrix": [0, 1], "x": 0, "y": 2.25, "w": 1.25},
|
||||
{"matrix": [1, 1], "x": 1.25, "y": 2.25},
|
||||
{"matrix": [2, 1], "x": 2.25, "y": 2},
|
||||
{"matrix": [3, 1], "x": 3.25, "y": 2},
|
||||
{"matrix": [4, 1], "x": 4.25, "y": 2},
|
||||
{"matrix": [5, 1], "x": 5.25, "y": 2},
|
||||
{"matrix": [6, 1], "x": 9.25, "y": 2},
|
||||
{"matrix": [7, 1], "x": 10.25, "y": 2},
|
||||
{"matrix": [8, 1], "x": 11.25, "y": 2},
|
||||
{"matrix": [9, 1], "x": 12.25, "y": 2},
|
||||
{"matrix": [10, 1], "x": 13.25, "y": 2.25},
|
||||
{"matrix": [11, 1], "x": 14.25, "y": 2.25, "w": 1.25},
|
||||
{"matrix": [0, 2], "x": 0, "y": 3.25, "w": 1.25},
|
||||
{"matrix": [1, 2], "x": 1.25, "y": 3.25},
|
||||
{"matrix": [2, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 2], "x": 3.25, "y": 3},
|
||||
{"matrix": [4, 2], "x": 4.25, "y": 3},
|
||||
{"matrix": [5, 2], "x": 5.25, "y": 3},
|
||||
{"matrix": [6, 2], "x": 9.25, "y": 3},
|
||||
{"matrix": [7, 2], "x": 10.25, "y": 3},
|
||||
{"matrix": [8, 2], "x": 11.25, "y": 3},
|
||||
{"matrix": [9, 2], "x": 12.25, "y": 3},
|
||||
{"matrix": [10, 2], "x": 13.25, "y": 3.25},
|
||||
{"matrix": [11, 2], "x": 14.25, "y": 3.25, "w": 1.25},
|
||||
{"matrix": [0, 3], "x": 0, "y": 4.25, "w": 1.25},
|
||||
{"matrix": [1, 3], "x": 1.25, "y": 4.25},
|
||||
{"matrix": [2, 3], "x": 2.25, "y": 4},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 4},
|
||||
{"matrix": [4, 3], "x": 4.25, "y": 4},
|
||||
{"matrix": [5, 3], "x": 5.25, "y": 4},
|
||||
{"matrix": [6, 3], "x": 9.25, "y": 4},
|
||||
{"matrix": [7, 3], "x": 10.25, "y": 4},
|
||||
{"matrix": [8, 3], "x": 11.25, "y": 4},
|
||||
{"matrix": [9, 3], "x": 12.25, "y": 4},
|
||||
{"matrix": [10, 3], "x": 13.25, "y": 4.25},
|
||||
{"matrix": [11, 3], "x": 14.25, "y": 4.25, "w": 1.25},
|
||||
{"matrix": [1, 4], "x": 1.25, "y": 5.25},
|
||||
{"matrix": [2, 4], "x": 2.25, "y": 5},
|
||||
{"matrix": [3, 4], "x": 3.25, "y": 5},
|
||||
{"matrix": [5, 4], "x": 4.25, "y": 5},
|
||||
{"matrix": [6, 4], "x": 10.25, "y": 5},
|
||||
{"matrix": [8, 4], "x": 11.25, "y": 5},
|
||||
{"matrix": [9, 4], "x": 12.25, "y": 5},
|
||||
{"matrix": [10, 4], "x": 13.25, "y": 5.25},
|
||||
{"matrix": [5, 6], "x": 5.25, "y": 6},
|
||||
{"matrix": [5, 5], "x": 6.25, "y": 6},
|
||||
{"matrix": [9, 6], "x": 8.25, "y": 6},
|
||||
{"matrix": [8, 5], "x": 9.25, "y": 6},
|
||||
{"matrix": [3, 5], "x": 6.25, "y": 7},
|
||||
{"matrix": [8, 6], "x": 8.25, "y": 7},
|
||||
{"matrix": [3, 6], "x": 4.25, "y": 7, "h": 2},
|
||||
{"matrix": [4, 6], "x": 5.25, "y": 7, "h": 2},
|
||||
{"matrix": [2, 5], "x": 6.25, "y": 8},
|
||||
{"matrix": [6, 6], "x": 8.25, "y": 8},
|
||||
{"matrix": [7, 5], "x": 9.25, "y": 7, "h": 2},
|
||||
{"matrix": [6, 5], "x": 10.25, "y": 7, "h": 2}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
27
keyboards/kinesis/kint32/kint32.c
Normal file
27
keyboards/kinesis/kint32/kint32.c
Normal file
@@ -0,0 +1,27 @@
|
||||
/* Copyright 2020 QMK
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#define LED_POWER C5
|
||||
|
||||
void keyboard_pre_init_kb(void) {
|
||||
// Turn on the Teensy 3.2 Power LED:
|
||||
gpio_set_pin_output(LED_POWER);
|
||||
gpio_write_pin_high(LED_POWER);
|
||||
|
||||
keyboard_pre_init_user();
|
||||
}
|
||||
51
keyboards/kinesis/kint32/mcuconf.h
Normal file
51
keyboards/kinesis/kint32/mcuconf.h
Normal file
@@ -0,0 +1,51 @@
|
||||
/*
|
||||
ChibiOS - Copyright (C) 2006..2015 Giovanni Di Sirio
|
||||
|
||||
Licensed under the Apache License, Version 2.0 (the "License");
|
||||
you may not use this file except in compliance with the License.
|
||||
You may obtain a copy of the License at
|
||||
|
||||
http://www.apache.org/licenses/LICENSE-2.0
|
||||
|
||||
Unless required by applicable law or agreed to in writing, software
|
||||
distributed under the License is distributed on an "AS IS" BASIS,
|
||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
#ifndef _MCUCONF_H_
|
||||
#define _MCUCONF_H_
|
||||
|
||||
#define K20x_MCUCONF
|
||||
|
||||
/*
|
||||
* HAL driver system settings.
|
||||
*/
|
||||
/* PEE mode - 48MHz system clock driven by (16 MHz) external crystal. */
|
||||
#define KINETIS_MCG_MODE KINETIS_MCG_MODE_PEE
|
||||
#define KINETIS_PLLCLK_FREQUENCY 96000000UL
|
||||
#define KINETIS_SYSCLK_FREQUENCY 48000000UL
|
||||
|
||||
/*
|
||||
* SERIAL driver system settings.
|
||||
*/
|
||||
#define KINETIS_SERIAL_USE_UART0 TRUE
|
||||
|
||||
/*
|
||||
* USB driver settings
|
||||
*/
|
||||
#define KINETIS_USB_USE_USB0 TRUE
|
||||
|
||||
/* Need to redefine this, since the default (configured for K20x) might not apply
|
||||
* 2 for Teensy LC
|
||||
* 5 for Teensy 3.x */
|
||||
#define KINETIS_USB_USB0_IRQ_PRIORITY 5
|
||||
|
||||
/*
|
||||
* I2C driver settings
|
||||
*/
|
||||
#define KINETIS_I2C_USE_I2C0 TRUE
|
||||
#define KINETIS_I2C_I2C0_PRIORITY 4
|
||||
|
||||
#endif /* _MCUCONF_H_ */
|
||||
3
keyboards/kinesis/kint32/readme.md
Normal file
3
keyboards/kinesis/kint32/readme.md
Normal file
@@ -0,0 +1,3 @@
|
||||
# kinesis_kint32 keyboard firmware
|
||||
|
||||
Please see https://github.com/kinx-project/kint for details.
|
||||
8
keyboards/koca58/board.h
Normal file
8
keyboards/koca58/board.h
Normal file
@@ -0,0 +1,8 @@
|
||||
/* Copyright 2025 oxnh */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#pragma once
|
||||
|
||||
#include_next <board.h>
|
||||
|
||||
#undef STM32_HSECLK
|
||||
#define STM32_HSECLK 12000000U
|
||||
10
keyboards/koca58/config.h
Normal file
10
keyboards/koca58/config.h
Normal file
@@ -0,0 +1,10 @@
|
||||
/* Copyright 2025 oxnh */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#pragma once
|
||||
|
||||
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
|
||||
#define SERIAL_USART_TX_PIN C10 // USART TX pin
|
||||
#define SERIAL_USART_RX_PIN C11 // USART RX pin
|
||||
#define SERIAL_USART_DRIVER SD3
|
||||
#define USART3_PARTIALREMAP
|
||||
|
||||
7
keyboards/koca58/halconf.h
Normal file
7
keyboards/koca58/halconf.h
Normal file
@@ -0,0 +1,7 @@
|
||||
/* Copyright 2025 oxnh */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_SERIAL TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
100
keyboards/koca58/keyboard.json
Normal file
100
keyboards/koca58/keyboard.json
Normal file
@@ -0,0 +1,100 @@
|
||||
{
|
||||
"manufacturer": "oxnh",
|
||||
"keyboard_name": "Koca58",
|
||||
"maintainer": "oxnh",
|
||||
"bootloader": "stm32duino",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"direct": [["A10", "A9", "A8", "C9", "C8", "C7", "B2", "B13", "B12", "B14", "B15", "C6", "A6", "A7", "C4", "C5", "B0", "B1", "B5", "A0", "A1", "A2", "A3", "A4", "A5", "C14", "C13", "B7", "B6"]]
|
||||
},
|
||||
"processor": "STM32F103",
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"handedness": {
|
||||
"pin": "C15"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"right": {
|
||||
"direct": [["A10", "A9", "A8", "C9", "C8", "C7", "B2", "B13", "B12", "B14", "B15", "C6", "A6", "A7", "C4", "C5", "B0", "B1", "C14", "A0", "A1", "A2", "A3", "A4", "A5", "C13", "B7", "B6", "B5"]]
|
||||
}
|
||||
},
|
||||
"serial": {
|
||||
"driver": "usart"
|
||||
}
|
||||
},
|
||||
"url": "https://github.com/Hardware7253/Koca58",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x5106",
|
||||
"vid": "0x4C17"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0.45},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0.375},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0.125},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0.125},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0.25},
|
||||
{"matrix": [1, 0], "x": 10, "y": 0.25},
|
||||
{"matrix": [1, 1], "x": 11, "y": 0.125},
|
||||
{"matrix": [1, 2], "x": 12, "y": 0},
|
||||
{"matrix": [1, 3], "x": 13, "y": 0.125},
|
||||
{"matrix": [1, 4], "x": 14, "y": 0.375},
|
||||
{"matrix": [1, 5], "x": 15, "y": 0.45},
|
||||
{"matrix": [0, 6], "x": 0, "y": 1.45},
|
||||
{"matrix": [0, 7], "x": 1, "y": 1.375},
|
||||
{"matrix": [0, 8], "x": 2, "y": 1.125},
|
||||
{"matrix": [0, 9], "x": 3, "y": 1},
|
||||
{"matrix": [0, 10], "x": 4, "y": 1.125},
|
||||
{"matrix": [0, 11], "x": 5, "y": 1.25},
|
||||
{"matrix": [1, 6], "x": 10, "y": 1.25},
|
||||
{"matrix": [1, 7], "x": 11, "y": 1.125},
|
||||
{"matrix": [1, 8], "x": 12, "y": 1},
|
||||
{"matrix": [1, 9], "x": 13, "y": 1.125},
|
||||
{"matrix": [1, 10], "x": 14, "y": 1.375},
|
||||
{"matrix": [1, 11], "x": 15, "y": 1.45},
|
||||
{"matrix": [0, 12], "x": 0, "y": 2.45},
|
||||
{"matrix": [0, 13], "x": 1, "y": 2.375},
|
||||
{"matrix": [0, 14], "x": 2, "y": 2.125},
|
||||
{"matrix": [0, 15], "x": 3, "y": 2},
|
||||
{"matrix": [0, 16], "x": 4, "y": 2.125},
|
||||
{"matrix": [0, 17], "x": 5, "y": 2.25},
|
||||
{"matrix": [1, 12], "x": 10, "y": 2.25},
|
||||
{"matrix": [1, 13], "x": 11, "y": 2.125},
|
||||
{"matrix": [1, 14], "x": 12, "y": 2},
|
||||
{"matrix": [1, 15], "x": 13, "y": 2.125},
|
||||
{"matrix": [1, 16], "x": 14, "y": 2.375},
|
||||
{"matrix": [1, 17], "x": 15, "y": 2.45},
|
||||
{"matrix": [0, 19], "x": 0, "y": 3.45},
|
||||
{"matrix": [0, 20], "x": 1, "y": 3.375},
|
||||
{"matrix": [0, 21], "x": 2, "y": 3.125},
|
||||
{"matrix": [0, 22], "x": 3, "y": 3},
|
||||
{"matrix": [0, 23], "x": 4, "y": 3.125},
|
||||
{"matrix": [0, 24], "x": 5, "y": 3.25},
|
||||
{"matrix": [0, 18], "x": 6, "y": 2.75},
|
||||
{"matrix": [1, 18], "x": 9, "y": 2.75},
|
||||
{"matrix": [1, 19], "x": 10, "y": 3.25},
|
||||
{"matrix": [1, 20], "x": 11, "y": 3.125},
|
||||
{"matrix": [1, 21], "x": 12, "y": 3},
|
||||
{"matrix": [1, 22], "x": 13, "y": 3.125},
|
||||
{"matrix": [1, 23], "x": 14, "y": 3.375},
|
||||
{"matrix": [1, 24], "x": 15, "y": 3.45},
|
||||
{"matrix": [0, 25], "x": 2.5, "y": 4.15},
|
||||
{"matrix": [0, 26], "x": 3.5, "y": 4.15},
|
||||
{"matrix": [0, 27], "x": 4.5, "y": 4.25},
|
||||
{"matrix": [0, 28], "x": 6, "y": 4.25, "h": 1.5},
|
||||
{"matrix": [1, 25], "x": 9, "y": 4.25, "h": 1.5},
|
||||
{"matrix": [1, 26], "x": 10.45, "y": 4.25},
|
||||
{"matrix": [1, 27], "x": 11.5, "y": 4.15},
|
||||
{"matrix": [1, 28], "x": 12.5, "y": 4.15}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
78
keyboards/koca58/keymaps/default/keymap.c
Normal file
78
keyboards/koca58/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,78 @@
|
||||
/* Copyright 2025 oxnh */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
enum layer_number {
|
||||
_QWERTY = 0,
|
||||
_LOWER,
|
||||
_RAISE,
|
||||
_ADJUST,
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
/* QWERTY
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | ESC | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | ` |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | Tab | Q | W | E | R | T | | Y | U | I | O | P | - |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* |LCTRL | A | S | D | F | G |-------. ,-------| H | J | K | L | ; | ' |
|
||||
* |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
|
||||
* |LShift| Z | X | C | V | B |-------| |-------| N | M | , | . | / |RShift|
|
||||
* `-----------------------------------------/ / \ \-----------------------------------------'
|
||||
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
|
||||
* | | | |/ / \ \ | | | |
|
||||
* `----------------------------' '------''--------------------'
|
||||
*/
|
||||
[_QWERTY] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_GRV,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_MINS,
|
||||
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_LBRC, KC_RBRC, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LALT, KC_LGUI, MO(_LOWER), KC_SPC, KC_ENT, MO(_RAISE), KC_BSPC, KC_RGUI
|
||||
),
|
||||
/* LOWER
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | F1 | F2 | F3 | F4 | F5 | F6 | | F7 | F8 | F9 | F10 | F11 | F12 |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | ` | ! | @ | # | $ | % |-------. ,-------| ^ | & | * | ( | ) | ~ |
|
||||
* |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
|
||||
* | | | | | | |-------| |-------| | _ | + | { | } | | |
|
||||
* `-----------------------------------------/ / \ \-----------------------------------------'
|
||||
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
|
||||
* | | | |/ / \ \ | | | |
|
||||
* `----------------------------' '------''--------------------'
|
||||
*/
|
||||
[_LOWER] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______,_______, _______, _______,
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12,
|
||||
KC_GRV, KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN, KC_TILD,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, XXXXXXX, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
/* RAISE
|
||||
* ,-----------------------------------------. ,-----------------------------------------.
|
||||
* | | | | | | | | | | | | | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | ` | 1 | 2 | 3 | 4 | 5 | | 6 | 7 | 8 | 9 | 0 | |
|
||||
* |------+------+------+------+------+------| |------+------+------+------+------+------|
|
||||
* | F1 | F2 | F3 | F4 | F5 | F6 |-------. ,-------| | Left | Down | Up |Right | |
|
||||
* |------+------+------+------+------+------| [ | | ] |------+------+------+------+------+------|
|
||||
* | F7 | F8 | F9 | F10 | F11 | F12 |-------| |-------| + | - | = | [ | ] | \ |
|
||||
* `-----------------------------------------/ / \ \-----------------------------------------'
|
||||
* | LAlt | LGUI |LOWER | /Space / \Enter \ |RAISE |BackSP| RGUI |
|
||||
* | | | |/ / \ \ | | | |
|
||||
* `----------------------------' '------''--------------------'
|
||||
*/
|
||||
|
||||
[_RAISE] = LAYOUT(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, _______,
|
||||
KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, XXXXXXX, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT, XXXXXXX,
|
||||
KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, KC_PLUS, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
11
keyboards/koca58/mcuconf.h
Normal file
11
keyboards/koca58/mcuconf.h
Normal file
@@ -0,0 +1,11 @@
|
||||
/* Copyright 2025 oxnh */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_SERIAL_USE_USART3
|
||||
#define STM32_SERIAL_USE_USART3 TRUE
|
||||
|
||||
#undef STM32_PLLMUL_VALUE
|
||||
#define STM32_PLLMUL_VALUE 6
|
||||
25
keyboards/koca58/readme.md
Normal file
25
keyboards/koca58/readme.md
Normal file
@@ -0,0 +1,25 @@
|
||||
# Koca58
|
||||
|
||||

|
||||
|
||||
A Lily58 variant featuring SMT components, powered by an STM32F103 MCU and utilizing direct wiring. If you have a Lily58 with a soldered dev board (e.g., pro micro), please visit the original [Lily58](/keyboards/lily58) directory.
|
||||
|
||||
* Keyboard Maintainer: [oxnh](https://github.com/Hardware7253)
|
||||
* Hardware Supported: All Koca58 PCBs
|
||||
* Hardware Availability: [Open source design](https://github.com/Hardware7253/Koca58)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make koca58:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make koca58: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:
|
||||
|
||||
* **Physical reset button**: Briefly press the button on the back of the PCB before or during uploading firmware
|
||||
@@ -133,7 +133,7 @@
|
||||
{"matrix": [2, 10], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [1, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [2, 15], "x": 15, "y": 2},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
|
||||
@@ -14,6 +14,9 @@
|
||||
"enabled": true,
|
||||
"serial": {
|
||||
"driver": "vendor"
|
||||
},
|
||||
"transport": {
|
||||
"watchdog": true
|
||||
}
|
||||
},
|
||||
"matrix_pins": {
|
||||
|
||||
69
keyboards/sneakbox/lilbae/keyboard.json
Normal file
69
keyboards/sneakbox/lilbae/keyboard.json
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"keyboard_name": "Lil' BAE",
|
||||
"manufacturer": "Sneakbox",
|
||||
"maintainer": "mujimanic",
|
||||
"bootloader": "atmel-dfu",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "D2", "pin_b": "D3"}
|
||||
]
|
||||
},
|
||||
"bootmagic": {
|
||||
"matrix": [0, 2]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B7", "D4", "D5", "D6"],
|
||||
"rows": ["B4"]
|
||||
},
|
||||
"processor": "atmega32u2",
|
||||
"url": "https://sneakbox.com",
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x0012",
|
||||
"vid": "0x5342"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 1.75, "y": 0, "w": 1.5},
|
||||
{"matrix": [0, 1], "x": 0, "y": 1},
|
||||
{"matrix": [0, 2], "x": 1, "y": 1},
|
||||
{"matrix": [0, 3], "x": 2, "y": 1, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_ansi_enter": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0.75, "y": 0, "w": 1.5},
|
||||
{"matrix": [0, 2], "x": 0, "y": 1, "w": 2.25}
|
||||
]
|
||||
},
|
||||
"LAYOUT_bae": {
|
||||
"layout": [
|
||||
{"matrix": [0, 2], "x": 0, "y": 0, "w": 2.25, "h": 2}
|
||||
]
|
||||
},
|
||||
"LAYOUT_iso": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 1, "y": 0, "w": 1.25, "h": 2},
|
||||
{"matrix": [0, 1], "x": 0, "y": 1}
|
||||
]
|
||||
},
|
||||
"LAYOUT_split_ansi_enter": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0.75, "y": 0, "w": 1.5},
|
||||
{"matrix": [0, 1], "x": 0, "y": 1},
|
||||
{"matrix": [0, 3], "x": 1, "y": 1, "w": 1.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
29
keyboards/sneakbox/lilbae/keymaps/ansi_enter/keymap.c
Normal file
29
keyboards/sneakbox/lilbae/keymaps/ansi_enter/keymap.c
Normal file
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
Copyright 2022 Bryan Ong
|
||||
|
||||
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
|
||||
|
||||
// Defines names for use in layer keycodes and the keymap
|
||||
enum layer_names {
|
||||
_BASE
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_ansi_enter(
|
||||
KC_BSLS,
|
||||
KC_ENT)
|
||||
};
|
||||
28
keyboards/sneakbox/lilbae/keymaps/default/keymap.c
Normal file
28
keyboards/sneakbox/lilbae/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
Copyright 2022 Bryan Ong
|
||||
|
||||
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
|
||||
|
||||
// Defines names for use in layer keycodes and the keymap
|
||||
enum layer_names {
|
||||
_BASE
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_bae(
|
||||
KC_ENT)
|
||||
};
|
||||
35
keyboards/sneakbox/lilbae/keymaps/iso/keymap.c
Normal file
35
keyboards/sneakbox/lilbae/keymaps/iso/keymap.c
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
Copyright 2022 Bryan Ong
|
||||
|
||||
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
|
||||
|
||||
// Defines names for use in layer keycodes and the keymap
|
||||
enum layer_names {
|
||||
_BASE
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_iso(
|
||||
KC_ENT,
|
||||
KC_UNDO )
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_BASE] = { ENCODER_CCW_CW(KC_1, KC_2)}
|
||||
};
|
||||
#endif
|
||||
1
keyboards/sneakbox/lilbae/keymaps/iso/rules.mk
Normal file
1
keyboards/sneakbox/lilbae/keymaps/iso/rules.mk
Normal file
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
35
keyboards/sneakbox/lilbae/keymaps/split_ansi_enter/keymap.c
Normal file
35
keyboards/sneakbox/lilbae/keymaps/split_ansi_enter/keymap.c
Normal file
@@ -0,0 +1,35 @@
|
||||
/*
|
||||
Copyright 2022 Bryan Ong
|
||||
|
||||
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
|
||||
|
||||
// Defines names for use in layer keycodes and the keymap
|
||||
enum layer_names {
|
||||
_BASE
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[_BASE] = LAYOUT_split_ansi_enter(
|
||||
KC_BSLS,
|
||||
KC_UNDO, KC_LGUI)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[_BASE] = { ENCODER_CCW_CW(KC_1, KC_2)}
|
||||
};
|
||||
#endif
|
||||
@@ -0,0 +1 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
||||
27
keyboards/sneakbox/lilbae/readme.md
Normal file
27
keyboards/sneakbox/lilbae/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# Sneakbox Lil' BAE
|
||||
|
||||

|
||||
|
||||
A small macropad featuring key positions for a Big-Ass Enter (Reverse L-shaped enter key)
|
||||
|
||||
Keyboard Maintainer: [mujimanic](https://sneakbox.com)
|
||||
Hardware Supported: Lil' BAE Case
|
||||
Hardware Availability: [sneakbox.design](https://sneakbox.com/products/lil-bae-macropad)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make sneakbox/lilbae:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make sneakbox/lilbae: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,2) in the matrix (position mapped to ANSI enter key) 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
|
||||
@@ -85,10 +85,13 @@ void print_status_narrow(void) {
|
||||
oled_write_P(PSTR("Base\n"), false);
|
||||
break;
|
||||
case 2:
|
||||
oled_write_P(PSTR("Raise"), false);
|
||||
oled_write_P(PSTR("Lower"), false);
|
||||
break;
|
||||
case 3:
|
||||
oled_write_P(PSTR("Lower"), false);
|
||||
oled_write_P(PSTR("Raise"), false);
|
||||
break;
|
||||
case 4:
|
||||
oled_write_P(PSTR("Adjust"), false);
|
||||
break;
|
||||
default:
|
||||
oled_write_ln_P(PSTR("Undef"), false);
|
||||
|
||||
60
keyboards/splitkb/halcyon/corne/info.json
Executable file
60
keyboards/splitkb/halcyon/corne/info.json
Executable file
@@ -0,0 +1,60 @@
|
||||
{
|
||||
"manufacturer": "splitkb.com",
|
||||
"maintainer": "splitkb.com",
|
||||
"url": "https://splitkb.com",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"vid": "0x8D1D"
|
||||
},
|
||||
"layout_aliases": {
|
||||
"LAYOUT": "LAYOUT_split_3x6_3"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_split_3x6_3": {
|
||||
"layout": [
|
||||
{"label": "L06", "matrix": [0, 0], "x": 0, "y": 0.3},
|
||||
{"label": "L05", "matrix": [0, 1], "x": 1, "y": 0.3},
|
||||
{"label": "L04", "matrix": [0, 2], "x": 2, "y": 0.1},
|
||||
{"label": "L03", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "L02", "matrix": [0, 4], "x": 4, "y": 0.1},
|
||||
{"label": "L01", "matrix": [0, 5], "x": 5, "y": 0.2},
|
||||
{"label": "R01", "matrix": [4, 5], "x": 9, "y": 0.2},
|
||||
{"label": "R02", "matrix": [4, 4], "x": 10, "y": 0.1},
|
||||
{"label": "R03", "matrix": [4, 3], "x": 11, "y": 0},
|
||||
{"label": "R04", "matrix": [4, 2], "x": 12, "y": 0.1},
|
||||
{"label": "R05", "matrix": [4, 1], "x": 13, "y": 0.3},
|
||||
{"label": "R06", "matrix": [4, 0], "x": 14, "y": 0.3},
|
||||
{"label": "L12", "matrix": [1, 0], "x": 0, "y": 1.3},
|
||||
{"label": "L11", "matrix": [1, 1], "x": 1, "y": 1.3},
|
||||
{"label": "L10", "matrix": [1, 2], "x": 2, "y": 1.1},
|
||||
{"label": "L09", "matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"label": "L08", "matrix": [1, 4], "x": 4, "y": 1.1},
|
||||
{"label": "L07", "matrix": [1, 5], "x": 5, "y": 1.2},
|
||||
{"label": "R07", "matrix": [5, 5], "x": 9, "y": 1.2},
|
||||
{"label": "R08", "matrix": [5, 4], "x": 10, "y": 1.1},
|
||||
{"label": "R09", "matrix": [5, 3], "x": 11, "y": 1},
|
||||
{"label": "R10", "matrix": [5, 2], "x": 12, "y": 1.1},
|
||||
{"label": "R11", "matrix": [5, 1], "x": 13, "y": 1.3},
|
||||
{"label": "R12", "matrix": [5, 0], "x": 14, "y": 1.3},
|
||||
{"label": "L18", "matrix": [2, 0], "x": 0, "y": 2.3},
|
||||
{"label": "L17", "matrix": [2, 1], "x": 1, "y": 2.3},
|
||||
{"label": "L16", "matrix": [2, 2], "x": 2, "y": 2.1},
|
||||
{"label": "L15", "matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"label": "L14", "matrix": [2, 4], "x": 4, "y": 2.1},
|
||||
{"label": "L13", "matrix": [2, 5], "x": 5, "y": 2.2},
|
||||
{"label": "R13", "matrix": [6, 5], "x": 9, "y": 2.2},
|
||||
{"label": "R14", "matrix": [6, 4], "x": 10, "y": 2.1},
|
||||
{"label": "R15", "matrix": [6, 3], "x": 11, "y": 2},
|
||||
{"label": "R16", "matrix": [6, 2], "x": 12, "y": 2.1},
|
||||
{"label": "R17", "matrix": [6, 1], "x": 13, "y": 2.3},
|
||||
{"label": "R18", "matrix": [6, 0], "x": 14, "y": 2.3},
|
||||
{"label": "L21", "matrix": [3, 3], "x": 4, "y": 3.7},
|
||||
{"label": "L20", "matrix": [3, 4], "x": 5, "y": 3.7},
|
||||
{"label": "L19", "matrix": [3, 5], "w": 1.5, "x": 6, "y": 3.2},
|
||||
{"label": "R19", "matrix": [7, 5], "w": 1.5, "x": 8, "y": 3.2},
|
||||
{"label": "R20", "matrix": [7, 4], "x": 9, "y": 3.7},
|
||||
{"label": "R21", "matrix": [7, 3], "x": 10, "y": 3.7}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
43
keyboards/splitkb/halcyon/corne/keymaps/default/keymap.json
Normal file
43
keyboards/splitkb/halcyon/corne/keymaps/default/keymap.json
Normal file
@@ -0,0 +1,43 @@
|
||||
{
|
||||
"keyboard": "splitkb/halcyon/corne/rev2",
|
||||
"keymap": "default",
|
||||
"version": 1,
|
||||
"layout": "LAYOUT_split_3x6_3",
|
||||
"layers": [
|
||||
[
|
||||
"KC_TAB" , "KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T" , "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P" , "KC_BSPC" ,
|
||||
"KC_LCTL" , "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G" , "KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN" , "KC_QUOT" ,
|
||||
"KC_LSFT" , "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_N" , "KC_M" , "KC_COMM" , "KC_DOT" , "KC_SLSH" , "KC_ESC" ,
|
||||
"KC_LGUI" , "MO(1)" , "KC_SPC" , "KC_ENT" , "MO(2)" , "KC_RALT"
|
||||
],
|
||||
[
|
||||
"KC_TAB" , "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5" , "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "KC_BSPC" ,
|
||||
"KC_LCTL" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "KC_LEFT" , "KC_DOWN" , "KC_UP" , "KC_RIGHT", "XXXXXXX" , "XXXXXXX" ,
|
||||
"KC_LSFT" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" ,
|
||||
"KC_LGUI" , "_______" , "KC_SPC" , "KC_ENT" , "MO(3)" , "KC_RALT"
|
||||
],
|
||||
[
|
||||
"KC_TAB" , "KC_EXLM" , "KC_AT" , "KC_HASH" , "KC_DLR" , "KC_PERC" , "KC_CIRC" , "KC_AMPR" , "KC_ASTR" , "KC_LPRN" , "KC_RPRN" , "KC_BSPC" ,
|
||||
"KC_LCTL" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "KC_MINS" , "KC_EQL" , "KC_LBRC" , "KC_RBRC" , "KC_BSLS" , "KC_GRV" ,
|
||||
"KC_LSFT" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "KC_UNDS" , "KC_PLUS" , "KC_LCBR" , "KC_RCBR" , "KC_PIPE" , "KC_TILD" ,
|
||||
"KC_LGUI" , "MO(3)" , "KC_SPC" , "KC_ENT" , "_______" , "KC_RALT"
|
||||
],
|
||||
[
|
||||
"QK_BOOT" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" ,
|
||||
"RM_TOGG" , "RM_HUEU" , "RM_SATU" , "RM_VALU" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" ,
|
||||
"RM_NEXT" , "RM_HUED" , "RM_SATD" , "RM_VALD" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" , "XXXXXXX" ,
|
||||
"KC_LGUI" , "_______" , "KC_SPC" , "KC_ENT" , "_______" , "KC_RALT"
|
||||
]
|
||||
],
|
||||
"config": {
|
||||
"features": {
|
||||
"encoder_map": true
|
||||
}
|
||||
},
|
||||
"encoders": [
|
||||
[{"ccw": "KC_VOLD", "cw": "KC_VOLU"}, {"ccw": "KC_PGUP", "cw": "KC_PGDN"}],
|
||||
[{"ccw": "_______", "cw": "_______"}, {"ccw": "_______", "cw": "_______"}],
|
||||
[{"ccw": "_______", "cw": "_______"}, {"ccw": "_______", "cw": "_______"}],
|
||||
[{"ccw": "_______", "cw": "_______"}, {"ccw": "_______", "cw": "_______"}]
|
||||
]
|
||||
}
|
||||
87
keyboards/splitkb/halcyon/corne/keymaps/default/readme.md
Executable file
87
keyboards/splitkb/halcyon/corne/keymaps/default/readme.md
Executable file
@@ -0,0 +1,87 @@
|
||||
# Halcyon Corne's Default Keymap
|
||||
_This keymap is a copy of the [Corne default keymap](https://github.com/qmk/qmk_firmware/tree/master/keyboards/crkbd/keymaps/default)_
|
||||
|
||||
A simple default keymap for the Halcyon Corne
|
||||
============================================
|
||||
|
||||
Keymaps in general are quite personal, so it is difficult to come up with a default that will suit every user. We hope this keymap serves as a good starting point for your own - although it should be fairly usable out-of-the-box.
|
||||
|
||||
What do all these layers do?
|
||||
----------------------------
|
||||
|
||||
### Layer 0: Base layer
|
||||
|
||||

|
||||
|
||||
This is where your basic letters live.
|
||||
|
||||
The homing thumb fingers are used to access the different layers.
|
||||
|
||||
* The homing left thumb finger gives access to the Numbers (or lower) layer
|
||||
* The homing right thumb finger gives access to the Symbols (or raise) layer
|
||||
* Pressing both homing thumb fingers gives access to the Adjust layer
|
||||
|
||||
### Layer 1: Lower
|
||||
|
||||

|
||||
|
||||
The Lower layer gives access to your number keys on the top row. It also exposes the arrow keys in the usual Vim-style layout.
|
||||
|
||||
### Layer 2: Raise
|
||||
|
||||

|
||||
|
||||
The Raise layer gives access to the symbols. In addition to shifted number keys on the top row, the right hand also exposes the remaining symbol keys, both as shifted and non-shifted variants.
|
||||
|
||||
### Layer 3: Adjust
|
||||
|
||||

|
||||
|
||||
The Adjust layer exposes RGB adjustment keys on the left hand.
|
||||
|
||||
Where is the keymap.c?
|
||||
----------------------
|
||||
|
||||
The keymap.c file is not published to the repository. It is generated from `keymap.json` by the build system.
|
||||
|
||||
This avoids duplicating information and allow users to edit their keymap from the QMK Configurator web interface.
|
||||
|
||||
How do I edit and update the keymap?
|
||||
------------------------------------
|
||||
|
||||
The `keymap.json` file is generated from the QMK Configurator interface and formatted for better readability in the context of the Ferris keyboard.
|
||||
|
||||
To edit it, you may:
|
||||
* Edit it directly from a text editor.
|
||||
* Edit it from the QMK Configurator.
|
||||
|
||||
If you decide to use the latter workflow, here are the steps to follow:
|
||||
|
||||
* From the [QMK Configurator](https://config.qmk.fm/#/splitkb/halcyon/corne/rev2/LAYOUT_split_3x5_3), hit the "import QMK keymap json file" button (it has a drawing with an up arrow on it).
|
||||
* Browse to the location of your keymap (for example, `<your qmk repo>/keyboards/splitkb/halcyon/corne/keymaps/default/keymap.json`)
|
||||
* Perform any modification to the keymap in the web UI
|
||||
* Export the keymap to your downloads folder, by hitting the "Export QMK keymap json file" button (it has a drawing with a down arrow on it)
|
||||
* Replace your original keymap with the one you just downloaded
|
||||
|
||||
I want to do more than the JSON format supports!
|
||||
-------------------------------------------------
|
||||
|
||||
While the `json` format is easy to use, it does lack certain functionality - most notably custom OLED or encoder behaviour.
|
||||
|
||||
To add this, you need to convert it to the `c` format. Do keep in mind that this is generally a one-way operation.
|
||||
|
||||
First, from the root of your qmk repo, move to your keymap folder
|
||||
|
||||
```bash
|
||||
cd ./keyboards/splitkb/halcyon/corne/keymaps/my_personal_keymap
|
||||
```
|
||||
|
||||
Next, convert your `keymap.json` to a `keymap.c`
|
||||
|
||||
```bash
|
||||
qmk json2c -o keymap.c keymap.json
|
||||
```
|
||||
|
||||
|
||||
You can add custom C code to the newly generated `keymap.c` file. Do note that you have to use **either** a C file **or** a JSON file - you cannot do both!
|
||||
**If a JSON file is present, the C file is ignored.**
|
||||
31
keyboards/splitkb/halcyon/corne/readme.md
Executable file
31
keyboards/splitkb/halcyon/corne/readme.md
Executable file
@@ -0,0 +1,31 @@
|
||||
# Halcyon Corne
|
||||
|
||||

|
||||
|
||||
The Halcyon Corne rev2 is the second Corne revision and the third keyboard in our Halcyon range. Similar to Aurora, all keyboards in the series share the same feature set. The key highlights:
|
||||
|
||||
- Halcyon keyboards come preassembled! You won't need a soldering iron.
|
||||
- You'll be able to install [VIK](https://github.com/sadekbaroudi/vik) modules.
|
||||
- It'll come fully documented, which includes the unboxing, assembly (with only a screwdriver), first installation and some advanced use cases.
|
||||
- Both the connection to the host device as well as the interconnect between the keyboard halves use USB C.
|
||||
- The controller has full ESD protection on all USB C ports, as well as all switch matrix GPIO!
|
||||
- The controller is interchangable. If part of your keyboard ever breaks, we can replace just the bits that need replacing.
|
||||
|
||||
* Keyboard Maintainer: [splitkb.com](https://github.com/splitkb.com)
|
||||
* Hardware Availability: [splitkb.com](https://splitkb.com).
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make splitkb/halcyon/corne/rev2:default
|
||||
|
||||
The keyboard can be flashed by copying the resulting `.uf2` file onto the `RPI-RP2` flash drive.
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Reset button**: Double-tap the reset button at the top of the controller, right above the USB-C port.
|
||||
* **Bootloader reset**: Hold down the "Boot" button and plug in the keyboard.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
|
||||
32
keyboards/splitkb/halcyon/corne/rev2/config.h
Executable file
32
keyboards/splitkb/halcyon/corne/rev2/config.h
Executable file
@@ -0,0 +1,32 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
// Make it easier to enter the bootloader
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
|
||||
|
||||
// UART1, communication between the two halves
|
||||
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
|
||||
#define SERIAL_USART_TX_PIN GP28 // USART TX pin
|
||||
#define SERIAL_USART_RX_PIN GP29 // USART RX pin
|
||||
#define SERIAL_PIO_USE_PIO1 // Use PIO1 as PIO0 is used for WS2812 driver
|
||||
|
||||
// VBUS detection
|
||||
#define USB_VBUS_PIN GP1
|
||||
|
||||
//// VIK
|
||||
|
||||
// GPIO1 = GP27
|
||||
// GPIO2 = GP26
|
||||
// CS = GP13
|
||||
|
||||
#define I2C_DRIVER I2C0
|
||||
#define I2C1_SDA_PIN GP16
|
||||
#define I2C1_SCL_PIN GP17
|
||||
|
||||
#define SPI_DRIVER SPID1
|
||||
#define SPI_SCK_PIN GP14
|
||||
#define SPI_MOSI_PIN GP15
|
||||
#define SPI_MISO_PIN GP12
|
||||
11
keyboards/splitkb/halcyon/corne/rev2/halconf.h
Normal file
11
keyboards/splitkb/halcyon/corne/rev2/halconf.h
Normal file
@@ -0,0 +1,11 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
//// VIK
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#define HAL_USE_SPI TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
156
keyboards/splitkb/halcyon/corne/rev2/keyboard.json
Executable file
156
keyboards/splitkb/halcyon/corne/rev2/keyboard.json
Executable file
@@ -0,0 +1,156 @@
|
||||
{
|
||||
"keyboard_name": "Halcyon Corne rev2",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP24", "pin_b": "GP23", "resolution": 2}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP9", "GP4", "GP7", "GP6", "GP5", "GP10"],
|
||||
"rows": ["GP20", "GP25", "GP11", "GP8"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"digital_rain": true,
|
||||
"dual_beacon": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"multisplash": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"x": 93, "y": 17, "flags": 2},
|
||||
{"x": 59, "y": 3, "flags": 2},
|
||||
{"x": 25, "y": 7, "flags": 2},
|
||||
{"x": 29, "y": 49, "flags": 2},
|
||||
{"x": 70, "y": 51, "flags": 2},
|
||||
{"x": 104, "y": 55, "flags": 2},
|
||||
{"matrix": [3, 2], "x": 95, "y": 63, "flags": 4},
|
||||
{"matrix": [3, 1], "x": 80, "y": 58, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 60, "y": 55, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 85, "y": 39, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 68, "y": 37, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 50, "y": 35, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 33, "y": 37, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 16, "y": 42, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 85, "y": 21, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 68, "y": 19, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 50, "y": 13, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 33, "y": 20, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 16, "y": 24, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 85, "y": 4, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 68, "y": 2, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 50, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 33, "y": 3, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 16, "y": 7, "flags": 4},
|
||||
{"matrix": [0, 0], "x": 0, "y": 7, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 0, "y": 24, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 0, "y": 41, "flags": 4},
|
||||
{"x": 131, "y": 17, "flags": 2},
|
||||
{"x": 165, "y": 3, "flags": 2},
|
||||
{"x": 199, "y": 7, "flags": 2},
|
||||
{"x": 195, "y": 49, "flags": 2},
|
||||
{"x": 154, "y": 51, "flags": 2},
|
||||
{"x": 120, "y": 55, "flags": 2},
|
||||
{"matrix": [7, 2], "x": 129, "y": 63, "flags": 4},
|
||||
{"matrix": [7, 1], "x": 144, "y": 58, "flags": 4},
|
||||
{"matrix": [7, 0], "x": 164, "y": 55, "flags": 4},
|
||||
{"matrix": [6, 5], "x": 139, "y": 39, "flags": 4},
|
||||
{"matrix": [6, 4], "x": 156, "y": 37, "flags": 4},
|
||||
{"matrix": [6, 3], "x": 174, "y": 35, "flags": 4},
|
||||
{"matrix": [6, 2], "x": 191, "y": 37, "flags": 4},
|
||||
{"matrix": [6, 1], "x": 208, "y": 42, "flags": 4},
|
||||
{"matrix": [5, 5], "x": 139, "y": 21, "flags": 4},
|
||||
{"matrix": [5, 4], "x": 156, "y": 19, "flags": 4},
|
||||
{"matrix": [5, 3], "x": 174, "y": 13, "flags": 4},
|
||||
{"matrix": [5, 2], "x": 191, "y": 20, "flags": 4},
|
||||
{"matrix": [5, 1], "x": 208, "y": 24, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 139, "y": 4, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 156, "y": 2, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 174, "y": 0, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 191, "y": 3, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 208, "y": 7, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 224, "y": 7, "flags": 4},
|
||||
{"matrix": [5, 0], "x": 224, "y": 24, "flags": 4},
|
||||
{"matrix": [6, 0], "x": 224, "y": 41, "flags": 4}
|
||||
],
|
||||
"max_brightness": 128,
|
||||
"sleep": true,
|
||||
"split_count": [27, 27]
|
||||
},
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"handedness": {
|
||||
"pin": "GP19"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"right": {
|
||||
"cols": ["GP5", "GP9", "GP7", "GP20", "GP25", "GP4"],
|
||||
"rows": ["GP6", "GP10", "GP11", "GP8"]
|
||||
}
|
||||
},
|
||||
"serial": {
|
||||
"driver": "vendor"
|
||||
},
|
||||
"transport": {
|
||||
"sync": {
|
||||
"matrix_state": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"usb": {
|
||||
"pid": "0x3A07"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP3"
|
||||
}
|
||||
}
|
||||
14
keyboards/splitkb/halcyon/corne/rev2/mcuconf.h
Normal file
14
keyboards/splitkb/halcyon/corne/rev2/mcuconf.h
Normal file
@@ -0,0 +1,14 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
//// VIK
|
||||
|
||||
#undef RP_I2C_USE_I2C0
|
||||
#define RP_I2C_USE_I2C0 TRUE
|
||||
|
||||
#undef RP_SPI_USE_SPI1
|
||||
#define RP_SPI_USE_SPI1 TRUE
|
||||
28
keyboards/splitkb/halcyon/corne/rev2/rev2.c
Normal file
28
keyboards/splitkb/halcyon/corne/rev2/rev2.c
Normal file
@@ -0,0 +1,28 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||
if (!encoder_update_user(index, clockwise)) {
|
||||
return false;
|
||||
}
|
||||
if (index == 0) {
|
||||
// Volume control
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
} else if (index == 1) {
|
||||
// Page up/Page down
|
||||
if (clockwise) {
|
||||
tap_code(KC_PGDN);
|
||||
} else {
|
||||
tap_code(KC_PGUP);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
52
keyboards/splitkb/halcyon/ferris/info.json
Executable file
52
keyboards/splitkb/halcyon/ferris/info.json
Executable file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"manufacturer": "splitkb.com",
|
||||
"maintainer": "splitkb.com",
|
||||
"url": "https://splitkb.com",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"vid": "0x8D1D"
|
||||
},
|
||||
"layout_aliases": {
|
||||
"LAYOUT": "LAYOUT_split_3x5_2"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_split_3x5_2": {
|
||||
"layout": [
|
||||
{"label": "L01", "matrix": [0, 4], "x": 0, "y": 0.93},
|
||||
{"label": "L02", "matrix": [0, 3], "x": 1, "y": 0.31},
|
||||
{"label": "L03", "matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"label": "L04", "matrix": [0, 1], "x": 3, "y": 0.28},
|
||||
{"label": "L05", "matrix": [0, 0], "x": 4, "y": 0.42},
|
||||
{"label": "R05", "matrix": [4, 0], "x": 7, "y": 0.42},
|
||||
{"label": "R04", "matrix": [4, 1], "x": 8, "y": 0.28},
|
||||
{"label": "R03", "matrix": [4, 2], "x": 9, "y": 0},
|
||||
{"label": "R02", "matrix": [4, 3], "x": 10, "y": 0.31},
|
||||
{"label": "R01", "matrix": [4, 4], "x": 11, "y": 0.93},
|
||||
{"label": "L06", "matrix": [1, 4], "x": 0, "y": 1.93},
|
||||
{"label": "L07", "matrix": [1, 3], "x": 1, "y": 1.31},
|
||||
{"label": "L08", "matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"label": "L09", "matrix": [1, 1], "x": 3, "y": 1.28},
|
||||
{"label": "L10", "matrix": [1, 0], "x": 4, "y": 1.42},
|
||||
{"label": "R10", "matrix": [5, 0], "x": 7, "y": 1.42},
|
||||
{"label": "R09", "matrix": [5, 1], "x": 8, "y": 1.28},
|
||||
{"label": "R08", "matrix": [5, 2], "x": 9, "y": 1},
|
||||
{"label": "R07", "matrix": [5, 3], "x": 10, "y": 1.31},
|
||||
{"label": "R06", "matrix": [5, 4], "x": 11, "y": 1.93},
|
||||
{"label": "L11", "matrix": [2, 4], "x": 0, "y": 2.93},
|
||||
{"label": "L12", "matrix": [2, 3], "x": 1, "y": 2.31},
|
||||
{"label": "L13", "matrix": [2, 2], "x": 2, "y": 2},
|
||||
{"label": "L14", "matrix": [2, 1], "x": 3, "y": 2.28},
|
||||
{"label": "L15", "matrix": [2, 0], "x": 4, "y": 2.42},
|
||||
{"label": "R15", "matrix": [6, 0], "x": 7, "y": 2.42},
|
||||
{"label": "R14", "matrix": [6, 1], "x": 8, "y": 2.28},
|
||||
{"label": "R13", "matrix": [6, 2], "x": 9, "y": 2},
|
||||
{"label": "R12", "matrix": [6, 3], "x": 10, "y": 2.31},
|
||||
{"label": "R11", "matrix": [6, 4], "x": 11, "y": 2.93},
|
||||
{"label": "L16", "matrix": [3, 1], "x": 3.5, "y": 3.75},
|
||||
{"label": "L17", "matrix": [3, 0], "x": 4.5, "y": 4},
|
||||
{"label": "R17", "matrix": [7, 0], "x": 6.5, "y": 4},
|
||||
{"label": "R16", "matrix": [7, 1], "x": 7.5, "y": 3.75}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
69
keyboards/splitkb/halcyon/ferris/keymaps/default/keymap.json
Normal file
69
keyboards/splitkb/halcyon/ferris/keymaps/default/keymap.json
Normal file
@@ -0,0 +1,69 @@
|
||||
{
|
||||
"keyboard": "splitkb/halcyon/ferris/rev1",
|
||||
"keymap": "default",
|
||||
"version": 1,
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"KC_Q" , "KC_W" , "KC_E" , "KC_R" , "KC_T" , "KC_Y" , "KC_U" , "KC_I" , "KC_O" , "KC_P",
|
||||
"LSFT_T(KC_A)", "LT(5,KC_S)" , "LT(1,KC_D)" , "LT(3,KC_F)" , "KC_G" , "KC_H" , "LT(4,KC_J)" , "LT(2,KC_K)" , "LT(6,KC_L)" , "LSFT_T(KC_SCLN)",
|
||||
"KC_Z" , "LCTL_T(KC_X)", "LALT_T(KC_C)" , "KC_V" , "KC_B" , "KC_N" , "KC_M" , "LALT_T(KC_COMM)", "LCTL_T(KC_DOT)", "KC_SLSH",
|
||||
"KC_P0" , "KC_BSPC" , "LT(7,KC_SPC)" , "KC_P1"
|
||||
],
|
||||
[
|
||||
"RM_TOGG" , "RM_NEXT" , "RM_HUEU" , "RM_SATU" , "RM_VALU" , "RM_SPDU" , "KC_BTN1" , "KC_WH_U" , "KC_BTN2" , "KC_TRNS",
|
||||
"KC_TRNS" , "KC_BTN2" , "KC_NO" , "KC_BTN1" , "KC_TRNS" , "KC_TRNS" , "KC_MS_L" , "KC_MS_D" , "KC_MS_U" , "KC_MS_R",
|
||||
"KC_TRNS" , "RM_PREV" , "RM_HUED" , "RM_SATD" , "RM_VALD" , "RM_SPDD" , "KC_WH_L" , "KC_WH_D" , "KC_WH_R" , "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_LEFT" , "KC_UP" , "KC_DOWN" , "KC_RGHT" , "KC_TRNS" , "KC_TRNS" , "KC_LGUI" , "KC_NO" , "LCTL(KC_LALT)" , "LCA(KC_LSFT)",
|
||||
"KC_TRNS" , "KC_HOME" , "KC_PGDN" , "KC_END" , "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_UNDS" , "KC_PIPE" , "KC_QUOT" , "KC_TRNS",
|
||||
"KC_CIRC" , "KC_ASTR" , "KC_AMPR" , "KC_NO" , "KC_TRNS" , "KC_HASH" , "KC_TILD" , "KC_SLSH" , "KC_DQUO" , "KC_DLR",
|
||||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_MINS" , "KC_BSLS" , "KC_GRV" , "KC_TRNS",
|
||||
"RM_PREV" , "KC_TRNS" , "KC_TRNS" , "RM_NEXT"
|
||||
],
|
||||
[
|
||||
"KC_TRNS" , "KC_COLN" , "KC_LT" , "KC_GT" , "KC_SCLN" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
|
||||
"KC_LCBR" , "KC_RCBR" , "KC_LPRN" , "KC_RPRN" , "KC_AT" , "KC_TRNS" , "KC_NO" , "KC_EQL" , "KC_PLUS" , "KC_PERC",
|
||||
"KC_TRNS" , "KC_EXLM" , "KC_LBRC" , "KC_RBRC" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
|
||||
"KC_VOLD" , "KC_TRNS" , "KC_TRNS" , "KC_VOLU"
|
||||
],
|
||||
[
|
||||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_F7" , "KC_F8" , "KC_F9" , "KC_F10",
|
||||
"KC_TRNS" , "KC_NO" , "LCTL(KC_LALT)" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_F4" , "KC_F5" , "KC_F6" , "KC_F11",
|
||||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_F1" , "KC_F2" , "KC_F3" , "KC_F12",
|
||||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS"
|
||||
],
|
||||
[
|
||||
"KC_PSLS" , "KC_7" , "KC_8" , "KC_9" , "KC_PPLS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
|
||||
"KC_0" , "KC_1" , "KC_2" , "KC_3" , "KC_PMNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_NO" , "KC_TRNS",
|
||||
"KC_PAST" , "KC_4" , "KC_5" , "KC_6" , "KC_PEQL" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
|
||||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS"
|
||||
],
|
||||
[
|
||||
"KC_TRNS" , "KC_TRNS" , "KC_COLN" , "KC_ESC" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_DEL",
|
||||
"KC_TRNS" , "KC_PERC" , "KC_SLSH" , "KC_ENT" , "KC_TRNS" , "DF(1)" , "KC_LGUI" , "KC_TRNS" , "KC_TRNS" , "KC_TRNS",
|
||||
"KC_TRNS" , "KC_TRNS" , "KC_TRNS" , "KC_EXLM" , "KC_TRNS" , "DF(0)" , "KC_TRNS" , "RALT_T(KC_COMM)", "RCTL_T(KC_DOT)", "QK_BOOT",
|
||||
"KC_TRNS" , "KC_TAB" , "KC_NO" , "KC_TRNS"
|
||||
]
|
||||
],
|
||||
"config": {
|
||||
"mousekey": {
|
||||
"interval": 16,
|
||||
"time_to_max": 40,
|
||||
"delay": 100,
|
||||
"wheel_delay": 100
|
||||
},
|
||||
"tapping": {
|
||||
"term": 200,
|
||||
"permissive_hold": true,
|
||||
"force_hold": true
|
||||
}
|
||||
}
|
||||
}
|
||||
142
keyboards/splitkb/halcyon/ferris/keymaps/default/readme.md
Normal file
142
keyboards/splitkb/halcyon/ferris/keymaps/default/readme.md
Normal file
@@ -0,0 +1,142 @@
|
||||
# Halcyon Ferris's Default Keymap
|
||||
_This keymap is a copy of the [Ferris default keymap](https://github.com/qmk/qmk_firmware/tree/master/keyboards/ferris/keymaps/default), with the addition of RGB modifier keys._
|
||||
|
||||
A usable default keymap for the Ferris keyboard
|
||||
===============================================
|
||||
|
||||
Keymaps in general are quite personal, so it is difficult to come up with a default that will suit every user.
|
||||
|
||||
This keymap makes heavy use of keys behaving differently when tapped and held, so that all the keys one may need remain accessible despite the low number of thumb keys.
|
||||
|
||||
It comes with a number of layers to give access to most of the keys one may need on a keyboard. It is not meant to be the best possible keymap, but rather a good base on which to build a keymap that works for you.
|
||||
|
||||
This is not the only way to make 34 keys a comfortable typing experience, but it is one way to do so. If you don't already know of a better way, this may be as good a starting point as any :)
|
||||
|
||||
Note that this keymap was built from the perspective that it is OK to take a steep learning curve if it results in a keymap that is easier to use in the long run. This means that it may take more effort to learn this keymap than some alternatives. "Easy to use" was assessed against the workflow of the author, so your mileage may vary on some of the details.
|
||||
|
||||
What do all these layers do?
|
||||
----------------------------
|
||||
|
||||
### Layer 0: Base layer
|
||||
|
||||

|
||||
|
||||
On tapping the keys, our base layer is qwerty with space on the right homing thumb and backspace on the left homing thumb.
|
||||
|
||||
In this layer, the non-homing-thumb positions have 0 and 1. I recommend modifying this to some frequently accessed shortcut such as copy/paste, previous/next tab or anything that makes most sense in your own workflow. O and 1 are place-holders and make it easy to troubleshoot that all keys are working properly before soldering in the switches.
|
||||
The reason I recommend convenience shortcuts instead of more commonly used keys like tab or meta is that unhoming of the thumbs was a frequent source of typos for me when I used more than one thumb key frequently in the context of typing.
|
||||
|
||||
Despite being missing on this layer, "meta", "tab", "esc" and such are accessible from any other layer: see Layer 7.
|
||||
|
||||
The behaviour of some keys differ when held:
|
||||
* Both homing pinkies behave as shift.
|
||||
* Both bottom-row ring fingers behave as ctrl.
|
||||
* Both bottom-row middle fingers behave as alt.
|
||||
|
||||
* The homing left ring finger gives access to the Function keys layer
|
||||
* The homing right ring finger gives access to the Numbers layer
|
||||
* The homing left middle finger gives access to the Mouse layer
|
||||
* The homing right middle finger gives access to the Navigation layer
|
||||
* The homing left index finger gives access to the Right symbols layer
|
||||
* The homing right index finger gives access to the Left symbols layer
|
||||
* The homing right thumb gives access to the Always accessible layer
|
||||
|
||||
### Layer 1: Mouse
|
||||
|
||||

|
||||
|
||||
Layer 1 is a mouse layer: it can be used one-handed or two-handed. The most common way to use it is two handed, with left and right click on the homerow of the left hand and directions on the homerow of the right hand.
|
||||
Scrolling is available on the right hand with mid finger up and down for vertical scroll and index and ring finger down for horizontal scroll.
|
||||
On the right hand, left click and right click are also available with index and ring finger up to allow one handed operation. This can be particularly handy when enabling the mouse layer permanently (no need to hold the left middle finger), which can be done from Layer 7.
|
||||
|
||||
**Addition**: The Halcyon Ferris allows the RGB settings to be modified on this layer. This is an extra feature over the default Ferris keymap.
|
||||
|
||||
### Layer 2: Navigation
|
||||
|
||||

|
||||
|
||||
The navigation layer somewhat mirrors the mouse layer. It is accessed by holding the right middle finger and gives access to arrow keys on the left homerow. Page up and down, Home and End mirror the vertical scrolling and horizontal scrolling on the mouse layer.
|
||||
|
||||
On the right hand, in addition to ctrl and alt which are available through transparency, ctrl + alt, ctrl + alt + shift and meta are accessible on the homerow to enable common shortcuts in some window managers. This part is quite workflow dependent, so make sure to adapt it to your own workflow as appropriate.
|
||||
|
||||
### Layer 3: Right symbols
|
||||
|
||||

|
||||
|
||||
When holding down the left index, one may access about half of the symbols. The pinkies store `^` and `$` symbols that represent begin and end in vim. The left homerow hosts `*` and `&`, symbols which are related in the way that they represent some form of indirection in programming languages such as rust. On the right hand, most symbols used when navigating the command line are stored together, organized by columns of related symbols.
|
||||
|
||||
### Layer 4: Left symbols
|
||||
|
||||

|
||||
|
||||
When holding down the right index, one may access the other symbols. On the left hand, most of the different brackets are laid out. The most frequent ones (round brackets and curly brackets) get a spot on the homerow. The rest of the layer hosts the remaining symbols that are easier to access here than on any other layers.
|
||||
|
||||
### Layer 5: Function keys
|
||||
|
||||

|
||||
|
||||
By holding down the left ring finger, one may access the function keys, roughly in a numpad layout.
|
||||
This means that alt+F4 is easy to type, with F4 being on the homerow.
|
||||
There is a shortcut for ctrl+alt on the left hand to enable convenient switching between virtual terminals on Linux.
|
||||
|
||||
### Layer 6: Numbers
|
||||
|
||||

|
||||
|
||||
The number layer is accessed by holding the right ring finger. It hosts the numbers and some duplicated symbols that are commonly accessed next to numbers, such as mathematical operators.
|
||||
The number are layed out similarly to a numpad, but with the middle row and the homerow swapped so that the most used numbers: 0, 1, 2 and 3 are all available in homing positions.
|
||||
|
||||
### Layer 7: Always accessible
|
||||
|
||||

|
||||
|
||||
Layer 7 is accessed by holding the right homing thumb down. Because this position is left transparent from every other layer, this layer is always accessible.
|
||||
It gives access to some essential keys that would typically be accessed on a thumb cluster or pinkies, such as meta, enter, tab, esc and delete.
|
||||
|
||||
As the layer hosting esc, we duplicated some symbols here to allow for fast navigation in vim. For instance, esc, :, w, q can be done in a single roll.
|
||||
|
||||
Where is the keymap.c?
|
||||
----------------------
|
||||
|
||||
The keymap.c file is not published to the repository. It is generated from `keymap.json` by the build system.
|
||||
|
||||
This avoids duplicating information and allow users to edit their keymap from the QMK Configurator web interface.
|
||||
|
||||
How do I edit and update the keymap?
|
||||
------------------------------------
|
||||
|
||||
The `keymap.json` file is generated from the QMK Configurator interface and formatted for better readability in the context of the Ferris keyboard.
|
||||
|
||||
To edit it, you may:
|
||||
* Edit it directly from a text editor.
|
||||
* Edit it from the QMK Configurator.
|
||||
|
||||
If you decide to use the latter workflow, here are the steps to follow:
|
||||
|
||||
* From the [QMK Configurator](https://config.qmk.fm/#/splitkb/halcyon/ferris/rev1/LAYOUT_split_3x5_2), hit the "import QMK keymap json file" button (it has a drawing with an up arrow on it).
|
||||
* Browse to the location of your keymap (for example, `<your qmk repo>/keyboards/splitkb/halcyon/ferris/keymaps/default/keymap.json`)
|
||||
* Perform any modification to the keymap in the web UI
|
||||
* Export the keymap to your downloads folder, by hitting the "Export QMK keymap json file" button (it has a drawing with a down arrow on it)
|
||||
* Replace your original keymap with the one you just downloaded
|
||||
|
||||
I want to do more than the JSON format supports!
|
||||
-------------------------------------------------
|
||||
|
||||
While the `json` format is easy to use, it does lack certain functionality.
|
||||
|
||||
To add this, you need to convert it to the `c` format. Do keep in mind that this is generally a one-way operation.
|
||||
|
||||
First, from the root of your qmk repo, move to your keymap folder
|
||||
|
||||
```bash
|
||||
cd ./keyboards/splitkb/halcyon/ferris/keymaps/my_personal_keymap
|
||||
```
|
||||
|
||||
Next, convert your `keymap.json` to a `keymap.c`
|
||||
|
||||
```bash
|
||||
qmk json2c -o keymap.c keymap.json
|
||||
```
|
||||
|
||||
You can add custom C code to the newly generated `keymap.c` file. Do note that you have to use **either** a C file **or** a JSON file - you cannot do both!
|
||||
**If a JSON file is present, the C file is ignored.**
|
||||
31
keyboards/splitkb/halcyon/ferris/readme.md
Executable file
31
keyboards/splitkb/halcyon/ferris/readme.md
Executable file
@@ -0,0 +1,31 @@
|
||||
# Halcyon Ferris
|
||||
|
||||

|
||||
|
||||
The Halcyon Ferris rev1 is the first Ferris revision and the fifth keyboard in our Halcyon range. Similar to Aurora, all keyboards in the series share the same feature set. The key highlights:
|
||||
|
||||
- Halcyon keyboards come preassembled! You won't need a soldering iron.
|
||||
- You'll be able to install [VIK](https://github.com/sadekbaroudi/vik) modules.
|
||||
- It'll come fully documented, which includes the unboxing, assembly (with only a screwdriver), first installation and some advanced use cases.
|
||||
- Both the connection to the host device as well as the interconnect between the keyboard halves use USB C.
|
||||
- The controller has full ESD protection on all USB C ports, as well as all switch matrix GPIO!
|
||||
- The controller is interchangable. If part of your keyboard ever breaks, we can replace just the bits that need replacing.
|
||||
|
||||
* Keyboard Maintainer: [splitkb.com](https://github.com/splitkb.com)
|
||||
* Hardware Availability: [splitkb.com](https://splitkb.com).
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make splitkb/halcyon/ferris/rev1:default
|
||||
|
||||
The keyboard can be flashed by copying the resulting `.uf2` file onto the `RPI-RP2` flash drive.
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Reset button**: Double-tap the reset button at the top of the controller, right above the USB-C port.
|
||||
* **Bootloader reset**: Hold down the "Boot" button and plug in the keyboard.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
|
||||
32
keyboards/splitkb/halcyon/ferris/rev1/config.h
Executable file
32
keyboards/splitkb/halcyon/ferris/rev1/config.h
Executable file
@@ -0,0 +1,32 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
// Make it easier to enter the bootloader
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
|
||||
|
||||
// UART1, communication between the two halves
|
||||
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
|
||||
#define SERIAL_USART_TX_PIN GP28 // USART TX pin
|
||||
#define SERIAL_USART_RX_PIN GP29 // USART RX pin
|
||||
#define SERIAL_PIO_USE_PIO1 // Use PIO1 as PIO0 is used for WS2812 driver
|
||||
|
||||
// VBUS detection
|
||||
#define USB_VBUS_PIN GP1
|
||||
|
||||
//// VIK
|
||||
|
||||
// GPIO1 = GP27
|
||||
// GPIO2 = GP26
|
||||
// CS = GP13
|
||||
|
||||
#define I2C_DRIVER I2C0
|
||||
#define I2C1_SDA_PIN GP16
|
||||
#define I2C1_SCL_PIN GP17
|
||||
|
||||
#define SPI_DRIVER SPID1
|
||||
#define SPI_SCK_PIN GP14
|
||||
#define SPI_MOSI_PIN GP15
|
||||
#define SPI_MISO_PIN GP12
|
||||
11
keyboards/splitkb/halcyon/ferris/rev1/halconf.h
Normal file
11
keyboards/splitkb/halcyon/ferris/rev1/halconf.h
Normal file
@@ -0,0 +1,11 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
//// VIK
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#define HAL_USE_SPI TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
142
keyboards/splitkb/halcyon/ferris/rev1/keyboard.json
Executable file
142
keyboards/splitkb/halcyon/ferris/rev1/keyboard.json
Executable file
@@ -0,0 +1,142 @@
|
||||
{
|
||||
"keyboard_name": "Halcyon Ferris rev1",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP8", "GP6", "GP5", "GP9", "GP4"],
|
||||
"rows": ["GP10", "GP25", "GP7", "GP11"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"digital_rain": true,
|
||||
"dual_beacon": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"multisplash": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"flags": 2, "x": 71, "y": 15},
|
||||
{"flags": 2, "x": 51, "y": 8},
|
||||
{"flags": 2, "x": 10, "y": 13},
|
||||
{"flags": 2, "x": 10, "y": 42},
|
||||
{"flags": 2, "x": 41, "y": 45},
|
||||
{"flags": 2, "x": 76, "y": 50},
|
||||
{"flags": 4, "matrix": [0, 4], "x": 0, "y": 15},
|
||||
{"flags": 4, "matrix": [0, 3], "x": 20, "y": 5},
|
||||
{"flags": 4, "matrix": [0, 2], "x": 41, "y": 0},
|
||||
{"flags": 4, "matrix": [0, 1], "x": 61, "y": 4},
|
||||
{"flags": 4, "matrix": [0, 0], "x": 81, "y": 7},
|
||||
{"flags": 4, "matrix": [1, 4], "x": 0, "y": 31},
|
||||
{"flags": 4, "matrix": [1, 3], "x": 20, "y": 21},
|
||||
{"flags": 4, "matrix": [1, 2], "x": 41, "y": 16},
|
||||
{"flags": 4, "matrix": [1, 1], "x": 61, "y": 20},
|
||||
{"flags": 4, "matrix": [1, 0], "x": 81, "y": 23},
|
||||
{"flags": 4, "matrix": [2, 4], "x": 0, "y": 47},
|
||||
{"flags": 4, "matrix": [2, 3], "x": 20, "y": 37},
|
||||
{"flags": 4, "matrix": [2, 2], "x": 41, "y": 32},
|
||||
{"flags": 4, "matrix": [2, 1], "x": 61, "y": 36},
|
||||
{"flags": 4, "matrix": [2, 0], "x": 81, "y": 39},
|
||||
{"flags": 4, "matrix": [3, 1], "x": 71, "y": 60},
|
||||
{"flags": 4, "matrix": [3, 0], "x": 92, "y": 64},
|
||||
{"flags": 2, "x": 150, "y": 15},
|
||||
{"flags": 2, "x": 190, "y": 8},
|
||||
{"flags": 2, "x": 210, "y": 13},
|
||||
{"flags": 2, "x": 220, "y": 42},
|
||||
{"flags": 2, "x": 183, "y": 45},
|
||||
{"flags": 2, "x": 155, "y": 50},
|
||||
{"flags": 4, "matrix": [4, 0], "x": 143, "y": 7},
|
||||
{"flags": 4, "matrix": [4, 1], "x": 163, "y": 4},
|
||||
{"flags": 4, "matrix": [4, 2], "x": 183, "y": 0},
|
||||
{"flags": 4, "matrix": [4, 3], "x": 204, "y": 5},
|
||||
{"flags": 4, "matrix": [4, 4], "x": 224, "y": 15},
|
||||
{"flags": 4, "matrix": [5, 0], "x": 143, "y": 23},
|
||||
{"flags": 4, "matrix": [5, 1], "x": 163, "y": 20},
|
||||
{"flags": 4, "matrix": [5, 2], "x": 183, "y": 16},
|
||||
{"flags": 4, "matrix": [5, 3], "x": 204, "y": 21},
|
||||
{"flags": 4, "matrix": [5, 4], "x": 224, "y": 31},
|
||||
{"flags": 4, "matrix": [6, 0], "x": 143, "y": 39},
|
||||
{"flags": 4, "matrix": [6, 1], "x": 163, "y": 36},
|
||||
{"flags": 4, "matrix": [6, 2], "x": 183, "y": 32},
|
||||
{"flags": 4, "matrix": [6, 3], "x": 204, "y": 37},
|
||||
{"flags": 4, "matrix": [6, 4], "x": 224, "y": 47},
|
||||
{"flags": 4, "matrix": [7, 0], "x": 132, "y": 64},
|
||||
{"flags": 4, "matrix": [7, 1], "x": 153, "y": 60}
|
||||
],
|
||||
"max_brightness": 128,
|
||||
"sleep": true,
|
||||
"split_count": [23, 23]
|
||||
},
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"handedness": {
|
||||
"pin": "GP20"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"right": {
|
||||
"cols": ["GP8", "GP25", "GP7", "GP4", "GP9"],
|
||||
"rows": ["GP6", "GP5", "GP10", "GP11"]
|
||||
}
|
||||
},
|
||||
"serial": {
|
||||
"driver": "vendor"
|
||||
},
|
||||
"transport": {
|
||||
"sync": {
|
||||
"matrix_state": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"usb": {
|
||||
"pid": "0xE050"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP3"
|
||||
}
|
||||
}
|
||||
14
keyboards/splitkb/halcyon/ferris/rev1/mcuconf.h
Normal file
14
keyboards/splitkb/halcyon/ferris/rev1/mcuconf.h
Normal file
@@ -0,0 +1,14 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
//// VIK
|
||||
|
||||
#undef RP_I2C_USE_I2C0
|
||||
#define RP_I2C_USE_I2C0 TRUE
|
||||
|
||||
#undef RP_SPI_USE_SPI1
|
||||
#define RP_SPI_USE_SPI1 TRUE
|
||||
73
keyboards/splitkb/halcyon/lily58/info.json
Executable file
73
keyboards/splitkb/halcyon/lily58/info.json
Executable file
@@ -0,0 +1,73 @@
|
||||
{
|
||||
"manufacturer": "splitkb.com",
|
||||
"maintainer": "splitkb.com",
|
||||
"url": "https://splitkb.com",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"vid": "0x8D1D"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label": "L01", "matrix": [0, 0], "x": 0, "y": 0.5},
|
||||
{"label": "L02", "matrix": [0, 1], "x": 1, "y": 0.375},
|
||||
{"label": "L03", "matrix": [0, 2], "x": 2, "y": 0.125},
|
||||
{"label": "L04", "matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"label": "L05", "matrix": [0, 4], "x": 4, "y": 0.125},
|
||||
{"label": "L06", "matrix": [0, 5], "x": 5, "y": 0.25},
|
||||
{"label": "R06", "matrix": [5, 5], "x": 10.5, "y": 0.25},
|
||||
{"label": "R05", "matrix": [5, 4], "x": 11.5, "y": 0.125},
|
||||
{"label": "R04", "matrix": [5, 3], "x": 12.5, "y": 0},
|
||||
{"label": "R03", "matrix": [5, 2], "x": 13.5, "y": 0.125},
|
||||
{"label": "R02", "matrix": [5, 1], "x": 14.5, "y": 0.375},
|
||||
{"label": "R01", "matrix": [5, 0], "x": 15.5, "y": 0.5},
|
||||
{"label": "L07", "matrix": [1, 0], "x": 0, "y": 1.5},
|
||||
{"label": "L08", "matrix": [1, 1], "x": 1, "y": 1.375},
|
||||
{"label": "L09", "matrix": [1, 2], "x": 2, "y": 1.125},
|
||||
{"label": "L10", "matrix": [1, 3], "x": 3, "y": 1},
|
||||
{"label": "L11", "matrix": [1, 4], "x": 4, "y": 1.125},
|
||||
{"label": "L12", "matrix": [1, 5], "x": 5, "y": 1.25},
|
||||
{"label": "R12", "matrix": [6, 5], "x": 10.5, "y": 1.25},
|
||||
{"label": "R11", "matrix": [6, 4], "x": 11.5, "y": 1.125},
|
||||
{"label": "R10", "matrix": [6, 3], "x": 12.5, "y": 1},
|
||||
{"label": "R09", "matrix": [6, 2], "x": 13.5, "y": 1.125},
|
||||
{"label": "R08", "matrix": [6, 1], "x": 14.5, "y": 1.375},
|
||||
{"label": "R07", "matrix": [6, 0], "x": 15.5, "y": 1.5},
|
||||
{"label": "L13", "matrix": [2, 0], "x": 0, "y": 2.5},
|
||||
{"label": "L14", "matrix": [2, 1], "x": 1, "y": 2.375},
|
||||
{"label": "L15", "matrix": [2, 2], "x": 2, "y": 2.125},
|
||||
{"label": "L16", "matrix": [2, 3], "x": 3, "y": 2},
|
||||
{"label": "L17", "matrix": [2, 4], "x": 4, "y": 2.125},
|
||||
{"label": "L18", "matrix": [2, 5], "x": 5, "y": 2.25},
|
||||
{"label": "R18", "matrix": [7, 5], "x": 10.5, "y": 2.25},
|
||||
{"label": "R17", "matrix": [7, 4], "x": 11.5, "y": 2.125},
|
||||
{"label": "R16", "matrix": [7, 3], "x": 12.5, "y": 2},
|
||||
{"label": "R15", "matrix": [7, 2], "x": 13.5, "y": 2.125},
|
||||
{"label": "R14", "matrix": [7, 1], "x": 14.5, "y": 2.375},
|
||||
{"label": "R13", "matrix": [7, 0], "x": 15.5, "y": 2.5},
|
||||
{"label": "L20", "matrix": [3, 0], "x": 0, "y": 3.5},
|
||||
{"label": "L21", "matrix": [3, 1], "x": 1, "y": 3.375},
|
||||
{"label": "L22", "matrix": [3, 2], "x": 2, "y": 3.125},
|
||||
{"label": "L23", "matrix": [3, 3], "x": 3, "y": 3},
|
||||
{"label": "L24", "matrix": [3, 4], "x": 4, "y": 3.125},
|
||||
{"label": "L25", "matrix": [3, 5], "x": 5, "y": 3.25},
|
||||
{"label": "L19", "matrix": [4, 1], "x": 6, "y": 2.75},
|
||||
{"label": "R19", "matrix": [9, 1], "x": 9.5, "y": 2.75},
|
||||
{"label": "R25", "matrix": [8, 5], "x": 10.5, "y": 3.25},
|
||||
{"label": "R24", "matrix": [8, 4], "x": 11.5, "y": 3.125},
|
||||
{"label": "R23", "matrix": [8, 3], "x": 12.5, "y": 3},
|
||||
{"label": "R22", "matrix": [8, 2], "x": 13.5, "y": 3.125},
|
||||
{"label": "R21", "matrix": [8, 1], "x": 14.5, "y": 3.375},
|
||||
{"label": "R20", "matrix": [8, 0], "x": 15.5, "y": 3.5},
|
||||
{"label": "L26", "matrix": [4, 2], "x": 2.5, "y": 4.15},
|
||||
{"label": "L27", "matrix": [4, 3], "x": 3.5, "y": 4.15},
|
||||
{"label": "L28", "matrix": [4, 4], "x": 4.5, "y": 4.25},
|
||||
{"label": "L29", "matrix": [4, 5], "x": 6, "y": 4.25},
|
||||
{"label": "R29", "matrix": [9, 5], "x": 9.5, "y": 4.25},
|
||||
{"label": "R28", "matrix": [9, 4], "x": 11, "y": 4.25},
|
||||
{"label": "R27", "matrix": [9, 3], "x": 12, "y": 4.15},
|
||||
{"label": "R26", "matrix": [9, 2], "x": 13, "y": 4.15}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
47
keyboards/splitkb/halcyon/lily58/keymaps/default/keymap.json
Normal file
47
keyboards/splitkb/halcyon/lily58/keymaps/default/keymap.json
Normal file
@@ -0,0 +1,47 @@
|
||||
{
|
||||
"keyboard": "splitkb/halcyon/lily58/rev2",
|
||||
"keymap": "default",
|
||||
"version": 1,
|
||||
"layout": "LAYOUT",
|
||||
"layers": [
|
||||
[
|
||||
"KC_ESC" , "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5" , "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "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_MINS",
|
||||
"KC_LCTL", "KC_A" , "KC_S" , "KC_D" , "KC_F" , "KC_G" , "KC_H" , "KC_J" , "KC_K" , "KC_L" , "KC_SCLN", "KC_QUOT",
|
||||
"KC_LSFT", "KC_Z" , "KC_X" , "KC_C" , "KC_V" , "KC_B" , "KC_LBRC", "KC_RBRC", "KC_N" , "KC_M" , "KC_COMM", "KC_DOT" , "KC_SLSH", "KC_RSFT",
|
||||
"KC_LALT", "KC_LGUI", "MO(1)" , "KC_SPC" , "KC_ENT" , "MO(2)" , "KC_BSPC", "KC_RGUI"
|
||||
],
|
||||
[
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"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_GRV" , "KC_EXLM", "KC_AT" , "KC_HASH", "KC_DLR" , "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN", "KC_TILD",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "XXXXXXX", "KC_UNDS", "KC_PLUS", "KC_LCBR", "KC_RCBR", "KC_PIPE",
|
||||
"_______", "_______", "_______", "_______", "_______", "MO(3)" , "_______", "_______"
|
||||
],
|
||||
[
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______",
|
||||
"KC_GRV" , "KC_1" , "KC_2" , "KC_3" , "KC_4" , "KC_5" , "KC_6" , "KC_7" , "KC_8" , "KC_9" , "KC_0" , "_______",
|
||||
"KC_F1" , "KC_F2" , "KC_F3" , "KC_F4" , "KC_F5" , "KC_F6" , "XXXXXXX", "KC_LEFT", "KC_DOWN", "KC_UP" , "KC_RGHT", "XXXXXXX",
|
||||
"KC_F7" , "KC_F8" , "KC_F9" , "KC_F10" , "KC_F11" , "KC_F12" , "_______", "_______", "KC_PLUS", "KC_MINS", "KC_EQL" , "KC_LBRC", "KC_RBRC", "KC_BSLS",
|
||||
"_______", "_______", "MO(3)" , "_______", "_______", "_______", "_______", "_______"
|
||||
],
|
||||
[
|
||||
"QK_BOOT", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX",
|
||||
"XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX",
|
||||
"XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "RM_TOGG", "RM_HUEU", "RM_SATU", "RM_VALU",
|
||||
"XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "XXXXXXX", "RM_NEXT", "RM_HUED", "RM_SATD", "RM_VALD",
|
||||
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______"
|
||||
]
|
||||
],
|
||||
"config": {
|
||||
"features": {
|
||||
"encoder_map": true
|
||||
}
|
||||
},
|
||||
"encoders": [
|
||||
[{"ccw": "KC_VOLD", "cw": "KC_VOLU"}, {"ccw": "KC_PGUP", "cw": "KC_PGDN"}],
|
||||
[{"ccw": "_______", "cw": "_______"}, {"ccw": "_______", "cw": "_______"}],
|
||||
[{"ccw": "_______", "cw": "_______"}, {"ccw": "_______", "cw": "_______"}],
|
||||
[{"ccw": "_______", "cw": "_______"}, {"ccw": "_______", "cw": "_______"}]
|
||||
]
|
||||
}
|
||||
88
keyboards/splitkb/halcyon/lily58/keymaps/default/readme.md
Normal file
88
keyboards/splitkb/halcyon/lily58/keymaps/default/readme.md
Normal file
@@ -0,0 +1,88 @@
|
||||
# Halcyon Lily58's Default Keymap
|
||||
_This keymap is a copy of the [Lily58 default keymap](https://github.com/qmk/qmk_firmware/tree/master/keyboards/lily58/keymaps/default), with slight modifications._
|
||||
|
||||
A simple default keymap for the Halcyon Lily58
|
||||
=============================================
|
||||
|
||||
Keymaps in general are quite personal, so it is difficult to come up with a default that will suit every user. We hope this keymap serves as a good starting point for your own - although it should be fairly usable out-of-the-box.
|
||||
|
||||
What do all these layers do?
|
||||
----------------------------
|
||||
|
||||
### Layer 0: Base layer
|
||||
|
||||

|
||||
|
||||
This is where your basic letters live.
|
||||
|
||||
The homing thumb fingers are used to access the different layers.
|
||||
|
||||
* The homing left thumb finger gives access to the Symbols (or lower) layer
|
||||
* The homing right thumb finger gives access to the Navigation (or raise) layer
|
||||
* Pressing both homing thumb fingers gives access to the Adjust layer
|
||||
|
||||
### Layer 1: Lower
|
||||
|
||||

|
||||
|
||||
The Lower layer gives access to the F keys on the second row, and shifted number keys on the home row. It also provides some shifted symbol keys.
|
||||
|
||||
### Layer 2: Raise
|
||||
|
||||

|
||||
|
||||
The Raise layer gives access the arrow keys on the right hand, in addition to some unshifted symbols. The left hand provides an alternative set of F keys, while the second row provides an alternative set of number keys.
|
||||
|
||||
### Layer 3: Adjust
|
||||
|
||||

|
||||
|
||||
The Adjust layer exposes RGB adjustment keys on the right hand.
|
||||
|
||||
Where is the keymap.c?
|
||||
----------------------
|
||||
|
||||
The keymap.c file is not published to the repository. It is generated from `keymap.json` by the build system.
|
||||
|
||||
This avoids duplicating information and allow users to edit their keymap from the QMK Configurator web interface.
|
||||
|
||||
How do I edit and update the keymap?
|
||||
------------------------------------
|
||||
|
||||
The `keymap.json` file is generated from the QMK Configurator interface and formatted for better readability in the context of the Ferris keyboard.
|
||||
|
||||
To edit it, you may:
|
||||
* Edit it directly from a text editor.
|
||||
* Edit it from the QMK Configurator.
|
||||
|
||||
If you decide to use the latter workflow, here are the steps to follow:
|
||||
|
||||
* From the [QMK Configurator](https://config.qmk.fm/#/splitkb/halcyon/lily58/rev2/LAYOUT), hit the "import QMK keymap json file" button (it has a drawing with an up arrow on it).
|
||||
* Browse to the location of your keymap (for example, `<your qmk repo>/keyboards/splitkb/halcyon/lily58/keymaps/default/keymap.json`)
|
||||
* Perform any modification to the keymap in the web UI
|
||||
* Export the keymap to your downloads folder, by hitting the "Export QMK keymap json file" button (it has a drawing with a down arrow on it)
|
||||
* Replace your original keymap with the one you just downloaded
|
||||
|
||||
_**Note:** At the time of writing (the 24th of October 2022), not every feature used in the default keymap is supported by the QMK Configurator. You cannot yet upload the default `keymap.json` due to a file format mismatch - use the "Load Default" button to load the default keymap instead. Additionally, custom configuration options are still being worked on: if your keymap depends on them, please compile your firmware offline for now._
|
||||
|
||||
I want to do more than the JSON format supports!
|
||||
-------------------------------------------------
|
||||
|
||||
While the `json` format is easy to use, it does lack certain functionality - most notably custom OLED or encoder behaviour.
|
||||
|
||||
To add this, you need to convert it to the `c` format. Do keep in mind that this is generally a one-way operation.
|
||||
|
||||
First, from the root of your qmk repo, move to your keymap folder
|
||||
|
||||
```bash
|
||||
cd ./keyboards/splitkb/halcyon/lily58/keymaps/my_personal_keymap
|
||||
```
|
||||
|
||||
Next, convert your `keymap.json` to a `keymap.c`
|
||||
|
||||
```bash
|
||||
qmk json2c -o keymap.c keymap.json
|
||||
```
|
||||
|
||||
You can add custom C code to the newly generated `keymap.c` file. Do note that you have to use **either** a C file **or** a JSON file - you cannot do both!
|
||||
**If a JSON file is present, the C file is ignored.**
|
||||
31
keyboards/splitkb/halcyon/lily58/readme.md
Executable file
31
keyboards/splitkb/halcyon/lily58/readme.md
Executable file
@@ -0,0 +1,31 @@
|
||||
# Halcyon Lily58
|
||||
|
||||

|
||||
|
||||
The Halcyon Lily58 rev2 is the second Lily58 revision and the fourth keyboard in our Halcyon range. Similar to Aurora, all keyboards in the series share the same feature set. The key highlights:
|
||||
|
||||
- Halcyon keyboards come preassembled! You won't need a soldering iron.
|
||||
- You'll be able to install [VIK](https://github.com/sadekbaroudi/vik) modules.
|
||||
- It'll come fully documented, which includes the unboxing, assembly (with only a screwdriver), first installation and some advanced use cases.
|
||||
- Both the connection to the host device as well as the interconnect between the keyboard halves use USB C.
|
||||
- The controller has full ESD protection on all USB C ports, as well as all switch matrix GPIO!
|
||||
- The controller is interchangable. If part of your keyboard ever breaks, we can replace just the bits that need replacing.
|
||||
|
||||
* Keyboard Maintainer: [splitkb.com](https://github.com/splitkb.com)
|
||||
* Hardware Availability: [splitkb.com](https://splitkb.com).
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make splitkb/halcyon/lily58/rev2:default
|
||||
|
||||
The keyboard can be flashed by copying the resulting `.uf2` file onto the `RPI-RP2` flash drive.
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Reset button**: Double-tap the reset button at the top of the controller, right above the USB-C port.
|
||||
* **Bootloader reset**: Hold down the "Boot" button and plug in the keyboard.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available.
|
||||
32
keyboards/splitkb/halcyon/lily58/rev2/config.h
Executable file
32
keyboards/splitkb/halcyon/lily58/rev2/config.h
Executable file
@@ -0,0 +1,32 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
// Make it easier to enter the bootloader
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
|
||||
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 1000U
|
||||
|
||||
// UART1, communication between the two halves
|
||||
#define SERIAL_USART_FULL_DUPLEX // Enable full duplex operation mode.
|
||||
#define SERIAL_USART_TX_PIN GP28 // USART TX pin
|
||||
#define SERIAL_USART_RX_PIN GP29 // USART RX pin
|
||||
#define SERIAL_PIO_USE_PIO1 // Use PIO1 as PIO0 is used for WS2812 driver
|
||||
|
||||
// VBUS detection
|
||||
#define USB_VBUS_PIN GP1
|
||||
|
||||
//// VIK
|
||||
|
||||
// GPIO1 = GP27
|
||||
// GPIO2 = GP26
|
||||
// CS = GP13
|
||||
|
||||
#define I2C_DRIVER I2C0
|
||||
#define I2C1_SDA_PIN GP16
|
||||
#define I2C1_SCL_PIN GP17
|
||||
|
||||
#define SPI_DRIVER SPID1
|
||||
#define SPI_SCK_PIN GP14
|
||||
#define SPI_MOSI_PIN GP15
|
||||
#define SPI_MISO_PIN GP12
|
||||
11
keyboards/splitkb/halcyon/lily58/rev2/halconf.h
Normal file
11
keyboards/splitkb/halcyon/lily58/rev2/halconf.h
Normal file
@@ -0,0 +1,11 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
//// VIK
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#define HAL_USE_SPI TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
170
keyboards/splitkb/halcyon/lily58/rev2/keyboard.json
Executable file
170
keyboards/splitkb/halcyon/lily58/rev2/keyboard.json
Executable file
@@ -0,0 +1,170 @@
|
||||
{
|
||||
"keyboard_name": "Halcyon Lily58 rev2",
|
||||
"bootloader": "rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP23", "pin_b": "GP22", "resolution": 2}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP8", "GP11", "GP7", "GP6", "GP5", "GP10"],
|
||||
"rows": ["GP19", "GP20", "GP25", "GP4", "GP9"]
|
||||
},
|
||||
"processor": "RP2040",
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"digital_rain": true,
|
||||
"dual_beacon": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"multisplash": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"driver": "ws2812",
|
||||
"layout": [
|
||||
{"x": 51, "y": 13, "flags": 2},
|
||||
{"x": 22, "y": 18, "flags": 2},
|
||||
{"x": 22, "y": 53, "flags": 2},
|
||||
{"x": 58, "y": 60, "flags": 2},
|
||||
{"x": 87, "y": 56, "flags": 2},
|
||||
{"matrix": [0, 0], "x": 0, "y": 8, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 14, "y": 6, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 29, "y": 2, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 43, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 58, "y": 2, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 72, "y": 4, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 0, "y": 23, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 14, "y": 21, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 29, "y": 17, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 43, "y": 15, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 58, "y": 17, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 72, "y": 19, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 0, "y": 38, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 14, "y": 36, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 29, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 43, "y": 30, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 58, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 72, "y": 34, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 0, "y": 53, "flags": 4},
|
||||
{"matrix": [3, 1], "x": 14, "y": 51, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 29, "y": 47, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 43, "y": 45, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 58, "y": 47, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 72, "y": 49, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 87, "y": 41, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 36, "y": 62, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 51, "y": 62, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 65, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 87, "y": 64, "flags": 4},
|
||||
{"x": 173, "y": 13, "flags": 2},
|
||||
{"x": 202, "y": 18, "flags": 2},
|
||||
{"x": 202, "y": 53, "flags": 2},
|
||||
{"x": 166, "y": 60, "flags": 2},
|
||||
{"x": 137, "y": 56, "flags": 2},
|
||||
{"matrix": [5, 5], "x": 152, "y": 4, "flags": 4},
|
||||
{"matrix": [5, 4], "x": 166, "y": 2, "flags": 4},
|
||||
{"matrix": [5, 3], "x": 181, "y": 0, "flags": 4},
|
||||
{"matrix": [5, 2], "x": 195, "y": 2, "flags": 4},
|
||||
{"matrix": [5, 1], "x": 210, "y": 6, "flags": 4},
|
||||
{"matrix": [5, 0], "x": 224, "y": 8, "flags": 4},
|
||||
{"matrix": [6, 5], "x": 152, "y": 19, "flags": 4},
|
||||
{"matrix": [6, 4], "x": 166, "y": 17, "flags": 4},
|
||||
{"matrix": [6, 3], "x": 181, "y": 15, "flags": 4},
|
||||
{"matrix": [6, 2], "x": 195, "y": 17, "flags": 4},
|
||||
{"matrix": [6, 1], "x": 210, "y": 21, "flags": 4},
|
||||
{"matrix": [6, 0], "x": 224, "y": 23, "flags": 4},
|
||||
{"matrix": [7, 5], "x": 152, "y": 34, "flags": 4},
|
||||
{"matrix": [7, 4], "x": 166, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 3], "x": 181, "y": 30, "flags": 4},
|
||||
{"matrix": [7, 2], "x": 195, "y": 32, "flags": 4},
|
||||
{"matrix": [7, 1], "x": 210, "y": 36, "flags": 4},
|
||||
{"matrix": [7, 0], "x": 224, "y": 38, "flags": 4},
|
||||
{"matrix": [9, 1], "x": 137, "y": 41, "flags": 4},
|
||||
{"matrix": [8, 5], "x": 152, "y": 49, "flags": 4},
|
||||
{"matrix": [8, 4], "x": 166, "y": 47, "flags": 4},
|
||||
{"matrix": [8, 3], "x": 181, "y": 45, "flags": 4},
|
||||
{"matrix": [8, 2], "x": 195, "y": 47, "flags": 4},
|
||||
{"matrix": [8, 1], "x": 210, "y": 51, "flags": 4},
|
||||
{"matrix": [8, 0], "x": 224, "y": 53, "flags": 4},
|
||||
{"matrix": [9, 5], "x": 137, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 4], "x": 159, "y": 64, "flags": 4},
|
||||
{"matrix": [9, 3], "x": 173, "y": 62, "flags": 4},
|
||||
{"matrix": [9, 2], "x": 188, "y": 62, "flags": 4}
|
||||
],
|
||||
"max_brightness": 128,
|
||||
"sleep": true,
|
||||
"split_count": [34, 34]
|
||||
},
|
||||
"split": {
|
||||
"enabled": true,
|
||||
"handedness": {
|
||||
"pin": "GP24"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"right": {
|
||||
"cols": ["GP4", "GP9", "GP10", "GP5", "GP6", "GP8"],
|
||||
"rows": ["GP19", "GP20", "GP25", "GP7", "GP11"]
|
||||
}
|
||||
},
|
||||
"serial": {
|
||||
"driver": "vendor"
|
||||
},
|
||||
"transport": {
|
||||
"sync": {
|
||||
"matrix_state": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"usb": {
|
||||
"pid": "0xEA1D"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP3"
|
||||
}
|
||||
}
|
||||
14
keyboards/splitkb/halcyon/lily58/rev2/mcuconf.h
Normal file
14
keyboards/splitkb/halcyon/lily58/rev2/mcuconf.h
Normal file
@@ -0,0 +1,14 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
//// VIK
|
||||
|
||||
#undef RP_I2C_USE_I2C0
|
||||
#define RP_I2C_USE_I2C0 TRUE
|
||||
|
||||
#undef RP_SPI_USE_SPI1
|
||||
#define RP_SPI_USE_SPI1 TRUE
|
||||
28
keyboards/splitkb/halcyon/lily58/rev2/rev2.c
Normal file
28
keyboards/splitkb/halcyon/lily58/rev2/rev2.c
Normal file
@@ -0,0 +1,28 @@
|
||||
// Copyright 2025 splitkb.com (support@splitkb.com)
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef ENCODER_ENABLE
|
||||
bool encoder_update_kb(uint8_t index, bool clockwise) {
|
||||
if (!encoder_update_user(index, clockwise)) {
|
||||
return false;
|
||||
}
|
||||
if (index == 0) {
|
||||
// Volume control
|
||||
if (clockwise) {
|
||||
tap_code(KC_VOLU);
|
||||
} else {
|
||||
tap_code(KC_VOLD);
|
||||
}
|
||||
} else if (index == 1) {
|
||||
// Page up/Page down
|
||||
if (clockwise) {
|
||||
tap_code(KC_PGDN);
|
||||
} else {
|
||||
tap_code(KC_PGUP);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
52
keyboards/togkey/pad/keyboard.json
Normal file
52
keyboards/togkey/pad/keyboard.json
Normal file
@@ -0,0 +1,52 @@
|
||||
{
|
||||
"manufacturer": "TogKey",
|
||||
"keyboard_name": "Pad",
|
||||
"maintainer": "togkey86",
|
||||
"development_board": "promicro_rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP2", "GP3", "GP4"],
|
||||
"rows": ["GP5", "GP6"]
|
||||
},
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"hue_steps": 10,
|
||||
"led_count": 5
|
||||
},
|
||||
"url": "https://togkey.com/products/togkey-pad",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x8686",
|
||||
"vid": "0xFEED"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP7"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0.5, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1.5, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
11
keyboards/togkey/pad/keymaps/default/keymap.c
Normal file
11
keyboards/togkey/pad/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,11 @@
|
||||
// Copyright 2025 TogKey
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
KC_VOLD, KC_VOLU,
|
||||
KC_MPRV, KC_MPLY, KC_MNXT
|
||||
)
|
||||
};
|
||||
27
keyboards/togkey/pad/readme.md
Normal file
27
keyboards/togkey/pad/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# pad
|
||||
|
||||

|
||||
|
||||
A simple 5-Key Macropad based off an RP2040 and custom PCB.
|
||||
|
||||
* Keyboard Maintainer: [Jon Henry](https://github.com/togkey86)
|
||||
* Hardware Supported: TogKey Pad PCB, RP2040 Pro Micro Development Board
|
||||
* Hardware Availability: (https://togkey.com)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make togkey/pad:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make togkey/pad: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
|
||||
10
keyboards/togkey/pad_plus/config.h
Normal file
10
keyboards/togkey/pad_plus/config.h
Normal file
@@ -0,0 +1,10 @@
|
||||
// Copyright 2025 TogKey
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
//OLED
|
||||
#define OLED_DISPLAY_128X64
|
||||
#define I2C_DRIVER I2CD1
|
||||
#define I2C1_SDA_PIN GP2
|
||||
#define I2C1_SCL_PIN GP3
|
||||
63
keyboards/togkey/pad_plus/keyboard.json
Normal file
63
keyboards/togkey/pad_plus/keyboard.json
Normal file
@@ -0,0 +1,63 @@
|
||||
{
|
||||
"manufacturer": "TogKey",
|
||||
"keyboard_name": "Pad Plus",
|
||||
"maintainer": "togkey86",
|
||||
"development_board": "promicro_rp2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "GP28", "pin_b": "GP29", "resolution": 2}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"oled": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["GP4", "GP5", "GP6"],
|
||||
"rows": ["GP26", "GP22", "GP20"]
|
||||
},
|
||||
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"hue_steps": 10,
|
||||
"led_count": 3
|
||||
},
|
||||
"url": "https://togkey.com/products/togkey-pad-plus",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x8687",
|
||||
"vid": "0xFEED"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "vendor",
|
||||
"pin": "GP27"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1},
|
||||
{"matrix": [1, 1], "x": 1, "y": 1},
|
||||
{"matrix": [1, 2], "x": 2, "y": 1},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2},
|
||||
{"matrix": [2, 1], "x": 1, "y": 2},
|
||||
{"matrix": [2, 2], "x": 2, "y": 2}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
30
keyboards/togkey/pad_plus/keymaps/default/keymap.c
Normal file
30
keyboards/togkey/pad_plus/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,30 @@
|
||||
// Copyright 2025 TogKey
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later6
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(
|
||||
TO(1),
|
||||
KC_VOLD, KC_MUTE, KC_VOLU,
|
||||
KC_MPRV, KC_MPLY, KC_MNXT
|
||||
),
|
||||
|
||||
[1] = LAYOUT(
|
||||
TO(2),
|
||||
KC_1, KC_2, KC_3,
|
||||
KC_4, KC_5, KC_6
|
||||
),
|
||||
|
||||
[2] = LAYOUT(
|
||||
TO(3),
|
||||
KC_A, KC_B, KC_C,
|
||||
KC_D, KC_E, KC_F
|
||||
),
|
||||
|
||||
[3] = LAYOUT(
|
||||
TO(0),
|
||||
KC_J, KC_K, KC_L,
|
||||
KC_M, KC_N, KC_O
|
||||
)
|
||||
};
|
||||
731
keyboards/togkey/pad_plus/pad_plus.c
Normal file
731
keyboards/togkey/pad_plus/pad_plus.c
Normal file
@@ -0,0 +1,731 @@
|
||||
// Copyright 2025 TogKey
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include "quantum.h"
|
||||
|
||||
#if defined(OLED_ENABLE)
|
||||
oled_rotation_t oled_init_kb(oled_rotation_t rotation) {
|
||||
return OLED_ROTATION_180;
|
||||
}
|
||||
|
||||
static const char image_layer_1[] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x8F, 0x8F, 0x70, 0xFC, 0xFE, 0xFE,
|
||||
0xCF, 0x8F, 0x8F, 0x8F, 0xFE, 0xFE,
|
||||
0xFC, 0x78, 0xF8, 0xFC, 0xFE, 0xFF,
|
||||
0x8F, 0x8F, 0x8F, 0xCE, 0xFF, 0xFF,
|
||||
0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xF8, 0xFC, 0xFE, 0xDF, 0x8F,
|
||||
0x07, 0x23, 0xFC, 0xFE, 0xFE, 0xFF,
|
||||
0xB7, 0xB7, 0xBF, 0xBE, 0xBE, 0xB8,
|
||||
0x07, 0x1F, 0x3F, 0xFE, 0xFC, 0xF0,
|
||||
0xF0, 0xFE, 0xFF, 0x3F, 0x0F, 0x03,
|
||||
0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
|
||||
0x03, 0x07, 0x07, 0x03, 0x00, 0x01,
|
||||
0x03, 0x03, 0x03, 0x07, 0x07, 0x03,
|
||||
0x03, 0x03, 0x01, 0x00, 0x00, 0x39,
|
||||
0x7B, 0x7B, 0x77, 0x77, 0x73, 0x7B,
|
||||
0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x03,
|
||||
0x03, 0x03, 0x03, 0x00, 0x01, 0x03,
|
||||
0x03, 0x03, 0x03, 0x02, 0x00, 0x01,
|
||||
0x03, 0x03, 0x07, 0x07, 0x03, 0x03,
|
||||
0x03, 0x01, 0x00, 0x60, 0x78, 0x7E,
|
||||
0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x07, 0x07, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xF0, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0,
|
||||
0x78, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0xF0,
|
||||
0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00,
|
||||
0xC0, 0xF0, 0xF0, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x78, 0xF0, 0xE0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xF0, 0xF0, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0xF0, 0xF0,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xBF, 0x9F, 0xDF, 0x0F,
|
||||
0x0F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x60, 0x70,
|
||||
0x30, 0x30, 0x30, 0xF0, 0xF0, 0xC0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x70, 0x70, 0x30, 0x30, 0xF0,
|
||||
0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
|
||||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
|
||||
0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xBF,
|
||||
0xBF, 0x80, 0x80, 0xBF, 0xBF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
|
||||
0xF0, 0xF8, 0xFC, 0xEE, 0xEF, 0xE7,
|
||||
0xE3, 0xC1, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x70, 0x70, 0xE7, 0xE7,
|
||||
0xE7, 0xEF, 0xFF, 0x7C, 0x10, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x1C, 0x1F,
|
||||
0x1F, 0x1B, 0x18, 0xFF, 0xFF, 0x7F,
|
||||
0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x7F, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF,
|
||||
0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00,
|
||||
0x1F, 0x7F, 0xFF, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0x7F, 0x7F, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0x7F,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
static const char image_layer_2[] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x8F, 0x8F, 0x70, 0xFC, 0xFE, 0xFE,
|
||||
0xCF, 0x8F, 0x8F, 0x8F, 0xFE, 0xFE,
|
||||
0xFC, 0x78, 0xF8, 0xFC, 0xFE, 0xFF,
|
||||
0x8F, 0x8F, 0x8F, 0xCE, 0xFF, 0xFF,
|
||||
0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xF8, 0xFC, 0xFE, 0xDF, 0x8F,
|
||||
0x07, 0x23, 0xFC, 0xFE, 0xFE, 0xFF,
|
||||
0xB7, 0xB7, 0xBF, 0xBE, 0xBE, 0xB8,
|
||||
0x07, 0x1F, 0x3F, 0xFE, 0xFC, 0xF0,
|
||||
0xF0, 0xFE, 0xFF, 0x3F, 0x0F, 0x03,
|
||||
0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
|
||||
0x03, 0x07, 0x07, 0x03, 0x00, 0x01,
|
||||
0x03, 0x03, 0x03, 0x07, 0x07, 0x03,
|
||||
0x03, 0x03, 0x01, 0x00, 0x00, 0x39,
|
||||
0x7B, 0x7B, 0x77, 0x77, 0x73, 0x7B,
|
||||
0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x03,
|
||||
0x03, 0x03, 0x03, 0x00, 0x01, 0x03,
|
||||
0x03, 0x03, 0x03, 0x02, 0x00, 0x01,
|
||||
0x03, 0x03, 0x07, 0x07, 0x03, 0x03,
|
||||
0x03, 0x01, 0x00, 0x60, 0x78, 0x7E,
|
||||
0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x07, 0x07, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xF0, 0xF8, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0xF8, 0xF0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF0,
|
||||
0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00,
|
||||
0xC0, 0xF0, 0xF0, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x78, 0xF0, 0xE0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xF0, 0xF0, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0xF0, 0xF0,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x60, 0x60, 0xF0, 0xF0,
|
||||
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
|
||||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xDF,
|
||||
0xCF, 0xCF, 0xCF, 0x1F, 0x1F, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x70, 0x70, 0x30, 0x30, 0xF0,
|
||||
0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
|
||||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
|
||||
0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0,
|
||||
0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xC0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x9F, 0x87, 0xB7, 0xB3, 0xB9, 0xBC,
|
||||
0xBE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x70, 0x70, 0xE7, 0xE7,
|
||||
0xE7, 0xEF, 0xFF, 0x7C, 0x10, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x1C, 0x1F,
|
||||
0x1F, 0x1B, 0x18, 0xFF, 0xFF, 0x7F,
|
||||
0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x3F, 0x7F, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x7F, 0x3F, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x7F, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x7F, 0x3F, 0x00, 0x00, 0x00, 0x00,
|
||||
0x1F, 0x7F, 0xFF, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0x7F, 0x7F, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0x7F,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
static const char image_layer_3[] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x8F, 0x8F, 0x70, 0xFC, 0xFE, 0xFE,
|
||||
0xCF, 0x8F, 0x8F, 0x8F, 0xFE, 0xFE,
|
||||
0xFC, 0x78, 0xF8, 0xFC, 0xFE, 0xFF,
|
||||
0x8F, 0x8F, 0x8F, 0xCE, 0xFF, 0xFF,
|
||||
0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xF8, 0xFC, 0xFE, 0xDF, 0x8F,
|
||||
0x07, 0x23, 0xFC, 0xFE, 0xFE, 0xFF,
|
||||
0xB7, 0xB7, 0xBF, 0xBE, 0xBE, 0xB8,
|
||||
0x07, 0x1F, 0x3F, 0xFE, 0xFC, 0xF0,
|
||||
0xF0, 0xFE, 0xFF, 0x3F, 0x0F, 0x03,
|
||||
0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
|
||||
0x03, 0x07, 0x07, 0x03, 0x00, 0x01,
|
||||
0x03, 0x03, 0x03, 0x07, 0x07, 0x03,
|
||||
0x03, 0x03, 0x01, 0x00, 0x00, 0x39,
|
||||
0x7B, 0x7B, 0x77, 0x77, 0x73, 0x7B,
|
||||
0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x03,
|
||||
0x03, 0x03, 0x03, 0x00, 0x01, 0x03,
|
||||
0x03, 0x03, 0x03, 0x02, 0x00, 0x01,
|
||||
0x03, 0x03, 0x07, 0x07, 0x03, 0x03,
|
||||
0x03, 0x01, 0x00, 0x60, 0x78, 0x7E,
|
||||
0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x07, 0x07, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xF0, 0xF8, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0xF8, 0xF0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0,
|
||||
0x78, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0xF0,
|
||||
0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00,
|
||||
0xC0, 0xF0, 0xF0, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF0, 0xE0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xF0, 0xF0, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0xF0, 0xF0,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x60, 0x60, 0xF0, 0xF0,
|
||||
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
|
||||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x60, 0x70,
|
||||
0x30, 0x30, 0x30, 0xF0, 0xF0, 0xC0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0x9F, 0xDF, 0xEF, 0xCF, 0xCF,
|
||||
0x1F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
|
||||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
|
||||
0xF0, 0xF0, 0xF0, 0xF0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0,
|
||||
0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xC0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
|
||||
0xF0, 0xF8, 0xFC, 0xEE, 0xEF, 0xE7,
|
||||
0xE3, 0xC1, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xDF, 0x8F, 0xBF, 0xBD,
|
||||
0xBD, 0xB8, 0x82, 0xC7, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x1C, 0x1F,
|
||||
0x1F, 0x1B, 0x18, 0xFF, 0xFF, 0x7F,
|
||||
0x18, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x3F, 0x7F, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x7F, 0x3F, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF,
|
||||
0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00,
|
||||
0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0x7F, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7F, 0xFF, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xFF, 0x7F,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
static const char image_layer_4[] PROGMEM = {
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFC, 0xFC, 0xFC, 0xFC, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x0F, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0x8F, 0x8F, 0x70, 0xFC, 0xFE, 0xFE,
|
||||
0xCF, 0x8F, 0x8F, 0x8F, 0xFE, 0xFE,
|
||||
0xFC, 0x78, 0xF8, 0xFC, 0xFE, 0xFF,
|
||||
0x8F, 0x8F, 0x8F, 0xCE, 0xFF, 0xFF,
|
||||
0xFF, 0xFE, 0x00, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xF8, 0xFC, 0xFE, 0xDF, 0x8F,
|
||||
0x07, 0x23, 0xFC, 0xFE, 0xFE, 0xFF,
|
||||
0xB7, 0xB7, 0xBF, 0xBE, 0xBE, 0xB8,
|
||||
0x07, 0x1F, 0x3F, 0xFE, 0xFC, 0xF0,
|
||||
0xF0, 0xFE, 0xFF, 0x3F, 0x0F, 0x03,
|
||||
0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x03,
|
||||
0x03, 0x07, 0x07, 0x03, 0x00, 0x01,
|
||||
0x03, 0x03, 0x03, 0x07, 0x07, 0x03,
|
||||
0x03, 0x03, 0x01, 0x00, 0x00, 0x39,
|
||||
0x7B, 0x7B, 0x77, 0x77, 0x73, 0x7B,
|
||||
0x7F, 0x3F, 0x1F, 0x07, 0x00, 0x03,
|
||||
0x03, 0x03, 0x03, 0x00, 0x01, 0x03,
|
||||
0x03, 0x03, 0x03, 0x02, 0x00, 0x01,
|
||||
0x03, 0x03, 0x07, 0x07, 0x03, 0x03,
|
||||
0x03, 0x01, 0x00, 0x60, 0x78, 0x7E,
|
||||
0x7F, 0x3F, 0x0F, 0x03, 0x00, 0x00,
|
||||
0x00, 0x00, 0x03, 0x07, 0x07, 0x03,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xF0, 0xF8, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0xF8, 0xF0, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xE0, 0xF0,
|
||||
0x78, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0xF0,
|
||||
0xF0, 0xC0, 0x00, 0x00, 0x00, 0x00,
|
||||
0xC0, 0xF0, 0xF0, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
|
||||
0x38, 0x78, 0xF0, 0xE0, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xF0, 0xF0, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF8, 0xF8,
|
||||
0xF8, 0xF8, 0xF8, 0xF8, 0xF0, 0xF0,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x60, 0x60, 0xF0, 0xF0,
|
||||
0xF0, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
|
||||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x60, 0x70,
|
||||
0x30, 0x30, 0x30, 0xF0, 0xF0, 0xC0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x20, 0x70, 0x70, 0x30, 0x30, 0xF0,
|
||||
0xF0, 0xE0, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x3F,
|
||||
0x9F, 0x0F, 0x0F, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0,
|
||||
0xFF, 0xFF, 0xFF, 0xE0, 0xE0, 0xC0,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x40,
|
||||
0xF0, 0xF8, 0xFC, 0xEE, 0xEF, 0xE7,
|
||||
0xE3, 0xC1, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
|
||||
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF,
|
||||
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x70, 0x70, 0xE7, 0xE7,
|
||||
0xE7, 0xEF, 0xFF, 0x7C, 0x10, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xE7, 0xE1,
|
||||
0xE4, 0xEF, 0xEF, 0x80, 0x80, 0xE7,
|
||||
0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00,
|
||||
0x00, 0x00, 0x3F, 0x7F, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x60, 0x60, 0x60,
|
||||
0x60, 0x60, 0x60, 0x7F, 0x3F, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xFF,
|
||||
0x7F, 0x1F, 0x00, 0x00, 0x00, 0x00,
|
||||
0x1F, 0x7F, 0xFF, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
|
||||
0xE0, 0xE0, 0x7F, 0x7F, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x7F, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
|
||||
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
|
||||
0x00, 0x00, 0x00, 0x00,
|
||||
};
|
||||
|
||||
bool oled_task_kb(void) {
|
||||
if (!oled_task_user()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
switch (get_highest_layer(layer_state)) {
|
||||
case 0:
|
||||
oled_write_raw_P(image_layer_1, sizeof(image_layer_1));
|
||||
break;
|
||||
case 1:
|
||||
oled_write_raw_P(image_layer_2, sizeof(image_layer_2));
|
||||
break;
|
||||
case 2:
|
||||
oled_write_raw_P(image_layer_3, sizeof(image_layer_3));
|
||||
break;
|
||||
case 3:
|
||||
oled_write_raw_P(image_layer_4, sizeof(image_layer_4));
|
||||
break;
|
||||
default:
|
||||
oled_write_ln_P(PSTR("Undefined"), false);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
27
keyboards/togkey/pad_plus/readme.md
Normal file
27
keyboards/togkey/pad_plus/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# pad_plus
|
||||
|
||||

|
||||
|
||||
A 6-Key Macropad featuring a Oled Screen and Rotary Encoder based off an RP2040 and custom PCB.
|
||||
|
||||
* Keyboard Maintainer: [Jon Henry](https://github.com/togkey86)
|
||||
* Hardware Supported: TogKey Pad Plus PCB, RP2040 Development Board
|
||||
* Hardware Availability: (https://togkey.com)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make togkey/pad_plus:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make togkey/pad_plus: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
|
||||
23
keyboards/trnthsn/s6xtyfs/config.h
Normal file
23
keyboards/trnthsn/s6xtyfs/config.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
Copyright 2025 Tyson.Keebs
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define WS2812_SPI_DRIVER SPID2
|
||||
#define WS2812_SPI_MOSI_PAL_MODE 0
|
||||
#define WS2812_SPI_SCK_PAL_MODE 0
|
||||
#define WS2812_SPI_SCK_PIN B13
|
||||
22
keyboards/trnthsn/s6xtyfs/halconf.h
Normal file
22
keyboards/trnthsn/s6xtyfs/halconf.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/*
|
||||
Copyright 2025 Tyson.Keebs
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_SPI TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
742
keyboards/trnthsn/s6xtyfs/info.json
Normal file
742
keyboards/trnthsn/s6xtyfs/info.json
Normal file
@@ -0,0 +1,742 @@
|
||||
{
|
||||
"manufacturer": "Tyson.Keebs",
|
||||
"keyboard_name": "S6xty Tsangan",
|
||||
"maintainer": "trnthsn",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "B0"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A10", "A9", "A8", "B14", "B12", "A6", "B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15"],
|
||||
"rows": ["C13", "C14", "C15", "A1", "B1"]
|
||||
},
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"default": {
|
||||
"animation": "rainbow_swirl"
|
||||
},
|
||||
"layers": {
|
||||
"enabled": true,
|
||||
"override_rgb": false
|
||||
},
|
||||
"led_count": 28,
|
||||
"sleep": true
|
||||
},
|
||||
"url": "",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x3666",
|
||||
"vid": "0x5453"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "spi",
|
||||
"pin": "B15"
|
||||
},
|
||||
"community_layouts": ["60_ansi_tsangan", "60_ansi_tsangan_split_bs_rshift", "60_ansi_wkl", "60_ansi_wkl_split_bs_rshift", "60_hhkb", "60_iso_tsangan", "60_iso_tsangan_split_bs_rshift", "60_iso_wkl", "60_iso_wkl_split_bs_rshift"],
|
||||
"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": [2, 12], "x": 13, "y": 0},
|
||||
{"matrix": [0, 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, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 1.25},
|
||||
{"matrix": [3, 1], "x": 0, "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, 7], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_tsangan": {
|
||||
"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, 7], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_tsangan_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [2, 12], "x": 13, "y": 0},
|
||||
{"matrix": [0, 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, 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, 7], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_wkl": {
|
||||
"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, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 7], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_wkl_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": [2, 12], "x": 13, "y": 0},
|
||||
{"matrix": [0, 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, 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, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 7], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"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": [2, 12], "x": 13, "y": 0},
|
||||
{"matrix": [0, 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, 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, 7], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 12.5, "y": 4}
|
||||
]
|
||||
},
|
||||
"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, 7], "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": [2, 12], "x": 13, "y": 0},
|
||||
{"matrix": [0, 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": [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, 7], "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_wkl": {
|
||||
"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, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 7], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_iso_wkl_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": [2, 12], "x": 13, "y": 0},
|
||||
{"matrix": [0, 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": [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, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 7], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 13], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
40
keyboards/trnthsn/s6xtyfs/keymaps/default/keymap.c
Normal file
40
keyboards/trnthsn/s6xtyfs/keymaps/default/keymap.c
Normal file
@@ -0,0 +1,40 @@
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
// ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||
// │Esc│ 1 │ 2 │ 3 │ 4 │ 5 │ 6 │ 7 │ 8 │ 9 │ 0 │ - │ = │Bsp│Bsp│
|
||||
// ├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
|
||||
// │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ [ │ ] │ \ │
|
||||
// ├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬────┤
|
||||
// │ Caps │ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │ # │Ent │
|
||||
// ├────┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┴┬───┤
|
||||
// │Sft │Sft│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift │Fn │
|
||||
// ├────┴┬──┴┬──┴──┬┴───┴───┴───┴───┴───┴───┴──┬┴───┴┬───┬─┴───┤
|
||||
// │Ctrl │Win│Alt │ │Alt │Win│Ctrl │
|
||||
// └─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
|
||||
|
||||
[0] = 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_BSPC,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_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_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL
|
||||
),
|
||||
[1] = 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_INS, KC_DEL,
|
||||
_______, _______, _______, _______, _______, _______, _______, UG_NEXT, UG_VALD, UG_VALU, KC_PSCR, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
MO(2) , _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
),
|
||||
[2] = LAYOUT_all(
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
||||
23
keyboards/trnthsn/s6xtyfs/mcuconf.h
Normal file
23
keyboards/trnthsn/s6xtyfs/mcuconf.h
Normal file
@@ -0,0 +1,23 @@
|
||||
/*
|
||||
Copyright 2025 Tyson.Keebs
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_SPI_USE_SPI2
|
||||
#define STM32_SPI_USE_SPI2 TRUE
|
||||
27
keyboards/trnthsn/s6xtyfs/readme.md
Normal file
27
keyboards/trnthsn/s6xtyfs/readme.md
Normal file
@@ -0,0 +1,27 @@
|
||||
# S6xty Tsangan
|
||||
|
||||

|
||||
|
||||
A 60% keyboard PCB. Supports multiple layout such as split backspace, split shift, iso.
|
||||
|
||||
* Keyboard Maintainer: [Trnthsn](https://github.com/trnthsn)
|
||||
* Hardware Supported: STM32, S6xtyfs
|
||||
* Hardware Availability: [ThanhSon.Mech](https://www.facebook.com/ThanhSon.mech)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make trnthsn/s6xtyfs/stm32f103:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make trnthsn/s6xtyfs/stm32f103: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
|
||||
24
keyboards/trnthsn/s6xtyfs/s6xtyfs.c
Normal file
24
keyboards/trnthsn/s6xtyfs/s6xtyfs.c
Normal file
@@ -0,0 +1,24 @@
|
||||
// Copyright 2025 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
#include "quantum.h"
|
||||
|
||||
#ifdef RGBLIGHT_ENABLE
|
||||
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{5, 2, HSV_WHITE}
|
||||
);
|
||||
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
||||
my_capslock_layer
|
||||
);
|
||||
|
||||
void keyboard_post_init_kb(void) {
|
||||
rgblight_layers = my_rgb_layers;
|
||||
keyboard_post_init_user();
|
||||
}
|
||||
bool led_update_kb(led_t led_state) {
|
||||
bool res = led_update_user(led_state);
|
||||
if (res) {
|
||||
rgblight_set_layer_state(0, led_state.caps_lock);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
#endif
|
||||
4
keyboards/trnthsn/s6xtyfs/stm32f072/keyboard.json
Normal file
4
keyboards/trnthsn/s6xtyfs/stm32f072/keyboard.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"processor": "STM32F072",
|
||||
"bootloader": "stm32-dfu"
|
||||
}
|
||||
4
keyboards/trnthsn/s6xtyfs/stm32f103/keyboard.json
Normal file
4
keyboards/trnthsn/s6xtyfs/stm32f103/keyboard.json
Normal file
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"processor": "STM32F103",
|
||||
"bootloader": "uf2boot"
|
||||
}
|
||||
@@ -49,6 +49,9 @@ enum {
|
||||
# ifdef RGB_MATRIX_CUSTOM_USER
|
||||
# include "rgb_matrix_user.inc"
|
||||
# endif
|
||||
# if defined(COMMUNITY_MODULES_ENABLE) && __has_include("rgb_matrix_community_modules.inc")
|
||||
# include "rgb_matrix_community_modules.inc"
|
||||
# endif
|
||||
# undef RGB_MATRIX_EFFECT
|
||||
};
|
||||
|
||||
@@ -66,6 +69,9 @@ const char *rgb_matrix_name(uint8_t effect) {
|
||||
# ifdef RGB_MATRIX_CUSTOM_USER
|
||||
# include "rgb_matrix_user.inc"
|
||||
# endif
|
||||
# if defined(COMMUNITY_MODULES_ENABLE) && __has_include("rgb_matrix_community_modules.inc")
|
||||
# include "rgb_matrix_community_modules.inc"
|
||||
# endif
|
||||
# undef RGB_MATRIX_EFFECT
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
|
||||
@@ -82,9 +82,9 @@ void refresh_leds(void) {
|
||||
uint8_t tile = tiles[x][y];
|
||||
uint8_t index = (y * 5) + x;
|
||||
if (tile) {
|
||||
setrgb(RGB_RED, &led[remap[index]]);
|
||||
rgblight_setrgb_at(RGB_RED, remap[index]);
|
||||
} else {
|
||||
setrgb(RGB_WHITE, &led[remap[index]]);
|
||||
rgblight_setrgb_at(RGB_WHITE, remap[index]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
24
keyboards/wiredin/protagonist/pro_h/config.h
Normal file
24
keyboards/wiredin/protagonist/pro_h/config.h
Normal file
@@ -0,0 +1,24 @@
|
||||
/* Copyright 2024 Gondolindrim <gondolindrim@acheronproject.com>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define WS2812_PWM_COMPLEMENTARY_OUTPUT
|
||||
#define WS2812_PWM_DRIVER PWMD1
|
||||
#define WS2812_PWM_CHANNEL 3
|
||||
#define WS2812_PWM_PAL_MODE 1
|
||||
#define WS2812_DMA_STREAM STM32_DMA2_STREAM5
|
||||
#define WS2812_DMA_CHANNEL 6
|
||||
22
keyboards/wiredin/protagonist/pro_h/halconf.h
Normal file
22
keyboards/wiredin/protagonist/pro_h/halconf.h
Normal file
@@ -0,0 +1,22 @@
|
||||
/* Copyright 2024 Gondolindrim <gondolindrim@acheronproject.com>
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
#define HAL_USE_PAL TRUE
|
||||
|
||||
#include_next <halconf.h>
|
||||
372
keyboards/wiredin/protagonist/pro_h/keyboard.json
Normal file
372
keyboards/wiredin/protagonist/pro_h/keyboard.json
Normal file
@@ -0,0 +1,372 @@
|
||||
{
|
||||
"manufacturer": "WiredIn",
|
||||
"keyboard_name": "Protagonist PRO-H",
|
||||
"maintainer": "Gondolindrim",
|
||||
"bootloader": "stm32-dfu",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A4", "A3", "A2", "A10", "A8", "B12", "A15", "B3", "B4", "B5", "C15", "C14", "B9", "C13"],
|
||||
"rows": ["B1", "B10", "B14", "B8", "A0", "A1"]
|
||||
},
|
||||
"processor": "STM32F411",
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"rgb_test": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"led_count": 22
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"pid": "0x5048",
|
||||
"vid": "0x5749"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "pwm",
|
||||
"pin": "B15"
|
||||
},
|
||||
"community_layouts": ["60_ansi_tsangan", "60_ansi_tsangan_split_bs_rshift", "60_ansi_wkl", "60_ansi_wkl_split_bs_rshift", "60_hhkb"],
|
||||
"layout_aliases": {
|
||||
"LAYOUT_all": "LAYOUT_60_ansi_tsangan_split_bs_rshift"
|
||||
},
|
||||
"layouts": {
|
||||
"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": [5, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [5, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_tsangan_split_bs_rshift": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [4, 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, 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": [5, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [5, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 12.5, "y": 4},
|
||||
{"matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_wkl": {
|
||||
"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": [5, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "x": 13.5, "y": 4, "w": 1.5}
|
||||
]
|
||||
},
|
||||
"LAYOUT_60_ansi_wkl_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": [4, 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, 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": [5, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 12], "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": [4, 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, 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": [5, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [5, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 12.5, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user