Compare commits

...
Sign in to create a new pull request.
Author SHA1 Message Date
Nick Brassel
e8e19ed234
Update ChibiOS, ChibiOS-Contrib. 2025-10-16 22:50:17 +11:00
QMK Bot
3eb8d3bea3 Merge remote-tracking branch 'origin/master' into develop 2025-10-14 06:36:00 +00:00
Joel Challis
f4068dbfb0
Update STM32F446 default HSE to 8MHz (#25717) 2025-10-13 06:40:45 +01:00
Marek Schmitt
08405df150
Add new macropad Sharkropad (#24961) 2025-10-11 05:45:17 +01:00
QMK Bot
3c751f217a Merge remote-tracking branch 'origin/master' into develop 2025-10-10 22:18:03 +00:00
Jack Sangdahl
9f1a7380ab
Fixup kprepublic/bm60hsrgb/rev2 (#25644)
* Fixup kprepublic/bm60hsrgb/rev2

- Remove RGBLight configuration and throw error if RGBLight & RGB Matrix
  are enabled together - the WS2812 driver cannot be used for RGBLight
  as it is being used by this keyboard's custom RGB Matrix driver
- Migrate RGB Matrix configuration to DD
- Migrate default keymap to JSON
- Use short SPDX license headers

* Fix OOB coordinate
2025-10-08 08:01:26 -06:00
Jack Sangdahl
7dca4e8bda
Fixup kprepublic/bm60hsrgb_iso/rev2 (#25648)
Fixup kprepublic/bm60hsrgb_iso/rev2

- Remove RGBLight configuration and throw error if RGBLight & RGB Matrix
  are enabled together - the WS2812 driver cannot be used for RGBLight
  as it is being used by this keyboard's custom RGB Matrix driver
- Migrate RGB Matrix configuration to DD
- Migrate default keymap to JSON
- Use short SPDX license headers
2025-10-08 08:01:08 -06:00
Jack Sangdahl
0aae222ab6
Fixup kprepublic/bm60hsrgb_poker/rev2 (#25649)
Fixup kprepublic/bm60hsrgb/rev2

- Remove RGBLight configuration and throw error if RGBLight & RGB Matrix
  are enabled together - the WS2812 driver cannot be used for RGBLight
  as it is being used by this keyboard's custom RGB Matrix driver
- Migrate RGB Matrix configuration to DD
- Migrate default keymap to JSON
- Use short SPDX license headers
2025-10-08 08:00:50 -06:00
QMK Bot
475cbd24cf Merge remote-tracking branch 'origin/master' into develop 2025-10-08 03:42:22 +00:00
QMK Bot
81a3249e2c Merge remote-tracking branch 'origin/master' into develop 2025-10-08 02:16:35 +00:00
Pablo Martínez
0550830909
[QP] Minor cleanup and support for RGB888 surface (#25706)
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-10-07 19:10:38 -07:00
QMK Bot
8f86f9794e Merge remote-tracking branch 'origin/master' into develop 2025-10-08 01:16:37 +00:00
QMK Bot
e7d861aea7 Merge remote-tracking branch 'origin/master' into develop 2025-10-07 05:21:16 +00:00
Martin W.
02cf2b56fd
Add Royal Kludge RK61 (#25694) 2025-10-06 17:46:41 +01:00
QMK Bot
5d26dcefa0 Merge remote-tracking branch 'origin/master' into develop 2025-10-06 16:45:06 +00:00
Aidan Smith
c7ed9038d7
E7-V2 Implementation (#25594) 2025-10-06 17:38:27 +01:00
QMK Bot
7a69c714b4 Merge remote-tracking branch 'origin/master' into develop 2025-10-06 16:30:46 +00:00
QMK Bot
074c49ee1c Merge remote-tracking branch 'origin/master' into develop 2025-10-06 16:28:07 +00:00
Pascal Hansjosten
466e0856f5
add durgod venus iso support (#25526) 2025-10-06 17:26:16 +01:00
QMK Bot
60cf3c22f7 Merge remote-tracking branch 'origin/master' into develop 2025-10-06 14:31:39 +00:00
Jack Sangdahl
05355bc49d
Fixup rgbkb/pan (#25678)
Tidy up rgbkb/pan

- Migrate g_led_config to DD and fix coordinates
- Remove RGBLight configuration
- Migrate keymaps to JSON
- Move keymap OLED code to keyboard level
- Remove cutom layout selection logic (post_rules.mk)
- Use short SPDX license headers
2025-10-05 21:06:55 -06:00
QMK Bot
74ac4120db Merge remote-tracking branch 'origin/master' into develop 2025-10-05 23:56:24 +00:00
QMK Bot
9a77ad69e6 Merge remote-tracking branch 'origin/master' into develop 2025-10-05 20:50:42 +00:00
QMK Bot
187119ed7f Merge remote-tracking branch 'origin/master' into develop 2025-10-05 20:46:50 +00:00
James Young
fecfc0f7da
atreus: restore intended matrix implementations (#24082)
* `atreus`: restore intended matrix implementations

PR 24010 inadvertently changed the switch matrix for the
`atreus/astar_mirrored` keyboard in removing the `PCBDOWN` configuration
option, and also made PCB up and down implementations available for all
Atreus variants, which is not intended usage.

This commit restores the intended behaviour, and makes all the keymaps
which are currently present agnostic to hardware variant.
2025-10-05 01:47:45 +01:00
Jack Sangdahl
36fd2437b0
Migrate g_led_config to DD (0-9, A) (#25558) 2025-09-30 17:09:31 +01:00
Pablo Martínez
bbd6e8ab34
[Feature] Implement mod_t packed struct (#25168) 2025-09-30 15:52:43 +01:00
QMK Bot
24bc4aef03 Merge remote-tracking branch 'origin/master' into develop 2025-09-29 22:55:23 +00:00
QMK Bot
532fb2f960 Merge remote-tracking branch 'origin/master' into develop 2025-09-29 19:34:39 +00:00
Joel Challis
6f93a86e6e
Add LED/RGB Matrix flags API docs (#25673) 2025-09-29 20:27:07 +01:00
Joel Challis
0a4c1caf20
Add DD {LED,RGB}_MATRIX_DEFAULT_FLAGS support (#25671) 2025-09-29 20:26:47 +01:00
Joel Challis
883465d9fb
Add generic handling to cycle LED/RGB Matrix flags (#24649) 2025-09-22 00:01:23 +01:00
Ryan
115bf771a8
Custom oled fonts cleanup (#25665) 2025-09-21 21:40:30 +10:00
silvinor
a4b112b1ef
[keyboard] Binepad KnobX1 - refactor x1_layer_led function as weak (#25668)
refactor `x1_layer_led` function as weak
2025-09-19 21:37:18 -06:00
QMK Bot
d1b0397d2f Merge remote-tracking branch 'origin/master' into develop 2025-09-19 02:41:39 +00:00
Joel Challis
46231df62d
Tidy Keebio keyboards (#25653) 2025-09-12 20:00:03 +01:00
Joel Challis
b6310b5a15
Remove encoder resolution where duplicating defaults (#25654) 2025-09-12 16:56:06 +01:00
Joel Challis
d34cade5ab
Generate default encoder resolution for sparse config (#25247) 2025-09-12 13:21:49 +01:00
Joel Challis
cf58a8733d
Add DIP Switch map support to keymap.json (#25431) 2025-09-12 10:23:23 +01:00
Joel Challis
3320e98ccf
Migrate eeconfig_init_kb implementations to config (#25422) 2025-09-12 10:23:16 +01:00
Joel Challis
319da7bfdb
Refactor 40percentclub/ut47 (#25571) 2025-09-12 08:13:12 +01:00
Joel Challis
4a4e4aa083
Remove idobao *_DISABLE_UNDERGLOW behaviour (#25638) 2025-09-12 08:12:48 +01:00
Jack Sangdahl
74b0f054c1
Migrate g_led_config to DD (YZ) (#25650) 2025-09-11 18:34:10 +01:00
QMK Bot
6eee1940e8 Merge remote-tracking branch 'origin/master' into develop 2025-09-11 10:14:38 +00:00
QMK Bot
626cf94653 Merge remote-tracking branch 'origin/master' into develop 2025-09-11 10:04:55 +00:00
QMK Bot
494a691f4c Merge remote-tracking branch 'origin/master' into develop 2025-09-11 08:42:59 +00:00
Christian C. Berclaz
f8d677af88
Add D60B tsangan pcb (#25245)
Co-authored-by: Joel Challis <git@zvecr.com>
Co-authored-by: Drashna Jaelre <drashna@live.com>
2025-09-11 01:19:10 -07:00
QMK Bot
461a1afe57 Merge remote-tracking branch 'origin/master' into develop 2025-09-11 08:17:01 +00:00
QMK Bot
d4fb67fd5b Merge remote-tracking branch 'origin/master' into develop 2025-09-11 08:16:20 +00:00
QMK Bot
3cd8dd6b25 Merge remote-tracking branch 'origin/master' into develop 2025-09-11 00:45:15 +00:00
Jack Sangdahl
a4d10e9f64
Refactor 40percentclub/gherkin (#25608) 2025-09-10 16:33:38 -07:00
Jack Sangdahl
286947b6fa
Refactor 0xcb/splaytoraid (#25609) 2025-09-10 16:33:12 -07:00
Jack Sangdahl
f12902eb16
Refactor 1upkeyboards/sweet16v2 (#25610) 2025-09-10 16:32:48 -07:00
QMK Bot
0351b598f9 Merge remote-tracking branch 'origin/master' into develop 2025-09-10 12:29:59 +00:00
QMK Bot
c113250c4e Merge remote-tracking branch 'origin/master' into develop 2025-09-10 08:53:02 +00:00
フィルターペーパー
633479ced5
Restructure Pixel Rain interval code (#25516)
Co-authored-by: Joel Challis <git@zvecr.com>
2025-09-10 01:41:29 -07:00
Jack Sangdahl
a91de72246
Migrate g_led_config to DD (K7) (#25616) 2025-09-10 09:14:04 +01:00
QMK Bot
50edd425f7 Merge remote-tracking branch 'origin/master' into develop 2025-09-10 08:12:23 +00:00
QMK Bot
514175848e Merge remote-tracking branch 'origin/master' into develop 2025-09-10 01:45:28 +00:00
QMK Bot
7caef16edd Merge remote-tracking branch 'origin/master' into develop 2025-09-10 01:44:04 +00:00
QMK Bot
ff8db0449e Merge remote-tracking branch 'origin/master' into develop 2025-09-09 21:51:51 +00:00
QMK Bot
7772f47f04 Merge remote-tracking branch 'origin/master' into develop 2025-09-09 16:42:16 +00:00
QMK Bot
ab61d9cb51 Merge remote-tracking branch 'origin/master' into develop 2025-09-09 16:35:52 +00:00
QMK Bot
649bbdeaba Merge remote-tracking branch 'origin/master' into develop 2025-09-09 16:34:48 +00:00
Ryan
eda39f4356
Update default OLED font (#25565) 2025-09-09 17:34:33 +01:00
QMK Bot
c3ba5de928 Merge remote-tracking branch 'origin/master' into develop 2025-09-09 16:28:48 +00:00
QMK Bot
592ee1b57f Merge remote-tracking branch 'origin/master' into develop 2025-09-09 16:27:53 +00:00
Jack Sangdahl
db9b295aa7
Migrate g_led_config to DD (L) (#25617) 2025-09-09 11:50:36 +01:00
Jack Sangdahl
3934a7f3c8
Migrate g_led_config to DD (I) (#25600) 2025-09-09 10:18:16 +01:00
Jack Sangdahl
ed2de21603
Migrate g_led_config to DD (M1) (#25618) 2025-09-09 10:10:34 +01:00
Jack Sangdahl
04978d490a
Migrate g_led_config to DD (M2) (#25619) 2025-09-09 10:09:38 +01:00
Jack Sangdahl
7186a63172
Migrate g_led_config to DD (M3) (#25620) 2025-09-09 10:09:14 +01:00
Jack Sangdahl
ff1900190c
Migrate g_led_config to DD (NO) (#25621) 2025-09-09 10:08:42 +01:00
Jack Sangdahl
2818085d3f
Migrate g_led_config to DD (P) (#25622) 2025-09-09 10:08:20 +01:00
Jack Sangdahl
d17671cd23
Migrate g_led_config to DD (QR) (#25623) 2025-09-09 10:07:47 +01:00
Jack Sangdahl
8f22831f01
Migrate g_led_config to DD (S) (#25624) 2025-09-09 10:07:06 +01:00
Jack Sangdahl
6c96bb5a5a
Migrate g_led_config to DD (TUW) (#25625) 2025-09-09 10:06:12 +01:00
Jack Sangdahl
177ff71d0c
Migrate g_led_config to DD (H) (#25599) 2025-09-09 10:04:40 +01:00
Jack Sangdahl
c1b428bb4e
Migrate g_led_config to DD (JK1) (#25601) 2025-09-09 10:03:52 +01:00
Jack Sangdahl
0828fc4b6f
Migrate g_led_config to DD (K2) (#25602) 2025-09-09 10:03:13 +01:00
Jack Sangdahl
1e8de37aa0
Migrate g_led_config to DD (K3) (#25603) 2025-09-09 10:02:29 +01:00
Jack Sangdahl
9cd3080e22
Migrate g_led_config to DD (K4) (#25605) 2025-09-09 10:02:15 +01:00
Jack Sangdahl
ceefde5ec8
Migrate g_led_config to DD (K5) (#25606) 2025-09-09 10:02:01 +01:00
Jack Sangdahl
3a29cdbd7d
Migrate g_led_config to DD (K6) (#25607) 2025-09-09 10:01:17 +01:00
Jack Sangdahl
2d5cb23503
Migrate g_led_config to DD (G) (#25598) 2025-09-09 10:00:32 +01:00
Jack Sangdahl
6aa85699a5
Migrate g_led_config to DD (E, F) (#25561) 2025-09-09 09:59:42 +01:00
Jack Sangdahl
330d195f9a
Migrate g_led_config to DD (D) (#25560) 2025-09-09 09:58:45 +01:00
Jack Sangdahl
4b1b83f42f
Migrate g_led_config to DD (B, C) (#25559) 2025-09-09 09:58:29 +01:00
QMK Bot
f749dedb0d Merge remote-tracking branch 'origin/master' into develop 2025-09-08 06:57:41 +00:00
QMK Bot
e01313e7d0 Merge remote-tracking branch 'origin/master' into develop 2025-09-07 17:25:52 +00:00
フィルターペーパー
4bd5c033c3
Refactor debounce algorithm with static allocation (#25515)
* Refactor debounce counters with direct indexing

* Refactor code to use array indexing for debounce_counters
* Use global MATRIX_ROW_SHIFTER macro

* Refactor debounce algorithm with static allocation

* Converted arrays to static allocation
* Standardised use of MATRIX_ROWS_PER_HAND for array sizing
* Added Doxygen comments for primary debounce functions
* Removed debounce_free()

* Rewrite sym_defer_pr

* Modernise code using sym_defer_pk as template
* Format consistency with other current algorithms

* Use shorter SPDX-License-Identifier

* Remove ChibiOS core memory manager guard
* Keep type definition within DEBOUNCE guard

* Add change log

* Minor optimisation refactor

* Pre-calculate row_offset in per-key matrix loops
* Add inline compiler hints
* Improve readability with blank lines

* Limit elapsed time to the maximum debounce value

* Apply suggestions from code review

Declare counters with "DEBOUNCE_ELAPSED"

Co-authored-by: Joel Challis <git@zvecr.com>

* Update change log to new breaking change date

---------

Co-authored-by: Joel Challis <git@zvecr.com>
2025-09-07 13:34:05 +01:00
QMK Bot
5830b1b5e3 Merge remote-tracking branch 'origin/master' into develop 2025-09-07 12:09:44 +00:00
Ryan
bcc546aa3f
Update USBaspLoader ISP instructions (#25590) 2025-09-07 13:05:34 +01:00
Joel Challis
19527e8399
Remove duplication of RP2040 config defaults (#25563) 2025-09-06 14:48:07 -07:00
フィルターペーパー
d8ce8cd204
Simplify hue calculation in raindrops animation (#25587) 2025-09-06 14:43:01 -07:00
フィルターペーパー
248d7c1d6d
Simplify tap_code16_delay (#25595)
* Replaced for-loop with single wait_ms(delay) call
* Improve code consistency with tap_code_delay
2025-09-06 10:04:42 +01:00
Nick Brassel
9455c6adec
Branch point for 2025q4 breaking changes 2025-09-06 17:57:39 +10:00
Nick Brassel
6619ea4441
Merge branch 'master' into develop 2025-09-06 17:57:11 +10:00
867 changed files with 22856 additions and 15887 deletions

View file

@ -0,0 +1,37 @@
{
"keycodes": {
"0x7819": {
"group": "led_matrix",
"key": "QK_LED_MATRIX_FLAG_NEXT",
"label": "LED Matrix Flag Next",
"aliases": [
"LM_FLGN"
]
},
"0x781A": {
"group": "led_matrix",
"key": "QK_LED_MATRIX_FLAG_PREVIOUS",
"label": "LED Matrix Flag Previous",
"aliases": [
"LM_FLGP"
]
},
"0x784D": {
"group": "rgb_matrix",
"key": "QK_RGB_MATRIX_FLAG_NEXT",
"label": "RGB Matrix Flag Next",
"aliases": [
"RM_FLGN"
]
},
"0x784E": {
"group": "rgb_matrix",
"key": "QK_RGB_MATRIX_FLAG_PREVIOUS",
"label": "RGB Matrix Flag Previous",
"aliases": [
"RM_FLGP"
]
}
}
}

View file

@ -98,6 +98,7 @@
// LED Matrix
"LED_MATRIX_CENTER": {"info_key": "led_matrix.center_point", "value_type": "array.int"},
"LED_MATRIX_FLAG_STEPS": {"info_key": "led_matrix.flag_steps", "value_type": "array.int"},
"LED_MATRIX_KEYRELEASES": {"info_key": "led_matrix.react_on_keyup", "value_type": "flag"},
"LED_MATRIX_LED_FLUSH_LIMIT": {"info_key": "led_matrix.led_flush_limit", "value_type": "int"},
"LED_MATRIX_LED_PROCESS_LIMIT": {"info_key": "led_matrix.led_process_limit", "value_type": "int", "to_json": false},
@ -111,6 +112,7 @@
"LED_MATRIX_DEFAULT_ON": {"info_key": "led_matrix.default.on", "value_type": "bool"},
"LED_MATRIX_DEFAULT_VAL": {"info_key": "led_matrix.default.val", "value_type": "int"},
"LED_MATRIX_DEFAULT_SPD": {"info_key": "led_matrix.default.speed", "value_type": "int"},
"LED_MATRIX_DEFAULT_FLAGS": {"info_key": "led_matrix.default.flags", "value_type": "int"},
// Locking Switch
"LOCKING_SUPPORT_ENABLE": {"info_key": "qmk.locking.enabled", "value_type": "flag"},
@ -147,6 +149,7 @@
// RGB Matrix
"RGB_MATRIX_CENTER": {"info_key": "rgb_matrix.center_point", "value_type": "array.int"},
"RGB_MATRIX_FLAG_STEPS": {"info_key": "rgb_matrix.flag_steps", "value_type": "array.int"},
"RGB_MATRIX_HUE_STEP": {"info_key": "rgb_matrix.hue_steps", "value_type": "int"},
"RGB_MATRIX_KEYRELEASES": {"info_key": "rgb_matrix.react_on_keyup", "value_type": "flag"},
"RGB_MATRIX_LED_FLUSH_LIMIT": {"info_key": "rgb_matrix.led_flush_limit", "value_type": "int"},
@ -164,6 +167,7 @@
"RGB_MATRIX_DEFAULT_SAT": {"info_key": "rgb_matrix.default.sat", "value_type": "int"},
"RGB_MATRIX_DEFAULT_VAL": {"info_key": "rgb_matrix.default.val", "value_type": "int"},
"RGB_MATRIX_DEFAULT_SPD": {"info_key": "rgb_matrix.default.speed", "value_type": "int"},
"RGB_MATRIX_DEFAULT_FLAGS": {"info_key": "rgb_matrix.default.flags", "value_type": "int"},
// RGBLight
"RGBLED_SPLIT": {"info_key": "rgblight.split_count", "value_type": "array.int"},

View file

@ -23,7 +23,8 @@
"animation": "solid",
"on": true,
"val": 255,
"speed": 128
"speed": 128,
"flags": 255
},
"led_flush_limit": 16,
"max_brightness": 255,
@ -53,7 +54,8 @@
"hue": 0,
"sat": 255,
"val": 255,
"speed": 128
"speed": 128,
"flags": 255
},
"hue_steps": 8,
"led_flush_limit": 16,

View file

@ -1620,8 +1620,11 @@
"0_sixty": {
"target": "0_sixty/base"
},
"0xcb/splaytoraid": {
"target": "0xcb/splaytoraid/rp2040_ce"
"0xcb/splaytoraid/32u4": {
"target": "0xcb/splaytoraid"
},
"0xcb/splaytoraid/rp2040_ce": {
"target": "0xcb/splaytoraid"
},
"1upkeyboards/pi40": {
"target": "1upkeyboards/pi40/mit_v1_0"
@ -1632,12 +1635,24 @@
"1upkeyboards/sweet16": {
"target": "1upkeyboards/sweet16/v1"
},
"1upkeyboards/sweet16v2/kb2040": {
"target": "1upkeyboards/sweet16v2"
},
"1upkeyboards/sweet16v2/pro_micro": {
"target": "1upkeyboards/sweet16v2"
},
"25keys/aleth42": {
"target": "25keys/aleth42/rev1"
},
"25keys/zinc": {
"target": "25keys/zinc/rev1"
},
"40percentclub/gherkin/kb2040": {
"target": "40percentclub/gherkin"
},
"40percentclub/gherkin/pro_micro": {
"target": "40percentclub/gherkin"
},
"40percentclub/i75": {
"target": "40percentclub/i75/promicro"
},
@ -1735,7 +1750,7 @@
"target": "durgod/dgk6x/galaxy"
},
"durgod/venus": {
"target": "durgod/dgk6x/venus"
"target": "durgod/dgk6x/venus_ansi"
},
"dztech/tofu/ii": {
"target": "dztech/tofu/ii/v1"

View file

@ -543,7 +543,8 @@
"on": {"type": "boolean"},
"animation": {"type": "string"},
"val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
"speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
}
},
"driver": {
@ -571,6 +572,11 @@
"maxItems": 2,
"items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
},
"flag_steps": {
"type": "array",
"minItems": 1,
"items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
},
"max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"val_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},
@ -626,7 +632,8 @@
"hue": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"sat": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"val": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
"speed": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"flags": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
}
},
"driver": {
@ -656,6 +663,11 @@
"maxItems": 2,
"items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
},
"flag_steps": {
"type": "array",
"minItems": 1,
"items": {"$ref": "./definitions.jsonschema#/unsigned_int_8"}
},
"max_brightness": {"$ref": "./definitions.jsonschema#/unsigned_int_8"},
"timeout": {"$ref": "./definitions.jsonschema#/unsigned_int"},
"hue_steps": {"$ref": "./definitions.jsonschema#/unsigned_int"},

View file

@ -35,6 +35,17 @@
}
}
},
"dip_switches": {
"type": "array",
"items": {
"type": "object",
"required": ["on", "off"],
"properties": {
"on": {"type": "string"},
"off": {"type": "string"}
}
}
},
"macros": {
"type": "array",
"items": {

View file

@ -0,0 +1,3 @@
# Refactor debounce algorithm with static allocation [#25515](https://github.com/qmk/qmk_firmware/pull/25515)
Removed dynamic memory allocation (malloc, free) from all debounce implementations for improved efficiency on embedded systems and to avoid runtime allocation overhead. Refactored state arrays to use direct indexing, simplifying code and eliminating pointer arithmetic. Standardized usage of MATRIX_ROWS_PER_HAND throughout the codebase to ensure consistent support for split keyboards.

View file

@ -88,6 +88,8 @@ As mentioned earlier, the center of the keyboard by default is expected to be `{
|`QK_LED_MATRIX_BRIGHTNESS_DOWN`|`LM_BRID`|Decrease the brightness level |
|`QK_LED_MATRIX_SPEED_UP` |`LM_SPDU`|Increase the animation speed |
|`QK_LED_MATRIX_SPEED_DOWN` |`LM_SPDD`|Decrease the animation speed |
|`QK_LED_MATRIX_FLAG_NEXT` |`LM_FLGN`|Cycle through flags |
|`QK_LED_MATRIX_FLAG_PREVIOUS` |`LM_FLGP`|Cycle through flags in reverse |
## LED Matrix Effects {#led-matrix-effects}
@ -253,6 +255,7 @@ const char* effect_name = led_matrix_get_mode_name(led_matrix_get_mode());
#define LED_MATRIX_DEFAULT_FLAGS LED_FLAG_ALL // Sets the default LED flags, if none has been set
#define LED_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
#define LED_MATRIX_FLAG_STEPS { LED_FLAG_ALL, LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER, LED_FLAG_NONE } // Sets the flags which can be cycled through.
```
## EEPROM storage {#eeprom-storage}
@ -505,6 +508,62 @@ The current effect speed, from 0 to 255.
---
### `void led_matrix_set_flags(led_flags_t flags)` {#api-led-matrix-set-flags}
Set the global effect flags.
#### Arguments {#api-led-matrix-set-flags-arguments}
- `led_flags_t flags`
The [flags](#flags) value to set.
---
### `void led_matrix_set_flags_noeeprom(led_flags_t flags)` {#api-led-matrix-set-flags-noeeprom}
Set the global effect flags. New state is not written to EEPROM.
#### Arguments {#api-led-matrix-set-flags-noeeprom-arguments}
- `led_flags_t flags`
The [flags](#flags) value to set.
---
### `void led_matrix_flags_step(void)` {#api-led-matrix-flags-step}
Move to the next flag combination.
---
### `void led_matrix_flags_step_noeeprom(void)` {#api-led-matrix-flags-step-noeeprom}
Move to the next flag combination. New state is not written to EEPROM.
---
### `void led_matrix_flags_step_reverse(void)` {#api-led-matrix-flags-step-reverse}
Move to the previous flag combination.
---
### `void led_matrix_flags_step_reverse_noeeprom(void)` {#api-led-matrix-flags-step-reverse-noeeprom}
Move to the previous flag combination. New state is not written to EEPROM.
---
### `uint8_t led_matrix_get_flags(void)` {#api-led-matrix-get-flags}
Get the current global effect flags.
#### Return Value {#api-led-matrix-get-flags-return}
The current effect [flags](#flags).
---
### `void led_matrix_reload_from_eeprom(void)` {#api-led-matrix-reload-from-eeprom}
Reload the effect configuration (enabled, mode and brightness) from EEPROM.

View file

@ -96,6 +96,8 @@ As mentioned earlier, the center of the keyboard by default is expected to be `{
|`QK_RGB_MATRIX_VALUE_DOWN` |`RM_VALD`|Decrease the brightness level |
|`QK_RGB_MATRIX_SPEED_UP` |`RM_SPDU`|Increase the animation speed |
|`QK_RGB_MATRIX_SPEED_DOWN` |`RM_SPDD`|Decrease the animation speed |
|`QK_RGB_MATRIX_FLAG_NEXT` |`RM_FLGN`|Cycle through flags |
|`QK_RGB_MATRIX_FLAG_PREVIOUS` |`RM_FLGP`|Cycle through flags in reverse |
## RGB Matrix Effects {#rgb-matrix-effects}
@ -409,6 +411,7 @@ const char* effect_name = rgb_matrix_get_mode_name(rgb_matrix_get_mode());
#define RGB_MATRIX_SPLIT { X, Y } // (Optional) For split keyboards, the number of LEDs connected on each half. X = left, Y = Right.
// If reactive effects are enabled, you also will want to enable SPLIT_TRANSPORT_MIRROR
#define RGB_TRIGGER_ON_KEYDOWN // Triggers RGB keypress events on key down. This makes RGB control feel more responsive. This may cause RGB to not function properly on some boards
#define RGB_MATRIX_FLAG_STEPS { LED_FLAG_ALL, LED_FLAG_KEYLIGHT | LED_FLAG_MODIFIER, LED_FLAG_UNDERGLOW, LED_FLAG_NONE } // Sets the flags which can be cycled through.
```
## EEPROM storage {#eeprom-storage}
@ -852,6 +855,62 @@ The current effect speed, from 0 to 255.
---
### `void rgb_matrix_set_flags(led_flags_t flags)` {#api-rgb-matrix-set-flags}
Set the global effect flags.
#### Arguments {#api-rgb-matrix-set-flags-arguments}
- `led_flags_t flags`
The [flags](#flags) value to set.
---
### `void rgb_matrix_set_flags_noeeprom(led_flags_t flags)` {#api-rgb-matrix-set-flags-noeeprom}
Set the global effect flags. New state is not written to EEPROM.
#### Arguments {#api-rgb-matrix-set-flags-noeeprom-arguments}
- `led_flags_t flags`
The [flags](#flags) value to set.
---
### `void rgb_matrix_flags_step(void)` {#api-rgb-matrix-flags-step}
Move to the next flag combination.
---
### `void rgb_matrix_flags_step_noeeprom(void)` {#api-rgb-matrix-flags-step-noeeprom}
Move to the next flag combination. New state is not written to EEPROM.
---
### `void rgb_matrix_flags_step_reverse(void)` {#api-rgb-matrix-flags-step-reverse}
Move to the previous flag combination.
---
### `void rgb_matrix_flags_step_reverse_noeeprom(void)` {#api-rgb-matrix-flags-step-reverse-noeeprom}
Move to the previous flag combination. New state is not written to EEPROM.
---
### `uint8_t rgb_matrix_get_flags(void)` {#api-rgb-matrix-get-flags}
Get the current global effect flags.
#### Return Value {#api-rgb-matrix-get-flags-return}
The current effect [flags](#flags).
---
### `void rgb_matrix_sethsv(uint8_t h, uint8_t s, uint8_t v)` {#api-rgb-matrix-sethsv}
Set the global effect hue, saturation, and value (brightness).

View file

@ -220,14 +220,18 @@ This bootloader is primarily for keyboards originally designed for the PS2AVRGB
USBaspLoader is a bootloader based on V-USB that emulates a hardware USBasp device. It runs on ATmega32A and ATmega328P MCUs.
Precompiled `.hex` files are generally not available, but you can compile it yourself by setting up the QMK environment and following Coseyfannitutti's guide for the appropriate MCU:
Precompiled `.hex` files are generally not available, but you can compile it yourself by setting up the QMK environment and cloning the appropriate branch of Coseyfannitutti's USBaspLoader fork:
|MCU |Low |High |Extended|USB ID |
|-------------------------------------------------------------------------------------|------|------|--------|-----------|
|[ATmega32A](https://github.com/coseyfannitutti/discipline/tree/master/doc/bootloader)|`0x1F`|`0xC0`|*n/a* |`16C0:05DC`|
|[ATmega328P](https://github.com/coseyfannitutti/discipad/tree/master/doc/bootloader) |`0xD7`|`0xD0`|`0x04` |`16C0:05DC`|
|MCU |Low |High |Extended|USB ID |
|-----------------------------------------------------------------------------|------|------|--------|-----------|
|[ATmega32A](https://github.com/coseyfannitutti/USBaspLoader/tree/atmega32a) |`0x1F`|`0xC0`|*n/a* |`16C0:05DC`|
|[ATmega328P](https://github.com/coseyfannitutti/USBaspLoader/tree/atmega328p)|`0xD7`|`0xD0`|`0x04` |`16C0:05DC`|
Note that some boards may have their own specialized build of this bootloader in a separate repository. This will usually be linked to in the board's readme.
From there, simply `cd` to the `firmware/` directory and run `make`, which should produce a file called `main.hex`.
:::tip
Some boards may have their own specialized build of this bootloader in a separate repository. This will usually be linked to in the board's readme.
:::
## Flashing the Bootloader

View file

@ -433,6 +433,8 @@ See also: [LED Matrix](features/led_matrix)
|`QK_LED_MATRIX_BRIGHTNESS_DOWN`|`LM_BRID`|Decrease the brightness level |
|`QK_LED_MATRIX_SPEED_UP` |`LM_SPDU`|Increase the animation speed |
|`QK_LED_MATRIX_SPEED_DOWN` |`LM_SPDD`|Decrease the animation speed |
|`QK_LED_MATRIX_FLAG_NEXT` |`LM_FLGN`|Cycle through flags |
|`QK_LED_MATRIX_FLAG_PREVIOUS` |`LM_FLGP`|Cycle through flags in reverse |
## Magic Keycodes {#magic-keycodes}
@ -783,6 +785,8 @@ See also: [RGB Matrix](features/rgb_matrix)
|`QK_RGB_MATRIX_VALUE_DOWN` |`RM_VALD`|Decrease the brightness level |
|`QK_RGB_MATRIX_SPEED_UP` |`RM_SPDU`|Increase the animation speed |
|`QK_RGB_MATRIX_SPEED_DOWN` |`RM_SPDD`|Decrease the animation speed |
|`QK_RGB_MATRIX_FLAG_NEXT` |`RM_FLGN`|Cycle through flags |
|`QK_RGB_MATRIX_FLAG_PREVIOUS` |`RM_FLGP`|Cycle through flags in reverse |
## US ANSI Shifted Symbols {#us-ansi-shifted-symbols}

View file

@ -534,6 +534,8 @@ QUANTUM_PAINTER_DRIVERS += surface
Creating a surface in firmware can then be done with the following APIs:
```c
// 24bpp RGB888 surface:
painter_device_t qp_make_rgb888_surface(uint16_t panel_width, uint16_t panel_height, void *buffer);
// 16bpp RGB565 surface:
painter_device_t qp_make_rgb565_surface(uint16_t panel_width, uint16_t panel_height, void *buffer);
// 1bpp monochrome surface:

View file

@ -415,6 +415,9 @@ Configures the [LED Matrix](features/led_matrix) feature.
* `center_point` <Badge type="info">Array: Number</Badge>
* The centroid (geometric center) of the LEDs. Used for certain effects.
* Default: `[112, 32]`
* `flag_steps` <Badge type="info">Array: Number</Badge>
* A list of flag bitfields that can be cycled through.
* Default: `[255, 5, 0]`
* `default`
* `animation` <Badge type="info">String</Badge>
* The default effect. Must be one of `led_matrix.animations`
@ -428,6 +431,9 @@ Configures the [LED Matrix](features/led_matrix) feature.
* `speed` <Badge type="info">Number</Badge>
* The default animation speed.
* Default: `128`
* `flags` <Badge type="info">Number</Badge>
* The default LED flags.
* Default: `255`
* `driver` <Badge type="info">String</Badge> <Badge>Required</Badge>
* The driver to use. Must be one of `custom`, `is31fl3218`, `is31fl3731`, `is31fl3733`, `is31fl3736`, `is31fl3737`, `is31fl3741`, `is31fl3742a`, `is31fl3743a`, `is31fl3745`, `is31fl3746a`, `snled27351`.
* `layout` <Badge type="info">Array: Object</Badge> <Badge>Required</Badge>
@ -660,6 +666,9 @@ Configures the [RGB Matrix](features/rgb_matrix) feature.
* `center_point` <Badge type="info">Array: Number</Badge>
* The centroid (geometric center) of the LEDs. Used for certain effects.
* Default: `[112, 32]`
* `flag_steps` <Badge type="info">Array: Number</Badge>
* A list of flag bitfields that can be cycled through.
* Default: `[255, 5, 2, 0]`
* `default`
* `animation` <Badge type="info">String</Badge>
* The default effect. Must be one of `rgb_matrix.animations`
@ -679,6 +688,9 @@ Configures the [RGB Matrix](features/rgb_matrix) feature.
* `speed` <Badge type="info">Number</Badge>
* The default animation speed.
* Default: `128`
* `flags` <Badge type="info">Number</Badge>
* The default LED flags.
* Default: `255`
* `driver` <Badge type="info">String</Badge> <Badge>Required</Badge>
* The driver to use. Must be one of `aw20216s`, `custom`, `is31fl3218`, `is31fl3236`, `is31fl3729`, `is31fl3731`, `is31fl3733`, `is31fl3736`, `is31fl3737`, `is31fl3741`, `is31fl3742a`, `is31fl3743a`, `is31fl3745`, `is31fl3746a`, `snled27351`, `ws2812`.
* `hue_steps` <Badge type="info">Number</Badge>

View file

@ -1,16 +1,256 @@
// Copyright 2025 QMK
// SPDX-License-Identifier: GPL-2.0-or-later WITH BSD-2-Clause
#include "progmem.h"
// Helidox 8x6 font with QMK Firmware Logo
// Online editor: http://teripom.x0.com/
/**
* QMK 6x8 Font for LCD and OLED displays
*
* Derived from the first half of the Adafruit GFX Library font:
* https://github.com/adafruit/Adafruit-GFX-Library
*
* The first 128 characters match that of code page 437, the character set used by the original IBM PC, which includes all printable ASCII characters.
* Each byte represents a column of 8 pixels, with the least significant bit being the top of the glyph.
*
* A large 21x3 character QMK Firmware logo is encoded from 0x80-0x94, 0xA0-0xB4, and 0xC0-0xD4.
* 2x2 character OS logos for Apple, Windows, Linux and Android are encoded from 0x95-0x9C and 0xB5-0xBC.
*/
static const unsigned char font[] PROGMEM = {
0x07, 0x08, 0x7F, 0x08, 0x07, 0x00, 0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00, 0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, 0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, 0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, 0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, 0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, 0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, 0x00, 0x18, 0x24, 0x18, 0x00, 0x00, 0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, 0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, 0x26, 0x29, 0x79, 0x29, 0x26, 0x00, 0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, 0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, 0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, 0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, 0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, 0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, 0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, 0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, 0x60, 0x60, 0x60, 0x60, 0x60, 0x00, 0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, 0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, 0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, 0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, 0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, 0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, 0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, 0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x07, 0x00, 0x00, 0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, 0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, 0x23, 0x13, 0x08, 0x64, 0x62, 0x00, 0x36, 0x49, 0x56, 0x20, 0x50, 0x00, 0x00, 0x08, 0x07, 0x03, 0x00, 0x00, 0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, 0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, 0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, 0x00, 0x80, 0x70, 0x30, 0x00, 0x00, 0x08, 0x08, 0x08, 0x08, 0x08, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x20, 0x10, 0x08, 0x04, 0x02, 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
0x72, 0x49, 0x49, 0x49, 0x46, 0x00, 0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, 0x27, 0x45, 0x45, 0x45, 0x39, 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, 0x41, 0x21, 0x11, 0x09, 0x07, 0x00, 0x36, 0x49, 0x49, 0x49, 0x36, 0x00, 0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x00, 0x41, 0x22, 0x14, 0x08, 0x00, 0x02, 0x01, 0x59, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, 0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, 0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, 0x26, 0x49, 0x49, 0x49, 0x32, 0x00, 0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, 0x63, 0x14, 0x08, 0x14, 0x63, 0x00, 0x03, 0x04, 0x78, 0x04, 0x03, 0x00, 0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, 0x02, 0x04, 0x08, 0x10, 0x20, 0x00, 0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x00, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x03, 0x07, 0x08, 0x00, 0x00, 0x20, 0x54, 0x54, 0x78, 0x40, 0x00, 0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, 0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, 0x38, 0x54, 0x54, 0x54, 0x18, 0x00, 0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, 0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, 0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, 0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, 0x38, 0x44, 0x44, 0x44, 0x38, 0x00, 0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, 0x48, 0x54, 0x54, 0x54, 0x24, 0x00, 0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, 0x44, 0x28, 0x10, 0x28, 0x44, 0x00, 0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, 0x00, 0x08, 0x36, 0x41, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
0x00, 0x41, 0x36, 0x08, 0x00, 0x00, 0x02, 0x01, 0x02, 0x04, 0x02, 0x00, 0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x40, 0x40, 0xF0, 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0x3F, 0xF8, 0xF8, 0xFF, 0x38, 0xFF, 0xF8, 0xF8, 0xF0, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0xC0, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x80, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x00, 0xC0, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0x3E,
0x1E, 0x06, 0x01, 0x00, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, 0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, 0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, 0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x49, 0x49, 0xFF, 0xFF, 0xFF, 0xFF, 0xE0, 0xDF, 0xBF, 0xBF, 0x00, 0xBF, 0xBF, 0xDF, 0xE0, 0xFF, 0xFF, 0xFF, 0xFF, 0x49, 0x49, 0x49, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x3F, 0x60, 0x60, 0xE0, 0xBF, 0x1F, 0x00, 0x7F, 0x7F, 0x07, 0x1E, 0x38, 0x1E, 0x07, 0x7F, 0x7F, 0x00, 0x7F, 0x7F, 0x0E, 0x1F, 0x3B, 0x71, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7F, 0x7F, 0x0C, 0x0C, 0x0C, 0x00, 0x7E, 0x7E, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x7E, 0x7E, 0x03, 0x03, 0x7F, 0x7E, 0x00, 0x0F,
0x3E, 0x70, 0x3C, 0x06, 0x3C, 0x70, 0x3E, 0x0F, 0x00, 0x32, 0x7B, 0x49, 0x49, 0x3F, 0x7E, 0x00, 0x7F, 0x7E, 0x03, 0x03, 0x00, 0x1E, 0x3F, 0x69, 0x69, 0x6F, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3C, 0x78, 0x70, 0x60, 0x00, 0x00, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, 0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, 0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, 0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, 0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x01, 0x07, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x7E, 0x0F, 0x0F, 0x7F, 0x0F, 0x7F, 0x0F, 0x0F, 0x07, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x07, 0x08, 0x7F, 0x08, 0x07, 0x00, // 0x00 NUL / Ψ
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00, // 0x01 SOH / ☺︎
0xC1, 0x94, 0xB0, 0x94, 0xC1, 0x00, // 0x02 STX / ☻
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00, // 0x03 ETX / ♥︎
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00, // 0x04 EOT / ♦︎
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00, // 0x05 ENQ / ♣︎
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00, // 0x06 ACK / ♠︎
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00, // 0x07 BEL / •
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00, // 0x08 BS / ◘
0x00, 0x18, 0x24, 0x18, 0x00, 0x00, // 0x09 HT / ○
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00, // 0x0A LF / ◙
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00, // 0x0B VT / ♂︎
0x26, 0x29, 0x79, 0x29, 0x26, 0x00, // 0x0C FF / ♀︎
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00, // 0x0D CR / ♪
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00, // 0x0E SO / ♫
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00, // 0x0F SI / ☼
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00, // 0x10 DLE / ►
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00, // 0x11 DC1 / ◄
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00, // 0x12 DC2 / ↕︎
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00, // 0x13 DC3 / ‼︎
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00, // 0x14 DC4 / ¶
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00, // 0x15 NAK / §
0x60, 0x60, 0x60, 0x60, 0x60, 0x00, // 0x16 SYN / ▬
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00, // 0x17 ETB / ↨
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00, // 0x18 CAN / ↑
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00, // 0x19 EM / ↓
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00, // 0x1A SUB / →
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00, // 0x1B ESC / ←
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00, // 0x1C FS / ∟
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00, // 0x1D GS / ↔︎
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00, // 0x1E RS / ▲
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00, // 0x1F US / ▼
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x20 Space
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00, // 0x21 !
0x00, 0x07, 0x00, 0x07, 0x00, 0x00, // 0x22 "
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00, // 0x23 #
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00, // 0x24 $
0x23, 0x13, 0x08, 0x64, 0x62, 0x00, // 0x25 %
0x36, 0x49, 0x56, 0x20, 0x50, 0x00, // 0x26 &
0x00, 0x08, 0x07, 0x03, 0x00, 0x00, // 0x27 '
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00, // 0x28 (
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00, // 0x29 )
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00, // 0x2A *
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00, // 0x2B +
0x00, 0x80, 0x70, 0x30, 0x00, 0x00, // 0x2C ,
0x08, 0x08, 0x08, 0x08, 0x08, 0x00, // 0x2D -
0x00, 0x00, 0x60, 0x60, 0x00, 0x00, // 0x2E .
0x20, 0x10, 0x08, 0x04, 0x02, 0x00, // 0x2F /
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00, // 0x30 0
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00, // 0x31 1
0x72, 0x49, 0x49, 0x49, 0x46, 0x00, // 0x32 2
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00, // 0x33 3
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00, // 0x34 4
0x27, 0x45, 0x45, 0x45, 0x39, 0x00, // 0x35 5
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00, // 0x36 6
0x41, 0x21, 0x11, 0x09, 0x07, 0x00, // 0x37 7
0x36, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x38 8
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00, // 0x39 9
0x00, 0x00, 0x14, 0x00, 0x00, 0x00, // 0x3A :
0x00, 0x40, 0x34, 0x00, 0x00, 0x00, // 0x3B ;
0x00, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x3C <
0x14, 0x14, 0x14, 0x14, 0x14, 0x00, // 0x3D =
0x00, 0x41, 0x22, 0x14, 0x08, 0x00, // 0x3E >
0x02, 0x01, 0x59, 0x09, 0x06, 0x00, // 0x3F ?
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00, // 0x40 @
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00, // 0x41 A
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00, // 0x42 B
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00, // 0x43 C
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x44 D
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00, // 0x45 E
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00, // 0x46 F
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00, // 0x47 G
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, // 0x48 H
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00, // 0x49 I
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00, // 0x4A J
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00, // 0x4B K
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x4C L
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00, // 0x4D M
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00, // 0x4E N
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00, // 0x4F O
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00, // 0x50 P
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00, // 0x51 Q
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00, // 0x52 R
0x26, 0x49, 0x49, 0x49, 0x32, 0x00, // 0x53 S
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00, // 0x54 T
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00, // 0x55 U
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00, // 0x56 V
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00, // 0x57 W
0x63, 0x14, 0x08, 0x14, 0x63, 0x00, // 0x58 X
0x03, 0x04, 0x78, 0x04, 0x03, 0x00, // 0x59 Y
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00, // 0x5A Z
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00, // 0x5B [
0x02, 0x04, 0x08, 0x10, 0x20, 0x00, // 0x5C Backslash
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00, // 0x5D ]
0x04, 0x02, 0x01, 0x02, 0x04, 0x00, // 0x5E ^
0x40, 0x40, 0x40, 0x40, 0x40, 0x00, // 0x5F _
0x00, 0x03, 0x07, 0x08, 0x00, 0x00, // 0x60 `
0x20, 0x54, 0x54, 0x78, 0x40, 0x00, // 0x61 a
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00, // 0x62 b
0x38, 0x44, 0x44, 0x44, 0x28, 0x00, // 0x63 c
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00, // 0x64 d
0x38, 0x54, 0x54, 0x54, 0x18, 0x00, // 0x65 e
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00, // 0x66 f
0x18, 0xA4, 0xA4, 0x9C, 0x78, 0x00, // 0x67 g
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x68 h
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00, // 0x69 i
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00, // 0x6A j
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00, // 0x6B k
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00, // 0x6C l
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00, // 0x6D m
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00, // 0x6E n
0x38, 0x44, 0x44, 0x44, 0x38, 0x00, // 0x6F o
0xFC, 0x18, 0x24, 0x24, 0x18, 0x00, // 0x70 p
0x18, 0x24, 0x24, 0x18, 0xFC, 0x00, // 0x71 q
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00, // 0x72 r
0x48, 0x54, 0x54, 0x54, 0x24, 0x00, // 0x73 s
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00, // 0x74 t
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00, // 0x75 u
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00, // 0x76 v
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00, // 0x77 w
0x44, 0x28, 0x10, 0x28, 0x44, 0x00, // 0x78 x
0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00, // 0x79 y
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00, // 0x7A z
0x00, 0x08, 0x36, 0x41, 0x00, 0x00, // 0x7B {
0x00, 0x00, 0x77, 0x00, 0x00, 0x00, // 0x7C |
0x00, 0x41, 0x36, 0x08, 0x00, 0x00, // 0x7D }
0x02, 0x01, 0x02, 0x04, 0x02, 0x00, // 0x7E ~
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00, // 0x7F DEL / ⌂
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x80 QMK Logo Top 1
0x00, 0x00, 0x80, 0x80, 0xE0, 0xF0, // 0x81 QMK Logo Top 2
0xF0, 0xFC, 0x70, 0xFC, 0xF0, 0x7C, // 0x82 QMK Logo Top 3
0xF0, 0xFC, 0x70, 0xFC, 0xF0, 0xF0, // 0x83 QMK Logo Top 4
0xE0, 0x80, 0x80, 0x00, 0x00, 0x00, // 0x84 QMK Logo Top 5
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x85 QMK Logo Top 6
0x80, 0x80, 0x80, 0x00, 0x00, 0x00, // 0x86 QMK Logo Top 7
0x80, 0x80, 0x00, 0x00, 0x00, 0x00, // 0x87 QMK Logo Top 8
0x00, 0x80, 0x80, 0x00, 0x80, 0x80, // 0x88 QMK Logo Top 9
0x00, 0x00, 0x00, 0x80, 0x80, 0x00, // 0x89 QMK Logo Top 10
0x00, 0x00, 0x00, 0x00, 0x80, 0x80, // 0x8A QMK Logo Top 11
0x80, 0x80, 0x80, 0x00, 0x80, 0x80, // 0x8B QMK Logo Top 12
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8C QMK Logo Top 13
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8D QMK Logo Top 14
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8E QMK Logo Top 15
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x8F QMK Logo Top 16
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x90 QMK Logo Top 17
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x91 QMK Logo Top 18
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x92 QMK Logo Top 19
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x93 QMK Logo Top 20
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x94 QMK Logo Top 21
0x00, 0xC0, 0xF0, 0xF8, 0xFC, 0x3E, // 0x95 Apple Logo TL
0x1E, 0x06, 0x01, 0x00, 0x00, 0x00, // 0x96 Apple Logo TR
0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, // 0x97 Windows Logo TL
0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, // 0x98 Windows Logo TR
0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B, // 0x99 Linux Logo TL
0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00, // 0x9A Linux Logo TR
0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE, // 0x9B Android Logo TL
0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00, // 0x9C Android Logo TR
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9D
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9E
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0x9F
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xA0 QMK Logo Middle 1
0x00, 0x00, 0xAA, 0xAA, 0xFF, 0xFF, // 0xA1 QMK Logo Middle 2
0xFF, 0xFF, 0xE0, 0xDF, 0xDF, 0x00, // 0xA2 QMK Logo Middle 3
0xDF, 0xDF, 0xE0, 0xFF, 0xFF, 0xFF, // 0xA3 QMK Logo Middle 4
0xFF, 0xAA, 0xAA, 0x00, 0x00, 0x00, // 0xA4 QMK Logo Middle 5
0x00, 0x00, 0x00, 0x00, 0x3E, 0x7F, // 0xA5 QMK Logo Middle 6
0xC1, 0xC1, 0xC1, 0x7F, 0x3E, 0x00, // 0xA6 QMK Logo Middle 7
0xFF, 0xFF, 0x0F, 0x3C, 0x78, 0x3C, // 0xA7 QMK Logo Middle 8
0x0F, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, // 0xA8 QMK Logo Middle 9
0x1C, 0x3E, 0x77, 0xE3, 0xC1, 0x00, // 0xA9 QMK Logo Middle 10
0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, // 0xAA QMK Logo Middle 11
0x19, 0x19, 0x19, 0x00, 0xFD, 0xFD, // 0xAB QMK Logo Middle 12
0x00, 0xFE, 0xFC, 0x06, 0x06, 0x00, // 0xAC QMK Logo Middle 13
0xFE, 0xFC, 0x06, 0x06, 0xFC, 0xFC, // 0xAD QMK Logo Middle 14
0x06, 0x06, 0xFE, 0xFC, 0x00, 0x1E, // 0xAE QMK Logo Middle 15
0x7C, 0xE0, 0x78, 0x0C, 0x78, 0xE0, // 0xAF QMK Logo Middle 16
0x7C, 0x1E, 0x00, 0x64, 0xF6, 0x92, // 0xB0 QMK Logo Middle 17
0x92, 0x7E, 0xFC, 0x00, 0xFE, 0xFC, // 0xB1 QMK Logo Middle 18
0x06, 0x06, 0x00, 0x3C, 0x7E, 0xD2, // 0xB2 QMK Logo Middle 19
0xD2, 0xDE, 0x4C, 0x00, 0x00, 0x00, // 0xB3 QMK Logo Middle 20
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xB4 QMK Logo Middle 21
0x00, 0x03, 0x0F, 0x1F, 0x3F, 0x3C, // 0xB5 Apple Logo BL
0x78, 0x70, 0x60, 0x00, 0x00, 0x00, // 0xB6 Apple Logo BR
0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, // 0xB7 Windows Logo BL
0x7F, 0x41, 0x41, 0x41, 0x7F, 0x00, // 0xB8 Windows Logo BR
0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20, // 0xB9 Linux Logo BL
0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00, // 0xBA Linux Logo BR
0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F, // 0xBB Android Logo BL
0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00, // 0xBC Android Logo BR
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBD
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBE
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xBF
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC0 QMK Logo Bottom 1
0x00, 0x00, 0x00, 0x00, 0x03, 0x07, // 0xC1 QMK Logo Bottom 2
0x07, 0x1F, 0x07, 0x1F, 0x07, 0x1F, // 0xC2 QMK Logo Bottom 3
0x07, 0x1F, 0x07, 0x1F, 0x07, 0x07, // 0xC3 QMK Logo Bottom 4
0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC4 QMK Logo Bottom 5
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC5 QMK Logo Bottom 6
0x00, 0x00, 0x01, 0x03, 0x02, 0x00, // 0xC6 QMK Logo Bottom 7
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC7 QMK Logo Bottom 8
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC8 QMK Logo Bottom 9
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xC9 QMK Logo Bottom 10
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xCA QMK Logo Bottom 11
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xCB QMK Logo Bottom 12
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xCC QMK Logo Bottom 13
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xCD QMK Logo Bottom 14
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xCE QMK Logo Bottom 15
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xCF QMK Logo Bottom 16
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD0 QMK Logo Bottom 17
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD1 QMK Logo Bottom 18
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD2 QMK Logo Bottom 19
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD3 QMK Logo Bottom 10
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD4 QMK Logo Bottom 21
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD5
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD6
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD7
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD8
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xD9
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDA
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDB
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDC
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDD
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // 0xDE
0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // 0xDF
};

View file

@ -36,7 +36,7 @@ uint32_t qp_comms_spi_send_data(painter_device_t device, const void *data, uint3
const uint32_t max_msg_length = 1024;
while (bytes_remaining > 0) {
uint32_t bytes_this_loop = QP_MIN(bytes_remaining, max_msg_length);
uint32_t bytes_this_loop = MIN(bytes_remaining, max_msg_length);
spi_transmit(p, bytes_this_loop);
p += bytes_this_loop;
bytes_remaining -= bytes_this_loop;

View file

@ -50,6 +50,16 @@ painter_device_t qp_make_rgb565_surface(uint16_t panel_width, uint16_t panel_hei
*/
painter_device_t qp_make_mono1bpp_surface(uint16_t panel_width, uint16_t panel_height, void *buffer);
/**
* Factory method for an RGB888 surface (aka framebuffer).
*
* @param panel_width[in] the width of the display panel
* @param panel_height[in] the height of the display panel
* @param buffer[in] pointer to a preallocated uint8_t buffer of size `SURFACE_REQUIRED_BUFFER_BYTE_SIZE(panel_width, panel_height, 16)`
* @return the device handle used with all drawing routines in Quantum Painter
*/
painter_device_t qp_make_rgb888_surface(uint16_t panel_width, uint16_t panel_height, void *buffer);
/**
* Helper method to draw the contents of the framebuffer to the target device.
*

View file

@ -45,6 +45,7 @@ typedef struct surface_painter_device_t {
void * buffer;
uint8_t * u8buffer;
uint16_t *u16buffer;
rgb_t * rgbbuffer;
};
// Manually manage the viewport for streaming pixel data to the display

View file

@ -52,7 +52,7 @@ static bool qp_surface_pixdata_rgb565(painter_device_t device, const void *pixel
// Pixel colour conversion
static bool qp_surface_palette_convert_rgb565_swapped(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
for (int16_t i = 0; i < palette_size; ++i) {
rgb_t rgb = hsv_to_rgb_nocie((hsv_t){palette[i].hsv888.h, palette[i].hsv888.s, palette[i].hsv888.v});
rgb_t rgb = hsv_to_rgb_nocie(palette[i].hsv888);
uint16_t rgb565 = (((uint16_t)rgb.r) >> 3) << 11 | (((uint16_t)rgb.g) >> 2) << 5 | (((uint16_t)rgb.b) >> 3);
palette[i].rgb565 = __builtin_bswap16(rgb565);
}

View file

@ -0,0 +1,143 @@
// Copyright 2022 Nick Brassel (@tzarc)
// SPDX-License-Identifier: GPL-2.0-or-later
#ifdef QUANTUM_PAINTER_SURFACE_ENABLE
# include "color.h"
# include "qp_draw.h"
# include "qp_surface_internal.h"
# include "qp_comms_dummy.h"
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Surface driver impl: rgb888
static inline void setpixel_rgb888(surface_painter_device_t *surface, uint16_t x, uint16_t y, rgb_t rgb888) {
uint16_t w = surface->base.panel_width;
uint16_t h = surface->base.panel_height;
// Drop out if it's off-screen
if (x >= w || y >= h) {
return;
}
// Skip messing with the dirty info if the original value already matches
if (memcmp(&surface->rgbbuffer[y * w + x], &rgb888, sizeof(rgb_t)) != 0) {
// Update the dirty region
qp_surface_update_dirty(&surface->dirty, x, y);
// Update the pixel data in the buffer
surface->rgbbuffer[y * w + x] = rgb888;
}
}
static inline void append_pixel_rgb888(surface_painter_device_t *surface, rgb_t rgb888) {
setpixel_rgb888(surface, surface->viewport.pixdata_x, surface->viewport.pixdata_y, rgb888);
qp_surface_increment_pixdata_location(&surface->viewport);
}
static inline void stream_pixdata_rgb888(surface_painter_device_t *surface, const rgb_t *data, uint32_t native_pixel_count) {
for (uint32_t pixel_counter = 0; pixel_counter < native_pixel_count; ++pixel_counter) {
append_pixel_rgb888(surface, data[pixel_counter]);
}
}
// Stream pixel data to the current write position in GRAM
static bool qp_surface_pixdata_rgb888(painter_device_t device, const void *pixel_data, uint32_t native_pixel_count) {
painter_driver_t * driver = (painter_driver_t *)device;
surface_painter_device_t *surface = (surface_painter_device_t *)driver;
stream_pixdata_rgb888(surface, (const rgb_t *)pixel_data, native_pixel_count);
return true;
}
// Pixel colour conversion
static bool qp_surface_palette_convert_rgb888(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
for (int16_t i = 0; i < palette_size; ++i) {
palette[i].rgb888 = hsv_to_rgb_nocie(palette[i].hsv888);
}
return true;
}
// Append pixels to the target location, keyed by the pixel index
static bool qp_surface_append_pixels_rgb888(painter_device_t device, uint8_t *target_buffer, qp_pixel_t *palette, uint32_t pixel_offset, uint32_t pixel_count, uint8_t *palette_indices) {
rgb_t *buf = (rgb_t *)target_buffer;
for (uint32_t i = 0; i < pixel_count; ++i) {
buf[pixel_offset + i] = palette[palette_indices[i]].rgb888;
}
return true;
}
static bool rgb888_target_pixdata_transfer(painter_driver_t *surface_driver, painter_driver_t *target_driver, uint16_t x, uint16_t y, bool entire_surface) {
surface_painter_device_t *surface_handle = (surface_painter_device_t *)surface_driver;
uint16_t l = entire_surface ? 0 : surface_handle->dirty.l;
uint16_t t = entire_surface ? 0 : surface_handle->dirty.t;
uint16_t r = entire_surface ? (surface_handle->base.panel_width - 1) : surface_handle->dirty.r;
uint16_t b = entire_surface ? (surface_handle->base.panel_height - 1) : surface_handle->dirty.b;
// Set the target drawing area
bool ok = qp_viewport((painter_device_t)target_driver, x + l, y + t, x + r, y + b);
if (!ok) {
qp_dprintf("rgb888_target_pixdata_transfer: fail (could not set target viewport)\n");
return false;
}
// Housekeeping of the amount of pixels to transfer
uint32_t total_pixel_count = (8 * QUANTUM_PAINTER_PIXDATA_BUFFER_SIZE) / surface_driver->native_bits_per_pixel;
uint32_t pixel_counter = 0;
rgb_t * target_buffer = (rgb_t *)qp_internal_global_pixdata_buffer;
// Fill the global pixdata area so that we can start transferring to the panel
for (uint16_t y = t; y <= b; ++y) {
for (uint16_t x = l; x <= r; ++x) {
// Update the target buffer
target_buffer[pixel_counter++] = surface_handle->rgbbuffer[y * surface_handle->base.panel_width + x];
// If we've accumulated enough data, send it
if (pixel_counter == total_pixel_count) {
ok = qp_pixdata((painter_device_t)target_driver, qp_internal_global_pixdata_buffer, pixel_counter);
if (!ok) {
qp_dprintf("rgb888_target_pixdata_transfer: fail (could not stream pixdata to target)\n");
return false;
}
// Reset the counter
pixel_counter = 0;
}
}
}
// If there's any leftover data, send it
if (pixel_counter > 0) {
ok = qp_pixdata((painter_device_t)target_driver, qp_internal_global_pixdata_buffer, pixel_counter);
if (!ok) {
qp_dprintf("rgb888_target_pixdata_transfer: fail (could not stream pixdata to target)\n");
return false;
}
}
return true;
}
static bool qp_surface_append_pixdata_rgb888(painter_device_t device, uint8_t *target_buffer, uint32_t pixdata_offset, uint8_t pixdata_byte) {
target_buffer[pixdata_offset] = pixdata_byte;
return true;
}
const surface_painter_driver_vtable_t rgb888_surface_driver_vtable = {
.base =
{
.init = qp_surface_init,
.power = qp_surface_power,
.clear = qp_surface_clear,
.flush = qp_surface_flush,
.pixdata = qp_surface_pixdata_rgb888,
.viewport = qp_surface_viewport,
.palette_convert = qp_surface_palette_convert_rgb888,
.append_pixels = qp_surface_append_pixels_rgb888,
.append_pixdata = qp_surface_append_pixdata_rgb888,
},
.target_pixdata_transfer = rgb888_target_pixdata_transfer,
};
SURFACE_FACTORY_FUNCTION_IMPL(qp_make_rgb888_surface, rgb888_surface_driver_vtable, 24);
#endif // QUANTUM_PAINTER_SURFACE_ENABLE

View file

@ -90,7 +90,7 @@ static uint32_t qp_comms_spi_send_data_odd_cs_pulse(painter_device_t device, con
gpio_write_pin_high(comms_config->dc_pin);
while (bytes_remaining > 0) {
uint32_t bytes_this_loop = QP_MIN(bytes_remaining, max_msg_length);
uint32_t bytes_this_loop = MIN(bytes_remaining, max_msg_length);
bool odd_bytes = bytes_this_loop & 1;
// send data

View file

@ -90,7 +90,7 @@ bool qp_tft_panel_pixdata(painter_device_t device, const void *pixel_data, uint3
bool qp_tft_panel_palette_convert_rgb565_swapped(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
for (int16_t i = 0; i < palette_size; ++i) {
rgb_t rgb = hsv_to_rgb_nocie((hsv_t){palette[i].hsv888.h, palette[i].hsv888.s, palette[i].hsv888.v});
rgb_t rgb = hsv_to_rgb_nocie(palette[i].hsv888);
uint16_t rgb565 = (((uint16_t)rgb.r) >> 3) << 11 | (((uint16_t)rgb.g) >> 2) << 5 | (((uint16_t)rgb.b) >> 3);
palette[i].rgb565 = __builtin_bswap16(rgb565);
}
@ -99,10 +99,7 @@ bool qp_tft_panel_palette_convert_rgb565_swapped(painter_device_t device, int16_
bool qp_tft_panel_palette_convert_rgb888(painter_device_t device, int16_t palette_size, qp_pixel_t *palette) {
for (int16_t i = 0; i < palette_size; ++i) {
rgb_t rgb = hsv_to_rgb_nocie((hsv_t){palette[i].hsv888.h, palette[i].hsv888.s, palette[i].hsv888.v});
palette[i].rgb888.r = rgb.r;
palette[i].rgb888.g = rgb.g;
palette[i].rgb888.b = rgb.b;
palette[i].rgb888 = hsv_to_rgb_nocie(palette[i].hsv888);
}
return true;
}

View file

@ -1,27 +0,0 @@
{
"development_board": "promicro",
"bootloader": "qmk-dfu",
"matrix_pins": {
"cols": ["F5", "F6", "F7", "F4", "B3", "B1", "B2"],
"rows": ["D3", "D2", "D1", "D4", "D7", "E6", "B4", "C6"]
},
"diode_direction": "COL2ROW",
"rgb_matrix": {
"animations": {
"band_sat": true,
"band_spiral_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"raindrops": true
}
},
"encoder": {
"rotary": [
{"pin_a": "B5", "pin_b": "B6"}
]
},
"ws2812": {
"pin": "D0"
}
}

View file

@ -2,28 +2,58 @@
"manufacturer": "Freya",
"keyboard_name": "splaytoraid",
"maintainer": "freya-irl",
"url": "https://github.com/freya-irl/splaytoraid40",
"usb": {
"device_version": "1.0.0",
"pid": "0xCB00",
"vid": "0x2004"
},
"features": {
"extrakey": true,
"rgb_matrix": true,
"bootmagic": true,
"console": true,
"mousekey": true,
"nkro": true,
"encoder": true
},
"bootloader": "qmk-dfu",
"bootmagic": {
"matrix": [1, 0]
},
"build": {
"lto": true
},
"development_board": "promicro",
"diode_direction": "COL2ROW",
"encoder": {
"rotary": [
{"pin_a": "B5", "pin_b": "B6"}
]
},
"features": {
"bootmagic": true,
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": true,
"rgb_matrix": true
},
"matrix_pins": {
"cols": ["F5", "F6", "F7", "F4", "B3", "B1", "B2"],
"rows": ["D3", "D2", "D1", "D4", "D7", "E6", "B4", "C6"]
},
"rgb_matrix": {
"animations": {
"band_sat": true,
"band_spiral_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_up_down": true,
"digital_rain": true,
"dual_beacon": true,
"hue_breathing": true,
"jellybean_raindrops": true,
"multisplash": true,
"pixel_fractal": true,
"pixel_rain": true,
"rainbow_moving_chevron": true,
"raindrops": true,
"solid_reactive": true,
"solid_reactive_simple": true,
"solid_splash": true,
"splash": true,
"typing_heatmap": true
},
"default": {
"animation": "breathing",
"hue": 152,
@ -32,27 +62,36 @@
},
"driver": "ws2812",
"layout": [
{"flags": 4, "matrix": [0, 2], "x": 0, "y": 0},
{"flags": 4, "matrix": [1, 0], "x": 20, "y": 0},
{"flags": 4, "matrix": [7, 0], "x": 61, "y": 0},
{"flags": 4, "matrix": [7, 1], "x": 163, "y": 0},
{"flags": 4, "matrix": [5, 0], "x": 203, "y": 0},
{"flags": 4, "matrix": [4, 2], "x": 224, "y": 0},
{"flags": 4, "matrix": [6, 2], "x": 0, "y": 21},
{"flags": 4, "matrix": [6, 1], "x": 224, "y": 21},
{"flags": 4, "matrix": [3, 3], "x": 20, "y": 43},
{"flags": 4, "matrix": [7, 3], "x": 61, "y": 43},
{"flags": 4, "matrix": [6, 4], "x": 163, "y": 43},
{"flags": 4, "matrix": [6, 3], "x": 203, "y": 43},
{"flags": 4, "matrix": [4, 3], "x": 61, "y": 64},
{"flags": 4, "matrix": [5, 5], "x": 81, "y": 64},
{"flags": 4, "matrix": [7, 4], "x": 101, "y": 64},
{"flags": 4, "matrix": [7, 5], "x": 122, "y": 64},
{"flags": 4, "matrix": [1, 5], "x": 142, "y": 64},
{"flags": 4, "matrix": [0, 3], "x": 163, "y": 64}
{"matrix": [0, 2], "x": 0, "y": 0, "flags": 4},
{"matrix": [1, 0], "x": 20, "y": 0, "flags": 4},
{"matrix": [7, 0], "x": 61, "y": 0, "flags": 4},
{"matrix": [7, 1], "x": 163, "y": 0, "flags": 4},
{"matrix": [5, 0], "x": 203, "y": 0, "flags": 4},
{"matrix": [4, 2], "x": 224, "y": 0, "flags": 4},
{"matrix": [6, 2], "x": 0, "y": 21, "flags": 4},
{"matrix": [6, 1], "x": 224, "y": 21, "flags": 4},
{"matrix": [3, 3], "x": 20, "y": 43, "flags": 4},
{"matrix": [7, 3], "x": 61, "y": 43, "flags": 4},
{"matrix": [6, 4], "x": 163, "y": 43, "flags": 4},
{"matrix": [6, 3], "x": 203, "y": 43, "flags": 4},
{"matrix": [4, 3], "x": 61, "y": 64, "flags": 4},
{"matrix": [5, 5], "x": 81, "y": 64, "flags": 4},
{"matrix": [7, 4], "x": 101, "y": 64, "flags": 4},
{"matrix": [7, 5], "x": 122, "y": 64, "flags": 4},
{"matrix": [1, 5], "x": 142, "y": 64, "flags": 4},
{"matrix": [0, 3], "x": 163, "y": 64, "flags": 4}
],
"max_brightness": 200
},
"url": "https://github.com/freya-irl/splaytoraid40",
"usb": {
"device_version": "1.0.0",
"pid": "0xCB00",
"vid": "0x2004"
},
"ws2812": {
"pin": "D0"
},
"layouts": {
"LAYOUT_36": {
"layout": [

View file

@ -1,49 +0,0 @@
// Copyright 2023 Conor Burns (@Conor-Burns)
/* SPDX-License-Identifier: GPL-2.0-or-later */
#include QMK_KEYBOARD_H
enum layer_names {
_BASE,
_LOWER,
_RAISE,
_ADJUST
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_BASE] = LAYOUT_40(
KC_TAB, KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P, KC_BSPC,
KC_LCTL, KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN, KC_QUOT,
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH,
KC_LSFT, KC_ESC, KC_ENT, KC_MPLY, KC_SPC, KC_DEL, KC_RSFT
),
[_LOWER] = LAYOUT_40(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
),
[_RAISE] = LAYOUT_40(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
),
[_ADJUST] = LAYOUT_40(
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______,
_______, _______, _______, _______, _______, _______, _______
)
};
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[_BASE] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU) },
[_LOWER] = { ENCODER_CCW_CW(KC_MPRV, KC_MNXT) },
[_RAISE] = { ENCODER_CCW_CW(UG_VALD, UG_VALU) },
[_ADJUST] = { ENCODER_CCW_CW(KC_RGHT, KC_LEFT) }
};

View file

@ -0,0 +1,21 @@
{
"keyboard": "0xcb/splaytoraid",
"keymap": "default",
"config": {
"features": {
"encoder_map": true
}
},
"layout": "LAYOUT_40",
"layers": [
[
"KC_TAB", "KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P", "KC_BSPC",
"KC_LCTL", "KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_SCLN", "KC_QUOT",
"KC_Z", "KC_X", "KC_C", "KC_V", "KC_B", "KC_N", "KC_M", "KC_COMM", "KC_DOT", "KC_SLSH",
"KC_LSFT", "KC_ESC", "KC_ENT", "KC_MPLY", "KC_SPC", "KC_DEL", "KC_RSFT"
]
],
"encoders": [
[{"ccw": "KC_VOLD", "cw": "KC_VOLU"}]
]
}

View file

@ -11,13 +11,10 @@ A 40% ergonomic keyboard with a stacked acrylic case and RGB underglow.
Make example for this keyboard (after setting up your build environment):
make 0xcb/splaytoraid:default
make 0xcb/splaytoraid/32u4:default
Flashing example for this keyboard:
make 0xcb/splaytoraid:default:flash
make 0xcb/splaytoraid/32u4: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).
@ -29,8 +26,4 @@ Enter the bootloader in 3 ways:
* **Physical reset button**: Press the button on the controller (Helios) for more than 500ms or just press it (Pluto)
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Please note that the default bootloader for the `32u4` version is QMK DFU, for compatibility with [0xCB Pluto](https://github.com/0xCB-dev/0xCB-Pluto). Generic Pro Micros often use a different bootloader, such as `caterina`.
If the incorrect bootloader is specified, bootmagic reset and the `QK_BOOT` keycode will not work.
To avoid this problem, set the correct bootloader in your custom keymap's `rules.mk` file before compiling, or flash using an appropriate target (ex: `make 0xcb/splaytoraid/32u4:default:avrdude`). See [flashing instructions and bootloader information](https://docs.qmk.fm/#/flashing) for more details.
When using an AVR microcontroller with this keyboard, the bootloader is configured to be QMK DFU for compatibility with [0xCB Pluto](https://github.com/0xCB-dev/0xCB-Pluto). If your microcontroller does not use this bootloader, ensure to set this parameter appropriately in your keymap's `rules.mk` file.

View file

@ -1,44 +0,0 @@
{
"development_board": "promicro_rp2040",
"matrix_pins": {
"cols": ["GP28", "GP27", "GP26", "GP29", "GP20", "GP22", "GP23"],
"rows": ["GP0", "GP1", "GP2", "GP4", "GP6", "GP7", "GP8", "GP5"]
},
"diode_direction": "COL2ROW",
"rgb_matrix": {
"animations": {
"band_sat": true,
"band_spiral_val": true,
"breathing": true,
"cycle_all": true,
"cycle_left_right": true,
"cycle_out_in": true,
"cycle_out_in_dual": true,
"cycle_pinwheel": true,
"cycle_up_down": true,
"digital_rain": true,
"dual_beacon": true,
"hue_breathing": true,
"jellybean_raindrops": true,
"multisplash": true,
"pixel_fractal": true,
"pixel_rain": true,
"rainbow_moving_chevron": true,
"raindrops": true,
"solid_reactive": true,
"solid_reactive_simple": true,
"solid_splash": true,
"splash": true,
"typing_heatmap": true
}
},
"encoder": {
"rotary": [
{"pin_a": "GP9", "pin_b": "GP21"}
]
},
"ws2812": {
"pin": "GP3",
"driver": "vendor"
}
}

View file

@ -1,3 +0,0 @@
# rp2040_ce
This folder is set as default in the parent rules.mk - it will build firmware compatible with the RP2040 Community Edition. See [here](https://docs.qmk.fm/#/platformdev_rp2040?id=rp2040_ce) for a list.

View file

@ -74,7 +74,25 @@
"solid_splash": true,
"solid_multisplash": true
},
"driver": "ws2812"
"driver": "ws2812",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 75, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 150, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 224, "y": 0, "flags": 4},
{"matrix": [1, 3], "x": 224, "y": 21, "flags": 4},
{"matrix": [1, 2], "x": 150, "y": 21, "flags": 4},
{"matrix": [1, 1], "x": 75, "y": 21, "flags": 4},
{"matrix": [1, 0], "x": 0, "y": 21, "flags": 4},
{"matrix": [2, 0], "x": 0, "y": 43, "flags": 4},
{"matrix": [2, 1], "x": 75, "y": 43, "flags": 4},
{"matrix": [2, 2], "x": 150, "y": 43, "flags": 4},
{"matrix": [2, 3], "x": 224, "y": 43, "flags": 4},
{"matrix": [3, 3], "x": 224, "y": 64, "flags": 4},
{"matrix": [3, 2], "x": 150, "y": 64, "flags": 4},
{"matrix": [3, 1], "x": 75, "y": 64, "flags": 4},
{"matrix": [3, 0], "x": 0, "y": 64, "flags": 4}
]
},
"features": {
"bootmagic": true,

View file

@ -1,39 +0,0 @@
/* Copyright 2019 MechMerlin
*
* 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
led_config_t g_led_config = { {
// Key Matrix to LED Index
{ 0, 1, 2, 3 },
{ 7, 6, 5, 4 },
{ 8, 9, 10, 11 },
{ 15, 14, 13, 12 }
}, {
// LED Index to Physical Position
{ 0, 0 }, { 75, 0 }, { 150, 0 }, { 224, 0 },
{ 224, 21 }, { 150, 21 }, { 75, 21 }, { 0, 21 },
{ 0, 43 }, { 75, 43 }, { 150, 43 }, { 224, 43 },
{ 224, 64 }, { 150, 64 }, { 75, 64 }, { 0, 64 },
}, {
// LED Index to Flag
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4
} };
#endif

View file

@ -46,6 +46,28 @@
"splash": true
},
"driver": "ws2812",
"layout": [
{"matrix": [0, 3], "x": 28, "y": 12, "flags": 4},
{"matrix": [0, 2], "x": 84, "y": 12, "flags": 4},
{"matrix": [0, 1], "x": 140, "y": 12, "flags": 4},
{"matrix": [0, 0], "x": 196, "y": 12, "flags": 4},
{"matrix": [1, 3], "x": 28, "y": 28, "flags": 4},
{"matrix": [1, 2], "x": 84, "y": 28, "flags": 4},
{"matrix": [1, 1], "x": 140, "y": 28, "flags": 4},
{"matrix": [1, 0], "x": 196, "y": 28, "flags": 4},
{"matrix": [2, 3], "x": 28, "y": 44, "flags": 4},
{"matrix": [2, 2], "x": 84, "y": 44, "flags": 4},
{"matrix": [2, 1], "x": 140, "y": 44, "flags": 4},
{"matrix": [2, 0], "x": 196, "y": 44, "flags": 4},
{"matrix": [3, 3], "x": 28, "y": 60, "flags": 4},
{"matrix": [3, 2], "x": 84, "y": 60, "flags": 4},
{"matrix": [3, 1], "x": 140, "y": 60, "flags": 4},
{"matrix": [3, 0], "x": 196, "y": 60, "flags": 4},
{"x": 168, "y": 48, "flags": 2},
{"x": 168, "y": 16, "flags": 2},
{"x": 58, "y": 16, "flags": 2},
{"x": 56, "y": 48, "flags": 2}
],
"sleep": true
},
"features": {

View file

@ -1,41 +0,0 @@
/* Copyright 2022 MechMerlin
*
* 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
led_config_t g_led_config = { {
// Key Matrix to LED Index
{ 3, 2, 1, 0 },
{ 7, 6, 5, 4 },
{ 11, 10, 9, 8 },
{ 15, 14, 13, 12 }
}, {
// LED Index to Physical Position
{ 28, 12 }, { 84, 12 }, { 140, 12 }, { 196, 12 },
{ 28, 28 }, { 84, 28 }, { 140, 28 }, { 196, 28 },
{ 28, 44 }, { 84, 44 }, { 140, 44 }, { 196, 44 },
{ 28, 60 }, { 84, 60 }, { 140, 60 }, { 196, 60 },
{ 168, 48 }, { 168, 16 }, { 58, 16 }, { 56, 48 }
}, {
// LED Index to Flag
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
4, 4, 4, 4,
2, 2, 2, 2,
} };
#endif

View file

@ -3,8 +3,7 @@
"keyboard_name": "sweet16v2",
"url": "1upkeyboards.com/shop/keyboard-kits/macro-pads/sweet-16-v2-macropad-kit/",
"maintainer": "ziptyze",
"bootloader": "atmel-dfu",
"processor": "atmega32u4",
"development_board": "elite_c",
"usb": {
"device_version": "1.0.0",
"pid": "0x5518",
@ -15,7 +14,6 @@
"encoder": true,
"extrakey": true,
"mousekey": true,
"nkro": false,
"rgb_matrix": true
},
"qmk": {
@ -36,7 +34,6 @@
"layer_count": 10
},
"encoder": {
"enabled": true,
"rotary": [
{"pin_a": "F6", "pin_b": "F5"},
{"pin_a": "D4", "pin_b": "D0"}

View file

@ -1,41 +0,0 @@
/* Copyright 2022 ziptyze
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include QMK_KEYBOARD_H
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_4x4(
KC_P7, KC_P8, KC_P9, KC_PMNS,
KC_P4, KC_P5, KC_P6, KC_PPLS,
KC_P1, KC_P2, KC_P3, KC_PSLS,
MO(1), KC_P0, KC_PDOT, KC_PENT
),
[1] = LAYOUT_ortho_4x4(
RM_TOGG, RM_HUEU, RM_SATU, RM_VALU,
RM_NEXT, RM_HUED, RM_SATD, RM_VALD,
RM_SPDD, RM_SPDU, KC_TRNS, KC_TRNS,
KC_TRNS, KC_TRNS, KC_TRNS, QK_BOOT
)
};
#if defined(ENCODER_MAP_ENABLE)
const uint16_t PROGMEM encoder_map[][NUM_ENCODERS][NUM_DIRECTIONS] = {
[0] = { ENCODER_CCW_CW(KC_VOLD, KC_VOLU), ENCODER_CCW_CW(RM_VALD, RM_VALU) },
[1] = { ENCODER_CCW_CW(KC_TRNS, KC_TRNS), ENCODER_CCW_CW(KC_TRNS, KC_TRNS) }
};
#endif

View file

@ -0,0 +1,28 @@
{
"keyboard": "1upkeyboards/sweet16v2",
"keymap": "default",
"coonfig": {
"features": {
"encoder_map": true
}
},
"layout": "LAYOUT_ortho_4x4",
"layers": [
[
"KC_P7", "KC_P8", "KC_P8", "KC_PMNS",
"KC_P4", "KC_P5", "KC_P6", "KC_PPLS",
"KC_P1", "KC_P2", "KC_P3", "KC_PSLS",
"MO(1)", "KC_P0", "KC_PDOT", "KC_PENT"
],
[
"RM_TOGG", "RM_HUEU", "RM_SATU", "RM_VALU",
"RM_NEXT", "RM_HUED", "RM_SATD", "RM_VALD",
"RM_SPDD", "RM_SPDU", "_______", "_______",
"_______", "_______", "_______", "QK_BOOT"
]
],
"encoders": [
[{"ccw": "KC_VOLD", "cw": "KC_VOLU"}, {"ccw": "RM_VALD", "cw": "RM_VALU"}],
[{"ccw": "_______", "cw": "_______"}, {"ccw": "_______", "cw": "_______"}]
]
}

View file

@ -1,26 +1,18 @@
# sweet16v2
A 4x4 macropad with RGB inswitch lighting and underglow.
A 4x4 macropad with per-key RGB lighting and underglow.
* Keyboard Maintainer: [ziptyze](https://github.com/ziptyze)
* Hardware Supported: 1upkeyboards Sweet 16 v2
* Hardware Availability: [1upkeyboards](https://1upkeyboards.com/)
Make example for this keyboard using an atmel-based controller (after setting up your build environment):
Make example for this keyboard (after setting up your build environment):
make 1upkeyboards/sweet16v2/promicro:default
make 1upkeyboards/sweet16v2:default
Flashing example for this keyboard using an atmel-based controller:
Flashing example for this keyboard:
make 1upkeyboards/sweet16v2/promicro:default:flash
Make example for this keyboard using an rp2040-based controller (after setting up your build environment):
make 1upkeyboards/sweet16v2/kb2040:default
Flashing example for this keyboard using an rp2040-based controller:
make 1upkeyboards/sweet16v2/kb2040:default:flash
make 1upkeyboards/sweet16v2: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).
@ -30,10 +22,10 @@ Enter the bootloader in 3 ways for atmel-based controllers:
* **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 `RESET` if it is available
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available
Enter the bootloader in 2 ways for rp2040-based controllers:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix (usually the top left key or Escape) and plug in the keyboard
* **Bootsel button**: Hold the bootsel button on controller and plug in the keyboard
* **Bootsel button**: Hold the bootsel button on controller and plug in the keyboard

View file

@ -1,62 +0,0 @@
{
"keyboard_name": "Gherkin",
"manufacturer": "40 Percent Club",
"maintainer": "qmk",
"usb": {
"vid": "0x4025",
"pid": "0x6060",
"device_version": "0.0.1"
},
"features": {
"bootmagic": true,
"mousekey": true,
"extrakey": true,
"nkro": true,
"backlight": true
},
"qmk": {
"locking": {
"enabled": true,
"resync": true
}
},
"community_layouts": ["ortho_3x10"],
"layouts": {
"LAYOUT_ortho_3x10": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [1, 0], "x": 6, "y": 0},
{"matrix": [1, 1], "x": 7, "y": 0},
{"matrix": [1, 2], "x": 8, "y": 0},
{"matrix": [1, 3], "x": 9, "y": 0},
{"matrix": [1, 4], "x": 0, "y": 1},
{"matrix": [1, 5], "x": 1, "y": 1},
{"matrix": [2, 0], "x": 2, "y": 1},
{"matrix": [2, 1], "x": 3, "y": 1},
{"matrix": [2, 2], "x": 4, "y": 1},
{"matrix": [2, 3], "x": 5, "y": 1},
{"matrix": [2, 4], "x": 6, "y": 1},
{"matrix": [2, 5], "x": 7, "y": 1},
{"matrix": [3, 0], "x": 8, "y": 1},
{"matrix": [3, 1], "x": 9, "y": 1},
{"matrix": [3, 2], "x": 0, "y": 2},
{"matrix": [3, 3], "x": 1, "y": 2},
{"matrix": [3, 4], "x": 2, "y": 2},
{"matrix": [3, 5], "x": 3, "y": 2},
{"matrix": [4, 0], "x": 4, "y": 2},
{"matrix": [4, 1], "x": 5, "y": 2},
{"matrix": [4, 2], "x": 6, "y": 2},
{"matrix": [4, 3], "x": 7, "y": 2},
{"matrix": [4, 4], "x": 8, "y": 2},
{"matrix": [4, 5], "x": 9, "y": 2}
]
}
}
}

View file

@ -1,12 +0,0 @@
{
"development_board": "kb2040",
"matrix_pins": {
"cols": ["GP8", "GP7", "GP6", "GP5", "GP4", "GP3"],
"rows": ["GP26", "GP18", "GP20", "GP19", "GP10"]
},
"diode_direction": "COL2ROW",
"backlight": {
"pin": "GP9",
"driver": "software"
}
}

View file

@ -1,22 +0,0 @@
# Gherkin
![Gherkin](https://i.imgur.com/XrqqtTq.jpg)
![KB2040](https://cdn-shop.adafruit.com/640x480/5302-12.jpg)
===
A 30 key keyboard with Adafruit's KB2040 as microcontroller.
* [The original TMK firmware](https://github.com/di0ib/tmk_keyboard/tree/master/keyboard/gherkin)
Keyboard Maintainer: QMK Community
Hardware Supported: Gherkin PCB & Adafruit KB2040
Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.club/2016/11/gherkin.html) and [Adafruit KB2040](https://www.adafruit.com/product/5302)
Make example for this keyboard (after setting up your build environment):
make 40percentclub/gherkin/kb2040:default
See the [build environment setup](https://docs.qmk.fm/#/getting_started_build_tools) and the [make instructions](https://docs.qmk.fm/#/getting_started_make_guide) for more information. Brand new to QMK? Start with our [Complete Newbs Guide](https://docs.qmk.fm/#/newbs).
Use the KB2040 microcontroller as a drop-in replacement for the Pro Micro in this cute 30% keyboard.

View file

@ -0,0 +1,74 @@
{
"manufacturer": "40 Percent Club",
"keyboard_name": "Gherkin",
"maintainer": "qmk",
"backlight": {
"pin": "B5"
},
"development_board": "promicro",
"diode_direction": "COL2ROW",
"features": {
"backlight": true,
"bootmagic": true,
"extrakey": true,
"mousekey": true,
"nkro": true
},
"indicators": {
"caps_lock": "B0",
"num_lock": "D5",
"on_state": 0
},
"matrix_pins": {
"cols": ["B4", "E6", "D7", "C6", "D4", "D0"],
"rows": ["F7", "B1", "B3", "B2", "B6"]
},
"qmk": {
"locking": {
"enabled": true,
"resync": true
}
},
"usb": {
"device_version": "0.0.1",
"pid": "0x6060",
"vid": "0x4025"
},
"community_layouts": ["ortho_3x10"],
"layouts": {
"LAYOUT_ortho_3x10": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0},
{"matrix": [0, 1], "x": 1, "y": 0},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0},
{"matrix": [0, 4], "x": 4, "y": 0},
{"matrix": [0, 5], "x": 5, "y": 0},
{"matrix": [1, 0], "x": 6, "y": 0},
{"matrix": [1, 1], "x": 7, "y": 0},
{"matrix": [1, 2], "x": 8, "y": 0},
{"matrix": [1, 3], "x": 9, "y": 0},
{"matrix": [1, 4], "x": 0, "y": 1},
{"matrix": [1, 5], "x": 1, "y": 1},
{"matrix": [2, 0], "x": 2, "y": 1},
{"matrix": [2, 1], "x": 3, "y": 1},
{"matrix": [2, 2], "x": 4, "y": 1},
{"matrix": [2, 3], "x": 5, "y": 1},
{"matrix": [2, 4], "x": 6, "y": 1},
{"matrix": [2, 5], "x": 7, "y": 1},
{"matrix": [3, 0], "x": 8, "y": 1},
{"matrix": [3, 1], "x": 9, "y": 1},
{"matrix": [3, 2], "x": 0, "y": 2},
{"matrix": [3, 3], "x": 1, "y": 2},
{"matrix": [3, 4], "x": 2, "y": 2},
{"matrix": [3, 5], "x": 3, "y": 2},
{"matrix": [4, 0], "x": 4, "y": 2},
{"matrix": [4, 1], "x": 5, "y": 2},
{"matrix": [4, 2], "x": 6, "y": 2},
{"matrix": [4, 3], "x": 7, "y": 2},
{"matrix": [4, 4], "x": 8, "y": 2},
{"matrix": [4, 5], "x": 9, "y": 2}
]
}
}
}

View file

@ -1,52 +0,0 @@
#include QMK_KEYBOARD_H
#define FN1_SPC LT(1, KC_SPC)
#define FN2_BSPC LT(2, KC_BSPC)
#define FN3_C LT(3, KC_C)
#define FN4_V LT(4, KC_V)
#define FN5_B LT(5, KC_B)
#define CTL_Z CTL_T(KC_Z)
#define ALT_X ALT_T(KC_X)
#define ALT_N ALGR_T(KC_N)
#define CTL_M RCTL_T(KC_M)
#define SFT_ENT RSFT_T(KC_ENT)
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[0] = LAYOUT_ortho_3x10(
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P,
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_ESC,
CTL_Z, ALT_X, FN3_C, FN4_V, FN2_BSPC,FN1_SPC, FN5_B, ALT_N, CTL_M, SFT_ENT
),
[1] = LAYOUT_ortho_3x10(
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, KC_F7, KC_F8, KC_F9, KC_F10,
_______, _______, _______, _______, KC_DEL, _______, _______, _______, _______, _______
),
[2] = LAYOUT_ortho_3x10(
KC_EXLM, KC_AT, KC_HASH, KC_DLR, KC_PERC, KC_CIRC, KC_AMPR, KC_ASTR, KC_LPRN, KC_RPRN,
KC_F11, KC_F12, _______, _______, _______, _______, _______, _______, _______, KC_GRV,
_______, _______, _______, _______, _______, _______, _______, _______, _______, _______
),
[3] = LAYOUT_ortho_3x10(
_______, _______, _______, _______, _______, KC_MINS, KC_EQL, KC_LBRC, KC_RBRC, KC_BSLS,
KC_TAB, _______, _______, _______, _______, KC_COMM, KC_DOT, KC_SLSH, KC_SCLN, KC_QUOT,
_______, _______, _______, _______, _______, _______, KC_LEFT, KC_DOWN, KC_UP, KC_RGHT
),
[4] = LAYOUT_ortho_3x10(
_______, _______, _______, _______, _______, KC_UNDS, KC_PLUS, KC_LCBR, KC_RCBR, KC_PIPE,
KC_TAB, _______, _______, _______, _______, KC_LABK, KC_RABK, KC_QUES, KC_COLN, KC_DQUO,
_______, _______, _______, _______, _______, _______, KC_HOME, KC_PGDN, KC_PGUP, KC_END
),
[5] = LAYOUT_ortho_3x10(
KC_CALC, KC_WHOM, KC_MAIL, KC_MYCM, _______, _______, _______, _______, _______, KC_PSCR,
_______, _______, _______, _______, _______, _______, _______, _______, BL_DOWN, BL_UP,
_______, _______, _______, _______, QK_BOOT, _______, _______, _______, _______, _______
)
};

View file

@ -0,0 +1,37 @@
{
"keyboard": "40percentclub/gherkin",
"keymap": "default",
"layout": "LAYOUT_ortho_3x10",
"layers": [
[
"KC_Q", "KC_W", "KC_E", "KC_R", "KC_T", "KC_Y", "KC_U", "KC_I", "KC_O", "KC_P",
"KC_A", "KC_S", "KC_D", "KC_F", "KC_G", "KC_H", "KC_J", "KC_K", "KC_L", "KC_ESC",
"CTL_T(KC_Z)", "ALT_T(KC_X)", "LT(3, KC_C)", "LT(4, KC_V)", "LT(2, KC_BSPC)", "LT(1, KC_SPC)", "LT(5, KC_B)", "ALGR_T(KC_N)", "RCTL_T(KC_M)", "RSFT_T(KC_ENT)"
],
[
"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", "KC_F7", "KC_F8", "KC_F9", "KC_F10",
"_______", "_______", "_______", "_______", "KC_DEL", "_______", "_______", "_______", "_______", "_______"
],
[
"KC_EXLM", "KC_AT", "KC_HASH", "KC_DLR", "KC_PERC", "KC_CIRC", "KC_AMPR", "KC_ASTR", "KC_LPRN", "KC_RPRN",
"KC_F11", "KC_F12", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "KC_GRV",
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______"
],
[
"_______", "_______", "_______", "_______", "_______", "KC_MINS", "KC_EQL", "KC_LBRC", "KC_RBRC", "KC_BSLS",
"KC_TAB", "_______", "_______", "_______", "_______", "KC_COMM", "KC_DOT", "KC_SLSH", "KC_SCLN", "KC_QUOT",
"_______", "_______", "_______", "_______", "_______", "_______", "KC_LEFT", "KC_DOWN", "KC_UP", "KC_RGHT"
],
[
"_______", "_______", "_______", "_______", "_______", "KC_UNDS", "KC_PLUS", "KC_LCBR", "KC_RCBR", "KC_PIPE",
"KC_TAB", "_______", "_______", "_______", "_______", "KC_LABK", "KC_RABK", "KC_QUES", "KC_COLN", "KC_DQUO",
"_______", "_______", "_______", "_______", "_______", "_______", "KC_HOME", "KC_PGDN", "KC_PGUP", "KC_END"
],
[
"KC_CALC", "KC_WHOM", "KC_MAIL", "KC_MYCM", "_______", "_______", "_______", "_______", "_______", "KC_PSCR",
"_______", "_______", "_______", "_______", "_______", "_______", "_______", "_______", "BL_DOWN", "BL_UP",
"_______", "_______", "_______", "_______", "QK_BOOT", "_______", "_______", "_______", "_______", "_______"
]
]
}

View file

@ -1,16 +0,0 @@
{
"development_board": "promicro",
"matrix_pins": {
"cols": ["B4", "E6", "D7", "C6", "D4", "D0"],
"rows": ["F7", "B1", "B3", "B2", "B6"]
},
"diode_direction": "COL2ROW",
"indicators": {
"num_lock": "D5",
"caps_lock": "B0",
"on_state": 0
},
"backlight": {
"pin": "B5"
}
}

View file

@ -1,21 +1,27 @@
# Gherkin
![Gherkin](https://i.imgur.com/XrqqtTq.jpg)
===
A 30 key keyboard.
* [The original TMK firmware](https://github.com/di0ib/tmk_keyboard/tree/master/keyboard/gherkin)
Keyboard Maintainer: QMK Community
Hardware Supported: Gherkin PCB
Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.club/2016/11/gherkin.html)
* Keyboard Maintainer: QMK Community
* Hardware Supported: Gherkin PCB w/ Pro Micro compatible development board
* Hardware Availability: [Gherkin project on 40% Keyboards](http://www.40percent.club/2016/11/gherkin.html)
Make example for this keyboard (after setting up your build environment):
make 40percentclub/gherkin:default
Flashing example for this keyboard:
make 40percentclub/gherkin: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).
First pass at adding support for the gherkin keyboard. Compiles but completely
untested. Intended to kick-start development.
## Bootloader
Enter the bootloader in 3 ways:
* **Bootmagic reset**: Hold down the key at (0,0) in the matrix and plug in the keyboard
* **Physical reset**: Short the Ground and Reset pins on the microcontroller
* **Keycode in layout**: Press the key mapped to `QK_BOOT` if it is available

View file

@ -1,32 +0,0 @@
/*
Copyright 2018 Carlos Filoteo
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
/* key matrix size */
#define MATRIX_ROWS 4
#define MATRIX_COLS 12
#define MATRIX_ROW_PINS { D1, D0, D4, C6 }
#define MATRIX_COL_PINS { D7, E6, B4, B5, B6, B2, B3, B1, F7, F6, F5, F4 }
/* COL2ROW, ROW2COL*/
#define DIODE_DIRECTION COL2ROW
/* Enable GNAP matrix serial output */
#define GNAP_ENABLE

View file

@ -22,6 +22,15 @@
"resync": true
}
},
"diode_direction": "COL2ROW",
"matrix_pins": {
"cols": ["D7", "E6", "B4", "B5", "B6", "B2", "B3", "B1", "F7", "F6", "F5", "F4"],
"rows": ["D1", "D0", "D4", "C6"]
},
"keycodes": [
{"key": "LED_TOG"},
{"key": "LED_CHG"}
],
"layouts": {
"LAYOUT": {
"layout": [

View file

@ -1,31 +1,10 @@
/* Copyright 2018 Carlos Filoteo
*
* 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/>.
*/
// Copyright 2018 Carlos Filoteo
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#ifdef LED_ENABLE
#include "uart.h"
#endif
#define LT3_TAB LT(3, KC_TAB)
#define MT_RSFT_ENT MT(MOD_RSFT, KC_ENT)
enum custom_keycodes {
LED_TOG = SAFE_RANGE,
LED_CHG
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
/* Base Layer
@ -104,32 +83,3 @@ LAYOUT( /* Tab */
_______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT
),
};
//LED keymap functions
#ifdef LED_ENABLE
void led_chmode(void) {
uart_write(0x65);
}
void led_toggle(void) {
uart_write(0x64);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch(keycode) {
case LED_TOG:
#ifdef LED_ENABLE
led_toggle();
#endif
return false;
case LED_CHG:
#ifdef LED_ENABLE
led_chmode();
#endif
return false;
}
}
return true;
};
#endif

View file

@ -1,23 +1,7 @@
/* Copyright 2018 Carlos Filoteo
*
* 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/>.
*/
// Copyright 2018 Carlos Filoteo
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
// place overrides here
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
#define RGBLIGHT_EFFECT_RAINBOW_SWIRL

View file

@ -1,31 +1,10 @@
/* Copyright 2018 Carlos Filoteo
*
* 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/>.
*/
// Copyright 2018 Carlos Filoteo
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#ifdef LED_ENABLE
#include "uart.h"
#endif
#define LT3_TAB LT(3, KC_TAB)
#define MT_RSFT_ENT MT(MOD_RSFT, KC_ENT)
enum custom_keycodes {
LED_TOG = SAFE_RANGE,
LED_CHG
};
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
LAYOUT(
@ -56,32 +35,3 @@ LAYOUT( /* Tab */
_______, _______, _______, _______, _______, _______, _______, MS_LEFT, MS_DOWN, MS_UP, MS_RGHT
),
};
//LED keymap functions
#ifdef LED_ENABLE
void led_chmode(void) {
uart_write(0x65);
}
void led_toggle(void) {
uart_write(0x64);
}
bool process_record_user(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
switch(keycode) {
case LED_TOG:
#ifdef LED_ENABLE
led_toggle();
#endif
return false;
case LED_CHG:
#ifdef LED_ENABLE
led_chmode();
#endif
return false;
}
}
return true;
};
#endif

View file

@ -1,39 +0,0 @@
/*
Copyright 2012 Jun Wako <wakojun@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include <avr/io.h>
#include <stdint.h>
#include "led.h"
bool led_update_kb(led_t led_state)
{
bool res = led_update_user(led_state);
if (res) {
if (led_state.caps_lock) {
// output low
gpio_set_pin_output(B0);
gpio_write_pin_low(B0);
gpio_set_pin_output(D5);
gpio_write_pin_low(D5);
} else {
// Hi-Z
gpio_set_pin_input(B0);
gpio_set_pin_input(D5);
}
}
return false;
}

View file

@ -0,0 +1,44 @@
// Copyright 2018 Carlos Filoteo
// SPDX-License-Identifier: GPL-2.0-or-later
#include QMK_KEYBOARD_H
#include "uart.h"
bool led_update_kb(led_t led_state) {
bool res = led_update_user(led_state);
if (res) {
if (led_state.caps_lock) {
// output low
gpio_set_pin_output(B0);
gpio_write_pin_low(B0);
gpio_set_pin_output(D5);
gpio_write_pin_low(D5);
} else {
// Hi-Z
gpio_set_pin_input(B0);
gpio_set_pin_input(D5);
}
}
return false;
}
void keyboard_post_init_kb(void) {
uart_init(9600);
keyboard_post_init_user();
}
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
if (record->event.pressed) {
uart_write((record->event.key.row * 16) + record->event.key.col);
switch (keycode) {
case LED_TOG:
uart_write(0x64);
return false;
case LED_CHG:
uart_write(0x65);
return false;
}
}
return process_record_user(keycode, record);
}

View file

@ -1,194 +0,0 @@
/*
Copyright 2018 Carlos Filoteo
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/>.
*/
/*
* scan matrix
*/
#include <stdint.h>
#include <stdbool.h>
#include <avr/io.h>
#include <util/delay.h>
#include "print.h"
#include "debug.h"
#include "util.h"
#include "matrix.h"
#ifndef DEBOUNCE
# define DEBOUNCE 5
#endif
static uint8_t debouncing = DEBOUNCE;
/* matrix state(1:on, 0:off) */
static matrix_row_t matrix[MATRIX_ROWS];
static matrix_row_t matrix_debouncing[MATRIX_ROWS];
static matrix_row_t read_cols(void);
static void init_cols(void);
static void unselect_rows(void);
static void select_row(uint8_t row);
inline
uint8_t matrix_rows(void)
{
return MATRIX_ROWS;
}
inline
uint8_t matrix_cols(void)
{
return MATRIX_COLS;
}
void matrix_init(void)
{
// initialize row and col
unselect_rows();
init_cols();
// initialize matrix state: all keys off
for (uint8_t i=0; i < MATRIX_ROWS; i++) {
matrix[i] = 0;
matrix_debouncing[i] = 0;
}
}
uint8_t matrix_scan(void)
{
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
select_row(i);
_delay_us(30); // without this wait read unstable value.
matrix_row_t cols = read_cols();
if (matrix_debouncing[i] != cols) {
matrix_debouncing[i] = cols;
if (debouncing) {
dprintf("bounce!: %02X\n", debouncing);
}
debouncing = DEBOUNCE;
}
unselect_rows();
}
if (debouncing) {
if (--debouncing) {
_delay_ms(1);
} else {
for (uint8_t i = 0; i < MATRIX_ROWS; i++) {
matrix[i] = matrix_debouncing[i];
}
}
}
return 1;
}
inline
bool matrix_is_on(uint8_t row, uint8_t col)
{
return (matrix[row] & ((matrix_row_t)1<<col));
}
inline
matrix_row_t matrix_get_row(uint8_t row)
{
return matrix[row];
}
void matrix_print(void)
{
print("\nr/c 0123456789ABCDEF\n");
for (uint8_t row = 0; row < MATRIX_ROWS; row++) {
print_hex8(row); print(": ");
print_bin_reverse16(matrix_get_row(row));
print("\n");
}
}
/* Column pin configuration
* col: 0 1 2 3 4 5 6 7 8 9 10 11
* pin: D7 E6 B4 B5 B6 B2 B3 B1 F7 F6 F5 F4
*/
static void init_cols(void)
{
// Input with pull-up(DDR:0, PORT:1)
gpio_set_pin_input_high(F4);
gpio_set_pin_input_high(F5);
gpio_set_pin_input_high(F6);
gpio_set_pin_input_high(F7);
gpio_set_pin_input_high(E6);
gpio_set_pin_input_high(D7);
gpio_set_pin_input_high(B1);
gpio_set_pin_input_high(B2);
gpio_set_pin_input_high(B3);
gpio_set_pin_input_high(B4);
gpio_set_pin_input_high(B5);
gpio_set_pin_input_high(B6);
}
static matrix_row_t read_cols(void)
{
return (PIND&(1<<7) ? 0 : (1<<0)) |
(PINE&(1<<6) ? 0 : (1<<1)) |
(PINB&(1<<4) ? 0 : (1<<2)) |
(PINB&(1<<5) ? 0 : (1<<3)) |
(PINB&(1<<6) ? 0 : (1<<4)) |
(PINB&(1<<2) ? 0 : (1<<5)) |
(PINB&(1<<3) ? 0 : (1<<6)) |
(PINB&(1<<1) ? 0 : (1<<7)) |
(PINF&(1<<7) ? 0 : (1<<8)) |
(PINF&(1<<6) ? 0 : (1<<9)) |
(PINF&(1<<5) ? 0 : (1<<10)) |
(PINF&(1<<4) ? 0 : (1<<11));
}
/* Row pin configuration
* row: 0 1 2 3
* pin: D1 D0 D4 C6
*/
static void unselect_rows(void)
{
// Hi-Z(DDR:0, PORT:0) to unselect
gpio_set_pin_input(C6);
gpio_set_pin_input(D0);
gpio_set_pin_input(D1);
gpio_set_pin_input(D4);
}
static void select_row(uint8_t row)
{
// Output low(DDR:1, PORT:0) to select
switch (row) {
case 0:
gpio_set_pin_output(D1);
gpio_write_pin_low(D1);
break;
case 1:
gpio_set_pin_output(D0);
gpio_write_pin_low(D0);
break;
case 2:
gpio_set_pin_output(D4);
gpio_write_pin_low(D4);
break;
case 3:
gpio_set_pin_output(C6);
gpio_write_pin_low(C6);
break;
}
}

View file

@ -1,4 +1,5 @@
ifeq ($(strip $(LED_ENABLE)), yes)
OPT_DEFS += -DLED_ENABLE
SRC += led.c
OPT_DEFS += -DLED_ENABLE
SRC += led_controls.c
UART_DRIVER_REQUIRED = yes
endif

View file

@ -1,13 +1,12 @@
# ut47
![ut47](https://i.imgur.com/ZDKZQaj.jpg)
===
Somewhere between ortholinear and standard offset. Created to have all the same functions on a Planck in a keyboard but with a more conventional keyboard row stagger.
Keyboard Maintainer: [filoxo](https://github.com/filoxo), [network_operations]
Hardware Supported: [PCB design](http://www.40percent.club/2016/10/gnap-20-plateless.html), Arduino Pro Micro
Hardware Availability: [How to order](http://www.40percent.club/2017/03/ordering-pcb.html)
* Keyboard Maintainer: [filoxo](https://github.com/filoxo), [network_operations]
* Hardware Supported: [PCB design](http://www.40percent.club/2016/10/gnap-20-plateless.html), Arduino Pro Micro
* Hardware Availability: [How to order](http://www.40percent.club/2017/03/ordering-pcb.html)
### Instructions
@ -21,7 +20,7 @@ To enable the UT47 LEDs (dual controller), run this for the main controller:
Or you can add `LED_ENABLE = yes` to *rules.mk*
And then flash [LED_controls.ino](LED_controls.ino) to the second controller using [Arduino IDE](https://www.arduino.cc/en/Main/Software) or similar. NOTE: Arduino IDE will require importing additional libraries to compile.
And then flash [led_controls.ino](led_controls.ino) to the second controller using [Arduino IDE](https://www.arduino.cc/en/Main/Software) or similar. NOTE: Arduino IDE will require importing additional libraries to compile.
<small>The reason this is an "opt-in" feature is to prevent sending serial communication over the pin, in case it ends up being used for something else (like RGB underglow).</small>

View file

@ -1,3 +0,0 @@
CUSTOM_MATRIX = yes
SRC += matrix.c
UART_DRIVER_REQUIRED = yes

View file

@ -1,36 +0,0 @@
/* Copyright 2018 Carlos Filoteo
*
* 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 LED_ENABLE
#include "uart.h"
void matrix_init_kb(void) {
uart_init(9600);
matrix_init_user();
}
#endif
bool process_record_kb(uint16_t keycode, keyrecord_t *record) {
// put your per-action keyboard code here
// runs for every action, just before processing by the firmware
if (record->event.pressed) {
#ifdef LED_ENABLE
uart_write((record->event.key.row*16)+record->event.key.col);
#endif
}
return process_record_user(keycode, record);
}

View file

@ -37,7 +37,71 @@
"default": {
"val": 80
},
"driver": "is31fl3733"
"driver": "is31fl3733",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
{"matrix": [1, 0], "x": 16, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 32, "y": 0, "flags": 4},
{"matrix": [1, 1], "x": 48, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 65, "y": 0, "flags": 4},
{"matrix": [1, 2], "x": 81, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 97, "y": 0, "flags": 4},
{"matrix": [1, 3], "x": 113, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 129, "y": 0, "flags": 4},
{"matrix": [1, 4], "x": 145, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 161, "y": 0, "flags": 4},
{"matrix": [1, 5], "x": 178, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 194, "y": 0, "flags": 4},
{"matrix": [3, 6], "x": 218, "y": 0, "flags": 1},
{"matrix": [2, 0], "x": 4, "y": 16, "flags": 1},
{"matrix": [3, 0], "x": 24, "y": 16, "flags": 4},
{"matrix": [2, 1], "x": 40, "y": 16, "flags": 4},
{"matrix": [3, 1], "x": 57, "y": 16, "flags": 4},
{"matrix": [2, 2], "x": 73, "y": 16, "flags": 4},
{"matrix": [3, 2], "x": 89, "y": 16, "flags": 4},
{"matrix": [2, 3], "x": 105, "y": 16, "flags": 4},
{"matrix": [3, 3], "x": 121, "y": 16, "flags": 4},
{"matrix": [2, 4], "x": 137, "y": 16, "flags": 4},
{"matrix": [3, 4], "x": 153, "y": 16, "flags": 4},
{"matrix": [2, 5], "x": 170, "y": 16, "flags": 4},
{"matrix": [3, 5], "x": 186, "y": 16, "flags": 4},
{"matrix": [2, 6], "x": 202, "y": 16, "flags": 4},
{"matrix": [7, 6], "x": 224, "y": 24, "flags": 1},
{"matrix": [4, 0], "x": 6, "y": 32, "flags": 8},
{"matrix": [5, 0], "x": 28, "y": 32, "flags": 4},
{"matrix": [4, 1], "x": 44, "y": 32, "flags": 4},
{"matrix": [5, 1], "x": 61, "y": 32, "flags": 4},
{"matrix": [4, 2], "x": 77, "y": 32, "flags": 4},
{"matrix": [5, 2], "x": 93, "y": 32, "flags": 4},
{"matrix": [4, 3], "x": 109, "y": 32, "flags": 4},
{"matrix": [5, 3], "x": 125, "y": 32, "flags": 4},
{"matrix": [4, 4], "x": 141, "y": 32, "flags": 4},
{"matrix": [5, 4], "x": 157, "y": 32, "flags": 4},
{"matrix": [4, 5], "x": 174, "y": 32, "flags": 4},
{"matrix": [5, 5], "x": 190, "y": 32, "flags": 4},
{"matrix": [4, 6], "x": 206, "y": 32, "flags": 1},
{"matrix": [6, 0], "x": 2, "y": 48, "flags": 1},
{"matrix": [7, 0], "x": 20, "y": 48, "flags": 4},
{"matrix": [6, 1], "x": 36, "y": 48, "flags": 4},
{"matrix": [7, 1], "x": 52, "y": 48, "flags": 4},
{"matrix": [6, 2], "x": 69, "y": 48, "flags": 4},
{"matrix": [7, 2], "x": 85, "y": 48, "flags": 4},
{"matrix": [6, 3], "x": 101, "y": 48, "flags": 4},
{"matrix": [7, 3], "x": 117, "y": 48, "flags": 4},
{"matrix": [6, 4], "x": 133, "y": 48, "flags": 4},
{"matrix": [7, 4], "x": 149, "y": 48, "flags": 4},
{"matrix": [6, 5], "x": 165, "y": 48, "flags": 4},
{"matrix": [7, 5], "x": 182, "y": 48, "flags": 4},
{"matrix": [8, 6], "x": 212, "y": 48, "flags": 1},
{"matrix": [8, 0], "x": 2, "y": 64, "flags": 1},
{"matrix": [8, 1], "x": 22, "y": 64, "flags": 1},
{"matrix": [9, 0], "x": 42, "y": 64, "flags": 1},
{"matrix": [8, 3], "x": 103, "y": 64, "flags": 4},
{"matrix": [9, 3], "x": 163, "y": 64, "flags": 1},
{"matrix": [9, 4], "x": 184, "y": 64, "flags": 1},
{"matrix": [8, 5], "x": 204, "y": 64, "flags": 1},
{"matrix": [9, 5], "x": 224, "y": 64, "flags": 1}
]
},
"features": {
"bootmagic": true,

View file

@ -31,99 +31,68 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#ifdef RGB_MATRIX_ENABLE
const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, SW11_CS2, SW10_CS2, SW12_CS2 }, //D402
{ 0, SW11_CS3, SW10_CS3, SW12_CS3 }, //D403
{ 0, SW11_CS4, SW10_CS4, SW12_CS4 }, //D404
{ 0, SW11_CS5, SW10_CS5, SW12_CS5 }, //D405
{ 0, SW11_CS6, SW10_CS6, SW12_CS6 }, //D406
{ 0, SW11_CS7, SW10_CS7, SW12_CS7 }, //D407
{ 0, SW11_CS8, SW10_CS8, SW12_CS8 }, //D408
{ 0, SW11_CS9, SW10_CS9, SW12_CS9 }, //D409
{ 0, SW11_CS10, SW10_CS10, SW12_CS10 }, //D410
{ 0, SW11_CS11, SW10_CS11, SW12_CS11 }, //D411
{ 0, SW11_CS12, SW10_CS12, SW12_CS12 }, //D412
{ 0, SW11_CS13, SW10_CS13, SW12_CS13 }, //D413
{ 0, SW11_CS14, SW10_CS14, SW12_CS14 }, //D414
{ 0, SW11_CS15, SW10_CS15, SW12_CS15 }, //D415
{ 0, SW11_CS1, SW10_CS1, SW12_CS1 }, //D401
{ 0, SW8_CS4, SW7_CS4, SW9_CS4 }, //D420
{ 0, SW8_CS5, SW7_CS5, SW9_CS5 }, //D421
{ 0, SW8_CS6, SW7_CS6, SW9_CS6 }, //D422
{ 0, SW8_CS7, SW7_CS7, SW9_CS7 }, //D423
{ 0, SW8_CS8, SW7_CS8, SW9_CS8 }, //D424
{ 0, SW8_CS9, SW7_CS9, SW9_CS9 }, //D425
{ 0, SW8_CS10, SW7_CS10, SW9_CS10 }, //D426
{ 0, SW8_CS11, SW7_CS11, SW9_CS11 }, //D427
{ 0, SW8_CS12, SW7_CS12, SW9_CS12 }, //D428
{ 0, SW8_CS13, SW7_CS13, SW9_CS13 }, //D429
{ 0, SW8_CS14, SW7_CS14, SW9_CS14 }, //D430
{ 0, SW8_CS15, SW7_CS15, SW9_CS15 }, //D431
{ 0, SW11_CS16, SW10_CS16, SW12_CS16 }, //D416
{ 0, SW8_CS2, SW7_CS2, SW9_CS2 }, //D418
{ 0, SW8_CS3, SW7_CS3, SW9_CS3 }, //D419
{ 0, SW5_CS5, SW4_CS5, SW6_CS5 }, //D437
{ 0, SW5_CS6, SW4_CS6, SW6_CS6 }, //D438
{ 0, SW5_CS7, SW4_CS7, SW6_CS7 }, //D439
{ 0, SW5_CS8, SW4_CS8, SW6_CS8 }, //D440
{ 0, SW5_CS9, SW4_CS9, SW6_CS9 }, //D441
{ 0, SW5_CS10, SW4_CS10, SW6_CS10 }, //D442
{ 0, SW5_CS11, SW4_CS11, SW6_CS11 }, //D443
{ 0, SW5_CS12, SW4_CS12, SW6_CS12 }, //D444
{ 0, SW5_CS13, SW4_CS13, SW6_CS13 }, //D445
{ 0, SW5_CS14, SW4_CS14, SW6_CS14 }, //D446
{ 0, SW8_CS16, SW7_CS16, SW9_CS16 }, //D432
{ 0, SW8_CS1, SW7_CS1, SW9_CS1 }, //D417
{ 0, SW5_CS3, SW4_CS3, SW6_CS3 }, //D435
{ 0, SW5_CS4, SW4_CS4, SW6_CS4 }, //D436
{ 0, SW2_CS2, SW1_CS2, SW3_CS2 }, //D450
{ 0, SW2_CS3, SW1_CS3, SW3_CS3 }, //D451
{ 0, SW2_CS4, SW1_CS4, SW3_CS4 }, //D452
{ 0, SW2_CS6, SW1_CS6, SW3_CS6 }, //D454
{ 0, SW2_CS8, SW1_CS8, SW3_CS8 }, //D456
{ 0, SW2_CS9, SW1_CS9, SW3_CS9 }, //D457
{ 0, SW2_CS10, SW1_CS10, SW3_CS10 }, //D458
{ 0, SW2_CS12, SW1_CS12, SW3_CS12 }, //D460
{ 0, SW2_CS13, SW1_CS13, SW3_CS13 }, //D461
{ 0, SW5_CS15, SW4_CS15, SW6_CS15 }, //D447
{ 0, SW5_CS1, SW4_CS1, SW6_CS1 }, //D433
{ 0, SW5_CS2, SW4_CS2, SW6_CS2 }, //D434
{ 0, SW2_CS1, SW1_CS1, SW3_CS1 }, //D449
{ 0, SW2_CS7, SW1_CS7, SW3_CS7 }, //D455
{ 0, SW2_CS11, SW1_CS11, SW3_CS11 }, //D459
{ 0, SW2_CS14, SW1_CS14, SW3_CS14 }, //D462
{ 0, SW2_CS15, SW1_CS15, SW3_CS15 }, //D463
{ 0, SW2_CS16, SW1_CS16, SW3_CS16 } //D464
};
#define XXX NO_LED
led_config_t g_led_config = {
{
{ 0, 2, 4, 6, 8, 10, 12 },
{ 1, 3, 5, 7, 9, 11, XXX },
{ 14, 16, 18, 20, 22, 24, 26 },
{ 15, 17, 19, 21, 23, 25, 13 },
{ 28, 30, 32, 34, 36, 38, 40 },
{ 29, 31, 33, 35, 37, 39, XXX },
{ 41, 43, 45, 47, 49, 51, XXX },
{ 42, 44, 46, 48, 50, 52, 27 },
{ 54, 55, XXX, 57, XXX, 60, 53 },
{ 56, XXX, XXX, 58, 59, 61, XXX },
}, {
{ 0,0 }, { 16,0 }, { 32,0 }, { 48,0 }, { 65,0 }, { 81,0 }, { 97,0 }, {113,0 }, {129,0 }, {145,0 },
{161,0 }, {178,0 }, {194,0 }, {218,0 }, { 4,16 }, { 24,16 }, { 40,16 }, { 57,16 }, { 73,16 }, { 89,16 },
{105,16 }, {121,16 }, {137,16 }, {153,16 }, {170,16 }, {186,16 }, {202,16 }, {224,24 }, { 6,32 }, { 28,32 },
{ 44,32 }, { 61,32 }, { 77,32 }, { 93,32 }, {109,32 }, {125,32 }, {141,32 }, {157,32 }, {174,32 }, {190,32 },
{206,32 }, { 2,48 }, { 20,48 }, { 36,48 }, { 52,48 }, { 69,48 }, { 85,48 }, {101,48 }, {117,48 }, {133,48 },
{149,48 }, {165,48 }, {182,48 }, {212,48 }, { 2,64 }, { 22,64 }, { 42,64 }, {103,64 }, {163,64 }, {184,64 },
{204,64 }, {224,64 },
}, {
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
8, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 1, 4, 1, 1, 1, 1
}
{0, SW11_CS2, SW10_CS2, SW12_CS2}, // D402
{0, SW11_CS3, SW10_CS3, SW12_CS3}, // D403
{0, SW11_CS4, SW10_CS4, SW12_CS4}, // D404
{0, SW11_CS5, SW10_CS5, SW12_CS5}, // D405
{0, SW11_CS6, SW10_CS6, SW12_CS6}, // D406
{0, SW11_CS7, SW10_CS7, SW12_CS7}, // D407
{0, SW11_CS8, SW10_CS8, SW12_CS8}, // D408
{0, SW11_CS9, SW10_CS9, SW12_CS9}, // D409
{0, SW11_CS10, SW10_CS10, SW12_CS10}, // D410
{0, SW11_CS11, SW10_CS11, SW12_CS11}, // D411
{0, SW11_CS12, SW10_CS12, SW12_CS12}, // D412
{0, SW11_CS13, SW10_CS13, SW12_CS13}, // D413
{0, SW11_CS14, SW10_CS14, SW12_CS14}, // D414
{0, SW11_CS15, SW10_CS15, SW12_CS15}, // D415
{0, SW11_CS1, SW10_CS1, SW12_CS1}, // D401
{0, SW8_CS4, SW7_CS4, SW9_CS4}, // D420
{0, SW8_CS5, SW7_CS5, SW9_CS5}, // D421
{0, SW8_CS6, SW7_CS6, SW9_CS6}, // D422
{0, SW8_CS7, SW7_CS7, SW9_CS7}, // D423
{0, SW8_CS8, SW7_CS8, SW9_CS8}, // D424
{0, SW8_CS9, SW7_CS9, SW9_CS9}, // D425
{0, SW8_CS10, SW7_CS10, SW9_CS10}, // D426
{0, SW8_CS11, SW7_CS11, SW9_CS11}, // D427
{0, SW8_CS12, SW7_CS12, SW9_CS12}, // D428
{0, SW8_CS13, SW7_CS13, SW9_CS13}, // D429
{0, SW8_CS14, SW7_CS14, SW9_CS14}, // D430
{0, SW8_CS15, SW7_CS15, SW9_CS15}, // D431
{0, SW11_CS16, SW10_CS16, SW12_CS16}, // D416
{0, SW8_CS2, SW7_CS2, SW9_CS2}, // D418
{0, SW8_CS3, SW7_CS3, SW9_CS3}, // D419
{0, SW5_CS5, SW4_CS5, SW6_CS5}, // D437
{0, SW5_CS6, SW4_CS6, SW6_CS6}, // D438
{0, SW5_CS7, SW4_CS7, SW6_CS7}, // D439
{0, SW5_CS8, SW4_CS8, SW6_CS8}, // D440
{0, SW5_CS9, SW4_CS9, SW6_CS9}, // D441
{0, SW5_CS10, SW4_CS10, SW6_CS10}, // D442
{0, SW5_CS11, SW4_CS11, SW6_CS11}, // D443
{0, SW5_CS12, SW4_CS12, SW6_CS12}, // D444
{0, SW5_CS13, SW4_CS13, SW6_CS13}, // D445
{0, SW5_CS14, SW4_CS14, SW6_CS14}, // D446
{0, SW8_CS16, SW7_CS16, SW9_CS16}, // D432
{0, SW8_CS1, SW7_CS1, SW9_CS1}, // D417
{0, SW5_CS3, SW4_CS3, SW6_CS3}, // D435
{0, SW5_CS4, SW4_CS4, SW6_CS4}, // D436
{0, SW2_CS2, SW1_CS2, SW3_CS2}, // D450
{0, SW2_CS3, SW1_CS3, SW3_CS3}, // D451
{0, SW2_CS4, SW1_CS4, SW3_CS4}, // D452
{0, SW2_CS6, SW1_CS6, SW3_CS6}, // D454
{0, SW2_CS8, SW1_CS8, SW3_CS8}, // D456
{0, SW2_CS9, SW1_CS9, SW3_CS9}, // D457
{0, SW2_CS10, SW1_CS10, SW3_CS10}, // D458
{0, SW2_CS12, SW1_CS12, SW3_CS12}, // D460
{0, SW2_CS13, SW1_CS13, SW3_CS13}, // D461
{0, SW5_CS15, SW4_CS15, SW6_CS15}, // D447
{0, SW5_CS1, SW4_CS1, SW6_CS1}, // D433
{0, SW5_CS2, SW4_CS2, SW6_CS2}, // D434
{0, SW2_CS1, SW1_CS1, SW3_CS1}, // D449
{0, SW2_CS7, SW1_CS7, SW3_CS7}, // D455
{0, SW2_CS11, SW1_CS11, SW3_CS11}, // D459
{0, SW2_CS14, SW1_CS14, SW3_CS14}, // D462
{0, SW2_CS15, SW1_CS15, SW3_CS15}, // D463
{0, SW2_CS16, SW1_CS16, SW3_CS16} // D464
};
bool rgb_matrix_indicators_advanced_kb(uint8_t led_min, uint8_t led_max) {

View file

@ -21,41 +21,3 @@ void board_init(void) {
gpio_set_pin_input(B9);
gpio_set_pin_input(B10);
}
led_config_t g_led_config = { {
// { 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , NO_LED , 13 , 14 , 15 },
// { 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 },
// { 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 42 , 43 , 44 , 45 , 46 , 47 , 48 , 49 },
// { 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , NO_LED , NO_LED , NO_LED , NO_LED },
// { 63 , NO_LED , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , NO_LED , NO_LED , 75 , NO_LED },
// { 76 , 77 , 78 , NO_LED , NO_LED , NO_LED , 79 , NO_LED , NO_LED , 80 , 81 , 82 , 83 , NO_LED , 84 , 85 , 86 }
//
{ 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , NO_LED , 2 , 1 , 0 },
{ 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 },
{ 49 , 48 , 47 , 46 , 45 , 44 , 43 , 42 , 41 , 40 , 39 , 38 , 37 , 36 , 35 , 34 , 33 },
{ 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , NO_LED , NO_LED , NO_LED , NO_LED },
{ 75 , NO_LED , 74 , 73 , 72 , 71 , 70 , 69 , 68 , 67 , 66 , 65 , 64 , NO_LED , NO_LED , 63 , NO_LED },
{ 76 , 77 , 78 , NO_LED , NO_LED , NO_LED , 79 , NO_LED , NO_LED , 80 , 81 , 82 , 83 , NO_LED , 84 , 85 , 86 }
},{
// "Fine-tuned" complex configuration
{ 210, 0}, { 196, 0}, { 182, 0}, { 168, 0}, { 154, 0}, { 140, 0}, { 140, 0}, { 126, 0}, { 112, 0}, { 98, 0}, { 84, 0}, { 70, 0}, { 56, 0}, { 28, 0}, { 14, 0}, { 0, 0},
{ 0, 45}, { 14, 45}, { 28, 45}, { 42, 45}, { 56, 45}, { 70, 45}, { 84, 45}, { 98, 45}, { 112, 45}, { 126, 45}, { 140, 45}, { 154, 45}, { 168, 45}, { 182, 45}, { 196, 45}, { 210, 45}, { 224, 45},
{ 224, 90}, { 210, 90}, { 196, 90}, { 182, 90}, { 168, 90}, { 154, 90}, { 140, 90}, { 126, 90}, { 112, 90}, { 98, 90}, { 84, 90}, { 70, 90}, { 56, 90}, { 42, 90}, { 28, 90}, { 14, 90}, { 0, 90},
{ 0, 135}, { 14, 135}, { 28, 135}, { 42, 135}, { 56, 135}, { 70, 135}, { 84, 135}, { 98, 135}, { 112, 135}, { 126, 135}, { 140, 135}, { 154, 135}, { 168, 135},
{ 192, 180}, { 168, 180}, { 154, 180}, { 140, 180}, { 126, 180}, { 112, 180}, { 98, 180}, { 84, 180}, { 70, 180}, { 56, 180}, { 42, 180}, { 28, 180}, { 14, 180},
{ 0, 225}, { 14, 225}, { 28, 225}, { 84, 225}, { 126, 225}, { 140, 225}, { 154, 225}, { 168, 225}, { 196, 45}, { 210, 45}, { 224, 90}
// "Stock" simple configuration
// { 224, 0}, { 210, 0}, { 196, 0}, { 182, 0}, { 168, 0}, { 154, 0}, { 140, 0}, { 126, 0}, { 112, 0}, { 98, 0}, { 84, 0}, { 70, 0}, { 56, 0}, { 28, 0}, { 14, 0}, { 0, 0},
// { 0, 45}, { 14, 45}, { 28, 45}, { 42, 45}, { 56, 45}, { 70, 45}, { 84, 45}, { 98, 45}, { 112, 45}, { 126, 45}, { 140, 45}, { 154, 45}, { 168, 45}, { 182, 45}, { 196, 45}, { 210, 45}, { 224, 45},
// { 224, 90}, { 210, 90}, { 196, 90}, { 182, 90}, { 168, 90}, { 154, 90}, { 140, 90}, { 126, 90}, { 112, 90}, { 98, 90}, { 84, 90}, { 70, 90}, { 56, 90}, { 42, 90}, { 28, 90}, { 14, 90}, { 0, 90},
// { 0, 135}, { 14, 135}, { 28, 135}, { 42, 135}, { 56, 135}, { 70, 135}, { 84, 135}, { 98, 135}, { 112, 135}, { 126, 135}, { 140, 135}, { 154, 135}, { 168, 135},
// { 224, 180}, { 196, 180}, { 182, 180}, { 168, 180}, { 154, 180}, { 140, 180}, { 126, 180}, { 112, 180}, { 98, 180}, { 84, 180}, { 70, 180}, { 56, 180}, { 14, 180},
// { 0, 225}, { 14, 225}, { 28, 225}, { 84, 225}, { 126, 225}, { 140, 225}, { 154, 225}, { 168, 225}, { 196, 45}, { 210, 45}, { 224, 90}
}, {
1 , 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 , 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 , 4 , 1 ,
1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 1 , 1 ,
1 , 1 , 1 , 4 , 1 , 1 , 1 , 1 , 1 , 1 , 1
} };

View file

@ -57,6 +57,95 @@
"val": 60
},
"driver": "ws2812",
"layout": [
{"matrix": [0, 16], "x": 224, "y": 0, "flags": 1},
{"matrix": [0, 15], "x": 210, "y": 0, "flags": 4},
{"matrix": [0, 14], "x": 196, "y": 0, "flags": 4},
{"matrix": [0, 12], "x": 182, "y": 0, "flags": 4},
{"matrix": [0, 11], "x": 168, "y": 0, "flags": 4},
{"matrix": [0, 10], "x": 154, "y": 0, "flags": 4},
{"matrix": [0, 9], "x": 140, "y": 0, "flags": 4},
{"matrix": [0, 8], "x": 126, "y": 0, "flags": 4},
{"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 98, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 84, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 70, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 56, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 28, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 14, "y": 0, "flags": 4},
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{"matrix": [1, 0], "x": 0, "y": 12, "flags": 4},
{"matrix": [1, 1], "x": 14, "y": 12, "flags": 4},
{"matrix": [1, 2], "x": 28, "y": 12, "flags": 4},
{"matrix": [1, 3], "x": 42, "y": 12, "flags": 4},
{"matrix": [1, 4], "x": 56, "y": 12, "flags": 4},
{"matrix": [1, 5], "x": 70, "y": 12, "flags": 4},
{"matrix": [1, 6], "x": 84, "y": 12, "flags": 4},
{"matrix": [1, 7], "x": 98, "y": 12, "flags": 4},
{"matrix": [1, 8], "x": 112, "y": 12, "flags": 4},
{"matrix": [1, 9], "x": 126, "y": 12, "flags": 4},
{"matrix": [1, 10], "x": 140, "y": 12, "flags": 4},
{"matrix": [1, 11], "x": 154, "y": 12, "flags": 4},
{"matrix": [1, 12], "x": 168, "y": 12, "flags": 4},
{"matrix": [1, 13], "x": 182, "y": 12, "flags": 4},
{"matrix": [1, 14], "x": 196, "y": 12, "flags": 4},
{"matrix": [1, 15], "x": 210, "y": 12, "flags": 4},
{"matrix": [1, 16], "x": 224, "y": 12, "flags": 4},
{"matrix": [2, 16], "x": 224, "y": 25, "flags": 4},
{"matrix": [2, 15], "x": 210, "y": 25, "flags": 4},
{"matrix": [2, 14], "x": 196, "y": 25, "flags": 4},
{"matrix": [2, 13], "x": 182, "y": 25, "flags": 4},
{"matrix": [2, 12], "x": 168, "y": 25, "flags": 4},
{"matrix": [2, 11], "x": 154, "y": 25, "flags": 4},
{"matrix": [2, 10], "x": 140, "y": 25, "flags": 4},
{"matrix": [2, 9], "x": 126, "y": 25, "flags": 4},
{"matrix": [2, 8], "x": 112, "y": 25, "flags": 4},
{"matrix": [2, 7], "x": 98, "y": 25, "flags": 4},
{"matrix": [2, 6], "x": 84, "y": 25, "flags": 4},
{"matrix": [2, 5], "x": 70, "y": 25, "flags": 4},
{"matrix": [2, 4], "x": 56, "y": 25, "flags": 4},
{"matrix": [2, 3], "x": 42, "y": 25, "flags": 4},
{"matrix": [2, 2], "x": 28, "y": 25, "flags": 4},
{"matrix": [2, 1], "x": 14, "y": 25, "flags": 4},
{"matrix": [2, 0], "x": 0, "y": 25, "flags": 4},
{"matrix": [3, 0], "x": 0, "y": 38, "flags": 4},
{"matrix": [3, 1], "x": 14, "y": 38, "flags": 4},
{"matrix": [3, 2], "x": 28, "y": 38, "flags": 4},
{"matrix": [3, 3], "x": 42, "y": 38, "flags": 4},
{"matrix": [3, 4], "x": 56, "y": 38, "flags": 4},
{"matrix": [3, 5], "x": 70, "y": 38, "flags": 4},
{"matrix": [3, 6], "x": 84, "y": 38, "flags": 4},
{"matrix": [3, 7], "x": 98, "y": 38, "flags": 4},
{"matrix": [3, 8], "x": 112, "y": 38, "flags": 4},
{"matrix": [3, 9], "x": 126, "y": 38, "flags": 4},
{"matrix": [3, 10], "x": 140, "y": 38, "flags": 4},
{"matrix": [3, 11], "x": 154, "y": 38, "flags": 4},
{"matrix": [3, 12], "x": 168, "y": 38, "flags": 1},
{"matrix": [4, 15], "x": 210, "y": 51, "flags": 1},
{"matrix": [4, 12], "x": 168, "y": 51, "flags": 4},
{"matrix": [4, 11], "x": 154, "y": 51, "flags": 4},
{"matrix": [4, 10], "x": 140, "y": 51, "flags": 4},
{"matrix": [4, 9], "x": 126, "y": 51, "flags": 4},
{"matrix": [4, 8], "x": 112, "y": 51, "flags": 4},
{"matrix": [4, 7], "x": 98, "y": 51, "flags": 4},
{"matrix": [4, 6], "x": 84, "y": 51, "flags": 4},
{"matrix": [4, 5], "x": 70, "y": 51, "flags": 4},
{"matrix": [4, 4], "x": 56, "y": 51, "flags": 4},
{"matrix": [4, 3], "x": 42, "y": 51, "flags": 4},
{"matrix": [4, 2], "x": 28, "y": 51, "flags": 1},
{"matrix": [4, 0], "x": 14, "y": 51, "flags": 1},
{"matrix": [5, 0], "x": 0, "y": 64, "flags": 1},
{"matrix": [5, 1], "x": 14, "y": 64, "flags": 1},
{"matrix": [5, 2], "x": 28, "y": 64, "flags": 1},
{"matrix": [5, 6], "x": 84, "y": 64, "flags": 4},
{"matrix": [5, 9], "x": 126, "y": 64, "flags": 1},
{"matrix": [5, 10], "x": 140, "y": 64, "flags": 1},
{"matrix": [5, 11], "x": 154, "y": 64, "flags": 1},
{"matrix": [5, 12], "x": 168, "y": 64, "flags": 1},
{"matrix": [5, 14], "x": 196, "y": 64, "flags": 1},
{"matrix": [5, 15], "x": 210, "y": 64, "flags": 1},
{"matrix": [5, 16], "x": 224, "y": 64, "flags": 1}
],
"sleep": true
},
"features": {

View file

@ -120,27 +120,4 @@ const is31fl3741_led_t PROGMEM g_is31fl3741_leds[IS31FL3741_LED_COUNT] = {
{0, SW3_CS24, SW3_CS23, SW3_CS22 }, //RIGHT 86
};
led_config_t g_led_config = { {
{ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 , 12 , 13 , 14 , 15 },
{ 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 },
{ 33 , 34 , 35 , 36 , 37 , 38 , 39 , 40 , 41 , 41 , 43 , 44 , 45 , 46 , 47 , 48 },
{ 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , NO_LED , NO_LED , NO_LED },
{ 63 , NO_LED , 64 , 65 , 66 , 67 , 68 , 69 , 70 , 71 , 72 , 73 , 74 , 75 , 49 , 32 },
{ 76 , 77 , 78 , NO_LED , NO_LED , NO_LED , 79 , NO_LED , NO_LED , 80 , 81 , 82 , 83 , 84 , 85 , 86 }
},{
{ 0, 0}, { 15, 0}, { 30, 0}, { 45, 0}, { 60, 0}, { 75, 0}, { 90, 0}, { 105, 0}, { 120, 0}, { 135, 0}, { 150, 0}, { 165, 0}, { 180, 0}, { 210, 0}, { 210, 0}, { 225, 0},
{ 0, 45}, { 15, 45}, { 30, 45}, { 45, 45}, { 60, 45}, { 75, 45}, { 90, 45}, { 105, 45}, { 120, 45}, { 135, 45}, { 150, 45}, { 165, 45}, { 180, 45}, { 210, 45}, { 210, 45}, { 215, 45},
{ 0, 90}, { 15, 90}, { 30, 90}, { 45, 90}, { 60, 90}, { 75, 90}, { 90, 90}, { 105, 90}, { 120, 90}, { 135, 90}, { 150, 90}, { 165, 90}, { 180, 90}, { 195, 90}, { 210, 90}, { 215, 90},
{ 0, 135}, { 15, 135}, { 30, 135}, { 45, 135}, { 60, 135}, { 75, 135}, { 90, 135}, { 105, 135}, { 120, 135}, { 135, 135}, { 150, 135}, { 165, 135}, { 180, 135},
{ 0, 180}, { 30, 180}, { 45, 180}, { 60, 180}, { 75, 180}, { 90, 180}, { 105, 180}, { 120, 180}, { 135, 180}, { 150, 180}, { 165, 180}, { 180, 180}, { 210, 180}, { 225, 45}, { 225, 0},
{ 0, 225}, { 15, 225}, { 30, 225}, { 90, 225}, { 135, 225}, { 150, 225}, { 165, 225}, { 180, 225}, { 195, 225}, { 210, 225}, { 225, 225}
}, {
1 , 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 , 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 ,
1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 1 , 1 , 1 , 1 ,
1 , 1 , 1 , 4 , 1 , 1 , 1 , 1 , 1 , 1 , 1
} };
#endif

View file

@ -58,6 +58,95 @@
"val": 80
},
"driver": "is31fl3741",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
{"matrix": [0, 1], "x": 14, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 28, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 56, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 70, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 84, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 98, "y": 0, "flags": 4},
{"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
{"matrix": [0, 8], "x": 126, "y": 0, "flags": 4},
{"matrix": [0, 9], "x": 140, "y": 0, "flags": 4},
{"matrix": [0, 10], "x": 154, "y": 0, "flags": 4},
{"matrix": [0, 11], "x": 168, "y": 0, "flags": 4},
{"matrix": [0, 12], "x": 182, "y": 0, "flags": 4},
{"matrix": [0, 13], "x": 196, "y": 0, "flags": 4},
{"matrix": [0, 14], "x": 210, "y": 0, "flags": 4},
{"matrix": [0, 15], "x": 224, "y": 0, "flags": 4},
{"matrix": [1, 0], "x": 0, "y": 12, "flags": 4},
{"matrix": [1, 1], "x": 14, "y": 12, "flags": 4},
{"matrix": [1, 2], "x": 28, "y": 12, "flags": 4},
{"matrix": [1, 3], "x": 42, "y": 12, "flags": 4},
{"matrix": [1, 4], "x": 56, "y": 12, "flags": 4},
{"matrix": [1, 5], "x": 70, "y": 12, "flags": 4},
{"matrix": [1, 6], "x": 84, "y": 12, "flags": 4},
{"matrix": [1, 7], "x": 98, "y": 12, "flags": 4},
{"matrix": [1, 8], "x": 112, "y": 12, "flags": 4},
{"matrix": [1, 9], "x": 126, "y": 12, "flags": 4},
{"matrix": [1, 10], "x": 140, "y": 12, "flags": 4},
{"matrix": [1, 11], "x": 154, "y": 12, "flags": 4},
{"matrix": [1, 12], "x": 168, "y": 12, "flags": 4},
{"matrix": [1, 13], "x": 182, "y": 12, "flags": 4},
{"matrix": [1, 14], "x": 196, "y": 12, "flags": 4},
{"matrix": [1, 15], "x": 210, "y": 12, "flags": 4},
{"matrix": [4, 15], "x": 224, "y": 12, "flags": 4},
{"matrix": [2, 0], "x": 0, "y": 25, "flags": 4},
{"matrix": [2, 1], "x": 14, "y": 25, "flags": 4},
{"matrix": [2, 2], "x": 28, "y": 25, "flags": 4},
{"matrix": [2, 3], "x": 42, "y": 25, "flags": 4},
{"matrix": [2, 4], "x": 56, "y": 25, "flags": 4},
{"matrix": [2, 5], "x": 70, "y": 25, "flags": 4},
{"matrix": [2, 6], "x": 84, "y": 25, "flags": 4},
{"matrix": [2, 7], "x": 98, "y": 25, "flags": 4},
{"matrix": [2, 8], "x": 112, "y": 25, "flags": 4},
{"matrix": [2, 9], "x": 126, "y": 25, "flags": 4},
{"matrix": [2, 10], "x": 140, "y": 25, "flags": 4},
{"matrix": [2, 11], "x": 154, "y": 25, "flags": 4},
{"matrix": [2, 12], "x": 168, "y": 25, "flags": 4},
{"matrix": [2, 13], "x": 182, "y": 25, "flags": 4},
{"matrix": [2, 14], "x": 196, "y": 25, "flags": 4},
{"matrix": [2, 15], "x": 210, "y": 25, "flags": 4},
{"matrix": [4, 14], "x": 224, "y": 25, "flags": 4},
{"matrix": [3, 0], "x": 0, "y": 38, "flags": 4},
{"matrix": [3, 1], "x": 14, "y": 38, "flags": 4},
{"matrix": [3, 2], "x": 28, "y": 38, "flags": 4},
{"matrix": [3, 3], "x": 42, "y": 38, "flags": 4},
{"matrix": [3, 4], "x": 56, "y": 38, "flags": 4},
{"matrix": [3, 5], "x": 70, "y": 38, "flags": 4},
{"matrix": [3, 6], "x": 84, "y": 38, "flags": 4},
{"matrix": [3, 7], "x": 98, "y": 38, "flags": 4},
{"matrix": [3, 8], "x": 112, "y": 38, "flags": 4},
{"matrix": [3, 9], "x": 126, "y": 38, "flags": 4},
{"matrix": [3, 10], "x": 140, "y": 38, "flags": 1},
{"matrix": [3, 11], "x": 156, "y": 38, "flags": 1},
{"matrix": [3, 12], "x": 168, "y": 38, "flags": 4},
{"matrix": [4, 0], "x": 0, "y": 51, "flags": 4},
{"matrix": [4, 2], "x": 14, "y": 51, "flags": 4},
{"matrix": [4, 3], "x": 28, "y": 51, "flags": 4},
{"matrix": [4, 4], "x": 42, "y": 51, "flags": 4},
{"matrix": [4, 5], "x": 56, "y": 51, "flags": 4},
{"matrix": [4, 6], "x": 70, "y": 51, "flags": 4},
{"matrix": [4, 7], "x": 84, "y": 51, "flags": 4},
{"matrix": [4, 8], "x": 98, "y": 51, "flags": 4},
{"matrix": [4, 9], "x": 112, "y": 51, "flags": 4},
{"matrix": [4, 10], "x": 126, "y": 51, "flags": 1},
{"matrix": [4, 11], "x": 140, "y": 51, "flags": 1},
{"matrix": [4, 12], "x": 156, "y": 51, "flags": 1},
{"matrix": [4, 13], "x": 210, "y": 51, "flags": 1},
{"matrix": [5, 0], "x": 0, "y": 64, "flags": 1},
{"matrix": [5, 1], "x": 14, "y": 64, "flags": 1},
{"matrix": [5, 2], "x": 28, "y": 64, "flags": 1},
{"matrix": [5, 6], "x": 84, "y": 64, "flags": 4},
{"matrix": [5, 9], "x": 140, "y": 64, "flags": 1},
{"matrix": [5, 10], "x": 154, "y": 64, "flags": 1},
{"matrix": [5, 11], "x": 168, "y": 64, "flags": 1},
{"matrix": [5, 12], "x": 182, "y": 64, "flags": 1},
{"matrix": [5, 13], "x": 196, "y": 64, "flags": 1},
{"matrix": [5, 14], "x": 210, "y": 64, "flags": 1},
{"matrix": [5, 15], "x": 224, "y": 64, "flags": 1}
],
"sleep": true
},
"features": {

View file

@ -21,27 +21,3 @@ void board_init(void) {
gpio_set_pin_input(B9);
gpio_set_pin_input(B10);
}
led_config_t g_led_config = { {
{ 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , NO_LED , 2 , 1 , 0 },
{ 16 , 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 },
{ 49 , 48 , 47 , 46 , 45 , 44 , 43 , 42 , 41 , 40 , 39 , 38 , 37 , 36 , 35 , 34 , 33 },
{ 50 , 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , NO_LED , NO_LED , NO_LED , NO_LED },
{ 75 , NO_LED , 74 , 73 , 72 , 71 , 70 , 69 , 68 , 67 , 66 , 65 , 64 , NO_LED , NO_LED , 63 , NO_LED },
{ 76 , 77 , 78 , NO_LED , NO_LED , NO_LED , 79 , NO_LED , NO_LED , NO_LED , 80 , 81 , 82 , NO_LED , 83 , 84 , 85 }
},{
// "Fine-tuned" complex configuration
{ 210, 0}, { 196, 0}, { 182, 0}, { 168, 0}, { 154, 0}, { 140, 0}, { 140, 0}, { 126, 0}, { 112, 0}, { 98, 0}, { 84, 0}, { 70, 0}, { 56, 0}, { 28, 0}, { 14, 0}, { 0, 0},
{ 0, 45}, { 14, 45}, { 28, 45}, { 42, 45}, { 56, 45}, { 70, 45}, { 84, 45}, { 98, 45}, { 112, 45}, { 126, 45}, { 140, 45}, { 154, 45}, { 168, 45}, { 182, 45}, { 196, 45}, { 210, 45}, { 224, 45},
{ 224, 90}, { 210, 90}, { 196, 90}, { 182, 90}, { 168, 90}, { 154, 90}, { 140, 90}, { 126, 90}, { 112, 90}, { 98, 90}, { 84, 90}, { 70, 90}, { 56, 90}, { 42, 90}, { 28, 90}, { 14, 90}, { 0, 90},
{ 0, 135}, { 14, 135}, { 28, 135}, { 42, 135}, { 56, 135}, { 70, 135}, { 84, 135}, { 98, 135}, { 112, 135}, { 126, 135}, { 140, 135}, { 154, 135}, { 168, 135},
{ 192, 180}, { 168, 180}, { 154, 180}, { 140, 180}, { 126, 180}, { 112, 180}, { 98, 180}, { 84, 180}, { 70, 180}, { 56, 180}, { 42, 180}, { 28, 180}, { 14, 180},
{ 0, 225}, { 14, 225}, { 28, 225}, { 84, 225}, { 140, 225}, { 154, 225}, { 168, 225}, { 196, 225}, { 210, 225}, { 224, 225}
}, {
1 , 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 , 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 , 4 , 1 ,
1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 1 , 1 ,
1 , 1 , 1 , 4 , 1 , 1 , 1 , 1 , 1 , 1
} };

View file

@ -60,6 +60,94 @@
"val": 60
},
"driver": "ws2812",
"layout": [
{"matrix": [0, 16], "x": 210, "y": 0, "flags": 1},
{"matrix": [0, 15], "x": 196, "y": 0, "flags": 4},
{"matrix": [0, 14], "x": 182, "y": 0, "flags": 4},
{"matrix": [0, 12], "x": 168, "y": 0, "flags": 4},
{"matrix": [0, 11], "x": 154, "y": 0, "flags": 4},
{"matrix": [0, 10], "x": 140, "y": 0, "flags": 4},
{"matrix": [0, 9], "x": 140, "y": 0, "flags": 4},
{"matrix": [0, 8], "x": 126, "y": 0, "flags": 4},
{"matrix": [0, 7], "x": 112, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 98, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 84, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 70, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 56, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 28, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 14, "y": 0, "flags": 4},
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{"matrix": [1, 0], "x": 0, "y": 12, "flags": 4},
{"matrix": [1, 1], "x": 14, "y": 12, "flags": 4},
{"matrix": [1, 2], "x": 28, "y": 12, "flags": 4},
{"matrix": [1, 3], "x": 42, "y": 12, "flags": 4},
{"matrix": [1, 4], "x": 56, "y": 12, "flags": 4},
{"matrix": [1, 5], "x": 70, "y": 12, "flags": 4},
{"matrix": [1, 6], "x": 84, "y": 12, "flags": 4},
{"matrix": [1, 7], "x": 98, "y": 12, "flags": 4},
{"matrix": [1, 8], "x": 112, "y": 12, "flags": 4},
{"matrix": [1, 9], "x": 126, "y": 12, "flags": 4},
{"matrix": [1, 10], "x": 140, "y": 12, "flags": 4},
{"matrix": [1, 11], "x": 154, "y": 12, "flags": 4},
{"matrix": [1, 12], "x": 168, "y": 12, "flags": 4},
{"matrix": [1, 13], "x": 182, "y": 12, "flags": 4},
{"matrix": [1, 14], "x": 196, "y": 12, "flags": 4},
{"matrix": [1, 15], "x": 210, "y": 12, "flags": 4},
{"matrix": [1, 16], "x": 224, "y": 12, "flags": 4},
{"matrix": [2, 16], "x": 224, "y": 25, "flags": 4},
{"matrix": [2, 15], "x": 210, "y": 25, "flags": 4},
{"matrix": [2, 14], "x": 196, "y": 25, "flags": 4},
{"matrix": [2, 13], "x": 182, "y": 25, "flags": 4},
{"matrix": [2, 12], "x": 168, "y": 25, "flags": 4},
{"matrix": [2, 11], "x": 154, "y": 25, "flags": 4},
{"matrix": [2, 10], "x": 140, "y": 25, "flags": 4},
{"matrix": [2, 9], "x": 126, "y": 25, "flags": 4},
{"matrix": [2, 8], "x": 112, "y": 25, "flags": 4},
{"matrix": [2, 7], "x": 98, "y": 25, "flags": 4},
{"matrix": [2, 6], "x": 84, "y": 25, "flags": 4},
{"matrix": [2, 5], "x": 70, "y": 25, "flags": 4},
{"matrix": [2, 4], "x": 56, "y": 25, "flags": 4},
{"matrix": [2, 3], "x": 42, "y": 25, "flags": 4},
{"matrix": [2, 2], "x": 28, "y": 25, "flags": 4},
{"matrix": [2, 1], "x": 14, "y": 25, "flags": 4},
{"matrix": [2, 0], "x": 0, "y": 25, "flags": 4},
{"matrix": [3, 0], "x": 0, "y": 38, "flags": 4},
{"matrix": [3, 1], "x": 14, "y": 38, "flags": 4},
{"matrix": [3, 2], "x": 28, "y": 38, "flags": 4},
{"matrix": [3, 3], "x": 42, "y": 38, "flags": 4},
{"matrix": [3, 4], "x": 56, "y": 38, "flags": 4},
{"matrix": [3, 5], "x": 70, "y": 38, "flags": 4},
{"matrix": [3, 6], "x": 84, "y": 38, "flags": 4},
{"matrix": [3, 7], "x": 98, "y": 38, "flags": 4},
{"matrix": [3, 8], "x": 112, "y": 38, "flags": 4},
{"matrix": [3, 9], "x": 126, "y": 38, "flags": 4},
{"matrix": [3, 10], "x": 140, "y": 38, "flags": 4},
{"matrix": [3, 11], "x": 154, "y": 38, "flags": 4},
{"matrix": [3, 12], "x": 168, "y": 38, "flags": 1},
{"matrix": [4, 15], "x": 192, "y": 51, "flags": 1},
{"matrix": [4, 12], "x": 168, "y": 51, "flags": 4},
{"matrix": [4, 11], "x": 154, "y": 51, "flags": 4},
{"matrix": [4, 10], "x": 140, "y": 51, "flags": 4},
{"matrix": [4, 9], "x": 126, "y": 51, "flags": 4},
{"matrix": [4, 8], "x": 112, "y": 51, "flags": 4},
{"matrix": [4, 7], "x": 98, "y": 51, "flags": 4},
{"matrix": [4, 6], "x": 84, "y": 51, "flags": 4},
{"matrix": [4, 5], "x": 70, "y": 51, "flags": 4},
{"matrix": [4, 4], "x": 56, "y": 51, "flags": 4},
{"matrix": [4, 3], "x": 42, "y": 51, "flags": 4},
{"matrix": [4, 2], "x": 28, "y": 51, "flags": 1},
{"matrix": [4, 0], "x": 14, "y": 51, "flags": 1},
{"matrix": [5, 0], "x": 0, "y": 64, "flags": 1},
{"matrix": [5, 1], "x": 14, "y": 64, "flags": 1},
{"matrix": [5, 2], "x": 28, "y": 64, "flags": 1},
{"matrix": [5, 6], "x": 84, "y": 64, "flags": 4},
{"matrix": [5, 10], "x": 140, "y": 64, "flags": 1},
{"matrix": [5, 11], "x": 154, "y": 64, "flags": 1},
{"matrix": [5, 12], "x": 168, "y": 64, "flags": 1},
{"matrix": [5, 14], "x": 196, "y": 64, "flags": 1},
{"matrix": [5, 15], "x": 210, "y": 64, "flags": 1},
{"matrix": [5, 16], "x": 224, "y": 64, "flags": 1}
],
"sleep": true
},
"features": {

View file

@ -1,42 +0,0 @@
/*
Copyright 2022 Álvaro "Gondolindrim" Volpato <alvaro.volpato@usp.br>
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"
led_config_t g_led_config = { {
{ 16 , 15 , 14 , 13 , 12 , 11 , 10 , 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 , 0 },
{ 17 , 18 , 19 , 20 , 21 , 22 , 23 , 24 , 25 , 26 , 27 , 28 , 29 , 30 , 31 , 32 , 33 },
{ 50 , 49 , 48 , 47 , 46 , 45 , 44 , 43 , 42 , 41 , 40 , 39 , 38 , 37 , 36 , 35 , 34 },
{ 51 , 52 , 53 , 54 , 55 , 56 , 57 , 58 , 59 , 60 , 61 , 62 , 63 , NO_LED , NO_LED , NO_LED , NO_LED },
{ 76 , NO_LED , 75 , 74 , 73 , 72 , 71 , 70 , 69 , 68 , 67 , 66 , 65 , NO_LED , NO_LED , 64 , NO_LED },
{ 77 , 78 , 79 , NO_LED , NO_LED , NO_LED , 80 , NO_LED , NO_LED , NO_LED , 81 , 82 , 83 , NO_LED , 84 , 85 , 86 }
},{
// "Fine-tuned" complex configuration
{ 210, 0}, { 196, 0}, { 182, 0}, { 168, 0}, { 154, 0}, { 140, 0}, { 140, 0}, { 126, 0}, { 112, 0}, { 98, 0}, { 84, 0}, { 70, 0}, { 56, 0}, { 45, 0}, { 28, 0}, { 14, 0}, { 0, 0},
{ 0, 45}, { 14, 45}, { 28, 45}, { 42, 45}, { 56, 45}, { 70, 45}, { 84, 45}, { 98, 45}, { 112, 45}, { 126, 45}, { 140, 45}, { 154, 45}, { 168, 45}, { 182, 45}, { 196, 45}, { 210, 45}, { 224, 45},
{ 224, 90}, { 210, 90}, { 196, 90}, { 182, 90}, { 168, 90}, { 154, 90}, { 140, 90}, { 126, 90}, { 112, 90}, { 98, 90}, { 84, 90}, { 70, 90}, { 56, 90}, { 42, 90}, { 28, 90}, { 14, 90}, { 0, 90},
{ 0, 135}, { 14, 135}, { 28, 135}, { 42, 135}, { 56, 135}, { 70, 135}, { 84, 135}, { 98, 135}, { 112, 135}, { 126, 135}, { 140, 135}, { 154, 135}, { 168, 135},
{ 192, 180}, { 168, 180}, { 154, 180}, { 140, 180}, { 126, 180}, { 112, 180}, { 98, 180}, { 84, 180}, { 70, 180}, { 56, 180}, { 42, 180}, { 28, 180}, { 14, 180},
{ 0, 225}, { 14, 225}, { 28, 225}, { 84, 225}, { 140, 225}, { 154, 225}, { 168, 225}, { 196, 45}, { 210, 45}, { 224, 90}
}, {
1 , 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 , 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 , 4 , 4 , 1 ,
1 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 4 , 1 , 1 ,
1 , 1 , 1 , 4 , 1 , 1 , 1 , 1 , 1 , 1
} };

View file

@ -60,6 +60,95 @@
"val": 60
},
"driver": "ws2812",
"layout": [
{"matrix": [0, 16], "x": 210, "y": 0, "flags": 1},
{"matrix": [0, 15], "x": 196, "y": 0, "flags": 4},
{"matrix": [0, 14], "x": 182, "y": 0, "flags": 4},
{"matrix": [0, 13], "x": 168, "y": 0, "flags": 4},
{"matrix": [0, 12], "x": 154, "y": 0, "flags": 4},
{"matrix": [0, 11], "x": 140, "y": 0, "flags": 4},
{"matrix": [0, 10], "x": 140, "y": 0, "flags": 4},
{"matrix": [0, 9], "x": 126, "y": 0, "flags": 4},
{"matrix": [0, 8], "x": 112, "y": 0, "flags": 4},
{"matrix": [0, 7], "x": 98, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 84, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 70, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 56, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 45, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 28, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 14, "y": 0, "flags": 4},
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{"matrix": [1, 0], "x": 0, "y": 12, "flags": 4},
{"matrix": [1, 1], "x": 14, "y": 12, "flags": 4},
{"matrix": [1, 2], "x": 28, "y": 12, "flags": 4},
{"matrix": [1, 3], "x": 42, "y": 12, "flags": 4},
{"matrix": [1, 4], "x": 56, "y": 12, "flags": 4},
{"matrix": [1, 5], "x": 70, "y": 12, "flags": 4},
{"matrix": [1, 6], "x": 84, "y": 12, "flags": 4},
{"matrix": [1, 7], "x": 98, "y": 12, "flags": 4},
{"matrix": [1, 8], "x": 112, "y": 12, "flags": 4},
{"matrix": [1, 9], "x": 126, "y": 12, "flags": 4},
{"matrix": [1, 10], "x": 140, "y": 12, "flags": 4},
{"matrix": [1, 11], "x": 154, "y": 12, "flags": 4},
{"matrix": [1, 12], "x": 168, "y": 12, "flags": 4},
{"matrix": [1, 13], "x": 182, "y": 12, "flags": 4},
{"matrix": [1, 14], "x": 196, "y": 12, "flags": 4},
{"matrix": [1, 15], "x": 210, "y": 12, "flags": 4},
{"matrix": [1, 16], "x": 224, "y": 12, "flags": 4},
{"matrix": [2, 16], "x": 224, "y": 25, "flags": 4},
{"matrix": [2, 15], "x": 210, "y": 25, "flags": 4},
{"matrix": [2, 14], "x": 196, "y": 25, "flags": 4},
{"matrix": [2, 13], "x": 182, "y": 25, "flags": 4},
{"matrix": [2, 12], "x": 168, "y": 25, "flags": 4},
{"matrix": [2, 11], "x": 154, "y": 25, "flags": 4},
{"matrix": [2, 10], "x": 140, "y": 25, "flags": 4},
{"matrix": [2, 9], "x": 126, "y": 25, "flags": 4},
{"matrix": [2, 8], "x": 112, "y": 25, "flags": 4},
{"matrix": [2, 7], "x": 98, "y": 25, "flags": 4},
{"matrix": [2, 6], "x": 84, "y": 25, "flags": 4},
{"matrix": [2, 5], "x": 70, "y": 25, "flags": 4},
{"matrix": [2, 4], "x": 56, "y": 25, "flags": 4},
{"matrix": [2, 3], "x": 42, "y": 25, "flags": 4},
{"matrix": [2, 2], "x": 28, "y": 25, "flags": 4},
{"matrix": [2, 1], "x": 14, "y": 25, "flags": 4},
{"matrix": [2, 0], "x": 0, "y": 25, "flags": 4},
{"matrix": [3, 0], "x": 0, "y": 38, "flags": 4},
{"matrix": [3, 1], "x": 14, "y": 38, "flags": 4},
{"matrix": [3, 2], "x": 28, "y": 38, "flags": 4},
{"matrix": [3, 3], "x": 42, "y": 38, "flags": 4},
{"matrix": [3, 4], "x": 56, "y": 38, "flags": 4},
{"matrix": [3, 5], "x": 70, "y": 38, "flags": 4},
{"matrix": [3, 6], "x": 84, "y": 38, "flags": 4},
{"matrix": [3, 7], "x": 98, "y": 38, "flags": 4},
{"matrix": [3, 8], "x": 112, "y": 38, "flags": 4},
{"matrix": [3, 9], "x": 126, "y": 38, "flags": 4},
{"matrix": [3, 10], "x": 140, "y": 38, "flags": 4},
{"matrix": [3, 11], "x": 154, "y": 38, "flags": 4},
{"matrix": [3, 12], "x": 168, "y": 38, "flags": 1},
{"matrix": [4, 15], "x": 192, "y": 51, "flags": 1},
{"matrix": [4, 12], "x": 168, "y": 51, "flags": 4},
{"matrix": [4, 11], "x": 154, "y": 51, "flags": 4},
{"matrix": [4, 10], "x": 140, "y": 51, "flags": 4},
{"matrix": [4, 9], "x": 126, "y": 51, "flags": 4},
{"matrix": [4, 8], "x": 112, "y": 51, "flags": 4},
{"matrix": [4, 7], "x": 98, "y": 51, "flags": 4},
{"matrix": [4, 6], "x": 84, "y": 51, "flags": 4},
{"matrix": [4, 5], "x": 70, "y": 51, "flags": 4},
{"matrix": [4, 4], "x": 56, "y": 51, "flags": 4},
{"matrix": [4, 3], "x": 42, "y": 51, "flags": 4},
{"matrix": [4, 2], "x": 28, "y": 51, "flags": 1},
{"matrix": [4, 0], "x": 14, "y": 51, "flags": 1},
{"matrix": [5, 0], "x": 0, "y": 64, "flags": 1},
{"matrix": [5, 1], "x": 14, "y": 64, "flags": 1},
{"matrix": [5, 2], "x": 28, "y": 64, "flags": 1},
{"matrix": [5, 6], "x": 84, "y": 64, "flags": 4},
{"matrix": [5, 10], "x": 140, "y": 64, "flags": 1},
{"matrix": [5, 11], "x": 154, "y": 64, "flags": 1},
{"matrix": [5, 12], "x": 168, "y": 64, "flags": 1},
{"matrix": [5, 14], "x": 196, "y": 64, "flags": 1},
{"matrix": [5, 15], "x": 210, "y": 64, "flags": 1},
{"matrix": [5, 16], "x": 224, "y": 64, "flags": 1}
],
"sleep": true
},
"features": {

View file

@ -1,27 +0,0 @@
// Copyright 2022 Arturo Avila (@ADPenrose)
// SPDX-License-Identifier: GPL-2.0-or-later
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
/* Setting up the LED matrix */
led_config_t g_led_config = { {
// Key Matrix to LED Index
{ 0, 1, 2, 3, NO_LED },
{ 4, 5, 6, 7, NO_LED },
{ 8, 9, 10, 11, 12 },
{ 13, 14, 15, 16, NO_LED },
{ 17, 18, 19, 20, 21 },
{ 22, 23, 24, 25, 26 },
}, {
// LED Index to Physical Position
{ 0,0 }, { 37,0 }, { 74,0 }, {111,0 }, { 0,34 }, { 37,34 }, { 74,34 }, {111,34 }, { 0,62 }, { 37,62 },
{ 74,62 }, {111,62 }, {120,75 }, { 0,89 }, { 37,89 }, { 74,89 }, {111,89 }, { 0,117}, { 37,117}, { 74,117},
{111,117}, {120,130}, { 0,137}, { 18,144}, { 37,137}, { 74,144}, {111,144}
}, {
// LED Index to Flag
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
} };
#endif

View file

@ -15,8 +15,36 @@
"cycle_left_right": true,
"cycle_up_down": true
},
"center_point": [60, 77],
"driver": "ws2812",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 69, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 138, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 207, "y": 0, "flags": 4},
{"matrix": [1, 0], "x": 0, "y": 13, "flags": 4},
{"matrix": [1, 1], "x": 69, "y": 13, "flags": 4},
{"matrix": [1, 2], "x": 138, "y": 13, "flags": 4},
{"matrix": [1, 3], "x": 207, "y": 13, "flags": 4},
{"matrix": [2, 0], "x": 0, "y": 26, "flags": 4},
{"matrix": [2, 1], "x": 69, "y": 26, "flags": 4},
{"matrix": [2, 2], "x": 138, "y": 26, "flags": 4},
{"matrix": [2, 3], "x": 207, "y": 26, "flags": 4},
{"matrix": [2, 4], "x": 224, "y": 30, "flags": 4},
{"matrix": [3, 0], "x": 0, "y": 38, "flags": 4},
{"matrix": [3, 1], "x": 69, "y": 38, "flags": 4},
{"matrix": [3, 2], "x": 138, "y": 38, "flags": 4},
{"matrix": [3, 3], "x": 207, "y": 38, "flags": 4},
{"matrix": [4, 0], "x": 0, "y": 52, "flags": 4},
{"matrix": [4, 1], "x": 69, "y": 52, "flags": 4},
{"matrix": [4, 2], "x": 138, "y": 52, "flags": 4},
{"matrix": [4, 3], "x": 207, "y": 52, "flags": 4},
{"matrix": [4, 4], "x": 224, "y": 56, "flags": 4},
{"matrix": [5, 0], "x": 0, "y": 62, "flags": 4},
{"matrix": [5, 1], "x": 33, "y": 64, "flags": 4},
{"matrix": [5, 2], "x": 69, "y": 62, "flags": 4},
{"matrix": [5, 3], "x": 138, "y": 64, "flags": 4},
{"matrix": [5, 4], "x": 207, "y": 64, "flags": 4}
],
"max_brightness": 175,
"sleep": true
},

View file

@ -68,6 +68,80 @@
"val": 80
},
"driver": "custom",
"layout": [
{"matrix": [1, 7], "x": 112, "y": 16, "flags": 4},
{"matrix": [1, 6], "x": 97, "y": 16, "flags": 4},
{"matrix": [1, 5], "x": 82, "y": 16, "flags": 4},
{"x": 67, "y": 16, "flags": 4},
{"matrix": [1, 4], "x": 52, "y": 16, "flags": 4},
{"x": 37, "y": 16, "flags": 4},
{"matrix": [1, 2], "x": 22, "y": 16, "flags": 4},
{"matrix": [1, 0], "x": 4, "y": 16, "flags": 1},
{"matrix": [2, 11], "x": 6, "y": 32, "flags": 1},
{"matrix": [0, 8], "x": 119, "y": 0, "flags": 4},
{"matrix": [0, 7], "x": 105, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 90, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 75, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 60, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 45, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 30, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 15, "y": 0, "flags": 4},
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{"matrix": [1, 9], "x": 134, "y": 0, "flags": 4},
{"matrix": [0, 10], "x": 149, "y": 0, "flags": 4},
{"matrix": [0, 11], "x": 164, "y": 0, "flags": 4},
{"matrix": [0, 12], "x": 179, "y": 0, "flags": 4},
{"matrix": [0, 13], "x": 202, "y": 0, "flags": 4},
{"x": 212, "y": 0, "flags": 4},
{"matrix": [0, 14], "x": 224, "y": 0, "flags": 4},
{"matrix": [1, 14], "x": 224, "y": 16, "flags": 4},
{"matrix": [2, 14], "x": 224, "y": 32, "flags": 4},
{"matrix": [1, 8], "x": 127, "y": 16, "flags": 4},
{"x": 142, "y": 16, "flags": 4},
{"matrix": [1, 10], "x": 157, "y": 16, "flags": 4},
{"matrix": [1, 11], "x": 172, "y": 16, "flags": 4},
{"matrix": [1, 12], "x": 187, "y": 16, "flags": 4},
{"matrix": [1, 13], "x": 205, "y": 16, "flags": 4},
{"matrix": [3, 14], "x": 224, "y": 48, "flags": 4},
{"matrix": [4, 14], "x": 224, "y": 64, "flags": 1},
{"matrix": [4, 13], "x": 209, "y": 64, "flags": 1},
{"matrix": [4, 5], "x": 95, "y": 64, "flags": 4},
{"matrix": [3, 5], "x": 93, "y": 48, "flags": 4},
{"matrix": [3, 4], "x": 78, "y": 48, "flags": 4},
{"matrix": [3, 3], "x": 63, "y": 48, "flags": 4},
{"matrix": [3, 2], "x": 49, "y": 48, "flags": 4},
{"matrix": [3, 1], "x": 34, "y": 48, "flags": 4},
{"x": 67, "y": 56, "flags": 4},
{"matrix": [4, 2], "x": 39, "y": 64, "flags": 1},
{"matrix": [4, 1], "x": 21, "y": 64, "flags": 1},
{"matrix": [2, 6], "x": 101, "y": 32, "flags": 4},
{"matrix": [2, 5], "x": 86, "y": 32, "flags": 4},
{"matrix": [2, 4], "x": 71, "y": 32, "flags": 4},
{"matrix": [2, 3], "x": 56, "y": 32, "flags": 4},
{"matrix": [2, 2], "x": 41, "y": 32, "flags": 4},
{"matrix": [2, 1], "x": 26, "y": 32, "flags": 4},
{"matrix": [3, 0], "x": 9, "y": 48, "flags": 1},
{"matrix": [4, 0], "x": 2, "y": 64, "flags": 1},
{"x": 0, "y": 64, "flags": 4},
{"matrix": [2, 7], "x": 116, "y": 32, "flags": 4},
{"matrix": [2, 8], "x": 131, "y": 32, "flags": 4},
{"matrix": [2, 9], "x": 146, "y": 32, "flags": 4},
{"matrix": [2, 10], "x": 161, "y": 32, "flags": 4},
{"x": 175, "y": 32, "flags": 4},
{"matrix": [2, 12], "x": 200, "y": 32, "flags": 4},
{"matrix": [3, 10], "x": 168, "y": 48, "flags": 4},
{"matrix": [3, 12], "x": 189, "y": 48, "flags": 4},
{"matrix": [3, 13], "x": 209, "y": 48, "flags": 4},
{"matrix": [3, 6], "x": 108, "y": 48, "flags": 4},
{"matrix": [3, 7], "x": 123, "y": 48, "flags": 4},
{"matrix": [3, 8], "x": 138, "y": 48, "flags": 4},
{"matrix": [3, 9], "x": 153, "y": 48, "flags": 4},
{"x": 120, "y": 48, "flags": 4},
{"x": 120, "y": 56, "flags": 4},
{"matrix": [4, 9], "x": 153, "y": 64, "flags": 1},
{"matrix": [4, 10], "x": 175, "y": 64, "flags": 1},
{"matrix": [4, 12], "x": 194, "y": 64, "flags": 1}
],
"sleep": true
},
"processor": "atmega32u4",

View file

@ -102,46 +102,6 @@ const is31fl3731_led_t PROGMEM g_is31fl3731_leds[IS31FL3731_LED_COUNT] = {
{1, C8_16, C7_16, C6_16} //D17
};
led_config_t g_led_config = { {
{ 17, 16, 15, 14, 13, 12, 11, 10, 9, 18, 19, 20, 21, 22, 24 },
{ 7, 6, 6, 4, 4, 2, 1, 0, 27, 18, 29, 30, 31, 32, 25 },
{ 8, 50, 49, 48, 47, 46, 45, 54, 55, 56, 57, 8, 59, NO_LED, 26 },
{ 51, 41, 40, 39, 38, 37, 63, 64, 65, 66, 60, NO_LED, 61, 62, 33 },
{ 52, 44, 43, NO_LED, NO_LED, 36, NO_LED, NO_LED, NO_LED, 69, 70, NO_LED, 71, 35, 34 },
}, {
//A0 .. A17
{112,16 }, { 97,16 }, { 82,16 }, { 67,16 }, { 52,16 }, { 37,16 }, { 22,16 }, { 4,16 }, { 6,32 },
{119,0 }, {105,0 }, { 90,0 }, { 75,0 }, { 60,0 }, { 45,0 }, { 30,0 }, { 15,0 }, { 0,0 },
//B0 .. B17
{134,0 }, {149,0 }, {164,0 }, {179,0 }, {202,0 }, {255,255}, {224,0 }, {224,16 }, {224,32 },
{127,16 }, {142,16 }, {157,16 }, {172,16 }, {187,16 }, {205,16 }, {224,48 }, {224,64 }, {209,64 },
//C0 .. C17
{ 95,64 }, { 93,48 }, { 78,48 }, { 63,48 }, { 49,48 }, { 34,48 }, { 67,56 }, { 39,64 }, { 21,64 },
{101,32 }, { 86,32 }, { 71,32 }, { 56,32 }, { 41,32 }, { 26,32 }, { 9,48 }, { 2,64 }, {255,255},
//D0 .. D17
{116,32 }, {131,32 }, {146,32 }, {161,32 }, {175,32 }, {200,32 }, {168,48 }, {189,48 }, {209,48 },
{108,48 }, {123,48 }, {138,48 }, {153,48 }, {255,255}, {120,56 }, {153,64 }, {175,64 }, {194,64 }
}, {
//A0 .. A17
4, 4, 4, 4, 4, 4, 4, 1, 1,
4, 4, 4, 4, 4, 4, 4, 4, 4,
//B0 .. B17
4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 1, 1,
//C0 .. C17
4, 4, 4, 4, 4, 4, 4, 1, 1,
4, 4, 4, 4, 4, 4, 1, 1, 4,
//D0 .. D17
4, 4, 4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 1, 1, 1
} };
// Custom Driver
static void init(void) {
i2c_init();

View file

@ -42,6 +42,76 @@
},
"rgb_matrix": {
"driver": "ws2812",
"layout": [
{"matrix": [0, 5], "x": 93, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 74, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 56, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 37, "y": 0, "flags": 4},
{"matrix": [0, 1], "x": 19, "y": 0, "flags": 4},
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 4},
{"matrix": [1, 0], "x": 0, "y": 16, "flags": 4},
{"matrix": [1, 1], "x": 19, "y": 16, "flags": 4},
{"matrix": [1, 2], "x": 37, "y": 16, "flags": 4},
{"matrix": [1, 3], "x": 56, "y": 16, "flags": 4},
{"matrix": [1, 4], "x": 74, "y": 16, "flags": 4},
{"matrix": [1, 5], "x": 93, "y": 16, "flags": 4},
{"matrix": [0, 6], "x": 112, "y": 24, "flags": 4},
{"matrix": [1, 6], "x": 112, "y": 40, "flags": 4},
{"matrix": [2, 5], "x": 93, "y": 32, "flags": 4},
{"matrix": [2, 4], "x": 74, "y": 32, "flags": 4},
{"matrix": [2, 3], "x": 56, "y": 32, "flags": 4},
{"matrix": [2, 2], "x": 37, "y": 32, "flags": 4},
{"matrix": [2, 1], "x": 19, "y": 32, "flags": 4},
{"matrix": [2, 0], "x": 0, "y": 32, "flags": 4},
{"matrix": [3, 0], "x": 0, "y": 48, "flags": 4},
{"matrix": [3, 1], "x": 19, "y": 48, "flags": 4},
{"matrix": [3, 2], "x": 37, "y": 48, "flags": 4},
{"matrix": [3, 3], "x": 56, "y": 48, "flags": 4},
{"matrix": [3, 4], "x": 74, "y": 48, "flags": 4},
{"matrix": [3, 5], "x": 93, "y": 48, "flags": 4},
{"matrix": [2, 6], "x": 112, "y": 52, "flags": 4},
{"matrix": [4, 6], "x": 112, "y": 64, "flags": 4},
{"matrix": [4, 5], "x": 93, "y": 64, "flags": 4},
{"matrix": [4, 4], "x": 74, "y": 64, "flags": 4},
{"matrix": [4, 3], "x": 56, "y": 64, "flags": 4},
{"matrix": [4, 2], "x": 37, "y": 64, "flags": 4},
{"matrix": [4, 1], "x": 19, "y": 64, "flags": 4},
{"matrix": [4, 0], "x": 0, "y": 64, "flags": 4},
{"matrix": [5, 5], "x": 132, "y": 0, "flags": 4},
{"matrix": [5, 4], "x": 150, "y": 0, "flags": 4},
{"matrix": [5, 3], "x": 169, "y": 0, "flags": 4},
{"matrix": [5, 2], "x": 187, "y": 0, "flags": 4},
{"matrix": [5, 1], "x": 206, "y": 0, "flags": 4},
{"matrix": [5, 0], "x": 224, "y": 0, "flags": 4},
{"matrix": [6, 0], "x": 224, "y": 16, "flags": 4},
{"matrix": [6, 1], "x": 206, "y": 16, "flags": 4},
{"matrix": [6, 2], "x": 187, "y": 16, "flags": 4},
{"matrix": [6, 3], "x": 169, "y": 16, "flags": 4},
{"matrix": [6, 4], "x": 150, "y": 16, "flags": 4},
{"matrix": [6, 5], "x": 132, "y": 16, "flags": 4},
{"matrix": [5, 6], "x": 113, "y": 24, "flags": 4},
{"matrix": [6, 6], "x": 113, "y": 40, "flags": 4},
{"matrix": [7, 5], "x": 132, "y": 32, "flags": 4},
{"matrix": [7, 4], "x": 150, "y": 32, "flags": 4},
{"matrix": [7, 3], "x": 169, "y": 32, "flags": 4},
{"matrix": [7, 2], "x": 187, "y": 32, "flags": 4},
{"matrix": [7, 1], "x": 206, "y": 32, "flags": 4},
{"matrix": [7, 0], "x": 224, "y": 32, "flags": 4},
{"matrix": [8, 0], "x": 224, "y": 48, "flags": 4},
{"matrix": [8, 1], "x": 206, "y": 48, "flags": 4},
{"matrix": [8, 2], "x": 187, "y": 48, "flags": 4},
{"matrix": [8, 3], "x": 169, "y": 48, "flags": 4},
{"matrix": [8, 4], "x": 150, "y": 48, "flags": 4},
{"matrix": [8, 5], "x": 132, "y": 48, "flags": 4},
{"matrix": [7, 6], "x": 113, "y": 52, "flags": 4},
{"matrix": [9, 6], "x": 113, "y": 64, "flags": 4},
{"matrix": [9, 5], "x": 132, "y": 64, "flags": 4},
{"matrix": [9, 4], "x": 150, "y": 64, "flags": 4},
{"matrix": [9, 3], "x": 169, "y": 64, "flags": 4},
{"matrix": [9, 2], "x": 187, "y": 64, "flags": 4},
{"matrix": [9, 1], "x": 206, "y": 64, "flags": 4},
{"matrix": [9, 0], "x": 224, "y": 64, "flags": 4}
],
"max_brightness": 150,
"sat_steps": 8,
"speed_steps": 10,

View file

@ -1,54 +0,0 @@
/*
Copyright 2021 Spencer Deven <splitlogicdesign@gmail.com>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 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 "quantum.h"
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = { {
// Key Matrix to LED Index
// Left Hand
{ 5, 4, 3, 2, 1, 0, 12 },
{ 6, 7, 8, 9, 10, 11, 13 },
{ 19, 18, 17, 16, 15, 14, 26 },
{ 20, 21, 22, 23, 24, 25, NO_LED },
{ 33, 32, 31, 30, 29, 28, 27},
// Right Hand
{ 39, 38, 37, 36, 35, 34, 46 },
{ 40, 41, 42, 43, 44, 45, 47 },
{ 53, 52, 51, 50, 49, 48, 60 },
{ 54, 55, 56, 57, 58, 59, NO_LED },
{ 67, 66, 65, 64, 63, 62, 61 },
}, {
// LED Index to Physical Position
// Left Hand
{ 93, 0 }, { 74, 0 }, { 56, 0 }, { 37, 0 }, { 19, 0 }, { 0, 0 }, { 0, 16 },
{ 19, 16 }, { 37, 16 }, { 56, 16 }, { 74, 16 }, { 93, 16 }, { 112, 24 }, { 112, 40 },
{ 93, 32 }, { 74, 32 }, { 56, 32 }, { 37, 32 }, { 19, 32 }, { 0, 32 }, { 0, 48 },
{ 19, 48 }, { 37, 48 }, { 56, 48 }, { 74, 48 }, { 93, 48 }, { 112, 52 },
{ 112, 64 }, { 93, 64 }, { 74, 64 }, { 56, 64 }, { 37, 64 }, { 19, 64 }, { 0, 64 },
// Right Hand
{ 132, 0 }, { 150, 0 }, { 169, 0 }, { 187, 0 }, { 206, 0 }, { 224, 0 }, { 224, 16 },
{ 206, 16 }, { 187, 16 }, { 169, 16 }, { 150, 16 }, { 132, 16 }, { 113, 24 }, { 113, 40 },
{ 132, 32 }, { 150, 32 }, { 169, 32 }, { 187, 32 }, { 206, 32 }, { 224, 32 }, { 224, 48 },
{ 206, 48 }, { 187, 48 }, { 169, 48 }, { 150, 48 }, { 132, 48 }, { 113, 52 },
{ 113, 64 }, { 132, 64 }, { 150, 64 }, { 169, 64 }, { 187, 64 }, { 206, 64 }, { 224, 64 },
}, {
// LED Index to Flag
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, 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, 4, 4, 4, 4, 4, 4, 4, 4
} };
#endif

View file

@ -1,31 +0,0 @@
/*
Copyright 2022 an_achronism (@an-achronism)
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 RP2040_BOOTLOADER_DOUBLE_TAP_RESET
/* disable debug print */
//#define NO_DEBUG
/* disable print */
//#define NO_PRINT
/* disable action features */
//#define NO_ACTION_LAYER
//#define NO_ACTION_TAPPING
//#define NO_ACTION_ONESHOT

View file

@ -17,8 +17,5 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
#pragma once
#ifdef OLED_ENABLE
# define OLED_DISPLAY_128X64
# define OLED_TIMEOUT 60000
# define OLED_FONT_H "keyboards/anavi/macropad8/glcdfont.c"
#endif
#define OLED_DISPLAY_128X64
#define OLED_TIMEOUT 60000

View file

@ -1,232 +0,0 @@
#include "progmem.h"
// Corne 8x6 font with QMK Firmware Logo
// Online editor: https://helixfonteditor.netlify.com/
// clang-format off
const unsigned char font[] PROGMEM = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x3E, 0x5B, 0x4F, 0x5B, 0x3E, 0x00,
0x3E, 0x6B, 0x4F, 0x6B, 0x3E, 0x00,
0x1C, 0x3E, 0x7C, 0x3E, 0x1C, 0x00,
0x18, 0x3C, 0x7E, 0x3C, 0x18, 0x00,
0x1C, 0x57, 0x7D, 0x57, 0x1C, 0x00,
0x1C, 0x5E, 0x7F, 0x5E, 0x1C, 0x00,
0x00, 0x18, 0x3C, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xC3, 0xE7, 0xFF, 0x00,
0x00, 0x18, 0x24, 0x18, 0x00, 0x00,
0xFF, 0xE7, 0xDB, 0xE7, 0xFF, 0x00,
0x30, 0x48, 0x3A, 0x06, 0x0E, 0x00,
0x26, 0x29, 0x79, 0x29, 0x26, 0x00,
0x40, 0x7F, 0x05, 0x05, 0x07, 0x00,
0x40, 0x7F, 0x05, 0x25, 0x3F, 0x00,
0x5A, 0x3C, 0xE7, 0x3C, 0x5A, 0x00,
0x7F, 0x3E, 0x1C, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x00,
0x14, 0x22, 0x7F, 0x22, 0x14, 0x00,
0x5F, 0x5F, 0x00, 0x5F, 0x5F, 0x00,
0x06, 0x09, 0x7F, 0x01, 0x7F, 0x00,
0x00, 0x66, 0x89, 0x95, 0x6A, 0x00,
0x60, 0x60, 0x60, 0x60, 0x60, 0x00,
0x94, 0xA2, 0xFF, 0xA2, 0x94, 0x00,
0x08, 0x04, 0x7E, 0x04, 0x08, 0x00,
0x10, 0x20, 0x7E, 0x20, 0x10, 0x00,
0x08, 0x08, 0x2A, 0x1C, 0x08, 0x00,
0x08, 0x1C, 0x2A, 0x08, 0x08, 0x00,
0x1E, 0x10, 0x10, 0x10, 0x10, 0x00,
0x0C, 0x1E, 0x0C, 0x1E, 0x0C, 0x00,
0x30, 0x38, 0x3E, 0x38, 0x30, 0x00,
0x06, 0x0E, 0x3E, 0x0E, 0x06, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x5F, 0x00, 0x00, 0x00,
0x00, 0x07, 0x00, 0x07, 0x00, 0x00,
0x14, 0x7F, 0x14, 0x7F, 0x14, 0x00,
0x24, 0x2A, 0x7F, 0x2A, 0x12, 0x00,
0x23, 0x13, 0x08, 0x64, 0x62, 0x00,
0x36, 0x49, 0x56, 0x20, 0x50, 0x00,
0x00, 0x08, 0x07, 0x03, 0x00, 0x00,
0x00, 0x1C, 0x22, 0x41, 0x00, 0x00,
0x00, 0x41, 0x22, 0x1C, 0x00, 0x00,
0x2A, 0x1C, 0x7F, 0x1C, 0x2A, 0x00,
0x08, 0x08, 0x3E, 0x08, 0x08, 0x00,
0x00, 0x80, 0x70, 0x30, 0x00, 0x00,
0x08, 0x08, 0x08, 0x08, 0x08, 0x00,
0x00, 0x00, 0x60, 0x60, 0x00, 0x00,
0x20, 0x10, 0x08, 0x04, 0x02, 0x00,
0x3E, 0x51, 0x49, 0x45, 0x3E, 0x00,
0x00, 0x42, 0x7F, 0x40, 0x00, 0x00,
0x72, 0x49, 0x49, 0x49, 0x46, 0x00,
0x21, 0x41, 0x49, 0x4D, 0x33, 0x00,
0x18, 0x14, 0x12, 0x7F, 0x10, 0x00,
0x27, 0x45, 0x45, 0x45, 0x39, 0x00,
0x3C, 0x4A, 0x49, 0x49, 0x31, 0x00,
0x41, 0x21, 0x11, 0x09, 0x07, 0x00,
0x36, 0x49, 0x49, 0x49, 0x36, 0x00,
0x46, 0x49, 0x49, 0x29, 0x1E, 0x00,
0x00, 0x00, 0x14, 0x00, 0x00, 0x00,
0x00, 0x40, 0x34, 0x00, 0x00, 0x00,
0x00, 0x08, 0x14, 0x22, 0x41, 0x00,
0x14, 0x14, 0x14, 0x14, 0x14, 0x00,
0x00, 0x41, 0x22, 0x14, 0x08, 0x00,
0x02, 0x01, 0x59, 0x09, 0x06, 0x00,
0x3E, 0x41, 0x5D, 0x59, 0x4E, 0x00,
0x7C, 0x12, 0x11, 0x12, 0x7C, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x36, 0x00,
0x3E, 0x41, 0x41, 0x41, 0x22, 0x00,
0x7F, 0x41, 0x41, 0x41, 0x3E, 0x00,
0x7F, 0x49, 0x49, 0x49, 0x41, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x01, 0x00,
0x3E, 0x41, 0x41, 0x51, 0x73, 0x00,
0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00,
0x00, 0x41, 0x7F, 0x41, 0x00, 0x00,
0x20, 0x40, 0x41, 0x3F, 0x01, 0x00,
0x7F, 0x08, 0x14, 0x22, 0x41, 0x00,
0x7F, 0x40, 0x40, 0x40, 0x40, 0x00,
0x7F, 0x02, 0x1C, 0x02, 0x7F, 0x00,
0x7F, 0x04, 0x08, 0x10, 0x7F, 0x00,
0x3E, 0x41, 0x41, 0x41, 0x3E, 0x00,
0x7F, 0x09, 0x09, 0x09, 0x06, 0x00,
0x3E, 0x41, 0x51, 0x21, 0x5E, 0x00,
0x7F, 0x09, 0x19, 0x29, 0x46, 0x00,
0x26, 0x49, 0x49, 0x49, 0x32, 0x00,
0x03, 0x01, 0x7F, 0x01, 0x03, 0x00,
0x3F, 0x40, 0x40, 0x40, 0x3F, 0x00,
0x1F, 0x20, 0x40, 0x20, 0x1F, 0x00,
0x3F, 0x40, 0x38, 0x40, 0x3F, 0x00,
0x63, 0x14, 0x08, 0x14, 0x63, 0x00,
0x03, 0x04, 0x78, 0x04, 0x03, 0x00,
0x61, 0x59, 0x49, 0x4D, 0x43, 0x00,
0x00, 0x7F, 0x41, 0x41, 0x41, 0x00,
0x02, 0x04, 0x08, 0x10, 0x20, 0x00,
0x00, 0x41, 0x41, 0x41, 0x7F, 0x00,
0x04, 0x02, 0x01, 0x02, 0x04, 0x00,
0x40, 0x40, 0x40, 0x40, 0x40, 0x00,
0x00, 0x03, 0x07, 0x08, 0x00, 0x00,
0x20, 0x54, 0x54, 0x78, 0x40, 0x00,
0x7F, 0x28, 0x44, 0x44, 0x38, 0x00,
0x38, 0x44, 0x44, 0x44, 0x28, 0x00,
0x38, 0x44, 0x44, 0x28, 0x7F, 0x00,
0x38, 0x54, 0x54, 0x54, 0x18, 0x00,
0x00, 0x08, 0x7E, 0x09, 0x02, 0x00,
0x18, 0x24, 0x24, 0x1C, 0x78, 0x00,
0x7F, 0x08, 0x04, 0x04, 0x78, 0x00,
0x00, 0x44, 0x7D, 0x40, 0x00, 0x00,
0x20, 0x40, 0x40, 0x3D, 0x00, 0x00,
0x7F, 0x10, 0x28, 0x44, 0x00, 0x00,
0x00, 0x41, 0x7F, 0x40, 0x00, 0x00,
0x7C, 0x04, 0x78, 0x04, 0x78, 0x00,
0x7C, 0x08, 0x04, 0x04, 0x78, 0x00,
0x38, 0x44, 0x44, 0x44, 0x38, 0x00,
0x7C, 0x18, 0x24, 0x24, 0x18, 0x00,
0x18, 0x24, 0x24, 0x18, 0x7C, 0x00,
0x7C, 0x08, 0x04, 0x04, 0x08, 0x00,
0x48, 0x54, 0x54, 0x54, 0x24, 0x00,
0x04, 0x04, 0x3F, 0x44, 0x24, 0x00,
0x3C, 0x40, 0x40, 0x20, 0x7C, 0x00,
0x1C, 0x20, 0x40, 0x20, 0x1C, 0x00,
0x3C, 0x40, 0x30, 0x40, 0x3C, 0x00,
0x44, 0x28, 0x10, 0x28, 0x44, 0x00,
0x4C, 0x90, 0x90, 0x90, 0x7C, 0x00,
0x44, 0x64, 0x54, 0x4C, 0x44, 0x00,
0x00, 0x08, 0x36, 0x41, 0x00, 0x00,
0x00, 0x00, 0x77, 0x00, 0x00, 0x00,
0x00, 0x41, 0x36, 0x08, 0x00, 0x00,
0x02, 0x01, 0x02, 0x04, 0x02, 0x00,
0x3C, 0x26, 0x23, 0x26, 0x3C, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xC0, 0xE0,
0xF0, 0xF8, 0xF8, 0x18, 0x00, 0xC0,
0xF0, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0x7E, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x80, 0xC0, 0xE0, 0xE0,
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xC0, 0x80, 0x00, 0x00, 0x00, 0x00,
0x80, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
0x00, 0x00, 0x00, 0xE0, 0xE0, 0xC0,
0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0x00,
0x00, 0xE0, 0xE0, 0xC0, 0xC0, 0xE0,
0xE0, 0xE0, 0xE0, 0xE0, 0xC0, 0x80,
0x00, 0x00, 0x00, 0x00, 0x80, 0xC0,
0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0xE0, 0xC0, 0x80, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xE0, 0xF0, 0xF0, 0xF0, 0xE0, 0xEC,
0xEE, 0xF7, 0xF3, 0x70, 0x20, 0x00,
0x7C, 0x7C, 0x7C, 0x7E, 0x00, 0x7E,
0x7E, 0x7E, 0x7F, 0x7F, 0x7F, 0x00,
0x00, 0x80, 0xC0, 0xE0, 0x7E, 0x5B,
0x4F, 0x5B, 0xFE, 0xC0, 0x00, 0x00,
0xC0, 0x00, 0xDC, 0xD7, 0xDE, 0xDE,
0xDE, 0xD7, 0xDC, 0x00, 0xC0, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0xF8, 0xFC, 0xFE,
0xFF, 0xE0, 0x00, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0x80, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0x1F, 0x07, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0x81, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x81,
0xC3, 0xC3, 0xC3, 0x00, 0x00, 0xFF,
0xFF, 0xFF, 0x81, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x81, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0x01, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0xFF, 0x01, 0x00,
0x00, 0x00, 0x00, 0x01, 0xFF, 0xFF,
0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF,
0x9D, 0x1C, 0x1C, 0x1C, 0x1C, 0x1C,
0x1C, 0x9D, 0xDF, 0xDF, 0xDF, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x0F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
0x7F, 0x7F, 0x3F, 0x1E, 0x0C, 0x00,
0x1F, 0x1F, 0x1F, 0x3F, 0x00, 0x3F,
0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x00,
0x30, 0x7B, 0x7F, 0x78, 0x30, 0x20,
0x20, 0x30, 0x78, 0x7F, 0x3B, 0x00,
0x03, 0x00, 0x0F, 0x7F, 0x0F, 0x0F,
0x0F, 0x7F, 0x0F, 0x00, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x03, 0x0F, 0x1F,
0x3F, 0x3F, 0x3F, 0x3F, 0x1F, 0x1F,
0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F,
0x3F, 0x1F, 0x3F, 0x7F, 0x7F, 0x7F,
0x7F, 0x7C, 0x78, 0x78, 0x38, 0x1C,
0x0F, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x01, 0x03, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
0x03, 0x01, 0x00, 0x00, 0x00, 0x00,
0x01, 0x03, 0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0x07, 0x07, 0x03, 0x01,
0x00, 0x00, 0x00, 0x07, 0x07, 0x07,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x07, 0x07, 0x07, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x07, 0x07,
0x07, 0x00, 0x00, 0x00, 0x01, 0x03,
0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
0x07, 0x07, 0x03, 0x01, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

View file

@ -16,7 +16,5 @@
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define BACKLIGHT_PWM_DRIVER PWMD5
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_A

View file

@ -5,5 +5,64 @@
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina"
"bootloader": "caterina",
"layout_aliases": {
"LAYOUT_pcb_up": "LAYOUT",
"LAYOUT_pcb_down": "LAYOUT"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.6},
{"matrix": [0, 1], "x": 1, "y": 0.35},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0.35},
{"matrix": [0, 4], "x": 4, "y": 0.7},
{"matrix": [0, 6], "x": 8, "y": 0.7},
{"matrix": [0, 7], "x": 9, "y": 0.35},
{"matrix": [0, 8], "x": 10, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0.35},
{"matrix": [0, 10], "x": 12, "y": 0.6},
{"matrix": [1, 0], "x": 0, "y": 1.6},
{"matrix": [1, 1], "x": 1, "y": 1.35},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1.35},
{"matrix": [1, 4], "x": 4, "y": 1.7},
{"matrix": [1, 6], "x": 8, "y": 1.7},
{"matrix": [1, 7], "x": 9, "y": 1.35},
{"matrix": [1, 8], "x": 10, "y": 1},
{"matrix": [1, 9], "x": 11, "y": 1.35},
{"matrix": [1, 10], "x": 12, "y": 1.6},
{"matrix": [2, 0], "x": 0, "y": 2.6},
{"matrix": [2, 1], "x": 1, "y": 2.35},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2.35},
{"matrix": [2, 4], "x": 4, "y": 2.7},
{"matrix": [2, 6], "x": 8, "y": 2.7},
{"matrix": [2, 7], "x": 9, "y": 2.35},
{"matrix": [2, 8], "x": 10, "y": 2},
{"matrix": [2, 9], "x": 11, "y": 2.35},
{"matrix": [2, 10], "x": 12, "y": 2.6},
{"matrix": [3, 0], "x": 0, "y": 3.6},
{"matrix": [3, 1], "x": 1, "y": 3.35},
{"matrix": [3, 2], "x": 2, "y": 3},
{"matrix": [3, 3], "x": 3, "y": 3.35},
{"matrix": [3, 4], "x": 4, "y": 3.7},
{"matrix": [2, 5], "x": 5, "y": 2.95, "h": 1.5},
{"matrix": [3, 5], "x": 7, "y": 2.95, "h": 1.5},
{"matrix": [3, 6], "x": 8, "y": 3.7},
{"matrix": [3, 7], "x": 9, "y": 3.35},
{"matrix": [3, 8], "x": 10, "y": 3},
{"matrix": [3, 9], "x": 11, "y": 3.35},
{"matrix": [3, 10], "x": 12, "y": 3.6}
]
}
}
}

View file

@ -5,5 +5,64 @@
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "caterina"
"bootloader": "caterina",
"layout_aliases": {
"LAYOUT_pcb_up": "LAYOUT",
"LAYOUT_pcb_down": "LAYOUT"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.6},
{"matrix": [0, 1], "x": 1, "y": 0.35},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0.35},
{"matrix": [0, 4], "x": 4, "y": 0.7},
{"matrix": [0, 6], "x": 8, "y": 0.7},
{"matrix": [0, 7], "x": 9, "y": 0.35},
{"matrix": [0, 8], "x": 10, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0.35},
{"matrix": [0, 10], "x": 12, "y": 0.6},
{"matrix": [1, 0], "x": 0, "y": 1.6},
{"matrix": [1, 1], "x": 1, "y": 1.35},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1.35},
{"matrix": [1, 4], "x": 4, "y": 1.7},
{"matrix": [1, 6], "x": 8, "y": 1.7},
{"matrix": [1, 7], "x": 9, "y": 1.35},
{"matrix": [1, 8], "x": 10, "y": 1},
{"matrix": [1, 9], "x": 11, "y": 1.35},
{"matrix": [1, 10], "x": 12, "y": 1.6},
{"matrix": [2, 0], "x": 0, "y": 2.6},
{"matrix": [2, 1], "x": 1, "y": 2.35},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2.35},
{"matrix": [2, 4], "x": 4, "y": 2.7},
{"matrix": [2, 6], "x": 8, "y": 2.7},
{"matrix": [2, 7], "x": 9, "y": 2.35},
{"matrix": [2, 8], "x": 10, "y": 2},
{"matrix": [2, 9], "x": 11, "y": 2.35},
{"matrix": [2, 10], "x": 12, "y": 2.6},
{"matrix": [3, 0], "x": 0, "y": 3.6},
{"matrix": [3, 1], "x": 1, "y": 3.35},
{"matrix": [3, 2], "x": 2, "y": 3},
{"matrix": [3, 3], "x": 3, "y": 3.35},
{"matrix": [3, 4], "x": 4, "y": 3.7},
{"matrix": [3, 5], "x": 5, "y": 2.95, "h": 1.5},
{"matrix": [2, 5], "x": 7, "y": 2.95, "h": 1.5},
{"matrix": [3, 6], "x": 8, "y": 3.7},
{"matrix": [3, 7], "x": 9, "y": 3.35},
{"matrix": [3, 8], "x": 10, "y": 3},
{"matrix": [3, 9], "x": 11, "y": 3.35},
{"matrix": [3, 10], "x": 12, "y": 3.6}
]
}
}
}

View file

@ -8,5 +8,64 @@
"bootloader": "stm32duino",
"features": {
"bootmagic": true
},
"layout_aliases": {
"LAYOUT_pcb_up": "LAYOUT",
"LAYOUT_pcb_down": "LAYOUT"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.6},
{"matrix": [0, 1], "x": 1, "y": 0.35},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0.35},
{"matrix": [0, 4], "x": 4, "y": 0.7},
{"matrix": [0, 6], "x": 8, "y": 0.7},
{"matrix": [0, 7], "x": 9, "y": 0.35},
{"matrix": [0, 8], "x": 10, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0.35},
{"matrix": [0, 10], "x": 12, "y": 0.6},
{"matrix": [1, 0], "x": 0, "y": 1.6},
{"matrix": [1, 1], "x": 1, "y": 1.35},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1.35},
{"matrix": [1, 4], "x": 4, "y": 1.7},
{"matrix": [1, 6], "x": 8, "y": 1.7},
{"matrix": [1, 7], "x": 9, "y": 1.35},
{"matrix": [1, 8], "x": 10, "y": 1},
{"matrix": [1, 9], "x": 11, "y": 1.35},
{"matrix": [1, 10], "x": 12, "y": 1.6},
{"matrix": [2, 0], "x": 0, "y": 2.6},
{"matrix": [2, 1], "x": 1, "y": 2.35},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2.35},
{"matrix": [2, 4], "x": 4, "y": 2.7},
{"matrix": [2, 6], "x": 8, "y": 2.7},
{"matrix": [2, 7], "x": 9, "y": 2.35},
{"matrix": [2, 8], "x": 10, "y": 2},
{"matrix": [2, 9], "x": 11, "y": 2.35},
{"matrix": [2, 10], "x": 12, "y": 2.6},
{"matrix": [3, 0], "x": 0, "y": 3.6},
{"matrix": [3, 1], "x": 1, "y": 3.35},
{"matrix": [3, 2], "x": 2, "y": 3},
{"matrix": [3, 3], "x": 3, "y": 3.35},
{"matrix": [3, 4], "x": 4, "y": 3.7},
{"matrix": [2, 5], "x": 5, "y": 2.95, "h": 1.5},
{"matrix": [3, 5], "x": 7, "y": 2.95, "h": 1.5},
{"matrix": [3, 6], "x": 8, "y": 3.7},
{"matrix": [3, 7], "x": 9, "y": 3.35},
{"matrix": [3, 8], "x": 10, "y": 3},
{"matrix": [3, 9], "x": 11, "y": 3.35},
{"matrix": [3, 10], "x": 12, "y": 3.6}
]
}
}
}

View file

@ -14,5 +14,64 @@
},
"bluetooth": {
"driver": "bluefruit_le"
},
"layout_aliases": {
"LAYOUT_pcb_up": "LAYOUT",
"LAYOUT_pcb_down": "LAYOUT"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.6},
{"matrix": [0, 1], "x": 1, "y": 0.35},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0.35},
{"matrix": [0, 4], "x": 4, "y": 0.7},
{"matrix": [0, 6], "x": 8, "y": 0.7},
{"matrix": [0, 7], "x": 9, "y": 0.35},
{"matrix": [0, 8], "x": 10, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0.35},
{"matrix": [0, 10], "x": 12, "y": 0.6},
{"matrix": [1, 0], "x": 0, "y": 1.6},
{"matrix": [1, 1], "x": 1, "y": 1.35},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1.35},
{"matrix": [1, 4], "x": 4, "y": 1.7},
{"matrix": [1, 6], "x": 8, "y": 1.7},
{"matrix": [1, 7], "x": 9, "y": 1.35},
{"matrix": [1, 8], "x": 10, "y": 1},
{"matrix": [1, 9], "x": 11, "y": 1.35},
{"matrix": [1, 10], "x": 12, "y": 1.6},
{"matrix": [2, 0], "x": 0, "y": 2.6},
{"matrix": [2, 1], "x": 1, "y": 2.35},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2.35},
{"matrix": [2, 4], "x": 4, "y": 2.7},
{"matrix": [2, 6], "x": 8, "y": 2.7},
{"matrix": [2, 7], "x": 9, "y": 2.35},
{"matrix": [2, 8], "x": 10, "y": 2},
{"matrix": [2, 9], "x": 11, "y": 2.35},
{"matrix": [2, 10], "x": 12, "y": 2.6},
{"matrix": [3, 0], "x": 0, "y": 3.6},
{"matrix": [3, 1], "x": 1, "y": 3.35},
{"matrix": [3, 2], "x": 2, "y": 3},
{"matrix": [3, 3], "x": 3, "y": 3.35},
{"matrix": [3, 4], "x": 4, "y": 3.7},
{"matrix": [2, 5], "x": 5, "y": 2.95, "h": 1.5},
{"matrix": [3, 5], "x": 7, "y": 2.95, "h": 1.5},
{"matrix": [3, 6], "x": 8, "y": 3.7},
{"matrix": [3, 7], "x": 9, "y": 3.35},
{"matrix": [3, 8], "x": 10, "y": 3},
{"matrix": [3, 9], "x": 11, "y": 3.35},
{"matrix": [3, 10], "x": 12, "y": 3.6}
]
}
}
}

View file

@ -21,116 +21,5 @@
"enabled": true,
"resync": true
}
},
"layout_aliases": {
"LAYOUT": "LAYOUT_pcb_up"
},
"layouts": {
"LAYOUT_pcb_up": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.6},
{"matrix": [0, 1], "x": 1, "y": 0.35},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0.35},
{"matrix": [0, 4], "x": 4, "y": 0.7},
{"matrix": [0, 6], "x": 8, "y": 0.7},
{"matrix": [0, 7], "x": 9, "y": 0.35},
{"matrix": [0, 8], "x": 10, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0.35},
{"matrix": [0, 10], "x": 12, "y": 0.6},
{"matrix": [1, 0], "x": 0, "y": 1.6},
{"matrix": [1, 1], "x": 1, "y": 1.35},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1.35},
{"matrix": [1, 4], "x": 4, "y": 1.7},
{"matrix": [1, 6], "x": 8, "y": 1.7},
{"matrix": [1, 7], "x": 9, "y": 1.35},
{"matrix": [1, 8], "x": 10, "y": 1},
{"matrix": [1, 9], "x": 11, "y": 1.35},
{"matrix": [1, 10], "x": 12, "y": 1.6},
{"matrix": [2, 0], "x": 0, "y": 2.6},
{"matrix": [2, 1], "x": 1, "y": 2.35},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2.35},
{"matrix": [2, 4], "x": 4, "y": 2.7},
{"matrix": [2, 6], "x": 8, "y": 2.7},
{"matrix": [2, 7], "x": 9, "y": 2.35},
{"matrix": [2, 8], "x": 10, "y": 2},
{"matrix": [2, 9], "x": 11, "y": 2.35},
{"matrix": [2, 10], "x": 12, "y": 2.6},
{"matrix": [3, 0], "x": 0, "y": 3.6},
{"matrix": [3, 1], "x": 1, "y": 3.35},
{"matrix": [3, 2], "x": 2, "y": 3},
{"matrix": [3, 3], "x": 3, "y": 3.35},
{"matrix": [3, 4], "x": 4, "y": 3.7},
{"matrix": [2, 5], "x": 5, "y": 2.95, "h": 1.5},
{"matrix": [3, 5], "x": 7, "y": 2.95, "h": 1.5},
{"matrix": [3, 6], "x": 8, "y": 3.7},
{"matrix": [3, 7], "x": 9, "y": 3.35},
{"matrix": [3, 8], "x": 10, "y": 3},
{"matrix": [3, 9], "x": 11, "y": 3.35},
{"matrix": [3, 10], "x": 12, "y": 3.6}
]
},
"LAYOUT_pcb_down": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.6},
{"matrix": [0, 1], "x": 1, "y": 0.35},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0.35},
{"matrix": [0, 4], "x": 4, "y": 0.7},
{"matrix": [0, 6], "x": 8, "y": 0.7},
{"matrix": [0, 7], "x": 9, "y": 0.35},
{"matrix": [0, 8], "x": 10, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0.35},
{"matrix": [0, 10], "x": 12, "y": 0.6},
{"matrix": [1, 0], "x": 0, "y": 1.6},
{"matrix": [1, 1], "x": 1, "y": 1.35},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1.35},
{"matrix": [1, 4], "x": 4, "y": 1.7},
{"matrix": [1, 6], "x": 8, "y": 1.7},
{"matrix": [1, 7], "x": 9, "y": 1.35},
{"matrix": [1, 8], "x": 10, "y": 1},
{"matrix": [1, 9], "x": 11, "y": 1.35},
{"matrix": [1, 10], "x": 12, "y": 1.6},
{"matrix": [2, 0], "x": 0, "y": 2.6},
{"matrix": [2, 1], "x": 1, "y": 2.35},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2.35},
{"matrix": [2, 4], "x": 4, "y": 2.7},
{"matrix": [2, 6], "x": 8, "y": 2.7},
{"matrix": [2, 7], "x": 9, "y": 2.35},
{"matrix": [2, 8], "x": 10, "y": 2},
{"matrix": [2, 9], "x": 11, "y": 2.35},
{"matrix": [2, 10], "x": 12, "y": 2.6},
{"matrix": [3, 0], "x": 0, "y": 3.6},
{"matrix": [3, 1], "x": 1, "y": 3.35},
{"matrix": [3, 2], "x": 2, "y": 3},
{"matrix": [3, 3], "x": 3, "y": 3.35},
{"matrix": [3, 4], "x": 4, "y": 3.7},
{"matrix": [3, 5], "x": 5, "y": 2.95, "h": 1.5},
{"matrix": [2, 5], "x": 7, "y": 2.95, "h": 1.5},
{"matrix": [3, 6], "x": 8, "y": 3.7},
{"matrix": [3, 7], "x": 9, "y": 3.35},
{"matrix": [3, 8], "x": 10, "y": 3},
{"matrix": [3, 9], "x": 11, "y": 3.35},
{"matrix": [3, 10], "x": 12, "y": 3.6}
]
}
}
}

View file

@ -12,7 +12,7 @@
#define _LW 2
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = LAYOUT_pcb_up( /* Qwerty */
[_QW] = LAYOUT( /* Qwerty */
KC_Q, KC_W, KC_E, KC_R, KC_T, KC_Y, KC_U, KC_I, KC_O, KC_P ,
KC_A, KC_S, KC_D, KC_F, KC_G, KC_H, KC_J, KC_K, KC_L, KC_SCLN ,
KC_Z, KC_X, KC_C, KC_V, KC_B, KC_N, KC_M, KC_COMM, KC_DOT, KC_SLSH ,
@ -25,7 +25,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* [ ] ( ) & || ` 1 2 3 \
* lower insert super shift bksp ctrl || alt space fn . 0 =
*/
[_RS] = LAYOUT_pcb_up( /* [> RAISE <] */
[_RS] = LAYOUT( /* [> RAISE <] */
KC_EXLM, KC_AT, KC_UP, KC_LCBR, KC_RCBR, KC_PGUP, KC_7, KC_8, KC_9, KC_ASTR ,
KC_HASH, KC_LEFT, KC_DOWN, KC_RGHT, KC_DLR, KC_PGDN, KC_4, KC_5, KC_6, KC_PLUS ,
KC_LBRC, KC_RBRC, KC_LPRN, KC_RPRN, KC_AMPR, KC_GRV, KC_1, KC_2, KC_3, KC_BSLS ,
@ -36,7 +36,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* volup reset || F1 F2 F3 F12
* voldn super shift bksp ctrl || alt space L0 prtsc scroll pause
*/
[_LW] = LAYOUT_pcb_up( /* [> LOWER <] */
[_LW] = LAYOUT( /* [> LOWER <] */
KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_UP, KC_F7, KC_F8, KC_F9, KC_F10 ,
KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_DOWN, KC_F4, KC_F5, KC_F6, KC_F11 ,
KC_NO, KC_VOLU, KC_NO, KC_NO, QK_BOOT, KC_NO, KC_F1, KC_F2, KC_F3, KC_F12 ,

View file

@ -25,7 +25,7 @@ enum custom_keycodes {
*/
const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
[_QW] = LAYOUT_pcb_down( /* Workman */
[_QW] = LAYOUT( /* Workman */
KC_Q, KC_D, KC_R, KC_W, KC_B, KC_J, KC_F, KC_U, KC_P, KC_SCLN,
KC_A, KC_S, KC_H, KC_T, KC_G, KC_Y, KC_N, KC_E, KC_O, KC_I,
KC_Z, KC_X, KC_M, KC_C, KC_V, KC_K, KC_L, KC_COMM, KC_DOT, KC_SLSH,
@ -39,7 +39,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* menu caps < > del || _ 0 =
*/
[_RS] = LAYOUT_pcb_down( /* [> RAISE <] */
[_RS] = LAYOUT( /* [> RAISE <] */
KC_EXLM, KC_AT, KC_LCBR, KC_RCBR, KC_PIPE, KC_MINS, KC_7, KC_8, KC_9, KC_ASTR,
KC_HASH, KC_DLR, KC_LPRN, KC_RPRN, KC_GRV, KC_DOT, KC_4, KC_5, KC_6, KC_PLUS,
KC_PERC, KC_CIRC, KC_LBRC, KC_RBRC, KC_TILD, KC_AMPR, KC_1, KC_2, KC_3, KC_BSLS,
@ -52,7 +52,7 @@ const uint16_t PROGMEM keymaps[][MATRIX_ROWS][MATRIX_COLS] = {
* || – ¨ reset
*/
[_LW] = LAYOUT_pcb_down( /* [> LOWER <] */
[_LW] = LAYOUT( /* [> LOWER <] */
KC_INS, KC_HOME, KC_UP, KC_END, KC_PGUP, KC_VOLU, KC_F7, KC_F8, KC_F9, KC_F10,
KC_DEL, KC_LEFT, KC_DOWN, KC_RGHT, KC_PGDN, KC_VOLD, KC_F4, KC_F5, KC_F6, KC_F11,
KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_TRNS, KC_MUTE, KC_F1, KC_F2, KC_F3, KC_F12,

View file

@ -4,5 +4,64 @@
"rows": ["F4", "B2", "B4", "B5"]
},
"diode_direction": "COL2ROW",
"development_board": "promicro"
"development_board": "promicro",
"layout_aliases": {
"LAYOUT_pcb_up": "LAYOUT",
"LAYOUT_pcb_down": "LAYOUT"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.6},
{"matrix": [0, 1], "x": 1, "y": 0.35},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0.35},
{"matrix": [0, 4], "x": 4, "y": 0.7},
{"matrix": [0, 6], "x": 8, "y": 0.7},
{"matrix": [0, 7], "x": 9, "y": 0.35},
{"matrix": [0, 8], "x": 10, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0.35},
{"matrix": [0, 10], "x": 12, "y": 0.6},
{"matrix": [1, 0], "x": 0, "y": 1.6},
{"matrix": [1, 1], "x": 1, "y": 1.35},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1.35},
{"matrix": [1, 4], "x": 4, "y": 1.7},
{"matrix": [1, 6], "x": 8, "y": 1.7},
{"matrix": [1, 7], "x": 9, "y": 1.35},
{"matrix": [1, 8], "x": 10, "y": 1},
{"matrix": [1, 9], "x": 11, "y": 1.35},
{"matrix": [1, 10], "x": 12, "y": 1.6},
{"matrix": [2, 0], "x": 0, "y": 2.6},
{"matrix": [2, 1], "x": 1, "y": 2.35},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2.35},
{"matrix": [2, 4], "x": 4, "y": 2.7},
{"matrix": [2, 6], "x": 8, "y": 2.7},
{"matrix": [2, 7], "x": 9, "y": 2.35},
{"matrix": [2, 8], "x": 10, "y": 2},
{"matrix": [2, 9], "x": 11, "y": 2.35},
{"matrix": [2, 10], "x": 12, "y": 2.6},
{"matrix": [3, 0], "x": 0, "y": 3.6},
{"matrix": [3, 1], "x": 1, "y": 3.35},
{"matrix": [3, 2], "x": 2, "y": 3},
{"matrix": [3, 3], "x": 3, "y": 3.35},
{"matrix": [3, 4], "x": 4, "y": 3.7},
{"matrix": [2, 5], "x": 5, "y": 2.95, "h": 1.5},
{"matrix": [3, 5], "x": 7, "y": 2.95, "h": 1.5},
{"matrix": [3, 6], "x": 8, "y": 3.7},
{"matrix": [3, 7], "x": 9, "y": 3.35},
{"matrix": [3, 8], "x": 10, "y": 3},
{"matrix": [3, 9], "x": 11, "y": 3.35},
{"matrix": [3, 10], "x": 12, "y": 3.6}
]
}
}
}

View file

@ -5,5 +5,64 @@
},
"diode_direction": "COL2ROW",
"processor": "atmega32u4",
"bootloader": "halfkay"
"bootloader": "halfkay",
"layout_aliases": {
"LAYOUT_pcb_up": "LAYOUT",
"LAYOUT_pcb_down": "LAYOUT"
},
"layouts": {
"LAYOUT": {
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0.6},
{"matrix": [0, 1], "x": 1, "y": 0.35},
{"matrix": [0, 2], "x": 2, "y": 0},
{"matrix": [0, 3], "x": 3, "y": 0.35},
{"matrix": [0, 4], "x": 4, "y": 0.7},
{"matrix": [0, 6], "x": 8, "y": 0.7},
{"matrix": [0, 7], "x": 9, "y": 0.35},
{"matrix": [0, 8], "x": 10, "y": 0},
{"matrix": [0, 9], "x": 11, "y": 0.35},
{"matrix": [0, 10], "x": 12, "y": 0.6},
{"matrix": [1, 0], "x": 0, "y": 1.6},
{"matrix": [1, 1], "x": 1, "y": 1.35},
{"matrix": [1, 2], "x": 2, "y": 1},
{"matrix": [1, 3], "x": 3, "y": 1.35},
{"matrix": [1, 4], "x": 4, "y": 1.7},
{"matrix": [1, 6], "x": 8, "y": 1.7},
{"matrix": [1, 7], "x": 9, "y": 1.35},
{"matrix": [1, 8], "x": 10, "y": 1},
{"matrix": [1, 9], "x": 11, "y": 1.35},
{"matrix": [1, 10], "x": 12, "y": 1.6},
{"matrix": [2, 0], "x": 0, "y": 2.6},
{"matrix": [2, 1], "x": 1, "y": 2.35},
{"matrix": [2, 2], "x": 2, "y": 2},
{"matrix": [2, 3], "x": 3, "y": 2.35},
{"matrix": [2, 4], "x": 4, "y": 2.7},
{"matrix": [2, 6], "x": 8, "y": 2.7},
{"matrix": [2, 7], "x": 9, "y": 2.35},
{"matrix": [2, 8], "x": 10, "y": 2},
{"matrix": [2, 9], "x": 11, "y": 2.35},
{"matrix": [2, 10], "x": 12, "y": 2.6},
{"matrix": [3, 0], "x": 0, "y": 3.6},
{"matrix": [3, 1], "x": 1, "y": 3.35},
{"matrix": [3, 2], "x": 2, "y": 3},
{"matrix": [3, 3], "x": 3, "y": 3.35},
{"matrix": [3, 4], "x": 4, "y": 3.7},
{"matrix": [2, 5], "x": 5, "y": 2.95, "h": 1.5},
{"matrix": [3, 5], "x": 7, "y": 2.95, "h": 1.5},
{"matrix": [3, 6], "x": 8, "y": 3.7},
{"matrix": [3, 7], "x": 9, "y": 3.35},
{"matrix": [3, 8], "x": 10, "y": 3},
{"matrix": [3, 9], "x": 11, "y": 3.35},
{"matrix": [3, 10], "x": 12, "y": 3.6}
]
}
}
}

View file

@ -87,28 +87,6 @@ const is31fl3733_led_t PROGMEM g_is31fl3733_leds[IS31FL3733_LED_COUNT] = {
{ 0, SW8_CS15, SW7_CS15, SW9_CS15 },
{ 0, SW11_CS15, SW10_CS15, SW12_CS15 },
};
led_config_t g_led_config = {
{
{ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 },
{ 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 },
{ 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, NO_LED, 43 },
{ NO_LED, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, NO_LED, 56 },
{ NO_LED, 57, NO_LED, 58, NO_LED, 59, 60, NO_LED, 61, NO_LED, 62, NO_LED, NO_LED, NO_LED, 63 }
}, {
{0, 0},{16, 0},{32, 0},{48, 0},{64, 0},{80, 0},{96, 0},{112, 0},{128, 0},{144, 0},{160, 0},{176, 0},{192, 0},{208, 0},{224, 0},
{0, 16},{16,16},{32,16},{48,16},{64,16},{80,16},{96,16},{112,16},{128,16},{144,16},{160,16},{176,16},{192,16},{208,16},{224,16},
{0,32},{16,32},{32,32},{48,32},{64,32},{80,32},{96,32},{112,32},{128,32},{144,32},{160,32},{176,32},{192,32},{224, 32},
{16,48},{32,48},{48,48},{64,48},{80,48},{96,48},{112,48},{128,48},{144,48},{160,48},{176,48},{192,48},{224,48},
{16,64},{48,64},{80,64},{96,64},{128,64},{160,64},{224,64}
}, {
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 1,
1, 1, 4, 1, 4, 1, 1
}
};
#endif
bool rgb_matrix_indicators_kb(void) {
if (!rgb_matrix_indicators_user()) {

View file

@ -44,6 +44,72 @@
"solid_multisplash": true
},
"driver": "is31fl3733",
"layout": [
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
{"matrix": [0, 1], "x": 16, "y": 0, "flags": 1},
{"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": 208, "y": 0, "flags": 4},
{"matrix": [0, 14], "x": 224, "y": 0, "flags": 1},
{"matrix": [1, 0], "x": 0, "y": 16, "flags": 1},
{"matrix": [1, 1], "x": 16, "y": 16, "flags": 1},
{"matrix": [1, 2], "x": 32, "y": 16, "flags": 4},
{"matrix": [1, 3], "x": 48, "y": 16, "flags": 4},
{"matrix": [1, 4], "x": 64, "y": 16, "flags": 4},
{"matrix": [1, 5], "x": 80, "y": 16, "flags": 4},
{"matrix": [1, 6], "x": 96, "y": 16, "flags": 4},
{"matrix": [1, 7], "x": 112, "y": 16, "flags": 4},
{"matrix": [1, 8], "x": 128, "y": 16, "flags": 4},
{"matrix": [1, 9], "x": 144, "y": 16, "flags": 4},
{"matrix": [1, 10], "x": 160, "y": 16, "flags": 4},
{"matrix": [1, 11], "x": 176, "y": 16, "flags": 4},
{"matrix": [1, 12], "x": 192, "y": 16, "flags": 4},
{"matrix": [1, 13], "x": 208, "y": 16, "flags": 4},
{"matrix": [1, 14], "x": 224, "y": 16, "flags": 1},
{"matrix": [2, 0], "x": 0, "y": 32, "flags": 1},
{"matrix": [2, 1], "x": 16, "y": 32, "flags": 1},
{"matrix": [2, 2], "x": 32, "y": 32, "flags": 4},
{"matrix": [2, 3], "x": 48, "y": 32, "flags": 4},
{"matrix": [2, 4], "x": 64, "y": 32, "flags": 4},
{"matrix": [2, 5], "x": 80, "y": 32, "flags": 4},
{"matrix": [2, 6], "x": 96, "y": 32, "flags": 4},
{"matrix": [2, 7], "x": 112, "y": 32, "flags": 4},
{"matrix": [2, 8], "x": 128, "y": 32, "flags": 4},
{"matrix": [2, 9], "x": 144, "y": 32, "flags": 4},
{"matrix": [2, 10], "x": 160, "y": 32, "flags": 4},
{"matrix": [2, 11], "x": 176, "y": 32, "flags": 4},
{"matrix": [2, 12], "x": 192, "y": 32, "flags": 4},
{"matrix": [2, 14], "x": 224, "y": 32, "flags": 1},
{"matrix": [3, 1], "x": 16, "y": 48, "flags": 1},
{"matrix": [3, 2], "x": 32, "y": 48, "flags": 4},
{"matrix": [3, 3], "x": 48, "y": 48, "flags": 4},
{"matrix": [3, 4], "x": 64, "y": 48, "flags": 4},
{"matrix": [3, 5], "x": 80, "y": 48, "flags": 4},
{"matrix": [3, 6], "x": 96, "y": 48, "flags": 4},
{"matrix": [3, 7], "x": 112, "y": 48, "flags": 4},
{"matrix": [3, 8], "x": 128, "y": 48, "flags": 4},
{"matrix": [3, 9], "x": 144, "y": 48, "flags": 4},
{"matrix": [3, 10], "x": 160, "y": 48, "flags": 4},
{"matrix": [3, 11], "x": 176, "y": 48, "flags": 4},
{"matrix": [3, 12], "x": 192, "y": 48, "flags": 4},
{"matrix": [3, 14], "x": 224, "y": 48, "flags": 1},
{"matrix": [4, 1], "x": 16, "y": 64, "flags": 1},
{"matrix": [4, 3], "x": 48, "y": 64, "flags": 1},
{"matrix": [4, 5], "x": 80, "y": 64, "flags": 4},
{"matrix": [4, 6], "x": 96, "y": 64, "flags": 1},
{"matrix": [4, 8], "x": 128, "y": 64, "flags": 4},
{"matrix": [4, 10], "x": 160, "y": 64, "flags": 1},
{"matrix": [4, 14], "x": 224, "y": 64, "flags": 1}
],
"sleep": true
},
"build": {

View file

@ -16,58 +16,6 @@
#include "bandominedoni.h"
#ifdef RGB_MATRIX_ENABLE
led_config_t g_led_config = {
{
{ 75, 46, 45, 44, 43, 42, NO_LED },
{ 47, 48, 49, 50, 51, 52, 53 },
{ 60, 59, 58, 57, 56, 55, 54 },
{ 61, 62, 63, 64, 65, 66, 67 },
{ 74, 73, 72, 71, 70, 69, 68 },
{ NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED, NO_LED },
{ 7, 6, 4, 3, 2, 1, 5},
{ 8, 9, 10, 11, 12, 13, 0 },
{ 19, 18, 17, 16, 15, 14, 41 },
{ 20, 21, 22, 23, 24, 25, 40 },
{ 30, 29, 28, 27, 26, 39, 38 },
{ 31, 32, 33, 34, 35, 36, 37 }
}, {
{ 145, 6 }, { 157, 5 }, { 153, 14 }, { 149, 22 }, { 145, 32 }, { 136, 35 }, { 139, 48 }, { 134, 61 },
{ 142, 60 }, { 148, 43 }, { 154, 29 }, { 158, 20 }, { 163, 12 }, { 168, 4 },
{ 178, 5 }, { 173, 12 }, { 168, 20 }, { 163, 28 }, { 157, 40 }, { 151, 55 },
{ 160, 52 }, { 166, 39 }, { 172, 28 }, { 177, 20 }, { 182, 13 }, { 188, 7 },
{ 192, 17 }, { 186, 23 }, { 181, 30 }, { 175, 39 }, { 169, 50 },
{ 178, 51 }, { 184, 41 }, { 190, 33 }, { 196, 27 },
{ 199, 37 }, { 193, 45 }, { 187, 53 },
{ 196, 56 }, { 202, 49 },
{ 205, 61 },
{ 202, 4 },
{ 84, 18 }, { 73, 13 }, { 62, 10 }, { 51, 8 }, { 39, 11 }, { 24, 22 },
{ 34, 19 }, { 45, 16 }, { 56, 16 }, { 66, 18 }, { 77, 22 }, { 87, 28 },
{ 92, 40 }, { 81, 32 }, { 71, 27 }, { 61, 24 }, { 51, 24 }, { 41, 24 }, { 30, 28 },
{ 24, 42 }, { 34, 37 }, { 44, 35 }, { 54, 34 }, { 64, 36 }, { 74, 38 }, { 84, 44 },
{ 87, 54 }, { 77, 49 }, { 67, 47 }, { 57, 45 }, { 47, 45 }, { 37, 48 }, { 27, 52 }, { 19, 56 },
}, {
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, 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, 4,
4, 4, 4, 4, 4, 4, 4,
4, 4, 4, 4, 4, 4, 4, 4
}
};
#endif
#if defined(SPLIT_HAND_MATRIX_GRID)
static uint8_t peek_matrix_intersection(pin_t out_pin, pin_t in_pin) {
gpio_set_pin_input_high(in_pin);

View file

@ -20,6 +20,84 @@
},
"rgb_matrix": {
"driver": "ws2812",
"layout": [
{"matrix": [7, 6], "x": 145, "y": 6, "flags": 4},
{"matrix": [6, 5], "x": 157, "y": 5, "flags": 4},
{"matrix": [6, 4], "x": 153, "y": 14, "flags": 4},
{"matrix": [6, 3], "x": 149, "y": 22, "flags": 4},
{"matrix": [6, 2], "x": 145, "y": 32, "flags": 4},
{"matrix": [6, 6], "x": 136, "y": 35, "flags": 4},
{"matrix": [6, 1], "x": 139, "y": 48, "flags": 4},
{"matrix": [6, 0], "x": 134, "y": 61, "flags": 4},
{"matrix": [7, 0], "x": 142, "y": 60, "flags": 4},
{"matrix": [7, 1], "x": 148, "y": 43, "flags": 4},
{"matrix": [7, 2], "x": 154, "y": 29, "flags": 4},
{"matrix": [7, 3], "x": 158, "y": 20, "flags": 4},
{"matrix": [7, 4], "x": 163, "y": 12, "flags": 4},
{"matrix": [7, 5], "x": 168, "y": 4, "flags": 4},
{"matrix": [8, 5], "x": 178, "y": 5, "flags": 4},
{"matrix": [8, 4], "x": 173, "y": 12, "flags": 4},
{"matrix": [8, 3], "x": 168, "y": 20, "flags": 4},
{"matrix": [8, 2], "x": 163, "y": 28, "flags": 4},
{"matrix": [8, 1], "x": 157, "y": 40, "flags": 4},
{"matrix": [8, 0], "x": 151, "y": 55, "flags": 4},
{"matrix": [9, 0], "x": 160, "y": 52, "flags": 4},
{"matrix": [9, 1], "x": 166, "y": 39, "flags": 4},
{"matrix": [9, 2], "x": 172, "y": 28, "flags": 4},
{"matrix": [9, 3], "x": 177, "y": 20, "flags": 4},
{"matrix": [9, 4], "x": 182, "y": 13, "flags": 4},
{"matrix": [9, 5], "x": 188, "y": 7, "flags": 4},
{"matrix": [10, 4], "x": 192, "y": 17, "flags": 4},
{"matrix": [10, 3], "x": 186, "y": 23, "flags": 4},
{"matrix": [10, 2], "x": 181, "y": 30, "flags": 4},
{"matrix": [10, 1], "x": 175, "y": 39, "flags": 4},
{"matrix": [10, 0], "x": 169, "y": 50, "flags": 4},
{"matrix": [11, 0], "x": 178, "y": 51, "flags": 4},
{"matrix": [11, 1], "x": 184, "y": 41, "flags": 4},
{"matrix": [11, 2], "x": 190, "y": 33, "flags": 4},
{"matrix": [11, 3], "x": 196, "y": 27, "flags": 4},
{"matrix": [11, 4], "x": 199, "y": 37, "flags": 4},
{"matrix": [11, 5], "x": 193, "y": 45, "flags": 4},
{"matrix": [11, 6], "x": 187, "y": 53, "flags": 4},
{"matrix": [10, 6], "x": 196, "y": 56, "flags": 4},
{"matrix": [10, 5], "x": 202, "y": 49, "flags": 4},
{"matrix": [9, 6], "x": 205, "y": 61, "flags": 4},
{"matrix": [8, 6], "x": 202, "y": 4, "flags": 4},
{"matrix": [0, 5], "x": 84, "y": 18, "flags": 4},
{"matrix": [0, 4], "x": 73, "y": 13, "flags": 4},
{"matrix": [0, 3], "x": 62, "y": 10, "flags": 4},
{"matrix": [0, 2], "x": 51, "y": 8, "flags": 4},
{"matrix": [0, 1], "x": 39, "y": 11, "flags": 4},
{"matrix": [1, 0], "x": 24, "y": 22, "flags": 4},
{"matrix": [1, 1], "x": 34, "y": 19, "flags": 4},
{"matrix": [1, 2], "x": 45, "y": 16, "flags": 4},
{"matrix": [1, 3], "x": 56, "y": 16, "flags": 4},
{"matrix": [1, 4], "x": 66, "y": 18, "flags": 4},
{"matrix": [1, 5], "x": 77, "y": 22, "flags": 4},
{"matrix": [1, 6], "x": 87, "y": 28, "flags": 4},
{"matrix": [2, 6], "x": 92, "y": 40, "flags": 4},
{"matrix": [2, 5], "x": 81, "y": 32, "flags": 4},
{"matrix": [2, 4], "x": 71, "y": 27, "flags": 4},
{"matrix": [2, 3], "x": 61, "y": 24, "flags": 4},
{"matrix": [2, 2], "x": 51, "y": 24, "flags": 4},
{"matrix": [2, 1], "x": 41, "y": 24, "flags": 4},
{"matrix": [2, 0], "x": 30, "y": 28, "flags": 4},
{"matrix": [3, 0], "x": 24, "y": 42, "flags": 4},
{"matrix": [3, 1], "x": 34, "y": 37, "flags": 4},
{"matrix": [3, 2], "x": 44, "y": 35, "flags": 4},
{"matrix": [3, 3], "x": 54, "y": 34, "flags": 4},
{"matrix": [3, 4], "x": 64, "y": 36, "flags": 4},
{"matrix": [3, 5], "x": 74, "y": 38, "flags": 4},
{"matrix": [3, 6], "x": 84, "y": 44, "flags": 4},
{"matrix": [4, 6], "x": 87, "y": 54, "flags": 4},
{"matrix": [4, 5], "x": 77, "y": 49, "flags": 4},
{"matrix": [4, 4], "x": 67, "y": 47, "flags": 4},
{"matrix": [4, 3], "x": 57, "y": 45, "flags": 4},
{"matrix": [4, 2], "x": 47, "y": 45, "flags": 4},
{"matrix": [4, 1], "x": 37, "y": 48, "flags": 4},
{"matrix": [4, 0], "x": 27, "y": 52, "flags": 4},
{"matrix": [0, 0], "x": 19, "y": 56, "flags": 4}
],
"max_brightness": 50,
"sleep": true
},

View file

@ -9,6 +9,13 @@
# define X1_KEYMAP_LAYER_COUNT 4
#endif
__attribute__((weak)) void x1_layer_led(uint8_t lyr) {
gpio_write_pin(IND1_LED, lyr >= 0);
gpio_write_pin(IND2_LED, lyr >= 1);
gpio_write_pin(IND3_LED, lyr >= 2);
gpio_write_pin(IND4_LED, lyr >= 3);
}
void keyboard_pre_init_kb(void) {
const pin_t indicator_leds[4] = {IND1_LED, IND2_LED, IND3_LED, IND4_LED};
for (int i = 0; i < 4; i++) {

View file

@ -38,12 +38,6 @@ static inline void x1_led_3_off(void) { gpio_write_pin_low(IND3_LED); }
static inline void x1_led_4_off(void) { gpio_write_pin_low(IND4_LED); }
// clang-format on
static inline void x1_layer_led(uint8_t lyr) {
gpio_write_pin(IND1_LED, lyr >= 0);
gpio_write_pin(IND2_LED, lyr >= 1);
gpio_write_pin(IND3_LED, lyr >= 2);
gpio_write_pin(IND4_LED, lyr >= 3);
}
void x1_layer_led(uint8_t lyr);
bool process_x1_layer_up(keyrecord_t *record);
bool process_x1_layer_down(keyrecord_t *record);

View file

@ -1,54 +0,0 @@
/* Copyright 2022 rooski15
*
* 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
// LED location configuration
led_config_t g_led_config = { {
{ 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80 },
{ 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, NO_LED },
{ 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, NO_LED, 41, 42, 43, 44, 45 },
{ 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, NO_LED, 24, 25, 26, 27, 28, NO_LED },
{ 0, 1, 2, NO_LED, NO_LED, 3, NO_LED, NO_LED, NO_LED, 4, 5, 6, 7, 8, 9, 10, 11, 12 }
},{
// Physical X,Y coordinates of each LED, starting with LED 0 above.
{ 1 , 64 }, { 16 , 64 }, { 31 , 64 }, { 75 , 64 }, { 123 , 64 }, { 132 , 64 }, { 144 , 64 }, { 159 , 64 }, { 171 , 64 }, { 183 , 64 }, { 198 , 64 }, { 210 , 64 }, { 224 , 64 },
{ 7 , 48 }, { 27 , 48 }, { 39 , 48 }, { 51 , 48 }, { 63 , 48 }, { 75 , 48 }, { 87 , 48 }, { 99 , 48 }, { 111 , 48 }, { 123 , 48 }, { 135 , 48 }, { 151 , 48 }, { 171 , 48 }, { 186 , 48 }, { 198 , 48 }, { 210 , 48 },
{ 4 , 36 }, { 20 , 36 }, { 32 , 36 }, { 44 , 36 }, { 56 , 36 }, { 68 , 36 }, { 80 , 36 }, { 92 , 36 }, { 104 , 36 }, { 116 , 36 }, { 128 , 36 }, { 140 , 36 }, { 160 , 36 }, { 186 , 36 }, { 198 , 36 }, { 210 , 36 }, { 224 , 36 },
{ 3 , 16 }, { 18 , 16 }, { 30 , 16 }, { 42 , 16 }, { 54 , 16 }, { 66 , 16 }, { 78 , 16 }, { 90 , 16 }, { 102 , 16 }, { 114 , 16 }, { 126 , 16 }, { 138 , 16 }, { 150 , 16 }, { 165 , 16 }, { 186 , 16 }, { 198 , 16 }, { 210 , 16 },
{ 0 , 0 }, { 12 , 0 }, { 24 , 0 }, { 36 , 0 }, { 48 , 0 }, { 60 , 0 }, { 72 , 0 }, { 84 , 0 }, { 96 , 0 }, { 108 , 0 }, { 120 , 0 }, { 132 , 0 }, { 144 , 0 }, { 162 , 0 }, { 186 , 0 }, { 198 , 0 }, { 210 , 0 }, { 224 , 0 },
},{
// "Flag Assignment" of each key
// 4 = Alpha
// 1 = Mod
// See https://docs.qmk.fm/#/feature_rgb_matrix?id=flags
// No Caps / Num indicators
1,1,1, 1, 1,1,1, 1,1,1, 4,4,1,
1,4,4,4,4,4,4,4,4,4,4,1, 1, 4,4,4,
1,4,4,4,4,4,4,4,4,4,4,4,1, 4,4,4,1,
1,4,4,4,4,4,4,4,4,4,4,4,4,4, 4,4,4,
1,4,4,4,4,4,4,4,4,4,4,4,4,1, 1,1,1,1
} };
/*
*/
#endif

View file

@ -74,6 +74,89 @@
"solid_multisplash": true
},
"driver": "ws2812",
"layout": [
{"matrix": [4, 0], "x": 1, "y": 64, "flags": 1},
{"matrix": [4, 1], "x": 16, "y": 64, "flags": 1},
{"matrix": [4, 2], "x": 31, "y": 64, "flags": 1},
{"matrix": [4, 5], "x": 75, "y": 64, "flags": 1},
{"matrix": [4, 9], "x": 123, "y": 64, "flags": 1},
{"matrix": [4, 10], "x": 132, "y": 64, "flags": 1},
{"matrix": [4, 11], "x": 144, "y": 64, "flags": 1},
{"matrix": [4, 12], "x": 159, "y": 64, "flags": 1},
{"matrix": [4, 13], "x": 171, "y": 64, "flags": 1},
{"matrix": [4, 14], "x": 183, "y": 64, "flags": 1},
{"matrix": [4, 15], "x": 198, "y": 64, "flags": 4},
{"matrix": [4, 16], "x": 210, "y": 64, "flags": 4},
{"matrix": [4, 17], "x": 224, "y": 64, "flags": 1},
{"matrix": [3, 0], "x": 7, "y": 48, "flags": 1},
{"matrix": [3, 1], "x": 27, "y": 48, "flags": 4},
{"matrix": [3, 2], "x": 39, "y": 48, "flags": 4},
{"matrix": [3, 3], "x": 51, "y": 48, "flags": 4},
{"matrix": [3, 4], "x": 63, "y": 48, "flags": 4},
{"matrix": [3, 5], "x": 75, "y": 48, "flags": 4},
{"matrix": [3, 6], "x": 87, "y": 48, "flags": 4},
{"matrix": [3, 7], "x": 99, "y": 48, "flags": 4},
{"matrix": [3, 8], "x": 111, "y": 48, "flags": 4},
{"matrix": [3, 9], "x": 123, "y": 48, "flags": 4},
{"matrix": [3, 10], "x": 135, "y": 48, "flags": 4},
{"matrix": [3, 12], "x": 151, "y": 48, "flags": 1},
{"matrix": [3, 13], "x": 171, "y": 48, "flags": 1},
{"matrix": [3, 14], "x": 186, "y": 48, "flags": 4},
{"matrix": [3, 15], "x": 198, "y": 48, "flags": 4},
{"matrix": [3, 16], "x": 210, "y": 48, "flags": 4},
{"matrix": [2, 0], "x": 4, "y": 36, "flags": 1},
{"matrix": [2, 1], "x": 20, "y": 36, "flags": 4},
{"matrix": [2, 2], "x": 32, "y": 36, "flags": 4},
{"matrix": [2, 3], "x": 44, "y": 36, "flags": 4},
{"matrix": [2, 4], "x": 56, "y": 36, "flags": 4},
{"matrix": [2, 5], "x": 68, "y": 36, "flags": 4},
{"matrix": [2, 6], "x": 80, "y": 36, "flags": 4},
{"matrix": [2, 7], "x": 92, "y": 36, "flags": 4},
{"matrix": [2, 8], "x": 104, "y": 36, "flags": 4},
{"matrix": [2, 9], "x": 116, "y": 36, "flags": 4},
{"matrix": [2, 10], "x": 128, "y": 36, "flags": 4},
{"matrix": [2, 11], "x": 140, "y": 36, "flags": 4},
{"matrix": [2, 13], "x": 160, "y": 36, "flags": 1},
{"matrix": [2, 14], "x": 186, "y": 36, "flags": 4},
{"matrix": [2, 15], "x": 198, "y": 36, "flags": 4},
{"matrix": [2, 16], "x": 210, "y": 36, "flags": 4},
{"matrix": [2, 17], "x": 224, "y": 36, "flags": 1},
{"matrix": [1, 0], "x": 3, "y": 16, "flags": 1},
{"matrix": [1, 1], "x": 18, "y": 16, "flags": 4},
{"matrix": [1, 2], "x": 30, "y": 16, "flags": 4},
{"matrix": [1, 3], "x": 42, "y": 16, "flags": 4},
{"matrix": [1, 4], "x": 54, "y": 16, "flags": 4},
{"matrix": [1, 5], "x": 66, "y": 16, "flags": 4},
{"matrix": [1, 6], "x": 78, "y": 16, "flags": 4},
{"matrix": [1, 7], "x": 90, "y": 16, "flags": 4},
{"matrix": [1, 8], "x": 102, "y": 16, "flags": 4},
{"matrix": [1, 9], "x": 114, "y": 16, "flags": 4},
{"matrix": [1, 10], "x": 126, "y": 16, "flags": 4},
{"matrix": [1, 11], "x": 138, "y": 16, "flags": 4},
{"matrix": [1, 12], "x": 150, "y": 16, "flags": 4},
{"matrix": [1, 13], "x": 165, "y": 16, "flags": 4},
{"matrix": [1, 14], "x": 186, "y": 16, "flags": 4},
{"matrix": [1, 15], "x": 198, "y": 16, "flags": 4},
{"matrix": [1, 16], "x": 210, "y": 16, "flags": 4},
{"matrix": [0, 0], "x": 0, "y": 0, "flags": 1},
{"matrix": [0, 1], "x": 12, "y": 0, "flags": 4},
{"matrix": [0, 2], "x": 24, "y": 0, "flags": 4},
{"matrix": [0, 3], "x": 36, "y": 0, "flags": 4},
{"matrix": [0, 4], "x": 48, "y": 0, "flags": 4},
{"matrix": [0, 5], "x": 60, "y": 0, "flags": 4},
{"matrix": [0, 6], "x": 72, "y": 0, "flags": 4},
{"matrix": [0, 7], "x": 84, "y": 0, "flags": 4},
{"matrix": [0, 8], "x": 96, "y": 0, "flags": 4},
{"matrix": [0, 9], "x": 108, "y": 0, "flags": 4},
{"matrix": [0, 10], "x": 120, "y": 0, "flags": 4},
{"matrix": [0, 11], "x": 132, "y": 0, "flags": 4},
{"matrix": [0, 12], "x": 144, "y": 0, "flags": 4},
{"matrix": [0, 13], "x": 162, "y": 0, "flags": 1},
{"matrix": [0, 14], "x": 186, "y": 0, "flags": 1},
{"matrix": [0, 15], "x": 198, "y": 0, "flags": 1},
{"matrix": [0, 16], "x": 210, "y": 0, "flags": 1},
{"matrix": [0, 17], "x": 224, "y": 0, "flags": 1}
],
"sat_steps": 8,
"val_steps": 8,
"max_brightness": 150,

View file

@ -2,9 +2,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
#define AUDIO_PIN GP29
#define AUDIO_PWM_DRIVER PWMD6
#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B

View file

@ -2,9 +2,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
#define AUDIO_PIN GP29
#define AUDIO_PWM_DRIVER PWMD6
#define AUDIO_PWM_CHANNEL RP2040_PWM_CHANNEL_B

View file

@ -1,11 +1,11 @@
// Copyright 2022 jack (@waffle87)
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 200U
#define SERIAL_USART_FULL_DUPLEX
#define SERIAL_USART_TX_PIN GP0
#define SERIAL_USART_RX_PIN GP1
#define I2C_DRIVER I2CD1
#define I2C1_SDA_PIN GP22
#define I2C1_SCL_PIN GP23

View file

@ -2,8 +2,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET
#define I2C_DRIVER I2CD1
#define I2C1_SDA_PIN GP22
#define I2C1_SCL_PIN GP23

View file

@ -15,21 +15,6 @@
*/
#include "quantum.h"
#ifdef RGB_MATRIX_ENABLE
#include "rgb_matrix.h"
led_config_t g_led_config = { {
{ 5, NO_LED, NO_LED, 0 },
{ NO_LED, NO_LED, NO_LED, NO_LED },
{ 4, NO_LED, NO_LED, 1 },
{ 3, NO_LED, NO_LED, 2 }
}, {
{ 188, 16 }, { 187, 48 }, { 149, 64 }, { 112, 64 }, { 37, 48 }, { 38, 16 }
}, {
4, 4, 4, 4, 4, 4
} };
#endif
#ifdef OLED_ENABLE
oled_rotation_t oled_init_kb(oled_rotation_t rotation) { return OLED_ROTATION_180; }

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