mirror of
https://github.com/qmk/qmk_firmware.git
synced 2025-07-27 03:21:15 +00:00
Compare commits
No commits in common. "master" and "0.29.6" have entirely different histories.
35
.clangd
35
.clangd
@ -1,33 +1,4 @@
|
||||
CompileFlags:
|
||||
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,
|
||||
]
|
||||
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
|
||||
|
1
.gitignore
vendored
1
.gitignore
vendored
@ -64,7 +64,6 @@ build/
|
||||
cmake-build-debug
|
||||
CMakeLists.txt
|
||||
*.pdf
|
||||
*.zip
|
||||
|
||||
# Let these ones be user specific, since we have so many different configurations
|
||||
*.code-workspace
|
||||
|
@ -17,12 +17,12 @@ qmk compile [-c] <configuratorExport.json>
|
||||
**Usage for Keymaps**:
|
||||
|
||||
```
|
||||
qmk compile [-c] [-e <var>=<value>] [-j <num_jobs>] [--compiledb] -kb <keyboard> -km <keymap>
|
||||
qmk compile [-c] [-e <var>=<value>] [-j <num_jobs>] [--compiledb] -kb <keyboard_name> -km <keymap_name>
|
||||
```
|
||||
|
||||
**Usage in Keyboard Directory**:
|
||||
|
||||
Must be in keyboard directory with a default keymap, or in keymap directory for keyboard, or supply one with `--keymap <keymap>`
|
||||
Must be in keyboard directory with a default keymap, or in keymap directory for keyboard, or supply one with `--keymap <keymap_name>`
|
||||
```
|
||||
qmk compile
|
||||
```
|
||||
@ -30,7 +30,7 @@ qmk compile
|
||||
**Usage for building all keyboards that support a specific keymap**:
|
||||
|
||||
```
|
||||
qmk compile -kb all -km <keymap>
|
||||
qmk compile -kb all -km <keymap_name>
|
||||
```
|
||||
|
||||
**Example**:
|
||||
@ -62,7 +62,7 @@ $ qmk compile
|
||||
|
||||
Must be under `qmk_firmware/layouts/`, and in a keymap folder.
|
||||
```
|
||||
qmk compile -kb <keyboard>
|
||||
qmk compile -kb <keyboard_name>
|
||||
```
|
||||
|
||||
**Example**:
|
||||
@ -77,11 +77,11 @@ $ qmk compile -kb dz60
|
||||
|
||||
It is possible to speed up compilation by adding the `-j`/`--parallel` flag.
|
||||
```
|
||||
qmk compile -j <num_jobs> -kb <keyboard>
|
||||
qmk compile -j <num_jobs> -kb <keyboard_name>
|
||||
```
|
||||
The `num_jobs` argument determines the maximum number of jobs that can be used. Setting it to zero will enable parallel compilation without limiting the maximum number of jobs.
|
||||
```
|
||||
qmk compile -j 0 -kb <keyboard>
|
||||
qmk compile -j 0 -kb <keyboard_name>
|
||||
```
|
||||
|
||||
**Compilation Database**:
|
||||
@ -120,7 +120,7 @@ qmk flash [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>] <configurat
|
||||
**Usage for Keymaps**:
|
||||
|
||||
```
|
||||
qmk flash -kb <keyboard> -km <keymap_name> [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>]
|
||||
qmk flash -kb <keyboard_name> -km <keymap_name> [-bl <bootloader>] [-c] [-e <var>=<value>] [-j <num_jobs>]
|
||||
```
|
||||
|
||||
**Usage for pre-compiled firmwares**:
|
||||
|
@ -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/202412/a055779b-49c0-4d09-8f04-73029f44b72b.pdf)
|
||||
[AW20216S Datasheet](https://doc.awinic.com/doc/20230609wm/b6a9c70b-e1bd-495b-925f-bcbed3fc2620.pdf)
|
||||
|
||||
## Usage {#usage}
|
||||
|
||||
@ -44,7 +44,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const aw20216s_led_t PROGMEM g_aw20216s_leds[AW20216S_LED_COUNT] = {
|
||||
|
@ -37,7 +37,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3218_led_t PROGMEM g_is31fl3218_leds[IS31FL3218_LED_COUNT] = {
|
||||
|
@ -50,7 +50,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3236_led_t PROGMEM g_is31fl3236_leds[IS31FL3236_LED_COUNT] = {
|
||||
|
@ -120,7 +120,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3729_led_t PROGMEM g_is31fl3729_leds[IS31FL3729_LED_COUNT] = {
|
||||
|
@ -61,7 +61,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
|
||||
|
@ -145,7 +145,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
|
||||
|
@ -129,7 +129,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3736_led_t PROGMEM g_is31fl3736_leds[IS31FL3736_LED_COUNT] = {
|
||||
|
@ -117,7 +117,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3737_led_t PROGMEM g_is31fl3737_leds[IS31FL3737_LED_COUNT] = {
|
||||
|
@ -117,7 +117,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
|
||||
|
@ -117,7 +117,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3742a_led_t PROGMEM g_is31fl3742a_leds[IS31FL3742A_LED_COUNT] = {
|
||||
|
@ -127,7 +127,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3743a_led_t PROGMEM g_is31fl3743a_leds[IS31FL3743A_LED_COUNT] = {
|
||||
|
@ -127,7 +127,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3745_led_t PROGMEM g_is31fl3745_leds[IS31FL3745_LED_COUNT] = {
|
||||
|
@ -132,7 +132,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const is31fl3746a_led_t PROGMEM g_is31fl3746a_leds[IS31FL3746A_LED_COUNT] = {
|
||||
|
@ -52,7 +52,7 @@ Depending on the ChibiOS board configuration, you may need to [enable and config
|
||||
|
||||
## LED Mapping {#led-mapping}
|
||||
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboard>.c`:
|
||||
In order to use this driver, each output must be mapped to an LED index, by adding the following to your `<keyboardname>.c`:
|
||||
|
||||
```c
|
||||
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
|
||||
|
@ -144,30 +144,18 @@ The following defines apply only to ARM devices:
|
||||
|`WS2812_T1L`|`(WS2812_TIMING - WS2812_T1H)`|The length of a "1" bit's low phase in nanoseconds (bitbang and PIO drivers only)|
|
||||
|`WS2812_T0L`|`(WS2812_TIMING - WS2812_T0H)`|The length of a "0" bit's low phase in nanoseconds (bitbang and PIO drivers only)|
|
||||
|
||||
### Logic Levels {#logic-levels}
|
||||
### Push-Pull and Open Drain {#push-pull-open-drain}
|
||||
|
||||
WS2812 LEDs usually operate at 5V, but some microcontrollers, particularly ARM-based ones, run on 3.3V. This can pose an issue when driving the LED chain as the logic level voltage is lower than the power supply voltage, leading to unreliable data transmission. There are two main workarounds:
|
||||
By default, the GPIO used for data transmission is configured as a *push-pull* output, meaning the pin is effectively always driven either to VCC or to ground.
|
||||
|
||||
#### 1. Open Drain Circuit {#open-drain-circuit}
|
||||
For situations where the logic level voltage is lower than the power supply voltage, however, this can pose an issue. The solution is to configure the pin for *open drain* mode instead, and use a pullup resistor between the DI pin and VCC. In this mode, the MCU can only pull the GPIO *low*, or leave it floating. The pullup resistor is then responsible for pulling the line high, when the MCU is not driving the GPIO.
|
||||
|
||||
By default, `WS2812_DI_PIN` is configured as a *push-pull* output, meaning the pin is effectively always driven either to VCC or to ground; however, it can be configured in *open drain* mode instead.
|
||||
|
||||
In this mode, the MCU will only pull the GPIO *low*, and leaves it floating otherwise. A pullup resistor (typically around 10kΩ) between DI and 5V is then responsible for pulling the line high when the MCU is not driving the GPIO.
|
||||
|
||||
To use the DI pin in open drain configuration, add the following to your `config.h`:
|
||||
To configure the DI pin for open drain configuration, add the following to your `config.h`:
|
||||
|
||||
```c
|
||||
#define WS2812_EXTERNAL_PULLUP
|
||||
```
|
||||
|
||||
::: warning
|
||||
Because the GPIO is being pulled to 5V in this situation rather than VCC (3.3V), **it must be a 5V tolerant pin**. Consult your MCU's datasheet first – if there are no eligible pins, you must use a level shifter instead.
|
||||
:::
|
||||
|
||||
#### 2. Level Shifter {#level-shifter}
|
||||
|
||||
A level shifter IC, such as the SN74LV1T34, can be placed between the GPIO and the first LED's DI pin to convert the 3.3V logic to 5V. This requires no additional configuration in the firmware, nor a 5V tolerant GPIO, but may be more expensive and is generally less handwire-friendly.
|
||||
|
||||
### SPI Driver {#arm-spi-driver}
|
||||
|
||||
Depending on the ChibiOS board configuration, you may need to enable SPI at the keyboard level. For STM32, this would look like:
|
||||
|
@ -2,40 +2,29 @@
|
||||
|
||||
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` |
|
||||
|`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>|
|
||||
|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` |
|
||||
|
||||
<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.
|
||||
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.
|
||||
|
||||
# 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 more complicated examples, checkout the [`awesome-qmk` colletion](https://github.com/qmk/awesome-qmk).
|
||||
For a more complicated example, checkout [`/users/drashna/`](https://github.com/qmk/qmk_firmware/tree/master/users/drashna)'s userspace.
|
||||
|
||||
|
||||
### 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_RALT), //
|
||||
const key_override_t fn_override = {.trigger_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), //
|
||||
.layers = ~(1 << LAYER_FN), //
|
||||
.suppressed_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RALT), //
|
||||
.suppressed_mods = MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL), //
|
||||
.options = ko_option_no_unregister_on_other_key_down, //
|
||||
.negative_mod_mask = (uint8_t) ~(MOD_BIT(KC_RGUI) | MOD_BIT(KC_RALT)), //
|
||||
.negative_mod_mask = (uint8_t) ~(MOD_BIT(KC_RGUI) | MOD_BIT(KC_RCTL)), //
|
||||
.custom_action = momentary_layer, //
|
||||
.context = (void *)LAYER_FN, //
|
||||
.trigger = KC_NO, //
|
||||
|
@ -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 (get_highest_layer(layer_state|default_layer_state) == 2) {
|
||||
if (layer_state_is(layer_state, 2)) {
|
||||
hsv = (hsv_t){130, 255, 255};
|
||||
} else {
|
||||
hsv = (hsv_t){30, 255, 255};
|
||||
|
@ -4,14 +4,6 @@
|
||||
|
||||
The [Open Steno Project](https://www.openstenoproject.org/) has built an open-source program called Plover that provides real-time translation of steno strokes into words and commands. It has an established dictionary and supports
|
||||
|
||||
## Steno Support in QMK
|
||||
|
||||
There are three ways that QMK keyboards can support steno, with varying degrees of configuration required:
|
||||
|
||||
1. Plover with [Arpeggiation](https://plover.wiki/index.php/Glossary#Arpeggiate) requires no changes to any keyboard and is supported by QMK as well as any other QWERTY keyboard.
|
||||
2. Plover with [NKRO](https://plover.wiki/index.php/Using_a_standard_keyboard_with_Plover#NKRO). If your keyboard supports NKRO in hardware and you have NKRO enabled as a USB endpoint, you can chord with the keyboard. Many devices will arrive stock like this and will require no changes.
|
||||
3. Steno Machine Protocols. This requires the most configuration, but this has the advantage of allowing you to use your keyboard keys normally (either on another layer or another piece of hardware) without enabling and disabling your steno software.
|
||||
|
||||
## Plover with QWERTY Keyboard {#plover-with-qwerty-keyboard}
|
||||
|
||||
Plover can work with any standard QWERTY keyboard, although it is more efficient if the keyboard supports NKRO (n-key rollover) to allow Plover to see all the pressed keys at once. An example keymap for Plover can be found in `planck/keymaps/default`. Switching to the `PLOVER` layer adjusts the position of the keyboard to support the number bar.
|
||||
@ -22,14 +14,14 @@ You may also need to adjust your layout, either in QMK or in Plover, if you have
|
||||
|
||||
## Plover with Steno Protocol {#plover-with-steno-protocol}
|
||||
|
||||
Plover also understands the language of several steno machines. QMK can speak a couple of these languages: TX Bolt and GeminiPR. An example layout can be found in `splitography/keymaps/default`.
|
||||
Plover also understands the language of several steno machines. QMK can speak a couple of these languages: TX Bolt and GeminiPR. An example layout can be found in `planck/keymaps/steno`.
|
||||
|
||||
When QMK speaks to Plover over a steno protocol, Plover will not use the keyboard as input. This means that you can switch back and forth between a standard keyboard and your steno keyboard, or even switch layers from Plover to standard and back without needing to activate/deactivate Plover.
|
||||
|
||||
In this mode, Plover expects to speak with a steno machine over a serial port so QMK will present itself to the operating system as a virtual serial port in addition to a keyboard.
|
||||
|
||||
::: info
|
||||
Due to hardware limitations, you might not be able to run both a virtual serial port and other features (mouse keys, NKRO, or MIDI support) at the same time. You will likely encounter a compile time error if this is the case. Disable those other features as necessary.
|
||||
Note: Due to hardware limitations, you might not be able to run both a virtual serial port and mouse emulation at the same time.
|
||||
:::
|
||||
|
||||
::: warning
|
||||
@ -164,7 +156,7 @@ At the end of this scenario given as an example, `chord` would have five bits se
|
||||
## Keycode Reference {#keycode-reference}
|
||||
|
||||
::: info
|
||||
TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiPR keys to the nearest TX Bolt key so that one key map will work for both.
|
||||
Note: TX Bolt does not support the full set of keys. The TX Bolt implementation in QMK will map the GeminiPR keys to the nearest TX Bolt key so that one key map will work for both.
|
||||
:::
|
||||
|
||||
|GeminiPR|TX Bolt|Steno Key|
|
||||
|
@ -170,6 +170,20 @@ 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;
|
||||
|
||||
@ -197,29 +211,12 @@ 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}
|
||||
|
@ -19,8 +19,8 @@ Within the folder `keyboards`, its subfolder `handwired` and its vendor and manu
|
||||
* `config.h`: The file that sets the default compile time options. Do not edit this file directly, instead use a keymap specific `config.h`.
|
||||
* `info.json`: The file used for setting layout for QMK Configurator. See [Configurator Support](reference_configurator_support) for more information.
|
||||
* `readme.md`: A brief overview of the keyboard.
|
||||
* `<keyboard>.h`: This file is where the keyboard layout is defined against the keyboard's switch matrix.
|
||||
* `<keyboard>.c`: This file is where you can find custom code for the keyboard.
|
||||
* `<keyboardName>.h`: This file is where the keyboard layout is defined against the keyboard's switch matrix.
|
||||
* `<keyboardName>.c`: This file is where you can find custom code for the keyboard.
|
||||
|
||||
For more information on project structure, see [QMK Keyboard Guidelines](hardware_keyboard_guidelines).
|
||||
|
||||
|
@ -1,8 +1,8 @@
|
||||
# More Detailed `make` Instructions
|
||||
|
||||
The full syntax of the `make` command is `<keyboard>:<keymap>:<target>`, where:
|
||||
The full syntax of the `make` command is `<keyboard_folder>:<keymap>:<target>`, where:
|
||||
|
||||
* `<keyboard>` is the path of the keyboard, for example `planck`
|
||||
* `<keyboard_folder>` is the path of the keyboard, for example `planck`
|
||||
* Use `all` to compile all keyboards
|
||||
* Specify the path to compile a revision, for example `planck/rev4` or `planck/rev3`
|
||||
* If the keyboard doesn't have any folders, it can be left out
|
||||
|
@ -44,11 +44,7 @@ QMK uses sub-folders both for organization and to share code between revisions o
|
||||
qmk_firmware/keyboards/top_folder/sub_1/sub_2/sub_3/sub_4
|
||||
```
|
||||
|
||||
If a sub-folder has a `keyboard.json` file it will be considered a compilable keyboard. It will be available in QMK Configurator and tested with `make all`. If you are using a folder to organize several keyboards from the same maker you should not have a `keyboard.json` file.
|
||||
|
||||
::: tip
|
||||
When configuring a keyboard with multiple revisions (like the `clueboard/66` example below), an `info.json` file at the top keyboard level (eg. `clueboard/66`) should be used for configuration shared between revisions. Then `keyboard.json` in each revision directory containing revision-specific configuration, and indicating a buildable keyboard.
|
||||
:::
|
||||
If a sub-folder has a `rules.mk` file it will be considered a compilable keyboard. It will be available in QMK Configurator and tested with `make all`. If you are using a folder to organize several keyboards from the same maker you should not have a `rules.mk` file.
|
||||
|
||||
Example:
|
||||
|
||||
@ -56,49 +52,35 @@ Clueboard uses sub-folders for both purposes, organization and keyboard revision
|
||||
|
||||
* [`qmk_firmware`](https://github.com/qmk/qmk_firmware/tree/master)
|
||||
* [`keyboards`](https://github.com/qmk/qmk_firmware/tree/master/keyboards)
|
||||
* [`clueboard`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard) ← This is the organization folder, there's no `keyboard.json` file
|
||||
* [`60`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/60) ← This is a compilable keyboard - it has a `keyboard.json` file
|
||||
* [`66`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66) ← This is not a compilable keyboard - a revision must be specified
|
||||
* [`clueboard`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard) ← This is the organization folder, there's no `rules.mk` file
|
||||
* [`60`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/60) ← This is a compilable keyboard, it has a `rules.mk` file
|
||||
* [`66`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66) ← This is also compilable- it uses `DEFAULT_FOLDER` to specify `rev3` as the default revision
|
||||
* [`rev1`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev1) ← compilable: `make clueboard/66/rev1`
|
||||
* [`rev2`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev2) ← compilable: `make clueboard/66/rev2`
|
||||
* [`rev3`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev3) ← compilable: `make clueboard/66/rev3`
|
||||
* [`rev3`](https://github.com/qmk/qmk_firmware/tree/master/keyboards/clueboard/66/rev3) ← compilable: `make clueboard/66/rev3` or `make clueboard/66`
|
||||
|
||||
## Keyboard Folder Structure
|
||||
|
||||
Your keyboard should be located in `qmk_firmware/keyboards/` and the folder name should be your keyboard's name as described in the previous section. Inside this folder should be several files, some of which are optional:
|
||||
Your keyboard should be located in `qmk_firmware/keyboards/` and the folder name should be your keyboard's name as described in the previous section. Inside this folder should be several files:
|
||||
|
||||
* `readme.md`
|
||||
* `keyboard.json` (or `info.json`)
|
||||
* `info.json`
|
||||
* `config.h`
|
||||
* `rules.mk`
|
||||
* `<keyboard>.c`
|
||||
* `<keyboard>.h`
|
||||
* `<keyboard_name>.c`
|
||||
* `<keyboard_name>.h`
|
||||
|
||||
### `readme.md`
|
||||
|
||||
All projects need to have a `readme.md` file that explains what the keyboard is, who made it and where it's available. If applicable, it should also contain links to more information, such as the maker's website. Please follow the [published template](documentation_templates#keyboard-readmemd-template).
|
||||
|
||||
### `keyboard.json`/`info.json`
|
||||
### `info.json`
|
||||
|
||||
The `keyboard.json` file is necessary for your keyboard (or keyboard revision) to be considered a buildable keyboard. The same content is valid in both `info.json` and `keyboard.json`. For the available configuration options of this file, see the [reference page](reference_info_json). This file is also used by the [QMK API](https://github.com/qmk/qmk_api), and by the [QMK Configurator](https://config.qmk.fm/) to display a representation of the available layouts of your keyboard.
|
||||
|
||||
Additionally, this is where layouts available on your keyboard are defined. If you only have a single layout, it should be named `LAYOUT`. When defining multiple layouts, you should have a base layout, named `LAYOUT_all`, that supports all possible switch positions in your matrix, even if that layout is impossible to build physically. This is the layout that should be used in the `default` keymap. You should then have additional keymaps named `default_<layout>` that configure keymaps for the other layouts. Layout macro names are entirely lowercase, except for the prefix of `LAYOUT`.
|
||||
|
||||
As an example, if you have a 60% PCB that supports ANSI and ISO, you might define the following layouts and keymaps:
|
||||
|
||||
| Layout Name | Keymap Name | Description |
|
||||
|-------------|--------------|------------------------------------------|
|
||||
| LAYOUT_all | default | A layout that supports both ISO and ANSI |
|
||||
| LAYOUT_ansi | default_ansi | An ANSI layout |
|
||||
| LAYOUT_iso | default_iso | An ISO layout |
|
||||
|
||||
::: tip
|
||||
Providing only `LAYOUT_all` is invalid, as is providing a `LAYOUT` when multiple layouts are present.
|
||||
:::
|
||||
This file is used by the [QMK API](https://github.com/qmk/qmk_api). It contains the information [QMK Configurator](https://config.qmk.fm/) needs to display a representation of your keyboard. You can also set metadata here. For more information see the [reference page](reference_info_json).
|
||||
|
||||
### `config.h`
|
||||
|
||||
Some projects will need to have a `config.h` that configures parameters that are not possible to be set in `keyboard.json`. This is not a required file.
|
||||
All projects need to have a `config.h` file that sets things like the matrix size, product name, USB VID/PID, description and other settings. In general, use this file to set essential information and defaults for your keyboard that will always work.
|
||||
|
||||
The `config.h` files can also be placed in sub-folders, and the order in which they are read is as follows:
|
||||
|
||||
@ -156,7 +138,7 @@ If you define options using `post_config.h` as in the above example, you should
|
||||
|
||||
### `rules.mk`
|
||||
|
||||
This file is typically used to configure hardware drivers (eg. pointing device), or to include additional C files in compilation. This is not a required file.
|
||||
The presence of this file means that the folder is a keyboard target and can be used in `make` commands. This is where you setup the build environment for your keyboard and configure the default set of features.
|
||||
|
||||
The `rules.mk` file can also be placed in a sub-folder, and its reading order is as follows:
|
||||
|
||||
@ -203,9 +185,9 @@ The `post_rules.mk` file can interpret `features` of a keyboard-level before `co
|
||||
See `build_keyboard.mk` and `common_features.mk` for more details.
|
||||
:::
|
||||
|
||||
### `<keyboard>.c`
|
||||
### `<keyboard_name.c>`
|
||||
|
||||
This file should contain C code required for the functionality of your keyboard, for example hardware initialisation code, OLED display code, and so on. This file should only contain code necessary for the keyboard to work, and *not* things that should be left to the end user to configure in their keymap. This file is automatically included in compilation if it exists. This is not a required file.
|
||||
This is where you will write custom code for your keyboard. Typically you will write code to initialize and interface with the hardware in your keyboard. If your keyboard consists of only a key matrix with no LEDs, speakers, or other auxiliary hardware this file can be blank.
|
||||
|
||||
The following functions are typically defined in this file:
|
||||
|
||||
@ -214,13 +196,33 @@ The following functions are typically defined in this file:
|
||||
* `bool process_record_kb(uint16_t keycode, keyrecord_t *record)`
|
||||
* `bool led_update_kb(led_t led_state)`
|
||||
|
||||
### `<keyboard>.h`
|
||||
### `<keyboard_name.h>`
|
||||
|
||||
This file can contain function prototypes for custom functions and other header file code utilised by `<keyboard>.c`. The `<keyboard>.c` file should include this file. This is not a required file.
|
||||
This file is used to define the matrix for your keyboard. You should define at least one C macro which translates an array into a matrix representing the physical switch matrix for your keyboard. If it's possible to build your keyboard with multiple layouts you should define additional macros.
|
||||
|
||||
If you have only a single layout you should call this macro `LAYOUT`.
|
||||
|
||||
When defining multiple layouts you should have a base layout, named `LAYOUT_all`, that supports all possible switch positions on your matrix, even if that layout is impossible to build physically. This is the macro you should use in your `default` keymap. You should then have additional keymaps named `default_<layout>` that use your other layout macros. This will make it easier for people to use the layouts you define.
|
||||
|
||||
Layout macro names are entirely lowercase, except for the word `LAYOUT` at the front.
|
||||
|
||||
As an example, if you have a 60% PCB that supports ANSI and ISO you might define the following layouts and keymaps:
|
||||
|
||||
| Layout Name | Keymap Name | Description |
|
||||
|-------------|-------------|-------------|
|
||||
| LAYOUT_all | default | A layout that supports both ISO and ANSI |
|
||||
| LAYOUT_ansi | default_ansi | An ANSI layout |
|
||||
| LAYOUT_iso | default_iso | An ISO layout |
|
||||
|
||||
::: tip
|
||||
Providing only `LAYOUT_all` is invalid - especially when implementing the additional layouts within 3rd party tooling.
|
||||
:::
|
||||
|
||||
## Image/Hardware Files
|
||||
|
||||
In an effort to keep the repo size down we do not accept binary files of any format, with few exceptions. Hosting them elsewhere (such as <https://imgur.com>) and linking them in the `readme.md` is preferred. Hardware files such as plates, cases, and PCBs can be published in a personal repository or elsewhere, and linked to by your keyboard's `readme.md` file.
|
||||
In an effort to keep the repo size down we're no longer accepting binary files of any format, with few exceptions. Hosting them elsewhere (such as <https://imgur.com>) and linking them in the `readme.md` is preferred.
|
||||
|
||||
Hardware files (such as plates, cases, pcb) can be contributed to the [qmk.fm repo](https://github.com/qmk/qmk.fm) and they will be made available on [qmk.fm](https://qmk.fm). Downloadable files are stored in `/<keyboard>/` (name follows the same format as above) which are served at `https://qmk.fm/<keyboard>/`, and pages are generated from `/_pages/<keyboard>/` which are served at the same location (.md files are generated into .html files through Jekyll). Check out the `lets_split` folder for an example.
|
||||
|
||||
## Keyboard Defaults
|
||||
|
||||
@ -230,6 +232,8 @@ Given the amount of functionality that QMK exposes it's very easy to confuse new
|
||||
|
||||
[Magic Keycodes](keycodes_magic) and [Command](features/command) are two related features that allow a user to control their keyboard in non-obvious ways. We recommend you think long and hard about if you're going to enable either feature, and how you will expose this functionality. Keep in mind that users who want this functionality can enable it in their personal keymaps without affecting all the novice users who may be using your keyboard as their first programmable board.
|
||||
|
||||
By far the most common problem new users encounter is accidentally triggering Bootmagic while they're plugging in their keyboard. They're holding the keyboard by the bottom, unknowingly pressing in alt and spacebar, and then they find that these keys have been swapped on them. We recommend leaving this feature disabled by default, but if you do turn it on consider setting `BOOTMAGIC_KEY_SALT` to a key that is hard to press while plugging your keyboard in.
|
||||
|
||||
If your keyboard does not have 2 shift keys you should provide a working default for `IS_COMMAND`, even when you have set `COMMAND_ENABLE = no`. This will give your users a default to conform to if they do enable Command.
|
||||
|
||||
## Custom Keyboard Programming
|
||||
@ -238,7 +242,7 @@ As documented on [Customizing Functionality](custom_quantum_functions) you can d
|
||||
|
||||
## Non-Production/Handwired Projects
|
||||
|
||||
We're happy to accept any project that uses QMK, including handwired ones, but we have a separate `/keyboards/handwired/` folder for them, so the main `/keyboards/` folder doesn't get overcrowded. If a prototype project becomes a production project at some point in the future, we'd be happy to move it to the main `/keyboards/` folder!
|
||||
We're happy to accept any project that uses QMK, including prototypes and handwired ones, but we have a separate `/keyboards/handwired/` folder for them, so the main `/keyboards/` folder doesn't get overcrowded. If a prototype project becomes a production project at some point in the future, we'd be happy to move it to the main `/keyboards/` folder!
|
||||
|
||||
## Warnings as Errors
|
||||
|
||||
|
157
docs/keycodes.md
157
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/Super key) |✔ |✔ |✔ |
|
||||
|`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/Super key) |✔ |✔ |✔ |
|
||||
|`KC_RIGHT_GUI` |`KC_RGUI`, `KC_RCMD`, `KC_RWIN`|Right GUI (Windows/Command/Meta 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>|✔ |
|
||||
@ -404,6 +404,7 @@ See also: [Layer Switching](feature_layers#switching-and-toggling-layers)
|
||||
|`DF(layer)` |Set the base (default) layer until the keyboard loses power |
|
||||
|`PDF(layer)` |Set the base (default) layer in EEPROM |
|
||||
|`MO(layer)` |Momentarily turn on `layer` when pressed (requires `KC_TRNS` on destination layer)|
|
||||
|`OSL(layer)` |Momentarily activates `layer` until a key is pressed. See [One Shot Keys](one_shot_keys) for details. |
|
||||
|`LM(layer, mod)`|Momentarily turn on `layer` (like MO) with `mod` active as well. Where `mod` is a mods_bit. Mods can be viewed [here](mod_tap). Example Implementation: `LM(LAYER_1, MOD_LALT)`|
|
||||
|`LT(layer, kc)` |Turn on `layer` when held, `kc` when tapped |
|
||||
|`TG(layer)` |Toggle `layer` on or off |
|
||||
@ -657,74 +658,58 @@ 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` |
|
||||
|`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 |
|
||||
|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 |
|
||||
|
||||
## 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)` |`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|
|
||||
|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/)|
|
||||
|
||||
## Tapping Term Keys {#tapping-term-keys}
|
||||
|
||||
@ -816,41 +801,13 @@ See also: [US ANSI Shifted Symbols](keycodes_us_ansi_shifted)
|
||||
|
||||
See also: [One Shot Keys](one_shot_keys)
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|--------------------|---------|---------------------------------------------------------------------|
|
||||
|`QK_ONE_SHOT_TOGGLE`|`OS_TOGG`|Toggles One Shot keys status |
|
||||
|`QK_ONE_SHOT_ON` |`OS_ON` |Turns One Shot keys on |
|
||||
|`QK_ONE_SHOT_OFF` |`OS_OFF` |Turns One Shot keys off |
|
||||
|`OSL(layer)` | |Switch to `layer` for one keypress |
|
||||
|`OSM(mod)` | |Hold `mod` for one keypress |
|
||||
|`OS_LCTL` | |Hold Left Control for one keypress |
|
||||
|`OS_LSFT` | |Hold Left Shift for one keypress |
|
||||
|`OS_LALT` | |Hold Left Alt for one keypress |
|
||||
|`OS_LGUI` | |Hold Left GUI for one keypress |
|
||||
|`OS_LCS` | |Hold Left Control and Left Shift for one keypress |
|
||||
|`OS_LCA` | |Hold Left Control and left Alt for one keypress |
|
||||
|`OS_LCG` | |Hold Left Control and Left GUI for one keypress |
|
||||
|`OS_LSA` | |Hold Left Shift and Left Alt for one keypress |
|
||||
|`OS_LSG` | |Hold Left Shift and Left GUI for one keypress |
|
||||
|`OS_LAG` | |Hold Left Alt and Left GUI for one keypress |
|
||||
|`OS_LCSG` | |Hold Left Control, Left Shift and Left GUI for one keypress |
|
||||
|`OS_LCAG` | |Hold Left Control, Left Alt and Left GUI for one keypress |
|
||||
|`OS_LSAG` | |Hold Left Shift, Left Alt and Left GUI for one keypress |
|
||||
|`OS_RCTL` | |Hold Right Control for one keypress |
|
||||
|`OS_RSFT` | |Hold Right Shift for one keypress |
|
||||
|`OS_RALT` | |Hold Right Alt for one keypress |
|
||||
|`OS_RGUI` | |Hold Right GUI for one keypress |
|
||||
|`OS_RCS` | |Hold Right Control and Right Shift for one keypress |
|
||||
|`OS_RCA` | |Hold Right Control and Right Alt for one keypress |
|
||||
|`OS_RCG` | |Hold Right Control and Right GUI for one keypress |
|
||||
|`OS_RSA` | |Hold Right Shift and Right Alt for one keypress |
|
||||
|`OS_RSG` | |Hold Right Shift and Right GUI for one keypress |
|
||||
|`OS_RAG` | |Hold Right Alt and Right GUI for one keypress |
|
||||
|`OS_RCSG` | |Hold Right Control, Right Shift and Right GUI for one keypress |
|
||||
|`OS_RCAG` | |Hold Right Control, Right Alt and Right GUI for one keypress |
|
||||
|`OS_RSAG` | |Hold Right Shift, Right Alt and Right GUI for one keypress |
|
||||
|`OS_MEH` | |Hold Left Control, Left Shift and Left Alt for one keypress |
|
||||
|`OS_HYPR` | |Hold Left Control, Left Shift, Left Alt and Left GUI for one keypress|
|
||||
|Key |Aliases |Description |
|
||||
|--------------------|---------|----------------------------------|
|
||||
|`OSM(mod)` | |Hold `mod` for one keypress |
|
||||
|`OSL(layer)` | |Switch to `layer` for one keypress|
|
||||
|`QK_ONE_SHOT_TOGGLE`|`OS_TOGG`|Toggles One Shot keys status |
|
||||
|`QK_ONE_SHOT_ON` |`OS_ON` |Turns One Shot keys on |
|
||||
|`QK_ONE_SHOT_OFF` |`OS_OFF` |Turns One Shot keys off |
|
||||
|
||||
## Programmable Button Support {#programmable-button}
|
||||
|
||||
|
@ -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/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)|
|
||||
|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)|
|
||||
|
||||
## International
|
||||
|
||||
|
@ -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/Super key) |
|
||||
|`MOD_LGUI`|Left GUI (Windows/Command/Meta key) |
|
||||
|`MOD_RCTL`|Right Control |
|
||||
|`MOD_RSFT`|Right Shift |
|
||||
|`MOD_RALT`|Right Alt (AltGr) |
|
||||
|`MOD_RGUI`|Right GUI (Windows/Command/Super key) |
|
||||
|`MOD_RGUI`|Right GUI (Windows/Command/Meta key) |
|
||||
|`MOD_HYPR`|Hyper (Left Control, Shift, Alt and GUI)|
|
||||
|`MOD_MEH` |Meh (Left Control, Shift, and Alt) |
|
||||
|
||||
@ -27,38 +27,29 @@ 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)`|`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>
|
||||
|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/)|
|
||||
|
||||
## Caveats
|
||||
|
||||
|
@ -33,7 +33,7 @@ qmk new-keymap
|
||||
If you did not configure your environment, or you have multiple keyboards, you can specify a keyboard name:
|
||||
|
||||
```sh
|
||||
qmk new-keymap -kb <keyboard>
|
||||
qmk new-keymap -kb <keyboard_name>
|
||||
```
|
||||
|
||||
Look at the output from that command, you should see something like this:
|
||||
|
@ -60,7 +60,7 @@ open .
|
||||
The firmware file always follows this naming format:
|
||||
|
||||
```
|
||||
<keyboard>_<keymap>.{bin,hex}
|
||||
<keyboard_name>_<keymap_name>.{bin,hex}
|
||||
```
|
||||
|
||||
For example, the `planck/rev5` with a `default` keymap will have this filename:
|
||||
|
@ -15,49 +15,11 @@ You can control the behavior of one shot keys by defining these in `config.h`:
|
||||
#define ONESHOT_TIMEOUT 5000 /* Time (in ms) before the one shot key is released */
|
||||
```
|
||||
|
||||
## Keycodes {#keycodes}
|
||||
|
||||
|Key |Aliases |Description |
|
||||
|--------------------|---------|---------------------------------------------------------------------|
|
||||
|`QK_ONE_SHOT_TOGGLE`|`OS_TOGG`|Toggles One Shot keys status |
|
||||
|`QK_ONE_SHOT_ON` |`OS_ON` |Turns One Shot keys on |
|
||||
|`QK_ONE_SHOT_OFF` |`OS_OFF` |Turns One Shot keys off |
|
||||
|`OSL(layer)` | |Switch to `layer` for one keypress |
|
||||
|`OSM(mod)` | |Hold `mod` for one keypress |
|
||||
|`OS_LCTL` | |Hold Left Control for one keypress |
|
||||
|`OS_LSFT` | |Hold Left Shift for one keypress |
|
||||
|`OS_LALT` | |Hold Left Alt for one keypress |
|
||||
|`OS_LGUI` | |Hold Left GUI for one keypress |
|
||||
|`OS_LCS` | |Hold Left Control and Left Shift for one keypress |
|
||||
|`OS_LCA` | |Hold Left Control and left Alt for one keypress |
|
||||
|`OS_LCG` | |Hold Left Control and Left GUI for one keypress |
|
||||
|`OS_LSA` | |Hold Left Shift and Left Alt for one keypress |
|
||||
|`OS_LSG` | |Hold Left Shift and Left GUI for one keypress |
|
||||
|`OS_LAG` | |Hold Left Alt and Left GUI for one keypress |
|
||||
|`OS_LCSG` | |Hold Left Control, Left Shift and Left GUI for one keypress |
|
||||
|`OS_LCAG` | |Hold Left Control, Left Alt and Left GUI for one keypress |
|
||||
|`OS_LSAG` | |Hold Left Shift, Left Alt and Left GUI for one keypress |
|
||||
|`OS_RCTL` | |Hold Right Control for one keypress |
|
||||
|`OS_RSFT` | |Hold Right Shift for one keypress |
|
||||
|`OS_RALT` | |Hold Right Alt for one keypress |
|
||||
|`OS_RGUI` | |Hold Right GUI for one keypress |
|
||||
|`OS_RCS` | |Hold Right Control and Right Shift for one keypress |
|
||||
|`OS_RCA` | |Hold Right Control and Right Alt for one keypress |
|
||||
|`OS_RCG` | |Hold Right Control and Right GUI for one keypress |
|
||||
|`OS_RSA` | |Hold Right Shift and Right Alt for one keypress |
|
||||
|`OS_RSG` | |Hold Right Shift and Right GUI for one keypress |
|
||||
|`OS_RAG` | |Hold Right Alt and Right GUI for one keypress |
|
||||
|`OS_RCSG` | |Hold Right Control, Right Shift and Right GUI for one keypress |
|
||||
|`OS_RCAG` | |Hold Right Control, Right Alt and Right GUI for one keypress |
|
||||
|`OS_RSAG` | |Hold Right Shift, Right Alt and Right GUI for one keypress |
|
||||
|`OS_MEH` | |Hold Left Control, Left Shift and Left Alt for one keypress |
|
||||
|`OS_HYPR` | |Hold Left Control, Left Shift, Left Alt and Left GUI for one keypress|
|
||||
|
||||
When One Shot keys are turned off, `OSM()` and `OSL()` will behave like normal modifier keys and `MO()`, respectively.
|
||||
|
||||
::: info
|
||||
The `mod` parameter to the `OSM()` keycode must use the `MOD_*` prefix, rather than `KC_*`, eg. `OSM(MOD_LCTL | MOD_LSFT)`.
|
||||
:::
|
||||
* `OSM(mod)` - Momentarily hold down *mod*. You must use the `MOD_*` keycodes as shown in [Mod Tap](mod_tap), not the `KC_*` codes.
|
||||
* `OSL(layer)` - momentary switch to *layer*.
|
||||
* `OS_ON` - Turns on One Shot keys.
|
||||
* `OS_OFF` - Turns off One Shot keys. OSM act as regular mod keys, OSL act like `MO`.
|
||||
* `OS_TOGG` - Toggles the one shot key status.
|
||||
|
||||
Sometimes, you want to activate a one-shot key as part of a macro or tap dance routine.
|
||||
|
||||
|
@ -2,7 +2,7 @@
|
||||
|
||||
The information contained in `info.json` is combined with the `config.h` and `rules.mk` files, dynamically generating the necessary configuration for your keyboard at compile time. It is also used by the [QMK API](https://github.com/qmk/qmk_api), and contains the information [QMK Configurator](https://config.qmk.fm/) needs to display a representation of your keyboard. Its key/value pairs are ruled by the [`data/schemas/keyboard.jsonschema`](https://github.com/qmk/qmk_firmware/blob/master/data/schemas/keyboard.jsonschema) file. To learn more about the why and how of the schema file see the [Data Driven Configuration](data_driven_config) page.
|
||||
|
||||
You can create `info.json` files at every level under `qmk_firmware/keyboards/<keyboard>`. These files are combined, with more specific files overriding keys in less specific files. This means you do not need to duplicate your metadata information. For example, `qmk_firmware/keyboards/clueboard/info.json` specifies information common to all Clueboard products, such as `manufacturer` and `maintainer`, while `qmk_firmware/keyboards/clueboard/66/info.json` contains more specific information about Clueboard 66%.
|
||||
You can create `info.json` files at every level under `qmk_firmware/keyboards/<keyboard_name>`. These files are combined, with more specific files overriding keys in less specific files. This means you do not need to duplicate your metadata information. For example, `qmk_firmware/keyboards/clueboard/info.json` specifies information common to all Clueboard products, such as `manufacturer` and `maintainer`, while `qmk_firmware/keyboards/clueboard/66/info.json` contains more specific information about Clueboard 66%.
|
||||
|
||||
## General Metadata {#general-metadata}
|
||||
|
||||
|
@ -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
|
||||
|
@ -19,5 +19,5 @@
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef RP_SPI_USE_SPI0
|
||||
#define RP_SPI_USE_SPI0 TRUE
|
||||
#undef RP_SPI_USE_SPI1
|
||||
#define RP_SPI_USE_SPI1 TRUE
|
||||
|
@ -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/v2, lily pad v2
|
||||
* Hardware Availability: this keyboard is available from the [Boardsource store](https://boardsource.xyz/products/lily-pad-pcb)
|
||||
* Hardware Supported: lulu v1
|
||||
* Hardware Availability: this keyboard is available from the [Boardsource store](https://boardsource.xyz/store/61d0b772319a1f3cc53ba2fb)
|
||||
|
||||
|
||||
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 or lily pad (integrated microcontroller).
|
||||
Compile `rp2040` firmware if you purchased PCB in lulu group buy (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": 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, 0], "x": 5.25, "y": 0},
|
||||
|
||||
{"matrix": [0, 5], "x": 5.25, "y": 0},
|
||||
{"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": [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": 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, 0], "x": 5.25, "y": 0},
|
||||
|
||||
{"matrix": [0, 5], "x": 5.25, "y": 0},
|
||||
{"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": [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, 1], "x": 0, "y": 2.25, "w": 2.75},
|
||||
{"matrix": [2, 0], "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}
|
||||
|
@ -1,24 +0,0 @@
|
||||
/* Copyright 2025 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
// PWM driver with direct memory access (DMA) support
|
||||
#define WS2812_PWM_DRIVER PWMD1
|
||||
#define WS2812_PWM_CHANNEL 2
|
||||
#define WS2812_PWM_PAL_MODE 2
|
||||
#define WS2812_DMA_STREAM STM32_DMA1_STREAM5
|
||||
#define WS2812_DMA_CHANNEL 6
|
@ -1,21 +0,0 @@
|
||||
/* Copyright 2025 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_PWM TRUE
|
||||
|
||||
#include_next <halconf.h>
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"keyboard_name": "MX65X Hotswap",
|
||||
"usb": {
|
||||
"pid": "0x6BD8"
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
@ -1,421 +0,0 @@
|
||||
{
|
||||
"manufacturer": "Cipulot",
|
||||
"maintainer": "Cipulot",
|
||||
"bootloader": "stm32-dfu",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "F0", "pin_b": "F1"}
|
||||
]
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"encoder": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["B14", "B12", "B11", "B10", "B2", "B1", "B0", "A7", "A6", "A5", "A4", "A3", "A2", "A1", "A0"],
|
||||
"rows": ["A15", "B7", "B13", "B15", "A8"]
|
||||
},
|
||||
"processor": "STM32F072",
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"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": 26
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "0.0.1",
|
||||
"shared_endpoint": {
|
||||
"keyboard": true
|
||||
},
|
||||
"vid": "0x6369"
|
||||
},
|
||||
"ws2812": {
|
||||
"driver": "pwm",
|
||||
"pin": "A9"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT_65_ansi_blocker": {
|
||||
"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, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [1, 14], "x": 15, "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, 14], "x": 15, "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": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 14], "x": 15, "y": 2},
|
||||
{"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, 14], "x": 15, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 13, "y": 4},
|
||||
{"matrix": [4, 12], "x": 14, "y": 4},
|
||||
{"matrix": [4, 13], "x": 15, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_ansi_blocker_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, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [1, 14], "x": 15, "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, 14], "x": 15, "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": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 14], "x": 15, "y": 2},
|
||||
{"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, 14], "x": 15, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 13, "y": 4},
|
||||
{"matrix": [4, 12], "x": 14, "y": 4},
|
||||
{"matrix": [4, 13], "x": 15, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_iso_blocker": {
|
||||
"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, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [1, 14], "x": 15, "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, 14], "x": 15, "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": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [3, 14], "x": 15, "y": 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, 14], "x": 15, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 6], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 9], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 10], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 13, "y": 4},
|
||||
{"matrix": [4, 12], "x": 14, "y": 4},
|
||||
{"matrix": [4, 13], "x": 15, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_65_iso_blocker_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, 14], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [1, 14], "x": 15, "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, 14], "x": 15, "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": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [3, 14], "x": 15, "y": 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, 14], "x": 15, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 1], "x": 1.5, "y": 4},
|
||||
{"matrix": [4, 2], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 6], "x": 4, "y": 4, "w": 7},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 13, "y": 4},
|
||||
{"matrix": [4, 12], "x": 14, "y": 4},
|
||||
{"matrix": [4, 13], "x": 15, "y": 4}
|
||||
]
|
||||
},
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"matrix": [1, 14], "x": 15, "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, 14], "x": 15, "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": [2, 12], "x": 12.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 13.75, "y": 2, "w": 1.25},
|
||||
{"matrix": [3, 14], "x": 15, "y": 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, 14], "x": 15, "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, 4], "x": 4, "y": 4, "w": 2.5},
|
||||
{"matrix": [4, 6], "x": 6.5, "y": 4},
|
||||
{"matrix": [4, 8], "x": 7.5, "y": 4, "w": 2.5},
|
||||
{"matrix": [4, 9], "x": 10, "y": 4},
|
||||
{"matrix": [4, 10], "x": 11, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 11], "x": 13, "y": 4},
|
||||
{"matrix": [4, 12], "x": 14, "y": 4},
|
||||
{"matrix": [4, 13], "x": 15, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,50 +0,0 @@
|
||||
/* Copyright 2025 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_65_ansi_blocker(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||
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_ENTER, KC_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||
|
||||
[1] = LAYOUT_65_ansi_blocker(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, MO(2), _______, _______, _______),
|
||||
|
||||
[2] = LAYOUT_65_ansi_blocker(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[2] = { ENCODER_CCW_CW(_______, _______) }
|
||||
};
|
||||
#endif
|
||||
// clang-format on
|
@ -1 +0,0 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
@ -1,50 +0,0 @@
|
||||
/* Copyright 2025 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_65_ansi_blocker_tsangan(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||
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_ENTER, KC_PGDN,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||
|
||||
[1] = LAYOUT_65_ansi_blocker_tsangan(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, MO(2), _______, _______, _______),
|
||||
|
||||
[2] = LAYOUT_65_ansi_blocker_tsangan(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[2] = { ENCODER_CCW_CW(_______, _______) }
|
||||
};
|
||||
#endif
|
||||
// clang-format on
|
@ -1 +0,0 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
@ -1,50 +0,0 @@
|
||||
/* Copyright 2025 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_65_iso_blocker(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, KC_PGDN,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||
|
||||
[1] = LAYOUT_65_iso_blocker(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, MO(2), _______, _______, _______),
|
||||
|
||||
[2] = LAYOUT_65_iso_blocker(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[2] = { ENCODER_CCW_CW(_______, _______) }
|
||||
};
|
||||
#endif
|
||||
// clang-format on
|
@ -1 +0,0 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
@ -1,50 +0,0 @@
|
||||
/* Copyright 2025 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_65_iso_blocker_tsangan(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_PGUP,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, KC_PGDN,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||
|
||||
[1] = LAYOUT_65_iso_blocker_tsangan(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, MO(2), _______, _______, _______),
|
||||
|
||||
[2] = LAYOUT_65_iso_blocker_tsangan(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[2] = { ENCODER_CCW_CW(_______, _______) }
|
||||
};
|
||||
#endif
|
||||
// clang-format on
|
@ -1 +0,0 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
@ -1,50 +0,0 @@
|
||||
/* Copyright 2025 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
// clang-format off
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_BSPC, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_PGUP,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENTER, KC_PGDN,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_SPC, KC_SPC, KC_RALT, KC_RCTL, KC_LEFT, KC_DOWN, KC_RIGHT),
|
||||
|
||||
[1] = LAYOUT_all(
|
||||
_______, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, MO(2), _______, _______, _______),
|
||||
|
||||
[2] = LAYOUT_all(
|
||||
QK_BOOT, NK_TOGG, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______)
|
||||
};
|
||||
|
||||
#if defined(ENCODER_MAP_ENABLE)
|
||||
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
|
||||
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
|
||||
[1] = { ENCODER_CCW_CW(_______, _______) },
|
||||
[2] = { ENCODER_CCW_CW(_______, _______) }
|
||||
};
|
||||
#endif
|
||||
// clang-format on
|
@ -1 +0,0 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
@ -1,22 +0,0 @@
|
||||
/* Copyright 2025 Cipulot
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include_next <mcuconf.h>
|
||||
|
||||
#undef STM32_PWM_USE_TIM1
|
||||
#define STM32_PWM_USE_TIM1 TRUE
|
@ -1,36 +0,0 @@
|
||||
# MX65X
|
||||
|
||||
A 65% solder and hotswap PCB.
|
||||
|
||||
Solder
|
||||
|
||||

|
||||
|
||||
Hotswap
|
||||
|
||||

|
||||
|
||||
|
||||
* Keyboard Maintainer: [cipulot](https://github.com/cipulot)
|
||||
* Hardware Supported: MX65X Solder and Hotswap
|
||||
* Hardware Availability: [Clever Keebs](https://cleverkeebs.com)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cipulot/mx65x/solder:default
|
||||
make cipulot/mx65x/hotswap:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cipulot/mx65x/solder:default:flash
|
||||
make cipulot/mx65x/hotswap:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 3 ways:
|
||||
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is configured.
|
||||
* **Physical reset button**: Long press the reset button soldered on the PCB.
|
||||
* **Bootmagic reset**: Hold down the top left key and plug in the controller.
|
@ -1,6 +0,0 @@
|
||||
{
|
||||
"keyboard_name": "MX65X Solder",
|
||||
"usb": {
|
||||
"pid": "0x6BD7"
|
||||
}
|
||||
}
|
@ -1,2 +0,0 @@
|
||||
# Wildcard to allow APM32 MCU
|
||||
DFU_SUFFIX_ARGS = -v FFFF -p FFFF
|
@ -1,33 +0,0 @@
|
||||
{
|
||||
"manufacturer": "Trey Wax",
|
||||
"keyboard_name": "cloud_macro",
|
||||
"maintainer": "TweyHugs",
|
||||
"development_board": "kb2040",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"direct":[
|
||||
["GP2", "GP3", "GP4", "GP5", "GP6"]
|
||||
]
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0000",
|
||||
"vid": "0xFEED"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,8 +0,0 @@
|
||||
// Copyright 2023 QMK
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT(KC_1, KC_2, KC_3, KC_4, KC_5)
|
||||
};
|
@ -1,27 +0,0 @@
|
||||
# cloud_macro
|
||||
|
||||

|
||||
|
||||
A 5 key macropad in the shape of a cloud
|
||||
|
||||
* Keyboard Maintainer: [Trey Wax](https://github.com/TweyHugs)
|
||||
* Hardware Supported: Adafruit KB2040
|
||||
* Hardware Availability: *https://circuitrey.carrd.co/*
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make cloud_macro:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make cloud_macro: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
|
@ -204,26 +204,26 @@ led_config_t g_led_config = {{
|
||||
{196, 64}, // 65 Down
|
||||
{210, 64}, // 66 Right
|
||||
|
||||
{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
|
||||
{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
|
||||
}, {
|
||||
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
|
||||
|
||||
{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
|
||||
{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
|
||||
}, {
|
||||
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,
|
||||
|
@ -1,41 +0,0 @@
|
||||
/* Copyright 2023 CMM.S Freather
|
||||
*
|
||||
* 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"
|
||||
|
||||
#ifdef RGBLIGHT_LAYERS
|
||||
const rgblight_segment_t PROGMEM my_capslock_layer[] = RGBLIGHT_LAYER_SEGMENTS(
|
||||
{0, 1, HSV_WHITE}
|
||||
);
|
||||
|
||||
// Now define the array of layers. Later layers take precedence
|
||||
const rgblight_segment_t* const PROGMEM my_rgb_layers[] = RGBLIGHT_LAYERS_LIST(
|
||||
my_capslock_layer
|
||||
);
|
||||
|
||||
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
|
@ -1,312 +0,0 @@
|
||||
{
|
||||
"manufacturer": "GrayStudio",
|
||||
"keyboard_name": "BD60",
|
||||
"maintainer": "srk24",
|
||||
"bootloader": "stm32-dfu",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgblight": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["A3", "C14", "C13", "B9", "B8", "B7", "B6", "B5", "B4", "B3", "A15", "B0", "A8", "B15", "B14"],
|
||||
"rows": ["B13", "B12", "A2", "A0", "A1"]
|
||||
},
|
||||
"processor": "STM32F072",
|
||||
"rgblight": {
|
||||
"animations": {
|
||||
"alternating": true,
|
||||
"breathing": true,
|
||||
"christmas": true,
|
||||
"knight": true,
|
||||
"rainbow_mood": true,
|
||||
"rainbow_swirl": true,
|
||||
"snake": true,
|
||||
"static_gradient": true,
|
||||
"twinkle": true
|
||||
},
|
||||
"brightness_steps": 8,
|
||||
"default": {
|
||||
"animation": "rainbow_mood"
|
||||
},
|
||||
"layers": {
|
||||
"enabled": true
|
||||
},
|
||||
"led_count": 1,
|
||||
"max_brightness": 150,
|
||||
"saturation_steps": 8,
|
||||
"sleep": true
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "0.0.2",
|
||||
"pid": "0x4060",
|
||||
"vid": "0x4753"
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "B10"
|
||||
},
|
||||
"community_layouts": ["60_ansi", "60_ansi_wkl", "60_hhkb"],
|
||||
"layouts": {
|
||||
"LAYOUT_60_ansi": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0, "w": 2},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 2], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 2], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
},
|
||||
"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, 2], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 2], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 13], "x": 12.25, "y": 3, "w": 2.75},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 7], "x": 3.75, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 14], "x": 13.75, "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": [0, 14], "x": 14, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 2], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 2], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1},
|
||||
{"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 7], "x": 3.75, "y": 4, "w": 7},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.5},
|
||||
{"matrix": [4, 13], "x": 12.5, "y": 4, "w": 1}
|
||||
]
|
||||
},
|
||||
"LAYOUT_all": {
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"matrix": [0, 1], "x": 1, "y": 0},
|
||||
{"matrix": [0, 2], "x": 2, "y": 0},
|
||||
{"matrix": [0, 3], "x": 3, "y": 0},
|
||||
{"matrix": [0, 4], "x": 4, "y": 0},
|
||||
{"matrix": [0, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 6], "x": 6, "y": 0},
|
||||
{"matrix": [0, 7], "x": 7, "y": 0},
|
||||
{"matrix": [0, 8], "x": 8, "y": 0},
|
||||
{"matrix": [0, 9], "x": 9, "y": 0},
|
||||
{"matrix": [0, 10], "x": 10, "y": 0},
|
||||
{"matrix": [0, 11], "x": 11, "y": 0},
|
||||
{"matrix": [0, 12], "x": 12, "y": 0},
|
||||
{"matrix": [0, 13], "x": 13, "y": 0},
|
||||
{"matrix": [0, 14], "x": 14, "y": 0},
|
||||
{"matrix": [1, 0], "x": 0, "y": 1, "w": 1.5},
|
||||
{"matrix": [1, 2], "x": 1.5, "y": 1},
|
||||
{"matrix": [1, 3], "x": 2.5, "y": 1},
|
||||
{"matrix": [1, 4], "x": 3.5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 4.5, "y": 1},
|
||||
{"matrix": [1, 6], "x": 5.5, "y": 1},
|
||||
{"matrix": [1, 7], "x": 6.5, "y": 1},
|
||||
{"matrix": [1, 8], "x": 7.5, "y": 1},
|
||||
{"matrix": [1, 9], "x": 8.5, "y": 1},
|
||||
{"matrix": [1, 10], "x": 9.5, "y": 1},
|
||||
{"matrix": [1, 11], "x": 10.5, "y": 1},
|
||||
{"matrix": [1, 12], "x": 11.5, "y": 1},
|
||||
{"matrix": [1, 13], "x": 12.5, "y": 1},
|
||||
{"matrix": [1, 14], "x": 13.5, "y": 1, "w": 1.5},
|
||||
{"matrix": [2, 0], "x": 0, "y": 2, "w": 1.75},
|
||||
{"matrix": [2, 2], "x": 1.75, "y": 2},
|
||||
{"matrix": [2, 3], "x": 2.75, "y": 2},
|
||||
{"matrix": [2, 4], "x": 3.75, "y": 2},
|
||||
{"matrix": [2, 5], "x": 4.75, "y": 2},
|
||||
{"matrix": [2, 6], "x": 5.75, "y": 2},
|
||||
{"matrix": [2, 7], "x": 6.75, "y": 2},
|
||||
{"matrix": [2, 8], "x": 7.75, "y": 2},
|
||||
{"matrix": [2, 9], "x": 8.75, "y": 2},
|
||||
{"matrix": [2, 10], "x": 9.75, "y": 2},
|
||||
{"matrix": [2, 11], "x": 10.75, "y": 2},
|
||||
{"matrix": [2, 12], "x": 11.75, "y": 2},
|
||||
{"matrix": [2, 13], "x": 12.75, "y": 2, "w": 2.25},
|
||||
{"matrix": [3, 0], "x": 0, "y": 3, "w": 2.25},
|
||||
{"matrix": [3, 2], "x": 2.25, "y": 3},
|
||||
{"matrix": [3, 3], "x": 3.25, "y": 3},
|
||||
{"matrix": [3, 4], "x": 4.25, "y": 3},
|
||||
{"matrix": [3, 5], "x": 5.25, "y": 3},
|
||||
{"matrix": [3, 6], "x": 6.25, "y": 3},
|
||||
{"matrix": [3, 7], "x": 7.25, "y": 3},
|
||||
{"matrix": [3, 8], "x": 8.25, "y": 3},
|
||||
{"matrix": [3, 9], "x": 9.25, "y": 3},
|
||||
{"matrix": [3, 10], "x": 10.25, "y": 3},
|
||||
{"matrix": [3, 11], "x": 11.25, "y": 3},
|
||||
{"matrix": [3, 13], "x": 12.25, "y": 3, "w": 1.75},
|
||||
{"matrix": [3, 14], "x": 14, "y": 3},
|
||||
{"matrix": [4, 0], "x": 0, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 1], "x": 1.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 3], "x": 2.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 7], "x": 3.75, "y": 4, "w": 6.25},
|
||||
{"matrix": [4, 10], "x": 10, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 11], "x": 11.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 13], "x": 12.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [4, 14], "x": 13.75, "y": 4, "w": 1.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,20 +0,0 @@
|
||||
// Copyright 2023 srk24
|
||||
// SPDX-License-Identifier: GPL-2.0
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
[0] = LAYOUT_all(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, MO(1),
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_RGUI, KC_RCTL, MO(1)
|
||||
),
|
||||
[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_DEL, KC_INS,
|
||||
_______, UG_TOGG, KC_UP, UG_NEXT, _______, _______, _______, UG_VALU, UG_VALD, _______, _______, _______, _______, KC_INS,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RGHT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
KC_MPRV, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_MNXT, _______,
|
||||
_______, _______, _______, KC_MPLY, _______, KC_LEFT, KC_RGHT, _______
|
||||
)
|
||||
};
|
@ -1,24 +0,0 @@
|
||||
# Matrix Diagram for GrayStudio BD60
|
||||
|
||||
```
|
||||
┌───────┐
|
||||
2u Backspace │0D │
|
||||
└───────┘
|
||||
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
|
||||
│00 │01 │02 │03 │04 │05 │06 │07 │08 │09 │0A │0B │0C │0D │0E │
|
||||
├───┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴───┤
|
||||
│10 │12 │13 │14 │15 │16 │17 │18 │19 │1A │1B │1C │1D │1E │
|
||||
├─────┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴┬──┴─────┤
|
||||
│20 │22 │23 │24 │25 │26 │27 │28 │29 │2A │2B │2C │2D │
|
||||
├──────┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴────┬───┤
|
||||
│30 │32 │33 │34 │35 │36 │37 │38 │39 │3A │3B │3D │3E │
|
||||
├────┬───┴┬──┴─┬─┴───┴───┴───┴───┴───┴──┬┴───┼───┴┬────┬┴───┤
|
||||
│40 │41 │43 │47 │4A │4B │4D │4E │
|
||||
└────┴────┴────┴────────────────────────┴────┴────┴────┴────┘
|
||||
┌────────┐ ┌──────────┐
|
||||
│30 │ 2.25u LShift 2.75u RShift │3D │
|
||||
└────────┘ └──────────┘
|
||||
┌─────┬───┬─────┬───────────────────────────┬─────┬───┬─────┐
|
||||
│40 │41 │43 │47 │4B │4D │4E │ Tsangan/WKL/HHKB
|
||||
└─────┴───┴─────┴───────────────────────────┴─────┴───┴─────┘
|
||||
```
|
@ -1,21 +0,0 @@
|
||||
# Gray Studio BD60
|
||||
|
||||
A 65% keyboard by Graystudio. PCB designed and manufactured by DEMO Studio.
|
||||
|
||||
* Keyboard Maintainer: [srk24](https://github.com/srk24)
|
||||
* Hardware Support: BD60 PCB w/ STM32F072 microcontroller
|
||||
* Hardware Availability: [graystudio.club/bd60](https://in-stock.graystudio.club/products/in-stock-bd60)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make gray_studio/bd60:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make gray_studio/bd60: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
|
||||
|
||||
* **Physical reset button**: Briefly press the button on the back of the PCB - some may have pads you must short instead
|
@ -1,33 +0,0 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,11 +0,0 @@
|
||||
{
|
||||
"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"
|
||||
]
|
||||
]
|
||||
}
|
@ -1,25 +0,0 @@
|
||||
# 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,7 +313,11 @@ bool dip_switch_update_kb(uint8_t index, bool active) {
|
||||
return false;
|
||||
}
|
||||
if (index == 0) {
|
||||
default_layer_set(1UL << (active ? MAC_B : WIN_B));
|
||||
default_layer_set(1UL << (active ? 2 : 0));
|
||||
}
|
||||
if(active){
|
||||
keymap_config.no_gui = 0;
|
||||
eeconfig_update_keymap(&keymap_config);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -60,7 +60,7 @@
|
||||
},
|
||||
"encoder": {
|
||||
"rotary": [
|
||||
{"pin_a": "B13", "pin_b": "B14", "resolution": 4}
|
||||
{"pin_a": "B14", "pin_b": "B13", "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_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) },
|
||||
[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) },
|
||||
};
|
||||
#endif
|
||||
|
||||
|
@ -1 +0,0 @@
|
||||
ENCODER_MAP_ENABLE = yes
|
@ -1,8 +0,0 @@
|
||||
/* Copyright 2025 oxnh */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#pragma once
|
||||
|
||||
#include_next <board.h>
|
||||
|
||||
#undef STM32_HSECLK
|
||||
#define STM32_HSECLK 12000000U
|
@ -1,10 +0,0 @@
|
||||
/* 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
|
||||
|
@ -1,7 +0,0 @@
|
||||
/* Copyright 2025 oxnh */
|
||||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_SERIAL TRUE
|
||||
|
||||
#include_next <halconf.h>
|
@ -1,100 +0,0 @@
|
||||
{
|
||||
"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}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,78 +0,0 @@
|
||||
/* 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,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______
|
||||
)
|
||||
};
|
@ -1,11 +0,0 @@
|
||||
/* 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
|
@ -1,25 +0,0 @@
|
||||
# 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": [2, 14], "x": 13.75, "y": 1, "w": 1.25, "h": 2},
|
||||
{"matrix": [1, 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},
|
||||
|
@ -1,35 +0,0 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* 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
|
||||
|
||||
/* LED Indicators */
|
||||
#define LED_WIN_LOCK_PIN C11
|
||||
|
||||
/* SPI Config for spi flash*/
|
||||
#define SPI_DRIVER SPIDQ
|
||||
#define SPI_SCK_PIN B3
|
||||
#define SPI_MOSI_PIN B5
|
||||
#define SPI_MISO_PIN B4
|
||||
#define SPI_MOSI_PAL_MODE 5
|
||||
|
||||
#define EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN C12
|
||||
|
||||
/* I2C Config for LED Driver */
|
||||
#define SNLED27351_I2C_ADDRESS_1 SNLED27351_I2C_ADDRESS_GND
|
||||
#define SNLED27351_I2C_ADDRESS_2 SNLED27351_I2C_ADDRESS_VDDIO
|
||||
#define I2C1_CLOCK_SPEED 400000 /* 400000 */
|
||||
#define I2C1_OPMODE OPMODE_I2C
|
@ -1,21 +0,0 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
#pragma once
|
||||
|
||||
#define HAL_USE_I2C TRUE
|
||||
#define HAL_USE_SPI TRUE
|
||||
|
||||
#include_next <halconf.h>
|
@ -1,279 +0,0 @@
|
||||
{
|
||||
"manufacturer": "MonsGeek",
|
||||
"keyboard_name": "M2",
|
||||
"maintainer": "jonylee@hfd",
|
||||
"bootloader": "wb32-dfu",
|
||||
"diode_direction": "ROW2COL",
|
||||
"dynamic_keymap": {
|
||||
"layer_count": 6
|
||||
},
|
||||
"eeprom": {
|
||||
"driver": "wear_leveling",
|
||||
"wear_leveling": {
|
||||
"backing_size": 8192,
|
||||
"driver": "spi_flash"
|
||||
}
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"host": {
|
||||
"default": {
|
||||
"nkro": true
|
||||
}
|
||||
},
|
||||
"indicators": {
|
||||
"caps_lock": "A15",
|
||||
"num_lock": "C10"
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["C1", "C2", "C3", "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "C4", "C5", "B0", "B1", "B2", "B10", "B11", "B12", "B13", "B14"],
|
||||
"rows": ["B15", "C6", "C7", "C8", "C9", "A8"]
|
||||
},
|
||||
"processor": "WB32FQ95",
|
||||
"qmk": {
|
||||
"locking": {
|
||||
"enabled": true,
|
||||
"resync": true
|
||||
}
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"animations": {
|
||||
"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,
|
||||
"dual_beacon": true,
|
||||
"multisplash": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"raindrops": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_simple": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"driver": "snled27351",
|
||||
"layout": [
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 1], "x": 13, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 26, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 39, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 52, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 65, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 6], "x": 79, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 7], "x": 92, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 8], "x": 105, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 9], "x": 118, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 10], "x": 131, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 11], "x": 144, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 12], "x": 158, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 13], "x": 171, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 17], "x": 184, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 18], "x": 197, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 19], "x": 210, "y": 0, "flags": 1},
|
||||
{"matrix": [0, 20], "x": 224, "y": 0, "flags": 1},
|
||||
{"matrix": [1, 0], "x": 0, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 13, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 26, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 39, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 52, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 65, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 6], "x": 79, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 7], "x": 92, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 8], "x": 105, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 9], "x": 118, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 10], "x": 131, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 11], "x": 144, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 12], "x": 158, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 13], "x": 171, "y": 12, "flags": 1},
|
||||
{"matrix": [1, 17], "x": 184, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 18], "x": 197, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 19], "x": 210, "y": 12, "flags": 4},
|
||||
{"matrix": [1, 20], "x": 224, "y": 12, "flags": 4},
|
||||
{"matrix": [2, 0], "x": 0, "y": 25, "flags": 1},
|
||||
{"matrix": [2, 1], "x": 13, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 26, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 39, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 52, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 65, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 6], "x": 79, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 7], "x": 92, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 8], "x": 105, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 9], "x": 118, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 10], "x": 131, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 11], "x": 144, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 12], "x": 158, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 13], "x": 171, "y": 25, "flags": 1},
|
||||
{"matrix": [2, 17], "x": 184, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 18], "x": 197, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 19], "x": 210, "y": 25, "flags": 4},
|
||||
{"matrix": [2, 20], "x": 224, "y": 25, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 0, "y": 38, "flags": 1},
|
||||
{"matrix": [3, 1], "x": 13, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 26, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 39, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 52, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 65, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 79, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 7], "x": 92, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 8], "x": 105, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 9], "x": 118, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 10], "x": 131, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 11], "x": 144, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 13], "x": 163, "y": 38, "flags": 1},
|
||||
{"matrix": [3, 17], "x": 184, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 18], "x": 197, "y": 38, "flags": 4},
|
||||
{"matrix": [3, 19], "x": 210, "y": 38, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 0, "y": 51, "flags": 1},
|
||||
{"matrix": [4, 1], "x": 26, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 2], "x": 39, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 3], "x": 52, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 4], "x": 65, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 5], "x": 79, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 6], "x": 92, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 7], "x": 105, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 8], "x": 118, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 9], "x": 131, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 10], "x": 144, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 13], "x": 158, "y": 51, "flags": 1},
|
||||
{"matrix": [4, 15], "x": 171, "y": 51, "flags": 1},
|
||||
{"matrix": [4, 17], "x": 184, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 18], "x": 197, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 19], "x": 210, "y": 51, "flags": 4},
|
||||
{"matrix": [4, 20], "x": 224, "y": 51, "flags": 1},
|
||||
{"matrix": [5, 0], "x": 0, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 1], "x": 18, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 2], "x": 37, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 5], "x": 92, "y": 64, "flags": 4},
|
||||
{"matrix": [5, 9], "x": 130, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 10], "x": 145, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 11], "x": 158, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 15], "x": 171, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 16], "x": 184, "y": 64, "flags": 1},
|
||||
{"matrix": [5, 18], "x": 197, "y": 64, "flags": 4},
|
||||
{"matrix": [5, 19], "x": 210, "y": 64, "flags": 4}
|
||||
],
|
||||
"max_brightness": 200,
|
||||
"sleep": true,
|
||||
"val_steps": 20
|
||||
},
|
||||
"usb": {
|
||||
"device_version": "1.0.4",
|
||||
"pid": "0x0008",
|
||||
"suspend_wakeup_delay": 400,
|
||||
"vid": "0xFFFE"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"label": "Esc", "matrix": [0, 0], "x": 0, "y": 0},
|
||||
{"label": "F1", "matrix": [0, 1], "x": 1.25, "y": 0},
|
||||
{"label": "F2", "matrix": [0, 2], "x": 2.25, "y": 0},
|
||||
{"label": "F3", "matrix": [0, 3], "x": 3.25, "y": 0},
|
||||
{"label": "F4", "matrix": [0, 4], "x": 4.25, "y": 0},
|
||||
{"label": "F5", "matrix": [0, 5], "x": 5.5, "y": 0},
|
||||
{"label": "F6", "matrix": [0, 6], "x": 6.5, "y": 0},
|
||||
{"label": "F7", "matrix": [0, 7], "x": 7.5, "y": 0},
|
||||
{"label": "F8", "matrix": [0, 8], "x": 8.5, "y": 0},
|
||||
{"label": "F9", "matrix": [0, 9], "x": 9.75, "y": 0},
|
||||
{"label": "F10", "matrix": [0, 10], "x": 10.75, "y": 0},
|
||||
{"label": "F11", "matrix": [0, 11], "x": 11.75, "y": 0},
|
||||
{"label": "F12", "matrix": [0, 12], "x": 12.75, "y": 0},
|
||||
{"label": "Delete", "matrix": [0, 13], "x": 14, "y": 0},
|
||||
{"label": "PrtSc", "matrix": [0, 17], "x": 15.5, "y": 0},
|
||||
{"label": "Home", "matrix": [0, 18], "x": 16.5, "y": 0},
|
||||
{"label": "Pgup", "matrix": [0, 19], "x": 17.5, "y": 0},
|
||||
{"label": "Pgdn", "matrix": [0, 20], "x": 18.5, "y": 0},
|
||||
{"label": "~", "matrix": [1, 0], "x": 0, "y": 1.25},
|
||||
{"label": "!", "matrix": [1, 1], "x": 1, "y": 1.25},
|
||||
{"label": "@", "matrix": [1, 2], "x": 2, "y": 1.25},
|
||||
{"label": "#", "matrix": [1, 3], "x": 3, "y": 1.25},
|
||||
{"label": "$", "matrix": [1, 4], "x": 4, "y": 1.25},
|
||||
{"label": "%", "matrix": [1, 5], "x": 5, "y": 1.25},
|
||||
{"label": "^", "matrix": [1, 6], "x": 6, "y": 1.25},
|
||||
{"label": "&", "matrix": [1, 7], "x": 7, "y": 1.25},
|
||||
{"label": "*", "matrix": [1, 8], "x": 8, "y": 1.25},
|
||||
{"label": "(", "matrix": [1, 9], "x": 9, "y": 1.25},
|
||||
{"label": ")", "matrix": [1, 10], "x": 10, "y": 1.25},
|
||||
{"label": "_", "matrix": [1, 11], "x": 11, "y": 1.25},
|
||||
{"label": "+", "matrix": [1, 12], "x": 12, "y": 1.25},
|
||||
{"label": "Bksp", "matrix": [1, 13], "x": 13, "y": 1.25, "w": 2},
|
||||
{"label": "Numlock", "matrix": [1, 17], "x": 15.5, "y": 1.25},
|
||||
{"label": "/", "matrix": [1, 18], "x": 16.5, "y": 1.25},
|
||||
{"label": "*", "matrix": [1, 19], "x": 17.5, "y": 1.25},
|
||||
{"label": "-", "matrix": [1, 20], "x": 18.5, "y": 1.25},
|
||||
{"label": "Tab", "matrix": [2, 0], "x": 0, "y": 2.25, "w": 1.5},
|
||||
{"label": "Q", "matrix": [2, 1], "x": 1.5, "y": 2.25},
|
||||
{"label": "W", "matrix": [2, 2], "x": 2.5, "y": 2.25},
|
||||
{"label": "E", "matrix": [2, 3], "x": 3.5, "y": 2.25},
|
||||
{"label": "R", "matrix": [2, 4], "x": 4.5, "y": 2.25},
|
||||
{"label": "T", "matrix": [2, 5], "x": 5.5, "y": 2.25},
|
||||
{"label": "Y", "matrix": [2, 6], "x": 6.5, "y": 2.25},
|
||||
{"label": "U", "matrix": [2, 7], "x": 7.5, "y": 2.25},
|
||||
{"label": "I", "matrix": [2, 8], "x": 8.5, "y": 2.25},
|
||||
{"label": "O", "matrix": [2, 9], "x": 9.5, "y": 2.25},
|
||||
{"label": "P", "matrix": [2, 10], "x": 10.5, "y": 2.25},
|
||||
{"label": "{", "matrix": [2, 11], "x": 11.5, "y": 2.25},
|
||||
{"label": "}", "matrix": [2, 12], "x": 12.5, "y": 2.25},
|
||||
{"label": "|", "matrix": [2, 13], "x": 13.5, "y": 2.25, "w": 1.5},
|
||||
{"label": "7", "matrix": [2, 17], "x": 15.5, "y": 2.25},
|
||||
{"label": "8", "matrix": [2, 18], "x": 16.5, "y": 2.25},
|
||||
{"label": "9", "matrix": [2, 19], "x": 17.5, "y": 2.25},
|
||||
{"label": "+", "matrix": [2, 20], "x": 18.5, "y": 2.25, "h": 2},
|
||||
{"label": "Caps Lock", "matrix": [3, 0], "x": 0, "y": 3.25, "w": 1.75},
|
||||
{"label": "A", "matrix": [3, 1], "x": 1.75, "y": 3.25},
|
||||
{"label": "S", "matrix": [3, 2], "x": 2.75, "y": 3.25},
|
||||
{"label": "D", "matrix": [3, 3], "x": 3.75, "y": 3.25},
|
||||
{"label": "F", "matrix": [3, 4], "x": 4.75, "y": 3.25},
|
||||
{"label": "G", "matrix": [3, 5], "x": 5.75, "y": 3.25},
|
||||
{"label": "H", "matrix": [3, 6], "x": 6.75, "y": 3.25},
|
||||
{"label": "J", "matrix": [3, 7], "x": 7.75, "y": 3.25},
|
||||
{"label": "K", "matrix": [3, 8], "x": 8.75, "y": 3.25},
|
||||
{"label": "L", "matrix": [3, 9], "x": 9.75, "y": 3.25},
|
||||
{"label": ":", "matrix": [3, 10], "x": 10.75, "y": 3.25},
|
||||
{"label": "'", "matrix": [3, 11], "x": 11.75, "y": 3.25},
|
||||
{"label": "Enter", "matrix": [3, 13], "x": 12.75, "y": 3.25, "w": 2.25},
|
||||
{"label": "4", "matrix": [3, 17], "x": 15.5, "y": 3.25},
|
||||
{"label": "5", "matrix": [3, 18], "x": 16.5, "y": 3.25},
|
||||
{"label": "6", "matrix": [3, 19], "x": 17.5, "y": 3.25},
|
||||
{"label": "Shift", "matrix": [4, 0], "x": 0, "y": 4.25, "w": 2.25},
|
||||
{"label": "Z", "matrix": [4, 1], "x": 2.25, "y": 4.25},
|
||||
{"label": "X", "matrix": [4, 2], "x": 3.25, "y": 4.25},
|
||||
{"label": "C", "matrix": [4, 3], "x": 4.25, "y": 4.25},
|
||||
{"label": "V", "matrix": [4, 4], "x": 5.25, "y": 4.25},
|
||||
{"label": "B", "matrix": [4, 5], "x": 6.25, "y": 4.25},
|
||||
{"label": "N", "matrix": [4, 6], "x": 7.25, "y": 4.25},
|
||||
{"label": "M", "matrix": [4, 7], "x": 8.25, "y": 4.25},
|
||||
{"label": "<", "matrix": [4, 8], "x": 9.25, "y": 4.25},
|
||||
{"label": ">", "matrix": [4, 9], "x": 10.25, "y": 4.25},
|
||||
{"label": "?", "matrix": [4, 10], "x": 11.25, "y": 4.25},
|
||||
{"label": "Shift", "matrix": [4, 13], "x": 12.25, "y": 4.25, "w": 1.75},
|
||||
{"label": "Up", "matrix": [4, 15], "x": 14.25, "y": 4.5},
|
||||
{"label": "1", "matrix": [4, 17], "x": 15.5, "y": 4.25},
|
||||
{"label": "2", "matrix": [4, 18], "x": 16.5, "y": 4.25},
|
||||
{"label": "3", "matrix": [4, 19], "x": 17.5, "y": 4.25},
|
||||
{"label": "Enter", "matrix": [4, 20], "x": 18.5, "y": 4.25, "h": 2},
|
||||
{"label": "Ctrl", "matrix": [5, 0], "x": 0, "y": 5.25, "w": 1.25},
|
||||
{"label": "Win", "matrix": [5, 1], "x": 1.25, "y": 5.25, "w": 1.25},
|
||||
{"label": "Alt", "matrix": [5, 2], "x": 2.5, "y": 5.25, "w": 1.25},
|
||||
{"label": "Space", "matrix": [5, 5], "x": 3.75, "y": 5.25, "w": 6.25},
|
||||
{"label": "Alt", "matrix": [5, 9], "x": 10, "y": 5.25, "w": 1.5},
|
||||
{"label": "Fn", "matrix": [5, 10], "x": 11.5, "y": 5.25, "w": 1.5},
|
||||
{"label": "Left", "matrix": [5, 11], "x": 13.25, "y": 5.5},
|
||||
{"label": "Down", "matrix": [5, 15], "x": 14.25, "y": 5.5},
|
||||
{"label": "Right", "matrix": [5, 16], "x": 15.25, "y": 5.5},
|
||||
{"label": "0", "matrix": [5, 18], "x": 16.5, "y": 5.25},
|
||||
{"label": ".", "matrix": [5, 19], "x": 17.5, "y": 5.25}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,80 +0,0 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* 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
|
||||
|
||||
// clang-format off
|
||||
enum __layers {
|
||||
WIN_B,
|
||||
WIN_WASD,
|
||||
WIN_FN,
|
||||
MAC_B,
|
||||
MAC_WASD,
|
||||
MAC_FN
|
||||
};
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[WIN_B] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, KC_F5, KC_F6, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, MO(WIN_FN), KC_LEFT, KC_DOWN,KC_RGHT, KC_P0, KC_PDOT),
|
||||
|
||||
[WIN_WASD] = LAYOUT( /* WASD */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RIGHT,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, MO(WIN_FN), KC_A, KC_S, KC_D, _______, _______),
|
||||
|
||||
|
||||
[WIN_FN] = LAYOUT( /* FN */
|
||||
_______, KC_MYCM, KC_MAIL, KC_WSCH, KC_WHOM, KC_MSEL, KC_MPLY, KC_MPRV, KC_MNXT, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_SPDD, RM_SPDU, _______, _______, _______, _______, _______,
|
||||
_______, _______, TG(WIN_WASD),_______,_______,_______,_______,_______, KC_INS, DF(MAC_B),KC_PSCR, _______, _______, RM_NEXT, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG, _______, _______, RM_HUEU, _______, _______, _______,
|
||||
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RM_VALU, _______, _______, _______, _______,
|
||||
_______, GU_TOGG, _______, _______, _______, _______, RM_SATD, RM_VALD, RM_SATU, _______, _______),
|
||||
|
||||
[MAC_B] = LAYOUT( /* Base */
|
||||
KC_ESC, KC_BRID, KC_BRIU, KC_MCTL, KC_LPAD, KC_F5, KC_F6, KC_MPRV, KC_MPLY, KC_MNXT, KC_MUTE, KC_VOLD, KC_VOLU, KC_DEL, KC_HOME, KC_END, KC_PGUP, KC_PGDN,
|
||||
KC_GRV, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_NUM, KC_PSLS, KC_PAST, KC_PMNS,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_P7, KC_P8, KC_P9, KC_PPLS,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_ENT, KC_P4, KC_P5, KC_P6,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_P1, KC_P2, KC_P3, KC_PENT,
|
||||
KC_LCTL, KC_LALT, KC_LGUI, KC_SPC, KC_RGUI, MO(MAC_FN), KC_LEFT, KC_DOWN, KC_RGHT, KC_P0, KC_PDOT),
|
||||
|
||||
[MAC_WASD] = LAYOUT( /* WASD */
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, KC_UP, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, KC_LEFT, KC_DOWN, KC_RIGHT,_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, KC_W, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, MO(MAC_FN), KC_A, KC_S, KC_D, _______, _______),
|
||||
|
||||
[MAC_FN] = LAYOUT( /* FN */
|
||||
KC_ESC, KC_F1, KC_F2, KC_F3, KC_F4, _______, _______, KC_F7, KC_F8, KC_F9, KC_F10, KC_F11, KC_F12, _______, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, RM_SPDD, RM_SPDU, _______, _______, _______, _______, _______,
|
||||
_______, _______, TG(MAC_WASD),_______,_______,_______,_______,_______, KC_INS, DF(WIN_B),KC_PSCR, _______, _______, RM_NEXT, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, _______, _______, _______, RM_TOGG, _______, _______, RM_HUEU, _______, _______, _______,
|
||||
_______, _______, _______, KC_CALC, _______, _______, _______, KC_MUTE, KC_VOLD, KC_VOLU, _______, _______, RM_VALU, _______, _______, _______, _______,
|
||||
_______, _______, _______, _______, _______, _______, RM_SATD, RM_VALD, RM_SATU, _______, _______)
|
||||
|
||||
};
|
@ -1,142 +0,0 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* 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"
|
||||
|
||||
#ifdef RGB_MATRIX_ENABLE
|
||||
const snled27351_led_t PROGMEM g_snled27351_leds[SNLED27351_LED_COUNT] = {
|
||||
/* Refer to IS31 manual for these locations
|
||||
* driver
|
||||
* | R location
|
||||
* | | G location
|
||||
* | | | B location
|
||||
* | | | | */
|
||||
{1, CB1_CA1, CB2_CA1, CB3_CA1},
|
||||
{1, CB1_CA2, CB2_CA2, CB3_CA2},
|
||||
{1, CB1_CA3, CB2_CA3, CB3_CA3},
|
||||
{1, CB1_CA4, CB2_CA4, CB3_CA4},
|
||||
{1, CB1_CA5, CB2_CA5, CB3_CA5},
|
||||
{1, CB1_CA6, CB2_CA6, CB3_CA6},
|
||||
{1, CB1_CA7, CB2_CA7, CB3_CA7},
|
||||
{1, CB1_CA8, CB2_CA8, CB3_CA8},
|
||||
{1, CB1_CA9, CB2_CA9, CB3_CA9},
|
||||
{1, CB1_CA10, CB2_CA10, CB3_CA10},
|
||||
{1, CB1_CA11, CB2_CA11, CB3_CA11},
|
||||
{1, CB1_CA12, CB2_CA12, CB3_CA12},
|
||||
{1, CB1_CA13, CB2_CA13, CB3_CA13},
|
||||
{1, CB1_CA14, CB2_CA14, CB3_CA14},
|
||||
{1, CB4_CA11, CB5_CA11, CB6_CA11},
|
||||
{1, CB4_CA12, CB5_CA12, CB6_CA12},
|
||||
{1, CB4_CA13, CB5_CA13, CB6_CA13},
|
||||
{1, CB4_CA14, CB5_CA14, CB6_CA14},
|
||||
|
||||
{0, CB1_CA1, CB2_CA1, CB3_CA1},
|
||||
{0, CB1_CA2, CB2_CA2, CB3_CA2},
|
||||
{0, CB1_CA3, CB2_CA3, CB3_CA3},
|
||||
{0, CB1_CA4, CB2_CA4, CB3_CA4},
|
||||
{0, CB1_CA5, CB2_CA5, CB3_CA5},
|
||||
{0, CB1_CA6, CB2_CA6, CB3_CA6},
|
||||
{0, CB1_CA7, CB2_CA7, CB3_CA7},
|
||||
{0, CB1_CA8, CB2_CA8, CB3_CA8},
|
||||
{0, CB1_CA9, CB2_CA9, CB3_CA9},
|
||||
{0, CB1_CA10, CB2_CA10, CB3_CA10},
|
||||
{0, CB1_CA11, CB2_CA11, CB3_CA11},
|
||||
{0, CB1_CA12, CB2_CA12, CB3_CA12},
|
||||
{0, CB1_CA13, CB2_CA13, CB3_CA13},
|
||||
{0, CB1_CA14, CB2_CA14, CB3_CA14},
|
||||
{1, CB4_CA4, CB5_CA4, CB6_CA4},
|
||||
{1, CB4_CA5, CB5_CA5, CB6_CA5},
|
||||
{1, CB4_CA6, CB5_CA6, CB6_CA6},
|
||||
{1, CB4_CA7, CB5_CA7, CB6_CA7},
|
||||
|
||||
{0, CB4_CA1, CB5_CA1, CB6_CA1},
|
||||
{0, CB4_CA2, CB5_CA2, CB6_CA2},
|
||||
{0, CB4_CA3, CB5_CA3, CB6_CA3},
|
||||
{0, CB4_CA4, CB5_CA4, CB6_CA4},
|
||||
{0, CB4_CA5, CB5_CA5, CB6_CA5},
|
||||
{0, CB4_CA6, CB5_CA6, CB6_CA6},
|
||||
{0, CB4_CA7, CB5_CA7, CB6_CA7},
|
||||
{0, CB4_CA8, CB5_CA8, CB6_CA8},
|
||||
{0, CB4_CA9, CB5_CA9, CB6_CA9},
|
||||
{0, CB4_CA10, CB5_CA10, CB6_CA10},
|
||||
{0, CB4_CA11, CB5_CA11, CB6_CA11},
|
||||
{0, CB4_CA12, CB5_CA12, CB6_CA12},
|
||||
{0, CB4_CA13, CB5_CA13, CB6_CA13},
|
||||
{0, CB4_CA14, CB5_CA14, CB6_CA14},
|
||||
{1, CB4_CA8, CB5_CA8, CB6_CA8},
|
||||
{1, CB4_CA9, CB5_CA9, CB6_CA9},
|
||||
{1, CB4_CA10, CB5_CA10, CB6_CA10},
|
||||
{1, CB7_CA7, CB8_CA7, CB9_CA7},
|
||||
|
||||
{0, CB7_CA1, CB8_CA1, CB9_CA1},
|
||||
{0, CB7_CA2, CB8_CA2, CB9_CA2},
|
||||
{0, CB7_CA3, CB8_CA3, CB9_CA3},
|
||||
{0, CB7_CA4, CB8_CA4, CB9_CA4},
|
||||
{0, CB7_CA5, CB8_CA5, CB9_CA5},
|
||||
{0, CB7_CA6, CB8_CA6, CB9_CA6},
|
||||
{0, CB7_CA7, CB8_CA7, CB9_CA7},
|
||||
{0, CB7_CA8, CB8_CA8, CB9_CA8},
|
||||
{0, CB7_CA9, CB8_CA9, CB9_CA9},
|
||||
{0, CB7_CA10, CB8_CA10, CB9_CA10},
|
||||
{0, CB7_CA11, CB8_CA11, CB9_CA11},
|
||||
{0, CB7_CA12, CB8_CA12, CB9_CA12},
|
||||
{0, CB7_CA13, CB8_CA13, CB9_CA13},
|
||||
{1, CB7_CA4, CB8_CA4, CB9_CA4},
|
||||
{1, CB7_CA5, CB8_CA5, CB9_CA5},
|
||||
{1, CB7_CA6, CB8_CA6, CB9_CA6},
|
||||
|
||||
{0, CB10_CA1, CB11_CA1, CB12_CA1},
|
||||
{0, CB10_CA2, CB11_CA2, CB12_CA2},
|
||||
{0, CB10_CA3, CB11_CA3, CB12_CA3},
|
||||
{0, CB10_CA4, CB11_CA4, CB12_CA4},
|
||||
{0, CB10_CA5, CB11_CA5, CB12_CA5},
|
||||
{0, CB10_CA6, CB11_CA6, CB12_CA6},
|
||||
{0, CB10_CA7, CB11_CA7, CB12_CA7},
|
||||
{0, CB10_CA8, CB11_CA8, CB12_CA8},
|
||||
{0, CB10_CA9, CB11_CA9, CB12_CA9},
|
||||
{0, CB10_CA10, CB11_CA10, CB12_CA10},
|
||||
{0, CB10_CA11, CB11_CA11, CB12_CA11},
|
||||
{0, CB10_CA12, CB11_CA12, CB12_CA12},
|
||||
{1, CB10_CA4, CB11_CA4, CB12_CA4},
|
||||
{1, CB10_CA7, CB11_CA7, CB12_CA7},
|
||||
{1, CB10_CA8, CB11_CA8, CB12_CA8},
|
||||
{1, CB10_CA9, CB11_CA9, CB12_CA9},
|
||||
{1, CB10_CA10, CB11_CA10, CB12_CA10},
|
||||
|
||||
{0, CB10_CA13, CB11_CA13, CB12_CA13},
|
||||
{0, CB10_CA14, CB11_CA14, CB12_CA14},
|
||||
{0, CB10_CA15, CB11_CA15, CB12_CA15},
|
||||
{0, CB10_CA16, CB11_CA16, CB12_CA16},
|
||||
{0, CB7_CA14, CB8_CA14, CB9_CA14},
|
||||
{0, CB7_CA15, CB8_CA15, CB9_CA15},
|
||||
{0, CB7_CA16, CB8_CA16, CB9_CA16},
|
||||
{1, CB10_CA2, CB11_CA2, CB12_CA2},
|
||||
{1, CB10_CA3, CB11_CA3, CB12_CA3},
|
||||
{1, CB10_CA5, CB11_CA5, CB12_CA5},
|
||||
{1, CB10_CA6, CB11_CA6, CB12_CA6},
|
||||
};
|
||||
#endif //RGB_MATRIX_ENABLE
|
||||
|
||||
void keyboard_pre_init_kb(void) {
|
||||
gpio_set_pin_output(LED_WIN_LOCK_PIN); // LED3 Win Lock
|
||||
gpio_write_pin_low(LED_WIN_LOCK_PIN);
|
||||
|
||||
keyboard_pre_init_user();
|
||||
}
|
||||
|
||||
void housekeeping_task_kb(void) {
|
||||
gpio_write_pin(LED_WIN_LOCK_PIN, keymap_config.no_gui);
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
/* Copyright (C) 2023 jonylee@hfd
|
||||
*
|
||||
* 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 WB32_SPI_USE_QSPI
|
||||
#define WB32_SPI_USE_QSPI TRUE
|
||||
|
||||
#undef WB32_I2C_USE_I2C1
|
||||
#define WB32_I2C_USE_I2C1 TRUE
|
@ -1,25 +0,0 @@
|
||||
# MonsGeek M2
|
||||

|
||||
|
||||
A customizable 95% keyboard
|
||||
|
||||
* Keyboard Maintainer: [jonylee@hfd](https://github.com/jonylee1986)
|
||||
* Hardware Supported: MonsGeek M2 PCB
|
||||
* Hardware Availability: [monsgeek](https://www.monsgeek.com/product/m2/)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make monsgeek/m2:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make monsgeek/m2:default:flash
|
||||
|
||||
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
|
||||
|
||||
## Bootloader
|
||||
|
||||
Enter the bootloader in 2 ways:
|
||||
|
||||
* **Bootmagic reset**: Hold down the top left key (commonly programmed as *Esc*) while plugging in the keyboard.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
@ -2,10 +2,7 @@
|
||||
"manufacturer": "Ning",
|
||||
"keyboard_name": "TB16 RGB",
|
||||
"maintainer": "ningjx",
|
||||
"diode_direction": "ROW2COL",
|
||||
"build": {
|
||||
"lto": true
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
|
@ -1,237 +0,0 @@
|
||||
{
|
||||
"manufacturer": "nulldesignco",
|
||||
"keyboard_name": "null65ansi",
|
||||
"maintainer": "quark-works",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"usb": {
|
||||
"vid": "0x6E6C",
|
||||
"pid": "0x0001",
|
||||
"device_version": "1.0.0"
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "GP18",
|
||||
"driver": "vendor"
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"max_brightness": 90,
|
||||
"center_point": [120,32],
|
||||
"sleep": true,
|
||||
"driver": "ws2812",
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"digital_rain": true,
|
||||
"dual_beacon": true,
|
||||
"flower_blooming": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"multisplash": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"riverflow": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"starlight": true,
|
||||
"starlight_dual_hue": true,
|
||||
"starlight_dual_sat": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"layout": [
|
||||
{"matrix": [4, 5], "x": 102, "y": 64, "flags": 4},
|
||||
|
||||
{"matrix": [4, 9], "x": 102, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 10], "x": 160, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 11], "x": 176, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 12], "x": 192, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 13], "x": 208, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 14], "x": 240, "y": 64, "flags": 4},
|
||||
|
||||
{"matrix": [3, 14], "x": 240, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 13], "x": 224, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 12], "x": 202, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 10], "x": 180, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 9], "x": 164, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 8], "x": 148, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 7], "x": 132, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 116, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 100, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 84, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 68, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 52, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 1], "x": 36, "y": 48, "flags": 4},
|
||||
|
||||
{"matrix": [4, 2], "x": 42, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 22, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 2, "y": 64, "flags": 4},
|
||||
|
||||
{"matrix": [3, 0], "x": 10, "y": 48, "flags": 4},
|
||||
|
||||
{"matrix": [2, 0], "x": 6, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 28, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 44, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 60, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 76, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 92, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 6], "x": 108, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 7], "x": 124, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 8], "x": 140, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 9], "x": 156, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 10], "x": 172, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 11], "x": 188, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 13], "x": 214, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 14], "x": 240, "y": 32, "flags": 4},
|
||||
|
||||
{"matrix": [1, 14], "x": 240, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 13], "x": 220, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 12], "x": 200, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 11], "x": 184, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 10], "x": 168, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 9], "x": 152, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 8], "x": 136, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 7], "x": 120, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 6], "x": 104, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 88, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 72, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 56, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 40, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 24, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 4, "y": 16, "flags": 4},
|
||||
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 6], "x": 96, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 8], "x": 128, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 9], "x": 144, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 10], "x": 160, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 11], "x": 176, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 12], "x": 192, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 13], "x": 216, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 14], "x": 240, "y": 0, "flags": 4}
|
||||
]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"matrix_pins": {
|
||||
"rows": ["GP4", "GP3", "GP2", "GP17", "GP15"],
|
||||
"cols": ["GP28", "GP27", "GP29", "GP0", "GP1", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6", "GP5"]
|
||||
},
|
||||
"url": "https://nulldesignco.com/",
|
||||
"community_layouts": ["65_ansi"],
|
||||
"layouts": {
|
||||
"LAYOUT_65_ansi": {
|
||||
"layout": [
|
||||
{ "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "matrix": [0, 4], "x": 4, "y": 0 },
|
||||
{ "matrix": [0, 5], "x": 5, "y": 0 },
|
||||
{ "matrix": [0, 6], "x": 6, "y": 0 },
|
||||
{ "matrix": [0, 7], "x": 7, "y": 0 },
|
||||
{ "matrix": [0, 8], "x": 8, "y": 0 },
|
||||
{ "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "matrix": [0, 10], "x": 10, "y": 0 },
|
||||
{ "matrix": [0, 11], "x": 11, "y": 0 },
|
||||
{ "matrix": [0, 12], "x": 12, "y": 0 },
|
||||
{ "matrix": [0, 13], "w": 2, "x": 13, "y": 0 },
|
||||
{ "matrix": [0, 14], "x": 15, "y": 0 },
|
||||
{ "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||
{ "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], "w": 1.5, "x": 13.5, "y": 1 },
|
||||
{ "matrix": [1, 14], "x": 15, "y": 1 },
|
||||
{ "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||
{ "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], "w": 2.25, "x": 12.75, "y": 2 },
|
||||
{ "matrix": [2, 14], "x": 15, "y": 2 },
|
||||
{ "matrix": [3, 0], "w": 2.25, "x": 0, "y": 3 },
|
||||
{ "matrix": [3, 1], "x": 2.25, "y": 3 },
|
||||
{ "matrix": [3, 2], "x": 3.25, "y": 3 },
|
||||
{ "matrix": [3, 3], "x": 4.25, "y": 3 },
|
||||
{ "matrix": [3, 4], "x": 5.25, "y": 3 },
|
||||
{ "matrix": [3, 5], "x": 6.25, "y": 3 },
|
||||
{ "matrix": [3, 6], "x": 7.25, "y": 3 },
|
||||
{ "matrix": [3, 7], "x": 8.25, "y": 3 },
|
||||
{ "matrix": [3, 8], "x": 9.25, "y": 3 },
|
||||
{ "matrix": [3, 9], "x": 10.25, "y": 3 },
|
||||
{ "matrix": [3, 10], "x": 11.25, "y": 3 },
|
||||
{ "matrix": [3, 12], "w": 1.75, "x": 12.25, "y": 3 },
|
||||
{ "matrix": [3, 13], "x": 14, "y": 3 },
|
||||
{ "matrix": [3, 14], "x": 15, "y": 3 },
|
||||
{ "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
|
||||
{ "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
|
||||
{ "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
|
||||
{ "matrix": [4, 5], "w": 6.25, "x": 3.75, "y": 4 },
|
||||
{ "matrix": [4, 9], "x": 10, "y": 4 },
|
||||
{ "matrix": [4, 10], "x": 11, "y": 4 },
|
||||
{ "matrix": [4, 11], "x": 12, "y": 4 },
|
||||
{ "matrix": [4, 12], "x": 13, "y": 4 },
|
||||
{ "matrix": [4, 13], "x": 14, "y": 4 },
|
||||
{ "matrix": [4, 14], "x": 15, "y": 4 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
// Copyright 2025 quark-works
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_65_ansi(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_BSLS, KC_HOME,
|
||||
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_PGUP,
|
||||
KC_LSFT, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
)
|
||||
};
|
||||
|
||||
bool rgb_matrix_indicators_user(void) {
|
||||
if (host_keyboard_led_state().caps_lock) {
|
||||
rgb_matrix_set_color(24, 255, 0, 0);
|
||||
}
|
||||
return false;
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
# null65ansi v1
|
||||
|
||||

|
||||
|
||||
65% tray mount PCB with RGB per key.
|
||||
|
||||
* Keyboard Maintainer: [Quark](https://github.com/quark-works)
|
||||
* Hardware Supported: PCB
|
||||
* Hardware Availability: https://nulldesignco.com/
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make nulldesignco/null65ansi/v1:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make nulldesignco/null65ansi/v1: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 boot button**: Hold the button labeled as "BOOT" on the back of the board or short the two pads on the front while you connect the keyboard to your computer.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
@ -1,240 +0,0 @@
|
||||
{
|
||||
"manufacturer": "nulldesignco",
|
||||
"keyboard_name": "null65iso",
|
||||
"maintainer": "quark-works",
|
||||
"processor": "RP2040",
|
||||
"bootloader": "rp2040",
|
||||
"usb": {
|
||||
"vid": "0x6E6C",
|
||||
"pid": "0x0010",
|
||||
"device_version": "1.0.0"
|
||||
},
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true,
|
||||
"nkro": true,
|
||||
"rgb_matrix": true
|
||||
},
|
||||
"ws2812": {
|
||||
"pin": "GP18",
|
||||
"driver": "vendor"
|
||||
},
|
||||
"rgb_matrix": {
|
||||
"max_brightness": 90,
|
||||
"center_point": [120,32],
|
||||
"sleep": true,
|
||||
"driver": "ws2812",
|
||||
"animations": {
|
||||
"alphas_mods": true,
|
||||
"band_pinwheel_sat": true,
|
||||
"band_pinwheel_val": true,
|
||||
"band_sat": true,
|
||||
"band_spiral_sat": true,
|
||||
"band_spiral_val": true,
|
||||
"band_val": true,
|
||||
"breathing": true,
|
||||
"cycle_all": true,
|
||||
"cycle_left_right": true,
|
||||
"cycle_out_in": true,
|
||||
"cycle_out_in_dual": true,
|
||||
"cycle_pinwheel": true,
|
||||
"cycle_spiral": true,
|
||||
"cycle_up_down": true,
|
||||
"digital_rain": true,
|
||||
"dual_beacon": true,
|
||||
"flower_blooming": true,
|
||||
"gradient_left_right": true,
|
||||
"gradient_up_down": true,
|
||||
"hue_breathing": true,
|
||||
"hue_pendulum": true,
|
||||
"hue_wave": true,
|
||||
"jellybean_raindrops": true,
|
||||
"multisplash": true,
|
||||
"pixel_flow": true,
|
||||
"pixel_fractal": true,
|
||||
"pixel_rain": true,
|
||||
"rainbow_beacon": true,
|
||||
"rainbow_moving_chevron": true,
|
||||
"rainbow_pinwheels": true,
|
||||
"raindrops": true,
|
||||
"riverflow": true,
|
||||
"solid_multisplash": true,
|
||||
"solid_reactive": true,
|
||||
"solid_reactive_cross": true,
|
||||
"solid_reactive_multicross": true,
|
||||
"solid_reactive_multinexus": true,
|
||||
"solid_reactive_multiwide": true,
|
||||
"solid_reactive_nexus": true,
|
||||
"solid_reactive_simple": true,
|
||||
"solid_reactive_wide": true,
|
||||
"solid_splash": true,
|
||||
"splash": true,
|
||||
"starlight": true,
|
||||
"starlight_dual_hue": true,
|
||||
"starlight_dual_sat": true,
|
||||
"typing_heatmap": true
|
||||
},
|
||||
"layout": [
|
||||
{"matrix": [4, 6], "x": 102, "y": 64, "flags": 4},
|
||||
|
||||
{"matrix": [4, 9], "x": 102, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 10], "x": 160, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 11], "x": 176, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 12], "x": 192, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 13], "x": 208, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 14], "x": 240, "y": 64, "flags": 4},
|
||||
|
||||
{"matrix": [3, 14], "x": 240, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 13], "x": 224, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 12], "x": 202, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 11], "x": 180, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 10], "x": 164, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 9], "x": 148, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 8], "x": 132, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 7], "x": 116, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 6], "x": 100, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 5], "x": 84, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 4], "x": 68, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 3], "x": 52, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 2], "x": 36, "y": 48, "flags": 4},
|
||||
|
||||
|
||||
{"matrix": [4, 2], "x": 42, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 1], "x": 22, "y": 64, "flags": 4},
|
||||
{"matrix": [4, 0], "x": 2, "y": 64, "flags": 4},
|
||||
|
||||
{"matrix": [3, 1], "x": 20, "y": 48, "flags": 4},
|
||||
{"matrix": [3, 0], "x": 2, "y": 48, "flags": 4},
|
||||
|
||||
{"matrix": [2, 0], "x": 6, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 1], "x": 28, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 2], "x": 44, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 3], "x": 60, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 4], "x": 76, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 5], "x": 92, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 6], "x": 108, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 7], "x": 124, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 8], "x": 140, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 9], "x": 156, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 10], "x": 172, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 11], "x": 188, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 12], "x": 214, "y": 32, "flags": 4},
|
||||
{"matrix": [2, 14], "x": 240, "y": 32, "flags": 4},
|
||||
|
||||
{"matrix": [1, 14], "x": 240, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 13], "x": 220, "y": 24, "flags": 4},
|
||||
{"matrix": [1, 12], "x": 200, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 11], "x": 184, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 10], "x": 168, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 9], "x": 152, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 8], "x": 136, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 7], "x": 120, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 6], "x": 104, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 5], "x": 88, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 4], "x": 72, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 3], "x": 56, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 2], "x": 40, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 1], "x": 24, "y": 16, "flags": 4},
|
||||
{"matrix": [1, 0], "x": 4, "y": 16, "flags": 4},
|
||||
|
||||
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 1], "x": 16, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 2], "x": 32, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 3], "x": 48, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 4], "x": 64, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 5], "x": 80, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 6], "x": 96, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 8], "x": 128, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 9], "x": 144, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 10], "x": 160, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 11], "x": 176, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 12], "x": 192, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 13], "x": 216, "y": 0, "flags": 4},
|
||||
{"matrix": [0, 14], "x": 240, "y": 0, "flags": 4}
|
||||
]
|
||||
},
|
||||
"diode_direction": "COL2ROW",
|
||||
"matrix_pins": {
|
||||
"rows": ["GP4", "GP3", "GP2", "GP17", "GP15"],
|
||||
"cols": ["GP28", "GP27", "GP29", "GP0", "GP1", "GP14", "GP13", "GP12", "GP11", "GP10", "GP9", "GP8", "GP7", "GP6", "GP5"]
|
||||
},
|
||||
"url": "https://nulldesignco.com/",
|
||||
"community_layouts": ["65_iso"],
|
||||
"layouts": {
|
||||
"LAYOUT_65_iso": {
|
||||
"layout": [
|
||||
{ "matrix": [0, 0], "x": 0, "y": 0 },
|
||||
{ "matrix": [0, 1], "x": 1, "y": 0 },
|
||||
{ "matrix": [0, 2], "x": 2, "y": 0 },
|
||||
{ "matrix": [0, 3], "x": 3, "y": 0 },
|
||||
{ "matrix": [0, 4], "x": 4, "y": 0 },
|
||||
{ "matrix": [0, 5], "x": 5, "y": 0 },
|
||||
{ "matrix": [0, 6], "x": 6, "y": 0 },
|
||||
{ "matrix": [0, 7], "x": 7, "y": 0 },
|
||||
{ "matrix": [0, 8], "x": 8, "y": 0 },
|
||||
{ "matrix": [0, 9], "x": 9, "y": 0 },
|
||||
{ "matrix": [0, 10], "x": 10, "y": 0 },
|
||||
{ "matrix": [0, 11], "x": 11, "y": 0 },
|
||||
{ "matrix": [0, 12], "x": 12, "y": 0 },
|
||||
{ "matrix": [0, 13], "w": 2, "x": 13, "y": 0 },
|
||||
{ "matrix": [0, 14], "x": 15, "y": 0 },
|
||||
{ "matrix": [1, 0], "w": 1.5, "x": 0, "y": 1 },
|
||||
{ "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, 14], "x": 15, "y": 1 },
|
||||
{ "matrix": [2, 0], "w": 1.75, "x": 0, "y": 2 },
|
||||
{ "matrix": [2, 1], "x": 1.75, "y": 2 },
|
||||
{ "matrix": [2, 2], "x": 2.75, "y": 2 },
|
||||
{ "matrix": [2, 3], "x": 3.75, "y": 2 },
|
||||
{ "matrix": [2, 4], "x": 4.75, "y": 2 },
|
||||
{ "matrix": [2, 5], "x": 5.75, "y": 2 },
|
||||
{ "matrix": [2, 6], "x": 6.75, "y": 2 },
|
||||
{ "matrix": [2, 7], "x": 7.75, "y": 2 },
|
||||
{ "matrix": [2, 8], "x": 8.75, "y": 2 },
|
||||
{ "matrix": [2, 9], "x": 9.75, "y": 2 },
|
||||
{ "matrix": [2, 10], "x": 10.75, "y": 2 },
|
||||
{ "matrix": [2, 11], "x": 11.75, "y": 2 },
|
||||
{ "matrix": [2, 12], "x": 12.75, "y": 2 },
|
||||
{ "matrix": [1, 13], "w": 1.25, "x": 13.75, "y": 1, "h": 2 },
|
||||
{ "matrix": [2, 14], "x": 15, "y": 2 },
|
||||
{ "matrix": [3, 0], "w": 1.25, "x": 0, "y": 3 },
|
||||
{ "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], "w": 1.75, "x": 12.25, "y": 3 },
|
||||
{ "matrix": [3, 13], "x": 14, "y": 3 },
|
||||
{ "matrix": [3, 14], "x": 15, "y": 3 },
|
||||
{ "matrix": [4, 0], "w": 1.25, "x": 0, "y": 4 },
|
||||
{ "matrix": [4, 1], "w": 1.25, "x": 1.25, "y": 4 },
|
||||
{ "matrix": [4, 2], "w": 1.25, "x": 2.5, "y": 4 },
|
||||
{ "matrix": [4, 6], "w": 6.25, "x": 3.75, "y": 4 },
|
||||
{ "matrix": [4, 9], "x": 10, "y": 4 },
|
||||
{ "matrix": [4, 10], "x": 11, "y": 4 },
|
||||
{ "matrix": [4, 11], "x": 12, "y": 4 },
|
||||
{ "matrix": [4, 12], "x": 13, "y": 4 },
|
||||
{ "matrix": [4, 13], "x": 14, "y": 4 },
|
||||
{ "matrix": [4, 14], "x": 15, "y": 4 }
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,22 +0,0 @@
|
||||
// Copyright 2025 quark-works
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
#include QMK_KEYBOARD_H
|
||||
|
||||
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
|
||||
|
||||
[0] = LAYOUT_65_iso(
|
||||
QK_GESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_MINS, KC_EQL, KC_BSPC, KC_DEL,
|
||||
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_LBRC, KC_RBRC, KC_HOME,
|
||||
KC_CAPS, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT, KC_NUHS, KC_ENT, KC_PGUP,
|
||||
KC_LSFT, KC_NUBS, KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT, KC_UP, KC_PGDN,
|
||||
KC_LCTL, KC_LGUI, KC_LALT, KC_SPC, KC_RALT, KC_APP, KC_RCTL, KC_LEFT, KC_DOWN, KC_RGHT
|
||||
)
|
||||
};
|
||||
|
||||
bool rgb_matrix_indicators_user(void) {
|
||||
if (host_keyboard_led_state().caps_lock) {
|
||||
rgb_matrix_set_color(25, 255, 0, 0);
|
||||
}
|
||||
return false;
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
# null65iso v1
|
||||
|
||||

|
||||
|
||||
65% tray mount PCB with RGB per key.
|
||||
|
||||
* Keyboard Maintainer: [Quark](https://github.com/quark-works)
|
||||
* Hardware Supported: PCB
|
||||
* Hardware Availability: https://nulldesignco.com/
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make nulldesignco/null65iso/v1:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make nulldesignco/null65iso/v1: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 boot button**: Hold the button labeled as "BOOT" on the back of the board or short the two pads on the front while you connect the keyboard to your computer.
|
||||
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
|
@ -14,9 +14,6 @@
|
||||
"enabled": true,
|
||||
"serial": {
|
||||
"driver": "vendor"
|
||||
},
|
||||
"transport": {
|
||||
"watchdog": true
|
||||
}
|
||||
},
|
||||
"matrix_pins": {
|
||||
|
@ -1,86 +0,0 @@
|
||||
{
|
||||
"manufacturer": "ASHIJANKEN",
|
||||
"keyboard_name": "Slimorta",
|
||||
"maintainer": "ASHIJANKEN",
|
||||
"development_board": "promicro",
|
||||
"diode_direction": "COL2ROW",
|
||||
"features": {
|
||||
"bootmagic": true,
|
||||
"extrakey": true,
|
||||
"mousekey": true
|
||||
},
|
||||
"matrix_pins": {
|
||||
"cols": ["D1", "D0", "D4", "C6", "D7", "E6"],
|
||||
"rows": ["B4", "B5", "F4", "F5", "F6", "F7", "B1", "B3", "B2", "B6"]
|
||||
},
|
||||
"url": "https://github.com/ASHIJANKEN/Slimorta",
|
||||
"usb": {
|
||||
"device_version": "1.0.0",
|
||||
"pid": "0x0001",
|
||||
"vid": "0x4153"
|
||||
},
|
||||
"layouts": {
|
||||
"LAYOUT": {
|
||||
"layout": [
|
||||
{"matrix": [2, 0], "x": 0, "y": 0},
|
||||
{"matrix": [2, 1], "x": 1, "y": 0},
|
||||
{"matrix": [2, 2], "x": 2, "y": 0},
|
||||
{"matrix": [2, 3], "x": 3, "y": 0},
|
||||
{"matrix": [2, 4], "x": 4, "y": 0},
|
||||
{"matrix": [2, 5], "x": 5, "y": 0},
|
||||
{"matrix": [0, 5], "x": 6, "y": 0},
|
||||
{"matrix": [0, 4], "x": 7, "y": 0},
|
||||
{"matrix": [0, 3], "x": 8, "y": 0},
|
||||
{"matrix": [0, 2], "x": 9, "y": 0},
|
||||
{"matrix": [0, 1], "x": 10, "y": 0},
|
||||
{"matrix": [0, 0], "x": 11, "y": 0},
|
||||
{"matrix": [3, 0], "x": 0, "y": 1},
|
||||
{"matrix": [3, 1], "x": 1, "y": 1},
|
||||
{"matrix": [3, 2], "x": 2, "y": 1},
|
||||
{"matrix": [3, 3], "x": 3, "y": 1},
|
||||
{"matrix": [3, 4], "x": 4, "y": 1},
|
||||
{"matrix": [3, 5], "x": 5, "y": 1},
|
||||
{"matrix": [1, 5], "x": 6, "y": 1},
|
||||
{"matrix": [1, 4], "x": 7, "y": 1},
|
||||
{"matrix": [1, 3], "x": 8, "y": 1},
|
||||
{"matrix": [1, 2], "x": 9, "y": 1},
|
||||
{"matrix": [1, 1], "x": 10, "y": 1},
|
||||
{"matrix": [1, 0], "x": 11, "y": 1},
|
||||
{"matrix": [4, 0], "x": 0, "y": 2},
|
||||
{"matrix": [4, 1], "x": 1, "y": 2},
|
||||
{"matrix": [4, 2], "x": 2, "y": 2},
|
||||
{"matrix": [4, 3], "x": 3, "y": 2},
|
||||
{"matrix": [4, 4], "x": 4, "y": 2},
|
||||
{"matrix": [4, 5], "x": 5, "y": 2},
|
||||
{"matrix": [7, 5], "x": 6, "y": 2},
|
||||
{"matrix": [7, 4], "x": 7, "y": 2},
|
||||
{"matrix": [7, 3], "x": 8, "y": 2},
|
||||
{"matrix": [7, 2], "x": 9, "y": 2},
|
||||
{"matrix": [7, 1], "x": 10, "y": 2},
|
||||
{"matrix": [7, 0], "x": 11, "y": 2},
|
||||
{"matrix": [5, 0], "x": 0, "y": 3},
|
||||
{"matrix": [5, 1], "x": 1, "y": 3},
|
||||
{"matrix": [5, 2], "x": 2, "y": 3},
|
||||
{"matrix": [5, 3], "x": 3, "y": 3},
|
||||
{"matrix": [5, 4], "x": 4, "y": 3},
|
||||
{"matrix": [5, 5], "x": 5, "y": 3},
|
||||
{"matrix": [8, 5], "x": 6, "y": 3},
|
||||
{"matrix": [8, 4], "x": 7, "y": 3},
|
||||
{"matrix": [8, 3], "x": 8, "y": 3},
|
||||
{"matrix": [8, 2], "x": 9, "y": 3},
|
||||
{"matrix": [8, 1], "x": 10, "y": 3},
|
||||
{"matrix": [8, 0], "x": 11, "y": 3},
|
||||
{"matrix": [6, 1], "x": 0.5, "y": 4},
|
||||
{"matrix": [6, 2], "x": 1.5, "y": 4},
|
||||
{"matrix": [6, 3], "x": 2.5, "y": 4},
|
||||
{"matrix": [6, 4], "x": 3.5, "y": 4, "w": 1.25},
|
||||
{"matrix": [6, 5], "x": 4.75, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 5], "x": 6, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 4], "x": 7.25, "y": 4, "w": 1.25},
|
||||
{"matrix": [9, 3], "x": 8.5, "y": 4},
|
||||
{"matrix": [9, 2], "x": 9.5, "y": 4},
|
||||
{"matrix": [9, 1], "x": 10.5, "y": 4}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
@ -1,27 +0,0 @@
|
||||
// Copyright 2025 ASHIJANKEN (@ASHIJANKEN)
|
||||
// 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 │ BS │
|
||||
* ├─────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼─────┤
|
||||
* │ Tab │ Q │ W │ E │ R │ T │ Y │ U │ I │ O │ P │ - │
|
||||
* ├─────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼─────┤
|
||||
* │ Ctrl│ A │ S │ D │ F │ G │ H │ J │ K │ L │ ; │ ' │
|
||||
* ├─────┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼─────┤
|
||||
* │Shift│ Z │ X │ C │ V │ B │ N │ M │ , │ . │ / │Shift│
|
||||
* └──┬──┴─┬─┴─┬─┴─┬─┴──┬┴───┼───┴┬──┴─┬─┴─┬─┴──┬┴───┬─┘
|
||||
* │LNG2|Alt│GUI│ │ SPC│ Ent│ │ │Ctrl│LNG1│
|
||||
* └────┴───┴───┴────┴────┴────┴────┴───┴────┴────┘
|
||||
*/
|
||||
[0] = LAYOUT(
|
||||
KC_ESC, KC_1, KC_2, KC_3, KC_4, KC_5, KC_6, KC_7, KC_8, KC_9, KC_0, KC_BSPC,
|
||||
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_N, KC_M, KC_COMM, KC_DOT, KC_SLSH, KC_RSFT,
|
||||
KC_LNG2, KC_LALT, KC_LGUI, KC_NO, KC_SPC, KC_ENT, KC_NO, KC_NO, KC_LCTL, KC_LNG1
|
||||
)
|
||||
};
|
@ -1,23 +0,0 @@
|
||||
# Slimorta
|
||||
|
||||

|
||||
|
||||
Slimorta is a slim and portable ortholinear keyboard.
|
||||
|
||||
* Keyboard Maintainer: [ASHIJANKEN](https://github.com/ASHIJANKEN)
|
||||
* Hardware Supported: Slimorta PCB, ProMicro
|
||||
* Hardware Availability: [PCB & Case Data](https://github.com/ASHIJANKEN/Slimorta)
|
||||
|
||||
Make example for this keyboard (after setting up your build environment):
|
||||
|
||||
make slimorta:default
|
||||
|
||||
Flashing example for this keyboard:
|
||||
|
||||
make slimorta: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
|
||||
|
||||
**Physical reset button**: Press the button on the PCB twice briefly.
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user